summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers
diff options
context:
space:
mode:
author andreasnaive <andreasnaive@gmail.com>2019-03-25 23:13:40 +0100
committer andreasnaive <andreasnaive@gmail.com>2019-03-25 23:13:40 +0100
commitb380514764cf857469bae61c11143a19f79a74c5 (patch)
tree63c8012e262618f08a332da31dd714281aa2c5ed /src/mame/drivers
parentc24473ddff715ecec2e258a6eb38960cf8c8e98e (diff)
Revert "conflict resolution (nw)"
This reverts commit c24473ddff715ecec2e258a6eb38960cf8c8e98e, reversing changes made to 009cba4fb8102102168ef32870892438327f3705.
Diffstat (limited to 'src/mame/drivers')
-rw-r--r--src/mame/drivers/1942.cpp37
-rw-r--r--src/mame/drivers/1943.cpp58
-rw-r--r--src/mame/drivers/20pacgal.cpp1
-rw-r--r--src/mame/drivers/24cdjuke.cpp13
-rw-r--r--src/mame/drivers/39in1.cpp5
-rw-r--r--src/mame/drivers/3do.cpp40
-rw-r--r--src/mame/drivers/3x3puzzl.cpp27
-rw-r--r--src/mame/drivers/4004clk.cpp16
-rw-r--r--src/mame/drivers/40love.cpp1
-rw-r--r--src/mame/drivers/4dpi.cpp20
-rw-r--r--src/mame/drivers/4enlinea.cpp30
-rw-r--r--src/mame/drivers/4enraya.cpp45
-rw-r--r--src/mame/drivers/4roses.cpp38
-rw-r--r--src/mame/drivers/5clown.cpp54
-rw-r--r--src/mame/drivers/8080bw.cpp69
-rw-r--r--src/mame/drivers/a1supply.cpp23
-rw-r--r--src/mame/drivers/a5105.cpp31
-rw-r--r--src/mame/drivers/a51xx.cpp40
-rw-r--r--src/mame/drivers/a7150.cpp3
-rw-r--r--src/mame/drivers/aa310.cpp1
-rw-r--r--src/mame/drivers/aaa.cpp262
-rw-r--r--src/mame/drivers/abc1600.cpp63
-rw-r--r--src/mame/drivers/abc80.cpp18
-rw-r--r--src/mame/drivers/abc80x.cpp89
-rw-r--r--src/mame/drivers/ac1.cpp45
-rw-r--r--src/mame/drivers/acd.cpp5
-rw-r--r--src/mame/drivers/ace.cpp28
-rw-r--r--src/mame/drivers/aceex.cpp9
-rw-r--r--src/mame/drivers/acefruit.cpp28
-rw-r--r--src/mame/drivers/acesp.cpp12
-rw-r--r--src/mame/drivers/aci_boris.cpp258
-rw-r--r--src/mame/drivers/aci_borisdpl.cpp236
-rw-r--r--src/mame/drivers/acommand.cpp38
-rw-r--r--src/mame/drivers/acrnsys.cpp12
-rw-r--r--src/mame/drivers/acrnsys1.cpp21
-rw-r--r--src/mame/drivers/actfancr.cpp9
-rw-r--r--src/mame/drivers/acvirus.cpp9
-rw-r--r--src/mame/drivers/adam.cpp28
-rw-r--r--src/mame/drivers/adm23.cpp86
-rw-r--r--src/mame/drivers/adm31.cpp513
-rw-r--r--src/mame/drivers/adm36.cpp202
-rw-r--r--src/mame/drivers/adp.cpp66
-rw-r--r--src/mame/drivers/advision.cpp3
-rw-r--r--src/mame/drivers/aeroboto.cpp32
-rw-r--r--src/mame/drivers/aerofgt.cpp2
-rw-r--r--src/mame/drivers/agat.cpp35
-rw-r--r--src/mame/drivers/age_candy.cpp22
-rw-r--r--src/mame/drivers/aim65.cpp44
-rw-r--r--src/mame/drivers/airbustr.cpp57
-rw-r--r--src/mame/drivers/airraid.cpp30
-rw-r--r--src/mame/drivers/albazc.cpp32
-rw-r--r--src/mame/drivers/albazg.cpp30
-rw-r--r--src/mame/drivers/aleck64.cpp75
-rw-r--r--src/mame/drivers/aleisttl.cpp23
-rw-r--r--src/mame/drivers/alesis.cpp46
-rw-r--r--src/mame/drivers/alesis_qs.cpp9
-rw-r--r--src/mame/drivers/alg.cpp84
-rw-r--r--src/mame/drivers/alien.cpp26
-rw-r--r--src/mame/drivers/alinvade.cpp27
-rw-r--r--src/mame/drivers/allied.cpp35
-rw-r--r--src/mame/drivers/alpha68k.cpp4
-rw-r--r--src/mame/drivers/alphasma.cpp35
-rw-r--r--src/mame/drivers/alphatpx.cpp73
-rw-r--r--src/mame/drivers/alphatro.cpp32
-rw-r--r--src/mame/drivers/altair.cpp2
-rw-r--r--src/mame/drivers/alto1.cpp5
-rw-r--r--src/mame/drivers/alto2.cpp19
-rw-r--r--src/mame/drivers/altos5.cpp10
-rw-r--r--src/mame/drivers/alvg.cpp9
-rw-r--r--src/mame/drivers/amaticmg.cpp54
-rw-r--r--src/mame/drivers/ambush.cpp46
-rw-r--r--src/mame/drivers/amerihok.cpp82
-rw-r--r--src/mame/drivers/amico2k.cpp9
-rw-r--r--src/mame/drivers/amiga.cpp612
-rw-r--r--src/mame/drivers/ampex.cpp4
-rw-r--r--src/mame/drivers/ampoker2.cpp35
-rw-r--r--src/mame/drivers/ampscarp.cpp9
-rw-r--r--src/mame/drivers/amspdwy.cpp36
-rw-r--r--src/mame/drivers/amstr_pc.cpp22
-rw-r--r--src/mame/drivers/amstrad.cpp163
-rw-r--r--src/mame/drivers/amusco.cpp68
-rw-r--r--src/mame/drivers/amust.cpp34
-rw-r--r--src/mame/drivers/anes.cpp32
-rw-r--r--src/mame/drivers/angelkds.cpp118
-rw-r--r--src/mame/drivers/anzterm.cpp33
-rw-r--r--src/mame/drivers/apc.cpp41
-rw-r--r--src/mame/drivers/apf.cpp60
-rw-r--r--src/mame/drivers/apollo.cpp96
-rw-r--r--src/mame/drivers/apple1.cpp21
-rw-r--r--src/mame/drivers/apple2.cpp90
-rw-r--r--src/mame/drivers/apple2e.cpp217
-rw-r--r--src/mame/drivers/apple2gs.cpp49
-rw-r--r--src/mame/drivers/apple3.cpp6
-rw-r--r--src/mame/drivers/applix.cpp60
-rw-r--r--src/mame/drivers/appoooh.cpp6
-rw-r--r--src/mame/drivers/apricot.cpp12
-rw-r--r--src/mame/drivers/apricotf.cpp45
-rw-r--r--src/mame/drivers/apricotp.cpp59
-rw-r--r--src/mame/drivers/aquarium.cpp50
-rw-r--r--src/mame/drivers/aquarius.cpp39
-rw-r--r--src/mame/drivers/arachnid.cpp18
-rw-r--r--src/mame/drivers/arcadecl.cpp27
-rw-r--r--src/mame/drivers/argo.cpp23
-rw-r--r--src/mame/drivers/argox.cpp11
-rw-r--r--src/mame/drivers/argus.cpp4
-rw-r--r--src/mame/drivers/aristmk4.cpp32
-rw-r--r--src/mame/drivers/aristmk5.cpp1334
-rw-r--r--src/mame/drivers/aristmk6.cpp319
-rw-r--r--src/mame/drivers/arkanoid.cpp124
-rw-r--r--src/mame/drivers/armedf.cpp348
-rw-r--r--src/mame/drivers/arsystems.cpp49
-rw-r--r--src/mame/drivers/artmagic.cpp67
-rw-r--r--src/mame/drivers/ashnojoe.cpp8
-rw-r--r--src/mame/drivers/asst128.cpp32
-rw-r--r--src/mame/drivers/asteroid.cpp38
-rw-r--r--src/mame/drivers/astrafr.cpp50
-rw-r--r--src/mame/drivers/astrcorp.cpp319
-rw-r--r--src/mame/drivers/astrocde.cpp8
-rw-r--r--src/mame/drivers/astrof.cpp52
-rw-r--r--src/mame/drivers/astrohome.cpp79
-rw-r--r--src/mame/drivers/astropc.cpp11
-rw-r--r--src/mame/drivers/asuka.cpp2
-rw-r--r--src/mame/drivers/at.cpp3
-rw-r--r--src/mame/drivers/atari400.cpp4
-rw-r--r--src/mame/drivers/atari_s1.cpp36
-rw-r--r--src/mame/drivers/atari_s2.cpp31
-rw-r--r--src/mame/drivers/atarifb.cpp70
-rw-r--r--src/mame/drivers/atarig1.cpp32
-rw-r--r--src/mame/drivers/atarig42.cpp27
-rw-r--r--src/mame/drivers/atarigt.cpp26
-rw-r--r--src/mame/drivers/atarigx2.cpp24
-rw-r--r--src/mame/drivers/atarist.cpp24
-rw-r--r--src/mame/drivers/atarisy1.cpp54
-rw-r--r--src/mame/drivers/atarittl.cpp77
-rw-r--r--src/mame/drivers/atetris.cpp6
-rw-r--r--src/mame/drivers/atlantis.cpp6
-rw-r--r--src/mame/drivers/atm.cpp25
-rw-r--r--src/mame/drivers/atom.cpp141
-rw-r--r--src/mame/drivers/atronic.cpp34
-rw-r--r--src/mame/drivers/att4425.cpp29
-rw-r--r--src/mame/drivers/att630.cpp20
-rw-r--r--src/mame/drivers/attache.cpp48
-rw-r--r--src/mame/drivers/attckufo.cpp33
-rw-r--r--src/mame/drivers/aussiebyte.cpp11
-rw-r--r--src/mame/drivers/avalnche.cpp31
-rw-r--r--src/mame/drivers/ave_arb.cpp255
-rw-r--r--src/mame/drivers/avigo.cpp28
-rw-r--r--src/mame/drivers/avt.cpp37
-rw-r--r--src/mame/drivers/ax20.cpp30
-rw-r--r--src/mame/drivers/aztarac.cpp32
-rw-r--r--src/mame/drivers/b16.cpp34
-rw-r--r--src/mame/drivers/b2m.cpp48
-rw-r--r--src/mame/drivers/backfire.cpp52
-rw-r--r--src/mame/drivers/badlands.cpp32
-rw-r--r--src/mame/drivers/badlandsbl.cpp34
-rw-r--r--src/mame/drivers/bailey.cpp23
-rw-r--r--src/mame/drivers/banctec.cpp25
-rw-r--r--src/mame/drivers/bankp.cpp37
-rw-r--r--src/mame/drivers/barata.cpp5
-rw-r--r--src/mame/drivers/barni.cpp53
-rw-r--r--src/mame/drivers/bartop52.cpp2
-rw-r--r--src/mame/drivers/batman.cpp22
-rw-r--r--src/mame/drivers/battlane.cpp4
-rw-r--r--src/mame/drivers/battlera.cpp6
-rw-r--r--src/mame/drivers/battlex.cpp40
-rw-r--r--src/mame/drivers/battlnts.cpp36
-rw-r--r--src/mame/drivers/bbc.cpp53
-rw-r--r--src/mame/drivers/bbcbc.cpp12
-rw-r--r--src/mame/drivers/bcs3.cpp58
-rw-r--r--src/mame/drivers/beaminv.cpp23
-rw-r--r--src/mame/drivers/beathead.cpp26
-rw-r--r--src/mame/drivers/bebox.cpp11
-rw-r--r--src/mame/drivers/beehive.cpp25
-rw-r--r--src/mame/drivers/beezer.cpp6
-rw-r--r--src/mame/drivers/belatra.cpp9
-rw-r--r--src/mame/drivers/bert.cpp121
-rw-r--r--src/mame/drivers/berzerk.cpp97
-rw-r--r--src/mame/drivers/besta.cpp21
-rw-r--r--src/mame/drivers/bestleag.cpp41
-rw-r--r--src/mame/drivers/beta.cpp19
-rw-r--r--src/mame/drivers/bfcobra.cpp43
-rw-r--r--src/mame/drivers/bfm_ad5.cpp13
-rw-r--r--src/mame/drivers/bfm_sc1.cpp35
-rw-r--r--src/mame/drivers/bfm_sc2.cpp116
-rw-r--r--src/mame/drivers/bfm_sc4.cpp29
-rw-r--r--src/mame/drivers/bfm_sc5.cpp27
-rw-r--r--src/mame/drivers/bfm_swp.cpp21
-rw-r--r--src/mame/drivers/bfmsys85.cpp19
-rw-r--r--src/mame/drivers/bgt.cpp11
-rw-r--r--src/mame/drivers/bigbord2.cpp24
-rw-r--r--src/mame/drivers/bigevglf.cpp3
-rw-r--r--src/mame/drivers/bigstrkb.cpp38
-rw-r--r--src/mame/drivers/binbug.cpp6
-rw-r--r--src/mame/drivers/bingo.cpp27
-rw-r--r--src/mame/drivers/bingoc.cpp60
-rw-r--r--src/mame/drivers/bingoman.cpp26
-rw-r--r--src/mame/drivers/bingowav.cpp6
-rw-r--r--src/mame/drivers/bionicc.cpp81
-rw-r--r--src/mame/drivers/bitgraph.cpp116
-rw-r--r--src/mame/drivers/bk.cpp8
-rw-r--r--src/mame/drivers/bking.cpp55
-rw-r--r--src/mame/drivers/blackt96.cpp51
-rw-r--r--src/mame/drivers/bladestl.cpp41
-rw-r--r--src/mame/drivers/blitz68k.cpp198
-rw-r--r--src/mame/drivers/blktiger.cpp4
-rw-r--r--src/mame/drivers/blmbycar.cpp48
-rw-r--r--src/mame/drivers/blockout.cpp40
-rw-r--r--src/mame/drivers/blocktax.cpp24
-rw-r--r--src/mame/drivers/bloodbro.cpp2
-rw-r--r--src/mame/drivers/blstroid.cpp24
-rw-r--r--src/mame/drivers/blueprnt.cpp49
-rw-r--r--src/mame/drivers/blw700i.cpp27
-rw-r--r--src/mame/drivers/bmjr.cpp29
-rw-r--r--src/mame/drivers/bml3.cpp108
-rw-r--r--src/mame/drivers/bnstars.cpp73
-rw-r--r--src/mame/drivers/bntyhunt.cpp27
-rw-r--r--src/mame/drivers/bogeyman.cpp34
-rw-r--r--src/mame/drivers/bombjack.cpp16
-rw-r--r--src/mame/drivers/boogwing.cpp38
-rw-r--r--src/mame/drivers/bowltry.cpp28
-rw-r--r--src/mame/drivers/boxer.cpp26
-rw-r--r--src/mame/drivers/br8641.cpp8
-rw-r--r--src/mame/drivers/brkthru.cpp14
-rw-r--r--src/mame/drivers/bsktball.cpp30
-rw-r--r--src/mame/drivers/btime.cpp153
-rw-r--r--src/mame/drivers/btoads.cpp29
-rw-r--r--src/mame/drivers/buggychl.cpp2
-rw-r--r--src/mame/drivers/bullet.cpp110
-rw-r--r--src/mame/drivers/busicom.cpp21
-rw-r--r--src/mame/drivers/buster.cpp27
-rw-r--r--src/mame/drivers/bw12.cpp73
-rw-r--r--src/mame/drivers/bw2.cpp51
-rw-r--r--src/mame/drivers/bwidow.cpp64
-rw-r--r--src/mame/drivers/bwing.cpp51
-rw-r--r--src/mame/drivers/by17.cpp19
-rw-r--r--src/mame/drivers/by35.cpp46
-rw-r--r--src/mame/drivers/by6803.cpp12
-rw-r--r--src/mame/drivers/by68701.cpp9
-rw-r--r--src/mame/drivers/byvid.cpp62
-rw-r--r--src/mame/drivers/c10.cpp27
-rw-r--r--src/mame/drivers/c128.cpp88
-rw-r--r--src/mame/drivers/c2color.cpp127
-rw-r--r--src/mame/drivers/c64.cpp58
-rw-r--r--src/mame/drivers/c64dtv.cpp15
-rw-r--r--src/mame/drivers/c65.cpp68
-rw-r--r--src/mame/drivers/c80.cpp11
-rw-r--r--src/mame/drivers/c900.cpp35
-rw-r--r--src/mame/drivers/cabaret.cpp34
-rw-r--r--src/mame/drivers/calchase.cpp36
-rw-r--r--src/mame/drivers/calcune.cpp82
-rw-r--r--src/mame/drivers/calomega.cpp69
-rw-r--r--src/mame/drivers/calorie.cpp36
-rw-r--r--src/mame/drivers/camplynx.cpp53
-rw-r--r--src/mame/drivers/candela.cpp45
-rw-r--r--src/mame/drivers/canon_s80.cpp9
-rw-r--r--src/mame/drivers/canyon.cpp28
-rw-r--r--src/mame/drivers/capbowl.cpp56
-rw-r--r--src/mame/drivers/capcom.cpp9
-rw-r--r--src/mame/drivers/caprcyc.cpp10
-rw-r--r--src/mame/drivers/cardinal.cpp66
-rw-r--r--src/mame/drivers/cardline.cpp29
-rw-r--r--src/mame/drivers/carjmbre.cpp32
-rw-r--r--src/mame/drivers/carpolo.cpp22
-rw-r--r--src/mame/drivers/carrera.cpp25
-rw-r--r--src/mame/drivers/casloopy.cpp33
-rw-r--r--src/mame/drivers/castle.cpp24
-rw-r--r--src/mame/drivers/caswin.cpp29
-rw-r--r--src/mame/drivers/cat.cpp42
-rw-r--r--src/mame/drivers/cavepc.cpp29
-rw-r--r--src/mame/drivers/cball.cpp24
-rw-r--r--src/mame/drivers/cbasebal.cpp40
-rw-r--r--src/mame/drivers/cbm2.cpp130
-rw-r--r--src/mame/drivers/cbuster.cpp37
-rw-r--r--src/mame/drivers/cc40.cpp32
-rw-r--r--src/mame/drivers/cchance.cpp28
-rw-r--r--src/mame/drivers/cchasm.cpp32
-rw-r--r--src/mame/drivers/cclimber.cpp99
-rw-r--r--src/mame/drivers/ccs2810.cpp25
-rw-r--r--src/mame/drivers/cd2650.cpp4
-rw-r--r--src/mame/drivers/cdc721.cpp31
-rw-r--r--src/mame/drivers/cdi.cpp224
-rw-r--r--src/mame/drivers/cedar_magnet.cpp122
-rw-r--r--src/mame/drivers/centiped.cpp10
-rw-r--r--src/mame/drivers/cesclass.cpp29
-rw-r--r--src/mame/drivers/cgc7900.cpp18
-rw-r--r--src/mame/drivers/cgenie.cpp39
-rw-r--r--src/mame/drivers/chaknpop.cpp30
-rw-r--r--src/mame/drivers/champbas.cpp230
-rw-r--r--src/mame/drivers/champbwl.cpp67
-rw-r--r--src/mame/drivers/chanbara.cpp28
-rw-r--r--src/mame/drivers/chance32.cpp33
-rw-r--r--src/mame/drivers/channelf.cpp132
-rw-r--r--src/mame/drivers/chaos.cpp17
-rw-r--r--src/mame/drivers/cheekyms.cpp28
-rw-r--r--src/mame/drivers/chessmst.cpp121
-rw-r--r--src/mame/drivers/chesstrv.cpp376
-rw-r--r--src/mame/drivers/chexx.cpp4
-rw-r--r--src/mame/drivers/chicago.cpp23
-rw-r--r--src/mame/drivers/chihiro.cpp184
-rw-r--r--src/mame/drivers/chinagat.cpp18
-rw-r--r--src/mame/drivers/chsuper.cpp39
-rw-r--r--src/mame/drivers/cidelsa.cpp6
-rw-r--r--src/mame/drivers/circusc.cpp46
-rw-r--r--src/mame/drivers/cischeat.cpp250
-rw-r--r--src/mame/drivers/citycon.cpp28
-rw-r--r--src/mame/drivers/cking_master.cpp239
-rw-r--r--src/mame/drivers/ckz80.cpp473
-rw-r--r--src/mame/drivers/clayshoo.cpp26
-rw-r--r--src/mame/drivers/clcd.cpp24
-rw-r--r--src/mame/drivers/clickstart.cpp441
-rw-r--r--src/mame/drivers/cliffhgr.cpp74
-rw-r--r--src/mame/drivers/clowndwn.cpp20
-rw-r--r--src/mame/drivers/clpoker.cpp33
-rw-r--r--src/mame/drivers/clshroad.cpp72
-rw-r--r--src/mame/drivers/cm1800.cpp7
-rw-r--r--src/mame/drivers/cmi.cpp108
-rw-r--r--src/mame/drivers/cmmb.cpp26
-rw-r--r--src/mame/drivers/cms.cpp2
-rw-r--r--src/mame/drivers/cninja.cpp215
-rw-r--r--src/mame/drivers/cntsteer.cpp71
-rw-r--r--src/mame/drivers/cobra.cpp24
-rw-r--r--src/mame/drivers/coco12.cpp123
-rw-r--r--src/mame/drivers/coco3.cpp75
-rw-r--r--src/mame/drivers/cocoloco.cpp12
-rw-r--r--src/mame/drivers/coinmstr.cpp71
-rw-r--r--src/mame/drivers/coinmvga.cpp46
-rw-r--r--src/mame/drivers/coleco.cpp7
-rw-r--r--src/mame/drivers/comebaby.cpp29
-rw-r--r--src/mame/drivers/commando.cpp20
-rw-r--r--src/mame/drivers/compc.cpp40
-rw-r--r--src/mame/drivers/compgolf.cpp28
-rw-r--r--src/mame/drivers/compis.cpp44
-rw-r--r--src/mame/drivers/compucolor.cpp21
-rw-r--r--src/mame/drivers/comquest.cpp31
-rw-r--r--src/mame/drivers/comx35.cpp14
-rw-r--r--src/mame/drivers/concept.cpp29
-rw-r--r--src/mame/drivers/contra.cpp32
-rw-r--r--src/mame/drivers/controlid.cpp19
-rw-r--r--src/mame/drivers/coolpool.cpp49
-rw-r--r--src/mame/drivers/coolridr.cpp58
-rw-r--r--src/mame/drivers/cop01.cpp79
-rw-r--r--src/mame/drivers/copsnrob.cpp12
-rw-r--r--src/mame/drivers/corona.cpp171
-rw-r--r--src/mame/drivers/cortex.cpp44
-rw-r--r--src/mame/drivers/cosmic.cpp22
-rw-r--r--src/mame/drivers/cosmicos.cpp15
-rw-r--r--src/mame/drivers/cp1.cpp30
-rw-r--r--src/mame/drivers/cps1.cpp212
-rw-r--r--src/mame/drivers/cps2.cpp67
-rw-r--r--src/mame/drivers/cps3.cpp211
-rw-r--r--src/mame/drivers/craft.cpp1
-rw-r--r--src/mame/drivers/crbaloon.cpp31
-rw-r--r--src/mame/drivers/cromptons.cpp150
-rw-r--r--src/mame/drivers/crospang.cpp114
-rw-r--r--src/mame/drivers/crvision.cpp20
-rw-r--r--src/mame/drivers/csplayh5.cpp16
-rw-r--r--src/mame/drivers/cswat.cpp33
-rw-r--r--src/mame/drivers/ct486.cpp53
-rw-r--r--src/mame/drivers/cubeqst.cpp1
-rw-r--r--src/mame/drivers/cubo.cpp41
-rw-r--r--src/mame/drivers/cultures.cpp34
-rw-r--r--src/mame/drivers/cupidon.cpp21
-rw-r--r--src/mame/drivers/cvicny.cpp9
-rw-r--r--src/mame/drivers/cvs.cpp1
-rw-r--r--src/mame/drivers/cxg_ch2001.cpp193
-rw-r--r--src/mame/drivers/cxgz80.cpp437
-rw-r--r--src/mame/drivers/cxhumax.cpp33
-rw-r--r--src/mame/drivers/cyberbal.cpp35
-rw-r--r--src/mame/drivers/cybertnk.cpp61
-rw-r--r--src/mame/drivers/cybiko.cpp8
-rw-r--r--src/mame/drivers/cybstorm.cpp23
-rw-r--r--src/mame/drivers/cyclemb.cpp53
-rw-r--r--src/mame/drivers/cz101.cpp25
-rw-r--r--src/mame/drivers/d6800.cpp64
-rw-r--r--src/mame/drivers/d6809.cpp18
-rw-r--r--src/mame/drivers/d9final.cpp39
-rw-r--r--src/mame/drivers/dacholer.cpp8
-rw-r--r--src/mame/drivers/dai.cpp43
-rw-r--r--src/mame/drivers/dai3wksi.cpp6
-rw-r--r--src/mame/drivers/dambustr.cpp23
-rw-r--r--src/mame/drivers/darkmist.cpp29
-rw-r--r--src/mame/drivers/darkseal.cpp41
-rw-r--r--src/mame/drivers/daruma.cpp16
-rw-r--r--src/mame/drivers/dassault.cpp52
-rw-r--r--src/mame/drivers/datum.cpp11
-rw-r--r--src/mame/drivers/dblcrown.cpp30
-rw-r--r--src/mame/drivers/dblewing.cpp44
-rw-r--r--src/mame/drivers/dbox.cpp12
-rw-r--r--src/mame/drivers/dbz.cpp38
-rw-r--r--src/mame/drivers/dccons.cpp60
-rw-r--r--src/mame/drivers/dcheese.cpp65
-rw-r--r--src/mame/drivers/dday.cpp24
-rw-r--r--src/mame/drivers/ddayjlc.cpp36
-rw-r--r--src/mame/drivers/ddealer.cpp33
-rw-r--r--src/mame/drivers/ddenlovr.cpp227
-rw-r--r--src/mame/drivers/ddragon.cpp29
-rw-r--r--src/mame/drivers/ddragon3.cpp108
-rw-r--r--src/mame/drivers/ddribble.cpp59
-rw-r--r--src/mame/drivers/de_3.cpp15
-rw-r--r--src/mame/drivers/dec0.cpp224
-rw-r--r--src/mame/drivers/deco156.cpp70
-rw-r--r--src/mame/drivers/deco32.cpp2
-rw-r--r--src/mame/drivers/deco_ld.cpp30
-rw-r--r--src/mame/drivers/deco_mlc.cpp99
-rw-r--r--src/mame/drivers/decocass.cpp183
-rw-r--r--src/mame/drivers/decstation.cpp186
-rw-r--r--src/mame/drivers/dectalk.cpp33
-rw-r--r--src/mame/drivers/decwritr.cpp38
-rw-r--r--src/mame/drivers/deniam.cpp6
-rw-r--r--src/mame/drivers/deshoros.cpp26
-rw-r--r--src/mame/drivers/destroyr.cpp28
-rw-r--r--src/mame/drivers/dfruit.cpp34
-rw-r--r--src/mame/drivers/dgn_beta.cpp47
-rw-r--r--src/mame/drivers/dgpix.cpp25
-rw-r--r--src/mame/drivers/diablo1300.cpp11
-rw-r--r--src/mame/drivers/didact.cpp449
-rw-r--r--src/mame/drivers/dietgo.cpp33
-rw-r--r--src/mame/drivers/digel804.cpp44
-rw-r--r--src/mame/drivers/digijet.cpp9
-rw-r--r--src/mame/drivers/dim68k.cpp32
-rw-r--r--src/mame/drivers/discoboy.cpp53
-rw-r--r--src/mame/drivers/divebomb.cpp59
-rw-r--r--src/mame/drivers/diverboy.cpp35
-rw-r--r--src/mame/drivers/djboy.cpp159
-rw-r--r--src/mame/drivers/djmain.cpp58
-rw-r--r--src/mame/drivers/dkmb.cpp24
-rw-r--r--src/mame/drivers/dkong.cpp84
-rw-r--r--src/mame/drivers/dlair.cpp34
-rw-r--r--src/mame/drivers/dlair2.cpp30
-rw-r--r--src/mame/drivers/dm7000.cpp2
-rw-r--r--src/mame/drivers/dmax8000.cpp20
-rw-r--r--src/mame/drivers/dmndrby.cpp39
-rw-r--r--src/mame/drivers/dms5000.cpp27
-rw-r--r--src/mame/drivers/dmv.cpp185
-rw-r--r--src/mame/drivers/docastle.cpp72
-rw-r--r--src/mame/drivers/dogfgt.cpp36
-rw-r--r--src/mame/drivers/dominob.cpp28
-rw-r--r--src/mame/drivers/dooyong.cpp321
-rw-r--r--src/mame/drivers/dorachan.cpp24
-rw-r--r--src/mame/drivers/dotrikun.cpp29
-rw-r--r--src/mame/drivers/dps1.cpp25
-rw-r--r--src/mame/drivers/dragon.cpp141
-rw-r--r--src/mame/drivers/dragrace.cpp36
-rw-r--r--src/mame/drivers/dreambal.cpp32
-rw-r--r--src/mame/drivers/dreamwld.cpp58
-rw-r--r--src/mame/drivers/drgnmst.cpp54
-rw-r--r--src/mame/drivers/dribling.cpp30
-rw-r--r--src/mame/drivers/drmicro.cpp56
-rw-r--r--src/mame/drivers/drtomy.cpp29
-rw-r--r--src/mame/drivers/drw80pkr.cpp27
-rw-r--r--src/mame/drivers/dual68.cpp25
-rw-r--r--src/mame/drivers/duet16.cpp73
-rw-r--r--src/mame/drivers/dunhuang.cpp35
-rw-r--r--src/mame/drivers/dvk_kcgd.cpp24
-rw-r--r--src/mame/drivers/dvk_ksm.cpp60
-rw-r--r--src/mame/drivers/dynadice.cpp40
-rw-r--r--src/mame/drivers/dynax.cpp235
-rw-r--r--src/mame/drivers/e100.cpp35
-rw-r--r--src/mame/drivers/eacc.cpp13
-rw-r--r--src/mame/drivers/ec184x.cpp126
-rw-r--r--src/mame/drivers/ec65.cpp52
-rw-r--r--src/mame/drivers/ecoinf1.cpp11
-rw-r--r--src/mame/drivers/ecoinf2.cpp2
-rw-r--r--src/mame/drivers/ecoinf3.cpp2
-rw-r--r--src/mame/drivers/efdt.cpp33
-rw-r--r--src/mame/drivers/egghunt.cpp37
-rw-r--r--src/mame/drivers/einstein.cpp44
-rw-r--r--src/mame/drivers/electra.cpp23
-rw-r--r--src/mame/drivers/electron.cpp25
-rw-r--r--src/mame/drivers/elekscmp.cpp9
-rw-r--r--src/mame/drivers/elektronmono.cpp9
-rw-r--r--src/mame/drivers/elf.cpp33
-rw-r--r--src/mame/drivers/elwro800.cpp53
-rw-r--r--src/mame/drivers/embargo.cpp25
-rw-r--r--src/mame/drivers/emma2.cpp15
-rw-r--r--src/mame/drivers/enigma2.cpp46
-rw-r--r--src/mame/drivers/eolith.cpp4
-rw-r--r--src/mame/drivers/eolith16.cpp31
-rw-r--r--src/mame/drivers/ep64.cpp10
-rw-r--r--src/mame/drivers/epos.cpp52
-rw-r--r--src/mame/drivers/eprom.cpp104
-rw-r--r--src/mame/drivers/equites.cpp1
-rw-r--r--src/mame/drivers/ertictac.cpp1
-rw-r--r--src/mame/drivers/esd16.cpp371
-rw-r--r--src/mame/drivers/esh.cpp24
-rw-r--r--src/mame/drivers/espial.cpp45
-rw-r--r--src/mame/drivers/esq5505.cpp13
-rw-r--r--src/mame/drivers/esqasr.cpp17
-rw-r--r--src/mame/drivers/esqkt.cpp10
-rw-r--r--src/mame/drivers/esripsys.cpp1
-rw-r--r--src/mame/drivers/et3400.cpp15
-rw-r--r--src/mame/drivers/eti660.cpp10
-rw-r--r--src/mame/drivers/ettrivia.cpp51
-rw-r--r--src/mame/drivers/eurocom2.cpp71
-rw-r--r--src/mame/drivers/europc.cpp99
-rw-r--r--src/mame/drivers/evmbug.cpp25
-rw-r--r--src/mame/drivers/excali64.cpp48
-rw-r--r--src/mame/drivers/exedexes.cpp48
-rw-r--r--src/mame/drivers/exelv.cpp2
-rw-r--r--src/mame/drivers/exerion.cpp22
-rw-r--r--src/mame/drivers/exidy.cpp104
-rw-r--r--src/mame/drivers/exidy440.cpp23
-rw-r--r--src/mame/drivers/exidyttl.cpp46
-rw-r--r--src/mame/drivers/expro02.cpp143
-rw-r--r--src/mame/drivers/exterm.cpp33
-rw-r--r--src/mame/drivers/extrema.cpp11
-rw-r--r--src/mame/drivers/exzisus.cpp48
-rw-r--r--src/mame/drivers/ez2d.cpp22
-rw-r--r--src/mame/drivers/f-32.cpp68
-rw-r--r--src/mame/drivers/fantland.cpp83
-rw-r--r--src/mame/drivers/fanucs15.cpp27
-rw-r--r--src/mame/drivers/fanucspmg.cpp3
-rw-r--r--src/mame/drivers/fastfred.cpp87
-rw-r--r--src/mame/drivers/fb01.cpp42
-rw-r--r--src/mame/drivers/fc100.cpp55
-rw-r--r--src/mame/drivers/fccpu20.cpp75
-rw-r--r--src/mame/drivers/fccpu30.cpp77
-rw-r--r--src/mame/drivers/fcombat.cpp22
-rw-r--r--src/mame/drivers/fcrash.cpp643
-rw-r--r--src/mame/drivers/feversoc.cpp31
-rw-r--r--src/mame/drivers/fgoal.cpp22
-rw-r--r--src/mame/drivers/fidel6502.cpp2902
-rw-r--r--src/mame/drivers/fidel68k.cpp818
-rw-r--r--src/mame/drivers/fidel_as12.cpp192
-rw-r--r--src/mame/drivers/fidel_card.cpp675
-rw-r--r--src/mame/drivers/fidel_cc1.cpp221
-rw-r--r--src/mame/drivers/fidel_cc10.cpp321
-rw-r--r--src/mame/drivers/fidel_cc7.cpp245
-rw-r--r--src/mame/drivers/fidel_chesster.cpp227
-rw-r--r--src/mame/drivers/fidel_csc.cpp712
-rw-r--r--src/mame/drivers/fidel_dames.cpp180
-rw-r--r--src/mame/drivers/fidel_desdis.cpp358
-rw-r--r--src/mame/drivers/fidel_eag68k.cpp737
-rw-r--r--src/mame/drivers/fidel_elite.cpp647
-rw-r--r--src/mame/drivers/fidel_excel.cpp523
-rw-r--r--src/mame/drivers/fidel_phantom.cpp143
-rw-r--r--src/mame/drivers/fidel_sc12.cpp244
-rw-r--r--src/mame/drivers/fidel_sc8.cpp157
-rw-r--r--src/mame/drivers/fidel_sc9.cpp295
-rw-r--r--src/mame/drivers/fidel_vcc.cpp386
-rw-r--r--src/mame/drivers/fidel_vsc.cpp430
-rw-r--r--src/mame/drivers/fidelmcs48.cpp (renamed from src/mame/drivers/fidel_sc6.cpp)149
-rw-r--r--src/mame/drivers/fidelz80.cpp2045
-rw-r--r--src/mame/drivers/finalizr.cpp70
-rw-r--r--src/mame/drivers/fireball.cpp11
-rw-r--r--src/mame/drivers/firebeat.cpp4
-rw-r--r--src/mame/drivers/firefox.cpp68
-rw-r--r--src/mame/drivers/firetrap.cpp105
-rw-r--r--src/mame/drivers/firetrk.cpp60
-rw-r--r--src/mame/drivers/fitfight.cpp44
-rw-r--r--src/mame/drivers/fk1.cpp31
-rw-r--r--src/mame/drivers/flipjack.cpp6
-rw-r--r--src/mame/drivers/flower.cpp38
-rw-r--r--src/mame/drivers/flstory.cpp1
-rw-r--r--src/mame/drivers/flyball.cpp28
-rw-r--r--src/mame/drivers/fm7.cpp288
-rw-r--r--src/mame/drivers/fontwriter.cpp60
-rw-r--r--src/mame/drivers/foodf.cpp2
-rw-r--r--src/mame/drivers/force68k.cpp76
-rw-r--r--src/mame/drivers/forte2.cpp3
-rw-r--r--src/mame/drivers/fortecar.cpp31
-rw-r--r--src/mame/drivers/fp1100.cpp43
-rw-r--r--src/mame/drivers/fp6000.cpp34
-rw-r--r--src/mame/drivers/freekick.cpp323
-rw-r--r--src/mame/drivers/freeway.cpp191
-rw-r--r--src/mame/drivers/fresh.cpp29
-rw-r--r--src/mame/drivers/fromance.cpp130
-rw-r--r--src/mame/drivers/fruitpc.cpp22
-rw-r--r--src/mame/drivers/fs3216.cpp357
-rw-r--r--src/mame/drivers/fungames.cpp23
-rw-r--r--src/mame/drivers/funkball.cpp32
-rw-r--r--src/mame/drivers/funkybee.cpp28
-rw-r--r--src/mame/drivers/funkyjet.cpp34
-rw-r--r--src/mame/drivers/funtech.cpp34
-rw-r--r--src/mame/drivers/funworld.cpp164
-rw-r--r--src/mame/drivers/funybubl.cpp40
-rw-r--r--src/mame/drivers/fuukifg2.cpp4
-rw-r--r--src/mame/drivers/g627.cpp14
-rw-r--r--src/mame/drivers/gaelco.cpp138
-rw-r--r--src/mame/drivers/gaelco2.cpp384
-rw-r--r--src/mame/drivers/gaelcopc.cpp27
-rw-r--r--src/mame/drivers/gaiden.cpp2
-rw-r--r--src/mame/drivers/gal3.cpp69
-rw-r--r--src/mame/drivers/galaga.cpp8
-rw-r--r--src/mame/drivers/galastrm.cpp40
-rw-r--r--src/mame/drivers/galaxi.cpp47
-rw-r--r--src/mame/drivers/galaxian.cpp835
-rw-r--r--src/mame/drivers/galaxold.cpp316
-rw-r--r--src/mame/drivers/galaxy.cpp74
-rw-r--r--src/mame/drivers/galeb.cpp32
-rw-r--r--src/mame/drivers/galgames.cpp155
-rw-r--r--src/mame/drivers/galivan.cpp123
-rw-r--r--src/mame/drivers/galpani2.cpp38
-rw-r--r--src/mame/drivers/galpani3.cpp46
-rw-r--r--src/mame/drivers/galpanic.cpp42
-rw-r--r--src/mame/drivers/galspnbl.cpp6
-rw-r--r--src/mame/drivers/gamate.cpp21
-rw-r--r--src/mame/drivers/gambl186.cpp25
-rw-r--r--src/mame/drivers/gamecom.cpp34
-rw-r--r--src/mame/drivers/gamecstl.cpp30
-rw-r--r--src/mame/drivers/gamecube.cpp9
-rw-r--r--src/mame/drivers/gameking.cpp34
-rw-r--r--src/mame/drivers/gamemachine.cpp419
-rw-r--r--src/mame/drivers/gamepock.cpp9
-rw-r--r--src/mame/drivers/gammagic.cpp13
-rw-r--r--src/mame/drivers/gamtor.cpp22
-rw-r--r--src/mame/drivers/gatron.cpp39
-rw-r--r--src/mame/drivers/gauntlet.cpp94
-rw-r--r--src/mame/drivers/gb.cpp20
-rw-r--r--src/mame/drivers/gba.cpp54
-rw-r--r--src/mame/drivers/gberet.cpp70
-rw-r--r--src/mame/drivers/gcpinbal.cpp31
-rw-r--r--src/mame/drivers/gei.cpp109
-rw-r--r--src/mame/drivers/geneve.cpp51
-rw-r--r--src/mame/drivers/geniusiq.cpp22
-rw-r--r--src/mame/drivers/genpc.cpp69
-rw-r--r--src/mame/drivers/ggconnie.cpp104
-rw-r--r--src/mame/drivers/ghosteo.cpp22
-rw-r--r--src/mame/drivers/giclassic.cpp51
-rw-r--r--src/mame/drivers/gimix.cpp21
-rw-r--r--src/mame/drivers/ginganin.cpp37
-rw-r--r--src/mame/drivers/gizmondo.cpp23
-rw-r--r--src/mame/drivers/gkigt.cpp51
-rw-r--r--src/mame/drivers/gladiatr.cpp112
-rw-r--r--src/mame/drivers/glasgow.cpp35
-rw-r--r--src/mame/drivers/glass.cpp45
-rw-r--r--src/mame/drivers/globalvr.cpp9
-rw-r--r--src/mame/drivers/gluck2.cpp30
-rw-r--r--src/mame/drivers/gmaster.cpp13
-rw-r--r--src/mame/drivers/gng.cpp70
-rw-r--r--src/mame/drivers/go2000.cpp39
-rw-r--r--src/mame/drivers/goal92.cpp2
-rw-r--r--src/mame/drivers/goindol.cpp44
-rw-r--r--src/mame/drivers/gokidetor.cpp16
-rw-r--r--src/mame/drivers/goldnpkr.cpp39
-rw-r--r--src/mame/drivers/goldstar.cpp882
-rw-r--r--src/mame/drivers/gomoku.cpp28
-rw-r--r--src/mame/drivers/good.cpp32
-rw-r--r--src/mame/drivers/gotcha.cpp60
-rw-r--r--src/mame/drivers/gottlieb.cpp24
-rw-r--r--src/mame/drivers/gp2x.cpp23
-rw-r--r--src/mame/drivers/gp32.cpp42
-rw-r--r--src/mame/drivers/gp_2.cpp7
-rw-r--r--src/mame/drivers/gpworld.cpp24
-rw-r--r--src/mame/drivers/grchamp.cpp41
-rw-r--r--src/mame/drivers/grfd2301.cpp25
-rw-r--r--src/mame/drivers/gridcomp.cpp108
-rw-r--r--src/mame/drivers/groundfx.cpp26
-rw-r--r--src/mame/drivers/gstream.cpp61
-rw-r--r--src/mame/drivers/gsword.cpp95
-rw-r--r--src/mame/drivers/gts80a.cpp28
-rw-r--r--src/mame/drivers/guab.cpp8
-rw-r--r--src/mame/drivers/gumbo.cpp48
-rw-r--r--src/mame/drivers/gunbustr.cpp26
-rw-r--r--src/mame/drivers/gundealr.cpp52
-rw-r--r--src/mame/drivers/gunpey.cpp34
-rw-r--r--src/mame/drivers/gunsmoke.cpp56
-rw-r--r--src/mame/drivers/gyruss.cpp38
-rw-r--r--src/mame/drivers/h19.cpp56
-rw-r--r--src/mame/drivers/halleys.cpp51
-rw-r--r--src/mame/drivers/hanaawas.cpp28
-rw-r--r--src/mame/drivers/hankin.cpp24
-rw-r--r--src/mame/drivers/hapyfish.cpp34
-rw-r--r--src/mame/drivers/harddriv.cpp10
-rw-r--r--src/mame/drivers/hazeltin.cpp21
-rw-r--r--src/mame/drivers/headonb.cpp32
-rw-r--r--src/mame/drivers/hec2hrp.cpp277
-rw-r--r--src/mame/drivers/hh_amis2k.cpp478
-rw-r--r--src/mame/drivers/hh_cop400.cpp325
-rw-r--r--src/mame/drivers/hh_hmcs40.cpp1382
-rw-r--r--src/mame/drivers/hh_melps4.cpp95
-rw-r--r--src/mame/drivers/hh_pic16.cpp295
-rw-r--r--src/mame/drivers/hh_sm510.cpp3542
-rw-r--r--src/mame/drivers/hh_tms1k.cpp2764
-rw-r--r--src/mame/drivers/hh_ucom4.cpp638
-rw-r--r--src/mame/drivers/hideseek.cpp28
-rw-r--r--src/mame/drivers/higemaru.cpp28
-rw-r--r--src/mame/drivers/highvdeo.cpp204
-rw-r--r--src/mame/drivers/hitme.cpp45
-rw-r--r--src/mame/drivers/hitpoker.cpp3
-rw-r--r--src/mame/drivers/hk68v10.cpp13
-rw-r--r--src/mame/drivers/hnayayoi.cpp47
-rw-r--r--src/mame/drivers/hng64.cpp11
-rw-r--r--src/mame/drivers/holeland.cpp64
-rw-r--r--src/mame/drivers/homedata.cpp430
-rw-r--r--src/mame/drivers/homelab.cpp108
-rw-r--r--src/mame/drivers/homerun.cpp88
-rw-r--r--src/mame/drivers/homez80.cpp29
-rw-r--r--src/mame/drivers/horizon.cpp58
-rw-r--r--src/mame/drivers/hornet.cpp21
-rw-r--r--src/mame/drivers/hotblock.cpp22
-rw-r--r--src/mame/drivers/hotstuff.cpp32
-rw-r--r--src/mame/drivers/hp16500.cpp49
-rw-r--r--src/mame/drivers/hp2100.cpp5
-rw-r--r--src/mame/drivers/hp2640.cpp43
-rw-r--r--src/mame/drivers/hp48.cpp1
-rw-r--r--src/mame/drivers/hp49gp.cpp23
-rw-r--r--src/mame/drivers/hp64k.cpp76
-rw-r--r--src/mame/drivers/hp80.cpp90
-rw-r--r--src/mame/drivers/hp95lx.cpp34
-rw-r--r--src/mame/drivers/hp9825.cpp317
-rw-r--r--src/mame/drivers/hp9845.cpp147
-rw-r--r--src/mame/drivers/hp9k.cpp31
-rw-r--r--src/mame/drivers/hp9k_3xx.cpp97
-rw-r--r--src/mame/drivers/hp_ipc.cpp98
-rw-r--r--src/mame/drivers/hprot1.cpp53
-rw-r--r--src/mame/drivers/hpz80unk.cpp16
-rw-r--r--src/mame/drivers/hshavoc.cpp2
-rw-r--r--src/mame/drivers/ht68k.cpp31
-rw-r--r--src/mame/drivers/huebler.cpp21
-rw-r--r--src/mame/drivers/hunter2.cpp54
-rw-r--r--src/mame/drivers/hvyunit.cpp51
-rw-r--r--src/mame/drivers/hx20.cpp46
-rw-r--r--src/mame/drivers/hyhoo.cpp33
-rw-r--r--src/mame/drivers/hyperscan.cpp25
-rw-r--r--src/mame/drivers/hyperspt.cpp77
-rw-r--r--src/mame/drivers/hyprduel.cpp68
-rw-r--r--src/mame/drivers/i7000.cpp23
-rw-r--r--src/mame/drivers/ibm3153.cpp25
-rw-r--r--src/mame/drivers/ibm6580.cpp107
-rw-r--r--src/mame/drivers/ibmpc.cpp84
-rw-r--r--src/mame/drivers/ibmpcjr.cpp51
-rw-r--r--src/mame/drivers/icatel.cpp25
-rw-r--r--src/mame/drivers/ice_bozopail.cpp10
-rw-r--r--src/mame/drivers/ice_tbd.cpp12
-rw-r--r--src/mame/drivers/icebox.cpp21
-rw-r--r--src/mame/drivers/icecold.cpp8
-rw-r--r--src/mame/drivers/ichiban.cpp60
-rw-r--r--src/mame/drivers/idsa.cpp17
-rw-r--r--src/mame/drivers/ie15.cpp7
-rw-r--r--src/mame/drivers/if800.cpp28
-rw-r--r--src/mame/drivers/igs009.cpp47
-rw-r--r--src/mame/drivers/igs011.cpp37
-rw-r--r--src/mame/drivers/igs017.cpp297
-rw-r--r--src/mame/drivers/igs_m027.cpp64
-rw-r--r--src/mame/drivers/igs_m036.cpp62
-rw-r--r--src/mame/drivers/igspc.cpp11
-rw-r--r--src/mame/drivers/igspoker.cpp87
-rw-r--r--src/mame/drivers/ikki.cpp38
-rw-r--r--src/mame/drivers/imds2.cpp2
-rw-r--r--src/mame/drivers/imolagp.cpp40
-rw-r--r--src/mame/drivers/inder.cpp65
-rw-r--r--src/mame/drivers/inderp.cpp15
-rw-r--r--src/mame/drivers/indiana.cpp18
-rw-r--r--src/mame/drivers/indigo.cpp385
-rw-r--r--src/mame/drivers/indy_indigo2.cpp119
-rw-r--r--src/mame/drivers/instantm.cpp26
-rw-r--r--src/mame/drivers/instruct.cpp4
-rw-r--r--src/mame/drivers/inteladv.cpp23
-rw-r--r--src/mame/drivers/intellect02.cpp321
-rw-r--r--src/mame/drivers/interact.cpp80
-rw-r--r--src/mame/drivers/interpro.cpp32
-rw-r--r--src/mame/drivers/intrscti.cpp40
-rw-r--r--src/mame/drivers/intv.cpp107
-rw-r--r--src/mame/drivers/invqix.cpp33
-rw-r--r--src/mame/drivers/ipds.cpp31
-rw-r--r--src/mame/drivers/iphone2g.cpp16
-rw-r--r--src/mame/drivers/iq151.cpp109
-rw-r--r--src/mame/drivers/iqblock.cpp32
-rw-r--r--src/mame/drivers/iqunlim.cpp21
-rw-r--r--src/mame/drivers/iris3130.cpp8
-rw-r--r--src/mame/drivers/irisha.cpp32
-rw-r--r--src/mame/drivers/irobot.cpp4
-rw-r--r--src/mame/drivers/ironhors.cpp61
-rw-r--r--src/mame/drivers/isbc8010.cpp60
-rw-r--r--src/mame/drivers/iskr103x.cpp46
-rw-r--r--src/mame/drivers/istellar.cpp32
-rw-r--r--src/mame/drivers/istrebiteli.cpp38
-rw-r--r--src/mame/drivers/iteagle.cpp65
-rw-r--r--src/mame/drivers/itech32.cpp43
-rw-r--r--src/mame/drivers/itech8.cpp4
-rw-r--r--src/mame/drivers/itgambl2.cpp22
-rw-r--r--src/mame/drivers/itgambl3.cpp25
-rw-r--r--src/mame/drivers/itt3030.cpp32
-rw-r--r--src/mame/drivers/jack.cpp86
-rw-r--r--src/mame/drivers/jackal.cpp32
-rw-r--r--src/mame/drivers/jackpool.cpp28
-rw-r--r--src/mame/drivers/jaguar.cpp6
-rw-r--r--src/mame/drivers/jailbrek.cpp33
-rw-r--r--src/mame/drivers/jalmah.cpp52
-rw-r--r--src/mame/drivers/jangou.cpp102
-rw-r--r--src/mame/drivers/jankenmn.cpp12
-rw-r--r--src/mame/drivers/jantotsu.cpp45
-rw-r--r--src/mame/drivers/jazz.cpp276
-rw-r--r--src/mame/drivers/jchan.cpp38
-rw-r--r--src/mame/drivers/jclub2.cpp98
-rw-r--r--src/mame/drivers/jedi.cpp12
-rw-r--r--src/mame/drivers/jensen.cpp246
-rw-r--r--src/mame/drivers/jeutel.cpp31
-rw-r--r--src/mame/drivers/joctronic.cpp60
-rw-r--r--src/mame/drivers/jokrwild.cpp25
-rw-r--r--src/mame/drivers/jollyjgr.cpp34
-rw-r--r--src/mame/drivers/jongkyo.cpp20
-rw-r--r--src/mame/drivers/jonos.cpp27
-rw-r--r--src/mame/drivers/joystand.cpp52
-rw-r--r--src/mame/drivers/jp.cpp31
-rw-r--r--src/mame/drivers/jpmimpct.cpp50
-rw-r--r--src/mame/drivers/jpmmps.cpp33
-rw-r--r--src/mame/drivers/jpms80.cpp28
-rw-r--r--src/mame/drivers/jpmsru.cpp10
-rw-r--r--src/mame/drivers/jpmsys5.cpp39
-rw-r--r--src/mame/drivers/jpmsys7.cpp11
-rw-r--r--src/mame/drivers/jr100.cpp4
-rw-r--r--src/mame/drivers/jr200.cpp32
-rw-r--r--src/mame/drivers/jtc.cpp80
-rw-r--r--src/mame/drivers/jubilee.cpp36
-rw-r--r--src/mame/drivers/juicebox.cpp33
-rw-r--r--src/mame/drivers/jungleyo.cpp32
-rw-r--r--src/mame/drivers/junior.cpp27
-rw-r--r--src/mame/drivers/junofrst.cpp24
-rw-r--r--src/mame/drivers/jupace.cpp44
-rw-r--r--src/mame/drivers/jupiter.cpp33
-rw-r--r--src/mame/drivers/jvh.cpp44
-rw-r--r--src/mame/drivers/k1003.cpp11
-rw-r--r--src/mame/drivers/k28.cpp301
-rw-r--r--src/mame/drivers/k8915.cpp25
-rw-r--r--src/mame/drivers/kaneko16.cpp199
-rw-r--r--src/mame/drivers/kangaroo.cpp36
-rw-r--r--src/mame/drivers/karnov.cpp4
-rw-r--r--src/mame/drivers/kas89.cpp22
-rw-r--r--src/mame/drivers/kaypro.cpp116
-rw-r--r--src/mame/drivers/kc.cpp141
-rw-r--r--src/mame/drivers/kchamp.cpp196
-rw-r--r--src/mame/drivers/kdt6.cpp31
-rw-r--r--src/mame/drivers/kickgoal.cpp100
-rw-r--r--src/mame/drivers/kim1.cpp38
-rw-r--r--src/mame/drivers/kingdrby.cpp69
-rw-r--r--src/mame/drivers/kingobox.cpp84
-rw-r--r--src/mame/drivers/kingpin.cpp3
-rw-r--r--src/mame/drivers/klax.cpp55
-rw-r--r--src/mame/drivers/kncljoe.cpp42
-rw-r--r--src/mame/drivers/koftball.cpp45
-rw-r--r--src/mame/drivers/koikoi.cpp28
-rw-r--r--src/mame/drivers/konamigv.cpp40
-rw-r--r--src/mame/drivers/konamigx.cpp2
-rw-r--r--src/mame/drivers/konamim2.cpp11
-rw-r--r--src/mame/drivers/konblands.cpp33
-rw-r--r--src/mame/drivers/konendev.cpp31
-rw-r--r--src/mame/drivers/konmedal68k.cpp31
-rw-r--r--src/mame/drivers/kontest.cpp36
-rw-r--r--src/mame/drivers/kopunch.cpp28
-rw-r--r--src/mame/drivers/kramermc.cpp28
-rw-r--r--src/mame/drivers/kron.cpp27
-rw-r--r--src/mame/drivers/krz2000.cpp7
-rw-r--r--src/mame/drivers/ksayakyu.cpp41
-rw-r--r--src/mame/drivers/kungfur.cpp30
-rw-r--r--src/mame/drivers/kurukuru.cpp48
-rw-r--r--src/mame/drivers/kyocera.cpp40
-rw-r--r--src/mame/drivers/kyugo.cpp90
-rw-r--r--src/mame/drivers/labyrunr.cpp28
-rw-r--r--src/mame/drivers/ladybug.cpp82
-rw-r--r--src/mame/drivers/ladyfrog.cpp1
-rw-r--r--src/mame/drivers/laser3k.cpp29
-rw-r--r--src/mame/drivers/laserbas.cpp47
-rw-r--r--src/mame/drivers/lasso.cpp106
-rw-r--r--src/mame/drivers/lastbank.cpp45
-rw-r--r--src/mame/drivers/lastfght.cpp26
-rw-r--r--src/mame/drivers/laz_aftrshok.cpp118
-rw-r--r--src/mame/drivers/laz_awetoss.cpp17
-rw-r--r--src/mame/drivers/laz_ribrac.cpp15
-rw-r--r--src/mame/drivers/lazercmd.cpp122
-rw-r--r--src/mame/drivers/lb186.cpp56
-rw-r--r--src/mame/drivers/lbeach.cpp26
-rw-r--r--src/mame/drivers/lc80.cpp44
-rw-r--r--src/mame/drivers/lckydraw.cpp11
-rw-r--r--src/mame/drivers/lcmate2.cpp29
-rw-r--r--src/mame/drivers/ldplayer.cpp5
-rw-r--r--src/mame/drivers/leapfrog_leappad.cpp145
-rw-r--r--src/mame/drivers/leapster.cpp26
-rw-r--r--src/mame/drivers/learnwin.cpp14
-rw-r--r--src/mame/drivers/legionna.cpp26
-rw-r--r--src/mame/drivers/leland.cpp82
-rw-r--r--src/mame/drivers/lemmings.cpp46
-rw-r--r--src/mame/drivers/lethal.cpp26
-rw-r--r--src/mame/drivers/lethalj.cpp36
-rw-r--r--src/mame/drivers/lg-dvd.cpp9
-rw-r--r--src/mame/drivers/lgp.cpp29
-rw-r--r--src/mame/drivers/liberate.cpp131
-rw-r--r--src/mame/drivers/lilith.cpp5
-rw-r--r--src/mame/drivers/limenko.cpp24
-rw-r--r--src/mame/drivers/lindbergh.cpp7
-rw-r--r--src/mame/drivers/lisa.cpp44
-rw-r--r--src/mame/drivers/littlerb.cpp23
-rw-r--r--src/mame/drivers/lkage.cpp2
-rw-r--r--src/mame/drivers/llc.cpp51
-rw-r--r--src/mame/drivers/lockon.cpp38
-rw-r--r--src/mame/drivers/looping.cpp13
-rw-r--r--src/mame/drivers/lsasquad.cpp92
-rw-r--r--src/mame/drivers/ltcasino.cpp25
-rw-r--r--src/mame/drivers/ltd.cpp16
-rw-r--r--src/mame/drivers/luckgrln.cpp46
-rw-r--r--src/mame/drivers/lucky74.cpp54
-rw-r--r--src/mame/drivers/luckybal.cpp26
-rw-r--r--src/mame/drivers/lvcards.cpp43
-rw-r--r--src/mame/drivers/lviv.cpp49
-rw-r--r--src/mame/drivers/lwings.cpp170
-rw-r--r--src/mame/drivers/lynx.cpp24
-rw-r--r--src/mame/drivers/m20.cpp35
-rw-r--r--src/mame/drivers/m24.cpp484
-rw-r--r--src/mame/drivers/m3.cpp25
-rw-r--r--src/mame/drivers/m5.cpp75
-rw-r--r--src/mame/drivers/m52.cpp35
-rw-r--r--src/mame/drivers/m57.cpp31
-rw-r--r--src/mame/drivers/m58.cpp24
-rw-r--r--src/mame/drivers/m62.cpp199
-rw-r--r--src/mame/drivers/m63.cpp12
-rw-r--r--src/mame/drivers/m6805evs.cpp9
-rw-r--r--src/mame/drivers/m72.cpp244
-rw-r--r--src/mame/drivers/m79152pc.cpp7
-rw-r--r--src/mame/drivers/m79amb.cpp27
-rw-r--r--src/mame/drivers/m90.cpp30
-rw-r--r--src/mame/drivers/mac.cpp13
-rw-r--r--src/mame/drivers/mac128.cpp7
-rw-r--r--src/mame/drivers/macp.cpp26
-rw-r--r--src/mame/drivers/macs.cpp3
-rw-r--r--src/mame/drivers/madalien.cpp17
-rw-r--r--src/mame/drivers/madmotor.cpp41
-rw-r--r--src/mame/drivers/magic10.cpp71
-rw-r--r--src/mame/drivers/magicard.cpp42
-rw-r--r--src/mame/drivers/magicfly.cpp36
-rw-r--r--src/mame/drivers/magictg.cpp37
-rw-r--r--src/mame/drivers/magmax.cpp32
-rw-r--r--src/mame/drivers/magnum.cpp52
-rw-r--r--src/mame/drivers/magreel.cpp31
-rw-r--r--src/mame/drivers/magtouch.cpp26
-rw-r--r--src/mame/drivers/mainsnk.cpp32
-rw-r--r--src/mame/drivers/majorpkr.cpp24
-rw-r--r--src/mame/drivers/manohman.cpp22
-rw-r--r--src/mame/drivers/mappy.cpp9
-rw-r--r--src/mame/drivers/marineb.cpp79
-rw-r--r--src/mame/drivers/marinedt.cpp22
-rw-r--r--src/mame/drivers/mario.cpp33
-rw-r--r--src/mame/drivers/markham.cpp77
-rw-r--r--src/mame/drivers/marywu.cpp11
-rw-r--r--src/mame/drivers/mastboyo.cpp31
-rw-r--r--src/mame/drivers/matmania.cpp6
-rw-r--r--src/mame/drivers/maxaflex.cpp2
-rw-r--r--src/mame/drivers/maygay1b.cpp58
-rw-r--r--src/mame/drivers/maygayep.cpp12
-rw-r--r--src/mame/drivers/maygaysw.cpp10
-rw-r--r--src/mame/drivers/maygayv1.cpp39
-rw-r--r--src/mame/drivers/mazerbla.cpp106
-rw-r--r--src/mame/drivers/mbc200.cpp45
-rw-r--r--src/mame/drivers/mbc55x.cpp324
-rw-r--r--src/mame/drivers/mbee.cpp161
-rw-r--r--src/mame/drivers/mc10.cpp86
-rw-r--r--src/mame/drivers/mc1000.cpp52
-rw-r--r--src/mame/drivers/mc1502.cpp43
-rw-r--r--src/mame/drivers/mc8020.cpp19
-rw-r--r--src/mame/drivers/mc8030.cpp19
-rw-r--r--src/mame/drivers/mcb216.cpp30
-rw-r--r--src/mame/drivers/mcr3.cpp97
-rw-r--r--src/mame/drivers/mcr68.cpp73
-rw-r--r--src/mame/drivers/meadows.cpp4
-rw-r--r--src/mame/drivers/meadwttl.cpp23
-rw-r--r--src/mame/drivers/mediagx.cpp30
-rw-r--r--src/mame/drivers/megadriv.cpp220
-rw-r--r--src/mame/drivers/megadriv_acbl.cpp177
-rw-r--r--src/mame/drivers/megadriv_rad.cpp24
-rw-r--r--src/mame/drivers/megaplay.cpp42
-rw-r--r--src/mame/drivers/megasys1.cpp195
-rw-r--r--src/mame/drivers/megatech.cpp95
-rw-r--r--src/mame/drivers/megazone.cpp52
-rw-r--r--src/mame/drivers/meijinsn.cpp40
-rw-r--r--src/mame/drivers/mekd2.cpp25
-rw-r--r--src/mame/drivers/mephisto.cpp78
-rw-r--r--src/mame/drivers/mephisto_montec.cpp72
-rw-r--r--src/mame/drivers/mephistp.cpp40
-rw-r--r--src/mame/drivers/merit.cpp113
-rw-r--r--src/mame/drivers/meritm.cpp23
-rw-r--r--src/mame/drivers/meritum.cpp22
-rw-r--r--src/mame/drivers/mermaid.cpp49
-rw-r--r--src/mame/drivers/mes.cpp25
-rw-r--r--src/mame/drivers/metalmx.cpp39
-rw-r--r--src/mame/drivers/metlclsh.cpp4
-rw-r--r--src/mame/drivers/metlfrzr.cpp30
-rw-r--r--src/mame/drivers/metro.cpp75
-rw-r--r--src/mame/drivers/mexico86.cpp2
-rw-r--r--src/mame/drivers/meyc8080.cpp30
-rw-r--r--src/mame/drivers/meyc8088.cpp28
-rw-r--r--src/mame/drivers/mgames.cpp96
-rw-r--r--src/mame/drivers/mgavegas.cpp36
-rw-r--r--src/mame/drivers/mgolf.cpp26
-rw-r--r--src/mame/drivers/mhavoc.cpp8
-rw-r--r--src/mame/drivers/micral.cpp44
-rw-r--r--src/mame/drivers/micro20.cpp31
-rw-r--r--src/mame/drivers/micro3d.cpp49
-rw-r--r--src/mame/drivers/microkit.cpp2
-rw-r--r--src/mame/drivers/micromon.cpp96
-rw-r--r--src/mame/drivers/micronic.cpp31
-rw-r--r--src/mame/drivers/micropin.cpp33
-rw-r--r--src/mame/drivers/microtan.cpp30
-rw-r--r--src/mame/drivers/microvsn.cpp27
-rw-r--r--src/mame/drivers/midas.cpp196
-rw-r--r--src/mame/drivers/midqslvr.cpp8
-rw-r--r--src/mame/drivers/midtunit.cpp1
-rw-r--r--src/mame/drivers/midvunit.cpp41
-rw-r--r--src/mame/drivers/midwunit.cpp1
-rw-r--r--src/mame/drivers/midxunit.cpp1
-rw-r--r--src/mame/drivers/midyunit.cpp127
-rw-r--r--src/mame/drivers/midzeus.cpp36
-rw-r--r--src/mame/drivers/mightyframe.cpp9
-rw-r--r--src/mame/drivers/mikie.cpp40
-rw-r--r--src/mame/drivers/mikro80.cpp63
-rw-r--r--src/mame/drivers/mikromik.cpp24
-rw-r--r--src/mame/drivers/mikrosha.cpp46
-rw-r--r--src/mame/drivers/mil4000.cpp38
-rw-r--r--src/mame/drivers/milton6805.cpp13
-rw-r--r--src/mame/drivers/mini2440.cpp34
-rw-r--r--src/mame/drivers/miniboy7.cpp39
-rw-r--r--src/mame/drivers/miniforce.cpp27
-rw-r--r--src/mame/drivers/minitel_2_rpic.cpp4
-rw-r--r--src/mame/drivers/minivadr.cpp24
-rw-r--r--src/mame/drivers/mips.cpp145
-rw-r--r--src/mame/drivers/mirage.cpp36
-rw-r--r--src/mame/drivers/mirax.cpp39
-rw-r--r--src/mame/drivers/missb2.cpp4
-rw-r--r--src/mame/drivers/missbamby.cpp134
-rw-r--r--src/mame/drivers/missile.cpp4
-rw-r--r--src/mame/drivers/mitchell.cpp269
-rw-r--r--src/mame/drivers/mjkjidai.cpp55
-rw-r--r--src/mame/drivers/mjsenpu.cpp35
-rw-r--r--src/mame/drivers/mjsister.cpp35
-rw-r--r--src/mame/drivers/mk1.cpp349
-rw-r--r--src/mame/drivers/mk14.cpp5
-rw-r--r--src/mame/drivers/mk2.cpp26
-rw-r--r--src/mame/drivers/mkit09.cpp22
-rw-r--r--src/mame/drivers/mmodular.cpp62
-rw-r--r--src/mame/drivers/mod8.cpp15
-rw-r--r--src/mame/drivers/model1.cpp86
-rw-r--r--src/mame/drivers/model2.cpp95
-rw-r--r--src/mame/drivers/model3.cpp11
-rw-r--r--src/mame/drivers/modellot.cpp29
-rw-r--r--src/mame/drivers/modena.cpp19
-rw-r--r--src/mame/drivers/mogura.cpp38
-rw-r--r--src/mame/drivers/mole.cpp30
-rw-r--r--src/mame/drivers/molecular.cpp44
-rw-r--r--src/mame/drivers/momoko.cpp30
-rw-r--r--src/mame/drivers/monacogp.cpp23
-rw-r--r--src/mame/drivers/monon_color.cpp23
-rw-r--r--src/mame/drivers/monzagp.cpp13
-rw-r--r--src/mame/drivers/moo.cpp76
-rw-r--r--src/mame/drivers/mosaic.cpp44
-rw-r--r--src/mame/drivers/mouser.cpp36
-rw-r--r--src/mame/drivers/mpc3000.cpp13
-rw-r--r--src/mame/drivers/mpf1.cpp46
-rw-r--r--src/mame/drivers/mps1230.cpp20
-rw-r--r--src/mame/drivers/mpu12wbk.cpp25
-rw-r--r--src/mame/drivers/mpu2.cpp9
-rw-r--r--src/mame/drivers/mpu3.cpp20
-rw-r--r--src/mame/drivers/mpu4dealem.cpp31
-rw-r--r--src/mame/drivers/mpu4plasma.cpp31
-rw-r--r--src/mame/drivers/mpu4sw.cpp34
-rw-r--r--src/mame/drivers/mpz80.cpp59
-rw-r--r--src/mame/drivers/mrdo.cpp37
-rw-r--r--src/mame/drivers/mrflea.cpp38
-rw-r--r--src/mame/drivers/mrgame.cpp7
-rw-r--r--src/mame/drivers/mrjong.cpp32
-rw-r--r--src/mame/drivers/ms0515.cpp29
-rw-r--r--src/mame/drivers/ms32.cpp57
-rw-r--r--src/mame/drivers/msbc1.cpp9
-rw-r--r--src/mame/drivers/mstation.cpp29
-rw-r--r--src/mame/drivers/msx.cpp4250
-rw-r--r--src/mame/drivers/mt735.cpp9
-rw-r--r--src/mame/drivers/mtx.cpp136
-rw-r--r--src/mame/drivers/mugsmash.cpp38
-rw-r--r--src/mame/drivers/multfish.cpp241
-rw-r--r--src/mame/drivers/multfish_boot.cpp24
-rw-r--r--src/mame/drivers/multi16.cpp25
-rw-r--r--src/mame/drivers/multi8.cpp36
-rw-r--r--src/mame/drivers/munchmo.cpp38
-rw-r--r--src/mame/drivers/murogem.cpp31
-rw-r--r--src/mame/drivers/murogmbl.cpp60
-rw-r--r--src/mame/drivers/mustache.cpp34
-rw-r--r--src/mame/drivers/mvme147.cpp14
-rw-r--r--src/mame/drivers/mw18w.cpp14
-rw-r--r--src/mame/drivers/mw8080bw.cpp1
-rw-r--r--src/mame/drivers/mwarr.cpp38
-rw-r--r--src/mame/drivers/mwsub.cpp14
-rw-r--r--src/mame/drivers/mx2178.cpp25
-rw-r--r--src/mame/drivers/myb3k.cpp67
-rw-r--r--src/mame/drivers/mycom.cpp44
-rw-r--r--src/mame/drivers/mystston.cpp14
-rw-r--r--src/mame/drivers/mystwarr.cpp36
-rw-r--r--src/mame/drivers/myvision.cpp14
-rw-r--r--src/mame/drivers/mz2000.cpp59
-rw-r--r--src/mame/drivers/mz2500.cpp36
-rw-r--r--src/mame/drivers/mz3500.cpp46
-rw-r--r--src/mame/drivers/mz6500.cpp31
-rw-r--r--src/mame/drivers/mz700.cpp68
-rw-r--r--src/mame/drivers/mz80.cpp55
-rw-r--r--src/mame/drivers/mzr8105.cpp14
-rw-r--r--src/mame/drivers/nakajies.cpp53
-rw-r--r--src/mame/drivers/namcofl.cpp45
-rw-r--r--src/mame/drivers/namcona1.cpp26
-rw-r--r--src/mame/drivers/namconb1.cpp54
-rw-r--r--src/mame/drivers/namcond1.cpp61
-rw-r--r--src/mame/drivers/namcos1.cpp13
-rw-r--r--src/mame/drivers/namcos2.cpp497
-rw-r--r--src/mame/drivers/namcos21.cpp43
-rw-r--r--src/mame/drivers/namcos21_c67.cpp58
-rw-r--r--src/mame/drivers/namcos21_de.cpp37
-rw-r--r--src/mame/drivers/namcos22.cpp164
-rw-r--r--src/mame/drivers/nanos.cpp27
-rw-r--r--src/mame/drivers/naomi.cpp513
-rw-r--r--src/mame/drivers/nascom1.cpp112
-rw-r--r--src/mame/drivers/nbmj8688.cpp227
-rw-r--r--src/mame/drivers/nbmj8891.cpp224
-rw-r--r--src/mame/drivers/nbmj8900.cpp48
-rw-r--r--src/mame/drivers/nbmj8991.cpp177
-rw-r--r--src/mame/drivers/nbmj9195.cpp180
-rw-r--r--src/mame/drivers/nc.cpp77
-rw-r--r--src/mame/drivers/neogeo.cpp691
-rw-r--r--src/mame/drivers/neogeocd.cpp21
-rw-r--r--src/mame/drivers/neopcb.cpp21
-rw-r--r--src/mame/drivers/neoprint.cpp238
-rw-r--r--src/mame/drivers/neptunp2.cpp33
-rw-r--r--src/mame/drivers/nes.cpp20
-rw-r--r--src/mame/drivers/nes_vt.cpp18
-rw-r--r--src/mame/drivers/newbrain.cpp23
-rw-r--r--src/mame/drivers/news.cpp29
-rw-r--r--src/mame/drivers/next.cpp138
-rw-r--r--src/mame/drivers/nexus3d.cpp25
-rw-r--r--src/mame/drivers/nforcepc.cpp230
-rw-r--r--src/mame/drivers/ngen.cpp22
-rw-r--r--src/mame/drivers/ngp.cpp400
-rw-r--r--src/mame/drivers/nibble.cpp20
-rw-r--r--src/mame/drivers/nichild.cpp6
-rw-r--r--src/mame/drivers/nightgal.cpp104
-rw-r--r--src/mame/drivers/nightmare.cpp10
-rw-r--r--src/mame/drivers/ninjaw.cpp2
-rw-r--r--src/mame/drivers/nitedrvr.cpp27
-rw-r--r--src/mame/drivers/niyanpai.cpp68
-rw-r--r--src/mame/drivers/nmg5.cpp8
-rw-r--r--src/mame/drivers/nmk16.cpp53
-rw-r--r--src/mame/drivers/nmkmedal.cpp12
-rw-r--r--src/mame/drivers/nokia_3310.cpp64
-rw-r--r--src/mame/drivers/notechan.cpp16
-rw-r--r--src/mame/drivers/notetaker.cpp41
-rw-r--r--src/mame/drivers/nova2001.cpp196
-rw-r--r--src/mame/drivers/novag6502.cpp1078
-rw-r--r--src/mame/drivers/novag68k.cpp (renamed from src/mame/drivers/novag_diablo.cpp)187
-rw-r--r--src/mame/drivers/novag_cforte.cpp259
-rw-r--r--src/mame/drivers/novag_scon.cpp195
-rw-r--r--src/mame/drivers/novag_sexpert.cpp450
-rw-r--r--src/mame/drivers/novagf8.cpp (renamed from src/mame/drivers/novag_delta1.cpp)136
-rw-r--r--src/mame/drivers/novagmcs48.cpp (renamed from src/mame/drivers/novag_presto.cpp)138
-rw-r--r--src/mame/drivers/nsm.cpp24
-rw-r--r--src/mame/drivers/nsmpoker.cpp27
-rw-r--r--src/mame/drivers/nss.cpp50
-rw-r--r--src/mame/drivers/nycaptor.cpp3
-rw-r--r--src/mame/drivers/nyny.cpp41
-rw-r--r--src/mame/drivers/ob68k1a.cpp14
-rw-r--r--src/mame/drivers/octopus.cpp51
-rw-r--r--src/mame/drivers/odyssey.cpp22
-rw-r--r--src/mame/drivers/odyssey2.cpp115
-rw-r--r--src/mame/drivers/offtwall.cpp22
-rw-r--r--src/mame/drivers/ohmygod.cpp34
-rw-r--r--src/mame/drivers/ojankohs.cpp148
-rw-r--r--src/mame/drivers/okean240.cpp49
-rw-r--r--src/mame/drivers/olibochu.cpp38
-rw-r--r--src/mame/drivers/olytext.cpp31
-rw-r--r--src/mame/drivers/omegrace.cpp34
-rw-r--r--src/mame/drivers/ondra.cpp37
-rw-r--r--src/mame/drivers/oneshot.cpp224
-rw-r--r--src/mame/drivers/opwolf.cpp124
-rw-r--r--src/mame/drivers/orao.cpp33
-rw-r--r--src/mame/drivers/orbit.cpp30
-rw-r--r--src/mame/drivers/oric.cpp13
-rw-r--r--src/mame/drivers/orion.cpp19
-rw-r--r--src/mame/drivers/osbexec.cpp16
-rw-r--r--src/mame/drivers/othello.cpp9
-rw-r--r--src/mame/drivers/otomedius.cpp22
-rw-r--r--src/mame/drivers/p112.cpp27
-rw-r--r--src/mame/drivers/p2000t.cpp63
-rw-r--r--src/mame/drivers/p8k.cpp32
-rw-r--r--src/mame/drivers/pachifev.cpp30
-rw-r--r--src/mame/drivers/pacman.cpp279
-rw-r--r--src/mame/drivers/palestra.cpp95
-rw-r--r--src/mame/drivers/palm.cpp35
-rw-r--r--src/mame/drivers/palmz22.cpp24
-rw-r--r--src/mame/drivers/pandoras.cpp31
-rw-r--r--src/mame/drivers/pangofun.cpp18
-rw-r--r--src/mame/drivers/panicr.cpp30
-rw-r--r--src/mame/drivers/paradise.cpp86
-rw-r--r--src/mame/drivers/paranoia.cpp46
-rw-r--r--src/mame/drivers/pasha2.cpp36
-rw-r--r--src/mame/drivers/paso1600.cpp42
-rw-r--r--src/mame/drivers/pasogo.cpp76
-rw-r--r--src/mame/drivers/pasopia.cpp21
-rw-r--r--src/mame/drivers/pasopia7.cpp69
-rw-r--r--src/mame/drivers/pass.cpp40
-rw-r--r--src/mame/drivers/pastelg.cpp70
-rw-r--r--src/mame/drivers/patapata.cpp35
-rw-r--r--src/mame/drivers/patinho_feio.cpp4
-rw-r--r--src/mame/drivers/pbaction.cpp22
-rw-r--r--src/mame/drivers/pc.cpp238
-rw-r--r--src/mame/drivers/pc100.cpp35
-rw-r--r--src/mame/drivers/pc1512.cpp176
-rw-r--r--src/mame/drivers/pc2000.cpp2
-rw-r--r--src/mame/drivers/pc4.cpp23
-rw-r--r--src/mame/drivers/pc6001.cpp113
-rw-r--r--src/mame/drivers/pc8001.cpp102
-rw-r--r--src/mame/drivers/pc8401a.cpp40
-rw-r--r--src/mame/drivers/pc8801.cpp79
-rw-r--r--src/mame/drivers/pc88va.cpp52
-rw-r--r--src/mame/drivers/pc9801.cpp22
-rw-r--r--src/mame/drivers/pcat_dyn.cpp3
-rw-r--r--src/mame/drivers/pcat_nit.cpp30
-rw-r--r--src/mame/drivers/pcd.cpp32
-rw-r--r--src/mame/drivers/pce.cpp127
-rw-r--r--src/mame/drivers/pce220.cpp81
-rw-r--r--src/mame/drivers/pcfx.cpp47
-rw-r--r--src/mame/drivers/pcktgal.cpp70
-rw-r--r--src/mame/drivers/pcm.cpp25
-rw-r--r--src/mame/drivers/pcw.cpp2
-rw-r--r--src/mame/drivers/pcw16.cpp48
-rw-r--r--src/mame/drivers/pcxt.cpp37
-rw-r--r--src/mame/drivers/pdp11.cpp12
-rw-r--r--src/mame/drivers/pegasus.cpp48
-rw-r--r--src/mame/drivers/pencil2.cpp40
-rw-r--r--src/mame/drivers/pengadvb.cpp49
-rw-r--r--src/mame/drivers/pengo.cpp128
-rw-r--r--src/mame/drivers/pentagon.cpp27
-rw-r--r--src/mame/drivers/peoplepc.cpp21
-rw-r--r--src/mame/drivers/peplus.cpp15
-rw-r--r--src/mame/drivers/perq.cpp5
-rw-r--r--src/mame/drivers/pes.cpp2
-rw-r--r--src/mame/drivers/pet.cpp52
-rw-r--r--src/mame/drivers/peyper.cpp13
-rw-r--r--src/mame/drivers/pg685.cpp71
-rw-r--r--src/mame/drivers/pgm.cpp2
-rw-r--r--src/mame/drivers/pgm3.cpp32
-rw-r--r--src/mame/drivers/phc25.cpp70
-rw-r--r--src/mame/drivers/photon.cpp30
-rw-r--r--src/mame/drivers/photon2.cpp29
-rw-r--r--src/mame/drivers/photoply.cpp19
-rw-r--r--src/mame/drivers/phunsy.cpp4
-rw-r--r--src/mame/drivers/picno.cpp15
-rw-r--r--src/mame/drivers/piggypas.cpp56
-rw-r--r--src/mame/drivers/pinball2k.cpp24
-rw-r--r--src/mame/drivers/pingpong.cpp44
-rw-r--r--src/mame/drivers/pinkiri8.cpp37
-rw-r--r--src/mame/drivers/pipbug.cpp4
-rw-r--r--src/mame/drivers/pirates.cpp54
-rw-r--r--src/mame/drivers/piratesh.cpp2
-rw-r--r--src/mame/drivers/pitagjr.cpp23
-rw-r--r--src/mame/drivers/pk8000.cpp37
-rw-r--r--src/mame/drivers/pk8020.cpp46
-rw-r--r--src/mame/drivers/pktgaldx.cpp84
-rw-r--r--src/mame/drivers/plan80.cpp29
-rw-r--r--src/mame/drivers/play_1.cpp24
-rw-r--r--src/mame/drivers/play_2.cpp6
-rw-r--r--src/mame/drivers/play_3.cpp32
-rw-r--r--src/mame/drivers/playmark.cpp238
-rw-r--r--src/mame/drivers/plus4.cpp24
-rw-r--r--src/mame/drivers/pmi80.cpp11
-rw-r--r--src/mame/drivers/pntnpuzl.cpp18
-rw-r--r--src/mame/drivers/pockchal.cpp26
-rw-r--r--src/mame/drivers/pockstat.cpp29
-rw-r--r--src/mame/drivers/pofo.cpp68
-rw-r--r--src/mame/drivers/poisk1.cpp105
-rw-r--r--src/mame/drivers/pokechmp.cpp22
-rw-r--r--src/mame/drivers/pokemini.cpp2
-rw-r--r--src/mame/drivers/poker72.cpp25
-rw-r--r--src/mame/drivers/polepos.cpp1
-rw-r--r--src/mame/drivers/poly.cpp61
-rw-r--r--src/mame/drivers/poly88.cpp48
-rw-r--r--src/mame/drivers/poly880.cpp15
-rw-r--r--src/mame/drivers/polyplay.cpp17
-rw-r--r--src/mame/drivers/pong.cpp257
-rw-r--r--src/mame/drivers/poolshrk.cpp31
-rw-r--r--src/mame/drivers/pooyan.cpp24
-rw-r--r--src/mame/drivers/popobear.cpp40
-rw-r--r--src/mame/drivers/popper.cpp25
-rw-r--r--src/mame/drivers/portrait.cpp29
-rw-r--r--src/mame/drivers/potgoldu.cpp12
-rw-r--r--src/mame/drivers/powerbal.cpp80
-rw-r--r--src/mame/drivers/powerstack.cpp9
-rw-r--r--src/mame/drivers/pp01.cpp27
-rw-r--r--src/mame/drivers/ppmast93.cpp47
-rw-r--r--src/mame/drivers/prestige.cpp122
-rw-r--r--src/mame/drivers/primo.cpp92
-rw-r--r--src/mame/drivers/pro80.cpp15
-rw-r--r--src/mame/drivers/proconn.cpp8
-rw-r--r--src/mame/drivers/prof180x.cpp43
-rw-r--r--src/mame/drivers/prof80.cpp35
-rw-r--r--src/mame/drivers/progolf.cpp44
-rw-r--r--src/mame/drivers/prophet600.cpp21
-rw-r--r--src/mame/drivers/proteus.cpp35
-rw-r--r--src/mame/drivers/proteus3.cpp35
-rw-r--r--src/mame/drivers/pse.cpp23
-rw-r--r--src/mame/drivers/psikyo.cpp193
-rw-r--r--src/mame/drivers/psion.cpp108
-rw-r--r--src/mame/drivers/psx.cpp16
-rw-r--r--src/mame/drivers/pt68k4.cpp96
-rw-r--r--src/mame/drivers/ptcsol.cpp23
-rw-r--r--src/mame/drivers/pturn.cpp33
-rw-r--r--src/mame/drivers/puckpkmn.cpp34
-rw-r--r--src/mame/drivers/punchout.cpp64
-rw-r--r--src/mame/drivers/pv1000.cpp18
-rw-r--r--src/mame/drivers/pv2000.cpp25
-rw-r--r--src/mame/drivers/pv9234.cpp24
-rw-r--r--src/mame/drivers/pwrview.cpp23
-rw-r--r--src/mame/drivers/px4.cpp68
-rw-r--r--src/mame/drivers/px8.cpp55
-rw-r--r--src/mame/drivers/pyl601.cpp47
-rw-r--r--src/mame/drivers/pzletime.cpp26
-rw-r--r--src/mame/drivers/ql.cpp75
-rw-r--r--src/mame/drivers/quakeat.cpp32
-rw-r--r--src/mame/drivers/quasar.cpp1
-rw-r--r--src/mame/drivers/queen.cpp8
-rw-r--r--src/mame/drivers/quickpick5.cpp14
-rw-r--r--src/mame/drivers/quizdna.cpp55
-rw-r--r--src/mame/drivers/quizo.cpp28
-rw-r--r--src/mame/drivers/quizpani.cpp31
-rw-r--r--src/mame/drivers/quizshow.cpp1
-rw-r--r--src/mame/drivers/qvt201.cpp19
-rw-r--r--src/mame/drivers/qvt70.cpp9
-rw-r--r--src/mame/drivers/qx10.cpp22
-rw-r--r--src/mame/drivers/r2dtank.cpp39
-rw-r--r--src/mame/drivers/r9751.cpp51
-rw-r--r--src/mame/drivers/rad_eu3a05.cpp30
-rw-r--r--src/mame/drivers/rad_eu3a14.cpp835
-rw-r--r--src/mame/drivers/radio86.cpp82
-rw-r--r--src/mame/drivers/raiden.cpp37
-rw-r--r--src/mame/drivers/rainbow.cpp139
-rw-r--r--src/mame/drivers/rampart.cpp30
-rw-r--r--src/mame/drivers/ramtek.cpp23
-rw-r--r--src/mame/drivers/rastan.cpp44
-rw-r--r--src/mame/drivers/rastersp.cpp24
-rw-r--r--src/mame/drivers/ravens.cpp10
-rw-r--r--src/mame/drivers/rbisland.cpp81
-rw-r--r--src/mame/drivers/rbmk.cpp46
-rw-r--r--src/mame/drivers/rc702.cpp22
-rw-r--r--src/mame/drivers/rc759.cpp2
-rw-r--r--src/mame/drivers/rcorsair.cpp42
-rw-r--r--src/mame/drivers/rd100.cpp27
-rw-r--r--src/mame/drivers/rd110.cpp25
-rw-r--r--src/mame/drivers/re900.cpp3
-rw-r--r--src/mame/drivers/realbrk.cpp86
-rw-r--r--src/mame/drivers/redalert.cpp48
-rw-r--r--src/mame/drivers/redclash.cpp132
-rw-r--r--src/mame/drivers/relief.cpp31
-rw-r--r--src/mame/drivers/replicator.cpp1
-rw-r--r--src/mame/drivers/retofinv.cpp79
-rw-r--r--src/mame/drivers/rex6000.cpp62
-rw-r--r--src/mame/drivers/rgum.cpp27
-rw-r--r--src/mame/drivers/risc2500.cpp1
-rw-r--r--src/mame/drivers/riscpc.cpp131
-rw-r--r--src/mame/drivers/rltennis.cpp36
-rw-r--r--src/mame/drivers/rm380z.cpp62
-rw-r--r--src/mame/drivers/rmhaihai.cpp70
-rw-r--r--src/mame/drivers/rmnimbus.cpp2
-rw-r--r--src/mame/drivers/rmt32.cpp29
-rw-r--r--src/mame/drivers/rockrage.cpp38
-rw-r--r--src/mame/drivers/rocnrope.cpp26
-rw-r--r--src/mame/drivers/rohga.cpp184
-rw-r--r--src/mame/drivers/rollext.cpp39
-rw-r--r--src/mame/drivers/rollrace.cpp40
-rw-r--r--src/mame/drivers/ron.cpp26
-rw-r--r--src/mame/drivers/roul.cpp33
-rw-r--r--src/mame/drivers/route16.cpp1
-rw-r--r--src/mame/drivers/rowamet.cpp26
-rw-r--r--src/mame/drivers/royalmah.cpp282
-rw-r--r--src/mame/drivers/rpunch.cpp69
-rw-r--r--src/mame/drivers/rt1715.cpp371
-rw-r--r--src/mame/drivers/rulechan.cpp11
-rw-r--r--src/mame/drivers/rungun.cpp10
-rw-r--r--src/mame/drivers/rx78.cpp40
-rw-r--r--src/mame/drivers/rzone.cpp67
-rw-r--r--src/mame/drivers/s11.cpp42
-rw-r--r--src/mame/drivers/s11a.cpp38
-rw-r--r--src/mame/drivers/s11b.cpp36
-rw-r--r--src/mame/drivers/s3.cpp27
-rw-r--r--src/mame/drivers/s4.cpp27
-rw-r--r--src/mame/drivers/s6.cpp23
-rw-r--r--src/mame/drivers/s6a.cpp23
-rw-r--r--src/mame/drivers/s7.cpp23
-rw-r--r--src/mame/drivers/s8.cpp20
-rw-r--r--src/mame/drivers/s8a.cpp20
-rw-r--r--src/mame/drivers/s9.cpp23
-rw-r--r--src/mame/drivers/sage2.cpp35
-rw-r--r--src/mame/drivers/sam.cpp9
-rw-r--r--src/mame/drivers/sandscrp.cpp38
-rw-r--r--src/mame/drivers/sangho.cpp32
-rw-r--r--src/mame/drivers/sanremmg.cpp24
-rw-r--r--src/mame/drivers/sanremo.cpp52
-rw-r--r--src/mame/drivers/sansa_fuze.cpp11
-rw-r--r--src/mame/drivers/sapi1.cpp79
-rw-r--r--src/mame/drivers/sartorius.cpp5
-rw-r--r--src/mame/drivers/saturn.cpp52
-rw-r--r--src/mame/drivers/sauro.cpp75
-rw-r--r--src/mame/drivers/savquest.cpp28
-rw-r--r--src/mame/drivers/sbasketb.cpp54
-rw-r--r--src/mame/drivers/sbc6510.cpp2
-rw-r--r--src/mame/drivers/sbowling.cpp25
-rw-r--r--src/mame/drivers/sbrain.cpp55
-rw-r--r--src/mame/drivers/sbrkout.cpp10
-rw-r--r--src/mame/drivers/sbugger.cpp38
-rw-r--r--src/mame/drivers/sc1.cpp190
-rw-r--r--src/mame/drivers/sc2.cpp329
-rw-r--r--src/mame/drivers/scm_500.cpp7
-rw-r--r--src/mame/drivers/scobra.cpp153
-rw-r--r--src/mame/drivers/scopus.cpp54
-rw-r--r--src/mame/drivers/scorpion.cpp33
-rw-r--r--src/mame/drivers/scotrsht.cpp35
-rw-r--r--src/mame/drivers/scramble.cpp205
-rw-r--r--src/mame/drivers/scregg.cpp40
-rw-r--r--src/mame/drivers/scv.cpp12
-rw-r--r--src/mame/drivers/scyclone.cpp2
-rw-r--r--src/mame/drivers/sderby.cpp174
-rw-r--r--src/mame/drivers/sderby2.cpp37
-rw-r--r--src/mame/drivers/sdk51.cpp18
-rw-r--r--src/mame/drivers/sdk85.cpp11
-rw-r--r--src/mame/drivers/seabattl.cpp4
-rw-r--r--src/mame/drivers/sealy.cpp25
-rw-r--r--src/mame/drivers/seattlecmp.cpp13
-rw-r--r--src/mame/drivers/sega_beena.cpp137
-rw-r--r--src/mame/drivers/sega_sawatte.cpp7
-rw-r--r--src/mame/drivers/segae.cpp73
-rw-r--r--src/mame/drivers/segag80r.cpp116
-rw-r--r--src/mame/drivers/segag80v.cpp2
-rw-r--r--src/mame/drivers/segald.cpp26
-rw-r--r--src/mame/drivers/segapm.cpp24
-rw-r--r--src/mame/drivers/segas16a.cpp54
-rw-r--r--src/mame/drivers/segas16b.cpp131
-rw-r--r--src/mame/drivers/segas18.cpp3
-rw-r--r--src/mame/drivers/segas24.cpp1
-rw-r--r--src/mame/drivers/segas32.cpp25
-rw-r--r--src/mame/drivers/segasp.cpp39
-rw-r--r--src/mame/drivers/segattl.cpp23
-rw-r--r--src/mame/drivers/segaxbd.cpp12
-rw-r--r--src/mame/drivers/segaybd.cpp1
-rw-r--r--src/mame/drivers/seibucats.cpp38
-rw-r--r--src/mame/drivers/seibuspi.cpp38
-rw-r--r--src/mame/drivers/seicross.cpp57
-rw-r--r--src/mame/drivers/seicupbl.cpp97
-rw-r--r--src/mame/drivers/selz80.cpp19
-rw-r--r--src/mame/drivers/sengokmj.cpp4
-rw-r--r--src/mame/drivers/senjyo.cpp63
-rw-r--r--src/mame/drivers/seta.cpp93
-rw-r--r--src/mame/drivers/seta2.cpp407
-rw-r--r--src/mame/drivers/sf.cpp92
-rw-r--r--src/mame/drivers/sfbonus.cpp36
-rw-r--r--src/mame/drivers/sfcbox.cpp52
-rw-r--r--src/mame/drivers/sg1000.cpp117
-rw-r--r--src/mame/drivers/sg1000a.cpp34
-rw-r--r--src/mame/drivers/shadfrce.cpp32
-rw-r--r--src/mame/drivers/shanghai.cpp99
-rw-r--r--src/mame/drivers/shangkid.cpp66
-rw-r--r--src/mame/drivers/shaolins.cpp47
-rw-r--r--src/mame/drivers/shine.cpp10
-rw-r--r--src/mame/drivers/shisen.cpp53
-rw-r--r--src/mame/drivers/shootaway2.cpp28
-rw-r--r--src/mame/drivers/shootout.cpp62
-rw-r--r--src/mame/drivers/shougi.cpp46
-rw-r--r--src/mame/drivers/shtzone.cpp29
-rw-r--r--src/mame/drivers/shuuz.cpp25
-rw-r--r--src/mame/drivers/si5500.cpp51
-rw-r--r--src/mame/drivers/sigmab52.cpp36
-rw-r--r--src/mame/drivers/sigmab98.cpp220
-rw-r--r--src/mame/drivers/silkroad.cpp40
-rw-r--r--src/mame/drivers/silvmil.cpp286
-rw-r--r--src/mame/drivers/simpl156.cpp76
-rw-r--r--src/mame/drivers/simple_st0016.cpp56
-rw-r--r--src/mame/drivers/sk1.cpp5
-rw-r--r--src/mame/drivers/skeetsht.cpp13
-rw-r--r--src/mame/drivers/skimaxx.cpp46
-rw-r--r--src/mame/drivers/skullxbo.cpp30
-rw-r--r--src/mame/drivers/skyarmy.cpp49
-rw-r--r--src/mame/drivers/skydiver.cpp22
-rw-r--r--src/mame/drivers/skyfox.cpp36
-rw-r--r--src/mame/drivers/skylncr.cpp70
-rw-r--r--src/mame/drivers/skyraid.cpp28
-rw-r--r--src/mame/drivers/slapfght.cpp124
-rw-r--r--src/mame/drivers/slc1.cpp24
-rw-r--r--src/mame/drivers/slc1a.cpp212
-rw-r--r--src/mame/drivers/sleic.cpp9
-rw-r--r--src/mame/drivers/slicer.cpp52
-rw-r--r--src/mame/drivers/sliver.cpp36
-rw-r--r--src/mame/drivers/slotcarn.cpp22
-rw-r--r--src/mame/drivers/sm1800.cpp37
-rw-r--r--src/mame/drivers/sm7238.cpp25
-rw-r--r--src/mame/drivers/smc777.cpp270
-rw-r--r--src/mame/drivers/sms.cpp399
-rw-r--r--src/mame/drivers/sms_bootleg.cpp42
-rw-r--r--src/mame/drivers/smsmcorp.cpp37
-rw-r--r--src/mame/drivers/snes.cpp356
-rw-r--r--src/mame/drivers/snesb.cpp147
-rw-r--r--src/mame/drivers/snk6502.cpp98
-rw-r--r--src/mame/drivers/snookr10.cpp59
-rw-r--r--src/mame/drivers/snowbros.cpp26
-rw-r--r--src/mame/drivers/socrates.cpp95
-rw-r--r--src/mame/drivers/softbox.cpp35
-rw-r--r--src/mame/drivers/solbourne.cpp5
-rw-r--r--src/mame/drivers/solomon.cpp36
-rw-r--r--src/mame/drivers/sonson.cpp32
-rw-r--r--src/mame/drivers/sorcerer.cpp88
-rw-r--r--src/mame/drivers/sothello.cpp32
-rw-r--r--src/mame/drivers/spacefb.cpp15
-rw-r--r--src/mame/drivers/spaceg.cpp4
-rw-r--r--src/mame/drivers/spartanxtec.cpp39
-rw-r--r--src/mame/drivers/spbactn.cpp2
-rw-r--r--src/mame/drivers/spc1000.cpp52
-rw-r--r--src/mame/drivers/spc1500.cpp64
-rw-r--r--src/mame/drivers/spec128.cpp63
-rw-r--r--src/mame/drivers/special.cpp118
-rw-r--r--src/mame/drivers/specpls3.cpp124
-rw-r--r--src/mame/drivers/spectra.cpp2
-rw-r--r--src/mame/drivers/spectrum.cpp56
-rw-r--r--src/mame/drivers/speedatk.cpp28
-rw-r--r--src/mame/drivers/speedbal.cpp39
-rw-r--r--src/mame/drivers/speedspn.cpp38
-rw-r--r--src/mame/drivers/speglsht.cpp32
-rw-r--r--src/mame/drivers/spg110.cpp399
-rw-r--r--src/mame/drivers/spiders.cpp26
-rw-r--r--src/mame/drivers/spinb.cpp8
-rw-r--r--src/mame/drivers/spirit76.cpp14
-rw-r--r--src/mame/drivers/splash.cpp10
-rw-r--r--src/mame/drivers/splus.cpp4
-rw-r--r--src/mame/drivers/spool99.cpp48
-rw-r--r--src/mame/drivers/sprcros2.cpp41
-rw-r--r--src/mame/drivers/sprint2.cpp58
-rw-r--r--src/mame/drivers/sprint4.cpp29
-rw-r--r--src/mame/drivers/sprint8.cpp31
-rw-r--r--src/mame/drivers/spyhuntertec.cpp52
-rw-r--r--src/mame/drivers/squale.cpp36
-rw-r--r--src/mame/drivers/srmp2.cpp121
-rw-r--r--src/mame/drivers/srmp5.cpp26
-rw-r--r--src/mame/drivers/srmp6.cpp304
-rw-r--r--src/mame/drivers/srumbler.cpp60
-rw-r--r--src/mame/drivers/ssem.cpp18
-rw-r--r--src/mame/drivers/ssfindo.cpp51
-rw-r--r--src/mame/drivers/sshot.cpp28
-rw-r--r--src/mame/drivers/ssingles.cpp77
-rw-r--r--src/mame/drivers/sslam.cpp32
-rw-r--r--src/mame/drivers/ssozumo.cpp41
-rw-r--r--src/mame/drivers/sspeedr.cpp30
-rw-r--r--src/mame/drivers/ssrj.cpp28
-rw-r--r--src/mame/drivers/sstrangr.cpp35
-rw-r--r--src/mame/drivers/ssv.cpp4
-rw-r--r--src/mame/drivers/st17xx.cpp25
-rw-r--r--src/mame/drivers/st_mp100.cpp13
-rw-r--r--src/mame/drivers/st_mp200.cpp21
-rw-r--r--src/mame/drivers/stactics.cpp12
-rw-r--r--src/mame/drivers/stargame.cpp16
-rw-r--r--src/mame/drivers/starshp1.cpp27
-rw-r--r--src/mame/drivers/starwars.cpp38
-rw-r--r--src/mame/drivers/statriv2.cpp174
-rw-r--r--src/mame/drivers/stellafr.cpp17
-rw-r--r--src/mame/drivers/stlforce.cpp49
-rw-r--r--src/mame/drivers/storio.cpp171
-rw-r--r--src/mame/drivers/stratos.cpp25
-rw-r--r--src/mame/drivers/strkzn.cpp19
-rw-r--r--src/mame/drivers/studio2.cpp30
-rw-r--r--src/mame/drivers/stuntair.cpp34
-rw-r--r--src/mame/drivers/su2000.cpp29
-rw-r--r--src/mame/drivers/sub.cpp36
-rw-r--r--src/mame/drivers/subs.cpp42
-rw-r--r--src/mame/drivers/subsino.cpp180
-rw-r--r--src/mame/drivers/subsino2.cpp344
-rw-r--r--src/mame/drivers/summit.cpp25
-rw-r--r--src/mame/drivers/sumt8035.cpp12
-rw-r--r--src/mame/drivers/sun2.cpp60
-rw-r--r--src/mame/drivers/sun3.cpp149
-rw-r--r--src/mame/drivers/sun3x.cpp36
-rw-r--r--src/mame/drivers/sun4.cpp84
-rw-r--r--src/mame/drivers/suna16.cpp4
-rw-r--r--src/mame/drivers/suna8.cpp1
-rw-r--r--src/mame/drivers/supbtime.cpp46
-rw-r--r--src/mame/drivers/supdrapo.cpp26
-rw-r--r--src/mame/drivers/supduck.cpp41
-rw-r--r--src/mame/drivers/super6.cpp2
-rw-r--r--src/mame/drivers/super80.cpp8
-rw-r--r--src/mame/drivers/superchs.cpp44
-rw-r--r--src/mame/drivers/supercrd.cpp35
-rw-r--r--src/mame/drivers/superdq.cpp28
-rw-r--r--src/mame/drivers/superqix.cpp2
-rw-r--r--src/mame/drivers/superslave.cpp2
-rw-r--r--src/mame/drivers/supertnk.cpp4
-rw-r--r--src/mame/drivers/superwng.cpp33
-rw-r--r--src/mame/drivers/supracan.cpp30
-rw-r--r--src/mame/drivers/suprgolf.cpp40
-rw-r--r--src/mame/drivers/suprloco.cpp36
-rw-r--r--src/mame/drivers/suprnova.cpp153
-rw-r--r--src/mame/drivers/suprridr.cpp34
-rw-r--r--src/mame/drivers/supstarf.cpp8
-rw-r--r--src/mame/drivers/sv8000.cpp19
-rw-r--r--src/mame/drivers/svi318.cpp95
-rw-r--r--src/mame/drivers/svision.cpp47
-rw-r--r--src/mame/drivers/svmu.cpp12
-rw-r--r--src/mame/drivers/swtpc.cpp79
-rw-r--r--src/mame/drivers/symbolics.cpp10
-rw-r--r--src/mame/drivers/sys2900.cpp25
-rw-r--r--src/mame/drivers/sys9002.cpp25
-rw-r--r--src/mame/drivers/system1.cpp6
-rw-r--r--src/mame/drivers/system16.cpp490
-rw-r--r--src/mame/drivers/tagteam.cpp39
-rw-r--r--src/mame/drivers/tail2nos.cpp32
-rw-r--r--src/mame/drivers/taito.cpp25
-rw-r--r--src/mame/drivers/taito_b.cpp2
-rw-r--r--src/mame/drivers/taito_f2.cpp4
-rw-r--r--src/mame/drivers/taito_f3.cpp5
-rw-r--r--src/mame/drivers/taito_l.cpp122
-rw-r--r--src/mame/drivers/taito_o.cpp26
-rw-r--r--src/mame/drivers/taito_z.cpp93
-rw-r--r--src/mame/drivers/taitoair.cpp4
-rw-r--r--src/mame/drivers/taitogn.cpp10
-rw-r--r--src/mame/drivers/taitosj.cpp70
-rw-r--r--src/mame/drivers/taitottl.cpp23
-rw-r--r--src/mame/drivers/taitotx.cpp27
-rw-r--r--src/mame/drivers/taitowlf.cpp20
-rw-r--r--src/mame/drivers/tamag1.cpp6
-rw-r--r--src/mame/drivers/tandy1t.cpp143
-rw-r--r--src/mame/drivers/tandy2k.cpp288
-rw-r--r--src/mame/drivers/tank8.cpp36
-rw-r--r--src/mame/drivers/tankbust.cpp38
-rw-r--r--src/mame/drivers/tapatune.cpp39
-rw-r--r--src/mame/drivers/targeth.cpp36
-rw-r--r--src/mame/drivers/tasman.cpp27
-rw-r--r--src/mame/drivers/tatsumi.cpp123
-rw-r--r--src/mame/drivers/tavernie.cpp39
-rw-r--r--src/mame/drivers/taxidriv.cpp42
-rw-r--r--src/mame/drivers/tb303.cpp20
-rw-r--r--src/mame/drivers/tbowl.cpp4
-rw-r--r--src/mame/drivers/tceptor.cpp1
-rw-r--r--src/mame/drivers/tdv2324.cpp39
-rw-r--r--src/mame/drivers/tec1.cpp29
-rw-r--r--src/mame/drivers/techno.cpp14
-rw-r--r--src/mame/drivers/tecmo.cpp38
-rw-r--r--src/mame/drivers/tecmo16.cpp51
-rw-r--r--src/mame/drivers/tecnbras.cpp2
-rw-r--r--src/mame/drivers/tehkanwc.cpp51
-rw-r--r--src/mame/drivers/tek405x.cpp162
-rw-r--r--src/mame/drivers/tek410x.cpp48
-rw-r--r--src/mame/drivers/tek440x.cpp35
-rw-r--r--src/mame/drivers/tekxp33x.cpp25
-rw-r--r--src/mame/drivers/tempest.cpp2
-rw-r--r--src/mame/drivers/terco.cpp15
-rw-r--r--src/mame/drivers/terminal.cpp9
-rw-r--r--src/mame/drivers/terracre.cpp92
-rw-r--r--src/mame/drivers/testconsole.cpp29
-rw-r--r--src/mame/drivers/testpat.cpp150
-rw-r--r--src/mame/drivers/tetrisp2.cpp321
-rw-r--r--src/mame/drivers/tg100.cpp20
-rw-r--r--src/mame/drivers/tgtpanic.cpp26
-rw-r--r--src/mame/drivers/thedealr.cpp21
-rw-r--r--src/mame/drivers/thepit.cpp60
-rw-r--r--src/mame/drivers/thomson.cpp302
-rw-r--r--src/mame/drivers/thoop2.cpp40
-rw-r--r--src/mame/drivers/thunderj.cpp28
-rw-r--r--src/mame/drivers/ti74.cpp50
-rw-r--r--src/mame/drivers/ti85.cpp334
-rw-r--r--src/mame/drivers/ti89.cpp67
-rw-r--r--src/mame/drivers/ti990_10.cpp13
-rw-r--r--src/mame/drivers/ti990_4.cpp66
-rw-r--r--src/mame/drivers/ti99_2.cpp10
-rw-r--r--src/mame/drivers/ti99_4p.cpp91
-rw-r--r--src/mame/drivers/ti99_4x.cpp58
-rw-r--r--src/mame/drivers/ti99_8.cpp47
-rw-r--r--src/mame/drivers/tiamc1.cpp42
-rw-r--r--src/mame/drivers/ticalc1x.cpp560
-rw-r--r--src/mame/drivers/tickee.cpp68
-rw-r--r--src/mame/drivers/tiki100.cpp65
-rw-r--r--src/mame/drivers/tim011.cpp37
-rw-r--r--src/mame/drivers/tim100.cpp39
-rw-r--r--src/mame/drivers/timelimt.cpp38
-rw-r--r--src/mame/drivers/timetrv.cpp28
-rw-r--r--src/mame/drivers/timex.cpp67
-rw-r--r--src/mame/drivers/tispeak.cpp257
-rw-r--r--src/mame/drivers/tispellb.cpp63
-rw-r--r--src/mame/drivers/titan_soc.cpp121
-rw-r--r--src/mame/drivers/tk2000.cpp35
-rw-r--r--src/mame/drivers/tk80bs.cpp25
-rw-r--r--src/mame/drivers/tm990189.cpp30
-rw-r--r--src/mame/drivers/tmaster.cpp50
-rw-r--r--src/mame/drivers/tmc1800.cpp24
-rw-r--r--src/mame/drivers/tmc600.cpp11
-rw-r--r--src/mame/drivers/tmnt.cpp15
-rw-r--r--src/mame/drivers/tmspoker.cpp23
-rw-r--r--src/mame/drivers/tnzs.cpp3
-rw-r--r--src/mame/drivers/toaplan1.cpp607
-rw-r--r--src/mame/drivers/toaplan2.cpp167
-rw-r--r--src/mame/drivers/tomcat.cpp53
-rw-r--r--src/mame/drivers/toobin.cpp26
-rw-r--r--src/mame/drivers/topspeed.cpp54
-rw-r--r--src/mame/drivers/tosh1000.cpp61
-rw-r--r--src/mame/drivers/tourvis.cpp37
-rw-r--r--src/mame/drivers/tp84.cpp59
-rw-r--r--src/mame/drivers/tr606.cpp21
-rw-r--r--src/mame/drivers/trackfld.cpp165
-rw-r--r--src/mame/drivers/travrusa.cpp47
-rw-r--r--src/mame/drivers/triforce.cpp374
-rw-r--r--src/mame/drivers/trkfldch.cpp196
-rw-r--r--src/mame/drivers/trs80.cpp164
-rw-r--r--src/mame/drivers/trs80m2.cpp98
-rw-r--r--src/mame/drivers/trs80m3.cpp77
-rw-r--r--src/mame/drivers/truco.cpp34
-rw-r--r--src/mame/drivers/trucocl.cpp34
-rw-r--r--src/mame/drivers/trvmadns.cpp35
-rw-r--r--src/mame/drivers/tryout.cpp36
-rw-r--r--src/mame/drivers/ts3000.cpp11
-rw-r--r--src/mame/drivers/ts803.cpp21
-rw-r--r--src/mame/drivers/tsamurai.cpp133
-rw-r--r--src/mame/drivers/tsispch.cpp12
-rw-r--r--src/mame/drivers/ttchamp.cpp34
-rw-r--r--src/mame/drivers/tti.cpp96
-rw-r--r--src/mame/drivers/tubep.cpp106
-rw-r--r--src/mame/drivers/tugboat.cpp23
-rw-r--r--src/mame/drivers/tumbleb.cpp195
-rw-r--r--src/mame/drivers/turbo.cpp86
-rw-r--r--src/mame/drivers/turrett.cpp24
-rw-r--r--src/mame/drivers/tutankhm.cpp24
-rw-r--r--src/mame/drivers/tutor.cpp44
-rw-r--r--src/mame/drivers/tv910.cpp48
-rw-r--r--src/mame/drivers/tv955.cpp10
-rw-r--r--src/mame/drivers/tvc.cpp72
-rw-r--r--src/mame/drivers/tvcapcom.cpp27
-rw-r--r--src/mame/drivers/tvgame.cpp28
-rw-r--r--src/mame/drivers/twincobr.cpp20
-rw-r--r--src/mame/drivers/twins.cpp75
-rw-r--r--src/mame/drivers/tx0.cpp30
-rw-r--r--src/mame/drivers/tx1.cpp125
-rw-r--r--src/mame/drivers/uapce.cpp59
-rw-r--r--src/mame/drivers/ultraman.cpp43
-rw-r--r--src/mame/drivers/ultratnk.cpp30
-rw-r--r--src/mame/drivers/undrfire.cpp60
-rw-r--r--src/mame/drivers/unianapc.cpp22
-rw-r--r--src/mame/drivers/unichamp.cpp2
-rw-r--r--src/mame/drivers/unico.cpp118
-rw-r--r--src/mame/drivers/unior.cpp33
-rw-r--r--src/mame/drivers/univac.cpp416
-rw-r--r--src/mame/drivers/unixpc.cpp76
-rw-r--r--src/mame/drivers/unkhorse.cpp31
-rw-r--r--src/mame/drivers/unkpoker.cpp173
-rw-r--r--src/mame/drivers/upscope.cpp29
-rw-r--r--src/mame/drivers/usbilliards.cpp23
-rw-r--r--src/mame/drivers/usgames.cpp34
-rw-r--r--src/mame/drivers/ut88.cpp67
-rw-r--r--src/mame/drivers/uzebox.cpp2
-rw-r--r--src/mame/drivers/v100.cpp84
-rw-r--r--src/mame/drivers/v102.cpp82
-rw-r--r--src/mame/drivers/v1050.cpp87
-rw-r--r--src/mame/drivers/v550.cpp4
-rw-r--r--src/mame/drivers/v6809.cpp39
-rw-r--r--src/mame/drivers/vaportra.cpp41
-rw-r--r--src/mame/drivers/vax11.cpp2
-rw-r--r--src/mame/drivers/vball.cpp37
-rw-r--r--src/mame/drivers/vboy.cpp46
-rw-r--r--src/mame/drivers/vc4000.cpp20
-rw-r--r--src/mame/drivers/vcombat.cpp88
-rw-r--r--src/mame/drivers/vcs80.cpp7
-rw-r--r--src/mame/drivers/vd.cpp13
-rw-r--r--src/mame/drivers/vectrex.cpp1
-rw-r--r--src/mame/drivers/vectrix.cpp13
-rw-r--r--src/mame/drivers/vega.cpp13
-rw-r--r--src/mame/drivers/vegaeo.cpp2
-rw-r--r--src/mame/drivers/vegas.cpp113
-rw-r--r--src/mame/drivers/vertigo.cpp30
-rw-r--r--src/mame/drivers/vg5k.cpp58
-rw-r--r--src/mame/drivers/vgmplay.cpp20
-rw-r--r--src/mame/drivers/vic10.cpp72
-rw-r--r--src/mame/drivers/vic20.cpp10
-rw-r--r--src/mame/drivers/vicdual.cpp291
-rw-r--r--src/mame/drivers/victor9k.cpp2
-rw-r--r--src/mame/drivers/victory.cpp27
-rw-r--r--src/mame/drivers/vidbrain.cpp34
-rw-r--r--src/mame/drivers/video21.cpp2
-rw-r--r--src/mame/drivers/videopin.cpp26
-rw-r--r--src/mame/drivers/videopkr.cpp86
-rw-r--r--src/mame/drivers/vigilant.cpp5
-rw-r--r--src/mame/drivers/vii.cpp1704
-rw-r--r--src/mame/drivers/vindictr.cpp28
-rw-r--r--src/mame/drivers/vip.cpp37
-rw-r--r--src/mame/drivers/viper.cpp2
-rw-r--r--src/mame/drivers/vis.cpp3
-rw-r--r--src/mame/drivers/vixen.cpp115
-rw-r--r--src/mame/drivers/vk100.cpp17
-rw-r--r--src/mame/drivers/vlc.cpp54
-rw-r--r--src/mame/drivers/volfied.cpp34
-rw-r--r--src/mame/drivers/votrpss.cpp20
-rw-r--r--src/mame/drivers/voyager.cpp8
-rw-r--r--src/mame/drivers/vpoker.cpp30
-rw-r--r--src/mame/drivers/vroulet.cpp32
-rw-r--r--src/mame/drivers/vsmile.cpp421
-rw-r--r--src/mame/drivers/vsmileb.cpp164
-rw-r--r--src/mame/drivers/vsmilepro.cpp14
-rw-r--r--src/mame/drivers/vsnes.cpp6
-rw-r--r--src/mame/drivers/vt100.cpp95
-rw-r--r--src/mame/drivers/vt220.cpp10
-rw-r--r--src/mame/drivers/vt240.cpp25
-rw-r--r--src/mame/drivers/vt320.cpp26
-rw-r--r--src/mame/drivers/vt520.cpp50
-rw-r--r--src/mame/drivers/vta2000.cpp29
-rw-r--r--src/mame/drivers/vtech1.cpp40
-rw-r--r--src/mame/drivers/vtech2.cpp43
-rw-r--r--src/mame/drivers/vtech_eu3a12.cpp20
-rw-r--r--src/mame/drivers/vtech_unk1.cpp19
-rw-r--r--src/mame/drivers/vtech_unk2.cpp19
-rw-r--r--src/mame/drivers/vulgus.cpp34
-rw-r--r--src/mame/drivers/wacky_gator.cpp28
-rw-r--r--src/mame/drivers/wallc.cpp58
-rw-r--r--src/mame/drivers/wangpc.cpp65
-rw-r--r--src/mame/drivers/wardner.cpp46
-rw-r--r--src/mame/drivers/warpsped.cpp28
-rw-r--r--src/mame/drivers/warpwarp.cpp70
-rw-r--r--src/mame/drivers/warriorb.cpp12
-rw-r--r--src/mame/drivers/wc90b.cpp51
-rw-r--r--src/mame/drivers/welltris.cpp4
-rw-r--r--src/mame/drivers/wgp.cpp6
-rw-r--r--src/mame/drivers/wheelfir.cpp44
-rw-r--r--src/mame/drivers/white_mod.cpp9
-rw-r--r--src/mame/drivers/wicat.cpp8
-rw-r--r--src/mame/drivers/wico.cpp26
-rw-r--r--src/mame/drivers/wildpkr.cpp80
-rw-r--r--src/mame/drivers/williams.cpp211
-rw-r--r--src/mame/drivers/wink.cpp35
-rw-r--r--src/mame/drivers/wiping.cpp32
-rw-r--r--src/mame/drivers/witch.cpp131
-rw-r--r--src/mame/drivers/wiz.cpp79
-rw-r--r--src/mame/drivers/wmg.cpp41
-rw-r--r--src/mame/drivers/wms.cpp43
-rw-r--r--src/mame/drivers/wolfpack.cpp32
-rw-r--r--src/mame/drivers/wpc_95.cpp24
-rw-r--r--src/mame/drivers/wpc_dcs.cpp33
-rw-r--r--src/mame/drivers/wpc_s.cpp24
-rw-r--r--src/mame/drivers/wrally.cpp39
-rw-r--r--src/mame/drivers/wrlshunt.cpp179
-rw-r--r--src/mame/drivers/wswan.cpp62
-rw-r--r--src/mame/drivers/wwfsstar.cpp31
-rw-r--r--src/mame/drivers/wy150.cpp122
-rw-r--r--src/mame/drivers/wy30p.cpp128
-rw-r--r--src/mame/drivers/wy50.cpp145
-rw-r--r--src/mame/drivers/wy55.cpp111
-rw-r--r--src/mame/drivers/wy60.cpp168
-rw-r--r--src/mame/drivers/wyse.cpp103
-rw-r--r--src/mame/drivers/wyvernf0.cpp5
-rw-r--r--src/mame/drivers/x07.cpp44
-rw-r--r--src/mame/drivers/x1.cpp68
-rw-r--r--src/mame/drivers/x1twin.cpp62
-rw-r--r--src/mame/drivers/x68k.cpp33
-rw-r--r--src/mame/drivers/xain.cpp41
-rw-r--r--src/mame/drivers/xavix.cpp918
-rw-r--r--src/mame/drivers/xavix2.cpp161
-rw-r--r--src/mame/drivers/xbox.cpp22
-rw-r--r--src/mame/drivers/xerox820.cpp66
-rw-r--r--src/mame/drivers/xmen.cpp121
-rw-r--r--src/mame/drivers/xor100.cpp54
-rw-r--r--src/mame/drivers/xtheball.cpp24
-rw-r--r--src/mame/drivers/xtom3d.cpp8
-rw-r--r--src/mame/drivers/xxmissio.cpp34
-rw-r--r--src/mame/drivers/xybots.cpp26
-rw-r--r--src/mame/drivers/xyonix.cpp34
-rw-r--r--src/mame/drivers/y2.cpp21
-rw-r--r--src/mame/drivers/yiear.cpp39
-rw-r--r--src/mame/drivers/ymmu100.cpp574
-rw-r--r--src/mame/drivers/yunsung8.cpp47
-rw-r--r--src/mame/drivers/z100.cpp97
-rw-r--r--src/mame/drivers/z1013.cpp35
-rw-r--r--src/mame/drivers/z80dev.cpp11
-rw-r--r--src/mame/drivers/z80ne.cpp136
-rw-r--r--src/mame/drivers/z88.cpp22
-rw-r--r--src/mame/drivers/z9001.cpp27
-rw-r--r--src/mame/drivers/zac_proto.cpp10
-rw-r--r--src/mame/drivers/zaccaria.cpp28
-rw-r--r--src/mame/drivers/zapcomputer.cpp11
-rw-r--r--src/mame/drivers/zaurus.cpp26
-rw-r--r--src/mame/drivers/zaxxon.cpp84
-rw-r--r--src/mame/drivers/zexall.cpp2
-rw-r--r--src/mame/drivers/zms8085.cpp9
-rw-r--r--src/mame/drivers/zn.cpp8
-rw-r--r--src/mame/drivers/zorba.cpp49
-rw-r--r--src/mame/drivers/zr107.cpp10
-rw-r--r--src/mame/drivers/zwackery.cpp4
1875 files changed, 61107 insertions, 78387 deletions
diff --git a/src/mame/drivers/1942.cpp b/src/mame/drivers/1942.cpp
index 3dea5f551d8..a063ee16ef9 100644
--- a/src/mame/drivers/1942.cpp
+++ b/src/mame/drivers/1942.cpp
@@ -566,18 +566,17 @@ void _1942_state::machine_reset()
MACHINE_CONFIG_START(_1942_state::_1942)
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CPU_CLOCK); /* 4 MHz ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &_1942_state::_1942_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CPU_CLOCK) /* 4 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(_1942_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", _1942_state, _1942_scanline, "screen", 0, 1)
- TIMER(config, "scantimer").configure_scanline(FUNC(_1942_state::_1942_scanline), "screen", 0, 1);
-
- Z80(config, m_audiocpu, SOUND_CPU_CLOCK); /* 3 MHz ??? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &_1942_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(_1942_state::irq0_line_hold), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CPU_CLOCK) /* 3 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(_1942_state, irq0_line_hold, 4*60)
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_1942);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_1942)
PALETTE(config, m_palette, FUNC(_1942_state::_1942_palette), 64*4+4*32*8+16*16, 256);
@@ -628,21 +627,21 @@ MACHINE_CONFIG_START(_1942_state::_1942)
MACHINE_CONFIG_END
-void _1942p_state::_1942p(machine_config &config)
-{
+MACHINE_CONFIG_START(_1942p_state::_1942p)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CPU_CLOCK_1942P); /* 4 MHz - verified on PCB */
- m_maincpu->set_addrmap(AS_PROGRAM, &_1942p_state::_1942p_map);
- m_maincpu->set_vblank_int("screen", FUNC(_1942p_state::irq0_line_hold)); // note, powerups won't move down the screen with the original '1942' logic.
+ MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CPU_CLOCK_1942P) /* 4 MHz - verified on PCB */
+ MCFG_DEVICE_PROGRAM_MAP(_1942p_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", _1942p_state, irq0_line_hold) // note, powerups won't move down the screen with the original '1942' logic.
- Z80(config, m_audiocpu, SOUND_CPU_CLOCK_1942P); /* 4 MHz - verified on PCB */
- m_audiocpu->set_addrmap(AS_PROGRAM, &_1942p_state::_1942p_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &_1942p_state::_1942p_sound_io);
- m_audiocpu->set_periodic_int(FUNC(_1942p_state::irq0_line_hold), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CPU_CLOCK_1942P) /* 4 MHz - verified on PCB */
+ MCFG_DEVICE_PROGRAM_MAP(_1942p_sound_map)
+ MCFG_DEVICE_IO_MAP(_1942p_sound_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(_1942p_state, irq0_line_hold, 4*60)
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_1942p);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_1942p)
PALETTE(config, m_palette, FUNC(_1942p_state::_1942p_palette), 0x500, 0x400);
@@ -663,7 +662,7 @@ void _1942p_state::_1942p(machine_config &config)
AY8910(config, "ay1", AUDIO_CLOCK_1942P).add_route(ALL_OUTPUTS, "mono", 0.25); // 1.25 MHz - verified on PCB
AY8910(config, "ay2", AUDIO_CLOCK_1942P).add_route(ALL_OUTPUTS, "mono", 0.25); // 1.25 MHz - verified on PCB
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/1943.cpp b/src/mame/drivers/1943.cpp
index 0f68850bff5..f404a87765e 100644
--- a/src/mame/drivers/1943.cpp
+++ b/src/mame/drivers/1943.cpp
@@ -311,29 +311,29 @@ void _1943_state::machine_reset()
m_prot_value = 0;
}
-void _1943_state::_1943(machine_config &config)
-{
+MACHINE_CONFIG_START(_1943_state::_1943)
+
// basic machine hardware
- Z80(config, m_maincpu, XTAL(24'000'000)/4); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &_1943_state::c1943_map);
- m_maincpu->set_vblank_int("screen", FUNC(_1943_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(24'000'000)/4) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(c1943_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", _1943_state, irq0_line_hold)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(24'000'000)/8)); /* verified on pcb */
- audiocpu.set_addrmap(AS_PROGRAM, &_1943_state::sound_map);
- audiocpu.set_periodic_int(FUNC(_1943_state::irq0_line_hold), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(24'000'000)/8) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(_1943_state, irq0_line_hold, 4*60)
WATCHDOG_TIMER(config, "watchdog");
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(_1943_state::screen_update_1943));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_1943);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(_1943_state, screen_update_1943)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_1943)
PALETTE(config, m_palette, FUNC(_1943_state::_1943_palette), 32*4+16*16+16*16+16*16, 256);
// sound hardware
@@ -341,18 +341,18 @@ void _1943_state::_1943(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- ym2203_device &ym1(YM2203(config, "ym1", XTAL(24'000'000)/16)); /* verified on pcb */
- ym1.add_route(0, "mono", 0.15);
- ym1.add_route(1, "mono", 0.15);
- ym1.add_route(2, "mono", 0.15);
- ym1.add_route(3, "mono", 0.10);
-
- ym2203_device &ym2(YM2203(config, "ym2", XTAL(24'000'000)/16)); /* verified on pcb */
- ym2.add_route(0, "mono", 0.15);
- ym2.add_route(1, "mono", 0.15);
- ym2.add_route(2, "mono", 0.15);
- ym2.add_route(3, "mono", 0.10);
-}
+ MCFG_DEVICE_ADD("ym1", YM2203, XTAL(24'000'000)/16) /* verified on pcb */
+ MCFG_SOUND_ROUTE(0, "mono", 0.15)
+ MCFG_SOUND_ROUTE(1, "mono", 0.15)
+ MCFG_SOUND_ROUTE(2, "mono", 0.15)
+ MCFG_SOUND_ROUTE(3, "mono", 0.10)
+
+ MCFG_DEVICE_ADD("ym2", YM2203, XTAL(24'000'000)/16) /* verified on pcb */
+ MCFG_SOUND_ROUTE(0, "mono", 0.15)
+ MCFG_SOUND_ROUTE(1, "mono", 0.15)
+ MCFG_SOUND_ROUTE(2, "mono", 0.15)
+ MCFG_SOUND_ROUTE(3, "mono", 0.10)
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/20pacgal.cpp b/src/mame/drivers/20pacgal.cpp
index 38883d77efb..77e1873ac23 100644
--- a/src/mame/drivers/20pacgal.cpp
+++ b/src/mame/drivers/20pacgal.cpp
@@ -420,6 +420,7 @@ void _20pacgal_state::_20pacgal(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/24cdjuke.cpp b/src/mame/drivers/24cdjuke.cpp
index 565169ea73c..b0136b54929 100644
--- a/src/mame/drivers/24cdjuke.cpp
+++ b/src/mame/drivers/24cdjuke.cpp
@@ -283,13 +283,12 @@ void midcoin24cdjuke_state::machine_reset()
}
-void midcoin24cdjuke_state::midcoin24cdjuke(machine_config &config)
-{
+MACHINE_CONFIG_START(midcoin24cdjuke_state::midcoin24cdjuke)
/* basic machine hardware */
- Z80(config, m_maincpu, 6000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &midcoin24cdjuke_state::midcoin24cdjuke_map);
- m_maincpu->set_addrmap(AS_IO, &midcoin24cdjuke_state::midcoin24cdjuke_io);
- m_maincpu->set_periodic_int(FUNC(midcoin24cdjuke_state::irq0_line_hold), attotime::from_hz(500));
+ MCFG_DEVICE_ADD("maincpu", Z80,6000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(midcoin24cdjuke_map)
+ MCFG_DEVICE_IO_MAP(midcoin24cdjuke_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(midcoin24cdjuke_state, irq0_line_hold, 500)
config.set_default_layout(layout_24cdjuke);
@@ -306,7 +305,7 @@ void midcoin24cdjuke_state::midcoin24cdjuke(machine_config &config)
i8255_device &ic31(I8255A(config, "ic31", 0));
ic31.out_pb_callback().set_log("PPI8255 - unmapped write port B");
ic31.in_pc_callback().set_ioport("MD4");
-}
+MACHINE_CONFIG_END
ROM_START( 24cdjuke )
diff --git a/src/mame/drivers/39in1.cpp b/src/mame/drivers/39in1.cpp
index ed5aa3df6b6..ccd6a241677 100644
--- a/src/mame/drivers/39in1.cpp
+++ b/src/mame/drivers/39in1.cpp
@@ -286,11 +286,10 @@ void _39in1_state::_39in1(machine_config &config)
m_pxa_periphs->gpio0_in_cb().set(FUNC(_39in1_state::eeprom_r));
}
-void _39in1_state::_60in1(machine_config &config)
-{
+MACHINE_CONFIG_START(_39in1_state::_60in1)
_39in1(config);
MCFG_MACHINE_START_OVERRIDE(_39in1_state,60in1)
-}
+MACHINE_CONFIG_END
ROM_START( 39in1 )
// main program, encrypted
diff --git a/src/mame/drivers/3do.cpp b/src/mame/drivers/3do.cpp
index 21c83a4d497..9e6af48c6cf 100644
--- a/src/mame/drivers/3do.cpp
+++ b/src/mame/drivers/3do.cpp
@@ -154,40 +154,40 @@ void _3do_state::machine_reset()
m_clio.cstatbits = 0x01; /* bit 0 = reset of clio caused by power on */
}
-void _3do_state::_3do(machine_config &config)
-{
+MACHINE_CONFIG_START(_3do_state::_3do)
+
/* Basic machine hardware */
- ARM7_BE(config, m_maincpu, XTAL(50'000'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &_3do_state::main_mem);
+ MCFG_DEVICE_ADD( m_maincpu, ARM7_BE, XTAL(50'000'000)/4 )
+ MCFG_DEVICE_PROGRAM_MAP( main_mem)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- TIMER(config, "timer_x16").configure_periodic(FUNC(_3do_state::timer_x16_cb), attotime::from_hz(12000)); // TODO: timing
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x16", _3do_state, timer_x16_cb, attotime::from_hz(12000)) // TODO: timing
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(X2_CLOCK_NTSC / 2, 1592, 254, 1534, 263, 22, 262);
- m_screen->set_screen_update(FUNC(_3do_state::screen_update));
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_RAW_PARAMS( X2_CLOCK_NTSC / 2, 1592, 254, 1534, 263, 22, 262 )
+ MCFG_SCREEN_UPDATE_DRIVER(_3do_state, screen_update)
- CDROM(config, "cdrom");
-}
+ MCFG_CDROM_ADD("cdrom")
+MACHINE_CONFIG_END
-void _3do_state::_3do_pal(machine_config &config)
-{
+MACHINE_CONFIG_START(_3do_state::_3do_pal)
+
/* Basic machine hardware */
- ARM7_BE(config, m_maincpu, XTAL(50'000'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &_3do_state::main_mem);
+ MCFG_DEVICE_ADD(m_maincpu, ARM7_BE, XTAL(50'000'000)/4 )
+ MCFG_DEVICE_PROGRAM_MAP( main_mem)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- TIMER(config, "timer_x16").configure_periodic(FUNC(_3do_state::timer_x16_cb), attotime::from_hz(12000)); // TODO: timing
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x16", _3do_state, timer_x16_cb, attotime::from_hz(12000)) // TODO: timing
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(X2_CLOCK_PAL / 2, 1592, 254, 1534, 263, 22, 262); // TODO: proper params
- m_screen->set_screen_update(FUNC(_3do_state::screen_update));
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_RAW_PARAMS( X2_CLOCK_PAL / 2, 1592, 254, 1534, 263, 22, 262 ) // TODO: proper params
+ MCFG_SCREEN_UPDATE_DRIVER(_3do_state, screen_update)
- CDROM(config, "cdrom");
-}
+ MCFG_CDROM_ADD("cdrom")
+MACHINE_CONFIG_END
#if 0
#define NTSC_BIOS \
diff --git a/src/mame/drivers/3x3puzzl.cpp b/src/mame/drivers/3x3puzzl.cpp
index b390a774651..90cb23b4e5b 100644
--- a/src/mame/drivers/3x3puzzl.cpp
+++ b/src/mame/drivers/3x3puzzl.cpp
@@ -388,20 +388,20 @@ void _3x3puzzle_state::machine_reset()
}
-void _3x3puzzle_state::_3x3puzzle(machine_config &config)
-{
+MACHINE_CONFIG_START(_3x3puzzle_state::_3x3puzzle)
+
/* basic machine hardware */
- M68000(config, m_maincpu, MAIN_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &_3x3puzzle_state::_3x3puzzle_map);
- m_maincpu->set_vblank_int("screen", FUNC(_3x3puzzle_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu",M68000,MAIN_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(_3x3puzzle_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", _3x3puzzle_state, irq4_line_hold)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- m_screen->set_screen_update(FUNC(_3x3puzzle_state::screen_update));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(0*8, 40*8-1, 0*8, 30*8-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_UPDATE_DRIVER(_3x3puzzle_state, screen_update)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
GFXDECODE(config, m_gfxdecode, "palette", gfx_3x3puzzle);
@@ -409,8 +409,9 @@ void _3x3puzzle_state::_3x3puzzle(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(4'000'000)/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(4'000'000)/4, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/4004clk.cpp b/src/mame/drivers/4004clk.cpp
index 0071e0c56a5..d80d369b3a8 100644
--- a/src/mame/drivers/4004clk.cpp
+++ b/src/mame/drivers/4004clk.cpp
@@ -134,8 +134,8 @@ void nixieclock_state::machine_start()
save_pointer(NAME(m_nixie), 6);
}
-void nixieclock_state::_4004clk(machine_config &config)
-{
+MACHINE_CONFIG_START(nixieclock_state::_4004clk)
+
/* basic machine hardware */
i4004_cpu_device &cpu(I4004(config, "maincpu", 5_MHz_XTAL / 8));
cpu.set_rom_map(&nixieclock_state::_4004clk_rom);
@@ -149,13 +149,13 @@ void nixieclock_state::_4004clk(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
- clock_device &clk(CLOCK(config, "clk", 60));
- clk.signal_handler().set_inputline("maincpu", I4004_TEST_LINE);
-}
+ MCFG_CLOCK_ADD("clk", 60)
+ MCFG_CLOCK_SIGNAL_HANDLER(INPUTLINE("maincpu", I4004_TEST_LINE))
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( 4004clk )
diff --git a/src/mame/drivers/40love.cpp b/src/mame/drivers/40love.cpp
index 65f1a29217a..00840d27d24 100644
--- a/src/mame/drivers/40love.cpp
+++ b/src/mame/drivers/40love.cpp
@@ -730,6 +730,7 @@ void fortyl_state::common(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.2); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/4dpi.cpp b/src/mame/drivers/4dpi.cpp
index 191edfbd51d..4bea366bc98 100644
--- a/src/mame/drivers/4dpi.cpp
+++ b/src/mame/drivers/4dpi.cpp
@@ -239,21 +239,23 @@ void sgi_ip6_state::sgi_ip6_map(address_map &map)
MACHINE DRIVERS
***************************************************************************/
-void sgi_ip6_state::sgi_ip6(machine_config &config)
-{
+MACHINE_CONFIG_START(sgi_ip6_state::sgi_ip6)
R2000(config, m_maincpu, 25_MHz_XTAL / 2, 16384, 8192);
m_maincpu->set_endianness(ENDIANNESS_BIG);
m_maincpu->set_addrmap(AS_PROGRAM, &sgi_ip6_state::sgi_ip6_map);
m_maincpu->set_vblank_int("screen", FUNC(sgi_ip6_state::sgi_ip6_vbl));
+
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_screen_update(FUNC(sgi_ip6_state::screen_update_sgi_ip6));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE( 60 )
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sgi_ip6_state, screen_update_sgi_ip6)
+
+
+MACHINE_CONFIG_END
static INPUT_PORTS_START( sgi_ip6 )
PORT_START("UNUSED") // unused IN0
diff --git a/src/mame/drivers/4enlinea.cpp b/src/mame/drivers/4enlinea.cpp
index a91b52ac1c0..be19ea3ab00 100644
--- a/src/mame/drivers/4enlinea.cpp
+++ b/src/mame/drivers/4enlinea.cpp
@@ -500,26 +500,24 @@ INTERRUPT_GEN_MEMBER(_4enlinea_state::_4enlinea_audio_irq)
device.execute().set_input_line(0, HOLD_LINE);
}
-void _4enlinea_state::_4enlinea(machine_config &config)
-{
+MACHINE_CONFIG_START(_4enlinea_state::_4enlinea)
+
/* basic machine hardware */
- Z80(config, m_maincpu, PRG_CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &_4enlinea_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &_4enlinea_state::main_portmap);
- m_maincpu->set_periodic_int(FUNC(_4enlinea_state::_4enlinea_irq), attotime::from_hz(60)); //TODO
-// m_maincpu->set_periodic_int(FUNC(_4enlinea_state::irq0_line_hold), attotime::from_hz(4*35));
+ MCFG_DEVICE_ADD("maincpu", Z80, PRG_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(_4enlinea_state, _4enlinea_irq, 60) //TODO
+// MCFG_DEVICE_PERIODIC_INT_DRIVER(_4enlinea_state, irq0_line_hold, 4*35)
- z80_device &audiocpu(Z80(config, "audiocpu", SND_CPU_CLOCK));
- audiocpu.set_addrmap(AS_PROGRAM, &_4enlinea_state::audio_map);
- audiocpu.set_addrmap(AS_IO, &_4enlinea_state::audio_portmap);
- audiocpu.set_periodic_int(FUNC(_4enlinea_state::_4enlinea_audio_irq), attotime::from_hz(60)); //TODO
+ MCFG_DEVICE_ADD("audiocpu", Z80, SND_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(audio_map)
+ MCFG_DEVICE_IO_MAP(audio_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(_4enlinea_state, _4enlinea_audio_irq, 60) //TODO
// FIXME: determine ISA bus clock
- isa8_device &isa(ISA8(config, "isa", 0));
- isa.set_memspace("maincpu", AS_PROGRAM);
- isa.set_iospace("maincpu", AS_IO);
+ ISA8(config, "isa", 0).set_cputag("maincpu");
- ISA8_SLOT(config, "isa1", 0, "isa", _4enlinea_isa8_cards, "4enlinea", true);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "isa", _4enlinea_isa8_cards, "4enlinea", true)
/* 6845 clock is a guess, since it's a UM6845R embedded in the UM487F.
@@ -537,7 +535,7 @@ void _4enlinea_state::_4enlinea(machine_config &config)
m_ay->port_a_read_callback().set_ioport("IN-P2");
m_ay->port_b_read_callback().set_ioport("IN-P1");
m_ay->add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/***********************************
diff --git a/src/mame/drivers/4enraya.cpp b/src/mame/drivers/4enraya.cpp
index 793ec6a0960..7a05333266f 100644
--- a/src/mame/drivers/4enraya.cpp
+++ b/src/mame/drivers/4enraya.cpp
@@ -178,12 +178,12 @@ WRITE8_MEMBER(_4enraya_state::sound_control_w)
{
case 0: case 3:
// latch address
- m_ay->address_w(m_soundlatch);
+ m_ay->address_w(space, 0, m_soundlatch);
break;
case 2:
// write to psg
- m_ay->data_w(m_soundlatch);
+ m_ay->data_w(space, 0, m_soundlatch);
break;
default:
@@ -470,47 +470,48 @@ void _4enraya_state::machine_reset()
* Machine Drivers *
***********************************/
-void _4enraya_state::_4enraya(machine_config &config)
-{
+MACHINE_CONFIG_START(_4enraya_state::_4enraya )
+
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLOCK/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &_4enraya_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &_4enraya_state::main_portmap);
- m_maincpu->set_periodic_int(FUNC(_4enraya_state::irq0_line_hold), attotime::from_hz(4*60)); // unknown timing
+ MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CLOCK/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(_4enraya_state, irq0_line_hold, 4*60) // unknown timing
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(_4enraya_state::screen_update_4enraya));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(_4enraya_state, screen_update_4enraya)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_4enraya);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_4enraya)
PALETTE(config, m_palette, palette_device::RGB_3BIT);
/* sound hardware */
SPEAKER(config, "mono").front_center();
AY8910(config, m_ay, MAIN_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 0.3); /* guess */
-}
+MACHINE_CONFIG_END
-void unk_gambl_state::unkpacg(machine_config &config)
-{
+MACHINE_CONFIG_START(unk_gambl_state::unkpacg)
_4enraya(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &unk_gambl_state::unkpacg_main_map);
- m_maincpu->set_addrmap(AS_IO, &unk_gambl_state::unkpacg_main_portmap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(unkpacg_main_map)
+ MCFG_DEVICE_IO_MAP(unkpacg_main_portmap)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* sound hardware */
+// SPEAKER(config, "mono").front_center();
AY8910(config.replace(), m_ay, MAIN_CLOCK/4); /* guess */
m_ay->port_a_read_callback().set_ioport("DSW2");
m_ay->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/***********************************
diff --git a/src/mame/drivers/4roses.cpp b/src/mame/drivers/4roses.cpp
index bf8c3e00c91..9ec63144db4 100644
--- a/src/mame/drivers/4roses.cpp
+++ b/src/mame/drivers/4roses.cpp
@@ -454,26 +454,25 @@ GFXDECODE_END
* Machine Drivers *
**************************/
-void _4roses_state::_4roses(machine_config &config)
-{
+MACHINE_CONFIG_START(_4roses_state::_4roses)
/* basic machine hardware */
- M65C02(config, m_maincpu, MASTER_CLOCK/8); /* 2MHz, guess */
- m_maincpu->set_addrmap(AS_PROGRAM, &_4roses_state::_4roses_map);
- m_maincpu->set_addrmap(AS_OPCODES, &_4roses_state::_4roses_opcodes_map);
+ MCFG_DEVICE_ADD("maincpu", M65C02, MASTER_CLOCK/8) /* 2MHz, guess */
+ MCFG_DEVICE_PROGRAM_MAP(_4roses_map)
+ MCFG_DEVICE_OPCODES_MAP(_4roses_opcodes_map)
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size((124+1)*4, (30+1)*8); /* guess. taken from funworld games */
- screen.set_visarea(0*4, 96*4-1, 0*8, 29*8-1); /* guess. taken from funworld games */
- screen.set_screen_update(FUNC(_4roses_state::screen_update_funworld));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE((124+1)*4, (30+1)*8) /* guess. taken from funworld games */
+ MCFG_SCREEN_VISIBLE_AREA(0*4, 96*4-1, 0*8, 29*8-1) /* guess. taken from funworld games */
+ MCFG_SCREEN_UPDATE_DRIVER(_4roses_state, screen_update_funworld)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, "palette", gfx_4roses);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_4roses)
PALETTE(config, "palette", FUNC(_4roses_state::funworld_palette), 0x1000);
@@ -487,15 +486,14 @@ void _4roses_state::_4roses(machine_config &config)
SPEAKER(config, "mono").front_center();
AY8910(config, "ay8910", MASTER_CLOCK/8).add_route(ALL_OUTPUTS, "mono", 2.5); /* 2MHz, guess */
-}
+MACHINE_CONFIG_END
-void rugby_state::rugby(machine_config &config)
-{
+MACHINE_CONFIG_START(rugby_state::rugby)
_4roses(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &rugby_state::rugby_map);
- m_maincpu->set_addrmap(AS_OPCODES, &rugby_state::rugby_opcodes_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(rugby_map)
+ MCFG_DEVICE_OPCODES_MAP(rugby_opcodes_map)
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/5clown.cpp b/src/mame/drivers/5clown.cpp
index 192bae5fba5..82097ed930b 100644
--- a/src/mame/drivers/5clown.cpp
+++ b/src/mame/drivers/5clown.cpp
@@ -509,7 +509,7 @@ private:
DECLARE_WRITE8_MEMBER(trigsnd_w);
DECLARE_READ8_MEMBER(pia0_b_r);
DECLARE_READ8_MEMBER(pia1_b_r);
- void fclown_ay8910_w(offs_t offset, u8 data);
+ DECLARE_WRITE8_MEMBER(fclown_ay8910_w);
TILE_GET_INFO_MEMBER(get_fclown_tile_info);
void _5clown_palette(palette_device &palette) const;
uint32_t screen_update_fclown(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -583,12 +583,12 @@ uint32_t _5clown_state::screen_update_fclown(screen_device &screen, bitmap_ind16
void _5clown_state::_5clown_palette(palette_device &palette) const
{
/*
- 7654 3210
- ---- ---x RED component.
- ---- --x- GREEN component.
- ---- -x-- BLUE component.
- ---- x--- background killer.
- xxxx ---- unused.
+ 7654 3210
+ ---- ---x RED component.
+ ---- --x- GREEN component.
+ ---- -x-- BLUE component.
+ ---- x--- background killer.
+ xxxx ---- unused.
*/
/* 0000KBGR */
@@ -714,10 +714,10 @@ WRITE8_MEMBER(_5clown_state::cpu_d800_w)
* AY3-8910 R/W Handlers *
********************************/
-void _5clown_state::fclown_ay8910_w(offs_t offset, u8 data)
+WRITE8_MEMBER(_5clown_state::fclown_ay8910_w)
{
- m_ay8910->address_w(offset);
- m_ay8910->data_w(data);
+ m_ay8910->address_w(space, 0, offset);
+ m_ay8910->data_w(space, 0, data);
}
@@ -742,7 +742,7 @@ WRITE8_MEMBER(_5clown_state::snd_800_w)
if (m_snd_latch_0a02 == 0x00)
{
- fclown_ay8910_w(m_ay8910_addr, m_snd_latch_0800);
+ fclown_ay8910_w(space, m_ay8910_addr, m_snd_latch_0800);
}
}
@@ -1020,14 +1020,14 @@ GFXDECODE_END
* Machine Drivers *
*************************/
-void _5clown_state::fclown(machine_config &config)
-{
+MACHINE_CONFIG_START(_5clown_state::fclown)
+
/* basic machine hardware */
- M6502(config, m_maincpu, MASTER_CLOCK/8); /* guess, seems ok */
- m_maincpu->set_addrmap(AS_PROGRAM, &_5clown_state::fclown_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, MASTER_CLOCK/8) /* guess, seems ok */
+ MCFG_DEVICE_PROGRAM_MAP(fclown_map)
- M6502(config, m_audiocpu, MASTER_CLOCK/8); /* guess, seems ok */
- m_audiocpu->set_addrmap(AS_PROGRAM, &_5clown_state::fcaudio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6502, MASTER_CLOCK/8) /* guess, seems ok */
+ MCFG_DEVICE_PROGRAM_MAP(fcaudio_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -1043,13 +1043,13 @@ void _5clown_state::fclown(machine_config &config)
pia1.writepb_handler().set(FUNC(_5clown_state::mux_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size((39+1)*8, (31+1)*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(_5clown_state::screen_update_fclown));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE((39+1)*8, (31+1)*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(_5clown_state, screen_update_fclown)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_fclown);
PALETTE(config, m_palette, FUNC(_5clown_state::_5clown_palette), 256);
@@ -1065,8 +1065,10 @@ void _5clown_state::fclown(machine_config &config)
AY8910(config, m_ay8910, MASTER_CLOCK/8).add_route(ALL_OUTPUTS, "mono", 1.00); /* guess, seems ok */
- OKIM6295(config, "oki6295", MASTER_CLOCK/12, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 1.20); /* guess, seems ok; pin7 guessed, seems ok */
-}
+ MCFG_DEVICE_ADD("oki6295", OKIM6295, MASTER_CLOCK/12, okim6295_device::PIN7_LOW) /* guess, seems ok; pin7 guessed, seems ok */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.20)
+
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/8080bw.cpp b/src/mame/drivers/8080bw.cpp
index 6650c16c1b7..54acc0d8645 100644
--- a/src/mame/drivers/8080bw.cpp
+++ b/src/mame/drivers/8080bw.cpp
@@ -819,18 +819,20 @@ void _8080bw_state::spacecom_io_map(address_map &map)
void _8080bw_state::spacecom(machine_config &config)
{
/* basic machine hardware */
- I8080A(config, m_maincpu, XTAL(18'000'000) / 9); // divider guessed
+ I8080A(config, m_maincpu, XTAL(18'000'000) / 10); // divider guessed
// TODO: move irq handling away from mw8080.c, this game runs on custom hardware
m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::spacecom_map);
m_maincpu->set_addrmap(AS_IO, &_8080bw_state::spacecom_io_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(_8080bw_state::interrupt_vector));
MCFG_MACHINE_START_OVERRIDE(mw8080bw_state, mw8080bw)
MCFG_MACHINE_RESET_OVERRIDE(mw8080bw_state, mw8080bw)
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(18'000'000) / 3, 384, 0, 256, 260, 0, 224); // parameters guessed
+ m_screen->set_refresh_hz(60);
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
+ m_screen->set_size(32*8, 32*8);
+ m_screen->set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_spacecom));
PALETTE(config, m_palette, palette_device::MONOCHROME);
@@ -1142,7 +1144,6 @@ void _8080bw_state::escmars(machine_config &config)
I8080(config, m_maincpu, XTAL(18'000'000) / 10); // divider guessed
m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::escmars_map);
m_maincpu->set_addrmap(AS_IO, &_8080bw_state::lrescue_io_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(_8080bw_state::interrupt_vector));
MCFG_MACHINE_START_OVERRIDE(_8080bw_state, extra_8080bw)
MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state, mw8080bw)
@@ -1242,6 +1243,7 @@ void _8080bw_state::cosmicmo(machine_config &config)
/* basic machine hardware */
m_maincpu->set_addrmap(AS_IO, &_8080bw_state::cosmicmo_io_map);
+ m_maincpu->set_vblank_int("screen", FUNC(_8080bw_state::irq0_line_hold));
MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw)
@@ -1535,7 +1537,6 @@ void _8080bw_state::schaser(machine_config &config)
I8080(config.replace(), m_maincpu, 1996800); /* 19.968MHz / 10 */
m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::schaser_map);
m_maincpu->set_addrmap(AS_IO, &_8080bw_state::schaser_io_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(_8080bw_state::interrupt_vector));
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 255);
MCFG_MACHINE_START_OVERRIDE(_8080bw_state,schaser)
@@ -1706,14 +1707,6 @@ CUSTOM_INPUT_MEMBER(_8080bw_state::sflush_80_r)
return (m_screen->vpos() & 0x80) ? 1 : 0;
}
-uint8_t _8080bw_state::sflush_in0_r()
-{
- // guess at interrupt acknowledgement
- if (!machine().side_effects_disabled())
- m_maincpu->set_input_line(0, CLEAR_LINE);
- return ioport("IN0")->read();
-}
-
void _8080bw_state::sflush_map(address_map &map)
{
map(0x0000, 0x1fff).ram();
@@ -1721,7 +1714,7 @@ void _8080bw_state::sflush_map(address_map &map)
map(0x8008, 0x8008).portr("PADDLE");
map(0x8009, 0x8009).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
map(0x800a, 0x800a).portr("IN2");
- map(0x800b, 0x800b).r(FUNC(_8080bw_state::sflush_in0_r));
+ map(0x800b, 0x800b).portr("IN0");
map(0x8018, 0x8018).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
map(0x8019, 0x8019).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
map(0x801a, 0x801a).nopw();
@@ -1776,6 +1769,7 @@ void _8080bw_state::sflush(machine_config &config)
/* basic machine hardware */
M6800(config.replace(), m_maincpu, 1500000); // ?
m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::sflush_map);
+ m_maincpu->set_vblank_int("screen", FUNC(_8080bw_state::irq0_line_hold));
MCFG_MACHINE_START_OVERRIDE(_8080bw_state,sflush)
@@ -1940,17 +1934,14 @@ void _8080bw_state::lupin3a(machine_config &config)
/* */
/*******************************************************/
-WRITE_LINE_MEMBER(_8080bw_state::polaris_60hz_w)
+INTERRUPT_GEN_MEMBER(_8080bw_state::polaris_interrupt)
{
- if (state)
- {
- m_polaris_cloud_speed++;
+ m_polaris_cloud_speed++;
- if (m_polaris_cloud_speed >= 4) /* every 4 frames - this was verified against real machine */
- {
- m_polaris_cloud_speed = 0;
- m_polaris_cloud_pos++;
- }
+ if (m_polaris_cloud_speed >= 4) /* every 4 frames - this was verified against real machine */
+ {
+ m_polaris_cloud_speed = 0;
+ m_polaris_cloud_pos++;
}
}
@@ -2048,8 +2039,10 @@ void _8080bw_state::polaris(machine_config &config)
mw8080bw_root(config);
/* basic machine hardware */
+ I8080(config.replace(), m_maincpu, 1996800); /* 19.968MHz / 10 */
m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::schaser_map);
m_maincpu->set_addrmap(AS_IO, &_8080bw_state::polaris_io_map);
+ m_maincpu->set_vblank_int("screen", FUNC(_8080bw_state::polaris_interrupt));
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 255);
@@ -2060,7 +2053,6 @@ void _8080bw_state::polaris(machine_config &config)
/* video hardware */
m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_polaris));
- m_screen->screen_vblank().set(FUNC(_8080bw_state::polaris_60hz_w));
PALETTE(config, m_palette, palette_device::RBG_3BIT);
@@ -2749,7 +2741,6 @@ void _8080bw_state::shuttlei(machine_config &config)
// TODO: move irq handling away from mw8080.cpp, this game runs on custom hardware
m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::shuttlei_map);
m_maincpu->set_addrmap(AS_IO, &_8080bw_state::shuttlei_io_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(_8080bw_state::interrupt_vector));
MCFG_MACHINE_START_OVERRIDE(_8080bw_state, extra_8080bw)
MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state, mw8080bw)
@@ -2805,12 +2796,6 @@ MACHINE_RESET_MEMBER(_8080bw_state,darthvdr)
/* do nothing for now - different interrupt system */
}
-IRQ_CALLBACK_MEMBER(_8080bw_state::darthvdr_interrupt_vector)
-{
- m_maincpu->set_input_line(0, CLEAR_LINE);
- return 0xff;
-}
-
READ8_MEMBER(_8080bw_state::darthvdr_01_r)
{
uint8_t data = ioport("P2")->read();
@@ -2882,7 +2867,7 @@ void _8080bw_state::darthvdr(machine_config &config)
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::darthvdr_map);
m_maincpu->set_addrmap(AS_IO, &_8080bw_state::darthvdr_io_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(_8080bw_state::darthvdr_interrupt_vector));
+ m_maincpu->set_vblank_int("screen", FUNC(_8080bw_state::irq0_line_hold));
MCFG_MACHINE_START_OVERRIDE(_8080bw_state,darthvdr)
MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state,darthvdr)
@@ -2892,7 +2877,6 @@ void _8080bw_state::darthvdr(machine_config &config)
/* video hardware */
m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invaders));
- m_screen->screen_vblank().set_inputline(m_maincpu, 0, ASSERT_LINE);
}
@@ -4500,16 +4484,6 @@ ROM_START( invasiona )
ROM_LOAD( "invasiona_5.bin", 0x1c00, 0x0400, CRC(59134ff8) SHA1(2e6a040066b35b10f867a3e500e3b13922c0eb7a) )
ROM_END
-ROM_START( invasiona2 )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "0.0.bin", 0x0000, 0x0400, CRC(7a9b4485) SHA1(dde918ec106971972bf7c7e5085c1262522f7e35) )
- ROM_LOAD( "1.1.bin", 0x0400, 0x0400, CRC(7c86620d) SHA1(9e92ec0aa4eee96a7fa115a14a611c488d13b9dd) )
- ROM_LOAD( "2.2.bin", 0x0800, 0x0400, CRC(b949185e) SHA1(f6dad27fdc5a030d2391078926bcf8e4adf21a12) )
- ROM_LOAD( "3.5.bin", 0x1400, 0x0400, CRC(8ec9eae2) SHA1(48d7a7dc61e0417ca4093e5c2a36efd96e359233) )
- ROM_LOAD( "4.6.bin", 0x1800, 0x0400, CRC(ec0edb4a) SHA1(8c6946b50ba5c319fe03c55b43c4e714387719b8) )
- ROM_LOAD( "5.7.bin", 0x1c00, 0x0400, CRC(c3466380) SHA1(19b0f274a1b97a6ab48f3fe11fdee44ed2f50603) )
-ROM_END
-
ROM_START( invasionb )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "invasionb_0.bin", 0x0000, 0x0400, CRC(7a9b4485) SHA1(dde918ec106971972bf7c7e5085c1262522f7e35) )
@@ -5179,11 +5153,10 @@ GAMEL(1980, spaceat2, invaders, invaders, spaceat2, mw8080bw_state, empty_i
GAMEL(1979, spacecom, invaders, spacecom, spacecom, _8080bw_state, init_spacecom, ROT270, "bootleg", "Space Combat (bootleg of Space Invaders)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_spacecom )
GAME( 1978, spacerng, invaders, spacerng, sitv, _8080bw_state, empty_init, ROT90, "bootleg (Leisure Time Electronics)", "Space Ranger", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // many modifications
GAMEL(19??, invasion, invaders, invaders, invasion, mw8080bw_state, empty_init, ROT270, "bootleg (Sidam)", "Invasion (Sidam)", MACHINE_SUPPORTS_SAVE, layout_invaders )
-GAMEL(1979, invasiona, invaders, invaders, invasion, mw8080bw_state, empty_init, ROT270, "bootleg", "UFO Robot Attack (bootleg of Invasion, newer set)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // has Sidam replaced with 'Ufo Monster Attack' and standard GFX
-GAMEL(1979, invasiona2, invaders, invaders, invasion, mw8080bw_state, empty_init, ROT270, "bootleg", "UFO Robot Attack (bootleg of Invasion, older set)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // has Sidam replaced with 'Ufo Monster Attack' and standard GFX
-GAMEL(1979, invasionb, invaders, invaders, invasion, mw8080bw_state, empty_init, ROT270, "bootleg", "Invasion (Italian bootleg)", MACHINE_SUPPORTS_SAVE, layout_invaders )
-GAMEL(1979, invasionrz, invaders, invaders, invasion, mw8080bw_state, empty_init, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 1, R Z SRL Bologna)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_invaders )
-GAMEL(1979, invasionrza, invaders, invaders, invasion, mw8080bw_state, empty_init, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 2, R Z SRL Bologna)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_invaders )
+GAMEL(19??, invasiona, invaders, invaders, invasion, mw8080bw_state, empty_init, ROT270, "bootleg", "Invasion (bootleg set 1, normal graphics)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // has Sidam replaced with 'Ufo Monster Attack' and standard GFX
+GAMEL(19??, invasionb, invaders, invaders, invasion, mw8080bw_state, empty_init, ROT270, "bootleg", "Invasion (bootleg set 2, no copyright)", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(19??, invasionrz, invaders, invaders, invasion, mw8080bw_state, empty_init, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 3, R Z SRL Bologna)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_invaders )
+GAMEL(19??, invasionrza, invaders, invaders, invasion, mw8080bw_state, empty_init, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 4, R Z SRL Bologna)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_invaders )
GAMEL(19??, invadersem, invaders, invaders, sitv, mw8080bw_state, empty_init, ROT270, "Electromar", "Space Invaders (Electromar, Spanish)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // possibly licensed
GAMEL(1978, superinv, invaders, invaders, superinv, mw8080bw_state, empty_init, ROT270, "bootleg", "Super Invaders (bootleg set 1)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // not related to Zenitone-Microsec version
GAMEL(1978, sinvemag, invaders, invaders, sinvemag, mw8080bw_state, empty_init, ROT270, "bootleg (Emag)", "Super Invaders (bootleg set 2)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // not related to Zenitone-Microsec version
diff --git a/src/mame/drivers/a1supply.cpp b/src/mame/drivers/a1supply.cpp
index 964736feb25..38dd35768df 100644
--- a/src/mame/drivers/a1supply.cpp
+++ b/src/mame/drivers/a1supply.cpp
@@ -87,21 +87,20 @@ void a1supply_state::video_start()
{
}
-void a1supply_state::a1supply(machine_config &config)
-{
+MACHINE_CONFIG_START(a1supply_state::a1supply)
+
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_a1supply);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(a1supply)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL);
- m_video->set_vert_params(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.30);
-}
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/a5105.cpp b/src/mame/drivers/a5105.cpp
index 037daf3feab..f52c14979aa 100644
--- a/src/mame/drivers/a5105.cpp
+++ b/src/mame/drivers/a5105.cpp
@@ -560,8 +560,7 @@ static const z80_daisy_config a5105_daisy_chain[] =
{ nullptr }
};
-void a5105_state::a5105(machine_config &config)
-{
+MACHINE_CONFIG_START(a5105_state::a5105)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(15'000'000) / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &a5105_state::a5105_mem);
@@ -569,12 +568,12 @@ void a5105_state::a5105(machine_config &config)
m_maincpu->set_daisy_config(a5105_daisy_chain);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(50);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_screen_update("upd7220", FUNC(upd7220_device::screen_update));
- m_screen->set_size(40*8, 32*8);
- m_screen->set_visarea(0, 40*8-1, 0, 25*8-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DEVICE("upd7220", upd7220_device, screen_update)
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 25*8-1)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_a5105);
PALETTE(config, m_palette, FUNC(a5105_state::a5105_palette), 16);
@@ -586,8 +585,8 @@ void a5105_state::a5105(machine_config &config)
/* Devices */
UPD7220(config, m_hgdc, XTAL(15'000'000) / 16); // unk clock
m_hgdc->set_addrmap(0, &a5105_state::upd7220_map);
- m_hgdc->set_display_pixels(FUNC(a5105_state::hgdc_display_pixels));
- m_hgdc->set_draw_text(FUNC(a5105_state::hgdc_draw_text));
+ m_hgdc->set_display_pixels_callback(FUNC(a5105_state::hgdc_display_pixels), this);
+ m_hgdc->set_draw_text_callback(FUNC(a5105_state::hgdc_draw_text), this);
z80ctc_device& ctc(Z80CTC(config, "z80ctc", XTAL(15'000'000) / 4));
ctc.intr_callback().set_inputline(m_maincpu, 0);
@@ -597,17 +596,17 @@ void a5105_state::a5105(machine_config &config)
z80pio_device& pio(Z80PIO(config, "z80pio", XTAL(15'000'000) / 4));
pio.out_int_callback().set_inputline(m_maincpu, 0);
- CASSETTE(config, m_cass);
+ MCFG_CASSETTE_ADD( "cassette" )
UPD765A(config, m_fdc, 8'000'000, true, true);
- FLOPPY_CONNECTOR(config, "upd765a:0", a5105_floppies, "525qd", a5105_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765a:1", a5105_floppies, "525qd", a5105_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765a:2", a5105_floppies, "525qd", a5105_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765a:3", a5105_floppies, "525qd", a5105_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("upd765a:0", a5105_floppies, "525qd", a5105_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765a:1", a5105_floppies, "525qd", a5105_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765a:2", a5105_floppies, "525qd", a5105_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765a:3", a5105_floppies, "525qd", a5105_state::floppy_formats)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K");
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( a5105 )
diff --git a/src/mame/drivers/a51xx.cpp b/src/mame/drivers/a51xx.cpp
index 39ff383e87e..7273d616ecf 100644
--- a/src/mame/drivers/a51xx.cpp
+++ b/src/mame/drivers/a51xx.cpp
@@ -126,42 +126,42 @@ static GFXDECODE_START( gfx_a51xx )
GFXDECODE_ENTRY( "chargen", 0x0000, a51xx_charlayout, 0, 1 )
GFXDECODE_END
-void a51xx_state::a5120(machine_config &config)
-{
+MACHINE_CONFIG_START(a51xx_state::a5120)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &a51xx_state::a5120_mem);
- m_maincpu->set_addrmap(AS_IO, &a51xx_state::a5120_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(a5120_mem)
+ MCFG_DEVICE_IO_MAP(a5120_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 480);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(a51xx_state::screen_update_a5120));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(a51xx_state, screen_update_a5120)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, "gfxdecode", "palette", gfx_a51xx);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_a51xx)
PALETTE(config, "palette", palette_device::MONOCHROME);
-}
+MACHINE_CONFIG_END
-void a51xx_state::a5130(machine_config &config)
-{
+MACHINE_CONFIG_START(a51xx_state::a5130)
a5120(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &a51xx_state::a5130_mem);
- m_maincpu->set_addrmap(AS_IO, &a51xx_state::a5130_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(a5130_mem)
+ MCFG_DEVICE_IO_MAP(a5130_io)
MCFG_MACHINE_RESET_OVERRIDE(a51xx_state,a5130)
/* video hardware */
- subdevice<screen_device>("screen")->set_screen_update(FUNC(a51xx_state::screen_update_a5130));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(a51xx_state, screen_update_a5130)
MCFG_VIDEO_START_OVERRIDE(a51xx_state,a5130)
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( a5120 )
diff --git a/src/mame/drivers/a7150.cpp b/src/mame/drivers/a7150.cpp
index cea6f8b3a20..1ab66db66bd 100644
--- a/src/mame/drivers/a7150.cpp
+++ b/src/mame/drivers/a7150.cpp
@@ -475,7 +475,8 @@ void a7150_state::a7150(machine_config &config)
m_maincpu->esc_data_handler().set("i8087", FUNC(i8087_device::addr_w));
i8087_device &i8087(I8087(config, "i8087", XTAL(9'832'000)/2));
- i8087.set_space_86(m_maincpu, AS_PROGRAM);
+ i8087.set_addrmap(AS_PROGRAM, &a7150_state::a7150_mem);
+ i8087.set_data_width(16);
i8087.irq().set(m_pic8259, FUNC(pic8259_device::ir0_w));
i8087.busy().set_inputline("maincpu", INPUT_LINE_TEST);
diff --git a/src/mame/drivers/aa310.cpp b/src/mame/drivers/aa310.cpp
index 6e124e6d693..838fad59bff 100644
--- a/src/mame/drivers/aa310.cpp
+++ b/src/mame/drivers/aa310.cpp
@@ -444,6 +444,7 @@ void aa310_state::aa310(machine_config &config)
DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_dac[i], 0).add_route(0, "speaker", 0.1); // unknown DAC
}
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac0", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac0", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
diff --git a/src/mame/drivers/aaa.cpp b/src/mame/drivers/aaa.cpp
index bf5d725de70..18e5a6335e1 100644
--- a/src/mame/drivers/aaa.cpp
+++ b/src/mame/drivers/aaa.cpp
@@ -7,13 +7,9 @@ Skeleton driver for Ann Arbor Ambassador terminal.
************************************************************************************************************************************/
#include "emu.h"
-#include "bus/rs232/rs232.h"
#include "cpu/z80/z80.h"
-#include "machine/74259.h"
#include "machine/input_merger.h"
#include "machine/mc2661.h"
-#include "machine/nvram.h"
-#include "screen.h"
class aaa_state : public driver_device
{
@@ -21,277 +17,93 @@ public:
aaa_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
- , m_usart(*this, "usart%u", 0U)
- , m_screen(*this, "screen")
- , m_key_row(*this, "KSL%u", 0U)
- , m_font(*this, "font")
- , m_display_ram(*this, "display")
- , m_linecount(*this, "linecount")
+ , m_pci(*this, "pci%u", 0U)
+ , m_chargen(*this, "chargen")
{ }
void aaa(machine_config &config);
private:
- u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-
- void display_ram_w(offs_t offset, u8 data);
- template<int N> u8 usart_r(offs_t offset);
- template<int N> void usart_w(offs_t offset, u8 data);
- u8 keyboard_r(offs_t offset);
+ template<int N> u8 pci_r(offs_t offset);
+ template<int N> void pci_w(offs_t offset, u8 data);
void mem_map(address_map &map);
void io_map(address_map &map);
required_device<cpu_device> m_maincpu;
- required_device_array<mc2661_device, 2> m_usart;
- required_device<screen_device> m_screen;
- optional_ioport_array<16> m_key_row;
- required_region_ptr<u8> m_font;
- required_shared_ptr<u8> m_display_ram;
- required_shared_ptr<u8> m_linecount;
+ required_device_array<mc2661_device, 2> m_pci;
+ required_region_ptr<u8> m_chargen;
};
-u32 aaa_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- return 0;
-}
-
-void aaa_state::display_ram_w(offs_t offset, u8 data)
-{
- // 6 bits wide (2 words per character)
- m_display_ram[offset] = data | 0xc0;
-}
-
template<int N>
-u8 aaa_state::usart_r(offs_t offset)
+u8 aaa_state::pci_r(offs_t offset)
{
- return m_usart[N]->read(offset >> 1);
+ return m_pci[N]->read(offset >> 1);
}
template<int N>
-void aaa_state::usart_w(offs_t offset, u8 data)
+void aaa_state::pci_w(offs_t offset, u8 data)
{
- m_usart[N]->write(offset >> 1, data);
-}
-
-u8 aaa_state::keyboard_r(offs_t offset)
-{
- // TODO: key click
- return m_key_row[offset & 15].read_safe(0xff);
+ m_pci[N]->write(offset >> 1, data);
}
void aaa_state::mem_map(address_map &map)
{
- map(0x0000, 0x1fff).rom().region("loprog", 0);
- map(0x2000, 0x27ff).mirror(0x800).ram();
- map(0x3f00, 0x3f03).writeonly().share("linecount"); // LS670 at 7B on main board
- map(0x4000, 0x43ff).ram().share("nvram");
- map(0x8000, 0x9fff).rom().region("hiprog", 0);
- map(0xc000, 0xffff).ram().w(FUNC(aaa_state::display_ram_w)).share("display");
+ map(0x0000, 0x1fff).rom().region("maincpu", 0);
+ map(0x2000, 0x27ff).ram();
+ map(0x2800, 0x2fff).ram(); // NVRAM?
+ map(0x8000, 0x9fff).rom().region("maincpu", 0x8000);
+ map(0xc000, 0xffff).ram();
}
void aaa_state::io_map(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).select(6).r(FUNC(aaa_state::usart_r<0>));
- map(0x01, 0x01).select(6).w(FUNC(aaa_state::usart_w<0>));
- map(0x40, 0x40).select(6).r(FUNC(aaa_state::usart_r<1>));
- map(0x41, 0x41).select(6).w(FUNC(aaa_state::usart_w<1>));
- map(0x80, 0x87).w("ctrllatch", FUNC(ls259_device::write_d7));
- map(0xc0, 0xff).r(FUNC(aaa_state::keyboard_r));
+ map(0x00, 0x00).select(6).r(FUNC(aaa_state::pci_r<0>));
+ map(0x01, 0x01).select(6).w(FUNC(aaa_state::pci_w<0>));
+ map(0x40, 0x40).select(6).r(FUNC(aaa_state::pci_r<1>));
+ map(0x41, 0x41).select(6).w(FUNC(aaa_state::pci_w<1>));
+ map(0x87, 0x87).nopw();
}
-static INPUT_PORTS_START(aaa)
- // KR0, KR1, KR2, KR3, KR4, KR5, KR6, KR7 = connector pins W, X, Y, Z, AA, BB, CC, DD
-
- PORT_START("KSL2") // connector pin T
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('[') PORT_CHAR('{') PORT_CODE(KEYCODE_OPENBRACE)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('a') PORT_CHAR('A') PORT_CODE(KEYCODE_A)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('b') PORT_CHAR('B') PORT_CODE(KEYCODE_B)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('c') PORT_CHAR('C') PORT_CODE(KEYCODE_C)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('d') PORT_CHAR('D') PORT_CODE(KEYCODE_D)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('e') PORT_CHAR('E') PORT_CODE(KEYCODE_E)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('f') PORT_CHAR('F') PORT_CODE(KEYCODE_F)
-
- PORT_START("KSL3") // connector pin S
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('g') PORT_CHAR('G') PORT_CODE(KEYCODE_G)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('h') PORT_CHAR('H') PORT_CODE(KEYCODE_H)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('i') PORT_CHAR('I') PORT_CODE(KEYCODE_I)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('j') PORT_CHAR('J') PORT_CODE(KEYCODE_J)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('k') PORT_CHAR('K') PORT_CODE(KEYCODE_K)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('l') PORT_CHAR('L') PORT_CODE(KEYCODE_L)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('m') PORT_CHAR('M') PORT_CODE(KEYCODE_M)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('n') PORT_CHAR('N') PORT_CODE(KEYCODE_N)
-
- PORT_START("KSL4") // connector pin N
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('o') PORT_CHAR('O') PORT_CODE(KEYCODE_O)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('p') PORT_CHAR('P') PORT_CODE(KEYCODE_P)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('q') PORT_CHAR('Q') PORT_CODE(KEYCODE_Q)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('r') PORT_CHAR('R') PORT_CODE(KEYCODE_R)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('s') PORT_CHAR('S') PORT_CODE(KEYCODE_S)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('t') PORT_CHAR('T') PORT_CODE(KEYCODE_T)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('u') PORT_CHAR('U') PORT_CODE(KEYCODE_U)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('v') PORT_CHAR('V') PORT_CODE(KEYCODE_V)
-
- PORT_START("KSL5") // connector pin M
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('w') PORT_CHAR('W') PORT_CODE(KEYCODE_W)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('x') PORT_CHAR('X') PORT_CODE(KEYCODE_X)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('y') PORT_CHAR('Y') PORT_CODE(KEYCODE_Y)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('z') PORT_CHAR('Z') PORT_CODE(KEYCODE_Z)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('`') PORT_CHAR('~') PORT_CODE(KEYCODE_TILDE)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('\'') PORT_CHAR('"') PORT_CODE(KEYCODE_QUOTE)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('\\') PORT_CHAR('|') PORT_CODE(KEYCODE_BACKSLASH)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Pause") PORT_CODE(KEYCODE_LALT)
-
- PORT_START("KSL6") // connector pin L
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Move Up") PORT_CHAR(UCHAR_MAMEKEY(HOME)) PORT_CODE(KEYCODE_PGUP)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('1') PORT_CHAR('!') PORT_CODE(KEYCODE_1)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('2') PORT_CHAR('@') PORT_CODE(KEYCODE_2)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('3') PORT_CHAR('#') PORT_CODE(KEYCODE_3)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('4') PORT_CHAR('$') PORT_CODE(KEYCODE_4)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('5') PORT_CHAR('%') PORT_CODE(KEYCODE_5)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('6') PORT_CHAR('^') PORT_CODE(KEYCODE_6)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('7') PORT_CHAR('&') PORT_CODE(KEYCODE_7)
-
- PORT_START("KSL7") // connector pin K
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('8') PORT_CHAR('*') PORT_CODE(KEYCODE_8)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('9') PORT_CHAR('(') PORT_CODE(KEYCODE_9)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('-') PORT_CHAR('_') PORT_CODE(KEYCODE_MINUS)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(';') PORT_CHAR(':') PORT_CODE(KEYCODE_COLON)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(',') PORT_CHAR('<') PORT_CODE(KEYCODE_COMMA)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('=') PORT_CHAR('+') PORT_CODE(KEYCODE_EQUALS)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('.') PORT_CHAR('>') PORT_CODE(KEYCODE_STOP)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('/') PORT_CHAR('?') PORT_CODE(KEYCODE_SLASH)
-
- PORT_START("KSL8") // connector pin J
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD)) PORT_CODE(KEYCODE_ENTER_PAD)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD)) PORT_CODE(KEYCODE_0_PAD)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) PORT_CODE(KEYCODE_DEL_PAD)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Move Down") PORT_CHAR(UCHAR_MAMEKEY(PGDN)) PORT_CODE(KEYCODE_PGDN)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('0') PORT_CHAR(')') PORT_CODE(KEYCODE_0)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 1 SSA") PORT_CHAR(UCHAR_MAMEKEY(1_PAD)) PORT_CODE(KEYCODE_1_PAD)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 2 " UTF8_DOWN) PORT_CHAR(UCHAR_MAMEKEY(2_PAD)) PORT_CODE(KEYCODE_2_PAD)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 3 ESA") PORT_CHAR(UCHAR_MAMEKEY(3_PAD)) PORT_CODE(KEYCODE_3_PAD)
-
- PORT_START("KSL9") // connector pin H
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 4 " UTF8_LEFT) PORT_CHAR(UCHAR_MAMEKEY(4_PAD)) PORT_CODE(KEYCODE_4_PAD)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 5 Home") PORT_CHAR(UCHAR_MAMEKEY(5_PAD)) PORT_CODE(KEYCODE_5_PAD)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 6 " UTF8_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(6_PAD)) PORT_CODE(KEYCODE_6_PAD)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 7 T-Clr") PORT_CHAR(UCHAR_MAMEKEY(7_PAD)) PORT_CODE(KEYCODE_7_PAD)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 8 " UTF8_UP) PORT_CHAR(UCHAR_MAMEKEY(8_PAD)) PORT_CODE(KEYCODE_8_PAD)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 9 T-Set") PORT_CHAR(UCHAR_MAMEKEY(9_PAD)) PORT_CODE(KEYCODE_9_PAD)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Reset")
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Setup")
-
- PORT_START("KSL10") // connector pin F
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PF1") PORT_CHAR(UCHAR_MAMEKEY(F1)) PORT_CODE(KEYCODE_F1)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PF2") PORT_CHAR(UCHAR_MAMEKEY(F2)) PORT_CODE(KEYCODE_F2)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PF3") PORT_CHAR(UCHAR_MAMEKEY(F3)) PORT_CODE(KEYCODE_F3)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Back Space") PORT_CHAR(0x08) PORT_CODE(KEYCODE_BACKSPACE)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PF4") PORT_CHAR(UCHAR_MAMEKEY(F4)) PORT_CODE(KEYCODE_F4)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Break")
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PF5") PORT_CHAR(UCHAR_MAMEKEY(F5)) PORT_CODE(KEYCODE_F5)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PF6") PORT_CHAR(UCHAR_MAMEKEY(F6)) PORT_CODE(KEYCODE_F6)
-
- PORT_START("KSL11") // connector pin E
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Del")
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PF7") PORT_CHAR(UCHAR_MAMEKEY(F7)) PORT_CODE(KEYCODE_F7)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PF8") PORT_CHAR(UCHAR_MAMEKEY(F8)) PORT_CODE(KEYCODE_F8)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PF9") PORT_CHAR(UCHAR_MAMEKEY(F9)) PORT_CODE(KEYCODE_F9)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PF10") PORT_CHAR(UCHAR_MAMEKEY(F10)) PORT_CODE(KEYCODE_F10)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PF11") PORT_CHAR(UCHAR_MAMEKEY(F11)) PORT_CODE(KEYCODE_F11)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PF12") PORT_CHAR(UCHAR_MAMEKEY(F12)) PORT_CODE(KEYCODE_F12)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Erase")
-
- PORT_START("KSL12") // connector pin D
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Edit")
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Line Feed") PORT_CHAR(0x0a) PORT_CODE(KEYCODE_RALT)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Delete") PORT_CHAR(UCHAR_MAMEKEY(DEL))
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(']') PORT_CHAR('}') PORT_CODE(KEYCODE_CLOSEBRACE)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Insert") PORT_CHAR(UCHAR_MAMEKEY(INSERT))
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Print")
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Return") PORT_CHAR(0x0d) PORT_CODE(KEYCODE_ENTER)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Send")
-
- PORT_START("KSL13") // connector pin C
- PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
-
- PORT_START("KSL14") // connector pin B
- PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
-
- PORT_START("KSL15") // connector pin A
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Space Bar") PORT_CHAR(' ') PORT_CODE(KEYCODE_SPACE)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Tab " UTF8_RIGHT " " UTF8_LEFT) PORT_CHAR(0x09) PORT_CODE(KEYCODE_TAB)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CHAR(UCHAR_MAMEKEY(LCONTROL)) PORT_CODE(KEYCODE_LCONTROL)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CHAR(0x1b) PORT_CODE(KEYCODE_ESC)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left Shift") PORT_CHAR(UCHAR_MAMEKEY(LSHIFT)) PORT_CODE(KEYCODE_LSHIFT)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT) // possibly the other way around
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
+static INPUT_PORTS_START( aaa )
INPUT_PORTS_END
void aaa_state::aaa(machine_config &config)
{
- Z80(config, m_maincpu, 18.414_MHz_XTAL / 5);
+ Z80(config, m_maincpu, 2'000'000);
m_maincpu->set_addrmap(AS_PROGRAM, &aaa_state::mem_map);
m_maincpu->set_addrmap(AS_IO, &aaa_state::io_map);
- NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // NEC D444C x2 + 3V lithium battery
-
- LS259(config, "ctrllatch"); // 1B on main board
-
- input_merger_device &usartint(INPUT_MERGER_ANY_HIGH(config, "usartint")); // open collector
- usartint.output_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
-
- MC2661(config, m_usart[0], 5.0688_MHz_XTAL); // 16F on I/O board
- m_usart[0]->txrdy_handler().set("usartint", FUNC(input_merger_device::in_w<0>));
- m_usart[0]->rxrdy_handler().set("usartint", FUNC(input_merger_device::in_w<1>));
- m_usart[0]->txemt_dschg_handler().set("usartint", FUNC(input_merger_device::in_w<2>));
- m_usart[0]->txd_handler().set("printer", FUNC(rs232_port_device::write_txd));
- m_usart[0]->rts_handler().set("printer", FUNC(rs232_port_device::write_rts));
- m_usart[0]->dtr_handler().set("printer", FUNC(rs232_port_device::write_dtr));
+ input_merger_device &pciint(INPUT_MERGER_ANY_HIGH(config, "pciint")); // open collector?
+ pciint.output_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- MC2661(config, m_usart[1], 5.0688_MHz_XTAL); // 18F on I/O board
- m_usart[1]->txrdy_handler().set("usartint", FUNC(input_merger_device::in_w<3>));
- m_usart[1]->rxrdy_handler().set("usartint", FUNC(input_merger_device::in_w<4>));
- m_usart[1]->txemt_dschg_handler().set("usartint", FUNC(input_merger_device::in_w<5>));
- m_usart[1]->txd_handler().set("computer", FUNC(rs232_port_device::write_txd));
- m_usart[1]->rts_handler().set("computer", FUNC(rs232_port_device::write_rts));
- m_usart[1]->dtr_handler().set("computer", FUNC(rs232_port_device::write_dtr));
+ MC2661(config, m_pci[0], 5.0688_MHz_XTAL);
+ m_pci[0]->txrdy_handler().set("pciint", FUNC(input_merger_device::in_w<0>));
+ m_pci[0]->rxrdy_handler().set("pciint", FUNC(input_merger_device::in_w<1>));
+ m_pci[0]->txemt_dschg_handler().set("pciint", FUNC(input_merger_device::in_w<2>));
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(18.414_MHz_XTAL, 990, 0, 800, 310, 0, 240);
- m_screen->set_screen_update(FUNC(aaa_state::screen_update));
-
- rs232_port_device &computer(RS232_PORT(config, "computer", default_rs232_devices, nullptr));
- computer.rxd_handler().set(m_usart[1], FUNC(mc2661_device::rx_w));
- computer.cts_handler().set(m_usart[1], FUNC(mc2661_device::cts_w));
- computer.dsr_handler().set(m_usart[1], FUNC(mc2661_device::dsr_w));
-
- rs232_port_device &printer(RS232_PORT(config, "printer", default_rs232_devices, nullptr));
- printer.rxd_handler().set(m_usart[0], FUNC(mc2661_device::rx_w));
- printer.cts_handler().set(m_usart[0], FUNC(mc2661_device::cts_w));
- printer.dsr_handler().set(m_usart[0], FUNC(mc2661_device::dsr_w));
+ MC2661(config, m_pci[1], 5.0688_MHz_XTAL);
+ m_pci[1]->txrdy_handler().set("pciint", FUNC(input_merger_device::in_w<3>));
+ m_pci[1]->rxrdy_handler().set("pciint", FUNC(input_merger_device::in_w<4>));
+ m_pci[1]->txemt_dschg_handler().set("pciint", FUNC(input_merger_device::in_w<5>));
}
/**************************************************************************************************************
Ann Arbor Ambassador.
-Chips: Z80A, M58725P-15, 6x MK4116N-36P, 2x SCN2651C, nvram, button-battery
-Crystals: 18.414, 5.0688
+Chips: Z80A, M58725P (16k RAM), 2x SCN2651C, nvram, button-battery
+Crystals: 18.414, 6.0688
***************************************************************************************************************/
ROM_START( aaa )
- ROM_REGION(0x2000, "loprog", 0)
+ ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD( "459_1.bin", 0x0000, 0x1000, CRC(55fb3e3b) SHA1(349cd257b1468827e1b389be7c989d0e4a13a5f1) )
ROM_LOAD( "459_3.bin", 0x1000, 0x1000, CRC(e1e84ca4) SHA1(42dc5f4211beee79178f0c03bb45c66833119eae) )
+ ROM_LOAD( "459_4.bin", 0x8000, 0x2000, CRC(4038aa89) SHA1(caf33c1f87aa396860324b9c73b35e4221f03d2e) )
- ROM_REGION(0x2000, "hiprog", 0)
- ROM_LOAD( "459_4.bin", 0x0000, 0x2000, CRC(4038aa89) SHA1(caf33c1f87aa396860324b9c73b35e4221f03d2e) )
-
- ROM_REGION(0x1000, "font", 0)
+ ROM_REGION(0x1000, "chargen", 0)
ROM_LOAD( "202510b.bin", 0x0000, 0x1000, CRC(deda4aa4) SHA1(0bce5a8dc260ba51f3e431d8da408eac1f41acf7) )
ROM_END
diff --git a/src/mame/drivers/abc1600.cpp b/src/mame/drivers/abc1600.cpp
index c2d2c817d0a..7506685b3ac 100644
--- a/src/mame/drivers/abc1600.cpp
+++ b/src/mame/drivers/abc1600.cpp
@@ -873,15 +873,14 @@ void abc1600_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( abc1600 )
+// MACHINE_CONFIG( abc1600 )
//-------------------------------------------------
-void abc1600_state::abc1600(machine_config &config)
-{
+MACHINE_CONFIG_START(abc1600_state::abc1600)
// basic machine hardware
- M68008(config, m_maincpu, 64_MHz_XTAL / 8);
- m_maincpu->set_addrmap(AS_PROGRAM, &abc1600_state::abc1600_mem);
- m_maincpu->set_irq_acknowledge_callback(FUNC(abc1600_state::abc1600_int_ack));
+ MCFG_DEVICE_ADD(MC68008P8_TAG, M68008, 64_MHz_XTAL / 8)
+ MCFG_DEVICE_PROGRAM_MAP(abc1600_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(abc1600_state,abc1600_int_ack)
// video hardware
ABC1600_MOVER(config, ABC1600_MOVER_TAG, 0);
@@ -932,7 +931,7 @@ void abc1600_state::abc1600(machine_config &config)
m_cio->pc_rd_cb().set(FUNC(abc1600_state::cio_pc_r));
m_cio->pc_wr_cb().set(FUNC(abc1600_state::cio_pc_w));
- NMC9306(config, m_nvram, 0);
+ MCFG_NMC9306_ADD(NMC9306_TAG)
E0516(config, E050_C16PC_TAG, 32.768_kHz_XTAL);
@@ -940,42 +939,42 @@ void abc1600_state::abc1600(machine_config &config)
m_fdc->intrq_wr_callback().set(m_cio, FUNC(z8536_device::pb7_w));
m_fdc->drq_wr_callback().set(FUNC(abc1600_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, SAB1797_02P_TAG":0", abc1600_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, SAB1797_02P_TAG":1", abc1600_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, SAB1797_02P_TAG":2", abc1600_floppies, "525qd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(SAB1797_02P_TAG":0", abc1600_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(SAB1797_02P_TAG":1", abc1600_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(SAB1797_02P_TAG":2", abc1600_floppies, "525qd", floppy_image_device::default_floppy_formats)
RS232_PORT(config, RS232_A_TAG, default_rs232_devices, nullptr);
rs232_port_device &rs232b(RS232_PORT(config, RS232_B_TAG, default_rs232_devices, nullptr));
rs232b.rxd_handler().set(m_dart, FUNC(z80dart_device::rxa_w));
- abc_keyboard_port_device &kb(ABC_KEYBOARD_PORT(config, ABC_KEYBOARD_PORT_TAG, abc_keyboard_devices, "abc99"));
- kb.out_rx_handler().set(m_dart, FUNC(z80dart_device::rxb_w));
- kb.out_trxc_handler().set(m_dart, FUNC(z80dart_device::rxtxcb_w));
- kb.out_keydown_handler().set(m_dart, FUNC(z80dart_device::dcdb_w));
-
- abcbus_slot_device &bus0i(ABCBUS_SLOT(config, "bus0i", 64_MHz_XTAL / 16, abc1600bus_cards, nullptr));
- bus0i.irq_callback().set(m_cio, FUNC(z8536_device::pa7_w));
- abcbus_slot_device &bus0x(ABCBUS_SLOT(config, "bus0x", 64_MHz_XTAL / 16, abc1600bus_cards, nullptr));
- bus0x.irq_callback().set(m_cio, FUNC(z8536_device::pa6_w));
- bus0x.nmi_callback().set(FUNC(abc1600_state::nmi_w));
- bus0x.xint2_callback().set(m_cio, FUNC(z8536_device::pa2_w));
- bus0x.xint3_callback().set(m_cio, FUNC(z8536_device::pa3_w));
- bus0x.xint4_callback().set(m_cio, FUNC(z8536_device::pa4_w));
- bus0x.xint5_callback().set(m_cio, FUNC(z8536_device::pa5_w));
- abcbus_slot_device &bus1(ABCBUS_SLOT(config, "bus1", 64_MHz_XTAL / 16, abc1600bus_cards, nullptr));
- bus1.irq_callback().set(m_cio, FUNC(z8536_device::pa1_w));
- abcbus_slot_device &bus2(ABCBUS_SLOT(config, "bus2", 64_MHz_XTAL / 16, abc1600bus_cards, "4105"));
- bus2.irq_callback().set(m_cio, FUNC(z8536_device::pa0_w));
- //bus2.pren_callback().set(Z8410AB1_2_TAG, FUNC(z80dma_device::iei_w));
- bus2.trrq_callback().set(Z8410AB1_2_TAG, FUNC(z80dma_device::rdy_w));
+ MCFG_ABC_KEYBOARD_PORT_ADD(ABC_KEYBOARD_PORT_TAG, "abc99")
+ MCFG_ABC_KEYBOARD_OUT_RX_HANDLER(WRITELINE(m_dart, z80dart_device, rxb_w))
+ MCFG_ABC_KEYBOARD_OUT_TRXC_HANDLER(WRITELINE(m_dart, z80dart_device, rxtxcb_w))
+ MCFG_ABC_KEYBOARD_OUT_KEYDOWN_HANDLER(WRITELINE(m_dart, z80dart_device, dcdb_w))
+
+ MCFG_ABCBUS_SLOT_ADD("bus0i", abc1600bus_cards, nullptr)
+ MCFG_ABCBUS_SLOT_IRQ_CALLBACK(WRITELINE(m_cio, z8536_device, pa7_w))
+ MCFG_ABCBUS_SLOT_ADD("bus0x", abc1600bus_cards, nullptr)
+ MCFG_ABCBUS_SLOT_IRQ_CALLBACK(WRITELINE(m_cio, z8536_device, pa6_w))
+ MCFG_ABCBUS_SLOT_NMI_CALLBACK(WRITELINE(*this, abc1600_state, nmi_w))
+ MCFG_ABCBUS_SLOT_XINT2_CALLBACK(WRITELINE(m_cio, z8536_device, pa2_w))
+ MCFG_ABCBUS_SLOT_XINT3_CALLBACK(WRITELINE(m_cio, z8536_device, pa3_w))
+ MCFG_ABCBUS_SLOT_XINT4_CALLBACK(WRITELINE(m_cio, z8536_device, pa4_w))
+ MCFG_ABCBUS_SLOT_XINT5_CALLBACK(WRITELINE(m_cio, z8536_device, pa5_w))
+ MCFG_ABCBUS_SLOT_ADD("bus1", abc1600bus_cards, nullptr)
+ MCFG_ABCBUS_SLOT_IRQ_CALLBACK(WRITELINE(m_cio, z8536_device, pa1_w))
+ MCFG_ABCBUS_SLOT_ADD("bus2", abc1600bus_cards, "4105")
+ MCFG_ABCBUS_SLOT_IRQ_CALLBACK(WRITELINE(m_cio, z8536_device, pa0_w))
+ //MCFG_ABCBUS_SLOT_PREN_CALLBACK(WRITELINE(Z8410AB1_2_TAG, z80dma_device, iei_w))
+ MCFG_ABCBUS_SLOT_TRRQ_CALLBACK(WRITELINE(Z8410AB1_2_TAG, z80dma_device, rdy_w))
// internal ram
RAM(config, RAM_TAG).set_default_size("1M");
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("abc1600");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "abc1600")
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/abc80.cpp b/src/mame/drivers/abc80.cpp
index 7e146613588..ab56eab9795 100644
--- a/src/mame/drivers/abc80.cpp
+++ b/src/mame/drivers/abc80.cpp
@@ -482,7 +482,7 @@ QUICKLOAD_LOAD_MEMBER( abc80_state, bac )
//**************************************************************************
//-------------------------------------------------
-// machine_config( abc80 )
+// MACHINE_CONFIG( abc80 )
//-------------------------------------------------
MACHINE_CONFIG_START(abc80_state::abc80)
@@ -509,7 +509,7 @@ MACHINE_CONFIG_START(abc80_state::abc80)
m_csg->set_oneshot_params(CAP_U(0.1), RES_K(330));
m_csg->add_route(ALL_OUTPUTS, "mono", 0.25);
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", CASSETTE_TAG).add_route(ALL_OUTPUTS, "mono", 0.25);
// devices
Z80PIO(config, m_pio, XTAL(11'980'800)/2/2);
@@ -518,27 +518,27 @@ MACHINE_CONFIG_START(abc80_state::abc80)
m_pio->in_pb_callback().set(FUNC(abc80_state::pio_pb_r));
m_pio->out_pb_callback().set(FUNC(abc80_state::pio_pb_w));
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("abc80_cass");
+ MCFG_CASSETTE_ADD(CASSETTE_TAG)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("abc80_cass")
ABC80_KEYBOARD(config, m_kb, 0);
m_kb->keydown_wr_callback().set(FUNC(abc80_state::keydown_w));
- ABCBUS_SLOT(config, ABCBUS_TAG, XTAL(11'980'800)/2/2, abc80_cards, "abcexp");
+ MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abc80_cards, "abcexp")
RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr);
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, KEYBOARD_TAG, 0));
keyboard.set_keyboard_callback(FUNC(abc80_state::kbd_w));
- MCFG_QUICKLOAD_ADD("quickload", abc80_state, bac, "bac", attotime::from_seconds(2))
+ MCFG_QUICKLOAD_ADD("quickload", abc80_state, bac, "bac", 2)
// internal ram
RAM(config, RAM_TAG).set_default_size("16K");
// software list
- SOFTWARE_LIST(config, "cass_list").set_original("abc80_cass");
- SOFTWARE_LIST(config, "flop_list").set_original("abc80_flop");
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "abc80_cass")
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "abc80_flop")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/abc80x.cpp b/src/mame/drivers/abc80x.cpp
index 581c5ee516c..2b5f0279ba1 100644
--- a/src/mame/drivers/abc80x.cpp
+++ b/src/mame/drivers/abc80x.cpp
@@ -1049,7 +1049,7 @@ QUICKLOAD_LOAD_MEMBER( abc800_state, bac )
//**************************************************************************
//-------------------------------------------------
-// machine_config( common )
+// MACHINE_CONFIG( common )
//-------------------------------------------------
MACHINE_CONFIG_START(abc800_state::common)
@@ -1065,7 +1065,7 @@ MACHINE_CONFIG_START(abc800_state::common)
m_ctc->zc_callback<1>().set(FUNC(abc800_state::ctc_z1_w));
m_ctc->zc_callback<2>().set(m_dart, FUNC(z80dart_device::rxca_w));
m_ctc->zc_callback<2>().append(m_dart, FUNC(z80dart_device::txca_w));
- TIMER(config, TIMER_CTC_TAG).configure_periodic(FUNC(abc800_state::ctc_tick), attotime::from_hz(ABC800_X01/2/2/2));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC(TIMER_CTC_TAG, abc800_state, ctc_tick, attotime::from_hz(ABC800_X01/2/2/2))
Z80SIO(config, m_sio, ABC800_X01/2/2);
m_sio->out_txda_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd));
@@ -1083,9 +1083,9 @@ MACHINE_CONFIG_START(abc800_state::common)
m_dart->out_txdb_callback().set(ABC_KEYBOARD_PORT_TAG, FUNC(abc_keyboard_port_device::txd_w));
m_dart->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED);
- TIMER(config, TIMER_CASSETTE_TAG).configure_periodic(FUNC(abc800_state::cassette_input_tick), attotime::from_hz(44100));
+ MCFG_CASSETTE_ADD(CASSETTE_TAG)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC(TIMER_CASSETTE_TAG, abc800_state, cassette_input_tick, attotime::from_hz(44100))
rs232_port_device &rs232a(RS232_PORT(config, RS232_A_TAG, default_rs232_devices, nullptr));
rs232a.rxd_handler().set(m_dart, FUNC(z80dart_device::rxa_w));
@@ -1097,32 +1097,32 @@ MACHINE_CONFIG_START(abc800_state::common)
rs232b.dcd_handler().set(m_sio, FUNC(z80sio_device::dcda_w));
rs232b.cts_handler().set(m_sio, FUNC(z80sio_device::ctsa_w));
- abc_keyboard_port_device &kb(ABC_KEYBOARD_PORT(config, ABC_KEYBOARD_PORT_TAG, abc_keyboard_devices, nullptr));
- kb.out_rx_handler().set(m_dart, FUNC(z80dart_device::rxb_w));
- kb.out_trxc_handler().set(m_dart, FUNC(z80dart_device::rxtxcb_w));
- kb.out_keydown_handler().set(m_dart, FUNC(z80dart_device::dcdb_w));
+ MCFG_ABC_KEYBOARD_PORT_ADD(ABC_KEYBOARD_PORT_TAG, nullptr)
+ MCFG_ABC_KEYBOARD_OUT_RX_HANDLER(WRITELINE(m_dart, z80dart_device, rxb_w))
+ MCFG_ABC_KEYBOARD_OUT_TRXC_HANDLER(WRITELINE(m_dart, z80dart_device, rxtxcb_w))
+ MCFG_ABC_KEYBOARD_OUT_KEYDOWN_HANDLER(WRITELINE(m_dart, z80dart_device, dcdb_w))
- ABCBUS_SLOT(config, ABCBUS_TAG, ABC800_X01/2/2, abcbus_cards, nullptr);
+ MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_cards, nullptr)
// sound hardware
SPEAKER(config, "mono").front_center();
- DISCRETE(config, m_discrete, abc800_discrete).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD(DISCRETE_TAG, DISCRETE, abc800_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("abc800");
- SOFTWARE_LIST(config, "hdd_list").set_original("abc800_hdd");
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "abc800")
+ MCFG_SOFTWARE_LIST_ADD("hdd_list", "abc800_hdd")
// quickload
- MCFG_QUICKLOAD_ADD("quickload", abc800_state, bac, "bac", attotime::from_seconds(2))
+ MCFG_QUICKLOAD_ADD("quickload", abc800_state, bac, "bac", 2)
MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( abc800c )
+// MACHINE_CONFIG( abc800c )
//-------------------------------------------------
-void abc800c_state::abc800c(machine_config &config)
-{
+MACHINE_CONFIG_START(abc800c_state::abc800c)
common(config);
// basic machine hardware
@@ -1133,23 +1133,23 @@ void abc800c_state::abc800c(machine_config &config)
abc800c_video(config);
// peripheral hardware
- abc_keyboard_port_device &kb(*subdevice<abc_keyboard_port_device>(ABC_KEYBOARD_PORT_TAG));
- kb.set_default_option("abc800");
- kb.set_fixed(true);
+ MCFG_DEVICE_MODIFY(ABC_KEYBOARD_PORT_TAG)
+ MCFG_SLOT_DEFAULT_OPTION("abc800")
+ MCFG_SLOT_FIXED(true)
- subdevice<abcbus_slot_device>(ABCBUS_TAG)->set_default_option("abc830");
+ MCFG_DEVICE_MODIFY(ABCBUS_TAG)
+ MCFG_SLOT_DEFAULT_OPTION("abc830")
// internal ram
RAM(config, RAM_TAG).set_default_size("16K").set_extra_options("32K");
-}
+MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( abc800m )
+// MACHINE_CONFIG( abc800m )
//-------------------------------------------------
-void abc800m_state::abc800m(machine_config &config)
-{
+MACHINE_CONFIG_START(abc800m_state::abc800m)
common(config);
// basic machine hardware
@@ -1160,23 +1160,23 @@ void abc800m_state::abc800m(machine_config &config)
abc800m_video(config);
// peripheral hardware
- abc_keyboard_port_device &kb(*subdevice<abc_keyboard_port_device>(ABC_KEYBOARD_PORT_TAG));
- kb.set_default_option("abc800");
- kb.set_fixed(true);
+ MCFG_DEVICE_MODIFY(ABC_KEYBOARD_PORT_TAG)
+ MCFG_SLOT_DEFAULT_OPTION("abc800")
+ MCFG_SLOT_FIXED(true)
- subdevice<abcbus_slot_device>(ABCBUS_TAG)->set_default_option("abc830");
+ MCFG_DEVICE_MODIFY(ABCBUS_TAG)
+ MCFG_SLOT_DEFAULT_OPTION("abc830")
// internal ram
RAM(config, RAM_TAG).set_default_size("16K").set_extra_options("32K");
-}
+MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( abc802 )
+// MACHINE_CONFIG( abc802 )
//-------------------------------------------------
-void abc802_state::abc802(machine_config &config)
-{
+MACHINE_CONFIG_START(abc802_state::abc802)
common(config);
// basic machine hardware
@@ -1190,21 +1190,22 @@ void abc802_state::abc802(machine_config &config)
m_dart->out_dtrb_callback().set(FUNC(abc802_state::lrs_w));
m_dart->out_rtsb_callback().set(FUNC(abc802_state::mux80_40_w));
- subdevice<abc_keyboard_port_device>(ABC_KEYBOARD_PORT_TAG)->set_default_option("abc55");
+ MCFG_DEVICE_MODIFY(ABC_KEYBOARD_PORT_TAG)
+ MCFG_SLOT_DEFAULT_OPTION("abc55")
- subdevice<abcbus_slot_device>(ABCBUS_TAG)->set_default_option("abc834");
+ MCFG_DEVICE_MODIFY(ABCBUS_TAG)
+ MCFG_SLOT_DEFAULT_OPTION("abc834")
// internal ram
RAM(config, RAM_TAG).set_default_size("64K");
-}
+MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( abc806 )
+// MACHINE_CONFIG( abc806 )
//-------------------------------------------------
-void abc806_state::abc806(machine_config &config)
-{
+MACHINE_CONFIG_START(abc806_state::abc806)
common(config);
// basic machine hardware
@@ -1219,16 +1220,18 @@ void abc806_state::abc806(machine_config &config)
m_dart->out_dtrb_callback().set(FUNC(abc806_state::keydtr_w));
- subdevice<abc_keyboard_port_device>(ABC_KEYBOARD_PORT_TAG)->set_default_option("abc77");
+ MCFG_DEVICE_MODIFY(ABC_KEYBOARD_PORT_TAG)
+ MCFG_SLOT_DEFAULT_OPTION("abc77")
- subdevice<abcbus_slot_device>(ABCBUS_TAG)->set_default_option("abc832");
+ MCFG_DEVICE_MODIFY(ABCBUS_TAG)
+ MCFG_SLOT_DEFAULT_OPTION("abc832")
// internal ram
RAM(config, RAM_TAG).set_default_size("160K").set_extra_options("544K");
// software list
- SOFTWARE_LIST(config, "flop_list2").set_original("abc806");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list2", "abc806")
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ac1.cpp b/src/mame/drivers/ac1.cpp
index c1e75686566..1b7e4329cf0 100644
--- a/src/mame/drivers/ac1.cpp
+++ b/src/mame/drivers/ac1.cpp
@@ -129,12 +129,11 @@ static INPUT_PORTS_START( ac1 )
INPUT_PORTS_END
/* Machine driver */
-void ac1_state::ac1(machine_config &config)
-{
+MACHINE_CONFIG_START(ac1_state::ac1)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(8'000'000) / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &ac1_state::ac1_mem);
- m_maincpu->set_addrmap(AS_IO, &ac1_state::ac1_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(8'000'000) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(ac1_mem)
+ MCFG_DEVICE_IO_MAP(ac1_io)
z80pio_device& pio(Z80PIO(config, "z80pio", XTAL(8'000'000)/4));
pio.in_pa_callback().set(FUNC(ac1_state::ac1_port_a_r));
@@ -143,35 +142,35 @@ void ac1_state::ac1(machine_config &config)
pio.out_pb_callback().set(FUNC(ac1_state::ac1_port_b_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(64*6, 16*8);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(ac1_state::screen_update_ac1));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(64*6, 16*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*6-1, 0, 16*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ac1_state, screen_update_ac1)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_ac1);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ac1 )
PALETTE(config, m_palette, palette_device::MONOCHROME);
SPEAKER(config, "mono").front_center();
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
- CASSETTE(config, m_cassette);
-}
+ MCFG_CASSETTE_ADD( "cassette" )
+MACHINE_CONFIG_END
-void ac1_state::ac1_32(machine_config &config)
-{
+MACHINE_CONFIG_START(ac1_state::ac1_32)
ac1(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &ac1_state::ac1_32_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ac1_32_mem)
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_size(64*6, 32*8);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(ac1_state::screen_update_ac1_32));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(64*6, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*6-1, 0, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ac1_state, screen_update_ac1_32)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( ac1 )
diff --git a/src/mame/drivers/acd.cpp b/src/mame/drivers/acd.cpp
index 4207ac70b57..64ff4cd0863 100644
--- a/src/mame/drivers/acd.cpp
+++ b/src/mame/drivers/acd.cpp
@@ -26,9 +26,8 @@ private:
static INPUT_PORTS_START( acd )
INPUT_PORTS_END
-void acd_state::acd(machine_config &config)
-{
-}
+MACHINE_CONFIG_START(acd_state::acd)
+MACHINE_CONFIG_END
ROM_START( acd )
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/ace.cpp b/src/mame/drivers/ace.cpp
index 9bb971d5e44..91c30b4ce10 100644
--- a/src/mame/drivers/ace.cpp
+++ b/src/mame/drivers/ace.cpp
@@ -322,27 +322,27 @@ void aceal_state::machine_reset()
elem = 0;
}
-void aceal_state::ace(machine_config &config)
-{
+MACHINE_CONFIG_START(aceal_state::ace)
+
/* basic machine hardware */
- I8080(config, m_maincpu, MASTER_CLOCK/9); /* 2 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &aceal_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", I8080, MASTER_CLOCK/9) /* 2 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(4*8, 32*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(aceal_state::screen_update_ace));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_ace);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(4*8, 32*8-1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(aceal_state, screen_update_ace)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ace)
PALETTE(config, m_palette, palette_device::MONOCHROME);
/* sound hardware */
/* ???? */
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/aceex.cpp b/src/mame/drivers/aceex.cpp
index fcf2de94a0c..d4830b3906f 100644
--- a/src/mame/drivers/aceex.cpp
+++ b/src/mame/drivers/aceex.cpp
@@ -84,13 +84,12 @@ void aceex2814_state::machine_reset()
#define Y1_CLOCK 40320000
#define Y2_CLOCK 45342720
-void aceex2814_state::aceex2814(machine_config &config)
-{
+MACHINE_CONFIG_START(aceex2814_state::aceex2814)
/* basic machine hardware */
- I80C31(config, m_maincpu, Y2_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &aceex2814_state::aceex2814_map);
-}
+ MCFG_DEVICE_ADD("maincpu", I80C31, Y2_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(aceex2814_map)
+MACHINE_CONFIG_END
ROM_START( aceex2814 )
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/acefruit.cpp b/src/mame/drivers/acefruit.cpp
index c3ebc08de7b..49a05bdb9bc 100644
--- a/src/mame/drivers/acefruit.cpp
+++ b/src/mame/drivers/acefruit.cpp
@@ -626,33 +626,33 @@ static GFXDECODE_START( gfx_acefruit )
GFXDECODE_ENTRY( "gfx1", 0x1800, charlayout, 8, 4 )
GFXDECODE_END
-void acefruit_state::acefruit(machine_config &config)
-{
+MACHINE_CONFIG_START(acefruit_state::acefruit)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 2500000); /* 2.5MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &acefruit_state::acefruit_map);
- m_maincpu->set_addrmap(AS_IO, &acefruit_state::acefruit_io);
- m_maincpu->set_vblank_int("screen", FUNC(acefruit_state::acefruit_vblank));
+ MCFG_DEVICE_ADD("maincpu", Z80, 2500000) /* 2.5MHz */
+ MCFG_DEVICE_PROGRAM_MAP(acefruit_map)
+ MCFG_DEVICE_IO_MAP(acefruit_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", acefruit_state, acefruit_vblank)
WATCHDOG_TIMER(config, "watchdog");
GFXDECODE(config, m_gfxdecode, m_palette, gfx_acefruit);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(512, 256);
- m_screen->set_visarea_full();
- m_screen->set_screen_update(FUNC(acefruit_state::screen_update_acefruit));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 255)
+ MCFG_SCREEN_UPDATE_DRIVER(acefruit_state, screen_update_acefruit)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(acefruit_state::acefruit_palette), 16);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* sound hardware */
-}
+MACHINE_CONFIG_END
void acefruit_state::init_sidewndr()
{
diff --git a/src/mame/drivers/acesp.cpp b/src/mame/drivers/acesp.cpp
index 01584aaba1b..7f1b049ff2d 100644
--- a/src/mame/drivers/acesp.cpp
+++ b/src/mame/drivers/acesp.cpp
@@ -86,13 +86,13 @@ static INPUT_PORTS_START( ace_sp )
INPUT_PORTS_END
-void ace_sp_state::ace_sp(machine_config &config)
-{
- HD6303Y(config, m_maincpu, 1000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &ace_sp_state::ace_sp_map);
+MACHINE_CONFIG_START(ace_sp_state::ace_sp)
+ MCFG_DEVICE_ADD("maincpu", HD6303Y, 1000000)
+ MCFG_DEVICE_PROGRAM_MAP(ace_sp_map)
- PIA6821(config, "pia0", 0);
-}
+ MCFG_DEVICE_ADD("pia0", PIA6821, 0)
+
+MACHINE_CONFIG_END
#define SP_CBOWL_SOUND \
diff --git a/src/mame/drivers/aci_boris.cpp b/src/mame/drivers/aci_boris.cpp
deleted file mode 100644
index 55817b69224..00000000000
--- a/src/mame/drivers/aci_boris.cpp
+++ /dev/null
@@ -1,258 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:Sean Riddle
-/******************************************************************************
-
-Applied Concepts Boris (electronic chess computer)
-
-- MK3850N-3 CPU @ 2 MHz, MK3853N memory interface
-- 256 bytes RAM(2*2112), AMI 2KB ROM + AMI 1KB(?*) ROM *: less than 512 bytes used
-- 8-digit 16seg led panel
-
-When it was first released, it was in kit form. An extensive assembly manual with
-schematics was included. It was later distributed by Chafitz in pre-assembled form.
-There's also an updated revision, identifiable by the startup message "Boris awaits
-your move"(same as Boris Master) instead of "Boris plays black".
-
-******************************************************************************/
-
-#include "emu.h"
-#include "cpu/f8/f8.h"
-#include "machine/f3853.h"
-#include "machine/timer.h"
-
-// internal artwork
-#include "aci_boris.lh" // clickable
-
-
-namespace {
-
-class boris_state : public driver_device
-{
-public:
- boris_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_inp_matrix(*this, "IN.%u", 0),
- m_delay_display(*this, "delay_display_%u", 0),
- m_out_digit(*this, "digit%u", 0U)
- { }
-
- void boris(machine_config &config);
-
- DECLARE_INPUT_CHANGED_MEMBER(reset_switch);
-
-protected:
- virtual void machine_start() override;
-
-private:
- // devices/pointers
- required_device<cpu_device> m_maincpu;
- required_ioport_array<4> m_inp_matrix;
- required_device_array<timer_device, 8> m_delay_display;
- output_finder<8> m_out_digit;
-
- void main_map(address_map &map);
- void main_io(address_map &map);
-
- TIMER_DEVICE_CALLBACK_MEMBER(delay_display);
-
- DECLARE_WRITE8_MEMBER(mux_w);
- DECLARE_WRITE8_MEMBER(digit_w);
- DECLARE_READ8_MEMBER(input_r);
-
- void update_4042();
-
- u8 m_io[2]; // MK3850 I/O ports
- u8 m_4042; // 4042 latch output
-};
-
-void boris_state::machine_start()
-{
- // resolve handlers
- m_out_digit.resolve();
-
- // zerofill
- memset(m_io, 0, sizeof(m_io));
- m_4042 = 0;
-
- // register for savestates
- save_item(NAME(m_io));
- save_item(NAME(m_4042));
-}
-
-INPUT_CHANGED_MEMBER(boris_state::reset_switch)
-{
- // reset switch is tied to MK3850 RESET pin
- m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
-
- // clear display
- if (newval)
- {
- for (int i = 0; i < 8; i++)
- m_delay_display[i]->adjust(attotime::zero, i);
- }
-}
-
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// MK3850 ports/TTL
-
-TIMER_DEVICE_CALLBACK_MEMBER(boris_state::delay_display)
-{
- // 16 segments via port 1 and 4042 output (latched port 1)
- u16 mask = (param & 8) ? 0xffff : 0;
- m_out_digit[param & 7] = ~(m_4042 << 8 | m_io[1]) & mask;
-}
-
-void boris_state::update_4042()
-{
- // port 1 is latched as long as 4042 clock is low
- // (yes low, this is actually (~~m_io[0] & 8) since output ports are inverted)
- if (m_io[0] & 8)
- m_4042 = bitswap<8>(m_io[1],4,2,0,6,5,1,3,7);
-}
-
-WRITE8_MEMBER(boris_state::mux_w)
-{
- // IO00-IO02: 4028 A-C to digit/input mux (4028 D to GND)
- u8 prev = ~m_io[0] & 7;
- u8 sel = ~data & 7;
- if (sel != prev)
- {
- // digits are strobed, so on falling edge, delay them going off to prevent flicker or stuck display
- m_delay_display[prev]->adjust(attotime::from_msec(50), prev);
-
- // need a short delay on rising edge too, while boris sets up digit segments
- // (it writes port 1, increments digit, latches port 1, writes port 1 again)
- m_delay_display[sel]->adjust(attotime::from_usec(50), sel | 8);
- }
-
- // IO03: clock 4042
- m_io[0] = data;
- update_4042();
-}
-
-READ8_MEMBER(boris_state::input_r)
-{
- // IO04-IO07: multiplexed inputs from 4028 4-7
- u8 data = m_io[0];
- u8 sel = ~data & 7;
- if (sel >= 4)
- data |= m_inp_matrix[sel-4]->read() << 4;
-
- return data;
-}
-
-WRITE8_MEMBER(boris_state::digit_w)
-{
- // IO10-IO17: digit segments
- m_io[1] = data;
- update_4042();
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void boris_state::main_map(address_map &map)
-{
- map.global_mask(0x0fff);
- map(0x0000, 0x0bff).rom();
- map(0x0c00, 0x0fff).ram();
-}
-
-void boris_state::main_io(address_map &map)
-{
- map(0x00, 0x00).rw(FUNC(boris_state::input_r), FUNC(boris_state::mux_w));
- map(0x01, 0x01).w(FUNC(boris_state::digit_w));
- map(0x0c, 0x0f).rw("smi", FUNC(f3853_device::read), FUNC(f3853_device::write));
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( boris )
- PORT_START("IN.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("G.7")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("H.8")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("Set / 9") // labeled just "SET" on 1st version
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("CE") // clear entry
-
- PORT_START("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("D.4 / Rook")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("E.5 / Queen")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("F.6 / King")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Time")
-
- PORT_START("IN.2")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("A.1 / Pawn")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("B.2 / Knight")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("C.3 / Bishop")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_K) PORT_NAME("Rank")
-
- PORT_START("IN.3")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SPACE) PORT_CODE(KEYCODE_MINUS) PORT_NAME("-")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("B/W") // black/white
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter")
-
- PORT_START("RESET")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_R) PORT_TOGGLE PORT_CHANGED_MEMBER(DEVICE_SELF, boris_state, reset_switch, nullptr) PORT_NAME("Reset Switch")
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Configs
-******************************************************************************/
-
-void boris_state::boris(machine_config &config)
-{
- /* basic machine hardware */
- F8(config, m_maincpu, 2_MHz_XTAL); // MK3850, 2MHz XTAL according to schematics
- m_maincpu->set_addrmap(AS_PROGRAM, &boris_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &boris_state::main_io);
- m_maincpu->set_irq_acknowledge_callback("smi", FUNC(f3853_device::int_acknowledge));
-
- f3853_device &smi(F3853(config, "smi", 2_MHz_XTAL));
- smi.int_req_callback().set_inputline("maincpu", F8_INPUT_LINE_INT_REQ);
-
- /* video hardware */
- for (int i = 0; i < 8; i++)
- TIMER(config, m_delay_display[i]).configure_generic(FUNC(boris_state::delay_display));
-
- config.set_default_layout(layout_aci_boris);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( boris )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD("007-7020-00_c10502", 0x0000, 0x0800, CRC(18182870) SHA1(cb717a4b5269b04b0d7ae61aaf4a8f6a019626a5) )
- ROM_LOAD("007-7021-00_c10503", 0x0800, 0x0400, CRC(49b77505) SHA1(474b665ee2955497f6d70878d817f1783ba1a835) )
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
-COMP( 1978, boris, 0, 0, boris, boris, boris_state, empty_init, "Applied Concepts", "Boris", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/aci_borisdpl.cpp b/src/mame/drivers/aci_borisdpl.cpp
deleted file mode 100644
index d2210d63df8..00000000000
--- a/src/mame/drivers/aci_borisdpl.cpp
+++ /dev/null
@@ -1,236 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Sandro Ronco, hap
-// thanks-to:Sean Riddle
-/******************************************************************************
-
-Applied Concepts Boris Diplomat
-
-- F3870 MCU (Motorola SC80265P or Fairchild SL90259)
-- 256 bytes RAM(2*2112-1)
-- 8-digit 7seg led panel
-
-Two versions exists, a blue one(seen with SC80265P) and a brown one(seen with
-either MCU). The one emulated here is from a brown version with the SC80265P.
-Motorola SC80265P is a 3870 clone, it's assumed that the program is the same
-as SL90259.
-
-******************************************************************************/
-
-#include "emu.h"
-#include "cpu/f8/f8.h"
-#include "machine/f3853.h"
-#include "machine/timer.h"
-
-// internal artwork
-#include "aci_borisdpl.lh" // clickable
-
-
-namespace {
-
-class borisdpl_state : public driver_device
-{
-public:
- borisdpl_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_keypad(*this, "LINE%u", 1U),
- m_delay_display(*this, "delay_display_%u", 0),
- m_out_digit(*this, "digit%u", 0U)
- { }
-
- void borisdpl(machine_config &config);
-
- // reset button is tied to MCU RESET pin
- DECLARE_INPUT_CHANGED_MEMBER(reset_button) { m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE); }
-
-protected:
- virtual void machine_start() override;
-
-private:
- // devices/pointers
- required_device<cpu_device> m_maincpu;
- required_ioport_array<4> m_keypad;
- required_device_array<timer_device, 8> m_delay_display;
- output_finder<8> m_out_digit;
-
- void main_map(address_map &map);
- void main_io(address_map &map);
-
- TIMER_DEVICE_CALLBACK_MEMBER(delay_display);
-
- DECLARE_WRITE8_MEMBER(digit_w);
- DECLARE_READ8_MEMBER(input_r);
- DECLARE_WRITE8_MEMBER(matrix_w);
-
- // 256 bytes data RAM accessed via I/O ports
- DECLARE_READ8_MEMBER(ram_address_r) { return m_ram_address; }
- DECLARE_WRITE8_MEMBER(ram_address_w) { m_ram_address = data; }
- DECLARE_READ8_MEMBER(ram_data_r) { return m_ram[m_ram_address]; }
- DECLARE_WRITE8_MEMBER(ram_data_w) { m_ram[m_ram_address] = data; }
-
- std::unique_ptr<u8[]> m_ram;
- u8 m_ram_address;
- u8 m_matrix;
-};
-
-void borisdpl_state::machine_start()
-{
- // resolve handlers
- m_out_digit.resolve();
-
- // zerofill
- m_ram = make_unique_clear<u8[]>(0x100);
- m_ram_address = 0;
- m_matrix = 0;
-
- // register for savestates
- save_pointer(NAME(m_ram), 0x100);
- save_item(NAME(m_ram_address));
- save_item(NAME(m_matrix));
-}
-
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// F3870 ports
-
-TIMER_DEVICE_CALLBACK_MEMBER(borisdpl_state::delay_display)
-{
- // clear digits if inactive
- if (param != (m_matrix & 7))
- m_out_digit[param] = 0;
-}
-
-WRITE8_MEMBER(borisdpl_state::digit_w)
-{
- // digit segments, update display here
- m_out_digit[m_matrix & 7] = ~data & 0x7f;
-}
-
-WRITE8_MEMBER(borisdpl_state::matrix_w)
-{
- // d0-d2: MC14028B to input/digit select
- // digits are strobed, so on falling edge, delay them going off to prevent flicker or stuck display
- if ((data & 7) != (m_matrix & 7))
- m_delay_display[m_matrix & 7]->adjust(attotime::from_msec(20), m_matrix & 7);
-
- m_matrix = data;
-}
-
-READ8_MEMBER(borisdpl_state::input_r)
-{
- // d4-d7: multiplexed inputs (only one lane can be selected at the same time)
- u8 data = m_matrix;
- if ((m_matrix & 7) < 4)
- data |= m_keypad[m_matrix & 3]->read() << 4;
-
- return data;
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void borisdpl_state::main_map(address_map &map)
-{
- map.global_mask(0x7ff);
- map(0x0000, 0x07ff).rom();
-}
-
-void borisdpl_state::main_io(address_map &map)
-{
- map(0x00, 0x00).rw(FUNC(borisdpl_state::input_r), FUNC(borisdpl_state::matrix_w));
- map(0x01, 0x01).w(FUNC(borisdpl_state::digit_w));
- map(0x04, 0x07).rw("psu", FUNC(f38t56_device::read), FUNC(f38t56_device::write));
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( borisdpl )
- PORT_START("LINE1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SPACE) PORT_CODE(KEYCODE_MINUS) PORT_NAME("-")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("B/W") // black/white
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter")
-
- PORT_START("LINE2")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("A.1 / Pawn")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("B.2 / Knight")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("C.3 / Bishop")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_K) PORT_NAME("Rank")
-
- PORT_START("LINE3")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("D.4 / Rook")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("E.5 / Queen")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("F.6 / King")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Time")
-
- PORT_START("LINE4")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("G.7")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("H.8")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9 / Set")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("CE") // clear entry
-
- PORT_START("RESET")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, borisdpl_state, reset_button, nullptr) PORT_NAME("Reset")
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Configs
-******************************************************************************/
-
-void borisdpl_state::borisdpl(machine_config &config)
-{
- /* basic machine hardware */
- F8(config, m_maincpu, 3000000/2); // frequency approximated from video reference
- m_maincpu->set_addrmap(AS_PROGRAM, &borisdpl_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &borisdpl_state::main_io);
- m_maincpu->set_irq_acknowledge_callback("psu", FUNC(f38t56_device::int_acknowledge));
-
- f38t56_device &psu(F38T56(config, "psu", 3000000/2));
- psu.set_int_vector(0x5020);
- psu.int_req_callback().set_inputline("maincpu", F8_INPUT_LINE_INT_REQ);
- psu.read_a().set(FUNC(borisdpl_state::ram_data_r));
- psu.write_a().set(FUNC(borisdpl_state::ram_data_w));
- psu.read_b().set(FUNC(borisdpl_state::ram_address_r));
- psu.write_b().set(FUNC(borisdpl_state::ram_address_w));
-
- /* video hardware */
- for (int i = 0; i < 8; i++)
- TIMER(config, m_delay_display[i]).configure_generic(FUNC(borisdpl_state::delay_display));
-
- config.set_default_layout(layout_aci_borisdpl);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( borisdpl )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD("007-7024-00_7847.u8", 0x0000, 0x0800, CRC(e20bac03) SHA1(9e17b9d90522371fbf7018926356150f70b9a3b6) )
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1979, borisdpl, 0, 0, borisdpl, borisdpl, borisdpl_state, empty_init, "Applied Concepts", "Boris Diplomat", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/acommand.cpp b/src/mame/drivers/acommand.cpp
index c3560e0ea95..2f3174ff42d 100644
--- a/src/mame/drivers/acommand.cpp
+++ b/src/mame/drivers/acommand.cpp
@@ -468,21 +468,21 @@ TIMER_DEVICE_CALLBACK_MEMBER(acommand_state::acommand_scanline)
m_maincpu->set_input_line(3, HOLD_LINE);
}
-void acommand_state::acommand(machine_config &config)
-{
+MACHINE_CONFIG_START(acommand_state::acommand)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &acommand_state::acommand_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(acommand_state::acommand_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu",M68000,12000000)
+ MCFG_DEVICE_PROGRAM_MAP(acommand_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", acommand_state, acommand_scanline, "screen", 0, 1)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(acommand_state::screen_update_acommand));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(acommand_state, screen_update_acommand)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_acommand);
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 0x4000);
@@ -494,14 +494,14 @@ void acommand_state::acommand(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- OKIM6295(config, m_oki1, 2112000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
- m_oki1->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_oki1->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 2112000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
- OKIM6295(config, m_oki2, 2112000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
- m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 2112000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/acrnsys.cpp b/src/mame/drivers/acrnsys.cpp
index 2eaa8aca2eb..f24b1a4f120 100644
--- a/src/mame/drivers/acrnsys.cpp
+++ b/src/mame/drivers/acrnsys.cpp
@@ -123,7 +123,7 @@ void acrnsys_state::a6502_mem(address_map &map)
{
map.unmap_value_low();
map(0x0000, 0x03ff).ram();
- map(0x0e00, 0x0e7f).mirror(0x100).rw(m_ins8154, FUNC(ins8154_device::read_io), FUNC(ins8154_device::write_io));
+ map(0x0e00, 0x0e7f).mirror(0x100).rw(m_ins8154, FUNC(ins8154_device::ins8154_r), FUNC(ins8154_device::ins8154_w));
map(0xf000, 0xffff).rom().region("maincpu", 0);
}
@@ -437,7 +437,7 @@ void acrnsys_state::acrnsys2(machine_config &config)
/* Acorn Bus - 8 Slot Backplane */
ACORN_BUS(config, m_bus, 0);
- m_bus->set_space(m_maincpu, AS_PROGRAM);
+ m_bus->set_cputag(m_maincpu);
m_bus->out_irq_callback().set(m_irqs, FUNC(input_merger_device::in_w<1>));
m_bus->out_nmi_callback().set(FUNC(acrnsys_state::bus_nmi_w));
ACORN_BUS_SLOT(config, "bus1", m_bus, acorn_bus_devices, "8k"); // 0x2000-0x3fff
@@ -461,7 +461,7 @@ void acrnsys_state::acrnsys3(machine_config &config)
/* Acorn Bus - 8 Slot Backplane */
ACORN_BUS(config, m_bus, 0);
- m_bus->set_space(m_maincpu, AS_PROGRAM);
+ m_bus->set_cputag(m_maincpu);
m_bus->out_irq_callback().set(m_irqs, FUNC(input_merger_device::in_w<1>));
m_bus->out_nmi_callback().set(FUNC(acrnsys_state::bus_nmi_w));
ACORN_BUS_SLOT(config, "bus1", m_bus, acorn_bus_devices, "8k"); // 0x2000-0x3fff
@@ -485,7 +485,7 @@ void acrnsys_state::acrnsys3_6809(machine_config &config)
/* Acorn Bus - 8 Slot Backplane */
ACORN_BUS(config, m_bus, 0);
- m_bus->set_space(m_maincpu, AS_PROGRAM);
+ m_bus->set_cputag(m_maincpu);
m_bus->out_irq_callback().set(m_irqs, FUNC(input_merger_device::in_w<1>));
m_bus->out_nmi_callback().set(FUNC(acrnsys_state::bus_nmi_w));
ACORN_BUS_SLOT(config, "bus1", m_bus, acorn_bus_devices, "8k"); // 0x0000-0x1fff
@@ -508,7 +508,7 @@ void acrnsys_state::acrnsys4(machine_config &config)
/* Acorn Bus - 14 Slot Backplane */
ACORN_BUS(config, m_bus, 0);
- m_bus->set_space(m_maincpu, AS_PROGRAM);
+ m_bus->set_cputag(m_maincpu);
m_bus->out_irq_callback().set(m_irqs, FUNC(input_merger_device::in_w<1>));
m_bus->out_nmi_callback().set(FUNC(acrnsys_state::bus_nmi_w));
ACORN_BUS_SLOT(config, "bus1", m_bus, acorn_bus_devices, "8k"); // 0x2000-0x3fff
@@ -538,7 +538,7 @@ void acrnsys_state::acrnsys5(machine_config &config)
/* Acorn Bus - 7 Slot Backplane */
ACORN_BUS(config, m_bus, 0);
- m_bus->set_space(m_maincpu, AS_PROGRAM);
+ m_bus->set_cputag(m_maincpu);
m_bus->out_irq_callback().set(m_irqs, FUNC(input_merger_device::in_w<1>));
m_bus->out_nmi_callback().set(FUNC(acrnsys_state::bus_nmi_w));
ACORN_BUS_SLOT(config, "bus1", m_bus, acorn_bus_devices, "32k"); // 32K
diff --git a/src/mame/drivers/acrnsys1.cpp b/src/mame/drivers/acrnsys1.cpp
index e9ba3b9f17b..0d33002b5b0 100644
--- a/src/mame/drivers/acrnsys1.cpp
+++ b/src/mame/drivers/acrnsys1.cpp
@@ -185,8 +185,8 @@ WRITE8_MEMBER( acrnsys1_state::acrnsys1_led_segment_w )
void acrnsys1_state::acrnsys1_map(address_map &map)
{
map(0x0000, 0x03ff).ram();
- map(0x0e00, 0x0e7f).mirror(0x100).rw("b1", FUNC(ins8154_device::read_io), FUNC(ins8154_device::write_io));
- map(0x0e80, 0x0eff).mirror(0x100).rw("b1", FUNC(ins8154_device::read_ram), FUNC(ins8154_device::write_ram));
+ map(0x0e00, 0x0e7f).mirror(0x100).rw("b1", FUNC(ins8154_device::ins8154_r), FUNC(ins8154_device::ins8154_w));
+ map(0x0e80, 0x0eff).mirror(0x100).ram();
map(0xf800, 0xf9ff).mirror(0x600).rom();
}
@@ -264,17 +264,16 @@ INPUT_PORTS_END
MACHINE DRIVERS
***************************************************************************/
-void acrnsys1_state::acrnsys1(machine_config &config)
-{
+MACHINE_CONFIG_START(acrnsys1_state::acrnsys1)
/* basic machine hardware */
- M6502(config, m_maincpu, 1.008_MHz_XTAL); /* 1.008 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &acrnsys1_state::acrnsys1_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, 1.008_MHz_XTAL) /* 1.008 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(acrnsys1_map)
config.set_default_layout(layout_acrnsys1);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
/* devices */
ins8154_device &b1(INS8154(config, "b1"));
@@ -284,11 +283,11 @@ void acrnsys1_state::acrnsys1(machine_config &config)
TTL74145(config, m_ttl74145, 0);
- CASSETTE(config, m_cass);
+ MCFG_CASSETTE_ADD( "cassette" )
- TIMER(config, "acrnsys1_c").configure_periodic(FUNC(acrnsys1_state::acrnsys1_c), attotime::from_hz(4800));
- TIMER(config, "acrnsys1_p").configure_periodic(FUNC(acrnsys1_state::acrnsys1_p), attotime::from_hz(40000));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("acrnsys1_c", acrnsys1_state, acrnsys1_c, attotime::from_hz(4800))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("acrnsys1_p", acrnsys1_state, acrnsys1_p, attotime::from_hz(40000))
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/actfancr.cpp b/src/mame/drivers/actfancr.cpp
index 06056d62da8..1953328632f 100644
--- a/src/mame/drivers/actfancr.cpp
+++ b/src/mame/drivers/actfancr.cpp
@@ -4,9 +4,16 @@
Act Fancer (Japan) FD (c) 1989 Data East Corporation
Act Fancer (World) FE (c) 1989 Data East Corporation
- Trio The Punch (World) FG (c) 1989 Data East Corporation
+ Trio The Punch (World) FC (c) 1989 Data East Corporation
Trio The Punch (Japan) FF (c) 1989 Data East Corporation
+ The 'World' set has rom code FE, the 'Japan' set has rom code FD.
+
+ Most Data East games give the Japanese version the earlier code, though
+ there is no real difference between the sets.
+
+ I believe the USA version of Act Fancer is called 'Out Fencer'
+
Emulation by Bryan McPhail, mish@tendril.co.uk
Update of the 03/04/2005
diff --git a/src/mame/drivers/acvirus.cpp b/src/mame/drivers/acvirus.cpp
index a95efbdd4de..79aaa6f16c8 100644
--- a/src/mame/drivers/acvirus.cpp
+++ b/src/mame/drivers/acvirus.cpp
@@ -106,14 +106,13 @@ void acvirus_state::virus_map(address_map &map)
map(0x8000, 0xffff).bankr("rombank");
}
-void acvirus_state::virus(machine_config &config)
-{
- I8052(config, m_maincpu, XTAL(12'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &acvirus_state::virus_map);
+MACHINE_CONFIG_START(acvirus_state::virus)
+ MCFG_DEVICE_ADD("maincpu", I8052, XTAL(12'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(virus_map)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
-}
+MACHINE_CONFIG_END
static INPUT_PORTS_START( virus )
INPUT_PORTS_END
diff --git a/src/mame/drivers/adam.cpp b/src/mame/drivers/adam.cpp
index f9eb9b979e2..6d1a69c2db5 100644
--- a/src/mame/drivers/adam.cpp
+++ b/src/mame/drivers/adam.cpp
@@ -457,10 +457,10 @@ READ8_MEMBER( adam_state::mreq_r )
}
}
- data = m_cart->bd_r(offset & 0x7fff, data, cs1, cs2, cs3, cs4);
- data = m_slot1->bd_r(offset & 0xff, data, 1, biorq, 1, 1, 1);
- data = m_slot2->bd_r(offset, data, bmreq, biorq, aux_rom_cs, 1, cas2);
- data = m_slot3->bd_r(offset, data, 1, 1, 1, cas1, cas2);
+ data = m_cart->bd_r(space, offset & 0x7fff, data, cs1, cs2, cs3, cs4);
+ data = m_slot1->bd_r(space, offset & 0xff, data, 1, biorq, 1, 1, 1);
+ data = m_slot2->bd_r(space, offset, data, bmreq, biorq, aux_rom_cs, 1, cas2);
+ data = m_slot3->bd_r(space, offset, data, 1, 1, 1, cas1, cas2);
return data;
}
@@ -516,9 +516,9 @@ WRITE8_MEMBER( adam_state::mreq_w )
m_ram->pointer()[offset] = data;
}
- m_slot1->bd_w(offset & 0xff, data, 1, biorq, 1, 1, 1);
- m_slot2->bd_w(offset, data, bmreq, biorq, aux_rom_cs, 1, cas2);
- m_slot3->bd_w(offset, data, 1, 1, 1, cas1, cas2);
+ m_slot1->bd_w(space, offset & 0xff, data, 1, biorq, 1, 1, 1);
+ m_slot2->bd_w(space, offset, data, bmreq, biorq, aux_rom_cs, 1, cas2);
+ m_slot3->bd_w(space, offset, data, 1, 1, 1, cas1, cas2);
}
@@ -557,9 +557,9 @@ READ8_MEMBER( adam_state::iorq_r )
break;
}
- data = m_slot1->bd_r(offset & 0xff, data, 1, biorq, 1, 1, 1);
- data = m_slot2->bd_r(offset, data, bmreq, biorq, aux_rom_cs, 1, cas2);
- data = m_slot3->bd_r(offset, data, 1, 1, 1, cas1, cas2);
+ data = m_slot1->bd_r(space, offset & 0xff, data, 1, biorq, 1, 1, 1);
+ data = m_slot2->bd_r(space, offset, data, bmreq, biorq, aux_rom_cs, 1, cas2);
+ data = m_slot3->bd_r(space, offset, data, 1, 1, 1, cas1, cas2);
return data;
}
@@ -609,9 +609,9 @@ WRITE8_MEMBER( adam_state::iorq_w )
break;
}
- m_slot1->bd_w(offset & 0xff, data, 1, biorq, 1, 1, 1);
- m_slot2->bd_w(offset, data, bmreq, biorq, aux_rom_cs, 1, cas2);
- m_slot3->bd_w(offset, data, 1, 1, 1, cas1, cas2);
+ m_slot1->bd_w(space, offset & 0xff, data, 1, biorq, 1, 1, 1);
+ m_slot2->bd_w(space, offset, data, bmreq, biorq, aux_rom_cs, 1, cas2);
+ m_slot3->bd_w(space, offset, data, 1, 1, 1, cas1, cas2);
}
@@ -1042,7 +1042,7 @@ void adam_state::adam(machine_config &config)
m_netcpu->out_p3_cb().set(FUNC(adam_state::m6801_p3_w));
m_netcpu->out_p4_cb().set(FUNC(adam_state::m6801_p4_w));
m_netcpu->out_sc2_cb().set(FUNC(adam_state::os3_w));
- config.m_perfect_cpu_quantum = subtag(M6801_TAG);
+ MCFG_QUANTUM_PERFECT_CPU(M6801_TAG)
// video hardware
TMS9928A(config, m_vdc, XTAL(10'738'635)).set_screen("screen");
diff --git a/src/mame/drivers/adm23.cpp b/src/mame/drivers/adm23.cpp
deleted file mode 100644
index 4d957aef7c4..00000000000
--- a/src/mame/drivers/adm23.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:AJR
-/***************************************************************************
-
- Skeleton driver for ADM 23 terminal.
-
-***************************************************************************/
-
-#include "emu.h"
-#include "cpu/z8/z8.h"
-#include "video/mc6845.h"
-#include "screen.h"
-
-class adm23_state : public driver_device
-{
-public:
- adm23_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_chargen(*this, "chargen")
- {
- }
-
- void adm23(machine_config &config);
-
-private:
- MC6845_UPDATE_ROW(update_row);
- MC6845_ON_UPDATE_ADDR_CHANGED(addr_changed);
-
- void mem_map(address_map &map);
-
- required_region_ptr<u8> m_chargen;
-};
-
-MC6845_UPDATE_ROW(adm23_state::update_row)
-{
-}
-
-MC6845_ON_UPDATE_ADDR_CHANGED(adm23_state::addr_changed)
-{
-}
-
-void adm23_state::mem_map(address_map &map)
-{
- map(0x0800, 0x1fff).rom().region("program", 0x0800);
- map(0x2020, 0x2020).nopr();
- map(0x2080, 0x2080).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
- map(0x2081, 0x2081).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
- map(0xc080, 0xc080).nopw();
- map(0xd080, 0xd080).nopr();
-}
-
-
-static INPUT_PORTS_START(adm23)
-INPUT_PORTS_END
-
-
-void adm23_state::adm23(machine_config &config)
-{
- z8_device &maincpu(Z8682(config, "maincpu", 14.7428_MHz_XTAL / 2));
- maincpu.set_addrmap(AS_PROGRAM, &adm23_state::mem_map);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(14.7428_MHz_XTAL, 873, 0, 720, 281, 0, 264);
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
-
- mc6845_device &crtc(SY6545_1(config, "crtc", 14.7428_MHz_XTAL / 9));
- crtc.set_char_width(9);
- crtc.set_show_border_area(false);
- crtc.set_screen("screen");
- crtc.set_update_row_callback(FUNC(adm23_state::update_row), this);
- crtc.set_on_update_addr_change_callback(FUNC(adm23_state::addr_changed), this);
-}
-
-ROM_START(adm23)
- ROM_REGION(0x2000, "program", 0) // CPU is clearly a Z8682, though its location is labeled "Z8 8681"
- ROM_LOAD("136261-083_u9.bin", 0x0000, 0x2000, CRC(85da07e7) SHA1(a1305d0f06c7e3c6075b05ca0f11c53a901b5013))
-
- ROM_REGION(0x0800, "chargen", 0)
- ROM_LOAD("chr_u10.bin", 0x0000, 0x0800, CRC(cd053232) SHA1(6b4136a91d0dcd9cb5df92c54c9c30b1cb5f1974))
-
- ROM_REGION(0x0020, "proms", 0)
- ROM_LOAD("129253-61_u3.bin", 0x0000, 0x0020, NO_DUMP) // N82S123N at location labeled "S288"
-ROM_END
-
-
-COMP(1982, adm23, 0, 0, adm23, adm23, adm23_state, empty_init, "Lear Siegler", "ADM 23 Smart Terminal", MACHINE_IS_SKELETON)
diff --git a/src/mame/drivers/adm31.cpp b/src/mame/drivers/adm31.cpp
deleted file mode 100644
index 483c8e39def..00000000000
--- a/src/mame/drivers/adm31.cpp
+++ /dev/null
@@ -1,513 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:AJR
-/****************************************************************************
-
- Skeleton driver for ADM-31 terminal.
-
- The ADM-31 and ADM-42 Data Display Terminals were Lear Siegler, Inc.'s
- first microprocessor-based video terminals, introduced in 1978 as the
- respective successors to their earlier ADM-1A and ADM-2 "smart"
- terminals. The original ADM-31 model was apparently rebranded in 1980
- as the ADM-31 Intermediate Terminal, and the ADM-32 was released a few
- months later.
-
- While the ADM-31 and ADM-32 only support 2 pages of display memory, the
- ADM-42 could be upgraded to 8. Enhancements over the ADM-31 offered by
- both the ADM-42 and ADM-32 include a status line, a larger monitor and
- a detachable keyboard. Several other expansion options were offered for
- the ADM-42, including synchronous serial and parallel printer ports.
-
-****************************************************************************/
-
-#include "emu.h"
-//#include "bus/rs232/rs232.h"
-#include "cpu/m6800/m6800.h"
-#include "machine/com8116.h"
-#include "machine/input_merger.h"
-#include "machine/6821pia.h"
-#include "machine/6850acia.h"
-#include "video/tms9927.h"
-#include "screen.h"
-
-class adm31_state : public driver_device
-{
-public:
- adm31_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_acia(*this, "acia%u", 1U)
- , m_brg(*this, "brg")
- , m_vtac(*this, "vtac")
- , m_chargen(*this, "chargen")
- , m_keys(*this, "R%u", 0U)
- , m_baud(*this, "BAUD")
- , m_caps_lamp(*this, "caps_lamp")
- {
- }
-
- void adm31(machine_config &mconfig);
-
-protected:
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
-private:
- u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-
- void kbd_scan_w(u8 data);
- u8 kbd_scan_r();
- void kbd_status_w(u8 data);
-
- void mem_map(address_map &map);
-
- required_device<cpu_device> m_maincpu;
- required_device_array<acia6850_device, 2> m_acia;
- required_device<com8116_device> m_brg;
- required_device<crt5027_device> m_vtac;
- required_region_ptr<u8> m_chargen;
- optional_ioport_array<16> m_keys;
- required_ioport m_baud;
- output_finder<> m_caps_lamp;
-
- u8 m_kbd_scan;
-};
-
-
-void adm31_state::machine_start()
-{
- m_caps_lamp.resolve();
-
- save_item(NAME(m_kbd_scan));
-}
-
-void adm31_state::machine_reset()
-{
- // Baud rate switches read by CPU on ADM-42, but not on ADM-31?
- m_brg->stt_str_w(m_baud->read());
-}
-
-
-u32 adm31_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- return 0;
-}
-
-
-void adm31_state::kbd_scan_w(u8 data)
-{
- m_kbd_scan = data & 0x7f;
-}
-
-u8 adm31_state::kbd_scan_r()
-{
- return m_kbd_scan | (BIT(m_keys[(m_kbd_scan & 0x78) >> 3].read_safe(0xff), m_kbd_scan & 0x07) ? 0x00 : 0x80);
-}
-
-void adm31_state::kbd_status_w(u8 data)
-{
- m_caps_lamp = BIT(data, 0);
-}
-
-void adm31_state::mem_map(address_map &map)
-{
- map(0x0000, 0x03ff).ram();
- map(0x7000, 0x7000).nopw();
- map(0x7800, 0x7803).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
- map(0x7900, 0x7900).portr("S5");
- map(0x7a00, 0x7a01).rw(m_acia[0], FUNC(acia6850_device::read), FUNC(acia6850_device::write));
- map(0x7c00, 0x7c01).rw(m_acia[1], FUNC(acia6850_device::read), FUNC(acia6850_device::write));
- map(0x7d00, 0x7d00).portr("S6");
- map(0x7e00, 0x7e00).portr("S4");
- map(0x7f00, 0x7f0f).rw(m_vtac, FUNC(crt5027_device::read), FUNC(crt5027_device::write));
- map(0x8000, 0x8fff).ram();
- map(0xe000, 0xffff).rom().region("program", 0);
-}
-
-
-static INPUT_PORTS_START(adm31)
- PORT_START("R0")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Key D1")
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Key D7")
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Key C5")
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Key D2")
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Key D4/F4")
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Key D9/F9")
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('2') PORT_CHAR('"') PORT_CODE(KEYCODE_2)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CHAR(0x1b) PORT_CODE(KEYCODE_F7)
-
- PORT_START("R1")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Rub") PORT_CHAR(0x7f) PORT_CODE(KEYCODE_F8)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Key 9E/9F")
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Key D0/F0")
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Key B4/B6")
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Key 92/93")
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('1') PORT_CHAR('!') PORT_CODE(KEYCODE_1)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('q') PORT_CHAR('Q') PORT_CODE(KEYCODE_Q)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Cap Lock") PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) PORT_CODE(KEYCODE_CAPSLOCK)
-
- PORT_START("R2")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('3') PORT_CHAR('#') PORT_CODE(KEYCODE_3)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('4') PORT_CHAR('$') PORT_CODE(KEYCODE_4)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('5') PORT_CHAR('%') PORT_CODE(KEYCODE_5)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('6') PORT_CHAR('&') PORT_CODE(KEYCODE_6)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('7') PORT_CHAR('\'') PORT_CODE(KEYCODE_7)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('8') PORT_CHAR('(') PORT_CODE(KEYCODE_8)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('9') PORT_CHAR(')') PORT_CODE(KEYCODE_9)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('0') PORT_CHAR('_') PORT_CODE(KEYCODE_0)
-
- PORT_START("R3")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('-') PORT_CHAR('=') PORT_CODE(KEYCODE_MINUS)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('^') PORT_CHAR('~') PORT_CODE(KEYCODE_EQUALS)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('\\') PORT_CHAR('|') PORT_CODE(KEYCODE_BACKSLASH)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Tab Back Tab") PORT_CHAR(0x09) PORT_CODE(KEYCODE_BACKSPACE)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD)) PORT_CODE(KEYCODE_7_PAD)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD)) PORT_CODE(KEYCODE_8_PAD)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD)) PORT_CODE(KEYCODE_9_PAD)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD)) PORT_CODE(KEYCODE_MINUS_PAD)
-
- PORT_START("R4")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('w') PORT_CHAR('W') PORT_CODE(KEYCODE_W)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('e') PORT_CHAR('E') PORT_CODE(KEYCODE_E)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('r') PORT_CHAR('R') PORT_CODE(KEYCODE_R)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('t') PORT_CHAR('T') PORT_CODE(KEYCODE_T)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('y') PORT_CHAR('Y') PORT_CODE(KEYCODE_Y)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('u') PORT_CHAR('U') PORT_CODE(KEYCODE_U)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('i') PORT_CHAR('I') PORT_CODE(KEYCODE_I)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('o') PORT_CHAR('O') PORT_CODE(KEYCODE_O)
-
- PORT_START("R5")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('p') PORT_CHAR('P') PORT_CODE(KEYCODE_P)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('[') PORT_CHAR('{') PORT_CODE(KEYCODE_OPENBRACE)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(']') PORT_CHAR('}') PORT_CODE(KEYCODE_CLOSEBRACE)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Return") PORT_CHAR(0x0d) PORT_CODE(KEYCODE_ENTER)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD)) PORT_CODE(KEYCODE_4_PAD)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD)) PORT_CODE(KEYCODE_5_PAD)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD)) PORT_CODE(KEYCODE_6_PAD)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(TAB_PAD)) PORT_CODE(KEYCODE_PLUS_PAD)
-
- PORT_START("R6")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('a') PORT_CHAR('A') PORT_CODE(KEYCODE_A)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('s') PORT_CHAR('S') PORT_CODE(KEYCODE_S)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('d') PORT_CHAR('D') PORT_CODE(KEYCODE_D)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('f') PORT_CHAR('F') PORT_CODE(KEYCODE_F)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('g') PORT_CHAR('G') PORT_CODE(KEYCODE_G)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('h') PORT_CHAR('H') PORT_CODE(KEYCODE_H)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('j') PORT_CHAR('J') PORT_CODE(KEYCODE_J)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('k') PORT_CHAR('K') PORT_CODE(KEYCODE_K)
-
- PORT_START("R7")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('l') PORT_CHAR('L') PORT_CODE(KEYCODE_L)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(';') PORT_CHAR('+') PORT_CODE(KEYCODE_COLON)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(':') PORT_CHAR('*') PORT_CODE(KEYCODE_QUOTE)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('@') PORT_CHAR('`') PORT_CODE(KEYCODE_TILDE)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Line Feed") PORT_CHAR(0x0a) PORT_CODE(KEYCODE_RCONTROL)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD)) PORT_CODE(KEYCODE_2_PAD)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD)) PORT_CODE(KEYCODE_3_PAD)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD)) PORT_CODE(KEYCODE_1_PAD)
-
- PORT_START("R8")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Clear") PORT_CODE(KEYCODE_LALT)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('z') PORT_CHAR('Z') PORT_CODE(KEYCODE_Z)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('x') PORT_CHAR('X') PORT_CODE(KEYCODE_X)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('c') PORT_CHAR('C') PORT_CODE(KEYCODE_C)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('v') PORT_CHAR('V') PORT_CODE(KEYCODE_V)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('b') PORT_CHAR('B') PORT_CODE(KEYCODE_B)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('n') PORT_CHAR('N') PORT_CODE(KEYCODE_N)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('m') PORT_CHAR('M') PORT_CODE(KEYCODE_M)
-
- PORT_START("R9")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(',') PORT_CHAR('<') PORT_CODE(KEYCODE_COMMA)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('.') PORT_CHAR('>') PORT_CODE(KEYCODE_STOP)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('/') PORT_CHAR('?') PORT_CODE(KEYCODE_SLASH)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(' ') PORT_CODE(KEYCODE_SPACE)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("New Line New Page") PORT_CODE(KEYCODE_END)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD)) PORT_CODE(KEYCODE_0_PAD)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) PORT_CODE(KEYCODE_DEL_PAD)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad Return") PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD)) PORT_CODE(KEYCODE_ENTER_PAD)
-
- PORT_START("R10")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Key 9D/94")
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(HOME)) PORT_CODE(KEYCODE_HOME)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_CODE(KEYCODE_DOWN)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(UP)) PORT_CODE(KEYCODE_UP)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_CODE(KEYCODE_LEFT)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_CODE(KEYCODE_RIGHT)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Key E3/40")
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(COMMA_PAD)) PORT_CODE(KEYCODE_COMMA_PAD)
-
- PORT_START("SHIFT")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CHAR(UCHAR_SHIFT_2) PORT_CODE(KEYCODE_LCONTROL)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CHAR(UCHAR_SHIFT_1) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT)
- PORT_BIT(0x1d, IP_ACTIVE_LOW, IPT_UNUSED)
-
- PORT_START("S4")
- PORT_DIPNAME(0x01, 0x00, "Break Key") PORT_DIPLOCATION("S4:1")
- PORT_DIPSETTING(0x01, "Disable")
- PORT_DIPSETTING(0x00, "Enable")
- PORT_DIPNAME(0x02, 0x02, "Refresh Rate") PORT_DIPLOCATION("S4:2")
- PORT_DIPSETTING(0x00, "50 Hz")
- PORT_DIPSETTING(0x02, "60 Hz")
- PORT_DIPNAME(0x1c, 0x14, "Modem Port") PORT_DIPLOCATION("S4:3,4,5")
- PORT_DIPSETTING(0x00, "7 DB, EP, 2 SB")
- PORT_DIPSETTING(0x04, "7 DB, OP, 2 SB")
- PORT_DIPSETTING(0x08, "7 DB, EP, 1 SB")
- PORT_DIPSETTING(0x0c, "7 DB, OP, 1 SB")
- PORT_DIPSETTING(0x10, "8 DB, NP, 2 SB")
- PORT_DIPSETTING(0x14, "8 DB, NP, 1 SB")
- PORT_DIPSETTING(0x18, "8 DB, EP, 1 SB")
- PORT_DIPSETTING(0x00, "8 DB, OP, 1 SB")
- PORT_DIPNAME(0x20, 0x00, DEF_STR(Unused)) PORT_DIPLOCATION("S4:6")
- PORT_DIPSETTING(0x20, DEF_STR(Off))
- PORT_DIPSETTING(0x00, DEF_STR(On))
- PORT_DIPNAME(0x40, 0x00, "Transmission") PORT_DIPLOCATION("S4:7")
- PORT_DIPSETTING(0x00, "Block Mode")
- PORT_DIPSETTING(0x40, "Conversation Mode")
- PORT_DIPNAME(0x80, 0x00, "Duplex") PORT_DIPLOCATION("S4:8")
- PORT_DIPSETTING(0x00, "Full Duplex")
- PORT_DIPSETTING(0x80, "Half Duplex")
-
- PORT_START("S5")
- PORT_DIPNAME(0x01, 0x00, DEF_STR(Unused)) PORT_DIPLOCATION("S5:1")
- PORT_DIPSETTING(0x01, DEF_STR(Off))
- PORT_DIPSETTING(0x00, DEF_STR(On))
- PORT_DIPNAME(0x02, 0x00, DEF_STR(Unused)) PORT_DIPLOCATION("S5:2")
- PORT_DIPSETTING(0x02, DEF_STR(Off))
- PORT_DIPSETTING(0x00, DEF_STR(On))
- PORT_DIPNAME(0x1c, 0x14, "Printer Port") PORT_DIPLOCATION("S5:3,4,5")
- PORT_DIPSETTING(0x00, "7 DB, EP, 2 SB")
- PORT_DIPSETTING(0x04, "7 DB, OP, 2 SB")
- PORT_DIPSETTING(0x08, "7 DB, EP, 1 SB")
- PORT_DIPSETTING(0x0c, "7 DB, OP, 1 SB")
- PORT_DIPSETTING(0x10, "8 DB, NP, 2 SB")
- PORT_DIPSETTING(0x14, "8 DB, NP, 1 SB")
- PORT_DIPSETTING(0x18, "8 DB, EP, 1 SB")
- PORT_DIPSETTING(0x00, "8 DB, OP, 1 SB")
- PORT_DIPNAME(0x20, 0x00, DEF_STR(Unused)) PORT_DIPLOCATION("S5:6")
- PORT_DIPSETTING(0x20, DEF_STR(Off))
- PORT_DIPSETTING(0x00, DEF_STR(On))
- PORT_DIPNAME(0x40, 0x00, DEF_STR(Unused)) PORT_DIPLOCATION("S5:7")
- PORT_DIPSETTING(0x40, DEF_STR(Off))
- PORT_DIPSETTING(0x00, DEF_STR(On))
- PORT_DIPNAME(0x80, 0x00, "Printer Port Buffer") PORT_DIPLOCATION("S5:8")
- PORT_DIPSETTING(0x80, "Disable")
- PORT_DIPSETTING(0x00, "Enable")
-
- PORT_START("S6")
- PORT_DIPNAME(0x7f, 0x00, "Polling Address") PORT_DIPLOCATION("S6:1,2,3,4,5,6,7")
- PORT_DIPSETTING(0x00, "00")
- PORT_DIPSETTING(0x01, "01")
- PORT_DIPSETTING(0x02, "02")
- PORT_DIPSETTING(0x03, "03")
- PORT_DIPSETTING(0x04, "04")
- PORT_DIPSETTING(0x05, "05")
- PORT_DIPSETTING(0x06, "06")
- PORT_DIPSETTING(0x07, "07")
- PORT_DIPSETTING(0x08, "08")
- PORT_DIPSETTING(0x09, "09")
- PORT_DIPSETTING(0x0a, "0A")
- PORT_DIPSETTING(0x0b, "0B")
- PORT_DIPSETTING(0x0c, "0C")
- PORT_DIPSETTING(0x0d, "0D")
- PORT_DIPSETTING(0x0e, "0E")
- PORT_DIPSETTING(0x0f, "0F")
- PORT_DIPSETTING(0x10, "10")
- PORT_DIPSETTING(0x11, "11")
- PORT_DIPSETTING(0x12, "12")
- PORT_DIPSETTING(0x13, "13")
- PORT_DIPSETTING(0x14, "14")
- PORT_DIPSETTING(0x15, "15")
- PORT_DIPSETTING(0x16, "16")
- PORT_DIPSETTING(0x17, "17")
- PORT_DIPSETTING(0x18, "18")
- PORT_DIPSETTING(0x19, "19")
- PORT_DIPSETTING(0x1a, "1A")
- PORT_DIPSETTING(0x1b, "1B")
- PORT_DIPSETTING(0x1c, "1C")
- PORT_DIPSETTING(0x1d, "1D")
- PORT_DIPSETTING(0x1e, "1E")
- PORT_DIPSETTING(0x1f, "1F")
- PORT_DIPSETTING(0x20, "20")
- PORT_DIPSETTING(0x21, "21")
- PORT_DIPSETTING(0x22, "22")
- PORT_DIPSETTING(0x23, "23")
- PORT_DIPSETTING(0x24, "24")
- PORT_DIPSETTING(0x25, "25")
- PORT_DIPSETTING(0x26, "26")
- PORT_DIPSETTING(0x27, "27")
- PORT_DIPSETTING(0x28, "28")
- PORT_DIPSETTING(0x29, "29")
- PORT_DIPSETTING(0x2a, "2A")
- PORT_DIPSETTING(0x2b, "2B")
- PORT_DIPSETTING(0x2c, "2C")
- PORT_DIPSETTING(0x2d, "2D")
- PORT_DIPSETTING(0x2e, "2E")
- PORT_DIPSETTING(0x2f, "2F")
- PORT_DIPSETTING(0x30, "30")
- PORT_DIPSETTING(0x31, "31")
- PORT_DIPSETTING(0x32, "32")
- PORT_DIPSETTING(0x33, "33")
- PORT_DIPSETTING(0x34, "34")
- PORT_DIPSETTING(0x35, "35")
- PORT_DIPSETTING(0x36, "36")
- PORT_DIPSETTING(0x37, "37")
- PORT_DIPSETTING(0x38, "38")
- PORT_DIPSETTING(0x39, "39")
- PORT_DIPSETTING(0x3a, "3A")
- PORT_DIPSETTING(0x3b, "3B")
- PORT_DIPSETTING(0x3c, "3C")
- PORT_DIPSETTING(0x3d, "3D")
- PORT_DIPSETTING(0x3e, "3E")
- PORT_DIPSETTING(0x3f, "3F")
- PORT_DIPSETTING(0x40, "40")
- PORT_DIPSETTING(0x41, "41")
- PORT_DIPSETTING(0x42, "42")
- PORT_DIPSETTING(0x43, "43")
- PORT_DIPSETTING(0x44, "44")
- PORT_DIPSETTING(0x45, "45")
- PORT_DIPSETTING(0x46, "46")
- PORT_DIPSETTING(0x47, "47")
- PORT_DIPSETTING(0x48, "48")
- PORT_DIPSETTING(0x49, "49")
- PORT_DIPSETTING(0x4a, "4A")
- PORT_DIPSETTING(0x4b, "4B")
- PORT_DIPSETTING(0x4c, "4C")
- PORT_DIPSETTING(0x4d, "4D")
- PORT_DIPSETTING(0x4e, "4E")
- PORT_DIPSETTING(0x4f, "4F")
- PORT_DIPSETTING(0x50, "50")
- PORT_DIPSETTING(0x51, "51")
- PORT_DIPSETTING(0x52, "52")
- PORT_DIPSETTING(0x53, "53")
- PORT_DIPSETTING(0x54, "54")
- PORT_DIPSETTING(0x55, "55")
- PORT_DIPSETTING(0x56, "56")
- PORT_DIPSETTING(0x57, "57")
- PORT_DIPSETTING(0x58, "58")
- PORT_DIPSETTING(0x59, "59")
- PORT_DIPSETTING(0x5a, "5A")
- PORT_DIPSETTING(0x5b, "5B")
- PORT_DIPSETTING(0x5c, "5C")
- PORT_DIPSETTING(0x5d, "5D")
- PORT_DIPSETTING(0x5e, "5E")
- PORT_DIPSETTING(0x5f, "5F")
- PORT_DIPSETTING(0x60, "60")
- PORT_DIPSETTING(0x61, "61")
- PORT_DIPSETTING(0x62, "62")
- PORT_DIPSETTING(0x63, "63")
- PORT_DIPSETTING(0x64, "64")
- PORT_DIPSETTING(0x65, "65")
- PORT_DIPSETTING(0x66, "66")
- PORT_DIPSETTING(0x67, "67")
- PORT_DIPSETTING(0x68, "68")
- PORT_DIPSETTING(0x69, "69")
- PORT_DIPSETTING(0x6a, "6A")
- PORT_DIPSETTING(0x6b, "6B")
- PORT_DIPSETTING(0x6c, "6C")
- PORT_DIPSETTING(0x6d, "6D")
- PORT_DIPSETTING(0x6e, "6E")
- PORT_DIPSETTING(0x6f, "6F")
- PORT_DIPSETTING(0x70, "70")
- PORT_DIPSETTING(0x71, "71")
- PORT_DIPSETTING(0x72, "72")
- PORT_DIPSETTING(0x73, "73")
- PORT_DIPSETTING(0x74, "74")
- PORT_DIPSETTING(0x75, "75")
- PORT_DIPSETTING(0x76, "76")
- PORT_DIPSETTING(0x77, "77")
- PORT_DIPSETTING(0x78, "78")
- PORT_DIPSETTING(0x79, "79")
- PORT_DIPSETTING(0x7a, "7A")
- PORT_DIPSETTING(0x7b, "7B")
- PORT_DIPSETTING(0x7c, "7C")
- PORT_DIPSETTING(0x7d, "7D")
- PORT_DIPSETTING(0x7e, "7E")
- PORT_DIPSETTING(0x7f, "7F")
- PORT_DIPNAME(0x80, 0x80, "Polling Option") PORT_DIPLOCATION("S6:8")
- PORT_DIPSETTING(0x80, "Disable")
- PORT_DIPSETTING(0x00, "Enable")
-
- PORT_START("BAUD")
- PORT_DIPNAME(0x0f, 0x0e, "Modem Baud Rate") PORT_DIPLOCATION("BS1:1,2,3,4")
- PORT_DIPSETTING(0x00, "50")
- PORT_DIPSETTING(0x01, "75")
- PORT_DIPSETTING(0x02, "110")
- PORT_DIPSETTING(0x03, "134.5")
- PORT_DIPSETTING(0x04, "150")
- PORT_DIPSETTING(0x05, "300")
- PORT_DIPSETTING(0x06, "600")
- PORT_DIPSETTING(0x07, "1200")
- PORT_DIPSETTING(0x08, "1800")
- PORT_DIPSETTING(0x09, "2000")
- PORT_DIPSETTING(0x0a, "2400")
- PORT_DIPSETTING(0x0b, "3600")
- PORT_DIPSETTING(0x0c, "4800")
- PORT_DIPSETTING(0x0d, "7200")
- PORT_DIPSETTING(0x0e, "9600")
- PORT_DIPNAME(0xf0, 0x70, "Printer Baud Rate") PORT_DIPLOCATION("BS2:1,2,3,4")
- PORT_DIPSETTING(0x00, "50")
- PORT_DIPSETTING(0x10, "75")
- PORT_DIPSETTING(0x20, "110")
- PORT_DIPSETTING(0x30, "134.5")
- PORT_DIPSETTING(0x40, "150")
- PORT_DIPSETTING(0x50, "300")
- PORT_DIPSETTING(0x60, "600")
- PORT_DIPSETTING(0x70, "1200")
- PORT_DIPSETTING(0x80, "1800")
- PORT_DIPSETTING(0x90, "2000")
- PORT_DIPSETTING(0xa0, "2400")
- PORT_DIPSETTING(0xb0, "3600")
- PORT_DIPSETTING(0xc0, "4800")
- PORT_DIPSETTING(0xd0, "7200")
- PORT_DIPSETTING(0xe0, "9600")
-INPUT_PORTS_END
-
-void adm31_state::adm31(machine_config &config)
-{
- M6800(config, m_maincpu, 19.584_MHz_XTAL / 20);
- m_maincpu->set_addrmap(AS_PROGRAM, &adm31_state::mem_map);
-
- INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
-
- pia6821_device &pia(PIA6821(config, "pia"));
- pia.writepa_handler().set(FUNC(adm31_state::kbd_scan_w));
- pia.readpa_handler().set(FUNC(adm31_state::kbd_scan_r));
- pia.writepb_handler().set(FUNC(adm31_state::kbd_status_w));
- pia.readpb_handler().set_ioport("SHIFT");
-
- ACIA6850(config, m_acia[0]);
- m_acia[0]->irq_handler().set("mainirq", FUNC(input_merger_device::in_w<0>));
-
- ACIA6850(config, m_acia[1]);
- m_acia[0]->irq_handler().set("mainirq", FUNC(input_merger_device::in_w<1>));
-
- COM8116(config, m_brg, 5.0688_MHz_XTAL);
- m_brg->fr_handler().set(m_acia[0], FUNC(acia6850_device::write_rxc));
- m_brg->fr_handler().append(m_acia[0], FUNC(acia6850_device::write_txc));
- m_brg->ft_handler().set(m_acia[1], FUNC(acia6850_device::write_rxc));
- m_brg->ft_handler().append(m_acia[1], FUNC(acia6850_device::write_txc));
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(19.584_MHz_XTAL, 1020, 0, 800, 320, 0, 288);
- screen.set_screen_update(FUNC(adm31_state::screen_update));
-
- CRT5027(config, m_vtac, 19.584_MHz_XTAL / 10);
- m_vtac->set_screen("screen");
- m_vtac->set_char_width(10);
-}
-
-
-ROM_START(adm31)
- ROM_REGION(0x2000, "program", 0)
- ROM_LOAD("adm-31-u62.bin", 0x0000, 0x0800, CRC(57e557a5) SHA1(cb3021ab570c279cbaa673b5de8fa1ca9eb48188))
- ROM_LOAD("adm-31-u63.bin", 0x0800, 0x0800, CRC(1268a59c) SHA1(f0cd8562e0d5faebf84d8decaa848ff28f2ac637))
- ROM_LOAD("adm-31-u64.bin", 0x1000, 0x0800, CRC(8939fa00) SHA1(00f6a8a49e51a9501cd9d1e2aae366fb070a5a1d))
- ROM_LOAD("adm-31-u65.bin", 0x1800, 0x0800, CRC(53e4e2f1) SHA1(bf30241815c790de3354e1acfe84e760c889cbb1))
-
- ROM_REGION(0x0800, "chargen", 0)
- ROM_LOAD("chargen.bin", 0x0000, 0x0800, NO_DUMP)
-ROM_END
-
-
-COMP(1978, adm31, 0, 0, adm31, adm31, adm31_state, empty_init, "Lear Siegler", "ADM-31 Data Display Terminal", MACHINE_IS_SKELETON)
diff --git a/src/mame/drivers/adm36.cpp b/src/mame/drivers/adm36.cpp
deleted file mode 100644
index 2298543b7eb..00000000000
--- a/src/mame/drivers/adm36.cpp
+++ /dev/null
@@ -1,202 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Robbbert,AJR
-/************************************************************************************************************
-
- Skeleton driver for ADM 36 Video Display Terminal.
-
- The detachable keyboard has not been dumped. It is controlled serially through the PIO.
-
-************************************************************************************************************/
-
-#include "emu.h"
-#include "bus/rs232/rs232.h"
-#include "cpu/z80/z80.h"
-#include "machine/er1400.h"
-#include "machine/z80ctc.h"
-#include "machine/z80pio.h"
-#include "machine/z80sio.h"
-#include "video/tms9927.h"
-#include "screen.h"
-
-
-class adm36_state : public driver_device
-{
-public:
- adm36_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_earom(*this, "earom")
- , m_vtac(*this, "vtac")
- , m_chargen(*this, "chargen")
- , m_vram(*this, "vram%u", 0U)
- {
- }
-
- void adm36(machine_config &config);
-
-protected:
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
-private:
- u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-
- void pio_pa_w(u8 data);
- u8 pio_pb_r();
- void pio_pb_w(u8 data);
- DECLARE_WRITE_LINE_MEMBER(vsyn_w);
-
- void mem_map(address_map &map);
- void io_map(address_map &map);
-
- required_device<z80_device> m_maincpu;
- required_device<er1400_device> m_earom;
- required_device<crt5037_device> m_vtac;
- required_region_ptr<u8> m_chargen;
- required_shared_ptr_array<u8, 2> m_vram;
-
- bool m_vsyn;
-};
-
-
-u32 adm36_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- return 0;
-}
-
-void adm36_state::machine_start()
-{
- m_vsyn = false;
-
- save_item(NAME(m_vsyn));
-}
-
-void adm36_state::machine_reset()
-{
-}
-
-void adm36_state::pio_pa_w(u8 data)
-{
- m_earom->data_w(BIT(data, 0));
-}
-
-u8 adm36_state::pio_pb_r()
-{
- return (m_earom->data_r() ? 0 : 1) | (m_vsyn ? 0x20 : 0);
-}
-
-void adm36_state::pio_pb_w(u8 data)
-{
- m_earom->clock_w(!BIT(data, 4));
- m_earom->c3_w(BIT(data, 3));
- m_earom->c2_w(BIT(data, 2));
- m_earom->c1_w(BIT(data, 1));
-}
-
-WRITE_LINE_MEMBER(adm36_state::vsyn_w)
-{
- m_vsyn = bool(state);
-}
-
-void adm36_state::mem_map(address_map &map)
-{
- map(0x0000, 0x2fff).rom().region("maincpu", 0);
- map(0x6000, 0x67ff).ram(); // MK4802J-3 (U76)
- map(0xe000, 0xefff).ram().share("vram0"); // 4x MK4118AN-1 (U66-U69)
- map(0xf000, 0xffff).ram().share("vram1"); // 4x MK4118AN-1 (U81-U84)
-}
-
-void adm36_state::io_map(address_map &map)
-{
- map.global_mask(0xff);
- map(0x00, 0x03).mirror(0x0c).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
- map(0x10, 0x13).mirror(0x0c).rw("sio", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w));
- map(0x20, 0x23).mirror(0x0c).rw("pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
- map(0x40, 0x4f).rw(m_vtac, FUNC(crt5037_device::read), FUNC(crt5037_device::write));
-}
-
-
-static INPUT_PORTS_START(adm36)
-INPUT_PORTS_END
-
-
-static const z80_daisy_config daisy_chain[] =
-{
- { "ctc" },
- { "sio" },
- { "pio" },
- { nullptr }
-};
-
-void adm36_state::adm36(machine_config &config)
-{
- // basic machine hardware
- Z80(config, m_maincpu, 14.728_MHz_XTAL / 6);
- m_maincpu->set_addrmap(AS_PROGRAM, &adm36_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &adm36_state::io_map);
- m_maincpu->set_daisy_config(daisy_chain);
-
- z80pio_device &pio(Z80PIO(config, "pio", 14.728_MHz_XTAL / 6));
- pio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- pio.out_pa_callback().set(FUNC(adm36_state::pio_pa_w));
- pio.in_pb_callback().set(FUNC(adm36_state::pio_pb_r));
- pio.out_pb_callback().set(FUNC(adm36_state::pio_pb_w));
-
- ER1400(config, m_earom);
-
- //F3870(config, "keybcpu", 3.579545_MHz_XTAL);
-
- z80ctc_device &ctc(Z80CTC(config, "ctc", 14.728_MHz_XTAL / 6));
- ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- ctc.set_clk<0>(14.728_MHz_XTAL / 12);
- ctc.set_clk<1>(14.728_MHz_XTAL / 12);
- ctc.set_clk<2>(14.728_MHz_XTAL / 12);
- ctc.set_clk<3>(14.728_MHz_XTAL / 12);
- ctc.zc_callback<0>().set("sio", FUNC(z80sio_device::txca_w));
- ctc.zc_callback<1>().set("sio", FUNC(z80sio_device::rxca_w));
- ctc.zc_callback<2>().set("sio", FUNC(z80sio_device::txcb_w));
- ctc.zc_callback<2>().append("sio", FUNC(z80sio_device::rxcb_w));
-
- z80sio_device &sio(Z80SIO(config, "sio", 14.728_MHz_XTAL / 6)); // MK3887N
- sio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- sio.out_txda_callback().set("modem", FUNC(rs232_port_device::write_txd));
- sio.out_rtsa_callback().set("modem", FUNC(rs232_port_device::write_rts));
- sio.out_dtra_callback().set("modem", FUNC(rs232_port_device::write_dtr));
- sio.out_txdb_callback().set("printer", FUNC(rs232_port_device::write_txd));
- sio.out_dtrb_callback().set("printer", FUNC(rs232_port_device::write_rts));
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(14.728_MHz_XTAL, 936, 0, 720, 262, 0, 240);
- //screen.set_raw(24.3_MHz_XTAL, 1548, 0, 1188, 262, 0, 240);
- screen.set_screen_update(FUNC(adm36_state::screen_update));
-
- CRT5037(config, m_vtac, 14.728_MHz_XTAL / 9);
- m_vtac->set_char_width(9);
- m_vtac->set_screen("screen");
- m_vtac->vsyn_callback().set(FUNC(adm36_state::vsyn_w));
-
- rs232_port_device &modem(RS232_PORT(config, "modem", default_rs232_devices, nullptr)); // RS-232C, RS-422A or 20mA current loop
- modem.rxd_handler().set("sio", FUNC(z80sio_device::rxa_w));
- modem.cts_handler().set("sio", FUNC(z80sio_device::ctsa_w));
- modem.dcd_handler().set("sio", FUNC(z80sio_device::dcda_w));
- modem.dsr_handler().set("pio", FUNC(z80pio_device::pb6_w));
-
- rs232_port_device &printer(RS232_PORT(config, "printer", default_rs232_devices, nullptr));
- printer.rxd_handler().set("sio", FUNC(z80sio_device::rxb_w));
- printer.cts_handler().set("sio", FUNC(z80sio_device::ctsa_w));
- printer.dcd_handler().set("sio", FUNC(z80sio_device::dcda_w));
-}
-
-
-ROM_START(adm36)
- ROM_REGION(0x3000, "maincpu", 0)
- ROM_LOAD("u71_136261-012.bin", 0x0000, 0x2000, CRC(f08315c7) SHA1(3943a5fc587e690df81aa9694e6e452673ec5513))
- ROM_LOAD("u72_131671-015.bin", 0x2000, 0x1000, CRC(c397f4e2) SHA1(21513472fe4237bda8448a2ad85496757d4ece12))
- // U73-U75 are empty sockets
-
- ROM_REGION(0x1000, "chargen", 0)
- ROM_LOAD("u56.bin", 0x0000, 0x1000, CRC(70e46897) SHA1(85b4360912fc05243b3b2df29bde5a3def94086b))
-ROM_END
-
-
-COMP(1981, adm36, 0, 0, adm36, adm36, adm36_state, empty_init, "Lear Siegler", "ADM 36 Video Display Terminal", MACHINE_IS_SKELETON)
diff --git a/src/mame/drivers/adp.cpp b/src/mame/drivers/adp.cpp
index 50200fc0a47..0c5317b7b0f 100644
--- a/src/mame/drivers/adp.cpp
+++ b/src/mame/drivers/adp.cpp
@@ -540,34 +540,34 @@ void adp_state::fstation_hd63484_map(address_map &map)
map(0x80000, 0xfffff).ram();
}
-void adp_state::quickjac(machine_config &config)
-{
- M68000(config, m_maincpu, 8000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &adp_state::quickjac_mem);
- m_maincpu->set_irq_acknowledge_callback(FUNC(adp_state::duart_iack_handler));
+MACHINE_CONFIG_START(adp_state::quickjac)
+
+ MCFG_DEVICE_ADD(m_maincpu, M68000, 8000000)
+ MCFG_DEVICE_PROGRAM_MAP(quickjac_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(adp_state, duart_iack_handler)
MCFG_MACHINE_START_OVERRIDE(adp_state,skattv)
MCFG_MACHINE_RESET_OVERRIDE(adp_state,skattv)
- MC68681(config, m_duart, XTAL(8'664'000) / 2);
- m_duart->irq_cb().set_inputline(m_maincpu, M68K_IRQ_4);
- m_duart->a_tx_cb().set(m_microtouch, FUNC(microtouch_device::rx));
- m_duart->inport_cb().set_ioport("DSW1");
+ MCFG_DEVICE_ADD( "duart", MC68681, XTAL(8'664'000) / 2 )
+ MCFG_MC68681_IRQ_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE("microtouch", microtouch_device, rx))
+ MCFG_MC68681_INPORT_CALLBACK(IOPORT("DSW1"))
- MICROTOUCH(config, m_microtouch, 9600).stx().set(m_duart, FUNC(mc68681_device::rx_a_w));
+ MCFG_MICROTOUCH_ADD( "microtouch", 9600, WRITELINE("duart", mc68681_device, rx_a_w) )
NVRAM(config, m_nvram, nvram_device::DEFAULT_NONE);
- MSM6242(config, "rtc", XTAL(32'768));
- //rtc.out_int_handler().set(FUNC(adp_state::rtc_irq));
+ MCFG_DEVICE_ADD("rtc", MSM6242, XTAL(32'768))
+ //MCFG_MSM6242_OUT_INT_HANDLER(WRITELINE(*this, adp_state, rtc_irq))
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(384, 280);
- screen.set_visarea_full();
- screen.set_screen_update("acrtc", FUNC(hd63484_device::update_screen));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(384, 280)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1)
+ MCFG_SCREEN_UPDATE_DEVICE("acrtc", hd63484_device, update_screen)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(adp_state::adp_palette), 0x10);
@@ -577,7 +577,8 @@ void adp_state::quickjac(machine_config &config)
ym2149_device &aysnd(YM2149(config, "aysnd", 3686400/2));
aysnd.port_a_read_callback().set_ioport("PA");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.10);
-}
+
+MACHINE_CONFIG_END
void adp_state::skattv(machine_config &config)
{
@@ -603,31 +604,32 @@ void adp_state::ramdac_map(address_map &map)
map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
}
-void adp_state::funland(machine_config &config)
-{
+MACHINE_CONFIG_START(adp_state::funland)
quickjac(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &adp_state::funland_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(funland_mem)
PALETTE(config.replace(), m_palette, palette_device::BLACK, 0x100);
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette));
ramdac.set_addrmap(0, &adp_state::ramdac_map);
- m_acrtc->set_addrmap(0, &adp_state::fstation_hd63484_map);
-}
+ MCFG_DEVICE_MODIFY("acrtc")
+ MCFG_HD63484_ADDRESS_MAP(fstation_hd63484_map)
+MACHINE_CONFIG_END
-void adp_state::fstation(machine_config &config)
-{
+MACHINE_CONFIG_START(adp_state::fstation)
funland(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &adp_state::fstation_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(fstation_mem)
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_size(640, 480);
- screen.set_visarea_full();
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
m_palette->set_init(FUNC(adp_state::fstation_palette));
-}
+MACHINE_CONFIG_END
ROM_START( quickjac )
diff --git a/src/mame/drivers/advision.cpp b/src/mame/drivers/advision.cpp
index ca9c168cbe9..a2a4498e31f 100644
--- a/src/mame/drivers/advision.cpp
+++ b/src/mame/drivers/advision.cpp
@@ -31,7 +31,7 @@
READ8_MEMBER( advision_state::rom_r )
{
offset += 0x400;
- return m_cart->read_rom(offset & 0xfff);
+ return m_cart->read_rom(space, offset & 0xfff);
}
void advision_state::program_map(address_map &map)
@@ -93,6 +93,7 @@ void advision_state::advision(machine_config &config)
SPEAKER(config, "speaker").front_center();
DAC_2BIT_BINARY_WEIGHTED(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
diff --git a/src/mame/drivers/aeroboto.cpp b/src/mame/drivers/aeroboto.cpp
index 9ec149faaa6..45a7daa8de6 100644
--- a/src/mame/drivers/aeroboto.cpp
+++ b/src/mame/drivers/aeroboto.cpp
@@ -244,26 +244,26 @@ void aeroboto_state::machine_reset()
m_sy = 0;
}
-void aeroboto_state::formatz(machine_config &config)
-{
+MACHINE_CONFIG_START(aeroboto_state::formatz)
+
/* basic machine hardware */
- MC6809(config, m_maincpu, XTAL(10'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &aeroboto_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(10'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- MC6809(config, m_audiocpu, XTAL(10'000'000)/4); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &aeroboto_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", MC6809, XTAL(10'000'000)/4) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 31*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(aeroboto_state::screen_update_aeroboto));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(aeroboto_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(aeroboto_state, screen_update_aeroboto)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, aeroboto_state, vblank_irq))
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_aeroboto);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_aeroboto)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
@@ -279,7 +279,7 @@ void aeroboto_state::formatz(machine_config &config)
ay1.add_route(ALL_OUTPUTS, "mono", 0.25);
AY8910(config, "ay2", XTAL(10'000'000)/16).add_route(ALL_OUTPUTS, "mono", 0.25); /* verified on pcb */
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/aerofgt.cpp b/src/mame/drivers/aerofgt.cpp
index 0639b91322b..62e85461888 100644
--- a/src/mame/drivers/aerofgt.cpp
+++ b/src/mame/drivers/aerofgt.cpp
@@ -1861,7 +1861,7 @@ void aerofgt_state::turbofrc(machine_config &config)
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(61.31); /* verified on pcb */
+ screen.set_refresh_hz(61.31); /* verified on pcb */
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 32*8);
screen.set_visarea(0*8, 44*8-1, 0*8, 30*8-1);
diff --git a/src/mame/drivers/agat.cpp b/src/mame/drivers/agat.cpp
index b0d8cb1b2f8..a0560a020af 100644
--- a/src/mame/drivers/agat.cpp
+++ b/src/mame/drivers/agat.cpp
@@ -1076,21 +1076,21 @@ static void agat7_cards(device_slot_interface &device)
// Nippel Co-processor (R65C02 clone + dual-ported RAM)
}
-void agat7_state::agat7(machine_config &config)
-{
- M6502(config, m_maincpu, XTAL(14'300'000) / 14);
- m_maincpu->set_addrmap(AS_PROGRAM, &agat7_state::agat7_map);
- m_maincpu->set_vblank_int(A7_VIDEO_TAG ":a7screen", FUNC(agat7_state::agat_vblank));
+MACHINE_CONFIG_START(agat7_state::agat7)
+ MCFG_DEVICE_ADD(m_maincpu, M6502, XTAL(14'300'000) / 14)
+ MCFG_DEVICE_PROGRAM_MAP(agat7_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER(A7_VIDEO_TAG ":a7screen", agat7_state, agat_vblank)
- TIMER(config, "scantimer").configure_scanline(FUNC(agat7_state::timer_irq), A7_VIDEO_TAG ":a7screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", agat7_state, timer_irq, A7_VIDEO_TAG ":a7screen", 0, 1)
- AGAT7VIDEO(config, m_video, RAM_TAG, "gfx1");
+ MCFG_DEVICE_ADD(m_video, AGAT7VIDEO, RAM_TAG, "gfx1")
RAM(config, m_ram).set_default_size("32K").set_default_value(0);//.set_extra_options("64K,128K");
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD(A7_SPEAKER_TAG, SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* /INH banking */
ADDRESS_MAP_BANK(config, m_upperbank).set_map(&agat7_state::inhbank_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x3000);
@@ -1112,27 +1112,26 @@ void agat7_state::agat7(machine_config &config)
m_ay3600->ako().set(FUNC(agat7_state::ay3600_ako_w));
/* repeat timer. 10 Hz per Mymrin's book */
- TIMER(config, "repttmr").configure_periodic(FUNC(agat7_state::ay3600_repeat), attotime::from_hz(10));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("repttmr", agat7_state, ay3600_repeat, attotime::from_hz(10))
/*
* slot 0 is reserved for SECAM encoder or Apple II compat card.
* slot 1 always holds the CPU card.
*/
- A2BUS(config, m_a2bus, 0);
- m_a2bus->set_space(m_maincpu, AS_PROGRAM);
- m_a2bus->irq_w().set(FUNC(agat7_state::a2bus_irq_w));
- m_a2bus->nmi_w().set(FUNC(agat7_state::a2bus_nmi_w));
- m_a2bus->inh_w().set(FUNC(agat7_state::a2bus_inh_w));
- m_a2bus->dma_w().set_inputline(m_maincpu, INPUT_LINE_HALT);
+ MCFG_DEVICE_ADD(m_a2bus, A2BUS, 0)
+ MCFG_A2BUS_CPU(A7_CPU_TAG)
+ MCFG_A2BUS_OUT_IRQ_CB(WRITELINE(*this, agat7_state, a2bus_irq_w))
+ MCFG_A2BUS_OUT_NMI_CB(WRITELINE(*this, agat7_state, a2bus_nmi_w))
+ MCFG_A2BUS_OUT_INH_CB(WRITELINE(*this, agat7_state, a2bus_inh_w))
A2BUS_SLOT(config, "sl2", m_a2bus, agat7_cards, "a7lang");
A2BUS_SLOT(config, "sl3", m_a2bus, agat7_cards, "a7fdc");
A2BUS_SLOT(config, "sl4", m_a2bus, agat7_cards, "a7ports");
A2BUS_SLOT(config, "sl5", m_a2bus, agat7_cards, nullptr);
A2BUS_SLOT(config, "sl6", m_a2bus, agat7_cards, "a7ram");
- CASSETTE(config,m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED);
-}
+ MCFG_CASSETTE_ADD(m_cassette)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/age_candy.cpp b/src/mame/drivers/age_candy.cpp
index 49c55908dd8..331a421c7f7 100644
--- a/src/mame/drivers/age_candy.cpp
+++ b/src/mame/drivers/age_candy.cpp
@@ -13,7 +13,6 @@ Device is a 27c256 location U3
*/
#include "emu.h"
-#include "cpu/hpc/hpc.h"
#include "speaker.h"
@@ -22,7 +21,7 @@ class age_candy_state : public driver_device
public:
age_candy_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
+ // ,m_maincpu(*this, "maincpu")
{ }
void age_candy(machine_config &config);
@@ -32,7 +31,7 @@ private:
virtual void machine_reset() override;
void age_candy_map(address_map &map);
- required_device<hpc_device> m_maincpu;
+// required_device<mcs51_cpu_device> m_maincpu;
};
static INPUT_PORTS_START( age_candy )
@@ -49,19 +48,24 @@ void age_candy_state::machine_reset()
}
+#ifdef UNUSED_DEFINITION
void age_candy_state::age_candy_map(address_map &map)
{
- map(0x8000, 0xffff).rom().region("maincpu", 0);
+ map(0xc000, 0xffff).rom().region("maincpu", 0x4000);
}
+#endif
-void age_candy_state::age_candy(machine_config &config)
-{
- HPC46104(config, m_maincpu, 16_MHz_XTAL); // HPC still not actually emulated
- m_maincpu->set_addrmap(AS_PROGRAM, &age_candy_state::age_candy_map);
+MACHINE_CONFIG_START(age_candy_state::age_candy)
+
+ /* basic machine hardware */
+// MCFG_DEVICE_ADD("maincpu", HPC46104, 8000000) // unknown clock; HPC emulation needed
+// MCFG_DEVICE_PROGRAM_MAP(age_candy_map)
+// MCFG_DEVICE_IO_MAP(age_candy_io)
/* sound hardware */
SPEAKER(config, "mono").front_center();
-}
+MACHINE_CONFIG_END
+
ROM_START( age_cand )
diff --git a/src/mame/drivers/aim65.cpp b/src/mame/drivers/aim65.cpp
index dc8a1dbed81..d292923be37 100644
--- a/src/mame/drivers/aim65.cpp
+++ b/src/mame/drivers/aim65.cpp
@@ -188,32 +188,32 @@ image_init_result aim65_state::load_cart(device_image_interface &image, generic_
MACHINE_CONFIG_START(aim65_state::aim65)
/* basic machine hardware */
- M6502(config, m_maincpu, AIM65_CLOCK); /* 1 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &aim65_state::aim65_mem);
+ MCFG_DEVICE_ADD("maincpu", M6502, AIM65_CLOCK) /* 1 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(aim65_mem)
config.set_default_layout(layout_aim65);
/* alpha-numeric display */
- DL1416T(config, m_ds[0], u32(0));
- m_ds[0]->update().set(FUNC(aim65_state::aim65_update_ds<1>));
- DL1416T(config, m_ds[1], u32(0));
- m_ds[1]->update().set(FUNC(aim65_state::aim65_update_ds<2>));
- DL1416T(config, m_ds[2], u32(0));
- m_ds[2]->update().set(FUNC(aim65_state::aim65_update_ds<3>));
- DL1416T(config, m_ds[3], u32(0));
- m_ds[3]->update().set(FUNC(aim65_state::aim65_update_ds<4>));
- DL1416T(config, m_ds[4], u32(0));
- m_ds[4]->update().set(FUNC(aim65_state::aim65_update_ds<5>));
+ MCFG_DEVICE_ADD("ds1", DL1416T, u32(0))
+ MCFG_DL1416_UPDATE_HANDLER(WRITE16(*this, aim65_state, aim65_update_ds<1>))
+ MCFG_DEVICE_ADD("ds2", DL1416T, u32(0))
+ MCFG_DL1416_UPDATE_HANDLER(WRITE16(*this, aim65_state, aim65_update_ds<2>))
+ MCFG_DEVICE_ADD("ds3", DL1416T, u32(0))
+ MCFG_DL1416_UPDATE_HANDLER(WRITE16(*this, aim65_state, aim65_update_ds<3>))
+ MCFG_DEVICE_ADD("ds4", DL1416T, u32(0))
+ MCFG_DL1416_UPDATE_HANDLER(WRITE16(*this, aim65_state, aim65_update_ds<4>))
+ MCFG_DEVICE_ADD("ds5", DL1416T, u32(0))
+ MCFG_DL1416_UPDATE_HANDLER(WRITE16(*this, aim65_state, aim65_update_ds<5>))
/* Sound - wave sound only */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette1).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
/* other devices */
- mos6532_new_device &riot(MOS6532_NEW(config, "riot", AIM65_CLOCK));
- riot.pa_wr_callback().set(FUNC(aim65_state::aim65_riot_a_w));
- riot.pb_rd_callback().set(FUNC(aim65_state::aim65_riot_b_r));
- riot.irq_wr_callback().set_inputline(m_maincpu, M6502_IRQ_LINE);
+ MCFG_DEVICE_ADD("riot", MOS6532_NEW, AIM65_CLOCK)
+ MCFG_MOS6530n_OUT_PA_CB(WRITE8(*this, aim65_state, aim65_riot_a_w))
+ MCFG_MOS6530n_IN_PB_CB(READ8(*this, aim65_state, aim65_riot_b_r))
+ MCFG_MOS6530n_IRQ_CB(INPUTLINE("maincpu", M6502_IRQ_LINE))
via6522_device &via0(VIA6522(config, "via6522_0", AIM65_CLOCK));
via0.readpb_handler().set(FUNC(aim65_state::aim65_pb_r));
@@ -232,12 +232,12 @@ MACHINE_CONFIG_START(aim65_state::aim65)
pia.writepb_handler().set(FUNC(aim65_state::aim65_pia_b_w));
// Deck 1 can play and record
- CASSETTE(config, m_cassette1);
- m_cassette1->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
// Deck 2 can only record
- CASSETTE(config, m_cassette2);
- m_cassette2->set_default_state(CASSETTE_RECORD | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD( "cassette2" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_RECORD | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
MCFG_GENERIC_SOCKET_ADD("z26", generic_plain_slot, "aim65_z26_cart")
MCFG_GENERIC_EXTENSIONS("z26")
@@ -272,7 +272,7 @@ MACHINE_CONFIG_START(aim65_state::aim65)
RAM(config, RAM_TAG).set_default_size("4K").set_extra_options("1K,2K,3K");
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("aim65_cart");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","aim65_cart")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/airbustr.cpp b/src/mame/drivers/airbustr.cpp
index 7e779e622ce..88294b4bdc4 100644
--- a/src/mame/drivers/airbustr.cpp
+++ b/src/mame/drivers/airbustr.cpp
@@ -562,38 +562,38 @@ void airbustr_state::machine_reset()
/* Machine Driver */
-void airbustr_state::airbustr(machine_config &config)
-{
+MACHINE_CONFIG_START(airbustr_state::airbustr)
+
/* basic machine hardware */
- Z80(config, m_master, XTAL(12'000'000)/2); /* verified on pcb */
- m_master->set_addrmap(AS_PROGRAM, &airbustr_state::master_map);
- m_master->set_addrmap(AS_IO, &airbustr_state::master_io_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(airbustr_state::airbustr_scanline), "screen", 0, 1);
-
- Z80(config, m_slave, XTAL(12'000'000)/2); /* verified on pcb */
- m_slave->set_addrmap(AS_PROGRAM, &airbustr_state::slave_map);
- m_slave->set_addrmap(AS_IO, &airbustr_state::slave_io_map);
- m_slave->set_vblank_int("screen", FUNC(airbustr_state::slave_interrupt)); /* nmi signal from master cpu */
-
- Z80(config, m_audiocpu, XTAL(12'000'000)/2); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &airbustr_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &airbustr_state::sound_io_map);
- m_audiocpu->set_vblank_int("screen", FUNC(airbustr_state::irq0_line_hold)); // nmi are caused by sub cpu writing a sound command
-
- config.m_minimum_quantum = attotime::from_hz(6000); // Palette RAM is filled by sub cpu with data supplied by main cpu
+ MCFG_DEVICE_ADD("master", Z80, XTAL(12'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(master_map)
+ MCFG_DEVICE_IO_MAP(master_io_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", airbustr_state, airbustr_scanline, "screen", 0, 1)
+
+ MCFG_DEVICE_ADD("slave", Z80, XTAL(12'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(slave_map)
+ MCFG_DEVICE_IO_MAP(slave_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", airbustr_state, slave_interrupt) /* nmi signal from master cpu */
+
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(12'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", airbustr_state, irq0_line_hold) // nmi are caused by sub cpu writing a sound command
+
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) // Palette RAM is filled by sub cpu with data supplied by main cpu
// Maybe a high value is safer in order to avoid glitches
WATCHDOG_TIMER(config, m_watchdog).set_time(attotime::from_seconds(3)); /* a guess, and certainly wrong */
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(57.4);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(airbustr_state::screen_update));
- m_screen->screen_vblank().set(FUNC(airbustr_state::screen_vblank));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57.4)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(airbustr_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, airbustr_state, screen_vblank))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_airbustr);
PALETTE(config, m_palette).set_format(palette_device::xGRB_555, 768);
@@ -618,8 +618,9 @@ void airbustr_state::airbustr(machine_config &config)
ymsnd.add_route(2, "mono", 0.25);
ymsnd.add_route(3, "mono", 0.50);
- OKIM6295(config, "oki", XTAL(12'000'000)/4, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 0.80); /* verified on pcb */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(12'000'000)/4, okim6295_device::PIN7_LOW) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
void airbustr_state::airbustrb(machine_config &config)
{
diff --git a/src/mame/drivers/airraid.cpp b/src/mame/drivers/airraid.cpp
index 8835909b340..bf405a0441c 100644
--- a/src/mame/drivers/airraid.cpp
+++ b/src/mame/drivers/airraid.cpp
@@ -389,19 +389,19 @@ INPUT_PORTS_END
-void airraid_state::airraid(machine_config &config)
-{
+MACHINE_CONFIG_START(airraid_state::airraid)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &airraid_state::airraid_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(airraid_state::cshooter_scanline), "airraid_vid:screen", 0, 1);
+ MCFG_DEVICE_ADD(m_maincpu, Z80,XTAL(12'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(airraid_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", airraid_state, cshooter_scanline, "airraid_vid:screen", 0, 1)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(14'318'181)/4)); /* verified on pcb */
- audiocpu.set_addrmap(AS_PROGRAM, &airraid_state::airraid_sound_map);
- audiocpu.set_addrmap(AS_OPCODES, &airraid_state::airraid_sound_decrypted_opcodes_map);
- audiocpu.set_irq_acknowledge_callback("seibu_sound", FUNC(seibu_sound_device::im0_vector_cb));
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(14'318'181)/4) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(airraid_sound_map)
+ MCFG_DEVICE_OPCODES_MAP(airraid_sound_decrypted_opcodes_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("seibu_sound", seibu_sound_device, im0_vector_cb)
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 0x100);
@@ -422,14 +422,14 @@ void airraid_state::airraid(machine_config &config)
m_seibu_sound->ym_write_callback().set("ymsnd", FUNC(ym2151_device::write));
SEI80BU(config, "sei80bu", 0).set_device_rom_tag("audiocpu");
-}
+MACHINE_CONFIG_END
-void airraid_state::airraid_crypt(machine_config &config)
-{
+MACHINE_CONFIG_START(airraid_state::airraid_crypt)
airraid(config);
- m_maincpu->set_addrmap(AS_OPCODES, &airraid_state::decrypted_opcodes_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/albazc.cpp b/src/mame/drivers/albazc.cpp
index dc83bed62e7..35f5d547210 100644
--- a/src/mame/drivers/albazc.cpp
+++ b/src/mame/drivers/albazc.cpp
@@ -276,28 +276,28 @@ static GFXDECODE_START( gfx_hanaroku )
GFXDECODE_END
-void albazc_state::hanaroku(machine_config &config)
-{
- Z80(config, m_maincpu, 6000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &albazc_state::hanaroku_map);
- m_maincpu->set_vblank_int("screen", FUNC(albazc_state::irq0_line_hold));
+MACHINE_CONFIG_START(albazc_state::hanaroku)
+
+ MCFG_DEVICE_ADD("maincpu", Z80,6000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(hanaroku_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", albazc_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH );
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0, 48*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(albazc_state::screen_update_hanaroku));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 48*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(albazc_state, screen_update_hanaroku)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_hanaroku);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_hanaroku)
- PALETTE(config, m_palette, FUNC(albazc_state::albazc_palette), 0x200);
+ PALETTE(config, "palette", FUNC(albazc_state::albazc_palette), 0x200);
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -306,7 +306,7 @@ void albazc_state::hanaroku(machine_config &config)
aysnd.port_a_read_callback().set_ioport("DSW1");
aysnd.port_b_read_callback().set_ioport("DSW2");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
ROM_START( hanaroku )
diff --git a/src/mame/drivers/albazg.cpp b/src/mame/drivers/albazg.cpp
index a2c11c23249..52c05ed8d9e 100644
--- a/src/mame/drivers/albazg.cpp
+++ b/src/mame/drivers/albazg.cpp
@@ -359,13 +359,13 @@ void albazg_state::machine_reset()
m_prot_lock = 0;
}
-void albazg_state::yumefuda(machine_config &config)
-{
+MACHINE_CONFIG_START(albazg_state::yumefuda)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/2); /* xtal is 12 Mhz, unknown divider*/
- m_maincpu->set_addrmap(AS_PROGRAM, &albazg_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &albazg_state::port_map);
- m_maincpu->set_vblank_int("screen", FUNC(albazg_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80 , MASTER_CLOCK/2) /* xtal is 12 Mhz, unknown divider*/
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(port_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", albazg_state, irq0_line_hold)
EEPROM_93C46_16BIT(config, "eeprom");
@@ -377,20 +377,20 @@ void albazg_state::yumefuda(machine_config &config)
ppi.in_pc_callback().set(FUNC(albazg_state::mux_r));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(albazg_state::screen_update_yumefuda));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(albazg_state, screen_update_yumefuda)
+ MCFG_SCREEN_PALETTE("palette")
h46505_device &crtc(H46505(config, "crtc", MASTER_CLOCK/16)); /* hand tuned to get ~60 fps */
crtc.set_screen("screen");
crtc.set_show_border_area(false);
crtc.set_char_width(8);
- GFXDECODE(config, m_gfxdecode, "palette", gfx_yumefuda);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_yumefuda)
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x80);
@@ -402,7 +402,7 @@ void albazg_state::yumefuda(machine_config &config)
aysnd.port_b_read_callback().set_ioport("DSW2");
aysnd.port_a_write_callback().set(FUNC(albazg_state::yumefuda_output_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/***************************************************************************************/
diff --git a/src/mame/drivers/aleck64.cpp b/src/mame/drivers/aleck64.cpp
index dfd4cdc1010..6fee3124b73 100644
--- a/src/mame/drivers/aleck64.cpp
+++ b/src/mame/drivers/aleck64.cpp
@@ -933,61 +933,6 @@ static INPUT_PORTS_START( hipai )
PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_COIN1 )
INPUT_PORTS_END
-static INPUT_PORTS_START( hipai2 )
- PORT_INCLUDE( hipai )
-
- PORT_MODIFY("IN0")
- PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_DIPNAME( 0x80000000, 0x80000000, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW1:8")
- PORT_DIPSETTING( 0x80000000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
- PORT_DIPNAME( 0x40000000, 0x40000000, "Backup Settings" ) PORT_DIPLOCATION("SW1:7")
- PORT_DIPSETTING( 0x40000000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
- PORT_DIPNAME( 0x20000000, 0x20000000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:6")
- PORT_DIPSETTING( 0x20000000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
- PORT_DIPNAME( 0x10000000, 0x10000000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:5")
- PORT_DIPSETTING( 0x10000000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
- PORT_DIPNAME( 0x08000000, 0x08000000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:4")
- PORT_DIPSETTING( 0x08000000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
- PORT_DIPNAME( 0x07000000, 0x07000000, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3")
- PORT_DIPSETTING( 0x00000000, DEF_STR( 5C_1C ) )
- PORT_DIPSETTING( 0x01000000, DEF_STR( 4C_1C ) )
- PORT_DIPSETTING( 0x02000000, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x03000000, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x07000000, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x06000000, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x05000000, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x04000000, DEF_STR( 1C_4C ) )
- PORT_DIPNAME( 0x00800000, 0x00800000, DEF_STR( Test ) ) PORT_DIPLOCATION("SW2:8")
- PORT_DIPSETTING( 0x00800000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
- PORT_DIPNAME( 0x00400000, 0x00400000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:7")
- PORT_DIPSETTING( 0x00400000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
- PORT_DIPNAME( 0x00200000, 0x00000000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:6")
- PORT_DIPSETTING( 0x00200000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
- PORT_DIPNAME( 0x00100000, 0x00100000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:5")
- PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00100000, DEF_STR( On ) )
- PORT_DIPNAME( 0x00080000, 0x00080000, "Kuitan" ) PORT_DIPLOCATION("SW2:4")
- PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00080000, DEF_STR( On ) )
- PORT_DIPNAME( 0x00070000, 0x00070000, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2,3")
- PORT_DIPSETTING( 0x00000000, DEF_STR( Hardest ) )
- PORT_DIPSETTING( 0x00010000, DEF_STR( Very_Hard ) )
- PORT_DIPSETTING( 0x00020000, DEF_STR( Hard ) )
- PORT_DIPSETTING( 0x00030000, "Normal+" )
- PORT_DIPSETTING( 0x00040000, DEF_STR( Easy ) )
- PORT_DIPSETTING( 0x00050000, DEF_STR( Very_Easy ) )
- PORT_DIPSETTING( 0x00060000, DEF_STR( Easiest ) )
- PORT_DIPSETTING( 0x00070000, DEF_STR( Normal ) )
-INPUT_PORTS_END
-
static INPUT_PORTS_START( srmvs )
PORT_INCLUDE( hipai )
@@ -1322,25 +1267,6 @@ ROM_START( hipai )
ROM_END
-ROM_START( hipai2 )
- ROM_REGION32_BE( 0x800, "user1", ROMREGION_ERASE00 )
- PIF_BOOTROM
-
- ROM_REGION32_BE( 0x4000000, "user2", 0 )
- ROM_LOAD16_WORD_SWAP( "ua3029-all01.u3", 0x0000000, 0x1000000, CRC(88b83e93) SHA1(279a006436069232383b2065e7416d8ccc76e3ca) )
- ROM_LOAD16_WORD_SWAP( "ua3029-alh01.u4", 0x1000000, 0x1000000, CRC(4f79fa94) SHA1(a6d2d805f96f0ad7294ebf41b13573320154b2a4) )
-
- ROM_REGION32_BE( 0x800000, "user3", 0 )
- ROM_LOAD16_WORD_SWAP( "nus-zsij-0.u1", 0x000000, 0x800000, CRC(2389576f) SHA1(dc22b2eab4d7a02cb918827a62e6c120b3a84e6c) )
-
- ROM_REGION16_BE( 0x80, "normpoint", 0 )
- ROM_LOAD( "normpnt.rom", 0x00, 0x80, CRC(e7f2a005) SHA1(c27b4a364a24daeee6e99fd286753fd6216362b4) )
-
- ROM_REGION16_BE( 0x80, "normslope", 0 )
- ROM_LOAD( "normslp.rom", 0x00, 0x80, CRC(4f2ae525) SHA1(eab43f8cc52c8551d9cff6fced18ef80eaba6f05) )
-ROM_END
-
-
ROM_START( kurufev )
ROM_REGION32_BE( 0x800, "user1", ROMREGION_ERASE00 )
PIF_BOOTROM
@@ -1417,4 +1343,3 @@ GAME( 2003, twrshaft, aleck64, aleck64, twrshaft, aleck64_state, init_aleck64, R
GAME( 2003, hipai, aleck64, aleck64, hipai, aleck64_state, init_aleck64, ROT0, "Aruze / Seta", "Hi Pai Paradise", MACHINE_IMPERFECT_GRAPHICS )
GAME( 2003, doncdoon, aleck64, aleck64, doncdoon, aleck64_state, init_aleck64, ROT0, "Aruze", "Hanabi de Doon! - Don-chan Puzzle", MACHINE_IMPERFECT_GRAPHICS )
GAME( 2003, kurufev, aleck64, aleck64, kurufev, aleck64_state, init_aleck64, ROT0, "Aruze / Takumi", "Kurukuru Fever", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2004, hipai2, aleck64, aleck64, hipai2, aleck64_state, init_aleck64, ROT0, "Aruze / Seta / Paon", "Hi Pai Paradise 2", MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/aleisttl.cpp b/src/mame/drivers/aleisttl.cpp
index 55792d80cf5..2ee923f5753 100644
--- a/src/mame/drivers/aleisttl.cpp
+++ b/src/mame/drivers/aleisttl.cpp
@@ -100,21 +100,20 @@ void sburners_state::video_start()
{
}
-void sburners_state::sburners(machine_config &config)
-{
+MACHINE_CONFIG_START(sburners_state::sburners)
+
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_sburners);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(sburners)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL);
- m_video->set_vert_params(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.30);
-}
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/alesis.cpp b/src/mame/drivers/alesis.cpp
index f0784a972e9..33da94d7999 100644
--- a/src/mame/drivers/alesis.cpp
+++ b/src/mame/drivers/alesis.cpp
@@ -414,8 +414,7 @@ HD44780_PIXEL_UPDATE(alesis_state::sr16_pixel_update)
bitmap.pix16(line*9 + y, pos*6 + x) = state;
}
-void alesis_state::hr16(machine_config &config)
-{
+MACHINE_CONFIG_START(alesis_state::hr16)
/* basic machine hardware */
I8031(config, m_maincpu, 12_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &alesis_state::hr16_mem);
@@ -425,31 +424,30 @@ void alesis_state::hr16(machine_config &config)
m_maincpu->port_out_cb<3>().set(FUNC(alesis_state::p3_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(6*16, 9*2);
- screen.set_visarea_full();
- screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(6*16, 9*2)
+ MCFG_SCREEN_VISIBLE_AREA(0, 6*16-1, 0, 9*2-1)
+ MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(alesis_state::alesis_palette), 2);
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED);
- m_cassette->set_interface("hr16_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED)
+ MCFG_CASSETTE_INTERFACE("hr16_cass")
- HD44780(config, m_lcdc, 0);
- m_lcdc->set_lcd_size(2, 16);
+ MCFG_HD44780_ADD("hd44780")
+ MCFG_HD44780_LCD_SIZE(2, 16)
/* sound hardware */
ALESIS_DM3AG(config, "dm3ag", 12_MHz_XTAL/2);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void alesis_state::sr16(machine_config &config)
-{
+MACHINE_CONFIG_START(alesis_state::sr16)
hr16(config);
/* basic machine hardware */
@@ -458,15 +456,15 @@ void alesis_state::sr16(machine_config &config)
m_maincpu->port_in_cb<1>().set_constant(0);
/* video hardware */
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_size(6*8, 9*2);
- screen.set_visarea_full();
-
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(6*8, 9*2)
+ MCFG_SCREEN_VISIBLE_AREA(0, 6*8-1, 0, 9*2-1)
config.set_default_layout(layout_sr16);
- m_lcdc->set_lcd_size(2, 8);
- m_lcdc->set_pixel_update_cb(FUNC(alesis_state::sr16_pixel_update), this);
-}
+ MCFG_DEVICE_MODIFY("hd44780")
+ MCFG_HD44780_LCD_SIZE(2, 8)
+ MCFG_HD44780_PIXEL_UPDATE_CB(alesis_state, sr16_pixel_update)
+MACHINE_CONFIG_END
void alesis_state::mmt8(machine_config &config)
{
diff --git a/src/mame/drivers/alesis_qs.cpp b/src/mame/drivers/alesis_qs.cpp
index 09c55100e4e..0ad9d363649 100644
--- a/src/mame/drivers/alesis_qs.cpp
+++ b/src/mame/drivers/alesis_qs.cpp
@@ -51,11 +51,10 @@ void qs_state::qs7_prog_map(address_map &map)
map(0x00000, 0x3ffff).rom();
}
-void qs_state::qs7(machine_config &config)
-{
+MACHINE_CONFIG_START(qs_state::qs7)
/* basic machine hardware */
- H83048(config, m_maincpu, XTAL(10'000'000)); /* FIX-ME! Actual CPU is H8/510 and XTAL value is a guess */
- m_maincpu->set_addrmap(AS_PROGRAM, &qs_state::qs7_prog_map);
+ MCFG_DEVICE_ADD("maincpu", H83048, XTAL(10'000'000)) /* FIX-ME! Actual CPU is H8/510 and XTAL value is a guess */
+ MCFG_DEVICE_PROGRAM_MAP(qs7_prog_map)
//MCFG_ALESIS_KEYSCAN_ASIC_ADD("keyscan")
@@ -77,7 +76,7 @@ void qs_state::qs7(machine_config &config)
//MCFG_PCMCIA_ADD("pcmcia")
//MIDI
//RS232
-}
+MACHINE_CONFIG_END
ROM_START( alesqs7 )
ROM_REGION( 0x80000, "maincpu", 0 )
diff --git a/src/mame/drivers/alg.cpp b/src/mame/drivers/alg.cpp
index e341d5dc1af..48939844779 100644
--- a/src/mame/drivers/alg.cpp
+++ b/src/mame/drivers/alg.cpp
@@ -305,11 +305,11 @@ INPUT_PORTS_END
*
*************************************/
-void alg_state::alg_r1(machine_config &config)
-{
+MACHINE_CONFIG_START(alg_state::alg_r1)
+
/* basic machine hardware */
- M68000(config, m_maincpu, amiga_state::CLK_7M_NTSC);
- m_maincpu->set_addrmap(AS_PROGRAM, &alg_state::main_map_r1);
+ MCFG_DEVICE_ADD("maincpu", M68000, amiga_state::CLK_7M_NTSC)
+ MCFG_DEVICE_PROGRAM_MAP(main_map_r1)
ADDRESS_MAP_BANK(config, "overlay").set_map(&alg_state::overlay_512kb_map).set_options(ENDIANNESS_BIG, 16, 22, 0x200000);
@@ -318,12 +318,11 @@ void alg_state::alg_r1(machine_config &config)
/* video hardware */
ntsc_video(config);
- SONY_LDP1450(config, m_laserdisc, 9600);
- m_laserdisc->set_screen("screen");
- m_laserdisc->set_overlay(512*2, 262, FUNC(amiga_state::screen_update_amiga));
- m_laserdisc->set_overlay_clip((129-8)*2, (449+8-1)*2, 44-8, 244+8-1);
- m_laserdisc->set_overlay_palette(m_palette);
-
+ MCFG_LASERDISC_LDP1450_ADD("laserdisc",9600)
+ MCFG_LASERDISC_SCREEN("screen")
+ MCFG_LASERDISC_OVERLAY_DRIVER(512*2, 262, amiga_state, screen_update_amiga)
+ MCFG_LASERDISC_OVERLAY_CLIP((129-8)*2, (449+8-1)*2, 44-8, 244+8-1)
+ MCFG_LASERDISC_OVERLAY_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(alg_state::amiga_palette), 4097);
@@ -333,25 +332,25 @@ void alg_state::alg_r1(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- PAULA_8364(config, m_paula, amiga_state::CLK_C1_NTSC);
- m_paula->add_route(0, "lspeaker", 0.25);
- m_paula->add_route(1, "rspeaker", 0.25);
- m_paula->add_route(2, "rspeaker", 0.25);
- m_paula->add_route(3, "lspeaker", 0.25);
- m_paula->mem_read_cb().set(FUNC(amiga_state::chip_ram_r));
- m_paula->int_cb().set(FUNC(amiga_state::paula_int_w));
+ paula_8364_device &paula(PAULA_8364(config, "amiga", amiga_state::CLK_C1_NTSC));
+ paula.add_route(0, "lspeaker", 0.25);
+ paula.add_route(1, "rspeaker", 0.25);
+ paula.add_route(2, "rspeaker", 0.25);
+ paula.add_route(3, "lspeaker", 0.25);
+ paula.mem_read_cb().set(FUNC(amiga_state::chip_ram_r));
+ paula.int_cb().set(FUNC(amiga_state::paula_int_w));
- m_laserdisc->add_route(0, "lspeaker", 1.0);
- m_laserdisc->add_route(1, "rspeaker", 1.0);
+ MCFG_DEVICE_MODIFY("laserdisc")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
/* cia */
- MOS8520(config, m_cia_0, amiga_state::CLK_E_NTSC);
- m_cia_0->irq_wr_callback().set(FUNC(amiga_state::cia_0_irq));
- m_cia_0->pa_rd_callback().set_ioport("FIRE");
- m_cia_0->pa_wr_callback().set(FUNC(amiga_state::cia_0_port_a_write));
-
- MOS8520(config, m_cia_1, amiga_state::CLK_E_NTSC);
- m_cia_1->irq_wr_callback().set(FUNC(amiga_state::cia_1_irq));
+ MCFG_DEVICE_ADD("cia_0", MOS8520, amiga_state::CLK_E_NTSC)
+ MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(*this, amiga_state, cia_0_irq))
+ MCFG_MOS6526_PA_INPUT_CALLBACK(IOPORT("FIRE"))
+ MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(*this, amiga_state, cia_0_port_a_write))
+ MCFG_DEVICE_ADD("cia_1", MOS8520, amiga_state::CLK_E_NTSC)
+ MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(*this, amiga_state, cia_1_irq))
AMIGA_FDC(config, m_fdc, amiga_state::CLK_7M_NTSC);
m_fdc->index_callback().set("cia_1", FUNC(mos8520_device::flag_w));
@@ -359,31 +358,34 @@ void alg_state::alg_r1(machine_config &config)
m_fdc->write_dma_callback().set(FUNC(amiga_state::chip_ram_w));
m_fdc->dskblk_callback().set(FUNC(amiga_state::fdc_dskblk_w));
m_fdc->dsksyn_callback().set(FUNC(amiga_state::fdc_dsksyn_w));
-}
+MACHINE_CONFIG_END
-void alg_state::alg_r2(machine_config &config)
-{
+MACHINE_CONFIG_START(alg_state::alg_r2)
alg_r1(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &alg_state::main_map_r2);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(main_map_r2)
+MACHINE_CONFIG_END
-void alg_state::picmatic(machine_config &config)
-{
+MACHINE_CONFIG_START(alg_state::picmatic)
alg_r1(config);
/* adjust for PAL specs */
- m_maincpu->set_clock(amiga_state::CLK_7M_PAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &alg_state::main_map_picmatic);
+ MCFG_DEVICE_REPLACE("maincpu", M68000, amiga_state::CLK_7M_PAL)
+ MCFG_DEVICE_PROGRAM_MAP(main_map_picmatic)
- config.device_remove("screen");
+ MCFG_DEVICE_REMOVE("screen")
pal_video(config);
- m_paula->set_clock(amiga_state::CLK_C1_PAL);
- m_cia_0->set_clock(amiga_state::CLK_E_PAL);
- m_cia_1->set_clock(amiga_state::CLK_E_PAL);
- m_fdc->set_clock(amiga_state::CLK_7M_PAL);
-}
+ MCFG_DEVICE_MODIFY("amiga")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_PAL)
+ MCFG_DEVICE_MODIFY("cia_0")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_PAL)
+ MCFG_DEVICE_MODIFY("cia_1")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_PAL)
+ MCFG_DEVICE_MODIFY("fdc")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_PAL)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/alien.cpp b/src/mame/drivers/alien.cpp
index f5d3d69e1dc..fdb75504b26 100644
--- a/src/mame/drivers/alien.cpp
+++ b/src/mame/drivers/alien.cpp
@@ -136,27 +136,27 @@ void alien_state::machine_reset()
//m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
}
-void alien_state::alien(machine_config &config)
-{
+MACHINE_CONFIG_START(alien_state::alien)
/* basic machine hardware */
- SH4LE(config, m_maincpu, MASTER_CLOCK); /* 200MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &alien_state::alien_map);
- m_maincpu->set_force_no_drc(true);
+ MCFG_DEVICE_ADD("maincpu", SH4LE, MASTER_CLOCK) /* 200MHz */
+ MCFG_DEVICE_PROGRAM_MAP(alien_map)
+ MCFG_CPU_FORCE_NO_DRC()
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_screen_update(FUNC(alien_state::screen_update));
- screen.set_size((32)*8, (32)*8);
- screen.set_visarea_full();
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_UPDATE_DRIVER(alien_state, screen_update)
+ MCFG_SCREEN_SIZE((32)*8, (32)*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- PALETTE(config, "palette").set_entries(0x1000);
+ MCFG_PALETTE_ADD("palette", 0x1000)
/* sound hardware */
SPEAKER(config, "mono").front_center();
-}
+
+MACHINE_CONFIG_END
void alien_state::init_dkbanans()
{
diff --git a/src/mame/drivers/alinvade.cpp b/src/mame/drivers/alinvade.cpp
index a9138a1e94c..e77ae1747d4 100644
--- a/src/mame/drivers/alinvade.cpp
+++ b/src/mame/drivers/alinvade.cpp
@@ -207,25 +207,26 @@ WRITE_LINE_MEMBER(alinvade_state::vblank_irq)
m_maincpu->set_input_line(0,HOLD_LINE);
}
-void alinvade_state::alinvade(machine_config &config)
-{
+MACHINE_CONFIG_START(alinvade_state::alinvade)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 2000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &alinvade_state::alinvade_map);
+ MCFG_DEVICE_ADD("maincpu", M6502,2000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(alinvade_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(128, 128);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(alinvade_state::screen_update));
- screen.screen_vblank().set(FUNC(alinvade_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(128, 128)
+ MCFG_SCREEN_VISIBLE_AREA(0, 128-1, 0, 128-1)
+ MCFG_SCREEN_UPDATE_DRIVER(alinvade_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, alinvade_state, vblank_irq))
/* sound hardware */
SPEAKER(config, "mono").front_center();
- DISCRETE(config, m_discrete, alinvade_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, alinvade_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/allied.cpp b/src/mame/drivers/allied.cpp
index e5b18995a24..0729d7bc35a 100644
--- a/src/mame/drivers/allied.cpp
+++ b/src/mame/drivers/allied.cpp
@@ -622,11 +622,10 @@ void allied_state::machine_reset()
m_leds[0] = 1;
}
-void allied_state::allied(machine_config &config)
-{
+MACHINE_CONFIG_START(allied_state::allied)
/* basic machine hardware */
- M6504(config, m_maincpu, 3572549/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &allied_state::allied_map);
+ MCFG_DEVICE_ADD("maincpu", M6504, 3572549/4)
+ MCFG_DEVICE_PROGRAM_MAP(allied_map)
/* Video */
config.set_default_layout(layout_allied);
@@ -685,23 +684,23 @@ void allied_state::allied(machine_config &config)
m_ic8->irqa_handler().set_inputline("maincpu", M6504_IRQ_LINE);
m_ic8->irqb_handler().set_inputline("maincpu", M6504_IRQ_LINE);
- mos6530_device &ic3(MOS6530(config, "ic3", 3572549/4)); // unknown where the ram and i/o is located
- ic3.out_pb_callback().set(FUNC(allied_state::ic3_b_w));
+ MCFG_DEVICE_ADD("ic3", MOS6530, 3572549/4) // unknown where the ram and i/o is located
+ MCFG_MOS6530_OUT_PB_CB(WRITE8(*this, allied_state, ic3_b_w))
- MOS6530(config, m_ic5, 3572549/4);
- m_ic5->in_pa_callback().set(FUNC(allied_state::ic5_a_r));
- //m_ic5->out_pa_callback().set(FUNC(allied_state::ic5_a_w));
- //m_ic5->in_pb_callback().set(FUNC(allied_state::ic5_b_r));
- m_ic5->out_pb_callback().set(FUNC(allied_state::ic5_b_w));
+ MCFG_DEVICE_ADD("ic5", MOS6530, 3572549/4)
+ MCFG_MOS6530_IN_PA_CB(READ8(*this, allied_state, ic5_a_r))
+ //MCFG_MOS6530_OUT_PA_CB(WRITE8(*this, allied_state, ic5_a_w))
+ //MCFG_MOS6530_IN_PB_CB(READ8(*this, allied_state, ic5_b_r))
+ MCFG_MOS6530_OUT_PB_CB(WRITE8(*this, allied_state, ic5_b_w))
- MOS6530(config, m_ic6, 3572549/4);
- m_ic6->in_pa_callback().set(FUNC(allied_state::ic6_a_r));
- //m_ic6->out_pa_callback().set(FUNC(allied_state::ic6_a_w));
- m_ic6->in_pb_callback().set(FUNC(allied_state::ic6_b_r));
- m_ic6->out_pb_callback().set(FUNC(allied_state::ic6_b_w));
+ MCFG_DEVICE_ADD("ic6", MOS6530, 3572549/4)
+ MCFG_MOS6530_IN_PA_CB(READ8(*this, allied_state, ic6_a_r))
+ //MCFG_MOS6530_OUT_PA_CB(WRITE8(*this, allied_state, ic6_a_w))
+ MCFG_MOS6530_IN_PB_CB(READ8(*this, allied_state, ic6_b_r))
+ MCFG_MOS6530_OUT_PB_CB(WRITE8(*this, allied_state, ic6_b_w))
- TIMER(config, "timer_a").configure_periodic(FUNC(allied_state::timer_a), attotime::from_hz(50));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_a", allied_state, timer_a, attotime::from_hz(50))
+MACHINE_CONFIG_END
ROM_START( allied )
diff --git a/src/mame/drivers/alpha68k.cpp b/src/mame/drivers/alpha68k.cpp
index 2f33da06c14..ae21c86fb8f 100644
--- a/src/mame/drivers/alpha68k.cpp
+++ b/src/mame/drivers/alpha68k.cpp
@@ -1947,6 +1947,7 @@ void alpha68k_state::sstingry(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.75); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
@@ -1997,6 +1998,7 @@ void alpha68k_state::kyros(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.75); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
@@ -2132,6 +2134,7 @@ void alpha68k_state::alpha68k_II(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.75); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
@@ -2198,6 +2201,7 @@ void alpha68k_state::alpha68k_V(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.75); // ALPHA-VOICE88 custom DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/alphasma.cpp b/src/mame/drivers/alphasma.cpp
index afb54668e78..3487869370d 100644
--- a/src/mame/drivers/alphasma.cpp
+++ b/src/mame/drivers/alphasma.cpp
@@ -431,40 +431,39 @@ void alphasmart_state::machine_reset()
m_port_d = 0;
}
-void alphasmart_state::alphasmart(machine_config &config)
-{
+MACHINE_CONFIG_START(alphasmart_state::alphasmart)
/* basic machine hardware */
MC68HC11(config, m_maincpu, XTAL(8'000'000)/2); // MC68HC11D0, XTAL is 8 Mhz, unknown divider
m_maincpu->set_addrmap(AS_PROGRAM, &alphasmart_state::alphasmart_mem);
m_maincpu->set_addrmap(AS_IO, &alphasmart_state::alphasmart_io);
m_maincpu->set_config(0, 192, 0x00);
- KS0066_F05(config, m_lcdc0, 0);
- m_lcdc0->set_lcd_size(2, 40);
- KS0066_F05(config, m_lcdc1, 0);
- m_lcdc1->set_lcd_size(2, 40);
+ MCFG_KS0066_F05_ADD("ks0066_0")
+ MCFG_HD44780_LCD_SIZE(2, 40)
+ MCFG_KS0066_F05_ADD("ks0066_1")
+ MCFG_HD44780_LCD_SIZE(2, 40)
RAM(config, RAM_TAG).set_default_size("128K");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(alphasmart_state::screen_update));
- screen.set_size(6*40, 9*4);
- screen.set_visarea_full();
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(alphasmart_state, screen_update)
+ MCFG_SCREEN_SIZE(6*40, 9*4)
+ MCFG_SCREEN_VISIBLE_AREA(0, (6*40)-1, 0, (9*4)-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(alphasmart_state::alphasmart_palette), 2);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void asma2k_state::asma2k(machine_config &config)
-{
+MACHINE_CONFIG_START(asma2k_state::asma2k)
alphasmart(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &asma2k_state::asma2k_mem);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(asma2k_mem)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( asmapro )
diff --git a/src/mame/drivers/alphatpx.cpp b/src/mame/drivers/alphatpx.cpp
index 060a89b1d53..8fc6ee5dee5 100644
--- a/src/mame/drivers/alphatpx.cpp
+++ b/src/mame/drivers/alphatpx.cpp
@@ -1204,13 +1204,12 @@ void alphatp_12_state::machine_reset()
m_curfloppy = nullptr;
}
-void alphatp_12_state::alphatp2(machine_config &config)
-{
- i8085a_cpu_device &maincpu(I8085A(config, "maincpu", 6_MHz_XTAL));
- maincpu.set_addrmap(AS_PROGRAM, &alphatp_12_state::alphatp2_mem);
- maincpu.set_addrmap(AS_IO, &alphatp_12_state::alphatp2_io);
+MACHINE_CONFIG_START(alphatp_12_state::alphatp2)
+ MCFG_DEVICE_ADD("maincpu", I8085A, 6_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(alphatp2_mem)
+ MCFG_DEVICE_IO_MAP(alphatp2_io)
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
I8041(config, m_kbdmcu, 12.8544_MHz_XTAL / 2);
m_kbdmcu->t0_in_cb().set(FUNC(alphatp_12_state::kbd_matrix_r));
@@ -1221,9 +1220,9 @@ void alphatp_12_state::alphatp2(machine_config &config)
ADDRESS_MAP_BANK(config, "bankdev").set_map(&alphatp_12_state::alphatp2_map).set_options(ENDIANNESS_LITTLE, 8, 18, 0x10000);
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_raw(12.8544_MHz_XTAL, 824, 0, 640, 312, 0, 288);
- screen.set_screen_update(FUNC(alphatp_12_state::screen_update));
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_RAW_PARAMS(12.8544_MHz_XTAL, 824, 0, 640, 312, 0, 288)
+ MCFG_SCREEN_UPDATE_DRIVER(alphatp_12_state, screen_update)
PALETTE(config, m_palette, palette_device::MONOCHROME);
@@ -1233,31 +1232,31 @@ void alphatp_12_state::alphatp2(machine_config &config)
m_crtc->vsyn_callback().set_inputline("maincpu", I8085_RST65_LINE).exor(1);
m_crtc->set_screen("screen");
- GFXDECODE(config, "gfxdecode", m_palette, gfx_alphatp3);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_alphatp3)
// sound hardware
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beep, 1060).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD( "beeper", BEEP, 1060 )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
- I8251(config, "uart", 0);
+ MCFG_DEVICE_ADD("uart", I8251, 0)
// 4.9152_MHz_XTAL serial clock
FD1791(config, m_fdc, 4_MHz_XTAL / 4);
m_fdc->intrq_wr_callback().set(FUNC(alphatp_12_state::fdcirq_w));
m_fdc->drq_wr_callback().set(FUNC(alphatp_12_state::fdcdrq_w));
m_fdc->hld_wr_callback().set(FUNC(alphatp_12_state::fdchld_w));
- FLOPPY_CONNECTOR(config, "fdc:0", alphatp2_floppies, "525ssdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", alphatp2_floppies, "525ssdd", floppy_image_device::default_floppy_formats);
-}
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", alphatp2_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", alphatp2_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
+MACHINE_CONFIG_END
-void alphatp_12_state::alphatp2u(machine_config &config)
-{
+MACHINE_CONFIG_START(alphatp_12_state::alphatp2u)
alphatp2(config);
- config.device_remove("fdc:0");
- config.device_remove("fdc:1");
- FLOPPY_CONNECTOR(config, "fdc:0", alphatp2su_floppies, "525dd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", alphatp2su_floppies, "525dd", floppy_image_device::default_floppy_formats);
-}
+ MCFG_DEVICE_REMOVE("fdc:0")
+ MCFG_DEVICE_REMOVE("fdc:1")
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", alphatp2su_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", alphatp2su_floppies, "525dd", floppy_image_device::default_floppy_formats)
+MACHINE_CONFIG_END
//**************************************************************************
@@ -1282,13 +1281,12 @@ void alphatp_34_state::machine_reset()
m_curfloppy = nullptr;
m_88_da = m_85_da = m_88_started = false;
}
-void alphatp_34_state::alphatp3(machine_config &config)
-{
- i8085a_cpu_device &maincpu(I8085A(config, "maincpu", 6_MHz_XTAL));
- maincpu.set_addrmap(AS_PROGRAM, &alphatp_34_state::alphatp3_mem);
- maincpu.set_addrmap(AS_IO, &alphatp_34_state::alphatp3_io);
+MACHINE_CONFIG_START(alphatp_34_state::alphatp3)
+ MCFG_DEVICE_ADD("maincpu", I8085A, 6_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(alphatp3_mem)
+ MCFG_DEVICE_IO_MAP(alphatp3_io)
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
I8041(config, m_kbdmcu, 12.8544_MHz_XTAL /2);
m_kbdmcu->t0_in_cb().set(FUNC(alphatp_34_state::kbd_matrix_r));
@@ -1299,9 +1297,9 @@ void alphatp_34_state::alphatp3(machine_config &config)
ADDRESS_MAP_BANK(config, "bankdev").set_map(&alphatp_34_state::alphatp3_map).set_options(ENDIANNESS_LITTLE, 8, 18, 0x10000);
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_raw(12.8544_MHz_XTAL, 824, 0, 640, 312, 0, 288);
- screen.set_screen_update(FUNC(alphatp_34_state::screen_update));
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_RAW_PARAMS(12.8544_MHz_XTAL, 824, 0, 640, 312, 0, 288)
+ MCFG_SCREEN_UPDATE_DRIVER(alphatp_34_state, screen_update)
PALETTE(config, m_palette, palette_device::MONOCHROME);
@@ -1310,22 +1308,23 @@ void alphatp_34_state::alphatp3(machine_config &config)
m_crtc->vsyn_callback().set_inputline("maincpu", I8085_RST65_LINE).exor(1);
m_crtc->set_screen("screen");
- GFXDECODE(config, "gfxdecode", m_palette, gfx_alphatp3);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_alphatp3)
// sound hardware
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beep, 1060).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD( "beeper", BEEP, 1060 )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
- I8251(config, "uart", 0);
+ MCFG_DEVICE_ADD("uart", I8251, 0)
// 4.9152_MHz_XTAL serial clock
FD1791(config, m_fdc, 4_MHz_XTAL / 4);
m_fdc->intrq_wr_callback().set(FUNC(alphatp_34_state::fdcirq_w));
m_fdc->drq_wr_callback().set(FUNC(alphatp_34_state::fdcdrq_w));
m_fdc->hld_wr_callback().set(FUNC(alphatp_34_state::fdchld_w));
- FLOPPY_CONNECTOR(config, "fdc:0", alphatp3_floppies, "525qd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", alphatp3_floppies, "525qd", floppy_image_device::default_floppy_formats);
-}
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", alphatp3_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", alphatp3_floppies, "525qd", floppy_image_device::default_floppy_formats)
+MACHINE_CONFIG_END
void alphatp_34_state::alphatp30(machine_config &config)
{
diff --git a/src/mame/drivers/alphatro.cpp b/src/mame/drivers/alphatro.cpp
index 86885ce5761..d173a2928c9 100644
--- a/src/mame/drivers/alphatro.cpp
+++ b/src/mame/drivers/alphatro.cpp
@@ -731,9 +731,9 @@ static void alphatro_floppies(device_slot_interface &device)
MACHINE_CONFIG_START(alphatro_state::alphatro)
/* basic machine hardware */
- Z80(config, m_maincpu, 16_MHz_XTAL / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &alphatro_state::alphatro_map);
- m_maincpu->set_addrmap(AS_IO, &alphatro_state::alphatro_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, 16_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(alphatro_map)
+ MCFG_DEVICE_IO_MAP(alphatro_io)
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -755,17 +755,17 @@ MACHINE_CONFIG_START(alphatro_state::alphatro)
UPD765A(config, m_fdc, 16_MHz_XTAL / 2, true, true); // clocked through SED-9420C
m_fdc->intrq_wr_callback().set(FUNC(alphatro_state::fdc_irq_w));
m_fdc->drq_wr_callback().set(m_dmac, FUNC(i8257_device::dreq2_w));
- FLOPPY_CONNECTOR(config, "fdc:0", alphatro_floppies, "525dd", alphatro_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", alphatro_floppies, "525dd", alphatro_state::floppy_formats);
- SOFTWARE_LIST(config, "flop_list").set_original("alphatro_flop");
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", alphatro_floppies, "525dd", alphatro_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", alphatro_floppies, "525dd", alphatro_state::floppy_formats)
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "alphatro_flop")
I8257(config, m_dmac, 16_MHz_XTAL / 4);
m_dmac->out_hrq_cb().set(FUNC(alphatro_state::hrq_w));
m_dmac->in_memr_cb().set(FUNC(alphatro_state::ram0000_r));
m_dmac->out_memw_cb().set(FUNC(alphatro_state::ram0000_w));
- m_dmac->in_ior_cb<2>().set(m_fdc, FUNC(upd765a_device::dma_r));
- m_dmac->out_iow_cb<2>().set(m_fdc, FUNC(upd765a_device::dma_w));
- m_dmac->out_tc_cb().set(m_fdc, FUNC(upd765a_device::tc_line_w));
+ m_dmac->in_ior_cb<2>().set("fdc", FUNC(upd765a_device::mdma_r));
+ m_dmac->out_iow_cb<2>().set("fdc", FUNC(upd765a_device::mdma_w));
+ m_dmac->out_tc_cb().set("fdc", FUNC(upd765a_device::tc_line_w));
HD6845(config, m_crtc, 16_MHz_XTAL / 8);
m_crtc->set_screen(m_screen);
@@ -780,13 +780,13 @@ MACHINE_CONFIG_START(alphatro_state::alphatro)
usart_clock.signal_handler().set(m_usart, FUNC(i8251_device::write_txc));
usart_clock.signal_handler().append(m_usart, FUNC(i8251_device::write_rxc));
- CASSETTE(config, m_cass);
- m_cass->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
- m_cass->set_interface("alphatro_cass");
- SOFTWARE_LIST(config, "cass_list").set_original("alphatro_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("alphatro_cass")
+ MCFG_SOFTWARE_LIST_ADD("cass_list","alphatro_cass")
- TIMER(config, "timer_c").configure_periodic(FUNC(alphatro_state::timer_c), attotime::from_hz(4800));
- TIMER(config, "timer_p").configure_periodic(FUNC(alphatro_state::timer_p), attotime::from_hz(40000));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_c", alphatro_state, timer_c, attotime::from_hz(4800))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_p", alphatro_state, timer_p, attotime::from_hz(40000))
RAM(config, "ram").set_default_size("64K");
@@ -794,7 +794,7 @@ MACHINE_CONFIG_START(alphatro_state::alphatro)
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "alphatro_cart")
MCFG_GENERIC_EXTENSIONS("bin")
MCFG_GENERIC_LOAD(alphatro_state, cart_load)
- SOFTWARE_LIST(config, "cart_list").set_original("alphatro_cart");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","alphatro_cart")
/* 0000 banking */
ADDRESS_MAP_BANK(config, "lowbank").set_map(&alphatro_state::rombank_map).set_options(ENDIANNESS_BIG, 8, 32, 0x6000);
diff --git a/src/mame/drivers/altair.cpp b/src/mame/drivers/altair.cpp
index 76b451ee24f..2c7d771b7c6 100644
--- a/src/mame/drivers/altair.cpp
+++ b/src/mame/drivers/altair.cpp
@@ -119,7 +119,7 @@ void altair_state::altair(machine_config &config)
uart_clock.signal_handler().append("acia", FUNC(acia6850_device::write_rxc));
/* quickload */
- QUICKLOAD(config, "quickload").set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(altair_state, altair), this), "bin");
+ QUICKLOAD(config, "quickload", 0).set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(altair_state, altair), this), "bin", 0);
}
/* ROM definition */
diff --git a/src/mame/drivers/alto1.cpp b/src/mame/drivers/alto1.cpp
index d59d46922e4..3031a9a937e 100644
--- a/src/mame/drivers/alto1.cpp
+++ b/src/mame/drivers/alto1.cpp
@@ -30,9 +30,8 @@ private:
static INPUT_PORTS_START( alto1 )
INPUT_PORTS_END
-void alto1_state::alto1(machine_config &config)
-{
-}
+MACHINE_CONFIG_START(alto1_state::alto1)
+MACHINE_CONFIG_END
ROM_START( alto1 )
ROM_REGION( 0x4000, "roms", 0 )
diff --git a/src/mame/drivers/alto2.cpp b/src/mame/drivers/alto2.cpp
index 480666fc0d9..21681a5131a 100644
--- a/src/mame/drivers/alto2.cpp
+++ b/src/mame/drivers/alto2.cpp
@@ -280,15 +280,14 @@ void alto2_state::alto2_iomem_map(address_map &map)
map(0, 2*ALTO2_RAM_SIZE-1).m(m_maincpu, FUNC(alto2_cpu_device::iomem_map));
}
-void alto2_state::alto2(machine_config &config)
-{
+MACHINE_CONFIG_START(alto2_state::alto2)
// Basic machine hardware
// SYSCLK is Display Control part A51 (tagged 29.4MHz) divided by 5(?)
// 5.8MHz according to de.wikipedia.org/wiki/Xerox_Alto
- ALTO2(config, m_maincpu, XTAL(29'491'200)/5);
- m_maincpu->set_addrmap(AS_PROGRAM, &alto2_state::alto2_ucode_map);
- m_maincpu->set_addrmap(AS_DATA, &alto2_state::alto2_const_map);
- m_maincpu->set_addrmap(AS_IO, &alto2_state::alto2_iomem_map);
+ MCFG_DEVICE_ADD("maincpu", ALTO2, XTAL(29'491'200)/5)
+ MCFG_DEVICE_PROGRAM_MAP(alto2_ucode_map)
+ MCFG_DEVICE_DATA_MAP(alto2_const_map)
+ MCFG_DEVICE_IO_MAP(alto2_iomem_map)
// Video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -303,11 +302,11 @@ void alto2_state::alto2(machine_config &config)
// Sound hardware
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
- DIABLO_HD(config, DIABLO_HD_0, 3333333);
- DIABLO_HD(config, DIABLO_HD_1, 3333333);
- }
+ MCFG_DIABLO_DRIVES_ADD()
+MACHINE_CONFIG_END
/* Driver Init */
diff --git a/src/mame/drivers/altos5.cpp b/src/mame/drivers/altos5.cpp
index e47462843a8..6d2547a8f20 100644
--- a/src/mame/drivers/altos5.cpp
+++ b/src/mame/drivers/altos5.cpp
@@ -470,11 +470,13 @@ MACHINE_CONFIG_START(altos5_state::altos5)
FD1797(config, m_fdc, 8_MHz_XTAL / 8);
m_fdc->intrq_wr_callback().set(FUNC(altos5_state::fdc_intrq_w));
m_fdc->drq_wr_callback().set(m_dma, FUNC(z80dma_device::rdy_w));
- FLOPPY_CONNECTOR(config, "fdc:0", altos5_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", altos5_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", altos5_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", altos5_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
- SOFTWARE_LIST(config, "flop_list").set_original("altos5");
- MCFG_QUICKLOAD_ADD("quickload", altos5_state, altos5, "com,cpm", attotime::from_seconds(3))
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "altos5")
+ MCFG_QUICKLOAD_ADD("quickload", altos5_state, altos5, "com,cpm", 3)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/alvg.cpp b/src/mame/drivers/alvg.cpp
index 64badefb851..150803c825a 100644
--- a/src/mame/drivers/alvg.cpp
+++ b/src/mame/drivers/alvg.cpp
@@ -45,12 +45,11 @@ void alvg_state::init_alvg()
{
}
-void alvg_state::alvg(machine_config &config)
-{
+MACHINE_CONFIG_START(alvg_state::alvg)
/* basic machine hardware */
- M65C02(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &alvg_state::alvg_map);
-}
+ MCFG_DEVICE_ADD("maincpu", M65C02, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(alvg_map)
+MACHINE_CONFIG_END
/*----------------------------------------------------------------------------
/ A.G. Soccer Ball - A.G. Football has identical ROMs but different playfield
diff --git a/src/mame/drivers/amaticmg.cpp b/src/mame/drivers/amaticmg.cpp
index 5c22c61027c..7f6547c4133 100644
--- a/src/mame/drivers/amaticmg.cpp
+++ b/src/mame/drivers/amaticmg.cpp
@@ -846,12 +846,11 @@ void amaticmg_state::machine_reset()
* Machine Drivers *
************************************/
-void amaticmg_state::amaticmg(machine_config &config)
-{
+MACHINE_CONFIG_START(amaticmg_state::amaticmg)
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK); /* WRONG! */
- m_maincpu->set_addrmap(AS_PROGRAM, &amaticmg_state::amaticmg_map);
- m_maincpu->set_addrmap(AS_IO, &amaticmg_state::amaticmg_portmap);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK) /* WRONG! */
+ MCFG_DEVICE_PROGRAM_MAP(amaticmg_map)
+ MCFG_DEVICE_IO_MAP(amaticmg_portmap)
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -867,13 +866,13 @@ void amaticmg_state::amaticmg(machine_config &config)
ppi1.out_pc_callback().set(FUNC(amaticmg_state::out_c_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(amaticmg_state::screen_update_amaticmg));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(amaticmg_state, screen_update_amaticmg)
+ MCFG_SCREEN_PALETTE(m_palette)
mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK));
crtc.set_screen("screen");
@@ -887,8 +886,9 @@ void amaticmg_state::amaticmg(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- YM3812(config, "ymsnd", SND_CLOCK).add_route(ALL_OUTPUTS, "speaker", 0.5); /* Y3014B DAC */
-}
+ MCFG_DEVICE_ADD("ymsnd", YM3812, SND_CLOCK) /* Y3014B DAC */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+MACHINE_CONFIG_END
WRITE_LINE_MEMBER(amaticmg_state::amaticmg2_irq)
@@ -898,40 +898,42 @@ WRITE_LINE_MEMBER(amaticmg_state::amaticmg2_irq)
}
-void amaticmg_state::amaticmg2(machine_config &config)
-{
+MACHINE_CONFIG_START(amaticmg_state::amaticmg2)
amaticmg(config);
- m_maincpu->set_addrmap(AS_IO, &amaticmg_state::amaticmg2_portmap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(amaticmg2_portmap)
I8255A(config, "ppi8255_2"); // MG4: 0x89 -> A:out; B:out; C(h):in; C(l):in.
- subdevice<screen_device>("screen")->set_screen_update(FUNC(amaticmg_state::screen_update_amaticmg2));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(amaticmg_state, screen_update_amaticmg2)
subdevice<mc6845_device>("crtc")->out_vsync_callback().set(FUNC(amaticmg_state::amaticmg2_irq));
- m_gfxdecode->set_info(gfx_amaticmg2);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_amaticmg2)
m_palette->set_init(FUNC(amaticmg_state::amaticmg2_palette));
m_palette->set_entries(0x10000);
-}
+MACHINE_CONFIG_END
-void amaticmg_state::amaticmg4(machine_config &config)
-{
+MACHINE_CONFIG_START(amaticmg_state::amaticmg4)
amaticmg(config);
- m_maincpu->set_addrmap(AS_IO, &amaticmg_state::amaticmg4_portmap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(amaticmg4_portmap)
I8255A(config, "ppi8255_2"); // MG4: 0x89 -> A:out; B:out; C(h):in; C(l):in.
- subdevice<screen_device>("screen")->set_screen_update(FUNC(amaticmg_state::screen_update_amaticmg2));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(amaticmg_state, screen_update_amaticmg2)
subdevice<mc6845_device>("crtc")->out_vsync_callback().set(FUNC(amaticmg_state::amaticmg2_irq));
- m_gfxdecode->set_info(gfx_amaticmg2);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_amaticmg2)
m_palette->set_init(FUNC(amaticmg_state::amaticmg2_palette));
m_palette->set_entries(0x10000);
-}
+MACHINE_CONFIG_END
/************************************
diff --git a/src/mame/drivers/ambush.cpp b/src/mame/drivers/ambush.cpp
index 0e15f2331aa..2b37533538a 100644
--- a/src/mame/drivers/ambush.cpp
+++ b/src/mame/drivers/ambush.cpp
@@ -724,22 +724,21 @@ WRITE8_MEMBER(ambush_state::output_latches_w)
// MACHINE DEFINTIONS
//**************************************************************************
-void ambush_state::ambush_base(machine_config &config)
-{
- z80_device &maincpu(Z80(config, "maincpu", XTAL(18'432'000)/6));
- maincpu.set_addrmap(AS_PROGRAM, &ambush_state::main_map);
- maincpu.set_addrmap(AS_IO, &ambush_state::main_portmap);
- maincpu.set_vblank_int("screen", FUNC(ambush_state::irq0_line_hold));
+MACHINE_CONFIG_START(ambush_state::ambush_base)
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'432'000)/6)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ambush_state, irq0_line_hold)
WATCHDOG_TIMER(config, "watchdog");
MCFG_MACHINE_START_OVERRIDE(ambush_state, ambush)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(18'432'000)/3, 384, 0, 256, 264, 16, 240);
- screen.set_screen_update(FUNC(ambush_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(18'432'000)/3, 384, 0, 256, 264, 16, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(ambush_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_ambush);
@@ -754,7 +753,7 @@ void ambush_state::ambush_base(machine_config &config)
ay8912_device &ay2(AY8912(config, "ay2", XTAL(18'432'000)/6/2));
ay2.port_a_read_callback().set_ioport("joystick");
ay2.add_route(ALL_OUTPUTS, "mono", 0.33);
-}
+MACHINE_CONFIG_END
void ambush_state::ambush(machine_config &config)
{
@@ -771,10 +770,10 @@ void ambush_state::ambush(machine_config &config)
m_outlatch[1]->q_out_cb<7>().set(FUNC(ambush_state::coin_counter_2_w));
}
-void ambush_state::mariobl(machine_config &config)
-{
+MACHINE_CONFIG_START(ambush_state::mariobl)
ambush_base(config);
- subdevice<z80_device>("maincpu")->set_addrmap(AS_PROGRAM, &ambush_state::bootleg_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(bootleg_map)
// To be verified: do these bootlegs only have one LS259?
ls259_device &outlatch(LS259(config, "outlatch"));
@@ -783,9 +782,10 @@ void ambush_state::mariobl(machine_config &config)
MCFG_MACHINE_START_OVERRIDE(ambush_state, mariobl)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(ambush_state::screen_update_bootleg));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(ambush_state, screen_update_bootleg)
- m_gfxdecode->set_info(gfx_mariobl);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_mariobl)
subdevice<palette_device>("palette")->set_init(FUNC(ambush_state::mario_palette));
@@ -796,10 +796,9 @@ void ambush_state::mariobl(machine_config &config)
ay8910_device &ay2(AY8910(config.replace(), "ay2", XTAL(18'432'000)/6/2));
ay2.port_a_read_callback().set_ioport("joystick");
ay2.add_route(ALL_OUTPUTS, "mono", 0.33);
-}
+MACHINE_CONFIG_END
-void ambush_state::mariobla(machine_config &config)
-{
+MACHINE_CONFIG_START(ambush_state::mariobla)
mariobl(config);
subdevice<palette_device>("palette")->set_init(FUNC(ambush_state::mariobla_palette));
@@ -807,18 +806,17 @@ void ambush_state::mariobla(machine_config &config)
auto &outlatch(*subdevice<ls259_device>("outlatch"));
outlatch.q_out_cb<5>().set(FUNC(ambush_state::color_bank_1_w));
outlatch.q_out_cb<6>().set_nop();
-}
+MACHINE_CONFIG_END
-void ambush_state::dkong3abl(machine_config &config)
-{
+MACHINE_CONFIG_START(ambush_state::dkong3abl)
mariobl(config);
MCFG_MACHINE_START_OVERRIDE(ambush_state, dkong3abl)
- m_gfxdecode->set_info(gfx_dkong3abl);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_dkong3abl)
subdevice<palette_device>("palette")->set_init(FUNC(ambush_state::dkong3_palette));
-}
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/amerihok.cpp b/src/mame/drivers/amerihok.cpp
index 73276053c03..369f0bf885f 100644
--- a/src/mame/drivers/amerihok.cpp
+++ b/src/mame/drivers/amerihok.cpp
@@ -39,44 +39,20 @@ private:
virtual void machine_start() override;
virtual void machine_reset() override;
- void control_w(u8 data);
- void p2_w(u8 data);
- u8 p3_r();
+ DECLARE_WRITE8_MEMBER(control_w);
- required_device<z8_device> m_maincpu;
+ required_device<cpu_device> m_maincpu;
required_device<okim6376_device> m_oki;
void amerihok_data_map(address_map &map);
void amerihok_map(address_map &map);
-
- u32 m_outputs[2];
- u32 m_latched_outputs[2];
- u8 m_old_p2;
};
-void amerihok_state::control_w(u8 data)
+WRITE8_MEMBER(amerihok_state::control_w)
{
m_oki->st_w(!BIT(data, 4));
m_oki->ch2_w(!BIT(data, 7));
}
-void amerihok_state::p2_w(u8 data)
-{
- if (BIT(data, 5) && !BIT(m_old_p2, 5))
- {
- m_outputs[1] = (m_outputs[1] << 1) | BIT(m_outputs[0], 31);
- m_outputs[0] = (m_outputs[0] << 1) | BIT(data, 6);
- }
-
- if (BIT(data, 7) && (m_outputs[0] != m_latched_outputs[0] || m_outputs[1] != m_latched_outputs[1]))
- {
- m_latched_outputs[0] = m_outputs[0];
- m_latched_outputs[1] = m_outputs[1];
- logerror("Outputs = %08X%08X\n", m_latched_outputs[1], m_latched_outputs[0]);
- }
-
- m_old_p2 = data;
-}
-
void amerihok_state::amerihok_map(address_map &map)
{
map(0x0000, 0xffff).rom().region("maincpu", 0);
@@ -84,49 +60,17 @@ void amerihok_state::amerihok_map(address_map &map)
void amerihok_state::amerihok_data_map(address_map &map)
{
- map(0x1000, 0x1000).portr("1000");
map(0x2000, 0x2000).w(FUNC(amerihok_state::control_w));
- map(0x3000, 0x3000).portr("3000");
map(0x4000, 0x4000).w(m_oki, FUNC(okim6376_device::write));
}
static INPUT_PORTS_START( amerihok )
- PORT_START("1000")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_CODE(KEYCODE_Z)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_CODE(KEYCODE_X)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_CODE(KEYCODE_C)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_V)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON5) PORT_CODE(KEYCODE_B)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_N)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON7) PORT_CODE(KEYCODE_M)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON8) PORT_CODE(KEYCODE_COMMA)
-
- PORT_START("3000")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_A) PORT_NAME("Score Visitor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_S) PORT_NAME("Score Home")
- PORT_BIT(0xfc, IP_ACTIVE_HIGH, IPT_UNUSED)
-
- PORT_START("P2")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON9) PORT_CODE(KEYCODE_STOP)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON10) PORT_CODE(KEYCODE_SLASH)
- PORT_BIT(0xee, IP_ACTIVE_LOW, IPT_UNUSED)
-
- PORT_START("P3")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_READ_LINE_DEVICE_MEMBER("oki", okim6376_device, busy_r)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_COIN1)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_COIN2)
INPUT_PORTS_END
void amerihok_state::machine_start()
{
- std::fill(std::begin(m_outputs), std::end(m_outputs), 0);
- std::fill(std::begin(m_latched_outputs), std::end(m_latched_outputs), 0);
-
- save_item(NAME(m_outputs));
- save_item(NAME(m_latched_outputs));
}
void amerihok_state::machine_reset()
@@ -134,21 +78,19 @@ void amerihok_state::machine_reset()
}
-void amerihok_state::amerihok(machine_config &config)
-{
- Z8681(config, m_maincpu, 12_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &amerihok_state::amerihok_map);
- m_maincpu->set_addrmap(AS_DATA, &amerihok_state::amerihok_data_map);
- m_maincpu->p2_in_cb().set_ioport("P2");
- m_maincpu->p2_out_cb().set(FUNC(amerihok_state::p2_w));
- m_maincpu->p3_in_cb().set_ioport("P3");
+MACHINE_CONFIG_START(amerihok_state::amerihok)
+
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", Z8681, 12_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(amerihok_map)
+ MCFG_DEVICE_DATA_MAP(amerihok_data_map)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6376(config, m_oki, 12_MHz_XTAL / 96); // 64-pin QFP, type/clock unverified (probably clocked by Z8681 TOUT)
- m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6376, 1000000) // 64-pin QFP (probably actually MSM6650)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/amico2k.cpp b/src/mame/drivers/amico2k.cpp
index cf3874d260c..f6dcebdf5b7 100644
--- a/src/mame/drivers/amico2k.cpp
+++ b/src/mame/drivers/amico2k.cpp
@@ -215,11 +215,10 @@ void amico2k_state::machine_start()
save_item(NAME(m_segment));
}
-void amico2k_state::amico2k(machine_config &config)
-{
+MACHINE_CONFIG_START(amico2k_state::amico2k)
/* basic machine hardware */
- M6502(config, m_maincpu, 1000000); /* 1MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &amico2k_state::amico2k_mem);
+ MCFG_DEVICE_ADD("maincpu", M6502, 1000000) /* 1MHz */
+ MCFG_DEVICE_PROGRAM_MAP(amico2k_mem)
/* video hardware */
config.set_default_layout(layout_amico2k);
@@ -229,7 +228,7 @@ void amico2k_state::amico2k(machine_config &config)
ppi.out_pa_callback().set(FUNC(amico2k_state::ppi_pa_w));
ppi.in_pb_callback().set(FUNC(amico2k_state::ppi_pb_r));
ppi.out_pb_callback().set(FUNC(amico2k_state::ppi_pb_w));
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/amiga.cpp b/src/mame/drivers/amiga.cpp
index c963688ee98..a8d41f300ae 100644
--- a/src/mame/drivers/amiga.cpp
+++ b/src/mame/drivers/amiga.cpp
@@ -29,14 +29,6 @@
//**************************************************************************
-// CONSTANTS / MACROS
-//**************************************************************************
-
-#define EXP_SLOT_TAG "exp"
-#define ZORROBUS_TAG "zorrobus"
-
-
-//**************************************************************************
// PRIVATE DEVICES
//**************************************************************************
@@ -617,7 +609,7 @@ WRITE16_MEMBER( a500p_state::clock_w )
READ8_MEMBER( cdtv_state::dmac_scsi_data_read )
{
if (offset >= 0xb0 && offset <= 0xbf)
- return m_tpi->read(offset);
+ return m_tpi->read(space, offset);
return 0xff;
}
@@ -625,7 +617,7 @@ READ8_MEMBER( cdtv_state::dmac_scsi_data_read )
WRITE8_MEMBER( cdtv_state::dmac_scsi_data_write )
{
if (offset >= 0xb0 && offset <= 0xbf)
- m_tpi->write(offset, data);
+ m_tpi->write(space, offset, data);
}
READ8_MEMBER( cdtv_state::dmac_io_read )
@@ -1160,7 +1152,7 @@ WRITE8_MEMBER( cd32_state::akiko_cia_0_port_a_write )
// bit 1, power led
m_power_led = BIT(~data, 1);
- handle_joystick_cia(data, m_cia_0->read(2));
+ handle_joystick_cia(data, m_cia_0->read(space, 2));
}
@@ -1565,8 +1557,7 @@ static void amiga_floppies(device_slot_interface &device)
}
// basic elements common to all amigas
-void amiga_state::amiga_base(machine_config &config)
-{
+MACHINE_CONFIG_START(amiga_state::amiga_base)
// video
pal_video(config);
@@ -1592,13 +1583,13 @@ void amiga_state::amiga_base(machine_config &config)
// audio
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- PAULA_8364(config, m_paula, amiga_state::CLK_C1_PAL);
- m_paula->add_route(0, "lspeaker", 0.50);
- m_paula->add_route(1, "rspeaker", 0.50);
- m_paula->add_route(2, "rspeaker", 0.50);
- m_paula->add_route(3, "lspeaker", 0.50);
- m_paula->mem_read_cb().set(FUNC(amiga_state::chip_ram_r));
- m_paula->int_cb().set(FUNC(amiga_state::paula_int_w));
+ paula_8364_device &paula(PAULA_8364(config, "amiga", amiga_state::CLK_C1_PAL));
+ paula.add_route(0, "lspeaker", 0.50);
+ paula.add_route(1, "rspeaker", 0.50);
+ paula.add_route(2, "rspeaker", 0.50);
+ paula.add_route(3, "lspeaker", 0.50);
+ paula.mem_read_cb().set(FUNC(amiga_state::chip_ram_r));
+ paula.int_cb().set(FUNC(amiga_state::paula_int_w));
// floppy drives
AMIGA_FDC(config, m_fdc, amiga_state::CLK_7M_PAL);
@@ -1606,10 +1597,14 @@ void amiga_state::amiga_base(machine_config &config)
m_fdc->write_dma_callback().set(FUNC(amiga_state::chip_ram_w));
m_fdc->dskblk_callback().set(FUNC(amiga_state::fdc_dskblk_w));
m_fdc->dsksyn_callback().set(FUNC(amiga_state::fdc_dsksyn_w));
- FLOPPY_CONNECTOR(config, "fdc:0", amiga_floppies, "35dd", amiga_fdc_device::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", amiga_floppies, nullptr, amiga_fdc_device::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:2", amiga_floppies, nullptr, amiga_fdc_device::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:3", amiga_floppies, nullptr, amiga_fdc_device::floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", amiga_floppies, "35dd", amiga_fdc_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", amiga_floppies, nullptr, amiga_fdc_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:2", amiga_floppies, nullptr, amiga_fdc_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:3", amiga_floppies, nullptr, amiga_fdc_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
// rs232
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr));
@@ -1620,25 +1615,22 @@ void amiga_state::amiga_base(machine_config &config)
rs232.cts_handler().set(FUNC(amiga_state::rs232_cts_w));
// centronics
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(FUNC(amiga_state::centronics_ack_w));
- m_centronics->busy_handler().set(FUNC(amiga_state::centronics_busy_w));
- m_centronics->perror_handler().set(FUNC(amiga_state::centronics_perror_w));
- m_centronics->select_handler().set(FUNC(amiga_state::centronics_select_w));
-
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, amiga_state, centronics_ack_w))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, amiga_state, centronics_busy_w))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, amiga_state, centronics_perror_w))
+ MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, amiga_state, centronics_select_w))
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
// software
- SOFTWARE_LIST(config, "wb_list").set_original("amiga_workbench");
- SOFTWARE_LIST(config, "hardware_list").set_original("amiga_hardware");
- SOFTWARE_LIST(config, "apps_list").set_original("amiga_apps");
- SOFTWARE_LIST(config, "flop_list").set_original("amiga_flop");
- SOFTWARE_LIST(config, "ocs_list").set_original("amigaocs_flop");
-}
-
-void a1000_state::a1000(machine_config &config)
-{
+ MCFG_SOFTWARE_LIST_ADD("wb_list", "amiga_workbench")
+ MCFG_SOFTWARE_LIST_ADD("hardware_list", "amiga_hardware")
+ MCFG_SOFTWARE_LIST_ADD("apps_list", "amiga_apps")
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "amiga_flop")
+ MCFG_SOFTWARE_LIST_ADD("ocs_list", "amigaocs_flop")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(a1000_state::a1000)
amiga_base(config);
// keyboard
@@ -1651,30 +1643,33 @@ void a1000_state::a1000(machine_config &config)
.kbrst_cb().set(FUNC(a1000_state::kbreset_w));
// main cpu
- M68000(config, m_maincpu, amiga_state::CLK_7M_PAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &a1000_state::a1000_mem);
+ MCFG_DEVICE_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL)
+ MCFG_DEVICE_PROGRAM_MAP(a1000_mem)
ADDRESS_MAP_BANK(config, "overlay").set_map(&a1000_state::a1000_overlay_map).set_options(ENDIANNESS_BIG, 16, 22, 0x200000);
ADDRESS_MAP_BANK(config, "bootrom").set_map(&a1000_state::a1000_bootrom_map).set_options(ENDIANNESS_BIG, 16, 19, 0x40000);
- SOFTWARE_LIST(config, "a1000_list").set_original("amiga_a1000");
-}
+ MCFG_SOFTWARE_LIST_ADD("a1000_list", "amiga_a1000")
+MACHINE_CONFIG_END
-void a1000_state::a1000n(machine_config &config)
-{
+MACHINE_CONFIG_START(a1000_state::a1000n)
a1000(config);
- m_maincpu->set_clock(amiga_state::CLK_7M_NTSC);
- config.device_remove("screen");
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+ MCFG_DEVICE_REMOVE("screen")
ntsc_video(config);
- m_paula->set_clock(amiga_state::CLK_C1_NTSC);
- m_cia_0->set_clock(amiga_state::CLK_E_NTSC);
- m_cia_1->set_clock(amiga_state::CLK_E_NTSC);
- m_fdc->set_clock(amiga_state::CLK_7M_NTSC);
-}
-
-void a2000_state::a2000(machine_config &config)
-{
+ MCFG_DEVICE_MODIFY("amiga")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_NTSC)
+ MCFG_DEVICE_MODIFY("cia_0")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("cia_1")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("fdc")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(a2000_state::a2000)
amiga_base(config);
// keyboard
@@ -1687,45 +1682,46 @@ void a2000_state::a2000(machine_config &config)
.kbrst_cb().set(FUNC(a2000_state::kbreset_w));
// main cpu
- M68000(config, m_maincpu, amiga_state::CLK_7M_PAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &a2000_state::a2000_mem);
+ MCFG_DEVICE_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL)
+ MCFG_DEVICE_PROGRAM_MAP(a2000_mem)
ADDRESS_MAP_BANK(config, "overlay").set_map(&amiga_state::overlay_512kb_map).set_options(ENDIANNESS_BIG, 16, 22, 0x200000);
// real-time clock
- MSM6242(config, m_rtc, XTAL(32'768));
+ MCFG_DEVICE_ADD("u65", MSM6242, XTAL(32'768))
// cpu slot
- EXP_SLOT(config, EXP_SLOT_TAG, 0).set_space(m_maincpu, AS_PROGRAM);
- ZORRO_SLOT(config, "slot", EXP_SLOT_TAG, a2000_expansion_cards, nullptr);
+ MCFG_EXPANSION_SLOT_ADD("maincpu", a2000_expansion_cards, nullptr)
// zorro slots
- ZORRO2(config, m_zorro, 0);
- m_zorro->set_space(m_maincpu, AS_PROGRAM);
- m_zorro->int2_handler().set(FUNC(a2000_state::zorro2_int2_w));
- m_zorro->int6_handler().set(FUNC(a2000_state::zorro2_int6_w));
- ZORRO_SLOT(config, "zorro1", m_zorro, zorro2_cards, nullptr);
- ZORRO_SLOT(config, "zorro2", m_zorro, zorro2_cards, nullptr);
- ZORRO_SLOT(config, "zorro3", m_zorro, zorro2_cards, nullptr);
- ZORRO_SLOT(config, "zorro4", m_zorro, zorro2_cards, nullptr);
- ZORRO_SLOT(config, "zorro5", m_zorro, zorro2_cards, nullptr);
-}
-
-void a2000_state::a2000n(machine_config &config)
-{
+ MCFG_ZORRO2_ADD("maincpu")
+ MCFG_ZORRO2_INT2_HANDLER(WRITELINE(*this, a2000_state, zorro2_int2_w))
+ MCFG_ZORRO2_INT6_HANDLER(WRITELINE(*this, a2000_state, zorro2_int6_w))
+ MCFG_ZORRO2_SLOT_ADD("zorro1", zorro2_cards, nullptr)
+ MCFG_ZORRO2_SLOT_ADD("zorro2", zorro2_cards, nullptr)
+ MCFG_ZORRO2_SLOT_ADD("zorro3", zorro2_cards, nullptr)
+ MCFG_ZORRO2_SLOT_ADD("zorro4", zorro2_cards, nullptr)
+ MCFG_ZORRO2_SLOT_ADD("zorro5", zorro2_cards, nullptr)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(a2000_state::a2000n)
a2000(config);
- m_maincpu->set_clock(amiga_state::CLK_7M_NTSC);
- config.device_remove("screen");
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+ MCFG_DEVICE_REMOVE("screen")
ntsc_video(config);
- m_paula->set_clock(amiga_state::CLK_C1_NTSC);
- m_cia_0->set_clock(amiga_state::CLK_E_NTSC);
- m_cia_1->set_clock(amiga_state::CLK_E_NTSC);
- m_fdc->set_clock(amiga_state::CLK_7M_NTSC);
-}
-
-void a500_state::a500(machine_config &config)
-{
+ MCFG_DEVICE_MODIFY("amiga")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_NTSC)
+ MCFG_DEVICE_MODIFY("cia_0")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("cia_1")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("fdc")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(a500_state::a500)
amiga_base(config);
// keyboard
@@ -1735,32 +1731,34 @@ void a500_state::a500(machine_config &config)
kbd.krst_handler().set(FUNC(amiga_state::kbreset_w));
// main cpu
- M68000(config, m_maincpu, amiga_state::CLK_7M_PAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &a500_state::a500_mem);
+ MCFG_DEVICE_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL)
+ MCFG_DEVICE_PROGRAM_MAP(a500_mem)
ADDRESS_MAP_BANK(config, "overlay").set_map(&amiga_state::overlay_1mb_map).set_options(ENDIANNESS_BIG, 16, 22, 0x200000);
// cpu slot
- EXP_SLOT(config, m_side, 0).set_space(m_maincpu, AS_PROGRAM);
- m_side->int2_handler().set(FUNC(a500_state::side_int2_w));
- m_side->int6_handler().set(FUNC(a500_state::side_int6_w));
- ZORRO_SLOT(config, "slot", m_side, a500_expansion_cards, nullptr);
-}
+ MCFG_EXPANSION_SLOT_ADD("maincpu", a500_expansion_cards, nullptr)
+ MCFG_EXPANSION_SLOT_INT2_HANDLER(WRITELINE(*this, a500_state, side_int2_w))
+ MCFG_EXPANSION_SLOT_INT6_HANDLER(WRITELINE(*this, a500_state, side_int6_w))
+MACHINE_CONFIG_END
-void a500_state::a500n(machine_config &config)
-{
+MACHINE_CONFIG_START(a500_state::a500n)
a500(config);
- m_maincpu->set_clock(amiga_state::CLK_7M_NTSC);
- config.device_remove("screen");
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+ MCFG_DEVICE_REMOVE("screen")
ntsc_video(config);
- m_paula->set_clock(amiga_state::CLK_C1_NTSC);
- m_cia_0->set_clock(amiga_state::CLK_E_NTSC);
- m_cia_1->set_clock(amiga_state::CLK_E_NTSC);
- m_fdc->set_clock(amiga_state::CLK_7M_NTSC);
-}
-
-void cdtv_state::cdtv(machine_config &config)
-{
+ MCFG_DEVICE_MODIFY("amiga")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_NTSC)
+ MCFG_DEVICE_MODIFY("cia_0")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("cia_1")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("fdc")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(cdtv_state::cdtv)
amiga_base(config);
// keyboard
@@ -1773,18 +1771,18 @@ void cdtv_state::cdtv(machine_config &config)
.kbrst_cb().set(FUNC(a1000_state::kbreset_w));
// main cpu
- M68000(config, m_maincpu, amiga_state::CLK_7M_PAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &cdtv_state::cdtv_mem);
+ MCFG_DEVICE_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL)
+ MCFG_DEVICE_PROGRAM_MAP(cdtv_mem)
// remote control input converter
- m6502_device &u75(M6502(config, "u75", XTAL(3'000'000)));
- u75.set_addrmap(AS_PROGRAM, &cdtv_state::cdtv_rc_mem);
- u75.set_disable();
+ MCFG_DEVICE_ADD("u75", M6502, XTAL(3'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(cdtv_rc_mem)
+ MCFG_DEVICE_DISABLE()
// lcd controller
#if 0
- lc6554_device &u62(LC6554(config, "u62", XTAL(4'000'000))); // device isn't emulated yet
- u62.set_addrmap(AS_PROGRAM, &cdtv_state::lcd_mem);
+ MCFG_DEVICE_ADD("u62", LC6554, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(lcd_mem)
#endif
ADDRESS_MAP_BANK(config, "overlay").set_map(&amiga_state::overlay_1mb_map).set_options(ENDIANNESS_BIG, 16, 22, 0x200000);
@@ -1796,7 +1794,7 @@ void cdtv_state::cdtv(machine_config &config)
NVRAM(config, "memcard", nvram_device::DEFAULT_ALL_0);
// real-time clock
- MSM6242(config, m_rtc, XTAL(32'768));
+ MCFG_DEVICE_ADD("u61", MSM6242, XTAL(32'768))
// cd-rom controller
AMIGA_DMAC(config, m_dmac, amiga_state::CLK_7M_PAL);
@@ -1806,38 +1804,42 @@ void cdtv_state::cdtv(machine_config &config)
m_dmac->io_write_handler().set(FUNC(cdtv_state::dmac_io_write));
m_dmac->int_handler().set(FUNC(cdtv_state::dmac_int_w));
- TPI6525(config, m_tpi, 0);
- m_tpi->out_irq_cb().set(FUNC(cdtv_state::tpi_int_w));
- m_tpi->out_pb_cb().set(FUNC(cdtv_state::tpi_port_b_write));
+ tpi6525_device &tpi(TPI6525(config, "u32", 0));
+ tpi.out_irq_cb().set(FUNC(cdtv_state::tpi_int_w));
+ tpi.out_pb_cb().set(FUNC(cdtv_state::tpi_port_b_write));
// cd-rom
CR511B(config, m_cdrom, 0);
- m_cdrom->scor_handler().set(m_tpi, FUNC(tpi6525_device::i1_w)).invert();
- m_cdrom->stch_handler().set(m_tpi, FUNC(tpi6525_device::i2_w)).invert();
- m_cdrom->sten_handler().set(m_tpi, FUNC(tpi6525_device::i3_w));
- m_cdrom->xaen_handler().set(m_tpi, FUNC(tpi6525_device::pb2_w));
- m_cdrom->drq_handler().set(m_dmac, FUNC(amiga_dmac_device::xdreq_w));
- m_cdrom->dten_handler().set(m_dmac, FUNC(amiga_dmac_device::xdreq_w));
+ m_cdrom->scor_handler().set("u32", FUNC(tpi6525_device::i1_w)).invert();
+ m_cdrom->stch_handler().set("u32", FUNC(tpi6525_device::i2_w)).invert();
+ m_cdrom->sten_handler().set("u32", FUNC(tpi6525_device::i3_w));
+ m_cdrom->xaen_handler().set("u32", FUNC(tpi6525_device::pb2_w));
+ m_cdrom->drq_handler().set("u36", FUNC(amiga_dmac_device::xdreq_w));
+ m_cdrom->dten_handler().set("u36", FUNC(amiga_dmac_device::xdreq_w));
// software
- SOFTWARE_LIST(config, "cd_list").set_original("cdtv");
-}
+ MCFG_SOFTWARE_LIST_ADD("cd_list", "cdtv")
+MACHINE_CONFIG_END
-void cdtv_state::cdtvn(machine_config &config)
-{
+MACHINE_CONFIG_START(cdtv_state::cdtvn)
cdtv(config);
- m_maincpu->set_clock(amiga_state::CLK_7M_NTSC);
- config.device_remove("screen");
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+ MCFG_DEVICE_REMOVE("screen")
ntsc_video(config);
- m_paula->set_clock(amiga_state::CLK_C1_NTSC);
- m_cia_0->set_clock(amiga_state::CLK_E_NTSC);
- m_cia_1->set_clock(amiga_state::CLK_E_NTSC);
- m_dmac->set_clock(amiga_state::CLK_7M_NTSC);
- m_fdc->set_clock(amiga_state::CLK_7M_NTSC);
-}
-
-void a3000_state::a3000(machine_config &config)
-{
+ MCFG_DEVICE_MODIFY("amiga")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_NTSC)
+ MCFG_DEVICE_MODIFY("cia_0")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("cia_1")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("u36")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+ MCFG_DEVICE_MODIFY("fdc")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(a3000_state::a3000)
amiga_base(config);
// keyboard
@@ -1846,8 +1848,8 @@ void a3000_state::a3000(machine_config &config)
kbd.kdat_handler().set("cia_0", FUNC(mos8520_device::sp_w));
// main cpu
- M68030(config, m_maincpu, XTAL(32'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &a3000_state::a3000_mem);
+ MCFG_DEVICE_ADD("maincpu", M68030, XTAL(32'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(a3000_mem)
ADDRESS_MAP_BANK(config, "overlay").set_map(&amiga_state::overlay_1mb_map32).set_options(ENDIANNESS_BIG, 32, 22, 0x200000);
@@ -1857,22 +1859,23 @@ void a3000_state::a3000(machine_config &config)
// todo: zorro3 slots, super dmac, scsi
// software
- SOFTWARE_LIST(config, "a3000_list").set_original("amiga_a3000");
- SOFTWARE_LIST(config, "ecs_list").set_original("amigaecs_flop");
-}
+ MCFG_SOFTWARE_LIST_ADD("a3000_list", "amiga_a3000")
+ MCFG_SOFTWARE_LIST_ADD("ecs_list", "amigaecs_flop")
+MACHINE_CONFIG_END
-void a3000_state::a3000n(machine_config &config)
-{
+MACHINE_CONFIG_START(a3000_state::a3000n)
a3000(config);
- config.device_remove("screen");
+ MCFG_DEVICE_REMOVE("screen")
ntsc_video(config);
- m_cia_0->set_clock(amiga_state::CLK_E_NTSC);
- m_cia_1->set_clock(amiga_state::CLK_E_NTSC);
- m_fdc->set_clock(amiga_state::CLK_7M_NTSC);
-}
-
-void a500p_state::a500p(machine_config &config)
-{
+ MCFG_DEVICE_MODIFY("cia_0")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("cia_1")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("fdc")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(a500p_state::a500p)
amiga_base(config);
// keyboard
@@ -1882,36 +1885,38 @@ void a500p_state::a500p(machine_config &config)
kbd.krst_handler().set(FUNC(amiga_state::kbreset_w));
// main cpu
- M68000(config, m_maincpu, amiga_state::CLK_7M_PAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &a500p_state::a500p_mem);
+ MCFG_DEVICE_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL)
+ MCFG_DEVICE_PROGRAM_MAP(a500p_mem)
ADDRESS_MAP_BANK(config, "overlay").set_map(&amiga_state::overlay_1mb_map).set_options(ENDIANNESS_BIG, 16, 22, 0x200000);
// real-time clock
- MSM6242(config, m_rtc, XTAL(32'768));
+ MCFG_DEVICE_ADD("u9", MSM6242, XTAL(32'768))
// cpu slot
- EXP_SLOT(config, m_side, 0).set_space(m_maincpu, AS_PROGRAM);
- ZORRO_SLOT(config, "slot", m_side, a500_expansion_cards, nullptr);
+ MCFG_EXPANSION_SLOT_ADD("maincpu", a500_expansion_cards, nullptr)
// software
- SOFTWARE_LIST(config, "ecs_list").set_original("amigaecs_flop");
-}
+ MCFG_SOFTWARE_LIST_ADD("ecs_list", "amigaecs_flop")
+MACHINE_CONFIG_END
-void a500p_state::a500pn(machine_config &config)
-{
+MACHINE_CONFIG_START(a500p_state::a500pn)
a500p(config);
- m_maincpu->set_clock(amiga_state::CLK_7M_NTSC);
- config.device_remove("screen");
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+ MCFG_DEVICE_REMOVE("screen")
ntsc_video(config);
- m_paula->set_clock(amiga_state::CLK_C1_NTSC);
- m_cia_0->set_clock(amiga_state::CLK_E_NTSC);
- m_cia_1->set_clock(amiga_state::CLK_E_NTSC);
- m_fdc->set_clock(amiga_state::CLK_7M_NTSC);
-}
-
-void a600_state::a600(machine_config &config)
-{
+ MCFG_DEVICE_MODIFY("amiga")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_NTSC)
+ MCFG_DEVICE_MODIFY("cia_0")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("cia_1")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("fdc")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(a600_state::a600)
amiga_base(config);
// keyboard
@@ -1921,8 +1926,8 @@ void a600_state::a600(machine_config &config)
kbd.krst_handler().set(FUNC(amiga_state::kbreset_w));
// main cpu
- M68000(config, m_maincpu, amiga_state::CLK_7M_PAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &a600_state::a600_mem);
+ MCFG_DEVICE_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL)
+ MCFG_DEVICE_PROGRAM_MAP(a600_mem)
ADDRESS_MAP_BANK(config, "overlay").set_map(&amiga_state::overlay_2mb_map16).set_options(ENDIANNESS_BIG, 16, 22, 0x200000);
@@ -1940,24 +1945,28 @@ void a600_state::a600(machine_config &config)
// todo: pcmcia
// software
- SOFTWARE_LIST(config, "ecs_list").set_original("amigaecs_flop");
-}
+ MCFG_SOFTWARE_LIST_ADD("ecs_list", "amigaecs_flop")
+MACHINE_CONFIG_END
-void a600_state::a600n(machine_config &config)
-{
+MACHINE_CONFIG_START(a600_state::a600n)
a600(config);
- m_maincpu->set_clock(amiga_state::CLK_7M_NTSC);
- subdevice<gayle_device>("gayle")->set_clock(amiga_state::CLK_28M_NTSC / 2);
- config.device_remove("screen");
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+ MCFG_DEVICE_MODIFY("gayle")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_28M_NTSC / 2)
+ MCFG_DEVICE_REMOVE("screen")
ntsc_video(config);
- m_paula->set_clock(amiga_state::CLK_C1_NTSC);
- m_cia_0->set_clock(amiga_state::CLK_E_NTSC);
- m_cia_1->set_clock(amiga_state::CLK_E_NTSC);
- m_fdc->set_clock(amiga_state::CLK_7M_NTSC);
-}
-
-void a1200_state::a1200(machine_config &config)
-{
+ MCFG_DEVICE_MODIFY("amiga")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_NTSC)
+ MCFG_DEVICE_MODIFY("cia_0")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("cia_1")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("fdc")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(a1200_state::a1200)
amiga_base(config);
// keyboard
@@ -1967,15 +1976,16 @@ void a1200_state::a1200(machine_config &config)
kbd.krst_handler().set(FUNC(amiga_state::kbreset_w));
// main cpu
- M68EC020(config, m_maincpu, amiga_state::CLK_28M_PAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &a1200_state::a1200_mem);
+ MCFG_DEVICE_ADD("maincpu", M68EC020, amiga_state::CLK_28M_PAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(a1200_mem)
ADDRESS_MAP_BANK(config, "overlay").set_map(&amiga_state::overlay_2mb_map32).set_options(ENDIANNESS_BIG, 32, 22, 0x200000);
- m_screen->set_screen_update(FUNC(amiga_state::screen_update_amiga_aga));
- m_screen->set_palette(finder_base::DUMMY_TAG);
+ MCFG_DEVICE_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
- config.device_remove("palette");
+ MCFG_DEVICE_REMOVE("palette")
MCFG_VIDEO_START_OVERRIDE(amiga_state, amiga_aga)
@@ -1992,33 +2002,39 @@ void a1200_state::a1200(machine_config &config)
// keyboard
#if 0
- subdevice<amiga_keyboard_bus_device>("kbd").set_default_option("a1200_us");
+ MCFG_DEVICE_MODIFY("kbd")
+ MCFG_SLOT_DEFAULT_OPTION("a1200_us")
#endif
// todo: pcmcia
// software
- SOFTWARE_LIST(config, "aga_list").set_original("amigaaga_flop");
- SOFTWARE_LIST(config, "ecs_list").set_original("amigaecs_flop");
-}
+ MCFG_SOFTWARE_LIST_ADD("aga_list", "amigaaga_flop")
+ MCFG_SOFTWARE_LIST_ADD("ecs_list", "amigaecs_flop")
+MACHINE_CONFIG_END
-void a1200_state::a1200n(machine_config &config)
-{
+MACHINE_CONFIG_START(a1200_state::a1200n)
a1200(config);
- m_maincpu->set_clock(amiga_state::CLK_28M_NTSC / 2);
- subdevice<gayle_device>("gayle")->set_clock(amiga_state::CLK_28M_NTSC / 2);
- config.device_remove("screen");
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_28M_NTSC / 2)
+ MCFG_DEVICE_MODIFY("gayle")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_28M_NTSC / 2)
+ MCFG_DEVICE_REMOVE("screen")
ntsc_video(config);
- m_screen->set_screen_update(FUNC(amiga_state::screen_update_amiga_aga));
- m_screen->set_palette(finder_base::DUMMY_TAG);
- m_paula->set_clock(amiga_state::CLK_C1_NTSC);
- m_cia_0->set_clock(amiga_state::CLK_E_NTSC);
- m_cia_1->set_clock(amiga_state::CLK_E_NTSC);
- m_fdc->set_clock(amiga_state::CLK_7M_NTSC);
-}
-
-void a4000_state::a4000(machine_config &config)
-{
+ MCFG_DEVICE_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
+ MCFG_DEVICE_MODIFY("amiga")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_NTSC)
+ MCFG_DEVICE_MODIFY("cia_0")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("cia_1")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("fdc")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(a4000_state::a4000)
amiga_base(config);
// keyboard
@@ -2027,15 +2043,16 @@ void a4000_state::a4000(machine_config &config)
kbd.kdat_handler().set("cia_0", FUNC(mos8520_device::sp_w));
// main cpu
- M68040(config, m_maincpu, XTAL(50'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &a4000_state::a4000_mem);
+ MCFG_DEVICE_ADD("maincpu", M68040, XTAL(50'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(a4000_mem)
ADDRESS_MAP_BANK(config, "overlay").set_map(&amiga_state::overlay_2mb_map32).set_options(ENDIANNESS_BIG, 32, 22, 0x200000);
- m_screen->set_screen_update(FUNC(amiga_state::screen_update_amiga_aga));
- m_screen->set_palette(finder_base::DUMMY_TAG);
+ MCFG_DEVICE_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
- config.device_remove("palette");
+ MCFG_DEVICE_REMOVE("palette")
MCFG_VIDEO_START_OVERRIDE(amiga_state, amiga_aga)
@@ -2049,54 +2066,61 @@ void a4000_state::a4000(machine_config &config)
// todo: zorro3
// software
- SOFTWARE_LIST(config, "aga_list").set_original("amigaaga_flop");
- SOFTWARE_LIST(config, "ecs_list").set_original("amigaecs_flop");
-}
+ MCFG_SOFTWARE_LIST_ADD("aga_list", "amigaaga_flop")
+ MCFG_SOFTWARE_LIST_ADD("ecs_list", "amigaecs_flop")
+MACHINE_CONFIG_END
-void a4000_state::a4000n(machine_config &config)
-{
+MACHINE_CONFIG_START(a4000_state::a4000n)
a4000(config);
- config.device_remove("screen");
+ MCFG_DEVICE_REMOVE("screen")
ntsc_video(config);
- m_screen->set_screen_update(FUNC(amiga_state::screen_update_amiga_aga));
- m_screen->set_palette(finder_base::DUMMY_TAG);
- m_paula->set_clock(amiga_state::CLK_C1_NTSC);
- m_cia_0->set_clock(amiga_state::CLK_E_NTSC);
- m_cia_1->set_clock(amiga_state::CLK_E_NTSC);
- m_fdc->set_clock(amiga_state::CLK_7M_NTSC);
-}
-
-void a4000_state::a400030(machine_config &config)
-{
+ MCFG_DEVICE_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
+ MCFG_DEVICE_MODIFY("amiga")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_NTSC)
+ MCFG_DEVICE_MODIFY("cia_0")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("cia_1")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("fdc")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(a4000_state::a400030)
a4000(config);
// main cpu
- M68EC030(config.replace(), m_maincpu, XTAL(50'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &a4000_state::a400030_mem);
+ MCFG_DEVICE_REMOVE("maincpu")
+ MCFG_DEVICE_ADD("maincpu", M68EC030, XTAL(50'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(a400030_mem)
// todo: ide
-}
+MACHINE_CONFIG_END
-void a4000_state::a400030n(machine_config &config)
-{
+MACHINE_CONFIG_START(a4000_state::a400030n)
a400030(config);
- config.device_remove("screen");
+ MCFG_DEVICE_REMOVE("screen")
ntsc_video(config);
- m_screen->set_screen_update(FUNC(amiga_state::screen_update_amiga_aga));
- m_screen->set_palette(finder_base::DUMMY_TAG);
- m_paula->set_clock(amiga_state::CLK_C1_NTSC);
- m_cia_0->set_clock(amiga_state::CLK_E_NTSC);
- m_cia_1->set_clock(amiga_state::CLK_E_NTSC);
- m_fdc->set_clock(amiga_state::CLK_7M_NTSC);
-}
-
-void cd32_state::cd32(machine_config &config)
-{
+ MCFG_DEVICE_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
+ MCFG_DEVICE_MODIFY("amiga")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_NTSC)
+ MCFG_DEVICE_MODIFY("cia_0")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("cia_1")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("fdc")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(cd32_state::cd32)
amiga_base(config);
// main cpu
- M68EC020(config, m_maincpu, amiga_state::CLK_28M_PAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cd32_state::cd32_mem);
+ MCFG_DEVICE_ADD("maincpu", M68EC020, amiga_state::CLK_28M_PAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(cd32_mem)
ADDRESS_MAP_BANK(config, "overlay").set_map(&amiga_state::overlay_2mb_map32).set_options(ENDIANNESS_BIG, 32, 22, 0x200000);
@@ -2110,62 +2134,74 @@ void cd32_state::cd32(machine_config &config)
akiko.sda_r_callback().set("i2cmem", FUNC(i2cmem_device::read_sda));
akiko.sda_w_callback().set("i2cmem", FUNC(i2cmem_device::write_sda));
- m_screen->set_screen_update(FUNC(amiga_state::screen_update_amiga_aga));
- m_screen->set_palette(finder_base::DUMMY_TAG);
+ MCFG_DEVICE_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
- config.device_remove("palette");
+ MCFG_DEVICE_REMOVE("palette")
MCFG_VIDEO_START_OVERRIDE(amiga_state, amiga_aga)
- CDDA(config, m_cdda);
- m_cdda->add_route(0, "lspeaker", 0.50);
- m_cdda->add_route(1, "rspeaker", 0.50);
+ MCFG_DEVICE_ADD("cdda", CDDA)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
- m_cia_0->pa_wr_callback().set(FUNC(cd32_state::akiko_cia_0_port_a_write));
- m_cia_0->sp_wr_callback().set_nop();
+ MCFG_DEVICE_MODIFY("cia_0")
+ MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(*this, cd32_state, akiko_cia_0_port_a_write))
+ MCFG_MOS6526_SP_CALLBACK(NOOP)
- CDROM(config, "cdrom").set_interface("cd32_cdrom");
- SOFTWARE_LIST(config, "cd_list").set_original("cd32");
-}
+ MCFG_CDROM_ADD("cdrom")
+ MCFG_CDROM_INTERFACE("cd32_cdrom")
+ MCFG_SOFTWARE_LIST_ADD("cd_list", "cd32")
+MACHINE_CONFIG_END
-void cd32_state::cd32n(machine_config &config)
-{
+MACHINE_CONFIG_START(cd32_state::cd32n)
cd32(config);
- m_maincpu->set_clock(amiga_state::CLK_28M_NTSC / 2);
- config.device_remove("screen");
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_28M_NTSC / 2)
+ MCFG_DEVICE_REMOVE("screen")
ntsc_video(config);
- m_screen->set_screen_update(FUNC(amiga_state::screen_update_amiga_aga));
- m_screen->set_palette(finder_base::DUMMY_TAG);
- m_paula->set_clock(amiga_state::CLK_C1_NTSC);
- m_cia_0->set_clock(amiga_state::CLK_E_NTSC);
- m_cia_1->set_clock(amiga_state::CLK_E_NTSC);
- m_fdc->set_clock(amiga_state::CLK_7M_NTSC);
-}
-
-void a4000_state::a4000t(machine_config &config)
-{
+ MCFG_DEVICE_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
+ MCFG_DEVICE_MODIFY("amiga")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_NTSC)
+ MCFG_DEVICE_MODIFY("cia_0")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("cia_1")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("fdc")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(a4000_state::a4000t)
a4000(config);
// main cpu
- M68040(config.replace(), m_maincpu, XTAL(50'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &a4000_state::a4000t_mem);
+ MCFG_DEVICE_REMOVE("maincpu")
+ MCFG_DEVICE_ADD("maincpu", M68040, XTAL(50'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(a4000t_mem)
// todo: ide, zorro3, scsi, super dmac
-}
+MACHINE_CONFIG_END
-void a4000_state::a4000tn(machine_config &config)
-{
+MACHINE_CONFIG_START(a4000_state::a4000tn)
a4000(config);
- config.device_remove("screen");
+ MCFG_DEVICE_REMOVE("screen")
ntsc_video(config);
- m_screen->set_screen_update(FUNC(amiga_state::screen_update_amiga_aga));
- m_screen->set_palette(finder_base::DUMMY_TAG);
- m_paula->set_clock(amiga_state::CLK_C1_NTSC);
- m_cia_0->set_clock(amiga_state::CLK_E_NTSC);
- m_cia_1->set_clock(amiga_state::CLK_E_NTSC);
- m_fdc->set_clock(amiga_state::CLK_7M_NTSC);
-}
+ MCFG_DEVICE_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
+ MCFG_DEVICE_MODIFY("amiga")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_NTSC)
+ MCFG_DEVICE_MODIFY("cia_0")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("cia_1")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_E_NTSC)
+ MCFG_DEVICE_MODIFY("fdc")
+ MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC)
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/ampex.cpp b/src/mame/drivers/ampex.cpp
index c9cccab81ad..0fdd64f4c80 100644
--- a/src/mame/drivers/ampex.cpp
+++ b/src/mame/drivers/ampex.cpp
@@ -340,8 +340,8 @@ void ampex_state::machine_start()
m_uart->write_swe(0);
// Are rates hardwired to DIP switches? They don't seem to be software-controlled...
- m_dbrg->str_w(0xe);
- m_dbrg->stt_w(0xe);
+ m_dbrg->write_str(0xe);
+ m_dbrg->write_stt(0xe);
// Make up some settings for the UART (probably also actually controlled by DIP switches)
m_uart->write_nb1(1);
diff --git a/src/mame/drivers/ampoker2.cpp b/src/mame/drivers/ampoker2.cpp
index 4bd0e3570f7..1a89b0c45c4 100644
--- a/src/mame/drivers/ampoker2.cpp
+++ b/src/mame/drivers/ampoker2.cpp
@@ -1166,28 +1166,28 @@ GFXDECODE_END
* Machine Driver *
*************************/
-void ampoker2_state::ampoker2(machine_config &config)
-{
+MACHINE_CONFIG_START(ampoker2_state::ampoker2)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/2); /* 3 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &ampoker2_state::program_map);
- m_maincpu->set_addrmap(AS_IO, &ampoker2_state::io_map);
- m_maincpu->set_periodic_int(FUNC(ampoker2_state::nmi_line_pulse), attotime::from_hz(1536));
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/2) /* 3 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(program_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(ampoker2_state, nmi_line_pulse, 1536)
WATCHDOG_TIMER(config, m_watchdog).set_time(attotime::from_msec(200)); /* 200 ms, measured */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
/* if VBLANK is used, the watchdog timer stop to work.
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
*/
- screen.set_size(64*8, 32*8);
- screen.set_visarea(20*8, 56*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(ampoker2_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(20*8, 56*8-1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ampoker2_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_ampoker2);
PALETTE(config, "palette", FUNC(ampoker2_state::ampoker2_palette), 512);
@@ -1195,16 +1195,15 @@ void ampoker2_state::ampoker2(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd", MASTER_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 0.30); /* 1.5 MHz, measured */
-}
+MACHINE_CONFIG_END
-void ampoker2_state::sigma2k(machine_config &config)
-{
+MACHINE_CONFIG_START(ampoker2_state::sigma2k)
ampoker2(config);
/* video hardware */
- m_gfxdecode->set_info(gfx_sigma2k);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_sigma2k)
MCFG_VIDEO_START_OVERRIDE(ampoker2_state, sigma2k)
-}
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/ampscarp.cpp b/src/mame/drivers/ampscarp.cpp
index f9ca05e3442..05b72db1734 100644
--- a/src/mame/drivers/ampscarp.cpp
+++ b/src/mame/drivers/ampscarp.cpp
@@ -37,11 +37,10 @@ void ampscarp_state::mem_map(address_map &map)
static INPUT_PORTS_START( ampscarp )
INPUT_PORTS_END
-void ampscarp_state::ampscarp(machine_config &config)
-{
- MC68HC11(config, m_maincpu, 8'000'000); // type and clock unknown
- m_maincpu->set_addrmap(AS_PROGRAM, &ampscarp_state::mem_map);
-}
+MACHINE_CONFIG_START(ampscarp_state::ampscarp)
+ MCFG_DEVICE_ADD("maincpu", MC68HC11, 8'000'000) // type and clock unknown
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+MACHINE_CONFIG_END
ROM_START( ampscarp )
ROM_REGION( 0x20000, "maincpu", 0 )
diff --git a/src/mame/drivers/amspdwy.cpp b/src/mame/drivers/amspdwy.cpp
index 373b1e92627..6e5d3fd4e4c 100644
--- a/src/mame/drivers/amspdwy.cpp
+++ b/src/mame/drivers/amspdwy.cpp
@@ -68,7 +68,7 @@ READ8_MEMBER(amspdwy_state::amspdwy_wheel_1_r)
READ8_MEMBER(amspdwy_state::amspdwy_sound_r)
{
- return (m_ym2151->status_r() & ~0x30) | ioport("IN0")->read();
+ return (m_ym2151->status_r(space, 0) & ~0x30) | ioport("IN0")->read();
}
void amspdwy_state::amspdwy_map(address_map &map)
@@ -247,27 +247,27 @@ void amspdwy_state::machine_reset()
m_wheel_return[1] = 0;
}
-void amspdwy_state::amspdwy(machine_config &config)
-{
+MACHINE_CONFIG_START(amspdwy_state::amspdwy)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 3000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &amspdwy_state::amspdwy_map);
- m_maincpu->set_addrmap(AS_IO, &amspdwy_state::amspdwy_portmap);
- m_maincpu->set_vblank_int("screen", FUNC(amspdwy_state::irq0_line_hold)); /* IRQ: 60Hz, NMI: retn */
+ MCFG_DEVICE_ADD("maincpu", Z80, 3000000)
+ MCFG_DEVICE_PROGRAM_MAP(amspdwy_map)
+ MCFG_DEVICE_IO_MAP(amspdwy_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", amspdwy_state, irq0_line_hold) /* IRQ: 60Hz, NMI: retn */
- Z80(config, m_audiocpu, 3000000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &amspdwy_state::amspdwy_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 3000000)
+ MCFG_DEVICE_PROGRAM_MAP(amspdwy_sound_map)
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 256-1, 0+16, 256-16-1);
- m_screen->set_screen_update(FUNC(amspdwy_state::screen_update_amspdwy));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(amspdwy_state, screen_update_amspdwy)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_amspdwy);
PALETTE(config, m_palette).set_format(palette_device::BGR_233_inverted, 32);
@@ -283,7 +283,7 @@ void amspdwy_state::amspdwy(machine_config &config)
m_ym2151->irq_handler().set_inputline(m_audiocpu, 0);
m_ym2151->add_route(0, "lspeaker", 1.0);
m_ym2151->add_route(1, "rspeaker", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/amstr_pc.cpp b/src/mame/drivers/amstr_pc.cpp
index 3abea11e6d8..80129472ce9 100644
--- a/src/mame/drivers/amstr_pc.cpp
+++ b/src/mame/drivers/amstr_pc.cpp
@@ -503,23 +503,24 @@ void amstrad_pc_state::cfg_fdc(device_t *device)
fdc1->set_default_option("35dd");
}
-void amstrad_pc_state::pc200(machine_config &config)
-{
+MACHINE_CONFIG_START(amstrad_pc_state::pc200)
/* basic machine hardware */
I8086(config, m_maincpu, 8000000);
m_maincpu->set_addrmap(AS_PROGRAM, &amstrad_pc_state::ppc640_map);
m_maincpu->set_addrmap(AS_IO, &amstrad_pc_state::pc200_io);
m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
- PCNOPPI_MOTHERBOARD(config, "mb", 0).set_cputag(m_maincpu);
+ MCFG_PCNOPPI_MOTHERBOARD_ADD("mb", "maincpu")
// FIXME: determine ISA bus clock
- ISA8_SLOT(config, "aga", 0, "mb:isa", pc_isa8_cards, "aga_pc200", true);
- ISA8_SLOT(config, "fdc", 0, "mb:isa", pc_isa8_cards, "fdc_xt", true).set_option_machine_config("fdc_xt", cfg_fdc);
- ISA8_SLOT(config, "com", 0, "mb:isa", pc_isa8_cards, "com", true).set_option_machine_config("com", cfg_com);
+ MCFG_DEVICE_ADD("aga", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "aga_pc200", true)
+ MCFG_DEVICE_ADD("fdc", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", true)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc_xt", cfg_fdc)
+ MCFG_DEVICE_ADD("com", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", true)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("com", cfg_com)
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
/* printer */
pc_lpt_device &lpt0(PC_LPT(config, "lpt_0"));
@@ -533,12 +534,11 @@ void amstrad_pc_state::pc200(machine_config &config)
PC_JOY(config, "pc_joy");
- PC_KEYB(config, m_keyboard);
- m_keyboard->keypress().set("mb:pic8259", FUNC(pic8259_device::ir1_w));
+ MCFG_PC_KEYB_ADD("pc_keyboard", WRITELINE("mb:pic8259", pic8259_device, ir1_w))
/* internal ram */
RAM(config, m_ram).set_default_size("640K").set_extra_options("512K");
-}
+MACHINE_CONFIG_END
void amstrad_pc_state::pc2086(machine_config &config)
{
diff --git a/src/mame/drivers/amstrad.cpp b/src/mame/drivers/amstrad.cpp
index c9280c9a6ed..8fcdc8732fa 100644
--- a/src/mame/drivers/amstrad.cpp
+++ b/src/mame/drivers/amstrad.cpp
@@ -813,7 +813,7 @@ MACHINE_CONFIG_START(amstrad_state::cpcplus_cartslot)
MCFG_GENERIC_MANDATORY
MCFG_GENERIC_LOAD(amstrad_state, amstrad_plus_cartridge)
- SOFTWARE_LIST(config, "cart_list").set_original("gx4000");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "gx4000")
MACHINE_CONFIG_END
void cpc464_exp_cards(device_slot_interface &device)
@@ -905,12 +905,12 @@ void amstrad_centronics_devices(device_slot_interface &device)
MACHINE_CONFIG_START(amstrad_state::amstrad_base)
/* Machine hardware */
- Z80(config, m_maincpu, 16_MHz_XTAL / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &amstrad_state::amstrad_mem);
- m_maincpu->set_addrmap(AS_IO, &amstrad_state::amstrad_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(amstrad_state::amstrad_cpu_acknowledge_int));
+ MCFG_DEVICE_ADD("maincpu", Z80, 16_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(amstrad_mem)
+ MCFG_DEVICE_IO_MAP(amstrad_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(amstrad_state,amstrad_cpu_acknowledge_int)
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
MCFG_MACHINE_START_OVERRIDE(amstrad_state, amstrad )
MCFG_MACHINE_RESET_OVERRIDE(amstrad_state, amstrad )
@@ -922,12 +922,12 @@ MACHINE_CONFIG_START(amstrad_state::amstrad_base)
ppi.out_pc_callback().set(FUNC(amstrad_state::amstrad_ppi_portc_w));
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(16_MHz_XTAL, 1024, 32, 32 + 640 + 64, 312, 56 + 15, 200 + 15);
- m_screen->set_screen_update(FUNC(amstrad_state::screen_update_amstrad));
- m_screen->screen_vblank().set(FUNC(amstrad_state::screen_vblank_amstrad));
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(16_MHz_XTAL, 1024, 32, 32 + 640 + 64, 312, 56 + 15, 200 + 15)
+ MCFG_SCREEN_UPDATE_DRIVER(amstrad_state, screen_update_amstrad)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, amstrad_state, screen_vblank_amstrad))
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(amstrad_state::amstrad_cpc_palette), 32);
@@ -944,29 +944,28 @@ MACHINE_CONFIG_START(amstrad_state::amstrad_base)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
AY8912(config, m_ay, 16_MHz_XTAL / 16);
m_ay->port_a_read_callback().set(FUNC(amstrad_state::amstrad_psg_porta_read));
m_ay->add_route(ALL_OUTPUTS, "mono", 0.25);
/* printer */
- CENTRONICS(config, m_centronics, amstrad_centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(amstrad_state::write_centronics_busy));
+ MCFG_DEVICE_ADD("centronics", CENTRONICS, amstrad_centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, amstrad_state, write_centronics_busy))
/* snapshot */
- MCFG_SNAPSHOT_ADD("snapshot", amstrad_state, amstrad, "sna")
+ MCFG_SNAPSHOT_ADD("snapshot", amstrad_state, amstrad, "sna", 0)
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(cdt_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("cpc_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(cdt_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("cpc_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("cpc_cass");
+ MCFG_SOFTWARE_LIST_ADD("cass_list","cpc_cass")
MACHINE_CONFIG_END
-void amstrad_state::cpc464(machine_config &config)
-{
+MACHINE_CONFIG_START(amstrad_state::cpc464)
amstrad_base(config);
cpc_expansion_slot_device &exp(CPC_EXPANSION_SLOT(config, "exp", 16_MHz_XTAL / 4, cpc464_exp_cards, nullptr));
@@ -978,15 +977,14 @@ void amstrad_state::cpc464(machine_config &config)
/* internal ram */
RAM(config, m_ram).set_default_size("64K").set_extra_options("128K,320K,576K");
-}
+MACHINE_CONFIG_END
-void amstrad_state::cpc664(machine_config &config)
-{
+MACHINE_CONFIG_START(amstrad_state::cpc664)
amstrad_base(config);
UPD765A(config, m_fdc, 16_MHz_XTAL / 4, true, true);
- FLOPPY_CONNECTOR(config, "upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_floppy_formats);
- SOFTWARE_LIST(config, "flop_list").set_original("cpc_flop");
+ MCFG_FLOPPY_DRIVE_ADD("upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_SOFTWARE_LIST_ADD("flop_list","cpc_flop")
cpc_expansion_slot_device &exp(CPC_EXPANSION_SLOT(config, "exp", 16_MHz_XTAL / 4, cpc_exp_cards, nullptr));
exp.set_cpu_tag(m_maincpu);
@@ -997,15 +995,14 @@ void amstrad_state::cpc664(machine_config &config)
/* internal ram */
RAM(config, m_ram).set_default_size("64K").set_extra_options("128K,320K,576K");
-}
+MACHINE_CONFIG_END
-void amstrad_state::cpc6128(machine_config &config)
-{
+MACHINE_CONFIG_START(amstrad_state::cpc6128)
amstrad_base(config);
UPD765A(config, m_fdc, 16_MHz_XTAL / 4, true, true);
- FLOPPY_CONNECTOR(config, "upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_floppy_formats);
- SOFTWARE_LIST(config, "flop_list").set_original("cpc_flop");
+ MCFG_FLOPPY_DRIVE_ADD("upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_SOFTWARE_LIST_ADD("flop_list","cpc_flop")
cpc_expansion_slot_device &exp(CPC_EXPANSION_SLOT(config, "exp", 16_MHz_XTAL / 4, cpc_exp_cards, nullptr));
exp.set_cpu_tag(m_maincpu);
@@ -1016,27 +1013,26 @@ void amstrad_state::cpc6128(machine_config &config)
/* internal ram */
RAM(config, m_ram).set_default_size("128K").set_extra_options("320K,576K");
-}
+MACHINE_CONFIG_END
-void amstrad_state::kccomp(machine_config &config)
-{
+MACHINE_CONFIG_START(amstrad_state::kccomp)
cpc6128(config);
MCFG_MACHINE_START_OVERRIDE(amstrad_state,kccomp)
MCFG_MACHINE_RESET_OVERRIDE(amstrad_state,kccomp)
m_palette->set_init(FUNC(amstrad_state::kccomp_palette));
-}
+MACHINE_CONFIG_END
MACHINE_CONFIG_START(amstrad_state::cpcplus)
/* Machine hardware */
- Z80(config, m_maincpu, 40_MHz_XTAL / 10);
- m_maincpu->set_addrmap(AS_PROGRAM, &amstrad_state::amstrad_mem);
- m_maincpu->set_addrmap(AS_IO, &amstrad_state::amstrad_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(amstrad_state::amstrad_cpu_acknowledge_int));
+ MCFG_DEVICE_ADD("maincpu", Z80, 40_MHz_XTAL / 10)
+ MCFG_DEVICE_PROGRAM_MAP(amstrad_mem)
+ MCFG_DEVICE_IO_MAP(amstrad_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(amstrad_state,amstrad_cpu_acknowledge_int)
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
MCFG_MACHINE_START_OVERRIDE(amstrad_state, plus )
MCFG_MACHINE_RESET_OVERRIDE(amstrad_state, plus )
@@ -1048,12 +1044,12 @@ MACHINE_CONFIG_START(amstrad_state::cpcplus)
ppi.out_pc_callback().set(FUNC(amstrad_state::amstrad_ppi_portc_w));
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw((40_MHz_XTAL * 2) / 5, 1024, 32, 32 + 640 + 64, 312, 56 + 15, 200 + 15);
- m_screen->set_screen_update(FUNC(amstrad_state::screen_update_amstrad));
- m_screen->screen_vblank().set(FUNC(amstrad_state::screen_vblank_amstrad));
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS((40_MHz_XTAL * 2) / 5, 1024, 32, 32 + 640 + 64, 312, 56 + 15, 200 + 15)
+ MCFG_SCREEN_UPDATE_DRIVER(amstrad_state, screen_update_amstrad)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, amstrad_state, screen_vblank_amstrad))
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(amstrad_state::amstrad_plus_palette), 4096);
@@ -1069,31 +1065,31 @@ MACHINE_CONFIG_START(amstrad_state::cpcplus)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
AY8912(config, m_ay, 40_MHz_XTAL / 40);
m_ay->port_a_read_callback().set(FUNC(amstrad_state::amstrad_psg_porta_read));
m_ay->add_route(ALL_OUTPUTS, "mono", 0.25);
/* printer */
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(amstrad_state::write_centronics_busy));
+ MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, amstrad_state, write_centronics_busy))
/* snapshot */
- MCFG_SNAPSHOT_ADD("snapshot", amstrad_state, amstrad, "sna")
+ MCFG_SNAPSHOT_ADD("snapshot", amstrad_state, amstrad, "sna", 0)
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(cdt_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("cpc_cass");
- SOFTWARE_LIST(config, "cass_list").set_original("cpc_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(cdt_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("cpc_cass")
+ MCFG_SOFTWARE_LIST_ADD("cass_list","cpc_cass")
UPD765A(config, m_fdc, 40_MHz_XTAL / 10, true, true);
cpcplus_cartslot(config);
- FLOPPY_CONNECTOR(config, "upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_floppy_formats);
- SOFTWARE_LIST(config, "flop_list").set_original("cpc_flop");
+ MCFG_FLOPPY_DRIVE_ADD("upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_SOFTWARE_LIST_ADD("flop_list","cpc_flop")
cpc_expansion_slot_device &exp(CPC_EXPANSION_SLOT(config, "exp", 40_MHz_XTAL / 10, cpcplus_exp_cards, nullptr));
exp.set_cpu_tag(m_maincpu);
@@ -1107,15 +1103,14 @@ MACHINE_CONFIG_START(amstrad_state::cpcplus)
MACHINE_CONFIG_END
-void amstrad_state::gx4000(machine_config &config)
-{
+MACHINE_CONFIG_START(amstrad_state::gx4000)
/* Machine hardware */
- Z80(config, m_maincpu, 40_MHz_XTAL / 10);
- m_maincpu->set_addrmap(AS_PROGRAM, &amstrad_state::amstrad_mem);
- m_maincpu->set_addrmap(AS_IO, &amstrad_state::amstrad_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(amstrad_state::amstrad_cpu_acknowledge_int));
+ MCFG_DEVICE_ADD("maincpu", Z80, 40_MHz_XTAL / 10)
+ MCFG_DEVICE_PROGRAM_MAP(amstrad_mem)
+ MCFG_DEVICE_IO_MAP(amstrad_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(amstrad_state,amstrad_cpu_acknowledge_int)
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
MCFG_MACHINE_START_OVERRIDE(amstrad_state, gx4000 )
MCFG_MACHINE_RESET_OVERRIDE(amstrad_state, gx4000 )
@@ -1127,12 +1122,12 @@ void amstrad_state::gx4000(machine_config &config)
ppi.out_pc_callback().set(FUNC(amstrad_state::amstrad_ppi_portc_w));
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw((40_MHz_XTAL * 2) / 5, 1024, 32, 32 + 640 + 64, 312, 56 + 15, 200 + 15);
- m_screen->set_screen_update(FUNC(amstrad_state::screen_update_amstrad));
- m_screen->screen_vblank().set(FUNC(amstrad_state::screen_vblank_amstrad));
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS((40_MHz_XTAL * 2) / 5, 1024, 32, 32 + 640 + 64, 312, 56 + 15, 200 + 15)
+ MCFG_SCREEN_UPDATE_DRIVER(amstrad_state, screen_update_amstrad)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, amstrad_state, screen_vblank_amstrad))
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(amstrad_state::amstrad_plus_palette), 4096);
@@ -1156,11 +1151,10 @@ void amstrad_state::gx4000(machine_config &config)
/* internal ram */
RAM(config, m_ram).set_default_size("64K");
-}
+MACHINE_CONFIG_END
-void amstrad_state::aleste(machine_config &config)
-{
+MACHINE_CONFIG_START(amstrad_state::aleste)
cpc6128(config);
MCFG_MACHINE_START_OVERRIDE(amstrad_state,aleste)
MCFG_MACHINE_RESET_OVERRIDE(amstrad_state,aleste)
@@ -1172,7 +1166,7 @@ void amstrad_state::aleste(machine_config &config)
m_palette->set_entries(32+64);
m_palette->set_init(FUNC(amstrad_state::aleste_palette));
- MC146818(config, m_rtc, 4.194304_MHz_XTAL);
+ MCFG_DEVICE_ADD("rtc", MC146818, 4.194304_MHz_XTAL)
I8272A(config.replace(), m_fdc, 16_MHz_XTAL / 4, true);
@@ -1183,15 +1177,16 @@ void amstrad_state::aleste(machine_config &config)
exp.romdis_callback().set(FUNC(amstrad_state::cpc_romdis)); // ROMDIS
exp.rom_select_callback().set(FUNC(amstrad_state::rom_select));
- FLOPPY_CONNECTOR(config, "upd765:0", aleste_floppies, "35dd", amstrad_state::aleste_floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765:1", aleste_floppies, "35dd", amstrad_state::aleste_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("upd765:0", aleste_floppies, "35dd", amstrad_state::aleste_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765:1", aleste_floppies, "35dd", amstrad_state::aleste_floppy_formats)
- SOFTWARE_LIST(config.replace(), "flop_list").set_original("aleste");
- SOFTWARE_LIST(config, "cpc_list").set_compatible("cpc_flop");
+ MCFG_DEVICE_REMOVE("flop_list")
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "aleste")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cpc_list", "cpc_flop")
/* internal ram */
m_ram->set_default_size("2M");
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/amusco.cpp b/src/mame/drivers/amusco.cpp
index aa5cf9db461..e349c69ccc5 100644
--- a/src/mame/drivers/amusco.cpp
+++ b/src/mame/drivers/amusco.cpp
@@ -139,8 +139,8 @@ private:
MC6845_UPDATE_ROW(update_row);
void amusco_palette(palette_device &palette) const;
- void mem_map(address_map &map);
- void io_map(address_map &map);
+ void amusco_mem_map(address_map &map);
+ void amusco_io_map(address_map &map);
std::unique_ptr<uint8_t []> m_videoram;
tilemap_t *m_bg_tilemap;
@@ -209,25 +209,25 @@ void amusco_state::machine_start()
* Memory Map Information *
*************************/
-void amusco_state::mem_map(address_map &map)
+void amusco_state::amusco_mem_map(address_map &map)
{
map(0x00000, 0x0ffff).ram();
- map(0xf8000, 0xfffff).rom().region("maincpu", 0);
+ map(0xf8000, 0xfffff).rom();
}
READ8_MEMBER( amusco_state::mc6845_r)
{
if(offset & 1)
- return m_crtc->register_r();
+ return m_crtc->register_r(space, 0);
- return m_crtc->status_r(); // not a plain 6845, requests update bit here ...
+ return m_crtc->status_r(space,0); // not a plain 6845, requests update bit here ...
}
WRITE8_MEMBER( amusco_state::mc6845_w)
{
if(offset & 1)
{
- m_crtc->register_w(data);
+ m_crtc->register_w(space, 0,data);
if(m_mc6845_address == 0x12)
m_video_update_address = ((data & 0xff) << 8) | (m_video_update_address & 0x00ff);
if(m_mc6845_address == 0x13)
@@ -235,7 +235,7 @@ WRITE8_MEMBER( amusco_state::mc6845_w)
}
else
{
- m_crtc->address_w(data);
+ m_crtc->address_w(space,0,data);
m_mc6845_address = data;
}
}
@@ -365,14 +365,14 @@ WRITE8_MEMBER(amusco_state::rtc_control_w)
m_rtc->read_w(BIT(data, 4));
}
-void amusco_state::io_map(address_map &map)
+void amusco_state::amusco_io_map(address_map &map)
{
map(0x0000, 0x0001).rw(FUNC(amusco_state::mc6845_r), FUNC(amusco_state::mc6845_w));
map(0x0010, 0x0011).w(m_pic, FUNC(pic8259_device::write));
map(0x0020, 0x0023).w(m_pit, FUNC(pit8253_device::write));
map(0x0030, 0x0033).rw("ppi_outputs", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0x0040, 0x0043).rw("ppi_inputs", FUNC(i8255_device::read), FUNC(i8255_device::write));
- map(0x0060, 0x0060).w("sn", FUNC(sn76489a_device::write));
+ map(0x0060, 0x0060).w("sn", FUNC(sn76489a_device::command_w));
map(0x0070, 0x0071).w(FUNC(amusco_state::vram_w));
map(0x0280, 0x0283).rw("lpt_interface", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
map(0x0380, 0x0383).rw("rtc_interface", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
@@ -532,12 +532,12 @@ void amusco_state::amusco_palette(palette_device &palette) const
* Machine Drivers *
*************************/
-void amusco_state::amusco(machine_config &config)
-{
+MACHINE_CONFIG_START(amusco_state::amusco)
+
/* basic machine hardware */
I8088(config, m_maincpu, CPU_CLOCK); // 5 MHz ?
- m_maincpu->set_addrmap(AS_PROGRAM, &amusco_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &amusco_state::io_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &amusco_state::amusco_mem_map);
+ m_maincpu->set_addrmap(AS_IO, &amusco_state::amusco_io_map);
m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
PIC8259(config, m_pic, 0);
@@ -571,15 +571,15 @@ void amusco_state::amusco(machine_config &config)
i8155b.in_pc_callback().set(m_rtc, FUNC(msm5832_device::data_r));
i8155b.out_pc_callback().set(m_rtc, FUNC(msm5832_device::data_w));
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(30), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(30), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(88*8, 27*10); // screen size: 88*8 27*10
- m_screen->set_visarea(0*8, 74*8-1, 0*10, 24*10-1); // visible scr: 74*8 24*10
- m_screen->set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(88*8, 27*10) // screen size: 88*8 27*10
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 74*8-1, 0*10, 24*10-1) // visible scr: 74*8 24*10
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
GFXDECODE(config, m_gfxdecode, "palette", gfx_amusco);
PALETTE(config, "palette", FUNC(amusco_state::amusco_palette), 8*8);
@@ -595,22 +595,23 @@ void amusco_state::amusco(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489A(config, "sn", SND_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+ MCFG_DEVICE_ADD("sn", SN76489A, SND_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
-void amusco_state::draw88pkr(machine_config &config)
-{
+MACHINE_CONFIG_START(amusco_state::draw88pkr)
amusco(config);
//MCFG_DEVICE_MODIFY("ppi_outputs") // Some bits are definitely different
-}
+MACHINE_CONFIG_END
+
/*************************
* Rom Load *
*************************/
ROM_START( amusco )
- ROM_REGION( 0x8000, "maincpu", 0 )
- ROM_LOAD( "pk_v1.4_u42.u42", 0x0000, 0x8000, CRC(bf57d7b1) SHA1(fc8b062b12c241c6c096325f728305316b80be8b) )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "pk_v1.4_u42.u42", 0xf8000, 0x08000, CRC(bf57d7b1) SHA1(fc8b062b12c241c6c096325f728305316b80be8b) )
ROM_REGION( 0xc000, "gfx1", 0 )
ROM_LOAD( "char_a_u35.u35", 0x0000, 0x4000, CRC(ded67ef6) SHA1(da7326c190211e956e5a5f763d5045615bb8ffb3) )
@@ -637,8 +638,8 @@ ROM_END
*/
ROM_START( draw88pkr )
- ROM_REGION( 0x8000, "maincpu", 0 )
- ROM_LOAD( "u42.bin", 0x0000, 0x8000, CRC(e98a7cfd) SHA1(8dc581c3e0cfd78bd33fbbbafd40307cf66f154d) )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "u42.bin", 0xf8000, 0x08000, CRC(e98a7cfd) SHA1(8dc581c3e0cfd78bd33fbbbafd40307cf66f154d) )
ROM_REGION( 0xc000, "gfx1", 0 )
ROM_LOAD( "u35.bin", 0x0000, 0x4000, CRC(f608019a) SHA1(f0c5e10a03f39976d9bc6e8bc9f78e30ffefa03e) )
@@ -646,10 +647,11 @@ ROM_START( draw88pkr )
ROM_LOAD( "u37.bin", 0x8000, 0x4000, CRC(6e23b9f2) SHA1(6916828d84d1ecb44dc454e6786f97801a8550c7) )
ROM_END
+
/*************************
* Game Drivers *
*************************/
-/* YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
-GAMEL( 1987, amusco, 0, amusco, amusco, amusco_state, empty_init, ROT0, "Amusco", "American Music Poker (V1.4)", MACHINE_IMPERFECT_COLORS | MACHINE_NODEVICE_PRINTER, layout_amusco ) // palette totally wrong
-GAMEL( 1988, draw88pkr, 0, draw88pkr, draw88pkr, amusco_state, empty_init, ROT0, "BTE, Inc.", "Draw 88 Poker (V2.0)", MACHINE_IMPERFECT_COLORS | MACHINE_NODEVICE_PRINTER, layout_amusco ) // palette totally wrong
+/* YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
+GAMEL( 1987, amusco, 0, amusco, amusco, amusco_state, empty_init, ROT0, "Amusco", "American Music Poker (V1.4)", MACHINE_IMPERFECT_COLORS | MACHINE_NODEVICE_PRINTER, layout_amusco ) // palette totally wrong
+GAMEL( 1988, draw88pkr, 0, draw88pkr, draw88pkr, amusco_state, empty_init, ROT0, "BTE, Inc.", "Draw 88 Poker (V2.0)", MACHINE_IMPERFECT_COLORS | MACHINE_NODEVICE_PRINTER, layout_amusco ) // palette totally wrong
diff --git a/src/mame/drivers/amust.cpp b/src/mame/drivers/amust.cpp
index 282c61e12f5..146ac9ed961 100644
--- a/src/mame/drivers/amust.cpp
+++ b/src/mame/drivers/amust.cpp
@@ -433,26 +433,26 @@ void amust_state::init_amust()
membank("bankw0")->configure_entry(0, &main[0xf800]);
}
-void amust_state::amust(machine_config &config)
-{
+MACHINE_CONFIG_START(amust_state::amust)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(16'000'000) / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &amust_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &amust_state::io_map);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(16'000'000) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
PALETTE(config, m_palette, palette_device::MONOCHROME);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_amust);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_amust)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beep, 800).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("beeper", BEEP, 800)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
h46505_device &crtc(H46505(config, "crtc", XTAL(14'318'181) / 8));
@@ -466,8 +466,10 @@ void amust_state::amust(machine_config &config)
UPD765A(config, m_fdc, 8'000'000, true, true);
m_fdc->drq_wr_callback().set(FUNC(amust_state::drq_w));
m_fdc->intrq_wr_callback().set(FUNC(amust_state::intrq_w));
- FLOPPY_CONNECTOR(config, "fdc:0", amust_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", amust_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", amust_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", amust_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
clock_device &uart_clock(CLOCK(config, "uart_clock", 153600));
uart_clock.signal_handler().set("uart1", FUNC(i8251_device::write_txc));
@@ -503,7 +505,7 @@ void amust_state::amust(machine_config &config)
ppi2.in_pb_callback().set(FUNC(amust_state::port09_r));
ppi2.in_pc_callback().set(FUNC(amust_state::port0a_r));
ppi2.out_pc_callback().set(FUNC(amust_state::port0a_w));
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( amust )
diff --git a/src/mame/drivers/anes.cpp b/src/mame/drivers/anes.cpp
index 44a6d42b748..c7370d40d4a 100644
--- a/src/mame/drivers/anes.cpp
+++ b/src/mame/drivers/anes.cpp
@@ -156,29 +156,29 @@ void anes_state::machine_start()
-void anes_state::anes(machine_config &config)
-{
+MACHINE_CONFIG_START(anes_state::anes)
/* basic machine hardware */
- z80_device &maincpu(Z80(config, "maincpu", XTAL(16'000'000) / 2)); // Z0840008PSC
- maincpu.set_addrmap(AS_PROGRAM, &anes_state::prg_map);
- maincpu.set_addrmap(AS_IO, &anes_state::io_map);
- maincpu.set_vblank_int("screen", FUNC(anes_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(16'000'000) / 2) // Z0840008PSC
+ MCFG_DEVICE_PROGRAM_MAP(prg_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", anes_state, irq0_line_hold)
// all wrong
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(anes_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(anes_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, "palette").set_entries(0x100);
+ MCFG_PALETTE_ADD("palette", 0x100)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM2413(config, "ym", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+ MCFG_DEVICE_ADD("ym", YM2413, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
ROM_START( tonpuu )
diff --git a/src/mame/drivers/angelkds.cpp b/src/mame/drivers/angelkds.cpp
index e0f25bd9269..61d9033b961 100644
--- a/src/mame/drivers/angelkds.cpp
+++ b/src/mame/drivers/angelkds.cpp
@@ -81,8 +81,6 @@ Space Position (JPN Ver.)
(c)1986 Sega / Nasco
X090-PC-A 171-5383
X090-PC-B 171-5384
-834-6089 SPACE POSITION
-Sticker reading 860723.0883E
CPU :D317-0005 (NEC Z80 Custom)
@@ -92,26 +90,26 @@ OSC :4.000MHz 6.000MHz
:18.432MHz
-EPR-10120.C1 prg
-EPR-10121.C2 |
-EPR-10122.C3 |
-EPR-10123.C4 |
-EPR-10124.C5 |
-EPR-10125.C10/
+EPR10120.C1 prg
+EPR10121.C2 |
+EPR10122.C3 |
+EPR10123.C4 |
+EPR10124.C5 |
+EPR10125.C10 /
-EPR-10126.D4 snd
+EPR10126.D4 snd
-EPR-10127.06
-EPR-10128.07
-EPR-10129.08
-EPR-10130.14
-EPR-10131.15
-EPR-10132.16
+EPR10127.06
+EPR10128.07
+EPR10129.08
+EPR10130.14
+EPR10131.15
+EPR10132.16
-EPR-10133.17
+EPR10133.17
-EPR-10134.18
-EPR-10135.19
+EPR10134.18
+EPR10135.19
63S081N.U5
@@ -600,82 +598,82 @@ void angelkds_state::spcpostn(machine_config &config)
ROM_START( angelkds )
/* Nasco X090-PC-A (Sega 837-6600) */
ROM_REGION( 0x8000, "maincpu", 0 )
- ROM_LOAD( "epr-11428.c10", 0x00000, 0x08000, CRC(90daacd2) SHA1(7e50ad1cbed0c1e6bad04ef1611cad25538c905f) )
+ ROM_LOAD( "11428.c10", 0x00000, 0x08000, CRC(90daacd2) SHA1(7e50ad1cbed0c1e6bad04ef1611cad25538c905f) )
ROM_REGION( 0x40000, "user1", 0 ) /* Banked Code */
- ROM_LOAD( "epr-11424.c1", 0x00000, 0x08000, CRC(b55997f6) SHA1(7ed746becac1851f39591f1fdbeff64aa97d6206) )
- ROM_LOAD( "epr-11425.c2", 0x08000, 0x08000, CRC(299359de) SHA1(f531dd3bfe6f64e9e043cb4f85d5657455241dc7) )
- ROM_LOAD( "epr-11426.c3", 0x10000, 0x08000, CRC(5fad8bd3) SHA1(4d865342eb10dcfb779eee4ac1e159bb9ec140cb) )
- ROM_LOAD( "epr-11427.c4", 0x18000, 0x08000, CRC(ef920c74) SHA1(81c0fbe4ace5441e4cd99ba423e0190cc541da31) )
+ ROM_LOAD( "11424.c1", 0x00000, 0x08000, CRC(b55997f6) SHA1(7ed746becac1851f39591f1fdbeff64aa97d6206) )
+ ROM_LOAD( "11425.c2", 0x08000, 0x08000, CRC(299359de) SHA1(f531dd3bfe6f64e9e043cb4f85d5657455241dc7) )
+ ROM_LOAD( "11426.c3", 0x10000, 0x08000, CRC(5fad8bd3) SHA1(4d865342eb10dcfb779eee4ac1e159bb9ec140cb) )
+ ROM_LOAD( "11427.c4", 0x18000, 0x08000, CRC(ef920c74) SHA1(81c0fbe4ace5441e4cd99ba423e0190cc541da31) )
ROM_REGION( 0x10000, "sub", 0 )
- ROM_LOAD( "epr-11429.d4", 0x00000, 0x08000, CRC(0ca50a66) SHA1(cccb081b447419138b1ebd309e7f291e392a44d5) )
+ ROM_LOAD( "11429.d4", 0x00000, 0x08000, CRC(0ca50a66) SHA1(cccb081b447419138b1ebd309e7f291e392a44d5) )
/* Nasco X090-PC-B */
ROM_REGION( 0x08000, "gfx1", 0 )
- ROM_LOAD( "epr-11446", 0x00000, 0x08000, CRC(45052470) SHA1(c2312a9f814d6dbe42aa465147a04a2bd9b2aa1b) )
+ ROM_LOAD( "11446", 0x00000, 0x08000, CRC(45052470) SHA1(c2312a9f814d6dbe42aa465147a04a2bd9b2aa1b) )
ROM_REGION( 0x10000, "gfx2", 0 )
- ROM_LOAD( "epr-11447.f7", 0x08000, 0x08000, CRC(b3afc5b3) SHA1(376d527f60e9044f18d19a5535bca77606efbd4c) )
- ROM_LOAD( "epr-11448.h7", 0x00000, 0x08000, CRC(05dab626) SHA1(73feaca6e23c673a7d8c9e972714b20bd8f2d51e) )
+ ROM_LOAD( "11447.f7", 0x08000, 0x08000, CRC(b3afc5b3) SHA1(376d527f60e9044f18d19a5535bca77606efbd4c) )
+ ROM_LOAD( "11448.h7", 0x00000, 0x08000, CRC(05dab626) SHA1(73feaca6e23c673a7d8c9e972714b20bd8f2d51e) )
/* both tilemaps on angelkds use the same gfx */
ROM_REGION( 0x40000, "gfx3", 0 )
- ROM_LOAD( "epr-11437", 0x00000, 0x08000, CRC(a520b628) SHA1(2b51f59e760e740e5e6b06dad61bbc23fc84a72b) )
- ROM_LOAD( "epr-11436", 0x08000, 0x08000, CRC(469ab216) SHA1(8223f072a6f9135ff84841c95410368bcea073d8) )
- ROM_LOAD( "epr-11435", 0x10000, 0x08000, CRC(b0f8c245) SHA1(882e27eaceac46c397fdae8427a082caa7d6b7dc) )
- ROM_LOAD( "epr-11434", 0x18000, 0x08000, CRC(cbde81f5) SHA1(5d5b8e709c9dd09a45dfced6f3d4a9c52500da6b) )
- ROM_LOAD( "epr-11433", 0x20000, 0x08000, CRC(b63fa414) SHA1(25adcafd7e17ab0be0fed2ec44245124febd74b3) )
- ROM_LOAD( "epr-11432", 0x28000, 0x08000, CRC(00dc747b) SHA1(041b73aa48b45162af33b5f416ccc0c0dbbd995b) )
- ROM_LOAD( "epr-11431", 0x30000, 0x08000, CRC(ac2025af) SHA1(2aba145df3ccdb1a7f0fec524bd2de3f9aab4161) )
- ROM_LOAD( "epr-11430", 0x38000, 0x08000, CRC(d640f89e) SHA1(38fb67bcb2a3d1ad614fc62e42f22a66bc757137) )
+ ROM_LOAD( "11437", 0x00000, 0x08000, CRC(a520b628) SHA1(2b51f59e760e740e5e6b06dad61bbc23fc84a72b) )
+ ROM_LOAD( "11436", 0x08000, 0x08000, CRC(469ab216) SHA1(8223f072a6f9135ff84841c95410368bcea073d8) )
+ ROM_LOAD( "11435", 0x10000, 0x08000, CRC(b0f8c245) SHA1(882e27eaceac46c397fdae8427a082caa7d6b7dc) )
+ ROM_LOAD( "11434", 0x18000, 0x08000, CRC(cbde81f5) SHA1(5d5b8e709c9dd09a45dfced6f3d4a9c52500da6b) )
+ ROM_LOAD( "11433", 0x20000, 0x08000, CRC(b63fa414) SHA1(25adcafd7e17ab0be0fed2ec44245124febd74b3) )
+ ROM_LOAD( "11432", 0x28000, 0x08000, CRC(00dc747b) SHA1(041b73aa48b45162af33b5f416ccc0c0dbbd995b) )
+ ROM_LOAD( "11431", 0x30000, 0x08000, CRC(ac2025af) SHA1(2aba145df3ccdb1a7f0fec524bd2de3f9aab4161) )
+ ROM_LOAD( "11430", 0x38000, 0x08000, CRC(d640f89e) SHA1(38fb67bcb2a3d1ad614fc62e42f22a66bc757137) )
ROM_REGION( 0x40000, "gfx4", 0 )
- ROM_LOAD( "epr-11445", 0x00000, 0x08000, CRC(a520b628) SHA1(2b51f59e760e740e5e6b06dad61bbc23fc84a72b) )
- ROM_LOAD( "epr-11444", 0x08000, 0x08000, CRC(469ab216) SHA1(8223f072a6f9135ff84841c95410368bcea073d8) )
- ROM_LOAD( "epr-11443", 0x10000, 0x08000, CRC(b0f8c245) SHA1(882e27eaceac46c397fdae8427a082caa7d6b7dc) )
- ROM_LOAD( "epr-11442", 0x18000, 0x08000, CRC(cbde81f5) SHA1(5d5b8e709c9dd09a45dfced6f3d4a9c52500da6b) )
- ROM_LOAD( "epr-11441", 0x20000, 0x08000, CRC(b63fa414) SHA1(25adcafd7e17ab0be0fed2ec44245124febd74b3) )
- ROM_LOAD( "epr-11440", 0x28000, 0x08000, CRC(00dc747b) SHA1(041b73aa48b45162af33b5f416ccc0c0dbbd995b) )
- ROM_LOAD( "epr-11439", 0x30000, 0x08000, CRC(ac2025af) SHA1(2aba145df3ccdb1a7f0fec524bd2de3f9aab4161) )
- ROM_LOAD( "epr-11438", 0x38000, 0x08000, CRC(d640f89e) SHA1(38fb67bcb2a3d1ad614fc62e42f22a66bc757137) )
+ ROM_LOAD( "11445", 0x00000, 0x08000, CRC(a520b628) SHA1(2b51f59e760e740e5e6b06dad61bbc23fc84a72b) )
+ ROM_LOAD( "11444", 0x08000, 0x08000, CRC(469ab216) SHA1(8223f072a6f9135ff84841c95410368bcea073d8) )
+ ROM_LOAD( "11443", 0x10000, 0x08000, CRC(b0f8c245) SHA1(882e27eaceac46c397fdae8427a082caa7d6b7dc) )
+ ROM_LOAD( "11442", 0x18000, 0x08000, CRC(cbde81f5) SHA1(5d5b8e709c9dd09a45dfced6f3d4a9c52500da6b) )
+ ROM_LOAD( "11441", 0x20000, 0x08000, CRC(b63fa414) SHA1(25adcafd7e17ab0be0fed2ec44245124febd74b3) )
+ ROM_LOAD( "11440", 0x28000, 0x08000, CRC(00dc747b) SHA1(041b73aa48b45162af33b5f416ccc0c0dbbd995b) )
+ ROM_LOAD( "11439", 0x30000, 0x08000, CRC(ac2025af) SHA1(2aba145df3ccdb1a7f0fec524bd2de3f9aab4161) )
+ ROM_LOAD( "11438", 0x38000, 0x08000, CRC(d640f89e) SHA1(38fb67bcb2a3d1ad614fc62e42f22a66bc757137) )
ROM_REGION( 0x20, "proms", 0 )
ROM_LOAD( "63s081n.u5", 0x00, 0x20, CRC(36b98627) SHA1(d2d54d92d1d47e7cc85104989ee421ce5d80a42a) )
ROM_END
ROM_START( spcpostn )
- /* X090-PC-A 171-5383 (Sega 834-6089 SPACE POSITION) */
+ /* X090-PC-A 171-5383 */
ROM_REGION( 0x8000, "maincpu", 0 ) /* D317-0005 (NEC Z80 Custom) */
- ROM_LOAD( "epr-10125.c10", 0x00000, 0x08000, CRC(bffd38c6) SHA1(af02907124343ddecd21439d25f1ebb81ef9f51a) ) /* encrypted */
+ ROM_LOAD( "epr10125.c10", 0x00000, 0x08000, CRC(bffd38c6) SHA1(af02907124343ddecd21439d25f1ebb81ef9f51a) ) /* encrypted */
ROM_REGION( 0x40000, "user1", 0 ) /* Banked Code */
- ROM_LOAD( "epr-10120.c1", 0x00000, 0x08000, CRC(d6399f99) SHA1(4c7d19a8798e5a10b688bf793ca74f5170fd9b51) )
- ROM_LOAD( "epr-10121.c2", 0x08000, 0x08000, CRC(d4861560) SHA1(74d28c36a08880abbd3c398cc3e990e8986caccb) )
- ROM_LOAD( "epr-10122.c3", 0x10000, 0x08000, CRC(7a1bff1b) SHA1(e1bda8430fd632c1813dd78e0f210a358e1b0d2f) )
- ROM_LOAD( "epr-10123.c4", 0x18000, 0x08000, CRC(6aed2925) SHA1(75848c8086c460b72494da2367f592d7d5dcf9f1) )
- ROM_LOAD( "epr-10124.c5", 0x20000, 0x08000, CRC(a1d7ae6b) SHA1(ec81fecf63e0515cae2077e2623262227adfdf37) )
+ ROM_LOAD( "epr10120.c1", 0x00000, 0x08000, CRC(d6399f99) SHA1(4c7d19a8798e5a10b688bf793ca74f5170fd9b51) )
+ ROM_LOAD( "epr10121.c2", 0x08000, 0x08000, CRC(d4861560) SHA1(74d28c36a08880abbd3c398cc3e990e8986caccb) )
+ ROM_LOAD( "epr10122.c3", 0x10000, 0x08000, CRC(7a1bff1b) SHA1(e1bda8430fd632c1813dd78e0f210a358e1b0d2f) )
+ ROM_LOAD( "epr10123.c4", 0x18000, 0x08000, CRC(6aed2925) SHA1(75848c8086c460b72494da2367f592d7d5dcf9f1) )
+ ROM_LOAD( "epr10124.c5", 0x20000, 0x08000, CRC(a1d7ae6b) SHA1(ec81fecf63e0515cae2077e2623262227adfdf37) )
ROM_REGION( 0x10000, "sub", 0 ) /* NEC D780C-1 */
- ROM_LOAD( "epr-10126.d4", 0x00000, 0x08000, CRC(ab17f852) SHA1(dc0db427ddb4df97bb40dfb6fc65cb9354a6b9ad) )
+ ROM_LOAD( "epr10126.d4", 0x00000, 0x08000, CRC(ab17f852) SHA1(dc0db427ddb4df97bb40dfb6fc65cb9354a6b9ad) )
/* X090-PC-B 171-5384 */
ROM_REGION( 0x08000, "gfx1", 0 )
- ROM_LOAD( "epr-10133.17", 0x00000, 0x08000, CRC(642e6609) SHA1(2dfb4cc66f89543b55ed2a5b914e2c9304e821ca) )
+ ROM_LOAD( "epr10133.17", 0x00000, 0x08000, CRC(642e6609) SHA1(2dfb4cc66f89543b55ed2a5b914e2c9304e821ca) )
ROM_REGION( 0x10000, "gfx2", 0 )
- ROM_LOAD( "epr-10134.18", 0x08000, 0x08000, CRC(c674ff88) SHA1(9f240910a1ffb7c9e09d2326de280e6a5dd84565) )
- ROM_LOAD( "epr-10135.19", 0x00000, 0x08000, CRC(0685c4fa) SHA1(6950d9ad9ec13236cf24e83e87adb62aa53af7bb) )
+ ROM_LOAD( "epr10134.18", 0x08000, 0x08000, CRC(c674ff88) SHA1(9f240910a1ffb7c9e09d2326de280e6a5dd84565) )
+ ROM_LOAD( "epr10135.19", 0x00000, 0x08000, CRC(0685c4fa) SHA1(6950d9ad9ec13236cf24e83e87adb62aa53af7bb) )
ROM_REGION( 0x30000, "gfx3", 0 )
- ROM_LOAD( "epr-10130.14", 0x10000, 0x08000, CRC(b68fcb36) SHA1(3943dd550b13f2911d56d8dad675410da79196e6) )
- ROM_LOAD( "epr-10131.15", 0x08000, 0x08000, CRC(de223817) SHA1(1860db0a19c926fcfaabe676cb57fff38c4df8e6) )
- ROM_LOAD( "epr-10132.16", 0x00000, 0x08000, CRC(2df8b1bd) SHA1(cad8befa3f2c158d2aa74073066ccd2b54e68825) )
+ ROM_LOAD( "epr10130.14", 0x10000, 0x08000, CRC(b68fcb36) SHA1(3943dd550b13f2911d56d8dad675410da79196e6) )
+ ROM_LOAD( "epr10131.15", 0x08000, 0x08000, CRC(de223817) SHA1(1860db0a19c926fcfaabe676cb57fff38c4df8e6) )
+ ROM_LOAD( "epr10132.16", 0x00000, 0x08000, CRC(2df8b1bd) SHA1(cad8befa3f2c158d2aa74073066ccd2b54e68825) )
ROM_REGION( 0x18000, "gfx4", 0 )
- ROM_LOAD( "epr-10127.06", 0x10000, 0x08000, CRC(b68fcb36) SHA1(3943dd550b13f2911d56d8dad675410da79196e6) )
- ROM_LOAD( "epr-10128.07", 0x08000, 0x08000, CRC(de223817) SHA1(1860db0a19c926fcfaabe676cb57fff38c4df8e6) )
- ROM_LOAD( "epr-10129.08", 0x00000, 0x08000, CRC(a6f21023) SHA1(8d573446a2d3d3428409707d0c59b118d1463131) )
+ ROM_LOAD( "epr10127.06", 0x10000, 0x08000, CRC(b68fcb36) SHA1(3943dd550b13f2911d56d8dad675410da79196e6) )
+ ROM_LOAD( "epr10128.07", 0x08000, 0x08000, CRC(de223817) SHA1(1860db0a19c926fcfaabe676cb57fff38c4df8e6) )
+ ROM_LOAD( "epr10129.08", 0x00000, 0x08000, CRC(a6f21023) SHA1(8d573446a2d3d3428409707d0c59b118d1463131) )
ROM_REGION( 0x20, "proms", 0 )
ROM_LOAD( "63s081n.u5", 0x00, 0x20, CRC(36b98627) SHA1(d2d54d92d1d47e7cc85104989ee421ce5d80a42a) )
diff --git a/src/mame/drivers/anzterm.cpp b/src/mame/drivers/anzterm.cpp
index 5938606f34f..c2d72c10133 100644
--- a/src/mame/drivers/anzterm.cpp
+++ b/src/mame/drivers/anzterm.cpp
@@ -371,7 +371,7 @@ private:
{
return 0;
}
- void anzterm_mem(address_map &map);
+ void anzterm(address_map &map);
};
@@ -404,7 +404,7 @@ GFXDECODE_START( gfx_anzterm )
GFXDECODE_END
-void anzterm_state::anzterm_mem(address_map &map)
+void anzterm_state::anzterm(address_map &map)
{
// There are two battery-backed 2kB SRAM chips with a 4kb SRAM chip for parity
// There are two 64kB DRAM banks (with parity)
@@ -414,26 +414,25 @@ void anzterm_state::anzterm_mem(address_map &map)
}
-void anzterm_state::anzterm(machine_config &config)
-{
- m6809_device &maincpu(M6809(config, "maincpu", 15974400/4));
- maincpu.set_addrmap(AS_PROGRAM, &anzterm_state::anzterm_mem);
+MACHINE_CONFIG_START(anzterm_state::anzterm)
+ MCFG_DEVICE_ADD("maincpu", M6809, 15974400/4)
+ MCFG_DEVICE_PROGRAM_MAP(anzterm)
- I8214(config, "pic.ic39", 0);
- MC6854(config, "adlc.ic16", 0);
- MC6854(config, "adlc.1c19", 0);
- ACIA6850(config, "acia.ic17", 0);
- ACIA6850(config, "acia.ic18", 0);
+ MCFG_DEVICE_ADD("pic.ic39", I8214, 0)
+ MCFG_DEVICE_ADD("adlc.ic16", MC6854, 0)
+ MCFG_DEVICE_ADD("adlc.1c19", MC6854, 0)
+ MCFG_DEVICE_ADD("acia.ic17", ACIA6850, 0)
+ MCFG_DEVICE_ADD("acia.ic18", ACIA6850, 0)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_screen_update(FUNC(anzterm_state::screen_update));
- screen.set_palette("palette");
- screen.set_raw(15974400/4, 1024, 0, 104*8, 260, 0, 24*10); // this is totally wrong, it just stops a validation error
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_UPDATE_DRIVER(anzterm_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_RAW_PARAMS(15974400/4, 1024, 0, 104*8, 260, 0, 24*10) // this is totally wrong, it just stops a validation error
PALETTE(config, "palette", palette_device::MONOCHROME);
- GFXDECODE(config, "gfxdecode", "palette", gfx_anzterm);
-}
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_anzterm)
+MACHINE_CONFIG_END
INPUT_PORTS_START( anzterm )
diff --git a/src/mame/drivers/apc.cpp b/src/mame/drivers/apc.cpp
index 6d065a94df2..49dcf2f071a 100644
--- a/src/mame/drivers/apc.cpp
+++ b/src/mame/drivers/apc.cpp
@@ -344,9 +344,9 @@ READ8_MEMBER(apc_state::apc_gdc_r)
uint8_t res;
if(offset & 1)
- res = m_hgdc2->read((offset & 2) >> 1); // upd7220 bitmap port
+ res = m_hgdc2->read(space, (offset & 2) >> 1); // upd7220 bitmap port
else
- res = m_hgdc1->read((offset & 2) >> 1); // upd7220 character port
+ res = m_hgdc1->read(space, (offset & 2) >> 1); // upd7220 character port
return res;
}
@@ -354,9 +354,9 @@ READ8_MEMBER(apc_state::apc_gdc_r)
WRITE8_MEMBER(apc_state::apc_gdc_w)
{
if(offset & 1)
- m_hgdc2->write((offset & 2) >> 1,data); // upd7220 bitmap port
+ m_hgdc2->write(space, (offset & 2) >> 1,data); // upd7220 bitmap port
else
- m_hgdc1->write((offset & 2) >> 1,data); // upd7220 character port
+ m_hgdc1->write(space, (offset & 2) >> 1,data); // upd7220 character port
}
READ8_MEMBER(apc_state::apc_kbd_r)
@@ -416,12 +416,12 @@ CH3_EXA == 0X3E ; CH-3 extended address (W)
READ8_MEMBER(apc_state::apc_dma_r)
{
- return m_dmac->read(bitswap<4>(offset,2,1,0,3));
+ return m_dmac->read(space, bitswap<8>(offset,7,6,5,4,2,1,0,3), 0xff);
}
WRITE8_MEMBER(apc_state::apc_dma_w)
{
- m_dmac->write(bitswap<4>(offset,2,1,0,3), data);
+ m_dmac->write(space, bitswap<8>(offset,7,6,5,4,2,1,0,3), data, 0xff);
}
WRITE8_MEMBER(apc_state::apc_irq_ack_w)
@@ -936,13 +936,13 @@ static void apc_floppies(device_slot_interface &device)
device.option_add("8", FLOPPY_8_DSDD);
}
-void apc_state::apc(machine_config &config)
-{
+MACHINE_CONFIG_START(apc_state::apc)
+
/* basic machine hardware */
- I8086(config, m_maincpu, MAIN_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &apc_state::apc_map);
- m_maincpu->set_addrmap(AS_IO, &apc_state::apc_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_master", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD(m_maincpu,I8086,MAIN_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(apc_map)
+ MCFG_DEVICE_IO_MAP(apc_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_master", pic8259_device, inta_cb)
PIT8253(config, m_pit, 0);
m_pit->set_clk<0>(MAIN_CLOCK); // heartbeat IRQ
@@ -977,9 +977,9 @@ void apc_state::apc(machine_config &config)
UPD765A(config, m_fdc, 8'000'000, true, true);
m_fdc->intrq_wr_callback().set(m_i8259_s, FUNC(pic8259_device::ir4_w));
m_fdc->drq_wr_callback().set(m_dmac, FUNC(am9517a_device::dreq1_w));
- FLOPPY_CONNECTOR(config, m_fdc_connector[0], apc_floppies, "8", apc_floppy_formats);
- FLOPPY_CONNECTOR(config, m_fdc_connector[1], apc_floppies, "8", apc_floppy_formats);
- SOFTWARE_LIST(config, "disk_list").set_original("apc");
+ MCFG_FLOPPY_DRIVE_ADD(m_fdc_connector[0], apc_floppies, "8", apc_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(m_fdc_connector[1], apc_floppies, "8", apc_floppy_formats)
+ MCFG_SOFTWARE_LIST_ADD("disk_list","apc")
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
@@ -991,20 +991,21 @@ void apc_state::apc(machine_config &config)
PALETTE(config, m_palette, palette_device::BRG_3BIT);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_apc);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_apc)
UPD7220(config, m_hgdc1, 3579545); // unk clock
m_hgdc1->set_addrmap(0, &apc_state::upd7220_1_map);
- m_hgdc1->set_draw_text(FUNC(apc_state::hgdc_draw_text));
+ m_hgdc1->set_draw_text_callback(FUNC(apc_state::hgdc_draw_text), this);
UPD7220(config, m_hgdc2, 3579545); // unk clock
m_hgdc2->set_addrmap(0, &apc_state::upd7220_2_map);
- m_hgdc2->set_display_pixels(FUNC(apc_state::hgdc_display_pixels));
+ m_hgdc2->set_display_pixels_callback(FUNC(apc_state::hgdc_display_pixels), this);
/* sound hardware */
SPEAKER(config, m_speaker).front_center();
- UPD1771C(config, m_sound, MAIN_CLOCK).add_route(ALL_OUTPUTS, "mono", 1.00); //uPD1771C-006
-}
+ MCFG_DEVICE_ADD(m_sound, UPD1771C, MAIN_CLOCK) //uPD1771C-006
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/apf.cpp b/src/mame/drivers/apf.cpp
index 8d1bed1ec81..f93402f535e 100644
--- a/src/mame/drivers/apf.cpp
+++ b/src/mame/drivers/apf.cpp
@@ -519,68 +519,70 @@ static void apf_cart(device_slot_interface &device)
}
-void apf_state::apfm1000(machine_config &config)
-{
+MACHINE_CONFIG_START(apf_state::apfm1000)
+
/* basic machine hardware */
- M6800(config, m_maincpu, 3.579545_MHz_XTAL / 4); // divided by 4 in external clock circuit
- m_maincpu->set_addrmap(AS_PROGRAM, &apf_state::apfm1000_map);
+ MCFG_DEVICE_ADD("maincpu", M6800, 3.579545_MHz_XTAL / 4) // divided by 4 in external clock circuit
+ MCFG_DEVICE_PROGRAM_MAP(apfm1000_map)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
+ MCFG_SCREEN_MC6847_NTSC_ADD("screen", "mc6847")
- MC6847_NTSC(config, m_crtc, 3.579545_MHz_XTAL);
- m_crtc->fsync_wr_callback().set(m_pia0, FUNC(pia6821_device::cb1_w));
- m_crtc->input_callback().set(FUNC(apf_state::videoram_r));
- m_crtc->set_get_fixed_mode(mc6847_ntsc_device::MODE_GM2 | mc6847_ntsc_device::MODE_GM1);
- m_crtc->set_screen("screen");
+ MCFG_DEVICE_ADD("mc6847", MC6847_NTSC, 3.579545_MHz_XTAL)
+ MCFG_MC6847_FSYNC_CALLBACK(WRITELINE("pia0", pia6821_device, cb1_w))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(*this, apf_state, videoram_r))
+ MCFG_MC6847_FIXED_MODE(mc6847_ntsc_device::MODE_GM2 | mc6847_ntsc_device::MODE_GM1)
// INTEXT = GND
// other lines not connected
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
PIA6821(config, m_pia0, 0);
m_pia0->readpa_handler().set(FUNC(apf_state::pia0_porta_r));
m_pia0->writepb_handler().set(FUNC(apf_state::pia0_portb_w));
m_pia0->ca2_handler().set(FUNC(apf_state::pia0_ca2_w));
- m_pia0->cb2_handler().set(m_speaker, FUNC(speaker_sound_device::level_w));
- m_pia0->irqa_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
- m_pia0->irqb_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
+ m_pia0->cb2_handler().set("speaker", FUNC(speaker_sound_device::level_w));
+ m_pia0->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
+ m_pia0->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- APF_CART_SLOT(config, m_cart, apf_cart, nullptr);
+ MCFG_APF_CARTRIDGE_ADD("cartslot", apf_cart, nullptr)
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("apfm1000");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "apfm1000")
+MACHINE_CONFIG_END
-void apf_state::apfimag(machine_config &config)
-{
+MACHINE_CONFIG_START(apf_state::apfimag)
apfm1000(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &apf_state::apfimag_map);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP( apfimag_map)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("8K").set_extra_options("16K");
- WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.15);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.15);
PIA6821(config, m_pia1, 0);
m_pia1->readpa_handler().set(FUNC(apf_state::pia1_porta_r));
m_pia1->readpb_handler().set(FUNC(apf_state::pia1_portb_r));
m_pia1->writepb_handler().set(FUNC(apf_state::pia1_portb_w));
- CASSETTE(config, m_cass);
- m_cass->set_formats(apf_cassette_formats);
- m_cass->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED);
- m_cass->set_interface("apf_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(apf_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED)
+ MCFG_CASSETTE_INTERFACE("apf_cass")
FD1771(config, m_fdc, 1000000); // guess
- FLOPPY_CONNECTOR(config, "fdc:0", apf_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", apf_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", apf_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", apf_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
- SOFTWARE_LIST(config, "cass_list").set_original("apfimag_cass");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "apfimag_cass")
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/apollo.cpp b/src/mame/drivers/apollo.cpp
index 6398cfbb1f3..1102f3cde86 100644
--- a/src/mame/drivers/apollo.cpp
+++ b/src/mame/drivers/apollo.cpp
@@ -29,12 +29,14 @@
#include "includes/apollo.h"
#include "cpu/m68000/m68000.h"
+#include "sound/beep.h"
// we use set_verbose
#include "bus/isa/omti8621.h"
#include "bus/isa/3c505.h"
#include "debugger.h"
+#include "speaker.h"
#include "apollo_dsp.lh"
@@ -1042,41 +1044,49 @@ READ_LINE_MEMBER( apollo_state::apollo_kbd_is_german )
MACHINE DRIVERS
***************************************************************************/
-void apollo_state::dn3500(machine_config &config)
-{
+MACHINE_CONFIG_START(apollo_state::dn3500)
/* basic machine hardware */
- M68030(config, m_maincpu, 25000000); /* 25 MHz 68030 */
- m_maincpu->set_addrmap(AS_PROGRAM, &apollo_state::dn3500_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(apollo_state::apollo_irq_acknowledge));
+ MCFG_DEVICE_ADD(MAINCPU, M68030, 25000000) /* 25 MHz 68030 */
+ MCFG_DEVICE_PROGRAM_MAP(dn3500_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(apollo_state,apollo_irq_acknowledge)
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
apollo(config);
+ /* keyboard beeper */
+ SPEAKER(config, "mono").front_center();
+ MCFG_DEVICE_ADD("beep", BEEP, 1000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+
/* internal ram */
RAM(config, m_ram).set_default_size("8M").set_extra_options("4M,8M,16M,32M");
#ifdef APOLLO_XXL
apollo_stdio_device &stdio(APOLLO_STDIO(config, APOLLO_STDIO_TAG, 0));
- stdio.tx_cb().set(m_sio, FUNC(apollo_sio::rx_b_w));
+ stdio.tx_callback().set(m_sio, FUNC(apollo_sio::rx_b_w));
#endif
-}
+MACHINE_CONFIG_END
-void apollo_state::dsp3500(machine_config &config)
-{
- M68030(config, m_maincpu, 25000000); /* 25 MHz 68030 */
- m_maincpu->set_addrmap(AS_PROGRAM, &apollo_state::dsp3500_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(apollo_state::apollo_irq_acknowledge));
- config.m_minimum_quantum = attotime::from_hz(60);
+MACHINE_CONFIG_START(apollo_state::dsp3500)
+ MCFG_DEVICE_ADD(MAINCPU, M68030, 25000000) /* 25 MHz 68030 */
+ MCFG_DEVICE_PROGRAM_MAP(dsp3500_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(apollo_state,apollo_irq_acknowledge)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
apollo_terminal(config);
+ /* keyboard beeper */
+ SPEAKER(config, "mono").front_center();
+ MCFG_DEVICE_ADD("beep", BEEP, 1000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+
/* internal ram */
RAM(config, RAM_TAG).set_default_size("8M").set_extra_options("4M,8M,16M,32M");
/* terminal hardware */
config.set_default_layout(layout_apollo_dsp);
-}
+MACHINE_CONFIG_END
void apollo_state::dn3500_19i(machine_config &config)
{
@@ -1098,28 +1108,31 @@ void apollo_state::dn3500_15i(machine_config &config)
m_keyboard->german_cb().set(FUNC(apollo_state::apollo_kbd_is_german));
}
-void apollo_state::dn3000(machine_config &config)
-{
+MACHINE_CONFIG_START(apollo_state::dn3000)
dn3500(config);
- M68020PMMU(config.replace(), m_maincpu, 12000000); /* 12 MHz */
- m_maincpu->set_irq_acknowledge_callback(FUNC(apollo_state::apollo_irq_acknowledge));
- m_maincpu->set_addrmap(AS_PROGRAM, &apollo_state::dn3000_map);
+ MCFG_DEVICE_REPLACE(MAINCPU, M68020PMMU, 12000000) /* 12 MHz */
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(apollo_state,apollo_irq_acknowledge)
+ MCFG_DEVICE_PROGRAM_MAP(dn3000_map)
config.device_remove( APOLLO_SIO2_TAG );
m_ram->set_default_size("8M").set_extra_options("4M");
// FIXME: is this interrupt really only connected on DN3000?
m_rtc->irq().set(FUNC(apollo_state::apollo_rtc_irq_function));
-}
+MACHINE_CONFIG_END
-void apollo_state::dsp3000(machine_config &config)
-{
- M68020PMMU(config, m_maincpu, 12000000); /* 12 MHz */
- m_maincpu->set_irq_acknowledge_callback(FUNC(apollo_state::apollo_irq_acknowledge));
- m_maincpu->set_addrmap(AS_PROGRAM, &apollo_state::dsp3000_map);
- config.m_minimum_quantum = attotime::from_hz(60);
+MACHINE_CONFIG_START(apollo_state::dsp3000)
+ MCFG_DEVICE_ADD(MAINCPU, M68020PMMU, 12000000) /* 12 MHz */
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(apollo_state,apollo_irq_acknowledge)
+ MCFG_DEVICE_PROGRAM_MAP(dsp3000_map)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
apollo_terminal(config);
+ /* keyboard beeper */
+ SPEAKER(config, "mono").front_center();
+ MCFG_DEVICE_ADD("beep", BEEP, 1000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+
/* internal ram */
RAM(config, m_ram).set_default_size("8M").set_extra_options("4M");
@@ -1127,7 +1140,7 @@ void apollo_state::dsp3000(machine_config &config)
/* terminal hardware */
config.set_default_layout(layout_apollo_dsp);
-}
+MACHINE_CONFIG_END
void apollo_state::dn3000_19i(machine_config &config)
{
@@ -1149,29 +1162,32 @@ void apollo_state::dn3000_15i(machine_config &config)
m_keyboard->german_cb().set(FUNC(apollo_state::apollo_kbd_is_german));
}
-void apollo_state::dn5500(machine_config &config)
-{
+MACHINE_CONFIG_START(apollo_state::dn5500)
dn3500(config);
- M68040(config.replace(), m_maincpu, 25000000); /* 25 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &apollo_state::dn5500_map);
-}
+ MCFG_DEVICE_REPLACE(MAINCPU, M68040, 25000000) /* 25 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(dn5500_map)
+MACHINE_CONFIG_END
-void apollo_state::dsp5500(machine_config &config)
-{
- M68040(config, m_maincpu, 25000000); /* 25 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &apollo_state::dsp5500_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(apollo_state::apollo_irq_acknowledge));
- config.m_minimum_quantum = attotime::from_hz(60);
+MACHINE_CONFIG_START(apollo_state::dsp5500)
+ MCFG_DEVICE_ADD(MAINCPU, M68040, 25000000) /* 25 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(dsp5500_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(apollo_state,apollo_irq_acknowledge)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
apollo_terminal(config);
+ /* keyboard beeper */
+ SPEAKER(config, "mono").front_center();
+ MCFG_DEVICE_ADD("beep", BEEP, 1000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+
/* internal ram */
// FIXME: guess, to fix validation
RAM(config, RAM_TAG).set_default_size("8M").set_extra_options("4M,8M,16M,32M");
/* terminal hardware */
config.set_default_layout(layout_apollo_dsp);
-}
+MACHINE_CONFIG_END
void apollo_state::dn5500_19i(machine_config &config)
{
diff --git a/src/mame/drivers/apple1.cpp b/src/mame/drivers/apple1.cpp
index 72a660dfda5..258c0b5465d 100644
--- a/src/mame/drivers/apple1.cpp
+++ b/src/mame/drivers/apple1.cpp
@@ -595,14 +595,14 @@ static void apple1_cards(device_slot_interface &device)
}
MACHINE_CONFIG_START(apple1_state::apple1)
- M6502(config, m_maincpu, 960000); // effective CPU speed
- m_maincpu->set_addrmap(AS_PROGRAM, &apple1_state::apple1_map);
+ MCFG_DEVICE_ADD(m_maincpu, M6502, 960000) // effective CPU speed
+ MCFG_DEVICE_PROGRAM_MAP(apple1_map)
// video timings are identical to the Apple II, unsurprisingly
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(14'318'181), (65*7)*2, 0, (40*7)*2, 262, 0, 192);
- m_screen->set_screen_update(FUNC(apple1_state::screen_update));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(14'318'181), (65*7)*2, 0, (40*7)*2, 262, 0, 192)
+ MCFG_SCREEN_UPDATE_DRIVER(apple1_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -611,12 +611,13 @@ MACHINE_CONFIG_START(apple1_state::apple1)
m_pia->writepb_handler().set(FUNC(apple1_state::pia_display_w));
m_pia->cb2_handler().set(FUNC(apple1_state::pia_display_gate_w));
- A1BUS(config, A1_BUS_TAG, 0).set_space(m_maincpu, AS_PROGRAM);
- A1BUS_SLOT(config, "exp", 0, A1_BUS_TAG, apple1_cards, "cassette");
+ MCFG_DEVICE_ADD(A1_BUS_TAG, A1BUS, 0)
+ MCFG_A1BUS_CPU(m_maincpu)
+ MCFG_DEVICE_ADD("exp", A1BUS_SLOT, 0, A1_BUS_TAG, apple1_cards, "cassette")
- MCFG_SNAPSHOT_ADD("snapshot", apple1_state, apple1, "snp")
+ MCFG_SNAPSHOT_ADD("snapshot", apple1_state, apple1, "snp", 0)
- SOFTWARE_LIST(config, "cass_list").set_original("apple1");
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "apple1")
RAM(config, RAM_TAG).set_default_size("48K").set_extra_options("4K,8K,12K,16K,20K,24K,28K,32K,36K,40K,44K");
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/apple2.cpp b/src/mame/drivers/apple2.cpp
index 4f4e9f3ba35..4c8354f67b1 100644
--- a/src/mame/drivers/apple2.cpp
+++ b/src/mame/drivers/apple2.cpp
@@ -50,7 +50,6 @@ II Plus: RAM options reduced to 16/32/48 KB.
#include "machine/kb3600.h"
#include "machine/ram.h"
#include "machine/timer.h"
-#include "machine/apple2common.h"
#include "sound/spkrdev.h"
@@ -112,7 +111,6 @@ public:
m_ram(*this, RAM_TAG),
m_ay3600(*this, A2_KBDC_TAG),
m_video(*this, A2_VIDEO_TAG),
- m_a2common(*this, "a2common"),
m_a2bus(*this, "a2bus"),
m_joy1x(*this, "joystick_1_x"),
m_joy1y(*this, "joystick_1_y"),
@@ -135,7 +133,6 @@ public:
required_device<ram_device> m_ram;
required_device<ay3600_device> m_ay3600;
required_device<a2_video_device> m_video;
- required_device<apple2_common_device> m_a2common;
required_device<a2bus_device> m_a2bus;
required_ioport m_joy1x, m_joy1y, m_joy2x, m_joy2y, m_joybuttons;
required_ioport m_kbspecial;
@@ -231,8 +228,6 @@ private:
device_a2bus_card_interface *m_slotdevice[8];
uint8_t read_floatingbus();
-
- offs_t dasm_trampoline(std::ostream &stream, offs_t pc, const util::disasm_interface::data_buffer &opcodes, const util::disasm_interface::data_buffer &params);
};
/***************************************************************************
@@ -243,11 +238,6 @@ private:
#define JOYSTICK_SENSITIVITY 50
#define JOYSTICK_AUTOCENTER 80
-offs_t apple2_state::dasm_trampoline(std::ostream &stream, offs_t pc, const util::disasm_interface::data_buffer &opcodes, const util::disasm_interface::data_buffer &params)
-{
- return m_a2common->dasm_override(stream, pc, opcodes, params);
-}
-
WRITE_LINE_MEMBER(apple2_state::a2bus_irq_w)
{
m_maincpu->set_input_line(M6502_IRQ_LINE, state);
@@ -323,8 +313,8 @@ void apple2_state::machine_start()
m_inh_bank = 0;
// precalculate joystick time constants
- m_x_calibration = attotime::from_nsec(10800).as_double();
- m_y_calibration = attotime::from_nsec(10800).as_double();
+ m_x_calibration = attotime::from_usec(12).as_double();
+ m_y_calibration = attotime::from_usec(13).as_double();
// cache slot devices
for (int i = 0; i <= 7; i++)
@@ -332,12 +322,6 @@ void apple2_state::machine_start()
m_slotdevice[i] = m_a2bus->get_a2bus_card(i);
}
- for (int adr = 0; adr < m_ram_size; adr += 2)
- {
- m_ram_ptr[adr] = 0;
- m_ram_ptr[adr+1] = 0xff;
- }
-
// setup save states
save_item(NAME(m_speaker_state));
save_item(NAME(m_cassette_state));
@@ -367,7 +351,7 @@ void apple2_state::machine_start()
void apple2_state::machine_reset()
{
- m_inh_slot = 0;
+ m_inh_slot = -1;
m_cnxx_slot = -1;
m_page2 = false;
m_an0 = m_an1 = m_an2 = m_an3 = false;
@@ -642,39 +626,37 @@ READ8_MEMBER(apple2_state::switches_r)
READ8_MEMBER(apple2_state::flags_r)
{
- u8 uFloatingBus7 = read_floatingbus() & 0x7f;
-
// Y output of 74LS251 at H14 read as D7
switch (offset)
{
- case 0: // cassette in (accidentally read at $C068 by ProDOS to attempt IIgs STATE register)
- return (m_cassette->input() > 0.0 ? 0x80 : 0) | uFloatingBus7;
+ case 0: // cassette in
+ return m_cassette->input() > 0.0 ? 0x80 : 0;
case 1: // button 0
- return ((m_joybuttons->read() & 0x10) ? 0x80 : 0) | uFloatingBus7;
+ return (m_joybuttons->read() & 0x10) ? 0x80 : 0;
case 2: // button 1
- return ((m_joybuttons->read() & 0x20) ? 0x80 : 0) | uFloatingBus7;
+ return (m_joybuttons->read() & 0x20) ? 0x80 : 0;
case 3: // button 2
// check if SHIFT key mod configured
if (m_sysconfig->read() & 0x04)
{
- return (((m_joybuttons->read() & 0x40) || (m_kbspecial->read() & 0x06)) ? 0x80 : 0) | uFloatingBus7;
+ return ((m_joybuttons->read() & 0x40) || (m_kbspecial->read() & 0x06)) ? 0x80 : 0;
}
- return ((m_joybuttons->read() & 0x40) ? 0x80 : 0) | (read_floatingbus() & 0x7f);
+ return (m_joybuttons->read() & 0x40) ? 0x80 : 0;
case 4: // joy 1 X axis
- return ((machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0) | uFloatingBus7;
+ return (machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0;
case 5: // joy 1 Y axis
- return ((machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0) | uFloatingBus7;
+ return (machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0;
case 6: // joy 2 X axis
- return ((machine().time().as_double() < m_joystick_x2_time) ? 0x80 : 0) | uFloatingBus7;
+ return (machine().time().as_double() < m_joystick_x2_time) ? 0x80 : 0;
case 7: // joy 2 Y axis
- return ((machine().time().as_double() < m_joystick_y2_time) ? 0x80 : 0) | uFloatingBus7;
+ return (machine().time().as_double() < m_joystick_y2_time) ? 0x80 : 0;
}
// this is never reached
@@ -1387,19 +1369,15 @@ static void apple2_cards(device_slot_interface &device)
// device.option_add("magicmusician", A2BUS_MAGICMUSICIAN); /* Magic Musician Card */
}
-void apple2_state::apple2_common(machine_config &config)
-{
+MACHINE_CONFIG_START(apple2_state::apple2_common)
/* basic machine hardware */
M6502(config, m_maincpu, 1021800);
m_maincpu->set_addrmap(AS_PROGRAM, &apple2_state::apple2_map);
- m_maincpu->set_dasm_override(FUNC(apple2_state::dasm_trampoline));
-
TIMER(config, m_scantimer, 0);
m_scantimer->configure_scanline(FUNC(apple2_state::apple2_interrupt), "screen", 0, 1);
config.m_minimum_quantum = attotime::from_hz(60);
APPLE2_VIDEO(config, m_video, XTAL(14'318'181));
- APPLE2_COMMON(config, m_a2common, XTAL(14'318'181));
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(1021800*14, (65*7)*2, 0, (40*7)*2, 262, 0, 192);
@@ -1446,11 +1424,10 @@ void apple2_state::apple2_common(machine_config &config)
/* slot devices */
A2BUS(config, m_a2bus, 0);
- m_a2bus->set_space(m_maincpu, AS_PROGRAM);
+ m_a2bus->set_cputag("maincpu");
m_a2bus->irq_w().set(FUNC(apple2_state::a2bus_irq_w));
m_a2bus->nmi_w().set(FUNC(apple2_state::a2bus_nmi_w));
m_a2bus->inh_w().set(FUNC(apple2_state::a2bus_inh_w));
- m_a2bus->dma_w().set_inputline(m_maincpu, INPUT_LINE_HALT);
A2BUS_SLOT(config, "sl0", m_a2bus, apple2_slot0_cards, "lang");
A2BUS_SLOT(config, "sl1", m_a2bus, apple2_cards, nullptr);
A2BUS_SLOT(config, "sl2", m_a2bus, apple2_cards, nullptr);
@@ -1460,17 +1437,13 @@ void apple2_state::apple2_common(machine_config &config)
A2BUS_SLOT(config, "sl6", m_a2bus, apple2_cards, "diskiing");
A2BUS_SLOT(config, "sl7", m_a2bus, apple2_cards, nullptr);
- /* Set up the softlists: clean cracks priority, originals second, others last */
- SOFTWARE_LIST(config, "flop525_clean").set_original("apple2_flop_clcracked");
- SOFTWARE_LIST(config, "flop525_orig").set_compatible("apple2_flop_orig").set_filter("A2");
- SOFTWARE_LIST(config, "flop525_misc").set_compatible("apple2_flop_misc");
- SOFTWARE_LIST(config, "cass_list").set_original("apple2_cass");
- //MCFG_SOFTWARE_LIST_ADD("cass_list", "apple2_cass")
+ MCFG_SOFTWARE_LIST_ADD("flop525_list","apple2")
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "apple2_cass")
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED);
- m_cassette->set_interface("apple2_cass");
-}
+ MCFG_CASSETTE_ADD(A2_CASSETTE_TAG)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED)
+ MCFG_CASSETTE_INTERFACE("apple2_cass")
+MACHINE_CONFIG_END
void apple2_state::apple2(machine_config &config)
{
@@ -1482,7 +1455,6 @@ void apple2_state::apple2(machine_config &config)
void apple2_state::apple2p(machine_config &config)
{
apple2_common(config);
- subdevice<software_list_device>("flop525_orig")->set_filter("A2P"); // Filter list to compatible disks for this machine.
/* internal ram */
RAM(config, RAM_TAG).set_default_size("48K").set_extra_options("16K,32K,48K").set_default_value(0x00);
}
@@ -1492,25 +1464,25 @@ void apple2_state::space84(machine_config &config)
apple2p(config);
}
-void apple2_state::apple2jp(machine_config &config)
-{
+MACHINE_CONFIG_START(apple2_state::apple2jp)
apple2p(config);
- m_screen->set_screen_update(FUNC(apple2_state::screen_update_jp));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(apple2_state, screen_update_jp)
+MACHINE_CONFIG_END
#if 0
-void apple2_state::laba2p(machine_config &config)
-{
+static MACHINE_CONFIG_START( laba2p )
apple2p(config);
MCFG_MACHINE_START_OVERRIDE(apple2_state,laba2p)
- config.device_remove("sl0");
- config.device_remove("sl3");
- config.device_remove("sl6");
+ MCFG_DEVICE_REMOVE("sl0")
+ MCFG_DEVICE_REMOVE("sl3")
+ MCFG_DEVICE_REMOVE("sl6")
// A2BUS_LAB_80COL("sl3", A2BUS_LAB_80COL).set_onboard(m_a2bus);
A2BUS_IWM_FDC("sl6", A2BUS_IWM_FDC).set_onboard(m_a2bus);
-}
+
+MACHINE_CONFIG_END
#endif
/***************************************************************************
diff --git a/src/mame/drivers/apple2e.cpp b/src/mame/drivers/apple2e.cpp
index 3dfce268e3d..814e8b335a4 100644
--- a/src/mame/drivers/apple2e.cpp
+++ b/src/mame/drivers/apple2e.cpp
@@ -114,7 +114,6 @@ Address bus A0-A11 is Y0-Y11
#include "machine/sonydriv.h"
#include "machine/timer.h"
#include "machine/ds1315.h"
-#include "machine/apple2common.h"
#include "bus/a2bus/a2bus.h"
#include "bus/a2bus/a2diskii.h"
@@ -153,7 +152,6 @@ Address bus A0-A11 is Y0-Y11
#include "bus/a2bus/ssprite.h"
#include "bus/a2bus/ssbapple.h"
#include "bus/a2bus/transwarp.h"
-#include "bus/a2bus/a2vulcan.h"
#include "bus/rs232/rs232.h"
@@ -213,7 +211,6 @@ public:
m_scantimer(*this, "scantimer"),
m_ram(*this, RAM_TAG),
m_rom(*this, "maincpu"),
- m_a2common(*this, "a2common"),
m_cecbanks(*this, "cecexp"),
m_ay3600(*this, A2_KBDC_TAG),
m_video(*this, A2_VIDEO_TAG),
@@ -256,7 +253,6 @@ public:
required_device<timer_device> m_scantimer;
required_device<ram_device> m_ram;
required_memory_region m_rom;
- required_device<apple2_common_device> m_a2common;
optional_memory_region m_cecbanks;
required_device<ay3600_device> m_ay3600;
required_device<a2_video_device> m_video;
@@ -468,7 +464,7 @@ private:
uint8_t *m_exp_ram;
int m_exp_wptr, m_exp_liveptr;
- void do_io(int offset, bool is_iic);
+ void do_io(address_space &space, int offset, bool is_iic);
uint8_t read_floatingbus();
void update_slotrom_banks();
void lc_update(int offset, bool writing);
@@ -485,8 +481,6 @@ private:
uint8_t mig_r(uint16_t offset);
void mig_w(uint16_t offset, uint8_t data);
-
- offs_t dasm_trampoline(std::ostream &stream, offs_t pc, const util::disasm_interface::data_buffer &opcodes, const util::disasm_interface::data_buffer &params);
};
/***************************************************************************
@@ -497,11 +491,6 @@ private:
#define JOYSTICK_SENSITIVITY 50
#define JOYSTICK_AUTOCENTER 80
-offs_t apple2e_state::dasm_trampoline(std::ostream &stream, offs_t pc, const util::disasm_interface::data_buffer &opcodes, const util::disasm_interface::data_buffer &params)
-{
- return m_a2common->dasm_override(stream, pc, opcodes, params);
-}
-
uint8_t apple2e_state::mig_r(uint16_t offset)
{
//printf("mig_r @ %x\n", offset + 0xc00);
@@ -791,8 +780,8 @@ void apple2e_state::machine_start()
}
// precalculate joystick time constants
- m_x_calibration = attotime::from_nsec(10800).as_double();
- m_y_calibration = attotime::from_nsec(10800).as_double();
+ m_x_calibration = attotime::from_usec(12).as_double();
+ m_y_calibration = attotime::from_usec(13).as_double();
// cache slot devices
for (int i = 0; i <= 7; i++)
@@ -829,24 +818,6 @@ void apple2e_state::machine_start()
m_video->m_char_ptr = memregion("gfx1")->base();
m_video->m_char_size = memregion("gfx1")->bytes();
- int ram_size = 0x10000;
- if (m_ram_size < 0x10000)
- {
- ram_size = m_ram_size;
- }
-
- for (int adr = 0; adr < ram_size; adr += 2)
- {
- m_ram_ptr[adr] = 0;
- m_ram_ptr[adr+1] = 0xff;
-
- if (m_ram_size >= (128*1024))
- {
- m_aux_ptr[adr] = 0;
- m_aux_ptr[adr+1] = 0xff;
- }
- }
-
m_inh_slot = -1;
m_cnxx_slot = CNXX_UNCLAIMED;
m_mockingboard4c = false;
@@ -1398,7 +1369,7 @@ void apple2e_state::cec_lcrom_update()
}
// most softswitches don't care about read vs write, so handle them here
-void apple2e_state::do_io(int offset, bool is_iic)
+void apple2e_state::do_io(address_space &space, int offset, bool is_iic)
{
if(machine().side_effects_disabled()) return;
@@ -1621,7 +1592,6 @@ void apple2e_state::do_io(int offset, bool is_iic)
READ8_MEMBER(apple2e_state::c000_r)
{
if(machine().side_effects_disabled()) return read_floatingbus();
- u8 uFloatingBus7 = read_floatingbus() & 0x7f;
if ((offset & 0xf0) == 0x00) // keyboard latch, $C000 is really 00-0F
{
@@ -1686,46 +1656,46 @@ READ8_MEMBER(apple2e_state::c000_r)
case 0x68:
if (m_cassette)
{
- return (m_cassette->input() > 0.0 ? 0x80 : 0) | uFloatingBus7;
+ return m_cassette->input() > 0.0 ? 0x80 : 0;
}
- return uFloatingBus7;
+ return 0;
case 0x61: // button 0 or Open Apple
case 0x69:
- return (((m_joybuttons->read() & 0x10) || (m_kbspecial->read() & 0x10)) ? 0x80 : 0) | uFloatingBus7;
+ return ((m_joybuttons->read() & 0x10) || (m_kbspecial->read() & 0x10)) ? 0x80 : 0;
case 0x62: // button 1 or Solid Apple
case 0x6a:
- return (((m_joybuttons->read() & 0x20) || (m_kbspecial->read() & 0x20)) ? 0x80 : 0) | uFloatingBus7;
+ return ((m_joybuttons->read() & 0x20) || (m_kbspecial->read() & 0x20)) ? 0x80 : 0;
case 0x63: // button 2 or SHIFT key
case 0x6b:
- return (((m_joybuttons->read() & 0x40) || (m_kbspecial->read() & 0x06)) ? 0x80 : 0) | uFloatingBus7;
+ return ((m_joybuttons->read() & 0x40) || (m_kbspecial->read() & 0x06)) ? 0x80 : 0;
case 0x64: // joy 1 X axis
case 0x6c:
- return ((machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0) | uFloatingBus7;
+ return (machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0;
case 0x65: // joy 1 Y axis
case 0x6d:
- return ((machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0) | uFloatingBus7;
+ return (machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0;
case 0x66: // joy 2 X axis
case 0x6e:
- return ((machine().time().as_double() < m_joystick_x2_time) ? 0x80 : 0) | uFloatingBus7;
+ return (machine().time().as_double() < m_joystick_x2_time) ? 0x80 : 0;
case 0x67: // joy 2 Y axis
case 0x6f:
- return ((machine().time().as_double() < m_joystick_y2_time) ? 0x80 : 0) | uFloatingBus7;
+ return (machine().time().as_double() < m_joystick_y2_time) ? 0x80 : 0;
case 0x7e: // read IOUDIS
- return (m_ioudis ? 0x80 : 0x00) | uFloatingBus7;
+ return m_ioudis ? 0x80 : 0x00;
case 0x7f: // read DHIRES
- return (m_video->m_dhires ? 0x00 : 0x80) | uFloatingBus7;
+ return m_video->m_dhires ? 0x00 : 0x80;
default:
- do_io(offset, false);
+ do_io(space, offset, false);
break;
}
@@ -1840,12 +1810,12 @@ WRITE8_MEMBER(apple2e_state::c000_w)
case 0x78: case 0x79: case 0x7a: case 0x7b: case 0x7c: case 0x7d:
if (m_auxslotdevice)
{
- m_auxslotdevice->write_c07x(offset & 0xf, data);
+ m_auxslotdevice->write_c07x(space, offset & 0xf, data);
// card may have banked auxram; get a new bank pointer
m_aux_bank_ptr = m_auxslotdevice->get_auxbank_ptr();
}
- do_io(offset, false); // make sure it also side-effect resets the paddles as documented
+ do_io(space, offset, false); // make sure it also side-effect resets the paddles as documented
break;
case 0x7e: // SETIOUDIS
@@ -1855,7 +1825,7 @@ WRITE8_MEMBER(apple2e_state::c000_w)
m_ioudis = false; break;
default:
- do_io(offset, false);
+ do_io(space, offset, false);
break;
}
}
@@ -1863,7 +1833,6 @@ WRITE8_MEMBER(apple2e_state::c000_w)
READ8_MEMBER(apple2e_state::c000_iic_r)
{
if(machine().side_effects_disabled()) return read_floatingbus();
- u8 uFloatingBus7 = read_floatingbus() & 0x7f;
if ((offset & 0xf0) == 0x00) // keyboard latch, $C000 is really 00-0F
{
@@ -1939,46 +1908,46 @@ READ8_MEMBER(apple2e_state::c000_iic_r)
return m_y0edge ? 0x80 : 0x00;
case 0x60: // 40/80 column switch (IIc only)
- return ((m_sysconfig->read() & 0x04) ? 0x80 : 0) | uFloatingBus7;
+ return (m_sysconfig->read() & 0x04) ? 0x80 : 0;
case 0x61: // button 0 or Open Apple or mouse button 1
case 0x69:
- return (((m_joybuttons->read() & 0x10) || (m_kbspecial->read() & 0x10)) ? 0x80 : 0) | uFloatingBus7;
+ return ((m_joybuttons->read() & 0x10) || (m_kbspecial->read() & 0x10)) ? 0x80 : 0;
case 0x62: // button 1 or Solid Apple
case 0x6a:
- return (((m_joybuttons->read() & 0x20) || (m_kbspecial->read() & 0x20)) ? 0x80 : 0) | uFloatingBus7;
+ return ((m_joybuttons->read() & 0x20) || (m_kbspecial->read() & 0x20)) ? 0x80 : 0;
case 0x63: // mouse button 2 (no other function on IIc)
case 0x6b:
- return (m_mouseb->read() ? 0 : 0x80) | uFloatingBus7;
+ return m_mouseb->read() ? 0 : 0x80;
case 0x64: // joy 1 X axis
case 0x6c:
- return ((machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0) | uFloatingBus7;
+ return (machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0;
case 0x65: // joy 1 Y axis
case 0x6d:
- return ((machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0) | uFloatingBus7;
+ return (machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0;
case 0x66: // mouse X1 (IIc only)
case 0x6e:
- return (m_x1 ? 0x80 : 0) | uFloatingBus7;
+ return m_x1 ? 0x80 : 0;
case 0x67: // mouse Y1 (IIc only)
case 0x6f:
- return (m_y1 ? 0x80 : 0) | uFloatingBus7;
+ return m_y1 ? 0x80 : 0;
case 0x7e: // read IOUDIS
m_vbl = false;
lower_irq(IRQ_VBL);
- return (m_ioudis ? 0x80 : 0x00) | uFloatingBus7;
+ return m_ioudis ? 0x80 : 0x00;
case 0x7f: // read DHIRES
- return (m_video->m_dhires ? 0x00 : 0x80) | uFloatingBus7;
+ return m_video->m_dhires ? 0x00 : 0x80;
default:
- do_io(offset, true);
+ do_io(space, offset, true);
break;
}
@@ -2116,7 +2085,7 @@ WRITE8_MEMBER(apple2e_state::c000_iic_w)
break;
default:
- do_io(offset, true);
+ do_io(space, offset, true);
break;
}
}
@@ -2334,7 +2303,7 @@ void apple2e_state::write_slot_rom(int slotbias, int offset, uint8_t data)
uint8_t apple2e_state::read_int_rom(int slotbias, int offset)
{
//return m_rom_ptr[slotbias + offset];
- return m_ds1315->read(slotbias + offset);
+ return m_ds1315->read(machine().dummy_space(), slotbias + offset);
}
READ8_MEMBER(apple2e_state::nsc_backing_r) { return m_rom_ptr[offset]; }
@@ -3956,7 +3925,6 @@ static void apple2_cards(device_slot_interface &device)
device.option_add("arcbd", A2BUS_ARCADEBOARD); /* Third Millenium Engineering Arcade Board */
device.option_add("midi", A2BUS_MIDI); /* Generic 6840+6850 MIDI board */
device.option_add("zipdrive", A2BUS_ZIPDRIVE); /* ZIP Technologies IDE card */
- device.option_add("focusdrive", A2BUS_FOCUSDRIVE); /* Focus Drive IDE card */
device.option_add("echoiiplus", A2BUS_ECHOPLUS); /* Street Electronics Echo Plus (Echo II + Mockingboard clone) */
device.option_add("scsi", A2BUS_SCSI); /* Apple II SCSI Card */
device.option_add("applicard", A2BUS_APPLICARD); /* PCPI Applicard */
@@ -3979,8 +3947,6 @@ static void apple2_cards(device_slot_interface &device)
device.option_add("ssprite", A2BUS_SSPRITE); /* Synetix SuperSprite Board */
device.option_add("ssbapple", A2BUS_SSBAPPLE); /* SSB Apple speech board */
device.option_add("twarp", A2BUS_TRANSWARP); /* AE TransWarp accelerator */
- device.option_add("vulcan", A2BUS_VULCAN); /* Applied Engineering Vulcan IDE drive */
- device.option_add("vulcangold", A2BUS_VULCANGOLD); /* Applied Engineering Vulcan Gold IDE drive */
}
static void apple2eaux_cards(device_slot_interface &device)
@@ -3990,19 +3956,15 @@ static void apple2eaux_cards(device_slot_interface &device)
device.option_add("rw3", A2EAUX_RAMWORKS3); /* Applied Engineering RamWorks III */
}
-void apple2e_state::apple2e(machine_config &config)
-{
+MACHINE_CONFIG_START(apple2e_state::apple2e)
/* basic machine hardware */
M6502(config, m_maincpu, 1021800);
m_maincpu->set_addrmap(AS_PROGRAM, &apple2e_state::apple2e_map);
- m_maincpu->set_dasm_override(FUNC(apple2e_state::dasm_trampoline));
-
TIMER(config, m_scantimer, 0);
m_scantimer->configure_scanline(FUNC(apple2e_state::apple2_interrupt), "screen", 0, 1);
config.m_minimum_quantum = attotime::from_hz(60);
APPLE2_VIDEO(config, m_video, XTAL(14'318'181));
- APPLE2_COMMON(config, m_a2common, XTAL(14'318'181));
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(1021800*14, (65*7)*2, 0, (40*7)*2, 262, 0, 192);
@@ -4077,11 +4039,10 @@ void apple2e_state::apple2e(machine_config &config)
/* slot devices */
A2BUS(config, m_a2bus, 0);
- m_a2bus->set_space(m_maincpu, AS_PROGRAM);
+ m_a2bus->set_cputag("maincpu");
m_a2bus->irq_w().set(FUNC(apple2e_state::a2bus_irq_w));
m_a2bus->nmi_w().set(FUNC(apple2e_state::a2bus_nmi_w));
m_a2bus->inh_w().set(FUNC(apple2e_state::a2bus_inh_w));
- m_a2bus->dma_w().set_inputline(m_maincpu, INPUT_LINE_HALT);
A2BUS_SLOT(config, "sl1", m_a2bus, apple2_cards, nullptr);
A2BUS_SLOT(config, "sl2", m_a2bus, apple2_cards, nullptr);
A2BUS_SLOT(config, "sl3", m_a2bus, apple2_cards, nullptr);
@@ -4090,21 +4051,17 @@ void apple2e_state::apple2e(machine_config &config)
A2BUS_SLOT(config, "sl6", m_a2bus, apple2_cards, "diskiing");
A2BUS_SLOT(config, "sl7", m_a2bus, apple2_cards, nullptr);
- A2EAUXSLOT(config, m_a2eauxslot, 0);
- m_a2eauxslot->set_space(m_maincpu, AS_PROGRAM);
- m_a2eauxslot->out_irq_callback().set(FUNC(apple2e_state::a2bus_irq_w));
- m_a2eauxslot->out_nmi_callback().set(FUNC(apple2e_state::a2bus_nmi_w));
- A2EAUXSLOT_SLOT(config, "aux", m_a2eauxslot, apple2eaux_cards, "ext80");
+ MCFG_DEVICE_ADD(A2_AUXSLOT_TAG, A2EAUXSLOT, 0)
+ MCFG_A2EAUXSLOT_CPU("maincpu")
+ MCFG_A2EAUXSLOT_OUT_IRQ_CB(WRITELINE(*this, apple2e_state, a2bus_irq_w))
+ MCFG_A2EAUXSLOT_OUT_NMI_CB(WRITELINE(*this, apple2e_state, a2bus_nmi_w))
+ MCFG_A2EAUXSLOT_SLOT_ADD(A2_AUXSLOT_TAG, "aux", apple2eaux_cards, "ext80") // default to an extended 80-column card
- /* softlist config for baseline A2E
- By default, filter lists where possible to compatible disks for A2E */
- SOFTWARE_LIST(config, "flop525_clean").set_original("apple2_flop_clcracked");
- SOFTWARE_LIST(config, "flop525_orig").set_compatible("apple2_flop_orig").set_filter("A2E");
- SOFTWARE_LIST(config, "flop525_misc").set_compatible("apple2_flop_misc");
+ MCFG_SOFTWARE_LIST_ADD("flop525_list","apple2")
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED);
-}
+ MCFG_CASSETTE_ADD(A2_CASSETTE_TAG)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED)
+MACHINE_CONFIG_END
void apple2e_state::mprof3(machine_config &config)
{
@@ -4113,48 +4070,38 @@ void apple2e_state::mprof3(machine_config &config)
m_ram->set_default_size("128K");
}
-void apple2e_state::apple2ee(machine_config &config)
-{
+MACHINE_CONFIG_START(apple2e_state::apple2ee)
apple2e(config);
- subdevice<software_list_device>("flop525_orig")->set_filter("A2EE"); // Filter list to compatible disks for this machine.
-
M65C02(config.replace(), m_maincpu, 1021800);
m_maincpu->set_addrmap(AS_PROGRAM, &apple2e_state::apple2e_map);
- m_maincpu->set_dasm_override(FUNC(apple2e_state::dasm_trampoline));
-}
+MACHINE_CONFIG_END
-void apple2e_state::spectred(machine_config &config)
-{
+MACHINE_CONFIG_START(apple2e_state::spectred)
apple2e(config);
- i8035_device &keyb_mcu(I8035(config, "keyb_mcu", XTAL(4'000'000))); /* guessed frequency */
- keyb_mcu.set_addrmap(AS_PROGRAM, &apple2e_state::spectred_keyb_map);
+ MCFG_DEVICE_ADD("keyb_mcu", I8035, XTAL(4'000'000)) /* guessed frequency */
+ MCFG_DEVICE_PROGRAM_MAP(spectred_keyb_map)
//TODO: implement the actual interfacing to this 8035 MCU and
// and then remove the keyb CPU inherited from apple2e
-}
+MACHINE_CONFIG_END
-void apple2e_state::tk3000(machine_config &config)
-{
+MACHINE_CONFIG_START(apple2e_state::tk3000)
apple2e(config);
M65C02(config.replace(), m_maincpu, 1021800);
m_maincpu->set_addrmap(AS_PROGRAM, &apple2e_state::apple2e_map);
-// z80_device &subcpu(Z80(config, "subcpu", 1021800)); // schematics are illegible on where the clock comes from, but it *seems* to be the same as the 65C02 clock
-// subcpu.set_addrmap(AS_PROGRAM, &apple2e_state::tk3000_kbd_map);
-}
+// MCFG_DEVICE_ADD("subcpu", Z80, 1021800) // schematics are illegible on where the clock comes from, but it *seems* to be the same as the 65C02 clock
+// MCFG_DEVICE_PROGRAM_MAP(tk3000_kbd_map)
+MACHINE_CONFIG_END
-void apple2e_state::apple2ep(machine_config &config)
-{
+MACHINE_CONFIG_START(apple2e_state::apple2ep)
apple2e(config);
M65C02(config.replace(), m_maincpu, 1021800);
m_maincpu->set_addrmap(AS_PROGRAM, &apple2e_state::apple2e_map);
-}
+MACHINE_CONFIG_END
-void apple2e_state::apple2c(machine_config &config)
-{
+MACHINE_CONFIG_START(apple2e_state::apple2c)
apple2ee(config);
- subdevice<software_list_device>("flop525_orig")->set_filter("A2C"); // Filter list to compatible disks for this machine.
-
M65C02(config.replace(), m_maincpu, 1021800);
m_maincpu->set_addrmap(AS_PROGRAM, &apple2e_state::apple2c_map);
@@ -4197,7 +4144,7 @@ void apple2e_state::apple2c(machine_config &config)
config.device_remove(A2_AUXSLOT_TAG);
m_ram->set_default_size("128K").set_extra_options("128K");
-}
+MACHINE_CONFIG_END
static void apple2cp_set_lines(device_t *device, uint8_t lines)
{
@@ -4301,44 +4248,37 @@ static const floppy_interface floppy_interface =
"floppy_5_25"
};
-void apple2e_state::apple2cp(machine_config &config)
-{
+MACHINE_CONFIG_START(apple2e_state::apple2cp)
apple2c(config);
M65C02(config.replace(), m_maincpu, 1021800);
m_maincpu->set_addrmap(AS_PROGRAM, &apple2e_state::apple2c_memexp_map);
- m_maincpu->set_dasm_override(FUNC(apple2e_state::dasm_trampoline));
config.device_remove("sl4");
config.device_remove("sl6");
- IWM(config, m_iicpiwm, &a2cp_interface);
- FLOPPY_APPLE(config, FLOPPY_0, &floppy_interface, 15, 16);
- FLOPPY_APPLE(config, FLOPPY_1, &floppy_interface, 15, 16);
- FLOPPY_SONY(config, FLOPPY_2, &apple2cp_floppy35_floppy_interface);
- FLOPPY_SONY(config, FLOPPY_3, &apple2cp_floppy35_floppy_interface);
+ MCFG_IWM_ADD(IICP_IWM_TAG, a2cp_interface)
+ MCFG_LEGACY_FLOPPY_APPLE_2_DRIVES_ADD(floppy_interface,15,16)
+ MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADDITIONAL_ADD(apple2cp_floppy35_floppy_interface)
m_ram->set_default_size("128K").set_extra_options("128K, 384K, 640K, 896K, 1152K");
-}
+MACHINE_CONFIG_END
-void apple2e_state::apple2c_iwm(machine_config &config)
-{
+MACHINE_CONFIG_START(apple2e_state::apple2c_iwm)
apple2c(config);
config.device_remove("sl6");
A2BUS_IWM_FDC(config, "sl6", A2BUS_7M_CLOCK).set_onboard(m_a2bus);
-}
+MACHINE_CONFIG_END
-void apple2e_state::apple2c_mem(machine_config &config)
-{
+MACHINE_CONFIG_START(apple2e_state::apple2c_mem)
apple2c(config);
M65C02(config.replace(), m_maincpu, 1021800);
m_maincpu->set_addrmap(AS_PROGRAM, &apple2e_state::apple2c_memexp_map);
- m_maincpu->set_dasm_override(FUNC(apple2e_state::dasm_trampoline));
config.device_remove("sl6");
A2BUS_IWM_FDC(config, "sl6", A2BUS_7M_CLOCK).set_onboard(m_a2bus);
m_ram->set_default_size("128K").set_extra_options("128K, 384K, 640K, 896K, 1152K");
-}
+MACHINE_CONFIG_END
const applefdc_interface fdc_interface =
{
@@ -4350,15 +4290,13 @@ const applefdc_interface fdc_interface =
apple525_read_status /* read_status */
};
-void apple2e_state::laser128(machine_config &config)
-{
+MACHINE_CONFIG_START(apple2e_state::laser128)
apple2c(config);
M65C02(config.replace(), m_maincpu, 1021800);
m_maincpu->set_addrmap(AS_PROGRAM, &apple2e_state::laser128_map);
- APPLEFDC(config, m_laserudc, &fdc_interface);
- FLOPPY_APPLE(config, FLOPPY_0, &floppy_interface, 15, 16);
- FLOPPY_APPLE(config, FLOPPY_1, &floppy_interface, 15, 16);
+ MCFG_APPLEFDC_ADD(LASER128_UDC_TAG, fdc_interface)
+ MCFG_LEGACY_FLOPPY_APPLE_2_DRIVES_ADD(floppy_interface,15,16)
config.device_remove("sl4");
config.device_remove("sl6");
@@ -4372,17 +4310,15 @@ void apple2e_state::laser128(machine_config &config)
A2BUS_SLOT(config, "sl7", m_a2bus, apple2_cards, nullptr);
m_ram->set_default_size("128K").set_extra_options("128K, 384K, 640K, 896K, 1152K");
-}
+MACHINE_CONFIG_END
-void apple2e_state::laser128ex2(machine_config &config)
-{
+MACHINE_CONFIG_START(apple2e_state::laser128ex2)
apple2c(config);
M65C02(config.replace(), m_maincpu, 1021800);
m_maincpu->set_addrmap(AS_PROGRAM, &apple2e_state::laser128_map);
- APPLEFDC(config, m_laserudc, &fdc_interface);
- FLOPPY_APPLE(config, FLOPPY_0, &floppy_interface, 15, 16);
- FLOPPY_APPLE(config, FLOPPY_1, &floppy_interface, 15, 16);
+ MCFG_APPLEFDC_ADD(LASER128_UDC_TAG, fdc_interface)
+ MCFG_LEGACY_FLOPPY_APPLE_2_DRIVES_ADD(floppy_interface,15,16)
config.device_remove("sl4");
config.device_remove("sl6");
@@ -4396,10 +4332,9 @@ void apple2e_state::laser128ex2(machine_config &config)
A2BUS_LASER128(config, "sl7", A2BUS_7M_CLOCK).set_onboard(m_a2bus);
m_ram->set_default_size("128K").set_extra_options("128K, 384K, 640K, 896K, 1152K");
-}
+MACHINE_CONFIG_END
-void apple2e_state::ceci(machine_config &config)
-{
+MACHINE_CONFIG_START(apple2e_state::ceci)
apple2e(config);
config.device_remove("sl1");
config.device_remove("sl2");
@@ -4416,7 +4351,7 @@ void apple2e_state::ceci(machine_config &config)
config.device_remove(A2_AUXSLOT_TAG);
m_ram->set_default_size("64K");
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/apple2gs.cpp b/src/mame/drivers/apple2gs.cpp
index 7830a9601f2..50d6c4c7de0 100644
--- a/src/mame/drivers/apple2gs.cpp
+++ b/src/mame/drivers/apple2gs.cpp
@@ -54,7 +54,6 @@
#include "emu.h"
#include "video/apple2.h"
-#include "machine/apple2common.h"
#include "bus/a2bus/a2bus.h"
#include "bus/a2bus/ramcard16k.h"
@@ -85,7 +84,6 @@
#include "bus/a2bus/timemasterho.h"
#include "bus/a2bus/mouse.h"
#include "bus/a2bus/ezcgi.h"
-#include "bus/a2bus/a2vulcan.h"
//#include "bus/a2bus/pc_xporter.h"
// various timing standards
@@ -159,7 +157,6 @@ public:
m_nvram(*this, "nvram"),
m_video(*this, A2GS_VIDEO_TAG),
m_a2bus(*this, A2GS_BUS_TAG),
- m_a2common(*this, "a2common"),
m_joy1x(*this, "joystick_1_x"),
m_joy1y(*this, "joystick_1_y"),
m_joy2x(*this, "joystick_2_x"),
@@ -217,7 +214,6 @@ public:
required_device<nvram_device> m_nvram;
required_device<a2_video_device> m_video;
required_device<a2bus_device> m_a2bus;
- required_device<apple2_common_device> m_a2common;
required_ioport m_joy1x, m_joy1y, m_joy2x, m_joy2y, m_joybuttons;
required_device<speaker_sound_device> m_speaker;
required_device<address_map_bank_device> m_upperbank, m_upperaux, m_upper00, m_upper01;
@@ -495,8 +491,6 @@ private:
DECLARE_WRITE8_MEMBER(adbmicro_p2_out);
DECLARE_WRITE8_MEMBER(adbmicro_p3_out);
- offs_t dasm_trampoline(std::ostream &stream, offs_t pc, const util::disasm_interface::data_buffer &opcodes, const util::disasm_interface::data_buffer &params);
-
private:
bool m_is_rom3;
int m_speaker_state;
@@ -639,11 +633,6 @@ private:
#define JOYSTICK_SENSITIVITY 50
#define JOYSTICK_AUTOCENTER 80
-offs_t apple2gs_state::dasm_trampoline(std::ostream &stream, offs_t pc, const util::disasm_interface::data_buffer &opcodes, const util::disasm_interface::data_buffer &params)
-{
- return m_a2common->dasm_override_GS(stream, pc, opcodes, params);
-}
-
WRITE_LINE_MEMBER(apple2gs_state::a2bus_irq_w)
{
if (state == ASSERT_LINE)
@@ -1223,8 +1212,8 @@ void apple2gs_state::machine_start()
m_speaker->set_levels(16, lvlTable);
// precalculate joystick time constants
- m_x_calibration = attotime::from_nsec(10800).as_double();
- m_y_calibration = attotime::from_nsec(10800).as_double();
+ m_x_calibration = attotime::from_usec(12).as_double();
+ m_y_calibration = attotime::from_usec(13).as_double();
// cache slot devices
for (int i = 0; i <= 7; i++)
@@ -2040,7 +2029,6 @@ READ8_MEMBER(apple2gs_state::c000_r)
}
slow_cycle();
- u8 uFloatingBus7 = read_floatingbus();
switch (offset)
{
@@ -2284,28 +2272,28 @@ READ8_MEMBER(apple2gs_state::c000_r)
return (m_an3 ? INTFLAG_AN3 : 0x00) | m_intflag;
case 0x60: // button 3 on IIgs
- return (m_joybuttons->read() & 0x80) | uFloatingBus7;
+ return (m_joybuttons->read() & 0x80);
case 0x61: // button 0 or Open Apple
- return (((m_joybuttons->read() & 0x10) || (m_kbspecial->read() & 0x10)) ? 0x80 : 0) | uFloatingBus7;
+ return ((m_joybuttons->read() & 0x10) || (m_kbspecial->read() & 0x10)) ? 0x80 : 0;
case 0x62: // button 1 or Solid Apple
- return (((m_joybuttons->read() & 0x20) || (m_kbspecial->read() & 0x20)) ? 0x80 : 0) | uFloatingBus7;
+ return ((m_joybuttons->read() & 0x20) || (m_kbspecial->read() & 0x20)) ? 0x80 : 0;
case 0x63: // button 2 or SHIFT key
- return (((m_joybuttons->read() & 0x40) || (m_kbspecial->read() & 0x06)) ? 0x80 : 0) | uFloatingBus7;
+ return ((m_joybuttons->read() & 0x40) || (m_kbspecial->read() & 0x06)) ? 0x80 : 0;
case 0x64: // joy 1 X axis
- return ((machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0) | uFloatingBus7;
+ return (machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0;
case 0x65: // joy 1 Y axis
- return ((machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0) | uFloatingBus7;
+ return (machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0;
case 0x66: // joy 2 X axis
- return ((machine().time().as_double() < m_joystick_x2_time) ? 0x80 : 0) | uFloatingBus7;
+ return (machine().time().as_double() < m_joystick_x2_time) ? 0x80 : 0;
case 0x67: // joy 2 Y axis
- return ((machine().time().as_double() < m_joystick_y2_time) ? 0x80 : 0) | uFloatingBus7;
+ return (machine().time().as_double() < m_joystick_y2_time) ? 0x80 : 0;
case 0x68: // STATEREG, synthesizes all the IIe state regs
return (m_altzp ? 0x80 : 0x00) |
@@ -3510,7 +3498,7 @@ WRITE8_MEMBER(apple2gs_state::bank1_0000_sh_w)
void apple2gs_state::apple2gs_map(address_map &map)
{
/* "fast side" - runs 2.8 MHz minus RAM refresh, banks 00 and 01 usually have writes shadowed to E0/E1 where I/O lives */
- /* Banks 00 and 01 also have their own independent language cards which are NOT shadowed. */
+ /* Banks 00 and 01 also have their own independent language cards if shadowing is disabled */
map(0x000000, 0x0001ff).m(m_b0_0000bank, FUNC(address_map_bank_device::amap8));
map(0x000200, 0x0003ff).m(m_b0_0200bank, FUNC(address_map_bank_device::amap8));
map(0x000400, 0x0007ff).m(m_b0_0400bank, FUNC(address_map_bank_device::amap8));
@@ -4523,7 +4511,6 @@ static void apple2_cards(device_slot_interface &device)
device.option_add("arcbd", A2BUS_ARCADEBOARD); /* Third Millenium Engineering Arcade Board */
device.option_add("midi", A2BUS_MIDI); /* Generic 6840+6850 MIDI board */
device.option_add("zipdrive", A2BUS_ZIPDRIVE); /* ZIP Technologies IDE card */
- device.option_add("focusdrive", A2BUS_FOCUSDRIVE); /* Focus Drive IDE card */
device.option_add("echoiiplus", A2BUS_ECHOPLUS); /* Street Electronics Echo Plus (Echo II + Mockingboard clone) */
device.option_add("scsi", A2BUS_SCSI); /* Apple II SCSI Card */
device.option_add("applicard", A2BUS_APPLICARD); /* PCPI Applicard */
@@ -4541,8 +4528,6 @@ static void apple2_cards(device_slot_interface &device)
device.option_add("ezcgi", A2BUS_EZCGI); /* E-Z Color Graphics Interface */
device.option_add("ezcgi9938", A2BUS_EZCGI_9938); /* E-Z Color Graphics Interface (TMS9938) */
device.option_add("ezcgi9958", A2BUS_EZCGI_9958); /* E-Z Color Graphics Interface (TMS9958) */
- device.option_add("vulcan", A2BUS_VULCAN); /* Applied Engineering Vulcan IDE drive */
- device.option_add("vulcangold", A2BUS_VULCANGOLD); /* Applied Engineering Vulcan Gold IDE drive */
// device.option_add("magicmusician", A2BUS_MAGICMUSICIAN); /* Magic Musician Card */
// device.option_add("pcxport", A2BUS_PCXPORTER); /* Applied Engineering PC Transporter */
}
@@ -4553,7 +4538,6 @@ void apple2gs_state::apple2gs(machine_config &config)
G65816(config, m_maincpu, A2GS_MASTER_CLOCK/10);
m_maincpu->set_addrmap(AS_PROGRAM, &apple2gs_state::apple2gs_map);
m_maincpu->set_addrmap(g65816_device::AS_VECTORS, &apple2gs_state::vectors_map);
- m_maincpu->set_dasm_override(FUNC(apple2gs_state::dasm_trampoline));
TIMER(config, m_scantimer, 0);
m_scantimer->configure_scanline(FUNC(apple2gs_state::apple2_interrupt), "screen", 0, 1);
config.m_minimum_quantum = attotime::from_hz(60);
@@ -4593,9 +4577,6 @@ void apple2gs_state::apple2gs(machine_config &config)
APPLE2_VIDEO(config, m_video, A2GS_14M);
- APPLE2_COMMON(config, m_a2common, A2GS_14M);
- m_a2common->set_GS_cputag(m_maincpu);
-
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_size(704, 262); // 640+32+32 for the borders
@@ -4702,11 +4683,10 @@ void apple2gs_state::apple2gs(machine_config &config)
/* slot devices */
A2BUS(config, m_a2bus, 0);
- m_a2bus->set_space(m_maincpu, AS_PROGRAM);
+ m_a2bus->set_cputag("maincpu");
m_a2bus->irq_w().set(FUNC(apple2gs_state::a2bus_irq_w));
m_a2bus->nmi_w().set(FUNC(apple2gs_state::a2bus_nmi_w));
m_a2bus->inh_w().set(FUNC(apple2gs_state::a2bus_inh_w));
- m_a2bus->dma_w().set_inputline(m_maincpu, INPUT_LINE_HALT);
A2BUS_SLOT(config, "sl1", m_a2bus, apple2_cards, nullptr);
A2BUS_SLOT(config, "sl2", m_a2bus, apple2_cards, nullptr);
A2BUS_SLOT(config, "sl3", m_a2bus, apple2_cards, nullptr);
@@ -4724,10 +4704,7 @@ void apple2gs_state::apple2gs(machine_config &config)
FLOPPY_SONY(config, FLOPPY_3, &apple2gs_floppy35_floppy_interface);
SOFTWARE_LIST(config, "flop35_list").set_original("apple2gs");
- SOFTWARE_LIST(config, "flop525_clean").set_compatible("apple2_flop_clcracked"); // No filter on clean cracks yet.
- // As WOZ images won't load in the 2GS driver yet, comment out the softlist entry.
- //SOFTWARE_LIST(config, "flop525_orig").set_compatible("apple2_flop_orig").set_filter("A2GS"); // Filter list to compatible disks for this machine.
- SOFTWARE_LIST(config, "flop525_misc").set_compatible("apple2_misc");
+ SOFTWARE_LIST(config, "flop525_list").set_compatible("apple2");
}
void apple2gs_state::apple2gsr1(machine_config &config)
diff --git a/src/mame/drivers/apple3.cpp b/src/mame/drivers/apple3.cpp
index ecaa1453d03..48557d211f9 100644
--- a/src/mame/drivers/apple3.cpp
+++ b/src/mame/drivers/apple3.cpp
@@ -25,7 +25,6 @@
#include "bus/a2bus/a2applicard.h"
#include "bus/a2bus/a2thunderclock.h"
#include "bus/a2bus/mouse.h"
-#include "bus/a2bus/a2zipdrive.h"
#include "bus/rs232/rs232.h"
@@ -45,7 +44,6 @@ static void apple3_cards(device_slot_interface &device)
device.option_add("applicard", A2BUS_APPLICARD); // PCPI Applicard
device.option_add("thclock", A2BUS_THUNDERCLOCK); // ThunderWare ThunderClock Plus - driver assumes slot 2 by default
device.option_add("mouse", A2BUS_MOUSE); // Apple II Mouse Card
- device.option_add("focusdrive", A2BUS_FOCUSDRIVE); // Focus Drive IDE card
}
static void a3_floppies(device_slot_interface &device)
@@ -98,11 +96,10 @@ void apple3_state::apple3(machine_config &config)
/* slot bus */
A2BUS(config, m_a2bus, 0);
- m_a2bus->set_space(m_maincpu, AS_PROGRAM);
+ m_a2bus->set_cputag("maincpu");
m_a2bus->irq_w().set(FUNC(apple3_state::a2bus_irq_w));
m_a2bus->nmi_w().set(FUNC(apple3_state::a2bus_nmi_w));
//m_a2bus->inh_w().set(FUNC(apple3_state::a2bus_inh_w));
- m_a2bus->dma_w().set_inputline(m_maincpu, INPUT_LINE_HALT);
A2BUS_SLOT(config, "sl1", m_a2bus, apple3_cards, nullptr);
A2BUS_SLOT(config, "sl2", m_a2bus, apple3_cards, nullptr);
A2BUS_SLOT(config, "sl3", m_a2bus, apple3_cards, nullptr);
@@ -154,6 +151,7 @@ void apple3_state::apple3(machine_config &config)
DAC_1BIT(config, m_bell, 0).add_route(ALL_OUTPUTS, "speaker", 0.99);
DAC_6BIT_BINARY_WEIGHTED(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.125); // 6522.b5(pb0-pb5) + 320k,160k,80k,40k,20k,10k
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "bell", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
diff --git a/src/mame/drivers/applix.cpp b/src/mame/drivers/applix.cpp
index 01b3043ef01..2176f468202 100644
--- a/src/mame/drivers/applix.cpp
+++ b/src/mame/drivers/applix.cpp
@@ -847,15 +847,14 @@ TIMER_DEVICE_CALLBACK_MEMBER(applix_state::cass_timer)
}
}
-void applix_state::applix(machine_config &config)
-{
+MACHINE_CONFIG_START(applix_state::applix)
/* basic machine hardware */
- M68000(config, m_maincpu, 30_MHz_XTAL / 4); // MC68000-P10 @ 7.5 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &applix_state::applix_mem);
+ MCFG_DEVICE_ADD("maincpu", M68000, 30_MHz_XTAL / 4) // MC68000-P10 @ 7.5 MHz
+ MCFG_DEVICE_PROGRAM_MAP(applix_mem)
- z80_device &subcpu(Z80(config, "subcpu", 16_MHz_XTAL / 2)); // Z80H
- subcpu.set_addrmap(AS_PROGRAM, &applix_state::subcpu_mem);
- subcpu.set_addrmap(AS_IO, &applix_state::subcpu_io);
+ MCFG_DEVICE_ADD("subcpu", Z80, 16_MHz_XTAL / 2) // Z80H
+ MCFG_DEVICE_PROGRAM_MAP(subcpu_mem)
+ MCFG_DEVICE_IO_MAP(subcpu_io)
i8051_device &kbdcpu(I8051(config, "kbdcpu", 11060250));
kbdcpu.set_addrmap(AS_PROGRAM, &applix_state::keytronic_pc3270_program);
@@ -868,24 +867,24 @@ void applix_state::applix(machine_config &config)
kbdcpu.port_out_cb<3>().set(FUNC(applix_state::p3_write));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 200);
- screen.set_visarea_full();
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 200)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
PALETTE(config, m_palette, FUNC(applix_state::applix_palette), 16);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- DAC0800(config, "ldac", 0).add_route(ALL_OUTPUTS, "lspeaker", 1.0); // 74ls374.u20 + dac0800.u21 + 4052.u23
- DAC0800(config, "rdac", 0).add_route(ALL_OUTPUTS, "rspeaker", 1.0); // 74ls374.u20 + dac0800.u21 + 4052.u23
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT).add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT).add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("ldac", DAC0800, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) // 74ls374.u20 + dac0800.u21 + 4052.u23
+ MCFG_DEVICE_ADD("rdac", DAC0800, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) // 74ls374.u20 + dac0800.u21 + 4052.u23
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
- WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "lspeaker", 0.50);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "lspeaker", 0.50);
/* Devices */
MC6845(config, m_crtc, 30_MHz_XTAL / 16); // MC6545 @ 1.875 MHz
@@ -905,21 +904,22 @@ void applix_state::applix(machine_config &config)
m_via->writepb_handler().set(FUNC(applix_state::applix_pb_w));
m_via->irq_handler().set_inputline("maincpu", M68K_IRQ_2);
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(m_via, FUNC(via6522_device::write_ca1));
- m_centronics->busy_handler().set(m_via, FUNC(via6522_device::write_pa0));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE("via6522", via6522_device, write_ca1))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE("via6522", via6522_device, write_pa0))
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
- CASSETTE(config, m_cass);
- m_cass->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
WD1772(config, m_fdc, 16_MHz_XTAL / 2); //connected to Z80H clock pin
- FLOPPY_CONNECTOR(config, "fdc:0", applix_floppies, "35dd", applix_state::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", applix_floppies, "35dd", applix_state::floppy_formats).enable_sound(true);
- TIMER(config, "applix_c").configure_periodic(FUNC(applix_state::cass_timer), attotime::from_hz(100000));
-}
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", applix_floppies, "35dd", applix_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", applix_floppies, "35dd", applix_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("applix_c", applix_state, cass_timer, attotime::from_hz(100000))
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( applix )
diff --git a/src/mame/drivers/appoooh.cpp b/src/mame/drivers/appoooh.cpp
index 488fffffa82..1c15989ee51 100644
--- a/src/mame/drivers/appoooh.cpp
+++ b/src/mame/drivers/appoooh.cpp
@@ -240,9 +240,9 @@ void appoooh_state::decrypted_opcodes_map(address_map &map)
void appoooh_state::main_portmap(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).portr("P1").w("sn1", FUNC(sn76489_device::write));
- map(0x01, 0x01).portr("P2").w("sn2", FUNC(sn76489_device::write));
- map(0x02, 0x02).w("sn3", FUNC(sn76489_device::write));
+ map(0x00, 0x00).portr("P1").w("sn1", FUNC(sn76489_device::command_w));
+ map(0x01, 0x01).portr("P2").w("sn2", FUNC(sn76489_device::command_w));
+ map(0x02, 0x02).w("sn3", FUNC(sn76489_device::command_w));
map(0x03, 0x03).portr("DSW1").w(FUNC(appoooh_state::adpcm_w));
map(0x04, 0x04).portr("BUTTON3").w(FUNC(appoooh_state::out_w));
map(0x05, 0x05).w(FUNC(appoooh_state::scroll_w)); /* unknown */
diff --git a/src/mame/drivers/apricot.cpp b/src/mame/drivers/apricot.cpp
index b27900d1abe..5ccd0e5c225 100644
--- a/src/mame/drivers/apricot.cpp
+++ b/src/mame/drivers/apricot.cpp
@@ -59,7 +59,6 @@ public:
m_floppy0(*this, "ic68:0"),
m_floppy1(*this, "ic68:1"),
m_palette(*this, "palette"),
- m_exp(*this, "exp"),
m_screen_buffer(*this, "screen_buffer"),
m_video_mode(0),
m_display_on(1),
@@ -114,7 +113,6 @@ private:
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_device<palette_device> m_palette;
- required_device<apricot_expansion_bus_device> m_exp;
required_shared_ptr<uint16_t> m_screen_buffer;
bool m_video_mode;
@@ -341,7 +339,7 @@ void apricot_state::apricot_io(address_map &map)
map(0x00, 0x03).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
map(0x40, 0x47).rw(m_fdc, FUNC(wd2797_device::read), FUNC(wd2797_device::write)).umask16(0x00ff);
map(0x48, 0x4f).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
- map(0x50, 0x50).mirror(0x06).w("ic7", FUNC(sn76489_device::write));
+ map(0x50, 0x50).mirror(0x06).w("ic7", FUNC(sn76489_device::command_w));
map(0x58, 0x5f).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
map(0x60, 0x60).r(FUNC(apricot_state::sio_da_r)).w(m_sio, FUNC(z80sio_device::da_w)).umask16(0x00ff);
map(0x62, 0x62).r(FUNC(apricot_state::sio_ca_r)).w(m_sio, FUNC(z80sio_device::ca_w)).umask16(0x00ff);
@@ -473,13 +471,7 @@ void apricot_state::apricot(machine_config &config)
SOFTWARE_LIST(config, "flop_list").set_original("apricot_flop");
// expansion bus
- APRICOT_EXPANSION_BUS(config, m_exp, 0);
- m_exp->set_program_space(m_cpu, AS_PROGRAM);
- m_exp->set_io_space(m_cpu, AS_IO);
- m_exp->set_program_iop_space(m_iop, AS_PROGRAM);
- m_exp->set_io_iop_space(m_iop, AS_IO);
- m_exp->int2().set(m_pic, FUNC(pic8259_device::ir2_w));
- m_exp->int3().set(m_pic, FUNC(pic8259_device::ir3_w));
+ APRICOT_EXPANSION_BUS(config, "exp", m_cpu, m_iop);
APRICOT_EXPANSION_SLOT(config, "exp:1", apricot_expansion_cards, nullptr);
APRICOT_EXPANSION_SLOT(config, "exp:2", apricot_expansion_cards, nullptr);
}
diff --git a/src/mame/drivers/apricotf.cpp b/src/mame/drivers/apricotf.cpp
index 93ec038ba5d..ceffb12675d 100644
--- a/src/mame/drivers/apricotf.cpp
+++ b/src/mame/drivers/apricotf.cpp
@@ -342,29 +342,29 @@ void apricotf_floppies(device_slot_interface &device)
//**************************************************************************
//-------------------------------------------------
-// machine_config( act_f1 )
+// MACHINE_CONFIG( act_f1 )
//-------------------------------------------------
-void f1_state::act_f1(machine_config &config)
-{
+MACHINE_CONFIG_START(f1_state::act_f1)
/* basic machine hardware */
- I8086(config, m_maincpu, 14_MHz_XTAL / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &f1_state::act_f1_mem);
- m_maincpu->set_addrmap(AS_IO, &f1_state::act_f1_io);
+ MCFG_DEVICE_ADD(I8086_TAG, I8086, 14_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(act_f1_mem)
+ MCFG_DEVICE_IO_MAP(act_f1_io)
- INPUT_MERGER_ANY_HIGH(config, "irqs").output_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+ MCFG_INPUT_MERGER_ANY_HIGH("irqs")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE(I8086_TAG, INPUT_LINE_IRQ0))
/* video hardware */
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(f1_state::screen_update));
- screen.set_size(640, 256);
- screen.set_visarea_full();
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(f1_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 256-1)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(16);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_act_f1);
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_act_f1)
/* Devices */
APRICOT_KEYBOARD(config, APRICOT_KEYBOARD_TAG, 0);
@@ -377,20 +377,19 @@ void f1_state::act_f1(machine_config &config)
m_ctc->zc_callback<1>().set(FUNC(f1_state::ctc_z1_w));
m_ctc->zc_callback<2>().set(FUNC(f1_state::ctc_z2_w));
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(m_sio, FUNC(z80sio_device::ctsa_w));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(m_sio, z80sio_device, ctsa_w))
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
// floppy
WD2797(config, m_fdc, 4_MHz_XTAL / 2 /* ? */);
m_fdc->intrq_wr_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
m_fdc->drq_wr_callback().set_inputline(m_maincpu, INPUT_LINE_TEST);
- FLOPPY_CONNECTOR(config, WD2797_TAG ":0", apricotf_floppies, "d32w", f1_state::floppy_formats);
- FLOPPY_CONNECTOR(config, WD2797_TAG ":1", apricotf_floppies, "d32w", f1_state::floppy_formats);
-}
+ MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":0", apricotf_floppies, "d32w", f1_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":1", apricotf_floppies, "d32w", f1_state::floppy_formats)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/apricotp.cpp b/src/mame/drivers/apricotp.cpp
index 2def89372c1..1b8575942ed 100644
--- a/src/mame/drivers/apricotp.cpp
+++ b/src/mame/drivers/apricotp.cpp
@@ -446,7 +446,7 @@ void fp_state::fp_io(address_map &map)
map(0x020, 0x020).w("cent_data_out", FUNC(output_latch_device::bus_w));
map(0x022, 0x022).w(FUNC(fp_state::pint_clr_w));
map(0x024, 0x024).r(FUNC(fp_state::prtr_snd_r));
- map(0x026, 0x026).w(SN76489AN_TAG, FUNC(sn76489a_device::write));
+ map(0x026, 0x026).w(SN76489AN_TAG, FUNC(sn76489a_device::command_w));
map(0x028, 0x028).w(FUNC(fp_state::contrast_w));
map(0x02a, 0x02a).w(FUNC(fp_state::palette_w));
map(0x02e, 0x02f).w(FUNC(fp_state::video_w));
@@ -563,41 +563,40 @@ FLOPPY_FORMATS_END
//-------------------------------------------------
-// machine_config( fp )
+// MACHINE_CONFIG( fp )
//-------------------------------------------------
-void fp_state::fp(machine_config &config)
-{
+MACHINE_CONFIG_START(fp_state::fp)
/* basic machine hardware */
- I8086(config, m_maincpu, 15_MHz_XTAL / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &fp_state::fp_mem);
- m_maincpu->set_addrmap(AS_IO, &fp_state::fp_io);
- m_maincpu->set_irq_acknowledge_callback(I8259A_TAG, FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD(I8086_TAG, I8086, 15_MHz_XTAL / 3)
+ MCFG_DEVICE_PROGRAM_MAP(fp_mem)
+ MCFG_DEVICE_IO_MAP(fp_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(I8259A_TAG, pic8259_device, inta_cb)
- HD6301(config, m_soundcpu, 2000000);
- m_soundcpu->set_addrmap(AS_PROGRAM, &fp_state::sound_mem);
- m_soundcpu->set_disable();
+ MCFG_DEVICE_ADD(HD63B01V1_TAG, HD6301, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(sound_mem)
+ MCFG_DEVICE_DISABLE()
/* video hardware */
config.set_default_layout(layout_apricotp);
- screen_device &screen_lcd(SCREEN(config, SCREEN_LCD_TAG, SCREEN_TYPE_RASTER));
- screen_lcd.set_refresh_hz(50);
- screen_lcd.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen_lcd.set_screen_update(FUNC(fp_state::screen_update));
- screen_lcd.set_size(640, 200);
- screen_lcd.set_visarea_full();
- screen_lcd.set_palette("palette");
+ MCFG_SCREEN_ADD(SCREEN_LCD_TAG, LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(fp_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 200)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
+ MCFG_SCREEN_PALETTE("palette")
- screen_device &screen_crt(SCREEN(config, SCREEN_CRT_TAG, SCREEN_TYPE_RASTER));
- screen_crt.set_refresh_hz(50);
- screen_crt.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen_crt.set_screen_update(MC6845_TAG, FUNC(mc6845_device::screen_update));
- screen_crt.set_size(640, 256);
- screen_crt.set_visarea_full();
+ MCFG_SCREEN_ADD(SCREEN_CRT_TAG, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DEVICE(MC6845_TAG, mc6845_device, screen_update)
+ MCFG_SCREEN_SIZE(640, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 256-1)
- PALETTE(config, "palette").set_entries(16);
- GFXDECODE(config, "gfxdecode", "palette", gfx_act_f1);
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_act_f1)
MC6845(config, m_crtc, 4000000);
m_crtc->set_screen(SCREEN_CRT_TAG);
@@ -607,7 +606,8 @@ void fp_state::fp(machine_config &config)
// sound hardware
SPEAKER(config, "mono").front_center();
- SN76489A(config, SN76489AN_TAG, 2000000).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD(SN76489AN_TAG, SN76489A, 2000000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* Devices */
APRICOT_KEYBOARD(config, APRICOT_KEYBOARD_TAG, 0);
@@ -642,12 +642,11 @@ void fp_state::fp(machine_config &config)
m_centronics->fault_handler().set(FUNC(fp_state::write_centronics_fault));
m_centronics->perror_handler().set(FUNC(fp_state::write_centronics_perror));
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("256K").set_extra_options("512K,1M");
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/aquarium.cpp b/src/mame/drivers/aquarium.cpp
index d4379d9181f..0f3dd904512 100644
--- a/src/mame/drivers/aquarium.cpp
+++ b/src/mame/drivers/aquarium.cpp
@@ -87,13 +87,13 @@ uint8_t aquarium_state::aquarium_snd_bitswap( uint8_t scrambled_data )
READ8_MEMBER(aquarium_state::aquarium_oki_r)
{
- return aquarium_snd_bitswap(m_oki->read());
+ return aquarium_snd_bitswap(m_oki->read(space, offset));
}
WRITE8_MEMBER(aquarium_state::aquarium_oki_w)
{
logerror("%s:Writing %04x to the OKI M6295\n", machine().describe_context(), aquarium_snd_bitswap(data));
- m_oki->write(aquarium_snd_bitswap(data));
+ m_oki->write(space, offset, (aquarium_snd_bitswap(data)));
}
@@ -287,33 +287,33 @@ static GFXDECODE_START( gfx_aquarium )
GFXDECODE_ENTRY( "gfx4", 0, char5bpplayout, 0x400, 32 )
GFXDECODE_END
-void aquarium_state::aquarium(machine_config &config)
-{
+MACHINE_CONFIG_START(aquarium_state::aquarium)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(32'000'000)/2); // clock not verified on pcb
- m_maincpu->set_addrmap(AS_PROGRAM, &aquarium_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(aquarium_state::irq1_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(32'000'000)/2) // clock not verified on pcb
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", aquarium_state, irq1_line_hold)
- Z80(config, m_audiocpu, XTAL(32'000'000)/6); // clock not verified on pcb
- m_audiocpu->set_addrmap(AS_PROGRAM, &aquarium_state::snd_map);
- m_audiocpu->set_addrmap(AS_IO, &aquarium_state::snd_portmap);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(32'000'000)/6) // clock not verified on pcb
+ MCFG_DEVICE_PROGRAM_MAP(snd_map)
+ MCFG_DEVICE_IO_MAP(snd_portmap)
// Is this the actual IC type? Some other Excellent games from this period use a MAX693.
- MB3773(config, m_watchdog, 0);
+ MCFG_DEVICE_ADD("watchdog", MB3773, 0)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 64*8);
- m_screen->set_visarea(2*8, 42*8-1, 2*8, 34*8-1);
- m_screen->set_screen_update(FUNC(aquarium_state::screen_update_aquarium));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_aquarium);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(2*8, 42*8-1, 2*8, 34*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(aquarium_state, screen_update_aquarium)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_aquarium)
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 0x1000/2);
- EXCELLENT_SPRITE(config, m_sprgen, 0);
+ MCFG_DEVICE_ADD("spritegen", EXCELLENT_SPRITE, 0)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -328,10 +328,10 @@ void aquarium_state::aquarium(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.45);
ymsnd.add_route(1, "rspeaker", 0.45);
- OKIM6295(config, m_oki, XTAL(1'056'000), okim6295_device::PIN7_HIGH); // pin 7 not verified
- m_oki->add_route(ALL_OUTPUTS, "lspeaker", 0.47);
- m_oki->add_route(ALL_OUTPUTS, "rspeaker", 0.47);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(1'056'000), okim6295_device::PIN7_HIGH) // pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47)
+MACHINE_CONFIG_END
ROM_START( aquarium )
ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 code */
diff --git a/src/mame/drivers/aquarius.cpp b/src/mame/drivers/aquarius.cpp
index de6c264c083..e7eb7728d4f 100644
--- a/src/mame/drivers/aquarius.cpp
+++ b/src/mame/drivers/aquarius.cpp
@@ -180,7 +180,7 @@ READ8_MEMBER(aquarius_state::cartridge_r)
{
uint8_t data = 0;
if (m_cart->exists())
- data = m_cart->read_rom(offset);
+ data = m_cart->read_rom(space, offset);
return data ^ m_scrambler;
}
@@ -349,25 +349,24 @@ GFXDECODE_END
MACHINE DRIVERS
***************************************************************************/
-void aquarius_state::aquarius(machine_config &config)
-{
+MACHINE_CONFIG_START(aquarius_state::aquarius)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(3'579'545)); // ???
- m_maincpu->set_addrmap(AS_PROGRAM, &aquarius_state::aquarius_mem);
- m_maincpu->set_addrmap(AS_IO, &aquarius_state::aquarius_io);
- m_maincpu->set_vblank_int("screen", FUNC(aquarius_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(3'579'545)) // ???
+ MCFG_DEVICE_PROGRAM_MAP(aquarius_mem)
+ MCFG_DEVICE_IO_MAP(aquarius_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", aquarius_state, irq0_line_hold)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2800));
- m_screen->set_size(40 * 8, 25 * 8);
- m_screen->set_visarea(0, 40 * 8 - 1, 0 * 8, 25 * 8 - 1);
- m_screen->set_screen_update(FUNC(aquarius_state::screen_update_aquarius));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2800))
+ MCFG_SCREEN_SIZE(40 * 8, 25 * 8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40 * 8 - 1, 0 * 8, 25 * 8 - 1)
+ MCFG_SCREEN_UPDATE_DRIVER(aquarius_state, screen_update_aquarius)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_aquarius);
- TEA1002(config, m_tea1002, XTAL(8'867'238));
+ MCFG_TEA1002_ADD("encoder", XTAL(8'867'238))
PALETTE(config, m_palette, FUNC(aquarius_state::aquarius_palette), 512, 16);
/* sound hardware */
@@ -380,18 +379,18 @@ void aquarius_state::aquarius(machine_config &config)
ay8910.add_route(ALL_OUTPUTS, "mono", 0.25);
/* cassette */
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
/* cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_linear_slot, "aquarius_cart");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_linear_slot, "aquarius_cart")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("4K").set_extra_options("8K,20K,36K");
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("aquarius");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list","aquarius")
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/arachnid.cpp b/src/mame/drivers/arachnid.cpp
index fc63ada443a..c9a97e4cb5f 100644
--- a/src/mame/drivers/arachnid.cpp
+++ b/src/mame/drivers/arachnid.cpp
@@ -130,8 +130,8 @@ void arachnid_state::arachnid_map(address_map &map)
map(0x2000, 0x2007).rw(PTM6840_TAG, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
map(0x4004, 0x4007).rw(m_pia_u4, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
map(0x4008, 0x400b).rw(m_pia_u17, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
- map(0x6000, 0x6000).w(TMS9118_TAG, FUNC(tms9928a_device::vram_write));
- map(0x6002, 0x6002).w(TMS9118_TAG, FUNC(tms9928a_device::register_write));
+ map(0x6000, 0x6000).w(TMS9118_TAG, FUNC(tms9928a_device::vram_w));
+ map(0x6002, 0x6002).w(TMS9118_TAG, FUNC(tms9928a_device::register_w));
map(0x8000, 0xffff).rom().region(M6809_TAG, 0);
}
@@ -420,14 +420,13 @@ void arachnid_state::machine_start()
***************************************************************************/
/*-------------------------------------------------
- machine_config( arachnid )
+ MACHINE_CONFIG_START( arachnid )
-------------------------------------------------*/
-void arachnid_state::arachnid(machine_config &config)
-{
+MACHINE_CONFIG_START(arachnid_state::arachnid)
// basic machine hardware
- MC6809(config, m_maincpu, 10.738635_MHz_XTAL / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &arachnid_state::arachnid_map);
+ MCFG_DEVICE_ADD(M6809_TAG, MC6809, 10.738635_MHz_XTAL / 3)
+ MCFG_DEVICE_PROGRAM_MAP(arachnid_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // MK48Z02 (or DS1220Y)
@@ -457,12 +456,13 @@ void arachnid_state::arachnid(machine_config &config)
// sound hardware
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
ptm6840_device &ptm(PTM6840(config, PTM6840_TAG, 10.738635_MHz_XTAL / 3 / 4));
ptm.set_external_clocks(0, 0, 0);
ptm.o1_callback().set(FUNC(arachnid_state::ptm_o1_callback));
-}
+MACHINE_CONFIG_END
/***************************************************************************
ROMS
diff --git a/src/mame/drivers/arcadecl.cpp b/src/mame/drivers/arcadecl.cpp
index 28153da28e3..944b0305ad4 100644
--- a/src/mame/drivers/arcadecl.cpp
+++ b/src/mame/drivers/arcadecl.cpp
@@ -320,36 +320,37 @@ GFXDECODE_END
*
*************************************/
-void sparkz_state::sparkz(machine_config &config)
-{
+MACHINE_CONFIG_START(sparkz_state::sparkz)
+
/* basic machine hardware */
- M68000(config, m_maincpu, MASTER_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &sparkz_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, MASTER_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
EEPROM_2804(config, "eeprom").lock_after_write(true);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- GFXDECODE(config, m_gfxdecode, "palette", gfx_arcadecl);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_arcadecl)
palette_device &palette(PALETTE(config, "palette"));
palette.set_format(palette_device::IRGB_1555, 512);
palette.set_membits(8);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
- m_screen->set_raw(MASTER_CLOCK/2, 456, 0+12, 336+12, 262, 0, 240);
- m_screen->set_screen_update(FUNC(sparkz_state::screen_update));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set(FUNC(sparkz_state::video_int_write_line));
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 456, 0+12, 336+12, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(sparkz_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sparkz_state, video_int_write_line))
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, MASTER_CLOCK/4/3, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, MASTER_CLOCK/4/3, okim6295_device::PIN7_LOW)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
void arcadecl_state::arcadecl(machine_config &config)
{
diff --git a/src/mame/drivers/argo.cpp b/src/mame/drivers/argo.cpp
index 7b4eaa8eee0..8cfe5601103 100644
--- a/src/mame/drivers/argo.cpp
+++ b/src/mame/drivers/argo.cpp
@@ -350,21 +350,20 @@ uint32_t argo_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
return 0;
}
-void argo_state::argo(machine_config &config)
-{
+MACHINE_CONFIG_START(argo_state::argo)
/* basic machine hardware */
- Z80(config, m_maincpu, 3500000);
- m_maincpu->set_addrmap(AS_PROGRAM, &argo_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &argo_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 3500000)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(argo_state::screen_update));
- screen.set_size(640, 250);
- screen.set_visarea_full();
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(argo_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 250)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( argo )
diff --git a/src/mame/drivers/argox.cpp b/src/mame/drivers/argox.cpp
index 964895d77a8..d24fde057ca 100644
--- a/src/mame/drivers/argox.cpp
+++ b/src/mame/drivers/argox.cpp
@@ -71,14 +71,13 @@ void os214_state::os214_io_map(address_map &map)
// ADDRESS_MAP_GLOBAL_MASK(0xff)
}
-void os214_state::os214(machine_config &config)
-{
+MACHINE_CONFIG_START(os214_state::os214)
/* basic machine hardware */
- H83002(config, m_maincpu, XTAL(16'000'000)); /* X1 xtal value is correct,
+ MCFG_DEVICE_ADD("maincpu", H83002, XTAL(16'000'000)) /* X1 xtal value is correct,
but there can be some clock divider perhaps ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &os214_state::os214_prg_map);
- m_maincpu->set_addrmap(AS_IO, &os214_state::os214_io_map);
-}
+ MCFG_DEVICE_PROGRAM_MAP(os214_prg_map)
+ MCFG_DEVICE_IO_MAP(os214_io_map)
+MACHINE_CONFIG_END
void os214_state::init_os214()
{
diff --git a/src/mame/drivers/argus.cpp b/src/mame/drivers/argus.cpp
index 66137ac1f8c..682dd01889d 100644
--- a/src/mame/drivers/argus.cpp
+++ b/src/mame/drivers/argus.cpp
@@ -528,7 +528,7 @@ void argus_state::argus(machine_config &config)
void argus_state::valtric(machine_config &config)
{
/* basic machine hardware */
- Z80(config, m_maincpu, 5000000); /* 5 MHz */
+ Z80(config, m_maincpu, 5000000); /* 5 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &argus_state::valtric_map);
TIMER(config, "scantimer").configure_scanline(FUNC(argus_state::scanline), "screen", 0, 1);
@@ -576,7 +576,7 @@ void argus_state::valtric(machine_config &config)
void argus_state::butasan(machine_config &config)
{
/* basic machine hardware */
- Z80(config, m_maincpu, 5000000); /* 5 MHz */
+ Z80(config, m_maincpu, 5000000); /* 5 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &argus_state::butasan_map);
TIMER(config, "scantimer").configure_scanline(FUNC(argus_state::butasan_scanline), "screen", 0, 1);
diff --git a/src/mame/drivers/aristmk4.cpp b/src/mame/drivers/aristmk4.cpp
index e1bf7fe0639..3c2b35a11e9 100644
--- a/src/mame/drivers/aristmk4.cpp
+++ b/src/mame/drivers/aristmk4.cpp
@@ -97,7 +97,7 @@
The VIA uses Port A to write to the D0-D7 on the AY8910s. Port B hooks first 4 bits up to BC1/BC2/BDIR and A9 on AY1 and A8 on AY2
The remaining 4 bits are connected to other hardware, read via the VIA.
- The AY8910 named ay1 has writes on PORT B to the ZN434 DA converter.
+ The AY8910 named ay1 has writes on PORT B to the ZN434 DA convertor.
The AY8910 named ay2 has writes to lamps and the light tower on Port A and B. these are implemented via the layout
@@ -680,7 +680,7 @@ READ8_MEMBER(aristmk4_state::mkiv_pia_ina)
{
/* uncomment this code once RTC is fixed */
- //return m_rtc->read(1);
+ //return m_rtc->read(space,1);
return 0; // OK for now, the aussie version has no RTC on the MB so this is valid.
}
@@ -689,12 +689,12 @@ WRITE8_MEMBER(aristmk4_state::mkiv_pia_outa)
{
if(m_rtc_data_strobe)
{
- m_rtc->write(1,data);
+ m_rtc->write(space,1,data);
//logerror("rtc protocol write data: %02X\n",data);
}
else
{
- m_rtc->write(0,data);
+ m_rtc->write(space,0,data);
//logerror("rtc protocol write address: %02X\n",data);
}
}
@@ -798,13 +798,13 @@ READ8_MEMBER(aristmk4_state::via_a_r)
if (m_ay8910_1&0x03) // SW1 read.
{
- psg_ret = m_ay1->data_r();
+ psg_ret = m_ay1->data_r(space, 0);
//logerror("PSG porta ay1 returned %02X\n",psg_ret);
}
else if (m_ay8910_2&0x03) //i don't think we read anything from Port A on ay2, Can be removed once game works ok.
{
- psg_ret = m_ay2->data_r();
+ psg_ret = m_ay2->data_r(space, 0);
//logerror("PSG porta ay2 returned %02X\n",psg_ret);
}
return psg_ret;
@@ -898,13 +898,13 @@ WRITE8_MEMBER(aristmk4_state::via_b_w)
break;
case 0x06: //WRITE
{
- m_ay1->data_w(m_psg_data);
+ m_ay1->data_w(space, 0 , m_psg_data);
//logerror("VIA Port A write data ay1: %02X\n",m_psg_data);
break;
}
case 0x07: //LATCH Address (set register)
{
- m_ay1->address_w(m_psg_data);
+ m_ay1->address_w(space, 0 , m_psg_data);
//logerror("VIA Port B write register ay1: %02X\n",m_psg_data);
break;
}
@@ -925,13 +925,13 @@ WRITE8_MEMBER(aristmk4_state::via_b_w)
break;
case 0x06: //WRITE
{
- m_ay2->data_w(m_psg_data);
+ m_ay2->data_w(space, 0, m_psg_data);
//logerror("VIA Port A write data ay2: %02X\n",m_psg_data);
break;
}
case 0x07: //LATCH Address (set register)
{
- m_ay2->address_w(m_psg_data);
+ m_ay2->address_w(space, 0, m_psg_data);
//logerror("VIA Port B write register ay2: %02X\n",m_psg_data);
break;
}
@@ -1511,10 +1511,10 @@ static INPUT_PORTS_START(cgold2)
PORT_MODIFY("500e")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("Play 1 Line") PORT_CODE(KEYCODE_W)
- PORT_MODIFY("5201")
- PORT_DIPNAME( 0x10, 0x10, "5201-5") // Must be "on" otherwise the game will not respond
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("5201:5")
- PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_MODIFY("via_port_b")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_GAMBLE_D_UP ) PORT_NAME("Test1") PORT_CODE(KEYCODE_2) // coin optic 1?
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_GAMBLE_TAKE ) PORT_NAME("Test2") PORT_CODE(KEYCODE_3) // coin optic 2?
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_GAMBLE_HIGH ) PORT_NAME("Test3") PORT_CODE(KEYCODE_4) // coin to cashbox?
INPUT_PORTS_END
static INPUT_PORTS_START(fhunter)
@@ -1770,10 +1770,10 @@ void aristmk4_state::power_fail()
To enter the robot test
1. Open the main door
- 2. Trigger powerfail / NMI by pressing ',' for at least 1 second, the game will freeze.
+ 2. Trigger powerfail / NMI by presing L for at least 1 second, the game will freeze.
3. Press F3 ( reset ) whilst holding down robot/hopper test button ( Z )
- Note: The use of 1 Hz in the timer is to avoid unintentional triggering the NMI ( ie.. hold down ',' for at least 1 second )
+ Note: The use of 1 Hz in the timer is to avoid unintentional triggering the NMI ( ie.. hold down L for at least 1 second )
*/
if(ioport("powerfail")->read()) // send NMI signal if L pressed
diff --git a/src/mame/drivers/aristmk5.cpp b/src/mame/drivers/aristmk5.cpp
index ced57a2e22c..473a331bb54 100644
--- a/src/mame/drivers/aristmk5.cpp
+++ b/src/mame/drivers/aristmk5.cpp
@@ -675,8 +675,6 @@ public:
, m_lamps(*this, "lamp%u", 0U)
{ }
- static constexpr feature_type imperfect_features() { return feature::GRAPHICS | feature::SOUND | feature::TIMING; }
-
void aristmk5(machine_config &config);
void aristmk5_touch(machine_config &config);
void aristmk5_usa(machine_config &config);
@@ -1381,7 +1379,15 @@ static INPUT_PORTS_START( aristmk5_usa )
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_COIN1) PORT_CHANGED_MEMBER(DEVICE_SELF, aristmk5_state, coin_start, nullptr)
INPUT_PORTS_END
-static INPUT_PORTS_START( aristmk5 )
+static INPUT_PORTS_START( aristmk5 ) // TODO: Remove ROM swap code as it is not needed for non-US hardware
+ /* This simulates the ROM swap */
+ PORT_START("ROM_LOAD")
+ PORT_CONFNAME( 0x07, 0x04, "System Mode" )
+ PORT_CONFSETTING( 0x00, "USA Set Chip v4.04.09 Mode" )
+ PORT_CONFSETTING( 0x01, "USA Set Chip v4.04.08 Mode" )
+ PORT_CONFSETTING( 0x02, "USA Set Chip v4.04.00 Mode" )
+ PORT_CONFSETTING( 0x03, "USA Set Chip v4.02.04 Mode" )
+ PORT_CONFSETTING( 0x04, "Game Mode" )
PORT_START("P1")
PORT_BIT(0x00000100, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(KEYCODE_Q) PORT_NAME("Collect")
@@ -1984,10 +1990,10 @@ static INPUT_PORTS_START(baddog)
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 10/50/200 / Hold 4 / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("High 10/50/200 / Hold 5 / Spade")
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_S) PORT_NAME("Red")
- PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Gamble / Half Gamble")
+ PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Gamble")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Take Win")
- PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Black")
- PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Draw")
+ PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Draw / Black")
+ PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
@@ -2001,7 +2007,8 @@ static INPUT_PORTS_START(multidrw)
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("1 Draw / Hold 3")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("2 Draws / Hold 4 / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("3 Draws / Hold 5 / Spade")
- PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Bet / Next Card")
+ PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Black")
+ PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Bet")
PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_BUTTON13) PORT_CODE(KEYCODE_J) PORT_NAME("Draw")
INPUT_PORTS_END
@@ -2233,23 +2240,21 @@ void aristmk5_state::machine_reset()
m_ioc_regs[IRQ_STATUS_B] |= 0x40; //hack, set keyboard irq empty to be ON
+ /* load the roms according to what the operator wants */
{
- /* for US sets, load the roms according to what the operator wants */
uint8_t *ROM = memregion("maincpu")->base();
- uint8_t *PRG;
+ uint8_t *PRG;// = memregion("prg_code")->base();
+ int i;
+ uint8_t op_mode;
+ static const char *const rom_region[] = { "set_4.04.09", "set_4.04.08", "set_4.04.00", "set_4.02.04", "game_prg" };
- if (ioport("ROM_LOAD") != nullptr)
- {
- static const char *const rom_region[] = { "set_4.04.09", "set_4.04.08", "set_4.04.00", "set_4.02.04", "game_prg" };
+ op_mode = ioport("ROM_LOAD")->read();
- uint8_t op_mode = ioport("ROM_LOAD")->read();
+ PRG = memregion(rom_region[op_mode & 7])->base();
- PRG = memregion(rom_region[op_mode & 7])->base();
- }
- else // non-US sets don't have set chips
- PRG = memregion("game_prg")->base();
+ if(PRG != nullptr)
- for(int i = 0; i < 0x400000; i++)
+ for(i = 0; i < 0x400000; i++)
ROM[i] = PRG[i];
}
@@ -2324,6 +2329,7 @@ void aristmk5_state::aristmk5(machine_config &config)
DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_dac[i], 0).add_route(0, "speaker", 0.1); // unknown DAC
}
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac0", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac0", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
@@ -2359,7 +2365,7 @@ void aristmk5_state::aristmk5_usa_touch(machine_config &config)
microtouch.stx().set("uart_0a", FUNC(ins8250_uart_device::rx_w));
}
-#define ARISTOCRAT_MK5_USA_SETCHIPS \
+#define ARISTOCRAT_MK5_BIOS \
ROM_REGION( 0x400000, "set_4.04.09", ROMREGION_ERASEFF ) /* setchip v4.04.09 4meg */ \
ROM_LOAD32_WORD( "setchip v4.04.09.u7", 0x000000, 0x80000, CRC(e8e8dc75) SHA1(201fe95256459ce34fdb6f7498135ab5016d07f3) ) \
ROM_LOAD32_WORD( "setchip v4.04.09.u11", 0x000002, 0x80000, CRC(ff7a9035) SHA1(4352c4336e61947c555fdc80c61f944076f64b64) ) \
@@ -2371,23 +2377,37 @@ void aristmk5_state::aristmk5_usa_touch(machine_config &config)
ROM_LOAD32_WORD( "setchip v4.04.00.u11", 0x000002, 0x80000, CRC(82dfa12a) SHA1(86fd0f0ad8d5d1bc503392a40bbcdadb055b2765) ) \
ROM_REGION( 0x400000, "set_4.02.04", ROMREGION_ERASEFF ) /* setchip v4.02.04 */ \
ROM_LOAD32_WORD( "setchip v4.02.04.u7", 0x000000, 0x80000, CRC(5a254b22) SHA1(8444f237b392df2a3cb42ea349e7af32f47dd544) ) \
- ROM_LOAD32_WORD( "setchip v4.02.04.u11", 0x000002, 0x80000, CRC(def36617) SHA1(c7ba5b08e884a8fb36c9fb51c08e243e32c81f89) )
-
-#define ARISTOCRAT_MK5_GALS \
+ ROM_LOAD32_WORD( "setchip v4.02.04.u11", 0x000002, 0x80000, CRC(def36617) SHA1(c7ba5b08e884a8fb36c9fb51c08e243e32c81f89) ) \
+ /* GALs */ \
ROM_REGION( 0x600, "gals", 0 ) \
ROM_LOAD( "a562837.u36", 0x000000, 0x000157, CRC(1f269234) SHA1(29940dd50fb55c632935f62ff44ca724379c7a43) ) \
ROM_LOAD( "a562838.u65", 0x000200, 0x000157, CRC(f2f3c40a) SHA1(b795dfa5cc4e8127c3f3a0906664910d1325ec92) ) \
- ROM_LOAD( "a562840.u22", 0x000400, 0x000157, CRC(941d4cdb) SHA1(1ca091fba69e92f262dbb3d40f515703c8981793) )
-
-#define ARISTOCRAT_MK5_EEPROM \
+ ROM_LOAD( "a562840.u22", 0x000400, 0x000157, CRC(941d4cdb) SHA1(1ca091fba69e92f262dbb3d40f515703c8981793) ) \
ROM_REGION16_BE( 0x100, "eeprom0", ROMREGION_ERASEFF ) \
- ROM_REGION16_BE( 0x100, "eeprom1", ROMREGION_ERASEFF )
+ ROM_REGION16_BE( 0x100, "eeprom1", ROMREGION_ERASEFF ) \
+
+#define ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS \
+ ROM_REGION( 0x400000, "set_4.04.09", ROMREGION_ERASEFF ) /* setchip v4.04.09 4meg */ \
+ ROM_LOAD32_WORD( "setchip v4.04.09.u7", 0x000000, 0x80000, CRC(e8e8dc75) SHA1(201fe95256459ce34fdb6f7498135ab5016d07f3) ) \
+ ROM_LOAD32_WORD( "setchip v4.04.09.u11", 0x000002, 0x80000, CRC(ff7a9035) SHA1(4352c4336e61947c555fdc80c61f944076f64b64) ) \
+ ROM_REGION( 0x400000, "set_4.04.08", ROMREGION_ERASEFF ) /* setchip v4.04.08 4meg */ \
+ ROM_LOAD32_WORD( "setchip v4.04.08.u7", 0x000000, 0x80000, CRC(7c4b7fe4) SHA1(39dd39c794c0cb6abc1b7503650643a8131468d1) ) \
+ ROM_LOAD32_WORD( "setchip v4.04.08.u11", 0x000002, 0x80000, CRC(d3234a28) SHA1(8ff112ee4aadf1d359ca8ffe0cfa9c7400aa0595) ) \
+ ROM_REGION( 0x400000, "set_4.04.00", ROMREGION_ERASEFF ) /* setchip v4.04.00 4meg 42pin */ \
+ ROM_LOAD32_WORD( "setchip v4.04.00.u7", 0x000000, 0x80000, CRC(2453137e) SHA1(b59998e75ae3924da16faf47b9cfe9afd60d810c) ) \
+ ROM_LOAD32_WORD( "setchip v4.04.00.u11", 0x000002, 0x80000, CRC(82dfa12a) SHA1(86fd0f0ad8d5d1bc503392a40bbcdadb055b2765) ) \
+ ROM_REGION( 0x400000, "set_4.02.04", ROMREGION_ERASEFF ) /* setchip v4.02.04 */ \
+ ROM_LOAD32_WORD( "setchip v4.02.04.u7", 0x000000, 0x80000, CRC(5a254b22) SHA1(8444f237b392df2a3cb42ea349e7af32f47dd544) ) \
+ ROM_LOAD32_WORD( "setchip v4.02.04.u11", 0x000002, 0x80000, CRC(def36617) SHA1(c7ba5b08e884a8fb36c9fb51c08e243e32c81f89) ) \
+ /* GALs */ \
+ ROM_REGION( 0x600, "gals", 0 ) \
+ ROM_LOAD( "a562837.u36", 0x000000, 0x000157, CRC(1f269234) SHA1(29940dd50fb55c632935f62ff44ca724379c7a43) ) \
+ ROM_LOAD( "a562838.u65", 0x000200, 0x000157, CRC(f2f3c40a) SHA1(b795dfa5cc4e8127c3f3a0906664910d1325ec92) ) \
+ ROM_LOAD( "a562840.u22", 0x000400, 0x000157, CRC(941d4cdb) SHA1(1ca091fba69e92f262dbb3d40f515703c8981793) ) \
ROM_START( aristmk5 )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
@@ -2402,8 +2422,7 @@ ROM_END
// 0200751V / 602/9 / 10 Credit Multiplier / 20 Line Multiline
// ADONIS / NSW/ACT / A - 25/05/98
ROM_START( adonis )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000bf8
0x000000-0x05eb1b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -2427,8 +2446,7 @@ ROM_END
// 0100751V / 602/9 / 10 Credit Multiplier / 20 Line Multiline
// ADONIS / NSW/ACT / A - 25/05/98
ROM_START( adonisa )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000bf8
0x000000-0x05cdc3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -2453,9 +2471,7 @@ ROM_END
// ADONIS / Export / B - 31/07/01
// Requires set chips 4.04.xx
ROM_START( adonisu )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0e8a7b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -2480,9 +2496,7 @@ ROM_END
// ADONIS / NSW/ACT / C - 06/07/99
// Cash Express Hyperlink game
ROM_START( adonisce )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
/*
Checksum code found at 0x000c44
@@ -2510,8 +2524,7 @@ ROM_END
// Venezuela is spelled as 'Venezuila' in the ROM
// Game is in Spanish, however audit mode is in English
ROM_START( alchemst )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000bb8
0x000000-0x08e937 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -2537,8 +2550,7 @@ ROM_END
// 0200428V / 386/56 / CARD POKER
// BAD DOG POKER / NSW HOTEL / A 17/12/96
ROM_START( baddog )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ae4
0x000000-0x056f3f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -2564,8 +2576,7 @@ ROM_END
// 0200818V / 594/1 / 3 Credit Multiplier/3 Line Multiline
// Black Panther / Victoria / A - 30/07/96
ROM_START( blackpnt )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000bb0
0x000000-0x056d8b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -2590,8 +2601,7 @@ ROM_END
// 0100812V / 616/1 / 25 Credit Multiplier/20 Line Multiline
// Boot Scootin' 500cm / NSW/ACT / B - 11/12/98
ROM_START( bootsctn )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
0x000000-0x06c177 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0xb0980753
@@ -2621,9 +2631,7 @@ ROM_END
// Marked as GHG101202 and 92.767%
// No set chips required
ROM_START( bootsctnu )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x0941ab is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -2651,9 +2659,7 @@ ROM_END
// GHG1008-03 / MV4098/1 / 10 Credit Multiplier/20 Line Multiline
// BOOT SCOOTIN' / Export / A - 27/07/99
ROM_START( bootsctnua )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x0944bf is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -2681,9 +2687,7 @@ ROM_END
// BOOT SCOOTIN' / Export / B - 22/03/01
// Requires set chip version: 4.04.xx
ROM_START( bootsctnub )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0f47a7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -2713,9 +2717,7 @@ ROM_END
// Touchscreen game
// Game requires set chip version: 4.01.xx
ROM_START( bparty )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0a693f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -2743,9 +2745,7 @@ ROM_END
// Bachelorette Party / Export / B - 25/08/2000
// Touchscreen game
ROM_START( bpartya )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "bhg1579.u7", 0x000000, 0x7f01b, BAD_DUMP CRC(da30ade2) SHA1(0a19181ae3968134a5731aa9eadde8c7a12798c1) )
@@ -2766,8 +2766,7 @@ ROM_END
// 0200510V / 593 / 10 Credit Multiplier / 9 Line Multiline
// Bumble Bugs / Local / D - 5/07/96
ROM_START( bumblbug )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b68
0x000000-0x05b94b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -2788,8 +2787,7 @@ ROM_END
// 0200546V / 593 / 10 Credit Multiplier / 9 Line Multiline
// Bumble Bugs / QLD CLUB & HOTEL / D - 05/07/96
ROM_START( bumblbugql )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ac8
0x000000-0x05554b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -2816,9 +2814,7 @@ ROM_END
// Marked as CHG047903 and 92.691%
// No set chips required
ROM_START( bumblbugu )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x0b1f47 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -2846,9 +2842,7 @@ ROM_END
// Variation (% and NO): 87.006% 99
// No set chips required
ROM_START( bumblbugua )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x0b1f47 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -2872,8 +2866,7 @@ ROM_END
// 0200143V / 571/4 / 10 Credit Multiplier/9 Line Multiline
// Butterfly Delight / Local / A - 19/12/95
ROM_START( buttdeli )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000adc
0x000000-0x04477f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -2897,9 +2890,7 @@ ROM_END
// AHG1463 / 603(a) / 3,5,10,25,50 Credit Multiplier / 20 Line Multiline
// Canyon Rose 100cm / Export / B - 06/12/96
ROM_START( canrose )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "ahg1463.u7", 0x000000, 0x7f06d, CRC(d866097c) SHA1(2bd2c6200986b27a35329aa0c43e5afd22becbfc) )
@@ -2916,8 +2907,7 @@ ROM_END
// 0100676V / 614/3 / 10 Credit Multiplier/20 Line Multiline
// Cash Cat 200cm / NSW/ACT / A - 3/04/98
ROM_START( cashcat )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
/*
Checksum code found at 0x000b68
@@ -2941,8 +2931,7 @@ ROM_END
// 0100557V / 614/1 / 10 Credit Multiplier/9 Line Multiline
// Cash Cat 90cm / NSW/ACT / B - 1/12/97
ROM_START( cashcata )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
/*
Checksum code found at 0x000b68
@@ -2966,8 +2955,7 @@ ROM_END
// 0300863V / MV4089 / 5 Credit Multiplier/9 Line Multiline
// Cash Cat / New Zealand / A- 4/1/99
ROM_START( cashcatnz )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
// checksum code not found (uses different startup sequence)
ROM_LOAD32_WORD( "0300863v.u7", 0x000000, 0x80000, CRC(de0f0202) SHA1(994f6c47b1e2e0e133853dc69b189752104486e4) )
@@ -2984,8 +2972,7 @@ ROM_END
// 0100438V / 603/1 / 25 Credit Multiplier / 20 Line Multiline
// Cash Chameleon / NSW/ACT / C - 15/4/97
ROM_START( cashcham )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ae0
0x000000-0x055f83 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3009,8 +2996,7 @@ ROM_END
// 0200437V / 603(a) / 5 Credit Multiplier / 20 Line Multiline
// Cash Chameleon 100cm / NSW/ACT / D - 18/02/98
ROM_START( cashchama )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b00
0x000000-0x05ca1b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3034,8 +3020,7 @@ ROM_END
// 0300781V / MV4067 / 5 Credit Multiplier/20 Line Multiline
// Cash Chameleon / New Zealand / A - 31/08/98
ROM_START( cashchamnz )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found (uses different startup sequence)
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0300781v.u7", 0x000000, 0x80000, CRC(009e109e) SHA1(b912b474a226af17bef554f4db6fade7cd2e558f) )
@@ -3054,9 +3039,7 @@ ROM_END
// Marked as DHG4078.
// Game requires set chip version: 4.00.xx
ROM_START( cashchamu )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x09b413 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3080,8 +3063,7 @@ ROM_END
// 0300467V / 607 / 10 Credit Multiplier/20 Line Multiline
// Cash Crop / Local / C - 14/07/97
ROM_START( cashcra5 )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b80
0x000000-0x06076b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3105,8 +3087,7 @@ ROM_END
// 0300447V / 607/2 / 10 Credit Multiplier/9 Line Multiline
// Cash Crop / Local / C - 29/08/97
ROM_START( cashcra5a )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0300447v.u7", 0x000000, 0x7f992, BAD_DUMP CRC(421ac2af) SHA1(552e98a0d3f969d702dd0aafcb4cb8f697a56b47) )
@@ -3123,8 +3104,7 @@ ROM_END
// 0100787V / 630/1 / 10 Credit Multiplier / 20 Line Multiline
// The Chariot Challenge / NSW/ACT / A - 10/08/98
ROM_START( chariotc )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ba8
0x000000-0x0603fb is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3150,8 +3130,7 @@ ROM_END
// ROM contains unaltered NSW/ACT region string and date, but game is for the Venezuelan market
// Game is in Spanish, however audit mode is in English
ROM_START( chariotcv )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ba8
0x000000-0x07dbb7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3176,8 +3155,7 @@ ROM_END
// Ckeckmate / NSW/ACT / B - 06/07/01
// Checkmate is misspelled as 'Ckeckmate' in the ROM
ROM_START( checkma5 )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000c38
0x000000-0x071847 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3203,8 +3181,7 @@ ROM_END
// 0100351V / 596 / 10 Credit Multiplier/9 Line Multiline
// Chicken / Local / A - 27/08/96
ROM_START( chickna5 )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b80
0x000000-0x053fb7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3229,8 +3206,7 @@ ROM_END
// 0200530V / 596 / 10 Credit Multiplier/9 Line Multiline
// Chicken / QLD Club & Hotels / C - 23/02/98
ROM_START( chickna5ql )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ac8
0x000000-0x05f193 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3264,9 +3240,7 @@ ROM_END
// No set chips required
// Variation (% and NO): 92.588% 03
ROM_START( chickna5u )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x0a6917 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3297,9 +3271,7 @@ ROM_END
// No set chips required
// All devices are 27c4002 instead of 27c4096.
ROM_START( chickna5ua )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x0a6917 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3328,8 +3300,7 @@ ROM_END
// ROM contains unaltered NSW/ACT "Local" region string, but game is for the Venezuelan market
// Game is in Spanish, however audit mode is in English
ROM_START( chickna5v )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b80
0x000000-0x07c3e7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3355,8 +3326,7 @@ ROM_END
// 0100919V / 577/7 / 25 Credit Multiplier/20 Line Multiline
// Coral Riches II / Local / A - 29/12/98
ROM_START( coralrc2 )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000be8
0x000000-0x05ba63 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3380,8 +3350,7 @@ ROM_END
// 0200753V / 615/1 / 10 Credit Multiplier / 20 Line Multiline
// Cuckoo / Local / D - 03/07/98
ROM_START( cuckoo )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b10
0x000000-0x05f63f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3408,8 +3377,7 @@ ROM_END
// All devices are 27c4002 instead of 27c4096
// Requires set chips 4.01.xx
ROM_START( cuckoou )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
+ ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
/*
Checksum code found at 0x000d18
0x000000-0x0a588b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3445,8 +3413,7 @@ ROM_END
// 0300111V / 577/2 / 20 Credit Multiplier/9 Line Multiline
// Desert Bloom / Local / A - 12/10/95
ROM_START( dstbloom )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000adc
0x000000-0x044573 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3471,8 +3438,7 @@ ROM_END
// Desert Bloom / Local / A - 12/10/95
// Same strings as dstbloom but earlier version
ROM_START( dstblooma )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000adc
0x000000-0x0431d3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3496,9 +3462,7 @@ ROM_END
// AHG1533 / MV4115_5 / 5, 10, 25, 50 Credit Multiplier / 20 Line Multiline
// Diamond Destiny / Export / A - 09/05/2000
ROM_START( diamdest )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "ahg1533.u7", 0x000000, 0x7efb1, BAD_DUMP CRC(b228ed66) SHA1(a92e403b4df2054693787f48e988613843731f9e) )
@@ -3518,8 +3482,7 @@ ROM_END
// Diamond Dove / NSW/ACT / B - 19/05/99
// ROM says '9 Credit Multiplier' but game has a 3 credit multiplier
ROM_START( diamdove )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b78
0x000000-0x063a9f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3545,8 +3508,7 @@ ROM_END
// 0200302V / 483/7 / 3 Credit Multiplier/3 Line Multiline
// Diamond Fever / Local / E - 05/09/96
ROM_START( dmdfever )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ad8
0x000000-0x054f3f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3568,8 +3530,7 @@ ROM_END
// Diamond Touch / Local / E - 30/06/97
// Touchscreen game
ROM_START( dimtouch )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found (uses different startup sequence)
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0400433v.u7", 0x000000, 0x80000, CRC(71b19365) SHA1(5a8ba1806af544d33e9acbcbbc0555805b4074e6) )
@@ -3586,8 +3547,7 @@ ROM_END
// 0200424V / 602/1 / 10 Credit Multiplier / 20 Line Multiline
// Dolphin Treasure / NSW/ACT / B - 06/12/96
ROM_START( dolphntr )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b08
0x000000-0x05c367 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3609,8 +3569,7 @@ ROM_END
// Dolphin Treasure / NSW/ACT / B - 06/12/96
// Same strings as dolphntr but earlier version
ROM_START( dolphntra )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b08
0x000000-0x053897 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3634,8 +3593,7 @@ ROM_END
// 0100388V / 602 / 10 Credit Multiplier / 9 Line Multiline
// Dolphin Treasure / NSW/ACT / B - 10/12/96
ROM_START( dolphntrb )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b20
0x000000-0x0536c3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3662,9 +3620,7 @@ ROM_END
// ROM says '9 & 20 Line Multiline' but game only has 20 lines with a 5, 10, 25 or 50 credit multiplier
// Requires set chips 4.04.xx
ROM_START( dolphntrce )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0f24a3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3694,9 +3650,7 @@ ROM_END
// ROM says '9 & 20 Line Multiline' but game only has 9 lines with a 5, 10 or 20 credit multiplier
// Requires set chips 4.04.xx
ROM_START( dolphntrcea )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0f2307 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3726,9 +3680,7 @@ ROM_END
// ROM says '9 & 20 Line Multiline' but game only has 20 lines
// Requires set chips 4.04.xx
ROM_START( dolphntrceb )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0eeb03 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3757,8 +3709,7 @@ ROM_END
// All devices are 27c4002 instead of 27c4096
// No set chips required
ROM_START( dolphntru )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
+ ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
/*
Checksum code found at 0x000d08
0x000000-0x08ec8b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3795,8 +3746,7 @@ ROM_END
// Dragon's Eye / Local / A - 09/05/97
// ROM says '10 Line Multiline' but game only has 9 lines
ROM_START( drgneye )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000af8
0x000000-0x05891b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3818,8 +3768,7 @@ ROM_END
// Dream Weaver / Local / A- 20/06/97
// Touchscreen game
ROM_START( dreamwv )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found (uses different startup sequence)
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0200586v.u7", 0x000000, 0x80000, CRC(6d52fcd1) SHA1(136cb89037a96bf6824ed5754fc67167f0287684) )
@@ -3836,8 +3785,7 @@ ROM_END
// 01J00081 / JB004 / Multi credit / Multi line
// Dynamite Jack / NSW/ACT / A - 12/07/2000
ROM_START( dynajack )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b78
0x000000-0x07031b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3863,9 +3811,7 @@ ROM_END
// CHG1562 / US002 / 5,10,20, Credit Multiplier / 9 Line Multiline
// Dynamite Jack / Export / A - 11/07/01
ROM_START( dynajacku )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found due to ROMs being corrupted, first 4 files are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "chg1562.u7", 0x000000, 0x7f023, BAD_DUMP CRC(c69c989c) SHA1(6eeadf185a38944c6c0c32777c006f27505eaa73) )
@@ -3884,8 +3830,7 @@ ROM_END
// 0100652V / 623 / 8 Credit Multiplier / 25 Credit Multiway
// El Dorado / Local / B - 24/03/98
ROM_START( eldorda5 )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b88
0x000000-0x06328b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3906,8 +3851,7 @@ ROM_END
// 0400122V / 570/3 / 10 Credit Multiplier/9 Line Multiline
// Enchanted Forest / Local / E - 23/06/95
ROM_START( eforsta5 )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ae4
0x000000-0x045da3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3929,9 +3873,7 @@ ROM_END
// Enchanted Forest / Export / C - 17/01/00
// Cash Express Hyperlink game, but can also run standalone without progressive jackpot
ROM_START( eforsta5ce )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found due to ROMs being corrupted, first 6 files are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "chg1536.u7", 0x000000, 0x7efd4, BAD_DUMP CRC(d29185cc) SHA1(26154f3d99907461cff4a44fe02929fae66e6963) )
@@ -3956,9 +3898,7 @@ ROM_END
// Cash Express Hyperlink game, but can also run standalone without progressive jackpot
// Requires set chips 4.04.xx
ROM_START( eforsta5cea )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0f29e7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -3988,9 +3928,7 @@ ROM_END
// All devices are 27c4002 instead of 27c4096.
// No set chips required
ROM_START( eforsta5u )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x0a5233 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4017,9 +3955,7 @@ ROM_END
// All devices are 27c4002 instead of 27c4096.
// No set chips required
ROM_START( eforsta5ua )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x0a5233 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4043,8 +3979,7 @@ ROM_END
// 0100651V / 624 / 3 Credit Multiplier / 3 Line Multiline
// Fast Fortune / Local / D - 07/05/98
ROM_START( fastfort )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ba8
0x000000-0x05c0e7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4068,8 +4003,7 @@ ROM_END
// 01J00131 / JB006 / Multi credit / Multi line
// Fortune Teller / NSW/ACT / D - 24/11/2000
ROM_START( fortellr )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b78
0x000000-0x07038b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4097,9 +4031,7 @@ ROM_END
// BHG1566 / MV4122/2 / 9 Line Multiline / 5, 10, 20 Credit Multiplier
// Fortune Fever / Export / A - 13/05/01
ROM_START( fortfvr )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found due to ROMs being corrupted, 7 out of 8 files are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "bhg1566.u7", 0x000000, 0x7f050, BAD_DUMP CRC(07c896ae) SHA1(5d275f3759253d2aa3eeef4d6ce973e9a3b5e421) )
@@ -4123,9 +4055,7 @@ ROM_END
// All devices are 27c4002 instead of 27c4096
// No set chips required
ROM_START( gambler )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x08f46b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4150,8 +4080,7 @@ ROM_END
// Geisha / New Zealand / A- 05/03/01
// This game is downported from the MK6 version for the New Zealand market only, no other MK5 version exists
ROM_START( geisha )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found (uses different startup sequence)
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0101408v.u7", 0x000000, 0x80000, CRC(ebdde248) SHA1(83f4f4deb5c6f5b33ae066d50e043a24cb0cbfe0) )
@@ -4171,8 +4100,7 @@ ROM_END
// Genie Magic / Local / C- 15/02/99
// Touchscreen game
ROM_START( genmagi )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found (uses different startup sequence)
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0200894v.u7", 0x000000, 0x80000, CRC(20ec3b50) SHA1(400ad7f86077184fee63690060fe2a51ba888e1b) )
@@ -4195,9 +4123,7 @@ ROM_END
// Requires set chip version: 4.04.xx
// Cash Express Hyperlink game, but can also run standalone without progressive jackpot
ROM_START( glizrdce )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0f19bf is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4224,8 +4150,7 @@ ROM_END
// 0100767V / 625 / 10 Credit Multiplier/20 Line Multiline
// Gnome Around The World 200cm / NSW/ACT / C - 18/12/98
ROM_START( gnomeatw )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b68
0x000000-0x05ebcb is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4252,9 +4177,7 @@ ROM_END
// Marked as AHG1205-03, Golden Pyramids, and 94.941%
// No set chips required
ROM_START( goldpyr )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x08ec83 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4281,9 +4204,7 @@ ROM_END
// Marked as AHG1206-99, Golden Pyramids, and 87.928%
// No set chips required
ROM_START( goldpyra )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x08ef13 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4309,8 +4230,7 @@ ROM_END
// ROM says 'Golden Pyramid' with three trailing spaces, artwork says 'Golden Pyramids'
// Original casino BIOS is not dumped, using New Zealand 0700474V BIOS until an Australian version is dumped
ROM_START( goldpyrb )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
note, this actually contains a 2nd checksum for the game, this is the base/bios check only.
@@ -4339,8 +4259,7 @@ ROM_END
// 0101164V / 661 / 50 Credit Multiplier / 20 Line Multiline
// Golden Ra / NSW/ACT / A - 10/04/00
ROM_START( goldenra )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b98
0x000000-0x068297 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4366,8 +4285,7 @@ ROM_END
// 03J00241 / JB008 / Multi credit / Multi line
// Honey Pot / NSW/ACT / A - 21/11/2000
ROM_START( honeypot )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000bb8
0x000000-0x06f02b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4397,9 +4315,7 @@ ROM_END
// Variation (% and NO)
// The game shares reel graphics with Boot Scootin', but the game plays identically to Penguin Pays therefore it doesn't have the double wild feature.
ROM_START( hnktonku )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0ed4ff is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4424,8 +4340,7 @@ ROM_END
// 0100872V / 631/3 B / 25 Credit Multiplier / 20 Line Multiline
// INCA SUN / NSW/ACT / B- 03/05/99
ROM_START( incasun )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000bf8
0x000000-0x05f56b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4451,8 +4366,7 @@ ROM_END
// INCA SUN / NSW/ACT / B- 03/05/99
// SHOW PROGRAM
ROM_START( incasunsp )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
/*
Checksum code found at 0x000bf8
@@ -4477,8 +4391,7 @@ ROM_END
// 0101108V / MV4113 / 5 Credit Multiplier/20 Line Multiline
// Inca Sun / New Zealand / A- 6/3/00
ROM_START( incasunnz )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found (uses different startup sequence)
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0101108v.u7", 0x000000, 0x80000, CRC(1e7be5ca) SHA1(333b7665fab8f60fb60e9d3b44de96725763ca17) )
@@ -4498,8 +4411,7 @@ ROM_END
// Inca Sun / Export / A - 05/09/00
// Requires set chips 4.03.xx
ROM_START( incasunu )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
+ ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
/*
Checksum code found at 0x000d18
0x000000-0x0e847f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4538,9 +4450,7 @@ ROM_END
// Same strings as incasunu but different version
// Requires set chips 4.04.xx
ROM_START( incasunua )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0ec3a7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4566,8 +4476,7 @@ ROM_END
// INCA SUN / VENEZUELA / B- 03/05/99
// Game is in Spanish, however audit mode is in English
ROM_START( incasunv )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000c10
0x000000-0x082163 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4592,8 +4501,7 @@ ROM_END
// 0100845V / 628/1 / 25 Credit Multiway / 20 Credit Multiplier
// Indian Dreaming / Local / B - 15/12/98
ROM_START( indrema5 )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ba8
0x000000-0x06323f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4617,8 +4525,7 @@ ROM_END
// 0100161V / 586/2 / 10 Credit Multiplier/9 Line Multiline
// Jumping Beans / Local / A - 25/1/96
ROM_START( jumpbean )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0100161v.u7", 0x000000, 0x7fa4c, BAD_DUMP CRC(6994c968) SHA1(7896a93aeec9c2d815c49d203ca594644e5df8a6) )
@@ -4635,8 +4542,7 @@ ROM_END
// 0100383V / 586/6 / 25 Credit Multiplier / 20 Line Multiline
// JUMPIN' JOEY 500cm / NSW/ACT / C - 13/11/96
ROM_START( jumpjoey )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ae8
0x000000-0x0562cb is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4661,8 +4567,7 @@ ROM_END
// Jungle Juice / Crown / F - 06/03/96
// ROM says 'Crown' as region (Crown Casino), but game was from Dunedin Casino with New Zealand base chips
ROM_START( jungjuic )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
note, this actually contains a 2nd checksum for the game, this is the base/bios check only.
@@ -4690,8 +4595,7 @@ ROM_END
// King Galah / Local / A - 21/07/95
// ROM says 1995 but artwork says 1997; game has a 1998+ style denomination sign
ROM_START( kgalah )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b28
0x000000-0x05af27 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4716,8 +4620,7 @@ ROM_END
// King Galah / Local / A - 21/07/95
// ROM says 1995 but artwork says 1997; game has the newer style music introduced in 1997
ROM_START( kgalaha )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b28
0x000000-0x058863 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4744,9 +4647,7 @@ ROM_END
// Variation (% and NO):
// Cash Express Hyperlink game, but can also run standalone without progressive jackpot
ROM_START( kgalahce )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0f19b3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4773,8 +4674,7 @@ ROM_END
// 0200024V / 540/3 / 10 Credit Multiplier/5 Line Multiline
// K. G. Bird / Local / D - 10/10/94
ROM_START( kgbirda5 )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ae0
0x000000-0x0435af is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4799,9 +4699,7 @@ ROM_END
// Koala Mint / Export / A - 12/09/01
// Requires set chips 4.04.xx
ROM_START( koalamnt )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0ec32b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4828,8 +4726,7 @@ ROM_END
// 0100677V / 614/2 / 10 Credit Multiplier/20 Line Multiline
// Kooka Bucks 200cm / NSW/ACT / A - 03/04/98
ROM_START( kookabuk )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b68
0x000000-0x061857 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4856,9 +4753,7 @@ ROM_END
// Variation (% and NO)
// Touchscreen game
ROM_START( kyhatonu )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0a6927 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4885,8 +4780,7 @@ ROM_END
// 0100473V / 599/3 / 25 Credit Multiplier / 20 Line Multiline
// Loco Loot / Local / C - 17/06/97
ROM_START( locoloot )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b20
0x000000-0x05633b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4907,8 +4801,7 @@ ROM_END
// 0100472V / 599/2 / 20 Credit Multiplier / 9 Line Multiline
// Loco Loot / Local / C - 17/06/97
ROM_START( locoloota )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b20
0x000000-0x055e93 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4929,8 +4822,7 @@ ROM_END
// 0600725V / MV4064 / 5 Credit Multiplier / 20 Line Multiline
// Loco Loot / New Zealand / A - 8/7/98
ROM_START( locolootnz )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found (uses different startup sequence)
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0600725v.u7", 0x000000, 0x80000, CRC(164dd049) SHA1(c99c56af72cb1eb69591cb8f7bacbd06bdb6494d) )
@@ -4948,9 +4840,7 @@ ROM_END
// Loco Loot / Export / A - 30/07/01
// Requires set chips 4.04.xx
ROM_START( locolootu )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0e94fb is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4974,8 +4864,7 @@ ROM_END
// 0100587V / 621 / 3 Credit Multiplier/3 Line Multiline
// Lone Wolf / Local / A - 29/10/97
ROM_START( lonewolf )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b48
0x000000-0x0580f3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -4996,8 +4885,7 @@ ROM_END
// 0300109V / 570/6 / 20 Credit Multiplier/9 Line Multiline
// Lucky Clover / Local / A - 12/10/95
ROM_START( luckyclo )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ae8
0x000000-0x055e07 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5020,9 +4908,7 @@ ROM_END
// Marked as AHG1211 and 88.26%
// No set chips required
ROM_START( mgarden )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x0a522b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5048,9 +4934,7 @@ ROM_END
// Requires set chips 4.04.xx
// Touchscreen game
ROM_START( magimask )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0e95fb is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5076,8 +4960,7 @@ ROM_END
// Requires set chips 4.04.xx
// Touchscreen game
ROM_START( magimaska )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
+ ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
/*
Checksum code found at 0x000d18
0x000000-0x0e9597 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5117,8 +5000,7 @@ ROM_END
// Requires set chips 4.03.xx
// Touchscreen game
ROM_START( magimaskb )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
+ ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
/*
Checksum code found at 0x000d18
0x000000-0x0e8527 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5155,8 +5037,7 @@ ROM_END
// Magic Touch / Local / A- 06/03/97
// Touchscreen game
ROM_START( magtcha5 )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found (uses different startup sequence)
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0300455v.u7", 0x000000, 0x80000, CRC(a1568e3b) SHA1(842c1aa3f9765f7ba9f2587cb94b6ef03c74e8b9) )
@@ -5177,8 +5058,7 @@ ROM_END
// Same strings as magtcha5 but earlier version
// Touchscreen game
ROM_START( magtcha5a )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found (uses different startup sequence)
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0200455v.u7", 0x000000, 0x80000, CRC(9fa3ee86) SHA1(ce7546b8d1dbf90eb8f4f8d3255dc1c215c966a7) )
@@ -5197,8 +5077,7 @@ ROM_END
// 0100425V / 595/5 / 10 Credit Multiplier/20 Line Multiline
// Mammoth Money / Local / D - 07/04/97
ROM_START( mammothm )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000adc
0x000000-0x053623 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5222,8 +5101,7 @@ ROM_END
// 01J00101 / JB005 / Multi credit / Multi line
// Margarita Magic / NSW/ACT / A - 07/07/2000
ROM_START( marmagic )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b78
0x000000-0x06d93b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5251,9 +5129,7 @@ ROM_END
// ROM has NSW/ACT strings but it is for US platform
// Requires set chips 4.04.xx
ROM_START( marmagicu )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0ed9f3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5282,9 +5158,7 @@ ROM_END
// ROM has NSW/ACT strings but it is for US platform
// Requires set chips 4.04.xx
ROM_START( marmagicua )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0eda53 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5312,8 +5186,7 @@ ROM_END
// 0400115V / 559/2 / 10 Credit Multiplier/9 Line Multiline
// Mine, Mine, Mine / Local / D - 16/01/96
ROM_START( minemine )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000adc
0x000000-0x0446e3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5339,8 +5212,7 @@ ROM_END
// All devices are 27c4002 instead of 27c4096
// No set chips required
ROM_START( minemineu )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
+ ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
/*
Checksum code found at 0x000d10
0x000000-0x0a7203 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5379,9 +5251,7 @@ ROM_END
// All eproms are 27C4002.
// No set chips required
ROM_START( minemineua )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d10
0x000000-0x0a7183 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5405,8 +5275,7 @@ ROM_END
// 0400469V / 607/1 / 25 Credit Multiplier/20 Line Multiline
// Money Mouse / Local / B - 08/04/97
ROM_START( monmouse )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b80
0x000000-0x066077 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5431,8 +5300,7 @@ ROM_END
// Money Mouse / Local / B - 08/04/97
// Same strings as monmouse but earlier version
ROM_START( monmousea )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b80
0x000000-0x05dc0b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5456,8 +5324,7 @@ ROM_END
// 0201397V / MV4126 / 12 Credit Multiplier/20 Line Multiline
// Money Tree / New Zealand / C- 12/04/01
ROM_START( montree )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found (uses different startup sequence)
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0201397v.u7", 0x000000, 0x80000, CRC(982a0078) SHA1(163c15aebd2be623c0f2c7641360336399bc1f4f) )
@@ -5476,8 +5343,7 @@ ROM_END
// 0100294V / 595/3 / 50 Credit Multiplier/20 Line Multiline
// Mountain Money / Local / B - 11/06/96
ROM_START( mountmon )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ae4
0x000000-0x04ee9b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5498,8 +5364,7 @@ ROM_END
// 0100289V / 595/2 / 5 Credit Multiplier/20 Line Multiline
// Mountain Money / Local / C - 11/06/96
ROM_START( mountmona )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ae4
0x000000-0x04eea3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5521,9 +5386,7 @@ ROM_END
// Mountain Money / Export / A - 10/03/01
// Cash Express Hyperlink game, but can also run standalone without progressive jackpot
ROM_START( mountmonce )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found due to ROMs being corrupted, all files except U10 are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "ahg1629.u7", 0x000000, 0x7efa7, BAD_DUMP CRC(8e5b5354) SHA1(519c5af995d75c3035c0a3832956d94a989163de) )
@@ -5544,9 +5407,7 @@ ROM_END
// BHG1465 / MV4108/5 / 5,10,25,50 Credit Multiplier / 20 Line Multiline
// Mountain Money / Export / A - 10/03/01
ROM_START( mountmonu )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found due to ROMs being corrupted, first 6 files are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "bhg1465.u7", 0x000000, 0x7f026, BAD_DUMP CRC(9a176a6b) SHA1(a86213020f6cf0c99271ae4e5768453578ade4c3) )
@@ -5569,9 +5430,7 @@ ROM_END
// Requires set chip version: 4.04.xx
// Variation (% and NO):
ROM_START( mountmonua )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0e8e57 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5598,8 +5457,7 @@ ROM_END
// 0200956V / 386/64 / 200 Credits per Draw / 3 Draws(1 cent) / 2 Credits per Draw / 3 Draws ($1.00)
// MULTIDRAW - FREE GAMES / NSW/ACT / E - 08/05/00
ROM_START( multidrw )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b98
0x000000-0x07477f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5625,8 +5483,7 @@ ROM_END
// 0100275V / 595/1 / 5 Credit Multiplier/20 Line Multiline
// Mystic Garden / Local / B - 11/06/96
ROM_START( mystgard )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ae4
0x000000-0x04eea7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5647,8 +5504,7 @@ ROM_END
// 0101503V / MV4141 / 6 Credit Multiplier/20 Line Multiline
// One For All / New Zealand / A- 28/05/01
ROM_START( one4all )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found (uses different startup sequence)
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0101503v.u7", 0x000000, 0x80000, CRC(edf50554) SHA1(302737220c4b7d60db77074429d6f360c55494a6) )
@@ -5668,8 +5524,7 @@ ROM_END
// Orchid Mist 500cm / Local / C - 03/02/99
// ROM says '10 Credit Multiplier' but game has a 50 credit multiplier
ROM_START( orchidms )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b20
0x000000-0x0677c7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5695,8 +5550,7 @@ ROM_END
// Same strings as orchidms but earlier version
// ROM says '10 Credit Multiplier' but game has a 50 credit multiplier
ROM_START( orchidmsa )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b08
0x000000-0x05f753 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5720,8 +5574,7 @@ ROM_END
// 0101241V / MV4118 / 25 Credit Multiplier/10 Line Multiline
// Orchid Mist / New Zealand / A- 3/7/00
ROM_START( orchidmsnz )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found (uses different startup sequence)
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0101241v.u7", 0x000000, 0x80000, CRC(e4183d54) SHA1(c5829448450dff212e76b5571fc1bf0ba681afdf) )
@@ -5738,8 +5591,7 @@ ROM_END
// 0200348V / 593/2 / 10 Credit Multiplier / 9 Line Multiline
// Oscar / Local / C - 20/09/96
ROM_START( oscara5 )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b80
0x000000-0x05d187 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5761,8 +5613,7 @@ ROM_END
// Oscar / Local / C - 20/09/96
// Same strings as oscara5 but earlier version
ROM_START( oscara5a )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b80
0x000000-0x054093 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5786,8 +5637,7 @@ ROM_END
// 0101046V / 594/7 / 10 Credit Multiplier/9 && 20 Line Multiline
// Panther Magic / NSW/ACT / A - 06/10/99
ROM_START( pantmag )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x06d1ff is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5811,8 +5661,7 @@ ROM_END
// 0100716V / 594/4 / 2 Credit Multiplier/5 Line Multiline
// Panther Magic / Local / A - 13/05/98
ROM_START( pantmaga )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000c00
0x000000-0x0583f7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5840,8 +5689,7 @@ ROM_END
// Requires set chips 4.04.xx
// Touchscreen game
ROM_START( partygrs )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
+ ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
/*
Checksum code found at 0x000d18
0x000000-0x0e9b47 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5879,9 +5727,7 @@ ROM_END
// Requires set chips 4.01.xx
// Touchscreen game
ROM_START( partygrsa )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0a69d3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5906,9 +5752,7 @@ ROM_END
// Party Gras / Export / A - 10/11/2001
// Touchscreen game
ROM_START( partygrsb )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "ahg1568.u7", 0x000000, 0x7efb7, BAD_DUMP CRC(69ab6487) SHA1(d7147f78dc098d142e857687e6cbdb8a8762371a) )
@@ -5925,8 +5769,7 @@ ROM_END
// 02J00011 / JB001 / 25 Credit Multiplier / 20 Line Multiline
// Peacock Flutter / NSW/ACT / A - 10/03/00
ROM_START( peaflut )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b98
0x000000-0x0638d3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5950,8 +5793,7 @@ ROM_END
// 0200460V / 586/4(a) / 5 Credit Multiplier / 20 Line Multiline
// Penguin Pays 100cm / NSW/ACT / D - 03/06/97
ROM_START( pengpay )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b68
0x000000-0x05c71f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -5975,8 +5817,7 @@ ROM_END
// 0200357V / 586/4 / 5 Credit Multiplier / 20 Line Multiline
// Penguin Pays 100cm / NSW/ACT / C - 12/11/96
ROM_START( pengpaya )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b60
0x000000-0x05644f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6001,8 +5842,7 @@ ROM_END
// Penguin Pays 90cm / NSW/ACT / D - 03/06/97
// ROM says '100 Credit Multiplier' but game has a 10 credit multiplier
ROM_START( pengpayb )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b68
0x000000-0x05d7b7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6026,8 +5866,7 @@ ROM_END
// 0200113V / 586 / 20 Credit Multiplier/9 Line Multiline
// Penguin Pays / Local / A - 12/10/95
ROM_START( pengpayc )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000adc
0x000000-0x0537d7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6051,8 +5890,7 @@ ROM_END
// 0300113V / 586 / 20 Credit Multiplier/9 Line Multiline
// Penguin Pays 180cm / NSW/ACT / A - 12/10/95
ROM_START( pengpayd )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0300113v.u7", 0x000000, 0x7f909, BAD_DUMP CRC(30c6c635) SHA1(9a31f99c8a7fb0a909b101b2c5767f39930934e9) )
@@ -6072,8 +5910,7 @@ ROM_END
// marked as 92.130%
// No set chips required
ROM_START( pengpayu )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
+ ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
/*
Checksum code found at 0x000d08
0x000000-0x0cd21b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6112,8 +5949,7 @@ ROM_END
// marked as 92.130%
// No set chips required
ROM_START( pengpayua )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
+ ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
/*
Checksum code found at 0x000d08
0x000000-0x0a898f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6140,8 +5976,7 @@ ROM_END
// marked as 90.45%
// No set chips required
ROM_START( pengpayub )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
+ ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
/*
Checksum code found at 0x000d08
0x000000-0x0a898f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6169,9 +6004,7 @@ ROM_END
// Cash Express Hyperlink game, but can also run standalone without progressive jackpot
// Requires set chips 4.04.xx
ROM_START( pengpayce )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0f368f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6200,9 +6033,7 @@ ROM_END
// Penguin Pucks Hyperlink game, but can also run standalone without progressive jackpot
// Requires set chips 4.03.xx
ROM_START( pengpuck )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0f29ef is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6229,8 +6060,7 @@ ROM_END
// 0100674V / 619/1 / 10 Credit Multiplier/20 Line Multiline
// Penguin Pirate 200cm / NSW/ACT / A - 31/03/98
ROM_START( penpir )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b68
0x000000-0x05d27b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6254,8 +6084,7 @@ ROM_END
// 0200578V / 619 / 10 Credit Multiplier/9 Line Multiline
// Penguin Pirate 90cm / NSW/ACT / C - 27/02/98
ROM_START( penpira )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b68
0x000000-0x05feeb is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6281,8 +6110,7 @@ ROM_END
// ROM says 'Penguin Pirate 2', artwork says 'Penguin Pirate II'
// Original casino BIOS is not dumped, using New Zealand 0700474V BIOS until an Australian version is dumped
ROM_START( penpir2 )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
note, this actually contains a 2nd checksum for the game, this is the base/bios check only.
@@ -6312,8 +6140,7 @@ ROM_END
// 0100731V / 618/1 / 10 Credit Multiplier / 20 Line Multiline
// Pet Shop / Local / A - 17/04/98
ROM_START( petshop )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b88
0x000000-0x05f127 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6336,8 +6163,7 @@ ROM_END
// 0100679V / 618 / 10 Credit Multiplier / 9 Line Multiline
// Pet Shop / Local / A - 09/03/98
ROM_START( petshopa )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found due to bad ROMs, all 4 ROMs have stuck bits (0x20)
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0100679v.u7", 0x000000, 0x80000, BAD_DUMP CRC(cf4a24fa) SHA1(b510de9199d16ba7319e1b692d7c6c09fcb735dc) )
@@ -6354,8 +6180,7 @@ ROM_END
// 0500005V / 570/1 / 10 Credit Multiplier/9 Line Multiline
// Phantom Pays / Local / E - 12/09/95
ROM_START( phantpay )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000adc
0x000000-0x044713 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6379,8 +6204,7 @@ ROM_END
// 0100299V / 578/4 / 3 Credit Multiplier/3 Line Multiline
// Prize Fight / Local / B - 08/08/96
ROM_START( przfight )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b48
0x000000-0x053def is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6406,8 +6230,7 @@ ROM_END
// 0100706V / 603/6 / 10 Credit Multiplier / 20 Line Multiline
// Queens of Cash / NSW/ACT / C - 23/07/98
ROM_START( qcash )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000af4
0x000000-0x05d55b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6432,8 +6255,7 @@ ROM_END
// QUEEN OF THE NILE / NSW/ACT / B - 13/05/97
// EPROM labels have "Golden Pyramid 500" (no trailing 's') and 2001 for the year
ROM_START( qnile )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b80
0x000000-0x062913 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6458,8 +6280,7 @@ ROM_END
// QUEEN OF THE NILE / NSW/ACT / B - 13/05/97
// Same strings as qnile but earlier version
ROM_START( qnilea )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b80
0x000000-0x059dff is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6484,8 +6305,7 @@ ROM_END
// QUEEN OF THE NILE / NSW/ACT / B - 13/05/97
// Same strings as qnile and qnilea but earlier version
ROM_START( qnileb )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b80
0x000000-0x055c83 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6512,8 +6332,7 @@ ROM_END
// 3 = Nine, 4 = Ten, 5 = Jack, 6 = Queen, 7 = King, 8 = Ace
// Game and BIOS are in Portuguese
ROM_START( qnilebr )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
note, this actually contains a 2nd checksum for the game, this is the base/bios check only.
@@ -6543,8 +6362,7 @@ ROM_END
// 0300440V / 602/3 / 20 Credit Multiplier / 9 Line Multiline
// QUEEN OF THE NILE / NSW/ACT / B - 13/05/97
ROM_START( qnilec )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b80
0x000000-0x064c4b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6570,9 +6388,7 @@ ROM_END
// Cash Express Hyperlink game, but can also run standalone without progressive jackpot
// Requires set chips 4.04.xx
ROM_START( qnilece )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0f2453 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6602,9 +6418,7 @@ ROM_END
// Cash Express Hyperlink game, but can also run standalone without progressive jackpot
// Requires set chips 4.04.xx
ROM_START( qnilecea )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0ee84f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6635,9 +6449,7 @@ ROM_END
// Cash Express Hyperlink game, but can also run standalone without progressive jackpot
// Requires set chips 4.04.xx
ROM_START( qnileceb )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0f237f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6664,8 +6476,7 @@ ROM_END
// 0101139V / 602/16 / 3 Credit Multiplier / 3 Line Multiline
// QUEEN OF THE NILE / NSW/ACT / A - 11/10/99
ROM_START( qniled )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b78
0x000000-0x068183 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6688,39 +6499,11 @@ ROM_START( qniled )
ROM_END
-// 0101670V / 602/4 / 25, 50 Credit / 20 Line Multiline
-// Queen Of The Nile - Fast Lane / Qld QCOM / E - 17/08/01
-// Fast Lane Hyperlink game
-ROM_START( qnilefl )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
- /*
- Checksum code found at 0x000ad0
- 0x000000-0x086cbb is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
- Expected Checksum 0x3297c26b
- Calculated Checksum 0x3297c26b (OK)
- 0x086cbc-0x2aecd3 is the non-Checksummed range (unusual endpoint)
- */
- ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
- ROM_LOAD32_WORD( "0101670v.u7", 0x000000, 0x80000, CRC(71817007) SHA1(90cd928894044b629e03aa2c1d533eb6aed4c7af) )
- ROM_LOAD32_WORD( "0101670v.u11", 0x000002, 0x80000, CRC(53006d14) SHA1(00d99e74433023d007f6a401d0081decb36a32dc) )
- ROM_LOAD32_WORD( "0101670v.u8", 0x100000, 0x80000, CRC(ffd13e39) SHA1(d0fd0efc968fc4c8c81b0824eb9773462b88acb4) )
- ROM_LOAD32_WORD( "0101670v.u12", 0x100002, 0x80000, CRC(d918d776) SHA1(aa3729d712a43b777d648c840b3e3de21d76ab50) )
- ROM_LOAD32_WORD( "0101670v.u9", 0x200000, 0x80000, CRC(d8c46bd8) SHA1(ae9427f668fe109573915ca0408450137f75ade0) )
- ROM_LOAD32_WORD( "0101670v.u13", 0x200002, 0x80000, CRC(715e7789) SHA1(b734aa88e7e65fba988e7fffd711039c4f554b2c) )
-
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
- ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
-ROM_END
-
-
// 0401072V / 602/4 / 25 Credit Multiplier / 20 Line Multiline
// QUEEN OF THE NILE / NSW/ACT / D - 18/06/99
// Maximillions Hyperlink game
ROM_START( qnilemax )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000bb8
0x000000-0x06fd6f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6747,8 +6530,7 @@ ROM_END
// 0301059V / 602/5 / 10 Credit Multiplier / 9 Line Multiline
// QUEEN OF THE NILE / HOLLAND / G - 10/04/00
ROM_START( qnilenl )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x00104c
0x000000-0x05d1cb is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6773,8 +6555,7 @@ ROM_END
// Queen of the nile / New Zealand / A- 31/8/98
// ROM has "nile" in lowercase
ROM_START( qnilenz )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found (uses different startup sequence)
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0300785v.u7", 0x000000, 0x80000, CRC(c327d801) SHA1(4721d87a7a759bd437d0d93dc6c415e7a8e60ea5) )
@@ -6790,39 +6571,13 @@ ROM_START( qnilenz )
ROM_END
-// 0201200V / 602/4 / 25 Credit Multiplier / 20 Line Multiline
-// Queen Of The Nile / Qld QCOM / D - 18/06/99
-ROM_START( qnileql )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
- /*
- Checksum code found at 0x000ad0
- 0x000000-0x0807ff is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
- Expected Checksum 0x36105c3f
- Calculated Checksum 0x36105c3f (OK)
- 0x080800-0x1aa743 is the non-Checksummed range still containing data but NOT covered by Checksum
- 0x080800-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
- */
- ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
- ROM_LOAD32_WORD( "0201200v.u7", 0x000000, 0x80000, CRC(093b575c) SHA1(3139e1f1e94f752e2162af8064ab7d62f0b15b07) )
- ROM_LOAD32_WORD( "0201200v.u11", 0x000002, 0x80000, CRC(2a356826) SHA1(4c9ae643570fceff7138e1a7bb780de9eaa272b0) )
- ROM_LOAD32_WORD( "0201200v.u8", 0x100000, 0x80000, CRC(8b3dd4cb) SHA1(b57494001bfd6a7b933214b62f5c93cb8c21fdca) )
- ROM_LOAD32_WORD( "0201200v.u12", 0x100002, 0x80000, CRC(38332f4e) SHA1(53c90103df06e5a28bbaf32504a0984b7c65bec7) )
-
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
- ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
-ROM_END
-
-
// GHG4091-02 / MV4091 / 10 Credit Multiplier / 9 Line Multiline
// QUEEN OF THE NILE / NSW/ACT / B - 13/05/97
// All devices are 27c4002 instead of 27c4096
// ROM contains unaltered NSW/ACT region string and date, but game is for the US platform
// No set chips required
ROM_START( qnileu )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
+ ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
/*
Checksum code found at 0x000d08
0x000000-0x08ec87 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6863,9 +6618,7 @@ ROM_END
// Note: The game has GHG4090-03 in the stickers, but the strings inside are GHG4091-03 instead. Also the base is GHG4091.
// No set chips required
ROM_START( qnileua )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x08ec87 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6891,8 +6644,7 @@ ROM_END
// ROM contains unaltered NSW/ACT region string and date, but game is for the Venezuelan market
// Game is in Spanish, however audit mode is in English
ROM_START( qnilev )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b80
0x000000-0x081a0b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6916,8 +6668,7 @@ ROM_END
// 0500009V / 581 / 5 Credit Multiplier/9 Line Multiline
// Q.T. Bird / Local / A - 27/10/94
ROM_START( qtbird )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ae0
0x000000-0x0454af is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6942,8 +6693,7 @@ ROM_END
// Rainbow Warriors / NSW/ACT / B - 02/03/00
// Cash Express Hyperlink game
ROM_START( rainwrce )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000bf8
0x000000-0x06bb13 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6971,8 +6721,7 @@ ROM_END
// 0100400V / 598/2 / 20 Credit Multiplier / 25 Credit Multiway
// Reel Power / Local / A - 01/11/96
ROM_START( reelpwr )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b80
0x000000-0x059d1b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -6997,8 +6746,7 @@ ROM_END
// Reelin'n Rockin / Local / A - 13/07/98
// ROM says 'Reelin'n Rockin', artwork says 'Reelin-n-Rockin'
ROM_START( reelrock )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ba8
0x000000-0x062f6f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7019,38 +6767,10 @@ ROM_START( reelrock )
ROM_END
-// 0101460V / 628/2 / 10, 25 & 50 Credit Multiplier / 20 Line Multiline
-// Reelin 'n Rockin / QLD / E - 20/12/00
-// ROM says 'Reelin 'n Rockin', artwork says 'Reelin-n-Rockin'
-ROM_START( reelrockql )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
- /*
- Checksum code found at 0x000ad0
- 0x000000-0x08737b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
- Expected Checksum 0x962948fb
- Calculated Checksum 0x962948fb (OK)
- 0x08737c-0x2b2beb is the non-Checksummed range (unusual endpoint)
- */
- ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
- ROM_LOAD32_WORD( "0101460v.u7", 0x000000, 0x80000, CRC(6781085a) SHA1(8fbd8cddada944ca3fd633bdc3b5dc3c0a14736d) )
- ROM_LOAD32_WORD( "0101460v.u11", 0x000002, 0x80000, CRC(43525988) SHA1(705c0114300ea099c7eb96c5035233753534d28d) )
- ROM_LOAD32_WORD( "0101460v.u8", 0x100000, 0x80000, CRC(21767926) SHA1(cbfc3304aab6ef4988652071b263a814804f5f6b) )
- ROM_LOAD32_WORD( "0101460v.u12", 0x100002, 0x80000, NO_DUMP )
- ROM_LOAD32_WORD( "0101460v.u9", 0x200000, 0x80000, CRC(324f6fd8) SHA1(c6d689447eb15a57046bcdecc5dbd67b716112f5) )
- ROM_LOAD32_WORD( "0101460v.u13", 0x200002, 0x80000, NO_DUMP )
-
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
- ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
-ROM_END
-
-
// 0400549V / 608 / 3 Credit Multiplier/3 Line Multiline
// Return of the Samurai / Local / A - 17/04/97
ROM_START( retrsam )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b88
0x000000-0x06445b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7075,8 +6795,7 @@ ROM_END
// Return of the Samurai / Local / A - 17/04/97
// Same strings as retrsam but earlier version
ROM_START( retrsama )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b88
0x000000-0x0590b7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7097,8 +6816,7 @@ ROM_END
// 0200506V / 608/1 / 10 Credit Multiplier/9 Line Multiline
// Return of the Samurai / Local / A - 28/04/97
ROM_START( retrsamb )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b88
0x000000-0x05889b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7120,8 +6838,7 @@ ROM_END
// Rushin Rooster / Local / C - 25/06/97
// ROM says '10 Credit Multiplier' but game has a 5 credit multiplier
ROM_START( rushrst )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b68
0x000000-0x05a0c3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7147,8 +6864,7 @@ ROM_END
// SUPER BUCKS II / NSW/ACT / G 26/07/99
// Sound data is damaged due to bad u8 ROM
ROM_START( sbuk2 )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b98
0x000000-0x06ab7f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7173,8 +6889,7 @@ ROM_END
// No combination data due to missing u11 ROM
// This version had Superman-style reel symbols, whereas sbuk2 has similar graphics to Super Bucks III
ROM_START( sbuk2a )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found due to missing ROMs
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0300006v.u7", 0x000000, 0x80000, CRC(d1833c73) SHA1(1576a7877877569438571a16c51fdd56a172c60d) )
@@ -7191,8 +6906,7 @@ ROM_END
// 0200711V / 626 / 3 Credit Multiplier / 3 Line Multiline
// Super Bucks III / NSW/ACT / A-22/04/98
ROM_START( sbuk3 )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ba8
0x000000-0x05ead3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7217,8 +6931,7 @@ ROM_END
// Super Bucks III / NSW/ACT / A-22/04/98
// Same strings as sbuk3 but earlier version
ROM_START( sbuk3a )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ba8
0x000000-0x05eaff is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7243,9 +6956,7 @@ ROM_END
// Sweet Liberty Deluxe / Export / A - 11/02/01
// Requires set chips 4.04.xx
ROM_START( sldeluxe )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0ec207 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7272,8 +6983,7 @@ ROM_END
// 0100673V / 621/2 / 10 Credit Multiplier
// Silver Wolf / Local / A - 23/03/98
ROM_START( slvrwolf )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ba8
0x000000-0x05bd47 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7297,8 +7007,7 @@ ROM_END
// 0100405V / 599 / 10 Credit Multiplier / 9 Line Multiline
// Snow Cat / Local / B - 23/12/96
ROM_START( snowcat )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b80
0x000000-0x0553db is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7319,8 +7028,7 @@ ROM_END
// 0200606V / 622 / 10 Credit Multiplier / 9 Line Multiline
// Sumo Spins / Local / A - 08/12/97
ROM_START( sumospin )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b88
0x000000-0x05d92b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7344,8 +7052,7 @@ ROM_END
// 0200465V / 577/1 / 10 Credit Multiplier/9 Line Multiline
// Sweethearts II / Local / C - 07/09/95
ROM_START( swhr2 )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b68
0x000000-0x05b507 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7367,8 +7074,7 @@ ROM_END
// Sweethearts II / Local / C - 07/09/95
// Same strings as swhr2 but earlier version
ROM_START( swhr2a )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ae0
0x000000-0x041803 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7392,9 +7098,7 @@ ROM_END
// All devices are 27c4002 instead of 27c4096
// No set chips required
ROM_START( swhr2u )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x0b31cb is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7419,8 +7123,7 @@ ROM_END
// Sweethearts II / VENEZUELA / C - 07/09/95
// Game is in Spanish, however audit mode is in English
ROM_START( swhr2v )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b68
0x000000-0x07a763 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7441,8 +7144,7 @@ ROM_END
// 0200319V / 569/12 / 25 Credit Multiplier / 20 Line Multiline
// Thor / Local / B - 14/08/96
ROM_START( thor )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000adc
0x000000-0x052b07 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7466,8 +7168,7 @@ ROM_END
// 0200333V / 570/9 / 10 Credit Multiplier/9 Line Multiline
// Thunder Heart / Local / A - 14/08/96
ROM_START( thndh )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ae0
0x000000-0x054c6f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7491,8 +7192,7 @@ ROM_END
// 0200334V / 597/1 / 3 Credit Multiplier/3 Line Multiline
// Thunder Heart / Local / A - 14/08/96
ROM_START( thndha )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b38
0x000000-0x053c2b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7516,8 +7216,7 @@ ROM_END
// 0100550V / 594/3 / 3 Credit Multiplier/3 Line Multiline
// Top Banana / Local / A - 18/08/97
ROM_START( topbana )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b68
0x000000-0x05851f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7538,8 +7237,7 @@ ROM_END
// 0100782V / 616/1 / 10 Credit Multiplier/20 Line Multiline
// Toucan Tango 200cm / NSW/ACT / A - 17/06/98
ROM_START( toutango )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b88
0x000000-0x06766b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7567,8 +7265,7 @@ ROM_END
// 0301388V / 616 / 10 Credit Multiplier / 9 Line Multiline
// Toucan Tango 90cm / Holland / C - 11/05/99
ROM_START( toutangonl )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x00104c
0x000000-0x060dbf is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7595,8 +7292,7 @@ ROM_END
// 01J00161 / JB001/3 / 25 Credit Multiplier / 20 Line Multiline
// TREASURE TROVE / NSW/ACT / A - 5/10/00
ROM_START( trstrove )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b98
0x000000-0x0638d7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7620,8 +7316,7 @@ ROM_END
// 0201692V / 692 / 10 or 25 Credit Multiplier/9 or 20 Line Multiline
// Triple Treat / NSW/ACT / A - 17/05/02
ROM_START( tritreat )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x07089b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7647,8 +7342,7 @@ ROM_END
// 01J00851 / JB001/5 / Multi credit / Multi line
// TROJAN HORSE / NSW/ACT / A - 30/10/01
ROM_START( trojhors )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000bb8
0x000000-0x06e9f7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7674,8 +7368,7 @@ ROM_END
// 0100269V / 577/3 / 10 Credit Multiplier/9 Line Multiline
// Tropical Delight / Local / B - 15/05/96
ROM_START( trpdlght )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000adc
0x000000-0x04ea87 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7702,9 +7395,7 @@ ROM_END
// All devices are 27c4002 instead of 27c4096
// No set chips required
ROM_START( trpdlghtu )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x0b2d1f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7728,8 +7419,7 @@ ROM_END
// 0100791V / 631/1 A / 10 Credit Multiplier / 20 Line Multiline
// UNICORN DREAMING / NSW/ACT / A - 31/08/98
ROM_START( unicornd )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000bf8
0x000000-0x05f36f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7753,8 +7443,7 @@ ROM_END
// 0100813V / 631 A / 10 Credit Multiplier / 9 Line Multiline
// UNICORN DREAMING / NSW/ACT / A - 02/09/98
ROM_START( unicornda )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000bf8
0x000000-0x05f087 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7778,8 +7467,7 @@ ROM_END
// 0101228V / MV4113/1 / 10 Credit Multiplier/20 Line Multiline
// Unicorn Dreaming / New Zealand / A- 5/4/00
ROM_START( unicorndnz )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found (uses different startup sequence)
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0101228v.u7", 0x000000, 0x80000, CRC(54d55ecb) SHA1(0afb2d6489f01ae55563030e228e1d5443738af1) )
@@ -7797,9 +7485,7 @@ ROM_END
// Unicorn Dreaming / Export / C - 10/17/01
// Requires set chips 4.04.xx
ROM_START( unicorndu )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0ec547 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7826,8 +7512,7 @@ ROM_END
// Venezuela is spelled as 'Venezuila' in the ROM
// Game is in Spanish, however audit mode is in English
ROM_START( venicea5 )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code needs to be done
*/
@@ -7852,9 +7537,7 @@ ROM_END
// All devices are 27c4096
// Requires set chips 4.04.xx
ROM_START( wafricau )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0e77e7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7878,8 +7561,7 @@ ROM_END
// 0200507V / 506/8 / 3 Credit Multiplier/3 Line Multiline
// Wild Amazon / Local / A - 10/10/96
ROM_START( wamazon )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b68
0x000000-0x05c043 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7900,8 +7582,7 @@ ROM_END
// 0200285V / 506/6 / 10 Credit Multiplier
// Wild Amazon / Local / A - 7/5/96
ROM_START( wamazona )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b68
0x000000-0x052b8b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7926,8 +7607,7 @@ ROM_END
// Wild Amazon / VENEZUELA / A - 10/10/96
// Game is in Spanish, however audit mode is in English
ROM_START( wamazonv )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b68
0x000000-0x07b2f3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7951,8 +7631,7 @@ ROM_END
// 0100553V / 609 / 4 Credit Multiplier / 25 Credit Multiway
// Wicked Winnings / Local / B - 01/07/97
ROM_START( wikwin )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b88
0x000000-0x07237f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7976,8 +7655,7 @@ ROM_END
// 0100297V / 543/8 / 3 Credit Multiplier/3 Line Multiline
// Wild Bill / Local / C - 15/08/96
ROM_START( wildbill )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ad8
0x000000-0x054e6b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -7998,8 +7676,7 @@ ROM_END
// 0100167V / 569/9 / 20 Credit Multiplier / 9 Line Multiline
// Wild Cougar / Local / B - 27/2/96
ROM_START( wcougar )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000adc
0x000000-0x043573 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -8025,8 +7702,7 @@ ROM_END
// All devices are 27c4002 instead of 27c4096
// No set chips required
ROM_START( wcougaru )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
+ ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
/*
Checksum code found at 0x000d08
0x000000-0x0b0d5b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -8065,9 +7741,7 @@ ROM_END
// All devices are 27C4002 instead of 27C4096
// No set chips required
ROM_START( wcougarua )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x0b0d5b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -8093,9 +7767,7 @@ ROM_END
// Variation (% and NO): 87,836% 99
// No set chips required
ROM_START( wcougarub )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x0b0d5b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -8122,9 +7794,7 @@ ROM_END
// ROM says '5 Line / 10 Credit Multiplier' but this game has 9 lines with a 5, 10 or 20 credit multiplier
// Requires set chips 4.04.xx
ROM_START( wcougaruc )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
0x000000-0x0e783b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -8148,9 +7818,7 @@ ROM_END
// AHG1515 / MV4134 / 5,10,25,50 Credit Multiplier / 20 Line Multiline
// Wild Coyote / Export / A - 30/07/01
ROM_START( wcoyote )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "ahg1515.u7", 0x000000, 0x7f070, BAD_DUMP CRC(045858cd) SHA1(232a9631bcdbbd2e60970eca62bdc540e537e1f2) )
@@ -8168,8 +7836,7 @@ ROM_END
// Wizard Ways / Local / A - 04/11/96
// ROM says 1996 but game has newer style music and a 1998+ style denomination sign
ROM_START( wizways )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b88
0x000000-0x05ee9b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -8193,8 +7860,7 @@ ROM_END
// 0100337V / 600 / 10 Credit Multiplier/9 Line Multiline
// Wild Angels / Local / B - 24/09/96
ROM_START( wldangel )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000ae0
0x000000-0x05259f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -8219,9 +7885,7 @@ ROM_END
// Winning Post / Export / G - 11/02/97
// No set chips required
ROM_START( wnpost )
- ARISTOCRAT_MK5_USA_SETCHIPS
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d08
0x000000-0x0c3697 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -8245,8 +7909,7 @@ ROM_END
// 0101158V / 608/4 / 3 Credit Multiplier/3 Line Multiline
// Wild Thing / NSW/ACT / B - 14/12/99
ROM_START( wthing )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000b74
0x000000-0x0673cb is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -8270,8 +7933,7 @@ ROM_END
// 0201176V / 608/5 / 25 Credit Multiplier/20 Line Multiline
// Wild Thing / NSW/ACT / B - 25/02/00
ROM_START( wthinga )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
// checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0201176v.u7", 0x000000, 0x7f44a, BAD_DUMP CRC(e2632da7) SHA1(ff53d87d8f45c3bcece358d0ecfa89e6912e1ccf) )
@@ -8290,8 +7952,7 @@ ROM_END
// 0200954V / 638/1 / 10 Credit Multiplier / 20 Line Multiline
// White Tiger Classic / NSW/ACT / B - 08/07/99
ROM_START( wtiger )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d30
0x000000-0x060227 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -8312,8 +7973,7 @@ ROM_END
// 03J00191 / JB005/1 / Multi credit / Multi line
// Yukon Gold / NSW/ACT / A - 30/10/2000
ROM_START( yukongl5 )
- ARISTOCRAT_MK5_GALS
- ARISTOCRAT_MK5_EEPROM
+ ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000bb8
0x000000-0x06dbc3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
@@ -8340,236 +8000,236 @@ ROM_END
* Game Drivers *
*************************/
+#define MACHINE_FLAGS MACHINE_IMPERFECT_SOUND|MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_TIMING
+#define MACHINE_FLAGS_NW MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND|MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_TIMING
+
// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS
-GAMEL( 1995, aristmk5, 0, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "MKV Set/Clear Chips (USA)", MACHINE_NOT_WORKING | MACHINE_IS_BIOS_ROOT, layout_aristmk5_us )
+GAMEL( 1995, aristmk5, 0, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "MKV Set/Clear Chips (USA)", MACHINE_FLAGS_NW|MACHINE_IS_BIOS_ROOT, layout_aristmk5_us )
// Dates listed below are for the combination (reel layout), not release dates
-GAMEL( 1998, adonis, aristmk5, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Adonis (0200751V, NSW/ACT)", MACHINE_NOT_WORKING, layout_aristmk5 ) // 602/9, A - 25/05/98, Rev 10
-GAMEL( 1998, adonisa, adonis, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Adonis (0100751V, NSW/ACT)", MACHINE_NOT_WORKING, layout_aristmk5 ) // 602/9, A - 25/05/98, Rev 9
-GAMEL( 1999, adonisce, adonis, aristmk5, adonisce, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Adonis - Cash Express (0201005V, NSW/ACT)", MACHINE_NOT_WORKING, layout_aristmk5 ) // 602/9, C - 06/07/99, Rev 12
-GAMEL( 2001, adonisu, adonis, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Adonis (BHG1508, US)", MACHINE_NOT_WORKING, layout_adonisu ) // MV4124/1, B - 31/07/01
-GAMEL( 2002, alchemst, aristmk5, aristmk5, goldenra, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Alchemist (01J02046, Venezuela)", MACHINE_NOT_WORKING, layout_yukongl5 ) // JB013/1, A - 22/01/02, Rev 17
-GAMEL( 2000, bparty, aristmk5, aristmk5_usa_touch, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Bachelorette Party (BHG1248, US)", MACHINE_NOT_WORKING, layout_bparty ) // MV4119/1, B - 25/08/2000
-GAMEL( 1996, baddog, aristmk5, aristmk5, baddog, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Bad Dog Poker (0200428V, NSW/ACT)", 0, layout_baddog ) // 386/56, A - 17/12/96
-GAMEL( 1998, bootsctn, aristmk5, aristmk5, cashcham, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Boot Scootin' (0100812V, NSW/ACT)", MACHINE_NOT_WORKING, layout_cashcham ) // 616/1, B - 11/12/98, Rev 20
-GAMEL( 1999, bootsctnu, bootsctn, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Boot Scootin' (GHG1012-02, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // MV4098, A - 25/08/99
-GAMEL( 1999, bootsctnua, bootsctn, aristmk5_usa, pengpuck, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Boot Scootin' (GHG1008-03, US)", MACHINE_NOT_WORKING, layout_aristmk5_us_200 ) // MV4098/1, A - 27/07/99
-GAMEL( 2001, bootsctnub, bootsctn, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Boot Scootin' (AHG1547, US)", MACHINE_NOT_WORKING, layout_adonisu ) // MV4098/1, B - 22/03/01
-GAMEL( 1996, bumblbug, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Bumble Bugs (0200510V, NSW/ACT)", MACHINE_NOT_WORKING, layout_swhr2 ) // 593, D - 5/07/96, Rev 3
-GAMEL( 1996, bumblbugql, bumblbug, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Bumble Bugs (0200456V, Queensland)", MACHINE_NOT_WORKING, layout_swhr2 ) // 593, D - 5/07/96, Rev 1.0
-GAMEL( 1997, bumblbugu, bumblbug, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Bumble Bugs (CHG0479-03, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // 593, D - 05/07/97
-GAMEL( 1997, bumblbugua, bumblbug, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Bumble Bugs (CHG0479-99, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // 593, D - 05/07/97
-GAMEL( 1995, buttdeli, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Butterfly Delight (0200143V, NSW/ACT)", 0, layout_swhr2 ) // 571/4, A - 19/12/95, Rev 1.8.1.0
-GAMEL( 1998, cashcat, aristmk5, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Cat (0100676V, NSW/ACT)", MACHINE_NOT_WORKING, layout_aristmk5 ) // 614/3, A - 03/04/98, Rev 7
-GAMEL( 1997, cashcata, cashcat, aristmk5, aristmk5_9, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Cat (0100557V, NSW/ACT)", MACHINE_NOT_WORKING, layout_dolphntrb ) // 614/1, B - 01/12/97, Rev 7
-GAMEL( 1999, cashcatnz, cashcat, aristmk5, cashcatnz, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Cat (0300863V, New Zealand)", 0, layout_cashcatnz ) // MV4089, A - 4/1/99, Rev 26
-GAMEL( 1997, cashcham, aristmk5, aristmk5, cashcham, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Chameleon (0100438V, NSW/ACT)", 0, layout_cashcham ) // 603/1, C - 15/4/97, Rev 1.25.3.0
-GAMEL( 1998, cashchama, cashcham, aristmk5, cashchama, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Chameleon (0200437V, NSW/ACT)", MACHINE_NOT_WORKING, layout_cashchama ) // 603(a), D - 18/02/98, Rev 3
-GAMEL( 1998, cashchamnz, cashcham, aristmk5, cashchamnz, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Chameleon (0300781V, New Zealand)", 0, layout_cashchamnz ) // MV4067, A - 31/08/98, Rev 21
-GAMEL( 1996, cashchamu, cashcham, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Chameleon (DHG4078-99, US)", MACHINE_NOT_WORKING, layout_cashchamu ) // 603(a), B - 06/12/96
-GAMEL( 1997, cashcra5, aristmk5, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Crop (0300467V, NSW/ACT)", MACHINE_NOT_WORKING, layout_aristmk5 ) // 607, C - 14/07/97, Rev 6
-GAMEL( 1998, chariotc, aristmk5, aristmk5, chariotc, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "The Chariot Challenge (0100787V, NSW/ACT)", MACHINE_NOT_WORKING, layout_aristmk5 ) // 630/1, A - 10/08/98, Rev 11
-GAMEL( 1998, chariotcv, chariotc, aristmk5, chariotcv, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "The Chariot Challenge (04J00714, Venezuela)", MACHINE_NOT_WORKING, layout_snowcat ) // 630, A - 10/08/98, Rev 12
-GAMEL( 2001, checkma5, aristmk5, aristmk5, checkma5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Checkmate (01J00681, NSW/ACT)", MACHINE_NOT_WORKING, layout_checkma5 ) // JB011, B - 06/07/01, Rev 17
-GAMEL( 1996, chickna5, aristmk5, aristmk5, chickna5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Chicken (0100351V, NSW/ACT)", 0, layout_snowcat ) // 596, A - 27/08/96, Rev 1.24
-GAMEL( 1998, chickna5ql, chickna5, aristmk5, chickna5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Chicken (0200530V, Queensland)", MACHINE_NOT_WORKING, layout_snowcat ) // 596, C - 23/02/98, Rev 1.0
-GAMEL( 1998, chickna5u, chickna5, aristmk5_usa, chickna5u, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Chicken (RHG0730-03, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // 596, C - 23/02/98
-GAMEL( 1998, chickna5ua, chickna5, aristmk5_usa, chickna5u, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Chicken (RHG0730-99, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // 596, C - 23/02/98
-GAMEL( 1998, coralrc2, aristmk5, aristmk5, coralrc2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Coral Riches II (0100919V, NSW/ACT)", MACHINE_NOT_WORKING, layout_coralrc2 ) // 577/7, A - 29/12/98, Rev 12
-GAMEL( 1998, cuckoo, aristmk5, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cuckoo (0200753V, NSW/ACT)", MACHINE_NOT_WORKING, layout_aristmk5 ) // 615/1, D - 03/07/98, Rev 6
-GAMEL( 2000, cuckoou, cuckoo, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cuckoo (CHG1195, US)", MACHINE_NOT_WORKING, layout_cuckoou ) // MV4104, C - 02/02/00
-GAMEL( 1995, dstbloom, aristmk5, aristmk5, wcougar, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Desert Bloom (0300111V, NSW/ACT)", 0, layout_wcougar ) // 577/2, A - 12/10/95, Rev 1.16.4.0
-GAMEL( 1995, dstblooma, dstbloom, aristmk5, wcougar, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Desert Bloom (0200111V, NSW/ACT)", 0, layout_wcougar ) // 577/2, A - 12/10/95, Rev 1.16.4.0
-GAMEL( 1999, diamdove, aristmk5, aristmk5, retrsam, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Diamond Dove (0101018V, NSW/ACT)", MACHINE_NOT_WORKING, layout_sbuk3 ) // 640, B - 19/05/99, Rev 8
-GAMEL( 1996, dmdfever, aristmk5, aristmk5, wildbill, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Diamond Fever (0200302V, NSW/ACT)", 0, layout_wildbill ) // 483/7, E - 05/09/96, Rev 1.23.5.0
-GAMEL( 1997, dimtouch, aristmk5, aristmk5_touch, dimtouch, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Diamond Touch (0400433V, NSW/ACT)", MACHINE_NOT_WORKING, layout_dimtouch ) // 604, E - 30/06/97, Rev 17
-GAMEL( 1996, dolphntr, aristmk5, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (0200424V, NSW/ACT)", MACHINE_NOT_WORKING, layout_aristmk5 ) // 602/1, B - 06/12/96, Rev 3
-GAMEL( 1996, dolphntra, dolphntr, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (0100424V, NSW/ACT)", 0, layout_aristmk5 ) // 602/1, B - 06/12/96, Rev 1.24.4.0
-GAMEL( 1996, dolphntrb, dolphntr, aristmk5, aristmk5_9, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (0100388V, NSW/ACT)", 0, layout_dolphntrb ) // 602, B - 10/12/96, Rev 1.24.4.0
-GAMEL( 1996, dolphntru, dolphntr, aristmk5_usa, dolphntru, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (FHG4077-02, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // 602/1, B - 06/12/96
-GAMEL( 1999, dolphntrce, dolphntr, aristmk5_usa, dolphntrce, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dolphin Treasure - Cash Express (AHG1607, US)", MACHINE_NOT_WORKING, layout_adonisu ) // MV4090, D - 22/12/99
-GAMEL( 1999, dolphntrcea, dolphntr, aristmk5_usa, dolphntru, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dolphin Treasure - Cash Express (AHG1606, US)", MACHINE_NOT_WORKING, layout_magimaska ) // MV4090, D - 22/12/99
-GAMEL( 1999, dolphntrceb, dolphntr, aristmk5_usa, dolphntrce, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dolphin Treasure - Cash Express (AHG1519, US)", MACHINE_NOT_WORKING, layout_dolphntrceb ) // MV4090, D - 22/12/99
-GAMEL( 1997, drgneye, aristmk5, aristmk5, snowcat, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dragon's Eye (0100521V, NSW/ACT)", 0, layout_snowcat ) // 610, A - 09/05/97, Rev 1.27
-GAMEL( 1997, dreamwv, aristmk5, aristmk5_touch, dreamwv, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dream Weaver (0200586V, NSW/ACT)", MACHINE_NOT_WORKING, layout_dreamwv ) // 606/2, A - 20/06/97, Rev 16
-GAMEL( 2000, dynajack, aristmk5, aristmk5, dynajack, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dynamite Jack (01J00081, NSW/ACT)", MACHINE_NOT_WORKING, layout_dynajack ) // JB004, A - 12/07/2000, Rev 17
-GAMEL( 1998, eldorda5, aristmk5, aristmk5, reelrock, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "El Dorado (0100652V, NSW/ACT)", MACHINE_NOT_WORKING, layout_reelrock ) // 623, B - 24/03/98, Rev 3
-GAMEL( 1995, eforsta5, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Enchanted Forest (0400122V, NSW/ACT)", 0, layout_swhr2 ) // 570/3, E - 23/06/95, Rev 1.18
-GAMEL( 1997, eforsta5u, eforsta5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Enchanted Forest (JHG0415-03, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // MV4033, B - 10/02/97
-GAMEL( 1997, eforsta5ua, eforsta5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Enchanted Forest (JHG0415-99, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // MV4033, B - 10/02/97
-GAMEL( 2000, eforsta5cea, eforsta5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Enchanted Forest - Cash Express (AHG1615, US)", MACHINE_NOT_WORKING, layout_magimaska ) // MV4108/6, C - 17/01/00
-GAMEL( 1998, fastfort, aristmk5, aristmk5, wildbill, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Fast Fortune (0100651V, NSW/ACT)", MACHINE_NOT_WORKING, layout_wildbill ) // 624, D - 07/05/98, Rev 5
-GAMEL( 2000, fortellr, aristmk5, aristmk5, goldenra, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Fortune Teller (01J00131, NSW/ACT)", MACHINE_NOT_WORKING, layout_fortellr ) // JB006, D - 24/11/2000, Rev 17
-GAMEL( 1998, gambler, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "The Gambler (EHG0916-02, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // MV4084/1, A - 30/10/98
-GAMEL( 2001, geisha, aristmk5, aristmk5, geisha, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Geisha (0101408V, New Zealand)", 0, layout_geisha ) // MV4127, A - 05/03/01, Rev 25
-GAMEL( 1999, genmagi, aristmk5, aristmk5_touch, genmagi, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Genie Magic (0200894V, NSW/ACT)", MACHINE_NOT_WORKING, layout_genmagi ) // 632/1, C - 15/02/99, Rev 20
-GAMEL( 2001, glizrdce, aristmk5, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Green Lizard - Cash Express (AHG1623, US)", MACHINE_NOT_WORKING, layout_adonisu ) // MV4112/2 - A - 05/01/01
-GAMEL( 1998, gnomeatw, aristmk5, aristmk5, kgalah, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Gnome Around The World (0100767V, NSW/ACT)", MACHINE_NOT_WORKING, layout_kgalah ) // 625, C - 18/12/98, Rev 16
-GAMEL( 1997, goldpyr, aristmk5, aristmk5_usa, dolphntru, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Golden Pyramids (AHG1205-03, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // MV4091, B - 13/05/97
-GAMEL( 1997, goldpyra, goldpyr, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Golden Pyramids (AHG1206-99, US)", MACHINE_NOT_WORKING, layout_aristmk5_us_200 ) // 602/2, B - 13/05/97
-GAMEL( 1998, goldpyrb, goldpyr, aristmk5, goldpyrb, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Golden Pyramids (0100878V, Victoria)", MACHINE_NOT_WORKING, layout_goldpyrb ) // 602/5, C - 19/06/98
-GAMEL( 2000, goldenra, aristmk5, aristmk5, goldenra, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Golden Ra (0101164V, NSW/ACT)", MACHINE_NOT_WORKING, layout_goldenra ) // 661, A - 10/04/00, Rev 15
-GAMEL( 2001, hnktonku, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Honky Tonk (BHG1455, US)", MACHINE_NOT_WORKING, layout_magimaska ) // MV4122/3, A - 07/08/01
-GAMEL( 2000, honeypot, aristmk5, aristmk5, goldenra, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Honey Pot (03J00241, NSW/ACT)", MACHINE_NOT_WORKING, layout_yukongl5 ) // JB008, A - 21/11/2000, Rev 17
-GAMEL( 1999, incasun, aristmk5, aristmk5, incasun, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Inca Sun (0100872V, NSW/ACT)", MACHINE_NOT_WORKING, layout_incasun ) // 631/3 B, B - 03/05/99, Rev 15
-GAMEL( 1999, incasunsp, incasun, aristmk5, incasun, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Inca Sun (0100872V, NSW/ACT, Show Program)", MACHINE_NOT_WORKING, layout_incasun ) // 631/3 B, B - 03/05/99, Rev 15
-GAMEL( 2000, incasunnz, incasun, aristmk5, incasunnz, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Inca Sun (0101108V, New Zealand)", 0, layout_incasunnz ) // MV4113, A - 6/3/00, Rev 25
-GAMEL( 2000, incasunu, incasun, aristmk5_usa, dolphntrce, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Inca Sun (CHG1458, US)", MACHINE_NOT_WORKING, layout_adonisu ) // MV4130/3, A - 05/09/00
-GAMEL( 2000, incasunua, incasun, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Inca Sun (DHG1577, US)", MACHINE_NOT_WORKING, layout_adonisu ) // MV4130, A - 05/09/00
-GAMEL( 1999, incasunv, incasun, aristmk5, incasun, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Inca Sun (01J01946, Venezuela)", MACHINE_NOT_WORKING, layout_incasun ) // 631/3 B, B- 03/05/99, Rev 15
-GAMEL( 1998, indrema5, aristmk5, aristmk5, indrema5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Indian Dreaming (0100845V, NSW/ACT)", MACHINE_NOT_WORKING, layout_indrema5 ) // 628/1, B - 15/12/98, Rev 7
-GAMEL( 1996, jumpjoey, aristmk5, aristmk5, cashcham, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Jumpin' Joey (0100383V, NSW/ACT)", 0, layout_cashcham ) // 586/6, C - 13/11/96
-GAMEL( 1996, jungjuic, aristmk5, aristmk5, jungjuic, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Jungle Juice (0200240V, New Zealand)", MACHINE_NOT_WORKING, layout_jungjuic ) // 566/3, F - 06/03/96
-GAMEL( 1995, kgalah, aristmk5, aristmk5, kgalah, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "King Galah (0200536V, NSW/ACT)", MACHINE_NOT_WORKING, layout_kgalah ) // 613/6, A - 21/07/95
-GAMEL( 1995, kgalaha, kgalah, aristmk5, kgalah, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "King Galah (0100536V, NSW/ACT)", 0, layout_kgalah ) // 613, A - 21/07/95
-GAMEL( 2001, kgalahce, kgalah, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "King Galah - Cash Express (AHG1625, US)", MACHINE_NOT_WORKING, layout_adonisu ) // MV4112/2, B - 07/02/01
-GAMEL( 1994, kgbirda5, aristmk5, aristmk5, kgbirda5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "K.G. Bird (0200024V, NSW/ACT)", 0, layout_kgbirda5 ) // 540/3, D - 10/10/94
-GAMEL( 2001, koalamnt, aristmk5, aristmk5_usa, dolphntrce, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Koala Mint (CHG1573, US)", MACHINE_NOT_WORKING, layout_adonisu ) // MV4137, A - 12/09/01
-GAMEL( 1998, kookabuk, aristmk5, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Kooka Bucks (0100677V, NSW/ACT)", MACHINE_NOT_WORKING, layout_aristmk5 ) // 661, A - 03/04/98, Rev 5
-GAMEL( 2000, kyhatonu, aristmk5, aristmk5_usa_touch, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Keep Your Hat On (BHG1204, US)", MACHINE_NOT_WORKING, layout_bparty ) // MV4114/1, B - 08/05/2000
-GAMEL( 1997, locoloot, aristmk5, aristmk5, cashcham, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Loco Loot (0100473V, NSW/ACT)", 0, layout_cashcham ) // 599/3, C - 17/06/97, Rev 1.26.13.0
-GAMEL( 1997, locoloota, locoloot, aristmk5, locoloota, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Loco Loot (0100472V, NSW/ACT)", 0, layout_locoloota ) // 599/2, C - 17/06/97, Rev 1.26.13.0
-GAMEL( 1998, locolootnz, locoloot, aristmk5, cashchamnz, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Loco Loot (0600725V, New Zealand)", 0, layout_cashchamnz ) // MV4064, A - 8/7/98, Rev 24
-GAMEL( 2001, locolootu, locoloot, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Loco Loot (AHG1513, US)", MACHINE_NOT_WORKING, layout_adonisu ) // MV4134, A - 30/07/01
-GAMEL( 1997, lonewolf, aristmk5, aristmk5, wildbill, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Lone Wolf (0100587V, NSW/ACT)", 0, layout_wildbill ) // 621, A - 29/10/97, Rev 1.27.17.0
-GAMEL( 1995, luckyclo, aristmk5, aristmk5, wcougar, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Lucky Clover (0300109V, NSW/ACT)", 0, layout_wcougar ) // 570/6, A - 12/10/95
-GAMEL( 2000, magimask, aristmk5, aristmk5_usa_touch, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Magic Mask (AHG1549, US)", MACHINE_NOT_WORKING, layout_adonisu ) // MV4115_1, A - 09/05/00
-GAMEL( 2000, magimaska, magimask, aristmk5_usa_touch, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Magic Mask (AHG1548, US)", MACHINE_NOT_WORKING, layout_magimaska ) // MV4115, A - 09/05/00
-GAMEL( 2000, magimaskb, magimask, aristmk5_usa_touch, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Magic Mask (DHG1309, US)", MACHINE_NOT_WORKING, layout_magimaska ) // MV4115, A - 09/05/00
-GAMEL( 1997, magtcha5, aristmk5, aristmk5_touch, dimtouch, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Magic Touch (0300455V, NSW/ACT)", MACHINE_NOT_WORKING, layout_dimtouch ) // 606, A - 06/03/97, Rev 14
-GAMEL( 1997, magtcha5a, magtcha5, aristmk5_touch, dimtouch, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Magic Touch (0200455V, NSW/ACT)", MACHINE_NOT_WORKING, layout_dimtouch ) // 606, A - 06/03/97, Rev 14
-GAMEL( 1997, mammothm, aristmk5, aristmk5, kgalah, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mammoth Money (0100425V, NSW/ACT)", 0, layout_kgalah ) // 595/5, D - 07/04/97, Rev 1.22.14.1
-GAMEL( 2000, marmagic, aristmk5, aristmk5, goldenra, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Margarita Magic (01J00101, NSW/ACT)", MACHINE_NOT_WORKING, layout_marmagic ) // JB005, A - 07/07/00, Rev 17
-GAMEL( 2000, marmagicu, marmagic, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Margarita Magic (EHG1558, US)", MACHINE_NOT_WORKING, layout_magimaska ) // US003, 07/07/2000
-GAMEL( 2000, marmagicua, marmagic, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Margarita Magic (EHG1559, US)", MACHINE_NOT_WORKING, layout_adonisu ) // US003, A - 07/07/00
-GAMEL( 1997, mgarden, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Magic Garden (AHG1211-99, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // MV4033, B - 10/02/97
-GAMEL( 1996, minemine, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mine, Mine, Mine (0400115V, NSW/ACT)", 0, layout_swhr2 ) // 559/2, D - 16/01/96, Rev 1.18.3.0
-GAMEL( 1996, minemineu, minemine, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mine, Mine, Mine (VHG0416-99, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // 559/2, E - 14/02/96
-GAMEL( 1996, minemineua, minemine, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mine, Mine, Mine (NHG0416-99, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // 559/2, E - 14/02/96
-GAMEL( 1997, monmouse, aristmk5, aristmk5, cashcham, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Money Mouse (0400469V, NSW/ACT)", MACHINE_NOT_WORKING, layout_cashcham ) // 607/1, B - 08/04/97, Rev 6
-GAMEL( 1997, monmousea, monmouse, aristmk5, cashcham, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Money Mouse (0300469V, NSW/ACT)", MACHINE_NOT_WORKING, layout_cashcham ) // 607/1, B - 08/04/97, Rev 6
-GAMEL( 2001, montree, aristmk5, aristmk5, montree, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Money Tree (0201397V, New Zealand)", 0, layout_montree ) // MV4126, C - 12/04/01, Rev 5
-GAMEL( 1996, mountmon, aristmk5, aristmk5, mountmon, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mountain Money (0100294V, NSW/ACT)", 0, layout_mountmon ) // 595/3, B - 11/06/96, Rev 1.22.5.0
-GAMEL( 1996, mountmona, mountmon, aristmk5, mystgard, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mountain Money (0100289V, NSW/ACT)", 0, layout_mystgard ) // 595/2, C - 11/06/96, Rev 1.22.5.0
-GAMEL( 2001, mountmonua, mountmon, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mountain Money (BHG1464, US)", MACHINE_NOT_WORKING, layout_magimaska ) // MV4108/5, A - 10/03/01
-GAMEL( 2000, multidrw, aristmk5, aristmk5, multidrw, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Multidraw - Free Games (0200956V, NSW/ACT)", MACHINE_NOT_WORKING, layout_multidrw ) // 386/64, E - 08/05/00, Rev 17
-GAMEL( 1996, mystgard, aristmk5, aristmk5, mystgard, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mystic Garden (0100275V, NSW/ACT)", 0, layout_mystgard ) // 595/1, B - 11/06/96, Rev 1.22
-GAMEL( 2001, one4all, aristmk5, aristmk5, one4all, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "One For All (0101503V, New Zealand)", 0, layout_one4all ) // MV4141, A - 28/05/01, Rev 11
-GAMEL( 1999, orchidms, aristmk5, aristmk5, orchidms, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Orchid Mist (0200849V, NSW/ACT)", MACHINE_NOT_WORKING, layout_orchidms ) // 601/3, C - 03/02/99, Rev 8
-GAMEL( 1999, orchidmsa, orchidms, aristmk5, orchidms, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Orchid Mist (0100849V, NSW/ACT)", MACHINE_NOT_WORKING, layout_orchidms ) // 601/3, C - 03/02/99, Rev 6
-GAMEL( 2000, orchidmsnz, orchidms, aristmk5, orchidmsnz, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Orchid Mist (0101241V, New Zealand)", 0, layout_orchidmsnz ) // MV4118, A - 3/7/00, Rev 30
-GAMEL( 1996, oscara5, aristmk5, aristmk5, aristmk5_9, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Oscar (0200348V, NSW/ACT)", MACHINE_NOT_WORKING, layout_dolphntrb ) // 593/2, C - 20/09/96, Rev 3
-GAMEL( 1996, oscara5a, oscara5, aristmk5, aristmk5_9, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Oscar (0100348V, NSW/ACT)", 0, layout_dolphntrb ) // 593/2, C - 20/09/96, Rev 1.23.9.1
-GAMEL( 1999, pantmag, aristmk5, aristmk5, kgalah, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Panther Magic (0101046V, NSW/ACT)", MACHINE_NOT_WORKING, layout_pantmag ) // 594/7, A - 06/10/99, Rev 16
-GAMEL( 1999, pantmaga, pantmag, aristmk5, pantmaga, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Panther Magic (0100716V, NSW/ACT)", MACHINE_NOT_WORKING, layout_pantmaga ) // 594/4, A - 13/05/98, Rev 9
-GAMEL( 2001, partygrs, aristmk5, aristmk5_usa_touch, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Party Gras (AHG1567, US)", MACHINE_NOT_WORKING, layout_magimaska ) // MV4115/6, A - 10/11/01
-GAMEL( 2001, partygrsa, partygrs, aristmk5_usa_touch, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Party Gras (BHG1284, US)", MACHINE_NOT_WORKING, layout_bparty ) // MV4115/3, B - 06/02/01
-GAMEL( 2000, peaflut, aristmk5, aristmk5, trstrove, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Peacock Flutter (02J00011, NSW/ACT)", MACHINE_NOT_WORKING, layout_trstrove ) // JB001, A - 10/03/00, Rev 8
-GAMEL( 1997, pengpay, aristmk5, aristmk5, cashchama, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays (0200460V, NSW/ACT)", MACHINE_NOT_WORKING, layout_cashchama ) // 586/4(a), D - 03/06/97, Rev 3
-GAMEL( 1996, pengpaya, pengpay, aristmk5, cashchama, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays (0200357V, NSW/ACT)", 0, layout_cashchama ) // 586/4, C - 12/11/96
-GAMEL( 1997, pengpayb, pengpay, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays (0200359V, NSW/ACT)", MACHINE_NOT_WORKING, layout_swhr2 ) // 586/3(a), D - 03/06/97, Rev 4
-GAMEL( 1995, pengpayc, pengpay, aristmk5, wcougar, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays (0200113V, NSW/ACT)", 0, layout_wcougar ) // 586, A - 12/10/95
-GAMEL( 1997, pengpayu, pengpay, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays (BHI0417-03, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // 586/7(b), B - 14/07/97
-GAMEL( 1997, pengpayua, pengpay, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays (OHG0417-03, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // 586/7(b), B - 14/07/97
-GAMEL( 1997, pengpayub, pengpay, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays (OHG0417-02, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // 586/7(b), B - 14/07/97
-GAMEL( 2001, pengpayce, pengpay, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays - Cash Express (AHG1544, US)", MACHINE_NOT_WORKING, layout_qnilecea ) // MV4122, C - 19/01/01
-GAMEL( 2001, pengpuck, pengpay, aristmk5_usa, pengpuck, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays - Penguin Pucks (EHG1257, US)", MACHINE_NOT_WORKING, layout_pengpuck ) // MV4122/1, C - 19/01/01
-GAMEL( 1998, penpir, aristmk5, aristmk5, kgalah, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pirate (0100674V, NSW/ACT)", MACHINE_NOT_WORKING, layout_kgalah ) // 619/1, A - 31/03/98, Rev 10
-GAMEL( 1998, penpira, penpir, aristmk5, snowcat, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pirate (0200578V, NSW/ACT)", MACHINE_NOT_WORKING, layout_snowcat ) // 619, A - 27/02/98, Rev 8
-GAMEL( 1998, penpir2, aristmk5, aristmk5, penpir2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pirate II (0100869V, Victoria)", MACHINE_NOT_WORKING, layout_penpir2 ) // 619/3, A - 17/12/98
-GAMEL( 1998, petshop, aristmk5, aristmk5, petshop, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Pet Shop (0100731V, NSW/ACT)", MACHINE_NOT_WORKING, layout_petshop ) // 618/1, A - 17/04/98, Rev 13
-GAMEL( 1995, phantpay, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Phantom Pays (0500005V, NSW/ACT)", 0, layout_swhr2 ) // 570/1, E - 12/09/95
-GAMEL( 1996, przfight, aristmk5, aristmk5, przfight, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Prize Fight (0100299V, NSW/ACT)", 0, layout_przfight ) // 578/4, B - 08/08/96
-GAMEL( 1998, qcash, aristmk5, aristmk5, kgalah, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queens of Cash (0100706V, NSW/ACT)", MACHINE_NOT_WORKING, layout_kgalah ) // 603/6, C - 23/07/98, Rev 6
-GAMEL( 1997, qnile, aristmk5, aristmk5, qnile, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0300439V, NSW/ACT)", MACHINE_NOT_WORKING, layout_qnile ) // 602/4, B - 13/05/97, Rev 7
-GAMEL( 1997, qnilea, qnile, aristmk5, qnile, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0200439V, NSW/ACT)", MACHINE_NOT_WORKING, layout_qnile ) // 602/4, B - 13/05/97, Rev 7
-GAMEL( 1997, qnileb, qnile, aristmk5, qnile, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0100439V, NSW/ACT)", 0, layout_qnile ) // 602/4, B - 13/05/97, Rev 1.26.18.1
-GAMEL( 2002, qnilebr, qnile, aristmk5, goldpyrb, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0101707V, Brazil)", 0, layout_goldpyrb ) // MV4162, A - 21/08/02
-GAMEL( 1997, qnilec, qnile, aristmk5, qnilec, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0300440V, NSW/ACT)", MACHINE_NOT_WORKING, layout_qnilec ) // 602/3, B - 13/05/97, Rev 5
-GAMEL( 1999, qniled, qnile, aristmk5, checkma5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0101139V, NSW/ACT)", MACHINE_NOT_WORKING, layout_qniled ) // 602/16, A - 11/10/99, Rev 14
-GAMEL( 2001, qnilefl, qnile, aristmk5, trstrove, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile - Fast Lane (0101670V, Queensland)", MACHINE_NOT_WORKING, layout_trstrove ) // 602/4, E - 17/08/01
-GAMEL( 2000, qnilenl, qnile, aristmk5, qnilenl, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0301059V, Holland)", 0, layout_qnilenl ) // 602/5, G - 10/04/00
-GAMEL( 1998, qnilenz, qnile, aristmk5, cashcatnz, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0300785V, New Zealand)", 0, layout_cashcatnz ) // MV4068, A - 31/8/98, Rev 20
-GAMEL( 1999, qnileql, qnile, aristmk5, trstrove, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0201200V, Queensland)", MACHINE_NOT_WORKING, layout_trstrove ) // 602/4, D - 18/06/99
-GAMEL( 1997, qnileu, qnile, aristmk5_usa, dolphntru, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (GHG4091-02, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // MV4091, B - 13/05/97
-GAMEL( 1997, qnileua, qnile, aristmk5_usa, dolphntru, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (GHG4091-03, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // MV4091, B - 13/05/97
-GAMEL( 1997, qnilev, qnile, aristmk5, aristmk5_9, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (04J00784, Venezuela)", MACHINE_NOT_WORKING, layout_dolphntrb ) // 602/3, B - 13/05/97, Rev 6
-GAMEL( 2001, qnilece, qnile, aristmk5_usa, dolphntrce, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile - Cash Express (AHG1609, US)", MACHINE_NOT_WORKING, layout_adonisu ) // MV4091/1, A - 17/01/01
-GAMEL( 2001, qnilecea, qnile, aristmk5_usa, dolphntru, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile - Cash Express (AHG1525, US)", MACHINE_NOT_WORKING, layout_qnilecea ) // MV4091, F - 17/01/01
-GAMEL( 2001, qnileceb, qnile, aristmk5_usa, dolphntru, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile - Cash Express (AHG1608, US)", MACHINE_NOT_WORKING, layout_magimaska ) // MV4091, F - 17/01/01
-GAMEL( 1999, qnilemax, qnile, aristmk5_touch, trstrove, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile - Maximillions (0401072V, NSW/ACT)", MACHINE_NOT_WORKING, layout_trstrove ) // 602/4, D - 18/06/99, Rev 14
-GAMEL( 1994, qtbird, aristmk5, aristmk5, qtbird, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Q.T. Bird (0500009V, NSW/ACT)", 0, layout_qtbird ) // 581, A - 27/10/94, Rev 1.1.1.0
-GAMEL( 2000, rainwrce, aristmk5, aristmk5, adonisce, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Rainbow Warriors - Cash Express (0101332V, NSW/ACT)", MACHINE_NOT_WORKING, layout_aristmk5 ) // 655, B - 02/03/00, Rev 25
-GAMEL( 1998, reelpwr, aristmk5, aristmk5, wizways, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Reel Power (0100400V, NSW/ACT)", 0, layout_wizways ) // 598/2, A - 01/11/96, Rev 1.23.8.0
-GAMEL( 1998, reelrock, aristmk5, aristmk5, reelrock, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Reelin-n-Rockin (0100779V, NSW/ACT)", MACHINE_NOT_WORKING, layout_reelrock ) // 628, A - 13/07/98, Rev 5
-GAMEL( 2000, reelrockql, reelrock, aristmk5, trstrove, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Reelin-n-Rockin (0101460V, Queensland)", MACHINE_NOT_WORKING, layout_trstrove ) // 628/2, E - 20/12/00
-GAMEL( 1997, retrsam, aristmk5, aristmk5, retrsam, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Return of the Samurai (0400549V, NSW/ACT)", MACHINE_NOT_WORKING, layout_sbuk3 ) // 608, A - 17/04/97, Rev 5
-GAMEL( 1997, retrsama, retrsam, aristmk5, retrsam, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Return of the Samurai (0200549V, NSW/ACT)", 0, layout_sbuk3 ) // 608, A - 17/04/97, Rev 1.26.25.3
-GAMEL( 1997, retrsamb, retrsam, aristmk5, retrsamb, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Return of the Samurai (0200506V, NSW/ACT)", 0, layout_retrsamb ) // 608, A - 17/04/97, Rev 1.26.25.3
-GAMEL( 1997, rushrst, aristmk5, aristmk5, rushrst, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Rushin Rooster (0100534V, NSW/ACT)", 0, layout_cashchama ) // 596/3, C - 25/06/97, Rev 1.27.2.3
-GAMEL( 2001, sldeluxe, aristmk5, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Sweet Liberty Deluxe (AHG1575, US)", MACHINE_NOT_WORKING, layout_adonisu ) // MV4137, A - 11/02/01
-GAMEL( 1998, slvrwolf, aristmk5, aristmk5, wamazona, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Silver Wolf (0100673V, NSW/ACT)", MACHINE_NOT_WORKING, layout_wamazona ) // 621/2, A - 23/03/98, Rev 3
-GAMEL( 1996, snowcat, aristmk5, aristmk5, snowcat, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Snow Cat (0100405V, NSW/ACT)", 0, layout_snowcat ) // 599, B - 23/12/96, Rev 1.25.1.0
-GAMEL( 1997, sumospin, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Sumo Spins (0200606V, NSW/ACT)", MACHINE_NOT_WORKING, layout_swhr2 ) // 622, A - 08/12/97, Rev 4
-GAMEL( 1998, sbuk3, aristmk5, aristmk5, sbuk3, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Super Bucks III (0200711V, NSW/ACT)", MACHINE_NOT_WORKING, layout_sbuk3 ) // 626, A - 22/04/98, Rev 8
-GAMEL( 1998, sbuk3a, sbuk3, aristmk5, sbuk3, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Super Bucks III (0100711V, NSW/ACT)", MACHINE_NOT_WORKING, layout_sbuk3 ) // 626, A - 22/04/98, Rev 7
-GAMEL( 1995, swhr2, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Sweethearts II (0200465V, NSW/ACT)", MACHINE_NOT_WORKING, layout_swhr2 ) // 577/1, C - 07/09/95, Rev 3
-GAMEL( 1995, swhr2a, swhr2, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Sweethearts II (0200004V, NSW/ACT)", 0, layout_swhr2 ) // 577/1, C - 07/09/95, Rev 1.1.3.0
-GAMEL( 1998, swhr2u, swhr2, aristmk5_usa, swhr2u, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Sweethearts II (PHG0742-02, US)", MACHINE_NOT_WORKING, layout_swhr2u ) // MV4061, A - 29/06/98
-GAMEL( 1995, swhr2v, swhr2, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Sweethearts II (01J01986, Venezuela)", MACHINE_NOT_WORKING, layout_swhr2 ) // 577/1, C - 07/09/95, Rev 3
-GAMEL( 1996, thor, aristmk5, aristmk5, cashcham, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Thor (0200319V, NSW/ACT)", 0, layout_cashcham ) // 569/12, B - 14/08/96, Rev 1.23.7.0
-GAMEL( 1996, thndh, aristmk5, aristmk5, snowcat, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Thunder Heart (0200333V, NSW/ACT)", 0, layout_snowcat ) // 570/9, A - 14/08/96, Rev 1.23.6.0
-GAMEL( 1996, thndha, thndh, aristmk5, wildbill, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Thunder Heart (0200334V, NSW/ACT)", 0, layout_wildbill ) // 597/1, A - 14/08/96, Rev 1.23.6.0
-GAMEL( 1997, topbana, aristmk5, aristmk5, wildbill, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Top Banana (0100550V, NSW/ACT)", 0, layout_wildbill ) // 594/3, A - 18/08/97, Rev 1.26.39.2
-GAMEL( 1998, toutango, aristmk5, aristmk5, kgalah, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Toucan Tango (0100782V, NSW/ACT)", MACHINE_NOT_WORKING, layout_kgalah ) // 616/1, A - 17/06/98, Rev 16
-GAMEL( 1999, toutangonl, toutango, aristmk5, toutangonl, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Toucan Tango (0301388V, Holland)", 0, layout_toutangonl ) // 616, C - 11/05/99
-GAMEL( 2000, trstrove, aristmk5, aristmk5, trstrove, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Treasure Trove (01J00161, NSW/ACT)", MACHINE_NOT_WORKING, layout_trstrove ) // JB001/3, A - 5/10/00, Rev 8
-GAMEL( 2002, tritreat, aristmk5, aristmk5, trstrove, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Triple Treat (0201692V, NSW/ACT)", MACHINE_NOT_WORKING, layout_tritreat ) // 692, A - 17/05/02, Rev 25
-GAMEL( 2001, trojhors, aristmk5, aristmk5, goldenra, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Trojan Horse (01J00851, NSW/ACT)", MACHINE_NOT_WORKING, layout_marmagic ) // JB001/5, A - 30/10/01, Rev 17
-GAMEL( 1996, trpdlght, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Tropical Delight (0100269V, NSW/ACT)", 0, layout_swhr2 ) // 577/3, B - 15/05/96, Rev 1.22.2.0
-GAMEL( 1997, trpdlghtu, trpdlght, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Tropical Delight (PHG0625-02, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // 577/3, D - 24/09/97
-GAMEL( 1998, unicornd, aristmk5, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Unicorn Dreaming (0100791V, NSW/ACT)", MACHINE_NOT_WORKING, layout_aristmk5 ) // 631/1 A, A - 31/08/98, Rev 12
-GAMEL( 1998, unicornda, unicornd, aristmk5, aristmk5_9, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Unicorn Dreaming (0100813V, NSW/ACT)", MACHINE_NOT_WORKING, layout_dolphntrb ) // 631 A, A - 02/09/98, Rev 14
-GAMEL( 2000, unicorndnz, unicornd, aristmk5, unicorndnz, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Unicorn Dreaming (0101228V, New Zealand)", 0, layout_aristmk5 ) // MV4113/1, A - 05/04/2000, Rev 27
-GAMEL( 2001, unicorndu, unicornd, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Unicorn Dreaming (BHG1584, US)", MACHINE_NOT_WORKING, layout_adonisu ) // MV4130/1, C - 10/17/01
-GAMEL( 2002, venicea5, aristmk5, aristmk5, goldenra, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Venice (02J02056, Venezuela)", MACHINE_NOT_WORKING, layout_venicea5 ) // JB009/2, B - 11/07/02, Rev 17
-GAMEL( 2001, wafricau, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Africa (AHG1535, US)", MACHINE_NOT_WORKING, layout_magimaska ) // MV4076, B - 17/07/01
-GAMEL( 1996, wamazon, aristmk5, aristmk5, wamazon, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Amazon (0200507V, NSW/ACT)", MACHINE_NOT_WORKING, layout_wamazon ) // 506/8, A - 10/10/96, Rev 3
-GAMEL( 1996, wamazona, wamazon, aristmk5, wamazona, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Amazon (0200285V, NSW/ACT)", 0, layout_wamazona ) // 506/6, A - 7/5/96, Rev 1.22.8.0
-GAMEL( 1996, wamazonv, wamazon, aristmk5, wamazon, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Amazon (01J01996, Venezuela)", MACHINE_NOT_WORKING, layout_wamazon ) // 506/8, A - 10/10/96, Rev 3
-GAMEL( 1997, wikwin, aristmk5, aristmk5, wikwin, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wicked Winnings (0100553V, NSW/ACT)", MACHINE_NOT_WORKING, layout_wikwin ) // 609, B - 01/07/97, Rev 1
-GAMEL( 1996, wldangel, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Angels (0100337V, NSW/ACT)", 0, layout_swhr2 ) // 600, B - 24/09/96
-GAMEL( 1996, wildbill, aristmk5, aristmk5, wildbill, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Bill (0100297V, NSW/ACT)", 0, layout_wildbill ) // 543/8, C - 15/08/96, Rev 1.22.12.0
-GAMEL( 1996, wcougar, aristmk5, aristmk5, wcougar, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Cougar (0100167V, NSW/ACT)", 0, layout_wcougar ) // 569/9, B - 27/2/96, Rev 1.18.1.0
-GAMEL( 1997, wcougaru, wcougar, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Cougar (NHG0296-04, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // 569/8, D - 19/05/97
-GAMEL( 1997, wcougarua, wcougar, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Cougar (NHG0296-07, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // 569/8, D - 19/05/97
-GAMEL( 1997, wcougarub, wcougar, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Cougar (NHG0296-99, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // 569/8, D - 19/05/97
-GAMEL( 1997, wcougaruc, wcougar, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Cougar (AHG1531, US)", MACHINE_NOT_WORKING, layout_magimaska ) // MV4055, B - 13/05/97
-GAMEL( 1996, wizways, aristmk5, aristmk5, wizways, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wizard Ways (0200396V, NSW/ACT)", MACHINE_NOT_WORKING, layout_wizways ) // 598/3, A - 04/11/96, Rev 9
-GAMEL( 1997, wnpost, aristmk5, aristmk5_usa, wnpost, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Winning Post (RHG0418-04, US)", MACHINE_NOT_WORKING, layout_wnpost ) // 541/2, G - 11/02/97
-GAMEL( 1999, wthing, aristmk5, aristmk5, retrsam, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Thing (0101158V, NSW/ACT)", MACHINE_NOT_WORKING, layout_sbuk3 ) // 608/4, B - 14/12/99, Rev 8
-GAMEL( 1999, wtiger, aristmk5, aristmk5, wtiger, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "White Tiger Classic (0200954V, NSW/ACT)", MACHINE_NOT_WORKING, layout_wtiger ) // 638/1, B - 08/07/99, Rev 13
-GAMEL( 2000, yukongl5, aristmk5, aristmk5, goldenra, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Yukon Gold (03J00191, NSW/ACT)", MACHINE_NOT_WORKING, layout_yukongl5 ) // JB005/1, A - 30/10/2000, Rev 17
+GAMEL( 1998, adonis, aristmk5, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Adonis (0200751V, NSW/ACT)", MACHINE_FLAGS_NW, layout_aristmk5 ) // 602/9, A - 25/05/98, Rev 10
+GAMEL( 1998, adonisa, adonis, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Adonis (0100751V, NSW/ACT)", MACHINE_FLAGS_NW, layout_aristmk5 ) // 602/9, A - 25/05/98, Rev 9
+GAMEL( 1999, adonisce, adonis, aristmk5, adonisce, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Adonis - Cash Express (0201005V, NSW/ACT)", MACHINE_FLAGS_NW, layout_aristmk5 ) // 602/9, C - 06/07/99, Rev 12
+GAMEL( 2001, adonisu, adonis, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Adonis (BHG1508, US)", MACHINE_FLAGS_NW, layout_adonisu ) // MV4124/1, B - 31/07/01
+GAMEL( 2002, alchemst, aristmk5, aristmk5, goldenra, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Alchemist (01J02046, Venezuela)", MACHINE_FLAGS_NW, layout_yukongl5 ) // JB013/1, A - 22/01/02, Rev 17
+GAMEL( 2000, bparty, aristmk5, aristmk5_usa_touch, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Bachelorette Party (BHG1248, US)", MACHINE_FLAGS_NW, layout_bparty ) // MV4119/1, B - 25/08/2000
+GAMEL( 1996, baddog, aristmk5, aristmk5, baddog, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Bad Dog Poker (0200428V, NSW/ACT)", MACHINE_FLAGS, layout_baddog ) // 386/56, A - 17/12/96
+GAMEL( 1998, bootsctn, aristmk5, aristmk5, cashcham, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Boot Scootin' (0100812V, NSW/ACT)", MACHINE_FLAGS_NW, layout_cashcham ) // 616/1, B - 11/12/98, Rev 20
+GAMEL( 1999, bootsctnu, bootsctn, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Boot Scootin' (GHG1012-02, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // MV4098, A - 25/08/99
+GAMEL( 1999, bootsctnua, bootsctn, aristmk5_usa, pengpuck, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Boot Scootin' (GHG1008-03, US)", MACHINE_FLAGS_NW, layout_aristmk5_us_200 ) // MV4098/1, A - 27/07/99
+GAMEL( 2001, bootsctnub, bootsctn, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Boot Scootin' (AHG1547, US)", MACHINE_FLAGS_NW, layout_adonisu ) // MV4098/1, B - 22/03/01
+GAMEL( 1996, bumblbug, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Bumble Bugs (0200510V, NSW/ACT)", MACHINE_FLAGS_NW, layout_swhr2 ) // 593, D - 5/07/96, Rev 3
+GAMEL( 1996, bumblbugql, bumblbug, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Bumble Bugs (0200456V, Queensland)", MACHINE_FLAGS_NW, layout_swhr2 ) // 593, D - 5/07/96, Rev 1.0
+GAMEL( 1997, bumblbugu, bumblbug, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Bumble Bugs (CHG0479-03, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // 593, D - 05/07/97
+GAMEL( 1997, bumblbugua, bumblbug, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Bumble Bugs (CHG0479-99, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // 593, D - 05/07/97
+GAMEL( 1995, buttdeli, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Butterfly Delight (0200143V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 571/4, A - 19/12/95, Rev 1.8.1.0
+GAMEL( 1998, cashcat, aristmk5, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Cat (0100676V, NSW/ACT)", MACHINE_FLAGS_NW, layout_aristmk5 ) // 614/3, A - 03/04/98, Rev 7
+GAMEL( 1997, cashcata, cashcat, aristmk5, aristmk5_9, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Cat (0100557V, NSW/ACT)", MACHINE_FLAGS_NW, layout_dolphntrb ) // 614/1, B - 01/12/97, Rev 7
+GAMEL( 1999, cashcatnz, cashcat, aristmk5, cashcatnz, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Cat (0300863V, New Zealand)", MACHINE_FLAGS, layout_cashcatnz ) // MV4089, A - 4/1/99, Rev 26
+GAMEL( 1997, cashcham, aristmk5, aristmk5, cashcham, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Chameleon (0100438V, NSW/ACT)", MACHINE_FLAGS, layout_cashcham ) // 603/1, C - 15/4/97, Rev 1.25.3.0
+GAMEL( 1998, cashchama, cashcham, aristmk5, cashchama, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Chameleon (0200437V, NSW/ACT)", MACHINE_FLAGS_NW, layout_cashchama ) // 603(a), D - 18/02/98, Rev 3
+GAMEL( 1998, cashchamnz, cashcham, aristmk5, cashchamnz, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Chameleon (0300781V, New Zealand)", MACHINE_FLAGS, layout_cashchamnz ) // MV4067, A - 31/08/98, Rev 21
+GAMEL( 1996, cashchamu, cashcham, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Chameleon (DHG4078-99, US)", MACHINE_FLAGS_NW, layout_cashchamu ) // 603(a), B - 06/12/96
+GAMEL( 1997, cashcra5, aristmk5, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Crop (0300467V, NSW/ACT)", MACHINE_FLAGS_NW, layout_aristmk5 ) // 607, C - 14/07/97, Rev 6
+GAMEL( 1998, chariotc, aristmk5, aristmk5, chariotc, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "The Chariot Challenge (0100787V, NSW/ACT)", MACHINE_FLAGS_NW, layout_aristmk5 ) // 630/1, A - 10/08/98, Rev 11
+GAMEL( 1998, chariotcv, chariotc, aristmk5, chariotcv, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "The Chariot Challenge (04J00714, Venezuela)", MACHINE_FLAGS_NW, layout_snowcat ) // 630, A - 10/08/98, Rev 12
+GAMEL( 2001, checkma5, aristmk5, aristmk5, checkma5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Checkmate (01J00681, NSW/ACT)", MACHINE_FLAGS_NW, layout_checkma5 ) // JB011, B - 06/07/01, Rev 17
+GAMEL( 1996, chickna5, aristmk5, aristmk5, chickna5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Chicken (0100351V, NSW/ACT)", MACHINE_FLAGS, layout_snowcat ) // 596, A - 27/08/96, Rev 1.24
+GAMEL( 1998, chickna5ql, chickna5, aristmk5, chickna5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Chicken (0200530V, Queensland)", MACHINE_FLAGS_NW, layout_snowcat ) // 596, C - 23/02/98, Rev 1.0
+GAMEL( 1998, chickna5u, chickna5, aristmk5_usa, chickna5u, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Chicken (RHG0730-03, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // 596, C - 23/02/98
+GAMEL( 1998, chickna5ua, chickna5, aristmk5_usa, chickna5u, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Chicken (RHG0730-99, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // 596, C - 23/02/98
+GAMEL( 1998, coralrc2, aristmk5, aristmk5, coralrc2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Coral Riches II (0100919V, NSW/ACT)", MACHINE_FLAGS_NW, layout_coralrc2 ) // 577/7, A - 29/12/98, Rev 12
+GAMEL( 1998, cuckoo, aristmk5, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cuckoo (0200753V, NSW/ACT)", MACHINE_FLAGS_NW, layout_aristmk5 ) // 615/1, D - 03/07/98, Rev 6
+GAMEL( 2000, cuckoou, cuckoo, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cuckoo (CHG1195, US)", MACHINE_FLAGS_NW, layout_cuckoou ) // MV4104, C - 02/02/00
+GAMEL( 1995, dstbloom, aristmk5, aristmk5, wcougar, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Desert Bloom (0300111V, NSW/ACT)", MACHINE_FLAGS, layout_wcougar ) // 577/2, A - 12/10/95, Rev 1.16.4.0
+GAMEL( 1995, dstblooma, dstbloom, aristmk5, wcougar, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Desert Bloom (0200111V, NSW/ACT)", MACHINE_FLAGS, layout_wcougar ) // 577/2, A - 12/10/95, Rev 1.16.4.0
+GAMEL( 1999, diamdove, aristmk5, aristmk5, retrsam, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Diamond Dove (0101018V, NSW/ACT)", MACHINE_FLAGS_NW, layout_sbuk3 ) // 640, B - 19/05/99, Rev 8
+GAMEL( 1996, dmdfever, aristmk5, aristmk5, wildbill, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Diamond Fever (0200302V, NSW/ACT)", MACHINE_FLAGS, layout_wildbill ) // 483/7, E - 05/09/96, Rev 1.23.5.0
+GAMEL( 1997, dimtouch, aristmk5, aristmk5_touch, dimtouch, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Diamond Touch (0400433V, NSW/ACT)", MACHINE_FLAGS_NW, layout_dimtouch ) // 604, E - 30/06/97, Rev 17
+GAMEL( 1996, dolphntr, aristmk5, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (0200424V, NSW/ACT)", MACHINE_FLAGS_NW, layout_aristmk5 ) // 602/1, B - 06/12/96, Rev 3
+GAMEL( 1996, dolphntra, dolphntr, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (0100424V, NSW/ACT)", MACHINE_FLAGS, layout_aristmk5 ) // 602/1, B - 06/12/96, Rev 1.24.4.0
+GAMEL( 1996, dolphntrb, dolphntr, aristmk5, aristmk5_9, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (0100388V, NSW/ACT)", MACHINE_FLAGS, layout_dolphntrb ) // 602, B - 10/12/96, Rev 1.24.4.0
+GAMEL( 1996, dolphntru, dolphntr, aristmk5_usa, dolphntru, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (FHG4077-02, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // 602/1, B - 06/12/96
+GAMEL( 1999, dolphntrce, dolphntr, aristmk5_usa, dolphntrce, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dolphin Treasure - Cash Express (AHG1607, US)", MACHINE_FLAGS_NW, layout_adonisu ) // MV4090, D - 22/12/99
+GAMEL( 1999, dolphntrcea, dolphntr, aristmk5_usa, dolphntru, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dolphin Treasure - Cash Express (AHG1606, US)", MACHINE_FLAGS_NW, layout_magimaska ) // MV4090, D - 22/12/99
+GAMEL( 1999, dolphntrceb, dolphntr, aristmk5_usa, dolphntrce, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dolphin Treasure - Cash Express (AHG1519, US)", MACHINE_FLAGS_NW, layout_dolphntrceb ) // MV4090, D - 22/12/99
+GAMEL( 1997, drgneye, aristmk5, aristmk5, snowcat, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dragon's Eye (0100521V, NSW/ACT)", MACHINE_FLAGS, layout_snowcat ) // 610, A - 09/05/97, Rev 1.27
+GAMEL( 1997, dreamwv, aristmk5, aristmk5_touch, dreamwv, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dream Weaver (0200586V, NSW/ACT)", MACHINE_FLAGS_NW, layout_dreamwv ) // 606/2, A - 20/06/97, Rev 16
+GAMEL( 2000, dynajack, aristmk5, aristmk5, dynajack, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dynamite Jack (01J00081, NSW/ACT)", MACHINE_FLAGS_NW, layout_dynajack ) // JB004, A - 12/07/2000, Rev 17
+GAMEL( 1998, eldorda5, aristmk5, aristmk5, reelrock, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "El Dorado (0100652V, NSW/ACT)", MACHINE_FLAGS_NW, layout_reelrock ) // 623, B - 24/03/98, Rev 3
+GAMEL( 1995, eforsta5, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Enchanted Forest (0400122V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 570/3, E - 23/06/95, Rev 1.18
+GAMEL( 1997, eforsta5u, eforsta5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Enchanted Forest (JHG0415-03, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // MV4033, B - 10/02/97
+GAMEL( 1997, eforsta5ua, eforsta5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Enchanted Forest (JHG0415-99, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // MV4033, B - 10/02/97
+GAMEL( 2000, eforsta5cea, eforsta5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Enchanted Forest - Cash Express (AHG1615, US)", MACHINE_FLAGS_NW, layout_magimaska ) // MV4108/6, C - 17/01/00
+GAMEL( 1998, fastfort, aristmk5, aristmk5, wildbill, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Fast Fortune (0100651V, NSW/ACT)", MACHINE_FLAGS_NW, layout_wildbill ) // 624, D - 07/05/98, Rev 5
+GAMEL( 2000, fortellr, aristmk5, aristmk5, goldenra, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Fortune Teller (01J00131, NSW/ACT)", MACHINE_FLAGS_NW, layout_fortellr ) // JB006, D - 24/11/2000, Rev 17
+GAMEL( 1998, gambler, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "The Gambler (EHG0916-02, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // MV4084/1, A - 30/10/98
+GAMEL( 2001, geisha, aristmk5, aristmk5, geisha, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Geisha (0101408V, New Zealand)", MACHINE_FLAGS, layout_geisha ) // MV4127, A - 05/03/01, Rev 25
+GAMEL( 1999, genmagi, aristmk5, aristmk5_touch, genmagi, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Genie Magic (0200894V, NSW/ACT)", MACHINE_FLAGS_NW, layout_genmagi ) // 632/1, C - 15/02/99, Rev 20
+GAMEL( 2001, glizrdce, aristmk5, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Green Lizard - Cash Express (AHG1623, US)", MACHINE_FLAGS_NW, layout_adonisu ) // MV4112/2 - A - 05/01/01
+GAMEL( 1998, gnomeatw, aristmk5, aristmk5, kgalah, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Gnome Around The World (0100767V, NSW/ACT)", MACHINE_FLAGS_NW, layout_kgalah ) // 625, C - 18/12/98, Rev 16
+GAMEL( 1997, goldpyr, aristmk5, aristmk5_usa, dolphntru, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Golden Pyramids (AHG1205-03, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // MV4091, B - 13/05/97
+GAMEL( 1997, goldpyra, goldpyr, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Golden Pyramids (AHG1206-99, US)", MACHINE_FLAGS_NW, layout_aristmk5_us_200 ) // 602/2, B - 13/05/97
+GAMEL( 1998, goldpyrb, goldpyr, aristmk5, goldpyrb, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Golden Pyramids (0100878V, Victoria)", MACHINE_FLAGS_NW, layout_goldpyrb ) // 602/5, C - 19/06/98
+GAMEL( 2000, goldenra, aristmk5, aristmk5, goldenra, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Golden Ra (0101164V, NSW/ACT)", MACHINE_FLAGS_NW, layout_goldenra ) // 661, A - 10/04/00, Rev 15
+GAMEL( 2001, hnktonku, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Honky Tonk (BHG1455, US)", MACHINE_FLAGS_NW, layout_magimaska ) // MV4122/3, A - 07/08/01
+GAMEL( 2000, honeypot, aristmk5, aristmk5, goldenra, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Honey Pot (03J00241, NSW/ACT)", MACHINE_FLAGS_NW, layout_yukongl5 ) // JB008, A - 21/11/2000, Rev 17
+GAMEL( 1999, incasun, aristmk5, aristmk5, incasun, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Inca Sun (0100872V, NSW/ACT)", MACHINE_FLAGS_NW, layout_incasun ) // 631/3 B, B - 03/05/99, Rev 15
+GAMEL( 1999, incasunsp, incasun, aristmk5, incasun, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Inca Sun (0100872V, NSW/ACT, Show Program)", MACHINE_FLAGS_NW, layout_incasun ) // 631/3 B, B - 03/05/99, Rev 15
+GAMEL( 2000, incasunnz, incasun, aristmk5, incasunnz, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Inca Sun (0101108V, New Zealand)", MACHINE_FLAGS, layout_incasunnz ) // MV4113, A - 6/3/00, Rev 25
+GAMEL( 2000, incasunu, incasun, aristmk5_usa, dolphntrce, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Inca Sun (CHG1458, US)", MACHINE_FLAGS_NW, layout_adonisu ) // MV4130/3, A - 05/09/00
+GAMEL( 2000, incasunua, incasun, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Inca Sun (DHG1577, US)", MACHINE_FLAGS_NW, layout_adonisu ) // MV4130, A - 05/09/00
+GAMEL( 1999, incasunv, incasun, aristmk5, incasun, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Inca Sun (01J01946, Venezuela)", MACHINE_FLAGS_NW, layout_incasun ) // 631/3 B, B- 03/05/99, Rev 15
+GAMEL( 1998, indrema5, aristmk5, aristmk5, indrema5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Indian Dreaming (0100845V, NSW/ACT)", MACHINE_FLAGS_NW, layout_indrema5 ) // 628/1, B - 15/12/98, Rev 7
+GAMEL( 1996, jumpjoey, aristmk5, aristmk5, cashcham, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Jumpin' Joey (0100383V, NSW/ACT)", MACHINE_FLAGS, layout_cashcham ) // 586/6, C - 13/11/96
+GAMEL( 1996, jungjuic, aristmk5, aristmk5, jungjuic, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Jungle Juice (0200240V, New Zealand)", MACHINE_FLAGS_NW, layout_jungjuic ) // 566/3, F - 06/03/96
+GAMEL( 1995, kgalah, aristmk5, aristmk5, kgalah, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "King Galah (0200536V, NSW/ACT)", MACHINE_FLAGS_NW, layout_kgalah ) // 613/6, A - 21/07/95
+GAMEL( 1995, kgalaha, kgalah, aristmk5, kgalah, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "King Galah (0100536V, NSW/ACT)", MACHINE_FLAGS, layout_kgalah ) // 613, A - 21/07/95
+GAMEL( 2001, kgalahce, kgalah, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "King Galah - Cash Express (AHG1625, US)", MACHINE_FLAGS_NW, layout_adonisu ) // MV4112/2, B - 07/02/01
+GAMEL( 1994, kgbirda5, aristmk5, aristmk5, kgbirda5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "K.G. Bird (0200024V, NSW/ACT)", MACHINE_FLAGS, layout_kgbirda5 ) // 540/3, D - 10/10/94
+GAMEL( 2001, koalamnt, aristmk5, aristmk5_usa, dolphntrce, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Koala Mint (CHG1573, US)", MACHINE_FLAGS_NW, layout_adonisu ) // MV4137, A - 12/09/01
+GAMEL( 1998, kookabuk, aristmk5, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Kooka Bucks (0100677V, NSW/ACT)", MACHINE_FLAGS_NW, layout_aristmk5 ) // 661, A - 03/04/98, Rev 5
+GAMEL( 2000, kyhatonu, aristmk5, aristmk5_usa_touch, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Keep Your Hat On (BHG1204, US)", MACHINE_FLAGS_NW, layout_bparty ) // MV4114/1, B - 08/05/2000
+GAMEL( 1997, locoloot, aristmk5, aristmk5, cashcham, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Loco Loot (0100473V, NSW/ACT)", MACHINE_FLAGS, layout_cashcham ) // 599/3, C - 17/06/97, Rev 1.26.13.0
+GAMEL( 1997, locoloota, locoloot, aristmk5, locoloota, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Loco Loot (0100472V, NSW/ACT)", MACHINE_FLAGS, layout_locoloota ) // 599/2, C - 17/06/97, Rev 1.26.13.0
+GAMEL( 1998, locolootnz, locoloot, aristmk5, cashchamnz, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Loco Loot (0600725V, New Zealand)", MACHINE_FLAGS, layout_cashchamnz ) // MV4064, A - 8/7/98, Rev 24
+GAMEL( 2001, locolootu, locoloot, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Loco Loot (AHG1513, US)", MACHINE_FLAGS_NW, layout_adonisu ) // MV4134, A - 30/07/01
+GAMEL( 1997, lonewolf, aristmk5, aristmk5, wildbill, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Lone Wolf (0100587V, NSW/ACT)", MACHINE_FLAGS, layout_wildbill ) // 621, A - 29/10/97, Rev 1.27.17.0
+GAMEL( 1995, luckyclo, aristmk5, aristmk5, wcougar, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Lucky Clover (0300109V, NSW/ACT)", MACHINE_FLAGS, layout_wcougar ) // 570/6, A - 12/10/95
+GAMEL( 2000, magimask, aristmk5, aristmk5_usa_touch, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Magic Mask (AHG1549, US)", MACHINE_FLAGS_NW, layout_adonisu ) // MV4115_1, A - 09/05/00
+GAMEL( 2000, magimaska, magimask, aristmk5_usa_touch, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Magic Mask (AHG1548, US)", MACHINE_FLAGS_NW, layout_magimaska ) // MV4115, A - 09/05/00
+GAMEL( 2000, magimaskb, magimask, aristmk5_usa_touch, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Magic Mask (DHG1309, US)", MACHINE_FLAGS_NW, layout_magimaska ) // MV4115, A - 09/05/00
+GAMEL( 1997, magtcha5, aristmk5, aristmk5_touch, dimtouch, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Magic Touch (0300455V, NSW/ACT)", MACHINE_FLAGS_NW, layout_dimtouch ) // 606, A - 06/03/97, Rev 14
+GAMEL( 1997, magtcha5a, magtcha5, aristmk5_touch, dimtouch, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Magic Touch (0200455V, NSW/ACT)", MACHINE_FLAGS_NW, layout_dimtouch ) // 606, A - 06/03/97, Rev 14
+GAMEL( 1997, mammothm, aristmk5, aristmk5, kgalah, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mammoth Money (0100425V, NSW/ACT)", MACHINE_FLAGS, layout_kgalah ) // 595/5, D - 07/04/97, Rev 1.22.14.1
+GAMEL( 2000, marmagic, aristmk5, aristmk5, goldenra, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Margarita Magic (01J00101, NSW/ACT)", MACHINE_FLAGS_NW, layout_marmagic ) // JB005, A - 07/07/00, Rev 17
+GAMEL( 2000, marmagicu, marmagic, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Margarita Magic (EHG1558, US)", MACHINE_FLAGS_NW, layout_magimaska ) // US003, 07/07/2000
+GAMEL( 2000, marmagicua, marmagic, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Margarita Magic (EHG1559, US)", MACHINE_FLAGS_NW, layout_adonisu ) // US003, A - 07/07/00
+GAMEL( 1997, mgarden, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Magic Garden (AHG1211-99, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // MV4033, B - 10/02/97
+GAMEL( 1996, minemine, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mine, Mine, Mine (0400115V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 559/2, D - 16/01/96, Rev 1.18.3.0
+GAMEL( 1996, minemineu, minemine, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mine, Mine, Mine (VHG0416-99, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // 559/2, E - 14/02/96
+GAMEL( 1996, minemineua, minemine, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mine, Mine, Mine (NHG0416-99, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // 559/2, E - 14/02/96
+GAMEL( 1997, monmouse, aristmk5, aristmk5, cashcham, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Money Mouse (0400469V, NSW/ACT)", MACHINE_FLAGS_NW, layout_cashcham ) // 607/1, B - 08/04/97, Rev 6
+GAMEL( 1997, monmousea, monmouse, aristmk5, cashcham, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Money Mouse (0300469V, NSW/ACT)", MACHINE_FLAGS_NW, layout_cashcham ) // 607/1, B - 08/04/97, Rev 6
+GAMEL( 2001, montree, aristmk5, aristmk5, montree, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Money Tree (0201397V, New Zealand)", MACHINE_FLAGS, layout_montree ) // MV4126, C - 12/04/01, Rev 5
+GAMEL( 1996, mountmon, aristmk5, aristmk5, mountmon, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mountain Money (0100294V, NSW/ACT)", MACHINE_FLAGS, layout_mountmon ) // 595/3, B - 11/06/96, Rev 1.22.5.0
+GAMEL( 1996, mountmona, mountmon, aristmk5, mystgard, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mountain Money (0100289V, NSW/ACT)", MACHINE_FLAGS, layout_mystgard ) // 595/2, C - 11/06/96, Rev 1.22.5.0
+GAMEL( 2001, mountmonua, mountmon, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mountain Money (BHG1464, US)", MACHINE_FLAGS_NW, layout_magimaska ) // MV4108/5, A - 10/03/01
+GAMEL( 2000, multidrw, aristmk5, aristmk5, multidrw, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Multidraw - Free Games (0200956V, NSW/ACT)", MACHINE_FLAGS_NW, layout_multidrw ) // 386/64, E - 08/05/00, Rev 17
+GAMEL( 1996, mystgard, aristmk5, aristmk5, mystgard, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mystic Garden (0100275V, NSW/ACT)", MACHINE_FLAGS, layout_mystgard ) // 595/1, B - 11/06/96, Rev 1.22
+GAMEL( 2001, one4all, aristmk5, aristmk5, one4all, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "One For All (0101503V, New Zealand)", MACHINE_FLAGS, layout_one4all ) // MV4141, A - 28/05/01, Rev 11
+GAMEL( 1999, orchidms, aristmk5, aristmk5, orchidms, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Orchid Mist (0200849V, NSW/ACT)", MACHINE_FLAGS_NW, layout_orchidms ) // 601/3, C - 03/02/99, Rev 8
+GAMEL( 1999, orchidmsa, orchidms, aristmk5, orchidms, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Orchid Mist (0100849V, NSW/ACT)", MACHINE_FLAGS_NW, layout_orchidms ) // 601/3, C - 03/02/99, Rev 6
+GAMEL( 2000, orchidmsnz, orchidms, aristmk5, orchidmsnz, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Orchid Mist (0101241V, New Zealand)", MACHINE_FLAGS, layout_orchidmsnz ) // MV4118, A - 3/7/00, Rev 30
+GAMEL( 1996, oscara5, aristmk5, aristmk5, aristmk5_9, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Oscar (0200348V, NSW/ACT)", MACHINE_FLAGS_NW, layout_dolphntrb ) // 593/2, C - 20/09/96, Rev 3
+GAMEL( 1996, oscara5a, oscara5, aristmk5, aristmk5_9, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Oscar (0100348V, NSW/ACT)", MACHINE_FLAGS, layout_dolphntrb ) // 593/2, C - 20/09/96, Rev 1.23.9.1
+GAMEL( 1999, pantmag, aristmk5, aristmk5, kgalah, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Panther Magic (0101046V, NSW/ACT)", MACHINE_FLAGS_NW, layout_pantmag ) // 594/7, A - 06/10/99, Rev 16
+GAMEL( 1999, pantmaga, pantmag, aristmk5, pantmaga, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Panther Magic (0100716V, NSW/ACT)", MACHINE_FLAGS_NW, layout_pantmaga ) // 594/4, A - 13/05/98, Rev 9
+GAMEL( 2001, partygrs, aristmk5, aristmk5_usa_touch, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Party Gras (AHG1567, US)", MACHINE_FLAGS_NW, layout_magimaska ) // MV4115/6, A - 10/11/01
+GAMEL( 2001, partygrsa, partygrs, aristmk5_usa_touch, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Party Gras (BHG1284, US)", MACHINE_FLAGS_NW, layout_bparty ) // MV4115/3, B - 06/02/01
+GAMEL( 2000, peaflut, aristmk5, aristmk5, trstrove, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Peacock Flutter (02J00011, NSW/ACT)", MACHINE_FLAGS_NW, layout_trstrove ) // JB001, A - 10/03/00, Rev 8
+GAMEL( 1997, pengpay, aristmk5, aristmk5, cashchama, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays (0200460V, NSW/ACT)", MACHINE_FLAGS_NW, layout_cashchama ) // 586/4(a), D - 03/06/97, Rev 3
+GAMEL( 1996, pengpaya, pengpay, aristmk5, cashchama, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays (0200357V, NSW/ACT)", MACHINE_FLAGS, layout_cashchama ) // 586/4, C - 12/11/96
+GAMEL( 1997, pengpayb, pengpay, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays (0200359V, NSW/ACT)", MACHINE_FLAGS_NW, layout_swhr2 ) // 586/3(a), D - 03/06/97, Rev 4
+GAMEL( 1995, pengpayc, pengpay, aristmk5, wcougar, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays (0200113V, NSW/ACT)", MACHINE_FLAGS, layout_wcougar ) // 586, A - 12/10/95
+GAMEL( 1997, pengpayu, pengpay, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays (BHI0417-03, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // 586/7(b), B - 14/07/97
+GAMEL( 1997, pengpayua, pengpay, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays (OHG0417-03, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // 586/7(b), B - 14/07/97
+GAMEL( 1997, pengpayub, pengpay, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays (OHG0417-02, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // 586/7(b), B - 14/07/97
+GAMEL( 2001, pengpayce, pengpay, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays - Cash Express (AHG1544, US)", MACHINE_FLAGS_NW, layout_qnilecea ) // MV4122, C - 19/01/01
+GAMEL( 2001, pengpuck, pengpay, aristmk5_usa, pengpuck, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays - Penguin Pucks (EHG1257, US)", MACHINE_FLAGS_NW, layout_pengpuck ) // MV4122/1, C - 19/01/01
+GAMEL( 1998, penpir, aristmk5, aristmk5, kgalah, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pirate (0100674V, NSW/ACT)", MACHINE_FLAGS_NW, layout_kgalah ) // 619/1, A - 31/03/98, Rev 10
+GAMEL( 1998, penpira, penpir, aristmk5, snowcat, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pirate (0200578V, NSW/ACT)", MACHINE_FLAGS_NW, layout_snowcat ) // 619, A - 27/02/98, Rev 8
+GAMEL( 1998, penpir2, aristmk5, aristmk5, penpir2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pirate II (0100869V, Victoria)", MACHINE_FLAGS_NW, layout_penpir2 ) // 619/3, A - 17/12/98
+GAMEL( 1998, petshop, aristmk5, aristmk5, petshop, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Pet Shop (0100731V, NSW/ACT)", MACHINE_FLAGS_NW, layout_petshop ) // 618/1, A - 17/04/98, Rev 13
+GAMEL( 1995, phantpay, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Phantom Pays (0500005V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 570/1, E - 12/09/95
+GAMEL( 1996, przfight, aristmk5, aristmk5, przfight, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Prize Fight (0100299V, NSW/ACT)", MACHINE_FLAGS, layout_przfight ) // 578/4, B - 08/08/96
+GAMEL( 1998, qcash, aristmk5, aristmk5, kgalah, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queens of Cash (0100706V, NSW/ACT)", MACHINE_FLAGS_NW, layout_kgalah ) // 603/6, C - 23/07/98, Rev 6
+GAMEL( 1997, qnile, aristmk5, aristmk5, qnile, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0300439V, NSW/ACT)", MACHINE_FLAGS_NW, layout_qnile ) // 602/4, B - 13/05/97, Rev 7
+GAMEL( 1997, qnilea, qnile, aristmk5, qnile, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0200439V, NSW/ACT)", MACHINE_FLAGS_NW, layout_qnile ) // 602/4, B - 13/05/97, Rev 7
+GAMEL( 1997, qnileb, qnile, aristmk5, qnile, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0100439V, NSW/ACT)", MACHINE_FLAGS, layout_qnile ) // 602/4, B - 13/05/97, Rev 1.26.18.1
+GAMEL( 2002, qnilebr, qnile, aristmk5, goldpyrb, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0101707V, Brazil)", MACHINE_FLAGS, layout_goldpyrb ) // MV4162, A - 21/08/02
+GAMEL( 1997, qnilec, qnile, aristmk5, qnilec, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0300440V, NSW/ACT)", MACHINE_FLAGS_NW, layout_qnilec ) // 602/3, B - 13/05/97, Rev 5
+GAMEL( 1999, qniled, qnile, aristmk5, checkma5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0101139V, NSW/ACT)", MACHINE_FLAGS_NW, layout_qniled ) // 602/16, A - 11/10/99, Rev 14
+GAMEL( 2000, qnilenl, qnile, aristmk5, qnilenl, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0301059V, Holland)", MACHINE_FLAGS, layout_qnilenl ) // 602/5, G - 10/04/00
+GAMEL( 1998, qnilenz, qnile, aristmk5, cashcatnz, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0300785V, New Zealand)", MACHINE_FLAGS, layout_cashcatnz ) // MV4068, A - 31/8/98, Rev 20
+GAMEL( 1997, qnileu, qnile, aristmk5_usa, dolphntru, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (GHG4091-02, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // MV4091, B - 13/05/97
+GAMEL( 1997, qnileua, qnile, aristmk5_usa, dolphntru, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (GHG4091-03, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // MV4091, B - 13/05/97
+GAMEL( 1997, qnilev, qnile, aristmk5, aristmk5_9, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile (04J00784, Venezuela)", MACHINE_FLAGS_NW, layout_dolphntrb ) // 602/3, B - 13/05/97, Rev 6
+GAMEL( 2001, qnilece, qnile, aristmk5_usa, dolphntrce, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile - Cash Express (AHG1609, US)", MACHINE_FLAGS_NW, layout_adonisu ) // MV4091/1, A - 17/01/01
+GAMEL( 2001, qnilecea, qnile, aristmk5_usa, dolphntru, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile - Cash Express (AHG1525, US)", MACHINE_FLAGS_NW, layout_qnilecea ) // MV4091, F - 17/01/01
+GAMEL( 2001, qnileceb, qnile, aristmk5_usa, dolphntru, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile - Cash Express (AHG1608, US)", MACHINE_FLAGS_NW, layout_magimaska ) // MV4091, F - 17/01/01
+GAMEL( 1999, qnilemax, qnile, aristmk5_touch, trstrove, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Queen of the Nile - Maximillions (0401072V, NSW/ACT)", MACHINE_FLAGS_NW, layout_trstrove ) // 602/4, D - 18/06/99, Rev 14
+GAMEL( 1994, qtbird, aristmk5, aristmk5, qtbird, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Q.T. Bird (0500009V, NSW/ACT)", MACHINE_FLAGS, layout_qtbird ) // 581, A - 27/10/94, Rev 1.1.1.0
+GAMEL( 2000, rainwrce, aristmk5, aristmk5, adonisce, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Rainbow Warriors - Cash Express (0101332V, NSW/ACT)", MACHINE_FLAGS_NW, layout_aristmk5 ) // 655, B - 02/03/00, Rev 25
+GAMEL( 1998, reelpwr, aristmk5, aristmk5, wizways, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Reel Power (0100400V, NSW/ACT)", MACHINE_FLAGS, layout_wizways ) // 598/2, A - 01/11/96, Rev 1.23.8.0
+GAMEL( 1998, reelrock, aristmk5, aristmk5, reelrock, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Reelin-n-Rockin (0100779V, NSW/ACT)", MACHINE_FLAGS_NW, layout_reelrock ) // 628, A - 13/07/98, Rev 5
+GAMEL( 1997, retrsam, aristmk5, aristmk5, retrsam, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Return of the Samurai (0400549V, NSW/ACT)", MACHINE_FLAGS_NW, layout_sbuk3 ) // 608, A - 17/04/97, Rev 5
+GAMEL( 1997, retrsama, retrsam, aristmk5, retrsam, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Return of the Samurai (0200549V, NSW/ACT)", MACHINE_FLAGS, layout_sbuk3 ) // 608, A - 17/04/97, Rev 1.26.25.3
+GAMEL( 1997, retrsamb, retrsam, aristmk5, retrsamb, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Return of the Samurai (0200506V, NSW/ACT)", MACHINE_FLAGS, layout_retrsamb ) // 608, A - 17/04/97, Rev 1.26.25.3
+GAMEL( 1997, rushrst, aristmk5, aristmk5, rushrst, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Rushin Rooster (0100534V, NSW/ACT)", MACHINE_FLAGS, layout_cashchama ) // 596/3, C - 25/06/97, Rev 1.27.2.3
+GAMEL( 2001, sldeluxe, aristmk5, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Sweet Liberty Deluxe (AHG1575, US)", MACHINE_FLAGS_NW, layout_adonisu ) // MV4137, A - 11/02/01
+GAMEL( 1998, slvrwolf, aristmk5, aristmk5, wamazona, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Silver Wolf (0100673V, NSW/ACT)", MACHINE_FLAGS_NW, layout_wamazona ) // 621/2, A - 23/03/98, Rev 3
+GAMEL( 1996, snowcat, aristmk5, aristmk5, snowcat, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Snow Cat (0100405V, NSW/ACT)", MACHINE_FLAGS, layout_snowcat ) // 599, B - 23/12/96, Rev 1.25.1.0
+GAMEL( 1997, sumospin, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Sumo Spins (0200606V, NSW/ACT)", MACHINE_FLAGS_NW, layout_swhr2 ) // 622, A - 08/12/97, Rev 4
+GAMEL( 1998, sbuk3, aristmk5, aristmk5, sbuk3, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Super Bucks III (0200711V, NSW/ACT)", MACHINE_FLAGS_NW, layout_sbuk3 ) // 626, A - 22/04/98, Rev 8
+GAMEL( 1998, sbuk3a, sbuk3, aristmk5, sbuk3, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Super Bucks III (0100711V, NSW/ACT)", MACHINE_FLAGS_NW, layout_sbuk3 ) // 626, A - 22/04/98, Rev 7
+GAMEL( 1995, swhr2, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Sweethearts II (0200465V, NSW/ACT)", MACHINE_FLAGS_NW, layout_swhr2 ) // 577/1, C - 07/09/95, Rev 3
+GAMEL( 1995, swhr2a, swhr2, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Sweethearts II (0200004V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 577/1, C - 07/09/95, Rev 1.1.3.0
+GAMEL( 1998, swhr2u, swhr2, aristmk5_usa, swhr2u, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Sweethearts II (PHG0742-02, US)", MACHINE_FLAGS_NW, layout_swhr2u ) // MV4061, A - 29/06/98
+GAMEL( 1995, swhr2v, swhr2, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Sweethearts II (01J01986, Venezuela)", MACHINE_FLAGS_NW, layout_swhr2 ) // 577/1, C - 07/09/95, Rev 3
+GAMEL( 1996, thor, aristmk5, aristmk5, cashcham, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Thor (0200319V, NSW/ACT)", MACHINE_FLAGS, layout_cashcham ) // 569/12, B - 14/08/96, Rev 1.23.7.0
+GAMEL( 1996, thndh, aristmk5, aristmk5, snowcat, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Thunder Heart (0200333V, NSW/ACT)", MACHINE_FLAGS, layout_snowcat ) // 570/9, A - 14/08/96, Rev 1.23.6.0
+GAMEL( 1996, thndha, thndh, aristmk5, wildbill, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Thunder Heart (0200334V, NSW/ACT)", MACHINE_FLAGS, layout_wildbill ) // 597/1, A - 14/08/96, Rev 1.23.6.0
+GAMEL( 1997, topbana, aristmk5, aristmk5, wildbill, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Top Banana (0100550V, NSW/ACT)", MACHINE_FLAGS, layout_wildbill ) // 594/3, A - 18/08/97, Rev 1.26.39.2
+GAMEL( 1998, toutango, aristmk5, aristmk5, kgalah, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Toucan Tango (0100782V, NSW/ACT)", MACHINE_FLAGS_NW, layout_kgalah ) // 616/1, A - 17/06/98, Rev 16
+GAMEL( 1999, toutangonl, toutango, aristmk5, toutangonl, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Toucan Tango (0301388V, Holland)", MACHINE_FLAGS, layout_toutangonl ) // 616, C - 11/05/99
+GAMEL( 2000, trstrove, aristmk5, aristmk5, trstrove, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Treasure Trove (01J00161, NSW/ACT)", MACHINE_FLAGS_NW, layout_trstrove ) // JB001/3, A - 5/10/00, Rev 8
+GAMEL( 2002, tritreat, aristmk5, aristmk5, trstrove, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Triple Treat (0201692V, NSW/ACT)", MACHINE_FLAGS_NW, layout_tritreat ) // 692, A - 17/05/02, Rev 25
+GAMEL( 2001, trojhors, aristmk5, aristmk5, goldenra, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Trojan Horse (01J00851, NSW/ACT)", MACHINE_FLAGS_NW, layout_marmagic ) // JB001/5, A - 30/10/01, Rev 17
+GAMEL( 1996, trpdlght, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Tropical Delight (0100269V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 577/3, B - 15/05/96, Rev 1.22.2.0
+GAMEL( 1997, trpdlghtu, trpdlght, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Tropical Delight (PHG0625-02, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // 577/3, D - 24/09/97
+GAMEL( 1998, unicornd, aristmk5, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Unicorn Dreaming (0100791V, NSW/ACT)", MACHINE_FLAGS_NW, layout_aristmk5 ) // 631/1 A, A - 31/08/98, Rev 12
+GAMEL( 1998, unicornda, unicornd, aristmk5, aristmk5_9, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Unicorn Dreaming (0100813V, NSW/ACT)", MACHINE_FLAGS_NW, layout_dolphntrb ) // 631 A, A - 02/09/98, Rev 14
+GAMEL( 2000, unicorndnz, unicornd, aristmk5, unicorndnz, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Unicorn Dreaming (0101228V, New Zealand)", MACHINE_FLAGS, layout_aristmk5 ) // MV4113/1, A - 05/04/2000, Rev 27
+GAMEL( 2001, unicorndu, unicornd, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Unicorn Dreaming (BHG1584, US)", MACHINE_FLAGS_NW, layout_adonisu ) // MV4130/1, C - 10/17/01
+GAMEL( 2002, venicea5, aristmk5, aristmk5, goldenra, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Venice (02J02056, Venezuela)", MACHINE_FLAGS_NW, layout_venicea5 ) // JB009/2, B - 11/07/02, Rev 17
+GAMEL( 2001, wafricau, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Africa (AHG1535, US)", MACHINE_FLAGS_NW, layout_magimaska ) // MV4076, B - 17/07/01
+GAMEL( 1996, wamazon, aristmk5, aristmk5, wamazon, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Amazon (0200507V, NSW/ACT)", MACHINE_FLAGS_NW, layout_wamazon ) // 506/8, A - 10/10/96, Rev 3
+GAMEL( 1996, wamazona, wamazon, aristmk5, wamazona, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Amazon (0200285V, NSW/ACT)", MACHINE_FLAGS, layout_wamazona ) // 506/6, A - 7/5/96, Rev 1.22.8.0
+GAMEL( 1996, wamazonv, wamazon, aristmk5, wamazon, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Amazon (01J01996, Venezuela)", MACHINE_FLAGS_NW, layout_wamazon ) // 506/8, A - 10/10/96, Rev 3
+GAMEL( 1997, wikwin, aristmk5, aristmk5, wikwin, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wicked Winnings (0100553V, NSW/ACT)", MACHINE_FLAGS_NW, layout_wikwin ) // 609, B - 01/07/97, Rev 1
+GAMEL( 1996, wldangel, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Angels (0100337V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 600, B - 24/09/96
+GAMEL( 1996, wildbill, aristmk5, aristmk5, wildbill, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Bill (0100297V, NSW/ACT)", MACHINE_FLAGS, layout_wildbill ) // 543/8, C - 15/08/96, Rev 1.22.12.0
+GAMEL( 1996, wcougar, aristmk5, aristmk5, wcougar, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Cougar (0100167V, NSW/ACT)", MACHINE_FLAGS, layout_wcougar ) // 569/9, B - 27/2/96, Rev 1.18.1.0
+GAMEL( 1997, wcougaru, wcougar, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Cougar (NHG0296-04, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // 569/8, D - 19/05/97
+GAMEL( 1997, wcougarua, wcougar, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Cougar (NHG0296-07, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // 569/8, D - 19/05/97
+GAMEL( 1997, wcougarub, wcougar, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Cougar (NHG0296-99, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // 569/8, D - 19/05/97
+GAMEL( 1997, wcougaruc, wcougar, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Cougar (AHG1531, US)", MACHINE_FLAGS_NW, layout_magimaska ) // MV4055, B - 13/05/97
+GAMEL( 1996, wizways, aristmk5, aristmk5, wizways, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wizard Ways (0200396V, NSW/ACT)", MACHINE_FLAGS_NW, layout_wizways ) // 598/3, A - 04/11/96, Rev 9
+GAMEL( 1997, wnpost, aristmk5, aristmk5_usa, wnpost, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Winning Post (RHG0418-04, US)", MACHINE_FLAGS_NW, layout_wnpost ) // 541/2, G - 11/02/97
+GAMEL( 1999, wthing, aristmk5, aristmk5, retrsam, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Thing (0101158V, NSW/ACT)", MACHINE_FLAGS_NW, layout_sbuk3 ) // 608/4, B - 14/12/99, Rev 8
+GAMEL( 1999, wtiger, aristmk5, aristmk5, wtiger, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "White Tiger Classic (0200954V, NSW/ACT)", MACHINE_FLAGS_NW, layout_wtiger ) // 638/1, B - 08/07/99, Rev 13
+GAMEL( 2000, yukongl5, aristmk5, aristmk5, goldenra, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Yukon Gold (03J00191, NSW/ACT)", MACHINE_FLAGS_NW, layout_yukongl5 ) // JB005/1, A - 30/10/2000, Rev 17
// the following parent sets are known bad dumps, and do not boot (confirmed)
-GAMEL( 1996, blackpnt, aristmk5, aristmk5, wildbill, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Black Panther (0200818V, Victoria)", MACHINE_NOT_WORKING, layout_wildbill ) // 594/1, A - 30/07/96
-GAMEL( 1996, canrose, aristmk5, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Canyon Rose (AHG1463, US)", MACHINE_NOT_WORKING, layout_cashchamu ) // 603(a), B - 06/12/96 (same as Cash Chameleon)
-GAMEL( 2000, diamdest, aristmk5, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Diamond Destiny (AHG1533, US)", MACHINE_NOT_WORKING, layout_aristmk5_us_200 ) // MV4115_5, A - 09/05/2000 (same as Magic Mask)
-GAMEL( 2001, fortfvr, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Fortune Fever (BHG1566, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // MV4122/2, A - 13/05/01
-GAMEL( 1996, jumpbean, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Jumping Beans (0100161V, NSW/ACT)", MACHINE_NOT_WORKING, layout_swhr2 ) // 586/2, A - 25/01/96
-GAMEL( 1999, sbuk2, aristmk5, aristmk5, sbuk2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Super Bucks II (0400501V, NSW/ACT)", MACHINE_NOT_WORKING, layout_sbuk2 ) // 578, G - 26/07/99, Rev 7
-GAMEL( 2001, wcoyote, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Coyote (AHG1515, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // MV4134, A - 30/07/01 (same as Loco Loot)
+GAMEL( 1996, blackpnt, aristmk5, aristmk5, wildbill, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Black Panther (0200818V, Victoria)", MACHINE_FLAGS_NW, layout_wildbill ) // 594/1, A - 30/07/96
+GAMEL( 1996, canrose, aristmk5, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Canyon Rose (AHG1463, US)", MACHINE_FLAGS_NW, layout_cashchamu ) // 603(a), B - 06/12/96 (same as Cash Chameleon)
+GAMEL( 2000, diamdest, aristmk5, aristmk5_usa, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Diamond Destiny (AHG1533, US)", MACHINE_FLAGS_NW, layout_aristmk5_us_200 ) // MV4115_5, A - 09/05/2000 (same as Magic Mask)
+GAMEL( 2001, fortfvr, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Fortune Fever (BHG1566, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // MV4122/2, A - 13/05/01
+GAMEL( 1996, jumpbean, aristmk5, aristmk5, swhr2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Jumping Beans (0100161V, NSW/ACT)", MACHINE_FLAGS_NW, layout_swhr2 ) // 586/2, A - 25/01/96
+GAMEL( 1999, sbuk2, aristmk5, aristmk5, sbuk2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Super Bucks II (0400501V, NSW/ACT)", MACHINE_FLAGS_NW, layout_sbuk2 ) // 578, G - 26/07/99, Rev 7
+GAMEL( 2001, wcoyote, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Coyote (AHG1515, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // MV4134, A - 30/07/01 (same as Loco Loot)
// the following clone sets are known bad dumps, and do not boot (confirmed)
-GAMEL( 2000, bpartya, bparty, aristmk5_usa_touch, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Bachelorette Party (BHG1579, US)", MACHINE_NOT_WORKING, layout_bparty ) // MV4119/1, B - 25/08/2000
-GAMEL( 1997, cashcra5a, cashcra5, aristmk5, aristmk5_9, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Crop (0300447V, NSW/ACT)", MACHINE_NOT_WORKING, layout_dolphntrb ) // 607/2, C - 29/08/97, Rev 7
-GAMEL( 1996, chickna5v, chickna5, aristmk5, chickna5v, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Chicken (01J01886, Venezuela)", MACHINE_NOT_WORKING, layout_chickna5v ) // 596/1, B - 23/12/96, Rev 3
-GAMEL( 2001, dynajacku, dynajack, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dynamite Jack (CHG1562, US)", MACHINE_NOT_WORKING, layout_magimaska ) // US002, A - 11/07/01
-GAMEL( 2000, eforsta5ce, eforsta5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Enchanted Forest - Cash Express (CHG1536, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // MV4108/6, C - 17/01/00
-GAMEL( 2001, mountmonce, mountmon, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mountain Money - Cash Express (AHG1629, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // MV4108/5, A - 10/03/01
-GAMEL( 2001, mountmonu, mountmon, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mountain Money (BHG1465, US)", MACHINE_NOT_WORKING, layout_aristmk5_us ) // MV4108/5, A - 10/03/01
-GAMEL( 2001, partygrsb, partygrs, aristmk5_usa_touch, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Party Gras (AHG1568, US)", MACHINE_NOT_WORKING, layout_bparty ) // MV4115/6, A - 10/11/2001, 20 lines
-GAMEL( 1995, pengpayd, pengpay, aristmk5, wcougar, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays (0300113V, NSW/ACT)", MACHINE_NOT_WORKING, layout_wcougar ) // 586, A - 12/10/95, Rev 4
-GAMEL( 1998, petshopa, petshop, aristmk5, snowcat, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Pet Shop (0100679V, NSW/ACT)", MACHINE_NOT_WORKING, layout_snowcat ) // 618, A - 09/03/98, Rev 10
-GAMEL( 1995, sbuk2a, sbuk2, aristmk5, sbuk2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Super Bucks II (0300006V, NSW/ACT)", MACHINE_NOT_WORKING, layout_sbuk2 ) // no data due to missing ROMs
-GAMEL( 2000, wthinga, wthing, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Thing (0201176V, NSW/ACT)", MACHINE_NOT_WORKING, layout_aristmk5 ) // 608/5, B - 25/02/00, Rev 11
+GAMEL( 2000, bpartya, bparty, aristmk5_usa_touch, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Bachelorette Party (BHG1579, US)", MACHINE_FLAGS_NW, layout_bparty ) // MV4119/1, B - 25/08/2000
+GAMEL( 1997, cashcra5a, cashcra5, aristmk5, aristmk5_9, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Cash Crop (0300447V, NSW/ACT)", MACHINE_FLAGS_NW, layout_dolphntrb ) // 607/2, C - 29/08/97, Rev 7
+GAMEL( 1996, chickna5v, chickna5, aristmk5, chickna5v, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Chicken (01J01886, Venezuela)", MACHINE_FLAGS_NW, layout_chickna5v ) // 596/1, B - 23/12/96, Rev 3
+GAMEL( 2001, dynajacku, dynajack, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Dynamite Jack (CHG1562, US)", MACHINE_FLAGS_NW, layout_magimaska ) // US002, A - 11/07/01
+GAMEL( 2000, eforsta5ce, eforsta5, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Enchanted Forest - Cash Express (CHG1536, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // MV4108/6, C - 17/01/00
+GAMEL( 2001, mountmonce, mountmon, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mountain Money - Cash Express (AHG1629, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // MV4108/5, A - 10/03/01
+GAMEL( 2001, mountmonu, mountmon, aristmk5_usa, aristmk5_usa, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Mountain Money (BHG1465, US)", MACHINE_FLAGS_NW, layout_aristmk5_us ) // MV4108/5, A - 10/03/01
+GAMEL( 2001, partygrsb, partygrs, aristmk5_usa_touch, bootsctnua, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Party Gras (AHG1568, US)", MACHINE_FLAGS_NW, layout_bparty ) // MV4115/6, A - 10/11/2001, 20 lines
+GAMEL( 1995, pengpayd, pengpay, aristmk5, wcougar, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Penguin Pays (0300113V, NSW/ACT)", MACHINE_FLAGS_NW, layout_wcougar ) // 586, A - 12/10/95, Rev 4
+GAMEL( 1998, petshopa, petshop, aristmk5, snowcat, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Pet Shop (0100679V, NSW/ACT)", MACHINE_FLAGS_NW, layout_snowcat ) // 618, A - 09/03/98, Rev 10
+GAMEL( 1995, sbuk2a, sbuk2, aristmk5, sbuk2, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Super Bucks II (0300006V, NSW/ACT)", MACHINE_FLAGS_NW, layout_sbuk2 ) // no data due to missing ROMs
+GAMEL( 2000, wthinga, wthing, aristmk5, aristmk5, aristmk5_state, init_aristmk5, ROT0, "Aristocrat", "Wild Thing (0201176V, NSW/ACT)", MACHINE_FLAGS_NW, layout_aristmk5 ) // 608/5, B - 25/02/00, Rev 11
diff --git a/src/mame/drivers/aristmk6.cpp b/src/mame/drivers/aristmk6.cpp
index 55cd5b71d9a..e78eda78a1c 100644
--- a/src/mame/drivers/aristmk6.cpp
+++ b/src/mame/drivers/aristmk6.cpp
@@ -35,8 +35,8 @@ notes:
class aristmk6_state : public driver_device
{
public:
- aristmk6_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
+ aristmk6_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_uart0(*this, "uart0"),
m_uart1(*this, "uart1"),
@@ -385,134 +385,120 @@ typically at around 0x3100-0x3200, 0x3600-0x3700 for Left/Right BIOS dumps (2 fi
#define ARISTMK6_BIOS \
ROM_REGION( 0x0400000, "maincpu", ROMREGION_ERASEFF) \
- ROM_SYSTEM_BIOS( 0, "au-nsw1", "Aristocrat MK6 Base (02010114, NSW/ACT)" ) \
+ ROM_SYSTEM_BIOS( 0, "bios0", "Aristocrat MK6 Base (02010114, NSW/ACT)" ) \
ROM_LOAD64_WORD_BIOS( 0, "02010114.u84", 0x0000000, 0x0100000, CRC(183e3836) SHA1(4c802d0cd010bc007acb3a83e37aaa29b2d13d87) ) /* From Arabian Nights & Helen of Troy */ \
ROM_LOAD64_WORD_BIOS( 0, "02010114.u71", 0x0000002, 0x0100000, CRC(8f83c3dd) SHA1(a5f9d80b4b515b24299d0241e1665cfd9da8bab7) ) \
ROM_LOAD64_WORD_BIOS( 0, "02010114.u83", 0x0000004, 0x0100000, CRC(945104d7) SHA1(e372d0cf889c72b5d001b26fe4a925a28486537f) ) \
ROM_LOAD64_WORD_BIOS( 0, "02010114.u70", 0x0000006, 0x0100000, CRC(3ba4379f) SHA1(84367f12c4c9224d2ab9cae83ae8727de338408c) ) \
- ROM_SYSTEM_BIOS( 1, "au-nsw2", "Aristocrat MK6 Base (02010201, NSW/ACT)" ) \
+ ROM_SYSTEM_BIOS( 1, "bios1", "Aristocrat MK6 Base (02010201, NSW/ACT)" ) \
ROM_LOAD64_WORD_BIOS( 1, "02010201.u84", 0x0000000, 0x0100000, CRC(0920930f) SHA1(771b0f62442d1c75b1bb59ad82365b7ab8747173) ) /* From Money Tree & Go For Green */ \
ROM_LOAD64_WORD_BIOS( 1, "02010201.u71", 0x0000002, 0x0100000, CRC(24d5614a) SHA1(fdcf3826dccc72b74b66379b1411cf211d5a1670) ) \
ROM_LOAD64_WORD_BIOS( 1, "02010201.u83", 0x0000004, 0x0100000, CRC(5f64a20c) SHA1(397404ab6d2a1aa3c1fc77bb9421fef7079b65a5) ) \
ROM_LOAD64_WORD_BIOS( 1, "02010201.u70", 0x0000006, 0x0100000, CRC(9b2db442) SHA1(d512398a2d9257bd385dc50d61c63cd1a47300ba) ) \
- ROM_SYSTEM_BIOS( 2, "au-nsw3", "Aristocrat MK6 Base (02061013, NSW/ACT)" ) \
+ ROM_SYSTEM_BIOS( 2, "bios2", "Aristocrat MK6 Base (02061013, NSW/ACT)" ) \
ROM_LOAD32_WORD_BIOS( 2, "02061013_right.u83", 0x0000000, 0x0100000, CRC(7a8619a5) SHA1(bd03ddb68817c1660b009e102ccf69e5b603b875) ) \
ROM_LOAD32_WORD_BIOS( 2, "02061013_left.u70", 0x0000002, 0x0100000, CRC(e70a7007) SHA1(0935f924866162d9c0fbdbb99391cbf730a04b76) ) \
- ROM_SYSTEM_BIOS( 3, "au-nsw4", "Aristocrat MK6 Base (03010301, NSW/ACT)" ) \
+ ROM_SYSTEM_BIOS( 3, "bios3", "Aristocrat MK6 Base (03010301, NSW/ACT)" ) \
ROM_LOAD64_WORD_BIOS( 3, "03010301.u84", 0x0000000, 0x0100000, CRC(a34a9f16) SHA1(b8750e6ceb1715da8e5ac2f0183254e29a042641) ) /* From Queen of the Nile Special Edition */ \
ROM_LOAD64_WORD_BIOS( 3, "03010301.u71", 0x0000002, 0x0100000, CRC(d793440a) SHA1(dced4c04bde13293af77a9a1f4c5c606e3758de0) ) \
ROM_LOAD64_WORD_BIOS( 3, "03010301.u83", 0x0000004, 0x0100000, CRC(c8580554) SHA1(58b8bfff2f8d298c4e3be2b01900800c45fa7ad7) ) \
ROM_LOAD64_WORD_BIOS( 3, "03010301.u70", 0x0000006, 0x0100000, CRC(5ae69121) SHA1(36dd3f9aaf5f7d2751d1954d67f898bc3ec71f3b) ) \
- ROM_SYSTEM_BIOS( 4, "au-nsw5", "Aristocrat MK6 Base (04010501, NSW/ACT)" ) \
+ ROM_SYSTEM_BIOS( 4, "bios4", "Aristocrat MK6 Base (04010501, NSW/ACT)" ) \
ROM_LOAD32_WORD_BIOS( 4, "04010501_right.u83", 0x0000000, 0x0100000, CRC(3daefb7a) SHA1(411471713219f4bab5ccf5fe7a12a6c138c8c550) ) /* From Diamonds Forever */ \
ROM_LOAD32_WORD_BIOS( 4, "04010501_left.u70", 0x0000002, 0x0100000, CRC(21182775) SHA1(7c5b7f5aba3babc85f512a8f7d4ebc0d83eb842a) ) \
- ROM_SYSTEM_BIOS( 5, "au-nsw6", "Aristocrat MK6 Base (05010601, NSW/ACT)" ) \
+ ROM_SYSTEM_BIOS( 5, "bios5", "Aristocrat MK6 Base (05010601, NSW/ACT)" ) \
ROM_LOAD32_WORD_BIOS( 5, "05010601_right.u83", 0x0000000, 0x0100000, CRC(c12eac11) SHA1(683b9ddc323865ace7dca37d13b55de6e42759a5) ) /* From Thai Princess & Venetian Nights */ \
ROM_LOAD32_WORD_BIOS( 5, "05010601_left.u70", 0x0000002, 0x0100000, CRC(b3e6b4a0) SHA1(3bf398c9257579f8e51ce716d6ebfa74fa510273) ) \
- ROM_SYSTEM_BIOS( 6, "au-nsw7", "Aristocrat MK6 Base (07010801, NSW/ACT)" ) \
+ ROM_SYSTEM_BIOS( 6, "bios6", "Aristocrat MK6 Base (07010801, NSW/ACT)" ) \
ROM_LOAD32_WORD_BIOS( 6, "07010801_right.u83", 0x0000000, 0x0200000, CRC(8c148c11) SHA1(5ff3be18455b4f04675fec8d5b9d881295c65e23) ) /* From Jailbreak */ \
ROM_LOAD32_WORD_BIOS( 6, "07010801_left.u70", 0x0000002, 0x0200000, CRC(8e92af68) SHA1(00d2bb655b7964a9652896741210ec534df0b0d2) ) \
- ROM_SYSTEM_BIOS( 7, "au-nsw8", "Aristocrat MK6 Base (09011001, NSW/ACT)" ) \
+ ROM_SYSTEM_BIOS( 7, "bios7", "Aristocrat MK6 Base (09011001, NSW/ACT)" ) \
ROM_LOAD32_WORD_BIOS( 7, "09011001_right.u83", 0x0000000, 0x0200000, CRC(8a853f80) SHA1(9a75498f7b02c81a483b4e1c158f35f0ee4c0112) ) \
ROM_LOAD32_WORD_BIOS( 7, "09011001_left.u70", 0x0000002, 0x0200000, CRC(229c2e63) SHA1(91fd2b1acb69efe073647e93db9f11042add2feb) ) \
- ROM_SYSTEM_BIOS( 8, "au-nsw9", "Aristocrat MK6 Base (11011501, NSW/ACT)" ) \
+ ROM_SYSTEM_BIOS( 8, "bios8", "Aristocrat MK6 Base (11011501, NSW/ACT)" ) \
ROM_LOAD32_WORD_BIOS( 8, "11011501_right.u83", 0x0000000, 0x0200000, CRC(de4c3aed) SHA1(21596a2edd20eb7de7a4ec8900a270b09c8f326f) ) \
ROM_LOAD32_WORD_BIOS( 8, "11011501_left.u70", 0x0000002, 0x0200000, CRC(c5cc3461) SHA1(5b43c4cb6110a6ccf67cd0f3789253f6872b20c4) ) \
- ROM_SYSTEM_BIOS( 9, "au-nsw10", "Aristocrat MK6 Base (11011901, NSW/ACT)" ) \
+ ROM_SYSTEM_BIOS( 9, "bios9", "Aristocrat MK6 Base (11011901, NSW/ACT)" ) \
ROM_LOAD32_WORD_BIOS( 9, "11011901_right.u83", 0x0000000, 0x0200000, CRC(73dcb11c) SHA1(69ae4f32a0c9141b2a82ff3935b0cd20333d2964) ) \
ROM_LOAD32_WORD_BIOS( 9, "11011901_left.u70", 0x0000002, 0x0200000, CRC(d3dd2210) SHA1(3548f8cc39859d3f44a55f6bae48966a2d48e0eb) ) \
- ROM_SYSTEM_BIOS( 10, "au-nsw11", "Aristocrat MK6 Base (13012001, NSW/ACT)" ) \
+ ROM_SYSTEM_BIOS( 10, "bios10", "Aristocrat MK6 Base (13012001, NSW/ACT)" ) \
ROM_LOAD32_WORD_BIOS( 10, "13012001_right.u83", 0x0000000, 0x0200000, CRC(e627dbfa) SHA1(4fedbe0975ceb7dc0ebebf18a7708d78984db9b7) ) /* From Grizzly & Queen of the Nile */ \
ROM_LOAD32_WORD_BIOS( 10, "13012001_left.u70", 0x0000002, 0x0200000, CRC(38e8f659) SHA1(88c6acba99b0aca023c6f4d27c061c231490e9e0) ) \
- ROM_SYSTEM_BIOS( 11, "au-nsw12", "Aristocrat MK6 Base (14011913, NSW/ACT)" ) \
+ ROM_SYSTEM_BIOS( 11, "bios11", "Aristocrat MK6 Base (14011913, NSW/ACT)" ) \
ROM_LOAD32_WORD_BIOS( 11, "14011913_right.u83", 0x0000000, 0x0200000, CRC(01d13b89) SHA1(b1013366d0803dfbec5a5f90f6a5cea862de0513) ) \
ROM_LOAD32_WORD_BIOS( 11, "14011913_left.u70", 0x0000002, 0x0200000, CRC(9a4cefdf) SHA1(6c15bc565ede8af19361d60ee1e6657a8055c92c) ) \
- ROM_SYSTEM_BIOS( 12, "au-nsw13", "Aristocrat MK6 Base (19012801, NSW/ACT)" ) \
+ ROM_SYSTEM_BIOS( 12, "bios12", "Aristocrat MK6 Base (19012801, NSW/ACT)" ) \
ROM_LOAD32_WORD_BIOS( 12, "19012801_right.u83", 0x0000000, 0x0200000, CRC(5b20a96c) SHA1(5fd916b7cc2cdd51bf7dd212c1114f94dc9c7926) ) /* From Cactus Corral & Cashman Tonight & Heart of Vegas & Moonlight Waltz */ \
ROM_LOAD32_WORD_BIOS( 12, "19012801_left.u70", 0x0000002, 0x0200000, CRC(b03bd17c) SHA1(f281e80f6dda5b727ed71d2deebe3b0ff548773f) ) \
- ROM_SYSTEM_BIOS( 13, "au-nsw14", "Aristocrat MK6 Base (21012901, NSW/ACT)" ) \
+ ROM_SYSTEM_BIOS( 13, "bios13", "Aristocrat MK6 Base (21012901, NSW/ACT)" ) \
ROM_LOAD32_WORD_BIOS( 13, "21012901_right.u83", 0x0000000, 0x0200000, CRC(757618f2) SHA1(43f9a3e7d544979f8c6974945914d9e099b02abd) ) /* From Red Baron */ \
ROM_LOAD32_WORD_BIOS( 13, "21012901_left.u70", 0x0000002, 0x0200000, CRC(0d271470) SHA1(5cd4b604bfe2fd7e9a8d08e1c7c97f17ae068479) ) \
- ROM_SYSTEM_BIOS( 14, "au-nsw15", "Aristocrat MK6 Base (24013001, NSW/ACT)" ) \
+ ROM_SYSTEM_BIOS( 14, "bios14", "Aristocrat MK6 Base (24013001, NSW/ACT)" ) \
ROM_LOAD32_WORD_BIOS( 14, "24013001_right.u83", 0x0000000, 0x0200000, CRC(e97afedf) SHA1(10ca3b015afaff5d7812f0f5207b2535602136a5) ) /* From Wild Stallion */ \
ROM_LOAD32_WORD_BIOS( 14, "24013001_left.u70", 0x0000002, 0x0200000, CRC(06ae7e07) SHA1(39a45575b66906d73b519988d1001c99b05c5f34) ) \
- ROM_SYSTEM_BIOS( 15, "au-sa1", "Aristocrat MK6 Base (03030708, South Australia)" ) \
+ ROM_SYSTEM_BIOS( 15, "bios15", "Aristocrat MK6 Base (03030708, South Australia)" ) \
ROM_LOAD32_WORD_BIOS( 15, "03030708_right.u83", 0x0000000, 0x0100000, CRC(b4b3c6a5) SHA1(5747f98a6eaa5c24a23d1d76a28b33a3bfbbfd1f) ) /* From Scatter Magic II SA */ \
ROM_LOAD32_WORD_BIOS( 15, "03030708_left.u70", 0x0000002, 0x0100000, CRC(4e5ad823) SHA1(77ab1c29c6172cfdcef776222a72b2b44114d4da) ) \
- ROM_SYSTEM_BIOS( 16, "my", "Aristocrat MK6 Base (15011025, Malaysia)" ) \
+ ROM_SYSTEM_BIOS( 16, "bios16", "Aristocrat MK6 Base (15011025, Malaysia)" ) \
ROM_LOAD32_WORD_BIOS( 16, "15011025_right.u83", 0x0000000, 0x0200000, CRC(bf21a975) SHA1(a251b1a7342387300689cd50fe4ce7975b903ac5) ) \
ROM_LOAD32_WORD_BIOS( 16, "15011025_left.u70", 0x0000002, 0x0200000, CRC(c02e14b0) SHA1(6bf98927813519dfe60e582dbe5be3ccd87f7c91) ) \
- ROM_SYSTEM_BIOS( 17, "au-qld1", "Aristocrat MK6 Base (14011605, Queensland))" ) \
- ROM_LOAD32_WORD_BIOS( 17, "14011605_right.u83", 0x0000000, 0x0200000, CRC(2bec5b74) SHA1(854733cada75e632f01f7096d4740ed4941a3d5b) ) /* From Moon Fire - Jackpot Carnival */ \
- ROM_LOAD32_WORD_BIOS( 17, "14011605_left.u70", 0x0000002, 0x0200000, CRC(cd26d4f0) SHA1(40822714abf08aeb08d827dbd8cd099f86803754) ) \
- ROM_SYSTEM_BIOS( 18, "au-qld2", "Aristocrat MK6 Base (20012305, Queensland)" ) \
- ROM_LOAD32_WORD_BIOS( 18, "20012305_right.u83", 0x0000000, 0x0200000, CRC(e436c1f5) SHA1(62ee529cc971fd76aa2ccc15778e3f0c40e3e47f) ) /* From Spring Festival */ \
- ROM_LOAD32_WORD_BIOS( 18, "20012305_left.u70", 0x0000002, 0x0200000, CRC(ea8961cc) SHA1(0ebc7c3b94a6e01ee984af4711043130d9670bd3) ) \
- ROM_SYSTEM_BIOS( 19, "au-qld3", "Aristocrat MK6 Base (20012605, Queensland)" ) \
- ROM_LOAD32_WORD_BIOS( 19, "20012605_right.u83", 0x0000000, 0x0200000, CRC(045b82ad) SHA1(b8e4f9f826970d83ae5fd2f2898de12ad1bf2d24) ) \
- ROM_LOAD32_WORD_BIOS( 19, "20012605_left.u70", 0x0000002, 0x0200000, CRC(87331111) SHA1(6cdc2d81f68de23af18a975a6f27ddec246be405) ) \
- ROM_SYSTEM_BIOS( 20, "au-qld4", "Aristocrat MK6 Base (01040505, Queensland)" ) \
- ROM_LOAD64_WORD_BIOS( 20, "01040505.u84", 0x0000000, 0x0100000, CRC(cf5a9d1e) SHA1(0ebba478fc883831d70b0fa95f43e5f93b07ae9e) ) /* From Show Me The Money */ \
- ROM_LOAD64_WORD_BIOS( 20, "01040505.u71", 0x0000002, 0x0100000, CRC(f56ea77e) SHA1(319be1bee66a289e2c1f6beec07758f79aa0cf16) ) \
- ROM_LOAD64_WORD_BIOS( 20, "01040505.u83", 0x0000004, 0x0100000, CRC(90f32169) SHA1(228be8b4a9eb6b2acf7f7a7561bd194009936026) ) \
- ROM_LOAD64_WORD_BIOS( 20, "01040505.u70", 0x0000006, 0x0100000, CRC(b9ddea66) SHA1(f4bfdeada39a3f0094d6468b7374a34f88f5df7f) ) \
- ROM_SYSTEM_BIOS( 21, "au-qld5", "Aristocrat MK6 Base (04041205, Queensland)" ) \
- ROM_LOAD32_WORD_BIOS( 21, "04041205_right.u83", 0x0000000, 0x0100000, CRC(ca6bc86c) SHA1(69fe7fc35694e4cd7f861bff4ec3a6165a81df6e) ) \
- ROM_LOAD32_WORD_BIOS( 21, "04041205_left.u70", 0x0000002, 0x0100000, CRC(dfb9a119) SHA1(814a5a7877392aec4e4871d7f0e19d2fbd717409) ) \
- ROM_SYSTEM_BIOS( 22, "au-qld6", "Aristocrat MK6 Base (03130334, Queensland)" ) \
- ROM_LOAD32_WORD_BIOS( 22, "03130334_right.u83", 0x0000000, 0x0200000, CRC(bce3d97f) SHA1(da36377cc1465022a2434703adee63bf48c71a9c) ) \
- ROM_LOAD32_WORD_BIOS( 22, "03130334_left.u70", 0x0000002, 0x0200000, CRC(02175fde) SHA1(4e9a9e1e803a0c84b06aec99dc3147dd7a919eee) ) \
- ROM_SYSTEM_BIOS( 23, "us1", "Aristocrat MK6 Base (01.02.08, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 23, "01.02.08_right.u2", 0x0000000, 0x0100000, CRC(aaaeac8c) SHA1(a565e5fcb4f55f31e7d36be40eec234248a66efd) ) \
- ROM_LOAD32_WORD_BIOS( 23, "01.02.08_left.u3", 0x0000002, 0x0100000, CRC(f29fd1bf) SHA1(33e043d2616e10a1c7a0936c3d208f9bcc2ca6f3) ) \
- ROM_SYSTEM_BIOS( 24, "us2", "Aristocrat MK6 Base (01.03.03a, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 24, "01.03.03a_right.u83", 0x0000000, 0x0200000, CRC(253415f4) SHA1(50dc77ad87bc6be1932dda2fd4865602c8c49729) ) \
- ROM_LOAD32_WORD_BIOS( 24, "01.03.03a_left.u70", 0x0000002, 0x0200000, CRC(4ab5dd40) SHA1(a6812cc624e6a98ea7b0697e2797fe10ba8e303e) ) \
- ROM_SYSTEM_BIOS( 25, "us3", "Aristocrat MK6 Base (01.03.03e, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 25, "01.03.03e_right.u83", 0x0000000, 0x0200000, CRC(2255e263) SHA1(5e9e093aaa17172f47a14c3baf7f6f0f73b19398) ) \
- ROM_LOAD32_WORD_BIOS( 25, "01.03.03e_left.u70", 0x0000002, 0x0200000, CRC(ea50729a) SHA1(14b5a71bfb91ac366ddcb5f77fb54127808f8163) ) \
- ROM_SYSTEM_BIOS( 26, "us4", "Aristocrat MK6 Base (01.03.05, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 26, "01.03.05_right.u83", 0x0000000, 0x0200000, CRC(2c7f1ec3) SHA1(d03167f43ed6f9596080d91472695829378cef0a) ) \
- ROM_LOAD32_WORD_BIOS( 26, "01.03.05_left.u70", 0x0000002, 0x0200000, CRC(0095e3f9) SHA1(d2e8786158b1ab0a614aab21cf1d14cbc04754af) ) \
- ROM_SYSTEM_BIOS( 27, "us5", "Aristocrat MK6 Base (01.03.06, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 27, "01.03.06_right.u83", 0x0000000, 0x0200000, CRC(bd48ca55) SHA1(8fb1576cbeb1c64c358880714740195d2e73e03e) ) /* From Diamond Eyes US */ \
- ROM_LOAD32_WORD_BIOS( 27, "01.03.06_left.u70", 0x0000002, 0x0200000, CRC(2f9d9a29) SHA1(fdebfaca9a579d7249379f19aef22fbfd66bf943) ) \
- ROM_SYSTEM_BIOS( 28, "us6", "Aristocrat MK6 Base (01.03.07, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 28, "01.03.07_right.u83", 0x0000000, 0x0200000, CRC(2ebccc4e) SHA1(9342724e4451e9ab24ceae208284b50abd4f0be3) ) \
- ROM_LOAD32_WORD_BIOS( 28, "01.03.07_left.u70", 0x0000002, 0x0200000, CRC(a3632da4) SHA1(1c96a88e86095b81801ab88e36a4cdfa4b893265) ) \
- ROM_SYSTEM_BIOS( 29, "us7", "Aristocrat MK6 Base (01.03.14, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 29, "01.03.14_right.u83", 0x0000000, 0x0200000, CRC(889ffd82) SHA1(9c98c9cdcf5f7d05095f11006418133029e9f0f8) ) /* From 5 Dragons US */ \
- ROM_LOAD32_WORD_BIOS( 29, "01.03.14_left.u70", 0x0000002, 0x0200000, CRC(7138fec4) SHA1(f81331d1875ac574d3e6c98be218ff25c6c7be5a) ) \
- ROM_SYSTEM_BIOS( 30, "us8", "Aristocrat MK6 Base (01.03.17, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 30, "01.03.17_right.u83", 0x0000000, 0x0200000, CRC(1582714b) SHA1(92d0a15314ffe526159bef9a364898dd1ebdfde7) ) \
- ROM_LOAD32_WORD_BIOS( 30, "01.03.17_left.u70", 0x0000002, 0x0200000, CRC(a88193dc) SHA1(c9e1d483edaecd318d2e5fc8a54e84516c93e0ca) ) \
- ROM_SYSTEM_BIOS( 31, "us9", "Aristocrat MK6 Base (01.04.14, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 31, "01.04.04_right.u83", 0x0000000, 0x0200000, CRC(e57ba02d) SHA1(8e29403e6b619eeab41dc171221720bc7820ccdc) ) \
- ROM_LOAD32_WORD_BIOS( 31, "01.04.04_left.u70", 0x0000002, 0x0200000, CRC(b984a92c) SHA1(90f7a61302caee40195c08565bdac856a3234c1d) ) \
- ROM_SYSTEM_BIOS( 32, "us10", "Aristocrat MK6 Base (01.04.07, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 32, "01.04.07_right.u83", 0x0000000, 0x0200000, CRC(23c28e22) SHA1(98f24a1f86232b6c2c288a61ec7d60c867f192e5) ) \
- ROM_LOAD32_WORD_BIOS( 32, "01.04.07_left.u70", 0x0000002, 0x0200000, CRC(acfb0fe0) SHA1(b1a772d7978e6ff4406a5bb39a71cb3f89608e72) ) \
- ROM_SYSTEM_BIOS( 33, "us11", "Aristocrat MK6 Base (01.04.08, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 33, "01.04.08_right.u83", 0x0000000, 0x0200000, CRC(95333304) SHA1(7afe49d6c5e4d6820f349778557daa88c5366a51) ) /* From Bob and Dolly, also u20 on EPROM expansion board */ \
- ROM_LOAD32_WORD_BIOS( 33, "01.04.08_left.u70", 0x0000002, 0x0200000, CRC(0dfcad10) SHA1(53798be000304aed38909f5fd8470a68bedd8229) ) /* also u10 on EPROM expansion board */ \
- ROM_SYSTEM_BIOS( 34, "us12", "Aristocrat MK6 Base (01.04.10, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 34, "01.04.10_right.u83", 0x0000000, 0x0200000, CRC(82ce2fcc) SHA1(4c8fb3db084a67e99d1420b3f895a06ce9ef5ec2) ) \
- ROM_LOAD32_WORD_BIOS( 34, "01.04.10_left.u70", 0x0000002, 0x0200000, CRC(9d9d52c1) SHA1(b957220cdbedd516c219d1bfc28807ce466df93f) ) \
- ROM_SYSTEM_BIOS( 35, "us13", "Aristocrat MK6 Base (01.04.11, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 35, "01.04.11_right.u83", 0x0000000, 0x0200000, CRC(2dae8ca0) SHA1(7a0fb38b4c1ac7195d15bdab6f0cfb16c78430f0) ) \
- ROM_LOAD32_WORD_BIOS( 35, "01.04.11_left.u70", 0x0000002, 0x0200000, CRC(787f2b07) SHA1(2548289e44f4b935346b759afb5383bdbac04c3e) ) \
- ROM_SYSTEM_BIOS( 36, "set-us1", "Aristocrat MK6 Set Chips (06.02.04, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 36, "06.02.04_right.u2", 0x0000000, 0x0100000, CRC(1cf5a853) SHA1(64d17efcce702df7a0b0e151293199478e25226d) ) \
- ROM_LOAD32_WORD_BIOS( 36, "06.02.04_left.u3", 0x0000002, 0x0100000, CRC(117b75f2) SHA1(2129286853d3c50b8a943b71334d4ef6b98adc05) ) \
- ROM_SYSTEM_BIOS( 37, "set-us2", "Aristocrat MK6 Set Chips (06.02.20, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 37, "06.02.20_right.u83", 0x0000000, 0x0100000, CRC(e4001f60) SHA1(5da34efb1ac0f7c84a48e09363d20cfecda4bcf1) ) \
- ROM_LOAD32_WORD_BIOS( 37, "06.02.20_left.u70", 0x0000002, 0x0100000, CRC(199ed3b9) SHA1(e3ee81ffd713f09e35a10c38e4f59282e2c5cd30) ) \
- ROM_SYSTEM_BIOS( 38, "set-us3", "Aristocrat MK6 Set Chips (06.03.03, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 38, "06.03.03_right.u2", 0x0000000, 0x0100000, CRC(98763498) SHA1(246e95cc12eb34f946b2f4938c59217718f6d841) ) \
- ROM_LOAD32_WORD_BIOS( 38, "06.03.03_left.u3", 0x0000002, 0x0100000, CRC(a6924238) SHA1(b71ab39bf9c1fdbab556028138749e8c040ec83c) ) \
- ROM_SYSTEM_BIOS( 39, "set-us4", "Aristocrat MK6 Set Chips (06.03.04, USA)" ) \
- ROM_LOAD32_WORD_BIOS( 39, "06.03.04_right.u2", 0x0000000, 0x0100000, CRC(6f5f5ef1) SHA1(70a43fba4de47ed8dcf38b25eafd5873f3428e72) ) \
- ROM_LOAD32_WORD_BIOS( 39, "06.03.04_left.u3", 0x0000002, 0x0100000, CRC(7034f26b) SHA1(7be78f23bec38d05240cdfe1186ec0c8291f5a1c) )
+ ROM_SYSTEM_BIOS( 17, "bios17", "Aristocrat MK6 Base (20012605, Queensland)" ) \
+ ROM_LOAD32_WORD_BIOS( 17, "20012605_right.u83", 0x0000000, 0x0200000, CRC(045b82ad) SHA1(b8e4f9f826970d83ae5fd2f2898de12ad1bf2d24) ) \
+ ROM_LOAD32_WORD_BIOS( 17, "20012605_left.u70", 0x0000002, 0x0200000, CRC(87331111) SHA1(6cdc2d81f68de23af18a975a6f27ddec246be405) ) \
+ ROM_SYSTEM_BIOS( 18, "bios18", "Aristocrat MK6 Base (04041205, Queensland)" ) \
+ ROM_LOAD32_WORD_BIOS( 18, "04041205_right.u83", 0x0000000, 0x0100000, CRC(ca6bc86c) SHA1(69fe7fc35694e4cd7f861bff4ec3a6165a81df6e) ) \
+ ROM_LOAD32_WORD_BIOS( 18, "04041205_left.u70", 0x0000002, 0x0100000, CRC(dfb9a119) SHA1(814a5a7877392aec4e4871d7f0e19d2fbd717409) ) \
+ ROM_SYSTEM_BIOS( 19, "bios19", "Aristocrat MK6 Base (01.02.08, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 19, "01.02.08_right.u2", 0x0000000, 0x0100000, CRC(aaaeac8c) SHA1(a565e5fcb4f55f31e7d36be40eec234248a66efd) ) \
+ ROM_LOAD32_WORD_BIOS( 19, "01.02.08_left.u3", 0x0000002, 0x0100000, CRC(f29fd1bf) SHA1(33e043d2616e10a1c7a0936c3d208f9bcc2ca6f3) ) \
+ ROM_SYSTEM_BIOS( 20, "bios20", "Aristocrat MK6 Base (01.03.03a, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 20, "01.03.03a_right.u83", 0x0000000, 0x0200000, CRC(253415f4) SHA1(50dc77ad87bc6be1932dda2fd4865602c8c49729) ) \
+ ROM_LOAD32_WORD_BIOS( 20, "01.03.03a_left.u70", 0x0000002, 0x0200000, CRC(4ab5dd40) SHA1(a6812cc624e6a98ea7b0697e2797fe10ba8e303e) ) \
+ ROM_SYSTEM_BIOS( 21, "bios21", "Aristocrat MK6 Base (01.03.03e, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 21, "01.03.03e_right.u83", 0x0000000, 0x0200000, CRC(2255e263) SHA1(5e9e093aaa17172f47a14c3baf7f6f0f73b19398) ) \
+ ROM_LOAD32_WORD_BIOS( 21, "01.03.03e_left.u70", 0x0000002, 0x0200000, CRC(ea50729a) SHA1(14b5a71bfb91ac366ddcb5f77fb54127808f8163) ) \
+ ROM_SYSTEM_BIOS( 22, "bios22", "Aristocrat MK6 Base (01.03.05, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 22, "01.03.05_right.u83", 0x0000000, 0x0200000, CRC(2c7f1ec3) SHA1(d03167f43ed6f9596080d91472695829378cef0a) ) \
+ ROM_LOAD32_WORD_BIOS( 22, "01.03.05_left.u70", 0x0000002, 0x0200000, CRC(0095e3f9) SHA1(d2e8786158b1ab0a614aab21cf1d14cbc04754af) ) \
+ ROM_SYSTEM_BIOS( 23, "bios23", "Aristocrat MK6 Base (01.03.06, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 23, "01.03.06_right.u83", 0x0000000, 0x0200000, CRC(bd48ca55) SHA1(8fb1576cbeb1c64c358880714740195d2e73e03e) ) /* From Diamond Eyes US */ \
+ ROM_LOAD32_WORD_BIOS( 23, "01.03.06_left.u70", 0x0000002, 0x0200000, CRC(2f9d9a29) SHA1(fdebfaca9a579d7249379f19aef22fbfd66bf943) ) \
+ ROM_SYSTEM_BIOS( 24, "bios24", "Aristocrat MK6 Base (01.03.07, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 24, "01.03.07_right.u83", 0x0000000, 0x0200000, CRC(2ebccc4e) SHA1(9342724e4451e9ab24ceae208284b50abd4f0be3) ) \
+ ROM_LOAD32_WORD_BIOS( 24, "01.03.07_left.u70", 0x0000002, 0x0200000, CRC(a3632da4) SHA1(1c96a88e86095b81801ab88e36a4cdfa4b893265) ) \
+ ROM_SYSTEM_BIOS( 25, "bios25", "Aristocrat MK6 Base (01.03.14, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 25, "01.03.14_right.u83", 0x0000000, 0x0200000, CRC(889ffd82) SHA1(9c98c9cdcf5f7d05095f11006418133029e9f0f8) ) /* From 5 Dragons US */ \
+ ROM_LOAD32_WORD_BIOS( 25, "01.03.14_left.u70", 0x0000002, 0x0200000, CRC(7138fec4) SHA1(f81331d1875ac574d3e6c98be218ff25c6c7be5a) ) \
+ ROM_SYSTEM_BIOS( 26, "bios26", "Aristocrat MK6 Base (01.03.17, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 26, "01.03.17_right.u83", 0x0000000, 0x0200000, CRC(1582714b) SHA1(92d0a15314ffe526159bef9a364898dd1ebdfde7) ) \
+ ROM_LOAD32_WORD_BIOS( 26, "01.03.17_left.u70", 0x0000002, 0x0200000, CRC(a88193dc) SHA1(c9e1d483edaecd318d2e5fc8a54e84516c93e0ca) ) \
+ ROM_SYSTEM_BIOS( 27, "bios27", "Aristocrat MK6 Base (01.04.14, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 27, "01.04.04_right.u83", 0x0000000, 0x0200000, CRC(e57ba02d) SHA1(8e29403e6b619eeab41dc171221720bc7820ccdc) ) \
+ ROM_LOAD32_WORD_BIOS( 27, "01.04.04_left.u70", 0x0000002, 0x0200000, CRC(b984a92c) SHA1(90f7a61302caee40195c08565bdac856a3234c1d) ) \
+ ROM_SYSTEM_BIOS( 28, "bios28", "Aristocrat MK6 Base (01.04.07, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 28, "01.04.07_right.u83", 0x0000000, 0x0200000, CRC(23c28e22) SHA1(98f24a1f86232b6c2c288a61ec7d60c867f192e5) ) \
+ ROM_LOAD32_WORD_BIOS( 28, "01.04.07_left.u70", 0x0000002, 0x0200000, CRC(acfb0fe0) SHA1(b1a772d7978e6ff4406a5bb39a71cb3f89608e72) ) \
+ ROM_SYSTEM_BIOS( 29, "bios29", "Aristocrat MK6 Base (01.04.08, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 29, "01.04.08_right.u83", 0x0000000, 0x0200000, CRC(95333304) SHA1(7afe49d6c5e4d6820f349778557daa88c5366a51) ) /* From Bob and Dolly, also u20 on EPROM expansion board */ \
+ ROM_LOAD32_WORD_BIOS( 29, "01.04.08_left.u70", 0x0000002, 0x0200000, CRC(0dfcad10) SHA1(53798be000304aed38909f5fd8470a68bedd8229) ) /* also u10 on EPROM expansion board */ \
+ ROM_SYSTEM_BIOS( 30, "bios30", "Aristocrat MK6 Base (01.04.10, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 30, "01.04.10_right.u83", 0x0000000, 0x0200000, CRC(82ce2fcc) SHA1(4c8fb3db084a67e99d1420b3f895a06ce9ef5ec2) ) \
+ ROM_LOAD32_WORD_BIOS( 30, "01.04.10_left.u70", 0x0000002, 0x0200000, CRC(9d9d52c1) SHA1(b957220cdbedd516c219d1bfc28807ce466df93f) ) \
+ ROM_SYSTEM_BIOS( 31, "bios31", "Aristocrat MK6 Base (01.04.11, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 31, "01.04.11_right.u83", 0x0000000, 0x0200000, CRC(2dae8ca0) SHA1(7a0fb38b4c1ac7195d15bdab6f0cfb16c78430f0) ) \
+ ROM_LOAD32_WORD_BIOS( 31, "01.04.11_left.u70", 0x0000002, 0x0200000, CRC(787f2b07) SHA1(2548289e44f4b935346b759afb5383bdbac04c3e) ) \
+ ROM_SYSTEM_BIOS( 32, "bios32", "Aristocrat MK6 Set Chips (06.02.04, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 32, "06.02.04_right.u2", 0x0000000, 0x0100000, CRC(1cf5a853) SHA1(64d17efcce702df7a0b0e151293199478e25226d) ) \
+ ROM_LOAD32_WORD_BIOS( 32, "06.02.04_left.u3", 0x0000002, 0x0100000, CRC(117b75f2) SHA1(2129286853d3c50b8a943b71334d4ef6b98adc05) ) \
+ ROM_SYSTEM_BIOS( 33, "bios33", "Aristocrat MK6 Set Chips (06.02.20, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 33, "06.02.20_right.u83", 0x0000000, 0x0100000, CRC(e4001f60) SHA1(5da34efb1ac0f7c84a48e09363d20cfecda4bcf1) ) \
+ ROM_LOAD32_WORD_BIOS( 33, "06.02.20_left.u70", 0x0000002, 0x0100000, CRC(199ed3b9) SHA1(e3ee81ffd713f09e35a10c38e4f59282e2c5cd30) ) \
+ ROM_SYSTEM_BIOS( 34, "bios34", "Aristocrat MK6 Set Chips (06.03.03, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 34, "06.03.03_right.u2", 0x0000000, 0x0100000, CRC(98763498) SHA1(246e95cc12eb34f946b2f4938c59217718f6d841) ) \
+ ROM_LOAD32_WORD_BIOS( 34, "06.03.03_left.u3", 0x0000002, 0x0100000, CRC(a6924238) SHA1(b71ab39bf9c1fdbab556028138749e8c040ec83c) ) \
+ ROM_SYSTEM_BIOS( 35, "bios35", "Aristocrat MK6 Set Chips (06.03.04, USA)" ) \
+ ROM_LOAD32_WORD_BIOS( 35, "06.03.04_right.u2", 0x0000000, 0x0100000, CRC(6f5f5ef1) SHA1(70a43fba4de47ed8dcf38b25eafd5873f3428e72) ) \
+ ROM_LOAD32_WORD_BIOS( 35, "06.03.04_left.u3", 0x0000002, 0x0100000, CRC(7034f26b) SHA1(7be78f23bec38d05240cdfe1186ec0c8291f5a1c) )
ROM_START( aristmk6 )
ARISTMK6_BIOS
@@ -828,14 +814,6 @@ ROM_START( bigbena )
ROM_LOAD32_WORD("20126911.u72", 0x0800002, 0x0400000, CRC(d59c8c69) SHA1(b37a3d3061e6209a93e0a5de4a59ea073eedbbb7) )
ROM_END
-ROM_START( bigbenq )
- ARISTMK6_BIOS
- ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
- ROM_LOAD32_WORD("20201111.u86", 0x0000000, 0x0400000, CRC(c27488bc) SHA1(b4d6e89b093fe850160baef067df9f261723c02e) )
- ROM_LOAD32_WORD("20201111.u73", 0x0000002, 0x0400000, CRC(d0429338) SHA1(c9e31a874603d7397b4720a3d88030671f0e8d27) )
- ROM_LOAD32_WORD("20201111.u85", 0x0800000, 0x0400000, CRC(8105b054) SHA1(b346ab044f311909803512e014a1af1bc8ada684) )
- ROM_LOAD32_WORD("20201111.u72", 0x0800002, 0x0400000, CRC(63f90aad) SHA1(2bbec33552cd3c134c4f66c49181a4b875d9daf0) )
-ROM_END
ROM_START( bigheart )
ARISTMK6_BIOS
@@ -1059,8 +1037,8 @@ ROM_END
/*
- Chance In Hell - Lil' Lucy
- The Lil' Lucy character was originally called Lucky Devil in Australia.
+ Chance In Hell - Li'l Lucy
+ The Li'l Lucy character was originally called Lucky Devil in Australia.
*/
ROM_START( cinhell )
ARISTMK6_BIOS
@@ -1101,18 +1079,7 @@ ROM_START( csdm )
ROM_LOAD32_WORD("20131511.u86", 0x0000000, 0x0400000, CRC(06f78c92) SHA1(e8bd3f18831dfb5c644321541fa9e75ae9e83688) )
ROM_LOAD32_WORD("20131511.u73", 0x0000002, 0x0400000, CRC(5b2468b6) SHA1(085aa44343f11fdf5ab7cc1ca56ddb0ba5cafc36) )
ROM_LOAD32_WORD("20131511.u85", 0x0800000, 0x0400000, CRC(6973dffd) SHA1(4350e0cdfeb9135e708f15bf2de325b8412c1434) )
- ROM_LOAD32_WORD("20131511.u72", 0x0800002, 0x0400000, CRC(1c9a77d1) SHA1(ef31215be73b09531039fda1a2f3e875045180f3) )
-ROM_END
-
-
-ROM_START( csdq )
- ARISTMK6_BIOS
-
- ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
- ROM_LOAD32_WORD("10121111.u86", 0x0000000, 0x0400000, CRC(cbcabeae) SHA1(ebc951037bfda441833beb5b0ca102dc76fcc901) )
- ROM_LOAD32_WORD("10121111.u73", 0x0000002, 0x0400000, CRC(4bb97e62) SHA1(8144b6ec8a69b12fd4e4641999a988ad6a9e5160) )
- ROM_LOAD32_WORD("10121111.u85", 0x0800000, 0x0400000, CRC(8425f9d0) SHA1(81a86caf20d2ee18f6a3e68da58e69ff00bbc68a) )
- ROM_LOAD32_WORD("10121111.u72", 0x0800002, 0x0400000, CRC(f11f4f9d) SHA1(684930290f8b5c933bb72a08db4875ce9b7483da) )
+ ROM_LOAD32_WORD("20131511.u72", 0x0800002, 0x0400000 ,CRC(1c9a77d1) SHA1(ef31215be73b09531039fda1a2f3e875045180f3) )
ROM_END
@@ -1277,16 +1244,6 @@ ROM_START( dbldolph )
ROM_END
-ROM_START( dbldolphq )
- ARISTMK6_BIOS
- ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
- ROM_LOAD32_WORD("40003211.u86", 0x0000000, 0x0400000, CRC(73fbb9df) SHA1(3f5e68f24d4d38f0b514acaac0672ca2a40f31f3) )
- ROM_LOAD32_WORD("40003211.u73", 0x0000002, 0x0400000, CRC(e69e12f2) SHA1(176af1d3177da18468673a9a52672c97a278c75a) )
- ROM_LOAD32_WORD("40003211.u85", 0x0800000, 0x0400000, CRC(7df3105d) SHA1(df287fd3f42aff0a0b3bbab5a40723de6170d488) )
- ROM_LOAD32_WORD("40003211.u72", 0x0800002, 0x0400000, CRC(7c366f7f) SHA1(9816f8ef8ae7f1d3083a5094ce27e17df478dc3a) )
-ROM_END
-
-
ROM_START( drgnlord )
ARISTMK6_BIOS
ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
@@ -1557,14 +1514,6 @@ ROM_START( gldgong )
ROM_END
-ROM_START( gldgongq )
- ARISTMK6_BIOS
- ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
- ROM_LOAD32_WORD("10217411.u86", 0x0000000, 0x0400000, CRC(e2d0c057) SHA1(9311faeb430eaae41b6c42711cf87e3824a88933) )
- ROM_LOAD32_WORD("10217411.u73", 0x0000002, 0x0400000, CRC(4be87efb) SHA1(6775853e14f771f784ac05d1a63534cd1aedca21) )
-ROM_END
-
-
ROM_START( goldinc )
ARISTMK6_BIOS
ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
@@ -1982,18 +1931,6 @@ ROM_START( magmerm )
ROM_END
-ROM_START( magician )
- ARISTMK6_BIOS
- ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
- ROM_LOAD32_WORD("20210111.u86", 0x0000000, 0x0400000, CRC(d5763bfa) SHA1(c8363f855bc1962588e35acf11c847e1c3c1775b) )
- ROM_LOAD32_WORD("20210111.u73", 0x0000002, 0x0400000, CRC(6198b73e) SHA1(1459212376c25df9f3120dc4e3567dfd30b8dd96) )
- ROM_LOAD32_WORD("20210111.u85", 0x0800000, 0x0400000, CRC(ae216d29) SHA1(d40ee5d9a6f96d7cc6b38ccbe1dc9b2f543a35f3) )
- ROM_LOAD32_WORD("20210111.u72", 0x0800002, 0x0400000, CRC(7fb305d3) SHA1(c79bae5a62bb3aa9090fd6cac91d35a950300146) )
- ROM_LOAD32_WORD("20210111.u84", 0x1000000, 0x0400000, CRC(dbb4f1ee) SHA1(f4064ba792a5705209b3221ceb2f3d828c73df1c) )
- ROM_LOAD32_WORD("20210111.u71", 0x1000002, 0x0400000, CRC(67a0906d) SHA1(3f0f8f17dfcc5d1fe38e0737cd623594076bbd2d) )
-ROM_END
-
-
ROM_START( metestrm )
ARISTMK6_BIOS
ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
@@ -2036,16 +1973,6 @@ ROM_START( mnytree )
ROM_END
-ROM_START( moonfire )
- ARISTMK6_BIOS
- ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
- ROM_LOAD32_WORD("30164211.u86", 0x0000000, 0x0400000, CRC(9d60754d) SHA1(ab62e0f92191821b8e76dbaf3bd37303cb94187e) )
- ROM_LOAD32_WORD("30164211.u73", 0x0000002, 0x0400000, CRC(56a5ea19) SHA1(2f89527fe3dfdcab088cd3a7ab51a26816fe14dc) )
- ROM_LOAD32_WORD("30164211.u85", 0x0800000, 0x0400000, CRC(01d1f670) SHA1(efca261e4810f683084baa1cac03304cdd233ef9) )
- ROM_LOAD32_WORD("30164211.u72", 0x0800002, 0x0400000, CRC(21ebecc5) SHA1(dfd69f1ebea56b5cf49d67a437c7016410ea65c4) )
-ROM_END
-
-
ROM_START( moonwalt )
ARISTMK6_BIOS
ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
@@ -2494,16 +2421,6 @@ ROM_START( qnilea6 )
ROM_END
-ROM_START( qnilemt2 )
- ARISTMK6_BIOS
- ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
- ROM_LOAD32_WORD("10203811.u86", 0x0000000, 0x0400000, CRC(8822085a) SHA1(1cf43815eeab91cb3df18f4b64c6815b449184e3) )
- ROM_LOAD32_WORD("10203811.u73", 0x0000002, 0x0400000, CRC(01bfd58d) SHA1(8ba07b37624469bf802118a7778bb1d52b3649b8) )
- ROM_LOAD32_WORD("10203811.u85", 0x0800000, 0x0400000, CRC(364f2565) SHA1(f6c24c7f59f356c63c8ceda82243a5d99f4f81d8) )
- ROM_LOAD32_WORD("10203811.u72", 0x0800002, 0x0400000, CRC(af15bb42) SHA1(a5f8a7dd037fd6402db983b5cabaa156599ba9f2) )
-ROM_END
-
-
ROM_START( qnilese )
ARISTMK6_BIOS
ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
@@ -2570,26 +2487,6 @@ ROM_START( redbara6 )
ROM_END
-ROM_START( redbarfl )
- ARISTMK6_BIOS
- ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
- ROM_LOAD32_WORD("10160711.u86", 0x0000000, 0x0400000, CRC(6deec801) SHA1(7a3a7ee88d116cc3f78ca77b66247c0271130682) )
- ROM_LOAD32_WORD("10160711.u73", 0x0000002, 0x0400000, CRC(8467e3a6) SHA1(4abef9510a3d71166fa0ece928f936171de784b3) )
- ROM_LOAD32_WORD("10160711.u85", 0x0800000, 0x0400000, CRC(5d77ca06) SHA1(22c6cccf6f0ddb9ee95691180299c55b0b8b5747) )
- ROM_LOAD32_WORD("10160711.u72", 0x0800002, 0x0400000, CRC(91993744) SHA1(e8ac54b233eb47c525225318a07f2e58246c5131) )
-ROM_END
-
-
-ROM_START( reelrkfl )
- ARISTMK6_BIOS
- ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
- ROM_LOAD32_WORD("10298611.u86", 0x0000000, 0x0400000, CRC(efb8f415) SHA1(b779fda43bb63d947f3ddad84cf324d530d20728) )
- ROM_LOAD32_WORD("10298611.u73", 0x0000002, 0x0400000, CRC(2eee9ff5) SHA1(0fb78b79df4efb71d1da850b11ca11c92fb47858) )
- ROM_LOAD32_WORD("10298611.u85", 0x0800000, 0x0400000, CRC(1f1c2b5b) SHA1(c2617a8d518f58cb622f3d9859a0f7d1766d359a) )
- ROM_LOAD32_WORD("10298611.u72", 0x0800002, 0x0400000, CRC(e58d6bc4) SHA1(d6cfb78c570f50f65c27c01f804720e499d623b3) )
-ROM_END
-
-
ROM_START( retsama6 )
ARISTMK6_BIOS
ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
@@ -2724,16 +2621,6 @@ ROM_START( smtma6 )
ROM_END
-ROM_START( smtma6q )
- ARISTMK6_BIOS
- ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
- ROM_LOAD32_WORD("10015711.u86", 0x0000000, 0x0400000, CRC(f15a79e5) SHA1(82ef7f28460623bbafa704c9e26e914d4be1cb7f) )
- ROM_LOAD32_WORD("10015711.u73", 0x0000002, 0x0400000, CRC(906cbb69) SHA1(21775cc58425e828d6d77e11d07167acb6867f82) )
- ROM_LOAD32_WORD("10015711.u85", 0x0800000, 0x0400000, CRC(722ea31f) SHA1(6ace379272ca207449a4b03df480929eb1636593) )
- ROM_LOAD32_WORD("10015711.u72", 0x0800002, 0x0400000, CRC(b208c54e) SHA1(ad833271972f58bb866ca63f68d8f5dd67b275b2) )
-ROM_END
-
-
ROM_START( silkrda6 )
ARISTMK6_BIOS
ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
@@ -2784,18 +2671,6 @@ ROM_START( spgcarnq )
ROM_END
-ROM_START( spgfest )
- ARISTMK6_BIOS
- ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
- ROM_LOAD32_WORD("20262311.u86", 0x0000000, 0x0400000, CRC(fba59959) SHA1(28fd5f54a627ba097d1841fff17b3be5b4e08619) )
- ROM_LOAD32_WORD("20262311.u73", 0x0000002, 0x0400000, CRC(ea2b0902) SHA1(d4ff35750c473b7816e9bd8db3ab88f235a96041) )
- ROM_LOAD32_WORD("20262311.u85", 0x0800000, 0x0400000, CRC(692260eb) SHA1(410b038ab2254d207608033986f9ce90866f0c71) )
- ROM_LOAD32_WORD("20262311.u72", 0x0800002, 0x0400000, CRC(1d645199) SHA1(31f51022c7533b52b7933fc3baec374b1df4f35c) )
- ROM_LOAD32_WORD("20262311.u84", 0x1000000, 0x0400000, CRC(b7c8700e) SHA1(72123d279931b758d08b5760c5f4c38e77611790) )
- ROM_LOAD32_WORD("20262311.u71", 0x1000002, 0x0400000, CRC(3c2baee2) SHA1(fc03ca7e96d0e877a4f8a8f267f874c374e018d8) )
-ROM_END
-
-
ROM_START( stardrft )
ARISTMK6_BIOS
ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
@@ -3131,17 +3006,6 @@ ROM_START( wheregldm )
ROM_END
-ROM_START( wheregldq )
- ARISTMK6_BIOS
-
- ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
- ROM_LOAD32_WORD("20184811.u86", 0x0000000, 0x0400000, CRC(95da579c) SHA1(230a18b76e72f09ea74543bd6a7a31ae51bf651e) )
- ROM_LOAD32_WORD("20184811.u73", 0x0000002, 0x0400000, CRC(c35095ec) SHA1(637c5cfbb985716140a0e123c23ba13bffc2e734) )
- ROM_LOAD32_WORD("20184811.u85", 0x0800000, 0x0400000, CRC(1520539c) SHA1(9f3503bfcadc74f9e12ea7300b3356e9efb00b5a) )
- ROM_LOAD32_WORD("20184811.u72", 0x0800002, 0x0400000, CRC(50ed1445) SHA1(6b623965b95352d7f79700a075eaf4eb2019dee8) )
-ROM_END
-
-
ROM_START( whtwater )
ARISTMK6_BIOS
ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF)
@@ -3357,7 +3221,6 @@ GAME( 2008, beavbuk, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init
GAME( 2003, betzoo, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Betting Zoo - Mr. Cashman (0251064, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US037, B - 01/28/03
GAME( 2003, bigben, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Big Ben (30126911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 710, B - 17/07/03
GAME( 2003, bigbena, bigben, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Big Ben (20126911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 710, B - 17/07/03
-GAME( 2005, bigbenq, bigben, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Big Ben (20201111, Queensland)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 710/3, C - 09/08/05
GAME( 1999, bigheart, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Big Hearted (10000511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 637, D - 15/11/99
GAME( 2002, bigred, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Big Red (2J009211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB015, D - 27/09/02
GAME( 2002, bigreda, bigred, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Big Red (1J009211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB015, D - 27/09/02
@@ -3368,7 +3231,7 @@ GAME( 2007, bluetigr, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init
GAME( 2007, bobdolly, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Bob and Dolly (0352298, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US243, A - 10/15/07
GAME( 2005, brazil, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Brazil (20180311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 783, B - 25/02/05
GAME( 2004, bucaneer, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Buccaneer (10173011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 765, A - 05/04/04
-GAME( 2005, bucaneeru, bucaneer, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Buccaneer (0252523, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4229, B - 01/07/05
+GAME( 2005, bucaneeru, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Buccaneer (0252523, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4229, B - 01/07/05
GAME( 2010, buckstop, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "The Buck Stops Here (10294311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 897/1, A - 22/07/10
GAME( 2006, buffalo, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Buffalo (10217811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 806, E - 06/10/06
GAME( 2006, buffalou, buffalo, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Buffalo (0252636, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4328, (no data)
@@ -3379,11 +3242,10 @@ GAME( 2007, callwld, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init
GAME( 2005, calyking, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Calypso King (20197111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 772/1, B - 25/07/05
GAME( 2006, canaryrc, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Canary Riches (10218211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 809, A - 30/03/06
GAME( 2005, cmtonig, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Cashman Tonight (30194711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG0007, B - 25/05/05
-GAME( 2004, cinhell, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Chance in Hell - Lil' Lucy (0251125, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US119, A - 06/30/04
+GAME( 2004, cinhell, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Chance in Hell - Li'l Lucy (0251125, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US119, A - 06/30/04
GAME( 2002, csd, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Choy Sun Doa (10104011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 688, A - 23/04/02
GAME( 2002, csdsp, csd, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Choy Sun Doa (20104011, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 688, A - 23/04/02
GAME( 2003, csdm, csd, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Choy Sun Doa (20131511, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 688, A - 23/01/03
-GAME( 2002, csdq, csd, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Choy Sun Doa (10121111, Queensland)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 688, C - 05/07/02
GAME( 2003, csdce, csd, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Choy Sun Doa - Cash Express (30149511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 688, A - 03/02/03
GAME( 2006, csret, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Choy Sun Returns (20212211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 744/2, B - 15/08/06
GAME( 2005, corrida, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Corrida de Toros (30178311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 771, D - 22/03/05
@@ -3400,7 +3262,6 @@ GAME( 2002, di4ever, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init
GAME( 2003, dinosa6, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Dinosaur (10118811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 731, C - 08/08/03
GAME( 2005, dblagent, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Double Agent (0152082, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US180, A - 12/09/05
GAME( 2000, dbldolph, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Double Dolphins (20000211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 647, C - 18/04/00
-GAME( 2000, dbldolphq, dbldolph, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Double Dolphins (40003211, Queensland)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 647, F - 17/11/00
GAME( 2004, drgnlord, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Dragon Lord (10173511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 761, A - 22/06/04
GAME( 2006, drgnmgic, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Dragon Magic (2J015711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB051, E - 05/07/06
GAME( 2003, drmcatch, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Dream Catcher (10126721, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 704, F - 23/06/03
@@ -3428,7 +3289,6 @@ GAME( 2001, gogreen, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init
GAME( 2005, goldarch, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Golden Archer (10197411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 770, A - 07/07/05
GAME( 2003, gldnflc, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "The Golden Fleece (10158311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 680/2, A-07/07/03
GAME( 2005, gldgong, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "The Golden Gong (0152558, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4258, C - 08/18/05
-GAME( 2005, gldgongq, gldgong, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "The Golden Gong (10217411, Queensland)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 710/3, C - 09/08/05, Identical date string to Big Ben above (the games are identical but with different graphics)
GAME( 2004, goldinc, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Golden Incas (10174011, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 752, A - 07/04/04
GAME( 2005, goldincu, goldinc, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Golden Incas (0252533, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4244, A - 03/10/05
GAME( 2002, goldpym, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Golden Pyramids Special Edition - Maximillions (10130811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683/1, A - 21/10/02
@@ -3457,7 +3317,7 @@ GAME( 2005, kingnep, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init
GAME( 2003, kingnile, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "King of the Nile (30106331, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 687, D - 07/01/03
GAME( 2002, kingnilea, kingnile, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "King of the Nile (20106321, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 687, C - 27/09/02
GAME( 2002, kingpeng, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "King Penguin (20109021, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 696, D - 02/10/02
-GAME( 2002, kingpengsp, kingpeng, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "King Penguin (40109021, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 696, E- 26/11/02
+GAME( 2002, kingpengsp, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "King Penguin (40109021, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 696, E- 26/11/02
GAME( 2000, koalama6, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Koala Mint (30001011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 643/6, A- 01/09/00
GAME( 2003, kohinoor, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Kohinoor (10136711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 602/21, B - 10/02/03
GAME( 2006, lgfish, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Let's Go Fish'n (10220111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 756, E - 23/05/06
@@ -3470,12 +3330,10 @@ GAME( 2007, lucky88, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init
GAME( 2007, luigibal, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Luigi's Ball (10235411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 822, D - 19/03/07
GAME( 2005, magforst, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Magic Forest (0151139, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US141, D - 02/01/05
GAME( 2003, magmerm, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Magic Mermaid (0251331, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB013/20, F - 10/13/03
-GAME( 2006, magician, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "The Magician (20210111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 801, C - 01/03/06
GAME( 2007, metestrm, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Meteor Storm (0152162, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US217, A - 03/19/07
GAME( 2007, milkin, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Milkin' It (10251911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 816, B - 13/08/07
GAME( 2005, mskitty, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Miss Kitty (10216611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 778, C - 18/04/05
GAME( 2000, mnytree, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Money Tree (10001211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 657, E - 06/11/00
-GAME( 2004, moonfire, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Moon Fire - Jackpot Carnival (30164211, Queensland)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/3, E - 27/01/04
GAME( 2007, moonwalt, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Moonlight Waltz (10227611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 814/1, B - 11/01/07
GAME( 2008, mchilli, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "More Chilli (20248711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 844, B - 21/01/08
GAME( 2010, mchilliq, mchilli, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "More Chilli (20289311, Queensland)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 844/2, B - 14/12/10
@@ -3515,17 +3373,13 @@ GAME( 2002, pompeia6ua, pompeia6, aristmk6, aristmk6, aristmk6_state, empty_init
GAME( 2005, prideaf, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Pride of Africa (10208511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/9, J - 06/12/05
GAME( 2004, prophecy, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Prophecy (20173411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 734, B - 10/08/04
GAME( 2005, qnilea6, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Queen of the Nile (3J011111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB027, C - 16/02/05
-GAME( 2005, qnilemt2, qnilea6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Queen of the Nile - Money Train II (10203811, Queensland)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 602/23, E - 17/11/05
GAME( 2001, qnilese, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Queen of the Nile Special Edition (20102811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683, A - 06/12/01
-GAME( 2001, qnilesea, qnilese, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Queen of the Nile Special Edition (10102811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683, A - 06/12/01
+GAME( 2001, qnilesea, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Queen of the Nile Special Edition (10102811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683, A - 06/12/01
GAME( 2002, qnilejc, qnilese, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Queen of the Nile Special Edition - Jackpot Carnival (20123911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683/1, A - 21/10/02
GAME( 2002, qnilejcsp, qnilese, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Queen of the Nile Special Edition - Jackpot Carnival (20123911, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683/1, A - 21/10/02
GAME( 2003, qsheba, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Queen of Sheba (10133711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 687, F - 04/03/03
GAME( 2005, raprichs, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Rapid Riches (10194211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 762, D - 09/03/05
GAME( 2002, redbara6, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Red Baron (10119911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 709, B - 21/11/02
-GAME( 2003, redbarfl, redbara6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Red Baron - Fast Lane (10160711, Queensland)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 709, E - 04/12/03
-// The following is clearly not a year 2000 game (an ID of #2986 would be from around 2010, note similar ID number region to buckstop/werewildq), the date string is most likely unchanged from the original MK5 20 line version which actually was released in 2000.
-GAME( 201?, reelrkfl, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Reelin-n-Rockin - Fast Lane (10298611, Queensland)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/2, E - 20/12/00
GAME( 2002, retsama6, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Return of the Samurai (10117211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/10, A - 26/08/02
GAME( 2005, roadtrip, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Road Trip (0152539, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4238, C - 08/18/05
GAME( 2002, ruprup, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Roll Up! Roll Up!! (10115911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 642/5, A - 22/08/02
@@ -3539,13 +3393,11 @@ GAME( 2006, shamnmg, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init
GAME( 200?, shamnmgu, shamnmg, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Shaman's Magic (0152647, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4318/1, (no data)
GAME( 2004, shorthng, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Shore Thing (0251088, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US087, B - 1/30/04
GAME( 2001, smtma6, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Show Me The Money (10001911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 657/1, B - 08/01/01
-GAME( 2001, smtma6q, smtma6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Show Me The Money (10015711, Queensland)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 657/1, D - 31/05/01
GAME( 2006, silkrda6, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Silk Road (0152537, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4248/4, D - 02/09/06
GAME( 2002, silgola6, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Silver & Gold (20100721, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 672/1, G - 08/07/02
GAME( 2008, skydnca6, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Sky Dancer (10272711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB091/2, A - 28/08/08
GAME( 1999, spgcarn, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Spring Carnival (10000311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 642, C - 15/11/99
GAME( 2001, spgcarnq, spgcarn, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Spring Carnival (10008011, Queensland)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 642, E - 27/02/01
-GAME( 2008, spgfest, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Spring Festival (20262311, Queensland)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB040, C - 03/06/08
GAME( 2003, stardrft, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Star Drifter (20150811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 717/2, A - 15/09/03
GAME( 2004, stardrftu, stardrft, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Star Drifter (0451341, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4204/1, A - 02/16/04
GAME( 2001, starqst, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Star Quest (10009511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 659/2, B - 29/10/01
@@ -3579,8 +3431,7 @@ GAME( 2003, whalecshu, whalecsh, aristmk6, aristmk6, aristmk6_state, empty_init
GAME( 2005, whalecshua, whalecsh, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Whales of Cash (0451346, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4214, B - 01/14/05
GAME( 2004, wheregld, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Where's The Gold (10124811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 756, B - 26/02/04
GAME( 2004, wheregldsp, wheregld, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Where's The Gold (10124811, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 756, B - 26/02/04
-GAME( 2004, wheregldm, wheregld, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Where's The Gold (20177111, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 756, C - 17/06/04
-GAME( 2005, wheregldq, wheregld, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Where's The Gold (20184811, Queensland)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 756, D - 21/06/05
+GAME( 2004, wheregldm, wheregld, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Where's the Gold (20177111, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 756, C - 17/06/04
GAME( 2003, whtwater, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "White Water (0151075, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US054, A - 4/11/03
GAME( 2006, wikwin2, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Wicked Winnings II - Power Pay (10214011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 796, A - 28/02/06
GAME( 2002, wldafr, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Wild Africa - Millioniser (0351083, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4076, D - 5/08/02
@@ -3588,7 +3439,7 @@ GAME( 2006, wldcata6, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init
GAME( 2003, wldgoos, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Wild Goose (20131911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 732, B - 02/06/03
GAME( 2009, wgorilla, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Wild Gorilla - Power Pay (20279811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB108/2, B - 19/06/09
GAME( 2006, wldpanda, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Wild Panda (20218411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 800, E - 07/08/06
-GAME( 2004, wldpanth, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Wild Panthers - Lil' Lucy (0651310, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4187, D- 01/15/04
+GAME( 2004, wldpanth, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Wild Panthers - Li'l Lucy (0651310, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4187, D- 01/15/04
GAME( 2006, wldstall, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Wild Stallion (10230811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 805, B - 12/09/06
GAME( 2007, wtepee, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Wild Tepee - Power Pay (10230211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 820, H - 20/04/07
GAME( 2006, wwaratah, aristmk6, aristmk6, aristmk6, aristmk6_state, empty_init, ROT0, "Aristocrat", "Wild Waratah (10215911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 811, A - 14/02/06
diff --git a/src/mame/drivers/arkanoid.cpp b/src/mame/drivers/arkanoid.cpp
index d2ef042afe2..f66b40b9867 100644
--- a/src/mame/drivers/arkanoid.cpp
+++ b/src/mame/drivers/arkanoid.cpp
@@ -1344,31 +1344,31 @@ Pixel clock: 3 MHz = 192 HTotal, assuming it's 6 MHz
#define ARKANOID_VBEND 16
#define ARKANOID_VBSTART 240
-void arkanoid_state::arkanoid(machine_config &config)
-{
+MACHINE_CONFIG_START(arkanoid_state::arkanoid)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &arkanoid_state::arkanoid_map);
- m_maincpu->set_vblank_int("screen", FUNC(arkanoid_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(arkanoid_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", arkanoid_state, irq0_line_hold)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 128); // 74LS393 at ic21, counts 128 vblanks before firing watchdog; z80 /RESET ls08 ic19 pin 9 input comes from ls04 ic20 pin 8, ls04 ic20 pin 9 input comes from ic21 ls393 pin 8, and ls393 is set to chain both 4 bit counters together
ARKANOID_68705P5(config, m_mcuintf, 12_MHz_XTAL / 4); // verified on PCB
m_mcuintf->portb_r_cb().set_ioport("MUX");
- config.m_minimum_quantum = attotime::from_hz(6000); // 100 CPU slices per second to synchronize between the MCU and the main CPU
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) // 100 CPU slices per second to synchronize between the MCU and the main CPU
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
-// screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
-// screen.set_size(32*8, 32*8);
-// screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_raw(ARKANOID_PIXEL_CLOCK,ARKANOID_HTOTAL,ARKANOID_HBEND,ARKANOID_HBSTART,ARKANOID_VTOTAL,ARKANOID_VBEND,ARKANOID_VBSTART);
- screen.set_screen_update(FUNC(arkanoid_state::screen_update_arkanoid));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_arkanoid);
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+// MCFG_SCREEN_SIZE(32*8, 32*8)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_RAW_PARAMS(ARKANOID_PIXEL_CLOCK,ARKANOID_HTOTAL,ARKANOID_HBEND,ARKANOID_HBSTART,ARKANOID_VTOTAL,ARKANOID_VBEND,ARKANOID_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(arkanoid_state, screen_update_arkanoid)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_arkanoid)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 512);
/* sound hardware */
@@ -1379,7 +1379,7 @@ void arkanoid_state::arkanoid(machine_config &config)
aysnd.port_a_read_callback().set_ioport("UNUSED");
aysnd.port_b_read_callback().set_ioport("DSW");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.66);
-}
+MACHINE_CONFIG_END
void arkanoid_state::p3mcu(machine_config &config)
{
@@ -1401,15 +1401,15 @@ void arkanoid_state::p3mcuay(machine_config &config)
aysnd.add_route(ALL_OUTPUTS, "mono", 0.66);
}
-void arkanoid_state::bootleg(machine_config &config)
-{
+MACHINE_CONFIG_START(arkanoid_state::bootleg)
arkanoid(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &arkanoid_state::bootleg_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(bootleg_map)
- config.device_remove("mcu");
-}
+ MCFG_DEVICE_REMOVE("mcu")
+MACHINE_CONFIG_END
void arkanoid_state::aysnd(machine_config &config)
{
@@ -1423,26 +1423,26 @@ void arkanoid_state::aysnd(machine_config &config)
}
-void arkanoid_state::hexa(machine_config &config)
-{
+MACHINE_CONFIG_START(arkanoid_state::hexa)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/2); /* Imported from arkanoid - correct? */
- m_maincpu->set_addrmap(AS_PROGRAM, &arkanoid_state::hexa_map);
- m_maincpu->set_vblank_int("screen", FUNC(arkanoid_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* Imported from arkanoid - correct? */
+ MCFG_DEVICE_PROGRAM_MAP(hexa_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", arkanoid_state, irq0_line_hold)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
-// screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
-// screen.set_size(32*8, 32*8);
-// screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_raw(ARKANOID_PIXEL_CLOCK,ARKANOID_HTOTAL,ARKANOID_HBEND,ARKANOID_HBSTART,ARKANOID_VTOTAL,ARKANOID_VBEND,ARKANOID_VBSTART);
- screen.set_screen_update(FUNC(arkanoid_state::screen_update_hexa));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_hexa);
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+// MCFG_SCREEN_SIZE(32*8, 32*8)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_RAW_PARAMS(ARKANOID_PIXEL_CLOCK,ARKANOID_HTOTAL,ARKANOID_HBEND,ARKANOID_HBSTART,ARKANOID_VTOTAL,ARKANOID_VBEND,ARKANOID_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(arkanoid_state, screen_update_hexa)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_hexa)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
/* sound hardware */
@@ -1451,41 +1451,41 @@ void arkanoid_state::hexa(machine_config &config)
aysnd.port_a_read_callback().set_ioport("INPUTS");
aysnd.port_b_read_callback().set_ioport("DSW");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
-void arkanoid_state::hexaa(machine_config &config)
-{
+MACHINE_CONFIG_START(arkanoid_state::hexaa)
hexa(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &arkanoid_state::hexaa_map);
- m_maincpu->set_vblank_int("screen", FUNC(arkanoid_state::irq0_line_hold));
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hexaa_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", arkanoid_state, irq0_line_hold)
- z80_device &subcpu(Z80(config, "subcpu", XTAL(12'000'000)/2)); // ?
- subcpu.set_addrmap(AS_PROGRAM, &arkanoid_state::hexaa_sub_map);
- subcpu.set_addrmap(AS_IO, &arkanoid_state::hexaa_sub_iomap);
-}
+ MCFG_DEVICE_ADD("subcpu", Z80, XTAL(12'000'000)/2) // ?
+ MCFG_DEVICE_PROGRAM_MAP(hexaa_sub_map)
+ MCFG_DEVICE_IO_MAP(hexaa_sub_iomap)
+MACHINE_CONFIG_END
-void arkanoid_state::brixian(machine_config &config)
-{
+MACHINE_CONFIG_START(arkanoid_state::brixian)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &arkanoid_state::brixian_map);
- m_maincpu->set_vblank_int("screen", FUNC(arkanoid_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(brixian_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", arkanoid_state, irq0_line_hold)
/* there is a 68705 but it's only role appears to be to copy data to RAM at startup */
/* the RAM is also battery backed, making the 68705 almost redundant as long as the battery doesn't die(!) */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
-// screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
-// screen.set_size(32*8, 32*8);
-// screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_raw(ARKANOID_PIXEL_CLOCK,ARKANOID_HTOTAL,ARKANOID_HBEND,ARKANOID_HBSTART,ARKANOID_VTOTAL,ARKANOID_VBEND,ARKANOID_VBSTART);
- screen.set_screen_update(FUNC(arkanoid_state::screen_update_hexa));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_arkanoid);
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+// MCFG_SCREEN_SIZE(32*8, 32*8)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_RAW_PARAMS(ARKANOID_PIXEL_CLOCK,ARKANOID_HTOTAL,ARKANOID_HBEND,ARKANOID_HBSTART,ARKANOID_VTOTAL,ARKANOID_VBEND,ARKANOID_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(arkanoid_state, screen_update_hexa)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_arkanoid)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 512);
/* sound hardware */
@@ -1494,7 +1494,7 @@ void arkanoid_state::brixian(machine_config &config)
aysnd.port_a_read_callback().set_ioport("INPUTS");
aysnd.port_b_read_callback().set_ioport("DSW");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/armedf.cpp b/src/mame/drivers/armedf.cpp
index 240f6224d7b..17b1766d8ed 100644
--- a/src/mame/drivers/armedf.cpp
+++ b/src/mame/drivers/armedf.cpp
@@ -1251,46 +1251,46 @@ void armedf_state::machine_reset()
}
-void armedf_state::terraf_sound(machine_config &config)
-{
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(24'000'000)/6)); // 4mhz
- audiocpu.set_addrmap(AS_PROGRAM, &armedf_state::sound_map);
- audiocpu.set_addrmap(AS_IO, &armedf_state::sound_portmap);
- audiocpu.set_periodic_int(FUNC(armedf_state::irq0_line_hold), attotime::from_hz(XTAL(8'000'000)/2/512)); // ?
+MACHINE_CONFIG_START(armedf_state::terraf_sound)
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(24'000'000)/6) // 4mhz
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(armedf_state, irq0_line_hold, XTAL(8'000'000)/2/512) // ?
SPEAKER(config, "speaker").front_center();
GENERIC_LATCH_8(config, m_soundlatch);
- YM3812(config, "ymsnd", XTAL(24'000'000)/6).add_route(ALL_OUTPUTS, "speaker", 0.5); // 4mhz
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(24'000'000)/6) // 4mhz
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
- DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, "speaker", 0.8); // 10-pin SIP with 74HC374P latch
- DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.8); // 10-pin SIP with 74HC374P latch
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT).add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT).add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.8) // 10-pin SIP with 74HC374P latch
+ MCFG_DEVICE_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.8) // 10-pin SIP with 74HC374P latch
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(armedf_state::terraf)
-void armedf_state::terraf(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000)/2); // 8mhz?
- m_maincpu->set_addrmap(AS_PROGRAM, &armedf_state::terraf_map);
- m_maincpu->set_vblank_int("screen", FUNC(armedf_state::irq1_line_assert));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)/2) // 8mhz?
+ MCFG_DEVICE_PROGRAM_MAP(terraf_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", armedf_state, irq1_line_assert)
- NB1414M4(config, m_nb1414m4, 0);
+ MCFG_DEVICE_ADD("nb1414m4", NB1414M4, 0)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(12*8, (64-12)*8-1, 1*8, 31*8-1 );
- screen.set_palette(m_palette);
- screen.set_screen_update(FUNC(armedf_state::screen_update_armedf));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
+ MCFG_SCREEN_PALETTE(m_palette)
MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf)
+ MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_armedf);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048);
@@ -1299,35 +1299,35 @@ void armedf_state::terraf(machine_config &config)
/* sound hardware */
terraf_sound(config);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(armedf_state::terrafjb)
-void armedf_state::terrafjb(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000)/2); // 8mhz
- m_maincpu->set_addrmap(AS_PROGRAM, &armedf_state::terraf_map);
- m_maincpu->set_vblank_int("screen", FUNC(armedf_state::irq1_line_assert));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)/2) // 8mhz
+ MCFG_DEVICE_PROGRAM_MAP(terraf_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", armedf_state, irq1_line_assert)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(24'000'000)/6)); // 4mhz
- audiocpu.set_addrmap(AS_PROGRAM, &armedf_state::sound_map);
- audiocpu.set_addrmap(AS_IO, &armedf_state::sound_portmap);
- audiocpu.set_periodic_int(FUNC(armedf_state::irq0_line_hold), attotime::from_hz(XTAL(8'000'000)/2/512)); // ?
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(24'000'000)/6) // 4mhz
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(armedf_state, irq0_line_hold, XTAL(8'000'000)/2/512) // ?
- Z80(config, m_extra, XTAL(16'000'000)/4); // 4mhz?
- m_extra->set_addrmap(AS_PROGRAM, &armedf_state::terrafjb_extraz80_map);
- m_extra->set_addrmap(AS_IO, &armedf_state::terrafjb_extraz80_portmap);
+ MCFG_DEVICE_ADD("extra", Z80, XTAL(16'000'000)/4) // 4mhz?
+ MCFG_DEVICE_PROGRAM_MAP(terrafjb_extraz80_map)
+ MCFG_DEVICE_IO_MAP(terrafjb_extraz80_portmap)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(12*8, (64-12)*8-1, 1*8, 31*8-1 );
- screen.set_palette(m_palette);
- screen.set_screen_update(FUNC(armedf_state::screen_update_armedf));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
+ MCFG_SCREEN_PALETTE(m_palette)
MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf)
+ MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_armedf);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048);
@@ -1339,41 +1339,41 @@ void armedf_state::terrafjb(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- YM3812(config, "ymsnd", XTAL(24'000'000)/6).add_route(ALL_OUTPUTS, "speaker", 0.5); // 4mhz
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(24'000'000)/6) // 4mhz
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
- DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, "speaker", 0.8); // unknown DAC
- DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.8); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT).add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT).add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.8) // unknown DAC
+ MCFG_DEVICE_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.8) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void armedf_state::terrafb(machine_config &config)
-{
+MACHINE_CONFIG_START(armedf_state::terrafb)
terraf(config);
- config.device_remove("nb1414m4");
-}
+ MCFG_DEVICE_REMOVE("nb1414m4")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(armedf_state::kozure)
-void armedf_state::kozure(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000)/2); // 8mhz
- m_maincpu->set_addrmap(AS_PROGRAM, &armedf_state::kozure_map);
- m_maincpu->set_vblank_int("screen", FUNC(armedf_state::irq1_line_assert));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)/2) // 8mhz
+ MCFG_DEVICE_PROGRAM_MAP(kozure_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", armedf_state, irq1_line_assert)
- NB1414M4(config, m_nb1414m4, 0);
+ MCFG_DEVICE_ADD("nb1414m4", NB1414M4, 0)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(12*8, (64-12)*8-1, 1*8, 31*8-1 ); // 320 x 240, trusted
- screen.set_palette(m_palette);
- screen.set_screen_update(FUNC(armedf_state::screen_update_armedf));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 ) // 320 x 240, trusted
+ MCFG_SCREEN_PALETTE(m_palette)
MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf)
+ MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_armedf);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048);
@@ -1382,31 +1382,31 @@ void armedf_state::kozure(machine_config &config)
/* sound hardware */
terraf_sound(config);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(armedf_state::armedf)
-void armedf_state::armedf(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000)/2); // 8mhz
- m_maincpu->set_addrmap(AS_PROGRAM, &armedf_state::armedf_map);
- m_maincpu->set_vblank_int("screen", FUNC(armedf_state::irq1_line_assert));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)/2) // 8mhz
+ MCFG_DEVICE_PROGRAM_MAP(armedf_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", armedf_state, irq1_line_assert)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(24'000'000)/6)); // 4mhz
- audiocpu.set_addrmap(AS_PROGRAM, &armedf_state::sound_map);
- audiocpu.set_addrmap(AS_IO, &armedf_state::sound_portmap);
- audiocpu.set_periodic_int(FUNC(armedf_state::irq0_line_hold), attotime::from_hz(XTAL(8'000'000)/2/512)); // ?
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(24'000'000)/6) // 4mhz
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(armedf_state, irq0_line_hold, XTAL(8'000'000)/2/512) // ?
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(12*8, (64-12)*8-1, 1*8, 31*8-1 );
- screen.set_palette(m_palette);
- screen.set_screen_update(FUNC(armedf_state::screen_update_armedf));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
+ MCFG_SCREEN_PALETTE(m_palette)
MCFG_VIDEO_START_OVERRIDE(armedf_state,armedf)
+ MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_armedf);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048);
@@ -1418,40 +1418,41 @@ void armedf_state::armedf(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- YM3812(config, "ymsnd", XTAL(24'000'000)/6).add_route(ALL_OUTPUTS, "speaker", 0.5); // 4mhz
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(24'000'000)/6) // 4mhz
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
- DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT).add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT).add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(armedf_state::cclimbr2)
-void armedf_state::cclimbr2(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000)/2); // 8mhz
- m_maincpu->set_addrmap(AS_PROGRAM, &armedf_state::cclimbr2_map);
- m_maincpu->set_vblank_int("screen", FUNC(armedf_state::irq2_line_assert));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)/2) // 8mhz
+ MCFG_DEVICE_PROGRAM_MAP(cclimbr2_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", armedf_state, irq2_line_assert)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(24'000'000)/6)); // 4mhz
- audiocpu.set_addrmap(AS_PROGRAM, &armedf_state::cclimbr2_soundmap);
- audiocpu.set_addrmap(AS_IO, &armedf_state::sound_portmap);
- audiocpu.set_periodic_int(FUNC(armedf_state::irq0_line_hold), attotime::from_hz(XTAL(8'000'000)/2/512)); // ?
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(24'000'000)/6) // 4mhz
+ MCFG_DEVICE_PROGRAM_MAP(cclimbr2_soundmap)
+ MCFG_DEVICE_IO_MAP(sound_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(armedf_state, irq0_line_hold, XTAL(8'000'000)/2/512) // ?
- NB1414M4(config, m_nb1414m4, 0);
+ MCFG_DEVICE_ADD("nb1414m4", NB1414M4, 0)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(14*8, (64-14)*8-1, 2*8, 30*8-1 );
- screen.set_palette(m_palette);
- screen.set_screen_update(FUNC(armedf_state::screen_update_armedf));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_PALETTE(m_palette)
MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf)
+ MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_armedf);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048);
@@ -1463,36 +1464,36 @@ void armedf_state::cclimbr2(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- YM3812(config, "ymsnd", XTAL(24'000'000)/6).add_route(ALL_OUTPUTS, "speaker", 0.5); // or YM3526?
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(24'000'000)/6) // or YM3526?
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
- DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // unknown DAC
- DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT).add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT).add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // unknown DAC
+ MCFG_DEVICE_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void armedf_state::legion_common(machine_config &config)
-{
+MACHINE_CONFIG_START(armedf_state::legion_common)
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000)/2); // 8mhz
- m_maincpu->set_vblank_int("screen", FUNC(armedf_state::irq2_line_assert));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)/2) // 8mhz
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", armedf_state, irq2_line_assert)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(24'000'000)/6)); // 4mhz
- audiocpu.set_addrmap(AS_PROGRAM, &armedf_state::cclimbr2_soundmap);
- audiocpu.set_periodic_int(FUNC(armedf_state::irq0_line_hold), attotime::from_hz(XTAL(8'000'000)/2/512)); // ?
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(24'000'000)/6) // 4mhz
+ MCFG_DEVICE_PROGRAM_MAP(cclimbr2_soundmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(armedf_state, irq0_line_hold, XTAL(8'000'000)/2/512) // ?
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(14*8, (64-14)*8-1, 2*8, 30*8-1 );
- screen.set_palette(m_palette);
- screen.set_screen_update(FUNC(armedf_state::screen_update_armedf));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_PALETTE(m_palette)
MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf)
+ MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_armedf);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048);
@@ -1504,50 +1505,53 @@ void armedf_state::legion_common(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // 10-pin SIP with 74HC374P latch
- DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // 10-pin SIP with 74HC374P latch
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT).add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT).add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // 10-pin SIP with 74HC374P latch
+ MCFG_DEVICE_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // 10-pin SIP with 74HC374P latch
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void armedf_state::legion(machine_config &config)
-{
+MACHINE_CONFIG_START(armedf_state::legion)
legion_common(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &armedf_state::legion_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(legion_map)
- subdevice<z80_device>("audiocpu")->set_addrmap(AS_IO, &armedf_state::sound_3526_portmap);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_IO_MAP(sound_3526_portmap)
- NB1414M4(config, m_nb1414m4, 0);
+ MCFG_DEVICE_ADD("nb1414m4", NB1414M4, 0)
- YM3526(config, "ymsnd", XTAL(24'000'000)/6).add_route(ALL_OUTPUTS, "speaker", 0.5); // 4mhz
-}
+ MCFG_DEVICE_ADD("ymsnd", YM3526, XTAL(24'000'000)/6) // 4mhz
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+MACHINE_CONFIG_END
-void armedf_state::legionjb(machine_config &config)
-{
+MACHINE_CONFIG_START(armedf_state::legionjb)
legion_common(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &armedf_state::legionjb_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(legionjb_map)
- subdevice<z80_device>("audiocpu")->set_addrmap(AS_IO, &armedf_state::sound_portmap);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_IO_MAP(sound_portmap)
- YM3812(config, "ymsnd", XTAL(24'000'000)/6).add_route(ALL_OUTPUTS, "speaker", 0.5); // or YM3526?
-}
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(24'000'000)/6) // or YM3526?
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+MACHINE_CONFIG_END
-void armedf_state::legionjb2(machine_config &config)
-{
+MACHINE_CONFIG_START(armedf_state::legionjb2)
legionjb(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &armedf_state::legionjb2_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(legionjb2_map)
+MACHINE_CONFIG_END
-void bigfghtr_state::bigfghtr(machine_config &config)
-{
+MACHINE_CONFIG_START(bigfghtr_state::bigfghtr)
- M68000(config, m_maincpu, XTAL(16'000'000)/2); // verified
- m_maincpu->set_addrmap(AS_PROGRAM, &bigfghtr_state::bigfghtr_map);
- m_maincpu->set_vblank_int("screen", FUNC(armedf_state::irq1_line_assert));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)/2) // verified
+ MCFG_DEVICE_PROGRAM_MAP(bigfghtr_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", armedf_state, irq1_line_assert)
i8751_device &mcu(I8751(config, "mcu", XTAL(16'000'000)/2)); // verified
mcu.set_addrmap(AS_PROGRAM, &bigfghtr_state::bigfghtr_mcu_map);
@@ -1555,13 +1559,13 @@ void bigfghtr_state::bigfghtr(machine_config &config)
mcu.port_in_cb<1>().set_constant(0xdf); // bit 5: bus contention related?
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(16'000'000)/2,531,12*8,(64-12)*8, 254, 1*8, 31*8); // guess, matches 59.3 Hz from reference - measured at 59.1358Hz
- screen.set_palette(m_palette);
- screen.set_screen_update(FUNC(armedf_state::screen_update_armedf));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(16'000'000)/2,531,12*8,(64-12)*8, 254, 1*8, 31*8) // guess, matches 59.3 Hz from reference - measured at 59.1358Hz
+ MCFG_SCREEN_PALETTE(m_palette)
MCFG_VIDEO_START_OVERRIDE(armedf_state,armedf)
+ MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_armedf);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048);
@@ -1570,7 +1574,7 @@ void bigfghtr_state::bigfghtr(machine_config &config)
/* sound hardware */
terraf_sound(config);
-}
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/arsystems.cpp b/src/mame/drivers/arsystems.cpp
index 8fffdfb3f08..65fc15671c8 100644
--- a/src/mame/drivers/arsystems.cpp
+++ b/src/mame/drivers/arsystems.cpp
@@ -300,11 +300,11 @@ INPUT_PORTS_END
*
*************************************/
-void arcadia_amiga_state::arcadia(machine_config &config)
-{
+MACHINE_CONFIG_START(arcadia_amiga_state::arcadia)
+
/* basic machine hardware */
- M68000(config, m_maincpu, amiga_state::CLK_7M_NTSC);
- m_maincpu->set_addrmap(AS_PROGRAM, &arcadia_amiga_state::arcadia_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, amiga_state::CLK_7M_NTSC)
+ MCFG_DEVICE_PROGRAM_MAP(arcadia_map)
ADDRESS_MAP_BANK(config, "overlay").set_map(&amiga_state::overlay_512kb_map).set_options(ENDIANNESS_BIG, 16, 22, 0x200000);
@@ -321,24 +321,23 @@ void arcadia_amiga_state::arcadia(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- PAULA_8364(config, m_paula, amiga_state::CLK_C1_NTSC);
- m_paula->add_route(0, "lspeaker", 0.50);
- m_paula->add_route(1, "rspeaker", 0.50);
- m_paula->add_route(2, "rspeaker", 0.50);
- m_paula->add_route(3, "lspeaker", 0.50);
- m_paula->mem_read_cb().set(FUNC(amiga_state::chip_ram_r));
- m_paula->int_cb().set(FUNC(amiga_state::paula_int_w));
+ paula_8364_device &paula(PAULA_8364(config, "amiga", amiga_state::CLK_C1_NTSC));
+ paula.add_route(0, "lspeaker", 0.50);
+ paula.add_route(1, "rspeaker", 0.50);
+ paula.add_route(2, "rspeaker", 0.50);
+ paula.add_route(3, "lspeaker", 0.50);
+ paula.mem_read_cb().set(FUNC(amiga_state::chip_ram_r));
+ paula.int_cb().set(FUNC(amiga_state::paula_int_w));
/* cia */
- MOS8520(config, m_cia_0, amiga_state::CLK_E_NTSC);
- m_cia_0->irq_wr_callback().set(FUNC(amiga_state::cia_0_irq));
- m_cia_0->pa_rd_callback().set_ioport("CIA0PORTA");
- m_cia_0->pa_wr_callback().set(FUNC(amiga_state::cia_0_port_a_write));
- m_cia_0->pb_rd_callback().set_ioport("CIA0PORTB");
- m_cia_0->pb_wr_callback().set(FUNC(arcadia_amiga_state::arcadia_cia_0_portb_w));
-
- MOS8520(config, m_cia_1, amiga_state::CLK_E_NTSC);
- m_cia_1->irq_wr_callback().set(FUNC(amiga_state::cia_1_irq));
+ MCFG_DEVICE_ADD("cia_0", MOS8520, amiga_state::CLK_E_NTSC)
+ MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(*this, amiga_state, cia_0_irq))
+ MCFG_MOS6526_PA_INPUT_CALLBACK(IOPORT("CIA0PORTA"))
+ MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(*this, amiga_state, cia_0_port_a_write))
+ MCFG_MOS6526_PB_INPUT_CALLBACK(IOPORT("CIA0PORTB"))
+ MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(*this, arcadia_amiga_state,arcadia_cia_0_portb_w))
+ MCFG_DEVICE_ADD("cia_1", MOS8520, amiga_state::CLK_E_NTSC)
+ MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(*this, amiga_state, cia_1_irq))
/* fdc */
AMIGA_FDC(config, m_fdc, amiga_state::CLK_7M_NTSC);
@@ -347,15 +346,15 @@ void arcadia_amiga_state::arcadia(machine_config &config)
m_fdc->write_dma_callback().set(FUNC(amiga_state::chip_ram_w));
m_fdc->dskblk_callback().set(FUNC(amiga_state::fdc_dskblk_w));
m_fdc->dsksyn_callback().set(FUNC(amiga_state::fdc_dsksyn_w));
-}
+MACHINE_CONFIG_END
-void arcadia_amiga_state::argh(machine_config &config)
-{
+MACHINE_CONFIG_START(arcadia_amiga_state::argh)
arcadia(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &arcadia_amiga_state::argh_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(argh_map)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/artmagic.cpp b/src/mame/drivers/artmagic.cpp
index 79548718334..65c7b55bf3d 100644
--- a/src/mame/drivers/artmagic.cpp
+++ b/src/mame/drivers/artmagic.cpp
@@ -473,6 +473,7 @@ void artmagic_state::tms_map(address_map &map)
map(0x00400000, 0x005fffff).ram().share("vram1");
map(0x00800000, 0x0080007f).rw(FUNC(artmagic_state::blitter_r), FUNC(artmagic_state::blitter_w));
map(0x00c00000, 0x00c000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff);
+ map(0xc0000000, 0xc00001ff).rw(m_tms, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xffe00000, 0xffffffff).ram();
}
@@ -483,6 +484,7 @@ void artmagic_state::stonebal_tms_map(address_map &map)
map(0x00400000, 0x005fffff).ram().share("vram1");
map(0x00800000, 0x0080007f).rw(FUNC(artmagic_state::blitter_r), FUNC(artmagic_state::blitter_w));
map(0x00c00000, 0x00c000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff);
+ map(0xc0000000, 0xc00001ff).rw(m_tms, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xffc00000, 0xffffffff).ram();
}
@@ -804,11 +806,11 @@ INPUT_PORTS_END
*
*************************************/
-void artmagic_state::artmagic(machine_config &config)
-{
+MACHINE_CONFIG_START(artmagic_state::artmagic)
+
/* basic machine hardware */
- M68000(config, m_maincpu, MASTER_CLOCK_25MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &artmagic_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, MASTER_CLOCK_25MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
TMS34010(config, m_tms, MASTER_CLOCK_40MHz);
m_tms->set_addrmap(AS_PROGRAM, &artmagic_state::tms_map);
@@ -820,58 +822,61 @@ void artmagic_state::artmagic(machine_config &config)
m_tms->set_shiftreg_in_callback(FUNC(artmagic_state::to_shiftreg));
m_tms->set_shiftreg_out_callback(FUNC(artmagic_state::from_shiftreg));
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
EEPROM_2816(config, "eeprom").write_time(attotime::from_usec(1)); // FIXME: false-readback polling should make this unnecessary
/* video hardware */
- TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT);
+ MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(MASTER_CLOCK_40MHz/6, 428, 0, 320, 313, 0, 256);
- screen.set_screen_update("tms", FUNC(tms34010_device::tms340x0_rgb32));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_40MHz/6, 428, 0, 320, 313, 0, 256)
+ MCFG_SCREEN_UPDATE_DEVICE("tms", tms34010_device, tms340x0_rgb32)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, MASTER_CLOCK_40MHz/3/10, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 0.65);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, MASTER_CLOCK_40MHz/3/10, okim6295_device::PIN7_LOW)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.65)
+MACHINE_CONFIG_END
-void artmagic_state::cheesech(machine_config &config)
-{
+MACHINE_CONFIG_START(artmagic_state::cheesech)
artmagic(config);
- m_oki->reset_routes();
- m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_MODIFY("oki")
+ MCFG_SOUND_ROUTES_RESET()
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void artmagic_state::stonebal(machine_config &config)
-{
+MACHINE_CONFIG_START(artmagic_state::stonebal)
artmagic(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &artmagic_state::stonebal_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(stonebal_map)
- m_tms->set_addrmap(AS_PROGRAM, &artmagic_state::stonebal_tms_map);
+ MCFG_DEVICE_MODIFY("tms")
+ MCFG_DEVICE_PROGRAM_MAP(stonebal_tms_map)
- m_oki->reset_routes();
- m_oki->add_route(ALL_OUTPUTS, "mono", 0.45);
-}
+ MCFG_DEVICE_MODIFY("oki")
+ MCFG_SOUND_ROUTES_RESET()
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
+MACHINE_CONFIG_END
-void artmagic_state::shtstar(machine_config &config)
-{
+MACHINE_CONFIG_START(artmagic_state::shtstar)
artmagic(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &artmagic_state::shtstar_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(shtstar_map)
- MC68681(config, "mainduart", 3686400);
+ MCFG_DEVICE_ADD("mainduart", MC68681, 3686400)
/* sub cpu*/
- m68000_device &subcpu(M68000(config, "subcpu", MASTER_CLOCK_25MHz/2));
- subcpu.set_addrmap(AS_PROGRAM, &artmagic_state::shtstar_subcpu_map);
+ MCFG_DEVICE_ADD("subcpu", M68000, MASTER_CLOCK_25MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(shtstar_subcpu_map)
- MC68681(config, "subduart", 3686400);
+ MCFG_DEVICE_ADD("subduart", MC68681, 3686400)
YM2149(config, "aysnd", 3686400/2).add_route(ALL_OUTPUTS, "mono", 0.10);
@@ -880,7 +885,7 @@ void artmagic_state::shtstar(machine_config &config)
guncpu.set_addrmap(AS_PROGRAM, &artmagic_state::shtstar_guncpu_map);
guncpu.set_addrmap(AS_IO, &artmagic_state::shtstar_guncpu_io_map);
guncpu.port_in_cb<1>().set_constant(0); // ?
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ashnojoe.cpp b/src/mame/drivers/ashnojoe.cpp
index 29d209ef138..100c5c419bf 100644
--- a/src/mame/drivers/ashnojoe.cpp
+++ b/src/mame/drivers/ashnojoe.cpp
@@ -279,7 +279,7 @@ WRITE8_MEMBER(ashnojoe_state::ym2203_write_b)
WRITE_LINE_MEMBER(ashnojoe_state::ashnojoe_vclk_cb)
{
- if (m_msm5205_vclk_toggle == 0)
+ if (state)
{
m_msm->write_data(m_adpcm_byte >> 4);
}
@@ -288,20 +288,16 @@ WRITE_LINE_MEMBER(ashnojoe_state::ashnojoe_vclk_cb)
m_msm->write_data(m_adpcm_byte & 0xf);
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
-
- m_msm5205_vclk_toggle ^= 1;
}
void ashnojoe_state::machine_start()
{
save_item(NAME(m_adpcm_byte));
- save_item(NAME(m_msm5205_vclk_toggle));
}
void ashnojoe_state::machine_reset()
{
m_adpcm_byte = 0;
- m_msm5205_vclk_toggle = 0;
}
@@ -340,7 +336,7 @@ void ashnojoe_state::ashnojoe(machine_config &config)
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.1);
MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(ashnojoe_state::ashnojoe_vclk_cb));
+ m_msm->vck_callback().set(FUNC(ashnojoe_state::ashnojoe_vclk_cb));
m_msm->set_prescaler_selector(msm5205_device::S48_4B);
m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
}
diff --git a/src/mame/drivers/asst128.cpp b/src/mame/drivers/asst128.cpp
index 2de3a578e95..f857d084ae0 100644
--- a/src/mame/drivers/asst128.cpp
+++ b/src/mame/drivers/asst128.cpp
@@ -102,34 +102,34 @@ static DEVICE_INPUT_DEFAULTS_START( asst128 )
DEVICE_INPUT_DEFAULTS("DSW0", 0x30, 0x20)
DEVICE_INPUT_DEFAULTS_END
-void asst128_state::asst128(machine_config &config)
-{
- I8086(config, m_maincpu, 4772720);
- m_maincpu->set_addrmap(AS_PROGRAM, &asst128_state::asst128_map);
- m_maincpu->set_addrmap(AS_IO, &asst128_state::asst128_io);
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(asst128_state::asst128)
+ MCFG_DEVICE_ADD("maincpu", I8086, 4772720)
+ MCFG_DEVICE_PROGRAM_MAP(asst128_map)
+ MCFG_DEVICE_IO_MAP(asst128_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
- asst128_mb_device &mb(ASST128_MOTHERBOARD(config, "mb", 0));
- mb.set_cputag(m_maincpu);
- mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(asst128));
+ MCFG_DEVICE_ADD("mb", ASST128_MOTHERBOARD, 0)
+ downcast<asst128_mb_device &>(*device).set_cputag("maincpu");
+ MCFG_DEVICE_INPUT_DEFAULTS(asst128)
- subdevice<cassette_image_device>("mb:cassette")->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_DEVICE_MODIFY("mb:cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
// FIXME: determine ISA bus clock
- ISA8_SLOT(config, "board0", 0, "mb:isa", pc_isa8_cards, "cga_mc1502", true);
- ISA8_SLOT(config, "board1", 0, "mb:isa", pc_isa8_cards, "lpt", true);
+ MCFG_DEVICE_ADD("board0", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "cga_mc1502", true)
+ MCFG_DEVICE_ADD("board1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "lpt", true)
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
+ MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83)
PC_FDC_XT(config, m_fdc, 0);
m_fdc->intrq_wr_callback().set("mb:pic8259", FUNC(pic8259_device::ir6_w));
- FLOPPY_CONNECTOR(config, "fdc:0", asst128_floppies, "525ssqd", asst128_state::asst128_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", asst128_floppies, "525ssqd", asst128_state::asst128_formats);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", asst128_floppies, "525ssqd", asst128_state::asst128_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", asst128_floppies, "525ssqd", asst128_state::asst128_formats)
PC_JOY(config, "pc_joy");
RAM(config, RAM_TAG).set_default_size("512K").set_extra_options("64K, 128K, 256K");
-}
+MACHINE_CONFIG_END
ROM_START( asst128 )
ROM_REGION16_LE(0x10000,"bios", 0)
diff --git a/src/mame/drivers/asteroid.cpp b/src/mame/drivers/asteroid.cpp
index 53145eec6bf..e3d97ac9747 100644
--- a/src/mame/drivers/asteroid.cpp
+++ b/src/mame/drivers/asteroid.cpp
@@ -808,33 +808,33 @@ void asteroid_state::astdelux(machine_config &config)
audiolatch.q_out_cb<5>().set(FUNC(asteroid_state::coin_counter_left_w)); // LEFT COIN
audiolatch.q_out_cb<6>().set(FUNC(asteroid_state::coin_counter_center_w)); // CENTER COIN
audiolatch.q_out_cb<7>().set(FUNC(asteroid_state::coin_counter_right_w)); // RIGHT COIN
-}
+MACHINE_CONFIG_END
-void asteroid_state::llander(machine_config &config)
-{
+MACHINE_CONFIG_START(asteroid_state::llander)
asteroid_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &asteroid_state::llander_map);
- m_maincpu->set_periodic_int(FUNC(asteroid_state::llander_interrupt), attotime::from_hz(MASTER_CLOCK/4096/12));
-
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_refresh_hz(CLOCK_3KHZ/12/6);
- screen.set_visarea(522, 1566, 270, 1070);
- screen.set_screen_update("vector", FUNC(vector_device::screen_update));
-
- output_latch_device &outlatch(*subdevice<output_latch_device>("outlatch")); // LS174 at N11
- outlatch.bit_handler<0>().set_output("lamp4"); // LAMP5 (COMMAND MISSION)
- outlatch.bit_handler<1>().set_output("lamp3"); // LAMP4 (PRIME MISSION)
- outlatch.bit_handler<2>().set_output("lamp2"); // LAMP3 (CADET MISSION)
- outlatch.bit_handler<3>().set_output("lamp1"); // LAMP2 (TRAINING MISSION)
- outlatch.bit_handler<4>().set_output("lamp0"); // START/SELECT LEDs
- outlatch.bit_handler<5>().set_nop();
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(llander_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(asteroid_state, llander_interrupt, MASTER_CLOCK/4096/12)
+
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_REFRESH_RATE(CLOCK_3KHZ/12/6)
+ MCFG_SCREEN_VISIBLE_AREA(522, 1566, 270, 1070)
+ MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
+
+ MCFG_DEVICE_MODIFY("outlatch") // LS174 at N11
+ MCFG_OUTPUT_LATCH_BIT0_HANDLER(OUTPUT("lamp4")) // LAMP5 (COMMAND MISSION)
+ MCFG_OUTPUT_LATCH_BIT1_HANDLER(OUTPUT("lamp3")) // LAMP4 (PRIME MISSION)
+ MCFG_OUTPUT_LATCH_BIT2_HANDLER(OUTPUT("lamp2")) // LAMP3 (CADET MISSION)
+ MCFG_OUTPUT_LATCH_BIT3_HANDLER(OUTPUT("lamp1")) // LAMP2 (TRAINING MISSION)
+ MCFG_OUTPUT_LATCH_BIT4_HANDLER(OUTPUT("lamp0")) // START/SELECT LEDs
+ MCFG_OUTPUT_LATCH_BIT5_HANDLER(NOOP)
/* sound hardware */
llander_sound(config);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/astrafr.cpp b/src/mame/drivers/astrafr.cpp
index 1ad452a5c66..dd80d010adb 100644
--- a/src/mame/drivers/astrafr.cpp
+++ b/src/mame/drivers/astrafr.cpp
@@ -311,8 +311,7 @@ MACHINE_START_MEMBER(astrafr_state,astra_2e)
}
-void astrafr_state::astrafr_dual(machine_config &config)
-{
+MACHINE_CONFIG_START(astrafr_state::astrafr_dual)
M68340(config, m_maincpu, 16000000);
m_maincpu->set_addrmap(AS_PROGRAM, &astrafr_state::astrafr_master_map);
@@ -320,19 +319,17 @@ void astrafr_state::astrafr_dual(machine_config &config)
m_slavecpu->set_addrmap(AS_PROGRAM, &astrafr_state::astrafr_slave_map);
MCFG_MACHINE_START_OVERRIDE(astrafr_state, astra_common )
-}
+MACHINE_CONFIG_END
-void astrafr_state::astrafr_dual_2e(machine_config &config)
-{
+MACHINE_CONFIG_START(astrafr_state::astrafr_dual_2e)
astrafr_dual(config);
MCFG_MACHINE_START_OVERRIDE(astrafr_state, astra_2e )
-}
+MACHINE_CONFIG_END
-void astrafr_state::astrafr_dual_37(machine_config &config)
-{
+MACHINE_CONFIG_START(astrafr_state::astrafr_dual_37)
astrafr_dual(config);
MCFG_MACHINE_START_OVERRIDE(astrafr_state, astra_37 )
-}
+MACHINE_CONFIG_END
void astrafr_state::astrafr_dual_alt(machine_config &config)
{
@@ -343,32 +340,28 @@ void astrafr_state::astrafr_dual_alt(machine_config &config)
m_slavecpu->set_addrmap(AS_PROGRAM, &astrafr_state::astrafr_slave_map);
}
-void astrafr_state::astrafr_dual_alt_37(machine_config &config)
-{
+MACHINE_CONFIG_START(astrafr_state::astrafr_dual_alt_37)
astrafr_dual_alt(config);
MCFG_MACHINE_START_OVERRIDE(astrafr_state, astra_37 )
-}
+MACHINE_CONFIG_END
-void astrafr_state::astra_single(machine_config &config)
-{
+MACHINE_CONFIG_START(astrafr_state::astra_single)
M68340(config, m_maincpu, 16000000);
m_maincpu->set_addrmap(AS_PROGRAM, &astrafr_state::astra_map);
MCFG_MACHINE_START_OVERRIDE(astrafr_state, astra_common )
-}
+MACHINE_CONFIG_END
-void astrafr_state::astra_single_37(machine_config &config)
-{
+MACHINE_CONFIG_START(astrafr_state::astra_single_37)
astra_single(config);
MCFG_MACHINE_START_OVERRIDE(astrafr_state, astra_37 )
-}
+MACHINE_CONFIG_END
-void astrafr_state::astra_single_2e(machine_config &config)
-{
+MACHINE_CONFIG_START(astrafr_state::astra_single_2e)
astra_single(config);
MCFG_MACHINE_START_OVERRIDE(astrafr_state, astra_2e )
-}
+MACHINE_CONFIG_END
MACHINE_START_MEMBER(astrafr_state,astra_57)
{
@@ -379,24 +372,21 @@ MACHINE_START_MEMBER(astrafr_state,astra_57)
}
-void astrafr_state::astra_single_alt(machine_config &config)
-{
+MACHINE_CONFIG_START(astrafr_state::astra_single_alt)
M68340(config, m_maincpu, 16000000);
m_maincpu->set_addrmap(AS_PROGRAM, &astrafr_state::astra_map);
MCFG_MACHINE_START_OVERRIDE(astrafr_state, astra_common )
-}
+MACHINE_CONFIG_END
-void astrafr_state::astra_single_alt_57(machine_config &config)
-{
+MACHINE_CONFIG_START(astrafr_state::astra_single_alt_57)
astra_single_alt(config);
MCFG_MACHINE_START_OVERRIDE(astrafr_state, astra_57 )
-}
+MACHINE_CONFIG_END
-void astrafr_state::astra_single_alt_37(machine_config &config)
-{
+MACHINE_CONFIG_START(astrafr_state::astra_single_alt_37)
astra_single_alt(config);
MCFG_MACHINE_START_OVERRIDE(astrafr_state, astra_37 )
-}
+MACHINE_CONFIG_END
/* are the ptM roms Master and ptS roms Slave?
or is as_partyd set actually the master, with the larger roms?
diff --git a/src/mame/drivers/astrcorp.cpp b/src/mame/drivers/astrcorp.cpp
index 3a106ec783a..9ed45d4c9ba 100644
--- a/src/mame/drivers/astrcorp.cpp
+++ b/src/mame/drivers/astrcorp.cpp
@@ -78,23 +78,6 @@ protected:
virtual void video_start() override;
private:
- struct decryption_info {
- struct {
- // Address bits used for bitswap/xor selection
- u8 bits[3];
- struct {
- // 8-8 Bitswap
- u8 bits[8];
- // Xor
- u8 xor_mask;
- } entries[8];
- } rom[2];
- // Global address bitswap (src -> dest, bits 12-8 only)
- u8 bits[5];
- };
-
- static const decryption_info astoneag_table;
-
// devices
required_device<cpu_device> m_maincpu;
required_device<okim6295_device> m_oki;
@@ -130,8 +113,6 @@ private:
void showhand_map(address_map &map);
void skilldrp_map(address_map &map);
void speeddrp_map(address_map &map);
-
- void decrypt_rom(const decryption_info &table);
};
/***************************************************************************
@@ -544,26 +525,26 @@ TODO: understand if later hardware uses different parameters (XTAL is almost sur
#define ASTROCORP_VBEND 0
#define ASTROCORP_VBSTART 240
-void astrocorp_state::showhand(machine_config &config)
-{
+MACHINE_CONFIG_START(astrocorp_state::showhand)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(20'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &astrocorp_state::showhand_map);
- m_maincpu->set_vblank_int("screen", FUNC(astrocorp_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(20'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(showhand_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", astrocorp_state, irq4_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
EEPROM_93C46_16BIT(config, "eeprom").default_data(showhand_default_eeprom, sizeof(showhand_default_eeprom));
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
-// m_screen->set_refresh_hz(58.846); // measured on pcb
-// m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
-// m_screen->set_size(320, 240);
-// m_screen->set_visarea_full();
- m_screen->set_raw(ASTROCORP_PIXEL_CLOCK,ASTROCORP_HTOTAL,ASTROCORP_HBEND,320,ASTROCORP_VTOTAL,ASTROCORP_VBEND,ASTROCORP_VBSTART);
- m_screen->set_screen_update(FUNC(astrocorp_state::screen_update_astrocorp));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_REFRESH_RATE(58.846) // measured on pcb
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+// MCFG_SCREEN_SIZE(320, 240)
+// MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
+ MCFG_SCREEN_RAW_PARAMS(ASTROCORP_PIXEL_CLOCK,ASTROCORP_HTOTAL,ASTROCORP_HBEND,320,ASTROCORP_VTOTAL,ASTROCORP_VBEND,ASTROCORP_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(astrocorp_state, screen_update_astrocorp)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_astrocorp);
PALETTE(config, m_palette).set_format(palette_device::BGR_565, 0x100);
@@ -571,15 +552,16 @@ void astrocorp_state::showhand(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(20'000'000)/20, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(20'000'000)/20, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void astrocorp_state::showhanc(machine_config &config)
-{
+MACHINE_CONFIG_START(astrocorp_state::showhanc)
showhand(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &astrocorp_state::showhanc_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(showhanc_map)
+MACHINE_CONFIG_END
TIMER_DEVICE_CALLBACK_MEMBER(astrocorp_state::skilldrp_scanline)
@@ -593,28 +575,28 @@ TIMER_DEVICE_CALLBACK_MEMBER(astrocorp_state::skilldrp_scanline)
m_maincpu->set_input_line(2, HOLD_LINE);
}
-void astrocorp_state::skilldrp(machine_config &config)
-{
+MACHINE_CONFIG_START(astrocorp_state::skilldrp)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000) / 2); // JX-1689F1028N GRX586.V5
- m_maincpu->set_addrmap(AS_PROGRAM, &astrocorp_state::skilldrp_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(astrocorp_state::skilldrp_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000) / 2) // JX-1689F1028N GRX586.V5
+ MCFG_DEVICE_PROGRAM_MAP(skilldrp_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", astrocorp_state, skilldrp_scanline, "screen", 0, 1)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
EEPROM_93C46_16BIT(config, "eeprom");
- TICKET_DISPENSER(config, m_ticket, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW );
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW );
+ MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW )
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW )
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
-// m_screen->set_refresh_hz(58.846);
-// m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
-// m_screen->set_size(0x200, 0x100);
-// m_screen->set_visarea(0, 0x200-1, 0, 0xf0-1);
- m_screen->set_raw(ASTROCORP_PIXEL_CLOCK,ASTROCORP_HTOTAL,ASTROCORP_HBEND,512,ASTROCORP_VTOTAL,ASTROCORP_VBEND,ASTROCORP_VBSTART);
- m_screen->set_screen_update(FUNC(astrocorp_state::screen_update_astrocorp));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_REFRESH_RATE(58.846)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+// MCFG_SCREEN_SIZE(0x200, 0x100)
+// MCFG_SCREEN_VISIBLE_AREA(0, 0x200-1, 0, 0xf0-1)
+ MCFG_SCREEN_RAW_PARAMS(ASTROCORP_PIXEL_CLOCK,ASTROCORP_HTOTAL,ASTROCORP_HBEND,512,ASTROCORP_VTOTAL,ASTROCORP_VBEND,ASTROCORP_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(astrocorp_state, screen_update_astrocorp)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_astrocorp);
PALETTE(config, m_palette).set_format(palette_device::BGR_565, 0x100);
@@ -622,15 +604,16 @@ void astrocorp_state::skilldrp(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(24'000'000)/24, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(24'000'000)/24, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void astrocorp_state::speeddrp(machine_config &config)
-{
+MACHINE_CONFIG_START(astrocorp_state::speeddrp)
skilldrp(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &astrocorp_state::speeddrp_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(speeddrp_map)
+MACHINE_CONFIG_END
/***************************************************************************
@@ -1255,93 +1238,155 @@ void astrocorp_state::init_showhanc()
#endif
}
-void astrocorp_state::decrypt_rom(const decryption_info &table)
+void astrocorp_state::init_astoneag()
{
- u32 size = memregion("maincpu")->bytes();
- u16 *rom = (u16 *)memregion("maincpu")->base();
- std::unique_ptr<u16[]> tmp = std::make_unique<u16[]>(size/2);
-
- // Pass 1: decrypt high and low byte independently. They go
- // trough a bitswap and an xor, choosing between 8 possibilities
- // through address bits.
-
- for(u32 i = 0; i != size; i += 2) {
- u16 orig = rom[i >> 1];
- u16 result = 0;
- for(u32 rb = 0; rb < 2; rb ++) {
- u8 val = orig >> (rb ? 0 : 8);
- u32 index =
- (BIT(i, table.rom[rb].bits[0]) << 2) |
- (BIT(i, table.rom[rb].bits[1]) << 1) |
- BIT(i, table.rom[rb].bits[2]);
- val = bitswap(val,
- table.rom[rb].entries[index].bits[0],
- table.rom[rb].entries[index].bits[1],
- table.rom[rb].entries[index].bits[2],
- table.rom[rb].entries[index].bits[3],
- table.rom[rb].entries[index].bits[4],
- table.rom[rb].entries[index].bits[5],
- table.rom[rb].entries[index].bits[6],
- table.rom[rb].entries[index].bits[7]);
- val = val ^ table.rom[rb].entries[index].xor_mask;
-
- result |= val << (rb ? 0 : 8);
- }
- tmp[i >> 1] = result;
+#if 0
+ uint16_t *rom = (uint16_t*)memregion("maincpu")->base();
+ uint16_t x;
+ int i;
+
+ for (i = 0x25100/2; i < 0x25200/2; i++)
+ {
+ x = 0x0000;
+ if ( (i & 0x0001) ) x |= 0x0200;
+ if ( (i & 0x0004) && !(i & 0x0001) ) x |= 0x0080;
+ if ( (i & 0x0040) || (i & 0x0001) ) x |= 0x0040;
+ if ( (i & 0x0010) && !(i & 0x0001) ) x |= 0x0020;
+ if ( !(i & 0x0020) || (i & 0x0001) ) x |= 0x0010;
+ if ( (i & 0x0002) || (i & 0x0001) ) x |= 0x0008;
+ if ( (i & 0x0008) && !(i & 0x0001) ) x |= 0x0004;
+ if ( !(i & 0x0040) && !(i & 0x0001) ) x |= 0x0002;
+ if ( (i & 0x0040) && !(i & 0x0001) ) x |= 0x0001;
+ rom[i] ^= x;
}
- // Pass 2: copy back the decrypted data following the address
- // scrambling
- for(u32 i = 0; i != size; i += 2) {
- u32 dest =
- (i & 0xffffe0ff) |
- (BIT(i, table.bits[0]) << 12) |
- (BIT(i, table.bits[1]) << 11) |
- (BIT(i, table.bits[2]) << 10) |
- (BIT(i, table.bits[3]) << 9) |
- (BIT(i, table.bits[4]) << 8);
- rom[dest >> 1] = tmp[i >> 1];
+/*
+ for (i = 0x25300/2; i < 0x25400/2; i++)
+ {
+ x = 0x1300;
+ rom[i] ^= x;
+ }
+*/
+
+ for (i = 0x25400/2; i < 0x25500/2; i++)
+ {
+ x = 0x4200;
+ if ( (i & 0x0001) ) x |= 0x0400;
+ if ( (i & 0x0020) && !(i & 0x0001) ) x |= 0x0080;
+ if ( !(i & 0x0010) || (i & 0x0001) ) x |= 0x0040;
+ if ( (i & 0x0040) && !(i & 0x0001) ) x |= 0x0020;
+ if ( !(i & 0x0004) || (i & 0x0001) ) x |= 0x0010;
+ if ( !(i & 0x0040) && !(i & 0x0001) ) x |= 0x0004;
+ if ( (i & 0x0008) && !(i & 0x0001) ) x |= 0x0002;
+ if ( (i & 0x0002) || (i & 0x0001) ) x |= 0x0001;
+ rom[i] ^= x;
}
- // There's more stuff happening for addresses < 0x400...
+ for (i = 0x25500/2; i < 0x25600/2; i++)
+ {
+ x = 0x4200;
+ if ( (i & 0x0001) ) x |= 0x0400;
+ if ( (i & 0x0010) && !(i & 0x0001) ) x |= 0x0080;
+ if ( (i & 0x0040) && !(i & 0x0001) ) x |= 0x0040;
+ if ( !(i & 0x0002) && !(i & 0x0001) ) x |= 0x0020;
+ if ( !(i & 0x0040) && !(i & 0x0001) ) x |= 0x0010;
+ if ( (i & 0x0008) && !(i & 0x0001) ) x |= 0x0008;
+ if ( (i & 0x0020) && !(i & 0x0001) ) x |= 0x0004;
+ if ( (i & 0x0004) && !(i & 0x0001) ) x |= 0x0002;
+ if ( (i & 0x0001) ) x |= 0x0001;
+ rom[i] ^= x;
+ }
-}
+/*
+ for (i = 0x25700/2; i < 0x25800/2; i++)
+ {
+ x = 0x6800;
+ if ( !(i & 0x0001) ) x |= 0x8000;
+
+ if ( !(i & 0x0040) || ((i & 0x0001) || !(i & 0x0001)) ) x |= 0x0100;
-const astrocorp_state::decryption_info astrocorp_state::astoneag_table = {
+ rom[i] ^= x;
+ }
+*/
+
+ for (i = 0x25800/2; i < 0x25900/2; i++)
{
- {
- { 11, 10, 9 },
- {
- { { 7, 5, 4, 6, 0, 3, 2, 1 }, 0x00 },
- { { 1, 4, 6, 0, 2, 5, 3, 7 }, 0xd0 },
- { { 1, 7, 4, 3, 6, 5, 0, 2 }, 0x88 },
- { { 6, 5, 2, 3, 7, 1, 0, 4 }, 0xd1 },
- { { 6, 1, 7, 2, 4, 0, 3, 5 }, 0x64 },
- { { 1, 7, 2, 6, 5, 4, 3, 0 }, 0x83 },
- { { 6, 7, 4, 2, 5, 0, 1, 3 }, 0x81 },
- { { 7, 5, 1, 0, 2, 4, 6, 3 }, 0xea },
- }
- },
- {
- { 12, 10, 8 },
- {
- { { 6, 5, 4, 3, 2, 1, 0, 7 }, 0x90 },
- { { 2, 4, 0, 7, 5, 6, 3, 1 }, 0x32 },
- { { 7, 1, 0, 6, 5, 2, 3, 4 }, 0xa9 },
- { { 2, 0, 3, 5, 1, 4, 6, 7 }, 0xa2 },
- { { 3, 0, 6, 5, 2, 1, 4, 7 }, 0x02 },
- { { 0, 1, 6, 4, 5, 2, 7, 3 }, 0x30 },
- { { 3, 5, 2, 7, 6, 1, 4, 0 }, 0x0a },
- { { 0, 6, 4, 2, 7, 3, 1, 5 }, 0x81 },
- }
- },
- },
- { 12, 9, 11, 8, 10 }
-};
+ x = 0x8300;
+ if ( (i & 0x0040) || (i & 0x0001) ) x |= 0x2000;
+ if ( (i & 0x0002) || (i & 0x0001) ) x |= 0x0080;
+ if ( !(i & 0x0040) && !(i & 0x0001) ) x |= 0x0040;
+ if ( (i & 0x0020) && !(i & 0x0001) ) x |= 0x0020;
+ if ( !(i & 0x0004) || (i & 0x0001) ) x |= 0x0010;
+ if ( !(i & 0x0040) && !(i & 0x0001) ) x |= 0x0008;
+ if ( (i & 0x0010) && !(i & 0x0001) ) x |= 0x0004;
+ if ( (i & 0x0008) && !(i & 0x0001) ) x |= 0x0002;
+ if ( !(i & 0x0040) && !(i & 0x0001) ) x |= 0x0001;
+ rom[i] ^= x;
+ }
-void astrocorp_state::init_astoneag()
-{
- decrypt_rom(astoneag_table);
+// for (i = 0x25900/2; i < 0x25a00/2; i++)
+
+ for (i = 0x25c00/2; i < 0x25d00/2; i++)
+ {
+ // changed from 25400
+// x = 0x4200;
+ x = 0x4000;
+// if ( (i & 0x0001) ) x |= 0x0400;
+ if ( (i & 0x0020) && !(i & 0x0001) ) x |= 0x0080;
+ if ( !(i & 0x0010) || (i & 0x0001) ) x |= 0x0040;
+ if ( (i & 0x0040) && !(i & 0x0001) ) x |= 0x0020;
+ if ( !(i & 0x0004) || (i & 0x0001) ) x |= 0x0010;
+ if ( !(i & 0x0040) && !(i & 0x0001) ) x |= 0x0004;
+ if ( (i & 0x0008) && !(i & 0x0001) ) x |= 0x0002;
+ if ( (i & 0x0002) || (i & 0x0001) ) x |= 0x0001;
+ rom[i] ^= x;
+ }
+
+/*
+ for (i = 0x25d00/2; i < 0x25e00/2; i++)
+ {
+ x = 0x4000;
+ if ( !(i & 0x0040) ) x |= 0x0800;
+
+ if ( !(i & 0x0040) && !(i & 0x0001) ) x |= 0x0100; // almost!!
+
+ if ( ((i & 0x0040)&&((i & 0x0020)||(i & 0x0010))) || !(i & 0x0001) ) x |= 0x0200; // almost!!
+ if ( (!(i & 0x0040) || !(i & 0x0008)) && !(i & 0x0001) ) x |= 0x0008;
+ if ( (i & 0x0040) || !(i & 0x0020) || (i & 0x0001) ) x |= 0x0001; // almost!!
+ rom[i] ^= x;
+ }
+*/
+
+/*
+ for (i = 0x25e00/2; i < 0x25f00/2; i++)
+ {
+ x = 0xa600;
+
+ if ( (i & 0x0040) && (i & 0x0001) ) x |= 0x4000;
+ if ( (i & 0x0040) && (i & 0x0001) ) x |= 0x0800;
+ if ( !(i & 0x0001) ) x |= 0x0100;
+
+ if ( ( (i & 0x0040) && (i & 0x0008) && !(i & 0x0001)) ||
+ ( !(i & 0x0040) && ((i & 0x0004) ^ (i & 0x0002)) && !(i & 0x0001) ) ) x |= 0x0002; // almost!!
+
+ if ( !(i & 0x0040) || !(i & 0x0002) || (i & 0x0001) ) x |= 0x0001;
+ rom[i] ^= x;
+ }
+*/
+
+ for (i = 0x26f00/2; i < 0x27000/2; i++)
+ {
+ x = 0xb94c;
+ rom[i] ^= x;
+ }
+
+ for (i = 0x27000/2; i < 0x27100/2; i++)
+ {
+ x = 0x5f10;
+ rom[i] ^= x;
+ }
+
+#endif
}
GAME( 2000, showhand, 0, showhand, showhand, astrocorp_state, init_showhand, ROT0, "Astro Corp.", "Show Hand (Italy)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/astrocde.cpp b/src/mame/drivers/astrocde.cpp
index a9e5c09ba90..087a24728d5 100644
--- a/src/mame/drivers/astrocde.cpp
+++ b/src/mame/drivers/astrocde.cpp
@@ -394,8 +394,8 @@ WRITE8_MEMBER(tenpindx_state::lights_w)
WRITE8_MEMBER(astrocde_state::votrax_speech_w)
{
- m_votrax->inflection_w(data >> 6);
- m_votrax->write(data & 0x3f);
+ m_votrax->inflection_w(space, 0, data >> 6);
+ m_votrax->write(space, 0, data);
/* Note : We should really also use volume in this as well as frequency */
}
@@ -1475,8 +1475,8 @@ void demndrgn_state::demndrgn(machine_config &config)
outlatch.bit_handler<4>().set(FUNC(demndrgn_state::input_select_w));
m_astrocade_sound1->so_cb<4>().set("outlatch", FUNC(output_latch_device::bus_w));
- m_astrocade_sound1->pot_cb<0>().set_ioport("FIREX");
- m_astrocade_sound1->pot_cb<1>().set_ioport("FIREY");
+ m_astrocade_sound1->set_pot_tag<0>("FIREX");
+ m_astrocade_sound1->set_pot_tag<1>("FIREY");
}
void tenpindx_state::tenpindx(machine_config &config)
diff --git a/src/mame/drivers/astrof.cpp b/src/mame/drivers/astrof.cpp
index 7864d161b7c..954418c4465 100644
--- a/src/mame/drivers/astrof.cpp
+++ b/src/mame/drivers/astrof.cpp
@@ -913,79 +913,81 @@ INPUT_PORTS_END
*
*************************************/
-void astrof_state::base(machine_config &config)
-{
+MACHINE_CONFIG_START(astrof_state::base)
+
/* basic machine hardware */
- M6502(config, m_maincpu, MAIN_CPU_CLOCK);
- TIMER(config, "vblank").configure_scanline(FUNC(astrof_state::irq_callback), "screen", VBSTART, 0);
+ MCFG_DEVICE_ADD("maincpu", M6502, MAIN_CPU_CLOCK)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("vblank", astrof_state, irq_callback, "screen", VBSTART, 0)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+MACHINE_CONFIG_END
-void astrof_state::astrof(machine_config &config)
-{
+MACHINE_CONFIG_START(astrof_state::astrof)
base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &astrof_state::astrof_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(astrof_map)
MCFG_MACHINE_START_OVERRIDE(astrof_state,astrof)
/* video hardware */
- m_screen->set_screen_update(FUNC(astrof_state::screen_update_astrof));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(astrof_state, screen_update_astrof)
/* audio hardware */
astrof_audio(config);
-}
+MACHINE_CONFIG_END
-void astrof_state::abattle(machine_config &config)
-{
+MACHINE_CONFIG_START(astrof_state::abattle)
astrof(config);
/* basic machine hardware */
MCFG_MACHINE_START_OVERRIDE(astrof_state,abattle)
MCFG_MACHINE_RESET_OVERRIDE(astrof_state,abattle)
-}
+MACHINE_CONFIG_END
-void astrof_state::spfghmk2(machine_config &config)
-{
+MACHINE_CONFIG_START(astrof_state::spfghmk2)
base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &astrof_state::spfghmk2_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(spfghmk2_map)
MCFG_MACHINE_START_OVERRIDE(astrof_state,spfghmk2)
/* video hardware */
- m_screen->set_screen_update(FUNC(astrof_state::screen_update_astrof));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(astrof_state, screen_update_astrof)
/* audio hardware */
spfghmk2_audio(config);
-}
+MACHINE_CONFIG_END
-void astrof_state::tomahawk(machine_config &config)
-{
+MACHINE_CONFIG_START(astrof_state::tomahawk)
base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &astrof_state::tomahawk_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tomahawk_map)
MCFG_MACHINE_START_OVERRIDE(astrof_state,tomahawk)
/* video hardware */
- m_screen->set_screen_update(FUNC(astrof_state::screen_update_tomahawk));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(astrof_state, screen_update_tomahawk)
/* audio hardware */
tomahawk_audio(config);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/astrohome.cpp b/src/mame/drivers/astrohome.cpp
index b4e49c93224..ceceb0c6dc5 100644
--- a/src/mame/drivers/astrohome.cpp
+++ b/src/mame/drivers/astrohome.cpp
@@ -17,8 +17,6 @@
#include "bus/astrocde/rom.h"
#include "bus/astrocde/exp.h"
#include "bus/astrocde/ram.h"
-#include "bus/astrocde/ctrl.h"
-#include "bus/astrocde/accessory.h"
#include "softlist.h"
#include "speaker.h"
@@ -31,8 +29,6 @@ public:
: astrocde_state(mconfig, type, tag)
, m_cart(*this, "cartslot")
, m_exp(*this, "exp")
- , m_ctrl(*this, "ctrl%u", 1U)
- , m_accessory(*this, "accessory")
, m_keypad(*this, "KEYPAD%u", 0U)
{ }
@@ -46,8 +42,6 @@ private:
required_device<astrocade_cart_slot_device> m_cart;
required_device<astrocade_exp_device> m_exp;
- required_device_array<astrocade_ctrl_port_device, 4> m_ctrl;
- required_device<astrocade_accessory_port_device> m_accessory;
required_ioport_array<4> m_keypad;
};
@@ -110,10 +104,42 @@ READ8_MEMBER(astrocde_home_state::inputs_r)
if (BIT(offset, 2))
return m_keypad[offset & 3]->read();
else
- return m_ctrl[offset & 3]->read_handle();
+ return m_handle[offset & 3]->read();
}
static INPUT_PORTS_START( astrocde )
+ PORT_START("P1HANDLE")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(1)
+ PORT_BIT(0xe0, IP_ACTIVE_HIGH, IPT_UNUSED)
+
+ PORT_START("P2HANDLE")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(2)
+ PORT_BIT(0xe0, IP_ACTIVE_HIGH, IPT_UNUSED)
+
+ PORT_START("P3HANDLE")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_PLAYER(3) PORT_8WAY
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_PLAYER(3) PORT_8WAY
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT) PORT_PLAYER(3) PORT_8WAY
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_PLAYER(3) PORT_8WAY
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(3)
+ PORT_BIT(0xe0, IP_ACTIVE_HIGH, IPT_UNUSED)
+
+ PORT_START("P4HANDLE")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_PLAYER(4) PORT_8WAY
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_PLAYER(4) PORT_8WAY
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT) PORT_PLAYER(4) PORT_8WAY
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_PLAYER(4) PORT_8WAY
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(4)
+ PORT_BIT(0xe0, IP_ACTIVE_HIGH, IPT_UNUSED)
+
PORT_START("KEYPAD0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("% \xC3\xB7 [ ] LIST") PORT_CODE(KEYCODE_O)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("/ x J K L NEXT") PORT_CODE(KEYCODE_SLASH_PAD)
@@ -149,6 +175,18 @@ static INPUT_PORTS_START( astrocde )
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("1 SPACE $ , ?") PORT_CODE(KEYCODE_1)
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CE GREEN Shift") PORT_CODE(KEYCODE_E)
PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
+
+ PORT_START("P1_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_Z) PORT_CODE_INC(KEYCODE_X) PORT_PLAYER(1)
+
+ PORT_START("P2_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_N) PORT_CODE_INC(KEYCODE_M) PORT_PLAYER(2)
+
+ PORT_START("P3_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_Q) PORT_CODE_INC(KEYCODE_W) PORT_PLAYER(3)
+
+ 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)
INPUT_PORTS_END
@@ -163,7 +201,6 @@ static void astrocade_cart(device_slot_interface &device)
device.option_add_internal("rom", ASTROCADE_ROM_STD);
device.option_add_internal("rom_256k", ASTROCADE_ROM_256K);
device.option_add_internal("rom_512k", ASTROCADE_ROM_512K);
- device.option_add_internal("rom_cass", ASTROCADE_ROM_CASS);
}
static void astrocade_exp(device_slot_interface &device)
@@ -184,8 +221,6 @@ void astrocde_home_state::astrocde(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &astrocde_home_state::astrocade_mem);
m_maincpu->set_addrmap(AS_IO, &astrocde_home_state::astrocade_io);
- config.m_perfect_cpu_quantum = subtag("maincpu");
-
MCFG_MACHINE_START_OVERRIDE(astrocde_home_state, astrocde)
/* video hardware */
@@ -196,21 +231,14 @@ void astrocde_home_state::astrocde(machine_config &config)
PALETTE(config, "palette", FUNC(astrocde_home_state::astrocade_palette), 512);
- /* control ports */
- for (uint32_t port = 0; port < 4; port++)
- {
- ASTROCADE_CTRL_PORT(config, m_ctrl[port], astrocade_controllers, port == 0 ? "joy" : nullptr);
- m_ctrl[port]->ltpen_handler().set(FUNC(astrocde_home_state::lightpen_trigger_w));
- }
-
/* sound hardware */
SPEAKER(config, "mono").front_center();
ASTROCADE_IO(config, m_astrocade_sound1, ASTROCADE_CLOCK/4);
m_astrocade_sound1->si_cb().set(FUNC(astrocde_home_state::inputs_r));
- m_astrocade_sound1->pot_cb<0>().set(m_ctrl[0], FUNC(astrocade_ctrl_port_device::read_knob));
- m_astrocade_sound1->pot_cb<1>().set(m_ctrl[1], FUNC(astrocade_ctrl_port_device::read_knob));
- m_astrocade_sound1->pot_cb<2>().set(m_ctrl[2], FUNC(astrocade_ctrl_port_device::read_knob));
- m_astrocade_sound1->pot_cb<3>().set(m_ctrl[3], FUNC(astrocade_ctrl_port_device::read_knob));
+ m_astrocade_sound1->set_pot_tag<0>("P1_KNOB");
+ m_astrocade_sound1->set_pot_tag<1>("P2_KNOB");
+ m_astrocade_sound1->set_pot_tag<2>("P3_KNOB");
+ m_astrocade_sound1->set_pot_tag<3>("P4_KNOB");
m_astrocade_sound1->add_route(ALL_OUTPUTS, "mono", 1.0);
/* expansion port */
@@ -219,10 +247,6 @@ void astrocde_home_state::astrocde(machine_config &config)
/* cartridge */
ASTROCADE_CART_SLOT(config, m_cart, astrocade_cart, nullptr);
- /* cartridge */
- ASTROCADE_ACCESSORY_PORT(config, m_accessory, m_screen, astrocade_accessories, nullptr);
- m_accessory->ltpen_handler().set(FUNC(astrocde_home_state::lightpen_trigger_w));
-
/* Software lists */
SOFTWARE_LIST(config, "cart_list").set_original("astrocde");
}
@@ -257,7 +281,7 @@ ROM_END
void astrocde_state::init_astrocde()
{
- m_video_config = AC_SOUND_PRESENT;
+ m_video_config = AC_SOUND_PRESENT | AC_LIGHTPEN_INTS;
}
MACHINE_START_MEMBER(astrocde_home_state, astrocde)
@@ -268,10 +292,7 @@ MACHINE_START_MEMBER(astrocde_home_state, astrocde)
// 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));
- m_maincpu->space(AS_IO).install_readwrite_handler(0x0080, 0x00ff, 0x0000, 0x0000, 0xff00, read8_delegate(FUNC(astrocade_exp_device::read_io),(astrocade_exp_device*)m_exp), write8_delegate(FUNC(astrocade_exp_device::write_io),(astrocade_exp_device*)m_exp));
- }
}
/*************************************
diff --git a/src/mame/drivers/astropc.cpp b/src/mame/drivers/astropc.cpp
index f9fd2241caa..810a97b111c 100644
--- a/src/mame/drivers/astropc.cpp
+++ b/src/mame/drivers/astropc.cpp
@@ -51,13 +51,12 @@ INPUT_PORTS_END
-void astropc_state::astropc(machine_config &config)
-{
+MACHINE_CONFIG_START(astropc_state::astropc)
/* basic machine hardware */
- I486(config, m_maincpu, 40000000 ); // ??
- m_maincpu->set_addrmap(AS_PROGRAM, &astropc_state::astropc_map);
- m_maincpu->set_addrmap(AS_IO, &astropc_state::astropc_io);
-}
+ MCFG_DEVICE_ADD("maincpu", I486, 40000000 ) // ??
+ MCFG_DEVICE_PROGRAM_MAP(astropc_map)
+ MCFG_DEVICE_IO_MAP(astropc_io)
+MACHINE_CONFIG_END
ROM_START( blackbd )
diff --git a/src/mame/drivers/asuka.cpp b/src/mame/drivers/asuka.cpp
index 4e6dabd9abc..5a56bfb3429 100644
--- a/src/mame/drivers/asuka.cpp
+++ b/src/mame/drivers/asuka.cpp
@@ -275,7 +275,7 @@ WRITE_LINE_MEMBER(asuka_state::asuka_msm5205_vck)
if (m_adpcm_ff)
{
- m_adpcm_select->ba_w(m_sound_data[m_adpcm_pos]);
+ m_adpcm_select->write_ba(m_sound_data[m_adpcm_pos]);
m_adpcm_pos = (m_adpcm_pos + 1) & 0xffff;
}
}
diff --git a/src/mame/drivers/at.cpp b/src/mame/drivers/at.cpp
index 140882956b7..f9be6d14151 100644
--- a/src/mame/drivers/at.cpp
+++ b/src/mame/drivers/at.cpp
@@ -657,8 +657,7 @@ void megapc_state::megapc(machine_config &config)
// on board devices
ISA16(config, m_isabus, 0);
- m_isabus->set_memspace(m_maincpu, AS_PROGRAM);
- m_isabus->set_iospace(m_maincpu, AS_IO);
+ m_isabus->set_cputag("maincpu");
m_isabus->iochck_callback().set(m_wd7600, FUNC(wd7600_device::iochck_w));
m_isabus->irq2_callback().set(m_wd7600, FUNC(wd7600_device::irq09_w));
m_isabus->irq3_callback().set(m_wd7600, FUNC(wd7600_device::irq03_w));
diff --git a/src/mame/drivers/atari400.cpp b/src/mame/drivers/atari400.cpp
index 10c6bbcbdf3..03a5c7ba990 100644
--- a/src/mame/drivers/atari400.cpp
+++ b/src/mame/drivers/atari400.cpp
@@ -2018,7 +2018,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( a400_state::a5200_interrupt )
MACHINE_RESET_MEMBER( a400_state, a400 )
{
- m_pokey->write(15, 0);
+ m_pokey->write(machine().dummy_space(), 15, 0);
}
@@ -2158,7 +2158,7 @@ void a400_state::atari_common(machine_config &config)
atari_common_nodac(config);
DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.03);
- VOLTAGE_REGULATOR(config, "vref", 0).add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ VOLTAGE_REGULATOR(config, "vref", 0).set_output(5.0).add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* internal ram */
RAM(config, m_ram).set_default_size("48K");
diff --git a/src/mame/drivers/atari_s1.cpp b/src/mame/drivers/atari_s1.cpp
index 5b07c2a204e..f8d785178b0 100644
--- a/src/mame/drivers/atari_s1.cpp
+++ b/src/mame/drivers/atari_s1.cpp
@@ -450,11 +450,10 @@ void atari_s1_state::machine_reset()
m_audiores = 0;
}
-void atari_s1_state::atari_s1(machine_config &config)
-{
+MACHINE_CONFIG_START(atari_s1_state::atari_s1)
/* basic machine hardware */
- M6800(config, m_maincpu, MASTER_CLK);
- m_maincpu->set_addrmap(AS_PROGRAM, &atari_s1_state::atari_s1_map);
+ MCFG_DEVICE_ADD("maincpu", M6800, MASTER_CLK)
+ MCFG_DEVICE_PROGRAM_MAP(atari_s1_map)
WATCHDOG_TIMER(config, "watchdog");
@@ -462,29 +461,28 @@ void atari_s1_state::atari_s1(machine_config &config)
genpin_audio(config);
SPEAKER(config, "speaker").front_center();
- DAC_4BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.3); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.3) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
/* Video */
config.set_default_layout(layout_atari_s1);
- TIMER(config, "nmi").configure_periodic(FUNC(atari_s1_state::nmi), attotime::from_hz(NMI_INT));
- TIMER(config, "timer_s").configure_periodic(FUNC(atari_s1_state::timer_s), attotime::from_hz(AUDIO_CLK));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi", atari_s1_state, nmi, attotime::from_hz(NMI_INT))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_s", atari_s1_state, timer_s, attotime::from_hz(AUDIO_CLK))
+MACHINE_CONFIG_END
-void atari_s1_state::atarians(machine_config &config)
-{
+MACHINE_CONFIG_START(atari_s1_state::atarians)
atari_s1(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &atari_s1_state::atarians_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(atarians_map)
+MACHINE_CONFIG_END
-void atari_s1_state::midearth(machine_config &config)
-{
+MACHINE_CONFIG_START(atari_s1_state::midearth)
atari_s1(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &atari_s1_state::midearth_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(midearth_map)
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
/ The Atarians (11/1976)
diff --git a/src/mame/drivers/atari_s2.cpp b/src/mame/drivers/atari_s2.cpp
index 46db7f2d67c..ff198642ed3 100644
--- a/src/mame/drivers/atari_s2.cpp
+++ b/src/mame/drivers/atari_s2.cpp
@@ -479,11 +479,10 @@ void atari_s2_state::machine_reset()
}
-void atari_s2_state::atari_s2(machine_config &config)
-{
+MACHINE_CONFIG_START(atari_s2_state::atari_s2)
/* basic machine hardware */
- M6800(config, m_maincpu, XTAL(4'000'000) / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &atari_s2_state::atari_s2_map);
+ MCFG_DEVICE_ADD("maincpu", M6800, XTAL(4'000'000) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(atari_s2_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
WATCHDOG_TIMER(config, "watchdog");
@@ -491,24 +490,24 @@ void atari_s2_state::atari_s2(machine_config &config)
genpin_audio(config);
SPEAKER(config, "speaker").front_center();
- DAC_4BIT_BINARY_WEIGHTED(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.15); // r23-r26 (68k,33k,18k,8.2k)
- DAC_3BIT_BINARY_WEIGHTED(config, m_dac1, 0).add_route(ALL_OUTPUTS, "speaker", 0.15); // r18-r20 (100k,47k,100k)
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT).add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT).add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_4BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.15) // r23-r26 (68k,33k,18k,8.2k)
+ MCFG_DEVICE_ADD("dac1", DAC_3BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.15) // r18-r20 (100k,47k,100k)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
/* Video */
config.set_default_layout(layout_atari_s2);
- TIMER(config, "irq").configure_periodic(FUNC(atari_s2_state::irq), attotime::from_hz(XTAL(4'000'000) / 8192));
- TIMER(config, "timer_s").configure_periodic(FUNC(atari_s2_state::timer_s), attotime::from_hz(150000));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", atari_s2_state, irq, attotime::from_hz(XTAL(4'000'000) / 8192))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_s", atari_s2_state, timer_s, attotime::from_hz(150000))
+MACHINE_CONFIG_END
-void atari_s2_state::atari_s3(machine_config &config)
-{
+MACHINE_CONFIG_START(atari_s2_state::atari_s3)
atari_s2(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &atari_s2_state::atari_s3_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(atari_s3_map)
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
diff --git a/src/mame/drivers/atarifb.cpp b/src/mame/drivers/atarifb.cpp
index 127bfcbab2b..578b377fcac 100644
--- a/src/mame/drivers/atarifb.cpp
+++ b/src/mame/drivers/atarifb.cpp
@@ -557,70 +557,74 @@ void atarifb_state::machine_reset()
m_counter_y_in2b = 0;
}
-void atarifb_state::atarifb(machine_config &config)
-{
+MACHINE_CONFIG_START(atarifb_state::atarifb)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 750000);
- m_maincpu->set_addrmap(AS_PROGRAM, &atarifb_state::atarifb_map);
- m_maincpu->set_periodic_int(FUNC(atarifb_state::irq0_line_hold), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("maincpu", M6502, 750000)
+ MCFG_DEVICE_PROGRAM_MAP(atarifb_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(atarifb_state, irq0_line_hold, 4*60)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2037) /* 16.3ms * 1/8 = 2037.5. Is it 1/8th or 3/32nds? (1528?) */);
- m_screen->set_size(38*8, 32*8);
- m_screen->set_visarea(0*8, 38*8-1, 1*8, 31*8-1);
- m_screen->set_screen_update(FUNC(atarifb_state::screen_update_atarifb));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_atarifb);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2037) /* 16.3ms * 1/8 = 2037.5. Is it 1/8th or 3/32nds? (1528?) */)
+ MCFG_SCREEN_SIZE(38*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 38*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(atarifb_state, screen_update_atarifb)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_atarifb)
PALETTE(config, m_palette, FUNC(atarifb_state::atarifb_palette), 12);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- DISCRETE(config, m_discrete, atarifb_discrete).add_route(ALL_OUTPUTS, "mono", 0.18);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, atarifb_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.18)
+MACHINE_CONFIG_END
-void atarifb_state::atarifb4(machine_config &config)
-{
+MACHINE_CONFIG_START(atarifb_state::atarifb4)
atarifb(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &atarifb_state::atarifb4_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(atarifb4_map)
+MACHINE_CONFIG_END
-void atarifb_state::abaseb(machine_config &config)
-{
+MACHINE_CONFIG_START(atarifb_state::abaseb)
atarifb(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &atarifb_state::abaseb_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(abaseb_map)
/* video hardware */
- m_screen->set_screen_update(FUNC(atarifb_state::screen_update_abaseb));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(atarifb_state, screen_update_abaseb)
/* sound hardware */
- DISCRETE(config.replace(), m_discrete, abaseb_discrete).add_route(ALL_OUTPUTS, "mono", 0.24);
-}
+ MCFG_DEVICE_REPLACE("discrete", DISCRETE, abaseb_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.24)
+MACHINE_CONFIG_END
-void atarifb_state::soccer(machine_config &config)
-{
+MACHINE_CONFIG_START(atarifb_state::soccer)
atarifb(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &atarifb_state::soccer_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(soccer_map)
/* video hardware */
- m_screen->set_visarea(0*8, 38*8-1, 2*8, 32*8-1);
- m_screen->set_screen_update(FUNC(atarifb_state::screen_update_soccer));
- m_gfxdecode->set_info(gfx_soccer);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 38*8-1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(atarifb_state, screen_update_soccer)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_soccer)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/atarig1.cpp b/src/mame/drivers/atarig1.cpp
index a4d3de4453d..4e360ca8267 100644
--- a/src/mame/drivers/atarig1.cpp
+++ b/src/mame/drivers/atarig1.cpp
@@ -78,14 +78,14 @@ WRITE16_MEMBER(atarig1_state::mo_command_w)
WRITE16_MEMBER(atarig1_state::a2d_select_w)
{
if (m_adc.found())
- m_adc->address_offset_start_w(offset, 0);
+ m_adc->address_offset_start_w(space, offset, 0);
}
READ16_MEMBER(atarig1_state::a2d_data_r)
{
if (m_adc.found())
- return m_adc->data_r() << 8;
+ return m_adc->data_r(space, offset) << 8;
else
return m_in1->read();
}
@@ -396,11 +396,11 @@ static const atari_rle_objects_config modesc_pitfight =
*
*************************************/
-void atarig1_state::atarig1(machine_config &config)
-{
+MACHINE_CONFIG_START(atarig1_state::atarig1)
+
/* basic machine hardware */
- M68000(config, m_maincpu, ATARI_CLOCK_14MHz);
- m_maincpu->set_addrmap(AS_PROGRAM, &atarig1_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
MCFG_MACHINE_START_OVERRIDE(atarig1_state,atarig1)
MCFG_MACHINE_RESET_OVERRIDE(atarig1_state,atarig1)
@@ -410,20 +410,20 @@ void atarig1_state::atarig1(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- GFXDECODE(config, m_gfxdecode, "palette", gfx_atarig1);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_atarig1)
PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 1280);
/* initialize the playfield */
- TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64,64).set_info_callback(FUNC(atarig1_state::get_playfield_tile_info));
- TILEMAP(config, m_alpha_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64,32, 0).set_info_callback(FUNC(atarig1_state::get_alpha_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 2, atarig1_state, get_playfield_tile_info, 8,8, SCAN_ROWS, 64,64)
+ MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", "gfxdecode", 2, atarig1_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(atarig1_state::screen_update_atarig1));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set(FUNC(atarig1_state::video_int_write_line));
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(atarig1_state, screen_update_atarig1)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, atarig1_state, video_int_write_line))
MCFG_VIDEO_START_OVERRIDE(atarig1_state,atarig1)
@@ -434,7 +434,7 @@ void atarig1_state::atarig1(machine_config &config)
m_jsa->main_int_cb().set_inputline(m_maincpu, M68K_IRQ_2);
m_jsa->test_read_cb().set_ioport("IN0").bit(14);
m_jsa->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
void atarig1_state::hydrap(machine_config &config)
diff --git a/src/mame/drivers/atarig42.cpp b/src/mame/drivers/atarig42.cpp
index 8878331f30f..520a76e39a8 100644
--- a/src/mame/drivers/atarig42.cpp
+++ b/src/mame/drivers/atarig42.cpp
@@ -67,7 +67,7 @@ void atarig42_state::machine_reset()
WRITE8_MEMBER(atarig42_state::a2d_select_w)
{
if (m_adc.found())
- m_adc->address_offset_start_w(offset, 0);
+ m_adc->address_offset_start_w(space, offset, 0);
}
@@ -76,9 +76,9 @@ READ8_MEMBER(atarig42_state::a2d_data_r)
if (!m_adc.found())
return 0xff;
- uint8_t result = m_adc->data_r();
+ uint8_t result = m_adc->data_r(space, 0);
if (!machine().side_effects_disabled())
- m_adc->address_offset_start_w(offset, 0);
+ m_adc->address_offset_start_w(space, offset, 0);
return result;
}
@@ -515,29 +515,30 @@ static const atari_rle_objects_config modesc_0x400 =
*************************************/
MACHINE_CONFIG_START(atarig42_state::atarig42)
+
/* basic machine hardware */
- M68000(config, m_maincpu, ATARI_CLOCK_14MHz);
- m_maincpu->set_addrmap(AS_PROGRAM, &atarig42_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
EEPROM_2816(config, "eeprom").lock_after_write(true);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- GFXDECODE(config, m_gfxdecode, "palette", gfx_atarig42);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_atarig42)
PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 2048);
MCFG_TILEMAP_ADD_CUSTOM("playfield", "gfxdecode", 2, atarig42_state, get_playfield_tile_info, 8,8, atarig42_playfield_scan, 128,64)
- TILEMAP(config, m_alpha_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64,32, 0).set_info_callback(FUNC(atarig42_state::get_alpha_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", "gfxdecode", 2, atarig42_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(atarig42_state::screen_update_atarig42));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set(FUNC(atarig42_state::video_int_write_line));
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(atarig42_state, screen_update_atarig42)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, atarig42_state, video_int_write_line))
MCFG_VIDEO_START_OVERRIDE(atarig42_state,atarig42)
diff --git a/src/mame/drivers/atarigt.cpp b/src/mame/drivers/atarigt.cpp
index d5850333303..78ce47bb16a 100644
--- a/src/mame/drivers/atarigt.cpp
+++ b/src/mame/drivers/atarigt.cpp
@@ -185,9 +185,9 @@ READ8_MEMBER(atarigt_state::analog_port_r)
return 0xff;
}
#else
- uint8_t result = m_adc->data_r();
+ uint8_t result = m_adc->data_r(space, 0);
if (!machine().side_effects_disabled())
- m_adc->address_offset_start_w(offset, 0);
+ m_adc->address_offset_start_w(space, offset, 0);
return result;
#endif
}
@@ -806,28 +806,28 @@ static const atari_rle_objects_config modesc =
MACHINE_CONFIG_START(atarigt_state::atarigt)
/* basic machine hardware */
- M68EC020(config, m_maincpu, ATARI_CLOCK_50MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &atarigt_state::main_map);
- m_maincpu->set_periodic_int(FUNC(atarigt_state::scanline_int_gen), attotime::from_hz(250));
+ MCFG_DEVICE_ADD("maincpu", M68EC020, ATARI_CLOCK_50MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(atarigt_state, scanline_int_gen, 250)
MCFG_MACHINE_RESET_OVERRIDE(atarigt_state,atarigt)
EEPROM_2816(config, "eeprom").lock_after_write(true);
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_atarigt);
- PALETTE(config, m_palette).set_entries(MRAM_ENTRIES);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_atarigt)
+ MCFG_PALETTE_ADD("palette", MRAM_ENTRIES)
MCFG_TILEMAP_ADD_CUSTOM("playfield", "gfxdecode", 2, atarigt_state, get_playfield_tile_info, 8,8, atarigt_playfield_scan, 128,64)
- TILEMAP(config, m_alpha_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64, 32).set_info_callback(FUNC(atarigt_state::get_alpha_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD("alpha", "gfxdecode", 2, atarigt_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64, 32)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses a pair of GALs to determine H and V parameters */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(atarigt_state::screen_update_atarigt));
- m_screen->screen_vblank().set(FUNC(atarigt_state::video_int_write_line));
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(atarigt_state, screen_update_atarigt)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, atarigt_state, video_int_write_line))
MCFG_VIDEO_START_OVERRIDE(atarigt_state,atarigt)
diff --git a/src/mame/drivers/atarigx2.cpp b/src/mame/drivers/atarigx2.cpp
index f29764b4113..330245e37e5 100644
--- a/src/mame/drivers/atarigx2.cpp
+++ b/src/mame/drivers/atarigx2.cpp
@@ -77,9 +77,9 @@ READ32_MEMBER(atarigx2_state::special_port3_r)
READ8_MEMBER(atarigx2_state::a2d_data_r)
{
- uint8_t result = m_adc->data_r();
+ uint8_t result = m_adc->data_r(space, 0);
if (!machine().side_effects_disabled())
- m_adc->address_offset_start_w(offset, 0);
+ m_adc->address_offset_start_w(space, offset, 0);
return result;
}
@@ -1488,8 +1488,8 @@ static const atari_rle_objects_config modesc_0x400 =
MACHINE_CONFIG_START(atarigx2_state::atarigx2)
/* basic machine hardware */
- M68EC020(config, m_maincpu, ATARI_CLOCK_14MHz);
- m_maincpu->set_addrmap(AS_PROGRAM, &atarigx2_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68EC020, ATARI_CLOCK_14MHz)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
ADC0809(config, m_adc, ATARI_CLOCK_14MHz/16);
m_adc->in_callback<0>().set_ioport("A2D0");
@@ -1504,20 +1504,20 @@ MACHINE_CONFIG_START(atarigx2_state::atarigx2)
EEPROM_2816(config, "eeprom").lock_after_write(true);
/* video hardware */
- GFXDECODE(config, m_gfxdecode, "palette", gfx_atarigx2);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_atarigx2)
PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 2048);
MCFG_TILEMAP_ADD_CUSTOM("playfield", "gfxdecode", 2, atarigx2_state, get_playfield_tile_info, 8,8, atarigx2_playfield_scan, 128,64)
- TILEMAP(config, m_alpha_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64,32, 0).set_info_callback(FUNC(atarigx2_state::get_alpha_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", "gfxdecode", 2, atarigx2_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses a pair of GALs to determine H and V parameters */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(atarigx2_state::screen_update_atarigx2));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set(FUNC(atarigx2_state::video_int_write_line));
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(atarigx2_state, screen_update_atarigx2)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, atarigx2_state, video_int_write_line))
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
diff --git a/src/mame/drivers/atarist.cpp b/src/mame/drivers/atarist.cpp
index a6eb2d80444..c50ddb578ff 100644
--- a/src/mame/drivers/atarist.cpp
+++ b/src/mame/drivers/atarist.cpp
@@ -1867,7 +1867,7 @@ void st_state::machine_start()
configure_memory();
if (m_cart->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16s_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart));
// allocate timers
if (m_mousex.found())
@@ -1922,7 +1922,7 @@ void ste_state::machine_start()
configure_memory();
if (m_cart->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16s_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart));
/* allocate timers */
m_dmasound_timer = timer_alloc(TIMER_DMASOUND_TICK);
@@ -1969,7 +1969,7 @@ void stbook_state::machine_start()
}
if (m_cart->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16s_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart));
/* register for state saving */
ste_state::state_save();
@@ -2074,7 +2074,7 @@ void st_state::keyboard(machine_config &config)
}
//-------------------------------------------------
-// machine_config( st )
+// MACHINE_CONFIG( st )
//-------------------------------------------------
void st_state::st(machine_config &config)
@@ -2106,7 +2106,7 @@ void st_state::st(machine_config &config)
//-------------------------------------------------
-// machine_config( megast )
+// MACHINE_CONFIG( megast )
//-------------------------------------------------
void megast_state::megast(machine_config &config)
@@ -2141,7 +2141,7 @@ void megast_state::megast(machine_config &config)
//-------------------------------------------------
-// machine_config( ste )
+// MACHINE_CONFIG( ste )
//-------------------------------------------------
void ste_state::ste(machine_config &config)
@@ -2171,7 +2171,7 @@ void ste_state::ste(machine_config &config)
LMC1992(config, LMC1992_TAG);
// cartridge
-// SOFTWARE_LIST(config, "cart_list").set_original("ste_cart");
+// MCFG_SOFTWARE_LIST_ADD("cart_list", "ste_cart")
// internal ram
RAM(config, m_ram);
@@ -2181,7 +2181,7 @@ void ste_state::ste(machine_config &config)
//-------------------------------------------------
-// machine_config( megaste )
+// MACHINE_CONFIG( megaste )
//-------------------------------------------------
void megaste_state::megaste(machine_config &config)
@@ -2198,7 +2198,7 @@ void megaste_state::megaste(machine_config &config)
//-------------------------------------------------
-// machine_config( stbook )
+// MACHINE_CONFIG( stbook )
//-------------------------------------------------
#if 0
void stbook_state::stbook(machine_config &config)
@@ -2282,7 +2282,7 @@ void stbook_state::stbook(machine_config &config)
#endif
//-------------------------------------------------
-// machine_config( tt030 )
+// MACHINE_CONFIG( tt030 )
//-------------------------------------------------
void ste_state::tt030(machine_config &config)
@@ -2292,7 +2292,7 @@ void ste_state::tt030(machine_config &config)
//-------------------------------------------------
-// machine_config( falcon )
+// MACHINE_CONFIG( falcon )
//-------------------------------------------------
void ste_state::falcon(machine_config &config)
@@ -2302,7 +2302,7 @@ void ste_state::falcon(machine_config &config)
//-------------------------------------------------
-// machine_config( falcon40 )
+// MACHINE_CONFIG( falcon40 )
//-------------------------------------------------
void ste_state::falcon40(machine_config &config)
diff --git a/src/mame/drivers/atarisy1.cpp b/src/mame/drivers/atarisy1.cpp
index 7c9b8fbff0b..251ecf21fb5 100644
--- a/src/mame/drivers/atarisy1.cpp
+++ b/src/mame/drivers/atarisy1.cpp
@@ -261,7 +261,7 @@ READ8_MEMBER(atarisy1_state::adc_r)
if (!m_adc.found())
return 0xff;
- int value = m_adc->data_r();
+ int value = m_adc->data_r(space, 0);
if (!machine().side_effects_disabled())
adc_w(space, offset, 0);
@@ -275,7 +275,7 @@ WRITE8_MEMBER(atarisy1_state::adc_w)
if (!m_adc.found())
return;
- m_adc->address_offset_start_w(offset & 7, 0);
+ m_adc->address_offset_start_w(space, offset & 7, 0);
/* the A4 bit enables/disables joystick IRQs */
m_ajsint->in_w<0>(!BIT(offset, 3));
@@ -724,14 +724,14 @@ void atarisy1_state::add_adc(machine_config &config)
m_ajsint->output_handler().set(FUNC(atarisy1_state::joystick_int));
}
-void atarisy1_state::atarisy1(machine_config &config)
-{
+MACHINE_CONFIG_START(atarisy1_state::atarisy1)
+
/* basic machine hardware */
- M68010(config, m_maincpu, ATARI_CLOCK_14MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &atarisy1_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68010, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- M6502(config, m_audiocpu, ATARI_CLOCK_14MHz/8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &atarisy1_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
MCFG_MACHINE_START_OVERRIDE(atarisy1_state,atarisy1)
MCFG_MACHINE_RESET_OVERRIDE(atarisy1_state,atarisy1)
@@ -747,29 +747,29 @@ void atarisy1_state::atarisy1(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
- TIMER(config, m_scanline_timer).configure_generic(FUNC(atarisy1_state::atarisy1_int3_callback));
- TIMER(config, m_int3off_timer).configure_generic(FUNC(atarisy1_state::atarisy1_int3off_callback));
- TIMER(config, m_yscroll_reset_timer).configure_generic(FUNC(atarisy1_state::atarisy1_reset_yscroll_callback));
+ MCFG_TIMER_DRIVER_ADD("scan_timer", atarisy1_state, atarisy1_int3_callback)
+ MCFG_TIMER_DRIVER_ADD("int3off_timer", atarisy1_state, atarisy1_int3off_callback)
+ MCFG_TIMER_DRIVER_ADD("yreset_timer", atarisy1_state, atarisy1_reset_yscroll_callback)
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_atarisy1);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_atarisy1)
PALETTE(config, m_palette).set_format(palette_device::IRGB_4444, 1024);
- TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64,64).set_info_callback(FUNC(atarisy1_state::get_playfield_tile_info));
- TILEMAP(config, m_alpha_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64,32, 0).set_info_callback(FUNC(atarisy1_state::get_alpha_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 2, atarisy1_state, get_playfield_tile_info, 8,8, SCAN_ROWS, 64,64)
+ MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", "gfxdecode", 2, atarisy1_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, atarisy1_state::s_mob_config);
m_mob->set_gfxdecode(m_gfxdecode);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* video timing comes from an 82S163 (H) and an 82S129 (V) */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(atarisy1_state::screen_update_atarisy1));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(atarisy1_state::video_int_write_line));
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(atarisy1_state, screen_update_atarisy1)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, atarisy1_state, video_int_write_line))
MCFG_VIDEO_START_OVERRIDE(atarisy1_state,atarisy1)
@@ -784,13 +784,13 @@ void atarisy1_state::atarisy1(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.80);
ymsnd.add_route(1, "rspeaker", 0.80);
- pokey_device &pokey(POKEY(config, "pokey", ATARI_CLOCK_14MHz/8));
- pokey.add_route(ALL_OUTPUTS, "lspeaker", 0.40);
- pokey.add_route(ALL_OUTPUTS, "rspeaker", 0.40);
+ MCFG_DEVICE_ADD("pokey", POKEY, ATARI_CLOCK_14MHz/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
- TMS5220C(config, m_tms, ATARI_CLOCK_14MHz/2/11);
- m_tms->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_tms->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("tms", TMS5220C, ATARI_CLOCK_14MHz/2/11)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
/* via */
via6522_device &via(VIA6522(config, "via6522_0", ATARI_CLOCK_14MHz/8));
@@ -798,7 +798,7 @@ void atarisy1_state::atarisy1(machine_config &config)
via.readpb_handler().set(FUNC(atarisy1_state::via_pb_r));
via.writepa_handler().set(FUNC(atarisy1_state::via_pa_w));
via.writepb_handler().set(FUNC(atarisy1_state::via_pb_w));
-}
+MACHINE_CONFIG_END
void atarisy1_state::marble(machine_config &config)
{
diff --git a/src/mame/drivers/atarittl.cpp b/src/mame/drivers/atarittl.cpp
index 4db1900cf0d..3d969530dce 100644
--- a/src/mame/drivers/atarittl.cpp
+++ b/src/mame/drivers/atarittl.cpp
@@ -37,6 +37,7 @@
TM-019 Pursuit (1975) K8P-B 90128 NO
TM-012,029,034 Quadrapong (1974) A000845 NO
TM-009 Qwak!/Quack (1974) A000937,A000953 YES 72074/37-2530N (K9)
+ TM-001,023,029,032 Rebound/Spike/Volleyball (1974) A000517,A000846,SPIKE-(A or B) NO
TM-047 Shark JAWS (1975) A003806 YES 004182, 004183
TM-008,029 Space Race (1973) A000803 NO
TM-046 Steeplechase/Astroturf (1975) A003750 YES 003774 ROM Bugle (C8), 003773-01 "A" Horse (C4), 003773-02 "B" Horse (D4)
@@ -64,6 +65,7 @@
7406 Hex Inverter Buffers/Drivers with O.C. H.V. Outputs (note: Might not be needed, could just clone from 7404)
7414 Hex Schmitt-Trigger Inverters
7417 Hex Buffers/Drivers
+ 74164 8-bit Serial-In, Parallel-Out Shift Register
9301 1-of-10 Decoder
LM339 Quad Comparator
@@ -200,14 +202,10 @@ class gtrak10_state : public driver_device
public:
gtrak10_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
- , m_video(*this, "fixfreq")
{
}
void gtrak10(machine_config &config);
-
-private:
- required_device<fixedfreq_device> m_video;
};
static NETLIST_START(atarikee)
@@ -326,29 +324,27 @@ uint32_t stuntcyc_state::screen_update_stuntcyc(screen_device &screen, bitmap_rg
return 0;
}
-void atarikee_state::atarikee(machine_config &config)
-{
+MACHINE_CONFIG_START(atarikee_state::atarikee)
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_atarikee);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(atarikee)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL);
- m_video->set_vert_params(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.30);
-}
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
//#define STUNTCYC_NL_CLOCK (14318181*69)
#define STUNTCYC_NL_CLOCK (SC_HTOTAL*SC_VTOTAL*60*140)
MACHINE_CONFIG_START(stuntcyc_state::stuntcyc)
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, STUNTCYC_NL_CLOCK);
- m_maincpu->set_constructor(netlist_stuntcyc);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, STUNTCYC_NL_CLOCK)
+ MCFG_NETLIST_SETUP(stuntcyc)
//MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "vid0", "VIDEO_OUT", fixedfreq_device, update_vid, "fixfreq")
MCFG_NETLIST_LOGIC_OUTPUT("maincpu", "probe_bit0", "probe_bit0", stuntcyc_state, probe_bit0_cb, "")
@@ -361,22 +357,23 @@ MACHINE_CONFIG_START(stuntcyc_state::stuntcyc)
MCFG_NETLIST_LOGIC_OUTPUT("maincpu", "probe_clock", "probe_clock", stuntcyc_state, probe_clock_cb, "")
/* video hardware */
- SCREEN(config, m_probe_screen, SCREEN_TYPE_RASTER);
- m_probe_screen->set_screen_update(FUNC(stuntcyc_state::screen_update_stuntcyc));
- m_probe_screen->set_raw(SC_HTOTAL*SC_VTOTAL*60, SC_HTOTAL, 0, SC_HTOTAL, SC_VTOTAL, 0, SC_VTOTAL);
- //FIXFREQ(config, m_video).set_screen("screen");
- //m_video->set_monitor_clock(SC_VIDCLOCK);
- //m_video->set_horz_params(SC_HTOTAL-67,SC_HTOTAL-40,SC_HTOTAL-8, SC_HTOTAL);
- //m_video->set_vert_params(SC_VTOTAL-22,SC_VTOTAL-19,SC_VTOTAL-12,SC_VTOTAL);
- //m_video->set_fieldcount(1);
- //m_video->set_threshold(0.30);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(stuntcyc_state, screen_update_stuntcyc)
+ MCFG_SCREEN_RAW_PARAMS(SC_HTOTAL*SC_VTOTAL*60, SC_HTOTAL, 0, SC_HTOTAL, SC_VTOTAL, 0, SC_VTOTAL)
+ //MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ //MCFG_FIXFREQ_MONITOR_CLOCK(SC_VIDCLOCK)
+ //MCFG_FIXFREQ_HORZ_PARAMS(SC_HTOTAL-67,SC_HTOTAL-40,SC_HTOTAL-8, SC_HTOTAL)
+ //MCFG_FIXFREQ_VERT_PARAMS(SC_VTOTAL-22,SC_VTOTAL-19,SC_VTOTAL-12,SC_VTOTAL)
+ //MCFG_FIXFREQ_FIELDCOUNT(1)
+ //MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(gtrak10_state::gtrak10)
/* basic machine hardware */
- NETLIST_CPU(config, "maincpu", NETLIST_CLOCK).set_constructor(netlist_gtrak10);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(gtrak10)
- MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "vid0", "VIDEO_OUT", fixedfreq_device, update_composite_monochrome, "fixfreq")
+ MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "vid0", "VIDEO_OUT", fixedfreq_device, update_vid, "fixfreq")
/* video hardware */
@@ -399,16 +396,15 @@ MACHINE_CONFIG_START(gtrak10_state::gtrak10)
Vert Back Porch = 0
*/
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(GTRAK10_VIDCLOCK);
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(GTRAK10_VIDCLOCK)
// Length of active video, end of front-porch, end of sync signal, end of line/frame
- m_video->set_horz_params(GTRAK10_HTOTAL*1 - 32, GTRAK10_HTOTAL*1 - 32, GTRAK10_HTOTAL*1 - 31, GTRAK10_HTOTAL*1);
- //m_video->set_horz_params(GTRAK10_HTOTAL - 32, GTRAK10_HTOTAL - 32, GTRAK10_HTOTAL - 31, GTRAK10_HTOTAL);
- m_video->set_vert_params( GTRAK10_VTOTAL - 8, GTRAK10_VTOTAL - 8, GTRAK10_VTOTAL, GTRAK10_VTOTAL);
- m_video->set_fieldcount(2);
- m_video->set_threshold(1.0);
- //m_video->set_gain(1.50);
+ MCFG_FIXFREQ_HORZ_PARAMS(GTRAK10_HTOTAL*1 - 32, GTRAK10_HTOTAL*1 - 32, GTRAK10_HTOTAL*1 - 31, GTRAK10_HTOTAL*1)
+ //MCFG_FIXFREQ_HORZ_PARAMS(GTRAK10_HTOTAL - 32, GTRAK10_HTOTAL - 32, GTRAK10_HTOTAL - 31, GTRAK10_HTOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS( GTRAK10_VTOTAL - 8, GTRAK10_VTOTAL - 8, GTRAK10_VTOTAL, GTRAK10_VTOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(2)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(1.0)
+ //MCFG_FIXFREQ_GAIN(1.50)
MACHINE_CONFIG_END
@@ -683,6 +679,10 @@ ROM_START( quadpong )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
ROM_END
+ROM_START( rebound )
+ ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
+ROM_END
+
ROM_START( spacrace )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
ROM_END
@@ -738,6 +738,7 @@ GAME(1975, tankii, 0, atarikee, 0, atarikee_state, empty_init,
//GAME(1974, pinpong, 0, atarikee, 0, atarikee_state, empty_init, ROT0, "Atari", "Pin Pong [TTL]", MACHINE_IS_SKELETON)
//GAME(1975, pursuit, 0, atarikee, 0, atarikee_state, empty_init, ROT0, "Atari", "Pursuit [TTL]", MACHINE_IS_SKELETON)
//GAME(1974, quadpong, eliminat, atarikee, 0, atarikee_state, empty_init, ROT0, "Atari", "Quadrapong [TTL]", MACHINE_IS_SKELETON)
+//GAME(1974, rebound, 0, atarikee, 0, atarikee_state, empty_init, ROT0, "Atari/Kee", "Rebound/Spike/Volleyball [TTL]", MACHINE_IS_SKELETON)
//GAME(1973, spacrace, 0, atarikee, 0, atarikee_state, empty_init, ROT0, "Atari", "Space Race [TTL]", MACHINE_IS_SKELETON)
//GAME(1974, touchme, 0, atarikee, 0, atarikee_state, empty_init, ROT0, "Atari", "Touch-Me [TTL]", MACHINE_IS_SKELETON) //?
//GAME(1974, worldcup, 0, atarikee, 0, atarikee_state, empty_init, ROT0, "Atari", "World Cup/World Cup Football [TTL]", MACHINE_IS_SKELETON)
diff --git a/src/mame/drivers/atetris.cpp b/src/mame/drivers/atetris.cpp
index 1b9d58ee07d..1f87ca5c03a 100644
--- a/src/mame/drivers/atetris.cpp
+++ b/src/mame/drivers/atetris.cpp
@@ -195,9 +195,9 @@ void atetris_state::atetrisb2_map(address_map &map)
map(0x1000, 0x1fff).ram().w(FUNC(atetris_state::videoram_w)).share("videoram");
map(0x2000, 0x20ff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
map(0x2400, 0x25ff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write));
- map(0x2802, 0x2802).w("sn1", FUNC(sn76496_device::write));
- map(0x2804, 0x2804).w("sn2", FUNC(sn76496_device::write));
- map(0x2806, 0x2806).w("sn3", FUNC(sn76496_device::write));
+ map(0x2802, 0x2802).w("sn1", FUNC(sn76496_device::command_w));
+ map(0x2804, 0x2804).w("sn2", FUNC(sn76496_device::command_w));
+ map(0x2806, 0x2806).w("sn3", FUNC(sn76496_device::command_w));
map(0x2808, 0x2808).portr("IN0");
map(0x2808, 0x280f).nopw();
map(0x2818, 0x2818).portr("IN1");
diff --git a/src/mame/drivers/atlantis.cpp b/src/mame/drivers/atlantis.cpp
index 87d344b0d0d..0ad435ef004 100644
--- a/src/mame/drivers/atlantis.cpp
+++ b/src/mame/drivers/atlantis.cpp
@@ -333,7 +333,7 @@ WRITE32_MEMBER(atlantis_state::board_ctrl_w)
m_cmos_write_enabled = true;
break;
case WDOG:
- m_rtc->watchdog_write();
+ m_rtc->watchdog_write(space, offset, data);
break;
default:
if (LOG_IRQ)
@@ -345,7 +345,7 @@ WRITE32_MEMBER(atlantis_state::board_ctrl_w)
READ8_MEMBER(atlantis_state::cmos_r)
{
- uint8_t result = m_rtc->read(offset);
+ uint8_t result = m_rtc->read(space, offset);
// Initial RTC check expects reads to the RTC to take some time
if (offset == 0x7ff9)
m_maincpu->eat_cycles(30);
@@ -367,7 +367,7 @@ WRITE8_MEMBER(atlantis_state::cmos_w)
m_serial_count = 0;
}
else if (m_cmos_write_enabled) {
- m_rtc->write(offset, data);
+ m_rtc->write(space, offset, data);
m_cmos_write_enabled = false;
if (LOG_RTC || offset >= 0x7ff0)
logerror("%s:RTC write to offset %04X = %08X & %08X\n", machine().describe_context(), offset, data, mem_mask);
diff --git a/src/mame/drivers/atm.cpp b/src/mame/drivers/atm.cpp
index 99c9ffe7a0f..ee761f51e36 100644
--- a/src/mame/drivers/atm.cpp
+++ b/src/mame/drivers/atm.cpp
@@ -187,28 +187,25 @@ static GFXDECODE_START( gfx_atmtb2 )
GFXDECODE_END
-void atm_state::atm(machine_config &config)
-{
+MACHINE_CONFIG_START(atm_state::atm)
spectrum_128(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &atm_state::atm_mem);
- m_maincpu->set_addrmap(AS_IO, &atm_state::atm_io);
- m_maincpu->set_addrmap(AS_OPCODES, &atm_state::atm_switch);
-
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(atm_mem)
+ MCFG_DEVICE_IO_MAP(atm_io)
+ MCFG_DEVICE_OPCODES_MAP(atm_switch)
MCFG_MACHINE_RESET_OVERRIDE(atm_state, atm )
BETA_DISK(config, m_beta, 0);
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_atm);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_atm)
- config.device_remove("exp");
-}
+ MCFG_DEVICE_REMOVE("exp")
+MACHINE_CONFIG_END
-void atm_state::atmtb2(machine_config &config)
-{
+MACHINE_CONFIG_START(atm_state::atmtb2)
atm(config);
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_atmtb2);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_atmtb2)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/atom.cpp b/src/mame/drivers/atom.cpp
index 5a46cf62aaa..7e3588e92d3 100644
--- a/src/mame/drivers/atom.cpp
+++ b/src/mame/drivers/atom.cpp
@@ -220,7 +220,7 @@ WRITE8_MEMBER( atomeb_state::eprom_w )
READ8_MEMBER( atomeb_state::ext_r )
{
if (m_ext[m_eprom & 0x0f]->exists())
- return m_ext[m_eprom & 0x0f]->read_rom(offset);
+ return m_ext[m_eprom & 0x0f]->read_rom(space, offset);
else
return 0xff;
}
@@ -232,9 +232,9 @@ READ8_MEMBER( atomeb_state::ext_r )
READ8_MEMBER( atomeb_state::dos_r )
{
if (m_e0->exists() && !BIT(m_eprom, 7))
- return m_e0->read_rom(offset);
+ return m_e0->read_rom(space, offset);
else if (m_e1->exists() && BIT(m_eprom, 7))
- return m_e1->read_rom(offset);
+ return m_e1->read_rom(space, offset);
else
return 0xff;
}
@@ -663,7 +663,7 @@ void atom_state::machine_start()
m_baseram[0x0b] = machine().rand() & 0x0ff;
if (m_cart.found() && m_cart->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0xa000, 0xafff, read8sm_delegate(FUNC(generic_slot_device::read_rom), &*m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0xa000, 0xafff, read8_delegate(FUNC(generic_slot_device::read_rom), &*m_cart));
}
/*-------------------------------------------------
@@ -710,22 +710,22 @@ FLOPPY_FORMATS_END0
MACHINE_CONFIG_START(atom_state::atom)
/* basic machine hardware */
- M6502(config, m_maincpu, X2/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &atom_state::atom_mem);
+ MCFG_DEVICE_ADD(SY6502_TAG, M6502, X2/4)
+ MCFG_DEVICE_PROGRAM_MAP(atom_mem)
/* video hardware */
- SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER);
+ MCFG_SCREEN_MC6847_PAL_ADD(SCREEN_TAG, MC6847_TAG)
- MC6847_PAL(config, m_vdg, XTAL(4'433'619));
- m_vdg->input_callback().set(FUNC(atom_state::vdg_videoram_r));
- m_vdg->set_screen(SCREEN_TAG);
+ MCFG_DEVICE_ADD(MC6847_TAG, MC6847_PAL, XTAL(4'433'619))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(*this, atom_state, vdg_videoram_r))
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* devices */
- TIMER(config, "hz2400").configure_periodic(FUNC(atom_state::cassette_output_tick), attotime::from_hz(4806));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("hz2400", atom_state, cassette_output_tick, attotime::from_hz(4806))
via6522_device &via(VIA6522(config, R6522_TAG, X2/4));
via.writepa_handler().set("cent_data_out", FUNC(output_latch_device::bus_w));
@@ -741,22 +741,23 @@ MACHINE_CONFIG_START(atom_state::atom)
I8271(config, m_fdc, 0);
m_fdc->intrq_wr_callback().set(FUNC(atom_state::atom_8271_interrupt_callback));
m_fdc->hdl_wr_callback().set(FUNC(atom_state::motor_w));
- FLOPPY_CONNECTOR(config, I8271_TAG ":0", atom_floppies, "525sssd", atom_state::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, I8271_TAG ":1", atom_floppies, "525sssd", atom_state::floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD(I8271_TAG ":0", atom_floppies, "525sssd", atom_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD(I8271_TAG ":1", atom_floppies, "525sssd", atom_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(R6522_TAG, FUNC(via6522_device::write_ca1));
- m_centronics->busy_handler().set(R6522_TAG, FUNC(via6522_device::write_pa7));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(R6522_TAG, via6522_device, write_ca1))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(R6522_TAG, via6522_device, write_pa7))
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(atom_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
- m_cassette->set_interface("atom_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(atom_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
+ MCFG_CASSETTE_INTERFACE("atom_cass")
- MCFG_QUICKLOAD_ADD("quickload", atom_state, atom_atm, "atm")
+ MCFG_QUICKLOAD_ADD("quickload", atom_state, atom_atm, "atm", 0)
/* utility rom slot */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_linear_slot, "atom_cart")
@@ -767,9 +768,9 @@ MACHINE_CONFIG_START(atom_state::atom)
RAM(config, RAM_TAG).set_default_size("32K").set_extra_options("2K,4K,6K,8K,10K,12K").set_default_value(0x00);
/* Software lists */
- SOFTWARE_LIST(config, "rom_list").set_original("atom_rom");
- SOFTWARE_LIST(config, "cass_list").set_original("atom_cass");
- SOFTWARE_LIST(config, "flop_list").set_original("atom_flop");
+ MCFG_SOFTWARE_LIST_ADD("rom_list","atom_rom")
+ MCFG_SOFTWARE_LIST_ADD("cass_list","atom_cass")
+ MCFG_SOFTWARE_LIST_ADD("flop_list","atom_flop")
MACHINE_CONFIG_END
/*-------------------------------------------------
@@ -783,10 +784,11 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(atomeb_state::atomeb)
atom(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &atomeb_state::atomeb_mem);
+ MCFG_DEVICE_MODIFY(SY6502_TAG)
+ MCFG_DEVICE_PROGRAM_MAP(atomeb_mem)
/* cartridges */
- config.device_remove("cartslot");
+ MCFG_DEVICE_REMOVE("cartslot")
MCFG_ATOM_ROM_ADD("rom_a0", ext_load<0x0>)
MCFG_ATOM_ROM_ADD("rom_a1", ext_load<0x1>)
@@ -813,25 +815,24 @@ MACHINE_CONFIG_END
MACHINE_DRIVER( atombb )
-------------------------------------------------*/
-void atom_state::atombb(machine_config &config)
-{
+MACHINE_CONFIG_START(atom_state::atombb)
/* basic machine hardware */
- M6502(config, m_maincpu, X2/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &atom_state::atombb_mem);
+ MCFG_DEVICE_ADD(SY6502_TAG, M6502, X2/4)
+ MCFG_DEVICE_PROGRAM_MAP(atombb_mem)
/* video hardware */
- SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER);
+ MCFG_SCREEN_MC6847_PAL_ADD(SCREEN_TAG, MC6847_TAG)
- MC6847_PAL(config, m_vdg, XTAL(4'433'619));
- m_vdg->input_callback().set(FUNC(atom_state::vdg_videoram_r));
- m_vdg->set_screen(SCREEN_TAG);
+ MCFG_DEVICE_ADD(MC6847_TAG, MC6847_PAL, XTAL(4'433'619))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(*this, atom_state, vdg_videoram_r))
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* devices */
- TIMER(config, "hz2400").configure_periodic(FUNC(atom_state::cassette_output_tick), attotime::from_hz(4806));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("hz2400", atom_state, cassette_output_tick, attotime::from_hz(4806))
via6522_device &via(VIA6522(config, R6522_TAG, X2/4));
via.writepa_handler().set("cent_data_out", FUNC(output_latch_device::bus_w));
@@ -844,73 +845,73 @@ void atom_state::atombb(machine_config &config)
ppi.in_pc_callback().set(FUNC(atom_state::ppi_pc_r));
ppi.out_pc_callback().set(FUNC(atom_state::ppi_pc_w));
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(R6522_TAG, FUNC(via6522_device::write_ca1));
- m_centronics->busy_handler().set(R6522_TAG, FUNC(via6522_device::write_pa7));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(R6522_TAG, via6522_device, write_ca1))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(R6522_TAG, via6522_device, write_pa7))
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(atom_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
- m_cassette->set_interface("atom_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(atom_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
+ MCFG_CASSETTE_INTERFACE("atom_cass")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("16K").set_extra_options("8K,12K");
-}
+MACHINE_CONFIG_END
/*-------------------------------------------------
MACHINE_DRIVER( prophet2 )
-------------------------------------------------*/
-//void atom_state::prophet2(machine_config &config)
-//{
+//static MACHINE_CONFIG_START( prophet2 )
// atom(config);
// /* basic machine hardware */
-// m_maincpu->set_addrmap(AS_PROGRAM, &atom_state::prophet_mem);
+// MCFG_DEVICE_MODIFY(SY6502_TAG)
+// MCFG_DEVICE_PROGRAM_MAP(prophet_mem)
//
// /* fdc */
-// config.device_remove(I8271_TAG);
-// config.device_remove(I8271_TAG ":0");
-// config.device_remove(I8271_TAG ":1");
+// MCFG_DEVICE_REMOVE(I8271_TAG)
+// MCFG_DEVICE_REMOVE(I8271_TAG ":0")
+// MCFG_DEVICE_REMOVE(I8271_TAG ":1")
//
// /* internal ram */
-// subdevice<ram_device>(RAM_TAG)->set_default_size("32K");
+// MCFG_RAM_MODIFY(RAM_TAG)
+// MCFG_RAM_DEFAULT_SIZE("32K")
// /* Software lists */
-// config.device_remove("rom_list");
-// config.device_remove("flop_list");
-//}
+// MCFG_SOFTWARE_LIST_REMOVE("rom_list")
+// MCFG_SOFTWARE_LIST_REMOVE("flop_list")
+//MACHINE_CONFIG_END
/*-------------------------------------------------
MACHINE_DRIVER( prophet3 )
-------------------------------------------------*/
-//void atom_state::prophet3(machine_config &config)
-//{
+//static MACHINE_CONFIG_START( prophet3 )
// atom(config);
// /* basic machine hardware */
-// m_maincpu->set_addrmap(AS_PROGRAM, &atom_state::prophet_mem);
+// MCFG_DEVICE_MODIFY(SY6502_TAG)
+// MCFG_DEVICE_PROGRAM_MAP(prophet_mem)
//
// /* internal ram */
-// subdevice<ram_device>(RAM_TAG)->set_default_size("32K");
+// MCFG_RAM_MODIFY(RAM_TAG)
+// MCFG_RAM_DEFAULT_SIZE("32K")
// /* Software lists */
-// config.device_remove("rom_list");
-//}
+// MCFG_SOFTWARE_LIST_REMOVE("rom_list")
+//MACHINE_CONFIG_END
/*-------------------------------------------------
MACHINE_DRIVER( atommc )
-------------------------------------------------*/
-//void atom_state::atommc(machine_config &config)
-//{
+//static MACHINE_CONFIG_START( atommc )
// atom(config);
// /* Software lists */
-// SOFTWARE_LIST(config, "mmc_list").set_original("atom_mmc");
-// config.device_remove("flop_list");
-//}
+// MCFG_SOFTWARE_LIST_ADD("mmc_list","atom_mmc")
+// MCFG_SOFTWARE_LIST_REMOVE("flop_list")
+//MACHINE_CONFIG_END
/***************************************************************************
ROMS
diff --git a/src/mame/drivers/atronic.cpp b/src/mame/drivers/atronic.cpp
index 76f28412ad7..f198a5e0e23 100644
--- a/src/mame/drivers/atronic.cpp
+++ b/src/mame/drivers/atronic.cpp
@@ -65,24 +65,24 @@ static INPUT_PORTS_START( atronic )
INPUT_PORTS_END
-void atronic_state::atronic(machine_config &config)
-{
+MACHINE_CONFIG_START(atronic_state::atronic)
/* basic machine hardware */
- Z180(config, m_maincpu, 6000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &atronic_state::atronic_map);
- m_maincpu->set_addrmap(AS_IO, &atronic_state::atronic_portmap);
- m_maincpu->set_vblank_int("screen", FUNC(atronic_state::irq0_line_hold));
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_screen_update(FUNC(atronic_state::screen_update));
- screen.set_size(32*8, 32*8);
- screen.set_visarea_full();
- screen.set_palette("palette");
-
- PALETTE(config, "palette").set_entries(8);
-}
+ MCFG_DEVICE_ADD("maincpu", Z180, 6000000)
+ MCFG_DEVICE_PROGRAM_MAP(atronic_map)
+ MCFG_DEVICE_IO_MAP(atronic_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atronic_state, irq0_line_hold)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_UPDATE_DRIVER(atronic_state, screen_update)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 8)
+
+MACHINE_CONFIG_END
ROM_START( atronic )
diff --git a/src/mame/drivers/att4425.cpp b/src/mame/drivers/att4425.cpp
index 66ddf53740e..358703a5c43 100644
--- a/src/mame/drivers/att4425.cpp
+++ b/src/mame/drivers/att4425.cpp
@@ -237,8 +237,7 @@ static const z80_daisy_config att4425_daisy_chain[] =
{ nullptr }
};
-void att4425_state::att4425(machine_config &config)
-{
+MACHINE_CONFIG_START(att4425_state::att4425)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(32'000'000)/8); // XXX
m_maincpu->set_addrmap(AS_PROGRAM, &att4425_state::att4425_mem);
@@ -246,14 +245,14 @@ void att4425_state::att4425(machine_config &config)
m_maincpu->set_daisy_config(att4425_daisy_chain);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER, rgb_t::green());
- m_screen->set_refresh_hz(50);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_screen_update(FUNC(att4425_state::screen_update));
- m_screen->set_palette("palette");
- m_screen->set_size(720, 351);
- m_screen->set_visarea(0, 720-1, 0, 351-1);
- GFXDECODE(config, "gfxdecode", "palette", gfx_att4425);
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(att4425_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_SIZE(720, 351)
+ MCFG_SCREEN_VISIBLE_AREA(0, 720-1, 0, 351-1)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_att4425)
PALETTE(config, "palette", palette_device::MONOCHROME_HIGHLIGHT);
// ch.3 -- timer?
@@ -283,8 +282,8 @@ void att4425_state::att4425(machine_config &config)
rs232b.rxd_handler().set(m_sio, FUNC(z80sio_device::rxb_w));
// XXX
- clock_device &line_clock(CLOCK(config, "line_clock", 9600*64));
- line_clock.signal_handler().set(FUNC(att4425_state::write_line_clock));
+ MCFG_DEVICE_ADD("line_clock", CLOCK, 9600*64)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, att4425_state, write_line_clock))
I8251(config, m_i8251, 0);
m_i8251->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
@@ -297,11 +296,11 @@ void att4425_state::att4425(machine_config &config)
rs232.dsr_handler().set(m_i8251, FUNC(i8251_device::write_dsr));
// XXX
- clock_device &keyboard_clock(CLOCK(config, "keyboard_clock", 4800*64));
- keyboard_clock.signal_handler().set(FUNC(att4425_state::write_keyboard_clock));
+ MCFG_DEVICE_ADD("keyboard_clock", CLOCK, 4800*64)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, att4425_state, write_keyboard_clock))
RAM(config, RAM_TAG).set_default_size("32K").set_default_value(0);
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/att630.cpp b/src/mame/drivers/att630.cpp
index c45953b84ec..2aff41ae86e 100644
--- a/src/mame/drivers/att630.cpp
+++ b/src/mame/drivers/att630.cpp
@@ -48,20 +48,18 @@ void att630_state::mem_map(address_map &map)
static INPUT_PORTS_START( att630 )
INPUT_PORTS_END
-void att630_state::att630(machine_config &config)
-{
- M68000(config, m_maincpu, 40_MHz_XTAL / 4); // clock not confirmed
- m_maincpu->set_addrmap(AS_PROGRAM, &att630_state::mem_map);
- // TODO: interrupt vector callback
+MACHINE_CONFIG_START(att630_state::att630)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(40'000'000) / 4) // clock not confirmed
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(87.18336_MHz_XTAL, 1376, 0, 1024, 1056, 0, 1024);
- screen.set_screen_update(FUNC(att630_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(87'183'360), 1376, 0, 1024, 1056, 0, 1024)
+ MCFG_SCREEN_UPDATE_DRIVER(att630_state, screen_update)
- SCN2681(config, "duart1", 3.6864_MHz_XTAL);
+ MCFG_DEVICE_ADD("duart1", SCN2681, XTAL(3'686'400))
- SCN2681(config, "duart2", 3.6864_MHz_XTAL);
-}
+ MCFG_DEVICE_ADD("duart2", SCN2681, XTAL(3'686'400))
+MACHINE_CONFIG_END
/**************************************************************************************************************
diff --git a/src/mame/drivers/attache.cpp b/src/mame/drivers/attache.cpp
index 71349b6ee7f..027b4f252a9 100644
--- a/src/mame/drivers/attache.cpp
+++ b/src/mame/drivers/attache.cpp
@@ -506,7 +506,7 @@ READ8_MEMBER(attache_state::pio_portA_r)
switch(m_pio_select)
{
case PIO_SEL_8910_DATA:
- ret = m_psg->data_r();
+ ret = m_psg->data_r(space,0);
logerror("PSG: data read %02x\n",ret);
break;
case PIO_SEL_5832_WRITE:
@@ -560,10 +560,10 @@ void attache_state::operation_strobe(address_space& space, uint8_t data)
switch(m_pio_select)
{
case PIO_SEL_8910_ADDR:
- m_psg->address_w(data);
+ m_psg->address_w(space,0,data);
break;
case PIO_SEL_8910_DATA:
- m_psg->data_w(data);
+ m_psg->data_w(space,0,data);
break;
case PIO_SEL_5832_WRITE:
m_rtc->cs_w(1);
@@ -771,12 +771,12 @@ WRITE8_MEMBER(attache_state::memmap_w)
READ8_MEMBER(attache_state::dma_mask_r)
{
- return m_dma->read(0x0f);
+ return m_dma->read(space,0x0f);
}
WRITE8_MEMBER(attache_state::dma_mask_w)
{
- m_dma->write(0x0f,data);
+ m_dma->write(space,0x0f,data);
}
READ8_MEMBER(attache_state::fdc_dma_r)
@@ -1121,18 +1121,17 @@ void attache816_state::machine_reset()
attache_state::machine_reset();
}
-void attache_state::attache(machine_config &config)
-{
+MACHINE_CONFIG_START(attache_state::attache)
Z80(config, m_maincpu, 8_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &attache_state::attache_map);
m_maincpu->set_addrmap(AS_IO, &attache_state::attache_io);
m_maincpu->set_daisy_config(attache_daisy_chain);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_raw(12.324_MHz_XTAL, 784, 0, 640, 262, 0, 240);
- screen.set_screen_update(FUNC(attache_state::screen_update));
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_RAW_PARAMS(12.324_MHz_XTAL, 784, 0, 640, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(attache_state, screen_update)
PALETTE(config, m_palette, palette_device::MONOCHROME_HIGHLIGHT);
@@ -1195,26 +1194,25 @@ void attache_state::attache(machine_config &config)
RAM(config, RAM_TAG).set_default_size("64K");
- SOFTWARE_LIST(config, "disk_list").set_original("attache");
-}
+ MCFG_SOFTWARE_LIST_ADD("disk_list","attache")
+MACHINE_CONFIG_END
-void attache816_state::attache816(machine_config &config)
-{
+MACHINE_CONFIG_START(attache816_state::attache816)
Z80(config, m_maincpu, 8_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &attache816_state::attache_map);
m_maincpu->set_addrmap(AS_IO, &attache816_state::attache_io);
m_maincpu->set_daisy_config(attache_daisy_chain);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
- I8086(config, m_extcpu, 24_MHz_XTAL / 3);
- m_extcpu->set_addrmap(AS_PROGRAM, &attache816_state::attache_x86_map);
- m_extcpu->set_addrmap(AS_IO, &attache816_state::attache_x86_io);
- config.m_perfect_cpu_quantum = subtag("extcpu");
+ MCFG_DEVICE_ADD("extcpu", I8086, 24_MHz_XTAL / 3)
+ MCFG_DEVICE_PROGRAM_MAP(attache_x86_map)
+ MCFG_DEVICE_IO_MAP(attache_x86_io)
+ MCFG_QUANTUM_PERFECT_CPU("extcpu")
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_raw(12.324_MHz_XTAL, 784, 0, 640, 262, 0, 240);
- screen.set_screen_update(FUNC(attache_state::screen_update));
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_RAW_PARAMS(12.324_MHz_XTAL, 784, 0, 640, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(attache_state, screen_update)
PALETTE(config, m_palette, palette_device::MONOCHROME_HIGHLIGHT);
@@ -1284,8 +1282,8 @@ void attache816_state::attache816(machine_config &config)
RAM(config, RAM_TAG).set_default_size("64K");
- SOFTWARE_LIST(config, "disk_list").set_original("attache");
-}
+ MCFG_SOFTWARE_LIST_ADD("disk_list","attache")
+MACHINE_CONFIG_END
ROM_START( attache )
ROM_REGION(0x10000, "maincpu", 0)
diff --git a/src/mame/drivers/attckufo.cpp b/src/mame/drivers/attckufo.cpp
index 3f2e507c411..b2b120b85c4 100644
--- a/src/mame/drivers/attckufo.cpp
+++ b/src/mame/drivers/attckufo.cpp
@@ -119,10 +119,9 @@ READ8_MEMBER(attckufo_state::vic_colorram_r)
// MACHINE DEFINTIONS
//**************************************************************************
-void attckufo_state::attckufo(machine_config &config)
-{
- M6502(config, m_maincpu, XTAL(14'318'181) / 14);
- m_maincpu->set_addrmap(AS_PROGRAM, &attckufo_state::cpu_map);
+MACHINE_CONFIG_START(attckufo_state::attckufo)
+ MCFG_DEVICE_ADD("maincpu", M6502, XTAL(14'318'181) / 14)
+ MCFG_DEVICE_PROGRAM_MAP(cpu_map)
pia6821_device &pia(PIA6821(config, "pia", 0));
pia.readpa_handler().set_ioport("DSW");
@@ -130,19 +129,19 @@ void attckufo_state::attckufo(machine_config &config)
SPEAKER(config, "mono").front_center();
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(MOS6560_VRETRACERATE);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size((MOS6560_XSIZE + 7) & ~7, MOS6560_YSIZE);
- screen.set_visarea(0, 23*8 - 1, 0, 22*8 - 1);
- screen.set_screen_update("mos6560", FUNC(mos6560_device::screen_update));
-
- mos6560_device &mos6560(MOS656X_ATTACK_UFO(config, "mos6560", XTAL(14'318'181) / 14));
- mos6560.set_screen("screen");
- mos6560.set_addrmap(0, &attckufo_state::vic_videoram_map);
- mos6560.set_addrmap(1, &attckufo_state::vic_colorram_map);
- mos6560.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(MOS6560_VRETRACERATE)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE((MOS6560_XSIZE + 7) & ~7, MOS6560_YSIZE)
+ MCFG_SCREEN_VISIBLE_AREA(0, 23*8 - 1, 0, 22*8 - 1)
+ MCFG_SCREEN_UPDATE_DEVICE("mos6560", mos6560_device, screen_update)
+
+ MCFG_DEVICE_ADD("mos6560", MOS656X_ATTACK_UFO, XTAL(14'318'181) / 14)
+ MCFG_VIDEO_SET_SCREEN("screen")
+ MCFG_DEVICE_ADDRESS_MAP(0, vic_videoram_map)
+ MCFG_DEVICE_ADDRESS_MAP(1, vic_colorram_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/aussiebyte.cpp b/src/mame/drivers/aussiebyte.cpp
index 26e79698bd5..e92a8d691a4 100644
--- a/src/mame/drivers/aussiebyte.cpp
+++ b/src/mame/drivers/aussiebyte.cpp
@@ -522,8 +522,7 @@ MACHINE_CONFIG_START(aussiebyte_state::aussiebyte)
m_centronics->set_data_input_buffer("cent_data_in");
m_centronics->busy_handler().set(FUNC(aussiebyte_state::write_centronics_busy));
INPUT_BUFFER(config, "cent_data_in");
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
Z80CTC(config, m_ctc, 16_MHz_XTAL / 4);
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
@@ -576,8 +575,10 @@ MACHINE_CONFIG_START(aussiebyte_state::aussiebyte)
WD2797(config, m_fdc, 16_MHz_XTAL / 16);
m_fdc->intrq_wr_callback().set(FUNC(aussiebyte_state::fdc_intrq_w));
m_fdc->drq_wr_callback().set(FUNC(aussiebyte_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, "fdc:0", aussiebyte_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", aussiebyte_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", aussiebyte_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", aussiebyte_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
/* devices */
SY6545_1(config, m_crtc, 16_MHz_XTAL / 8);
@@ -590,7 +591,7 @@ MACHINE_CONFIG_START(aussiebyte_state::aussiebyte)
MSM5832(config, m_rtc, 32.768_kHz_XTAL);
/* quickload */
- MCFG_QUICKLOAD_ADD("quickload", aussiebyte_state, aussiebyte, "com,cpm", attotime::from_seconds(3))
+ MCFG_QUICKLOAD_ADD("quickload", aussiebyte_state, aussiebyte, "com,cpm", 3)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/avalnche.cpp b/src/mame/drivers/avalnche.cpp
index 4782401e76e..2789147e5b1 100644
--- a/src/mame/drivers/avalnche.cpp
+++ b/src/mame/drivers/avalnche.cpp
@@ -215,12 +215,12 @@ void avalnche_state::machine_start()
save_item(NAME(m_avalance_video_inverted));
}
-void avalnche_state::avalnche_base(machine_config &config)
-{
+MACHINE_CONFIG_START(avalnche_state::avalnche_base)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 12.096_MHz_XTAL / 16); /* clock input is the "2H" signal divided by two */
- m_maincpu->set_addrmap(AS_PROGRAM, &avalnche_state::main_map);
- m_maincpu->set_periodic_int(FUNC(avalnche_state::nmi_line_pulse), attotime::from_hz(8*60));
+ MCFG_DEVICE_ADD("maincpu", M6502, 12.096_MHz_XTAL / 16) /* clock input is the "2H" signal divided by two */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(avalnche_state, nmi_line_pulse, 8*60)
F9334(config, m_latch); // F8
m_latch->q_out_cb<0>().set_output("led0"); // 1 CREDIT LAMP
@@ -232,28 +232,27 @@ void avalnche_state::avalnche_base(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(12.096_MHz_XTAL / 2, 384, 0, 256, 262, 16, 256);
- screen.set_screen_update(FUNC(avalnche_state::screen_update_avalnche));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(12.096_MHz_XTAL / 2, 384, 0, 256, 262, 16, 256)
+ MCFG_SCREEN_UPDATE_DRIVER(avalnche_state, screen_update_avalnche)
+MACHINE_CONFIG_END
-void avalnche_state::avalnche(machine_config &config)
-{
+MACHINE_CONFIG_START(avalnche_state::avalnche)
avalnche_base(config);
/* sound hardware */
avalnche_sound(config);
-}
+MACHINE_CONFIG_END
-void avalnche_state::acatch(machine_config &config)
-{
+MACHINE_CONFIG_START(avalnche_state::acatch)
avalnche_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &avalnche_state::catch_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(catch_map)
/* sound hardware... */
acatch_sound(config);
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/ave_arb.cpp b/src/mame/drivers/ave_arb.cpp
deleted file mode 100644
index 3ca879b461f..00000000000
--- a/src/mame/drivers/ave_arb.cpp
+++ /dev/null
@@ -1,255 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:Berger
-/******************************************************************************
-*
-* ave_arb.cpp, subdriver of machine/chessbase.cpp
-
-AVE Micro Systems ARB chess computer driver, in some regions redistributed
-by Chafitz, and in Germany by Sandy Electronic.
-
-*******************************************************************************
-
-Auto Response Board (ARB) overview:
-- R6502P CPU @ 2MHz(4MHz XTAL), R6522P VIA
-- 2KB RAM(4*2114), cartridge port
-- magnetic chessboard, 8*8+12 leds
-- PCB label AV001C01 REV A
-
-The electronic magnetic chessboard is the first of is kind. AVE later licensed
-it to Fidelity (see fidel_elite.cpp).
-ARB is a romless system, the program ROM is on a cartridge.
-
-Known modules (*denotes not dumped yet):
-- Sargon 2.5
-- *Grand Master Series 3
-- *Grand Master Series 3.5
-- *Grand Master Series 4.0
-
-Newer modules included button label stickers for OPTIONS, Verify, Take Back, Clear.
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/chessbase.h"
-
-#include "cpu/m6502/m6502.h"
-#include "machine/6522via.h"
-#include "machine/nvram.h"
-#include "sound/dac.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-#include "bus/generic/slot.h"
-#include "bus/generic/carts.h"
-#include "softlist.h"
-
-// internal artwork
-#include "ave_arb.lh" // clickable
-
-
-namespace {
-
-class arb_state : public chessbase_state
-{
-public:
- arb_state(const machine_config &mconfig, device_type type, const char *tag) :
- chessbase_state(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_via(*this, "via"),
- m_dac(*this, "dac"),
- m_cart(*this, "cartslot")
- { }
-
- // halt button is tied to NMI, reset button to RESET(but only if halt button is held)
- void update_reset() { m_maincpu->set_input_line(INPUT_LINE_RESET, (m_inp_matrix[9]->read() == 3) ? ASSERT_LINE : CLEAR_LINE); }
- DECLARE_INPUT_CHANGED_MEMBER(reset_button) { update_reset(); }
- DECLARE_INPUT_CHANGED_MEMBER(halt_button) { m_maincpu->set_input_line(M6502_NMI_LINE, newval ? ASSERT_LINE : CLEAR_LINE); update_reset(); }
-
- // machine drivers
- void arb(machine_config &config);
-
-private:
- // devices/pointers
- required_device<cpu_device> m_maincpu;
- required_device<via6522_device> m_via;
- required_device<dac_bit_interface> m_dac;
- required_device<generic_slot_device> m_cart;
-
- // address maps
- void main_map(address_map &map);
-
- // cartridge
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cartridge);
- DECLARE_READ8_MEMBER(cartridge_r);
- u32 m_cart_mask;
-
- // I/O handlers
- void prepare_display();
- DECLARE_WRITE8_MEMBER(leds_w);
- DECLARE_WRITE8_MEMBER(control_w);
- DECLARE_READ8_MEMBER(input_r);
-};
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// cartridge
-
-DEVICE_IMAGE_LOAD_MEMBER(arb_state, cartridge)
-{
- u32 size = m_cart->common_get_size("rom");
- m_cart_mask = ((1 << (31 - count_leading_zeros(size))) - 1) & 0x7fff;
-
- m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
- m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
-
- // extra ram (optional)
- if (image.get_feature("ram"))
- m_maincpu->space(AS_PROGRAM).install_ram(0x0800, 0x0fff, 0x1000, nullptr);
-
- return image_init_result::PASS;
-}
-
-READ8_MEMBER(arb_state::cartridge_r)
-{
- return m_cart->read_rom(offset & m_cart_mask);
-}
-
-
-// R6522 ports
-
-void arb_state::prepare_display()
-{
- // 12 led column data lines via 3 7475
- u16 mask = 0;
- mask |= (m_led_select & 1) ? 0xf00 : 0;
- mask |= (m_led_select & 2) ? 0x0ff : 0;
-
- m_led_data = (m_led_data & ~mask) | ((m_led_latch << 8 | m_led_latch) & mask);
- display_matrix(12, 9+1, m_led_data, m_inp_mux | 0x200);
-}
-
-WRITE8_MEMBER(arb_state::leds_w)
-{
- // PA0-PA7: led latch input
- m_led_latch = ~data & 0xff;
- prepare_display();
-}
-
-WRITE8_MEMBER(arb_state::control_w)
-{
- // PB0-PB3: 74145 A-D
- // 74145 0-8: input mux, led row select
- m_inp_mux = 1 << (data & 0xf) & 0x1ff;
-
- // PB4,PB5: led group select
- m_led_select = data >> 4 & 3;
- prepare_display();
-
- // PB7: speaker out
- m_dac->write(BIT(data, 7));
-}
-
-READ8_MEMBER(arb_state::input_r)
-{
- // PA0-PA7: multiplexed inputs
- return ~read_inputs(9);
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void arb_state::main_map(address_map &map)
-{
- // external slot is A0-A14, potential bus conflict with RAM/VIA
- map(0x0000, 0x7fff).mirror(0x8000).r(FUNC(arb_state::cartridge_r));
- map(0x0000, 0x07ff).mirror(0x1000).ram().share("nvram");
- map(0x8000, 0x800f).mirror(0x1ff0).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write));
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( arb )
- PORT_INCLUDE( generic_cb_magnets )
-
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_7) PORT_NAME("Hint / Black")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_CODE(KEYCODE_6) PORT_NAME("Variable / Clear / White / 6")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_CODE(KEYCODE_5) PORT_NAME("Monitor / Take Back / King / 5")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_CODE(KEYCODE_4) PORT_NAME("Self Play / Verify / Queen / 4")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_3) PORT_NAME("Change Board / Rook / 3")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_2) PORT_NAME("Change Color / Bishop / 2")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_CODE(KEYCODE_1) PORT_NAME("Change Level / Knight / 1")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_CODE(KEYCODE_0) PORT_NAME("New Game / Options / Pawn / 0")
-
- PORT_START("IN.9")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_F2) PORT_NAME("Reset") PORT_CHANGED_MEMBER(DEVICE_SELF, arb_state, reset_button, nullptr)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_CODE(KEYCODE_F2) PORT_NAME("Halt") PORT_CHANGED_MEMBER(DEVICE_SELF, arb_state, halt_button, nullptr)
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void arb_state::arb(machine_config &config)
-{
- /* basic machine hardware */
- M6502(config, m_maincpu, 4_MHz_XTAL/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &arb_state::main_map);
-
- VIA6522(config, m_via, 4_MHz_XTAL/4);
- m_via->writepa_handler().set(FUNC(arb_state::leds_w));
- m_via->writepb_handler().set(FUNC(arb_state::control_w));
- m_via->readpa_handler().set(FUNC(arb_state::input_r));
- m_via->irq_handler().set_inputline(m_maincpu, M6502_IRQ_LINE);
-
- NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(arb_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_ave_arb);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-
- /* cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "arb", "bin");
- m_cart->set_device_load(device_image_load_delegate(&arb_state::device_image_load_cartridge, this));
- m_cart->set_must_be_loaded(true);
-
- SOFTWARE_LIST(config, "cart_list").set_original("arb");
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( arb )
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
- // none here, it's in the module slot
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-/* YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS */
-CONS( 1980, arb, 0, 0, arb, arb, arb_state, empty_init, "AVE Micro Systems", "Auto Response Board", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/avigo.cpp b/src/mame/drivers/avigo.cpp
index c9984604763..797564ebbf9 100644
--- a/src/mame/drivers/avigo.cpp
+++ b/src/mame/drivers/avigo.cpp
@@ -751,10 +751,10 @@ void avigo_state::nvram_init(nvram_device &nvram, void *base, size_t size)
MACHINE_CONFIG_START(avigo_state::avigo)
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &avigo_state::avigo_mem);
- m_maincpu->set_addrmap(AS_IO, &avigo_state::avigo_io);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(avigo_mem)
+ MCFG_DEVICE_IO_MAP(avigo_io)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
NS16550(config, m_uart, XTAL(1'843'200));
m_uart->out_tx_callback().set(m_serport, FUNC(rs232_port_device::write_txd));
@@ -770,13 +770,13 @@ MACHINE_CONFIG_START(avigo_state::avigo)
m_serport->cts_handler().set(m_uart, FUNC(ins8250_uart_device::cts_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(avigo_state::screen_update));
- screen.set_size(AVIGO_SCREEN_WIDTH, AVIGO_SCREEN_HEIGHT + AVIGO_PANEL_HEIGHT);
- screen.set_visarea_full();
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(avigo_state, screen_update)
+ MCFG_SCREEN_SIZE(AVIGO_SCREEN_WIDTH, AVIGO_SCREEN_HEIGHT + AVIGO_PANEL_HEIGHT)
+ MCFG_SCREEN_VISIBLE_AREA(0, AVIGO_SCREEN_WIDTH-1, 0, AVIGO_SCREEN_HEIGHT + AVIGO_PANEL_HEIGHT -1)
+ MCFG_SCREEN_PALETTE(m_palette)
config.set_default_layout(layout_avigo);
@@ -805,13 +805,13 @@ MACHINE_CONFIG_START(avigo_state::avigo)
NVRAM(config, "nvram").set_custom_handler(FUNC(avigo_state::nvram_init));
// IRQ 1 is used for scan the pen and for cursor blinking
- TIMER(config, "scan_timer").configure_periodic(FUNC(avigo_state::avigo_scan_timer), attotime::from_hz(50));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("scan_timer", avigo_state, avigo_scan_timer, attotime::from_hz(50))
// IRQ 4 is generated every second, used for auto power off
- TIMER(config, "1hz_timer").configure_periodic(FUNC(avigo_state::avigo_1hz_timer), attotime::from_hz(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("1hz_timer", avigo_state, avigo_1hz_timer, attotime::from_hz(1))
/* quickload */
- MCFG_QUICKLOAD_ADD("quickload", avigo_state, avigo, "app")
+ MCFG_QUICKLOAD_ADD("quickload", avigo_state, avigo, "app", 0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/avt.cpp b/src/mame/drivers/avt.cpp
index 2fca9828c07..b1d9b9767f3 100644
--- a/src/mame/drivers/avt.cpp
+++ b/src/mame/drivers/avt.cpp
@@ -568,12 +568,12 @@ uint32_t avt_state::screen_update_avt(screen_device &screen, bitmap_ind16 &bitma
void avt_state::avt_palette(palette_device &palette) const
{
/* prom bits
- 7654 3210
- ---- ---x Intensity?.
- ---- --x- Red component.
- ---- -x-- Green component.
- ---- x--- Blue component.
- xxxx ---- Unused.
+ 7654 3210
+ ---- ---x Intensity?.
+ ---- --x- Red component.
+ ---- -x-- Green component.
+ ---- x--- Blue component.
+ xxxx ---- Unused.
*/
/* 0000BGRI */
@@ -624,19 +624,19 @@ void avt_state::avt_palette(palette_device &palette) const
WRITE8_MEMBER( avt_state::avt_6845_address_w )
{
m_crtc_index = data;
- m_crtc->address_w(data);
+ m_crtc->address_w(space, offset, data);
}
WRITE8_MEMBER( avt_state::avt_6845_data_w )
{
m_crtc_vreg[m_crtc_index] = data;
- m_crtc->register_w(data);
+ m_crtc->register_w(space, offset, data);
}
READ8_MEMBER( avt_state::avt_6845_data_r )
{
//m_crtc_vreg[m_crtc_index] = data;
- return m_crtc->register_r();
+ return m_crtc->register_r(space, offset);
}
/*********************************************
@@ -956,8 +956,7 @@ WRITE_LINE_MEMBER( avt_state::avtbingo_w )
m_pio0->port_b_write(ioport("IN0")->read());
}
-void avt_state::avt(machine_config &config)
-{
+MACHINE_CONFIG_START(avt_state::avt)
/* basic machine hardware */
Z80(config, m_maincpu, CPU_CLOCK); /* guess */
m_maincpu->set_daisy_config(daisy_chain);
@@ -965,13 +964,13 @@ void avt_state::avt(machine_config &config)
m_maincpu->set_addrmap(AS_IO, &avt_state::avt_portmap);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea_full(); /* 240x224 (through CRTC) */
- screen.set_screen_update(FUNC(avt_state::screen_update_avt));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) /* 240x224 (through CRTC) */
+ MCFG_SCREEN_UPDATE_DRIVER(avt_state, screen_update_avt)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_avt);
PALETTE(config, m_palette, FUNC(avt_state::avt_palette), 8*16);
@@ -1005,7 +1004,7 @@ void avt_state::avt(machine_config &config)
// PORT A d0-d7 = TP13,TP12,TP11,TP10,TP8,TP7,TP5,TP3
// PORT B d0-d7 = "Player2", DCOM, CCOM, BCOM, ACOM, LOCKOUT/TP6, TP4, 50/60HZ (held high, jumper on JP13 grounds it)
// DCOM,CCOM,BCOM,ACOM appear to be muxes
-}
+MACHINE_CONFIG_END
// Leave avtnfl as it was until more is learnt.
WRITE_LINE_MEMBER( avt_state::avtnfl_w )
diff --git a/src/mame/drivers/ax20.cpp b/src/mame/drivers/ax20.cpp
index 456de221e05..7cb4ff858f6 100644
--- a/src/mame/drivers/ax20.cpp
+++ b/src/mame/drivers/ax20.cpp
@@ -132,29 +132,29 @@ static void ax20_floppies(device_slot_interface &device)
device.option_add("525dd", FLOPPY_525_DD);
}
-void ax20_state::ax20(machine_config &config)
-{
+MACHINE_CONFIG_START(ax20_state::ax20)
/* basic machine hardware */
- I8088(config, m_maincpu, XTAL(14'318'181)/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &ax20_state::ax20_map);
- m_maincpu->set_addrmap(AS_IO, &ax20_state::ax20_io);
+ MCFG_DEVICE_ADD("maincpu", I8088, XTAL(14'318'181)/3)
+ MCFG_DEVICE_PROGRAM_MAP(ax20_map)
+ MCFG_DEVICE_IO_MAP(ax20_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(ax20_state::screen_update));
- screen.set_size(80*8, 24*12);
- screen.set_visarea(0, 80*8-1, 0, 24*12-1);
- screen.set_palette(m_palette);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_ax20);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_COLOR(rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(ax20_state, screen_update)
+ MCFG_SCREEN_SIZE(80*8, 24*12)
+ MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 24*12-1)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ax20)
PALETTE(config, m_palette, palette_device::MONOCHROME);
I8272A(config, m_fdc, 8'000'000, true);
/* Devices */
- FLOPPY_CONNECTOR(config, "fdc:0", ax20_floppies, "525dd", isa8_fdc_device::floppy_formats);
-}
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", ax20_floppies, "525dd", isa8_fdc_device::floppy_formats)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( ax20 )
diff --git a/src/mame/drivers/aztarac.cpp b/src/mame/drivers/aztarac.cpp
index 65b66adb159..083fb952962 100644
--- a/src/mame/drivers/aztarac.cpp
+++ b/src/mame/drivers/aztarac.cpp
@@ -149,29 +149,29 @@ INPUT_PORTS_END
*
*************************************/
-void aztarac_state::aztarac(machine_config &config)
-{
+MACHINE_CONFIG_START(aztarac_state::aztarac)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 8000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &aztarac_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(aztarac_state::irq4_line_hold));
- m_maincpu->set_irq_acknowledge_callback(FUNC(aztarac_state::irq_callback));
+ MCFG_DEVICE_ADD("maincpu", M68000, 8000000)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", aztarac_state, irq4_line_hold)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(aztarac_state, irq_callback)
- Z80(config, m_audiocpu, 2000000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &aztarac_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(aztarac_state::snd_timed_irq), attotime::from_hz(100));
+ MCFG_DEVICE_ADD("audiocpu", Z80, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(aztarac_state, snd_timed_irq, 100)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- VECTOR(config, m_vector, 0);
- SCREEN(config, m_screen, SCREEN_TYPE_VECTOR);
- m_screen->set_refresh_hz(40);
- m_screen->set_size(400, 300);
- m_screen->set_visarea(0, 1024-1, 0, 768-1);
- m_screen->set_screen_update("vector", FUNC(vector_device::screen_update));
+ MCFG_VECTOR_ADD("vector")
+ MCFG_SCREEN_ADD("screen", VECTOR)
+ MCFG_SCREEN_REFRESH_RATE(40)
+ MCFG_SCREEN_SIZE(400, 300)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 768-1)
+ MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
/* sound hardware */
@@ -186,7 +186,7 @@ void aztarac_state::aztarac(machine_config &config)
AY8910(config, "ay3", 2000000).add_route(ALL_OUTPUTS, "mono", 0.15);
AY8910(config, "ay4", 2000000).add_route(ALL_OUTPUTS, "mono", 0.15);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/b16.cpp b/src/mame/drivers/b16.cpp
index 343c4eaf055..b98ce63364b 100644
--- a/src/mame/drivers/b16.cpp
+++ b/src/mame/drivers/b16.cpp
@@ -142,13 +142,13 @@ READ16_MEMBER( b16_state::vblank_r )
WRITE8_MEMBER( b16_state::b16_6845_address_w )
{
m_crtc_index = data;
- m_mc6845->address_w(data);
+ m_mc6845->address_w(space,offset, data);
}
WRITE8_MEMBER( b16_state::b16_6845_data_w )
{
m_crtc_vreg[m_crtc_index] = data;
- m_mc6845->register_w(data);
+ m_mc6845->register_w(space, offset, data);
}
/*
@@ -266,21 +266,20 @@ WRITE8_MEMBER(b16_state::memory_write_byte)
}
-void b16_state::b16(machine_config &config)
-{
+MACHINE_CONFIG_START(b16_state::b16)
/* basic machine hardware */
- I8086(config, m_maincpu, XTAL(14'318'181)/2); //unknown xtal
- m_maincpu->set_addrmap(AS_PROGRAM, &b16_state::b16_map);
- m_maincpu->set_addrmap(AS_IO, &b16_state::b16_io);
+ MCFG_DEVICE_ADD(m_maincpu, I8086, XTAL(14'318'181)/2) //unknown xtal
+ MCFG_DEVICE_PROGRAM_MAP(b16_map)
+ MCFG_DEVICE_IO_MAP(b16_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(b16_state::screen_update));
- screen.set_size(640, 400);
- screen.set_visarea_full();
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(b16_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 400)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1)
+ MCFG_SCREEN_PALETTE("palette")
H46505(config, m_mc6845, XTAL(14'318'181)/5); /* unknown clock, hand tuned to get ~60 fps */
m_mc6845->set_screen("screen");
@@ -291,10 +290,11 @@ void b16_state::b16(machine_config &config)
m_dma8237->in_memr_callback().set(FUNC(b16_state::memory_read_byte));
m_dma8237->out_memw_callback().set(FUNC(b16_state::memory_write_byte));
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_b16);
- PALETTE(config, m_palette).set_entries(8);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_b16)
+ MCFG_PALETTE_ADD(m_palette, 8)
// MCFG_PALETTE_INIT_STANDARD(black_and_white) // TODO
-}
+
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( b16 )
diff --git a/src/mame/drivers/b2m.cpp b/src/mame/drivers/b2m.cpp
index 2312cc3a958..96ba19c551d 100644
--- a/src/mame/drivers/b2m.cpp
+++ b/src/mame/drivers/b2m.cpp
@@ -187,23 +187,22 @@ static void b2m_floppies(device_slot_interface &device)
/* Machine driver */
-void b2m_state::b2m(machine_config &config)
-{
+MACHINE_CONFIG_START(b2m_state::b2m)
/* basic machine hardware */
- I8080(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &b2m_state::b2m_mem);
- m_maincpu->set_addrmap(AS_IO, &b2m_state::b2m_io);
- m_maincpu->set_vblank_int("screen", FUNC(b2m_state::b2m_vblank_interrupt));
- m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I8080, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(b2m_mem)
+ MCFG_DEVICE_IO_MAP(b2m_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", b2m_state, b2m_vblank_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(384, 256);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(b2m_state::screen_update_b2m));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(384, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(b2m_state, screen_update_b2m)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(b2m_state::b2m_palette), 4);
@@ -234,27 +233,28 @@ void b2m_state::b2m(machine_config &config)
/* sound */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
/* uart */
- I8251(config, "uart", 0);
+ MCFG_DEVICE_ADD("uart", I8251, 0)
FD1793(config, m_fdc, 8_MHz_XTAL / 8);
m_fdc->drq_wr_callback().set(FUNC(b2m_state::b2m_fdc_drq));
- FLOPPY_CONNECTOR(config, "fd0", b2m_floppies, "525qd", b2m_state::b2m_floppy_formats);
- FLOPPY_CONNECTOR(config, "fd1", b2m_floppies, "525qd", b2m_state::b2m_floppy_formats);
- SOFTWARE_LIST(config, "flop_list").set_original("b2m");
+ MCFG_FLOPPY_DRIVE_ADD("fd0", b2m_floppies, "525qd", b2m_state::b2m_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fd1", b2m_floppies, "525qd", b2m_state::b2m_floppy_formats)
+ MCFG_SOFTWARE_LIST_ADD("flop_list","b2m")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("128K").set_default_value(0x00);
-}
+MACHINE_CONFIG_END
-void b2m_state::b2mrom(machine_config &config)
-{
+MACHINE_CONFIG_START(b2m_state::b2mrom)
b2m(config);
- m_maincpu->set_addrmap(AS_IO, &b2m_state::b2m_rom_io);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(b2m_rom_io)
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/backfire.cpp b/src/mame/drivers/backfire.cpp
index 9a3eb889adb..7cc6d9a3bc7 100644
--- a/src/mame/drivers/backfire.cpp
+++ b/src/mame/drivers/backfire.cpp
@@ -194,7 +194,7 @@ template<int Layer> WRITE32_MEMBER(backfire_state::pf_rowscroll_w){ data &= 0x00
READ32_MEMBER(backfire_state::pot_select_r)
{
if (!machine().side_effects_disabled())
- m_adc->address_offset_start_w(offset, 0);
+ m_adc->address_offset_start_w(space, offset, 0);
return 0;
}
@@ -362,11 +362,11 @@ void backfire_state::machine_start()
{
}
-void backfire_state::backfire(machine_config &config)
-{
+MACHINE_CONFIG_START(backfire_state::backfire)
+
/* basic machine hardware */
- ARM(config, m_maincpu, 28000000/4); /* Unconfirmed */
- m_maincpu->set_addrmap(AS_PROGRAM, &backfire_state::backfire_map);
+ MCFG_DEVICE_ADD("maincpu", ARM, 28000000/4) /* Unconfirmed */
+ MCFG_DEVICE_PROGRAM_MAP(backfire_map)
EEPROM_93C46_16BIT(config, "eeprom");
@@ -377,25 +377,25 @@ void backfire_state::backfire(machine_config &config)
/* video hardware */
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 2048);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_backfire);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_backfire)
config.set_default_layout(layout_dualhsxs);
- SCREEN(config, m_lscreen, SCREEN_TYPE_RASTER);
- m_lscreen->set_refresh_hz(60);
- m_lscreen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_lscreen->set_size(40*8, 32*8);
- m_lscreen->set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- m_lscreen->set_screen_update(FUNC(backfire_state::screen_update_left));
- m_lscreen->set_palette(m_palette);
- m_lscreen->screen_vblank().set(FUNC(backfire_state::vbl_interrupt));
-
- screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER));
- rscreen.set_refresh_hz(60);
- rscreen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- rscreen.set_size(40*8, 32*8);
- rscreen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- rscreen.set_screen_update(FUNC(backfire_state::screen_update_right));
- rscreen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("lscreen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(backfire_state, screen_update_left)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, backfire_state, vbl_interrupt))
+
+ MCFG_SCREEN_ADD("rscreen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(backfire_state, screen_update_right)
+ MCFG_SCREEN_PALETTE(m_palette)
DECO16IC(config, m_deco_tilegen[0], 0);
m_deco_tilegen[0]->set_screen(m_lscreen);
@@ -447,10 +447,10 @@ void backfire_state::backfire(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ymz280b_device &ymz(YMZ280B(config, "ymz", 28000000 / 2));
- ymz.add_route(0, "lspeaker", 1.0);
- ymz.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, 28000000 / 2)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/badlands.cpp b/src/mame/drivers/badlands.cpp
index d2d51288124..9c5eedaa968 100644
--- a/src/mame/drivers/badlands.cpp
+++ b/src/mame/drivers/badlands.cpp
@@ -440,16 +440,16 @@ GFXDECODE_END
*
*************************************/
-void badlands_state::badlands(machine_config &config)
-{
+MACHINE_CONFIG_START(badlands_state::badlands)
+
/* basic machine hardware */
- M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &badlands_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(badlands_state::vblank_int));
+ MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", badlands_state, vblank_int)
- M6502(config, m_audiocpu, ATARI_CLOCK_14MHz/8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &badlands_state::audio_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(badlands_state::sound_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
+ MCFG_DEVICE_PROGRAM_MAP(audio_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", badlands_state, sound_scanline, "screen", 0, 1)
MCFG_MACHINE_START_OVERRIDE(badlands_state,badlands)
MCFG_MACHINE_RESET_OVERRIDE(badlands_state,badlands)
@@ -459,23 +459,23 @@ void badlands_state::badlands(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- GFXDECODE(config, m_gfxdecode, "palette", gfx_badlands);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_badlands)
palette_device &palette(PALETTE(config, "palette"));
palette.set_format(palette_device::IRGB_1555, 256);
palette.set_membits(8);
- TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64,32).set_info_callback(FUNC(badlands_state::get_playfield_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 2, badlands_state, get_playfield_tile_info, 8,8, SCAN_ROWS, 64,32)
ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, badlands_state::s_mob_config);
m_mob->set_gfxdecode(m_gfxdecode);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(badlands_state::screen_update_badlands));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(badlands_state, screen_update_badlands)
+ MCFG_SCREEN_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(badlands_state,badlands)
@@ -485,7 +485,7 @@ void badlands_state::badlands(machine_config &config)
SPEAKER(config, "mono").front_center();
YM2151(config, "ymsnd", ATARI_CLOCK_14MHz/4).add_route(0, "mono", 0.30).add_route(1, "mono", 0.30);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/badlandsbl.cpp b/src/mame/drivers/badlandsbl.cpp
index fc49343a059..a4c5acfd147 100644
--- a/src/mame/drivers/badlandsbl.cpp
+++ b/src/mame/drivers/badlandsbl.cpp
@@ -218,41 +218,41 @@ TIMER_DEVICE_CALLBACK_MEMBER(badlandsbl_state::bootleg_sound_scanline)
m_audiocpu->set_input_line(0, HOLD_LINE);
}
-void badlandsbl_state::badlandsb(machine_config &config)
-{
+MACHINE_CONFIG_START(badlandsbl_state::badlandsb)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(28'000'000)/4); /* Divisor estimated */
- m_maincpu->set_addrmap(AS_PROGRAM, &badlandsbl_state::bootleg_map);
- m_maincpu->set_vblank_int("screen", FUNC(badlandsbl_state::irq1_line_hold)); //vblank_int)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(28'000'000)/4) /* Divisor estimated */
+ MCFG_DEVICE_PROGRAM_MAP(bootleg_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", badlandsbl_state, irq1_line_hold) //vblank_int)
- Z80(config, m_audiocpu, XTAL(20'000'000)/12); /* Divisor estimated */
- m_audiocpu->set_addrmap(AS_PROGRAM, &badlandsbl_state::bootleg_audio_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(badlandsbl_state::bootleg_sound_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(20'000'000)/12) /* Divisor estimated */
+ MCFG_DEVICE_PROGRAM_MAP(bootleg_audio_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", badlandsbl_state, bootleg_sound_scanline, "screen", 0, 1)
-// config.m_perfect_cpu_quantum = subtag("maincpu");
+// MCFG_QUANTUM_PERFECT_CPU("maincpu")
MCFG_MACHINE_START_OVERRIDE(badlands_state,badlands)
EEPROM_2816(config, "eeprom").lock_after_write(true);
/* video hardware */
- GFXDECODE(config, m_gfxdecode, "palette", gfx_badlandsb);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_badlandsb)
palette_device &palette(PALETTE(config, "palette"));
palette.set_format(palette_device::IRGB_1555, 256);
palette.set_membits(8);
- TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64,32).set_info_callback(FUNC(badlands_state::get_playfield_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 2, badlands_state, get_playfield_tile_info, 8,8, SCAN_ROWS, 64,32)
// ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, badlands_state::s_mob_config);
// m_mob->set_gfxdecode(m_gfxdecode);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(badlandsbl_state::screen_update_badlandsbl));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(badlandsbl_state, screen_update_badlandsbl)
+ MCFG_SCREEN_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(badlands_state,badlands)
@@ -260,7 +260,7 @@ void badlandsbl_state::badlandsb(machine_config &config)
SPEAKER(config, "mono").front_center();
YM2151(config, "ymsnd", XTAL(20'000'000)/8).add_route(0, "mono", 0.30).add_route(1, "mono", 0.30); /* Divisor estimated */
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/bailey.cpp b/src/mame/drivers/bailey.cpp
index e77823ba5de..5b3598ebf1b 100644
--- a/src/mame/drivers/bailey.cpp
+++ b/src/mame/drivers/bailey.cpp
@@ -88,21 +88,20 @@ void bailey_state::video_start()
{
}
-void bailey_state::bailey(machine_config &config)
-{
+MACHINE_CONFIG_START(bailey_state::bailey)
+
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_bailey);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(bailey)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL);
- m_video->set_vert_params(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.30);
-}
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/banctec.cpp b/src/mame/drivers/banctec.cpp
index 5daea29a7ac..ca00bb3ec98 100644
--- a/src/mame/drivers/banctec.cpp
+++ b/src/mame/drivers/banctec.cpp
@@ -136,27 +136,26 @@ static GFXDECODE_START( gfx_banctec )
GFXDECODE_ENTRY( "chargen", 0x00000, banctec_gfx_layout, 0, 1 )
GFXDECODE_END
-void banctec_state::banctec(machine_config &config)
-{
+MACHINE_CONFIG_START(banctec_state::banctec)
/* basic machine hardware */
- I80C31(config, m_maincpu, XTAL(11'059'200));
- m_maincpu->set_addrmap(AS_PROGRAM, &banctec_state::banctec_mem);
+ MCFG_DEVICE_ADD("maincpu", I80C31, XTAL(11'059'200))
+ MCFG_DEVICE_PROGRAM_MAP(banctec_mem)
- m6803_cpu_device &mcu(M6803(config, "mcu", 4000000)); /* Actual MCU is a Motorola 6803 and the clock frequency is still unknown */
- mcu.set_addrmap(AS_PROGRAM, &banctec_state::banctec_mcu_mem);
+ MCFG_DEVICE_ADD("mcu", M6803, 4000000) /* Actual MCU is a Motorola 6803 and the clock frequency is still unknown */
+ MCFG_DEVICE_PROGRAM_MAP(banctec_mcu_mem)
// The video signal is generated by a R6545EAP character generator chip
// The U20 EPROM holds the image data for the character set.
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size((52+1)*8, (31+1)*8);
- screen.set_visarea(0*8, 40*8-1, 0*8, 25*8-1);
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE((52+1)*8, (31+1)*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 25*8-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
PALETTE(config, m_palette, palette_device::MONOCHROME);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_banctec);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_banctec)
r6545_1_device &crtc(R6545_1(config, "crtc", XTAL(2'000'000))); /* (?) */
crtc.set_screen("screen");
@@ -164,7 +163,7 @@ void banctec_state::banctec(machine_config &config)
crtc.set_char_width(8);
crtc.set_update_row_callback(FUNC(banctec_state::crtc_update_row), this);
crtc.set_on_update_addr_change_callback(FUNC(banctec_state::crtc_addr), this);
-}
+MACHINE_CONFIG_END
ROM_START(banctec)
ROM_REGION(0x800, "maincpu", 0)
diff --git a/src/mame/drivers/bankp.cpp b/src/mame/drivers/bankp.cpp
index 843c6e9296e..adc9223bfbc 100644
--- a/src/mame/drivers/bankp.cpp
+++ b/src/mame/drivers/bankp.cpp
@@ -137,9 +137,9 @@ void bankp_state::bankp_map(address_map &map)
void bankp_state::bankp_io_map(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).portr("IN0").w("sn1", FUNC(sn76489_device::write));
- map(0x01, 0x01).portr("IN1").w("sn2", FUNC(sn76489_device::write));
- map(0x02, 0x02).portr("IN2").w("sn3", FUNC(sn76489_device::write));
+ map(0x00, 0x00).portr("IN0").w("sn1", FUNC(sn76489_device::command_w));
+ map(0x01, 0x01).portr("IN1").w("sn2", FUNC(sn76489_device::command_w));
+ map(0x02, 0x02).portr("IN2").w("sn3", FUNC(sn76489_device::command_w));
map(0x04, 0x04).portr("DSW1");
map(0x05, 0x05).w(FUNC(bankp_state::scroll_w));
map(0x07, 0x07).w(FUNC(bankp_state::out_w));
@@ -293,20 +293,20 @@ INTERRUPT_GEN_MEMBER(bankp_state::vblank_irq)
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
-void bankp_state::bankp(machine_config &config)
-{
+MACHINE_CONFIG_START(bankp_state::bankp)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/6);
- m_maincpu->set_addrmap(AS_PROGRAM, &bankp_state::bankp_map);
- m_maincpu->set_addrmap(AS_IO, &bankp_state::bankp_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(bankp_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6)
+ MCFG_DEVICE_PROGRAM_MAP(bankp_map)
+ MCFG_DEVICE_IO_MAP(bankp_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", bankp_state, vblank_irq)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- screen.set_screen_update(FUNC(bankp_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(bankp_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_bankp);
PALETTE(config, m_palette, FUNC(bankp_state::bankp_palette), 32*4+16*8, 32);
@@ -314,12 +314,15 @@ void bankp_state::bankp(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489(config, "sn1", MASTER_CLOCK/6).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("sn1", SN76489, MASTER_CLOCK/6)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- SN76489(config, "sn2", MASTER_CLOCK/6).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("sn2", SN76489, MASTER_CLOCK/6)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- SN76489(config, "sn3", MASTER_CLOCK/6).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("sn3", SN76489, MASTER_CLOCK/6)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/barata.cpp b/src/mame/drivers/barata.cpp
index 6e3e193ca05..90e72d01e12 100644
--- a/src/mame/drivers/barata.cpp
+++ b/src/mame/drivers/barata.cpp
@@ -307,8 +307,7 @@ READ8_MEMBER(barata_state::port2_r)
* Machine Drivers *
************************/
-void barata_state::barata(machine_config &config)
-{
+MACHINE_CONFIG_START(barata_state::barata)
/* basic machine hardware */
I8051(config, m_maincpu, CPU_CLOCK);
m_maincpu->port_out_cb<0>().set(FUNC(barata_state::port0_w));
@@ -323,7 +322,7 @@ void barata_state::barata(machine_config &config)
SPEAKER(config, "speaker").front_center();
/* TODO: add sound samples */
-}
+MACHINE_CONFIG_END
/*************************
* Rom Load *
diff --git a/src/mame/drivers/barni.cpp b/src/mame/drivers/barni.cpp
index ff225775bd8..98e94382618 100644
--- a/src/mame/drivers/barni.cpp
+++ b/src/mame/drivers/barni.cpp
@@ -1,18 +1,18 @@
// license:BSD-3-Clause
// copyright-holders:Ivan Vangelista
// PINBALL
-// Skeleton driver for Barni pinballs.
+// Skeleton driver for Barni pinballs. At this time only Red Baron is dumped.
// Known pinballs to be dumped: Shield (1985)
// Hardware listing and ROM definitions from PinMAME.
/*
- Hardware:
- CPU: 2 x 6809E, optional MC6802 which may replace second 6809E
+ Hardware:
+CPU: 2 x 6809E, optional MC6802 which may replace second 6809E
INT: IRQ on CPU 0, FIRQ on CPU 1
- IO: 2x PIA 6821
- 1x VIA 6522
- DISPLAY: 5x6 digit 7 or 16 segment display
- SOUND: basically the same as Bally's Squalk & Talk -61 board but missing AY8912 synth chip
+IO: 2x PIA 6821
+ 1x VIA 6522
+DISPLAY: 5x6 digit 7 or 16 segment display
+SOUND: basically the same as Bally's Squalk & Talk -61 board but missing AY8912 synth chip
*/
#include "emu.h"
@@ -62,20 +62,19 @@ void barni_state::audiocpu_map(address_map &map)
static INPUT_PORTS_START( barni )
INPUT_PORTS_END
-void barni_state::barni(machine_config &config)
-{
+MACHINE_CONFIG_START(barni_state::barni)
/* basic machine hardware */
- MC6809E(config, m_maincpu, XTAL(4'000'000) / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &barni_state::maincpu_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(4'000'000) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(maincpu_map)
- mc6809e_device &subcpu(MC6809E(config, "subcpu", XTAL(4'000'000) / 4));
- subcpu.set_addrmap(AS_PROGRAM, &barni_state::subcpu_map);
+ MCFG_DEVICE_ADD("subcpu", MC6809E, XTAL(4'000'000) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(subcpu_map)
- m6802_cpu_device &audiocpu(M6802(config, "audiocpu", 4000000)); // uses own XTAL, but what is the value?
- audiocpu.set_addrmap(AS_PROGRAM, &barni_state::audiocpu_map);
+ MCFG_DEVICE_ADD("audiocpu", M6802, 4000000) // uses own XTAL, but what is the value?
+ MCFG_DEVICE_PROGRAM_MAP(audiocpu_map)
/* video hardware */
- //config.set_default_layout();
+ //MCFG_DEFAULT_LAYOUT()
//6522via
//6821pia
@@ -84,26 +83,7 @@ void barni_state::barni(machine_config &config)
//tmms5220
//dac
genpin_audio(config);
-}
-
-
-/*--------------------------------
-/ Champion 85
-/-------------------------------*/
-ROM_START(champion)
- ROM_REGION(0x10000, "maincpu", 0)
- ROM_LOAD("che.bin", 0xe000, 0x2000, CRC(c5dc9228) SHA1(5306980a9c73118cfb843dbce0d56f516d054220))
- ROM_LOAD("chc.bin", 0xc000, 0x2000, CRC(6ab0f232) SHA1(0638d33f86c62ee93dff924a16a5b9309392d9e8))
-
- ROM_REGION(0x10000, "subcpu", 0)
- ROM_LOAD("chan.bin", 0xe000, 0x2000, CRC(3f148587) SHA1(e44dc9cce15830f522dc781aaa13c659a43371f3))
-
- ROM_REGION(0x10000, "audiocpu", 0)
- ROM_LOAD("voz1.bin", 0xf000, 0x1000, CRC(48665778) SHA1(c295dfe7f4a98756f508391eb326f37a5aac37ff))
- ROM_LOAD("voz2.bin", 0xe000, 0x1000, CRC(30e7da5e) SHA1(3054cf9b09e0f89c242e1ad35bb31d9bd77248e4))
- ROM_LOAD("voz3.bin", 0xd000, 0x1000, CRC(3cd8058e) SHA1(fa4fd0cf4124263d4021c5a86033af9e5aa66eed))
- ROM_LOAD("voz4.bin", 0xc000, 0x1000, CRC(0d00d8cc) SHA1(10f64d2fc3fc3e276bbd0e108815a3b395dcf0c9))
-ROM_END
+MACHINE_CONFIG_END
/*--------------------------------
@@ -125,5 +105,4 @@ ROM_START(redbarnp)
ROM_END
-GAME( 1985, champion, 0, barni, barni, barni_state, empty_init, ROT0, "Barni", "Champion 85", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 1985, redbarnp, 0, barni, barni, barni_state, empty_init, ROT0, "Barni", "Red Baron (Pinball)", MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/bartop52.cpp b/src/mame/drivers/bartop52.cpp
index 6cfff80a172..0fd035e6c41 100644
--- a/src/mame/drivers/bartop52.cpp
+++ b/src/mame/drivers/bartop52.cpp
@@ -118,7 +118,7 @@ void bartop52_state::machine_reset()
{
atari_common_state::machine_reset();
- m_pokey->write(15, 0);
+ m_pokey->write(machine().dummy_space(), 15, 0);
}
TIMER_DEVICE_CALLBACK_MEMBER( bartop52_state::bartop_interrupt )
diff --git a/src/mame/drivers/batman.cpp b/src/mame/drivers/batman.cpp
index 54f76b81007..f2d15cb1737 100644
--- a/src/mame/drivers/batman.cpp
+++ b/src/mame/drivers/batman.cpp
@@ -183,18 +183,18 @@ GFXDECODE_END
*
*************************************/
-void batman_state::batman(machine_config &config)
-{
+MACHINE_CONFIG_START(batman_state::batman)
+
/* basic machine hardware */
- M68000(config, m_maincpu, ATARI_CLOCK_14MHz);
- m_maincpu->set_addrmap(AS_PROGRAM, &batman_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
EEPROM_2816(config, "eeprom").lock_after_write(true);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- GFXDECODE(config, "gfxdecode", "palette", gfx_batman);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_batman)
PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 2048);
ATARI_VAD(config, m_vad, 0, m_screen);
@@ -204,13 +204,13 @@ void batman_state::batman(machine_config &config)
TILEMAP(config, "vad:alpha", "gfxdecode", 2, 8, 8, TILEMAP_SCAN_ROWS, 64, 32, 0).set_info_callback(DEVICE_SELF_OWNER, FUNC(batman_state::get_alpha_tile_info));
ATARI_MOTION_OBJECTS(config, "vad:mob", 0, m_screen, batman_state::s_mob_config).set_gfxdecode("gfxdecode");
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses a VAD chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(batman_state::screen_update_batman));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(batman_state, screen_update_batman)
+ MCFG_SCREEN_PALETTE("palette")
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -219,7 +219,7 @@ void batman_state::batman(machine_config &config)
m_jsa->main_int_cb().set_inputline(m_maincpu, M68K_IRQ_6);
m_jsa->test_read_cb().set_ioport("260010").bit(6);
m_jsa->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/battlane.cpp b/src/mame/drivers/battlane.cpp
index 018aa01f1f4..0b0ba86ee43 100644
--- a/src/mame/drivers/battlane.cpp
+++ b/src/mame/drivers/battlane.cpp
@@ -274,11 +274,11 @@ void battlane_state::machine_reset()
void battlane_state::battlane(machine_config &config)
{
/* basic machine hardware */
- M6809(config, m_maincpu, 1500000); /* 1.5 MHz ? */
+ M6809(config, m_maincpu, 1500000); /* 1.5 MHz ? */
m_maincpu->set_addrmap(AS_PROGRAM, &battlane_state::battlane_map);
m_maincpu->set_vblank_int("screen", FUNC(battlane_state::battlane_cpu1_interrupt));
- M6809(config, m_subcpu, 1500000); /* 1.5 MHz ? */
+ M6809(config, m_subcpu, 1500000); /* 1.5 MHz ? */
m_subcpu->set_addrmap(AS_PROGRAM, &battlane_state::battlane_map);
config.m_minimum_quantum = attotime::from_hz(6000);
diff --git a/src/mame/drivers/battlera.cpp b/src/mame/drivers/battlera.cpp
index 66bf74e0a6e..0151c326346 100644
--- a/src/mame/drivers/battlera.cpp
+++ b/src/mame/drivers/battlera.cpp
@@ -108,7 +108,6 @@ void battlera_state::machine_reset()
{
m_control_port_select = 0;
m_msm5205next = 0;
- m_toggle = 0;
}
/******************************************************************************/
@@ -157,8 +156,7 @@ WRITE_LINE_MEMBER(battlera_state::adpcm_int)
m_msm->write_data(m_msm5205next >> 4);
m_msm5205next <<= 4;
- m_toggle = 1 - m_toggle;
- if (m_toggle)
+ if (state)
m_audiocpu->set_input_line(1, HOLD_LINE);
}
@@ -297,7 +295,7 @@ void battlera_state::battlera(machine_config &config)
YM2203(config, "ymsnd", 12000000 / 8).add_route(ALL_OUTPUTS, "mono", 0.40);
MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(battlera_state::adpcm_int));
+ m_msm->vck_callback().set(FUNC(battlera_state::adpcm_int));
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8KHz */
m_msm->add_route(ALL_OUTPUTS, "mono", 0.85);
}
diff --git a/src/mame/drivers/battlex.cpp b/src/mame/drivers/battlex.cpp
index da2d2a9f05d..5d8377e2d67 100644
--- a/src/mame/drivers/battlex.cpp
+++ b/src/mame/drivers/battlex.cpp
@@ -291,42 +291,42 @@ void battlex_state::machine_reset()
m_in0_b4 = 0;
}
-void battlex_state::battlex(machine_config &config)
-{
+MACHINE_CONFIG_START(battlex_state::battlex)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(10'000'000)/4 ); // ?
- m_maincpu->set_addrmap(AS_PROGRAM, &battlex_state::battlex_map);
- m_maincpu->set_addrmap(AS_IO, &battlex_state::io_map);
- m_maincpu->set_periodic_int(FUNC(battlex_state::battlex_interrupt), attotime::from_hz(400)); /* controls game speed? */
+ MCFG_DEVICE_ADD("maincpu", Z80,XTAL(10'000'000)/4 ) // ?
+ MCFG_DEVICE_PROGRAM_MAP(battlex_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(battlex_state, battlex_interrupt, 400) /* controls game speed? */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(battlex_state::screen_update_battlex));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(battlex_state, screen_update_battlex)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_battlex);
- PALETTE(config, m_palette).set_entries(64 + 128);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_battlex)
+ MCFG_PALETTE_ADD("palette", 64 + 128)
/* sound hardware */
SPEAKER(config, "mono").front_center();
AY8910(config, "ay1", XTAL(10'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.40); // ?
-}
+MACHINE_CONFIG_END
-void battlex_state::dodgeman(machine_config &config)
-{
+MACHINE_CONFIG_START(battlex_state::dodgeman)
battlex(config);
- m_maincpu->set_addrmap(AS_IO, &battlex_state::dodgeman_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(dodgeman_io_map)
MCFG_VIDEO_START_OVERRIDE(battlex_state, dodgeman)
AY8910(config, "ay2", XTAL(10'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.40); // ?
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/battlnts.cpp b/src/mame/drivers/battlnts.cpp
index 10af6e61f14..63108a148de 100644
--- a/src/mame/drivers/battlnts.cpp
+++ b/src/mame/drivers/battlnts.cpp
@@ -231,26 +231,26 @@ void battlnts_state::machine_reset()
m_spritebank = 0;
}
-void battlnts_state::battlnts(machine_config &config)
-{
+MACHINE_CONFIG_START(battlnts_state::battlnts)
+
/* basic machine hardware */
- HD6309(config, m_maincpu, XTAL(24'000'000) / 2 /* 3000000*4? */);
- m_maincpu->set_addrmap(AS_PROGRAM, &battlnts_state::battlnts_map);
+ MCFG_DEVICE_ADD("maincpu", HD6309, XTAL(24'000'000) / 2 /* 3000000*4? */)
+ MCFG_DEVICE_PROGRAM_MAP(battlnts_map)
- Z80(config, m_audiocpu, XTAL(24'000'000) / 6 /* 3579545? */);
- m_audiocpu->set_addrmap(AS_PROGRAM, &battlnts_state::battlnts_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(24'000'000) / 6 /* 3579545? */)
+ MCFG_DEVICE_PROGRAM_MAP(battlnts_sound_map)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(battlnts_state::screen_update_battlnts));
- screen.set_palette("palette");
- screen.screen_vblank().set(FUNC(battlnts_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(battlnts_state, screen_update_battlnts)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, battlnts_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, "palette", gfx_battlnts);
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 128);
@@ -270,10 +270,12 @@ void battlnts_state::battlnts(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- YM3812(config, "ym1", XTAL(24'000'000) / 8).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("ym1", YM3812, XTAL(24'000'000) / 8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- YM3812(config, "ym2", XTAL(24'000'000) / 8).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ym2", YM3812, XTAL(24'000'000) / 8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/bbc.cpp b/src/mame/drivers/bbc.cpp
index 581ccc03efe..3452810516c 100644
--- a/src/mame/drivers/bbc.cpp
+++ b/src/mame/drivers/bbc.cpp
@@ -907,10 +907,14 @@ void bbc_state::bbca(machine_config &config)
m_via6522_0->irq_handler().set(m_irqs, FUNC(input_merger_device::in_w<1>));
/* eprom sockets */
- BBC_ROMSLOT16(config, m_rom[0x0c], bbc_rom_devices, nullptr); /* ic101 */
- BBC_ROMSLOT16(config, m_rom[0x0d], bbc_rom_devices, nullptr); /* ic100 */
- BBC_ROMSLOT16(config, m_rom[0x0e], bbc_rom_devices, nullptr); /* ic88 */
- BBC_ROMSLOT16(config, m_rom[0x0f], bbc_rom_devices, nullptr); /* ic52 */
+ GENERIC_SOCKET(config, m_rom[12], generic_linear_slot, "bbc_rom", "bin,rom"); /* ic101 */
+ m_rom[12]->set_device_load(device_image_load_delegate(&bbc_state::device_image_load_romc, this));
+ GENERIC_SOCKET(config, m_rom[13], generic_linear_slot, "bbc_rom", "bin,rom"); /* ic100 */
+ m_rom[13]->set_device_load(device_image_load_delegate(&bbc_state::device_image_load_romd, this));
+ GENERIC_SOCKET(config, m_rom[14], generic_linear_slot, "bbc_rom", "bin,rom"); /* ic88 */
+ m_rom[14]->set_device_load(device_image_load_delegate(&bbc_state::device_image_load_rome, this));
+ GENERIC_SOCKET(config, m_rom[15], generic_linear_slot, "bbc_rom", "bin,rom"); /* ic52 */
+ m_rom[15]->set_device_load(device_image_load_delegate(&bbc_state::device_image_load_romf, this));
/* software lists */
SOFTWARE_LIST(config, "cass_ls_a").set_original("bbca_cass");
@@ -946,7 +950,7 @@ void bbc_state::bbcb(machine_config &config)
m_via6522_1->irq_handler().set(m_irqs, FUNC(input_merger_device::in_w<2>));
/* adc */
- UPD7002(config, m_upd7002, 16_MHz_XTAL / 16);
+ UPD7002(config, m_upd7002, 0);
m_upd7002->set_get_analogue_callback(FUNC(bbc_state::get_analogue_input), this);
m_upd7002->set_eoc_callback(FUNC(bbc_state::upd7002_eoc), this);
@@ -1046,7 +1050,7 @@ void bbc_state::bbcb_us(machine_config &config)
FLOPPY_CONNECTOR(config, "i8271:1", bbc_floppies, "525qd", bbc_state::floppy_formats).enable_sound(true);
/* software lists */
- SOFTWARE_LIST(config, "flop_ls_b_us").set_original("bbcb_flop_us");
+ SOFTWARE_LIST(config, "flop_ls_b_us").set_original("bbcb_cass_us");
}
@@ -1129,11 +1133,16 @@ void bbcbp_state::bbcbp(machine_config &config)
FLOPPY_CONNECTOR(config, "wd1770:1", bbc_floppies, "525qd", bbc_state::floppy_formats).enable_sound(true);
/* eprom sockets */
- BBC_ROMSLOT32(config, m_rom[0x02], bbc_rom_devices, nullptr); /* ic35 */
- BBC_ROMSLOT32(config, m_rom[0x04], bbc_rom_devices, nullptr); /* ic44 */
- BBC_ROMSLOT32(config, m_rom[0x06], bbc_rom_devices, nullptr); /* ic57 */
- BBC_ROMSLOT32(config, m_rom[0x08], bbc_rom_devices, nullptr); /* ic62 */
- BBC_ROMSLOT32(config, m_rom[0x0a], bbc_rom_devices, nullptr); /* ic68 */
+ GENERIC_SOCKET(config, m_rom[2], generic_linear_slot, "bbc_rom", "bin,rom"); /* ic35 */
+ m_rom[2]->set_device_load(device_image_load_delegate(&bbc_state::device_image_load_rom23, this));
+ GENERIC_SOCKET(config, m_rom[4], generic_linear_slot, "bbc_rom", "bin,rom"); /* ic44 */
+ m_rom[4]->set_device_load(device_image_load_delegate(&bbc_state::device_image_load_rom45, this));
+ GENERIC_SOCKET(config, m_rom[6], generic_linear_slot, "bbc_rom", "bin,rom"); /* ic57 */
+ m_rom[6]->set_device_load(device_image_load_delegate(&bbc_state::device_image_load_rom67, this));
+ GENERIC_SOCKET(config, m_rom[8], generic_linear_slot, "bbc_rom", "bin,rom"); /* ic62 */
+ m_rom[8]->set_device_load(device_image_load_delegate(&bbc_state::device_image_load_rom89, this));
+ GENERIC_SOCKET(config, m_rom[10], generic_linear_slot, "bbc_rom", "bin,rom"); /* ic68 */
+ m_rom[10]->set_device_load(device_image_load_delegate(&bbc_state::device_image_load_romab, this));
config.device_remove("romslot12");
config.device_remove("romslot13");
config.device_remove("romslot14");
@@ -1401,7 +1410,7 @@ void bbcm_state::bbcm(machine_config &config)
m_acia_clock->signal_handler().set(FUNC(bbc_state::write_acia_clock));
/* adc */
- UPD7002(config, m_upd7002, 16_MHz_XTAL / 16);
+ UPD7002(config, m_upd7002, 0);
m_upd7002->set_get_analogue_callback(FUNC(bbc_state::get_analogue_input), this);
m_upd7002->set_eoc_callback(FUNC(bbc_state::upd7002_eoc), this);
@@ -1470,9 +1479,12 @@ void bbcm_state::bbcm(machine_config &config)
m_cart[1]->set_device_load(device_image_load_delegate(&bbc_state::device_image_load_cart2, this));
/* eprom sockets */
- BBC_ROMSLOT16(config, m_rom[0x08], bbc_rom_devices, nullptr); /* ic27 */
- BBC_ROMSLOT32(config, m_rom[0x04], bbc_rom_devices, nullptr); /* ic41 */
- BBC_ROMSLOT32(config, m_rom[0x06], bbc_rom_devices, nullptr); /* ic37 */
+ GENERIC_SOCKET(config, m_rom[8], generic_linear_slot, "bbc_rom", "bin,rom"); /* ic27 */
+ m_rom[8]->set_device_load(device_image_load_delegate(&bbc_state::device_image_load_rom8, this));
+ GENERIC_SOCKET(config, m_rom[4], generic_linear_slot, "bbc_rom", "bin,rom"); /* ic41 */
+ m_rom[4]->set_device_load(device_image_load_delegate(&bbc_state::device_image_load_rom45, this));
+ GENERIC_SOCKET(config, m_rom[6], generic_linear_slot, "bbc_rom", "bin,rom"); /* ic37 */
+ m_rom[6]->set_device_load(device_image_load_delegate(&bbc_state::device_image_load_rom67, this));
/* software lists */
SOFTWARE_LIST(config, "cass_ls_m").set_original("bbcm_cass");
@@ -1674,13 +1686,14 @@ void bbcm_state::bbcmc(machine_config &config)
config.device_remove("cartslot2");
/* eprom sockets */
+ GENERIC_SOCKET(config, m_rom[2], generic_linear_slot, "bbc_rom", "bin,rom"); /* ic23 */
+ m_rom[2]->set_device_load(device_image_load_delegate(&bbc_state::device_image_load_rom2, this));
+ GENERIC_SOCKET(config, m_rom[3], generic_linear_slot, "bbc_rom", "bin,rom"); /* ic17 */
+ m_rom[3]->set_device_load(device_image_load_delegate(&bbc_state::device_image_load_rom3, this));
+ GENERIC_SOCKET(config, m_rom[0], generic_linear_slot, "bbc_rom", "bin,rom"); /* ic38 */
+ m_rom[0]->set_device_load(device_image_load_delegate(&bbc_state::device_image_load_rom01, this));
config.device_remove("romslot4");
config.device_remove("romslot6");
- config.device_remove("romslot8");
- BBC_ROMSLOT16(config, m_rom[0x03], bbc_rom_devices, nullptr); /* ic17 */
- BBC_ROMSLOT16(config, m_rom[0x02], bbc_rom_devices, nullptr); /* ic23 */
- BBC_ROMSLOT32(config, m_rom[0x00], bbc_rom_devices, nullptr); /* ic38 */
- BBC_ROMSLOT16(config, m_rom[0x08], bbc_rom_devices, nullptr); /* ic29 */
/* software lists */
SOFTWARE_LIST(config, "flop_ls_mc").set_original("bbcmc_flop");
diff --git a/src/mame/drivers/bbcbc.cpp b/src/mame/drivers/bbcbc.cpp
index dabea1029f1..005ac12cd9b 100644
--- a/src/mame/drivers/bbcbc.cpp
+++ b/src/mame/drivers/bbcbc.cpp
@@ -82,7 +82,8 @@ void bbcbc_state::io_map(address_map &map)
[this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
m_z80pio->write(space, offset >> 5, data, mem_mask);
});
- map(0x80, 0x81).rw("tms9129", FUNC(tms9129_device::read), FUNC(tms9129_device::write));
+ map(0x80, 0x80).rw("tms9129", FUNC(tms9129_device::vram_r), FUNC(tms9129_device::vram_w));
+ map(0x81, 0x81).rw("tms9129", FUNC(tms9129_device::register_r), FUNC(tms9129_device::register_w));
}
// Input bits are read through the PIO four at a time, then stored individually in RAM at E030-E03B
@@ -117,8 +118,7 @@ static const z80_daisy_config bbcbc_daisy_chain[] =
};
-void bbcbc_state::bbcbc(machine_config &config)
-{
+MACHINE_CONFIG_START(bbcbc_state::bbcbc)
Z80(config, m_maincpu, 10.6875_MHz_XTAL / 3);
m_maincpu->set_addrmap(AS_PROGRAM, &bbcbc_state::mem_map);
m_maincpu->set_addrmap(AS_IO, &bbcbc_state::io_map);
@@ -136,9 +136,9 @@ void bbcbc_state::bbcbc(machine_config &config)
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
// Software on ROM cartridges
- GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "bbcbc_cart");
- SOFTWARE_LIST(config, "cart_list").set_original("bbcbc");
-}
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "bbcbc_cart")
+ MCFG_SOFTWARE_LIST_ADD("cart_list","bbcbc")
+MACHINE_CONFIG_END
void bbcbc_state::machine_start()
diff --git a/src/mame/drivers/bcs3.cpp b/src/mame/drivers/bcs3.cpp
index f9d9f12cc8a..7e7fbca8d44 100644
--- a/src/mame/drivers/bcs3.cpp
+++ b/src/mame/drivers/bcs3.cpp
@@ -384,8 +384,8 @@ void bcs3_state::init_bcs3d()
s_cols = 29;
}
-void bcs3_state::bcs3(machine_config &config)
-{
+MACHINE_CONFIG_START(bcs3_state::bcs3)
+
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(5'000'000) /2);
m_maincpu->set_addrmap(AS_PROGRAM, &bcs3_state::bcs3_mem);
@@ -393,14 +393,14 @@ void bcs3_state::bcs3(machine_config &config)
m_maincpu->set_daisy_config(daisy_chain_intf);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(28*8, 12*10);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(bcs3_state::screen_update_bcs3));
- screen.set_palette("palette");
- GFXDECODE(config, "gfxdecode", "palette", gfx_bcs3);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(28*8, 12*10)
+ MCFG_SCREEN_VISIBLE_AREA(0,28*8-1,0,12*10-1)
+ MCFG_SCREEN_UPDATE_DRIVER(bcs3_state, screen_update_bcs3)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_bcs3)
PALETTE(config, "palette", palette_device::MONOCHROME);
Z80CTC(config, m_ctc, XTAL(5'000'000) / 2);
@@ -408,11 +408,11 @@ void bcs3_state::bcs3(machine_config &config)
m_ctc->zc_callback<0>().set(FUNC(bcs3_state::ctc_z0_w));
m_ctc->zc_callback<1>().set(FUNC(bcs3_state::ctc_z1_w));
- CASSETTE(config, m_cass);
-}
+ MCFG_CASSETTE_ADD( "cassette" )
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(bcs3_state::bcs3a)
-void bcs3_state::bcs3a(machine_config &config)
-{
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(7'000'000) /2);
m_maincpu->set_addrmap(AS_PROGRAM, &bcs3_state::bcs3a_mem);
@@ -420,14 +420,14 @@ void bcs3_state::bcs3a(machine_config &config)
m_maincpu->set_daisy_config(daisy_chain_intf);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(29*8, 12*10);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(bcs3_state::screen_update_bcs3a));
- screen.set_palette("palette");
- GFXDECODE(config, "gfxdecode", "palette", gfx_bcs3);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(29*8, 12*10)
+ MCFG_SCREEN_VISIBLE_AREA(0,29*8-1,0,12*10-1)
+ MCFG_SCREEN_UPDATE_DRIVER(bcs3_state, screen_update_bcs3a)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_bcs3)
PALETTE(config, "palette", palette_device::MONOCHROME);
Z80CTC(config, m_ctc, XTAL(7'000'000) / 2);
@@ -435,15 +435,15 @@ void bcs3_state::bcs3a(machine_config &config)
m_ctc->zc_callback<0>().set(FUNC(bcs3_state::ctc_z0_w));
m_ctc->zc_callback<1>().set(FUNC(bcs3_state::ctc_z1_w));
- CASSETTE(config, m_cass);
-}
+ MCFG_CASSETTE_ADD( "cassette" )
+MACHINE_CONFIG_END
-void bcs3_state::bcs3b(machine_config &config)
-{
+MACHINE_CONFIG_START(bcs3_state::bcs3b)
bcs3a(config);
- subdevice<screen_device>("screen")->set_size(40*8, 24*10);
- subdevice<screen_device>("screen")->set_visarea(0, 40*8-1, 0, 24*10-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(40*8, 24*10)
+ MCFG_SCREEN_VISIBLE_AREA(0,40*8-1,0,24*10-1)
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/beaminv.cpp b/src/mame/drivers/beaminv.cpp
index 3de767c935e..4648b557265 100644
--- a/src/mame/drivers/beaminv.cpp
+++ b/src/mame/drivers/beaminv.cpp
@@ -340,21 +340,22 @@ INPUT_PORTS_END
*
*************************************/
-void beaminv_state::beaminv(machine_config &config)
-{
+MACHINE_CONFIG_START(beaminv_state::beaminv)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 2000000); /* 2 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &beaminv_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &beaminv_state::main_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 2000000) /* 2 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_io_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 247, 16, 231);
- m_screen->set_refresh_hz(60);
- m_screen->set_screen_update(FUNC(beaminv_state::screen_update_beaminv));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 247, 16, 231)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_UPDATE_DRIVER(beaminv_state, screen_update_beaminv)
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/beathead.cpp b/src/mame/drivers/beathead.cpp
index e5590015a80..23456f11fdc 100644
--- a/src/mame/drivers/beathead.cpp
+++ b/src/mame/drivers/beathead.cpp
@@ -333,26 +333,26 @@ INPUT_PORTS_END
*
*************************************/
-void beathead_state::beathead(machine_config &config)
-{
+MACHINE_CONFIG_START(beathead_state::beathead)
+
/* basic machine hardware */
- ASAP(config, m_maincpu, ATARI_CLOCK_14MHz);
- m_maincpu->set_addrmap(AS_PROGRAM, &beathead_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", ASAP, ATARI_CLOCK_14MHz)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
EEPROM_2804(config, "eeprom").lock_after_write(true);
WATCHDOG_TIMER(config, "watchdog");
- TIMER(config, m_scan_timer).configure_generic(FUNC(beathead_state::scanline_callback));
+ MCFG_TIMER_DRIVER_ADD(m_scan_timer, beathead_state, scanline_callback)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
- m_screen->set_refresh_hz(60);
- m_screen->set_screen_update(FUNC(beathead_state::screen_update));
- m_screen->set_size(42*8, 262);
- m_screen->set_visarea(0*8, 42*8-1, 0*8, 30*8-1);
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_UPDATE_DRIVER(beathead_state, screen_update)
+ MCFG_SCREEN_SIZE(42*8, 262)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 42*8-1, 0*8, 30*8-1)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette);
m_palette->set_format(palette_device::IRGB_1555, 32768);
@@ -364,7 +364,7 @@ void beathead_state::beathead(machine_config &config)
ATARI_JSA_III(config, m_jsa, 0);
m_jsa->test_read_cb().set_ioport("IN2").bit(6);
m_jsa->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/bebox.cpp b/src/mame/drivers/bebox.cpp
index c73482722b8..7a8d888907a 100644
--- a/src/mame/drivers/bebox.cpp
+++ b/src/mame/drivers/bebox.cpp
@@ -28,8 +28,8 @@
#include "formats/pc_dsk.h"
#include "machine/8042kbdc.h"
-READ8_MEMBER(bebox_state::at_dma8237_1_r) { return m_dma8237[1]->read(offset / 2); }
-WRITE8_MEMBER(bebox_state::at_dma8237_1_w) { m_dma8237[1]->write(offset / 2, data); }
+READ8_MEMBER(bebox_state::at_dma8237_1_r) { return m_dma8237[1]->read(space, offset / 2); }
+WRITE8_MEMBER(bebox_state::at_dma8237_1_w) { m_dma8237[1]->write(space, offset / 2, data); }
void bebox_state::main_mem(address_map &map)
{
@@ -117,9 +117,8 @@ FLOPPY_FORMATS_END
void bebox_state::mpc105_config(device_t *device)
{
- mpc105_device &mpc105 = *downcast<mpc105_device *>(device);
- mpc105.set_cpu(":ppc1");
- mpc105.set_bank_base_default(0);
+ MCFG_MPC105_CPU( "ppc1" )
+ MCFG_MPC105_BANK_BASE_DEFAULT( 0 )
}
/*************************************
@@ -221,7 +220,7 @@ void bebox_state::bebox_peripherals(machine_config &config)
pcislot0.set_option_machine_config("mpc105", mpc105_config);
add_pci_slot(config, "pcibus:1", 1, "cirrus");
- /*MCFG_PCI_BUS_LEGACY_DEVICE(12, nullptr, scsi53c810_pci_read, scsi53c810_pci_write)*/
+ /*MCFG_PCI_BUS_DEVICE(12, nullptr, scsi53c810_pci_read, scsi53c810_pci_write)*/
SMC37C78(config, m_smc37c78, 24'000'000);
m_smc37c78->intrq_wr_callback().set(FUNC(bebox_state::fdc_interrupt));
diff --git a/src/mame/drivers/beehive.cpp b/src/mame/drivers/beehive.cpp
index deb24a5ef15..9d5983ff196 100644
--- a/src/mame/drivers/beehive.cpp
+++ b/src/mame/drivers/beehive.cpp
@@ -291,24 +291,23 @@ uint32_t beehive_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
return 0;
}
-void beehive_state::beehive(machine_config &config)
-{
+MACHINE_CONFIG_START(beehive_state::beehive)
/* basic machine hardware */
- I8085A(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &beehive_state::beehive_mem);
- m_maincpu->set_addrmap(AS_IO, &beehive_state::beehive_io);
+ MCFG_DEVICE_ADD("maincpu",I8085A, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(beehive_mem)
+ MCFG_DEVICE_IO_MAP(beehive_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(beehive_state::screen_update));
- screen.set_size(640, 250);
- screen.set_visarea(0, 639, 0, 249);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(beehive_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 250)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( beehive )
diff --git a/src/mame/drivers/beezer.cpp b/src/mame/drivers/beezer.cpp
index c8c7b38e165..12eedb3a903 100644
--- a/src/mame/drivers/beezer.cpp
+++ b/src/mame/drivers/beezer.cpp
@@ -278,9 +278,9 @@ void beezer_state::palette_init(palette_device &device)
WRITE8_MEMBER( beezer_state::palette_w )
{
- int r = combine_weights(m_weights_r, BIT(data, 0), BIT(data, 1), BIT(data, 2));
- int g = combine_weights(m_weights_g, BIT(data, 3), BIT(data, 4), BIT(data, 5));
- int b = combine_weights(m_weights_b, BIT(data, 6), BIT(data, 7));
+ int r = combine_3_weights(m_weights_r, BIT(data, 0), BIT(data, 1), BIT(data, 2));
+ int g = combine_3_weights(m_weights_g, BIT(data, 3), BIT(data, 4), BIT(data, 5));
+ int b = combine_2_weights(m_weights_b, BIT(data, 6), BIT(data, 7));
m_palette->set_pen_color(offset, rgb_t(r, g, b));
}
diff --git a/src/mame/drivers/belatra.cpp b/src/mame/drivers/belatra.cpp
index 39b3855f32c..3f36955692a 100644
--- a/src/mame/drivers/belatra.cpp
+++ b/src/mame/drivers/belatra.cpp
@@ -70,15 +70,14 @@ void belatra_state::belatra_map(address_map &map)
static INPUT_PORTS_START( belatra )
INPUT_PORTS_END
-void belatra_state::belatra(machine_config &config)
-{
- ARM7(config, m_maincpu, 54000000); // guess...
- m_maincpu->set_addrmap(AS_PROGRAM, &belatra_state::belatra_map);
+MACHINE_CONFIG_START(belatra_state::belatra)
+ MCFG_DEVICE_ADD("maincpu", ARM7, 54000000) // guess...
+ MCFG_DEVICE_PROGRAM_MAP(belatra_map)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
/* unknown sound */
-}
+MACHINE_CONFIG_END
ROM_START( merryjn )
diff --git a/src/mame/drivers/bert.cpp b/src/mame/drivers/bert.cpp
deleted file mode 100644
index 5e279573349..00000000000
--- a/src/mame/drivers/bert.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:AJR
-/*******************************************************************************
-
- BERT apparently stands for "Basic Einplatinen Rechner für TV-Serie." It is
- a small educational single-board computer manufactured by the West German
- firm Thomsen-Elektronik, based on the Z8671 microcontroller with a built-in
- BASIC/DEBUG ROM.
-
- Besides a 5-pin DIN connector for the terminal or PC, the board makes four
- generic input and/or output ports available to the user through pin headers.
- The first two ports, including the fully bidirectional port A, are directly
- wired to the processor. Two other ports are read or written through memory-
- mapped latches, and a fifth port represents the onboard DIP switches.
-
-*******************************************************************************/
-
-#include "emu.h"
-#include "bus/rs232/rs232.h"
-#include "cpu/z8/z8.h"
-#include "machine/ram.h"
-
-class bert_state : public driver_device
-{
-public:
- bert_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_mpu(*this, "mpu")
- , m_ram(*this, RAM_TAG)
- , m_serial(*this, "serial")
- {
- }
-
- void bert(machine_config &config);
-
-protected:
- virtual void machine_start() override;
-
-private:
- void portb_w(u8 data);
- void portd_w(u8 data);
-
- void mem_map(address_map &map);
-
- required_device<z8_device> m_mpu;
- required_device<ram_device> m_ram;
- required_device<rs232_port_device> m_serial;
-};
-
-void bert_state::machine_start()
-{
- m_mpu->space(AS_PROGRAM).install_ram(0x2000, 0x2000 + m_ram->size() - 1, 0x8000, m_ram->pointer());
-}
-
-void bert_state::portb_w(u8 data)
-{
- m_serial->write_txd(BIT(data, 7));
-}
-
-void bert_state::portd_w(u8 data)
-{
-}
-
-void bert_state::mem_map(address_map &map)
-{
- // A15 (P07) is only decoded internally
- map(0x0800, 0x0fff).mirror(0x8000).noprw();
- map(0x1000, 0x1fff).mirror(0x8000).rom().region("eprom", 0).nopw(); // 2732
- map(0x5000, 0x5000).mirror(0x8fff).portr("PORTC"); // 74LS373
- map(0x6000, 0x6000).mirror(0x8fff).w(FUNC(bert_state::portd_w)); // 74LS373
- map(0x7000, 0x7000).mirror(0x8fff).portr("PORTE"); // 74LS368
-}
-
-static INPUT_PORTS_START(bert)
- PORT_START("PORTA")
- PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN)
-
- PORT_START("PORTC")
- PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN)
-
- PORT_START("PORTE")
- PORT_DIPNAME(0x07, 0x02, "Baud Rate") PORT_DIPLOCATION("E:!1,!2,!3")
- PORT_DIPSETTING(0x06, "110")
- PORT_DIPSETTING(0x00, "150")
- PORT_DIPSETTING(0x07, "300")
- PORT_DIPSETTING(0x05, "1200")
- PORT_DIPSETTING(0x04, "2400")
- PORT_DIPSETTING(0x03, "4800")
- PORT_DIPSETTING(0x02, "9600")
- PORT_DIPSETTING(0x01, "19200")
- PORT_DIPNAME(0x08, 0x00, DEF_STR(Unused)) PORT_DIPLOCATION("E:!4")
- PORT_DIPSETTING(0x00, DEF_STR(Off))
- PORT_DIPSETTING(0x08, DEF_STR(On))
- PORT_DIPNAME(0x10, 0x00, DEF_STR(Unused)) PORT_DIPLOCATION("E:!5")
- PORT_DIPSETTING(0x00, DEF_STR(Off))
- PORT_DIPSETTING(0x10, DEF_STR(On))
- PORT_DIPNAME(0x20, 0x00, DEF_STR(Unused)) PORT_DIPLOCATION("E:!6")
- PORT_DIPSETTING(0x00, DEF_STR(Off))
- PORT_DIPSETTING(0x20, DEF_STR(On))
- PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED)
-INPUT_PORTS_END
-
-void bert_state::bert(machine_config &config)
-{
- Z8671(config, m_mpu, 7.3728_MHz_XTAL);
- m_mpu->set_addrmap(AS_PROGRAM, &bert_state::mem_map);
- m_mpu->p2_in_cb().set_ioport("PORTA");
- m_mpu->p3_out_cb().set(FUNC(bert_state::portb_w));
-
- RAM(config, m_ram).set_default_size("2K").set_extra_options("4K"); // two 6116 sockets
-
- RS232_PORT(config, m_serial, default_rs232_devices, "terminal"); // TTL-level, not EIA/CCITT ±12V
- m_serial->rxd_handler().set_inputline(m_mpu, INPUT_LINE_IRQ3).invert(); // no actual inverter
-}
-
-ROM_START(bert)
- ROM_REGION(0x1000, "eprom", 0)
- ROM_LOAD("bert.bin", 0x0000, 0x1000, CRC(52ece0e7) SHA1(d39cc9b6248547cfa8fd49d43532abf9399348a5))
-ROM_END
-
-COMP(1987, bert, 0, 0, bert, bert, bert_state, empty_init, "VGS Verlagsgesellschaft", "BERT", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW)
diff --git a/src/mame/drivers/berzerk.cpp b/src/mame/drivers/berzerk.cpp
index 18cde8158e8..ad462685c16 100644
--- a/src/mame/drivers/berzerk.cpp
+++ b/src/mame/drivers/berzerk.cpp
@@ -476,9 +476,9 @@ void berzerk_state::get_pens(rgb_t *pens)
uint8_t b_bit = (color >> 2) & 0x01;
uint8_t i_bit = (color >> 3) & 0x01;
- uint8_t r = combine_weights(color_weights, r_bit & i_bit, r_bit);
- uint8_t g = combine_weights(color_weights, g_bit & i_bit, g_bit);
- uint8_t b = combine_weights(color_weights, b_bit & i_bit, b_bit);
+ uint8_t r = combine_2_weights(color_weights, r_bit & i_bit, r_bit);
+ uint8_t g = combine_2_weights(color_weights, g_bit & i_bit, g_bit);
+ uint8_t b = combine_2_weights(color_weights, b_bit & i_bit, b_bit);
pens[color] = rgb_t(r, g, b);
}
@@ -793,7 +793,7 @@ static INPUT_PORTS_START( berzerk )
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
-// this set has French speech ROMs, so default the language to French
+// this set has French speech roms, so default the language to French
static INPUT_PORTS_START( berzerkf )
PORT_INCLUDE( berzerk )
@@ -805,7 +805,7 @@ static INPUT_PORTS_START( berzerkf )
PORT_DIPSETTING( 0xc0, DEF_STR( Spanish ) )
INPUT_PORTS_END
-// this set has German speech ROMs, so default the language to German
+// this set has German speech roms, so default the language to German
static INPUT_PORTS_START( berzerkg )
PORT_INCLUDE( berzerk )
@@ -817,7 +817,7 @@ static INPUT_PORTS_START( berzerkg )
PORT_DIPSETTING( 0xc0, DEF_STR( Spanish ) )
INPUT_PORTS_END
-// this set has a Spanish speech ROM, so default the language to Spanish
+// this set has a Spanish speech rom, so default the language to Spanish
static INPUT_PORTS_START( berzerks )
PORT_INCLUDE( berzerk )
@@ -1120,38 +1120,39 @@ INPUT_PORTS_END
*
*************************************/
-void berzerk_state::berzerk(machine_config &config)
-{
+MACHINE_CONFIG_START(berzerk_state::berzerk)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &berzerk_state::berzerk_map);
- m_maincpu->set_addrmap(AS_IO, &berzerk_state::berzerk_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(berzerk_map)
+ MCFG_DEVICE_IO_MAP(berzerk_io_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TTL74181(config, m_ls181_10c);
- TTL74181(config, m_ls181_12c);
+ MCFG_DEVICE_ADD("ls181_10c", TTL74181)
+ MCFG_DEVICE_ADD("ls181_12c", TTL74181)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(berzerk_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(berzerk_state, screen_update)
/* audio hardware */
SPEAKER(config, "mono").front_center();
- S14001A(config, m_s14001a, S14001_CLOCK/16/8).add_route(ALL_OUTPUTS, "mono", 1.00); /* placeholder - the clock is software controllable */
+ MCFG_DEVICE_ADD("speech", S14001A, S14001_CLOCK/16/8) /* placeholder - the clock is software controllable */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
EXIDY(config, m_custom, 0).add_route(ALL_OUTPUTS, "mono", 0.33);
-}
+MACHINE_CONFIG_END
-void berzerk_state::frenzy(machine_config &config)
-{
+MACHINE_CONFIG_START(berzerk_state::frenzy)
berzerk(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &berzerk_state::frenzy_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(frenzy_map)
+MACHINE_CONFIG_END
@@ -1165,7 +1166,7 @@ void berzerk_state::frenzy(machine_config &config)
Berzerk program labels follow this format:
-BERZERK (C) <-- ROM socket silkscreened ROM0
+BERZERK (C) <-- rom socket silkscreened ROM0
RC31 1C
1980 STERN
@@ -1181,7 +1182,7 @@ So PCB location and silkscreen are as follows as they appear on an actual PCB:
NOTE: No known set uses ROM6
-Sound ROMs for Berzerk / Frenzy have been found labeled as:
+Sound roms for Berzerk / Frenzy have been found labeled as:
BERZERK BERZERK
R VO 1C R VO 2C
@@ -1193,7 +1194,9 @@ E169-1CVO E169-2CVO
RVO 1C (-9) RVO 2C (-9)
1982 STERN 1982 STERN
-Both sets of ROMs contain the same data.
+Both sets of roms contain the same data.
+
+We need to have actual verfied rom labels for all the sets below (other then voice roms :-)
*/
@@ -1205,7 +1208,7 @@ ROM_START( berzerk )
ROM_LOAD( "berzerk_rc31_5d.rom3.5d", 0x2000, 0x0800, CRC(fcaefa95) SHA1(07f849aa39f1e3db938187ffde4a46a588156ddc) )
ROM_LOAD( "berzerk_rc31_6d.rom4.6d", 0x2800, 0x0800, CRC(1e35b9a0) SHA1(5a5e549ec0e4803ab2d1eac6b3e7171aedf28244) )
ROM_LOAD( "berzerk_rc31_5c.rom5.5c", 0x3000, 0x0800, CRC(c8c665e5) SHA1(e9eca4b119549e0061384abf52327c14b0d56624) )
- ROM_FILL( 0x3800, 0x0800, 0xff ) /* ROM socket ROM6 at 3C is unpopulated */
+ ROM_FILL( 0x3800, 0x0800, 0xff ) /* rom socket ROM6 at 3C is unpopulated */
ROM_REGION( 0x01000, "speech", 0 ) /* voice data */
ROM_LOAD( "berzerk_r_vo_1c.1c", 0x0000, 0x0800, CRC(2cfe825d) SHA1(f12fed8712f20fa8213f606c4049a8144bfea42e) ) /* VSU-1000 board */
@@ -1220,7 +1223,7 @@ ROM_START( berzerk1 )
ROM_LOAD( "berzerk_rc28_5d.rom3.5d", 0x2000, 0x0800, CRC(6a1936b4) SHA1(f1635e9d2f25514c35559d2a247c3bc4b4034c19) )
ROM_LOAD( "berzerk_rc28_6d.rom4.6d", 0x2800, 0x0800, CRC(fa5dce40) SHA1(b3a3ee52bf65bbb3a20f905d3e4ebdf6871dcb5d) )
ROM_LOAD( "berzerk_rc28_5c.rom5.5c", 0x3000, 0x0800, CRC(2579b9f4) SHA1(890f0237afbb194166eae88c98de81989f408548) )
- ROM_FILL( 0x3800, 0x0800, 0xff ) /* ROM socket ROM6 at 3C is unpopulated */
+ ROM_FILL( 0x3800, 0x0800, 0xff ) /* rom socket ROM6 at 3C is unpopulated */
ROM_REGION( 0x01000, "speech", 0 ) /* voice data */
ROM_LOAD( "berzerk_r_vo_1c.1c", 0x0000, 0x0800, CRC(2cfe825d) SHA1(f12fed8712f20fa8213f606c4049a8144bfea42e) ) /* VSU-1000 board */
@@ -1235,26 +1238,26 @@ ROM_START( berzerkf )
ROM_LOAD( "berzerk_rc31f_5d.rom3.5d", 0x2000, 0x0800, CRC(316192b5) SHA1(50f4ba2b59423a48c1d51fc6e4d9ea098d6f3743) )
ROM_LOAD( "berzerk_rc31f_6d.rom4.6d", 0x2800, 0x0800, CRC(cd51238c) SHA1(f0b65bdd1f225c151a93ea62812b4bb64969acac) )
ROM_LOAD( "berzerk_rc31f_5c.rom5.5c", 0x3000, 0x0800, CRC(563b13b6) SHA1(f8d137cd26535efe92780560d2f69f12d3f0fa42) )
- ROM_FILL( 0x3800, 0x0800, 0xff ) /* ROM socket ROM6 at 3C is unpopulated */
+ ROM_FILL( 0x3800, 0x0800, 0xff ) /* rom socket ROM6 at 3C is unpopulated */
ROM_REGION( 0x01000, "speech", 0 ) /* voice data */
- ROM_LOAD( "berzerk_rvof_1c.1c", 0x0000, 0x0800, CRC(d7bfaca2) SHA1(b8c22db0f6e86d90f3c2ac9ff9e9d0ccff314919) ) /* VSU-1000 board */
- ROM_LOAD( "berzerk_rvof_2c.2c", 0x0800, 0x0800, CRC(7bdc3573) SHA1(f346f0ac9813812f2e3fe68ebbf79151975babcb) ) /* ditto */
+ ROM_LOAD( "berzerk_rvof_1c.1c", 0x0000, 0x0800, CRC(d7bfaca2) SHA1(b8c22db0f6e86d90f3c2ac9ff9e9d0ccff314919) ) /* VSU-1000 board */
+ ROM_LOAD( "berzerk_rvof_2c.2c", 0x0800, 0x0800, CRC(7bdc3573) SHA1(f346f0ac9813812f2e3fe68ebbf79151975babcb) ) /* ditto */
ROM_END
ROM_START( berzerkg )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "cpu rom 00.1c", 0x0000, 0x0800, CRC(77923a9e) SHA1(3760800b7aa1245f2141897b2406f0f5af5a8d71) ) /* Need to verify ROM labels for this set */
+ ROM_LOAD( "cpu rom 00.1c", 0x0000, 0x0800, CRC(77923a9e) SHA1(3760800b7aa1245f2141897b2406f0f5af5a8d71) )
ROM_LOAD( "cpu rom 01.1d", 0x1000, 0x0800, CRC(19bb3aac) SHA1(11341521fd880d55ea01bceb4a321ec571f0b759) )
ROM_LOAD( "cpu rom 02.3d", 0x1800, 0x0800, CRC(b0888ff7) SHA1(ac76400482fe37b6c8e309cd9b10855dac86ed24) )
ROM_LOAD( "cpu rom 03.5d", 0x2000, 0x0800, CRC(e23239a9) SHA1(a0505efdee4cb1962243638c641e94983673f70f) )
ROM_LOAD( "cpu rom 04.6d", 0x2800, 0x0800, CRC(651b31b7) SHA1(890f424a5a73a95af642435c1b0cca78a9413aae) )
ROM_LOAD( "cpu rom 05.5c", 0x3000, 0x0800, CRC(8a403bba) SHA1(686a9b58a245df6c947d14991a2e4cbaf511e2ca) )
- ROM_FILL( 0x3800, 0x0800, 0xff ) /* ROM socket ROM6 at 3C is unpopulated */
+ ROM_FILL( 0x3800, 0x0800, 0xff ) /* rom socket ROM6 at 3C is unpopulated */
ROM_REGION( 0x01000, "speech", 0 ) /* voice data */
- ROM_LOAD( "berzerk_rvog_1c.1c", 0x0000, 0x0800, CRC(fc1da15f) SHA1(f759a017d9e95acf0e1d35b16d8820acee7d7e3d) ) /* VSU-1000 board */
- ROM_LOAD( "berzerk_rvog_2c.2c", 0x0800, 0x0800, CRC(7f6808fb) SHA1(8a9c43597f924221f68d1b31e033f1dc492cddc5) ) /* ditto */
+ ROM_LOAD( "berzerk_rvog_1c.1c", 0x0000, 0x0800, CRC(fc1da15f) SHA1(f759a017d9e95acf0e1d35b16d8820acee7d7e3d) ) /* VSU-1000 board */
+ ROM_LOAD( "berzerk_rvog_2c.2c", 0x0800, 0x0800, CRC(7f6808fb) SHA1(8a9c43597f924221f68d1b31e033f1dc492cddc5) ) /* ditto */
ROM_END
ROM_START( berzerks )
@@ -1265,28 +1268,28 @@ ROM_START( berzerks )
ROM_LOAD( "berzerk_rc32_5d.rom3.5d", 0x2000, 0x0800, CRC(e23239a9) SHA1(a0505efdee4cb1962243638c641e94983673f70f) ) /* Same as the German set */
ROM_LOAD( "berzerk_rc32_6d.rom4.6d", 0x2800, 0x0800, CRC(959efd86) SHA1(3401f86ed6202e8790cef00c73af29cc282d322e) )
ROM_LOAD( "berzerk_rc32s_5c.rom5.5c", 0x3000, 0x0800, CRC(9ad80e4e) SHA1(f79a86dd3dee5d53c2a60eda5b5181816bd73bc3) )
- ROM_FILL( 0x3800, 0x0800, 0xff ) /* ROM socket ROM6 at 3C is unpopulated */
+ ROM_FILL( 0x3800, 0x0800, 0xff ) /* rom socket ROM6 at 3C is unpopulated */
ROM_REGION( 0x01000, "speech", 0 ) /* voice data */
- ROM_LOAD( "berzerk_rvos_1c.1c", 0x0000, 0x0800, CRC(0b51409c) SHA1(75333853a82029f080e3db61441ba6091c1aab55) ) /* VSU-1000 board */
- /* ROM socket 2C is unpopulated */
+ ROM_LOAD( "berzerk_rvos_1c.1c", 0x0000, 0x0800, CRC(0b51409c) SHA1(75333853a82029f080e3db61441ba6091c1aab55) ) /* VSU-1000 board */
+ /* rom socket 2C is unpopulated */
ROM_END
ROM_START( frenzy )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "1c-0", 0x0000, 0x1000, CRC(abdd25b8) SHA1(e6a3ab826b51b2c6ddd63d55681848fccad800dd) ) /* Need to verify ROM labels for this set */
+ ROM_LOAD( "1c-0", 0x0000, 0x1000, CRC(abdd25b8) SHA1(e6a3ab826b51b2c6ddd63d55681848fccad800dd) )
ROM_LOAD( "1d-1", 0x1000, 0x1000, CRC(536e4ae8) SHA1(913385c43b8902d3d3ad2194a3137e19e61c6573) )
ROM_LOAD( "3d-2", 0x2000, 0x1000, CRC(3eb9bc9b) SHA1(1e43e76ae0606a6d41d9006005d6001bdee48694) )
ROM_LOAD( "5d-3", 0x3000, 0x1000, CRC(e1d3133c) SHA1(2af4a9bc2b29735a548ae770f872127bc009cc42) )
ROM_LOAD( "6d-4", 0xc000, 0x1000, CRC(5581a7b1) SHA1(1f633c1c29d3b64f701c601feba26da66a6c6f23) )
ROM_REGION( 0x01000, "speech", 0 ) /* voice data */
- ROM_LOAD( "e169-1cvo.1c", 0x0000, 0x0800, CRC(2cfe825d) SHA1(f12fed8712f20fa8213f606c4049a8144bfea42e) ) /* VSU-1000 board */
- ROM_LOAD( "e169-2cvo.2c", 0x0800, 0x0800, CRC(d2b6324e) SHA1(20a6611ad6ec19409ac138bdae7bdfaeab6c47cf) ) /* ditto */
+ ROM_LOAD( "e169-1cvo.1c", 0x0000, 0x0800, CRC(2cfe825d) SHA1(f12fed8712f20fa8213f606c4049a8144bfea42e) ) /* VSU-1000 board */
+ ROM_LOAD( "e169-2cvo.2c", 0x0800, 0x0800, CRC(d2b6324e) SHA1(20a6611ad6ec19409ac138bdae7bdfaeab6c47cf) ) /* ditto */
ROM_REGION( 0x0020, "proms", 0 )
- ROM_LOAD( "prom.6e", 0x0000, 0x0020, CRC(4471ca5d) SHA1(ba8dca2ec076818f8ad8c17b15c77965e36fa05e) ) /* address decoder/ROM select PROM (N82S123N) */
+ ROM_LOAD( "prom.6e", 0x0000, 0x0020, CRC(4471ca5d) SHA1(ba8dca2ec076818f8ad8c17b15c77965e36fa05e) ) /* address decoder/rom select prom (N82S123N) */
ROM_END
@@ -1296,8 +1299,8 @@ ROM_END
The more common version of Moon War runs on modified Super Cobra (scobra.c) hardware and is often called
'Moon War 2' because it is the second version, and many of the PCBs are labeled as such.
- So far only 2 original boards of this have been found, one with only the sound ROMs on it, and the other
- with only the program ROMs on it. This set is a combination of dumps from those two boards, so there
+ So far only 2 original boards of this have been found, one with only the sound roms on it, and the other
+ with only the program roms on it. This set is a combination of dumps from those two boards, so there
is a small chance they could be mismatched.
*/
ROM_START( moonwarp )
@@ -1309,12 +1312,12 @@ ROM_START( moonwarp )
ROM_LOAD( "5c.bin", 0xc000, 0x1000, CRC(a3d551ab) SHA1(a32352727b5475a6ec6c495c55f01ccd6e024f98) )
ROM_REGION( 0x01000, "speech", 0 ) /* voice data */
- ROM_LOAD( "moonwar.1c.bin", 0x0000, 0x0800, CRC(9e9a653f) SHA1(cf49a38ef343ace271ba1e5dde38bd8b9c0bd876) ) /* VSU-1000 board */
- ROM_LOAD( "moonwar.2c.bin", 0x0800, 0x0800, CRC(73fd988d) SHA1(08a2aeb4d87eee58e38e4e3f749a95f2308aceb0) ) /* ditto */
+ ROM_LOAD( "moonwar.1c.bin", 0x0000, 0x0800, CRC(9e9a653f) SHA1(cf49a38ef343ace271ba1e5dde38bd8b9c0bd876) ) /* VSU-1000 board */
+ ROM_LOAD( "moonwar.2c.bin", 0x0800, 0x0800, CRC(73fd988d) SHA1(08a2aeb4d87eee58e38e4e3f749a95f2308aceb0) ) /* ditto */
ROM_REGION( 0x0020, "proms", 0 )
- ROM_LOAD( "n82s123.6e", 0x0000, 0x0020, CRC(4471ca5d) SHA1(ba8dca2ec076818f8ad8c17b15c77965e36fa05e) ) /* address decoder/ROM select PROM - from board with prg ROMs, same as Frenzy */
- ROM_LOAD( "prom.6e", 0x0000, 0x0020, CRC(56bffba3) SHA1(c8e24f6361c50bcb4c9d3f39cdaf4172c2a2b318) ) /* address decoder/ROM select PROM - from the sound ROM only set, is it bad? */
+ ROM_LOAD( "n82s123 po. e6 select decoder", 0x0000, 0x0020, CRC(4471ca5d) SHA1(ba8dca2ec076818f8ad8c17b15c77965e36fa05e) ) /* address decoder/rom select prom - from board with prg roms, same as Frenzy*/
+ ROM_LOAD( "prom.6e", 0x0000, 0x0020, CRC(56bffba3) SHA1(c8e24f6361c50bcb4c9d3f39cdaf4172c2a2b318) ) /* address decoder/rom select prom - from the sound rom only set, is it bad? */
ROM_END
void berzerk_state::init_moonwarp()
diff --git a/src/mame/drivers/besta.cpp b/src/mame/drivers/besta.cpp
index 0e427c0c51b..88c280dab56 100644
--- a/src/mame/drivers/besta.cpp
+++ b/src/mame/drivers/besta.cpp
@@ -13,6 +13,18 @@
#include "machine/68230pit.h"
#include "machine/terminal.h"
+#define VERBOSE_DBG 1 /* 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 besta_state : public driver_device
{
@@ -50,6 +62,11 @@ READ8_MEMBER( besta_state::mpcc_reg_r )
{
uint8_t ret;
+ if (!(offset == 0 && !m_mpcc_regs[0])) {
+ DBG_LOG(1,"mpcc_reg_r",("(%d) = %02X at %s\n", offset,
+ (offset > 31 ? -1 : m_mpcc_regs[offset]), machine().describe_context()));
+ }
+
switch (offset) {
case 0: /* r_stat aka ... */
return (m_term_data) ? 0x80 : 0;
@@ -64,12 +81,14 @@ READ8_MEMBER( besta_state::mpcc_reg_r )
WRITE8_MEMBER( besta_state::mpcc_reg_w )
{
+ DBG_LOG(1,"mpcc_reg_w",("(%d) <- %02X at %s\n", offset, data, machine().describe_context()));
+
switch (offset) {
case 2:
kbd_put(data);
break;
case 10:
- m_terminal->write(data);
+ m_terminal->write(generic_space(), 0, data);
default:
m_mpcc_regs[offset] = data;
break;
diff --git a/src/mame/drivers/bestleag.cpp b/src/mame/drivers/bestleag.cpp
index 8916f5382fd..d8907d8e910 100644
--- a/src/mame/drivers/bestleag.cpp
+++ b/src/mame/drivers/bestleag.cpp
@@ -381,19 +381,18 @@ static GFXDECODE_START( gfx_bestleag )
GFXDECODE_ENTRY( "gfx2", 0, bestleag_char16layout, 0x300, 16 )
GFXDECODE_END
-void bestleag_state::bestleag(machine_config &config)
-{
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &bestleag_state::bestleag_map);
- m_maincpu->set_vblank_int("screen", FUNC(bestleag_state::irq6_line_hold));
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(bestleag_state::screen_update_bestleag));
- screen.set_palette(m_palette);
+MACHINE_CONFIG_START(bestleag_state::bestleag)
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(bestleag_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", bestleag_state, irq6_line_hold)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(bestleag_state, screen_update_bestleag)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_bestleag);
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 0x800);
@@ -401,16 +400,16 @@ void bestleag_state::bestleag(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH); /* Hand-tuned */
- m_oki->add_route(ALL_OUTPUTS, "lspeaker", 1.00);
- m_oki->add_route(ALL_OUTPUTS, "rspeaker", 1.00);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) /* Hand-tuned */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00)
+MACHINE_CONFIG_END
-void bestleag_state::bestleaw(machine_config &config)
-{
+MACHINE_CONFIG_START(bestleag_state::bestleaw)
bestleag(config);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(bestleag_state::screen_update_bestleaw));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(bestleag_state, screen_update_bestleaw)
+MACHINE_CONFIG_END
/* Rom Loading */
diff --git a/src/mame/drivers/beta.cpp b/src/mame/drivers/beta.cpp
index 45ad006e090..0eaa9a12240 100644
--- a/src/mame/drivers/beta.cpp
+++ b/src/mame/drivers/beta.cpp
@@ -347,23 +347,24 @@ void beta_state::machine_start()
MACHINE_CONFIG_START(beta_state::beta)
/* basic machine hardware */
- M6502(config, m_maincpu, XTAL(4'000'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &beta_state::beta_mem);
+ MCFG_DEVICE_ADD(M6502_TAG, M6502, XTAL(4'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(beta_mem)
/* video hardware */
config.set_default_layout(layout_beta);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
/* devices */
- mos6532_new_device &m6532(MOS6532_NEW(config, M6532_TAG, XTAL(4'000'000)/4));
- m6532.pa_rd_callback().set(FUNC(beta_state::riot_pa_r));
- m6532.pa_wr_callback().set(FUNC(beta_state::riot_pa_w));
- m6532.pb_rd_callback().set(FUNC(beta_state::riot_pb_r));
- m6532.pb_wr_callback().set(FUNC(beta_state::riot_pb_w));
- m6532.irq_wr_callback().set_inputline(m_maincpu, M6502_IRQ_LINE);
+ MCFG_DEVICE_ADD(M6532_TAG, MOS6532_NEW, XTAL(4'000'000)/4)
+ MCFG_MOS6530n_IN_PA_CB(READ8(*this, beta_state, riot_pa_r))
+ MCFG_MOS6530n_OUT_PA_CB(WRITE8(*this, beta_state, riot_pa_w))
+ MCFG_MOS6530n_IN_PB_CB(READ8(*this, beta_state, riot_pb_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(*this, beta_state, riot_pb_w))
+ MCFG_MOS6530n_IRQ_CB(INPUTLINE(M6502_TAG, M6502_IRQ_LINE))
/* EPROM socket */
MCFG_GENERIC_CARTSLOT_ADD(EPROM_TAG, generic_plain_slot, nullptr)
diff --git a/src/mame/drivers/bfcobra.cpp b/src/mame/drivers/bfcobra.cpp
index f406329a2cd..4025c0d7ac1 100644
--- a/src/mame/drivers/bfcobra.cpp
+++ b/src/mame/drivers/bfcobra.cpp
@@ -1638,29 +1638,28 @@ INTERRUPT_GEN_MEMBER(bfcobra_state::vblank_gen)
update_irqs();
}
-void bfcobra_state::bfcobra(machine_config &config)
-{
- Z80(config, m_maincpu, Z80_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &bfcobra_state::z80_prog_map);
- m_maincpu->set_addrmap(AS_IO, &bfcobra_state::z80_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(bfcobra_state::vblank_gen));
+MACHINE_CONFIG_START(bfcobra_state::bfcobra)
+ MCFG_DEVICE_ADD("maincpu", Z80, Z80_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(z80_prog_map)
+ MCFG_DEVICE_IO_MAP(z80_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", bfcobra_state, vblank_gen)
- MC6809(config, m_audiocpu, M6809_XTAL); // MC6809P
- m_audiocpu->set_addrmap(AS_PROGRAM, &bfcobra_state::m6809_prog_map);
- m_audiocpu->set_periodic_int(FUNC(bfcobra_state::timer_irq), attotime::from_hz(1000));
+ MCFG_DEVICE_ADD("audiocpu", MC6809, M6809_XTAL) // MC6809P
+ MCFG_DEVICE_PROGRAM_MAP(m6809_prog_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(bfcobra_state, timer_irq, 1000)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* TODO */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(512, 256);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(bfcobra_state::screen_update_bfcobra));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512 - 1, 0, 256 - 1)
+ MCFG_SCREEN_UPDATE_DRIVER(bfcobra_state, screen_update_bfcobra)
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_PALETTE_ADD("palette", 256)
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette)); // MUSIC Semiconductor TR9C1710 RAMDAC or equivalent
ramdac.set_addrmap(0, &bfcobra_state::ramdac_map);
@@ -1670,7 +1669,8 @@ void bfcobra_state::bfcobra(machine_config &config)
AY8910(config, "aysnd", M6809_XTAL / 4).add_route(ALL_OUTPUTS, "mono", 0.20);
- UPD7759(config, m_upd7759).add_route(ALL_OUTPUTS, "mono", 0.40);
+ MCFG_DEVICE_ADD("upd", UPD7759)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
/* ACIAs */
ACIA6850(config, m_acia6850_0, 0);
@@ -1684,11 +1684,12 @@ void bfcobra_state::bfcobra(machine_config &config)
m_acia6850_2->txd_handler().set(FUNC(bfcobra_state::data_acia_tx_w));
m_acia6850_2->irq_handler().set(FUNC(bfcobra_state::m6809_data_irq));
- clock_device &acia_clock(CLOCK(config, "acia_clock", 31250*16)); // What are the correct ACIA clocks ?
- acia_clock.signal_handler().set(FUNC(bfcobra_state::write_acia_clock));
+ MCFG_DEVICE_ADD("acia_clock", CLOCK, 31250*16) // What are the correct ACIA clocks ?
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, bfcobra_state, write_acia_clock))
- METERS(config, m_meters, 0).set_number(8);
-}
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(8)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/bfm_ad5.cpp b/src/mame/drivers/bfm_ad5.cpp
index b97d231501a..746983a4e41 100644
--- a/src/mame/drivers/bfm_ad5.cpp
+++ b/src/mame/drivers/bfm_ad5.cpp
@@ -79,16 +79,15 @@ INTERRUPT_GEN_MEMBER(adder5_state::ad5_fake_timer_int)
// m_maincpu->set_input_line_and_vector(5, HOLD_LINE, 0x8c);
}
-void adder5_state::bfm_ad5(machine_config &config)
-{
- MCF5206E(config, m_maincpu, 40000000); /* MCF5206eFT */
- m_maincpu->set_addrmap(AS_PROGRAM, &adder5_state::ad5_map);
- m_maincpu->set_periodic_int(FUNC(adder5_state::ad5_fake_timer_int), attotime::from_hz(1000));
- MCF5206E_PERIPHERAL(config, "maincpu_onboard", 0);
+MACHINE_CONFIG_START(adder5_state::bfm_ad5)
+ MCFG_DEVICE_ADD("maincpu", MCF5206E, 40000000) /* MCF5206eFT */
+ MCFG_DEVICE_PROGRAM_MAP(ad5_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(adder5_state, ad5_fake_timer_int, 1000)
+ MCFG_MCF5206E_PERIPHERAL_ADD("maincpu_onboard")
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
/* unknown sound */
-}
+MACHINE_CONFIG_END
#include "bfm_ad5sw.hxx"
diff --git a/src/mame/drivers/bfm_sc1.cpp b/src/mame/drivers/bfm_sc1.cpp
index 17dd7bd50b6..fbd459e45ec 100644
--- a/src/mame/drivers/bfm_sc1.cpp
+++ b/src/mame/drivers/bfm_sc1.cpp
@@ -1073,11 +1073,10 @@ INPUT_PORTS_END
// machine driver for scorpion1 board ///////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
-void bfm_sc1_state::scorpion1(machine_config &config)
-{
- M6809(config, m_maincpu, MASTER_CLOCK/4); // 6809 CPU at 1 Mhz
- m_maincpu->set_addrmap(AS_PROGRAM, &bfm_sc1_state::sc1_base); // setup read and write memorymap
- m_maincpu->set_periodic_int(FUNC(bfm_sc1_state::timer_irq), attotime::from_hz(1000)); // generate 1000 IRQ's per second
+MACHINE_CONFIG_START(bfm_sc1_state::scorpion1)
+ MCFG_DEVICE_ADD("maincpu", M6809, MASTER_CLOCK/4) // 6809 CPU at 1 Mhz
+ MCFG_DEVICE_PROGRAM_MAP(sc1_base) // setup read and write memorymap
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(bfm_sc1_state, timer_irq, 1000) // generate 1000 IRQ's per second
WATCHDOG_TIMER(config, "watchdog").set_time(PERIOD_OF_555_MONOSTABLE(120000,100e-9));
@@ -1103,37 +1102,37 @@ void bfm_sc1_state::scorpion1(machine_config &config)
REEL(config, m_reels[5], STARPOINT_48STEP_REEL, 1, 3, 0x09, 4);
m_reels[5]->optic_handler().set(FUNC(bfm_sc1_state::reel_optic_cb<5>));
- METERS(config, m_meters, 0).set_number(8);
-}
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(8)
+MACHINE_CONFIG_END
/////////////////////////////////////////////////////////////////////////////////////
// machine driver for scorpion1 board + adder2 extension ////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
-void bfm_sc1_state::scorpion1_adder2(machine_config &config)
-{
+MACHINE_CONFIG_START(bfm_sc1_state::scorpion1_adder2)
scorpion1(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &bfm_sc1_state::sc1_adder2); // setup read and write memorymap
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sc1_adder2) // setup read and write memorymap
config.set_default_layout(layout_sc1_vid);
BFM_ADDER2(config, "adder2", 0);
-}
+MACHINE_CONFIG_END
/////////////////////////////////////////////////////////////////////////////////////
// machine driver for scorpion1 board ///////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
-void bfm_sc1_state::scorpion1_viper(machine_config &config)
-{
+MACHINE_CONFIG_START(bfm_sc1_state::scorpion1_viper)
scorpion1(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sc1_viper) // setup read and write memorymap
- m_maincpu->set_addrmap(AS_PROGRAM, &bfm_sc1_state::sc1_viper); // setup read and write memorymap
-
- UPD7759(config, m_upd7759);
- m_upd7759->add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("upd",UPD7759)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
void bfm_sc1_state::sc1_common_init(int reels, int decrypt, int defaultbank)
diff --git a/src/mame/drivers/bfm_sc2.cpp b/src/mame/drivers/bfm_sc2.cpp
index 048bef99198..7255d669bd1 100644
--- a/src/mame/drivers/bfm_sc2.cpp
+++ b/src/mame/drivers/bfm_sc2.cpp
@@ -201,9 +201,9 @@ public:
, m_upd7759(*this, "upd")
, m_vfd0(*this, "vfd0")
, m_vfd1(*this, "vfd1")
- , m_ym2413(*this, "ymsnd")
, m_strobein(*this, "STROBE%u", 0)
, m_rombank1(*this, "bank1")
+ , m_ym2413(*this, "ymsnd")
, m_meters(*this, "meters")
, m_lamps(*this, "lamp%u", 0U)
{
@@ -272,7 +272,6 @@ protected:
required_device<cpu_device> m_maincpu;
required_device<upd7759_device> m_upd7759;
optional_device<bfm_bd1_device> m_vfd0, m_vfd1;
- optional_device<ym2413_device> m_ym2413;
int m_sc2_show_door;
int m_sc2_door_state;
@@ -288,6 +287,7 @@ protected:
private:
required_ioport_array<12> m_strobein;
optional_memory_bank m_rombank1;
+ optional_device<ym2413_device> m_ym2413;
optional_device<meters_device> m_meters; // scorpion2_vid doesn't use this (scorpion2_vidm does)
@@ -2248,20 +2248,20 @@ INPUT_PORTS_END
// machine config fragments for different meters numbers //////////////////
///////////////////////////////////////////////////////////////////////////
-void bfm_sc2_state::_3meters(machine_config &config)
-{
- METERS(config, m_meters, 0).set_number(3);
-}
+MACHINE_CONFIG_START(bfm_sc2_state::_3meters)
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(3)
+MACHINE_CONFIG_END
-void bfm_sc2_state::_5meters(machine_config &config)
-{
- METERS(config, m_meters, 0).set_number(5);
-}
+MACHINE_CONFIG_START(bfm_sc2_state::_5meters)
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(5)
+MACHINE_CONFIG_END
-void bfm_sc2_state::_8meters(machine_config &config)
-{
- METERS(config, m_meters, 0).set_number(8);
-}
+MACHINE_CONFIG_START(bfm_sc2_state::_8meters)
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(8)
+MACHINE_CONFIG_END
///////////////////////////////////////////////////////////////////////////
// machine driver for scorpion2 board + adder2 expansion //////////////////
@@ -2277,12 +2277,11 @@ void bfm_sc2_state::machine_start()
save_state();
}
-void bfm_sc2_vid_state::scorpion2_vid(machine_config &config)
-{
- M6809(config, m_maincpu, MASTER_CLOCK/4); // 6809 CPU at 2 Mhz
- m_maincpu->set_addrmap(AS_PROGRAM, &bfm_sc2_vid_state::memmap_vid); // setup scorpion2 board memorymap
- m_maincpu->set_periodic_int(FUNC(bfm_sc2_vid_state::timer_irq), attotime::from_hz(1000)); // generate 1000 IRQ's per second
- config.m_minimum_quantum = attotime::from_hz(960); // needed for serial communication !!
+MACHINE_CONFIG_START(bfm_sc2_vid_state::scorpion2_vid)
+ MCFG_DEVICE_ADD("maincpu", M6809, MASTER_CLOCK/4 ) // 6809 CPU at 2 Mhz
+ MCFG_DEVICE_PROGRAM_MAP(memmap_vid) // setup scorpion2 board memorymap
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(bfm_sc2_vid_state, timer_irq, 1000) // generate 1000 IRQ's per second
+ MCFG_QUANTUM_TIME(attotime::from_hz(960)) // needed for serial communication !!
WATCHDOG_TIMER(config, "watchdog").set_time(PERIOD_OF_555_MONOSTABLE(120000,100e-9));
@@ -2296,17 +2295,18 @@ void bfm_sc2_vid_state::scorpion2_vid(machine_config &config)
BFM_ADDER2(config, "adder2", 0);
SPEAKER(config, "mono").front_center();
- UPD7759(config, m_upd7759).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("upd", UPD7759)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- YM2413(config, m_ym2413, XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/* machine driver for scorpion2_vid board with meters (i.e. quintoon uk). Are we really sure the other games don't?*/
-void bfm_sc2_vid_state::scorpion2_vidm(machine_config &config)
-{
+MACHINE_CONFIG_START(bfm_sc2_vid_state::scorpion2_vidm)
scorpion2_vid(config);
_8meters(config);
-}
+MACHINE_CONFIG_END
@@ -3747,11 +3747,10 @@ void bfm_sc2_dmd_state::machine_start()
/* machine driver for scorpion2 board */
-void bfm_sc2_awp_state::scorpion2(machine_config &config)
-{
- M6809(config, m_maincpu, MASTER_CLOCK/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &bfm_sc2_awp_state::memmap_no_vid);
- m_maincpu->set_periodic_int(FUNC(bfm_sc2_awp_state::timer_irq), attotime::from_hz(1000));
+MACHINE_CONFIG_START(bfm_sc2_awp_state::scorpion2)
+ MCFG_DEVICE_ADD("maincpu", M6809, MASTER_CLOCK/4 )
+ MCFG_DEVICE_PROGRAM_MAP(memmap_no_vid)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(bfm_sc2_awp_state, timer_irq, 1000)
WATCHDOG_TIMER(config, "watchdog").set_time(PERIOD_OF_555_MONOSTABLE(120000,100e-9));
@@ -3759,9 +3758,11 @@ void bfm_sc2_awp_state::scorpion2(machine_config &config)
BFM_BD1(config, m_vfd1, 60, 1);
SPEAKER(config, "mono").front_center();
- UPD7759(config, m_upd7759).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("upd",UPD7759)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- YM2413(config, m_ym2413, XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("ymsnd",YM2413, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
NVRAM(config, "e2ram").set_custom_handler(FUNC(bfm_sc2_awp_state::e2ram_init));
@@ -3783,42 +3784,41 @@ void bfm_sc2_awp_state::scorpion2(machine_config &config)
m_reel[5]->optic_handler().set(FUNC(bfm_sc2_awp_state::reel_optic_cb<5>));
_8meters(config);
-}
+MACHINE_CONFIG_END
#if 0
-void bfm_sc2_awp_state::scorpion2_3m(machine_config &config)
-{
+MACHINE_CONFIG_START(bfm_sc2_awp_state::scorpion2_3m)
scorpion2(config);
- config.device_remove("meters");
+ MCFG_DEVICE_REMOVE("meters")
_3meters(config);
-}
+MACHINE_CONFIG_END
#endif
/* machine driver for scorpion3 board */
-void bfm_sc2_awp_state::scorpion3(machine_config &config)
-{
+MACHINE_CONFIG_START(bfm_sc2_awp_state::scorpion3)
scorpion2(config);
- config.device_remove("meters");
+ MCFG_DEVICE_REMOVE("meters")
_5meters(config);
-}
+MACHINE_CONFIG_END
/* machine driver for scorpion2 board + matrix board */
-void bfm_sc2_dmd_state::scorpion2_dm01(machine_config &config)
-{
- config.m_minimum_quantum = attotime::from_hz(960); // needed for serial communication !!
- M6809(config, m_maincpu, MASTER_CLOCK/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &bfm_sc2_dmd_state::memmap_no_vid);
- m_maincpu->set_periodic_int(FUNC(bfm_sc2_dmd_state::timer_irq), attotime::from_hz(1000));
+MACHINE_CONFIG_START(bfm_sc2_dmd_state::scorpion2_dm01)
+ MCFG_QUANTUM_TIME(attotime::from_hz(960)) // needed for serial communication !!
+ MCFG_DEVICE_ADD("maincpu", M6809, MASTER_CLOCK/4 )
+ MCFG_DEVICE_PROGRAM_MAP(memmap_no_vid)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(bfm_sc2_dmd_state, timer_irq, 1000)
WATCHDOG_TIMER(config, "watchdog").set_time(PERIOD_OF_555_MONOSTABLE(120000,100e-9));
SPEAKER(config, "mono").front_center();
- YM2413(config, m_ym2413, XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("ymsnd",YM2413, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- UPD7759(config, m_upd7759).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("upd",UPD7759)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
NVRAM(config, "e2ram").set_custom_handler(FUNC(bfm_sc2_dmd_state::e2ram_init));
@@ -3842,21 +3842,19 @@ void bfm_sc2_dmd_state::scorpion2_dm01(machine_config &config)
m_reel[5]->optic_handler().set(FUNC(bfm_sc2_dmd_state::reel_optic_cb<5>));
_8meters(config);
-}
+MACHINE_CONFIG_END
-void bfm_sc2_dmd_state::scorpion2_dm01_3m(machine_config &config)
-{
+MACHINE_CONFIG_START(bfm_sc2_dmd_state::scorpion2_dm01_3m)
scorpion2_dm01(config);
- config.device_remove("meters");
+ MCFG_DEVICE_REMOVE("meters")
_3meters(config);
-}
+MACHINE_CONFIG_END
-void bfm_sc2_dmd_state::scorpion2_dm01_5m(machine_config &config)
-{
+MACHINE_CONFIG_START(bfm_sc2_dmd_state::scorpion2_dm01_5m)
scorpion2_dm01(config);
- config.device_remove("meters");
+ MCFG_DEVICE_REMOVE("meters")
_5meters(config);
-}
+MACHINE_CONFIG_END
void bfm_sc2_novid_state::sc2awp_common_init(int reels, int decrypt)
{
diff --git a/src/mame/drivers/bfm_sc4.cpp b/src/mame/drivers/bfm_sc4.cpp
index b7e39d7c19f..7810fe2b3bd 100644
--- a/src/mame/drivers/bfm_sc4.cpp
+++ b/src/mame/drivers/bfm_sc4.cpp
@@ -402,10 +402,10 @@ READ16_MEMBER(sc4_state::sc4_mem_r)
return ioport("IN-20")->read();
case 0x1244:
- return m_ymz->read(0);
+ return m_ymz->read(space,0);
case 0x1246:
- return m_ymz->read(1);
+ return m_ymz->read(space,1);
default:
logerror("%08x maincpu read access offset %08x mem_mask %04x cs %d (LAMPS etc.)\n", pc, offset*2, mem_mask, cs);
@@ -563,11 +563,11 @@ WRITE16_MEMBER(sc4_state::sc4_mem_w)
break;
case 0x1248:
- m_ymz->write(0, data & 0xff);
+ m_ymz->write(space,0, data & 0xff);
break;
case 0x124a:
- m_ymz->write(1, data & 0xff);
+ m_ymz->write(space,1, data & 0xff);
break;
case 0x1330:
@@ -895,8 +895,7 @@ WRITE_LINE_MEMBER(sc4_state::bfmdm01_busy)
// Must tie back to inputs somehow!
}
-void sc4_state::sc4_common(machine_config &config)
-{
+MACHINE_CONFIG_START(sc4_state::sc4_common)
M68307(config, m_maincpu, 16000000); // 68307! (EC000 core)
m_maincpu->set_addrmap(AS_PROGRAM, &sc4_state::sc4_map);
m_maincpu->serial_a_tx_callback().set(FUNC(sc4_state::m68307_duart_txa));
@@ -908,20 +907,20 @@ void sc4_state::sc4_common(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- MC68681(config, m_duart, 16000000/4); // ?? Mhz
- m_duart->set_clocks(XTAL(16'000'000)/2/8, XTAL(16'000'000)/2/16, XTAL(16'000'000)/2/16, XTAL(16'000'000)/2/8);
- m_duart->irq_cb().set(FUNC(sc4_state::bfm_sc4_duart_irq_handler));
- m_duart->a_tx_cb().set(FUNC(sc4_state::bfm_sc4_duart_txa));
- m_duart->inport_cb().set(FUNC(sc4_state::bfm_sc4_duart_input_r));;
- m_duart->outport_cb().set(FUNC(sc4_state::bfm_sc4_duart_output_w));;
+ MCFG_DEVICE_ADD("duart68681", MC68681, 16000000/4) // ?? Mhz
+ MCFG_MC68681_SET_EXTERNAL_CLOCKS(XTAL(16'000'000)/2/8, XTAL(16'000'000)/2/16, XTAL(16'000'000)/2/16, XTAL(16'000'000)/2/8)
+ MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, sc4_state, bfm_sc4_duart_irq_handler))
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE(*this, sc4_state, bfm_sc4_duart_txa))
+ MCFG_MC68681_INPORT_CALLBACK(READ8(*this, sc4_state, bfm_sc4_duart_input_r))
+ MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, sc4_state, bfm_sc4_duart_output_w))
BFM_BDA(config, m_vfd0, 60, 0);
// config.set_default_layout(layout_bfm_sc4);
- YMZ280B(config, m_ymz, 16000000); // ?? Mhz
- m_ymz->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, 16000000) // ?? Mhz
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
//Standard 6 reels all connected
void sc4_state::sc4(machine_config &config)
diff --git a/src/mame/drivers/bfm_sc5.cpp b/src/mame/drivers/bfm_sc5.cpp
index 047f908e2c6..75b0ae9b351 100644
--- a/src/mame/drivers/bfm_sc5.cpp
+++ b/src/mame/drivers/bfm_sc5.cpp
@@ -210,28 +210,27 @@ WRITE8_MEMBER(bfm_sc5_state::bfm_sc5_duart_output_w)
logerror("bfm_sc5_duart_output_w\n");
}
-void bfm_sc5_state::bfm_sc5(machine_config &config)
-{
- MCF5206E(config, m_maincpu, 40000000); /* MCF5206eFT */
- m_maincpu->set_addrmap(AS_PROGRAM, &bfm_sc5_state::sc5_map);
- MCF5206E_PERIPHERAL(config, "maincpu_onboard", 0);
+MACHINE_CONFIG_START(bfm_sc5_state::bfm_sc5)
+ MCFG_DEVICE_ADD("maincpu", MCF5206E, 40000000) /* MCF5206eFT */
+ MCFG_DEVICE_PROGRAM_MAP(sc5_map)
+ MCFG_MCF5206E_PERIPHERAL_ADD("maincpu_onboard")
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MC68681(config, m_duart, 16000000/4); // ?? Mhz
- m_duart->set_clocks(16000000/2/8, 16000000/2/16, 16000000/2/16, 16000000/2/8);
- m_duart->irq_cb().set(FUNC(bfm_sc5_state::bfm_sc5_duart_irq_handler));
- m_duart->a_tx_cb().set(FUNC(bfm_sc5_state::bfm_sc5_duart_txa));
- m_duart->inport_cb().set(FUNC(bfm_sc5_state::bfm_sc5_duart_input_r));;
- m_duart->outport_cb().set(FUNC(bfm_sc5_state::bfm_sc5_duart_output_w));;
+ MCFG_DEVICE_ADD("duart68681", MC68681, 16000000/4) // ?? Mhz
+ MCFG_MC68681_SET_EXTERNAL_CLOCKS(16000000/2/8, 16000000/2/16, 16000000/2/16, 16000000/2/8)
+ MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, bfm_sc5_state, bfm_sc5_duart_irq_handler))
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE(*this, bfm_sc5_state, bfm_sc5_duart_txa))
+ MCFG_MC68681_INPORT_CALLBACK(READ8(*this, bfm_sc5_state, bfm_sc5_duart_input_r))
+ MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, bfm_sc5_state, bfm_sc5_duart_output_w))
BFM_BDA(config, m_vfd0, 60, 0);
config.set_default_layout(layout_bfm_sc5);
- YMZ280B(config, m_ymz, 16000000); // ?? Mhz
- m_ymz->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, 16000000) // ?? Mhz
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
#include "bfm_sc5sw.hxx"
diff --git a/src/mame/drivers/bfm_swp.cpp b/src/mame/drivers/bfm_swp.cpp
index 85e2b22ab64..737fb1f05f7 100644
--- a/src/mame/drivers/bfm_swp.cpp
+++ b/src/mame/drivers/bfm_swp.cpp
@@ -201,24 +201,25 @@ void bfm_swp_state::machine_start()
}
-void bfm_swp_state::bfm_swp(machine_config &config)
-{
+MACHINE_CONFIG_START(bfm_swp_state::bfm_swp)
+
/* basic machine hardware */
M68340(config, m_maincpu, 16000000);
m_maincpu->set_addrmap(AS_PROGRAM, &bfm_swp_state::bfm_swp_map);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_screen_update(FUNC(bfm_swp_state::screen_update));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_UPDATE_DRIVER(bfm_swp_state, screen_update)
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
SPEAKER(config, "mono").front_center();
- YMZ280B(config, "ymz", 10000000).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, 10000000 )
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( c3_rtime )
ROM_REGION( 0x100000, "maincpu", 0 )
diff --git a/src/mame/drivers/bfmsys85.cpp b/src/mame/drivers/bfmsys85.cpp
index ac14291e3a2..88a423de51c 100644
--- a/src/mame/drivers/bfmsys85.cpp
+++ b/src/mame/drivers/bfmsys85.cpp
@@ -400,19 +400,17 @@ void bfmsys85_state::memmap(address_map &map)
// machine driver for system85 board //////////////////////////////////////
-void bfmsys85_state::bfmsys85(machine_config &config)
-{
- M6809(config, m_maincpu, MASTER_CLOCK/4); // 6809 CPU at 1 Mhz
- m_maincpu->set_addrmap(AS_PROGRAM, &bfmsys85_state::memmap); // setup read and write memorymap
- m_maincpu->set_periodic_int(FUNC(bfmsys85_state::timer_irq), attotime::from_hz(1000)); // generate 1000 IRQ's per second
-
+MACHINE_CONFIG_START(bfmsys85_state::bfmsys85)
+ MCFG_DEVICE_ADD("maincpu", M6809, MASTER_CLOCK/4) // 6809 CPU at 1 Mhz
+ MCFG_DEVICE_PROGRAM_MAP(memmap) // setup read and write memorymap
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(bfmsys85_state, timer_irq, 1000) // generate 1000 IRQ's per second
MSC1937(config, m_vfd);
ACIA6850(config, m_acia6850_0, 0);
m_acia6850_0->txd_handler().set(FUNC(bfmsys85_state::sys85_data_w));
- clock_device &acia_clock(CLOCK(config, "acia_clock", 31250*16)); // What are the correct ACIA clocks ?
- acia_clock.signal_handler().set(FUNC(bfmsys85_state::write_acia_clock));
+ MCFG_DEVICE_ADD("acia_clock", CLOCK, 31250*16) // What are the correct ACIA clocks ?
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, bfmsys85_state, write_acia_clock))
SPEAKER(config, "mono").front_center();
AY8912(config, "aysnd", MASTER_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 0.25);
@@ -428,10 +426,11 @@ void bfmsys85_state::bfmsys85(machine_config &config)
REEL(config, m_reel[3], STARPOINT_48STEP_REEL, 1, 3, 0x09, 4);
m_reel[3]->optic_handler().set(FUNC(bfmsys85_state::reel_optic_cb<3>));
- METERS(config, m_meters, 0).set_number(8);
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(8)
config.set_default_layout(layout_bfmsys85);
-}
+MACHINE_CONFIG_END
// input ports for system85 board /////////////////////////////////////////
diff --git a/src/mame/drivers/bgt.cpp b/src/mame/drivers/bgt.cpp
index f9e6c432114..4f2f90354a6 100644
--- a/src/mame/drivers/bgt.cpp
+++ b/src/mame/drivers/bgt.cpp
@@ -49,12 +49,11 @@ static INPUT_PORTS_START( bgt )
INPUT_PORTS_END
-void bgt_state::bgt(machine_config &config)
-{
- V30(config, m_maincpu, 12000000); // ? unknown CPU.. definitely x86 based tho
- m_maincpu->set_addrmap(AS_PROGRAM, &bgt_state::bgt_map);
- m_maincpu->set_addrmap(AS_IO, &bgt_state::bgt_io);
-}
+MACHINE_CONFIG_START(bgt_state::bgt)
+ MCFG_DEVICE_ADD("maincpu", V30, 12000000 ) // ? unknown CPU.. definitely x86 based tho
+ MCFG_DEVICE_PROGRAM_MAP(bgt_map)
+ MCFG_DEVICE_IO_MAP(bgt_io)
+MACHINE_CONFIG_END
ROM_START( bg_ddb )
ROM_REGION( 0x100000, "maincpu", 0 )
diff --git a/src/mame/drivers/bigbord2.cpp b/src/mame/drivers/bigbord2.cpp
index 0c49250c480..c1656a00c19 100644
--- a/src/mame/drivers/bigbord2.cpp
+++ b/src/mame/drivers/bigbord2.cpp
@@ -548,8 +548,7 @@ MC6845_UPDATE_ROW( bigbord2_state::crtc_update_row )
#define MAIN_CLOCK 8_MHz_XTAL / 2
-void bigbord2_state::bigbord2(machine_config &config)
-{
+MACHINE_CONFIG_START(bigbord2_state::bigbord2)
/* basic machine hardware */
Z80(config, m_maincpu, MAIN_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &bigbord2_state::bigbord2_mem);
@@ -557,10 +556,10 @@ void bigbord2_state::bigbord2(machine_config &config)
m_maincpu->set_daisy_config(daisy_chain);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(10.69425_MHz_XTAL, 700, 0, 560, 260, 0, 240);
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
- GFXDECODE(config, "gfxdecode", m_palette, gfx_crt8002);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(10.69425_MHz_XTAL, 700, 0, 560, 260, 0, 240)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_crt8002)
PALETTE(config, m_palette, palette_device::MONOCHROME);
CLOCK(config, "ctc_clock", MAIN_CLOCK).signal_handler().set(FUNC(bigbord2_state::clock_w));
@@ -591,8 +590,10 @@ void bigbord2_state::bigbord2(machine_config &config)
MB8877(config, m_fdc, 16_MHz_XTAL / 8); // 2MHz for 8 inch, or 1MHz otherwise (jumper-selectable)
//m_fdc->intrq_wr_callback().set_inputline(m_maincpu, ??); // info missing from schematic
- FLOPPY_CONNECTOR(config, "fdc:0", bigbord2_floppies, "8dsdd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", bigbord2_floppies, "8dsdd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", bigbord2_floppies, "8dsdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", bigbord2_floppies, "8dsdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
mc6845_device &crtc(MC6845(config, "crtc", 16_MHz_XTAL / 8));
crtc.set_screen("screen");
@@ -616,7 +617,7 @@ void bigbord2_state::bigbord2(machine_config &config)
m_syslatch1->q_out_cb<6>().set(FUNC(bigbord2_state::disk_motor_w)); // MOTOR
m_syslatch1->q_out_cb<7>().set("beeper", FUNC(beep_device::set_state)); // BELL
- LS259(config, "outlatch1", 0); // U96
+ MCFG_DEVICE_ADD("outlatch1", LS259, 0) // U96
/* keyboard */
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
@@ -624,8 +625,9 @@ void bigbord2_state::bigbord2(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, "beeper", 950).add_route(ALL_OUTPUTS, "mono", 0.50); // actual frequency is unknown
-}
+ MCFG_DEVICE_ADD("beeper", BEEP, 950) // actual frequency is unknown
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/bigevglf.cpp b/src/mame/drivers/bigevglf.cpp
index b1db2003440..abd4c2f179f 100644
--- a/src/mame/drivers/bigevglf.cpp
+++ b/src/mame/drivers/bigevglf.cpp
@@ -394,7 +394,7 @@ void bigevglf_state::bigevglf(machine_config &config)
m_audiocpu->set_periodic_int(FUNC(bigevglf_state::irq0_line_hold), attotime::from_hz(2*60)); /* IRQ generated by ???;
2 irqs/frame give good music tempo but also SOUND ERROR in test mode,
4 irqs/frame give SOUND OK in test mode but music seems to be running too fast */
- /* Clearly, then, there should be some sort of IRQ acknowledge mechanism, duh. -R */
+ /* Clearly, then, there should be some sort of IRQ acknowledge mechanism, duh. -R */
GENERIC_LATCH_8(config, m_soundlatch[0]);
m_soundlatch[0]->data_pending_callback().set("soundnmi", FUNC(input_merger_device::in_w<0>));
@@ -440,6 +440,7 @@ void bigevglf_state::bigevglf(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "mono", 0.50); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/bigstrkb.cpp b/src/mame/drivers/bigstrkb.cpp
index a74d01c7885..e77eedb6992 100644
--- a/src/mame/drivers/bigstrkb.cpp
+++ b/src/mame/drivers/bigstrkb.cpp
@@ -200,21 +200,21 @@ GFXDECODE_END
/* Machine Driver */
-void bigstrkb_state::bigstrkb(machine_config &config)
-{
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &bigstrkb_state::bigstrkb_map);
- m_maincpu->set_vblank_int("screen", FUNC(bigstrkb_state::irq6_line_hold));
+MACHINE_CONFIG_START(bigstrkb_state::bigstrkb)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(bigstrkb_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", bigstrkb_state, irq6_line_hold)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_bigstrkb);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(bigstrkb_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(bigstrkb_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 0x400);
@@ -222,14 +222,14 @@ void bigstrkb_state::bigstrkb(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
// YM2151(config, "ymsnd", 4000000);
- okim6295_device &oki1(OKIM6295(config, "oki1", 4000000, okim6295_device::PIN7_HIGH));
- oki1.add_route(ALL_OUTPUTS, "lspeaker", 0.30);
- oki1.add_route(ALL_OUTPUTS, "rspeaker", 0.30);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 4000000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30)
- okim6295_device &oki2(OKIM6295(config, "oki2", 4000000, okim6295_device::PIN7_HIGH));
- oki2.add_route(ALL_OUTPUTS, "lspeaker", 0.30);
- oki2.add_route(ALL_OUTPUTS, "rspeaker", 0.30);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 4000000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30)
+MACHINE_CONFIG_END
/* Rom Loading */
diff --git a/src/mame/drivers/binbug.cpp b/src/mame/drivers/binbug.cpp
index 4996932999b..58d130d8e4e 100644
--- a/src/mame/drivers/binbug.cpp
+++ b/src/mame/drivers/binbug.cpp
@@ -336,8 +336,8 @@ void binbug_state::binbug(machine_config &config)
RS232_PORT(config, m_rs232, default_rs232_devices, "keyboard").set_option_device_input_defaults("keyboard", DEVICE_INPUT_DEFAULTS_NAME(keyboard));
/* quickload */
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(binbug_state, binbug), this), "pgm", attotime::from_seconds(1));
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(binbug_state, binbug), this), "pgm", 1);
}
@@ -424,7 +424,7 @@ public:
: binbug_state(mconfig, type, tag)
, m_ctc(*this, "z80ctc")
, m_pio(*this, "z80pio")
- { }
+ { }
DECLARE_READ8_MEMBER(porta_r);
DECLARE_READ8_MEMBER(portb_r);
diff --git a/src/mame/drivers/bingo.cpp b/src/mame/drivers/bingo.cpp
index b00b4794f7b..1be53b0a822 100644
--- a/src/mame/drivers/bingo.cpp
+++ b/src/mame/drivers/bingo.cpp
@@ -46,12 +46,11 @@ void bingo_state::init_bingo()
{
}
-void bingo_state::bingo(machine_config &config)
-{
+MACHINE_CONFIG_START(bingo_state::bingo)
/* basic machine hardware */
- S2650(config, m_maincpu, 1000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &bingo_state::bingo_map);
-}
+ MCFG_DEVICE_ADD("maincpu", S2650, 1000000)
+ MCFG_DEVICE_PROGRAM_MAP(bingo_map)
+MACHINE_CONFIG_END
class seeben_state : public driver_device
{
@@ -90,12 +89,11 @@ void seeben_state::init_seeben()
{
}
-void seeben_state::seeben(machine_config &config)
-{
+MACHINE_CONFIG_START(seeben_state::seeben)
/* basic machine hardware */
- I8085A(config, m_maincpu, 1000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &seeben_state::seeben_map);
-}
+ MCFG_DEVICE_ADD("maincpu", I8085A, 1000000)
+ MCFG_DEVICE_PROGRAM_MAP(seeben_map)
+MACHINE_CONFIG_END
class splin_state : public driver_device
{
@@ -136,12 +134,11 @@ void splin_state::init_splin()
{
}
-void splin_state::splin(machine_config &config)
-{
+MACHINE_CONFIG_START(splin_state::splin)
/* basic machine hardware */
- I80186(config, m_maincpu, 16000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &splin_state::splin_map);
-}
+ MCFG_DEVICE_ADD("maincpu", I80186, 16000000)
+ MCFG_DEVICE_PROGRAM_MAP(splin_map)
+MACHINE_CONFIG_END
ROM_START(cntinntl)
ROM_REGION(0x8000, "maincpu", 0)
diff --git a/src/mame/drivers/bingoc.cpp b/src/mame/drivers/bingoc.cpp
index 65861f43ff7..e6a55bd123d 100644
--- a/src/mame/drivers/bingoc.cpp
+++ b/src/mame/drivers/bingoc.cpp
@@ -168,40 +168,40 @@ static INPUT_PORTS_START( bingoc )
INPUT_PORTS_END
-void bingoc_state::bingoc(machine_config &config)
-{
- M68000(config, m_maincpu, 8000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &bingoc_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(bingoc_state::irq2_line_hold));
+MACHINE_CONFIG_START(bingoc_state::bingoc)
+
+ MCFG_DEVICE_ADD("maincpu", M68000,8000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", bingoc_state, irq2_line_hold)
- Z80(config, m_soundcpu, 4000000); /* ? MHz */
- m_soundcpu->set_addrmap(AS_PROGRAM, &bingoc_state::sound_map);
- m_soundcpu->set_addrmap(AS_IO, &bingoc_state::sound_io);
+ MCFG_DEVICE_ADD("soundcpu", Z80,4000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_io)
#if SOUND_TEST
- m_soundcpu->set_vblank_int("screen", FUNC(bingoc_state::nmi_line_pulse));
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", bingoc_state, nmi_line_pulse)
#endif
- I8251(config, "uart1", 4000000); // unknown
- I8251(config, "uart2", 4000000); // unknown
- I8251(config, "uart3", 4000000); // unknown
- I8251(config, "uart4", 4000000); // unknown
- I8251(config, "uart5", 4000000); // unknown
- I8251(config, "uart6", 4000000); // unknown
- I8251(config, "uart7", 4000000); // unknown
- I8251(config, "uart8", 4000000); // unknown
+ MCFG_DEVICE_ADD("uart1", I8251, 4000000) // unknown
+ MCFG_DEVICE_ADD("uart2", I8251, 4000000) // unknown
+ MCFG_DEVICE_ADD("uart3", I8251, 4000000) // unknown
+ MCFG_DEVICE_ADD("uart4", I8251, 4000000) // unknown
+ MCFG_DEVICE_ADD("uart5", I8251, 4000000) // unknown
+ MCFG_DEVICE_ADD("uart6", I8251, 4000000) // unknown
+ MCFG_DEVICE_ADD("uart7", I8251, 4000000) // unknown
+ MCFG_DEVICE_ADD("uart8", I8251, 4000000) // unknown
- SEGA_315_5338A(config, "io", 0); // ?
+ MCFG_DEVICE_ADD("io", SEGA_315_5338A, 0) // ?
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(bingoc_state::screen_update_bingoc));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(bingoc_state, screen_update_bingoc)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, "palette").set_entries(0x100);
+ MCFG_PALETTE_ADD("palette", 0x100)
SPEAKER(config, "lspeaker").front_left(); //might just be mono...
@@ -211,10 +211,10 @@ void bingoc_state::bingoc(machine_config &config)
YM2151(config, "ymsnd", 7159160/2).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
- UPD7759(config, m_upd7759);
- m_upd7759->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_upd7759->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("upd", UPD7759)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
ROM_START( bingoc )
ROM_REGION( 0x40000, "maincpu", 0 )
diff --git a/src/mame/drivers/bingoman.cpp b/src/mame/drivers/bingoman.cpp
index db3196dd5fb..17da5720752 100644
--- a/src/mame/drivers/bingoman.cpp
+++ b/src/mame/drivers/bingoman.cpp
@@ -379,28 +379,28 @@ void bingoman_state::bingoman_palette(palette_device &palette) const
{
}
-void bingoman_state::bingoman(machine_config &config)
-{
+MACHINE_CONFIG_START(bingoman_state::bingoman)
+
/* basic machine hardware */
- H83002(config, m_maincpu, XTAL(20'000'000)); /* TODO: correct CPU type */
- m_maincpu->set_addrmap(AS_PROGRAM, &bingoman_state::bingoman_prg_map);
- m_maincpu->set_addrmap(AS_IO, &bingoman_state::bingoman_io_map);
+ MCFG_DEVICE_ADD("maincpu", H83002, XTAL(20'000'000)) /* TODO: correct CPU type */
+ MCFG_DEVICE_PROGRAM_MAP(bingoman_prg_map)
+ MCFG_DEVICE_IO_MAP(bingoman_io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_screen_update(FUNC(bingoman_state::screen_update));
- screen.set_size(32*8, 32*8);
- screen.set_visarea_full();
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_UPDATE_DRIVER(bingoman_state, screen_update)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_bingoman);
PALETTE(config, "palette", FUNC(bingoman_state::bingoman_palette), 8);
/* sound hardware */
SPEAKER(config, "mono").front_center();
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/bingowav.cpp b/src/mame/drivers/bingowav.cpp
index 9286efd3343..f2284300fc5 100644
--- a/src/mame/drivers/bingowav.cpp
+++ b/src/mame/drivers/bingowav.cpp
@@ -82,6 +82,7 @@ void bingowav_state::bingowav_main_map(address_map &map)
map(0x140000, 0x140001).nopr();
map(0x150001, 0x150001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
map(0x150003, 0x150003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0xfffc00, 0xffffff).rw("maintmp", FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w));
}
void bingowav_state::bingowav_audio_map(address_map &map)
@@ -113,9 +114,12 @@ INPUT_PORTS_END
void bingowav_state::bingowav(machine_config &config)
{
- TMP68301(config, m_maincpu, 12000000); // actually TMP63803F-16
+ M68000(config, m_maincpu, 12000000); // actually TMP63803F-16
m_maincpu->set_addrmap(AS_PROGRAM, &bingowav_state::bingowav_main_map);
+ tmp68301_device &tmp68301(TMP68301(config, "maintmp", 0)); // wrong
+ tmp68301.set_cputag(m_maincpu);
+
te7750_device &mainioh(TE7750(config, "mainioh"));
mainioh.ios_cb().set_constant(5);
diff --git a/src/mame/drivers/bionicc.cpp b/src/mame/drivers/bionicc.cpp
index 5a69d4abef7..35c0fa36d9d 100644
--- a/src/mame/drivers/bionicc.cpp
+++ b/src/mame/drivers/bionicc.cpp
@@ -388,21 +388,21 @@ void bionicc_state::machine_reset()
m_scroll[3] = 0;
}
-void bionicc_state::bionicc(machine_config &config)
-{
+MACHINE_CONFIG_START(bionicc_state::bionicc)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000) / 2); /* 12 MHz - verified in schematics */
- m_maincpu->set_addrmap(AS_PROGRAM, &bionicc_state::main_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(bionicc_state::scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000) / 2) /* 12 MHz - verified in schematics */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", bionicc_state, scanline, "screen", 0, 1)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(14'318'181) / 4)); /* EXO3 C,B=GND, A=5V ==> Divisor 2^2 */
- audiocpu.set_addrmap(AS_PROGRAM, &bionicc_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(14'318'181) / 4) /* EXO3 C,B=GND, A=5V ==> Divisor 2^2 */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
/* FIXME: interrupt timing
* schematics indicate that nmi_line is set on M680000 access with AB1=1
* and IOCS=0 (active low), see pages A-1/10, A-4/10 in schematics
*/
- audiocpu.set_periodic_int(FUNC(bionicc_state::nmi_line_pulse), attotime::from_hz(4*60));
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(bionicc_state, nmi_line_pulse, 4*60)
/* Protection MCU Intel C8751H-88 runs at 24MHz / 4 = 6MHz */
I8751(config, m_mcu, XTAL(24'000'000) / 4);
@@ -411,27 +411,27 @@ void bionicc_state::bionicc(machine_config &config)
m_mcu->port_out_cb<3>().set(FUNC(bionicc_state::out3_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ MCFG_SCREEN_ADD("screen", RASTER)
/* FIXME: should be 257 visible horizontal pixels, first visible pixel should be repeated, back porch/front porch should be separated */
- screen.set_raw(XTAL(24'000'000) / 4, 386, 0, 256, 260, 16, 240);
- screen.set_screen_update(FUNC(bionicc_state::screen_update));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_RAW_PARAMS(XTAL(24'000'000) / 4, 386, 0, 256, 260, 16, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(bionicc_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_bionicc);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_bionicc)
- TIGEROAD_SPRITE(config, m_spritegen, 0);
+ MCFG_DEVICE_ADD("spritegen", TIGEROAD_SPRITE, 0)
PALETTE(config, m_palette).set_format(2, &bionicc_state::RRRRGGGGBBBBIIII, 1024);
- BUFFERED_SPRITERAM16(config, m_spriteram);
+ MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM16)
SPEAKER(config, "mono").front_center();
GENERIC_LATCH_8(config, m_soundlatch);
YM2151(config, "ymsnd", XTAL(14'318'181) / 4).add_route(0, "mono", 0.60).add_route(1, "mono", 0.60);
-}
+MACHINE_CONFIG_END
@@ -573,50 +573,6 @@ ROM_START( bionicc2 ) /* "Not for use outside of USA or Canada" 1st release */
ROM_LOAD( "63s141.18f", 0x0000, 0x0100, CRC(b58d0023) SHA1(e8a4a2e2951bf73b3d9eed6957e9ee1e61c9c58a) ) /* priority (not used), Labeled "TSB" */
ROM_END
-ROM_START( topsecrt2 ) /* "Not for use in any other country but Japan" */
- ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */
- ROM_LOAD16_BYTE( "ts_02b.1a", 0x00000, 0x10000, CRC(0b84497f) SHA1(f7e9412d37a1e4b7a437d3f7bc5dc448c8a22079) ) /* 68000 code */
- ROM_LOAD16_BYTE( "ts_04b.1b", 0x00001, 0x10000, CRC(9ab6de8d) SHA1(04445bc183364ebb6a8833a147b694234b509634) ) /* 68000 code */
- ROM_LOAD16_BYTE( "ts_03b.2a", 0x20000, 0x10000, CRC(1b3f8a82) SHA1(2f9cad83b7bd10617bbd5172a1d31f41b194d3ac) ) /* 68000 code */
- ROM_LOAD16_BYTE( "ts_05b.2b", 0x20001, 0x10000, CRC(962a89d8) SHA1(4aa5b0fd68a59ff74716253b0ba4c1933e92855b) ) /* 68000 code */
-
- ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "ts_01b.4e", 0x00000, 0x8000, CRC(a9a6cafa) SHA1(55e0a0e6ca11e8e73339d5b4604e130031211291) )
-
- ROM_REGION( 0x1000, "mcu", 0 ) /* i8751 microcontroller */
- ROM_LOAD( "ts.2f", 0x0000, 0x1000, CRC(3ed7f0be) SHA1(db9e972065c8e60b5d74762dc3424271ea9524cb) ) /* from 'topsecrt' bootleg, but appears to be original */
-
- ROM_REGION( 0x08000, "gfx1", 0 )
- ROM_LOAD( "ts_08.8l", 0x00000, 0x8000, CRC(96ad379e) SHA1(accd3a560b259c186bc28cdc004ed8de0b12f9d5) ) /* VIDEORAM (text layer) tiles */
-
- ROM_REGION( 0x10000, "gfx2", 0 )
- ROM_LOAD( "ts_07.5l", 0x00000, 0x8000, CRC(25cdf8b2) SHA1(316f6acc46878682dabeab12722e6a64504d23bd) ) /* SCROLL2 Layer Tiles */
- ROM_LOAD( "ts_06.4l", 0x08000, 0x8000, CRC(314fb12d) SHA1(dab0519a49b64fe7a837b3c6383f6147e1ab6ffd) )
-
- ROM_REGION( 0x40000, "gfx3", 0 )
- ROM_LOAD( "ts_12.17f", 0x00000, 0x8000, CRC(e4b4619e) SHA1(3bec8399ffb28fd50ce6ae88d90b091eadf8bda1) ) /* SCROLL1 Layer Tiles */
- ROM_LOAD( "ts_11.15f", 0x08000, 0x8000, CRC(ab30237a) SHA1(ea6c07df992ba48f9eca7daa4ea775faa94358d2) )
- ROM_LOAD( "ts_17.17g", 0x10000, 0x8000, CRC(deb657e4) SHA1(b36b468f9bbb7a4937286230d3f6caa14c61d4dd) )
- ROM_LOAD( "ts_16.15g", 0x18000, 0x8000, CRC(d363b5f9) SHA1(1dd3991d99db2d6bcbdb12879ba50a01fef95004) )
- ROM_LOAD( "ts_13.18f", 0x20000, 0x8000, CRC(a8f5a004) SHA1(36ab0cb8ec9ce0519876f7461ccc5020c9c5b597) )
- ROM_LOAD( "ts_18.18g", 0x28000, 0x8000, CRC(3b36948c) SHA1(d85fcc0265ba1729c587b046cc5a7ba6f25363dd) )
- ROM_LOAD( "ts_23.18j", 0x30000, 0x8000, CRC(bbfbe58a) SHA1(9b1d5672b6f3c5c0952f8dcd0da71acc68a97a5e) )
- ROM_LOAD( "ts_24.18k", 0x38000, 0x8000, CRC(f156e564) SHA1(a6cad05bcc6d9ded6294f9b5aa856d05641aed02) )
-
- ROM_REGION( 0x40000, "gfx4", 0 )
- ROM_LOAD( "ts_10.13f", 0x00000, 0x8000, CRC(c3587d05) SHA1(ad0898a5d4cf110783ef092bf8e65b6ef31a8ae0) ) /* Sprites */
- ROM_LOAD( "ts_09.11f", 0x08000, 0x8000, CRC(6b63eef2) SHA1(5d1580db7f49c5994c2a08a36c2d05f3e246930d) )
- ROM_LOAD( "ts_15.13g", 0x10000, 0x8000, CRC(db8cebb0) SHA1(1cc9eac14851cde95fb2d69d6f5ffb08bc9c0d93) )
- ROM_LOAD( "ts_14.11g", 0x18000, 0x8000, CRC(e2e41abf) SHA1(d002d0d8fdbb9ec3e2eac218f6338f733953ca82) )
- ROM_LOAD( "ts_20.13j", 0x20000, 0x8000, CRC(bfd1a695) SHA1(bf93486b96bfa1a1d5015189043b07e6130e6df1) )
- ROM_LOAD( "ts_19.11j", 0x28000, 0x8000, CRC(928b669e) SHA1(98ea9d23a46b0700490fd2fa7ab4fb0988dd5ca6) )
- ROM_LOAD( "ts_22.17j", 0x30000, 0x8000, CRC(3fe05d9a) SHA1(32e28ef03fb82785019d1ae8b3859215b5368c2b) )
- ROM_LOAD( "ts_21.15j", 0x38000, 0x8000, CRC(27a9bb7c) SHA1(bb60332c0ecde4d7797960dec39c1079498175c3) )
-
- ROM_REGION( 0x0100, "proms", 0 )
- ROM_LOAD( "63s141.18f", 0x0000, 0x0100, CRC(b58d0023) SHA1(e8a4a2e2951bf73b3d9eed6957e9ee1e61c9c58a) ) /* priority (not used), Labeled "TSB" */
-ROM_END
-
ROM_START( topsecrt ) /* "Not for use in any other country but Japan" */
ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_BYTE( "ts_02.1a", 0x00000, 0x10000, CRC(b2fe1ddb) SHA1(892f19124993add96edabdba3aafeecc6668c5d9) ) /* 68000 code */
@@ -756,8 +712,7 @@ GAME( 1987, bionicc, 0, bionicc, bionicc, bionicc_state, empty_init, RO
GAME( 1987, bionicc1, bionicc, bionicc, bionicc, bionicc_state, empty_init, ROT0, "Capcom", "Bionic Commando (US set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, bionicc2, bionicc, bionicc, bionicc, bionicc_state, empty_init, ROT0, "Capcom", "Bionic Commando (US set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, topsecrt, bionicc, bionicc, bionicc, bionicc_state, empty_init, ROT0, "Capcom", "Top Secret (Japan, old revision)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, topsecrt2, bionicc, bionicc, bionicc, bionicc_state, empty_init, ROT0, "Capcom", "Top Secret (Japan, revision B)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, bioniccbl, bionicc, bionicc, bionicc, bionicc_state, empty_init, ROT0, "bootleg", "Bionic Commandos (bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, bioniccbl2, bionicc, bionicc, bionicc, bionicc_state, empty_init, ROT0, "bootleg", "Bionic Commandos (bootleg, set 2)", MACHINE_SUPPORTS_SAVE )
-// there's also an undumped JP new revision on which there are no extra lives after 1 million points, plus other bug-fixes / changes (possibly topsecrt2 set?)
+// there's also an undumped JP new revision on which there are no extra lives after 1 million points, plus other bug-fixes / changes
diff --git a/src/mame/drivers/bitgraph.cpp b/src/mame/drivers/bitgraph.cpp
index 4d8c2f6e2c6..be66a7c5163 100644
--- a/src/mame/drivers/bitgraph.cpp
+++ b/src/mame/drivers/bitgraph.cpp
@@ -75,18 +75,17 @@
#define PSG_TAG "psg"
#define EAROM_TAG "earom"
-
-//#define LOG_GENERAL (1U << 0) //defined in logmacro.h already
-#define LOG_PIA (1U << 1)
-#define LOG_DEBUG (1U << 2)
-
-//#define VERBOSE (LOG_DEBUG)
-//#define LOG_OUTPUT_FUNC printf
-#include "logmacro.h"
-
-#define LOGPIA(...) LOGMASKED(LOG_PIA, __VA_ARGS__)
-#define LOGDBG(...) LOGMASKED(LOG_DEBUG, __VA_ARGS__)
-
+#define VERBOSE_DBG 1 /* 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 bitgraph_state : public driver_device
{
@@ -223,14 +222,14 @@ DEVICE_INPUT_DEFAULTS_END
READ8_MEMBER(bitgraph_state::pia_r)
{
- LOGPIA("PIA R %d\n", offset);
- return m_pia->read(3 - offset);
+ DBG_LOG(3, "PIA", ("R %d\n", offset));
+ return m_pia->read(space, 3 - offset);
}
WRITE8_MEMBER(bitgraph_state::pia_w)
{
- LOGPIA("PIA W %d < %02X\n", offset, data);
- return m_pia->write(3 - offset, data);
+ DBG_LOG(3, "PIA", ("W %d < %02X\n", offset, data));
+ return m_pia->write(space, 3 - offset, data);
}
READ_LINE_MEMBER(bitgraph_state::pia_ca1_r)
@@ -246,13 +245,13 @@ WRITE_LINE_MEMBER(bitgraph_state::pia_cb2_w)
READ8_MEMBER(bitgraph_state::pia_pa_r)
{
uint8_t data = BIT(m_pia_b, 3) ? m_earom->data() : m_pia_a;
- LOGDBG("PIA A == %02X (%s)\n", data, BIT(m_pia_b, 3) ? "earom" : "pia");
+ DBG_LOG(2, "PIA", ("A == %02X (%s)\n", data, BIT(m_pia_b, 3) ? "earom" : "pia"));
return data;
}
WRITE8_MEMBER(bitgraph_state::pia_pa_w)
{
- LOGDBG("PIA A <- %02X\n", data);
+ DBG_LOG(2, "PIA", ("A <- %02X\n", data));
m_pia_a = data;
}
@@ -268,28 +267,28 @@ WRITE8_MEMBER(bitgraph_state::pia_pa_w)
*/
READ8_MEMBER(bitgraph_state::pia_pb_r)
{
- LOGDBG("PIA B == %02X\n", m_pia_b);
+ DBG_LOG(2, "PIA", ("B == %02X\n", m_pia_b));
return m_pia_b;
}
WRITE8_MEMBER(bitgraph_state::pia_pb_w)
{
- LOGDBG("PIA B <- %02X\n", data);
+ DBG_LOG(2, "PIA", ("B <- %02X\n", data));
m_pia_b = data;
switch (m_pia_b & 0x03)
{
case 2:
- m_psg->data_w(m_pia_a);
+ m_psg->data_w(space, 0, m_pia_a);
break;
case 3:
- m_psg->address_w(m_pia_a);
+ m_psg->address_w(space, 0, m_pia_a);
break;
}
if (BIT(m_pia_b, 3))
{
- LOGDBG("EAROM data <- %02X\n", m_pia_a);
+ DBG_LOG(2, "EAROM", ("data <- %02X\n", m_pia_a));
m_earom->set_data(m_pia_a);
}
// CS1, ~CS2, C1, C2
@@ -304,14 +303,14 @@ WRITE8_MEMBER(bitgraph_state::pia_pb_w)
WRITE8_MEMBER(bitgraph_state::earom_write)
{
- LOGDBG("EAROM addr <- %02X (%02X)\n", data & 0x3f, data);
+ DBG_LOG(2, "EAROM", ("addr <- %02X (%02X)\n", data & 0x3f, data));
m_earom->set_address(data & 0x3f);
}
// written once and never changed
WRITE8_MEMBER(bitgraph_state::misccr_write)
{
- LOG("MISCCR <- %02X (DTR %d MAP %d)\n", data, BIT(data, 3), (data & 3));
+ DBG_LOG(1, "MISCCR", ("<- %02X (DTR %d MAP %d)\n", data, BIT(data, 3), (data & 3)));
m_misccr = data;
}
@@ -336,11 +335,11 @@ WRITE_LINE_MEMBER(bitgraph_state::system_clock_write)
// rev B writes EE5E -- 9600 HOST, 9600 PNT, 300 KBD, 9600 DBG
WRITE16_MEMBER(bitgraph_state::baud_write)
{
- LOG("Baud %04X\n", data);
- m_dbrgb->str_w(data & 15); // 2 DBG
- m_dbrga->stt_w((data >> 4) & 15); // 1 KBD
- m_dbrgb->stt_w((data >> 8) & 15); // 3 PNT
- m_dbrga->str_w((data >> 12) & 15); // 0 HOST
+ DBG_LOG(1,"Baud", ("%04X\n", data));
+ m_dbrgb->write_str(data & 15); // 2 DBG
+ m_dbrga->write_stt((data >> 4) & 15); // 1 KBD
+ m_dbrgb->write_stt((data >> 8) & 15); // 3 PNT
+ m_dbrga->write_str((data >> 12) & 15); // 0 HOST
}
WRITE_LINE_MEMBER(bitgraph_state::com8116_a_fr_w)
@@ -363,7 +362,7 @@ WRITE_LINE_MEMBER(bitgraph_state::com8116_b_fr_w)
WRITE_LINE_MEMBER(bitgraph_state::com8116_b_ft_w)
{
- if (m_acia3.found())
+ if (m_acia3)
{
m_acia3->write_txc(state);
m_acia3->write_rxc(state);
@@ -372,14 +371,14 @@ WRITE_LINE_MEMBER(bitgraph_state::com8116_b_ft_w)
READ8_MEMBER(bitgraph_state::adlc_r)
{
- LOG("ADLC R %d\n", offset);
- return m_adlc.found() ? m_adlc->read(3 - offset) : 0xff;
+ DBG_LOG(1, "ADLC", ("R %d\n", offset));
+ return m_adlc ? m_adlc->read(space, 3 - offset) : 0xff;
}
WRITE8_MEMBER(bitgraph_state::adlc_w)
{
- LOG("ADLC W %d < %02X\n", offset, data);
- if (m_adlc.found()) return m_adlc->write(3 - offset, data);
+ DBG_LOG(1, "ADLC", ("W %d < %02X\n", offset, data));
+ if (m_adlc) return m_adlc->write(space, 3 - offset, data);
}
uint32_t bitgraph_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -422,13 +421,13 @@ uint32_t bitgraph_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
READ8_MEMBER(bitgraph_state::ppu_read)
{
uint8_t data = m_ppu[offset];
- LOGDBG("PPU %d == %02X\n", offset, data);
+ DBG_LOG(2, "PPU", ("%d == %02X\n", offset, data));
return data;
}
WRITE8_MEMBER(bitgraph_state::ppu_write)
{
- LOGDBG("PPU %d <- %02X\n", offset, data);
+ DBG_LOG(2, "PPU", ("%d <- %02X\n", offset, data));
m_ppu[offset] = data;
}
@@ -447,7 +446,7 @@ void bitgraph_state::ppu_io(address_map &map)
*/
WRITE8_MEMBER(bitgraph_state::ppu_i8243_w)
{
- LOG("PPU 8243 %d <- %02X\n", offset + 4, data);
+ DBG_LOG(1, "PPU", ("8243 %d <- %02X\n", offset + 4, data));
switch (offset)
{
case 0:
@@ -492,15 +491,14 @@ void bitgraph_state::machine_reset()
}
-void bitgraph_state::bg_motherboard(machine_config &config)
-{
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(40);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(1024, 768);
- m_screen->set_visarea_full();
- m_screen->set_screen_update(FUNC(bitgraph_state::screen_update));
- m_screen->set_palette("palette");
+MACHINE_CONFIG_START(bitgraph_state::bg_motherboard)
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(40)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(1024, 768)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 768-1)
+ MCFG_SCREEN_UPDATE_DRIVER(bitgraph_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -552,17 +550,16 @@ void bitgraph_state::bg_motherboard(machine_config &config)
m_pia->readpb_handler().set(FUNC(bitgraph_state::pia_pb_r));
m_pia->writepb_handler().set(FUNC(bitgraph_state::pia_pb_w));
- ER2055(config, m_earom, 0);
+ MCFG_DEVICE_ADD(EAROM_TAG, ER2055, 0)
SPEAKER(config, "mono").front_center();
AY8912(config, m_psg, XTAL(1'294'400));
m_psg->port_a_write_callback().set(FUNC(bitgraph_state::earom_write));
m_psg->add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+MACHINE_CONFIG_END
#ifdef UNUSED_FUNCTION
-void bitgraph_state::bg_ppu(machine_config &config)
-{
+MACHINE_CONFIG_START(bitgraph_state::bg_ppu)
i8035_device &ppu(I8035(config, PPU_TAG, XTAL(6'900'000)));
ppu.set_addrmap(AS_IO, &bitgraph_state::ppu_io);
// ppu.t0_in_cb().set(FUNC(bitgraph_state::ppu_t0_r));
@@ -572,17 +569,16 @@ void bitgraph_state::bg_ppu(machine_config &config)
i8243.read_handler().set_nop();
i8243.write_handler().set(FUNC(bitgraph_state::ppu_i8243_w));
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit6));
- m_centronics->busy_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit7));
- m_centronics->fault_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit4));
- m_centronics->perror_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit5));
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit6))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit7))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit4))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit5))
- INPUT_BUFFER(config, "cent_status_in");
+ MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0)
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
-}
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+MACHINE_CONFIG_END
#endif
void bitgraph_state::bitgrpha(machine_config &config)
diff --git a/src/mame/drivers/bk.cpp b/src/mame/drivers/bk.cpp
index 5094b821dde..60dd90a8033 100644
--- a/src/mame/drivers/bk.cpp
+++ b/src/mame/drivers/bk.cpp
@@ -193,12 +193,12 @@ void bk_state::bk0010(machine_config &config)
SOFTWARE_LIST(config, "cass_list").set_original("bk0010");
}
-void bk_state::bk0010fd(machine_config &config)
-{
+MACHINE_CONFIG_START(bk_state::bk0010fd)
bk0010(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &bk_state::bk0010fd_mem);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(bk0010fd_mem)
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/bking.cpp b/src/mame/drivers/bking.cpp
index 930b4417530..d9344ee4259 100644
--- a/src/mame/drivers/bking.cpp
+++ b/src/mame/drivers/bking.cpp
@@ -389,33 +389,33 @@ MACHINE_RESET_MEMBER(bking_state,bking3)
m_addr_l = 0;
}
-void bking_state::bking(machine_config &config)
-{
+MACHINE_CONFIG_START(bking_state::bking)
+
/* basic machine hardware */
- z80_device &maincpu(Z80(config, "main_cpu", XTAL(12'000'000)/4)); /* 3 MHz */
- maincpu.set_addrmap(AS_PROGRAM, &bking_state::bking_map);
- maincpu.set_addrmap(AS_IO, &bking_state::bking_io_map);
- maincpu.set_vblank_int("screen", FUNC(bking_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("main_cpu", Z80, XTAL(12'000'000)/4) /* 3 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(bking_map)
+ MCFG_DEVICE_IO_MAP(bking_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", bking_state, irq0_line_hold)
- Z80(config, m_audiocpu, XTAL(6'000'000)/2); /* 3 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &bking_state::bking_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(6'000'000)/2) /* 3 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(bking_audio_map)
/* interrupts (from Jungle King hardware, might be wrong): */
/* - no interrupts synced with vblank */
/* - NMI triggered by the main CPU */
/* - periodic IRQ, with frequency 6000000/(4*16*16*10*16) = 36.621 Hz, */
- m_audiocpu->set_periodic_int(FUNC(bking_state::irq0_line_hold), attotime::from_hz((double)6000000/(4*16*16*10*16)));
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(bking_state, irq0_line_hold, (double)6000000/(4*16*16*10*16))
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(bking_state::screen_update_bking));
- m_screen->screen_vblank().set(FUNC(bking_state::screen_vblank_bking));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(bking_state, screen_update_bking)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, bking_state, screen_vblank_bking))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_bking);
PALETTE(config, m_palette, FUNC(bking_state::bking_palette), 4*8 + 4*4 + 4*2 + 4*2);
@@ -434,26 +434,25 @@ void bking_state::bking(machine_config &config)
ay2.port_b_write_callback().set(FUNC(bking_state::port_b_w));
ay2.add_route(ALL_OUTPUTS, "speaker", 0.25);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void bking_state::bking3(machine_config &config)
-{
+MACHINE_CONFIG_START(bking_state::bking3)
bking(config);
/* basic machine hardware */
- subdevice<z80_device>("main_cpu")->set_addrmap(AS_IO, &bking_state::bking3_io_map);
+ MCFG_DEVICE_MODIFY("main_cpu")
+ MCFG_DEVICE_IO_MAP(bking3_io_map)
- TAITO68705_MCU(config, m_bmcu, XTAL(3'000'000)); /* xtal is 3MHz, divided by 4 internally */
+ MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU, XTAL(3'000'000)) /* xtal is 3MHz, divided by 4 internally */
MCFG_MACHINE_START_OVERRIDE(bking_state,bking3)
MCFG_MACHINE_RESET_OVERRIDE(bking_state,bking3)
- config.m_minimum_quantum = attotime::from_hz(6000);
-}
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/blackt96.cpp b/src/mame/drivers/blackt96.cpp
index 690fab53182..28bb8f2f685 100644
--- a/src/mame/drivers/blackt96.cpp
+++ b/src/mame/drivers/blackt96.cpp
@@ -447,14 +447,14 @@ WRITE8_MEMBER(blackt96_state::blackt96_soundio_port_c_w)
if (((data & 0x02) == 0x00) && ((m_port_c_data & 0x02) == 0x02)) // high -> low on bit 0x02 writes to selected OKI
{
//logerror("%s: blackt96_soundio_port_c_w (write to OKI %02x) (oki selected is %02x)\n", machine().describe_context().c_str(), m_port_b_latch, m_oki_selected);
- if (m_oki_selected == 0) m_oki[0]->write(m_port_b_latch);
- else if (m_oki_selected == 1) m_oki[1]->write(m_port_b_latch);
+ if (m_oki_selected == 0) m_oki[0]->write(space, 0, m_port_b_latch);
+ else if (m_oki_selected == 1) m_oki[1]->write(space, 0, m_port_b_latch);
}
if (((data & 0x01) == 0x00) && ((m_port_c_data & 0x01) == 0x01)) // high -> low on bit 0x01 reads to selected OKI
{
- if (m_oki_selected == 0) m_port_b_latch = m_oki[0]->read();
- else if (m_oki_selected == 1) m_port_b_latch = m_oki[1]->read();
+ if (m_oki_selected == 0) m_port_b_latch = m_oki[0]->read(space, 0);
+ else if (m_oki_selected == 1) m_port_b_latch = m_oki[1]->read(space, 0);
}
m_port_c_data = data;
@@ -477,11 +477,10 @@ void blackt96_state::tile_callback(int &tile, int& fx, int& fy, int& region)
}
-void blackt96_state::blackt96(machine_config &config)
-{
- M68000(config, m_maincpu, 18000000 /2);
- m_maincpu->set_addrmap(AS_PROGRAM, &blackt96_state::blackt96_map);
- m_maincpu->set_vblank_int("screen", FUNC(blackt96_state::irq1_line_hold));
+MACHINE_CONFIG_START(blackt96_state::blackt96)
+ MCFG_DEVICE_ADD("maincpu", M68000, 18000000 /2)
+ MCFG_DEVICE_PROGRAM_MAP(blackt96_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", blackt96_state, irq1_line_hold)
pic16c57_device &audiocpu(PIC16C57(config, "audiocpu", 8000000)); /* ? */
audiocpu.write_a().set(FUNC(blackt96_state::blackt96_soundio_port_a_w));
@@ -490,16 +489,16 @@ void blackt96_state::blackt96(machine_config &config)
audiocpu.read_c().set(FUNC(blackt96_state::blackt96_soundio_port_c_r));
audiocpu.write_c().set(FUNC(blackt96_state::blackt96_soundio_port_c_w));
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_blackt96);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_blackt96)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
-// screen.set_visarea(0*8, 16*32-1, 0*8, 16*32-1);
- screen.set_visarea(0*8, 256-1, 2*8, 240-1);
- screen.set_screen_update(FUNC(blackt96_state::screen_update_blackt96));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, 16*32-1, 0*8, 16*32-1)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 256-1, 2*8, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(blackt96_state, screen_update_blackt96)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 0x800);
@@ -511,15 +510,15 @@ void blackt96_state::blackt96(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- OKIM6295(config, m_oki[0], 8000000/8, okim6295_device::PIN7_HIGH); // music
- m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 0.47);
- m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 0.47);
- m_oki[0]->set_addrmap(0, &blackt96_state::oki1_map);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 8000000/8, okim6295_device::PIN7_HIGH) // music
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki1_map)
- OKIM6295(config, m_oki[1], 8000000/8, okim6295_device::PIN7_HIGH); // sfx
- m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.47);
- m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.47);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 8000000/8, okim6295_device::PIN7_HIGH) // sfx
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47)
+MACHINE_CONFIG_END
ROM_START( blackt96 )
diff --git a/src/mame/drivers/bladestl.cpp b/src/mame/drivers/bladestl.cpp
index 13d982f6de9..8c64fb7ad7d 100644
--- a/src/mame/drivers/bladestl.cpp
+++ b/src/mame/drivers/bladestl.cpp
@@ -303,28 +303,28 @@ void bladestl_state::machine_reset()
m_soundlatch->acknowledge_w(machine().dummy_space(), 0, 0);
}
-void bladestl_state::bladestl(machine_config &config)
-{
+MACHINE_CONFIG_START(bladestl_state::bladestl)
+
/* basic machine hardware */
- HD6309E(config, m_maincpu, XTAL(24'000'000) / 8); // divider not verified (from 007342 custom)
- m_maincpu->set_addrmap(AS_PROGRAM, &bladestl_state::main_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(bladestl_state::bladestl_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD(m_maincpu, HD6309E, XTAL(24'000'000) / 8) // divider not verified (from 007342 custom)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", bladestl_state, bladestl_scanline, "screen", 0, 1)
- MC6809E(config, m_audiocpu, XTAL(24'000'000) / 16);
- m_audiocpu->set_addrmap(AS_PROGRAM, &bladestl_state::sound_map);
+ MCFG_DEVICE_ADD(m_audiocpu, MC6809E, XTAL(24'000'000) / 16)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(bladestl_state::screen_update_bladestl));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(bladestl_state, screen_update_bladestl)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_bladestl);
PALETTE(config, "palette", FUNC(bladestl_state::bladestl_palette)).set_format(palette_device::xBGR_555, 32 + 16*16, 32+16);
@@ -360,10 +360,13 @@ void bladestl_state::bladestl(machine_config &config)
ymsnd.add_route(2, "filter3", 0.45);
ymsnd.add_route(3, "mono", 0.45);
- FILTER_RC(config, m_filter1).add_route(ALL_OUTPUTS, "mono", 1.0);
- FILTER_RC(config, m_filter2).add_route(ALL_OUTPUTS, "mono", 1.0);
- FILTER_RC(config, m_filter3).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD(m_filter1, FILTER_RC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADD(m_filter2, FILTER_RC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADD(m_filter3, FILTER_RC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/blitz68k.cpp b/src/mame/drivers/blitz68k.cpp
index 30df7046f1b..944a3cdd7c8 100644
--- a/src/mame/drivers/blitz68k.cpp
+++ b/src/mame/drivers/blitz68k.cpp
@@ -925,17 +925,17 @@ WRITE16_MEMBER(blitz68k_state::cjffruit_leds3_w)
READ8_MEMBER(blitz68k_state::crtc_r)
{
if (offset)
- return m_crtc->register_r();
+ return m_crtc->register_r(space, 0);
else
- return m_crtc->status_r();
+ return m_crtc->status_r(space, 0);
}
WRITE8_MEMBER(blitz68k_state::crtc_w)
{
if (offset)
- m_crtc->register_w(data);
+ m_crtc->register_w(space, 0, data);
else
- m_crtc->address_w(data);
+ m_crtc->address_w(space, 0, data);
}
WRITE16_MEMBER(blitz68k_state::crtc_lpen_w)
@@ -1720,25 +1720,24 @@ void blitz68k_state::ramdac_config(machine_config &config)
ramdac.set_addrmap(0, &blitz68k_state::ramdac_map);
}
-void blitz68k_state::ilpag(machine_config &config)
-{
- M68000(config, m_maincpu, 11059200 ); // ?
- m_maincpu->set_addrmap(AS_PROGRAM, &blitz68k_state::ilpag_map);
- m_maincpu->set_vblank_int("screen", FUNC(blitz68k_state::irq4_line_hold)); //3 & 6 used, mcu comms?
+MACHINE_CONFIG_START(blitz68k_state::ilpag)
+ MCFG_DEVICE_ADD(m_maincpu, M68000, 11059200 ) // ?
+ MCFG_DEVICE_PROGRAM_MAP(ilpag_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", blitz68k_state, irq4_line_hold) //3 & 6 used, mcu comms?
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(blitz68k_state::screen_update_blitz68k));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
ramdac_config(config);
MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
-}
+MACHINE_CONFIG_END
/*
20089f = 1 -> menu
@@ -1778,30 +1777,29 @@ TIMER_DEVICE_CALLBACK_MEMBER(blitz68k_state::steaser_mcu_sim)
}
-void blitz68k_state::steaser(machine_config &config)
-{
+MACHINE_CONFIG_START(blitz68k_state::steaser)
ilpag(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &blitz68k_state::steaser_map);
- m_maincpu->set_vblank_int("screen", FUNC(blitz68k_state::irq5_line_hold)); //3, 4 & 6 used, mcu comms?
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(steaser_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", blitz68k_state, irq5_line_hold) //3, 4 & 6 used, mcu comms?
- TIMER(config, "coinsim").configure_periodic(FUNC(blitz68k_state::steaser_mcu_sim), attotime::from_hz(10000));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("coinsim", blitz68k_state, steaser_mcu_sim, attotime::from_hz(10000))
+MACHINE_CONFIG_END
-void blitz68k_state::cjffruit(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(22'118'400)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &blitz68k_state::cjffruit_map);
+MACHINE_CONFIG_START(blitz68k_state::cjffruit)
+ MCFG_DEVICE_ADD(m_maincpu, M68000, XTAL(22'118'400)/2)
+ MCFG_DEVICE_PROGRAM_MAP(cjffruit_map)
// MC68HC705C8P (Sound MCU)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-8-1);
- screen.set_screen_update(FUNC(blitz68k_state::screen_update_blitz68k));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k)
R6545_1(config, m_crtc, XTAL(22'118'400)/8);
m_crtc->set_screen("screen");
@@ -1813,14 +1811,13 @@ void blitz68k_state::cjffruit(machine_config &config)
ramdac_config(config);
MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
-}
+MACHINE_CONFIG_END
-void blitz68k_state::bankrob(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(11'059'200));
- m_maincpu->set_addrmap(AS_PROGRAM, &blitz68k_state::bankrob_map);
- m_maincpu->set_vblank_int("screen", FUNC(blitz68k_state::irq3_line_hold)); // protection prevents correct irq frequency by crtc
+MACHINE_CONFIG_START(blitz68k_state::bankrob)
+ MCFG_DEVICE_ADD(m_maincpu, M68000, XTAL(11'059'200))
+ MCFG_DEVICE_PROGRAM_MAP(bankrob_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", blitz68k_state, irq3_line_hold) // protection prevents correct irq frequency by crtc
// irq 2 reads from MCUs
// MC68HC705C8P (MCU1)
@@ -1829,12 +1826,12 @@ void blitz68k_state::bankrob(machine_config &config)
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0+4, 256-1-4);
- screen.set_screen_update(FUNC(blitz68k_state::screen_update_blitz68k));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+4, 256-1-4)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k)
H46505(config, m_crtc, XTAL(11'059'200)/4);
m_crtc->set_screen("screen");
@@ -1846,26 +1843,25 @@ void blitz68k_state::bankrob(machine_config &config)
ramdac_config(config);
MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
-}
+MACHINE_CONFIG_END
-void blitz68k_state::bankroba(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(11'059'200));
- m_maincpu->set_addrmap(AS_PROGRAM, &blitz68k_state::bankroba_map);
- m_maincpu->set_vblank_int("screen", FUNC(blitz68k_state::irq5_line_hold)); // protection prevents correct irq frequency by crtc
+MACHINE_CONFIG_START(blitz68k_state::bankroba)
+ MCFG_DEVICE_ADD(m_maincpu, M68000, XTAL(11'059'200) )
+ MCFG_DEVICE_PROGRAM_MAP(bankroba_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", blitz68k_state, irq5_line_hold) // protection prevents correct irq frequency by crtc
// irq 3,4 read from MCUs
// MC68HC705C8P (MCU)
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0+7, 256-1);
- screen.set_screen_update(FUNC(blitz68k_state::screen_update_blitz68k));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+7, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k)
H46505(config, m_crtc, XTAL(11'059'200)/4);
m_crtc->set_screen("screen");
@@ -1877,25 +1873,24 @@ void blitz68k_state::bankroba(machine_config &config)
ramdac_config(config);
MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k_addr_factor1)
-}
+MACHINE_CONFIG_END
-void blitz68k_state::deucesw2(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(22'118'400) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &blitz68k_state::deucesw2_map);
+MACHINE_CONFIG_START(blitz68k_state::deucesw2)
+ MCFG_DEVICE_ADD(m_maincpu, M68000, XTAL(22'118'400) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(deucesw2_map)
// irq 2 reads from MCUs
// MC68HC705C8P (MCU)
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(blitz68k_state::screen_update_blitz68k));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k)
R6545_1(config, m_crtc, XTAL(22'118'400)/8);
m_crtc->set_screen("screen");
@@ -1907,14 +1902,13 @@ void blitz68k_state::deucesw2(machine_config &config)
ramdac_config(config);
MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
-}
+MACHINE_CONFIG_END
-void blitz68k_state::dualgame(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(11'059'200));
- m_maincpu->set_addrmap(AS_PROGRAM, &blitz68k_state::dualgame_map);
- m_maincpu->set_vblank_int("screen", FUNC(blitz68k_state::irq2_line_hold)); // lev 2 = MCUs, lev 3 = vblank
+MACHINE_CONFIG_START(blitz68k_state::dualgame)
+ MCFG_DEVICE_ADD(m_maincpu, M68000, XTAL(11'059'200) )
+ MCFG_DEVICE_PROGRAM_MAP(dualgame_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", blitz68k_state, irq2_line_hold) // lev 2 = MCUs, lev 3 = vblank
// MC68HC705C8P (MCU1)
@@ -1922,12 +1916,12 @@ void blitz68k_state::dualgame(machine_config &config)
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0+4, 256-1-4);
- screen.set_screen_update(FUNC(blitz68k_state::screen_update_blitz68k));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+4, 256-1-4)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k)
H46505(config, m_crtc, XTAL(11'059'200)/4);
m_crtc->set_screen("screen");
@@ -1939,25 +1933,24 @@ void blitz68k_state::dualgame(machine_config &config)
ramdac_config(config);
MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
-}
+MACHINE_CONFIG_END
-void blitz68k_state::hermit(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(22'118'400)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &blitz68k_state::hermit_map);
- m_maincpu->set_vblank_int("screen", FUNC(blitz68k_state::irq1_line_hold)); // protection prevents correct irq frequency by crtc
+MACHINE_CONFIG_START(blitz68k_state::hermit)
+ MCFG_DEVICE_ADD(m_maincpu, M68000, XTAL(22'118'400)/2 )
+ MCFG_DEVICE_PROGRAM_MAP(hermit_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", blitz68k_state, irq1_line_hold) // protection prevents correct irq frequency by crtc
// MC68HC705C8P (MCU)
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0+4, 256-1-4);
- screen.set_screen_update(FUNC(blitz68k_state::screen_update_blitz68k));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+4, 256-1-4)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k)
H46505(config, m_crtc, XTAL(22'118'400)/8);
m_crtc->set_screen("screen");
@@ -1969,13 +1962,12 @@ void blitz68k_state::hermit(machine_config &config)
ramdac_config(config);
MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
-}
+MACHINE_CONFIG_END
-void blitz68k_state::maxidbl(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(11'059'200));
- m_maincpu->set_addrmap(AS_PROGRAM, &blitz68k_state::maxidbl_map);
- m_maincpu->set_vblank_int("screen", FUNC(blitz68k_state::irq3_line_hold)); // protection prevents correct irq frequency by crtc
+MACHINE_CONFIG_START(blitz68k_state::maxidbl)
+ MCFG_DEVICE_ADD(m_maincpu, M68000, XTAL(11'059'200))
+ MCFG_DEVICE_PROGRAM_MAP(maxidbl_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", blitz68k_state, irq3_line_hold) // protection prevents correct irq frequency by crtc
// irq 2 reads from MCUs
// MC68HC705C8P (MCU1)
@@ -1986,12 +1978,12 @@ void blitz68k_state::maxidbl(machine_config &config)
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(blitz68k_state::screen_update_blitz68k_noblit));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k_noblit)
H46505(config, m_crtc, XTAL(11'059'200)/4);
m_crtc->set_screen("screen");
diff --git a/src/mame/drivers/blktiger.cpp b/src/mame/drivers/blktiger.cpp
index d5cc4cc9d31..65828878eb4 100644
--- a/src/mame/drivers/blktiger.cpp
+++ b/src/mame/drivers/blktiger.cpp
@@ -292,12 +292,12 @@ void blktiger_state::machine_reset()
void blktiger_state::blktiger(machine_config &config)
{
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(24'000'000)/4); /* verified on pcb */
+ Z80(config, m_maincpu, XTAL(24'000'000)/4); /* verified on pcb */
m_maincpu->set_addrmap(AS_PROGRAM, &blktiger_state::blktiger_map);
m_maincpu->set_addrmap(AS_IO, &blktiger_state::blktiger_io_map);
m_maincpu->set_vblank_int("screen", FUNC(blktiger_state::irq0_line_hold));
- Z80(config, m_audiocpu, XTAL(3'579'545)); /* verified on pcb */
+ Z80(config, m_audiocpu, XTAL(3'579'545)); /* verified on pcb */
m_audiocpu->set_addrmap(AS_PROGRAM, &blktiger_state::blktiger_sound_map);
I8751(config, m_mcu, XTAL(24'000'000)/4); /* ??? */
diff --git a/src/mame/drivers/blmbycar.cpp b/src/mame/drivers/blmbycar.cpp
index 827c4be384f..82c428c8e57 100644
--- a/src/mame/drivers/blmbycar.cpp
+++ b/src/mame/drivers/blmbycar.cpp
@@ -364,26 +364,26 @@ MACHINE_RESET_MEMBER(blmbycar_state,blmbycar)
}
-void blmbycar_state::blmbycar(machine_config &config)
-{
+MACHINE_CONFIG_START(blmbycar_state::blmbycar)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000)/2); /* 12MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &blmbycar_state::blmbycar_map);
- m_maincpu->set_vblank_int("screen", FUNC(blmbycar_state::irq1_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) /* 12MHz */
+ MCFG_DEVICE_PROGRAM_MAP(blmbycar_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", blmbycar_state, irq1_line_hold)
MCFG_MACHINE_START_OVERRIDE(blmbycar_state,blmbycar)
MCFG_MACHINE_RESET_OVERRIDE(blmbycar_state,blmbycar)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(0x180, 0x100);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(blmbycar_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x180, 0x100)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 0, 0x100-1)
+ MCFG_SCREEN_UPDATE_DRIVER(blmbycar_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_blmbycar);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_blmbycar)
PALETTE(config, m_palette).set_format(palette_device::xBRG_444, 0x2000);
@@ -394,10 +394,10 @@ void blmbycar_state::blmbycar(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(1'000'000), okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
- oki.set_addrmap(0, &blmbycar_state::blmbycar_oki_map);
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(1'000'000), okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_DEVICE_ADDRESS_MAP(0, blmbycar_oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
MACHINE_START_MEMBER(blmbycar_state,watrball)
@@ -412,21 +412,21 @@ MACHINE_RESET_MEMBER(blmbycar_state,watrball)
m_retvalue = 0;
}
-void blmbycar_state::watrball(machine_config &config)
-{
+MACHINE_CONFIG_START(blmbycar_state::watrball)
blmbycar(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &blmbycar_state::watrball_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(watrball_map)
MCFG_MACHINE_START_OVERRIDE(blmbycar_state,watrball)
MCFG_MACHINE_RESET_OVERRIDE(blmbycar_state,watrball)
/* video hardware */
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_visarea(0, 0x180-1, 16, 0x100-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 16, 0x100-1)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/blockout.cpp b/src/mame/drivers/blockout.cpp
index 17bff9d43fd..3249c589183 100644
--- a/src/mame/drivers/blockout.cpp
+++ b/src/mame/drivers/blockout.cpp
@@ -304,25 +304,25 @@ TIMER_DEVICE_CALLBACK_MEMBER(blockout_state::blockout_scanline)
m_maincpu->set_input_line(5, ASSERT_LINE);
}
-void blockout_state::blockout(machine_config &config)
-{
+MACHINE_CONFIG_START(blockout_state::blockout)
+
/* basic machine hardware */
- M68000(config, m_maincpu, MAIN_CLOCK); /* MRH - 8.76 makes gfx/adpcm samples sync better -- but 10 is correct speed*/
- m_maincpu->set_addrmap(AS_PROGRAM, &blockout_state::main_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(blockout_state::blockout_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M68000, MAIN_CLOCK) /* MRH - 8.76 makes gfx/adpcm samples sync better -- but 10 is correct speed*/
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", blockout_state, blockout_scanline, "screen", 0, 1)
- Z80(config, m_audiocpu, AUDIO_CLOCK); /* 3.579545 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &blockout_state::audio_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, AUDIO_CLOCK) /* 3.579545 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(audio_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ MCFG_SCREEN_ADD("screen", RASTER)
/* assume same as ddragon3 with adjusted visible display area */
- m_screen->set_raw(XTAL(28'000'000) / 4, 448, 0, 320, 272, 10, 250);
- m_screen->set_screen_update(FUNC(blockout_state::screen_update_blockout));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 448, 0, 320, 272, 10, 250)
+ MCFG_SCREEN_UPDATE_DRIVER(blockout_state, screen_update_blockout)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(513);
+ MCFG_PALETTE_ADD("palette", 513)
/* sound hardware */
@@ -337,16 +337,16 @@ void blockout_state::blockout(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.60);
ymsnd.add_route(1, "rspeaker", 0.60);
- okim6295_device &oki(OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH));
- oki.add_route(ALL_OUTPUTS, "lspeaker", 0.50);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 0.50);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
+MACHINE_CONFIG_END
-void blockout_state::agress(machine_config &config)
-{
+MACHINE_CONFIG_START(blockout_state::agress)
blockout(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &blockout_state::agress_map);
-}
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(agress_map)
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/blocktax.cpp b/src/mame/drivers/blocktax.cpp
index 1b43e664755..396213fb843 100644
--- a/src/mame/drivers/blocktax.cpp
+++ b/src/mame/drivers/blocktax.cpp
@@ -73,24 +73,24 @@ void blocktax_state::blocktax_map(address_map &map)
static INPUT_PORTS_START( blocktax )
INPUT_PORTS_END
-void blocktax_state::blocktax(machine_config &config)
-{
- I80C51(config, m_maincpu, 30_MHz_XTAL/2); /* P89C51RD2HBA (80C51 with internal flash rom) */
+MACHINE_CONFIG_START(blocktax_state::blocktax)
+ MCFG_DEVICE_ADD("maincpu", I80C51, 30_MHz_XTAL/2) /* P89C51RD2HBA (80C51 with internal flash rom) */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(blocktax_state::screen_update_blocktax));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(blocktax_state, screen_update_blocktax)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x200);
SPEAKER(config, "speaker").front_center();
- OKIM6295(config, "oki", 30_MHz_XTAL/16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "speaker", 1.00); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 30_MHz_XTAL/16, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.00)
+MACHINE_CONFIG_END
ROM_START( blocktax )
ROM_REGION( 0x10000, "maincpu", 0 ) /* Internal MCU Flash */
diff --git a/src/mame/drivers/bloodbro.cpp b/src/mame/drivers/bloodbro.cpp
index e61c15023a6..0f2e8c83ce1 100644
--- a/src/mame/drivers/bloodbro.cpp
+++ b/src/mame/drivers/bloodbro.cpp
@@ -222,7 +222,7 @@ WRITE8_MEMBER(bloodbro_state::weststry_opl_w)
{
// NMI cannot be accepted between address and data writes, or else registers get corrupted
m_weststry_soundnmi_mask = BIT(offset, 0);
- m_ymsnd->write(offset, data);
+ m_ymsnd->write(space, offset, data);
weststry_soundnmi_update();
}
diff --git a/src/mame/drivers/blstroid.cpp b/src/mame/drivers/blstroid.cpp
index 2cb3789e2f1..bbbeb3f719c 100644
--- a/src/mame/drivers/blstroid.cpp
+++ b/src/mame/drivers/blstroid.cpp
@@ -175,11 +175,11 @@ GFXDECODE_END
*
*************************************/
-void blstroid_state::blstroid(machine_config &config)
-{
+MACHINE_CONFIG_START(blstroid_state::blstroid)
+
/* basic machine hardware */
- M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &blstroid_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
EEPROM_2804(config, "eeprom").lock_after_write(true);
@@ -190,19 +190,19 @@ void blstroid_state::blstroid(machine_config &config)
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 512);
- TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 16,8, TILEMAP_SCAN_ROWS, 64,64).set_info_callback(FUNC(blstroid_state::get_playfield_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 2, blstroid_state, get_playfield_tile_info, 16,8, SCAN_ROWS, 64,64)
ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, blstroid_state::s_mob_config);
m_mob->set_gfxdecode(m_gfxdecode);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz, 456*2, 0, 320*2, 262, 0, 240);
- m_screen->set_screen_update(FUNC(blstroid_state::screen_update_blstroid));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set(FUNC(blstroid_state::video_int_write_line));
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz, 456*2, 0, 320*2, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(blstroid_state, screen_update_blstroid)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, blstroid_state, video_int_write_line))
MCFG_VIDEO_START_OVERRIDE(blstroid_state,blstroid)
@@ -217,7 +217,7 @@ void blstroid_state::blstroid(machine_config &config)
m_jsa->add_route(1, "rspeaker", 1.0);
config.device_remove("jsa:pokey");
config.device_remove("jsa:tms");
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/blueprnt.cpp b/src/mame/drivers/blueprnt.cpp
index 604c520cad2..f501af0d40d 100644
--- a/src/mame/drivers/blueprnt.cpp
+++ b/src/mame/drivers/blueprnt.cpp
@@ -346,35 +346,34 @@ void blueprnt_state::machine_reset()
}
-void blueprnt_state::blueprnt(machine_config &config)
-{
+MACHINE_CONFIG_START(blueprnt_state::blueprnt)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 7000000/2); // 3.5 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &blueprnt_state::blueprnt_map);
- m_maincpu->set_vblank_int("screen", FUNC(blueprnt_state::irq0_line_hold));
-
- Z80(config, m_audiocpu, 10000000/2/2/2); // 1.25 MHz (2H)
- m_audiocpu->set_addrmap(AS_PROGRAM, &blueprnt_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &blueprnt_state::sound_io);
- m_audiocpu->set_periodic_int(FUNC(blueprnt_state::irq0_line_hold), attotime::from_hz(4*60)); // IRQs connected to 32V
+ MCFG_DEVICE_ADD("maincpu", Z80, 7000000/2) // 3.5 MHz
+ MCFG_DEVICE_PROGRAM_MAP(blueprnt_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", blueprnt_state, irq0_line_hold)
+
+ MCFG_DEVICE_ADD("audiocpu", Z80, 10000000/2/2/2) // 1.25 MHz (2H)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(blueprnt_state, irq0_line_hold, 4*60) // IRQs connected to 32V
// NMIs are caused by the main CPU
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(blueprnt_state::screen_update_blueprnt));
- screen.set_palette(m_palette);
-
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_VIDEO_START_OVERRIDE(blueprnt_state, blueprnt)
+ MCFG_SCREEN_UPDATE_DRIVER(blueprnt_state, screen_update_blueprnt)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_blueprnt);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_blueprnt)
PALETTE(config, m_palette, FUNC(blueprnt_state::blueprnt_palette), 128*4+8);
/* sound hardware */
@@ -391,15 +390,15 @@ void blueprnt_state::blueprnt(machine_config &config)
ay2.port_a_read_callback().set_ioport("DILSW1");
ay2.port_b_read_callback().set_ioport("DILSW2");
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
-void blueprnt_state::grasspin(machine_config &config)
-{
+MACHINE_CONFIG_START(blueprnt_state::grasspin)
blueprnt(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &blueprnt_state::grasspin_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(grasspin_map)
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/blw700i.cpp b/src/mame/drivers/blw700i.cpp
index 8fec247e2b5..b0471c08b22 100644
--- a/src/mame/drivers/blw700i.cpp
+++ b/src/mame/drivers/blw700i.cpp
@@ -268,20 +268,19 @@ static INPUT_PORTS_START( lw700i )
INPUT_PORTS_END
-void lw700i_state::lw700i(machine_config &config)
-{
- H83003(config, m_maincpu, XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &lw700i_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &lw700i_state::io_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(lw700i_state::vbl_interrupt), "screen", 0, 1);
-
- SCREEN(config, m_screen, SCREEN_TYPE_LCD);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_screen_update(FUNC(lw700i_state::screen_update));
- m_screen->set_size(640, 400);
- m_screen->set_visarea(0, 480, 0, 128);
-}
+MACHINE_CONFIG_START(lw700i_state::lw700i)
+ MCFG_DEVICE_ADD("maincpu", H83003, XTAL(16'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", lw700i_state, vbl_interrupt, "screen", 0, 1)
+
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_UPDATE_DRIVER(lw700i_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 400)
+ MCFG_SCREEN_VISIBLE_AREA(0, 480, 0, 128)
+MACHINE_CONFIG_END
ROM_START(blw700i)
ROM_REGION(0x200000, "maincpu", 0) /* H8/3003 program ROM */
diff --git a/src/mame/drivers/bmjr.cpp b/src/mame/drivers/bmjr.cpp
index a1bee2628d3..e2f14a49778 100644
--- a/src/mame/drivers/bmjr.cpp
+++ b/src/mame/drivers/bmjr.cpp
@@ -337,25 +337,24 @@ void bmjr_state::machine_reset()
m_cass->change_state(CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR);
}
-void bmjr_state::bmjr(machine_config &config)
-{
+MACHINE_CONFIG_START(bmjr_state::bmjr)
/* basic machine hardware */
- M6800(config, m_maincpu, XTAL(4'000'000)/4); //unknown clock / divider
- m_maincpu->set_addrmap(AS_PROGRAM, &bmjr_state::bmjr_mem);
- m_maincpu->set_vblank_int("screen", FUNC(bmjr_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu",M6800, XTAL(4'000'000)/4) //unknown clock / divider
+ MCFG_DEVICE_PROGRAM_MAP(bmjr_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", bmjr_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(256, 192);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(bmjr_state::screen_update_bmjr));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(256, 192)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 192-1)
+ MCFG_SCREEN_UPDATE_DRIVER(bmjr_state, screen_update_bmjr)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::BRG_3BIT);
- GFXDECODE(config, "gfxdecode", "palette", gfx_bmjr);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_bmjr)
/* Audio */
SPEAKER(config, "mono").front_center();
@@ -363,8 +362,8 @@ void bmjr_state::bmjr(machine_config &config)
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
/* Devices */
- CASSETTE(config, m_cass);
-}
+ MCFG_CASSETTE_ADD( "cassette" )
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( bmjr )
diff --git a/src/mame/drivers/bml3.cpp b/src/mame/drivers/bml3.cpp
index 1764a848202..600ee5e2b3b 100644
--- a/src/mame/drivers/bml3.cpp
+++ b/src/mame/drivers/bml3.cpp
@@ -107,6 +107,9 @@ public:
DECLARE_WRITE8_MEMBER(bml3_firq_mask_w);
DECLARE_READ8_MEMBER(bml3_firq_status_r);
DECLARE_WRITE8_MEMBER(relay_w);
+ DECLARE_WRITE_LINE_MEMBER(bml3bus_nmi_w);
+ DECLARE_WRITE_LINE_MEMBER(bml3bus_irq_w);
+ DECLARE_WRITE_LINE_MEMBER(bml3bus_firq_w);
DECLARE_WRITE_LINE_MEMBER(bml3_acia_tx_w);
DECLARE_WRITE_LINE_MEMBER(bml3_acia_rts_w);
DECLARE_WRITE_LINE_MEMBER(bml3_acia_irq_w);
@@ -192,9 +195,9 @@ private:
READ8_MEMBER( bml3_state::bml3_6845_r )
{
if (offset)
- return m_crtc->register_r();
+ return m_crtc->register_r(space, 0);
else
- return m_crtc->status_r();
+ return m_crtc->status_r(space, 0);
}
WRITE8_MEMBER( bml3_state::bml3_6845_w )
@@ -202,12 +205,12 @@ WRITE8_MEMBER( bml3_state::bml3_6845_w )
if(offset == 0)
{
m_crtc_index = data;
- m_crtc->address_w(data);
+ m_crtc->address_w(space, 0, data);
}
else
{
m_crtc_vreg[m_crtc_index] = data;
- m_crtc->register_w(data);
+ m_crtc->register_w(space, 0, data);
}
}
@@ -302,14 +305,14 @@ READ8_MEMBER(bml3_state::bml3_ym2203_r)
{
u8 dev_offs = ((m_psg_latch & 3) != 3);
- return m_ym2203->read(dev_offs);
+ return m_ym2203->read(space, dev_offs);
}
WRITE8_MEMBER(bml3_state::bml3_ym2203_w)
{
u8 dev_offs = ((m_psg_latch & 3) != 3);
- m_ym2203->write(dev_offs, data);
+ m_ym2203->write(space, dev_offs, data);
}
READ8_MEMBER( bml3_state::bml3_vram_attr_r)
@@ -383,6 +386,21 @@ READ8_MEMBER( bml3_state::bml3_firq_status_r )
return res;
}
+WRITE_LINE_MEMBER(bml3_state::bml3bus_nmi_w)
+{
+ m_maincpu->set_input_line(INPUT_LINE_NMI, state);
+}
+
+WRITE_LINE_MEMBER(bml3_state::bml3bus_irq_w)
+{
+ m_maincpu->set_input_line(M6809_IRQ_LINE, state);
+}
+
+WRITE_LINE_MEMBER(bml3_state::bml3bus_firq_w)
+{
+ m_maincpu->set_input_line(M6809_FIRQ_LINE, state);
+}
+
void bml3_state::bml3_mem(address_map &map)
{
@@ -939,22 +957,21 @@ static void bml3_cards(device_slot_interface &device)
}
-void bml3_state::bml3_common(machine_config &config)
-{
+MACHINE_CONFIG_START(bml3_state::bml3_common)
/* basic machine hardware */
- MC6809(config, m_maincpu, CPU_EXT_CLOCK);
- m_maincpu->set_vblank_int("screen", FUNC(bml3_state::bml3_timer_firq));
-// m_maincpu->set_periodic_int(FUNC(bml3_state::bml3_firq), attotime::fromhz(45));
+ MCFG_DEVICE_ADD("maincpu",M6809, CPU_CLOCK)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", bml3_state, bml3_timer_firq)
+// MCFG_DEVICE_PERIODIC_INT_DRIVER(bml3_state, bml3_firq, 45)
// MCFG_MACHINE_RESET_OVERRIDE(bml3_state,bml3)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2400)); /* Service manual specifies "Raster return period" as 2.4 ms (p.64), although the total vertical non-displaying time seems to be 4 ms. */
- screen.set_size(640, 400);
- screen.set_visarea(0, 320-1, 0, 200-1);
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2400)) /* Service manual specifies "Raster return period" as 2.4 ms (p.64), although the total vertical non-displaying time seems to be 4 ms. */
+ MCFG_SCREEN_SIZE(640, 400)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
PALETTE(config, m_palette, palette_device::BRG_3BIT);
/* Devices */
@@ -967,9 +984,9 @@ void bml3_state::bml3_common(machine_config &config)
// fire once per scan of an individual key
// According to the service manual (p.65), the keyboard timer is driven by the horizontal video sync clock.
- TIMER(config, "keyboard_timer").configure_periodic(FUNC(bml3_state::keyboard_callback), attotime::from_hz(H_CLOCK/2));
- TIMER(config, "bml3_c").configure_periodic(FUNC(bml3_state::bml3_c), attotime::from_hz(4800));
- TIMER(config, "bml3_p").configure_periodic(FUNC(bml3_state::bml3_p), attotime::from_hz(40000));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", bml3_state, keyboard_callback, attotime::from_hz(H_CLOCK/2))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("bml3_c", bml3_state, bml3_c, attotime::from_hz(4800))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("bml3_p", bml3_state, bml3_p, attotime::from_hz(40000))
pia6821_device &pia(PIA6821(config, "pia", 0));
pia.writepa_handler().set(FUNC(bml3_state::bml3_piaA_w));
@@ -983,7 +1000,7 @@ void bml3_state::bml3_common(machine_config &config)
acia_clock.signal_handler().set(m_acia, FUNC(acia6850_device::write_txc));
acia_clock.signal_handler().append(m_acia, FUNC(acia6850_device::write_rxc));
- CASSETTE(config, m_cass);
+ MCFG_CASSETTE_ADD( "cassette" )
/* Audio */
SPEAKER(config, "mono").front_center();
@@ -991,28 +1008,29 @@ void bml3_state::bml3_common(machine_config &config)
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
/* slot devices */
- bml3bus_device &bus(BML3BUS(config, "bml3bus", 0));
- bus.set_space(m_maincpu, AS_PROGRAM);
- bus.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
- bus.irq_callback().set_inputline(m_maincpu, M6809_IRQ_LINE);
- bus.firq_callback().set_inputline(m_maincpu, M6809_FIRQ_LINE);
+ MCFG_DEVICE_ADD("bml3bus", BML3BUS, 0)
+ MCFG_BML3BUS_CPU("maincpu")
+ MCFG_BML3BUS_OUT_NMI_CB(WRITELINE(*this, bml3_state, bml3bus_nmi_w))
+ MCFG_BML3BUS_OUT_IRQ_CB(WRITELINE(*this, bml3_state, bml3bus_irq_w))
+ MCFG_BML3BUS_OUT_FIRQ_CB(WRITELINE(*this, bml3_state, bml3bus_firq_w))
/* Default to MP-1805 disk (3" or 5.25" SS/SD), as our MB-6892 ROM dump includes
the MP-1805 ROM.
User may want to switch this to MP-1802 (5.25" DS/DD).
Note it isn't feasible to use both, as they each place boot ROM at F800.
*/
- BML3BUS_SLOT(config, "sl1", "bml3bus", bml3_cards, "bml3mp1805");
- BML3BUS_SLOT(config, "sl2", "bml3bus", bml3_cards, nullptr);
- BML3BUS_SLOT(config, "sl3", "bml3bus", bml3_cards, nullptr);
- BML3BUS_SLOT(config, "sl4", "bml3bus", bml3_cards, nullptr);
- BML3BUS_SLOT(config, "sl5", "bml3bus", bml3_cards, nullptr);
- BML3BUS_SLOT(config, "sl6", "bml3bus", bml3_cards, "bml3kanji");
-}
+ MCFG_BML3BUS_SLOT_ADD("bml3bus", "sl1", bml3_cards, "bml3mp1805")
+ MCFG_BML3BUS_SLOT_ADD("bml3bus", "sl2", bml3_cards, nullptr)
+ MCFG_BML3BUS_SLOT_ADD("bml3bus", "sl3", bml3_cards, nullptr)
+ MCFG_BML3BUS_SLOT_ADD("bml3bus", "sl4", bml3_cards, nullptr)
+ MCFG_BML3BUS_SLOT_ADD("bml3bus", "sl5", bml3_cards, nullptr)
+ MCFG_BML3BUS_SLOT_ADD("bml3bus", "sl6", bml3_cards, "bml3kanji")
-void bml3_state::bml3(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(bml3_state::bml3)
bml3_common(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &bml3_state::bml3_mem);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(bml3_mem)
#if 0
// TODO: slot device for sound card
@@ -1024,23 +1042,23 @@ void bml3_state::bml3(machine_config &config)
m_ym2203->add_route(2, "mono", 0.50);
m_ym2203->add_route(3, "mono", 0.50);
#endif
-}
+MACHINE_CONFIG_END
-void bml3_state::bml3mk2(machine_config &config)
-{
+MACHINE_CONFIG_START(bml3_state::bml3mk2)
bml3_common(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &bml3_state::bml3mk2_mem);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(bml3mk2_mem)
// TODO: anything to add here?
-}
+MACHINE_CONFIG_END
-void bml3_state::bml3mk5(machine_config &config)
-{
+MACHINE_CONFIG_START(bml3_state::bml3mk5)
bml3_common(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &bml3_state::bml3mk5_mem);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(bml3mk5_mem)
// TODO: anything to add here?
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/bnstars.cpp b/src/mame/drivers/bnstars.cpp
index 62be3100cf4..00d1aaf266e 100644
--- a/src/mame/drivers/bnstars.cpp
+++ b/src/mame/drivers/bnstars.cpp
@@ -809,21 +809,21 @@ void bnstars_state::bnstars_sound_map(address_map &map)
}
-void bnstars_state::bnstars(machine_config &config)
-{
+MACHINE_CONFIG_START(bnstars_state::bnstars)
+
/* basic machine hardware */
- V70(config, m_maincpu, 20000000); // 20MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &bnstars_state::bnstars_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(ms32_state::irq_callback));
+ MCFG_DEVICE_ADD("maincpu", V70, 20000000) // 20MHz
+ MCFG_DEVICE_PROGRAM_MAP(bnstars_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(ms32_state,irq_callback)
- TIMER(config, "scantimer").configure_scanline(FUNC(bnstars_state::ms32_interrupt), "lscreen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", bnstars_state, ms32_interrupt, "lscreen", 0, 1)
- Z80(config, m_audiocpu, 4000000); // Unverified; it's possibly higher than 4MHz
- m_audiocpu->set_addrmap(AS_PROGRAM, &bnstars_state::bnstars_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) // Unverified; it's possibly higher than 4MHz
+ MCFG_DEVICE_PROGRAM_MAP(bnstars_sound_map)
- config.m_minimum_quantum = attotime::from_hz(60000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60000))
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_bnstars);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_bnstars)
auto &palette(PALETTE(config, "palette"));
palette.set_format(palette_device::xBRG_888, 0x8000);
@@ -835,21 +835,21 @@ void bnstars_state::bnstars(machine_config &config)
config.set_default_layout(layout_dualhsxs);
- screen_device &lscreen(SCREEN(config, "lscreen", SCREEN_TYPE_RASTER));
- lscreen.set_refresh_hz(60);
- lscreen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- lscreen.set_size(40*8, 32*8);
- lscreen.set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
- lscreen.set_screen_update(FUNC(bnstars_state::screen_update_bnstars_left));
- lscreen.set_palette("palette");
+ MCFG_SCREEN_ADD("lscreen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(bnstars_state, screen_update_bnstars_left)
+ MCFG_SCREEN_PALETTE("palette")
- screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER));
- rscreen.set_refresh_hz(60);
- rscreen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- rscreen.set_size(40*8, 32*8);
- rscreen.set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
- rscreen.set_screen_update(FUNC(bnstars_state::screen_update_bnstars_right));
- rscreen.set_palette("palette2");
+ MCFG_SCREEN_ADD("rscreen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(bnstars_state, screen_update_bnstars_right)
+ MCFG_SCREEN_PALETTE("palette2")
/* sound hardware */
@@ -859,18 +859,19 @@ void bnstars_state::bnstars(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- ymf271_device &ymf1(YMF271(config, "ymf1", 16934400));
- ymf1.add_route(0, "lspeaker", 1.0);
- ymf1.add_route(1, "rspeaker", 1.0);
-// ymf1.add_route(2, "lspeaker", 1.0); Output 2/3 not used?
-// ymf1.add_route(3, "rspeaker", 1.0);
-
- ymf271_device &ymf2(YMF271(config, "ymf2", 16934400));
- ymf2.add_route(0, "lspeaker", 1.0);
- ymf2.add_route(1, "rspeaker", 1.0);
-// ymf2.add_route(2, "lspeaker", 1.0); Output 2/3 not used?
-// ymf2.add_route(3, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymf1", YMF271, 16934400)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+// MCFG_SOUND_ROUTE(2, "lspeaker", 1.0) Output 2/3 not used?
+// MCFG_SOUND_ROUTE(3, "rspeaker", 1.0)
+
+ MCFG_DEVICE_ADD("ymf2", YMF271, 16934400)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+// MCFG_SOUND_ROUTE(2, "lspeaker", 1.0) Output 2/3 not used?
+// MCFG_SOUND_ROUTE(3, "rspeaker", 1.0)
+
+MACHINE_CONFIG_END
ROM_START( bnstars1 )
diff --git a/src/mame/drivers/bntyhunt.cpp b/src/mame/drivers/bntyhunt.cpp
index d77a0ee1e28..780947f4050 100644
--- a/src/mame/drivers/bntyhunt.cpp
+++ b/src/mame/drivers/bntyhunt.cpp
@@ -53,23 +53,22 @@ static INPUT_PORTS_START( bntyhunt )
INPUT_PORTS_END
-void bntyhunt_state::bntyhunt(machine_config &config)
-{
+MACHINE_CONFIG_START(bntyhunt_state::bntyhunt)
/* basic machine hardware */
- PENTIUM(config, m_maincpu, 200000000); /* Probably a Pentium or higher .. ?? Mhz*/
- m_maincpu->set_addrmap(AS_PROGRAM, &bntyhunt_state::bntyhunt_map);
+ MCFG_DEVICE_ADD("maincpu", PENTIUM, 200000000) /* Probably a Pentium or higher .. ?? Mhz*/
+ MCFG_DEVICE_PROGRAM_MAP(bntyhunt_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(bntyhunt_state::screen_update));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea_full();
- screen.set_palette("palette");
-
- PALETTE(config, "palette").set_entries(0x100);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(bntyhunt_state, screen_update)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 0x100)
+MACHINE_CONFIG_END
ROM_START(bntyhunt)
diff --git a/src/mame/drivers/bogeyman.cpp b/src/mame/drivers/bogeyman.cpp
index 2b93e910767..6768a55426a 100644
--- a/src/mame/drivers/bogeyman.cpp
+++ b/src/mame/drivers/bogeyman.cpp
@@ -37,11 +37,11 @@ WRITE8_MEMBER(bogeyman_state::ay8910_control_w)
// bit 5 goes to 8910 #0 BDIR pin
if ((m_last_write & 0x20) == 0x20 && (data & 0x20) == 0x00)
- m_ay1->data_address_w(m_last_write >> 4, m_psg_latch);
+ m_ay1->data_address_w(space, m_last_write >> 4, m_psg_latch);
// bit 7 goes to 8910 #1 BDIR pin
if ((m_last_write & 0x80) == 0x80 && (data & 0x80) == 0x00)
- m_ay2->data_address_w(m_last_write >> 6, m_psg_latch);
+ m_ay2->data_address_w(space, m_last_write >> 6, m_psg_latch);
m_last_write = data;
}
@@ -229,24 +229,24 @@ WRITE8_MEMBER(bogeyman_state::colbank_w)
}
}
-void bogeyman_state::bogeyman(machine_config &config)
-{
+MACHINE_CONFIG_START(bogeyman_state::bogeyman)
+
// basic machine hardware
- M6502(config, m_maincpu, 1500000); /* Verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &bogeyman_state::bogeyman_map);
- m_maincpu->set_periodic_int(FUNC(bogeyman_state::irq0_line_hold), attotime::from_hz(16*60)); // Controls sound
+ MCFG_DEVICE_ADD("maincpu", M6502, 1500000) /* Verified */
+ MCFG_DEVICE_PROGRAM_MAP(bogeyman_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(bogeyman_state, irq0_line_hold, 16*60) // Controls sound
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
-// screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
-// screen.set_size(32*8, 32*8);
-// screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+// MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+// MCFG_SCREEN_SIZE(32*8, 32*8)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
// DECO video CRTC, unverified
- screen.set_raw(XTAL(12'000'000)/2,384,0,256,272,8,248);
- screen.set_screen_update(FUNC(bogeyman_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_RAW_PARAMS(XTAL(12'000'000)/2,384,0,256,272,8,248)
+ MCFG_SCREEN_UPDATE_DRIVER(bogeyman_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_bogeyman);
PALETTE(config, m_palette, FUNC(bogeyman_state::bogeyman_palette)).set_format(palette_device::BGR_233_inverted, 16 + 256);
@@ -260,7 +260,7 @@ void bogeyman_state::bogeyman(machine_config &config)
m_ay1->add_route(ALL_OUTPUTS, "mono", 0.30);
YM2149(config, m_ay2, 1500000).add_route(ALL_OUTPUTS, "mono", 0.30); /* Verified */
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/bombjack.cpp b/src/mame/drivers/bombjack.cpp
index f9874712a8b..b7a57d5e765 100644
--- a/src/mame/drivers/bombjack.cpp
+++ b/src/mame/drivers/bombjack.cpp
@@ -349,15 +349,15 @@ WRITE_LINE_MEMBER(bombjack_state::vblank_irq)
m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
-void bombjack_state::bombjack(machine_config &config)
-{
+MACHINE_CONFIG_START(bombjack_state::bombjack)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000)); /* Confirmed from PCB */
- m_maincpu->set_addrmap(AS_PROGRAM, &bombjack_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(4'000'000)) /* Confirmed from PCB */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(12'000'000)/4)); /* Confirmed from PCB */
- audiocpu.set_addrmap(AS_PROGRAM, &bombjack_state::audio_map);
- audiocpu.set_addrmap(AS_IO, &bombjack_state::audio_io_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(12'000'000)/4) /* Confirmed from PCB */
+ MCFG_DEVICE_PROGRAM_MAP(audio_map)
+ MCFG_DEVICE_IO_MAP(audio_io_map)
GENERIC_LATCH_8(config, m_soundlatch);
@@ -384,7 +384,7 @@ void bombjack_state::bombjack(machine_config &config)
AY8910(config, "ay2", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.13);
AY8910(config, "ay3", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.13);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/boogwing.cpp b/src/mame/drivers/boogwing.cpp
index 637dc465457..0241777f905 100644
--- a/src/mame/drivers/boogwing.cpp
+++ b/src/mame/drivers/boogwing.cpp
@@ -336,13 +336,13 @@ DECO16IC_BANK_CB_MEMBER(boogwing_state::bank_callback2)
return offset;
}
-void boogwing_state::boogwing(machine_config &config)
-{
+MACHINE_CONFIG_START(boogwing_state::boogwing)
+
/* basic machine hardware */
- M68000(config, m_maincpu, MAIN_XTAL/2); /* DE102 */
- m_maincpu->set_addrmap(AS_PROGRAM, &boogwing_state::boogwing_map);
- m_maincpu->set_addrmap(AS_OPCODES, &boogwing_state::decrypted_opcodes_map);
- m_maincpu->set_vblank_int("screen", FUNC(boogwing_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, MAIN_XTAL/2) /* DE102 */
+ MCFG_DEVICE_PROGRAM_MAP(boogwing_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", boogwing_state, irq6_line_hold)
H6280(config, m_audiocpu, SOUND_XTAL/4);
m_audiocpu->set_addrmap(AS_PROGRAM, &boogwing_state::audio_map);
@@ -350,14 +350,14 @@ void boogwing_state::boogwing(machine_config &config)
m_audiocpu->add_route(ALL_OUTPUTS, "rspeaker", 0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(MAIN_XTAL / 4, 442, 0, 320, 274, 8, 248); // same as robocop2(cninja.cpp)? verify this from real pcb.
- screen.set_screen_update(FUNC(boogwing_state::screen_update_boogwing));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MAIN_XTAL / 4, 442, 0, 320, 274, 8, 248) // same as robocop2(cninja.cpp)? verify this from real pcb.
+ MCFG_SCREEN_UPDATE_DRIVER(boogwing_state, screen_update_boogwing)
- GFXDECODE(config, "gfxdecode", m_deco_ace, gfx_boogwing);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_deco_ace, gfx_boogwing)
- BUFFERED_SPRITERAM16(config, m_spriteram[0]);
- BUFFERED_SPRITERAM16(config, m_spriteram[1]);
+ MCFG_DEVICE_ADD("spriteram1", BUFFERED_SPRITERAM16)
+ MCFG_DEVICE_ADD("spriteram2", BUFFERED_SPRITERAM16)
DECO_ACE(config, m_deco_ace, 0);
@@ -419,14 +419,14 @@ void boogwing_state::boogwing(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.80);
ymsnd.add_route(1, "rspeaker", 0.80);
- OKIM6295(config, m_oki[0], SOUND_XTAL/32, okim6295_device::PIN7_HIGH);
- m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.40);
- m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.40);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, SOUND_XTAL/32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.40)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.40)
- OKIM6295(config, m_oki[1], SOUND_XTAL/16, okim6295_device::PIN7_HIGH);
- m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.30);
- m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.30);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, SOUND_XTAL/16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30)
+MACHINE_CONFIG_END
/**********************************************************************************/
diff --git a/src/mame/drivers/bowltry.cpp b/src/mame/drivers/bowltry.cpp
index a9d16c6c9d1..d22bf158a38 100644
--- a/src/mame/drivers/bowltry.cpp
+++ b/src/mame/drivers/bowltry.cpp
@@ -99,24 +99,24 @@ uint32_t bowltry_state::screen_update_bowltry(screen_device &screen, bitmap_rgb3
-void bowltry_state::bowltry(machine_config &config)
-{
- H83008(config, m_maincpu, 16000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &bowltry_state::bowltry_map);
-// m_maincpu->set_vblank_int("screen", FUNC(bowltry_state::irq0_line_hold)); // uses vector $64, IMIAB according to the manual (timer/compare B, internal to the CPU)
+MACHINE_CONFIG_START(bowltry_state::bowltry)
+ MCFG_DEVICE_ADD("maincpu", H83008, 16000000 )
+ MCFG_DEVICE_PROGRAM_MAP( bowltry_map )
+// MCFG_DEVICE_VBLANK_INT_DRIVER("screen", bowltry_state, irq0_line_hold) // uses vector $64, IMIAB according to the manual (timer/compare B, internal to the CPU)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(bowltry_state::screen_update_bowltry));
- //screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(bowltry_state, screen_update_bowltry)
+ //MCFG_SCREEN_PALETTE("palette")
- //PALETTE(config, "palette").set_entries(65536);
+ //MCFG_PALETTE_ADD("palette", 65536)
/* tt5665 sound */
-}
+
+MACHINE_CONFIG_END
ROM_START( bowltry )
ROM_REGION( 0x080000, "maincpu", 0 )
diff --git a/src/mame/drivers/boxer.cpp b/src/mame/drivers/boxer.cpp
index 0eccc410514..cae7b4900d1 100644
--- a/src/mame/drivers/boxer.cpp
+++ b/src/mame/drivers/boxer.cpp
@@ -491,27 +491,27 @@ void boxer_state::machine_reset()
}
-void boxer_state::boxer(machine_config &config)
-{
+MACHINE_CONFIG_START(boxer_state::boxer)
+
/* basic machine hardware */
- M6502(config, m_maincpu, MASTER_CLOCK / 16);
- m_maincpu->set_addrmap(AS_PROGRAM, &boxer_state::boxer_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, MASTER_CLOCK / 16)
+ MCFG_DEVICE_PROGRAM_MAP(boxer_map)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(256, 262);
- m_screen->set_visarea(8, 247, 0, 239);
- m_screen->set_screen_update(FUNC(boxer_state::screen_update));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_boxer);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(256, 262)
+ MCFG_SCREEN_VISIBLE_AREA(8, 247, 0, 239)
+ MCFG_SCREEN_UPDATE_DRIVER(boxer_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_boxer)
PALETTE(config, m_palette, FUNC(boxer_state::boxer_palette), 4);
/* sound hardware */
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/br8641.cpp b/src/mame/drivers/br8641.cpp
index b58495a71d5..95c4d452321 100644
--- a/src/mame/drivers/br8641.cpp
+++ b/src/mame/drivers/br8641.cpp
@@ -158,8 +158,7 @@ static const z80_daisy_config daisy_chain_intf[] =
-void brandt8641_state::brandt8641(machine_config &config)
-{
+MACHINE_CONFIG_START(brandt8641_state::brandt8641)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(4'000'000)); // U4 ,4MHz crystal on board
m_maincpu->set_addrmap(AS_PROGRAM, &brandt8641_state::brandt8641_mem);
@@ -168,7 +167,8 @@ void brandt8641_state::brandt8641(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beep, 2000).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("beeper", BEEP, 2000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
// Z80APIO U9
// Z80APIO U14
@@ -186,7 +186,7 @@ void brandt8641_state::brandt8641(machine_config &config)
m_pio3->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
Z80CTC(config, "ctc", XTAL(4'000'000)); // Z80CTC U8
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( br8641 )
diff --git a/src/mame/drivers/brkthru.cpp b/src/mame/drivers/brkthru.cpp
index 7293fe25c9b..5d91c6bfaef 100644
--- a/src/mame/drivers/brkthru.cpp
+++ b/src/mame/drivers/brkthru.cpp
@@ -133,12 +133,6 @@ Notes:
Connectors:
2x flat cable to upper board
-
-brkthru, brkthruj and brkthrut have a Self Test Mode not mentioned anywhere
-in the manual. It is accessed by holding down both player 1 and player 2 start
-buttons while powering up the game. It can be accessed in MAME by holding the
-buttons down after the game has started then pressing F3 to reset the game.
-
***************************************************************************/
#include "emu.h"
@@ -466,10 +460,10 @@ WRITE_LINE_MEMBER(brkthru_state::vblank_irq)
void brkthru_state::brkthru(machine_config &config)
{
/* basic machine hardware */
- MC6809E(config, m_maincpu, MASTER_CLOCK/8); /* 1.5 MHz ? */
+ MC6809E(config, m_maincpu, MASTER_CLOCK/8); /* 1.5 MHz ? */
m_maincpu->set_addrmap(AS_PROGRAM, &brkthru_state::brkthru_map);
- MC6809(config, m_audiocpu, MASTER_CLOCK/2); /* 1.5 MHz ? */
+ MC6809(config, m_audiocpu, MASTER_CLOCK/2); /* 1.5 MHz ? */
m_audiocpu->set_addrmap(AS_PROGRAM, &brkthru_state::sound_map);
/* video hardware */
@@ -503,10 +497,10 @@ void brkthru_state::brkthru(machine_config &config)
void brkthru_state::darwin(machine_config &config)
{
/* basic machine hardware */
- MC6809E(config, m_maincpu, MASTER_CLOCK/8); /* 1.5 MHz ? */
+ MC6809E(config, m_maincpu, MASTER_CLOCK/8); /* 1.5 MHz ? */
m_maincpu->set_addrmap(AS_PROGRAM, &brkthru_state::darwin_map);
- MC6809(config, m_audiocpu, MASTER_CLOCK/2); /* 1.5 MHz ? */
+ MC6809(config, m_audiocpu, MASTER_CLOCK/2); /* 1.5 MHz ? */
m_audiocpu->set_addrmap(AS_PROGRAM, &brkthru_state::sound_map);
/* video hardware */
diff --git a/src/mame/drivers/bsktball.cpp b/src/mame/drivers/bsktball.cpp
index d1b786f94ed..14787c96615 100644
--- a/src/mame/drivers/bsktball.cpp
+++ b/src/mame/drivers/bsktball.cpp
@@ -238,12 +238,12 @@ void bsktball_state::machine_reset()
}
-void bsktball_state::bsktball(machine_config &config)
-{
+MACHINE_CONFIG_START(bsktball_state::bsktball)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 750000);
- m_maincpu->set_addrmap(AS_PROGRAM, &bsktball_state::main_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(bsktball_state::bsktball_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M6502,750000)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", bsktball_state, bsktball_scanline, "screen", 0, 1)
f9334_device &outlatch(F9334(config, "outlatch")); // M6
outlatch.q_out_cb<1>().set_nop(); // Coin Counter
@@ -255,22 +255,22 @@ void bsktball_state::bsktball(machine_config &config)
outlatch.q_out_cb<7>().set(FUNC(bsktball_state::nmion_w)); // NMI On
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 28*8);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(bsktball_state::screen_update_bsktball));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_bsktball);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 28*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(bsktball_state, screen_update_bsktball)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_bsktball)
PALETTE(config, m_palette, FUNC(bsktball_state::bsktball_palette), 2*4 + 4*4*4*4, 4);
/* sound hardware */
SPEAKER(config, "mono").front_center();
DISCRETE(config, m_discrete, bsktball_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/btime.cpp b/src/mame/drivers/btime.cpp
index 8a7301793ae..e0b1873f6b6 100644
--- a/src/mame/drivers/btime.cpp
+++ b/src/mame/drivers/btime.cpp
@@ -1277,28 +1277,30 @@ MACHINE_RESET_MEMBER(btime_state,mmonkey)
m_protection_ret = 0;
}
-void btime_state::btime(machine_config &config)
-{
+MACHINE_CONFIG_START(btime_state::btime)
+
/* basic machine hardware */
- DECO_CPU7(config, m_maincpu, HCLK2); /* selectable between H2/H4 via jumper */
- m_maincpu->set_addrmap(AS_PROGRAM, &btime_state::btime_map);
+ MCFG_DEVICE_ADD("maincpu", DECO_CPU7, HCLK2) /* seletable between H2/H4 via jumper */
+ MCFG_DEVICE_PROGRAM_MAP(btime_map)
- M6502(config, m_audiocpu, HCLK1/3/2);
- m_audiocpu->set_addrmap(AS_PROGRAM, &btime_state::audio_map);
- TIMER(config, "8vck").configure_scanline(FUNC(btime_state::audio_nmi_gen), "screen", 0, 8);
+ MCFG_DEVICE_ADD("audiocpu", M6502, HCLK1/3/2)
+ MCFG_DEVICE_PROGRAM_MAP(audio_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("8vck", btime_state, audio_nmi_gen, "screen", 0, 8)
- INPUT_MERGER_ALL_HIGH(config, "audionmi").output_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI);
+ MCFG_INPUT_MERGER_ALL_HIGH("audionmi")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(HCLK, 384, 8, 248, 272, 8, 248);
- m_screen->set_screen_update(FUNC(btime_state::screen_update_btime));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(HCLK, 384, 8, 248, 272, 8, 248)
+ MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_btime)
+ MCFG_SCREEN_PALETTE(m_palette)
MCFG_MACHINE_START_OVERRIDE(btime_state,btime)
MCFG_MACHINE_RESET_OVERRIDE(btime_state,btime)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_btime);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_btime)
+
PALETTE(config, m_palette, FUNC(btime_state::btime_palette)).set_format(palette_device::BGR_233_inverted, 16);
/* sound hardware */
@@ -1322,108 +1324,114 @@ void btime_state::btime(machine_config &config)
ay2.add_route(1, "discrete", 1.0, 4);
ay2.add_route(2, "discrete", 1.0, 5);
- DISCRETE(config, "discrete", btime_sound_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, btime_sound_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void btime_state::cookrace(machine_config &config)
-{
+MACHINE_CONFIG_START(btime_state::cookrace)
btime(config);
/* basic machine hardware */
- DECO_C10707(config.replace(), m_maincpu, HCLK2);
- m_maincpu->set_addrmap(AS_PROGRAM, &btime_state::cookrace_map);
+ MCFG_DEVICE_REPLACE("maincpu", DECO_C10707, HCLK2)
+ MCFG_DEVICE_PROGRAM_MAP(cookrace_map)
- m_audiocpu->set_addrmap(AS_PROGRAM, &btime_state::audio_map);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(audio_map)
/* video hardware */
- m_gfxdecode->set_info(gfx_cookrace);
- m_screen->set_screen_update(FUNC(btime_state::screen_update_cookrace));
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_cookrace)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_cookrace)
+MACHINE_CONFIG_END
-void btime_state::lnc(machine_config &config)
-{
+
+MACHINE_CONFIG_START(btime_state::lnc)
btime(config);
/* basic machine hardware */
- DECO_C10707(config.replace(), m_maincpu, HCLK2);
- m_maincpu->set_addrmap(AS_PROGRAM, &btime_state::lnc_map);
+ MCFG_DEVICE_REPLACE("maincpu", DECO_C10707, HCLK2)
+ MCFG_DEVICE_PROGRAM_MAP(lnc_map)
MCFG_MACHINE_RESET_OVERRIDE(btime_state,lnc)
/* video hardware */
- m_gfxdecode->set_info(gfx_lnc);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_lnc)
m_palette->set_entries(8);
m_palette->set_init(FUNC(btime_state::lnc_palette));
- m_screen->set_screen_update(FUNC(btime_state::screen_update_lnc));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_lnc)
+MACHINE_CONFIG_END
-void btime_state::wtennis(machine_config &config)
-{
+MACHINE_CONFIG_START(btime_state::wtennis)
lnc(config);
+ /* basic machine hardware */
+
/* video hardware */
- m_screen->set_screen_update(FUNC(btime_state::screen_update_eggs));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_eggs)
+MACHINE_CONFIG_END
-void btime_state::mmonkey(machine_config &config)
-{
+MACHINE_CONFIG_START(btime_state::mmonkey)
wtennis(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &btime_state::mmonkey_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mmonkey_map)
MCFG_MACHINE_START_OVERRIDE(btime_state,mmonkey)
MCFG_MACHINE_RESET_OVERRIDE(btime_state,mmonkey)
-}
+MACHINE_CONFIG_END
-void btime_state::bnj(machine_config &config)
-{
+MACHINE_CONFIG_START(btime_state::bnj)
btime(config);
/* basic machine hardware */
- DECO_C10707(config.replace(), m_maincpu, HCLK4);
- m_maincpu->set_addrmap(AS_PROGRAM, &btime_state::bnj_map);
+ MCFG_DEVICE_REPLACE("maincpu", DECO_C10707, HCLK4)
+ MCFG_DEVICE_CLOCK(HCLK4)
+ MCFG_DEVICE_PROGRAM_MAP(bnj_map)
/* video hardware */
- m_gfxdecode->set_info(gfx_bnj);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_bnj)
MCFG_VIDEO_START_OVERRIDE(btime_state,bnj)
- m_screen->set_screen_update(FUNC(btime_state::screen_update_bnj));
- m_screen->set_visarea(0*8, 32*8-1, 1*8, 31*8-1); // 256 * 240, confirmed
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_bnj)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) // 256 * 240, confirmed
+MACHINE_CONFIG_END
-void btime_state::sdtennis(machine_config &config)
-{
+MACHINE_CONFIG_START(btime_state::sdtennis)
bnj(config);
/* basic machine hardware */
- DECO_C10707(config.replace(), m_audiocpu, HCLK1/3/2);
- m_audiocpu->set_addrmap(AS_PROGRAM, &btime_state::audio_map);
-}
+ MCFG_DEVICE_REPLACE("audiocpu", DECO_C10707, HCLK1/3/2)
+ MCFG_DEVICE_PROGRAM_MAP(audio_map)
+MACHINE_CONFIG_END
-void btime_state::zoar(machine_config &config)
-{
+MACHINE_CONFIG_START(btime_state::zoar)
btime(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &btime_state::zoar_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(zoar_map)
/* video hardware */
- m_gfxdecode->set_info(gfx_zoar);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_zoar)
m_palette->set_entries(64);
- m_screen->set_screen_update(FUNC(btime_state::screen_update_zoar));
- m_screen->set_visarea(0*8, 32*8-1, 1*8, 31*8-1); // 256 * 240, confirmed
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_zoar)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) // 256 * 240, confirmed
/* sound hardware */
ay8910_device &ay1(AY8910(config.replace(), "ay1", HCLK1));
@@ -1434,41 +1442,44 @@ void btime_state::zoar(machine_config &config)
ay8910_device &ay2(AY8910(config.replace(), "ay2", HCLK1));
ay2.add_route(ALL_OUTPUTS, "mono", 0.23);
-}
+MACHINE_CONFIG_END
-void btime_state::disco(machine_config &config)
-{
+MACHINE_CONFIG_START(btime_state::disco)
btime(config);
/* basic machine hardware */
- m_maincpu->set_clock(HCLK4);
- m_maincpu->set_addrmap(AS_PROGRAM, &btime_state::disco_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(HCLK4)
+ MCFG_DEVICE_PROGRAM_MAP(disco_map)
- m_audiocpu->set_addrmap(AS_PROGRAM, &btime_state::disco_audio_map);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(disco_audio_map)
m_soundlatch->set_separate_acknowledge(true);
/* video hardware */
- m_gfxdecode->set_info(gfx_disco);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_disco)
+
m_palette->set_entries(32);
MCFG_VIDEO_START_OVERRIDE(btime_state,disco)
- m_screen->set_screen_update(FUNC(btime_state::screen_update_disco));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_disco)
+MACHINE_CONFIG_END
-void btime_state::tisland(machine_config &config)
-{
+MACHINE_CONFIG_START(btime_state::tisland)
btime(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &btime_state::tisland_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tisland_map)
/* video hardware */
- m_gfxdecode->set_info(gfx_zoar);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_zoar)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/btoads.cpp b/src/mame/drivers/btoads.cpp
index e58548400f1..f9b9ad9b1cf 100644
--- a/src/mame/drivers/btoads.cpp
+++ b/src/mame/drivers/btoads.cpp
@@ -191,6 +191,7 @@ void btoads_state::main_map(address_map &map)
map(0xa8800000, 0xa8ffffff).nopw();
map(0xb0000000, 0xb03fffff).rw(FUNC(btoads_state::vram_bg0_r), FUNC(btoads_state::vram_bg0_w)).share("vram_bg0");
map(0xb4000000, 0xb43fffff).rw(FUNC(btoads_state::vram_bg1_r), FUNC(btoads_state::vram_bg1_w)).share("vram_bg1");
+ map(0xc0000000, 0xc00003ff).rw(m_maincpu, FUNC(tms34020_device::io_register_r), FUNC(tms34020_device::io_register_w));
map(0xfc000000, 0xffffffff).rom().region("user1", 0);
}
@@ -302,8 +303,8 @@ INPUT_PORTS_END
*
*************************************/
-void btoads_state::btoads(machine_config &config)
-{
+MACHINE_CONFIG_START(btoads_state::btoads)
+
TMS34020(config, m_maincpu, CPU_CLOCK/2);
m_maincpu->set_addrmap(AS_PROGRAM, &btoads_state::main_map);
m_maincpu->set_halt_on_reset(false);
@@ -313,28 +314,28 @@ void btoads_state::btoads(machine_config &config)
m_maincpu->set_shiftreg_in_callback(FUNC(btoads_state::to_shiftreg));
m_maincpu->set_shiftreg_out_callback(FUNC(btoads_state::from_shiftreg));
- Z80(config, m_audiocpu, SOUND_CLOCK/4);
- m_audiocpu->set_addrmap(AS_PROGRAM, &btoads_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &btoads_state::sound_io_map);
- m_audiocpu->set_periodic_int(FUNC(btoads_state::irq0_line_assert), attotime::from_ticks(32768, SOUND_CLOCK/4));
+ MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(btoads_state, irq0_line_assert, 183)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
/* video hardware */
- TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT);
+ MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(VIDEO_CLOCK/2, 640, 0, 512, 257, 0, 224);
- m_screen->set_screen_update("maincpu", FUNC(tms34020_device::tms340x0_rgb32));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 640, 0, 512, 257, 0, 224)
+ MCFG_SCREEN_UPDATE_DEVICE("maincpu", tms34020_device, tms340x0_rgb32)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- BSMT2000(config, m_bsmt, SOUND_CLOCK);
- m_bsmt->add_route(0, "lspeaker", 1.0);
- m_bsmt->add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("bsmt", BSMT2000, SOUND_CLOCK)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/buggychl.cpp b/src/mame/drivers/buggychl.cpp
index 1b3e25cc09a..475fe490f3d 100644
--- a/src/mame/drivers/buggychl.cpp
+++ b/src/mame/drivers/buggychl.cpp
@@ -520,7 +520,7 @@ void buggychl_state::buggychl(machine_config &config)
Z80(config, m_audiocpu, 8_MHz_XTAL/2); /* 4 MHz according to schematics */
m_audiocpu->set_addrmap(AS_PROGRAM, &buggychl_state::sound_map);
m_audiocpu->set_periodic_int(FUNC(buggychl_state::irq0_line_hold), attotime::from_hz(8_MHz_XTAL/2/2/256/64)); // timer irq
- //TIMER(config, "soundirq").configure_periodic(m_audiocpu, FUNC(buggychl_state::irq0_line_hold), 8_MHz_XTAL/2/2/256/64);
+ //MCFG_TIMER_DEVICE_ADD_PERIODIC("soundirq", "audiocpu", irq0_line_hold, 8_MHz_XTAL/2/2/256/64)
// The schematics (which are at least partly for the wrong sound board) show a configurable timer with rates of
// 61.035Hz (8_MHz_XTAL/2/2/256/128)
// or 122.0Hz (8_MHz_XTAL/2/2/256/64)
diff --git a/src/mame/drivers/bullet.cpp b/src/mame/drivers/bullet.cpp
index c14f216c834..9c487187e11 100644
--- a/src/mame/drivers/bullet.cpp
+++ b/src/mame/drivers/bullet.cpp
@@ -1103,11 +1103,10 @@ void bulletf_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( bullet )
+// MACHINE_CONFIG( bullet )
//-------------------------------------------------
-void bullet_state::bullet(machine_config &config)
-{
+MACHINE_CONFIG_START(bullet_state::bullet)
// basic machine hardware
Z80(config, m_maincpu, 16_MHz_XTAL / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &bullet_state::bullet_mem);
@@ -1121,7 +1120,7 @@ void bullet_state::bullet(machine_config &config)
m_ctc->zc_callback<1>().set(m_dart, FUNC(z80dart_device::rxtxcb_w));
m_ctc->zc_callback<2>().set(m_ctc, FUNC(z80ctc_device::trg3));
- TIMER(config, "ctc").configure_periodic(FUNC(bullet_state::ctc_tick), attotime::from_hz(4.9152_MHz_XTAL / 4));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", bullet_state, ctc_tick, attotime::from_hz(4.9152_MHz_XTAL /4))
Z80DART(config, m_dart, 16_MHz_XTAL / 4);
m_dart->out_txda_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_txd));
@@ -1150,23 +1149,22 @@ void bullet_state::bullet(machine_config &config)
MB8877(config, m_fdc, 16_MHz_XTAL / 16);
m_fdc->intrq_wr_callback().set(m_dart, FUNC(z80dart_device::dcda_w));
m_fdc->drq_wr_callback().set(FUNC(bullet_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, MB8877_TAG":0", bullet_525_floppies, "525qd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":1", bullet_525_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":2", bullet_525_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":3", bullet_525_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":4", bullet_8_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":5", bullet_8_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":6", bullet_8_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":7", bullet_8_floppies, nullptr, floppy_image_device::default_floppy_formats);
-
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(bullet_state::write_centronics_busy));
- m_centronics->perror_handler().set(FUNC(bullet_state::write_centronics_perror));
- m_centronics->select_handler().set(FUNC(bullet_state::write_centronics_select));
- m_centronics->fault_handler().set(FUNC(bullet_state::write_centronics_fault));
-
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":0", bullet_525_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":1", bullet_525_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":2", bullet_525_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":3", bullet_525_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":4", bullet_8_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":5", bullet_8_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":6", bullet_8_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":7", bullet_8_floppies, nullptr, floppy_image_device::default_floppy_formats)
+
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, bullet_state, write_centronics_busy))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, bullet_state, write_centronics_perror))
+ MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, bullet_state, write_centronics_select))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, bullet_state, write_centronics_fault))
+
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
rs232_port_device &rs232a(RS232_PORT(config, RS232_A_TAG, default_rs232_devices, "terminal"));
rs232a.rxd_handler().set(m_dart, FUNC(z80dart_device::rxa_w));
@@ -1176,19 +1174,18 @@ void bullet_state::bullet(machine_config &config)
rs232b.rxd_handler().set(m_dart, FUNC(z80dart_device::rxb_w));
// software lists
- SOFTWARE_LIST(config, "flop_list").set_original("wmbullet");
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "wmbullet")
// internal ram
RAM(config, RAM_TAG).set_default_size("128K");
-}
+MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( bulletf )
+// MACHINE_CONFIG( bulletf )
//-------------------------------------------------
-void bulletf_state::bulletf(machine_config &config)
-{
+MACHINE_CONFIG_START(bulletf_state::bulletf)
// basic machine hardware
Z80(config, m_maincpu, 16_MHz_XTAL / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &bulletf_state::bulletf_mem);
@@ -1202,7 +1199,7 @@ void bulletf_state::bulletf(machine_config &config)
m_ctc->zc_callback<1>().set(m_dart, FUNC(z80dart_device::rxtxcb_w));
m_ctc->zc_callback<2>().set(m_ctc, FUNC(z80ctc_device::trg3));
- TIMER(config, "ctc").configure_periodic(FUNC(bullet_state::ctc_tick), attotime::from_hz(4.9152_MHz_XTAL / 4));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", bullet_state, ctc_tick, attotime::from_hz(4.9152_MHz_XTAL / 4))
Z80DART(config, m_dart, 16_MHz_XTAL / 4);
m_dart->out_txda_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_txd));
@@ -1233,22 +1230,21 @@ void bulletf_state::bulletf(machine_config &config)
MB8877(config, m_fdc, 16_MHz_XTAL / 16);
m_fdc->intrq_wr_callback().set(m_dart, FUNC(z80dart_device::rib_w));
m_fdc->drq_wr_callback().set(FUNC(bullet_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, MB8877_TAG":0", bullet_525_floppies, "525qd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":1", bullet_525_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":2", bullet_525_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":3", bullet_525_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":4", bullet_8_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":5", bullet_8_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":6", bullet_8_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":7", bullet_8_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":8", bullet_35_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":9", bullet_35_floppies, nullptr, floppy_image_device::default_floppy_formats);
-
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(bullet_state::write_centronics_busy));
-
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":0", bullet_525_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":1", bullet_525_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":2", bullet_525_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":3", bullet_525_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":4", bullet_8_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":5", bullet_8_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":6", bullet_8_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":7", bullet_8_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":8", bullet_35_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":9", bullet_35_floppies, nullptr, floppy_image_device::default_floppy_formats)
+
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, bullet_state, write_centronics_busy))
+
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
rs232_port_device &rs232a(RS232_PORT(config, RS232_A_TAG, default_rs232_devices, "terminal"));
rs232a.rxd_handler().set(m_dart, FUNC(z80dart_device::rxa_w));
@@ -1257,26 +1253,26 @@ void bulletf_state::bulletf(machine_config &config)
rs232_port_device &rs232b(RS232_PORT(config, RS232_B_TAG, default_rs232_devices, nullptr));
rs232b.rxd_handler().set(m_dart, FUNC(z80dart_device::rxb_w));
- SCSI_PORT(config, m_scsibus, 0);
- m_scsibus->bsy_handler().set(m_scsi_ctrl_in, FUNC(input_buffer_device::write_bit3));
- m_scsibus->msg_handler().set(m_scsi_ctrl_in, FUNC(input_buffer_device::write_bit4));
- m_scsibus->cd_handler().set(m_scsi_ctrl_in, FUNC(input_buffer_device::write_bit5));
- m_scsibus->req_handler().set(FUNC(bulletf_state::req_w));
- m_scsibus->io_handler().set(m_scsi_ctrl_in, FUNC(input_buffer_device::write_bit7));
- m_scsibus->set_data_input_buffer(m_scsi_data_in);
- m_scsibus->set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
+ MCFG_DEVICE_ADD(SCSIBUS_TAG, SCSI_PORT, 0)
+ MCFG_SCSI_BSY_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit3))
+ MCFG_SCSI_MSG_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit4))
+ MCFG_SCSI_CD_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit5))
+ MCFG_SCSI_REQ_HANDLER(WRITELINE(*this, bulletf_state, req_w))
+ MCFG_SCSI_IO_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit7))
+ MCFG_SCSI_DATA_INPUT_BUFFER("scsi_data_in")
- OUTPUT_LATCH(config, m_scsi_data_out);
- m_scsibus->set_output_latch(*m_scsi_data_out);
- INPUT_BUFFER(config, m_scsi_data_in);
- INPUT_BUFFER(config, m_scsi_ctrl_in);
+ MCFG_SCSI_OUTPUT_LATCH_ADD("scsi_data_out", SCSIBUS_TAG)
+ MCFG_DEVICE_ADD("scsi_ctrl_in", INPUT_BUFFER, 0)
+ MCFG_DEVICE_ADD("scsi_data_in", INPUT_BUFFER, 0)
+
+ MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_0)
// software lists
- SOFTWARE_LIST(config, "flop_list").set_original("wmbullet");
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "wmbullet")
// internal ram
RAM(config, RAM_TAG).set_default_size("128K");
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/busicom.cpp b/src/mame/drivers/busicom.cpp
index c12e1a7f9a3..8ac487f27c4 100644
--- a/src/mame/drivers/busicom.cpp
+++ b/src/mame/drivers/busicom.cpp
@@ -224,8 +224,7 @@ void busicom_state::machine_reset()
//static const char layout_busicom [] = "busicom";
-void busicom_state::busicom(machine_config &config)
-{
+MACHINE_CONFIG_START(busicom_state::busicom)
/* basic machine hardware */
I4004(config, m_maincpu, 750000);
m_maincpu->set_rom_map(&busicom_state::busicom_rom);
@@ -235,18 +234,18 @@ void busicom_state::busicom(machine_config &config)
m_maincpu->set_ram_ports_map(&busicom_state::busicom_mp);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(40*17, 44*11);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(busicom_state::screen_update_busicom));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(40*17, 44*11)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40*17-1, 0, 44*11-1)
+ MCFG_SCREEN_UPDATE_DRIVER(busicom_state, screen_update_busicom)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(busicom_state::busicom_palette), 16);
- TIMER(config, "busicom_timer").configure_periodic(FUNC(busicom_state::timer_callback), attotime::from_msec(28*2));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("busicom_timer", busicom_state, timer_callback, attotime::from_msec(28*2))
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( busicom )
diff --git a/src/mame/drivers/buster.cpp b/src/mame/drivers/buster.cpp
index c207b414280..b2777b70680 100644
--- a/src/mame/drivers/buster.cpp
+++ b/src/mame/drivers/buster.cpp
@@ -322,35 +322,34 @@ static GFXDECODE_START( gfx_buster )
GFXDECODE_END
-void buster_state::buster(machine_config &config)
-{
+MACHINE_CONFIG_START(buster_state::buster)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(3'579'545)); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &buster_state::mainmap);
- m_maincpu->set_vblank_int("screen", FUNC(buster_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,XTAL(3'579'545)) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(mainmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", buster_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 16, 256-16-1);
- screen.set_screen_update(FUNC(buster_state::screen_update_buster));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(buster_state, screen_update_buster)
+ MCFG_SCREEN_PALETTE(m_palette)
mc6845_device &crtc(MC6845(config, "crtc", XTAL(3'579'545)/4)); //unknown clock / type
crtc.set_screen("screen");
crtc.set_show_border_area(false);
crtc.set_char_width(8);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_buster);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_buster)
PALETTE(config, m_palette, palette_device::RGB_3BIT);
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd", 1500000/2).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
ROM_START( buster )
diff --git a/src/mame/drivers/bw12.cpp b/src/mame/drivers/bw12.cpp
index ddee36e8bfe..cd9f2ba1423 100644
--- a/src/mame/drivers/bw12.cpp
+++ b/src/mame/drivers/bw12.cpp
@@ -549,22 +549,21 @@ GFXDECODE_END
/* Machine Driver */
-void bw12_state::common(machine_config &config)
-{
+MACHINE_CONFIG_START(bw12_state::common)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(16'000'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &bw12_state::bw12_mem);
- m_maincpu->set_addrmap(AS_IO, &bw12_state::bw12_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(16'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(bw12_mem)
+ MCFG_DEVICE_IO_MAP(bw12_io)
/* video hardware */
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER, rgb_t::amber()));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(MC6845_TAG, FUNC(mc6845_device::screen_update));
- screen.set_size(640, 200);
- screen.set_visarea(0, 640-1, 0, 200-1);
-
- GFXDECODE(config, "gfxdecode", m_palette, gfx_bw12);
+ MCFG_SCREEN_ADD_MONOCHROME(SCREEN_TAG, RASTER, rgb_t::amber())
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DEVICE(MC6845_TAG, mc6845_device, screen_update)
+ MCFG_SCREEN_SIZE(640, 200)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_bw12)
PALETTE(config, m_palette, palette_device::MONOCHROME);
MC6845(config, m_crtc, XTAL(16'000'000)/8);
@@ -575,13 +574,12 @@ void bw12_state::common(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.125); // ls273.ic5 + mc1408.ic4
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.125) // ls273.ic5 + mc1408.ic4
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
/* devices */
- TIMER(config, FLOPPY_TIMER_TAG).configure_generic(FUNC(bw12_state::floppy_motor_off_tick));
+ MCFG_TIMER_DRIVER_ADD(FLOPPY_TIMER_TAG, bw12_state, floppy_motor_off_tick)
UPD765A(config, m_fdc, 8'000'000, false, true);
PIA6821(config, m_pia, 0);
@@ -634,43 +632,40 @@ void bw12_state::common(machine_config &config)
rs232b.cts_handler().set(m_sio, FUNC(z80dart_device::ctsb_w));
/* printer */
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(m_pia, FUNC(pia6821_device::ca1_w));
- m_centronics->busy_handler().set(FUNC(bw12_state::write_centronics_busy));
- m_centronics->fault_handler().set(FUNC(bw12_state::write_centronics_fault));
- m_centronics->perror_handler().set(FUNC(bw12_state::write_centronics_perror));
-
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
-}
+ MCFG_DEVICE_ADD(CENTRONICS_TAG, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(PIA6821_TAG, pia6821_device, ca1_w))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, bw12_state, write_centronics_busy))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, bw12_state, write_centronics_fault))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, bw12_state, write_centronics_perror))
-void bw12_state::bw12(machine_config &config)
-{
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(bw12_state::bw12)
common(config);
/* floppy drives */
- FLOPPY_CONNECTOR(config, UPD765_TAG ":1", bw12_floppies, "525dd", bw12_state::bw12_floppy_formats);
- FLOPPY_CONNECTOR(config, UPD765_TAG ":2", bw12_floppies, "525dd", bw12_state::bw12_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", bw12_floppies, "525dd", bw12_state::bw12_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":2", bw12_floppies, "525dd", bw12_state::bw12_floppy_formats)
// software lists
- SOFTWARE_LIST(config, "flop_list").set_original("bw12");
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "bw12")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K");
-}
+MACHINE_CONFIG_END
-void bw12_state::bw14(machine_config &config)
-{
+MACHINE_CONFIG_START(bw12_state::bw14)
common(config);
/* floppy drives */
- FLOPPY_CONNECTOR(config, UPD765_TAG ":1", bw14_floppies, "525dd", bw12_state::bw14_floppy_formats);
- FLOPPY_CONNECTOR(config, UPD765_TAG ":2", bw14_floppies, "525dd", bw12_state::bw14_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", bw14_floppies, "525dd", bw12_state::bw14_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":2", bw14_floppies, "525dd", bw12_state::bw14_floppy_formats)
// software lists
- SOFTWARE_LIST(config, "flop_list").set_original("bw14");
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "bw14")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("128K");
- }
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/bw2.cpp b/src/mame/drivers/bw2.cpp
index 43a624e86c2..b65590f0f4e 100644
--- a/src/mame/drivers/bw2.cpp
+++ b/src/mame/drivers/bw2.cpp
@@ -108,7 +108,7 @@ READ8_MEMBER( bw2_state::read )
data = m_ram->pointer()[offset];
}
- return m_exp->cd_r(offset, data, ram2, ram3, ram4, ram5, ram6);
+ return m_exp->cd_r(space, offset, data, ram2, ram3, ram4, ram5, ram6);
}
@@ -159,7 +159,7 @@ WRITE8_MEMBER( bw2_state::write )
m_ram->pointer()[offset] = data;
}
- m_exp->cd_w(offset, data, ram2, ram3, ram4, ram5, ram6);
+ m_exp->cd_w(space, offset, data, ram2, ram3, ram4, ram5, ram6);
}
@@ -539,24 +539,22 @@ void bw2_state::machine_start()
//**************************************************************************
//-------------------------------------------------
-// machine_config( bw2 )
+// MACHINE_CONFIG( bw2 )
//-------------------------------------------------
-void bw2_state::bw2(machine_config &config)
-{
+MACHINE_CONFIG_START(bw2_state::bw2)
// basic machine hardware
- Z80(config, m_maincpu, 16_MHz_XTAL / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &bw2_state::bw2_mem);
- m_maincpu->set_addrmap(AS_IO, &bw2_state::bw2_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, 16_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(bw2_mem)
+ MCFG_DEVICE_IO_MAP(bw2_io)
// video hardware
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_LCD));
- screen.set_refresh_hz(60);
- screen.set_screen_update(MSM6255_TAG, FUNC(msm6255_device::screen_update));
- screen.set_size(640, 200);
- screen.set_visarea(0, 640-1, 0, 200-1);
- screen.set_palette("palette");
-
+ MCFG_SCREEN_ADD(SCREEN_TAG, LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_UPDATE_DEVICE( MSM6255_TAG, msm6255_device, screen_update )
+ MCFG_SCREEN_SIZE(640, 200)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(bw2_state::bw2_palette), 2);
// devices
@@ -575,15 +573,14 @@ void bw2_state::bw2(machine_config &config)
ppi.in_pc_callback().set(FUNC(bw2_state::ppi_pc_r));
ppi.out_pc_callback().set(FUNC(bw2_state::ppi_pc_w));
- MSM6255(config, m_lcdc, 16_MHz_XTAL);
- m_lcdc->set_addrmap(0, &bw2_state::lcdc_map);
- m_lcdc->set_screen(SCREEN_TAG);
+ MCFG_DEVICE_ADD(MSM6255_TAG, MSM6255, 16_MHz_XTAL)
+ MCFG_DEVICE_ADDRESS_MAP(0, lcdc_map)
+ MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(bw2_state::write_centronics_busy));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, bw2_state, write_centronics_busy))
- output_latch_device &latch(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(latch);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
I8251(config, m_uart, 0);
m_uart->txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
@@ -598,16 +595,16 @@ void bw2_state::bw2(machine_config &config)
m_fdc->intrq_wr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
m_fdc->drq_wr_callback().set(FUNC(bw2_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, WD2797_TAG":0", bw2_floppies, "35dd", bw2_state::floppy_formats);
- FLOPPY_CONNECTOR(config, WD2797_TAG":1", bw2_floppies, nullptr, bw2_state::floppy_formats);
- BW2_EXPANSION_SLOT(config, m_exp, 16_MHz_XTAL, bw2_expansion_cards, nullptr);
+ MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":0", bw2_floppies, "35dd", bw2_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":1", bw2_floppies, nullptr, bw2_state::floppy_formats)
+ MCFG_BW2_EXPANSION_SLOT_ADD(BW2_EXPANSION_SLOT_TAG, 16_MHz_XTAL, bw2_expansion_cards, nullptr)
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("bw2");
+ MCFG_SOFTWARE_LIST_ADD("flop_list","bw2")
// internal ram
RAM(config, RAM_TAG).set_default_size("64K").set_extra_options("96K,128K,160K,192K,224K");
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/bwidow.cpp b/src/mame/drivers/bwidow.cpp
index e0879582c50..3cb71a0c334 100644
--- a/src/mame/drivers/bwidow.cpp
+++ b/src/mame/drivers/bwidow.cpp
@@ -763,22 +763,22 @@ INPUT_PORTS_END
*
*************************************/
-void bwidow_state::bwidow(machine_config &config)
-{
+MACHINE_CONFIG_START(bwidow_state::bwidow)
+
/* basic machine hardware */
- M6502(config, m_maincpu, MASTER_CLOCK / 8);
- m_maincpu->set_addrmap(AS_PROGRAM, &bwidow_state::bwidow_map);
- m_maincpu->set_periodic_int(FUNC(bwidow_state::irq0_line_assert), attotime::from_hz(CLOCK_3KHZ / 12));
+ MCFG_DEVICE_ADD("maincpu", M6502, MASTER_CLOCK / 8)
+ MCFG_DEVICE_PROGRAM_MAP(bwidow_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(bwidow_state, irq0_line_assert, CLOCK_3KHZ / 12)
- ER2055(config, m_earom);
+ MCFG_DEVICE_ADD("earom", ER2055)
/* video hardware */
- VECTOR(config, "vector", 0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_VECTOR));
- screen.set_refresh_hz(CLOCK_3KHZ / 12 / 4);
- screen.set_size(400, 300);
- screen.set_visarea(0, 480, 0, 440);
- screen.set_screen_update("vector", FUNC(vector_device::screen_update));
+ MCFG_VECTOR_ADD("vector")
+ MCFG_SCREEN_ADD("screen", VECTOR)
+ MCFG_SCREEN_REFRESH_RATE(CLOCK_3KHZ / 12 / 4)
+ MCFG_SCREEN_SIZE(400, 300)
+ MCFG_SCREEN_VISIBLE_AREA(0, 480, 0, 440)
+ MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
avg_device &avg(AVG(config, "avg", 0));
avg.set_vector_tag("vector");
@@ -786,52 +786,54 @@ void bwidow_state::bwidow(machine_config &config)
/* sound hardware */
bwidow_audio(config);
-}
+MACHINE_CONFIG_END
-void bwidow_state::bwidowp(machine_config &config)
-{
+MACHINE_CONFIG_START(bwidow_state::bwidowp)
bwidow(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &bwidow_state::bwidowp_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(bwidowp_map)
WATCHDOG_TIMER(config, "watchdog");
-}
+MACHINE_CONFIG_END
-void bwidow_state::gravitar(machine_config &config)
-{
+MACHINE_CONFIG_START(bwidow_state::gravitar)
bwidow(config);
/* basic machine hardware */
/* video hardware */
- subdevice<screen_device>("screen")->set_visarea(0, 420, 0, 400);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 420, 0, 400)
/* sound hardware */
gravitar_audio(config);
-}
+MACHINE_CONFIG_END
-void bwidow_state::lunarbat(machine_config &config)
-{
+MACHINE_CONFIG_START(bwidow_state::lunarbat)
gravitar(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &bwidow_state::spacduel_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(spacduel_map)
/* video hardware */
- subdevice<screen_device>("screen")->set_visarea(0, 500, 0, 440);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 500, 0, 440)
+MACHINE_CONFIG_END
-void bwidow_state::spacduel(machine_config &config)
-{
+MACHINE_CONFIG_START(bwidow_state::spacduel)
gravitar(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &bwidow_state::spacduel_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(spacduel_map)
/* video hardware */
- subdevice<screen_device>("screen")->set_visarea(0, 540, 0, 400);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 540, 0, 400)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/bwing.cpp b/src/mame/drivers/bwing.cpp
index 48f7c73023c..3ef91ecac5c 100644
--- a/src/mame/drivers/bwing.cpp
+++ b/src/mame/drivers/bwing.cpp
@@ -363,36 +363,36 @@ void bwing_state::bwing_postload()
}
-void bwing_state::bwing(machine_config &config)
-{
+MACHINE_CONFIG_START(bwing_state::bwing)
+
// basic machine hardware
- MC6809E(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &bwing_state::bwp1_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(bwp1_map)
- MC6809E(config, m_subcpu, 2000000);
- m_subcpu->set_addrmap(AS_PROGRAM, &bwing_state::bwp2_map);
+ MCFG_DEVICE_ADD("sub", MC6809E, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(bwp2_map)
- DECO16(config, m_audiocpu, 2000000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &bwing_state::bwp3_map);
- m_audiocpu->set_addrmap(AS_IO, &bwing_state::bwp3_io_map);
- m_audiocpu->set_periodic_int(FUNC(bwing_state::bwp3_interrupt), attotime::from_hz(1000));
+ MCFG_DEVICE_ADD("audiocpu", DECO16, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(bwp3_map)
+ MCFG_DEVICE_IO_MAP(bwp3_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(bwing_state, bwp3_interrupt, 1000)
- config.m_minimum_quantum = attotime::from_hz(18000); // high enough?
+ MCFG_QUANTUM_TIME(attotime::from_hz(18000)) // high enough?
ADDRESS_MAP_BANK(config, "vrambank").set_map(&bwing_state::bank_map).set_options(ENDIANNESS_BIG, 8, 15, 0x2000);
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(600)); // must be long enough for polling
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(bwing_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600)) // must be long enough for polling
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(bwing_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_bwing);
- PALETTE(config, m_palette).set_entries(64);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_bwing)
+ MCFG_PALETTE_ADD("palette", 64)
// sound hardware
@@ -404,11 +404,10 @@ void bwing_state::bwing(machine_config &config)
AY8912(config, "ay2", XTAL(24'000'000) / 2 / 8).add_route(ALL_OUTPUTS, "speaker", 0.5);
- DAC08(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.1);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC08, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.1)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
//****************************************************************************
// ROM Maps
diff --git a/src/mame/drivers/by17.cpp b/src/mame/drivers/by17.cpp
index 4c3b1f4c25f..903a49048f2 100644
--- a/src/mame/drivers/by17.cpp
+++ b/src/mame/drivers/by17.cpp
@@ -837,7 +837,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( by17_state::u11_timer )
-+ +---+
*/
- m_display_refresh_timer->adjust(attotime::from_usec(2850));
+ m_display_refresh_timer->adjust(attotime::from_msec(2.85));
m_u11_ca1 = true;
m_pia_u11->ca1_w(m_u11_ca1);
@@ -993,11 +993,10 @@ void by17_state::machine_reset()
-void by17_state::by17(machine_config &config)
-{
+MACHINE_CONFIG_START(by17_state::by17)
/* basic machine hardware */
- M6800(config, m_maincpu, 530000); // No xtal, just 2 chips forming a multivibrator oscillator around 530KHz
- m_maincpu->set_addrmap(AS_PROGRAM, &by17_state::by17_map);
+ MCFG_DEVICE_ADD("maincpu", M6800, 530000) // No xtal, just 2 chips forming a multivibrator oscillator around 530KHz
+ MCFG_DEVICE_PROGRAM_MAP(by17_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 'F' filled causes Credit Display to be blank on first startup
@@ -1019,8 +1018,8 @@ void by17_state::by17(machine_config &config)
m_pia_u10->cb2_handler().set(FUNC(by17_state::u10_cb2_w));
m_pia_u10->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u10->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- TIMER(config, "timer_z_freq").configure_periodic(FUNC(by17_state::timer_z_freq), attotime::from_hz(100)); // Mains Line Frequency * 2
- TIMER(config, m_zero_crossing_active_timer).configure_generic(FUNC(by17_state::timer_z_pulse)); // Active pulse length from Zero Crossing detector
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_z_freq", by17_state, timer_z_freq, attotime::from_hz(100)) // Mains Line Frequency * 2
+ MCFG_TIMER_DRIVER_ADD(m_zero_crossing_active_timer, by17_state, timer_z_pulse) // Active pulse length from Zero Crossing detector
PIA6821(config, m_pia_u11, 0);
m_pia_u11->readpa_handler().set(FUNC(by17_state::u11_a_r));
@@ -1032,9 +1031,9 @@ void by17_state::by17(machine_config &config)
m_pia_u11->cb2_handler().set(FUNC(by17_state::u11_cb2_w));
m_pia_u11->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u11->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- TIMER(config, "timer_d_freq").configure_periodic(FUNC(by17_state::u11_timer), attotime::from_hz(317)); // 555 timer
- TIMER(config, m_display_refresh_timer).configure_generic(FUNC(by17_state::timer_d_pulse)); // 555 Active pulse length
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_d_freq", by17_state, u11_timer, attotime::from_hz(317)) // 555 timer
+ MCFG_TIMER_DRIVER_ADD(m_display_refresh_timer, by17_state, timer_d_pulse) // 555 Active pulse length
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/by35.cpp b/src/mame/drivers/by35.cpp
index 88e703ca13a..90a62545b98 100644
--- a/src/mame/drivers/by35.cpp
+++ b/src/mame/drivers/by35.cpp
@@ -898,7 +898,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( by35_state::u11_timer )
-+ +---+
*/
- m_display_refresh_timer->adjust(attotime::from_usec(2850));
+ m_display_refresh_timer->adjust(attotime::from_msec(2.85));
m_u11_ca1 = true;
m_pia_u11->ca1_w(m_u11_ca1);
@@ -1092,11 +1092,10 @@ DISCRETE_SOUND_END
-void by35_state::by35(machine_config &config)
-{
+MACHINE_CONFIG_START(by35_state::by35)
/* basic machine hardware */
- M6800(config, m_maincpu, 530000); // No xtal, just 2 chips forming a multivibrator oscillator around 530KHz
- m_maincpu->set_addrmap(AS_PROGRAM, &by35_state::by35_map);
+ MCFG_DEVICE_ADD("maincpu", M6800, 530000) // No xtal, just 2 chips forming a multivibrator oscillator around 530KHz
+ MCFG_DEVICE_PROGRAM_MAP(by35_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 'F' filled causes Credit Display to be blank on first startup
@@ -1118,8 +1117,8 @@ void by35_state::by35(machine_config &config)
m_pia_u10->cb2_handler().set(FUNC(by35_state::u10_cb2_w));
m_pia_u10->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u10->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- TIMER(config, "timer_z_freq").configure_periodic(FUNC(by35_state::timer_z_freq), attotime::from_hz(100)); // Mains Line Frequency * 2
- TIMER(config, m_zero_crossing_active_timer).configure_generic(FUNC(by35_state::timer_z_pulse)); // Active pulse length from Zero Crossing detector
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_z_freq", by35_state, timer_z_freq, attotime::from_hz(100)) // Mains Line Frequency * 2
+ MCFG_TIMER_DRIVER_ADD(m_zero_crossing_active_timer, by35_state, timer_z_pulse) // Active pulse length from Zero Crossing detector
PIA6821(config, m_pia_u11, 0);
m_pia_u11->readpa_handler().set(FUNC(by35_state::u11_a_r));
@@ -1131,37 +1130,36 @@ void by35_state::by35(machine_config &config)
m_pia_u11->cb2_handler().set(FUNC(by35_state::u11_cb2_w));
m_pia_u11->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u11->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- TIMER(config, "timer_d_freq").configure_periodic(FUNC(by35_state::u11_timer), attotime::from_hz(317)); // 555 timer
- TIMER(config, m_display_refresh_timer).configure_generic(FUNC(by35_state::timer_d_pulse)); // 555 Active pulse length
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_d_freq", by35_state, u11_timer, attotime::from_hz(317)) // 555 timer
+ MCFG_TIMER_DRIVER_ADD(m_display_refresh_timer, by35_state, timer_d_pulse) // 555 Active pulse length
+MACHINE_CONFIG_END
-void as2888_state::as2888_audio(machine_config &config)
-{
+MACHINE_CONFIG_START(as2888_state::as2888_audio)
SPEAKER(config, "mono").front_center();
- DISCRETE(config, m_discrete, as2888_discrete).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("discrete", DISCRETE, as2888_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
m_pia_u11->writepb_handler().set(FUNC(as2888_state::u11_b_as2888_w));
m_pia_u11->cb2_handler().set(FUNC(as2888_state::u11_cb2_as2888_w));
- TIMER(config, "timer_s_freq").configure_periodic(FUNC(as2888_state::timer_s), attotime::from_hz(353000)); // Inverter clock on AS-2888 sound board
- TIMER(config, m_snd_sustain_timer).configure_generic(FUNC(as2888_state::timer_as2888));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_s_freq", as2888_state, timer_s, attotime::from_hz(353000)) // Inverter clock on AS-2888 sound board
+ MCFG_TIMER_DRIVER_ADD(m_snd_sustain_timer, as2888_state, timer_as2888)
+MACHINE_CONFIG_END
-void as2888_state::as2888(machine_config &config)
-{
+MACHINE_CONFIG_START(as2888_state::as2888)
by35(config);
as2888_audio(config);
-}
+MACHINE_CONFIG_END
-void by35_state::nuovo(machine_config &config)
-{
+MACHINE_CONFIG_START(by35_state::nuovo)
by35(config);
- M6802(config.replace(), m_maincpu, 2000000); // ? MHz ? Large crystal next to CPU, schematics don't indicate speed.
- m_maincpu->set_addrmap(AS_PROGRAM, &by35_state::nuovo_map);
-}
+ MCFG_DEVICE_REPLACE("maincpu", M6802, 2000000) // ? MHz ? Large crystal next to CPU, schematics don't indicate speed.
+ MCFG_DEVICE_PROGRAM_MAP(nuovo_map)
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/by6803.cpp b/src/mame/drivers/by6803.cpp
index d5ca10888f6..0ff8dfa170b 100644
--- a/src/mame/drivers/by6803.cpp
+++ b/src/mame/drivers/by6803.cpp
@@ -375,8 +375,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( by6803_state::pia0_timer )
m_pia0->cb1_w(m_pia0_timer);
}
-void by6803_state::by6803(machine_config &config)
-{
+MACHINE_CONFIG_START(by6803_state::by6803)
/* basic machine hardware */
M6803(config, m_maincpu, XTAL(3'579'545));
m_maincpu->set_addrmap(AS_PROGRAM, &by6803_state::by6803_map);
@@ -403,7 +402,7 @@ void by6803_state::by6803(machine_config &config)
m_pia0->cb2_handler().set(FUNC(by6803_state::pia0_cb2_w));
m_pia0->irqa_handler().set_inputline("maincpu", M6803_IRQ_LINE);
m_pia0->irqb_handler().set_inputline("maincpu", M6803_IRQ_LINE);
- TIMER(config, "timer_z").configure_periodic(FUNC(by6803_state::pia0_timer), attotime::from_hz(120)); // mains freq*2
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_z", by6803_state, pia0_timer, attotime::from_hz(120)) // mains freq*2
PIA6821(config, m_pia1, 0);
m_pia1->readpa_handler().set(FUNC(by6803_state::pia1_a_r));
@@ -411,9 +410,10 @@ void by6803_state::by6803(machine_config &config)
m_pia1->writepb_handler().set(FUNC(by6803_state::pia1_b_w));
m_pia1->cb2_handler().set(FUNC(by6803_state::pia1_cb2_w));
- //SPEAKER(config, "mono").front_center();
- //MIDWAY_TURBO_CHEAP_SQUEAK(config, "tcs").add_route(ALL_OUTPUTS, "speaker", 1.0); // Cheap Squeak Turbo
-}
+ //MCFG_SPEAKER_STANDARD_MONO("speaker")
+ //MCFG_DEVICE_ADD("tcs", MIDWAY_TURBO_CHEAP_SQUEAK) // Cheap Squeak Turbo
+ //MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
/*-----------------------------------------------------------
diff --git a/src/mame/drivers/by68701.cpp b/src/mame/drivers/by68701.cpp
index 9a95b171784..4f341501499 100644
--- a/src/mame/drivers/by68701.cpp
+++ b/src/mame/drivers/by68701.cpp
@@ -46,12 +46,11 @@ void by68701_state::init_by68701()
{
}
-void by68701_state::by68701(machine_config &config)
-{
+MACHINE_CONFIG_START(by68701_state::by68701)
/* basic machine hardware */
- M6803(config, m_maincpu, 3579545/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &by68701_state::by68701_map);
-}
+ MCFG_DEVICE_ADD("maincpu", M6803, 3579545/4)
+ MCFG_DEVICE_PROGRAM_MAP(by68701_map)
+MACHINE_CONFIG_END
/*------------------
/ Flash Gordon
diff --git a/src/mame/drivers/byvid.cpp b/src/mame/drivers/byvid.cpp
index 89b3216dca3..7799837e073 100644
--- a/src/mame/drivers/byvid.cpp
+++ b/src/mame/drivers/byvid.cpp
@@ -166,7 +166,8 @@ void by133_state::video_map(address_map &map)
{ // U8 Vidiot
map(0x0000, 0x1fff).rw(FUNC(by133_state::sound_data_r), FUNC(by133_state::sound_data_w));
map(0x2000, 0x2003).mirror(0x0ffc).rw(m_pia_u7, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // PIA U7 Vidiot
- map(0x4000, 0x4001).mirror(0x0ffe).rw(m_crtc, FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
+ map(0x4000, 0x4000).mirror(0x0ffe).rw(m_crtc, FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0x4001, 0x4001).mirror(0x0ffe).rw(m_crtc, FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
map(0x6000, 0x63ff).mirror(0x1c00).ram();
map(0x8000, 0xffff).rom();
}
@@ -174,8 +175,10 @@ void by133_state::video_map(address_map &map)
void by133_state::granny_map(address_map &map)
{
map(0x0000, 0x0001).rw(FUNC(by133_state::sound_data_r), FUNC(by133_state::sound_data_w));
- map(0x0002, 0x0003).rw(m_crtc, FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
- map(0x0004, 0x0005).rw(m_crtc2, FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
+ map(0x0002, 0x0002).rw(m_crtc, FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0x0003, 0x0003).rw(m_crtc, FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
+ map(0x0004, 0x0004).rw(m_crtc2, FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0x0005, 0x0005).rw(m_crtc2, FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
map(0x0006, 0x0007).w(FUNC(by133_state::granny_crtc_w)); // can write to both at once
map(0x0008, 0x000b).rw(m_pia_u7, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
map(0x2000, 0x27ff).ram();
@@ -533,8 +536,16 @@ INPUT_PORTS_END
WRITE8_MEMBER( by133_state::granny_crtc_w )
{
- m_crtc->write(offset, data);
- m_crtc2->write(offset, data);
+ if (offset)
+ {
+ m_crtc->register_write(data);
+ m_crtc2->register_write(data);
+ }
+ else
+ {
+ m_crtc->vram_write(data);
+ m_crtc2->vram_write(data);
+ }
}
READ8_MEMBER( by133_state::sound_data_r )
@@ -735,14 +746,13 @@ uint32_t by133_state::screen_update_granny(screen_device &screen, bitmap_rgb32 &
return 0;
}
-void by133_state::babypac(machine_config &config)
-{
+MACHINE_CONFIG_START(by133_state::babypac)
/* basic machine hardware */
- M6800(config, m_maincpu, XTAL(3'579'545)/4); // no xtal, just 2 chips
- m_maincpu->set_addrmap(AS_PROGRAM, &by133_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M6800, XTAL(3'579'545)/4) // no xtal, just 2 chips
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- MC6809(config, m_videocpu, XTAL(3'579'545));
- m_videocpu->set_addrmap(AS_PROGRAM, &by133_state::video_map);
+ MCFG_DEVICE_ADD("videocpu", MC6809, XTAL(3'579'545))
+ MCFG_DEVICE_PROGRAM_MAP(video_map)
M6803(config, m_audiocpu, XTAL(3'579'545));
m_audiocpu->set_addrmap(AS_PROGRAM, &by133_state::sound_map);
@@ -771,7 +781,7 @@ void by133_state::babypac(machine_config &config)
m_pia_u10->cb2_handler().set(FUNC(by133_state::u10_cb2_w));
m_pia_u10->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u10->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- TIMER(config, "babypac1").configure_periodic(FUNC(by133_state::u10_timer), attotime::from_hz(120)); // mains freq*2
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("babypac1", by133_state, u10_timer, attotime::from_hz(120)) // mains freq*2
PIA6821(config, m_pia_u11, 0);
m_pia_u11->readpa_handler().set(FUNC(by133_state::u11_a_r));
@@ -782,7 +792,7 @@ void by133_state::babypac(machine_config &config)
m_pia_u11->cb2_handler().set(FUNC(by133_state::u11_cb2_w));
m_pia_u11->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u11->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- TIMER(config, "babypac2").configure_periodic(FUNC(by133_state::u11_timer), attotime::from_hz(634)); // 555 timer*2
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("babypac2", by133_state, u11_timer, attotime::from_hz(634)) // 555 timer*2
/* video hardware */
TMS9928A(config, m_crtc, XTAL(10'738'635)).set_screen("screen");
@@ -792,28 +802,28 @@ void by133_state::babypac(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- ZN429E(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // U32 (Vidiot) or U6 (Cheap Squeak)
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", ZN429E, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // U32 (Vidiot) or U6 (Cheap Squeak)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
SPEAKER(config, "beee").front_center();
- BEEP(config, m_beep, 600).add_route(ALL_OUTPUTS, "beee", 0.10);
-}
+ MCFG_DEVICE_ADD("beeper", BEEP, 600)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "beee", 0.10)
+MACHINE_CONFIG_END
-void by133_state::granny(machine_config &config)
-{
+MACHINE_CONFIG_START(by133_state::granny)
babypac(config);
-
- MC6809(config.replace(), m_videocpu, XTAL(8'000'000)); // MC68B09P (XTAL value hard to read)
- m_videocpu->set_addrmap(AS_PROGRAM, &by133_state::granny_map);
+ MCFG_DEVICE_REMOVE("videocpu")
+ MCFG_DEVICE_ADD("videocpu", MC6809, XTAL(8'000'000)) // MC68B09P (XTAL value hard to read)
+ MCFG_DEVICE_PROGRAM_MAP(granny_map)
TMS9928A(config, m_crtc2, XTAL(10'738'635)).set_screen("screen");
m_crtc2->set_vram_size(0x4000);
m_crtc2->int_callback().set_inputline(m_videocpu, M6809_IRQ_LINE);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(by133_state::screen_update_granny));
-}
+ MCFG_DEVICE_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(by133_state, screen_update_granny)
+MACHINE_CONFIG_END
/*-----------------------------------------------------
diff --git a/src/mame/drivers/c10.cpp b/src/mame/drivers/c10.cpp
index 59462dfbea2..c47ca0e0d43 100644
--- a/src/mame/drivers/c10.cpp
+++ b/src/mame/drivers/c10.cpp
@@ -159,24 +159,23 @@ static GFXDECODE_START( gfx_c10 )
GFXDECODE_END
-void c10_state::c10(machine_config &config)
-{
+MACHINE_CONFIG_START(c10_state::c10)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(8'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &c10_state::c10_mem);
- m_maincpu->set_addrmap(AS_IO, &c10_state::c10_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(8'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(c10_mem)
+ MCFG_DEVICE_IO_MAP(c10_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(c10_state::screen_update));
- screen.set_size(640, 250);
- screen.set_visarea_full();
- screen.set_palette("palette");
- GFXDECODE(config, "gfxdecode", "palette", gfx_c10);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(c10_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 250)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_c10)
PALETTE(config, "palette", palette_device::MONOCHROME);
-}
+MACHINE_CONFIG_END
void c10_state::init_c10()
{
diff --git a/src/mame/drivers/c128.cpp b/src/mame/drivers/c128.cpp
index 9e5c25375b1..2b406c91097 100644
--- a/src/mame/drivers/c128.cpp
+++ b/src/mame/drivers/c128.cpp
@@ -131,8 +131,8 @@ public:
inline void check_interrupts();
int read_pla(offs_t offset, offs_t ca, offs_t vma, int ba, int rw, int aec, int z80io, int ms3, int ms2, int ms1, int ms0);
- uint8_t read_memory(offs_t offset, offs_t vma, int ba, int aec, int z80io);
- void write_memory(offs_t offset, offs_t vma, uint8_t data, int ba, int aec, int z80io);
+ uint8_t read_memory(address_space &space, offs_t offset, offs_t vma, int ba, int aec, int z80io);
+ void write_memory(address_space &space, offs_t offset, offs_t vma, uint8_t data, int ba, int aec, int z80io);
inline void update_iec();
DECLARE_READ8_MEMBER( z80_r );
@@ -335,7 +335,7 @@ int c128_state::read_pla(offs_t offset, offs_t ca, offs_t vma, int ba, int rw, i
// read_memory -
//-------------------------------------------------
-uint8_t c128_state::read_memory(offs_t offset, offs_t vma, int ba, int aec, int z80io)
+uint8_t c128_state::read_memory(address_space &space, offs_t offset, offs_t vma, int ba, int aec, int z80io)
{
int rw = 1, ms0 = 1, ms1 = 1, ms2 = 1, ms3 = 1, cas0 = 1, cas1 = 1;
int io1 = 1, io2 = 1;
@@ -406,37 +406,37 @@ uint8_t c128_state::read_memory(offs_t offset, offs_t vma, int ba, int aec, int
}
if (!BIT(plaout, PLA_OUT_VIC))
{
- data = m_vic->read(offset & 0x3f);
+ data = m_vic->read(space, offset & 0x3f);
}
if (!BIT(plaout, PLA_OUT_FROM1) && m_from->exists())
{
- data = m_from->read_rom(offset & 0x7fff);
+ data = m_from->read_rom(space, offset & 0x7fff);
}
if (!BIT(plaout, PLA_OUT_IOCS) && BIT(offset, 10))
{
switch ((BIT(offset, 11) << 2) | ((offset >> 8) & 0x03))
{
case 0: // SID
- data = m_sid->read(offset & 0x1f);
+ data = m_sid->read(space, offset & 0x1f);
break;
case 2: // CS8563
if (BIT(offset, 0))
{
- data = m_vdc->register_r();
+ data = m_vdc->register_r(space, 0);
}
else
{
- data = m_vdc->status_r();
+ data = m_vdc->status_r(space, 0);
}
break;
case 4: // CIA1
- data = m_cia1->read(offset & 0x0f);
+ data = m_cia1->read(space, offset & 0x0f);
break;
case 5: // CIA2
- data = m_cia2->read(offset & 0x0f);
+ data = m_cia2->read(space, offset & 0x0f);
break;
case 6: // I/O1
@@ -452,7 +452,7 @@ uint8_t c128_state::read_memory(offs_t offset, offs_t vma, int ba, int aec, int
int roml = BIT(plaout, PLA_OUT_ROML);
int romh = BIT(plaout, PLA_OUT_ROMH);
- data = m_exp->cd_r(ca, data, sphi2, ba, roml, romh, io1, io2);
+ data = m_exp->cd_r(space, ca, data, sphi2, ba, roml, romh, io1, io2);
return m_mmu->read(offset, data);
}
@@ -462,7 +462,7 @@ uint8_t c128_state::read_memory(offs_t offset, offs_t vma, int ba, int aec, int
// write_memory -
//-------------------------------------------------
-void c128_state::write_memory(offs_t offset, offs_t vma, uint8_t data, int ba, int aec, int z80io)
+void c128_state::write_memory(address_space &space, offs_t offset, offs_t vma, uint8_t data, int ba, int aec, int z80io)
{
int rw = 0, ms0 = 1, ms1 = 1, ms2 = 1, ms3 = 1, cas0 = 1, cas1 = 1;
int io1 = 1, io2 = 1;
@@ -494,33 +494,33 @@ void c128_state::write_memory(offs_t offset, offs_t vma, uint8_t data, int ba, i
}
if (!BIT(plaout, PLA_OUT_VIC))
{
- m_vic->write(offset & 0x3f, data);
+ m_vic->write(space, offset & 0x3f, data);
}
if (!BIT(plaout, PLA_OUT_IOCS) && BIT(offset, 10))
{
switch ((BIT(offset, 11) << 2) | ((offset >> 8) & 0x03))
{
case 0: // SID
- m_sid->write(offset & 0x1f, data);
+ m_sid->write(space, offset & 0x1f, data);
break;
case 2: // CS8563
if (BIT(offset, 0))
{
- m_vdc->register_w(data);
+ m_vdc->register_w(space, 0, data);
}
else
{
- m_vdc->address_w(data);
+ m_vdc->address_w(space, 0, data);
}
break;
case 4: // CIA1
- m_cia1->write(offset & 0x0f, data);
+ m_cia1->write(space, offset & 0x0f, data);
break;
case 5: // CIA2
- m_cia2->write(offset & 0x0f, data);
+ m_cia2->write(space, offset & 0x0f, data);
break;
case 6: // I/O1
@@ -536,9 +536,9 @@ void c128_state::write_memory(offs_t offset, offs_t vma, uint8_t data, int ba, i
int roml = BIT(plaout, PLA_OUT_ROML);
int romh = BIT(plaout, PLA_OUT_ROMH);
- m_exp->cd_w(ca, data, sphi2, ba, roml, romh, io1, io2);
+ m_exp->cd_w(space, ca, data, sphi2, ba, roml, romh, io1, io2);
- m_mmu->write(offset, data);
+ m_mmu->write(space, offset, data);
}
@@ -551,7 +551,7 @@ READ8_MEMBER( c128_state::z80_r )
int ba = 1, aec = 1, z80io = 1;
offs_t vma = 0;
- return read_memory(offset, vma, ba, aec, z80io);
+ return read_memory(space, offset, vma, ba, aec, z80io);
}
@@ -564,7 +564,7 @@ WRITE8_MEMBER( c128_state::z80_w )
int ba = 1, aec = 1, z80io = 1;
offs_t vma = 0;
- write_memory(offset, vma, data, ba, aec, z80io);
+ write_memory(space, offset, vma, data, ba, aec, z80io);
}
@@ -577,7 +577,7 @@ READ8_MEMBER( c128_state::z80_io_r )
int ba = 1, aec = 1, z80io = 0;
offs_t vma = 0;
- return read_memory(offset, vma, ba, aec, z80io);
+ return read_memory(space, offset, vma, ba, aec, z80io);
}
@@ -590,7 +590,7 @@ WRITE8_MEMBER( c128_state::z80_io_w )
int ba = 1, aec = 1, z80io = 0;
offs_t vma = 0;
- write_memory(offset, vma, data, ba, aec, z80io);
+ write_memory(space, offset, vma, data, ba, aec, z80io);
}
@@ -603,7 +603,7 @@ READ8_MEMBER( c128_state::read )
int ba = 1, aec = 1, z80io = 1;
offs_t vma = 0;
- return read_memory(offset, vma, ba, aec, z80io);
+ return read_memory(space, offset, vma, ba, aec, z80io);
}
@@ -616,7 +616,7 @@ WRITE8_MEMBER( c128_state::write )
int ba = 1, aec = 1, z80io = 1;
offs_t vma = 0;
- write_memory(offset, vma, data, ba, aec, z80io);
+ write_memory(space, offset, vma, data, ba, aec, z80io);
}
@@ -628,7 +628,7 @@ READ8_MEMBER( c128_state::vic_videoram_r )
{
int ba = 0, aec = 0, z80io = 1;
- return read_memory(0, offset, ba, aec, z80io);
+ return read_memory(space, 0, offset, ba, aec, z80io);
}
@@ -1111,7 +1111,7 @@ READ8_MEMBER( c128_state::sid_potx_r )
{
uint8_t data = 0xff;
- switch (m_cia1->pa_r() >> 6)
+ switch (m_cia1->read_pa() >> 6)
{
case 1: data = m_joy1->read_pot_x(); break;
case 2: data = m_joy2->read_pot_x(); break;
@@ -1138,7 +1138,7 @@ READ8_MEMBER( c128_state::sid_poty_r )
{
uint8_t data = 0xff;
- switch (m_cia1->pa_r() >> 6)
+ switch (m_cia1->read_pa() >> 6)
{
case 1: data = m_joy1->read_pot_y(); break;
case 2: data = m_joy2->read_pot_y(); break;
@@ -1192,7 +1192,7 @@ READ8_MEMBER( c128_state::cia1_pa_r )
data &= ~(!BIT(joy_b, 5) << 4);
// keyboard
- uint8_t cia1_pb = m_cia1->pb_r();
+ uint8_t cia1_pb = m_cia1->read_pb();
uint32_t row[8] = { m_row[0]->read(), m_row[1]->read() & m_lock->read(), m_row[2]->read(), m_row[3]->read(),
m_row[4]->read(), m_row[5]->read(), m_row[6]->read(), m_row[7]->read() };
@@ -1260,7 +1260,7 @@ READ8_MEMBER( c128_state::cia1_pb_r )
data &= ~(!BIT(joy_a, 5) << 4);
// keyboard
- uint8_t cia1_pa = m_cia1->pa_r();
+ uint8_t cia1_pa = m_cia1->read_pa();
if (!BIT(cia1_pa, 7)) data &= m_row[7]->read();
if (!BIT(cia1_pa, 6)) data &= m_row[6]->read();
@@ -1512,7 +1512,7 @@ READ8_MEMBER( c128_state::exp_dma_cd_r )
int ba = 0, aec = 1, z80io = 1;
offs_t vma = 0;
- return read_memory(offset, vma, ba, aec, z80io);
+ return read_memory(space, offset, vma, ba, aec, z80io);
}
WRITE8_MEMBER( c128_state::exp_dma_cd_w )
@@ -1520,7 +1520,7 @@ WRITE8_MEMBER( c128_state::exp_dma_cd_w )
int ba = 0, aec = 1, z80io = 1;
offs_t vma = 0;
- return write_memory(offset, data, vma, ba, aec, z80io);
+ return write_memory(space, offset, data, vma, ba, aec, z80io);
}
WRITE_LINE_MEMBER( c128_state::exp_dma_w )
@@ -1629,7 +1629,7 @@ void c128_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( ntsc )
+// MACHINE_CONFIG( ntsc )
//-------------------------------------------------
void c128_state::ntsc(machine_config &config)
@@ -1755,8 +1755,8 @@ void c128_state::ntsc(machine_config &config)
m_user->pl_handler().set(FUNC(c128_state::write_user_pb7));
m_user->pm_handler().set(FUNC(c128_state::write_user_pa2));
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(c128_state, cbm_c64), this), "p00,prg", CBM_QUICKLOAD_DELAY);
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(c128_state, cbm_c64), this), "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS);
// software list
SOFTWARE_LIST(config, "cart_list_vic10").set_original("vic10");
@@ -1783,7 +1783,7 @@ void c128_state::ntsc(machine_config &config)
//-------------------------------------------------
-// machine_config( c128 )
+// MACHINE_CONFIG( c128 )
//-------------------------------------------------
void c128_state::c128(machine_config &config)
@@ -1796,7 +1796,7 @@ void c128_state::c128(machine_config &config)
//-------------------------------------------------
-// machine_config( c128dcr )
+// MACHINE_CONFIG( c128dcr )
//-------------------------------------------------
void c128_state::c128dcr(machine_config &config)
@@ -1809,7 +1809,7 @@ void c128_state::c128dcr(machine_config &config)
//-------------------------------------------------
-// machine_config( c128d81 )
+// MACHINE_CONFIG( c128d81 )
//-------------------------------------------------
void c128_state::c128d81(machine_config &config)
@@ -1824,7 +1824,7 @@ void c128_state::c128d81(machine_config &config)
//-------------------------------------------------
-// machine_config( pal )
+// MACHINE_CONFIG( pal )
//-------------------------------------------------
void c128_state::pal(machine_config &config)
@@ -1950,8 +1950,8 @@ void c128_state::pal(machine_config &config)
m_user->pl_handler().set(FUNC(c128_state::write_user_pb7));
m_user->pm_handler().set(FUNC(c128_state::write_user_pa2));
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(c128_state, cbm_c64), this), "p00,prg", CBM_QUICKLOAD_DELAY);
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(c128_state, cbm_c64), this), "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS);
// software list
SOFTWARE_LIST(config, "cart_list_vic10").set_original("vic10");
@@ -1978,7 +1978,7 @@ void c128_state::pal(machine_config &config)
//-------------------------------------------------
-// machine_config( c128pal )
+// MACHINE_CONFIG( c128pal )
//-------------------------------------------------
void c128_state::c128pal(machine_config &config)
@@ -1991,7 +1991,7 @@ void c128_state::c128pal(machine_config &config)
//-------------------------------------------------
-// machine_config( c128dcrp )
+// MACHINE_CONFIG( c128dcrp )
//-------------------------------------------------
void c128_state::c128dcrp(machine_config &config)
diff --git a/src/mame/drivers/c2color.cpp b/src/mame/drivers/c2color.cpp
deleted file mode 100644
index 4164553a1a2..00000000000
--- a/src/mame/drivers/c2color.cpp
+++ /dev/null
@@ -1,127 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:David Haywood
-/******************************************************************************
-
- basic information
- https://gbatemp.net/threads/the-c2-color-game-console-an-obscure-chinese-handheld.509320/
-
- "The C2 is a glorious console with a D-Pad, Local 2.4GHz WiFi, Cartridge slot, A, B, and C buttons,
- and has micro usb power! Don't be fooled though, there is no lithium battery, so you have to put in
- 3 AA batteries if you don't want to play with it tethered to a charger.
-
- It comes with a built in game based on the roco kingdom characters.
-
- In addition, there is a slot on the side of the console allowing cards to be swiped through. Those
- cards can add characters to the game. The console scans the barcode and a new character or item appears in the game for you to use.
-
- The C2 comes with 9 holographic game cards that will melt your eyes."
-
- also includes a link to the following video
- https://www.youtube.com/watch?v=D3XO4aTZEko
-
- TODO:
- identify CPU type, and if the system ROM is needed to run carts or not
-
-*******************************************************************************/
-
-#include "emu.h"
-
-#include "bus/generic/slot.h"
-#include "bus/generic/carts.h"
-
-#include "screen.h"
-#include "emupal.h"
-#include "softlist.h"
-#include "speaker.h"
-
-class c2_color_state : public driver_device
-{
-public:
- c2_color_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_cart(*this, "cartslot")
- , m_cart_region(nullptr)
- , m_palette(*this, "palette")
- , m_screen(*this, "screen")
- { }
-
- void c2_color(machine_config &config);
- void leapfrog_mfleappad(machine_config &config);
-
-private:
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
- uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
-
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart);
-
- required_device<generic_slot_device> m_cart;
- memory_region *m_cart_region;
- required_device<palette_device> m_palette;
- required_device<screen_device> m_screen;
-};
-
-uint32_t c2_color_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- return 0;
-}
-
-
-
-
-void c2_color_state::machine_start()
-{
- // if there's a cart, override the standard mapping
- if (m_cart && m_cart->exists())
- {
- std::string region_tag;
- m_cart_region = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
- }
-}
-
-void c2_color_state::machine_reset()
-{
-}
-
-DEVICE_IMAGE_LOAD_MEMBER(c2_color_state, cart)
-{
- uint32_t size = m_cart->common_get_size("rom");
-
- m_cart->rom_alloc(size, GENERIC_ROM16_WIDTH, ENDIANNESS_LITTLE);
- m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
-
- return image_init_result::PASS;
-}
-
-static INPUT_PORTS_START( c2_color )
-INPUT_PORTS_END
-
-void c2_color_state::c2_color(machine_config &config)
-{
- // unknown CPU
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(0*8, 40*8-1, 0*8, 30*8-1);
- m_screen->set_screen_update(FUNC(c2_color_state::screen_update));
- m_screen->set_palette(m_palette);
-
- PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x200);
-
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "c2color_cart");
- m_cart->set_width(GENERIC_ROM16_WIDTH);
- m_cart->set_device_load(device_image_load_delegate(&c2_color_state::device_image_load_cart, this));
-
- SOFTWARE_LIST(config, "cart_list").set_original("c2color_cart");
-}
-
-ROM_START( c2color )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "system.rom", 0x000000, 0x400000, NO_DUMP ) // must have an internal rom for the built in game, unknown size etc.
-ROM_END
-
-// year, name, parent, compat, machine, input, class, init, company, fullname, flags
-CONS( 201?, c2color, 0, 0, c2_color, c2_color, c2_color_state, empty_init, "Baiyi Animation", "C2 Color (China)", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/c64.cpp b/src/mame/drivers/c64.cpp
index d532e00c410..f606bf6ce02 100644
--- a/src/mame/drivers/c64.cpp
+++ b/src/mame/drivers/c64.cpp
@@ -332,14 +332,14 @@ uint8_t c64_state::read_memory(address_space &space, offs_t offset, offs_t va, i
case 1:
case 2:
case 3: // VIC
- data = m_vic->read(offset & 0x3f);
+ data = m_vic->read(space, offset & 0x3f);
break;
case 4:
case 5:
case 6:
case 7: // SID
- data = m_sid->read(offset & 0x1f);
+ data = m_sid->read(space, offset & 0x1f);
break;
case 0x8:
@@ -350,11 +350,11 @@ uint8_t c64_state::read_memory(address_space &space, offs_t offset, offs_t va, i
break;
case 0xc: // CIA1
- data = m_cia1->read(offset & 0x0f);
+ data = m_cia1->read(space, offset & 0x0f);
break;
case 0xd: // CIA2
- data = m_cia2->read(offset & 0x0f);
+ data = m_cia2->read(space, offset & 0x0f);
break;
case 0xe: // I/O1
@@ -369,7 +369,7 @@ uint8_t c64_state::read_memory(address_space &space, offs_t offset, offs_t va, i
int roml = BIT(plaout, PLA_OUT_ROML);
int romh = BIT(plaout, PLA_OUT_ROMH);
- return m_exp->cd_r(offset, data, sphi2, ba, roml, romh, io1, io2);
+ return m_exp->cd_r(space, offset, data, sphi2, ba, roml, romh, io1, io2);
}
@@ -404,14 +404,14 @@ void c64_state::write_memory(address_space &space, offs_t offset, uint8_t data,
case 1:
case 2:
case 3: // VIC
- m_vic->write(offset & 0x3f, data);
+ m_vic->write(space, offset & 0x3f, data);
break;
case 4:
case 5:
case 6:
case 7: // SID
- m_sid->write(offset & 0x1f, data);
+ m_sid->write(space, offset & 0x1f, data);
break;
case 0x8:
@@ -422,11 +422,11 @@ void c64_state::write_memory(address_space &space, offs_t offset, uint8_t data,
break;
case 0xc: // CIA1
- m_cia1->write(offset & 0x0f, data);
+ m_cia1->write(space, offset & 0x0f, data);
break;
case 0xd: // CIA2
- m_cia2->write(offset & 0x0f, data);
+ m_cia2->write(space, offset & 0x0f, data);
break;
case 0xe: // I/O1
@@ -441,7 +441,7 @@ void c64_state::write_memory(address_space &space, offs_t offset, uint8_t data,
int roml = BIT(plaout, PLA_OUT_ROML);
int romh = BIT(plaout, PLA_OUT_ROMH);
- m_exp->cd_w(offset, data, sphi2, ba, roml, romh, io1, io2);
+ m_exp->cd_w(space, offset, data, sphi2, ba, roml, romh, io1, io2);
}
@@ -692,7 +692,7 @@ READ8_MEMBER( c64_state::sid_potx_r )
{
uint8_t data = 0xff;
- switch (m_cia1->pa_r() >> 6)
+ switch (m_cia1->read_pa() >> 6)
{
case 1: data = m_joy1->read_pot_x(); break;
case 2: data = m_joy2->read_pot_x(); break;
@@ -719,7 +719,7 @@ READ8_MEMBER( c64_state::sid_poty_r )
{
uint8_t data = 0xff;
- switch (m_cia1->pa_r() >> 6)
+ switch (m_cia1->read_pa() >> 6)
{
case 1: data = m_joy1->read_pot_y(); break;
case 2: data = m_joy2->read_pot_y(); break;
@@ -773,7 +773,7 @@ READ8_MEMBER( c64_state::cia1_pa_r )
data &= ~(!BIT(joy_b, 5) << 4);
// keyboard
- uint8_t cia1_pb = m_cia1->pb_r();
+ uint8_t cia1_pb = m_cia1->read_pb();
uint32_t row[8] = { m_row[0]->read(), m_row[1]->read() & m_lock->read(), m_row[2]->read(), m_row[3]->read(),
m_row[4]->read(), m_row[5]->read(), m_row[6]->read(), m_row[7]->read() };
@@ -841,7 +841,7 @@ READ8_MEMBER( c64_state::cia1_pb_r )
data &= ~(!BIT(joy_a, 5) << 4);
// keyboard
- uint8_t cia1_pa = m_cia1->pa_r();
+ uint8_t cia1_pa = m_cia1->read_pa();
if (!BIT(cia1_pa, 7)) data &= m_row[7]->read();
if (!BIT(cia1_pa, 6)) data &= m_row[6]->read();
@@ -1260,7 +1260,7 @@ void c64_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( ntsc )
+// MACHINE_CONFIG( ntsc )
//-------------------------------------------------
void c64_state::ntsc(machine_config &config)
@@ -1361,8 +1361,8 @@ void c64_state::ntsc(machine_config &config)
m_user->pl_handler().set(FUNC(c64_state::write_user_pb7));
m_user->pm_handler().set(FUNC(c64_state::write_user_pa2));
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(c64_state, cbm_c64), this), "p00,prg,t64", CBM_QUICKLOAD_DELAY);
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(c64_state, cbm_c64), this), "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS);
// software list
SOFTWARE_LIST(config, "cart_list_vic10").set_original("vic10");
@@ -1380,7 +1380,7 @@ void c64_state::ntsc(machine_config &config)
//-------------------------------------------------
-// machine_config( pet64 )
+// MACHINE_CONFIG( pet64 )
//-------------------------------------------------
void c64_state::pet64(machine_config &config)
@@ -1391,7 +1391,7 @@ void c64_state::pet64(machine_config &config)
//-------------------------------------------------
-// machine_config( ntsc_sx )
+// MACHINE_CONFIG( ntsc_sx )
//-------------------------------------------------
void sx64_state::ntsc_sx(machine_config &config)
@@ -1409,7 +1409,7 @@ void sx64_state::ntsc_sx(machine_config &config)
//-------------------------------------------------
-// machine_config( ntsc_dx )
+// MACHINE_CONFIG( ntsc_dx )
//-------------------------------------------------
void sx64_state::ntsc_dx(machine_config &config)
@@ -1422,7 +1422,7 @@ void sx64_state::ntsc_dx(machine_config &config)
//-------------------------------------------------
-// machine_config( ntsc_c )
+// MACHINE_CONFIG( ntsc_c )
//-------------------------------------------------
void c64c_state::ntsc_c(machine_config &config)
@@ -1436,7 +1436,7 @@ void c64c_state::ntsc_c(machine_config &config)
//-------------------------------------------------
-// machine_config( pal )
+// MACHINE_CONFIG( pal )
//-------------------------------------------------
void c64_state::pal(machine_config &config)
@@ -1537,8 +1537,8 @@ void c64_state::pal(machine_config &config)
m_user->pl_handler().set(FUNC(c64_state::write_user_pb7));
m_user->pm_handler().set(FUNC(c64_state::write_user_pa2));
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(c64_state, cbm_c64), this), "p00,prg,t64", CBM_QUICKLOAD_DELAY);
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(c64_state, cbm_c64), this), "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS);
// software list
SOFTWARE_LIST(config, "cart_list_vic10").set_original("vic10");
@@ -1556,7 +1556,7 @@ void c64_state::pal(machine_config &config)
//-------------------------------------------------
-// machine_config( pal_sx )
+// MACHINE_CONFIG( pal_sx )
//-------------------------------------------------
void sx64_state::pal_sx(machine_config &config)
@@ -1574,7 +1574,7 @@ void sx64_state::pal_sx(machine_config &config)
//-------------------------------------------------
-// machine_config( pal_c )
+// MACHINE_CONFIG( pal_c )
//-------------------------------------------------
void c64c_state::pal_c(machine_config &config)
@@ -1588,7 +1588,7 @@ void c64c_state::pal_c(machine_config &config)
//-------------------------------------------------
-// machine_config( pal_gs )
+// MACHINE_CONFIG( pal_gs )
//-------------------------------------------------
void c64gs_state::pal_gs(machine_config &config)
@@ -1687,8 +1687,8 @@ void c64gs_state::pal_gs(machine_config &config)
m_user->pl_handler().set(FUNC(c64_state::write_user_pb7));
m_user->pm_handler().set(FUNC(c64_state::write_user_pa2));
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(c64_state, cbm_c64), this), "p00,prg,t64", CBM_QUICKLOAD_DELAY);
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(c64_state, cbm_c64), this), "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS);
// software list
SOFTWARE_LIST(config, "cart_list_vic10").set_original("vic10");
diff --git a/src/mame/drivers/c64dtv.cpp b/src/mame/drivers/c64dtv.cpp
index ba115565d03..d8843f8b1ec 100644
--- a/src/mame/drivers/c64dtv.cpp
+++ b/src/mame/drivers/c64dtv.cpp
@@ -49,15 +49,14 @@ INPUT_PORTS_END
// MACHINE DRIVERS
//**************************************************************************
-void c64dtv_state::c64dtv(machine_config &config)
-{
+MACHINE_CONFIG_START(c64dtv_state::c64dtv)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(c64dtv_state::screen_update));
- screen.set_size(640,480);
- screen.set_visarea_full();
- screen.set_refresh_hz(30);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(c64dtv_state, screen_update)
+ MCFG_SCREEN_SIZE(640,480)
+ MCFG_SCREEN_VISIBLE_AREA(0,639, 0,479)
+ MCFG_SCREEN_REFRESH_RATE(30)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/c65.cpp b/src/mame/drivers/c65.cpp
index 69d0e552db1..2795a1861ef 100644
--- a/src/mame/drivers/c65.cpp
+++ b/src/mame/drivers/c65.cpp
@@ -267,7 +267,7 @@ WRITE8_MEMBER(c65_state::vic4567_dummy_w)
m_VIC3_ControlB = data;
break;
default:
- printf("%02x %02x\n", offset, data);
+ printf("%02x %02x\n",offset,data);
break;
}
@@ -402,9 +402,9 @@ READ8_MEMBER(c65_state::CIASelect_r)
switch((offset & 0x700) | 0x800)
{
case 0xc00:
- return m_cia0->read(offset);
+ return m_cia0->read(space,offset);
case 0xd00:
- return m_cia1->read(offset);
+ return m_cia1->read(space,offset);
default:
printf("Unknown I/O access read to offset %04x\n",offset);
break;
@@ -425,14 +425,14 @@ WRITE8_MEMBER(c65_state::CIASelect_w)
switch((offset & 0x700) | 0x800)
{
case 0xc00:
- m_cia0->write(offset, data);
+ m_cia0->write(space,offset,data);
break;
case 0xd00:
- m_cia1->write(offset, data);
+ m_cia1->write(space,offset,data);
break;
default:
- printf("Unknown I/O access write to offset %04x data = %02x\n", offset, data);
+ printf("Unknown I/O access write to offset %04x data = %02x\n",offset,data);
break;
}
}
@@ -684,39 +684,39 @@ WRITE_LINE_MEMBER(c65_state::cia0_irq)
// c65_irq(state || m_vicirq);
}
-void c65_state::c65(machine_config &config)
-{
+MACHINE_CONFIG_START(c65_state::c65)
+
/* basic machine hardware */
- M4510(config, m_maincpu, MAIN_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &c65_state::c65_map);
- m_maincpu->set_vblank_int("screen", FUNC(c65_state::vic3_vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", M4510, MAIN_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(c65_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", c65_state, vic3_vblank_irq)
- MOS6526(config, m_cia0, MAIN_CLOCK);
- m_cia0->set_tod_clock(60);
- m_cia0->irq_wr_callback().set(FUNC(c65_state::cia0_irq));
- m_cia0->pa_rd_callback().set(FUNC(c65_state::cia0_porta_r));
- m_cia0->pa_wr_callback().set(FUNC(c65_state::cia0_porta_w));
- m_cia0->pb_rd_callback().set(FUNC(c65_state::cia0_portb_r));
- m_cia0->pb_wr_callback().set(FUNC(c65_state::cia0_portb_w));
+ MCFG_DEVICE_ADD("cia_0", MOS6526, MAIN_CLOCK)
+ MCFG_MOS6526_TOD(60)
+ MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(*this, c65_state, cia0_irq))
+ MCFG_MOS6526_PA_INPUT_CALLBACK(READ8(*this, c65_state, cia0_porta_r))
+ MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(*this, c65_state, cia0_porta_w))
+ MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(*this, c65_state, cia0_portb_r))
+ MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(*this, c65_state, cia0_portb_w))
- MOS6526(config, m_cia1, MAIN_CLOCK);
- m_cia1->set_tod_clock(60);
-// m_cia1->irq_wr_callback().set(FUNC(c65_state::c65_cia1_interrupt));
-// m_cia1->pa_rd_callback().set(FUNC(c65_state::c65_cia1_port_a_r));
-// m_cia1->pa_wr_callback().set(FUNC(c65_state::c65_cia1_port_a_w));
+ MCFG_DEVICE_ADD("cia_1", MOS6526, MAIN_CLOCK)
+ MCFG_MOS6526_TOD(60)
+// MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(*this, c65_state, c65_cia1_interrupt))
+// MCFG_MOS6526_PA_INPUT_CALLBACK(READ8(*this, c65_state, c65_cia1_port_a_r))
+// MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(*this, c65_state, c65_cia1_port_a_w))
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
-// m_screen->set_refresh_hz(60);
-// m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- m_screen->set_screen_update(FUNC(c65_state::screen_update));
-// m_screen->set_size(32*8, 32*8);
-// m_screen->set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- m_screen->set_raw(MAIN_CLOCK*4, 910, 0, 640, 262, 0, 200); // mods needed
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_UPDATE_DRIVER(c65_state, screen_update)
+// MCFG_SCREEN_SIZE(32*8, 32*8)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK*4, 910, 0, 640, 262, 0, 200) // mods needed
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_c65);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_c65)
PALETTE(config, m_palette, FUNC(c65_state::c65_palette), 0x100);
@@ -726,8 +726,8 @@ void c65_state::c65(machine_config &config)
// 2x 8580 SID
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("c65_flop");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "c65_flop")
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/c80.cpp b/src/mame/drivers/c80.cpp
index 44cd3b761fe..6fc5b7466ef 100644
--- a/src/mame/drivers/c80.cpp
+++ b/src/mame/drivers/c80.cpp
@@ -254,8 +254,7 @@ void c80_state::machine_start()
/* Machine Driver */
-void c80_state::c80(machine_config &config)
-{
+MACHINE_CONFIG_START(c80_state::c80)
/* basic machine hardware */
Z80(config, m_maincpu, 2500000); /* U880D */
m_maincpu->set_addrmap(AS_PROGRAM, &c80_state::c80_mem);
@@ -276,15 +275,15 @@ void c80_state::c80(machine_config &config)
z80pio_device& pio2(Z80PIO(config, Z80PIO2_TAG, XTAL(2500000)));
pio2.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED )
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
/* internal ram */
RAM(config, RAM_TAG).set_default_size("1K");
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/c900.cpp b/src/mame/drivers/c900.cpp
index bec1220521e..3e969f1df97 100644
--- a/src/mame/drivers/c900.cpp
+++ b/src/mame/drivers/c900.cpp
@@ -35,9 +35,7 @@ To Do:
#include "machine/z80scc.h"
#include "bus/rs232/rs232.h"
#include "machine/z8536.h"
-#include "sound/spkrdev.h"
#include "emupal.h"
-#include "speaker.h"
class c900_state : public driver_device
@@ -46,26 +44,17 @@ public:
c900_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
- , m_spkrdev(*this, "speaker")
{ }
void c900(machine_config &config);
private:
- void sound_pb_w(u8 data);
-
void data_map(address_map &map);
void io_map(address_map &map);
void mem_map(address_map &map);
required_device<cpu_device> m_maincpu;
- required_device<speaker_sound_device> m_spkrdev;
};
-void c900_state::sound_pb_w(u8 data)
-{
- m_spkrdev->level_w(BIT(data, 0));
-}
-
void c900_state::mem_map(address_map &map)
{
map(0x00000, 0x07fff).rom().region("roms", 0);
@@ -75,7 +64,6 @@ void c900_state::data_map(address_map &map)
{
map(0x00000, 0x07fff).rom().region("roms", 0);
map(0x08000, 0x6ffff).ram();
- map(0xf0000, 0xf1fff).ram();
}
void c900_state::io_map(address_map &map)
@@ -105,21 +93,19 @@ static GFXDECODE_START( gfx_c900 )
GFXDECODE_ENTRY( "chargen", 0x0000, c900_charlayout, 0, 1 )
GFXDECODE_END
-void c900_state::c900(machine_config &config)
-{
+MACHINE_CONFIG_START(c900_state::c900)
/* basic machine hardware */
- Z8001(config, m_maincpu, 12_MHz_XTAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &c900_state::mem_map);
- m_maincpu->set_addrmap(AS_DATA, &c900_state::data_map);
- m_maincpu->set_addrmap(AS_IO, &c900_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z8001, XTAL(12'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_DATA_MAP(data_map)
+ MCFG_DEVICE_IO_MAP(io_map)
- GFXDECODE(config, "gfxdecode", "palette", gfx_c900);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_c900)
PALETTE(config, "palette", palette_device::MONOCHROME);
- z8036_device &cio(Z8036(config, "cio", 12_MHz_XTAL / 16)); // SNDCLK = 750kHz
- cio.pb_wr_cb().set(FUNC(c900_state::sound_pb_w));
+ Z8036(config, "cio", 6'000'000);
- scc8030_device &scc(SCC8030(config, "scc", 12_MHz_XTAL / 2)); // 5'850'000 is the ideal figure
+ scc8030_device& scc(SCC8030(config, "scc", 6'000'000)); // 5'850'000 is the ideal figure
/* Port B */
scc.out_txdb_callback().set("rs232", FUNC(rs232_port_device::write_txd));
scc.out_dtrb_callback().set("rs232", FUNC(rs232_port_device::write_dtr));
@@ -129,10 +115,7 @@ void c900_state::c900(machine_config &config)
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
rs232.rxd_handler().set("scc", FUNC(scc8030_device::rxb_w));
rs232.cts_handler().set("scc", FUNC(scc8030_device::ctsb_w));
-
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_spkrdev).add_route(ALL_OUTPUTS, "mono", 0.05);
-}
+MACHINE_CONFIG_END
ROM_START( c900 )
ROM_REGION16_LE( 0x8000, "roms", 0 )
diff --git a/src/mame/drivers/cabaret.cpp b/src/mame/drivers/cabaret.cpp
index eaf24dac033..ed7a8357389 100644
--- a/src/mame/drivers/cabaret.cpp
+++ b/src/mame/drivers/cabaret.cpp
@@ -365,13 +365,12 @@ INTERRUPT_GEN_MEMBER(cabaret_state::cabaret_interrupt)
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
-void cabaret_state::cabaret(machine_config &config)
-{
+MACHINE_CONFIG_START(cabaret_state::cabaret)
/* basic machine hardware */
- Z180(config, m_maincpu, XTAL(12'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cabaret_state::cabaret_map);
- m_maincpu->set_addrmap(AS_IO, &cabaret_state::cabaret_portmap);
- m_maincpu->set_vblank_int("screen", FUNC(cabaret_state::cabaret_interrupt));
+ MCFG_DEVICE_ADD("maincpu", Z180, XTAL(12'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(cabaret_map)
+ MCFG_DEVICE_IO_MAP(cabaret_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cabaret_state, cabaret_interrupt)
i8255_device &ppi1(I8255(config, "ppi1"));
ppi1.in_pa_callback().set_ioport("BUTTONS2");
@@ -390,21 +389,22 @@ void cabaret_state::cabaret(machine_config &config)
ppi3.in_pc_callback().set_ioport("DSW2");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(cabaret_state::screen_update_cabaret));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cabaret);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cabaret_state, screen_update_cabaret)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_cabaret)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x800);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
void cabaret_state::init_cabaret()
diff --git a/src/mame/drivers/calchase.cpp b/src/mame/drivers/calchase.cpp
index 6d9f8322993..c8303bb5c53 100644
--- a/src/mame/drivers/calchase.cpp
+++ b/src/mame/drivers/calchase.cpp
@@ -678,10 +678,10 @@ void calchase_state::machine_reset()
}
MACHINE_CONFIG_START(calchase_state::calchase)
- PENTIUM(config, m_maincpu, 133000000); // Cyrix 686MX-PR200 CPU
- m_maincpu->set_addrmap(AS_PROGRAM, &calchase_state::calchase_map);
- m_maincpu->set_addrmap(AS_IO, &calchase_state::calchase_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", PENTIUM, 133000000) // Cyrix 686MX-PR200 CPU
+ MCFG_DEVICE_PROGRAM_MAP(calchase_map)
+ MCFG_DEVICE_IO_MAP(calchase_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
pcat_common(config);
@@ -702,18 +702,18 @@ MACHINE_CONFIG_START(calchase_state::calchase)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- DAC_12BIT_R2R(config, "ldac", 0).add_route(ALL_OUTPUTS, "lspeaker", 0.25); // unknown DAC
- DAC_12BIT_R2R(config, "rdac", 0).add_route(ALL_OUTPUTS, "rspeaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("ldac", DAC_12BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("rdac", DAC_12BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(calchase_state::hostinv)
- PENTIUM(config, m_maincpu, 133000000); // Cyrix 686MX-PR200 CPU
- m_maincpu->set_addrmap(AS_PROGRAM, &calchase_state::calchase_map);
- m_maincpu->set_addrmap(AS_IO, &calchase_state::calchase_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", PENTIUM, 133000000) // Cyrix 686MX-PR200 CPU
+ MCFG_DEVICE_PROGRAM_MAP(calchase_map)
+ MCFG_DEVICE_IO_MAP(calchase_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
pcat_common(config);
@@ -730,11 +730,11 @@ MACHINE_CONFIG_START(calchase_state::hostinv)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- DAC_12BIT_R2R(config, "ldac", 0).add_route(ALL_OUTPUTS, "lspeaker", 0.25); // unknown DAC
- DAC_12BIT_R2R(config, "rdac", 0).add_route(ALL_OUTPUTS, "rspeaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("ldac", DAC_12BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("rdac", DAC_12BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/calcune.cpp b/src/mame/drivers/calcune.cpp
index 3ac491ca372..d2a544c0fbd 100644
--- a/src/mame/drivers/calcune.cpp
+++ b/src/mame/drivers/calcune.cpp
@@ -249,51 +249,51 @@ MACHINE_START_MEMBER(calcune_state,calcune)
m_vdp2->stop_timers();
}
-void calcune_state::calcune(machine_config &config)
-{
- M68000(config, m_maincpu, MASTER_CLOCK_NTSC / 7); /* 7.67 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &calcune_state::calcune_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(calcune_state::genesis_int_callback));
+MACHINE_CONFIG_START(calcune_state::calcune)
+ MCFG_DEVICE_ADD("maincpu", M68000, MASTER_CLOCK_NTSC / 7) /* 7.67 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(calcune_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(calcune_state,genesis_int_callback)
- Z80(config, "z80", MASTER_CLOCK_NTSC / 15).set_disable(); /* 3.58 MHz, no code is ever uploaded for the Z80, so it's unused here even if it is present on the PCB */
+ MCFG_DEVICE_ADD("z80", Z80, MASTER_CLOCK_NTSC / 15) /* 3.58 MHz */
+ MCFG_DEVICE_DISABLE() /* no code is ever uploaded for the Z80, so it's unused here even if it is present on the PCB */
MCFG_MACHINE_START_OVERRIDE(calcune_state,calcune)
MCFG_MACHINE_RESET_OVERRIDE(calcune_state,calcune)
- screen_device &screen(SCREEN(config, "megadriv", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); // Vblank handled manually.
- screen.set_size(64*8, 620);
- screen.set_visarea(0, 40*8-1, 0, 28*8-1);
- screen.set_screen_update(FUNC(calcune_state::screen_update_calcune));
-
- SEGA315_5313(config, m_vdp, MASTER_CLOCK_NTSC, m_maincpu);
- m_vdp->set_is_pal(false);
- m_vdp->snd_irq().set(FUNC(calcune_state::vdp_sndirqline_callback_genesis_z80));
- m_vdp->lv6_irq().set(FUNC(calcune_state::vdp_lv6irqline_callback_genesis_68k));
- m_vdp->lv4_irq().set(FUNC(calcune_state::vdp_lv4irqline_callback_genesis_68k));
- m_vdp->set_alt_timing(1);
- m_vdp->set_pal_write_base(0x0000);
- m_vdp->set_palette(m_palette);
- m_vdp->add_route(ALL_OUTPUTS, "lspeaker", 0.25);
- m_vdp->add_route(ALL_OUTPUTS, "rspeaker", 0.25);
-
- SEGA315_5313(config, m_vdp2, MASTER_CLOCK_NTSC, m_maincpu);
- m_vdp2->set_is_pal(false);
+ MCFG_SCREEN_ADD("megadriv", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) // Vblank handled manually.
+ MCFG_SCREEN_SIZE(64*8, 620)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(calcune_state, screen_update_calcune)
+
+ MCFG_DEVICE_ADD("gen_vdp", SEGA315_5313, MASTER_CLOCK_NTSC, "maincpu")
+ MCFG_SEGA315_5313_IS_PAL(false)
+ MCFG_SEGA315_5313_SND_IRQ_CALLBACK(WRITELINE(*this, calcune_state, vdp_sndirqline_callback_genesis_z80));
+ MCFG_SEGA315_5313_LV6_IRQ_CALLBACK(WRITELINE(*this, calcune_state, vdp_lv6irqline_callback_genesis_68k));
+ MCFG_SEGA315_5313_LV4_IRQ_CALLBACK(WRITELINE(*this, calcune_state, vdp_lv4irqline_callback_genesis_68k));
+ MCFG_SEGA315_5313_ALT_TIMING(1);
+ MCFG_SEGA315_5313_PAL_WRITE_BASE(0x0000);
+ MCFG_SEGA315_5313_PALETTE("palette")
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker",0.25)
+
+ MCFG_DEVICE_ADD("gen_vdp2", SEGA315_5313, MASTER_CLOCK_NTSC, "maincpu")
+ MCFG_SEGA315_5313_IS_PAL(false)
// are these not hooked up or should they OR with the other lines?
-// m_vdp2->snd_irq().set(FUNC(calcune_state::vdp_sndirqline_callback_genesis_z80));
-// m_vdp2->lv6_irq().set(FUNC(calcune_state::vdp_lv6irqline_callback_genesis_68k));
-// m_vdp2->lv4_irq().set(FUNC(calcune_state::vdp_lv4irqline_callback_genesis_68k));
- m_vdp2->set_alt_timing(1);
- m_vdp2->set_pal_write_base(0x0c0);
- m_vdp2->set_palette(m_palette);
- m_vdp2->add_route(ALL_OUTPUTS, "lspeaker", 0.25);
- m_vdp2->add_route(ALL_OUTPUTS, "rspeaker", 0.25);
+// MCFG_SEGA315_5313_SND_IRQ_CALLBACK(WRITELINE(*this, calcune_state, vdp_sndirqline_callback_genesis_z80));
+// MCFG_SEGA315_5313_LV6_IRQ_CALLBACK(WRITELINE(*this, calcune_state, vdp_lv6irqline_callback_genesis_68k));
+// MCFG_SEGA315_5313_LV4_IRQ_CALLBACK(WRITELINE(*this, calcune_state, vdp_lv4irqline_callback_genesis_68k));
+ MCFG_SEGA315_5313_ALT_TIMING(1);
+ MCFG_SEGA315_5313_PAL_WRITE_BASE(0x0c0);
+ MCFG_SEGA315_5313_PALETTE("palette")
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker",0.25)
- TIMER(config, "scantimer").configure_scanline("gen_vdp", FUNC(sega315_5313_device::megadriv_scanline_timer_callback_alt_timing), "megadriv", 0, 1);
- TIMER(config, "scantimer2").configure_scanline("gen_vdp2", FUNC(sega315_5313_device::megadriv_scanline_timer_callback_alt_timing), "megadriv", 0, 1);
+ MCFG_TIMER_DEVICE_ADD_SCANLINE("scantimer", "gen_vdp", sega315_5313_device, megadriv_scanline_timer_callback_alt_timing, "megadriv", 0, 1)
+ MCFG_TIMER_DEVICE_ADD_SCANLINE("scantimer2", "gen_vdp2", sega315_5313_device, megadriv_scanline_timer_callback_alt_timing, "megadriv", 0, 1)
- PALETTE(config, m_palette).set_entries(0xc0*2);
+ MCFG_PALETTE_ADD("palette", 0xc0*2)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -301,10 +301,10 @@ void calcune_state::calcune(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ymz280b_device &ymz(YMZ280B(config, "ymz", XTAL(16'934'400)));
- ymz.add_route(0, "lspeaker", 1.0);
- ymz.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, XTAL(16'934'400))
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
void calcune_state::init_calcune()
{
diff --git a/src/mame/drivers/calomega.cpp b/src/mame/drivers/calomega.cpp
index 7ab70433082..ab1c504dae1 100644
--- a/src/mame/drivers/calomega.cpp
+++ b/src/mame/drivers/calomega.cpp
@@ -2570,12 +2570,11 @@ WRITE_LINE_MEMBER(calomega_state::write_acia_clock)
* Machine Drivers *
*************************************************/
-void calomega_state::sys903(machine_config &config)
-{
+MACHINE_CONFIG_START(calomega_state::sys903)
/* basic machine hardware */
- M6502(config, m_maincpu, CPU_CLOCK); /* confirmed */
- m_maincpu->set_addrmap(AS_PROGRAM, &calomega_state::sys903_map);
- m_maincpu->set_vblank_int("screen", FUNC(calomega_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M6502, CPU_CLOCK) /* confirmed */
+ MCFG_DEVICE_PROGRAM_MAP(sys903_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", calomega_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -2589,13 +2588,13 @@ void calomega_state::sys903(machine_config &config)
m_pia[1]->writepb_handler().set(FUNC(calomega_state::s903_mux_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size((39+1)*8, (31+1)*8); /* Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1) */
- screen.set_visarea(0*8, 32*8-1, 0*8, 31*8-1); /* Taken from MC6845 init, registers 01 & 06 */
- screen.set_screen_update(FUNC(calomega_state::screen_update_calomega));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE((39+1)*8, (31+1)*8) /* Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1) */
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 31*8-1) /* Taken from MC6845 init, registers 01 & 06 */
+ MCFG_SCREEN_UPDATE_DRIVER(calomega_state, screen_update_calomega)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_calomega);
PALETTE(config, m_palette, FUNC(calomega_state::calomega_palette), 256); // or 128? is the upper half of the PROMs really valid colors?
@@ -2615,35 +2614,35 @@ void calomega_state::sys903(machine_config &config)
ACIA6850(config, m_acia6850_0, 0);
m_acia6850_0->txd_handler().set(FUNC(calomega_state::write_acia_tx));
- clock_device &aciabaud(CLOCK(config, "aciabaud", UART_CLOCK));
- aciabaud.signal_handler().set(FUNC(calomega_state::write_acia_clock));
-}
+ MCFG_DEVICE_ADD("aciabaud", CLOCK, UART_CLOCK)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, calomega_state, write_acia_clock))
+MACHINE_CONFIG_END
-void calomega_state::s903mod(machine_config &config)
-{
+MACHINE_CONFIG_START(calomega_state::s903mod)
sys903(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &calomega_state::s903mod_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(s903mod_map)
/* sound hardware */
subdevice<ay8912_device>("ay8912")->port_a_read_callback().set_constant(0);
- config.device_remove("acia6850_0");
+ MCFG_DEVICE_REMOVE("acia6850_0")
- config.device_remove("aciabaud");
-}
+ MCFG_DEVICE_REMOVE("aciabaud")
+MACHINE_CONFIG_END
-void calomega_state::sys905(machine_config &config)
-{
+MACHINE_CONFIG_START(calomega_state::sys905)
sys903(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &calomega_state::sys905_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sys905_map)
m_pia[0]->readpa_handler().set(FUNC(calomega_state::s905_mux_port_r));
m_pia[0]->writepb_handler().set(FUNC(calomega_state::lamps_905_w));
@@ -2653,20 +2652,19 @@ void calomega_state::sys905(machine_config &config)
/* sound hardware */
subdevice<ay8912_device>("ay8912")->port_a_read_callback().set_constant(0);
- config.device_remove("acia6850_0");
+ MCFG_DEVICE_REMOVE("acia6850_0")
- config.device_remove("aciabaud");
-}
+ MCFG_DEVICE_REMOVE("aciabaud")
+MACHINE_CONFIG_END
-void calomega_state::sys906(machine_config &config)
-{
+MACHINE_CONFIG_START(calomega_state::sys906)
sys903(config);
/* basic machine hardware */
- M65C02(config.replace(), m_maincpu, CPU_CLOCK); /* guess */
- m_maincpu->set_addrmap(AS_PROGRAM, &calomega_state::sys906_map);
+ MCFG_DEVICE_REPLACE("maincpu", M65C02, CPU_CLOCK) /* guess */
+ MCFG_DEVICE_PROGRAM_MAP(sys906_map)
m_pia[0]->readpa_handler().set(FUNC(calomega_state::pia0_ain_r));
m_pia[0]->readpb_handler().set(FUNC(calomega_state::pia0_bin_r));
@@ -2679,14 +2677,15 @@ void calomega_state::sys906(machine_config &config)
m_pia[1]->writepa_handler().set(FUNC(calomega_state::pia1_aout_w));
m_pia[1]->writepb_handler().set(FUNC(calomega_state::pia1_bout_w));
- m_gfxdecode->set_info(gfx_sys906);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_sys906)
/* sound hardware */
subdevice<ay8912_device>("ay8912")->port_a_read_callback().set_ioport("SW2"); /* From PCB pic. Value is stored at $0539 */
- config.device_remove("acia6850_0");
- config.device_remove("aciabaud");
-}
+ MCFG_DEVICE_REMOVE("acia6850_0")
+
+ MCFG_DEVICE_REMOVE("aciabaud")
+MACHINE_CONFIG_END
/*************************************************
diff --git a/src/mame/drivers/calorie.cpp b/src/mame/drivers/calorie.cpp
index 5d3236a7d39..7f834415829 100644
--- a/src/mame/drivers/calorie.cpp
+++ b/src/mame/drivers/calorie.cpp
@@ -465,28 +465,28 @@ void calorie_state::machine_reset()
}
-void calorie_state::calorie(machine_config &config)
-{
+MACHINE_CONFIG_START(calorie_state::calorie)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* 4 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &calorie_state::calorie_map);
- m_maincpu->set_addrmap(AS_OPCODES, &calorie_state::decrypted_opcodes_map);
- m_maincpu->set_vblank_int("screen", FUNC(calorie_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,4000000) /* 4 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(calorie_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", calorie_state, irq0_line_hold)
- z80_device &audiocpu(Z80(config, "audiocpu", 3000000)); /* 3 MHz */
- audiocpu.set_addrmap(AS_PROGRAM, &calorie_state::calorie_sound_map);
- audiocpu.set_addrmap(AS_IO, &calorie_state::calorie_sound_io_map);
- audiocpu.set_periodic_int(FUNC(calorie_state::irq0_line_hold), attotime::from_hz(64));
+ MCFG_DEVICE_ADD("audiocpu", Z80,3000000) /* 3 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(calorie_sound_map)
+ MCFG_DEVICE_IO_MAP(calorie_sound_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(calorie_state, irq0_line_hold, 64)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 16, 256-16-1);
- screen.set_screen_update(FUNC(calorie_state::screen_update_calorie));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(calorie_state, screen_update_calorie)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_calorie);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 0x100);
@@ -501,7 +501,7 @@ void calorie_state::calorie(machine_config &config)
YM2149(config, "ay2", 1500000).add_route(ALL_OUTPUTS, "mono", 0.8);
YM2149(config, "ay3", 1500000).add_route(ALL_OUTPUTS, "mono", 0.8);
-}
+MACHINE_CONFIG_END
void calorie_state::caloriee(machine_config &config)
{
diff --git a/src/mame/drivers/camplynx.cpp b/src/mame/drivers/camplynx.cpp
index 4252753af13..7f05a0cfd4c 100644
--- a/src/mame/drivers/camplynx.cpp
+++ b/src/mame/drivers/camplynx.cpp
@@ -856,7 +856,8 @@ void camplynx_state::lynx_common(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_6BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.375); // unknown DAC
- VOLTAGE_REGULATOR(config, "vref").add_route(0, m_dac, 1.0, DAC_VREF_POS_INPUT).add_route(0, m_dac, -1.0, DAC_VREF_NEG_INPUT);
+ VOLTAGE_REGULATOR(config, "vref").set_output(5.0)
+ .add_route(0, m_dac, 1.0, DAC_VREF_POS_INPUT).add_route(0, m_dac, -1.0, DAC_VREF_NEG_INPUT);
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.02);
}
@@ -867,8 +868,7 @@ void camplynx_state::lynx_disk(machine_config &config)
FLOPPY_CONNECTOR(config, m_floppy1, camplynx_floppies, "525qd", camplynx_state::camplynx_floppy_formats).enable_sound(true);
}
-void camplynx_state::lynx48k(machine_config &config)
-{
+MACHINE_CONFIG_START(camplynx_state::lynx48k)
/* basic machine hardware */
Z80(config, m_maincpu, 24_MHz_XTAL / 6);
m_maincpu->set_addrmap(AS_PROGRAM, &camplynx_state::lynx48k_mem);
@@ -877,19 +877,19 @@ void camplynx_state::lynx48k(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(camplynx_state, lynx48k)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(512, 480);
- screen.set_visarea_full();
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(512, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 479)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
lynx_common(config);
- CASSETTE(config, m_cass);
- m_cass->set_formats(lynx48k_cassette_formats);
- m_cass->set_default_state(CASSETTE_PLAY | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED);
- m_cass->set_interface("camplynx_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(lynx48k_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED)
+ MCFG_CASSETTE_INTERFACE("camplynx_cass")
/* devices */
MC6845(config, m_crtc, 12_MHz_XTAL / 8);
@@ -901,7 +901,7 @@ void camplynx_state::lynx48k(machine_config &config)
/* software lists */
SOFTWARE_LIST(config, "cass_list").set_original("camplynx_cass");
-}
+MACHINE_CONFIG_END
void camplynx_state::lynx96k(machine_config &config)
{
@@ -915,8 +915,7 @@ void camplynx_state::lynx96k(machine_config &config)
SOFTWARE_LIST(config, "flop_list").set_original("camplynx_flop").set_filter("96K");
}
-void camplynx_state::lynx128k(machine_config &config)
-{
+MACHINE_CONFIG_START(camplynx_state::lynx128k)
/* basic machine hardware */
Z80(config, m_maincpu, 24_MHz_XTAL / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &camplynx_state::lynx128k_mem);
@@ -925,19 +924,19 @@ void camplynx_state::lynx128k(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(camplynx_state, lynx128k)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(512, 480);
- screen.set_visarea_full();
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(512, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 479)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
lynx_common(config);
- CASSETTE(config, m_cass);
- m_cass->set_formats(lynx128k_cassette_formats);
- m_cass->set_default_state(CASSETTE_PLAY | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED);
- m_cass->set_interface("camplynx_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(lynx128k_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED)
+ MCFG_CASSETTE_INTERFACE("camplynx_cass")
/* devices */
MC6845(config, m_crtc, 12_MHz_XTAL / 8);
@@ -952,7 +951,7 @@ void camplynx_state::lynx128k(machine_config &config)
/* software lists */
SOFTWARE_LIST(config, "cass_list").set_original("camplynx_cass");
SOFTWARE_LIST(config, "flop_list").set_original("camplynx_flop").set_filter("128K");
-}
+MACHINE_CONFIG_END
void camplynx_state::init_lynx48k()
{
diff --git a/src/mame/drivers/candela.cpp b/src/mame/drivers/candela.cpp
index 09528cc6d03..d08f6cb02f5 100644
--- a/src/mame/drivers/candela.cpp
+++ b/src/mame/drivers/candela.cpp
@@ -305,19 +305,19 @@ READ8_MEMBER( can09t_state::read )
{
case X0XX: // ACIA
LOGPLA("-- ACIA\n");
- byte = m_acia->read(offset & 1);
+ byte = m_acia->read(space, offset & 1);
break;
case X1XX: // SYSPIA
LOGPLA("-- SYSPIA\n");
- byte = m_syspia->read_alt(offset & 3);
+ byte = m_syspia->read_alt(space, offset & 3);
break;
case X2XX: // USRPIA
LOGPLA("-- USRPIA\n");
- byte = m_usrpia->read_alt(offset & 3);
+ byte = m_usrpia->read_alt(space, offset & 3);
break;
case X3XX: // PTM
LOGPLA("-- PTM\n");
- byte = m_ptm->read(offset & 7);
+ byte = m_ptm->read(space, offset & 7);
break;
case X4XX: //
LOGPLA("-- XX4X\n");
@@ -387,19 +387,19 @@ WRITE8_MEMBER( can09t_state::write )
{
case X0XX: // ACIA
LOGPLA("-- ACIA\n");
- m_acia->write(offset & 1, data);
+ m_acia->write(space, offset & 1, data);
break;
case X1XX: // SYSPIA
LOGPLA("-- SYSPIA\n");
- m_syspia->write_alt(offset & 3, data);
+ m_syspia->write_alt(space, offset & 3, data);
break;
case X2XX: // USRPIA
LOGPLA("-- USRPIA\n");
- m_usrpia->write_alt(offset & 3, data);
+ m_usrpia->write_alt(space, offset & 3, data);
break;
case X3XX: // PTM
LOGPLA("-- PTM\n");
- m_ptm->write(offset & 7, data);
+ m_ptm->write(space, offset & 7, data);
break;
case X4XX: //
LOGPLA("-- XX4X\n");
@@ -714,10 +714,9 @@ void can09t_state::can09t(machine_config &config)
#define CAN09_X1_CLOCK 22.1184_MHz_XTAL /* UKI 22118.40 Khz */
#define CAN09_CPU_CLOCK (CAN09_X1_CLOCK / 16) /* ~1.38MHz Divider needs to be check but is the most likelly */
-void can09_state::can09(machine_config &config)
-{
- MC6809E(config, m_maincpu, CAN09_CPU_CLOCK); // MC68A09EP
- m_maincpu->set_addrmap(AS_PROGRAM, &can09_state::can09_map);
+MACHINE_CONFIG_START(can09_state::can09)
+ MCFG_DEVICE_ADD("maincpu", MC6809E, CAN09_CPU_CLOCK) // MC68A09EP
+ MCFG_DEVICE_PROGRAM_MAP(can09_map)
/* RAM banks */
RAM(config, RAM_TAG).set_default_size("768K");
@@ -753,18 +752,18 @@ void can09_state::can09(machine_config &config)
/* screen - totally faked value for now */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_raw(4_MHz_XTAL / 2, 512, 0, 512, 576, 0, 576);
- screen.set_screen_update(FUNC(can09_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_RAW_PARAMS(4_MHz_XTAL / 2, 512, 0, 512, 576, 0, 576)
+ MCFG_SCREEN_UPDATE_DRIVER(can09_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
/* Floppy */
WD1770(config, "wd1770", 8_MHz_XTAL); // TODO: Verify 8MHz UKI crystal assumed to be used
#if 0
- FLOPPY_CONNECTOR(config, "wd1770:0", candela_floppies, "3dd", floppy_image_device::default_floppy_formats);
- SOFTWARE_LIST(config, "flop3_list").set_original("candela");
+ MCFG_FLOPPY_DRIVE_ADD("wd1770:0", candela_floppies, "3dd", floppy_image_device::default_floppy_formats)
+ MCFG_SOFTWARE_LIST_ADD("flop3_list", "candela")
#endif
/* --PIA inits----------------------- */
@@ -783,11 +782,11 @@ void can09_state::can09(machine_config &config)
/* 0xFF93 0xE034 (PIA1 Port B) = 0x18 - Write Data on Port B */
#if 1
- PIA6821(config, PIA2_TAG, 0); // CPU board
- ACIA6850(config, "acia1", 0); // CPU board
- ACIA6850(config, "acia2", 0); // CPU board
+ MCFG_DEVICE_ADD(PIA2_TAG, PIA6821, 0) // CPU board
+ MCFG_DEVICE_ADD("acia1", ACIA6850, 0) // CPU board
+ MCFG_DEVICE_ADD("acia2", ACIA6850, 0) // CPU board
#endif
-}
+MACHINE_CONFIG_END
ROM_START( can09t ) /* The smaller grey computer */
ROM_REGION(0x10000, "roms", 0)
diff --git a/src/mame/drivers/canon_s80.cpp b/src/mame/drivers/canon_s80.cpp
index d103fa2cfcc..ab08eab9614 100644
--- a/src/mame/drivers/canon_s80.cpp
+++ b/src/mame/drivers/canon_s80.cpp
@@ -39,12 +39,11 @@ void canons80_state::canons80_map(address_map &map)
map(0x8000, 0xffff).rom();
}
-void canons80_state::canons80(machine_config &config)
-{
+MACHINE_CONFIG_START(canons80_state::canons80)
/* basic machine hardware */
- hd6301_cpu_device &maincpu(HD6301(config, "maincpu", 5000000)); /* hd63a01xop 5 MHz guessed: TODO: check on PCB */
- maincpu.set_addrmap(AS_PROGRAM, &canons80_state::canons80_map);
-}
+ MCFG_DEVICE_ADD("maincpu", HD6301, 5000000) /* hd63a01xop 5 MHz guessed: TODO: check on PCB */
+ MCFG_DEVICE_PROGRAM_MAP(canons80_map)
+MACHINE_CONFIG_END
void canons80_state::init_canons80()
{
diff --git a/src/mame/drivers/canyon.cpp b/src/mame/drivers/canyon.cpp
index 22e5d3b0822..cbb137f3ec6 100644
--- a/src/mame/drivers/canyon.cpp
+++ b/src/mame/drivers/canyon.cpp
@@ -239,11 +239,11 @@ GFXDECODE_END
*
*************************************/
-void canyon_state::canyon(machine_config &config)
-{
+MACHINE_CONFIG_START(canyon_state::canyon)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 12.096_MHz_XTAL / 16);
- m_maincpu->set_addrmap(AS_PROGRAM, &canyon_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, 12.096_MHz_XTAL / 16)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
F9334(config, m_outlatch); // C7
m_outlatch->q_out_cb<0>().set("discrete", FUNC(discrete_device::write_line<CANYON_WHISTLE1_EN>));
@@ -256,23 +256,23 @@ void canyon_state::canyon(machine_config &config)
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 8);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(12.096_MHz_XTAL / 2, 384, 0, 256, 262, 0, 240); // HSYNC = 15,750 Hz
- screen.set_screen_update(FUNC(canyon_state::screen_update_canyon));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, m6502_device::NMI_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(12.096_MHz_XTAL / 2, 384, 0, 256, 262, 0, 240) // HSYNC = 15,750 Hz
+ MCFG_SCREEN_UPDATE_DRIVER(canyon_state, screen_update_canyon)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", m6502_device::NMI_LINE))
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_canyon);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_canyon)
PALETTE(config, m_palette, FUNC(canyon_state::canyon_palette), 4);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- DISCRETE(config, m_discrete, canyon_discrete);
- m_discrete->add_route(0, "lspeaker", 1.0);
- m_discrete->add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, canyon_discrete)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/capbowl.cpp b/src/mame/drivers/capbowl.cpp
index 4475eb512b2..fec21ecd991 100644
--- a/src/mame/drivers/capbowl.cpp
+++ b/src/mame/drivers/capbowl.cpp
@@ -316,35 +316,33 @@ void capbowl_state::machine_reset()
}
-void capbowl_state::capbowl(machine_config &config)
-{
+MACHINE_CONFIG_START(capbowl_state::capbowl)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, MASTER_CLOCK / 4); // MC68B09EP
- m_maincpu->set_addrmap(AS_PROGRAM, &capbowl_state::capbowl_map);
- m_maincpu->set_vblank_int("screen", FUNC(capbowl_state::interrupt));
+ MCFG_DEVICE_ADD("maincpu", MC6809E, MASTER_CLOCK / 4) // MC68B09EP
+ MCFG_DEVICE_PROGRAM_MAP(capbowl_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", capbowl_state, interrupt)
- // watchdog: 555 timer 16 cycles, edge triggered, ~0.3s
- attotime const period = PERIOD_OF_555_ASTABLE(100000.0, 100000.0, 0.1e-6);
- WATCHDOG_TIMER(config, m_watchdog).set_time(period * 16 - period / 2);
+ WATCHDOG_TIMER(config, m_watchdog).set_time(PERIOD_OF_555_ASTABLE(100000.0, 100000.0, 0.1e-6) * 15.5); // ~0.3s
- MC6809E(config, m_audiocpu, MASTER_CLOCK / 4); // MC68B09EP
- m_audiocpu->set_addrmap(AS_PROGRAM, &capbowl_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", MC6809E, MASTER_CLOCK / 4) // MC68B09EP
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_RANDOM);
- TICKET_DISPENSER(config, "ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+ MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_size(360, 256);
- m_screen->set_visarea(0, 359, 0, 244);
- m_screen->set_refresh_hz(57);
- m_screen->set_screen_update(FUNC(capbowl_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE(360, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 359, 0, 244)
+ MCFG_SCREEN_REFRESH_RATE(57)
+ MCFG_SCREEN_UPDATE_DRIVER(capbowl_state, screen_update)
- TMS34061(config, m_tms34061, 0);
- m_tms34061->set_rowshift(8); /* VRAM address is (row << rowshift) | col */
- m_tms34061->set_vram_size(0x10000);
- m_tms34061->int_callback().set_inputline("maincpu", M6809_FIRQ_LINE);
+ MCFG_DEVICE_ADD("tms34061", TMS34061, 0)
+ MCFG_TMS34061_ROWSHIFT(8) /* VRAM address is (row << rowshift) | col */
+ MCFG_TMS34061_VRAM_SIZE(0x10000) /* size of video RAM */
+ MCFG_TMS34061_INTERRUPT_CB(INPUTLINE("maincpu", M6809_FIRQ_LINE)) /* interrupt gen callback */
/* sound hardware */
SPEAKER(config, "speaker").front_center();
@@ -361,23 +359,23 @@ void capbowl_state::capbowl(machine_config &config)
ymsnd.add_route(3, "speaker", 0.75);
DAC0832(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void capbowl_state::bowlrama(machine_config &config)
-{
+MACHINE_CONFIG_START(capbowl_state::bowlrama)
capbowl(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &capbowl_state::bowlrama_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(bowlrama_map)
/* video hardware */
- m_screen->set_visarea(0, 359, 0, 239);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 359, 0, 239)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/capcom.cpp b/src/mame/drivers/capcom.cpp
index 9ce5ced5903..5bfc2af9c90 100644
--- a/src/mame/drivers/capcom.cpp
+++ b/src/mame/drivers/capcom.cpp
@@ -46,12 +46,11 @@ void capcom_state::init_capcom()
{
}
-void capcom_state::capcom(machine_config &config)
-{
+MACHINE_CONFIG_START(capcom_state::capcom)
/* basic machine hardware */
- M68000(config, m_maincpu, 16670000); // M68306
- m_maincpu->set_addrmap(AS_PROGRAM, &capcom_state::capcom_map);
-}
+ MCFG_DEVICE_ADD("maincpu", M68000, 16670000) // M68306
+ MCFG_DEVICE_PROGRAM_MAP(capcom_map)
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
/ Airborne (03/96)
diff --git a/src/mame/drivers/caprcyc.cpp b/src/mame/drivers/caprcyc.cpp
index c4debe1e3b6..ef07509a8f3 100644
--- a/src/mame/drivers/caprcyc.cpp
+++ b/src/mame/drivers/caprcyc.cpp
@@ -63,17 +63,17 @@ INPUT_PORTS_END
***************************************************************************/
-void caprcyc_state::caprcyc(machine_config &config)
-{
+MACHINE_CONFIG_START(caprcyc_state::caprcyc)
+
/* basic machine hardware */
- VR4300BE(config, m_maincpu, 100000000); // cpu configuration is unknown
- m_maincpu->set_addrmap(AS_PROGRAM, &caprcyc_state::caprcyc_map);
+ MCFG_DEVICE_ADD("maincpu", VR4300BE, 100000000) // cpu configuration is unknown
+ MCFG_DEVICE_PROGRAM_MAP(caprcyc_map)
/* no video! */
/* sound hardware */
//..
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cardinal.cpp b/src/mame/drivers/cardinal.cpp
index 30890c3299f..586ac76c7a3 100644
--- a/src/mame/drivers/cardinal.cpp
+++ b/src/mame/drivers/cardinal.cpp
@@ -16,12 +16,10 @@
#include "emu.h"
#include "cpu/mcs51/mcs51.h"
-#include "bus/rs232/rs232.h"
+//#include "bus/rs232/rs232.h"
#include "machine/eepromser.h"
-#include "sound/spkrdev.h"
-#include "video/crt9028.h"
+//#include "video/crt9028.h"
#include "screen.h"
-#include "speaker.h"
class cardinal_state : public driver_device
{
@@ -29,9 +27,6 @@ public:
cardinal_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_eeprom(*this, "eeprom")
- , m_vtlc(*this, "vtlc")
- , m_speaker(*this, "speaker")
- , m_rs232(*this, "rs232")
, m_address_select(false)
{
}
@@ -42,6 +37,8 @@ protected:
virtual void machine_start() override;
private:
+ u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
u8 p1_r();
void p1_w(u8 data);
@@ -50,12 +47,9 @@ private:
void prog_map(address_map &map);
void ext_map(address_map &map);
- void ram_map(address_map &map);
required_device<eeprom_serial_93cxx_device> m_eeprom;
- required_device<crt9028_device> m_vtlc;
- required_device<speaker_sound_device> m_speaker;
- required_device<rs232_port_device> m_rs232;
+ //required_device<crt9028_device> m_vtlc;
bool m_address_select;
};
@@ -66,9 +60,14 @@ void cardinal_state::machine_start()
save_item(NAME(m_address_select));
}
+u32 cardinal_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ return 0;
+}
+
u8 cardinal_state::p1_r()
{
- return 0x9f | (m_eeprom->do_read() << 5) | (0 /*m_rs232->cts_r()*/ << 6);
+ return 0xdf | (m_eeprom->do_read() << 5);
}
void cardinal_state::p1_w(u8 data)
@@ -78,19 +77,16 @@ void cardinal_state::p1_w(u8 data)
m_eeprom->clk_write(BIT(data, 3));
m_address_select = BIT(data, 1);
-
- m_speaker->level_w(!BIT(data, 2));
- m_rs232->write_rts(BIT(data, 7));
}
u8 cardinal_state::vtlc_r()
{
- return m_vtlc->read(m_address_select);
+ return 0xff;
}
void cardinal_state::vtlc_w(u8 data)
{
- m_vtlc->write(m_address_select, data);
+ logerror("%s: Writing %02X to CRT9028 %s register\n", machine().describe_context(), data, m_address_select ? "address" : "data");
}
void cardinal_state::prog_map(address_map &map)
@@ -100,27 +96,13 @@ void cardinal_state::prog_map(address_map &map)
void cardinal_state::ext_map(address_map &map)
{
- map(0, 0).mirror(0xffff).rw(FUNC(cardinal_state::vtlc_r), FUNC(cardinal_state::vtlc_w));
-}
-
-void cardinal_state::ram_map(address_map &map)
-{
- map(0x000, 0x7ff).ram();
+ map(0xff00, 0xff00).mirror(0xff).rw(FUNC(cardinal_state::vtlc_r), FUNC(cardinal_state::vtlc_w));
}
static INPUT_PORTS_START(cardinal)
- PORT_START("P3")
- PORT_DIPNAME(0x10, 0x00, "Keyboard Baud Rate")
- PORT_DIPSETTING(0x10, "300")
- PORT_DIPSETTING(0x00, "600")
- PORT_BIT(0xef, IP_ACTIVE_LOW, IPT_UNUSED)
INPUT_PORTS_END
-static DEVICE_INPUT_DEFAULTS_START(keyboard)
- DEVICE_INPUT_DEFAULTS("RS232_TXBAUD", 0xff, RS232_BAUD_600)
-DEVICE_INPUT_DEFAULTS_END
-
void cardinal_state::cardinal(machine_config &config)
{
@@ -129,25 +111,15 @@ void cardinal_state::cardinal(machine_config &config)
maincpu.set_addrmap(AS_IO, &cardinal_state::ext_map);
maincpu.port_in_cb<1>().set(FUNC(cardinal_state::p1_r));
maincpu.port_out_cb<1>().set(FUNC(cardinal_state::p1_w));
- maincpu.port_in_cb<3>().set_ioport("P3");
EEPROM_93C06_16BIT(config, m_eeprom);
- CRT9028_000(config, m_vtlc, 10.92_MHz_XTAL);
- m_vtlc->set_screen("screen");
- m_vtlc->set_addrmap(0, &cardinal_state::ram_map);
- m_vtlc->vsync_callback().set_inputline("maincpu", MCS51_INT0_LINE).invert();
-
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
-
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.05);
-
- RS232_PORT(config, m_rs232, default_rs232_devices, nullptr);
+ //CRT9028_000(config, m_vtlc, 10.92_MHz_XTAL);
+ //m_vtlc->set_screen("screen");
- rs232_port_device &kb(RS232_PORT(config, "kb", default_rs232_devices, "keyboard"));
- kb.set_option_device_input_defaults("keyboard", DEVICE_INPUT_DEFAULTS_NAME(keyboard));
- kb.rxd_handler().set_inputline("maincpu", MCS51_INT1_LINE).invert();
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_raw(10.92_MHz_XTAL, 700, 0, 560, 260, 0, 240);
+ screen.set_screen_update(FUNC(cardinal_state::screen_update));
}
diff --git a/src/mame/drivers/cardline.cpp b/src/mame/drivers/cardline.cpp
index a9eeb335eda..2b41aedbbf6 100644
--- a/src/mame/drivers/cardline.cpp
+++ b/src/mame/drivers/cardline.cpp
@@ -326,8 +326,8 @@ void cardline_state::cardline_palette(palette_device &palette) const
}
}
-void cardline_state::cardline(machine_config &config)
-{
+MACHINE_CONFIG_START(cardline_state::cardline)
+
/* basic machine hardware */
I80C32(config, m_maincpu, MASTER_CLOCK);
m_maincpu->set_port_forced_input(1, 0x10);
@@ -338,14 +338,14 @@ void cardline_state::cardline(machine_config &config)
//m_maincpu->set_vblank_int("screen", FUNC(cardline_state::irq1_line_hold));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 35*8);
- screen.set_visarea(0*8, 64*8-1, 0*8, 32*8-1);
- //screen.set_screen_update(FUNC(cardline_state::screen_update_cardline));
- //screen.set_palette(m_palette);
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 35*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
+ //MCFG_SCREEN_UPDATE_DRIVER(cardline_state, screen_update_cardline)
+ //MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cardline);
PALETTE(config, m_palette, FUNC(cardline_state::cardline_palette), 512);
@@ -365,10 +365,11 @@ void cardline_state::cardline(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- okim6295_device &oki(OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
- oki.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/carjmbre.cpp b/src/mame/drivers/carjmbre.cpp
index e482a16d989..57be932e911 100644
--- a/src/mame/drivers/carjmbre.cpp
+++ b/src/mame/drivers/carjmbre.cpp
@@ -356,25 +356,25 @@ static GFXDECODE_START( gfx_carjmbre )
GFXDECODE_END
-void carjmbre_state::carjmbre(machine_config &config)
-{
+MACHINE_CONFIG_START(carjmbre_state::carjmbre)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'432'000)/6);
- m_maincpu->set_addrmap(AS_PROGRAM, &carjmbre_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(carjmbre_state::vblank_nmi));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'432'000)/6)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", carjmbre_state, vblank_nmi)
- Z80(config, m_audiocpu, XTAL(18'432'000)/6/2);
- m_audiocpu->set_addrmap(AS_PROGRAM, &carjmbre_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &carjmbre_state::sound_io_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(18'432'000)/6/2)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(carjmbre_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(carjmbre_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_carjmbre);
PALETTE(config, m_palette, FUNC(carjmbre_state::carjmbre_palette), 64);
@@ -387,7 +387,7 @@ void carjmbre_state::carjmbre(machine_config &config)
AY8910(config, "ay1", XTAL(18'432'000)/6/2).add_route(ALL_OUTPUTS, "mono", 0.25);
AY8910(config, "ay2", XTAL(18'432'000)/6/2).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/carpolo.cpp b/src/mame/drivers/carpolo.cpp
index 3063e809d50..07f3b2906e9 100644
--- a/src/mame/drivers/carpolo.cpp
+++ b/src/mame/drivers/carpolo.cpp
@@ -231,8 +231,8 @@ GFXDECODE_END
*
*************************************/
-void carpolo_state::carpolo(machine_config &config)
-{
+MACHINE_CONFIG_START(carpolo_state::carpolo)
+
/* basic machine hardware */
M6502(config, m_maincpu, XTAL(11'289'000)/12); /* 940.75 kHz */
m_maincpu->set_addrmap(AS_PROGRAM, &carpolo_state::main_map);
@@ -279,18 +279,18 @@ void carpolo_state::carpolo(machine_config &config)
m_ttl74153_1k->zb_cb().set(FUNC(carpolo_state::ls153_zb_w)); // pia1 pb4
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(256, 256);
- screen.set_visarea(0, 239, 0, 255);
- screen.set_screen_update(FUNC(carpolo_state::screen_update));
- screen.screen_vblank().set(FUNC(carpolo_state::screen_vblank));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 239, 0, 255)
+ MCFG_SCREEN_UPDATE_DRIVER(carpolo_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, carpolo_state, screen_vblank))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_carpolo);
PALETTE(config, m_palette, FUNC(carpolo_state::carpolo_palette), 12*2+2*16+4*2);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/carrera.cpp b/src/mame/drivers/carrera.cpp
index 5cccb69c5c6..6ba9a74ecc3 100644
--- a/src/mame/drivers/carrera.cpp
+++ b/src/mame/drivers/carrera.cpp
@@ -315,21 +315,20 @@ void carrera_state::carrera_palette(palette_device &palette) const
}
-void carrera_state::carrera(machine_config &config)
-{
+MACHINE_CONFIG_START(carrera_state::carrera)
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK / 6);
- m_maincpu->set_addrmap(AS_PROGRAM, &carrera_state::carrera_map);
- m_maincpu->set_addrmap(AS_IO, &carrera_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK / 6)
+ MCFG_DEVICE_PROGRAM_MAP(carrera_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(carrera_state::screen_update_carrera));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(carrera_state, screen_update_carrera)
+ MCFG_SCREEN_PALETTE(m_palette)
mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK / 16));
crtc.set_screen("screen");
@@ -348,7 +347,7 @@ void carrera_state::carrera(machine_config &config)
aysnd.port_a_read_callback().set(FUNC(carrera_state::unknown_r));
aysnd.port_b_read_callback().set(FUNC(carrera_state::unknown_r));
aysnd.add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+MACHINE_CONFIG_END
ROM_START( carrera )
diff --git a/src/mame/drivers/casloopy.cpp b/src/mame/drivers/casloopy.cpp
index a11cf3b67c6..060dfdd4a95 100644
--- a/src/mame/drivers/casloopy.cpp
+++ b/src/mame/drivers/casloopy.cpp
@@ -421,7 +421,7 @@ WRITE8_MEMBER(casloopy_state::bitmap_w)
READ32_MEMBER(casloopy_state::cart_r)
{
- return m_cart->read32_rom(offset, mem_mask);
+ return m_cart->read32_rom(space, offset, mem_mask);
}
@@ -520,25 +520,26 @@ DEVICE_IMAGE_LOAD_MEMBER( casloopy_state, loopy_cart )
MACHINE_CONFIG_START(casloopy_state::casloopy)
/* basic machine hardware */
- SH2A(config, m_maincpu, 8000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &casloopy_state::casloopy_map);
+ MCFG_DEVICE_ADD("maincpu",SH2A,8000000)
+ MCFG_DEVICE_PROGRAM_MAP(casloopy_map)
-// v60_device &subcpu(V60(config, "subcpu", 8000000));
-// subcpu.set_addrmap(AS_PROGRAM, &casloopy_state::casloopy_sub_map);
+// MCFG_DEVICE_ADD("subcpu",V60,8000000)
+// MCFG_DEVICE_PROGRAM_MAP(casloopy_sub_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(8000000, 444, 0, 256, 263, 0, 224);
-// m_screen->set_refresh_hz(60);
-// m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
-// m_screen->set_size(444, 263);
-// m_screen->set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- m_screen->set_screen_update(FUNC(casloopy_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(8000000, 444, 0, 256, 263, 0, 224)
- PALETTE(config, m_palette).set_entries(512);
+// MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+// MCFG_SCREEN_SIZE(444, 263)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(casloopy_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfxdecode_device::empty);
+ MCFG_PALETTE_ADD("palette", 512)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfxdecode_device::empty)
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "loopy_cart")
MCFG_GENERIC_EXTENSIONS("bin,ic1")
@@ -548,7 +549,7 @@ MACHINE_CONFIG_START(casloopy_state::casloopy)
MCFG_GENERIC_LOAD(casloopy_state, loopy_cart)
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("casloopy");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","casloopy")
/* sound hardware */
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/drivers/castle.cpp b/src/mame/drivers/castle.cpp
index 7a10dfd8331..1ab9a1b4209 100644
--- a/src/mame/drivers/castle.cpp
+++ b/src/mame/drivers/castle.cpp
@@ -84,14 +84,13 @@ static INPUT_PORTS_START( castrev )
INPUT_PORTS_END
-void castle_state::castle_V1rvE(machine_config &config)
-{
- HD6303Y(config, m_maincpu, 1000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &castle_state::V1rvE_mastermap);
+MACHINE_CONFIG_START(castle_state::castle_V1rvE)
+ MCFG_DEVICE_ADD("maincpu", HD6303Y, 1000000)
+ MCFG_DEVICE_PROGRAM_MAP(V1rvE_mastermap)
- hd6303y_cpu_device &slavecpu(HD6303Y(config, "slavecpu", 1000000));
- slavecpu.set_addrmap(AS_PROGRAM, &castle_state::V1rvE_slavemap);
-}
+ MCFG_DEVICE_ADD("slavecpu", HD6303Y, 1000000)
+ MCFG_DEVICE_PROGRAM_MAP(V1rvE_slavemap)
+MACHINE_CONFIG_END
@@ -103,13 +102,12 @@ void castle_state::V2rvA_map(address_map &map)
}
-void castle_state::castle_V2rvA(machine_config &config)
-{
- HD6303Y(config, m_maincpu, 1000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &castle_state::V2rvA_map);
+MACHINE_CONFIG_START(castle_state::castle_V2rvA)
+ MCFG_DEVICE_ADD("maincpu", HD6303Y, 1000000)
+ MCFG_DEVICE_PROGRAM_MAP(V2rvA_map)
- PIA6821(config, "pia");
-}
+ MCFG_DEVICE_ADD("pia", PIA6821)
+MACHINE_CONFIG_END
ROM_START( castrev )
diff --git a/src/mame/drivers/caswin.cpp b/src/mame/drivers/caswin.cpp
index 36dd70252f3..3482f04c3e3 100644
--- a/src/mame/drivers/caswin.cpp
+++ b/src/mame/drivers/caswin.cpp
@@ -333,26 +333,25 @@ void caswin_state::caswin_palette(palette_device &palette) const
}
-void caswin_state::vvillage(machine_config &config)
-{
+MACHINE_CONFIG_START(caswin_state::vvillage)
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &caswin_state::vvillage_mem);
- m_maincpu->set_addrmap(AS_IO, &caswin_state::vvillage_io);
- m_maincpu->set_vblank_int("screen", FUNC(caswin_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(vvillage_mem)
+ MCFG_DEVICE_IO_MAP(vvillage_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", caswin_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 16, 256-16-1);
- screen.set_screen_update(FUNC(caswin_state::screen_update_vvillage));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(caswin_state, screen_update_vvillage)
+ MCFG_SCREEN_PALETTE("palette")
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- GFXDECODE(config, m_gfxdecode, "palette", gfx_vvillage);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_vvillage)
PALETTE(config, "palette", FUNC(caswin_state::caswin_palette), 0x40);
SPEAKER(config, "mono").front_center();
@@ -361,7 +360,7 @@ void caswin_state::vvillage(machine_config &config)
aysnd.port_a_read_callback().set_ioport("DSW1");
aysnd.port_b_read_callback().set_ioport("DSW2");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.40);
-}
+MACHINE_CONFIG_END
ROM_START( caswin )
ROM_REGION( 0x8000, "maincpu", 0 )
diff --git a/src/mame/drivers/cat.cpp b/src/mame/drivers/cat.cpp
index 8fb88335a64..f56118d5591 100644
--- a/src/mame/drivers/cat.cpp
+++ b/src/mame/drivers/cat.cpp
@@ -773,7 +773,7 @@ void cat_state::cat_mem(address_map &map)
map(0x80000c, 0x80000d).r(FUNC(cat_state::cat_0080_r)).mirror(0x18FFE0); // Open bus?
map(0x80000e, 0x80000f).rw(FUNC(cat_state::cat_battery_r), FUNC(cat_state::cat_printer_control_w)).mirror(0x18FFE0); // Centronics Printer Control, keyboard led and country code enable
map(0x800010, 0x80001f).r(FUNC(cat_state::cat_0080_r)).mirror(0x18FFE0); // Open bus?
- map(0x810000, 0x81001f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff).mirror(0x18FFE0);
+ map(0x810000, 0x81001f).rw("duartn68681", FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff).mirror(0x18FFE0);
map(0x820000, 0x82003f).rw(FUNC(cat_state::cat_modem_r), FUNC(cat_state::cat_modem_w)).mirror(0x18FFC0); // AMI S35213 Modem Chip, all access is on bit 7
map(0x830000, 0x830001).r(FUNC(cat_state::cat_6ms_counter_r)).mirror(0x18FFFE); // 16bit 6ms counter clocked by output of another 16bit counter clocked at 10mhz
map(0x840000, 0x840001).rw(FUNC(cat_state::cat_2e80_r), FUNC(cat_state::cat_opr_w)).mirror(0x18FFFE); // GA2 Output port register (video enable, invert, watchdog reset, phone relays)
@@ -1054,44 +1054,42 @@ WRITE_LINE_MEMBER(cat_state::prn_ack_ff) // switch the flipflop state on the ris
#endif
}
-void cat_state::cat(machine_config &config)
-{
+MACHINE_CONFIG_START(cat_state::cat)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(19'968'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &cat_state::cat_mem);
- m_maincpu->set_irq_acknowledge_callback(FUNC(cat_state::cat_int_ack));
+ MCFG_DEVICE_ADD("maincpu",M68000, XTAL(19'968'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(cat_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cat_state,cat_int_ack)
MCFG_MACHINE_START_OVERRIDE(cat_state,cat)
MCFG_MACHINE_RESET_OVERRIDE(cat_state,cat)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(672, 344);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(cat_state::screen_update_cat));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(672, 344)
+ MCFG_SCREEN_VISIBLE_AREA(0, 672-1, 0, 344-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cat_state, screen_update_cat)
MCFG_VIDEO_START_OVERRIDE(cat_state,cat)
- MC68681(config, m_duart, (XTAL(19'968'000)*2)/11); // duart is normally clocked by 3.6864mhz xtal, but cat seemingly uses a divider from the main xtal instead which probably yields 3.63054545Mhz. There is a trace to cut and a mounting area to allow using an actual 3.6864mhz xtal if you so desire
- m_duart->irq_cb().set(FUNC(cat_state::cat_duart_irq_handler));
- m_duart->a_tx_cb().set(FUNC(cat_state::cat_duart_txa));
- m_duart->b_tx_cb().set(FUNC(cat_state::cat_duart_txb));
- m_duart->outport_cb().set(FUNC(cat_state::cat_duart_output));;
+ MCFG_DEVICE_ADD( "duartn68681", MC68681, (XTAL(19'968'000)*2)/11 ) // duart is normally clocked by 3.6864mhz xtal, but cat seemingly uses a divider from the main xtal instead which probably yields 3.63054545Mhz. There is a trace to cut and a mounting area to allow using an actual 3.6864mhz xtal if you so desire
+ MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, cat_state, cat_duart_irq_handler))
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE(*this, cat_state, cat_duart_txa))
+ MCFG_MC68681_B_TX_CALLBACK(WRITELINE(*this, cat_state, cat_duart_txb))
+ MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, cat_state, cat_duart_output))
CENTRONICS(config, m_ctx, centronics_devices, "printer");
m_ctx->ack_handler().set(FUNC(cat_state::prn_ack_ff));
- m_ctx->busy_handler().set(m_duart, FUNC(mc68681_device::ip4_w)).invert();
-
- OUTPUT_LATCH(config, m_ctx_data_out);
- m_ctx->set_output_latch(*m_ctx_data_out);
+ m_ctx->busy_handler().set("duartn68681", FUNC(mc68681_device::ip4_w)).invert();
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("ctx_data_out", "ctx")
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 1.00);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
ROM_START( cat )
ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASEFF )
diff --git a/src/mame/drivers/cavepc.cpp b/src/mame/drivers/cavepc.cpp
index 56455c256db..b5d03cd967a 100644
--- a/src/mame/drivers/cavepc.cpp
+++ b/src/mame/drivers/cavepc.cpp
@@ -112,24 +112,23 @@ void cavepc_state::machine_reset()
membank("bank1")->set_base(memregion("bios")->base() + 0x30000);
}
-void cavepc_state::cavepc(machine_config &config)
-{
+MACHINE_CONFIG_START(cavepc_state::cavepc)
/* basic machine hardware */
- PENTIUM3(config, m_maincpu, 200000000); /* AMD Athlon 64 X2 5050e Brisbane 2.60GHz, 1024KB L2 Cache ! */
- m_maincpu->set_addrmap(AS_PROGRAM, &cavepc_state::cavepc_map);
- m_maincpu->set_addrmap(AS_IO, &cavepc_state::cavepc_io);
+ MCFG_DEVICE_ADD("maincpu", PENTIUM3, 200000000) /* AMD Athlon 64 X2 5050e Brisbane 2.60GHz, 1024KB L2 Cache ! */
+ MCFG_DEVICE_PROGRAM_MAP(cavepc_map)
+ MCFG_DEVICE_IO_MAP(cavepc_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(640, 480);
- screen.set_visarea(0, 639, 0, 199);
- screen.set_screen_update(FUNC(cavepc_state::screen_update_cavepc));
- screen.set_palette("palette");
-
- PALETTE(config, "palette").set_entries(16);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 199)
+ MCFG_SCREEN_UPDATE_DRIVER(cavepc_state, screen_update_cavepc)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 16)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cball.cpp b/src/mame/drivers/cball.cpp
index 31cfcddf6fe..9cd61182816 100644
--- a/src/mame/drivers/cball.cpp
+++ b/src/mame/drivers/cball.cpp
@@ -264,27 +264,27 @@ static GFXDECODE_START( gfx_cball )
GFXDECODE_END
-void cball_state::cball(machine_config &config)
-{
+MACHINE_CONFIG_START(cball_state::cball)
+
/* basic machine hardware */
- M6800(config, m_maincpu, XTAL(12'096'000) / 16); /* ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &cball_state::cpu_map);
+ MCFG_DEVICE_ADD("maincpu", M6800, XTAL(12'096'000) / 16) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(cpu_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(256, 262);
- m_screen->set_visarea(0, 255, 0, 223);
- m_screen->set_screen_update(FUNC(cball_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(256, 262)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 223)
+ MCFG_SCREEN_UPDATE_DRIVER(cball_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cball);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_cball)
PALETTE(config, m_palette, FUNC(cball_state::cball_palette), 6);
/* sound hardware */
-}
+MACHINE_CONFIG_END
ROM_START( cball )
diff --git a/src/mame/drivers/cbasebal.cpp b/src/mame/drivers/cbasebal.cpp
index 84cb59ac879..c508d933452 100644
--- a/src/mame/drivers/cbasebal.cpp
+++ b/src/mame/drivers/cbasebal.cpp
@@ -261,38 +261,40 @@ void cbasebal_state::machine_reset()
m_scroll_y[1] = 0;
}
-void cbasebal_state::cbasebal(machine_config &config)
-{
+MACHINE_CONFIG_START(cbasebal_state::cbasebal)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 6000000); /* ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &cbasebal_state::cbasebal_map);
- m_maincpu->set_addrmap(AS_IO, &cbasebal_state::cbasebal_portmap);
- m_maincpu->set_addrmap(AS_OPCODES, &cbasebal_state::decrypted_opcodes_map);
- m_maincpu->set_vblank_int("screen", FUNC(cbasebal_state::irq0_line_hold)); /* ??? */
+ MCFG_DEVICE_ADD("maincpu", Z80, 6000000) /* ??? */
+ MCFG_DEVICE_PROGRAM_MAP(cbasebal_map)
+ MCFG_DEVICE_IO_MAP(cbasebal_portmap)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cbasebal_state, irq0_line_hold) /* ??? */
EEPROM_93C46_16BIT(config, "eeprom");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1 );
- screen.set_screen_update(FUNC(cbasebal_state::screen_update_cbasebal));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cbasebal_state, screen_update_cbasebal)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cbasebal);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cbasebal)
PALETTE(config, m_palette).set_format(palette_device::xBRG_444, 1024);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.50); // clock frequency & pin 7 not verified
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- YM2413(config, "ymsnd", 3579545).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2413, 3579545)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cbm2.cpp b/src/mame/drivers/cbm2.cpp
index 069ee861e7e..ce010831c67 100644
--- a/src/mame/drivers/cbm2.cpp
+++ b/src/mame/drivers/cbm2.cpp
@@ -285,8 +285,8 @@ public:
int *csbank1, int *csbank2, int *csbank3, int *basiclocs, int *basichics, int *kernalcs,
int *cs1, int *sidcs, int *extprtcs, int *ciacs, int *aciacs, int *tript1cs, int *tript2cs, int *aec, int *vsysaden);
- uint8_t read_memory(offs_t offset, offs_t va, int ba, int ae);
- void write_memory(offs_t offset, uint8_t data, int ba, int ae);
+ uint8_t read_memory(address_space &space, offs_t offset, offs_t va, int ba, int ae);
+ void write_memory(address_space &space, offs_t offset, uint8_t data, int ba, int ae);
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -521,39 +521,39 @@ READ8_MEMBER( cbm2_state::read )
{
if (A0)
{
- data = m_crtc->register_r();
+ data = m_crtc->register_r(space, 0);
}
else
{
- data = m_crtc->status_r();
+ data = m_crtc->status_r(space, 0);
}
}
if (!sidcs)
{
- data = m_sid->read(offset & 0x1f);
+ data = m_sid->read(space, offset & 0x1f);
}
if (!extprtcs && m_ext_cia)
{
- data = m_ext_cia->read(offset & 0x0f);
+ data = m_ext_cia->read(space, offset & 0x0f);
}
if (!ciacs)
{
- data = m_cia->read(offset & 0x0f);
+ data = m_cia->read(space, offset & 0x0f);
}
if (!aciacs)
{
- data = m_acia->read(offset & 0x03);
+ data = m_acia->read(space, offset & 0x03);
}
if (!tript1cs)
{
- data = m_tpi1->read(offset & 0x07);
+ data = m_tpi1->read(space, offset & 0x07);
}
if (!tript2cs)
{
- data = m_tpi2->read(offset & 0x07);
+ data = m_tpi2->read(space, offset & 0x07);
}
- data = m_exp->read(offset & 0x1fff, data, csbank1, csbank2, csbank3);
+ data = m_exp->read(space, offset & 0x1fff, data, csbank1, csbank2, csbank3);
}
return data;
@@ -614,39 +614,39 @@ WRITE8_MEMBER( cbm2_state::write )
{
if (A0)
{
- m_crtc->register_w(data);
+ m_crtc->register_w(space, 0, data);
}
else
{
- m_crtc->address_w(data);
+ m_crtc->address_w(space, 0, data);
}
}
if (!sidcs)
{
- m_sid->write(offset & 0x1f, data);
+ m_sid->write(space, offset & 0x1f, data);
}
if (!extprtcs && m_ext_cia)
{
- m_ext_cia->write(offset & 0x0f, data);
+ m_ext_cia->write(space, offset & 0x0f, data);
}
if (!ciacs)
{
- m_cia->write(offset & 0x0f, data);
+ m_cia->write(space, offset & 0x0f, data);
}
if (!aciacs)
{
- m_acia->write(offset & 0x03, data);
+ m_acia->write(space, offset & 0x03, data);
}
if (!tript1cs)
{
- m_tpi1->write(offset & 0x07, data);
+ m_tpi1->write(space, offset & 0x07, data);
}
if (!tript2cs)
{
- m_tpi2->write(offset & 0x07, data);
+ m_tpi2->write(space, offset & 0x07, data);
}
- m_exp->write(offset & 0x1fff, data, csbank1, csbank2, csbank3);
+ m_exp->write(space, offset & 0x1fff, data, csbank1, csbank2, csbank3);
}
}
@@ -850,7 +850,7 @@ void p500_state::bankswitch(offs_t offset, offs_t va, int srw, int ba, int ae, i
// read_memory -
//-------------------------------------------------
-uint8_t p500_state::read_memory(offs_t offset, offs_t va, int ba, int ae)
+uint8_t p500_state::read_memory(address_space &space, offs_t offset, offs_t va, int ba, int ae)
{
int srw = 1, busy2 = 1, refen = 0;
@@ -917,30 +917,30 @@ uint8_t p500_state::read_memory(offs_t offset, offs_t va, int ba, int ae)
}
if (!viccs && !viddaten && viddat_tr)
{
- data = m_vic->read(offset & 0x3f);
+ data = m_vic->read(space, offset & 0x3f);
}
if (!sidcs)
{
- data = m_sid->read(offset & 0x1f);
+ data = m_sid->read(space, offset & 0x1f);
}
if (!ciacs)
{
- data = m_cia->read(offset & 0x0f);
+ data = m_cia->read(space, offset & 0x0f);
}
if (!aciacs)
{
- data = m_acia->read(offset & 0x03);
+ data = m_acia->read(space, offset & 0x03);
}
if (!tript1cs)
{
- data = m_tpi1->read(offset & 0x07);
+ data = m_tpi1->read(space, offset & 0x07);
}
if (!tript2cs)
{
- data = m_tpi2->read(offset & 0x07);
+ data = m_tpi2->read(space, offset & 0x07);
}
- data = m_exp->read(offset & 0x1fff, data, csbank1, csbank2, csbank3);
+ data = m_exp->read(space, offset & 0x1fff, data, csbank1, csbank2, csbank3);
}
return data;
@@ -951,7 +951,7 @@ uint8_t p500_state::read_memory(offs_t offset, offs_t va, int ba, int ae)
// write_memory -
//-------------------------------------------------
-void p500_state::write_memory(offs_t offset, uint8_t data, int ba, int ae)
+void p500_state::write_memory(address_space &space, offs_t offset, uint8_t data, int ba, int ae)
{
int srw = 0, busy2 = 1, refen = 0;
offs_t va = 0xffff;
@@ -1005,30 +1005,30 @@ void p500_state::write_memory(offs_t offset, uint8_t data, int ba, int ae)
}
if (!viccs && !viddaten && !viddat_tr)
{
- m_vic->write(offset & 0x3f, data);
+ m_vic->write(space, offset & 0x3f, data);
}
if (!sidcs)
{
- m_sid->write(offset & 0x1f, data);
+ m_sid->write(space, offset & 0x1f, data);
}
if (!ciacs)
{
- m_cia->write(offset & 0x0f, data);
+ m_cia->write(space, offset & 0x0f, data);
}
if (!aciacs)
{
- m_acia->write(offset & 0x03, data);
+ m_acia->write(space, offset & 0x03, data);
}
if (!tript1cs)
{
- m_tpi1->write(offset & 0x07, data);
+ m_tpi1->write(space, offset & 0x07, data);
}
if (!tript2cs)
{
- m_tpi2->write(offset & 0x07, data);
+ m_tpi2->write(space, offset & 0x07, data);
}
- m_exp->write(offset & 0x1fff, data, csbank1, csbank2, csbank3);
+ m_exp->write(space, offset & 0x1fff, data, csbank1, csbank2, csbank3);
}
}
@@ -1042,7 +1042,7 @@ READ8_MEMBER( p500_state::read )
int ba = 0, ae = 1;
offs_t va = 0xffff;
- return read_memory(offset, va, ba, ae);
+ return read_memory(space, offset, va, ba, ae);
}
@@ -1054,7 +1054,7 @@ WRITE8_MEMBER( p500_state::write )
{
int ba = 0, ae = 1;
- write_memory(offset, data, ba, ae);
+ write_memory(space, offset, data, ba, ae);
}
@@ -1789,7 +1789,7 @@ READ8_MEMBER( cbm2_state::cia_pa_r )
data |= m_ieee1->read(space, 0);
// user port
- data &= m_user->d1_r();
+ data &= m_user->d1_r(space, 0);
// joystick
data &= ~(!BIT(m_joy1->read_joy(), 5) << 6);
@@ -1819,7 +1819,7 @@ WRITE8_MEMBER( cbm2_state::cia_pa_w )
m_ieee1->write(space, 0, data);
// user port
- m_user->d1_w(data);
+ m_user->d1_w(space, 0, data);
// joystick
m_cia_pa = data;
@@ -1849,7 +1849,7 @@ READ8_MEMBER( cbm2_state::cia_pb_r )
data |= (m_joy2->read_joy() & 0x0f) << 4;
// user port
- data &= m_user->d2_r();
+ data &= m_user->d2_r(space, 0);
return data;
}
@@ -2219,7 +2219,7 @@ MACHINE_RESET_MEMBER( p500_state, p500 )
//**************************************************************************
//-------------------------------------------------
-// machine_config( 128k )
+// MACHINE_CONFIG( 128k )
//-------------------------------------------------
void cbm2_state::_128k(machine_config &config)
@@ -2229,7 +2229,7 @@ void cbm2_state::_128k(machine_config &config)
//-------------------------------------------------
-// machine_config( 256k )
+// MACHINE_CONFIG( 256k )
//-------------------------------------------------
void cbm2_state::_256k(machine_config &config)
@@ -2239,7 +2239,7 @@ void cbm2_state::_256k(machine_config &config)
//-------------------------------------------------
-// machine_config( p500_ntsc )
+// MACHINE_CONFIG( p500_ntsc )
//-------------------------------------------------
void p500_state::p500_ntsc(machine_config &config)
@@ -2361,8 +2361,8 @@ void p500_state::p500_ntsc(machine_config &config)
rs232.dsr_handler().set(m_acia, FUNC(mos6551_device::write_dsr));
rs232.cts_handler().set(m_acia, FUNC(mos6551_device::write_cts));
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(p500_state, p500), this), "p00,prg", CBM_QUICKLOAD_DELAY);
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(p500_state, p500), this), "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS);
// internal ram
_128k(config);
@@ -2376,7 +2376,7 @@ void p500_state::p500_ntsc(machine_config &config)
//-------------------------------------------------
-// machine_config( p500_pal )
+// MACHINE_CONFIG( p500_pal )
//-------------------------------------------------
void p500_state::p500_pal(machine_config &config)
@@ -2495,8 +2495,8 @@ void p500_state::p500_pal(machine_config &config)
rs232.dsr_handler().set(m_acia, FUNC(mos6551_device::write_dsr));
rs232.cts_handler().set(m_acia, FUNC(mos6551_device::write_cts));
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(p500_state, p500), this), "p00,prg", CBM_QUICKLOAD_DELAY);
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(p500_state, p500), this), "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS);
// internal ram
_128k(config);
@@ -2510,7 +2510,7 @@ void p500_state::p500_pal(machine_config &config)
//-------------------------------------------------
-// machine_config( cbm2lp_ntsc )
+// MACHINE_CONFIG( cbm2lp_ntsc )
//-------------------------------------------------
void cbm2_state::cbm2lp_ntsc(machine_config &config)
@@ -2628,8 +2628,8 @@ void cbm2_state::cbm2lp_ntsc(machine_config &config)
rs232.dsr_handler().set(m_acia, FUNC(mos6551_device::write_dsr));
rs232.cts_handler().set(m_acia, FUNC(mos6551_device::write_cts));
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(cbm2_state, cbmb), this), "p00,prg,t64", CBM_QUICKLOAD_DELAY);
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(cbm2_state, cbmb), this), "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS);
// software list
SOFTWARE_LIST(config, "cart_list").set_original("cbm2_cart");
@@ -2640,7 +2640,7 @@ void cbm2_state::cbm2lp_ntsc(machine_config &config)
//-------------------------------------------------
-// machine_config( b128 )
+// MACHINE_CONFIG( b128 )
//-------------------------------------------------
void cbm2_state::b128(machine_config &config)
@@ -2651,7 +2651,7 @@ void cbm2_state::b128(machine_config &config)
//-------------------------------------------------
-// machine_config( b256 )
+// MACHINE_CONFIG( b256 )
//-------------------------------------------------
void cbm2_state::b256(machine_config &config)
@@ -2662,7 +2662,7 @@ void cbm2_state::b256(machine_config &config)
//-------------------------------------------------
-// machine_config( cbm2lp_pal )
+// MACHINE_CONFIG( cbm2lp_pal )
//-------------------------------------------------
void cbm2_state::cbm2lp_pal(machine_config &config)
@@ -2674,7 +2674,7 @@ void cbm2_state::cbm2lp_pal(machine_config &config)
//-------------------------------------------------
-// machine_config( cbm610 )
+// MACHINE_CONFIG( cbm610 )
//-------------------------------------------------
void cbm2_state::cbm610(machine_config &config)
@@ -2685,7 +2685,7 @@ void cbm2_state::cbm610(machine_config &config)
//-------------------------------------------------
-// machine_config( cbm620 )
+// MACHINE_CONFIG( cbm620 )
//-------------------------------------------------
void cbm2_state::cbm620(machine_config &config)
@@ -2696,7 +2696,7 @@ void cbm2_state::cbm620(machine_config &config)
//-------------------------------------------------
-// machine_config( cbm2hp_ntsc )
+// MACHINE_CONFIG( cbm2hp_ntsc )
//-------------------------------------------------
void cbm2_state::cbm2hp_ntsc(machine_config &config)
@@ -2707,7 +2707,7 @@ void cbm2_state::cbm2hp_ntsc(machine_config &config)
//-------------------------------------------------
-// machine_config( b128hp )
+// MACHINE_CONFIG( b128hp )
//-------------------------------------------------
void cbm2hp_state::b128hp(machine_config &config)
@@ -2718,7 +2718,7 @@ void cbm2hp_state::b128hp(machine_config &config)
//-------------------------------------------------
-// machine_config( b256hp )
+// MACHINE_CONFIG( b256hp )
//-------------------------------------------------
void cbm2hp_state::b256hp(machine_config &config)
@@ -2729,7 +2729,7 @@ void cbm2hp_state::b256hp(machine_config &config)
//-------------------------------------------------
-// machine_config( bx256hp )
+// MACHINE_CONFIG( bx256hp )
//-------------------------------------------------
void cbm2hp_state::bx256hp(machine_config &config)
@@ -2763,7 +2763,7 @@ void cbm2hp_state::bx256hp(machine_config &config)
//-------------------------------------------------
-// machine_config( cbm2hp_pal )
+// MACHINE_CONFIG( cbm2hp_pal )
//-------------------------------------------------
void cbm2_state::cbm2hp_pal(machine_config &config)
@@ -2778,7 +2778,7 @@ void cbm2_state::cbm2hp_pal(machine_config &config)
//-------------------------------------------------
-// machine_config( cbm710 )
+// MACHINE_CONFIG( cbm710 )
//-------------------------------------------------
void cbm2hp_state::cbm710(machine_config &config)
@@ -2789,7 +2789,7 @@ void cbm2hp_state::cbm710(machine_config &config)
//-------------------------------------------------
-// machine_config( cbm720 )
+// MACHINE_CONFIG( cbm720 )
//-------------------------------------------------
void cbm2hp_state::cbm720(machine_config &config)
@@ -2800,7 +2800,7 @@ void cbm2hp_state::cbm720(machine_config &config)
//-------------------------------------------------
-// machine_config( cbm730 )
+// MACHINE_CONFIG( cbm730 )
//-------------------------------------------------
void cbm2hp_state::cbm730(machine_config &config)
diff --git a/src/mame/drivers/cbuster.cpp b/src/mame/drivers/cbuster.cpp
index 6bfd645ed19..725689db30d 100644
--- a/src/mame/drivers/cbuster.cpp
+++ b/src/mame/drivers/cbuster.cpp
@@ -299,28 +299,28 @@ void cbuster_state::machine_reset()
m_pri = 0;
}
-void cbuster_state::twocrude(machine_config &config)
-{
+MACHINE_CONFIG_START(cbuster_state::twocrude)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000)/2); /* Custom chip 59 @ 12MHz Verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &cbuster_state::twocrude_map);
- m_maincpu->set_vblank_int("screen", FUNC(cbuster_state::irq4_line_assert)); /* VBL */
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) /* Custom chip 59 @ 12MHz Verified */
+ MCFG_DEVICE_PROGRAM_MAP(twocrude_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cbuster_state, irq4_line_assert)/* VBL */
H6280(config, m_audiocpu, XTAL(24'000'000)/4); /* Custom chip 45, 6MHz Verified */
m_audiocpu->set_addrmap(AS_PROGRAM, &cbuster_state::sound_map);
m_audiocpu->add_route(ALL_OUTPUTS, "mono", 0); // internal sound unused
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(529));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(cbuster_state::screen_update_twocrude));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cbuster_state, screen_update_twocrude)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_cbuster);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cbuster)
PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 2048);
- BUFFERED_SPRITERAM16(config, m_spriteram);
+ MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM16)
DECO16IC(config, m_deco_tilegen[0], 0);
m_deco_tilegen[0]->set_split(0);
@@ -365,16 +365,19 @@ void cbuster_state::twocrude(machine_config &config)
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
// YM2203_PITCH_HACK - Pitch is too low at 1.3425MHz (see also stfight.cpp)
- YM2203(config, "ym1", XTAL(32'220'000)/24 * 3).add_route(ALL_OUTPUTS, "mono", 0.60); /* 1.3425MHz Verified */
+ MCFG_DEVICE_ADD("ym1", YM2203, XTAL(32'220'000)/24 * 3) /* 1.3425MHz Verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000)/9)); /* 3.58MHz Verified */
ym2.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
ym2.add_route(ALL_OUTPUTS, "mono", 0.45);
- OKIM6295(config, "oki1", XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.75); /* 1.0068MHz Verified */
+ MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH) /* 1.0068MHz Verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
- OKIM6295(config, "oki2", XTAL(32'220'000)/16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60); /* 2.01375MHz Verified */
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(32'220'000)/16, okim6295_device::PIN7_HIGH) /* 2.01375MHz Verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+MACHINE_CONFIG_END
/******************************************************************************/
diff --git a/src/mame/drivers/cc40.cpp b/src/mame/drivers/cc40.cpp
index e333a96ba3a..9440d942c8a 100644
--- a/src/mame/drivers/cc40.cpp
+++ b/src/mame/drivers/cc40.cpp
@@ -408,11 +408,11 @@ INPUT_CHANGED_MEMBER(cc40_state::sysram_size_changed)
static INPUT_PORTS_START( cc40 )
PORT_START("RAMSIZE")
- PORT_CONFNAME( 0x07, 0x01, "RAM Chip 1") PORT_CHANGED_MEMBER(DEVICE_SELF, cc40_state, sysram_size_changed, 0)
+ PORT_CONFNAME( 0x07, 0x01, "RAM Chip 1") PORT_CHANGED_MEMBER(DEVICE_SELF, cc40_state, sysram_size_changed, (void *)0)
PORT_CONFSETTING( 0x00, "None" )
PORT_CONFSETTING( 0x01, "2KB" )
PORT_CONFSETTING( 0x04, "8KB" )
- PORT_CONFNAME( 0x70, 0x10, "RAM Chip 2") PORT_CHANGED_MEMBER(DEVICE_SELF, cc40_state, sysram_size_changed, 1)
+ PORT_CONFNAME( 0x70, 0x10, "RAM Chip 2") PORT_CHANGED_MEMBER(DEVICE_SELF, cc40_state, sysram_size_changed, (void *)1)
PORT_CONFSETTING( 0x00, "None" ) // note: invalid configuration, unless Chip 1 is also 0x00
PORT_CONFSETTING( 0x10, "2KB" )
PORT_CONFSETTING( 0x40, "8KB" )
@@ -598,33 +598,33 @@ MACHINE_CONFIG_START(cc40_state::cc40)
NVRAM(config, "sysram.2", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(60); // arbitrary
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(6*31+1, 9*1+1+1);
- screen.set_visarea_full();
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60) // arbitrary
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(6*31+1, 9*1+1+1)
+ MCFG_SCREEN_VISIBLE_AREA(0, 6*31, 0, 9*1+1)
config.set_default_layout(layout_cc40);
- screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(cc40_state::cc40_palette), 3);
- hd44780_device &hd44780(HD44780(config, "hd44780", 0));
- hd44780.set_lcd_size(2, 16); // 2*16 internal
- hd44780.set_pixel_update_cb(FUNC(cc40_state::cc40_pixel_update), this);
+ MCFG_HD44780_ADD("hd44780")
+ MCFG_HD44780_LCD_SIZE(2, 16) // 2*16 internal
+ MCFG_HD44780_PIXEL_UPDATE_CB(cc40_state, cc40_pixel_update)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
/* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "cc40_cart")
MCFG_GENERIC_EXTENSIONS("bin,rom,256")
MCFG_GENERIC_LOAD(cc40_state, cc40_cartridge)
- SOFTWARE_LIST(config, "cart_list").set_original("cc40_cart");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "cc40_cart")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cchance.cpp b/src/mame/drivers/cchance.cpp
index a57966eaee3..e3d9a4cd3af 100644
--- a/src/mame/drivers/cchance.cpp
+++ b/src/mame/drivers/cchance.cpp
@@ -217,11 +217,11 @@ void cchance_state::machine_reset()
m_bell_io = 0;
}
-void cchance_state::cchance(machine_config &config)
-{
- Z80(config, m_maincpu, 4000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &cchance_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(cchance_state::irq0_line_hold));
+MACHINE_CONFIG_START(cchance_state::cchance)
+
+ MCFG_DEVICE_ADD("maincpu", Z80,4000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cchance_state, irq0_line_hold)
GFXDECODE(config, "gfxdecode", m_palette, gfx_cchance);
@@ -229,14 +229,14 @@ void cchance_state::cchance(machine_config &config)
m_seta001->set_gfxdecode_tag("gfxdecode");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(57.5);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(cchance_state::screen_update_tnzs));
- m_screen->screen_vblank().set(FUNC(cchance_state::screen_vblank_tnzs));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57.5)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cchance_state, screen_update_tnzs)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cchance_state, screen_vblank_tnzs))
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(cchance_state::prompalette), 512);
@@ -246,7 +246,7 @@ void cchance_state::cchance(machine_config &config)
aysnd.port_a_read_callback().set_ioport("DSW1");
aysnd.port_b_read_callback().set_ioport("DSW2");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
ROM_START( cchance )
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/cchasm.cpp b/src/mame/drivers/cchasm.cpp
index 4982db9d9d2..31fc3f6c001 100644
--- a/src/mame/drivers/cchasm.cpp
+++ b/src/mame/drivers/cchasm.cpp
@@ -146,11 +146,11 @@ static const z80_daisy_config daisy_chain[] =
*
*************************************/
-void cchasm_state::cchasm(machine_config &config)
-{
+MACHINE_CONFIG_START(cchasm_state::cchasm)
+
/* basic machine hardware */
- M68000(config, m_maincpu, CCHASM_68K_CLOCK); /* 8 MHz (from schematics) */
- m_maincpu->set_addrmap(AS_PROGRAM, &cchasm_state::memmap);
+ MCFG_DEVICE_ADD("maincpu", M68000, CCHASM_68K_CLOCK) /* 8 MHz (from schematics) */
+ MCFG_DEVICE_PROGRAM_MAP(memmap)
Z80(config, m_audiocpu, 3584229); /* 3.58 MHz (from schematics) */
m_audiocpu->set_daisy_config(daisy_chain);
@@ -165,12 +165,12 @@ void cchasm_state::cchasm(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- VECTOR(config, m_vector, 0);
- SCREEN(config, m_screen, SCREEN_TYPE_VECTOR);
- m_screen->set_refresh_hz(40);
- m_screen->set_size(400, 300);
- m_screen->set_visarea(0, 1024-1, 0, 768-1);
- m_screen->set_screen_update("vector", FUNC(vector_device::screen_update));
+ MCFG_VECTOR_ADD("vector")
+ MCFG_SCREEN_ADD("screen", VECTOR)
+ MCFG_SCREEN_REFRESH_RATE(40)
+ MCFG_SCREEN_SIZE(400, 300)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 768-1)
+ MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
@@ -184,17 +184,17 @@ void cchasm_state::cchasm(machine_config &config)
AY8910(config, "ay2", 1818182).add_route(ALL_OUTPUTS, "speaker", 0.2);
- DAC_1BIT(config, m_dac1, 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- DAC_1BIT(config, m_dac2, 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("dac1", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("dac2", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT)
/* 6840 PTM */
ptm6840_device &ptm(PTM6840(config, "6840ptm", CCHASM_68K_CLOCK/10));
ptm.set_external_clocks(0, (CCHASM_68K_CLOCK / 10).value(), 0);
ptm.irq_callback().set_inputline("maincpu", 4);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cclimber.cpp b/src/mame/drivers/cclimber.cpp
index 1025f696fa0..8a7d325b701 100644
--- a/src/mame/drivers/cclimber.cpp
+++ b/src/mame/drivers/cclimber.cpp
@@ -1105,33 +1105,33 @@ WRITE_LINE_MEMBER(cclimber_state::bagmanf_vblank_irq)
m_maincpu->set_input_line(0, HOLD_LINE);
}
-void cclimber_state::root(machine_config &config)
-{
+MACHINE_CONFIG_START(cclimber_state::root)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'432'000)/3/2); /* 3.072 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &cclimber_state::cclimber_map);
- m_maincpu->set_addrmap(AS_IO, &cclimber_state::cclimber_portmap);
+ MCFG_DEVICE_ADD(m_maincpu, Z80, XTAL(18'432'000)/3/2) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(cclimber_map)
+ MCFG_DEVICE_IO_MAP(cclimber_portmap)
- LS259(config, m_mainlatch, 0);
+ MCFG_DEVICE_ADD(m_mainlatch, LS259, 0)
m_mainlatch->q_out_cb<0>().set(FUNC(cclimber_state::nmi_mask_w));
m_mainlatch->q_out_cb<1>().set(FUNC(cclimber_state::flip_screen_x_w));
m_mainlatch->q_out_cb<2>().set(FUNC(cclimber_state::flip_screen_y_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(cclimber_state::screen_update_cclimber));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(cclimber_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cclimber_state, screen_update_cclimber)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cclimber_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cclimber);
PALETTE(config, m_palette, FUNC(cclimber_state::cclimber_palette), 16*4+8*4);
MCFG_VIDEO_START_OVERRIDE(cclimber_state,cclimber)
-}
+MACHINE_CONFIG_END
void cclimber_state::cclimber(machine_config &config)
@@ -1160,8 +1160,7 @@ void cclimber_state::ckongb(machine_config &config)
}
-void cclimber_state::cannonb(machine_config &config)
-{
+MACHINE_CONFIG_START(cclimber_state::cannonb)
cclimber(config);
/* basic machine hardware */
@@ -1172,8 +1171,8 @@ void cclimber_state::cannonb(machine_config &config)
m_mainlatch->q_out_cb<2>().set_nop(); // not used
/* video hardware */
- m_gfxdecode->set_info(gfx_cannonb);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_cannonb)
+MACHINE_CONFIG_END
void cclimber_state::bagmanf(machine_config &config)
{
@@ -1186,8 +1185,7 @@ void cclimber_state::bagmanf(machine_config &config)
}
-void cclimber_state::yamato(machine_config &config)
-{
+MACHINE_CONFIG_START(cclimber_state::yamato)
root(config);
/* basic machine hardware */
@@ -1197,15 +1195,15 @@ void cclimber_state::yamato(machine_config &config)
maincpu.set_addrmap(AS_OPCODES, &cclimber_state::yamato_decrypted_opcodes_map);
maincpu.set_decrypted_tag(":decrypted_opcodes");
- Z80(config, m_audiocpu, 3072000); /* 3.072 MHz ? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &cclimber_state::yamato_audio_map);
- m_audiocpu->set_addrmap(AS_IO, &cclimber_state::yamato_audio_portmap);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 3072000) /* 3.072 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(yamato_audio_map)
+ MCFG_DEVICE_IO_MAP(yamato_audio_portmap)
/* video hardware */
m_palette->set_entries(16*4+8*4+256);
m_palette->set_init(FUNC(cclimber_state::yamato_palette));
-
- subdevice<screen_device>("screen")->set_screen_update(FUNC(cclimber_state::screen_update_yamato));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(cclimber_state, screen_update_yamato)
/* audio hardware */
SPEAKER(config, "speaker").front_center();
@@ -1213,11 +1211,10 @@ void cclimber_state::yamato(machine_config &config)
AY8910(config, "ay1", XTAL(18'432'000)/12).add_route(ALL_OUTPUTS, "speaker", 0.25); /* 1.536 MHz */
AY8910(config, "ay2", XTAL(18'432'000)/12).add_route(ALL_OUTPUTS, "speaker", 0.25); /* 1.536 MHz */
-}
+MACHINE_CONFIG_END
-void cclimber_state::toprollr(machine_config &config)
-{
+MACHINE_CONFIG_START(cclimber_state::toprollr)
cclimber(config);
sega_315_5018_device &maincpu(SEGA_315_5018(config.replace(), m_maincpu, XTAL(18'432'000)/3/2)); /* 3.072 MHz */
@@ -1232,42 +1229,43 @@ void cclimber_state::toprollr(machine_config &config)
m_mainlatch->q_out_cb<6>().set(FUNC(cclimber_state::toprollr_rombank_w));
/* video hardware */
- m_gfxdecode->set_info(gfx_toprollr);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_toprollr)
m_palette->set_entries(32*5);
m_palette->set_init(FUNC(cclimber_state::toprollr_palette));
MCFG_VIDEO_START_OVERRIDE(cclimber_state,toprollr)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(cclimber_state::screen_update_toprollr));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(cclimber_state, screen_update_toprollr)
+MACHINE_CONFIG_END
-void cclimber_state::swimmer(machine_config &config)
-{
+MACHINE_CONFIG_START(cclimber_state::swimmer)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'432'000)/6); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &cclimber_state::swimmer_map);
+ MCFG_DEVICE_ADD(m_maincpu, Z80, XTAL(18'432'000)/6) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(swimmer_map)
- LS259(config, m_mainlatch, 0);
+ MCFG_DEVICE_ADD(m_mainlatch, LS259, 0)
m_mainlatch->q_out_cb<0>().set(FUNC(cclimber_state::nmi_mask_w));
m_mainlatch->q_out_cb<1>().set(FUNC(cclimber_state::flip_screen_x_w));
m_mainlatch->q_out_cb<2>().set(FUNC(cclimber_state::flip_screen_y_w));
m_mainlatch->q_out_cb<3>().set(FUNC(cclimber_state::sidebg_enable_w));
m_mainlatch->q_out_cb<4>().set(FUNC(cclimber_state::palette_bank_w));
- Z80(config, m_audiocpu, XTAL(4'000'000)/2); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &cclimber_state::swimmer_audio_map);
- m_audiocpu->set_addrmap(AS_IO, &cclimber_state::swimmer_audio_portmap);
- m_audiocpu->set_periodic_int(FUNC(cclimber_state::nmi_line_pulse), attotime::from_hz((double)4000000/16384)); /* IRQs are triggered by the main CPU */
+ MCFG_DEVICE_ADD("audiocpu", Z80,XTAL(4'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(swimmer_audio_map)
+ MCFG_DEVICE_IO_MAP(swimmer_audio_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(cclimber_state, nmi_line_pulse, (double)4000000/16384) /* IRQs are triggered by the main CPU */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60.57); /* verified on pcb */
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(cclimber_state::screen_update_swimmer));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(cclimber_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60.57) /* verified on pcb */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cclimber_state, screen_update_swimmer)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cclimber_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_swimmer);
PALETTE(config, m_palette, FUNC(cclimber_state::swimmer_palette), 32*8+4*8+1);
@@ -1282,12 +1280,11 @@ void cclimber_state::swimmer(machine_config &config)
AY8910(config, "ay1", XTAL(4'000'000)/2).add_route(ALL_OUTPUTS, "speaker", 0.25); /* verified on pcb */
AY8910(config, "ay2", XTAL(4'000'000)/2).add_route(ALL_OUTPUTS, "speaker", 0.25); /* verified on pcb */
-}
+MACHINE_CONFIG_END
void cclimber_state::guzzler(machine_config &config)
{
swimmer(config);
-
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &cclimber_state::guzzler_map);
}
diff --git a/src/mame/drivers/ccs2810.cpp b/src/mame/drivers/ccs2810.cpp
index 0c31b362ec6..3f7497f9f0e 100644
--- a/src/mame/drivers/ccs2810.cpp
+++ b/src/mame/drivers/ccs2810.cpp
@@ -910,12 +910,11 @@ static void ccs_floppies(device_slot_interface &device)
//device.option_add("525dd", FLOPPY_525_DD);
-void ccs_state::ccs2810(machine_config &config)
-{
+MACHINE_CONFIG_START(ccs_state::ccs2810)
/* basic machine hardware */
- Z80(config, m_maincpu, 16_MHz_XTAL / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &ccs_state::ccs2810_mem);
- m_maincpu->set_addrmap(AS_IO, &ccs_state::ccs2810_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, 16_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(ccs2810_mem)
+ MCFG_DEVICE_IO_MAP(ccs2810_io)
RAM(config, RAM_TAG).set_default_size("64K");
@@ -932,14 +931,13 @@ void ccs_state::ccs2810(machine_config &config)
rs232.dcd_handler().set(m_ins8250, FUNC(ins8250_device::dcd_w));
rs232.dsr_handler().set(m_ins8250, FUNC(ins8250_device::dsr_w));
rs232.cts_handler().set(m_ins8250, FUNC(ins8250_device::cts_w));
-}
+MACHINE_CONFIG_END
-void ccs_state::ccs2422(machine_config &config)
-{
+MACHINE_CONFIG_START(ccs_state::ccs2422)
/* basic machine hardware */
- Z80(config, m_maincpu, 16_MHz_XTAL / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &ccs_state::ccs2810_mem);
- m_maincpu->set_addrmap(AS_IO, &ccs_state::ccs2422_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, 16_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(ccs2810_mem)
+ MCFG_DEVICE_IO_MAP(ccs2422_io)
RAM(config, RAM_TAG).set_default_size("64K");
@@ -958,8 +956,9 @@ void ccs_state::ccs2422(machine_config &config)
rs232.cts_handler().set(m_ins8250, FUNC(ins8250_device::cts_w));
MB8877(config, m_fdc, 16_MHz_XTAL / 8); // UB1793 or MB8877
- FLOPPY_CONNECTOR(config, "fdc:0", ccs_floppies, "8sssd", floppy_image_device::default_floppy_formats).enable_sound(true);
-}
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", ccs_floppies, "8sssd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( ccs2810 )
diff --git a/src/mame/drivers/cd2650.cpp b/src/mame/drivers/cd2650.cpp
index 38c84b29046..a0520110d61 100644
--- a/src/mame/drivers/cd2650.cpp
+++ b/src/mame/drivers/cd2650.cpp
@@ -314,8 +314,8 @@ void cd2650_state::cd2650(machine_config &config)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* quickload */
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(cd2650_state, cd2650), this), "pgm", attotime::from_seconds(1));
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(cd2650_state, cd2650), this), "pgm", 1);
/* Sound */
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/drivers/cdc721.cpp b/src/mame/drivers/cdc721.cpp
index c6825c48a8e..aa0a75f986b 100644
--- a/src/mame/drivers/cdc721.cpp
+++ b/src/mame/drivers/cdc721.cpp
@@ -268,7 +268,7 @@ uint32_t cdc721_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
{
uint16_t ma = m_videoram[y * 2] | m_videoram[y * 2 + 1] << 8;
- for (ra = 0; ra < 15; ra++)
+ for (ra = 0; ra < 16; ra++)
{
uint16_t *p = &bitmap.pix16(sy++);
@@ -304,13 +304,12 @@ uint32_t cdc721_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
return 0;
}
-void cdc721_state::cdc721(machine_config &config)
-{
+MACHINE_CONFIG_START(cdc721_state::cdc721)
// basic machine hardware
- Z80(config, m_maincpu, 6_MHz_XTAL); // Zilog Z8400B (Z80B)
- m_maincpu->set_addrmap(AS_PROGRAM, &cdc721_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &cdc721_state::io_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(cdc721_state::restart_cb));
+ MCFG_DEVICE_ADD("maincpu", Z80, 6_MHz_XTAL) // Zilog Z8400B (Z80B)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cdc721_state, restart_cb)
ADDRESS_MAP_BANK(config, "block0").set_map(&cdc721_state::block0_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
ADDRESS_MAP_BANK(config, "block4").set_map(&cdc721_state::block4_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
@@ -320,12 +319,15 @@ void cdc721_state::cdc721(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // MCM51L01C45 (256x4) + battery
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(12.936_MHz_XTAL, 800, 0, 640, 539, 0, 450);
- screen.set_screen_update(FUNC(cdc721_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(cdc721_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(cdc721_state::cdc721_palette), 3);
- GFXDECODE(config, "gfxdecode", "palette", gfx_cdc721);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cdc721)
CRT5037(config, m_crtc, 12.936_MHz_XTAL / 8).set_char_width(8);
m_crtc->set_screen("screen");
@@ -395,8 +397,9 @@ void cdc721_state::cdc721(machine_config &config)
chb.cts_handler().set("pbuart", FUNC(ins8250_device::cts_w));
chb.ri_handler().set("pbuart", FUNC(ins8250_device::ri_w));
- INPUT_MERGER_ANY_HIGH(config, "int2").output_handler().set(FUNC(cdc721_state::int_w<2>)); // 74S05 (open collector)
-}
+ MCFG_INPUT_MERGER_ANY_HIGH("int2") // 74S05 (open collector)
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(WRITELINE(*this, cdc721_state, int_w<2>))
+MACHINE_CONFIG_END
ROM_START( cdc721 )
ROM_REGION( 0x4000, "resident", 0 )
diff --git a/src/mame/drivers/cdi.cpp b/src/mame/drivers/cdi.cpp
index 6df32896e33..00c987e9332 100644
--- a/src/mame/drivers/cdi.cpp
+++ b/src/mame/drivers/cdi.cpp
@@ -748,179 +748,181 @@ WRITE8_MEMBER( cdi_state::slave_io_w )
*************************/
// CD-i Mono-I system base
-void cdi_state::cdimono1_base(machine_config &config)
-{
- SCC68070(config, m_maincpu, CLOCK_A/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cdi_state::cdimono1_mem);
+MACHINE_CONFIG_START(cdi_state::cdimono1_base)
+ MCFG_DEVICE_ADD("maincpu", SCC68070, CLOCK_A/2)
+ MCFG_DEVICE_PROGRAM_MAP(cdimono1_mem)
- MCD212(config, m_mcd212, 0);
- m_mcd212->set_screen("screen");
+ MCFG_DEVICE_ADD("mcd212", MCD212, 0)
+ MCFG_VIDEO_SET_SCREEN("screen")
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(384, 302);
- screen.set_visarea(0, 384-1, 22, 302-1); // TODO: dynamic resolution
- screen.set_screen_update(FUNC(cdi_state::screen_update_cdimono1));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(384, 302)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 22, 302-1) // TODO: dynamic resolution
+ MCFG_SCREEN_UPDATE_DRIVER(cdi_state, screen_update_cdimono1)
- SCREEN(config, m_lcd, SCREEN_TYPE_RASTER);
- m_lcd->set_refresh_hz(60);
- m_lcd->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_lcd->set_size(192, 22);
- m_lcd->set_visarea(0, 192-1, 0, 22-1);
- m_lcd->set_screen_update(FUNC(cdi_state::screen_update_cdimono1_lcd));
+ MCFG_SCREEN_ADD("lcd", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(192, 22)
+ MCFG_SCREEN_VISIBLE_AREA(0, 192-1, 0, 22-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cdi_state, screen_update_cdimono1_lcd)
- PALETTE(config, "palette").set_entries(0x100);
+ MCFG_PALETTE_ADD("palette", 0x100)
config.set_default_layout(layout_cdi);
- CDI_68070(config, m_scc, 0, "maincpu");
+ MCFG_DEVICE_ADD("scc68070", CDI_68070, 0, "maincpu")
- CDI_CDIC(config, m_cdic, 0);
- CDI_SLAVE(config, m_slave_hle, 0);
+ MCFG_DEVICE_ADD("cdic", CDI_CDIC, 0)
+ MCFG_DEVICE_ADD("slave_hle", CDI_SLAVE, 0)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- DMADAC(config, m_dmadac[0]);
- m_dmadac[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
+ MCFG_DEVICE_ADD( "dac1", DMADAC )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "lspeaker", 1.0 )
- DMADAC(config, m_dmadac[1]);
- m_dmadac[1]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD( "dac2", DMADAC )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "rspeaker", 1.0 )
- CDDA(config, m_cdda);
- m_cdda->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_cdda->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD( "cdda", CDDA )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "lspeaker", 1.0 )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "rspeaker", 1.0 )
- MK48T08(config, "mk48t08", 0);
-}
+ MCFG_DEVICE_ADD("mk48t08", MK48T08, 0)
+MACHINE_CONFIG_END
// CD-i model 220 (Mono-II, NTSC)
-void cdi_state::cdimono2(machine_config &config)
-{
- SCC68070(config, m_maincpu, CLOCK_A/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cdi_state::cdimono2_mem);
+MACHINE_CONFIG_START(cdi_state::cdimono2)
+ MCFG_DEVICE_ADD("maincpu", SCC68070, CLOCK_A/2)
+ MCFG_DEVICE_PROGRAM_MAP(cdimono2_mem)
- MCD212(config, m_mcd212, 0);
- m_mcd212->set_screen("screen");
+ MCFG_DEVICE_ADD("mcd212", MCD212, 0)
+ MCFG_VIDEO_SET_SCREEN("screen")
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(384, 302);
- screen.set_visarea(0, 384-1, 22, 302-1); // TODO: dynamic resolution
- screen.set_screen_update(FUNC(cdi_state::screen_update_cdimono1));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(384, 302)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 22, 302-1) // TODO: dynamic resolution
+ MCFG_SCREEN_UPDATE_DRIVER(cdi_state, screen_update_cdimono1)
- SCREEN(config, m_lcd, SCREEN_TYPE_RASTER);
- m_lcd->set_refresh_hz(60);
- m_lcd->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_lcd->set_size(192, 22);
- m_lcd->set_visarea(0, 192-1, 0, 22-1);
- m_lcd->set_screen_update(FUNC(cdi_state::screen_update_cdimono1_lcd));
+ MCFG_SCREEN_ADD("lcd", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(192, 22)
+ MCFG_SCREEN_VISIBLE_AREA(0, 192-1, 0, 22-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cdi_state, screen_update_cdimono1_lcd)
- PALETTE(config, "palette").set_entries(0x100);
+ MCFG_PALETTE_ADD("palette", 0x100)
config.set_default_layout(layout_cdi);
MCFG_MACHINE_RESET_OVERRIDE( cdi_state, cdimono2 )
- CDI_68070(config, m_scc, 0, "maincpu");
- M68HC05EG(config, m_servo, 2000000); /* Unknown clock speed, docs say 2MHz internal clock */
- m_servo->set_addrmap(AS_PROGRAM, &cdi_state::cdimono2_servo_mem);
- M68HC05EG(config, m_slave, 2000000); /* Unknown clock speed, docs say 2MHz internal clock */
- m_slave->set_addrmap(AS_PROGRAM, &cdi_state::cdimono2_slave_mem);
+ MCFG_DEVICE_ADD("scc68070", CDI_68070, 0, "maincpu")
+ MCFG_DEVICE_ADD("servo", M68HC05EG, 2000000) /* Unknown clock speed, docs say 2MHz internal clock */
+ MCFG_DEVICE_PROGRAM_MAP(cdimono2_servo_mem)
+ MCFG_DEVICE_ADD("slave", M68HC05EG, 2000000) /* Unknown clock speed, docs say 2MHz internal clock */
+ MCFG_DEVICE_PROGRAM_MAP(cdimono2_slave_mem)
- CDROM(config, "cdrom").set_interface("cdi_cdrom");
- SOFTWARE_LIST(config, "cd_list").set_original("cdi").set_filter("!DVC");
+ MCFG_CDROM_ADD("cdrom")
+ MCFG_CDROM_INTERFACE("cdi_cdrom")
+ MCFG_SOFTWARE_LIST_ADD("cd_list","cdi")
+ MCFG_SOFTWARE_LIST_FILTER("cd_list","!DVC")
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- DMADAC(config, m_dmadac[0]);
- m_dmadac[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
+ MCFG_DEVICE_ADD( "dac1", DMADAC )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "lspeaker", 1.0 )
- DMADAC(config, m_dmadac[1]);
- m_dmadac[1]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD( "dac2", DMADAC )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "rspeaker", 1.0 )
- CDDA(config, m_cdda);
- m_cdda->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_cdda->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD( "cdda", CDDA )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "lspeaker", 1.0 )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "rspeaker", 1.0 )
- MK48T08(config, "mk48t08", 0);
-}
+ MCFG_DEVICE_ADD("mk48t08", MK48T08, 0)
+MACHINE_CONFIG_END
-void cdi_state::cdi910(machine_config &config)
-{
- SCC68070(config, m_maincpu, CLOCK_A/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cdi_state::cdi910_mem);
+MACHINE_CONFIG_START(cdi_state::cdi910)
+ MCFG_DEVICE_ADD("maincpu", SCC68070, CLOCK_A/2)
+ MCFG_DEVICE_PROGRAM_MAP(cdi910_mem)
- MCD212(config, m_mcd212, 0);
- m_mcd212->set_screen("screen");
+ MCFG_DEVICE_ADD("mcd212", MCD212, 0)
+ MCFG_VIDEO_SET_SCREEN("screen")
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(384, 302);
- screen.set_visarea(0, 384-1, 22, 302-1); // TODO: dynamic resolution
- screen.set_screen_update(FUNC(cdi_state::screen_update_cdimono1));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(384, 302)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 22, 302-1) // TODO: dynamic resolution
+ MCFG_SCREEN_UPDATE_DRIVER(cdi_state, screen_update_cdimono1)
- SCREEN(config, m_lcd, SCREEN_TYPE_RASTER);
- m_lcd->set_refresh_hz(60);
- m_lcd->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_lcd->set_size(192, 22);
- m_lcd->set_visarea(0, 192-1, 0, 22-1);
- m_lcd->set_screen_update(FUNC(cdi_state::screen_update_cdimono1_lcd));
+ MCFG_SCREEN_ADD("lcd", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(192, 22)
+ MCFG_SCREEN_VISIBLE_AREA(0, 192-1, 0, 22-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cdi_state, screen_update_cdimono1_lcd)
- PALETTE(config, "palette").set_entries(0x100);
+ MCFG_PALETTE_ADD("palette", 0x100)
config.set_default_layout(layout_cdi);
MCFG_MACHINE_RESET_OVERRIDE( cdi_state, cdimono2 )
- CDI_68070(config, m_scc, 0, "maincpu");
- M68HC05EG(config, m_servo, 2000000); /* Unknown clock speed, docs say 2MHz internal clock */
- m_servo->set_addrmap(AS_PROGRAM, &cdi_state::cdimono2_servo_mem);
- M68HC05EG(config, m_slave, 2000000); /* Unknown clock speed, docs say 2MHz internal clock */
- m_slave->set_addrmap(AS_PROGRAM, &cdi_state::cdimono2_slave_mem);
+ MCFG_DEVICE_ADD("scc68070", CDI_68070, 0, "maincpu")
+ MCFG_DEVICE_ADD("servo", M68HC05EG, 2000000) /* Unknown clock speed, docs say 2MHz internal clock */
+ MCFG_DEVICE_PROGRAM_MAP(cdimono2_servo_mem)
+ MCFG_DEVICE_ADD("slave", M68HC05EG, 2000000) /* Unknown clock speed, docs say 2MHz internal clock */
+ MCFG_DEVICE_PROGRAM_MAP(cdimono2_slave_mem)
- CDROM(config, "cdrom").set_interface("cdi_cdrom");
- SOFTWARE_LIST(config, "cd_list").set_original("cdi").set_filter("!DVC");
+ MCFG_CDROM_ADD( "cdrom" )
+ MCFG_CDROM_INTERFACE("cdi_cdrom")
+ MCFG_SOFTWARE_LIST_ADD("cd_list","cdi")
+ MCFG_SOFTWARE_LIST_FILTER("cd_list","!DVC")
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- DMADAC(config, m_dmadac[0]);
- m_dmadac[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
+ MCFG_DEVICE_ADD( "dac1", DMADAC )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "lspeaker", 1.0 )
- DMADAC(config, m_dmadac[1]);
- m_dmadac[1]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD( "dac2", DMADAC )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "rspeaker", 1.0 )
- CDDA(config, m_cdda);
- m_cdda->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_cdda->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD( "cdda", CDDA )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "lspeaker", 1.0 )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "rspeaker", 1.0 )
- MK48T08(config, "mk48t08", 0);
-}
+ MCFG_DEVICE_ADD("mk48t08", MK48T08, 0)
+MACHINE_CONFIG_END
// CD-i Mono-I, with CD-ROM image device (MESS) and Software List (MESS)
-void cdi_state::cdimono1(machine_config &config)
-{
+MACHINE_CONFIG_START(cdi_state::cdimono1)
cdimono1_base(config);
MCFG_MACHINE_RESET_OVERRIDE(cdi_state, cdimono1)
- CDROM(config, "cdrom").set_interface("cdi_cdrom");
- SOFTWARE_LIST(config, "cd_list").set_original("cdi").set_filter("!DVC");
-}
+ MCFG_CDROM_ADD( "cdrom" )
+ MCFG_CDROM_INTERFACE("cdi_cdrom")
+ MCFG_SOFTWARE_LIST_ADD("cd_list","cdi")
+ MCFG_SOFTWARE_LIST_FILTER("cd_list","!DVC")
+MACHINE_CONFIG_END
-void cdi_state::quizard(machine_config &config)
-{
+MACHINE_CONFIG_START(cdi_state::quizard)
cdimono1_base(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &cdi_state::cdimono1_mem);
- m_maincpu->set_vblank_int("screen", FUNC(cdi_state::mcu_frame));
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(cdimono1_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cdi_state, mcu_frame)
+MACHINE_CONFIG_END
READ8_MEMBER( cdi_state::quizard_mcu_p1_r )
diff --git a/src/mame/drivers/cedar_magnet.cpp b/src/mame/drivers/cedar_magnet.cpp
index 4c545df2b14..ab81f0bfecc 100644
--- a/src/mame/drivers/cedar_magnet.cpp
+++ b/src/mame/drivers/cedar_magnet.cpp
@@ -172,34 +172,34 @@ private:
required_device<z80pio_device> m_ic48_pio;
required_device<z80pio_device> m_ic49_pio;
- uint8_t ic48_pio_pa_r();
- void ic48_pio_pa_w(uint8_t data);
+ DECLARE_READ8_MEMBER(ic48_pio_pa_r);
+ DECLARE_WRITE8_MEMBER(ic48_pio_pa_w);
- uint8_t ic48_pio_pb_r();
- void ic48_pio_pb_w(uint8_t data);
+ DECLARE_READ8_MEMBER(ic48_pio_pb_r);
+ DECLARE_WRITE8_MEMBER(ic48_pio_pb_w);
- uint8_t ic49_pio_pb_r();
- void ic49_pio_pb_w(uint8_t data);
+ DECLARE_READ8_MEMBER(ic49_pio_pb_r);
+ DECLARE_WRITE8_MEMBER(ic49_pio_pb_w);
// 1x range ports
- void port18_w(uint8_t data);
- void port19_w(uint8_t data);
- void port1b_w(uint8_t data);
+ DECLARE_WRITE8_MEMBER(port18_w);
+ DECLARE_WRITE8_MEMBER(port19_w);
+ DECLARE_WRITE8_MEMBER(port1b_w);
- uint8_t port18_r();
- uint8_t port19_r();
- uint8_t port1a_r();
+ DECLARE_READ8_MEMBER(port18_r);
+ DECLARE_READ8_MEMBER(port19_r);
+ DECLARE_READ8_MEMBER(port1a_r);
// 7x range ports
- void rambank_palbank_w(uint8_t data);
- void palupload_w(uint8_t data);
- void paladdr_w(uint8_t data);
- uint8_t watchdog_r();
- uint8_t port7c_r();
+ DECLARE_WRITE8_MEMBER(rambank_palbank_w);
+ DECLARE_WRITE8_MEMBER(palupload_w);
+ DECLARE_WRITE8_MEMBER(paladdr_w);
+ DECLARE_READ8_MEMBER(watchdog_r);
+ DECLARE_READ8_MEMBER(port7c_r);
// other ports
- uint8_t other_cpu_r(offs_t offset);
- void other_cpu_w(offs_t offset, uint8_t data);
+ DECLARE_READ8_MEMBER(other_cpu_r);
+ DECLARE_WRITE8_MEMBER(other_cpu_w);
uint8_t m_paladdr;
int m_palbank;
@@ -209,9 +209,9 @@ private:
uint8_t m_ic49_pio_pb_val;
void set_palette(int offset);
- void palette_r_w(offs_t offset, uint8_t data);
- void palette_g_w(offs_t offset, uint8_t data);
- void palette_b_w(offs_t offset, uint8_t data);
+ DECLARE_WRITE8_MEMBER(palette_r_w);
+ DECLARE_WRITE8_MEMBER(palette_g_w);
+ DECLARE_WRITE8_MEMBER(palette_b_w);
void handle_sub_board_cpu_lines(cedar_magnet_board_interface &dev, int old_data, int data);
INTERRUPT_GEN_MEMBER(irq);
@@ -317,7 +317,7 @@ void cedar_magnet_state::cedar_bank0(address_map &map)
***********************/
-void cedar_magnet_state::rambank_palbank_w(uint8_t data)
+WRITE8_MEMBER(cedar_magnet_state::rambank_palbank_w)
{
// ---- --xx
// xx = program bank
@@ -329,17 +329,17 @@ void cedar_magnet_state::rambank_palbank_w(uint8_t data)
m_sub_pal_bankdev->set_bank(palbank);
}
-void cedar_magnet_state::palupload_w(uint8_t data)
+WRITE8_MEMBER(cedar_magnet_state::palupload_w)
{
- m_sub_pal_bankdev->write8(m_paladdr, data);
+ m_sub_pal_bankdev->write8(space, m_paladdr, data);
}
-void cedar_magnet_state::paladdr_w(uint8_t data)
+WRITE8_MEMBER(cedar_magnet_state::paladdr_w)
{
m_paladdr = data;
}
-uint8_t cedar_magnet_state::watchdog_r()
+READ8_MEMBER(cedar_magnet_state::watchdog_r)
{
// watchdog
return 0x00;
@@ -352,7 +352,7 @@ uint8_t cedar_magnet_state::watchdog_r()
***********************/
-uint8_t cedar_magnet_state::port7c_r()
+READ8_MEMBER(cedar_magnet_state::port7c_r)
{
//logerror("%s: port7c_r\n", machine().describe_context());
return 0x01;
@@ -366,18 +366,18 @@ uint8_t cedar_magnet_state::port7c_r()
***********************/
-uint8_t cedar_magnet_state::port18_r()
+READ8_MEMBER(cedar_magnet_state::port18_r)
{
// logerror("%s: port18_r\n", machine().describe_context());
return 0x00;
}
-void cedar_magnet_state::port18_w(uint8_t data)
+WRITE8_MEMBER(cedar_magnet_state::port18_w)
{
// logerror("%s: port18_w %02x\n", machine().describe_context(), data);
}
-uint8_t cedar_magnet_state::port19_r()
+READ8_MEMBER(cedar_magnet_state::port19_r)
{
uint8_t ret = 0x00;
// logerror("%s: port19_r\n", machine().describe_context());
@@ -390,19 +390,19 @@ uint8_t cedar_magnet_state::port19_r()
return ret;
}
-uint8_t cedar_magnet_state::port1a_r()
+READ8_MEMBER(cedar_magnet_state::port1a_r)
{
// logerror("%s: port1a_r\n", machine().describe_context());
return 0x00;
}
-void cedar_magnet_state::port19_w(uint8_t data)
+WRITE8_MEMBER(cedar_magnet_state::port19_w)
{
// logerror("%s: port19_w %02x\n", machine().describe_context(), data);
}
-void cedar_magnet_state::port1b_w(uint8_t data)
+WRITE8_MEMBER(cedar_magnet_state::port1b_w)
{
// logerror("%s: port1b_w %02x\n", machine().describe_context(), data);
}
@@ -418,19 +418,19 @@ void cedar_magnet_state::set_palette(int offset)
m_palette->set_pen_color(offset^0xff, pal4bit(m_pal_r[offset]), pal4bit(m_pal_g[offset]), pal4bit(m_pal_b[offset]));
}
-void cedar_magnet_state::palette_r_w(offs_t offset, uint8_t data)
+WRITE8_MEMBER(cedar_magnet_state::palette_r_w)
{
m_pal_r[offset] = data;
set_palette(offset);
}
-void cedar_magnet_state::palette_g_w(offs_t offset, uint8_t data)
+WRITE8_MEMBER(cedar_magnet_state::palette_g_w)
{
m_pal_g[offset] = data;
set_palette(offset);
}
-void cedar_magnet_state::palette_b_w(offs_t offset, uint8_t data)
+WRITE8_MEMBER(cedar_magnet_state::palette_b_w)
{
m_pal_b[offset] = data;
set_palette(offset);
@@ -460,7 +460,7 @@ void cedar_magnet_state::video_start()
***********************/
-uint8_t cedar_magnet_state::other_cpu_r(offs_t offset)
+READ8_MEMBER(cedar_magnet_state::other_cpu_r)
{
int bankbit0 = (m_ic48_pio_pa_val & 0x60) >> 5;
int plane0select = (m_ic48_pio_pa_val & 0x07) >> 0;
@@ -509,7 +509,7 @@ uint8_t cedar_magnet_state::other_cpu_r(offs_t offset)
return ret;
}
-void cedar_magnet_state::other_cpu_w(offs_t offset, uint8_t data)
+WRITE8_MEMBER(cedar_magnet_state::other_cpu_w)
{
int bankbit0 = (m_ic48_pio_pa_val & 0x60) >> 5;
int plane0select = (m_ic48_pio_pa_val & 0x07) >> 0;
@@ -579,7 +579,7 @@ void cedar_magnet_state::handle_sub_board_cpu_lines(cedar_magnet_board_interface
***********************/
-uint8_t cedar_magnet_state::ic48_pio_pa_r() // 0x20
+READ8_MEMBER( cedar_magnet_state::ic48_pio_pa_r ) // 0x20
{
uint8_t ret = m_ic48_pio_pa_val & ~0x08;
@@ -593,7 +593,7 @@ uint8_t cedar_magnet_state::ic48_pio_pa_r() // 0x20
return ret;
}
-void cedar_magnet_state::ic48_pio_pa_w(uint8_t data) // 0x20
+WRITE8_MEMBER( cedar_magnet_state::ic48_pio_pa_w ) // 0x20
{
int oldplane0select = (m_ic48_pio_pa_val & 0x07) >> 0;
@@ -621,7 +621,7 @@ void cedar_magnet_state::ic48_pio_pa_w(uint8_t data) // 0x20
}
-uint8_t cedar_magnet_state::ic48_pio_pb_r() // 0x22
+READ8_MEMBER( cedar_magnet_state::ic48_pio_pb_r ) // 0x22
{
uint8_t ret = m_ic48_pio_pb_val & ~0x80;
@@ -634,7 +634,7 @@ uint8_t cedar_magnet_state::ic48_pio_pb_r() // 0x22
return ret;
}
-void cedar_magnet_state::ic48_pio_pb_w(uint8_t data) // 0x22
+WRITE8_MEMBER(cedar_magnet_state::ic48_pio_pb_w) // 0x22
{
int oldplane1select = (m_ic48_pio_pb_val & 0x07) >> 0;
int oldspriteselect = (m_ic48_pio_pb_val & 0x70) >> 4;
@@ -667,7 +667,7 @@ void cedar_magnet_state::ic48_pio_pb_w(uint8_t data) // 0x22
***********************/
-uint8_t cedar_magnet_state::ic49_pio_pb_r() // 0x42
+READ8_MEMBER( cedar_magnet_state::ic49_pio_pb_r ) // 0x42
{
uint8_t ret = m_ic49_pio_pb_val;
@@ -677,7 +677,7 @@ uint8_t cedar_magnet_state::ic49_pio_pb_r() // 0x42
return ret;
}
-void cedar_magnet_state::ic49_pio_pb_w(uint8_t data) // 0x42
+WRITE8_MEMBER( cedar_magnet_state::ic49_pio_pb_w ) // 0x42
{
int oldsoundselect = (m_ic49_pio_pb_val & 0x70) >> 4;
@@ -767,13 +767,13 @@ INTERRUPT_GEN_MEMBER(cedar_magnet_state::irq)
m_cedsprite->irq_hold();
}
-void cedar_magnet_state::cedar_magnet(machine_config &config)
-{
+MACHINE_CONFIG_START(cedar_magnet_state::cedar_magnet)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &cedar_magnet_state::cedar_magnet_map);
- m_maincpu->set_addrmap(AS_IO, &cedar_magnet_state::cedar_magnet_io);
- m_maincpu->set_vblank_int("screen", FUNC(cedar_magnet_state::irq));
+ MCFG_DEVICE_ADD("maincpu", Z80,4000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(cedar_magnet_map)
+ MCFG_DEVICE_IO_MAP(cedar_magnet_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cedar_magnet_state, irq)
ADDRESS_MAP_BANK(config, "bank0").set_map(&cedar_magnet_state::cedar_bank0).set_options(ENDIANNESS_LITTLE, 8, 18, 0x10000);
ADDRESS_MAP_BANK(config, "mb_sub_ram").set_map(&cedar_magnet_state::cedar_magnet_mainboard_sub_ram_map).set_options(ENDIANNESS_LITTLE, 8, 18, 0x10000);
@@ -794,15 +794,15 @@ void cedar_magnet_state::cedar_magnet(machine_config &config)
m_ic49_pio->out_pb_callback().set(FUNC(cedar_magnet_state::ic49_pio_pb_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-8-1, 0, 192-1);
- screen.set_screen_update(FUNC(cedar_magnet_state::screen_update_cedar_magnet));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-8-1, 0, 192-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cedar_magnet_state, screen_update_cedar_magnet)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(0x400);
+ MCFG_PALETTE_ADD("palette", 0x400)
CEDAR_MAGNET_SOUND(config, m_cedsound, 0);
CEDAR_MAGNET_PLANE(config, m_cedplane0, 0);
@@ -811,8 +811,8 @@ void cedar_magnet_state::cedar_magnet(machine_config &config)
CEDAR_MAGNET_FLOP(config, "flop", 0);
- config.m_perfect_cpu_quantum = subtag("maincpu");
-}
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
+MACHINE_CONFIG_END
#define BIOS_ROM \
diff --git a/src/mame/drivers/centiped.cpp b/src/mame/drivers/centiped.cpp
index 02a1e5668af..e887a21948b 100644
--- a/src/mame/drivers/centiped.cpp
+++ b/src/mame/drivers/centiped.cpp
@@ -761,14 +761,14 @@ void centiped_state::caterplr_map(address_map &map)
WRITE8_MEMBER(centiped_state::caterplr_AY8910_w)
{
- m_aysnd->address_w(offset);
- m_aysnd->data_w(data);
+ m_aysnd->address_w(space, 0, offset);
+ m_aysnd->data_w(space, 0, data);
}
READ8_MEMBER(centiped_state::caterplr_AY8910_r)
{
- m_aysnd->address_w(offset);
- return m_aysnd->data_r();
+ m_aysnd->address_w(space, 0, offset);
+ return m_aysnd->data_r(space, 0);
}
@@ -985,7 +985,7 @@ void centiped_state::bullsdrt_port_map(address_map &map)
void centiped_state::bullsdrt_data_map(address_map &map)
{
- map(S2650_DATA_PORT, S2650_DATA_PORT).r(FUNC(centiped_state::bullsdrt_data_port_r)).w("snsnd", FUNC(sn76496_device::write));
+ map(S2650_DATA_PORT, S2650_DATA_PORT).r(FUNC(centiped_state::bullsdrt_data_port_r)).w("snsnd", FUNC(sn76496_device::command_w));
}
diff --git a/src/mame/drivers/cesclass.cpp b/src/mame/drivers/cesclass.cpp
index a8633d13ae7..abbe6c160c1 100644
--- a/src/mame/drivers/cesclass.cpp
+++ b/src/mame/drivers/cesclass.cpp
@@ -248,28 +248,29 @@ void cesclassic_state::cesclassic_palette(palette_device &palette) const
palette.set_pen_color(i, pal2bit(i), 0, 0);
}
-void cesclassic_state::cesclassic(machine_config &config)
-{
- M68000(config, m_maincpu, 24000000/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cesclassic_state::cesclassic_map);
- m_maincpu->set_vblank_int("l_lcd", FUNC(cesclassic_state::irq2_line_assert)); // TODO: unknown sources
- m_maincpu->set_periodic_int(FUNC(cesclassic_state::irq3_line_assert), attotime::from_hz(60*8));
+MACHINE_CONFIG_START(cesclassic_state::cesclassic)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 24000000/2 )
+ MCFG_DEVICE_PROGRAM_MAP(cesclassic_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("l_lcd", cesclassic_state, irq2_line_assert) // TODO: unknown sources
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(cesclassic_state, irq3_line_assert, 60*8)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "l_lcd", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_screen_update(FUNC(cesclassic_state::screen_update));
- screen.set_size(8*16*2, 8*8+3*8);
- screen.set_visarea(0*8, 8*16*2-1, 0*8, 8*8-1);
+ MCFG_SCREEN_ADD("l_lcd", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_UPDATE_DRIVER(cesclassic_state, screen_update)
+ MCFG_SCREEN_SIZE(8*16*2, 8*8+3*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 8*16*2-1, 0*8, 8*8-1)
PALETTE(config, m_palette, FUNC(cesclassic_state::cesclassic_palette), 4);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, 24000000/16, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 24000000/16, okim6295_device::PIN7_LOW)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
ROM_START(hrclass)
diff --git a/src/mame/drivers/cgc7900.cpp b/src/mame/drivers/cgc7900.cpp
index 6a9ee61a639..58508504108 100644
--- a/src/mame/drivers/cgc7900.cpp
+++ b/src/mame/drivers/cgc7900.cpp
@@ -458,19 +458,17 @@ void cgc7900_state::machine_reset()
MACHINE_DRIVER( cgc7900 )
-------------------------------------------------*/
-void cgc7900_state::cgc7900(machine_config &config)
-{
+MACHINE_CONFIG_START(cgc7900_state::cgc7900)
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(28'480'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &cgc7900_state::cgc7900_mem);
+ MCFG_DEVICE_ADD(M68000_TAG, M68000, XTAL(28'480'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(cgc7900_mem)
i8035_device &kbmcu(I8035(config, I8035_TAG, 1000000));
kbmcu.set_addrmap(AS_PROGRAM, &cgc7900_state::keyboard_mem);
kbmcu.set_disable();
-// am2910_device &am2910(AM2910(config, AM2910_TAG, XTAL(17'360'000)));
-// am2910.set_addrmap(AS_PROGRAM, &cgc7900_state::omti10_mem);
-
+/* MCFG_DEVICE_ADD(AM2910_TAG, AM2910, XTAL(17'360'000))
+ MCFG_DEVICE_PROGRAM_MAP(omti10_mem)*/
/* video hardware */
cgc7900_video(config);
@@ -483,8 +481,8 @@ void cgc7900_state::cgc7900(machine_config &config)
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
keyboard.set_keyboard_callback(FUNC(cgc7900_state::kbd_put));
- mm58167_device &rtc(MM58167(config, MM58167_TAG, XTAL(32'768)));
- rtc.irq().set(FUNC(cgc7900_state::irq<0x0>));
+ MCFG_DEVICE_ADD(MM58167_TAG, MM58167, XTAL(32'768))
+ MCFG_MM58167_IRQ_CALLBACK(WRITELINE(*this, cgc7900_state, irq<0x0>))
com8116_device &k1135a(COM8116(config, K1135A_TAG, XTAL(5'068'800)));
k1135a.fr_handler().set(m_i8251_0, FUNC(i8251_device::write_txc));
@@ -513,7 +511,7 @@ void cgc7900_state::cgc7900(machine_config &config)
rs232_port_device &rs449(RS232_PORT(config, "rs449", default_rs232_devices, nullptr));
rs449.rxd_handler().set(m_i8251_1, FUNC(i8251_device::write_rxd));
rs449.dsr_handler().set(m_i8251_1, FUNC(i8251_device::write_dsr));
-}
+MACHINE_CONFIG_END
/***************************************************************************
ROMS
diff --git a/src/mame/drivers/cgenie.cpp b/src/mame/drivers/cgenie.cpp
index b8728da66b5..65dcfeb85ca 100644
--- a/src/mame/drivers/cgenie.cpp
+++ b/src/mame/drivers/cgenie.cpp
@@ -306,6 +306,10 @@ void cgenie_state::machine_start()
{
// setup ram
m_maincpu->space(AS_PROGRAM).install_ram(0x4000, 0x4000 + m_ram->size() - 1, m_ram->pointer());
+
+ // setup expansion bus
+ m_exp->set_program_space(&m_maincpu->space(AS_PROGRAM));
+ m_exp->set_io_space(&m_maincpu->space(AS_IO));
}
@@ -434,17 +438,16 @@ const rgb_t cgenie_state::m_palette_nz[] =
// MACHINE DEFINTIONS
//**************************************************************************
-void cgenie_state::cgenie(machine_config &config)
-{
+MACHINE_CONFIG_START(cgenie_state::cgenie)
// basic machine hardware
- Z80(config, m_maincpu, XTAL(17'734'470) / 8); // 2.2168 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &cgenie_state::cgenie_mem);
- m_maincpu->set_addrmap(AS_IO, &cgenie_state::cgenie_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(17'734'470) / 8) // 2.2168 MHz
+ MCFG_DEVICE_PROGRAM_MAP(cgenie_mem)
+ MCFG_DEVICE_IO_MAP(cgenie_io)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(17'734'470) / 2, 568, 32, 416, 312, 28, 284);
- screen.set_screen_update("crtc", FUNC(hd6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(17'734'470) / 2, 568, 32, 416, 312, 28, 284)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", hd6845_device, screen_update)
HD6845(config, m_crtc, XTAL(17'734'470) / 16);
m_crtc->set_screen("screen");
@@ -462,12 +465,12 @@ void cgenie_state::cgenie(machine_config &config)
ay8910.port_b_write_callback().set("par", FUNC(cg_parallel_slot_device::pb_w));
ay8910.add_route(ALL_OUTPUTS, "mono", 0.75);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(cgenie_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED);
- m_cassette->set_interface("cgenie_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(cgenie_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED)
+ MCFG_CASSETTE_INTERFACE("cgenie_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("cgenie_cass");
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "cgenie_cass")
// serial port
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr));
@@ -475,17 +478,15 @@ void cgenie_state::cgenie(machine_config &config)
rs232.dcd_handler().set(FUNC(cgenie_state::rs232_dcd_w));
// cartridge expansion slot
- CG_EXP_SLOT(config, m_exp);
- m_exp->set_program_space(m_maincpu, AS_PROGRAM);
- m_exp->set_io_space(m_maincpu, AS_IO);
- m_exp->int_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+ MCFG_CG_EXP_SLOT_ADD("exp")
+ MCFG_CG_EXP_SLOT_INT_HANDLER(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
// parallel slot
- CG_PARALLEL_SLOT(config, "par");
+ MCFG_CG_PARALLEL_SLOT_ADD("par")
// internal ram
RAM(config, RAM_TAG).set_default_size("16K").set_extra_options("32K");
-}
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/chaknpop.cpp b/src/mame/drivers/chaknpop.cpp
index 01feb17a84e..9da44e2bae3 100644
--- a/src/mame/drivers/chaknpop.cpp
+++ b/src/mame/drivers/chaknpop.cpp
@@ -362,24 +362,24 @@ void chaknpop_state::machine_reset()
m_flip_y = 0;
}
-void chaknpop_state::chaknpop(machine_config &config)
-{
+MACHINE_CONFIG_START(chaknpop_state::chaknpop)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'000'000) / 6); // Verified on PCB
- m_maincpu->set_addrmap(AS_PROGRAM, &chaknpop_state::chaknpop_map);
- m_maincpu->set_vblank_int("screen", FUNC(chaknpop_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'000'000) / 6) // Verified on PCB
+ MCFG_DEVICE_PROGRAM_MAP(chaknpop_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", chaknpop_state, irq0_line_hold)
- TAITO68705_MCU(config, m_bmcu, XTAL(18'000'000) / 6); // Verified on PCB
- config.m_minimum_quantum = attotime::from_hz(6000); // 100 CPU slices per frame - a high value to ensure proper synchronization of the CPUs
+ MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU, XTAL(18'000'000) / 6) // Verified on PCB
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) // 100 CPU slices per frame - a high value to ensure proper synchronization of the CPUs
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.1828);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(chaknpop_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.1828)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(chaknpop_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_chaknpop);
PALETTE(config, m_palette, FUNC(chaknpop_state::chaknpop_palette), 1024);
@@ -396,7 +396,7 @@ void chaknpop_state::chaknpop(machine_config &config)
ay2.port_a_write_callback().set(FUNC(chaknpop_state::unknown_port_1_w)); // ??
ay2.port_b_write_callback().set(FUNC(chaknpop_state::unknown_port_2_w)); // ??
ay2.add_route(ALL_OUTPUTS, "mono", 0.10);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/champbas.cpp b/src/mame/drivers/champbas.cpp
index 8bc7082d3a3..0d928689e43 100644
--- a/src/mame/drivers/champbas.cpp
+++ b/src/mame/drivers/champbas.cpp
@@ -512,6 +512,13 @@ void champbas_state::machine_start()
save_item(NAME(m_gfx_bank));
}
+void champbas_state::machine_reset()
+{
+ // 74LS259 is auto CLR on reset
+ for (int i = 0; i < 8; i++)
+ m_maincpu->space(AS_PROGRAM).write_byte(0xa000 + i, 0);
+}
+
INTERRUPT_GEN_MEMBER(champbas_state::vblank_irq)
{
if (m_irq_mask)
@@ -519,12 +526,12 @@ INTERRUPT_GEN_MEMBER(champbas_state::vblank_irq)
}
-void champbas_state::talbot(machine_config &config)
-{
+MACHINE_CONFIG_START(champbas_state::talbot)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'432'000)/6);
- m_maincpu->set_addrmap(AS_PROGRAM, &champbas_state::champbasj_map);
- m_maincpu->set_vblank_int("screen", FUNC(champbas_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'432'000)/6)
+ MCFG_DEVICE_PROGRAM_MAP(champbasj_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", champbas_state, vblank_irq)
LS259(config, m_mainlatch);
m_mainlatch->q_out_cb<0>().set(FUNC(champbas_state::irq_enable_w));
@@ -536,20 +543,20 @@ void champbas_state::talbot(machine_config &config)
m_mainlatch->q_out_cb<6>().set(FUNC(champbas_state::mcu_start_w));
m_mainlatch->q_out_cb<7>().set(FUNC(champbas_state::mcu_switch_w));
- ALPHA_8201(config, m_alpha_8201, XTAL(18'432'000)/6/8);
- config.m_perfect_cpu_quantum = subtag("alpha_8201:mcu");
+ MCFG_DEVICE_ADD("alpha_8201", ALPHA_8201, XTAL(18'432'000)/6/8)
+ MCFG_QUANTUM_PERFECT_CPU("alpha_8201:mcu")
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 0x10);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(champbas_state::screen_update_champbas));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_talbot);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(champbas_state, screen_update_champbas)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_talbot)
PALETTE(config, m_palette, FUNC(champbas_state::champbas_palette), 512, 32);
/* sound hardware */
@@ -558,15 +565,15 @@ void champbas_state::talbot(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
AY8910(config, "ay1", XTAL(18'432'000)/12).add_route(ALL_OUTPUTS, "speaker", 0.5);
-}
+MACHINE_CONFIG_END
-void champbas_state::champbas(machine_config &config)
-{
+MACHINE_CONFIG_START(champbas_state::champbas)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'432'000)/6);
- m_maincpu->set_addrmap(AS_PROGRAM, &champbas_state::champbas_map);
- m_maincpu->set_vblank_int("screen", FUNC(champbas_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'432'000)/6)
+ MCFG_DEVICE_PROGRAM_MAP(champbas_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", champbas_state, vblank_irq)
LS259(config, m_mainlatch); // 9D; 8G on Champion Baseball II Double Board Configuration
m_mainlatch->q_out_cb<0>().set(FUNC(champbas_state::irq_enable_w));
@@ -578,20 +585,20 @@ void champbas_state::champbas(machine_config &config)
m_mainlatch->q_out_cb<6>().set_nop(); // no MCU
m_mainlatch->q_out_cb<7>().set_nop(); // no MCU
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(18'432'000)/6));
- audiocpu.set_addrmap(AS_PROGRAM, &champbas_state::champbas_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(18'432'000)/6)
+ MCFG_DEVICE_PROGRAM_MAP(champbas_sound_map)
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 0x10);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(champbas_state::screen_update_champbas));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_champbas);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(champbas_state, screen_update_champbas)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_champbas)
PALETTE(config, m_palette, FUNC(champbas_state::champbas_palette), 512, 32);
/* sound hardware */
@@ -601,74 +608,73 @@ void champbas_state::champbas(machine_config &config)
AY8910(config, "ay1", XTAL(18'432'000)/12).add_route(ALL_OUTPUTS, "speaker", 0.3);
- DAC_6BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.7); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_6BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.7) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void champbas_state::champbasj(machine_config &config)
-{
+MACHINE_CONFIG_START(champbas_state::champbasj)
champbas(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &champbas_state::champbasj_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(champbasj_map)
m_mainlatch->q_out_cb<6>().set(FUNC(champbas_state::mcu_start_w));
m_mainlatch->q_out_cb<7>().set(FUNC(champbas_state::mcu_switch_w));
- ALPHA_8201(config, m_alpha_8201, XTAL(18'432'000)/6/8); // note: 8302 rom on champbb2 (same device!)
- config.m_perfect_cpu_quantum = subtag("alpha_8201:mcu");
-}
+ MCFG_DEVICE_ADD("alpha_8201", ALPHA_8201, XTAL(18'432'000)/6/8) // note: 8302 rom on champbb2 (same device!)
+ MCFG_QUANTUM_PERFECT_CPU("alpha_8201:mcu")
+MACHINE_CONFIG_END
-void champbas_state::champbasja(machine_config &config)
-{
+MACHINE_CONFIG_START(champbas_state::champbasja)
champbas(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &champbas_state::champbasja_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(champbasja_map)
+MACHINE_CONFIG_END
-void champbas_state::champbasjb(machine_config &config)
-{
+MACHINE_CONFIG_START(champbas_state::champbasjb)
champbas(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &champbas_state::champbasjb_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(champbasjb_map)
+MACHINE_CONFIG_END
-void champbas_state::champbb2(machine_config &config)
-{
+MACHINE_CONFIG_START(champbas_state::champbb2)
champbasj(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &champbas_state::champbb2_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(champbb2_map)
+MACHINE_CONFIG_END
-void champbas_state::champbb2j(machine_config &config)
-{
+MACHINE_CONFIG_START(champbas_state::champbb2j)
champbb2(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &champbas_state::champbb2j_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(champbb2j_map)
+MACHINE_CONFIG_END
-void champbas_state::tbasebal(machine_config &config)
-{
+MACHINE_CONFIG_START(champbas_state::tbasebal)
champbas(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &champbas_state::tbasebal_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tbasebal_map)
- M68705P3(config, "mcu", XTAL(18'432'000)/6); // ?Mhz
-}
+ MCFG_DEVICE_ADD("mcu", M68705P3, XTAL(18'432'000)/6) // ?Mhz
+MACHINE_CONFIG_END
-void exctsccr_state::exctsccr(machine_config &config)
-{
+MACHINE_CONFIG_START(exctsccr_state::exctsccr)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'432'000)/6);
- m_maincpu->set_addrmap(AS_PROGRAM, &exctsccr_state::exctsccr_map);
- m_maincpu->set_vblank_int("screen", FUNC(exctsccr_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'432'000)/6 )
+ MCFG_DEVICE_PROGRAM_MAP(exctsccr_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", exctsccr_state, vblank_irq)
LS259(config, m_mainlatch);
m_mainlatch->q_out_cb<0>().set(FUNC(exctsccr_state::irq_enable_w));
@@ -680,29 +686,28 @@ void exctsccr_state::exctsccr(machine_config &config)
m_mainlatch->q_out_cb<6>().set(FUNC(exctsccr_state::mcu_start_w));
m_mainlatch->q_out_cb<7>().set(FUNC(exctsccr_state::mcu_switch_w));
- Z80(config, m_audiocpu, XTAL(14'318'181)/4);
- m_audiocpu->set_addrmap(AS_PROGRAM, &exctsccr_state::exctsccr_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &exctsccr_state::exctsccr_sound_io_map);
- m_audiocpu->set_periodic_int(FUNC(exctsccr_state::nmi_line_pulse), attotime::from_hz(4000)); // 4 kHz, updates the dac
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(14'318'181)/4 )
+ MCFG_DEVICE_PROGRAM_MAP(exctsccr_sound_map)
+ MCFG_DEVICE_IO_MAP(exctsccr_sound_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(exctsccr_state, nmi_line_pulse, 4000) // 4 kHz, updates the dac
- timer_device &exc_snd_irq(TIMER(config, "exc_snd_irq"));
- exc_snd_irq.configure_periodic(FUNC(exctsccr_state::exctsccr_sound_irq), attotime::from_hz(75)); // irq source unknown, determines music tempo
- exc_snd_irq.set_start_delay(attotime::from_hz(75));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("exc_snd_irq", exctsccr_state, exctsccr_sound_irq, attotime::from_hz(75)) // irq source unknown, determines music tempo
+ MCFG_TIMER_START_DELAY(attotime::from_hz(75))
- ALPHA_8201(config, m_alpha_8201, XTAL(18'432'000)/6/8); // note: 8302 rom, or 8303 on exctscc2 (same device!)
- config.m_perfect_cpu_quantum = subtag("alpha_8201:mcu");
+ MCFG_DEVICE_ADD("alpha_8201", ALPHA_8201, XTAL(18'432'000)/6/8) // note: 8302 rom, or 8303 on exctscc2 (same device!)
+ MCFG_QUANTUM_PERFECT_CPU("alpha_8201:mcu")
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 0x10);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60.54);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(exctsccr_state::screen_update_exctsccr));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_exctsccr);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60.54)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(exctsccr_state, screen_update_exctsccr)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_exctsccr)
PALETTE(config, m_palette, FUNC(exctsccr_state::exctsccr_palette), 512, 32);
/* sound hardware */
@@ -719,20 +724,20 @@ void exctsccr_state::exctsccr(machine_config &config)
AY8910(config, "ay4", XTAL(14'318'181)/8).add_route(ALL_OUTPUTS, "speaker", 0.08);
- DAC_6BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, "speaker", 0.3); // unknown DAC
- DAC_6BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.3); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac1", DAC_6BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.3) // unknown DAC
+ MCFG_DEVICE_ADD("dac2", DAC_6BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.3) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
/* Bootleg running on a modified Champion Baseball board */
-void exctsccr_state::exctsccrb(machine_config &config)
-{
+MACHINE_CONFIG_START(exctsccr_state::exctsccrb)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'432'000)/6);
- m_maincpu->set_addrmap(AS_PROGRAM, &exctsccr_state::exctsccrb_map);
- m_maincpu->set_vblank_int("screen", FUNC(exctsccr_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'432'000)/6)
+ MCFG_DEVICE_PROGRAM_MAP(exctsccrb_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", exctsccr_state, vblank_irq)
LS259(config, m_mainlatch);
m_mainlatch->q_out_cb<0>().set(FUNC(exctsccr_state::irq_enable_w));
@@ -744,23 +749,23 @@ void exctsccr_state::exctsccrb(machine_config &config)
m_mainlatch->q_out_cb<6>().set(FUNC(exctsccr_state::mcu_start_w));
m_mainlatch->q_out_cb<7>().set(FUNC(exctsccr_state::mcu_switch_w));
- Z80(config, m_audiocpu, XTAL(18'432'000)/6);
- m_audiocpu->set_addrmap(AS_PROGRAM, &exctsccr_state::champbas_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(18'432'000)/6)
+ MCFG_DEVICE_PROGRAM_MAP(champbas_sound_map)
- ALPHA_8201(config, m_alpha_8201, XTAL(18'432'000)/6/8); // champbasj 8201 on pcb, though unused
- config.m_perfect_cpu_quantum = subtag("alpha_8201:mcu");
+ MCFG_DEVICE_ADD("alpha_8201", ALPHA_8201, XTAL(18'432'000)/6/8) // champbasj 8201 on pcb, though unused
+ MCFG_QUANTUM_PERFECT_CPU("alpha_8201:mcu")
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 0x10);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(exctsccr_state::screen_update_exctsccr));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_exctsccr);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(exctsccr_state, screen_update_exctsccr)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_exctsccr)
PALETTE(config, m_palette, FUNC(exctsccr_state::exctsccr_palette), 512, 32);
/* sound hardware */
@@ -770,11 +775,10 @@ void exctsccr_state::exctsccrb(machine_config &config)
AY8910(config, "ay1", XTAL(18'432'000)/12).add_route(ALL_OUTPUTS, "speaker", 0.3);
- DAC_6BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.7); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_6BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.7) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/champbwl.cpp b/src/mame/drivers/champbwl.cpp
index 2998b5b976c..5ef96219ec0 100644
--- a/src/mame/drivers/champbwl.cpp
+++ b/src/mame/drivers/champbwl.cpp
@@ -489,12 +489,12 @@ WRITE_LINE_MEMBER(champbwl_state::screen_vblank_champbwl)
}
-void champbwl_state::champbwl(machine_config &config)
-{
+MACHINE_CONFIG_START(champbwl_state::champbwl)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 16000000/4); /* 4MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &champbwl_state::champbwl_map);
- m_maincpu->set_vblank_int("screen", FUNC(champbwl_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 16000000/4) /* 4MHz */
+ MCFG_DEVICE_PROGRAM_MAP(champbwl_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", champbwl_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -505,14 +505,14 @@ void champbwl_state::champbwl(machine_config &config)
m_seta001->set_gfxdecode_tag("gfxdecode");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57.5);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(champbwl_state::screen_update_champbwl));
- screen.screen_vblank().set(FUNC(champbwl_state::screen_vblank_champbwl));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57.5)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(champbwl_state, screen_update_champbwl)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, champbwl_state, screen_vblank_champbwl))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, "gfxdecode", m_palette, gfx_champbwl);
PALETTE(config, m_palette, FUNC(champbwl_state::champbwl_palette), 512);
@@ -521,10 +521,10 @@ void champbwl_state::champbwl(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- X1_010(config, m_x1, 16000000);
- m_x1->add_route(0, "lspeaker", 1.0);
- m_x1->add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("x1snd", X1_010, 16000000)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
@@ -553,39 +553,40 @@ MACHINE_START_MEMBER(champbwl_state,doraemon)
m_mainbank->configure_entries(0, 4, &ROM[0], 0x4000);
}
-void champbwl_state::doraemon(machine_config &config)
-{
+MACHINE_CONFIG_START(champbwl_state::doraemon)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(14'318'181)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &champbwl_state::doraemon_map);
- m_maincpu->set_vblank_int("screen", FUNC(champbwl_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(14'318'181)/4)
+ MCFG_DEVICE_PROGRAM_MAP(doraemon_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", champbwl_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
SETA001_SPRITE(config, m_seta001, 0);
m_seta001->set_gfxdecode_tag("gfxdecode");
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(2000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW );
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(2000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
MCFG_MACHINE_START_OVERRIDE(champbwl_state,doraemon)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(320, 256);
- screen.set_visarea(0, 320-1, 16, 256-16-1);
- screen.set_screen_update(FUNC(champbwl_state::screen_update_doraemon));
- screen.screen_vblank().set(FUNC(champbwl_state::screen_vblank_doraemon));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(320, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(champbwl_state, screen_update_doraemon)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, champbwl_state, screen_vblank_doraemon))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, "gfxdecode", m_palette, gfx_champbwl);
PALETTE(config, m_palette, FUNC(champbwl_state::champbwl_palette), 512);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- X1_010(config, m_x1, XTAL(14'318'181)).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("x1snd", X1_010, XTAL(14'318'181))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/chanbara.cpp b/src/mame/drivers/chanbara.cpp
index 352aeb368de..4c4c8e00776 100644
--- a/src/mame/drivers/chanbara.cpp
+++ b/src/mame/drivers/chanbara.cpp
@@ -394,24 +394,24 @@ void chanbara_state::machine_reset()
m_scrollhi = 0;
}
-void chanbara_state::chanbara(machine_config &config)
-{
- MC6809E(config, m_maincpu, XTAL(12'000'000)/8);
- m_maincpu->set_addrmap(AS_PROGRAM, &chanbara_state::chanbara_map);
+MACHINE_CONFIG_START(chanbara_state::chanbara)
+
+ MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(12'000'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(chanbara_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
-// screen.set_refresh_hz(57.4122);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
-// screen.set_size(32*8, 32*8);
-// screen.set_visarea(0, 32*8-1, 2*8, 30*8-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_REFRESH_RATE(57.4122)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+// MCFG_SCREEN_SIZE(32*8, 32*8)
+// MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
// DECO video CRTC
- screen.set_raw(XTAL(12'000'000)/2,384,0,256,272,16,240);
- screen.set_screen_update(FUNC(chanbara_state::screen_update_chanbara));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_RAW_PARAMS(XTAL(12'000'000)/2,384,0,256,272,16,240)
+ MCFG_SCREEN_UPDATE_DRIVER(chanbara_state, screen_update_chanbara)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_chanbara);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_chanbara)
PALETTE(config, m_palette, FUNC(chanbara_state::chanbara_palette), 256);
@@ -422,7 +422,7 @@ void chanbara_state::chanbara(machine_config &config)
ymsnd.port_a_write_callback().set(FUNC(chanbara_state::chanbara_ay_out_0_w));
ymsnd.port_b_write_callback().set(FUNC(chanbara_state::chanbara_ay_out_1_w));
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
ROM_START( chanbara )
diff --git a/src/mame/drivers/chance32.cpp b/src/mame/drivers/chance32.cpp
index 4e95975b043..7169627c897 100644
--- a/src/mame/drivers/chance32.cpp
+++ b/src/mame/drivers/chance32.cpp
@@ -458,23 +458,23 @@ void chance32_state::machine_reset()
}
-void chance32_state::chance32(machine_config &config)
-{
+MACHINE_CONFIG_START(chance32_state::chance32)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 12000000/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &chance32_state::chance32_map);
- m_maincpu->set_addrmap(AS_IO, &chance32_state::chance32_portmap);
- m_maincpu->set_vblank_int("screen", FUNC(chance32_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,12000000/2)
+ MCFG_DEVICE_PROGRAM_MAP(chance32_map)
+ MCFG_DEVICE_IO_MAP(chance32_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", chance32_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(52.786);
-// screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*16, 32*8);
- screen.set_visarea(0, 35*16-1, 0, 29*8-1);
- screen.set_screen_update(FUNC(chance32_state::screen_update_chance32));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(52.786)
+// MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*16, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 35*16-1, 0, 29*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(chance32_state, screen_update_chance32)
+ MCFG_SCREEN_PALETTE("palette")
h46505_device &crtc(H46505(config, "crtc", 12000000/16)); /* 52.786 Hz (similar to Major Poker) */
crtc.set_screen("screen");
@@ -488,8 +488,9 @@ void chance32_state::chance32(machine_config &config)
SPEAKER(config, "mono").front_center();
/* clock at 1050 kHz match the 8000 Hz samples stored inside the ROM */
- OKIM6295(config, "oki", 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( chance32 )
diff --git a/src/mame/drivers/channelf.cpp b/src/mame/drivers/channelf.cpp
index 529a911e10d..848dae8d73c 100644
--- a/src/mame/drivers/channelf.cpp
+++ b/src/mame/drivers/channelf.cpp
@@ -12,10 +12,6 @@
* also spanning from $3000 to $FFFF. Added clones
* Fabio "etabeta" Priuli, moved carts to be slot devices
*
- * TODO:
- * - hook up F3851 and F3853 devices (note: from a black box pov there's
- * currently no problem, nothing uses the timer or irq)
- *
******************************************************************/
#include "emu.h"
@@ -25,6 +21,9 @@
#include "softlist.h"
#include "speaker.h"
+#define MASTER_CLOCK_PAL 2000000 /* PAL unit has a separate crystal at 4.000 MHz */
+#define PAL_VBLANK_TIME 4623
+
/* The F8 has latches on its port pins
* These mimic's their behavior
@@ -198,116 +197,119 @@ static void cf_cart(device_slot_interface &device)
}
-void channelf_state::channelf_cart(machine_config &config)
-{
+MACHINE_CONFIG_START(channelf_state::channelf_cart)
/* cartridge */
- CHANF_CART_SLOT(config, m_cart, cf_cart, nullptr);
+ MCFG_CHANNELF_CARTRIDGE_ADD("cartslot", cf_cart, nullptr)
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("channelf");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list","channelf")
+MACHINE_CONFIG_END
-void channelf_state::channelf(machine_config &config)
-{
+MACHINE_CONFIG_START(channelf_state::channelf)
/* basic machine hardware */
- F8(config, m_maincpu, 3.579545_MHz_XTAL/2); /* Colorburst/2 */
- m_maincpu->set_addrmap(AS_PROGRAM, &channelf_state::channelf_map);
- m_maincpu->set_addrmap(AS_IO, &channelf_state::channelf_io);
+ MCFG_DEVICE_ADD("maincpu", F8, 3579545/2) /* Colorburst/2 */
+ MCFG_DEVICE_PROGRAM_MAP(channelf_map)
+ MCFG_DEVICE_IO_MAP(channelf_io)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(128, 64);
- screen.set_visarea(4, 112 - 7, 4, 64 - 3);
- screen.set_screen_update(FUNC(channelf_state::screen_update_channelf));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(128, 64)
+ MCFG_SCREEN_VISIBLE_AREA(4, 112 - 7, 4, 64 - 3)
+ MCFG_SCREEN_UPDATE_DRIVER(channelf_state, screen_update_channelf)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(channelf_state::channelf_palette), 8);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- CHANNELF_SOUND(config, m_custom).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("custom", CHANNELF_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
channelf_cart(config);
-}
+MACHINE_CONFIG_END
-void channelf_state::sabavdpl(machine_config &config)
-{
+MACHINE_CONFIG_START(channelf_state::sabavdpl)
/* basic machine hardware */
- F8(config, m_maincpu, 4_MHz_XTAL/2); /* PAL speed */
- m_maincpu->set_addrmap(AS_PROGRAM, &channelf_state::channelf_map);
- m_maincpu->set_addrmap(AS_IO, &channelf_state::channelf_io);
+ MCFG_DEVICE_ADD("maincpu", F8, MASTER_CLOCK_PAL) /* PAL speed */
+ MCFG_DEVICE_PROGRAM_MAP(channelf_map)
+ MCFG_DEVICE_IO_MAP(channelf_io)
+ MCFG_QUANTUM_TIME(attotime::from_hz(50))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(4623)); /* approximate */
- screen.set_size(128, 64);
- screen.set_visarea(4, 112 - 7, 4, 64 - 3);
- screen.set_screen_update(FUNC(channelf_state::screen_update_channelf));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(PAL_VBLANK_TIME)) /* approximate */
+ MCFG_SCREEN_SIZE(128, 64)
+ MCFG_SCREEN_VISIBLE_AREA(4, 112 - 7, 4, 64 - 3)
+ MCFG_SCREEN_UPDATE_DRIVER(channelf_state, screen_update_channelf)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(channelf_state::channelf_palette), 8);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- CHANNELF_SOUND(config, m_custom).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("custom", CHANNELF_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
channelf_cart(config);
-}
+MACHINE_CONFIG_END
-void channelf_state::channlf2(machine_config &config)
-{
+MACHINE_CONFIG_START(channelf_state::channlf2)
/* basic machine hardware */
- F8(config, m_maincpu, 3.579545_MHz_XTAL/2); /* Colorburst / 2 */
- m_maincpu->set_addrmap(AS_PROGRAM, &channelf_state::channelf_map);
- m_maincpu->set_addrmap(AS_IO, &channelf_state::channelf_io);
+ MCFG_DEVICE_ADD("maincpu", F8, 3579545/2) /* Colorburst / 2 */
+ MCFG_DEVICE_PROGRAM_MAP(channelf_map)
+ MCFG_DEVICE_IO_MAP(channelf_io)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(128, 64);
- screen.set_visarea(4, 112 - 7, 4, 64 - 3);
- screen.set_screen_update(FUNC(channelf_state::screen_update_channelf));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(128, 64)
+ MCFG_SCREEN_VISIBLE_AREA(4, 112 - 7, 4, 64 - 3)
+ MCFG_SCREEN_UPDATE_DRIVER(channelf_state, screen_update_channelf)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(channelf_state::channelf_palette), 8);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- CHANNELF_SOUND(config, m_custom).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("custom", CHANNELF_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
channelf_cart(config);
-}
+MACHINE_CONFIG_END
-void channelf_state::sabavpl2(machine_config &config)
-{
+MACHINE_CONFIG_START(channelf_state::sabavpl2)
/* basic machine hardware */
- F8(config, m_maincpu, 4_MHz_XTAL/2); /* PAL speed */
- m_maincpu->set_addrmap(AS_PROGRAM, &channelf_state::channelf_map);
- m_maincpu->set_addrmap(AS_IO, &channelf_state::channelf_io);
+ MCFG_DEVICE_ADD("maincpu", F8, MASTER_CLOCK_PAL) /* PAL speed */
+ MCFG_DEVICE_PROGRAM_MAP(channelf_map)
+ MCFG_DEVICE_IO_MAP(channelf_io)
+ MCFG_QUANTUM_TIME(attotime::from_hz(50))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(4623)); /* approximate */
- screen.set_size(128, 64);
- screen.set_visarea(4, 112 - 7, 4, 64 - 3);
- screen.set_screen_update(FUNC(channelf_state::screen_update_channelf));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(PAL_VBLANK_TIME)) /* not accurate */
+ MCFG_SCREEN_SIZE(128, 64)
+ MCFG_SCREEN_VISIBLE_AREA(4, 112 - 7, 4, 64 - 3)
+ MCFG_SCREEN_UPDATE_DRIVER(channelf_state, screen_update_channelf)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(channelf_state::channelf_palette), 8);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- CHANNELF_SOUND(config, m_custom).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("custom", CHANNELF_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
channelf_cart(config);
-}
+MACHINE_CONFIG_END
ROM_START( channelf )
ROM_REGION(0x10000,"maincpu",0)
diff --git a/src/mame/drivers/chaos.cpp b/src/mame/drivers/chaos.cpp
index b21f9ec811b..b785edcc42a 100644
--- a/src/mame/drivers/chaos.cpp
+++ b/src/mame/drivers/chaos.cpp
@@ -110,10 +110,10 @@ WRITE8_MEMBER( chaos_state::port1f_w )
if (!data)
data = 0x24;
- m_terminal->write(data);
+ m_terminal->write(space, 0, data);
if (data == 0x0d)
- m_terminal->write(0x0a);
+ m_terminal->write(space, 0, 0x0a);
}
READ8_MEMBER( chaos_state::port90_r )
@@ -148,18 +148,17 @@ void chaos_state::machine_reset()
memcpy(m_p_ram+0x7000, ROM+0x3000, 0x1000);
}
-void chaos_state::chaos(machine_config &config)
-{
+MACHINE_CONFIG_START(chaos_state::chaos)
/* basic machine hardware */
- S2650(config, m_maincpu, XTAL(1'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &chaos_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &chaos_state::io_map);
- m_maincpu->set_addrmap(AS_DATA, &chaos_state::data_map);
+ MCFG_DEVICE_ADD("maincpu", S2650, XTAL(1'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_DATA_MAP(data_map)
/* video hardware */
GENERIC_TERMINAL(config, m_terminal, 0);
m_terminal->set_keyboard_callback(FUNC(chaos_state::kbd_put));
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( chaos )
diff --git a/src/mame/drivers/cheekyms.cpp b/src/mame/drivers/cheekyms.cpp
index e1d29578682..a13c1bc7f9f 100644
--- a/src/mame/drivers/cheekyms.cpp
+++ b/src/mame/drivers/cheekyms.cpp
@@ -121,30 +121,30 @@ INTERRUPT_GEN_MEMBER(cheekyms_state::vblank_irq)
}
-void cheekyms_state::cheekyms(machine_config &config)
-{
+MACHINE_CONFIG_START(cheekyms_state::cheekyms)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 5000000/2); /* 2.5 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &cheekyms_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &cheekyms_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(cheekyms_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80,5000000/2) /* 2.5 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cheekyms_state, vblank_irq)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 4*8, 28*8-1);
- m_screen->set_screen_update(FUNC(cheekyms_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cheekyms_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cheekyms);
PALETTE(config, m_palette, FUNC(cheekyms_state::cheekyms_palette), 0xc0);
/* audio hardware */
CHEEKY_MOUSE_AUDIO(config, m_sound_board, 0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/chessmst.cpp b/src/mame/drivers/chessmst.cpp
index 0e29d45d49f..5b8669f7782 100644
--- a/src/mame/drivers/chessmst.cpp
+++ b/src/mame/drivers/chessmst.cpp
@@ -30,16 +30,16 @@
class chessmst_state : public driver_device
{
public:
- chessmst_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_pio(*this, "z80pio%u", 0),
- m_speaker(*this, "speaker"),
- m_beeper(*this, "beeper"),
- m_extra(*this, "EXTRA"),
- m_buttons(*this, "BUTTONS"),
- m_digits(*this, "digit%u", 0U),
- m_leds(*this, "led_%c%u", unsigned('a'), 1U)
+ chessmst_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_pia2(*this, "z80pio2")
+ , m_speaker(*this, "speaker")
+ , m_beeper(*this, "beeper")
+ , m_extra(*this, "EXTRA")
+ , m_buttons(*this, "BUTTONS")
+ , m_digits(*this, "digit%u", 0U)
+ , m_leds(*this, "led_%c%u", unsigned('a'), 1U)
{ }
DECLARE_INPUT_CHANGED_MEMBER(chessmst_sensor);
@@ -71,7 +71,7 @@ private:
void update_display();
required_device<z80_device> m_maincpu;
- required_device_array<z80pio_device, 2> m_pio;
+ required_device<z80pio_device> m_pia2;
optional_device<speaker_sound_device> m_speaker;
optional_device<beep_device> m_beeper;
required_ioport m_extra;
@@ -109,8 +109,8 @@ void chessmst_state::chessmst_io(address_map &map)
map.unmap_value_high();
map.global_mask(0xff);
//AM_RANGE(0x00, 0x03) AM_MIRROR(0xf0) read/write in both, not used by the software
- map(0x04, 0x07).mirror(0xf0).rw(m_pio[0], FUNC(z80pio_device::read), FUNC(z80pio_device::write));
- map(0x08, 0x0b).mirror(0xf0).rw(m_pio[1], FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x04, 0x07).mirror(0xf0).rw("z80pio1", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x08, 0x0b).mirror(0xf0).rw(m_pia2, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
}
void chessmst_state::chessmstdm_io(address_map &map)
@@ -121,8 +121,8 @@ void chessmst_state::chessmstdm_io(address_map &map)
WRITE_LINE_MEMBER( chessmst_state::timer_555_w )
{
- m_pio[1]->strobe_b(state);
- m_pio[1]->data_b_write(m_matrix);
+ m_pia2->strobe_b(state);
+ m_pia2->data_b_write(m_matrix);
}
INPUT_CHANGED_MEMBER(chessmst_state::reset_button)
@@ -237,7 +237,7 @@ static INPUT_PORTS_START( chessmst )
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("New Game [0]") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_ENTER)
PORT_START("EXTRA")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Halt") PORT_CODE(KEYCODE_F2) PORT_WRITE_LINE_DEVICE_MEMBER("z80pio0", z80pio_device, strobe_a) // -> PIO(0) ASTB pin
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Halt") PORT_CODE(KEYCODE_F2) PORT_WRITE_LINE_DEVICE_MEMBER("z80pio1", z80pio_device, strobe_a) // -> PIO(1) ASTB pin
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, chessmst_state, reset_button, 0) // -> Z80 RESET pin
INPUT_PORTS_END
@@ -368,94 +368,97 @@ WRITE8_MEMBER( chessmst_state::pio2_port_b_w )
static const z80_daisy_config chessmst_daisy_chain[] =
{
- { "z80pio0" },
+ { "z80pio1" },
{ nullptr }
};
static const z80_daisy_config chessmstdm_daisy_chain[] =
{
- { "z80pio1" },
+ { "z80pio2" },
{ nullptr }
};
-void chessmst_state::chessmst(machine_config &config)
-{
+MACHINE_CONFIG_START(chessmst_state::chessmst)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 9.8304_MHz_XTAL/4); // UB880 Z80 clone
+ Z80(config, m_maincpu, 9.8304_MHz_XTAL/4); // U880 Z80 clone
m_maincpu->set_addrmap(AS_PROGRAM, &chessmst_state::chessmst_mem);
m_maincpu->set_addrmap(AS_IO, &chessmst_state::chessmst_io);
m_maincpu->set_daisy_config(chessmst_daisy_chain);
- Z80PIO(config, m_pio[0], 9.8304_MHz_XTAL/4);
- m_pio[0]->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- m_pio[0]->out_pa_callback().set(FUNC(chessmst_state::pio1_port_a_w));
- m_pio[0]->out_pb_callback().set(FUNC(chessmst_state::pio1_port_b_w));
+ z80pio_device& pio1(Z80PIO(config, "z80pio1", 9.8304_MHz_XTAL/4));
+ pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+ pio1.out_pa_callback().set(FUNC(chessmst_state::pio1_port_a_w));
+ pio1.out_pb_callback().set(FUNC(chessmst_state::pio1_port_b_w));
- Z80PIO(config, m_pio[1], 9.8304_MHz_XTAL/4);
- m_pio[1]->in_pa_callback().set(FUNC(chessmst_state::pio2_port_a_r));
- m_pio[1]->out_pb_callback().set(FUNC(chessmst_state::pio2_port_b_w));
+ Z80PIO(config, m_pia2, 9.8304_MHz_XTAL/4);
+ m_pia2->in_pa_callback().set(FUNC(chessmst_state::pio2_port_a_r));
+ m_pia2->out_pb_callback().set(FUNC(chessmst_state::pio2_port_b_w));
config.set_default_layout(layout_chessmst);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(chessmst_state::chessmsta)
-void chessmst_state::chessmsta(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 8_MHz_XTAL/2); // UA880 Z80 clone
+ Z80(config, m_maincpu, 8_MHz_XTAL/4); // U880 Z80 clone
m_maincpu->set_addrmap(AS_PROGRAM, &chessmst_state::chessmst_mem);
m_maincpu->set_addrmap(AS_IO, &chessmst_state::chessmst_io);
m_maincpu->set_daisy_config(chessmst_daisy_chain);
- Z80PIO(config, m_pio[0], 8_MHz_XTAL/2);
- m_pio[0]->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- m_pio[0]->out_pa_callback().set(FUNC(chessmst_state::pio1_port_a_w));
- m_pio[0]->out_pb_callback().set(FUNC(chessmst_state::pio1_port_b_w));
+ z80pio_device& pio1(Z80PIO(config, "z80pio1", 8_MHz_XTAL/4));
+ pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+ pio1.out_pa_callback().set(FUNC(chessmst_state::pio1_port_a_w));
+ pio1.out_pb_callback().set(FUNC(chessmst_state::pio1_port_b_w));
- Z80PIO(config, m_pio[1], 8_MHz_XTAL/2);
- m_pio[1]->in_pa_callback().set(FUNC(chessmst_state::pio2_port_a_r));
- m_pio[1]->out_pb_callback().set(FUNC(chessmst_state::pio2_port_b_w));
+ Z80PIO(config, m_pia2, 8_MHz_XTAL/4);
+ m_pia2->in_pa_callback().set(FUNC(chessmst_state::pio2_port_a_r));
+ m_pia2->out_pb_callback().set(FUNC(chessmst_state::pio2_port_b_w));
config.set_default_layout(layout_chessmst);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(chessmst_state::chessmstdm)
-void chessmst_state::chessmstdm(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 8_MHz_XTAL/2); // UA880 Z80 clone
+ Z80(config, m_maincpu, 8_MHz_XTAL/2); // U880 Z80 clone
m_maincpu->set_addrmap(AS_PROGRAM, &chessmst_state::chessmstdm_mem);
m_maincpu->set_addrmap(AS_IO, &chessmst_state::chessmstdm_io);
m_maincpu->set_daisy_config(chessmstdm_daisy_chain);
- Z80PIO(config, m_pio[0], 8_MHz_XTAL/2);
- m_pio[0]->out_pa_callback().set(FUNC(chessmst_state::pio1_port_a_w));
- m_pio[0]->out_pb_callback().set(FUNC(chessmst_state::pio1_port_b_dm_w));
- m_pio[0]->in_pb_callback().set_ioport("EXTRA");
+ z80pio_device& pio1(Z80PIO(config, "z80pio1", 8_MHz_XTAL/4));
+ pio1.out_pa_callback().set(FUNC(chessmst_state::pio1_port_a_w));
+ pio1.out_pb_callback().set(FUNC(chessmst_state::pio1_port_b_dm_w));
+ pio1.in_pb_callback().set_ioport("EXTRA");
- Z80PIO(config, m_pio[1], 8_MHz_XTAL/2);
- m_pio[1]->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- m_pio[1]->in_pa_callback().set(FUNC(chessmst_state::pio2_port_a_r));
- m_pio[1]->out_pb_callback().set(FUNC(chessmst_state::pio2_port_b_w));
+ Z80PIO(config, m_pia2, 8_MHz_XTAL/4);
+ m_pia2->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+ m_pia2->in_pa_callback().set(FUNC(chessmst_state::pio2_port_a_r));
+ m_pia2->out_pb_callback().set(FUNC(chessmst_state::pio2_port_b_w));
config.set_default_layout(layout_chessmstdm);
- clock_device &_555_timer(CLOCK(config, "555_timer", 500)); // from 555 timer
- _555_timer.signal_handler().set(FUNC(chessmst_state::timer_555_w));
+ MCFG_DEVICE_ADD("555_timer", CLOCK, 500) // from 555 timer
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, chessmst_state, timer_555_w))
/* sound hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beeper, 1000).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("beeper", BEEP, 1000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "chessmstdm_cart");
- SOFTWARE_LIST(config, "cart_list").set_original("chessmstdm");
-}
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "chessmstdm_cart")
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "chessmstdm")
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/chesstrv.cpp b/src/mame/drivers/chesstrv.cpp
index 873e34bba5d..b7e97f1d7f0 100644
--- a/src/mame/drivers/chesstrv.cpp
+++ b/src/mame/drivers/chesstrv.cpp
@@ -1,239 +1,323 @@
// license:BSD-3-Clause
-// copyright-holders:Sandro Ronco, hap
-// thanks-to:Sean Riddle
+// copyright-holders:Sandro Ronco
/******************************************************************************
-SciSys Chess Traveler
+ Acetronic Chess Traveller
-- Fairchild 3870 MCU, label SL90387 (does not use the timer or irq at all)
-- 256 bytes RAM(3539)
-- 4-digit 7seg led panel
-
-It was also redistributed by Acetronic as "Chess Traveller"(British spelling there),
-and by Prinztronic as well, another British brand
-
-SciSys/Novag's "Chess Champion: Pocket Chess" is assumed to be the same game,
-with the exception that they added battery low voltage detection to it (rightmost
-digit DP lights up).
+ TODO:
+ - Add emulation of the 3870 MCU to the F8 core, including timer interrupt
+ that is used by the Boris Diplomat.
******************************************************************************/
#include "emu.h"
#include "cpu/f8/f8.h"
-#include "machine/f3853.h"
#include "machine/timer.h"
+#include "chesstrv.lh"
+#include "borisdpl.lh"
+
+class chesstrv_base_state : public driver_device
+{
+protected:
+ chesstrv_base_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ {
+ }
+
+ virtual void machine_start() override;
-// internal artwork
-#include "chesstrv.lh" // clickable
+ DECLARE_READ8_MEMBER(ram_addr_r);
+ DECLARE_WRITE8_MEMBER(ram_addr_w);
+ DECLARE_READ8_MEMBER(ram_r);
+ DECLARE_WRITE8_MEMBER(ram_w);
+ DECLARE_WRITE8_MEMBER(matrix_w);
+ void chesstrv_mem(address_map &map);
-namespace {
+ uint8_t m_ram_addr;
+ uint8_t *m_ram;
+ uint8_t m_matrix;
+ required_device<cpu_device> m_maincpu;
+};
-class chesstrv_state : public driver_device
+class chesstrv_state : public chesstrv_base_state
{
public:
- chesstrv_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_keypad(*this, "LINE%u", 1U),
- m_delay_display(*this, "delay_display_%u", 0),
- m_out_digit(*this, "digit%u", 0U)
- { }
+ chesstrv_state(const machine_config &mconfig, device_type type, const char *tag)
+ : chesstrv_base_state(mconfig, type, tag)
+ , m_digits(*this, "digit%u", 0U)
+ , m_keypad(*this, "LINE%u", 1U)
+ {
+ }
void chesstrv(machine_config &config);
-
protected:
virtual void machine_start() override;
-
private:
- // devices/pointers
- required_device<cpu_device> m_maincpu;
- required_ioport_array<4> m_keypad;
- required_device_array<timer_device, 4> m_delay_display;
- output_finder<4> m_out_digit;
-
- void chesstrv_mem(address_map &map);
void chesstrv_io(address_map &map);
- TIMER_DEVICE_CALLBACK_MEMBER(delay_display);
+ DECLARE_WRITE8_MEMBER(display_w);
+ DECLARE_READ8_MEMBER(keypad_r);
- DECLARE_WRITE8_MEMBER(matrix_w);
- DECLARE_WRITE8_MEMBER(digit_w);
- DECLARE_READ8_MEMBER(input_r);
-
- // 256 bytes data RAM accessed via I/O ports
- DECLARE_READ8_MEMBER(ram_address_r) { return m_ram_address; }
- DECLARE_WRITE8_MEMBER(ram_address_w) { m_ram_address = data; }
- DECLARE_READ8_MEMBER(ram_data_r) { return m_ram[m_ram_address]; }
- DECLARE_WRITE8_MEMBER(ram_data_w) { m_ram[m_ram_address] = data; }
-
- std::unique_ptr<u8[]> m_ram;
- u8 m_ram_address;
- u8 m_matrix;
+ output_finder<4> m_digits;
+ required_ioport_array<4> m_keypad;
};
-void chesstrv_state::machine_start()
+class borisdpl_state : public chesstrv_base_state
{
- // resolve handlers
- m_out_digit.resolve();
-
- // zerofill
- m_ram = make_unique_clear<u8[]>(0x100);
- m_ram_address = 0;
- m_matrix = 0;
+public:
+ borisdpl_state(const machine_config &mconfig, device_type type, const char *tag)
+ : chesstrv_base_state(mconfig, type, tag)
+ , m_digits(*this, "digit%u", 0U)
+ , m_keypad(*this, "LINE%u", 1U)
+ {
+ }
+
+ void borisdpl(machine_config &config);
+protected:
+ virtual void machine_start() override;
+private:
+ void borisdpl_io(address_map &map);
- // register for savestates
- save_pointer(NAME(m_ram), 0x100);
- save_item(NAME(m_ram_address));
- save_item(NAME(m_matrix));
-}
+ DECLARE_WRITE8_MEMBER(display_w);
+ DECLARE_READ8_MEMBER(keypad_r);
+ //TIMER_DEVICE_CALLBACK_MEMBER(timer_interrupt);
+ output_finder<8> m_digits;
+ required_ioport_array<4> m_keypad;
+};
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
+WRITE8_MEMBER(chesstrv_base_state::ram_addr_w)
+{
+ m_ram_addr = data;
+}
-// F3870 ports
+READ8_MEMBER(chesstrv_base_state::ram_addr_r)
+{
+ return m_ram_addr;
+}
-TIMER_DEVICE_CALLBACK_MEMBER(chesstrv_state::delay_display)
+READ8_MEMBER(chesstrv_base_state::ram_r)
{
- // clear digits if inactive
- if (BIT(m_matrix, 3 - param))
- m_out_digit[param] = 0;
+ return m_ram[m_ram_addr];
}
-WRITE8_MEMBER(chesstrv_state::digit_w)
+WRITE8_MEMBER(chesstrv_base_state::ram_w)
{
- // digit segments, update display here
- for (int i = 0; i < 4; i++)
- if (!BIT(m_matrix, 3 - i))
- m_out_digit[i] = bitswap<8>(data,0,1,2,3,4,5,6,7) & 0x7f;
+ m_ram[m_ram_addr] = data;
}
-WRITE8_MEMBER(chesstrv_state::matrix_w)
+WRITE8_MEMBER(chesstrv_state::display_w)
{
- // d0-d3: input/digit select (active low)
- // they're strobed, so on rising edge, delay them going off to prevent flicker or stuck display
- for (int i = 0; i < 4; i++)
- if (BIT(~m_matrix & data, 3 - i))
- m_delay_display[i]->adjust(attotime::from_msec(20), i);
+ uint8_t seg_data = bitswap<8>(data,0,1,2,3,4,5,6,7);
- m_matrix = data;
+ for (int digit = 0; digit < 4; digit++)
+ if (!BIT(m_matrix, 3 - digit))
+ m_digits[digit] = seg_data;
}
-READ8_MEMBER(chesstrv_state::input_r)
+WRITE8_MEMBER(chesstrv_base_state::matrix_w)
{
- u8 data = m_matrix;
+ m_matrix = data;
+}
- // d0-d3: multiplexed inputs from d4-d7
- for (int i = 0; i < 4; i++)
- if (BIT(m_matrix, i+4))
- data |= m_keypad[i]->read();
+READ8_MEMBER(chesstrv_state::keypad_r)
+{
+ uint8_t data = 0;
- // d4-d7: multiplexed inputs from d0-d3
- for (int i = 0; i < 4; i++)
- if (m_matrix & m_keypad[i]->read())
- data |= 1 << (i+4);
+ data |= m_keypad[0]->read();
+ data |= m_keypad[1]->read();
+ data |= m_keypad[2]->read();
+ data |= m_keypad[3]->read();
+ data |= (m_keypad[0]->read() ? 0x10 : 0);
+ data |= (m_keypad[1]->read() ? 0x20 : 0);
+ data |= (m_keypad[2]->read() ? 0x40 : 0);
+ data |= (m_keypad[3]->read() ? 0x80 : 0);
return data;
}
+WRITE8_MEMBER(borisdpl_state::display_w)
+{
+ m_digits[m_matrix & 7] = data ^ 0xff;
+}
+READ8_MEMBER(borisdpl_state::keypad_r)
+{
+ uint8_t data = m_matrix & 0x07;
+
+ switch (m_matrix & 7)
+ {
+ case 0: data |= m_keypad[0]->read(); break;
+ case 1: data |= m_keypad[1]->read(); break;
+ case 2: data |= m_keypad[2]->read(); break;
+ case 3: data |= m_keypad[3]->read(); break;
+ }
+
+ return data;
+}
-/******************************************************************************
- Address Maps
-******************************************************************************/
-void chesstrv_state::chesstrv_mem(address_map &map)
+void chesstrv_base_state::chesstrv_mem(address_map &map)
{
map.global_mask(0x7ff);
map(0x0000, 0x07ff).rom();
}
+
void chesstrv_state::chesstrv_io(address_map &map)
{
- map(0x00, 0x00).rw(FUNC(chesstrv_state::ram_address_r), FUNC(chesstrv_state::ram_address_w));
- map(0x01, 0x01).w(FUNC(chesstrv_state::digit_w));
- map(0x04, 0x07).rw("psu", FUNC(f38t56_device::read), FUNC(f38t56_device::write));
+ map(0x00, 0x00).rw(FUNC(chesstrv_state::ram_addr_r), FUNC(chesstrv_state::ram_addr_w));
+ map(0x01, 0x01).w(FUNC(chesstrv_state::display_w));
+ map(0x04, 0x04).rw(FUNC(chesstrv_state::ram_r), FUNC(chesstrv_state::ram_w));
+ map(0x05, 0x05).rw(FUNC(chesstrv_state::keypad_r), FUNC(chesstrv_state::matrix_w));
}
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
+void borisdpl_state::borisdpl_io(address_map &map)
+{
+ map(0x00, 0x00).rw(FUNC(borisdpl_state::keypad_r), FUNC(borisdpl_state::matrix_w));
+ map(0x01, 0x01).w(FUNC(borisdpl_state::display_w));
+ map(0x04, 0x04).rw(FUNC(borisdpl_state::ram_r), FUNC(borisdpl_state::ram_w));
+ map(0x05, 0x05).rw(FUNC(borisdpl_state::ram_addr_r), FUNC(borisdpl_state::ram_addr_w));
+}
static INPUT_PORTS_START( chesstrv )
PORT_START("LINE1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("A 1 / Pawn")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("B 2 / Knight")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("C 3 / Bishop")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("D 4 / Rook")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4)
+ PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("LINE2")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("E 5 / Queen")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("F 6 / King")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("G 7 / White")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("H 8 / Black")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8)
+ PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("LINE3")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("LV / CS") // level/clear square
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_K) PORT_NAME("FP") // find position
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("EP") // enter position
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("CB") // clear board
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("FP") PORT_CODE(KEYCODE_K)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EP") PORT_CODE(KEYCODE_O)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CB") PORT_CODE(KEYCODE_Q)
+ PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("LINE4")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("CE") // clear entry
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("MM") // multi move
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CE") PORT_CODE(KEYCODE_DEL)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENTER") PORT_CODE(KEYCODE_ENTER)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MM") PORT_CODE(KEYCODE_M)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
+static INPUT_PORTS_START( borisdpl )
+ PORT_START("LINE1")
+ PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("0") PORT_CODE(KEYCODE_0)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B/W") PORT_CODE(KEYCODE_W)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENTER") PORT_CODE(KEYCODE_ENTER)
+ PORT_START("LINE2")
+ PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RANK") PORT_CODE(KEYCODE_R)
-/******************************************************************************
- Machine Configs
-******************************************************************************/
+ PORT_START("LINE3")
+ PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TIME") PORT_CODE(KEYCODE_T)
+
+ PORT_START("LINE4")
+ PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("9/SET") PORT_CODE(KEYCODE_S) PORT_CODE(KEYCODE_9)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CE") PORT_CODE(KEYCODE_DEL)
+
+INPUT_PORTS_END
-void chesstrv_state::chesstrv(machine_config &config)
+/*
+TIMER_DEVICE_CALLBACK_MEMBER(borisdpl_state::timer_interrupt)
{
- /* basic machine hardware */
- F8(config, m_maincpu, 3000000/2); // Fairchild 3870, measured ~3MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &chesstrv_state::chesstrv_mem);
- m_maincpu->set_addrmap(AS_IO, &chesstrv_state::chesstrv_io);
+ m_maincpu->set_input_line_and_vector(F8_INPUT_LINE_INT_REQ, HOLD_LINE, 0x20);
+}
+*/
- f38t56_device &psu(F38T56(config, "psu", 3000000/2));
- psu.read_a().set(FUNC(chesstrv_state::ram_data_r));
- psu.write_a().set(FUNC(chesstrv_state::ram_data_w));
- psu.read_b().set(FUNC(chesstrv_state::input_r));
- psu.write_b().set(FUNC(chesstrv_state::matrix_w));
+void chesstrv_base_state::machine_start()
+{
+ m_ram = memregion("ram")->base();
- /* video hardware */
- for (int i = 0; i < 4; i++)
- TIMER(config, m_delay_display[i]).configure_generic(FUNC(chesstrv_state::delay_display));
+ save_item(NAME(m_ram_addr));
+ save_item(NAME(m_matrix));
+}
- config.set_default_layout(layout_chesstrv);
+void chesstrv_state::machine_start()
+{
+ chesstrv_base_state::machine_start();
+ m_digits.resolve();
}
+void borisdpl_state::machine_start()
+{
+ chesstrv_base_state::machine_start();
+ m_digits.resolve();
+}
+MACHINE_CONFIG_START(chesstrv_state::chesstrv)
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD( "maincpu", F8, 3000000 ) // Fairchild 3870
+ MCFG_DEVICE_PROGRAM_MAP( chesstrv_mem )
+ MCFG_DEVICE_IO_MAP( chesstrv_io )
+
+ /* video hardware */
+ config.set_default_layout(layout_chesstrv);
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(borisdpl_state::borisdpl)
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD( "maincpu", F8, 30000000 ) // Motorola SC80265P
+ MCFG_DEVICE_PROGRAM_MAP( chesstrv_mem )
+ MCFG_DEVICE_IO_MAP( borisdpl_io )
+
+ /* video hardware */
+ config.set_default_layout(layout_borisdpl);
+
+ //MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_interrupt", borisdpl_state, timer_interrupt, attotime::from_hz(40))
+MACHINE_CONFIG_END
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
ROM_START( chesstrv )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD("3870-sl90387", 0x0000, 0x0800, CRC(b76214d8) SHA1(7760903a64d9c513eb54c4787f535dabec62eb64) )
+ ROM_REGION(0x0800, "maincpu", 0)
+ ROM_LOAD("3870-sl90387", 0x0000, 0x0800, CRC(b76214d8) SHA1(7760903a64d9c513eb54c4787f535dabec62eb64))
+
+ ROM_REGION(0x0100, "ram", ROMREGION_ERASE)
ROM_END
-} // anonymous namespace
+ROM_START( boris )
+ ROM_REGION(0x0c00, "maincpu", 0)
+ ROM_LOAD("007-7020-00_c10502_korea.bin", 0x0000, 0x0800, CRC(18182870) SHA1(cb717a4b5269b04b0d7ae61aaf4a8f6a019626a5))
+ ROM_LOAD("007-7021-00_c10503_korea.bin", 0x0800, 0x0400, CRC(49b77505) SHA1(474b665ee2955497f6d70878d817f1783ba1a835))
+ ROM_REGION(0x0100, "ram", ROMREGION_ERASE)
+ROM_END
+ROM_START( borisdpl )
+ ROM_REGION(0x0800, "maincpu", 0)
+ ROM_LOAD("007-7024-00_7847.u8", 0x0000, 0x0800, CRC(e20bac03) SHA1(9e17b9d90522371fbf7018926356150f70b9a3b6))
+
+ ROM_REGION(0x0100, "ram", ROMREGION_ERASE)
+ROM_END
-/******************************************************************************
- Drivers
-******************************************************************************/
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1980, chesstrv, 0, 0, chesstrv, chesstrv, chesstrv_state, empty_init, "SciSys", "Chess Traveler", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
+CONS( 1980, chesstrv, 0, 0, chesstrv, chesstrv, chesstrv_state, empty_init, "Acetronic", "Chess Traveller", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
+CONS( 1979, boris, 0, 0, borisdpl, borisdpl, borisdpl_state, empty_init, "Applied Concepts", "Boris - Electronic Chess Computer", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
+CONS( 1979, borisdpl, 0, 0, borisdpl, borisdpl, borisdpl_state, empty_init, "Applied Concepts", "Boris Diplomat", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/chexx.cpp b/src/mame/drivers/chexx.cpp
index a7b9ee27d3a..e263087927f 100644
--- a/src/mame/drivers/chexx.cpp
+++ b/src/mame/drivers/chexx.cpp
@@ -261,12 +261,12 @@ WRITE8_MEMBER(faceoffh_state::ay_w)
if (m_ay_cmd == 0x00 && data == 0x03)
{
- m_aysnd->address_w(m_ay_data);
+ m_aysnd->address_w(space, offset, m_ay_data, mem_mask);
// logerror("%s: AY addr = %02X\n", machine().describe_context(), m_ay_data);
}
else if (m_ay_cmd == 0x00 && data == 0x02)
{
- m_aysnd->data_w(m_ay_data);
+ m_aysnd->data_w(space, offset, m_ay_data, mem_mask);
// logerror("%s: AY data = %02X\n", machine().describe_context(), m_ay_data);
}
m_ay_cmd = data;
diff --git a/src/mame/drivers/chicago.cpp b/src/mame/drivers/chicago.cpp
index aa26674789a..14b2d545572 100644
--- a/src/mame/drivers/chicago.cpp
+++ b/src/mame/drivers/chicago.cpp
@@ -94,21 +94,20 @@ void chicago_state::video_start()
{
}
-void chicago_state::chicago(machine_config &config)
-{
+MACHINE_CONFIG_START(chicago_state::chicago)
+
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_chicago);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(chicago)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL);
- m_video->set_vert_params(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.30);
-}
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/chihiro.cpp b/src/mame/drivers/chihiro.cpp
index 751dd6d191d..e3f1052e2ae 100644
--- a/src/mame/drivers/chihiro.cpp
+++ b/src/mame/drivers/chihiro.cpp
@@ -5,8 +5,7 @@ Chihiro is an Xbox-based arcade system from SEGA.
Games on this system include....
-GD build date
- yyyymmdd Game Manufacturer / Developer Media Number Key Chip
+ yyyymmdd Game Manufacturer / Developer Media Number Key Chip
+-+----------+----------------------------------------------------+--------------------------+--------+------------+--------------|
|*| 20021029 | The House of the Dead III | Sega / Wow Entertainment | GDROM | GDX-0001 | 317-0348-COM |
| | 2003 | Crazy Taxi High Roller | Sega / Hitmaker | GDROM | GDX-0002 | 317-0353-COM |
@@ -17,58 +16,52 @@ GD build date
| | 20030226 | Virtua Cop 3 (Rev A) | Sega | CF | MDA-G0010 | 317-0354-COM |
|*| 20030521 | Virtua Cop 3 (Rev B) | Sega | GDROM | GDX-0003B | 317-0354-COM |
| | 2003 | OutRun 2 | Sega | GDROM | GDX-0004 | 317-0372-COM |
-|*| 20031017 | OutRun 2 (Rev A) | Sega | GDROM | GDX-0004A | 317-0372-COM |
+|*| 200312 | OutRun 2 (Rev A) | Sega | GDROM | GDX-0004A | 317-0372-COM |
| | 200312 | OutRun 2 (Rev A) | Sega | CF | MDA-G0011 | 317-0372-COM |
-| | 20030911 | OutRun 2 prototype (Rev P) | Sega | GDROM | GDX-0004P | 317-0372-COM |
+| | 2003 | OutRun 2 prototype (Rev P) | Sega | GDROM | GDX-0004P | |
| | 2004 | Sega Golf Club Network Pro Tour | Sega | GDROM | GDX-0005 | |
| | 2004 | Sega Network Taisen Mahjong MJ 2 | Sega | GDROM | GDX-0006 | 317-0374-JPN |
| | 2004 | Sega Network Taisen Mahjong MJ 2 (Rev A) | Sega | GDROM | GDX-0006A | 317-0374-JPN |
| | 2004 | Sega Network Taisen Mahjong MJ 2 (Rev B) | Sega | GDROM | GDX-0006B | 317-0374-JPN |
-|*| 20041102 | Sega Network Taisen Mahjong MJ 2 (Rev C) | Sega | GDROM | GDX-0006C | 317-0374-JPN |
+|*| 200412 | Sega Network Taisen Mahjong MJ 2 (Rev C) | Sega | GDROM | GDX-0006C | 317-0374-JPN |
| | 2004 | Sega Network Taisen Mahjong MJ 2 (Rev D) | Sega | GDROM | GDX-0006D | 317-0374-JPN |
| | 2005 | Sega Network Taisen Mahjong MJ 2 (Rev E) | Sega | GDROM | GDX-0006E | 317-0374-JPN |
-|*| 2005 | Sega Network Taisen Mahjong MJ 2 (Rev F) | Sega | GDROM | GDX-0006F | 317-0374-JPN |
+|*| 200502 | Sega Network Taisen Mahjong MJ 2 (Rev F) | Sega | GDROM | GDX-0006F | 317-0374-JPN |
|*| 20050202 | Sega Network Taisen Mahjong MJ 2 (Rev G) | Sega | GDROM | GDX-0006G | 317-0374-JPN |
-|*| 20031211 | Ollie King | Sega / Amusement Vision | GDROM | GDX-0007 | 317-0377-COM |
+|*| 200403 | Ollie King | Sega / Amusement Vision | GDROM | GDX-0007 | 317-0377-COM |
| | 2004 | Wangan Midnight Maximum Tune (Japan) | Namco | GDROM | GDX-0008 | 317-5101-JPN |
-| | 2004 | Wangan Midnight Maximum Tune (Japan, Rev A) | Namco | GDROM | GDX-0008A | 317-5101-JPN |
-|*| 20040610 | Wangan Midnight Maximum Tune (Japan, Rev B) | Namco | GDROM | GDX-0008B | 317-5101-JPN |
+| | 2004 | Wangan Midnight Maximum Tune (Japan) (Rev A) | Namco | GDROM | GDX-0008A | 317-5101-JPN |
+|*| 2004 | Wangan Midnight Maximum Tune (Japan) (Rev B) | Namco | GDROM | GDX-0008B | 317-5101-JPN |
| | 2004 | Wangan Midnight Maximum Tune (Export) | Namco | GDROM | GDX-0009 | 317-5101-COM |
-| | 2004 | Wangan Midnight Maximum Tune (Export, Rev A) | Namco | GDROM | GDX-0009A | 317-5101-COM |
-|*| 20040610 | Wangan Midnight Maximum Tune (Export, Rev B) | Namco | GDROM | GDX-0009B | 317-5101-COM |
-| | 2004 | Sega Club Golf | Sega | GDROM | GDX-0010 | |
+| | 2004 | Wangan Midnight Maximum Tune (Export) (Rev A) | Namco | GDROM | GDX-0009A | 317-5101-COM |
+|*| 2004 | Wangan Midnight Maximum Tune (Export) (Rev B) | Namco | GDROM | GDX-0009B | 317-5101-COM |
|*| 20040909 | OutRun 2 Special Tours (Japan) | Sega | GDROM | GDX-0011 | 317-0396-COM |
-|*| 20041229 | OutRun 2 Special Tours (Japan, Rev A) | Sega | GDROM | GDX-0011A | 317-0396-COM |
-|*| 20040914 | Ghost Squad | Sega | GDROM | GDX-0012 | 317-0398-COM |
+|*| 20041229 | OutRun 2 Special Tours (Japan) (Rev A) | Sega | GDROM | GDX-0011A | 317-0396-COM |
+|*| 2004 | Ghost Squad | Sega | GDROM | GDX-0012 | 317-0398-COM |
|*| 20041209 | Ghost Squad (Rev A) | Sega | GDROM | GDX-0012A | 317-0398-COM |
| | 20041209 | Ghost Squad (Rev A) | Sega | CF | MDA-G0013 | 317-0398-COM |
-|*| 20050208 | Gundam Battle Operating Simulator | Banpresto | GDROM | GDX-0013 | 317-0400-JPN |
-|*| 20040910 | OutRun 2 Special Tours | Sega | GDROM | GDX-0014 | 317-0396-COM |
-|*| 20041229 | OutRun 2 Special Tours (Rev A) | Sega | GDROM | GDX-0014A | 317-0396-COM |
-| | 20041229 | OutRun 2 Special Tours (Rev A) | Sega | CF | MDA-G0012 | 317-0396-COM |
-|*| 20050218 | Wangan Midnight Maximum Tune 2 (Japan) | Namco | GDROM | GDX-0015 | 317-5106-JPN |
-|*| 20050908 | Wangan Midnight Maximum Tune 2 (Japan, Rev A) | Namco | GDROM | GDX-0015A | 317-5106-JPN |
-|*| 20050218 | Wangan Midnight Maximum Tune 2 (Export) | Namco | GDROM | GDX-0016 | 317-5106-COM |
-|*| 20050908 | Wangan Midnight Maximum Tune 2 (Export, Rev A) | Namco | GDROM | GDX-0016A | 317-5106-COM |
+|*| 2005 | Gundam Battle Operating Simulator | Banpresto | GDROM | GDX-0013 | 317-0400-JPN |
+|*| 2004 | OutRun 2 Special Tours | Sega | GDROM | GDX-0014 | 317-0396-COM |
+|*| 2004 | OutRun 2 Special Tours (Rev A) | Sega | GDROM | GDX-0014A | 317-0396-COM |
+| | 2004 | OutRun 2 Special Tours (Rev A) | Sega | CF | MDA-G0012 | 317-0396-COM |
+|*| 200504 | Wangan Midnight Maximum Tune 2 (Japan) | Namco | GDROM | GDX-0015 | 317-5106-JPN |
+|*| 20050908 | Wangan Midnight Maximum Tune 2 (Japan) (Rev A) | Namco | GDROM | GDX-0015A | 317-5106-JPN |
+|*| 2005 | Wangan Midnight Maximum Tune 2 (Export) | Namco | GDROM | GDX-0016 | 317-5106-COM |
+|*| 2005 | Wangan Midnight Maximum Tune 2 (Export) (Rev A) | Namco | GDROM | GDX-0016A | 317-5106-COM |
| | 2005 | Sega Network Taisen Mahjong MJ 3 | Sega | GDROM | GDX-0017 | 317-0414-JPN |
| | 2005 | Sega Network Taisen Mahjong MJ 3 (Rev A) | Sega | GDROM | GDX-0017A | 317-0414-JPN |
| | 2005 | Sega Network Taisen Mahjong MJ 3 (Rev B) | Sega | GDROM | GDX-0017B | 317-0414-JPN |
-|*| 20051109 | Sega Network Taisen Mahjong MJ 3 (Rev C) | Sega | GDROM | GDX-0017C | 317-0414-JPN |
-|*| 20060217 | Sega Network Taisen Mahjong MJ 3 (Rev D) | Sega | GDROM | GDX-0017D | 317-0414-JPN |
-| | 2006 | Sega Network Taisen Mahjong MJ 3 (Rev E) | Sega | GDROM | GDX-0017E | 317-0414-JPN |
-|*| 2006 | Sega Network Taisen Mahjong MJ 3 (Rev F) | Sega | GDROM | GDX-0017F | 317-0414-JPN |
+| | 2005 | Sega Network Taisen Mahjong MJ 3 (Rev C) | Sega | GDROM | GDX-0017C | 317-0414-JPN |
+|*| 2005 | Sega Network Taisen Mahjong MJ 3 (Rev D) | Sega | GDROM | GDX-0017D | 317-0414-JPN |
+| | 2005 | Sega Network Taisen Mahjong MJ 3 (Rev E) | Sega | GDROM | GDX-0017E | 317-0414-JPN |
+|*| 2005 | Sega Network Taisen Mahjong MJ 3 (Rev F) | Sega | GDROM | GDX-0017F | 317-0414-JPN |
| | 2005 | Sega Club Golf 2006: Next Tours | Sega | GDROM | GDX-0018 | |
-|*| 20051107 | Sega Club Golf 2006: Next Tours (Rev A) | Sega | GDROM | GDX-0018A | 317-0428-JPN |
-| | 2005 | Firmware Update For MJ 3 | Sega | GDROM | GDX-0019 | |
-| | 200? | Sega Club Golf 2006 | Sega | GDROM | GDX-0020 | |
-| | 2006 | Sega Network Taisen Mahjong MJ 3 Evolution | Sega | GDROM | GDX-0021 | 317-0457-JPN |
-|*| 20070217 | Sega Network Taisen Mahjong MJ 3 Evolution (Rev A) | Sega | GDROM | GDX-0021A | 317-0457-JPN |
-|*| 20070525 | Sega Network Taisen Mahjong MJ 3 Evolution (Rev B) | Sega | GDROM | GDX-0021B | 317-0457-JPN |
-| | 200? | Sega Network Taisen Mahjong MJ 3 Evo Test Ver | Sega | GDROM | GDX-0022 | |
-| | 200? | Firmware Update For MJ 3 Evo | Sega | GDROM | GDX-0023 | |
+|*| 2005 | Sega Club Golf 2006: Next Tours (Rev A) | Sega | GDROM | GDX-0018A | ? |
+| | 2006 | Sega Network Taisen Mahjong MJ 3 Evolution | Sega | GDROM | GDX-0021 | |
+| | 2006 | Sega Network Taisen Mahjong MJ 3 Evolution (Rev A) | Sega | GDROM | GDX-0021A | |
+|*| 2007 | Sega Network Taisen Mahjong MJ 3 Evolution (Rev B) | Sega | GDROM | GDX-0021B | ? |
| | 2009 | Firmware Update For Compact Flash Box | Sega | GDROM | GDX-0024 | |
-|*| 20090331 | Firmware Update For Compact Flash Box (Rev A) | Sega | GDROM | GDX-0024A | 317-0567-EXP |
-|*| 20030226 | Chihiro Change Region GD USA | Sega | GDROM | 611-0028A | 317-0351-EXP |
+|*| 2009 | Firmware Update For Compact Flash Box (Rev A) | Sega | GDROM | GDX-0024A | 317-0567-EXP |
|*| 2004 | Quest Of D Ver.1.01C | Sega | CDROM | CDV-10005C | 317-0376-JPN |
|*| 2005 | Sangokushi Taisen Ver.1.002 | Sega | DVDROM | CDV-10009D | |
|*| 2005 | Mobile Suit Gundam 0079 Card Builder | Banpresto | DVDROM | CDV-10010 | 317-0415-JPN |
@@ -324,7 +317,7 @@ Notes:
CN11/12 - Network board connectors joining to Sega Network PCB
CN13 - Battery connector (maintains power to DIMM RAM)
CN14S - 100 pin connector joining to base board
- JP4-10 - Jumpers. Settings are as follows (taken from Wangan Midnight Maximum Tune 2 (Japan, Rev A))
+ JP4-10 - Jumpers. Settings are as follows (taken from Wangan Midnight Maximum Tune 2 (Japan) (Rev A))
JP4 2-3
JP5 2-3. Sets DIMM RAM size. 1-2 = 1GB (2x 512M sticks), 2-3 = 512MB (1x 512M stick)
JP6 1-2
@@ -357,7 +350,7 @@ Notes:
CN6 - 7-pin connector
SW1/2 - test/service buttons
DIN1 - 96-pin connector joining to Base Board
- DIPSW - 8-position DIP switch. On this game (Wangan Midnight Maximum Tune 2 (Japan, Rev A)) DIPs 3, 4, 6, 7 & 8 are set ON. The others are OFF.
+ DIPSW - 8-position DIP switch. On this game (Wangan Midnight Maximum Tune 2 (Japan) (Rev A)) DIPs 3, 4, 6, 7 & 8 are set ON. The others are OFF.
Dump info:
@@ -1674,7 +1667,7 @@ void chihiro_state::baseboard_ide_event(int type, uint8_t *read_buffer, uint8_t
// clear
write_buffer[0] = write_buffer[1] = write_buffer[2] = write_buffer[3] = 0;
// irq 10 active
- mcpxlpc->irq10(1);
+ xbox_base_devs.pic8259_2->ir2_w(1);
}
uint8_t *chihiro_state::baseboard_ide_dimmboard(uint32_t lba)
@@ -1711,7 +1704,7 @@ WRITE32_MEMBER(chihiro_state::mediaboard_w)
logerror("I/O port write %04x mask %08X value %08X\n", offset * 4 + 0x4000, mem_mask, data);
// irq 10
if ((offset == 0xe0/4) && ACCESSING_BITS_8_15)
- mcpxlpc->irq10(0);
+ xbox_base_devs.pic8259_2->ir2_w(0);
}
void chihiro_state::chihiro_map(address_map &map)
@@ -1862,20 +1855,24 @@ void chihiro_state::an2131sc_configuration(device_t *device)
MCFG_OHCI_HLEAN2131SC_REGION(":others", 0x2080)
}
-void chihiro_state::chihiro_base(machine_config &config)
-{
+MACHINE_CONFIG_START(chihiro_state::chihiro_base)
xbox_base(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &chihiro_state::chihiro_map);
- m_maincpu->set_addrmap(AS_IO, &chihiro_state::chihiro_map_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(chihiro_map)
+ MCFG_DEVICE_IO_MAP(chihiro_map_io)
- subdevice<ide_controller_32_device>(":pci:09.0:ide")->options(ide_baseboard, nullptr, "bb", true);
+ //BUS_MASTER_IDE_CONTROLLER(config, "ide").options(ide_baseboard, nullptr, "bb", true);
+ MCFG_DEVICE_MODIFY(":pci:09.0:ide:0")
+ MCFG_DEVICE_SLOT_INTERFACE(ide_baseboard, nullptr, true)
+ MCFG_DEVICE_MODIFY(":pci:09.0:ide:1")
+ MCFG_DEVICE_SLOT_INTERFACE(ide_baseboard, "bb", true)
OHCI_USB_CONNECTOR(config, ":pci:02.0:port1", usb_baseboard, "an2131qc", true).set_option_machine_config("an2131qc", an2131qc_configuration);
OHCI_USB_CONNECTOR(config, ":pci:02.0:port2", usb_baseboard, "an2131sc", true).set_option_machine_config("an2131sc", an2131sc_configuration);
OHCI_USB_CONNECTOR(config, ":pci:02.0:port3", usb_baseboard, nullptr, false);
OHCI_USB_CONNECTOR(config, ":pci:02.0:port4", usb_baseboard, nullptr, false);
- JVS_MASTER(config, "jvs_master", 0);
+ MCFG_DEVICE_ADD("jvs_master", JVS_MASTER, 0)
sega_837_13551_device &sega837(SEGA_837_13551(config, "837_13551", 0, "jvs_master"));
sega837.set_port_tag<0>("TILT");
sega837.set_port_tag<1>("P1");
@@ -1889,7 +1886,7 @@ void chihiro_state::chihiro_base(machine_config &config)
sega837.set_port_tag<9>("A6");
sega837.set_port_tag<10>("A7");
sega837.set_port_tag<11>("OUTPUT");
-}
+MACHINE_CONFIG_END
void chihiro_state::chihirogd(machine_config &config)
{
@@ -2246,16 +2243,6 @@ ROM_START( wangmid2 )
ROM_LOAD("317-5106-com.data", 0x00, 0x50, CRC(75c716aa) SHA1(5c2bcf3d28a80b336c6882d5aeb010d04327f8c1) )
ROM_END
-ROM_START( mj3c )
- CHIHIRO_BIOS
-
- DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "gdx-0017c", 0, SHA1(72545708369aefe8fac82fb0b67774390bb956c6) )
-
- ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
- ROM_LOAD( "317-0414-jpn.pic", 0x000000, 0x004000, CRC(27d1c541) SHA1(c85a8229dd769af02ab43c97f09f995743cdb315) )
-ROM_END
-
ROM_START( mj3d )
CHIHIRO_BIOS
@@ -2283,17 +2270,7 @@ ROM_START( scg06nt )
DISK_IMAGE_READONLY( "gdx-0018a", 0, SHA1(3c10775aefc5e3e49837bf473fb32e94507ee892) )
ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
- ROM_LOAD("317-0428-jpn.data", 0x00, 0x50, CRC(1a210abd) SHA1(43a54d028315d2dfa9f8ea6fb59265e0b980b02f) )
-ROM_END
-
-ROM_START( mj3evoa )
- CHIHIRO_BIOS
-
- DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "gdx-0021a", 0, SHA1(02c67e8f618b6f4de54898b0c0033b4e0077f2b5) )
-
- ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
- ROM_LOAD( "317-0457-jpn.pic", 0x000000, 0x004000, CRC(650fcc94) SHA1(c88488900460fb3deecb3cf376fc043b10c020ef) )
+ ROM_LOAD("gdx-0018.data", 0x00, 0x50, CRC(1a210abd) SHA1(43a54d028315d2dfa9f8ea6fb59265e0b980b02f) )
ROM_END
ROM_START( mj3evo )
@@ -2302,8 +2279,9 @@ ROM_START( mj3evo )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdx-0021b", 0, SHA1(c97d1dc95cdf1b4bd5d7cf6b4db0757f3d6bd723) )
+ // PIC label is unknown
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
- ROM_LOAD( "317-0457-jpn.pic", 0x000000, 0x004000, CRC(650fcc94) SHA1(c88488900460fb3deecb3cf376fc043b10c020ef) )
+ ROM_LOAD( "317-xxxx-jpn.pic", 0x000000, 0x004000, CRC(650fcc94) SHA1(c88488900460fb3deecb3cf376fc043b10c020ef) )
ROM_END
/*
@@ -2334,29 +2312,6 @@ ROM_START( ccfboxa )
ROM_LOAD("317-0567-exp.pic", 0x00, 0x4000, CRC(cd1d2b2d) SHA1(78203ee0339f76eb76da08d7de43e7e44e4b7d32) )
ROM_END
-/*
-Title CHIHIRO CHANGE REGION GD USA
-Checksum E588
-Media Config GD-ROM1/1
-Regions J
-Peripheral String 0000000
-Product Number 611-0028A
-Version V2.001
-Release Date 20030226
-*/
-ROM_START( cregchg )
- CHIHIRO_BIOS
-
- DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "611-0028a", 0, SHA1(f88d2525ed8c68b380ebd95d22fac28383a7642f) )
-
- ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
- //PIC16C621A (317-0351-EXP)
- //(sticker 253-5508-0351E)
- ROM_LOAD("317-0351-exp.pic", 0x00, 0x4000, CRC(25f37472) SHA1(8ffdd637c1eb9989b3b635aface0def9e841f227) )
-ROM_END
-
-
/* CDV-1xxxx (Sega network CD-ROM and DVD-ROM games) */
ROM_START( questofd )
@@ -2516,50 +2471,47 @@ ROM_END
// 0006B GAME( 2004, mj2b, mj2, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev B) (GDX-0006B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
/* 0006C */ GAME( 2004, mj2c, mj2, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev C) (GDX-0006C)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
// 0006D GAME( 2004, mj2d, mj2, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev D) (GDX-0006D)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-// 0006E GAME( 2005, mj2e, mj2, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev E) (GDX-0006E)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-/* 0006F */ GAME( 2005, mj2f, mj2, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev F) (GDX-0006F)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-/* 0006G */ GAME( 2005, mj2, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev G) (GDX-0006G)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-/* 0007 */ GAME( 2003, ollie, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega / Amusement Vision", "Ollie King (GDX-0007)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0006E GAME( 2004, mj2e, mj2, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev E) (GDX-0006E)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0006F */ GAME( 2004, mj2f, mj2, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev F) (GDX-0006F)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0006G */ GAME( 2004, mj2, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev G) (GDX-0006G)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0007 */ GAME( 2004, ollie, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega / Amusement Vision", "Ollie King (GDX-0007)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
// 0008 GAME( 2004, wangmidjo,wangmid, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (GDX-0008)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-// 0008A GAME( 2004, wangmidja,wangmid, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan, Rev A) (GDX-0008A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-/* 0008B */ GAME( 2004, wangmidj, wangmid, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan, Rev B) (GDX-0008B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0008A GAME( 2004, wangmidja,wangmid, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (Rev A) (GDX-0008A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0008B */ GAME( 2004, wangmidj, wangmid, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (Rev B) (GDX-0008B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
// 0009 GAME( 2004, wangmido, wangmid, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (GDX-0009)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-// 0009A GAME( 2004, wangmida, wangmid, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export, Rev A) (GDX-0009A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-/* 0009B */ GAME( 2004, wangmid, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export, Rev B) (GDX-0009B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-// 0010 Sega Golf Club
+// 0009A GAME( 2004, wangmida, wangmid, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (Rev A) (GDX-0009A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0009B */ GAME( 2004, wangmid, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (Rev B) (GDX-0009B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0010
/* 0011 */ GAME( 2004, outr2stjo,outr2st, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "OutRun 2 Special Tours (Japan) (GDX-0011)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE )
-/* 0011A */ GAME( 2004, outr2stj, outr2st, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "OutRun 2 Special Tours (Japan, Rev A) (GDX-0011A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE )
+/* 0011A */ GAME( 2004, outr2stj, outr2st, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "OutRun 2 Special Tours (Japan) (Rev A) (GDX-0011A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE )
/* 0012 */ GAME( 2004, ghostsqo, ghostsqu, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Ghost Squad (GDX-0012)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
/* 0012A */ GAME( 2004, ghostsqu, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Ghost Squad (Rev A) (GDX-0012A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
/* 0013 */ GAME( 2005, gundamos, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Banpresto", "Gundam Battle Operating Simulator (GDX-0013)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
/* 0014 */ GAME( 2004, outr2sto, outr2st, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "OutRun 2 Special Tours (GDX-0014)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
/* 0014A */ GAME( 2004, outr2st, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "OutRun 2 Special Tours (Rev A) (GDX-0014A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
/* 0015 */ GAME( 2005, wangmid2j,wangmid2, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Japan) (GDX-0015)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-/* 0015A */ GAME( 2005, wangmid2ja,wangmid2,chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Japan, Rev A) (GDX-0015A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0015A */ GAME( 2005, wangmid2ja,wangmid2,chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Japan) (Rev A) (GDX-0015A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
/* 0016 */ GAME( 2005, wangmid2o,wangmid2, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Export) (GDX-0016)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-/* 0016A */ GAME( 2005, wangmid2, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Export, Rev A) (GDX-0016A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0016A */ GAME( 2005, wangmid2, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Export) (Rev A) (GDX-0016A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
// 0017 GAME( 2005, mj3o, mj3, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (GDX-0017)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
// 0017A GAME( 2005, mj3a, mj3, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev A) (GDX-0017A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
// 0017B GAME( 2005, mj3b, mj3, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev B) (GDX-0017B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-/* 0017C */ GAME( 2005, mj3c, mj3, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev C) (GDX-0017C)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-/* 0017D */ GAME( 2006, mj3d, mj3, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev D) (GDX-0017D)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-// 0017E GAME( 2006, mj3e, mj3, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev E) (GDX-0017E)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-/* 0017F */ GAME( 2006, mj3, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev F) (GDX-0017F)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0017C GAME( 2005, mj3c, mj3, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev C) (GDX-0017C)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0017D */ GAME( 2005, mj3d, mj3, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev D) (GDX-0017D)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0017E GAME( 2005, mj3e, mj3, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev E) (GDX-0017E)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0017F */ GAME( 2005, mj3, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev F) (GDX-0017F)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
// 0018 GAME( 2005, scg06nto, scg06nt, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Club Golf 2006 Next Tours (GDX-0018)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
/* 0018A */ GAME( 2005, scg06nt, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Club Golf 2006 Next Tours (Rev A) (GDX-0018A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-// 0019 Firmware Update For MJ 3
-// 0020 Sega Golf Club 2006
+// 0019
+// 0020
// 0021 GAME( 2006, mj3evoo, mj3evo, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 Evolution (GDX-0021)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-/* 0021A */ GAME( 2007, mj3evoa, mj3evo, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 Evolution (Rev A) (GDX-0021A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0021A GAME( 2006, mj3evoa, mj3evo, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 Evolution (Rev A) (GDX-0021A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
/* 0021B */ GAME( 2007, mj3evo, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 Evolution (Rev B) (GDX-0021B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-// 0022 Taisen Mahjong MJ 3 Evolution Test Version
-// 0023 Firmware Update For MJ 3 Evolution
+// 0022
+// 0023
// 0024 GAME( 2009, ccfboxo, ccfboxa, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Chihiro Firmware Update For Compact Flash Box (GDX-0024)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
/* 0024A */ GAME( 2009, ccfboxa, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Chihiro Firmware Update For Compact Flash Box (4.01) (GDX-0024A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-/* 611-xxxx Sega (workshop/factory?) GD-ROMs */
-/* 0028A */ GAME( 2003, cregchg, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Chihiro Change Region GD USA (611-0028A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
-
/* CDV-1xxxx (Sega network CD-ROM and DVD-ROM games) */
/* 0005C */ GAME( 2004, questofd, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Sega", "Quest of D (CDV-10005C)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
/* 0010 */ GAME( 2005, gundcb79, chihiro, chihirogd, chihiro, chihiro_state, empty_init, ROT0, "Banpresto", "Mobile Suit Gundam 0079 Card Builder (CDV-10010)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/chinagat.cpp b/src/mame/drivers/chinagat.cpp
index a01a688822c..cee77a87de1 100644
--- a/src/mame/drivers/chinagat.cpp
+++ b/src/mame/drivers/chinagat.cpp
@@ -574,11 +574,11 @@ void chinagat_state::machine_reset()
void chinagat_state::chinagat(machine_config &config)
{
/* basic machine hardware */
- HD6309(config, m_maincpu, MAIN_CLOCK / 2); /* 1.5 MHz (12MHz oscillator / 4 internally) */
+ HD6309(config, m_maincpu, MAIN_CLOCK / 2); /* 1.5 MHz (12MHz oscillator / 4 internally) */
m_maincpu->set_addrmap(AS_PROGRAM, &chinagat_state::main_map);
TIMER(config, "scantimer").configure_scanline(FUNC(chinagat_state::chinagat_scanline), "screen", 0, 1);
- HD6309(config, m_subcpu, MAIN_CLOCK / 2); /* 1.5 MHz (12MHz oscillator / 4 internally) */
+ HD6309(config, m_subcpu, MAIN_CLOCK / 2); /* 1.5 MHz (12MHz oscillator / 4 internally) */
m_subcpu->set_addrmap(AS_PROGRAM, &chinagat_state::sub_map);
Z80(config, m_soundcpu, XTAL(3'579'545)); /* 3.579545 MHz */
@@ -613,14 +613,14 @@ void chinagat_state::chinagat(machine_config &config)
void chinagat_state::saiyugoub1(machine_config &config)
{
/* basic machine hardware */
- MC6809E(config, m_maincpu, MAIN_CLOCK / 8); /* 68B09EP 1.5 MHz (12MHz oscillator) */
+ MC6809E(config, m_maincpu, MAIN_CLOCK / 8); /* 68B09EP 1.5 MHz (12MHz oscillator) */
m_maincpu->set_addrmap(AS_PROGRAM, &chinagat_state::main_map);
TIMER(config, "scantimer").configure_scanline(FUNC(chinagat_state::chinagat_scanline), "screen", 0, 1);
- MC6809E(config, m_subcpu, MAIN_CLOCK / 8); /* 68B09EP 1.5 MHz (12MHz oscillator) */
+ MC6809E(config, m_subcpu, MAIN_CLOCK / 8); /* 68B09EP 1.5 MHz (12MHz oscillator) */
m_subcpu->set_addrmap(AS_PROGRAM, &chinagat_state::sub_map);
- Z80(config, m_soundcpu, XTAL(3'579'545)); /* 3.579545 MHz oscillator */
+ Z80(config, m_soundcpu, XTAL(3'579'545)); /* 3.579545 MHz oscillator */
m_soundcpu->set_addrmap(AS_PROGRAM, &chinagat_state::saiyugoub1_sound_map);
i8748_device &mcu(I8748(config, "mcu", 9263750)); /* 9.263750 MHz oscillator, divided by 3*5 internally */
@@ -655,21 +655,21 @@ void chinagat_state::saiyugoub1(machine_config &config)
MSM5205(config, m_adpcm, 9263750 / 24);
m_adpcm->vck_legacy_callback().set(FUNC(chinagat_state::saiyugoub1_m5205_irq_w)); /* Interrupt function */
- m_adpcm->set_prescaler_selector(msm5205_device::S64_4B); /* vclk input mode (6030Hz, 4-bit) */
+ m_adpcm->set_prescaler_selector(msm5205_device::S64_4B); /* vclk input mode (6030Hz, 4-bit) */
m_adpcm->add_route(ALL_OUTPUTS, "mono", 0.60);
}
void chinagat_state::saiyugoub2(machine_config &config)
{
/* basic machine hardware */
- MC6809E(config, m_maincpu, MAIN_CLOCK / 8); /* 1.5 MHz (12MHz oscillator) */
+ MC6809E(config, m_maincpu, MAIN_CLOCK / 8); /* 1.5 MHz (12MHz oscillator) */
m_maincpu->set_addrmap(AS_PROGRAM, &chinagat_state::main_map);
TIMER(config, "scantimer").configure_scanline(FUNC(chinagat_state::chinagat_scanline), "screen", 0, 1);
- MC6809E(config, m_subcpu, MAIN_CLOCK / 8); /* 1.5 MHz (12MHz oscillator) */
+ MC6809E(config, m_subcpu, MAIN_CLOCK / 8); /* 1.5 MHz (12MHz oscillator) */
m_subcpu->set_addrmap(AS_PROGRAM, &chinagat_state::sub_map);
- Z80(config, m_soundcpu, XTAL(3'579'545)); /* 3.579545 MHz oscillator */
+ Z80(config, m_soundcpu, XTAL(3'579'545)); /* 3.579545 MHz oscillator */
m_soundcpu->set_addrmap(AS_PROGRAM, &chinagat_state::ym2203c_sound_map);
config.m_minimum_quantum = attotime::from_hz(6000); /* heavy interleaving to sync up sprite<->main cpu's */
diff --git a/src/mame/drivers/chsuper.cpp b/src/mame/drivers/chsuper.cpp
index e8e4407e7c1..786db5fe8ab 100644
--- a/src/mame/drivers/chsuper.cpp
+++ b/src/mame/drivers/chsuper.cpp
@@ -364,27 +364,27 @@ void chsuper_state::ramdac_map(address_map &map)
* Machine Drivers *
***************************/
-void chsuper_state::chsuper(machine_config &config)
-{
+MACHINE_CONFIG_START(chsuper_state::chsuper)
+
/* basic machine hardware */
- Z180(config, m_maincpu, XTAL(12'000'000) / 4); /* HD64180RP8, 8 MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &chsuper_state::chsuper_prg_map);
- m_maincpu->set_addrmap(AS_IO, &chsuper_state::chsuper_portmap);
- m_maincpu->set_vblank_int("screen", FUNC(chsuper_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z180, XTAL(12'000'000) / 4) /* HD64180RP8, 8 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(chsuper_prg_map)
+ MCFG_DEVICE_IO_MAP(chsuper_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", chsuper_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_screen_update(FUNC(chsuper_state::screen_update));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 48*8-1, 0, 30*8-1);
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_UPDATE_DRIVER(chsuper_state, screen_update)
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0, 30*8-1)
+ MCFG_SCREEN_PALETTE("palette")
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_chsuper);
- PALETTE(config, m_palette).set_entries(0x100);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_chsuper)
+ MCFG_PALETTE_ADD("palette", 0x100)
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette));
ramdac.set_addrmap(0, &chsuper_state::ramdac_map);
@@ -392,11 +392,10 @@ void chsuper_state::chsuper(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
/***************************
diff --git a/src/mame/drivers/cidelsa.cpp b/src/mame/drivers/cidelsa.cpp
index 7a484d6d181..a731271fa6d 100644
--- a/src/mame/drivers/cidelsa.cpp
+++ b/src/mame/drivers/cidelsa.cpp
@@ -51,15 +51,15 @@ WRITE8_MEMBER( draco_state::sound_g_w )
switch (data)
{
case 0x01:
- m_psg->data_w(m_psg_latch);
+ m_psg->data_w(space, 0, m_psg_latch);
break;
case 0x02:
- m_psg_latch = m_psg->data_r();
+ m_psg_latch = m_psg->data_r(space, 0);
break;
case 0x03:
- m_psg->address_w(m_psg_latch);
+ m_psg->address_w(space, 0, m_psg_latch);
break;
}
}
diff --git a/src/mame/drivers/circusc.cpp b/src/mame/drivers/circusc.cpp
index 111971420a4..2dc7bbfb542 100644
--- a/src/mame/drivers/circusc.cpp
+++ b/src/mame/drivers/circusc.cpp
@@ -344,11 +344,11 @@ WRITE_LINE_MEMBER(circusc_state::vblank_irq)
m_maincpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
}
-void circusc_state::circusc(machine_config &config)
-{
+MACHINE_CONFIG_START(circusc_state::circusc)
+
/* basic machine hardware */
- KONAMI1(config, m_maincpu, 2048000); /* 2 MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &circusc_state::circusc_map);
+ MCFG_DEVICE_ADD("maincpu", KONAMI1, 2048000) /* 2 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(circusc_map)
ls259_device &mainlatch(LS259(config, "mainlatch")); // 2C
mainlatch.q_out_cb<0>().set(FUNC(circusc_state::flipscreen_w)); // FLIP
@@ -360,18 +360,18 @@ void circusc_state::circusc(machine_config &config)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
- Z80(config, m_audiocpu, XTAL(14'318'181)/4);
- m_audiocpu->set_addrmap(AS_PROGRAM, &circusc_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(14'318'181)/4)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(circusc_state::screen_update_circusc));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(circusc_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(circusc_state, screen_update_circusc)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, circusc_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_circusc);
PALETTE(config, m_palette, FUNC(circusc_state::circusc_palette), 16*16 + 16*16, 32);
@@ -381,16 +381,20 @@ void circusc_state::circusc(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- SN76496(config, m_sn_1, XTAL(14'318'181)/8).add_route(0, "fltdisc", 1.0, 0);
+ MCFG_DEVICE_ADD("sn1", SN76496, XTAL(14'318'181)/8)
+ MCFG_SOUND_ROUTE(0, "fltdisc", 1.0, 0)
- SN76496(config, m_sn_2, XTAL(14'318'181)/8).add_route(0, "fltdisc", 1.0, 1);
+ MCFG_DEVICE_ADD("sn2", SN76496, XTAL(14'318'181)/8)
+ MCFG_SOUND_ROUTE(0, "fltdisc", 1.0, 1)
- DAC_8BIT_R2R(config, "dac", 0).add_route(0, "fltdisc", 1.0, 2); // ls374.7g + r44+r45+r47+r48+r50+r56+r57+r58+r59 (20k) + r46+r49+r51+r52+r53+r54+r55 (10k) + upc324.3h
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(0, "fltdisc", 1.0, 2) // ls374.7g + r44+r45+r47+r48+r50+r56+r57+r58+r59 (20k) + r46+r49+r51+r52+r53+r54+r55 (10k) + upc324.3h
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
- DISCRETE(config, m_discrete, circusc_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("fltdisc", DISCRETE, circusc_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cischeat.cpp b/src/mame/drivers/cischeat.cpp
index f3917a6c2a9..5095e5590df 100644
--- a/src/mame/drivers/cischeat.cpp
+++ b/src/mame/drivers/cischeat.cpp
@@ -1949,39 +1949,39 @@ WRITE_LINE_MEMBER(cischeat_state::sound_irq)
-void cischeat_state::bigrun(machine_config &config)
-{
+MACHINE_CONFIG_START(cischeat_state::bigrun)
+
/* basic machine hardware */
- M68000(config, m_cpu1, 10000000);
- m_cpu1->set_addrmap(AS_PROGRAM, &cischeat_state::bigrun_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(cischeat_state::bigrun_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("cpu1", M68000, 10000000)
+ MCFG_DEVICE_PROGRAM_MAP(bigrun_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cischeat_state, bigrun_scanline, "screen", 0, 1)
- M68000(config, m_cpu2, 10000000);
- m_cpu2->set_addrmap(AS_PROGRAM, &cischeat_state::bigrun_map2);
- m_cpu2->set_vblank_int("screen", FUNC(cischeat_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("cpu2", M68000, 10000000)
+ MCFG_DEVICE_PROGRAM_MAP(bigrun_map2)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cischeat_state, irq4_line_hold)
- M68000(config, m_cpu3, 10000000);
- m_cpu3->set_addrmap(AS_PROGRAM, &cischeat_state::bigrun_map3);
- m_cpu3->set_vblank_int("screen", FUNC(cischeat_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("cpu3", M68000, 10000000)
+ MCFG_DEVICE_PROGRAM_MAP(bigrun_map3)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cischeat_state, irq4_line_hold)
- M68000(config, m_soundcpu, 6000000);
- m_soundcpu->set_addrmap(AS_PROGRAM, &cischeat_state::bigrun_sound_map);
+ MCFG_DEVICE_ADD("soundcpu", M68000, 6000000)
+ MCFG_DEVICE_PROGRAM_MAP(bigrun_sound_map)
// timing set by the YM irqhandler
-// m_soundcpu->set_periodic_int(FUNC(cischeat_state::irq4_line_hold), attotime::from_hz(16*30));
+// MCFG_DEVICE_PERIODIC_INT_DRIVER(cischeat_state, irq4_line_hold, 16*30)
- config.m_minimum_quantum = attotime::from_hz(1200);
+ MCFG_QUANTUM_TIME(attotime::from_hz(1200))
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 256-1, 0+16, 256-16-1);
- m_screen->set_screen_update(FUNC(cischeat_state::screen_update_bigrun));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_bigrun);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cischeat_state, screen_update_bigrun)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_bigrun)
PALETTE(config, m_palette, palette_device::BLACK).set_format(palette_device::RRRRGGGGBBBBRGBx, 0x4000/2);
m_palette->enable_shadows();
@@ -2002,34 +2002,38 @@ void cischeat_state::bigrun(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.50);
ymsnd.add_route(1, "rspeaker", 0.50);
- OKIM6295(config, m_oki1, 4000000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
- m_oki1->add_route(ALL_OUTPUTS, "lspeaker", 0.25);
- m_oki1->add_route(ALL_OUTPUTS, "rspeaker", 0.25);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 4000000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25)
- OKIM6295(config, m_oki2, 4000000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
- m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 0.25);
- m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 0.25);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 4000000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25)
+MACHINE_CONFIG_END
-void cischeat_state::cischeat(machine_config &config)
-{
+MACHINE_CONFIG_START(cischeat_state::cischeat)
bigrun(config);
/* basic machine hardware */
- m_cpu1->set_addrmap(AS_PROGRAM, &cischeat_state::cischeat_map);
+ MCFG_DEVICE_MODIFY("cpu1")
+ MCFG_DEVICE_PROGRAM_MAP(cischeat_map)
- m_cpu2->set_addrmap(AS_PROGRAM, &cischeat_state::cischeat_map2);
+ MCFG_DEVICE_MODIFY("cpu2")
+ MCFG_DEVICE_PROGRAM_MAP(cischeat_map2)
- m_cpu3->set_addrmap(AS_PROGRAM, &cischeat_state::cischeat_map3);
+ MCFG_DEVICE_MODIFY("cpu3")
+ MCFG_DEVICE_PROGRAM_MAP(cischeat_map3)
- m_soundcpu->set_addrmap(AS_PROGRAM, &cischeat_state::cischeat_sound_map);
+ MCFG_DEVICE_MODIFY("soundcpu")
+ MCFG_DEVICE_PROGRAM_MAP(cischeat_sound_map)
/* video hardware */
- m_screen->set_visarea(0, 256-1, 0+16, 256-16-8-1);
- m_screen->set_screen_update(FUNC(cischeat_state::screen_update_cischeat));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cischeat_state, screen_update_cischeat)
- m_gfxdecode->set_info(gfx_cischeat);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_cischeat)
m_palette->set_format(palette_device::RRRRGGGGBBBBRGBx, 0x8000/2);
m_tmap[0]->set_colorbase(0x1c00/2);
@@ -2040,27 +2044,30 @@ void cischeat_state::cischeat(machine_config &config)
m_tmap[2]->set_colorbase(0x6c00/2);
m_tmap[2]->set_bits_per_color_code(5);
-}
+MACHINE_CONFIG_END
-void cischeat_state::f1gpstar(machine_config &config)
-{
+MACHINE_CONFIG_START(cischeat_state::f1gpstar)
bigrun(config);
/* basic machine hardware */
- m_cpu1->set_clock(12000000);
- m_cpu1->set_addrmap(AS_PROGRAM, &cischeat_state::f1gpstar_map);
+ MCFG_DEVICE_MODIFY("cpu1")
+ MCFG_DEVICE_CLOCK(12000000)
+ MCFG_DEVICE_PROGRAM_MAP(f1gpstar_map)
- m_cpu2->set_clock(12000000);
- m_cpu2->set_addrmap(AS_PROGRAM, &cischeat_state::f1gpstar_map2);
+ MCFG_DEVICE_MODIFY("cpu2")
+ MCFG_DEVICE_CLOCK(12000000)
+ MCFG_DEVICE_PROGRAM_MAP(f1gpstar_map2)
- m_cpu3->set_clock(12000000);
- m_cpu3->set_addrmap(AS_PROGRAM, &cischeat_state::f1gpstar_map3);
+ MCFG_DEVICE_MODIFY("cpu3")
+ MCFG_DEVICE_CLOCK(12000000)
+ MCFG_DEVICE_PROGRAM_MAP(f1gpstar_map3)
- m_soundcpu->set_addrmap(AS_PROGRAM, &cischeat_state::f1gpstar_sound_map);
+ MCFG_DEVICE_MODIFY("soundcpu")
+ MCFG_DEVICE_PROGRAM_MAP(f1gpstar_sound_map)
/* video hardware */
- m_gfxdecode->set_info(gfx_f1gpstar);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_f1gpstar)
m_palette->set_format(palette_device::RRRRGGGGBBBBRGBx, 0x8000/2);
m_tmap[0]->set_colorbase(0x1e00/2);
@@ -2069,32 +2076,34 @@ void cischeat_state::f1gpstar(machine_config &config)
m_tmap[2]->set_colorbase(0x6e00/2);
- m_screen->set_screen_update(FUNC(cischeat_state::screen_update_f1gpstar));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(cischeat_state, screen_update_f1gpstar)
+MACHINE_CONFIG_END
-void cischeat_state::f1gpstr2(machine_config &config)
-{
+MACHINE_CONFIG_START(cischeat_state::f1gpstr2)
f1gpstar(config);
/* basic machine hardware */
- m_cpu1->set_addrmap(AS_PROGRAM, &cischeat_state::f1gpstr2_map);
+ MCFG_DEVICE_MODIFY("cpu1")
+ MCFG_DEVICE_PROGRAM_MAP(f1gpstr2_map)
- m_soundcpu->set_addrmap(AS_PROGRAM, &cischeat_state::f1gpstr2_sound_map);
+ MCFG_DEVICE_MODIFY("soundcpu")
+ MCFG_DEVICE_PROGRAM_MAP(f1gpstr2_sound_map)
- M68000(config, m_cpu5, 10000000);
- m_cpu5->set_addrmap(AS_PROGRAM, &cischeat_state::f1gpstr2_io_map);
+ MCFG_DEVICE_ADD("cpu5", M68000, 10000000)
+ MCFG_DEVICE_PROGRAM_MAP(f1gpstr2_io_map)
- config.m_minimum_quantum = attotime::from_hz(12000);
-}
+ MCFG_QUANTUM_TIME(attotime::from_hz(12000))
+MACHINE_CONFIG_END
-void wildplt_state::wildplt(machine_config &config)
-{
+MACHINE_CONFIG_START(wildplt_state::wildplt)
f1gpstr2(config);
- m_cpu1->set_addrmap(AS_PROGRAM, &wildplt_state::wildplt_map);
-}
+ MCFG_DEVICE_MODIFY("cpu1")
+ MCFG_DEVICE_PROGRAM_MAP(wildplt_map)
+MACHINE_CONFIG_END
/**************************************************************************
@@ -2119,26 +2128,26 @@ TIMER_DEVICE_CALLBACK_MEMBER(cischeat_state::scudhamm_scanline)
m_maincpu->set_input_line(2, HOLD_LINE);
}
-void cischeat_state::scudhamm(machine_config &config)
-{
+MACHINE_CONFIG_START(cischeat_state::scudhamm)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &cischeat_state::scudhamm_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(cischeat_state::scudhamm_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu",M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(scudhamm_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cischeat_state, scudhamm_scanline, "screen", 0, 1)
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
- m_screen->set_refresh_hz(30); //TODO: wrong!
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500 * 3) /* not accurate */);
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 256-1, 0 +16, 256-1 -16);
- m_screen->set_screen_update(FUNC(cischeat_state::screen_update_scudhamm));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_scudhamm);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(30) //TODO: wrong!
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500 * 3) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0 +16, 256-1 -16)
+ MCFG_SCREEN_UPDATE_DRIVER(cischeat_state, screen_update_scudhamm)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_scudhamm)
PALETTE(config, m_palette, palette_device::BLACK).set_format(palette_device::RRRRGGGGBBBBRGBx, 0x8000/2);
m_palette->enable_shadows();
@@ -2149,14 +2158,14 @@ void cischeat_state::scudhamm(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- OKIM6295(config, m_oki1, 4000000/2, okim6295_device::PIN7_HIGH); // pin 7 not verified
- m_oki1->add_route(ALL_OUTPUTS, "lspeaker", 0.5);
- m_oki1->add_route(ALL_OUTPUTS, "rspeaker", 0.5);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 4000000/2, okim6295_device::PIN7_HIGH) // pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5)
- OKIM6295(config, m_oki2, 4000000/2, okim6295_device::PIN7_HIGH); // pin 7 not verified
- m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 0.5);
- m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 0.5);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 4000000/2, okim6295_device::PIN7_HIGH) // pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5)
+MACHINE_CONFIG_END
/**************************************************************************
@@ -2174,14 +2183,15 @@ TIMER_DEVICE_CALLBACK_MEMBER(cischeat_state::armchamp2_scanline)
m_maincpu->set_input_line(4, HOLD_LINE);
}
-void cischeat_state::armchmp2(machine_config &config)
-{
+MACHINE_CONFIG_START(cischeat_state::armchmp2)
scudhamm(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &cischeat_state::armchmp2_map);
- subdevice<timer_device>("scantimer")->set_callback(FUNC(cischeat_state::armchamp2_scanline));
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(armchmp2_map)
+ MCFG_TIMER_MODIFY("scantimer")
+ MCFG_TIMER_DRIVER_CALLBACK(cischeat_state, armchamp2_scanline)
+MACHINE_CONFIG_END
/**************************************************************************
@@ -2206,29 +2216,29 @@ TIMER_DEVICE_CALLBACK_MEMBER(cischeat_state::captflag_scanline)
m_maincpu->set_input_line(3, HOLD_LINE);
}
-void cischeat_state::captflag(machine_config &config)
-{
+MACHINE_CONFIG_START(cischeat_state::captflag)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000) / 2); // TMP68000P-12
- m_maincpu->set_addrmap(AS_PROGRAM, &cischeat_state::captflag_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(cischeat_state::captflag_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu",M68000, XTAL(24'000'000) / 2) // TMP68000P-12
+ MCFG_DEVICE_PROGRAM_MAP(captflag_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cischeat_state, captflag_scanline, "screen", 0, 1)
- TICKET_DISPENSER(config, m_captflag_hopper, attotime::from_msec(2000), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH );
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(2000), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )
WATCHDOG_TIMER(config, m_watchdog);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
-// m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
- m_screen->set_refresh_hz(30); //TODO: wrong!
-// m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500 * 3) /* not accurate */);
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 256-1, 0 +16, 256-1 -16);
- m_screen->set_screen_update(FUNC(cischeat_state::screen_update_scudhamm));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_scudhamm);
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(30) //TODO: wrong!
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500 * 3) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0 +16, 256-1 -16)
+ MCFG_SCREEN_UPDATE_DRIVER(cischeat_state, screen_update_scudhamm)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_scudhamm)
PALETTE(config, m_palette, palette_device::BLACK).set_format(palette_device::RRRRGGGGBBBBRGBx, 0x8000/2);
m_palette->enable_shadows();
@@ -2236,8 +2246,8 @@ void cischeat_state::captflag(machine_config &config)
MEGASYS1_TILEMAP(config, m_tmap[2], m_palette, 0x4e00/2);
// Motors
- TIMER(config, m_captflag_motor_left).configure_generic(timer_device::expired_delegate());
- TIMER(config, m_captflag_motor_right).configure_generic(timer_device::expired_delegate());
+ MCFG_TIMER_ADD_NONE("motor_left")
+ MCFG_TIMER_ADD_NONE("motor_right")
// Layout
config.set_default_layout(layout_captflag);
@@ -2246,16 +2256,16 @@ void cischeat_state::captflag(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- OKIM6295(config, m_oki1, 4000000/2, okim6295_device::PIN7_HIGH); // pin 7 not verified
- m_oki1->set_addrmap(0, &cischeat_state::captflag_oki1_map);
- m_oki1->add_route(ALL_OUTPUTS, "lspeaker", 0.5);
- m_oki1->add_route(ALL_OUTPUTS, "rspeaker", 0.5);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 4000000/2, okim6295_device::PIN7_HIGH) // pin 7 not verified
+ MCFG_DEVICE_ADDRESS_MAP(0, captflag_oki1_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5)
- OKIM6295(config, m_oki2, 4000000/2, okim6295_device::PIN7_HIGH); // pin 7 not verified
- m_oki2->set_addrmap(0, &cischeat_state::captflag_oki2_map);
- m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 0.5);
- m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 0.5);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 4000000/2, okim6295_device::PIN7_HIGH) // pin 7 not verified
+ MCFG_DEVICE_ADDRESS_MAP(0, captflag_oki2_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/citycon.cpp b/src/mame/drivers/citycon.cpp
index 47ea952a56e..307978e89dc 100644
--- a/src/mame/drivers/citycon.cpp
+++ b/src/mame/drivers/citycon.cpp
@@ -198,24 +198,24 @@ void citycon_state::machine_reset()
}
-void citycon_state::citycon(machine_config &config)
-{
+MACHINE_CONFIG_START(citycon_state::citycon)
+
/* basic machine hardware */
- MC6809(config, m_maincpu, CPU_CLOCK); // HD68B09P
- m_maincpu->set_addrmap(AS_PROGRAM, &citycon_state::citycon_map);
- m_maincpu->set_vblank_int("screen", FUNC(citycon_state::irq0_line_assert));
+ MCFG_DEVICE_ADD("maincpu", MC6809, CPU_CLOCK) // HD68B09P
+ MCFG_DEVICE_PROGRAM_MAP(citycon_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", citycon_state, irq0_line_assert)
- mc6809e_device &audiocpu(MC6809E(config, "audiocpu", MASTER_CLOCK / 32)); // schematics allow for either a 6809 or 6809E; HD68A09EP found on one actual PCB
- audiocpu.set_addrmap(AS_PROGRAM, &citycon_state::sound_map);
- audiocpu.set_vblank_int("screen", FUNC(citycon_state::irq0_line_hold)); // actually unused, probably it was during development
+ MCFG_DEVICE_ADD("audiocpu", MC6809E, MASTER_CLOCK / 32) // schematics allow for either a 6809 or 6809E; HD68A09EP found on one actual PCB
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", citycon_state, irq0_line_hold) // actually unused, probably it was during development
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- screen.set_screen_update(FUNC(citycon_state::screen_update_citycon));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(citycon_state, screen_update_citycon)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_citycon);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_citycon)
PALETTE(config, m_palette, palette_device::BLACK).set_format(palette_device::RGBx_444, 640+1024); // 640 real palette + 1024 virtual palette
/* sound hardware */
@@ -233,7 +233,7 @@ void citycon_state::citycon(machine_config &config)
ymsnd.add_route(1, "mono", 0.40);
ymsnd.add_route(2, "mono", 0.40);
ymsnd.add_route(3, "mono", 0.20);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cking_master.cpp b/src/mame/drivers/cking_master.cpp
deleted file mode 100644
index 3de15ba8803..00000000000
--- a/src/mame/drivers/cking_master.cpp
+++ /dev/null
@@ -1,239 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:Berger
-/******************************************************************************
-*
-* cking_master.cpp, subdriver of machine/chessbase.cpp
-
-TODO:
-- 1 WAIT CLK per M1, workaround with z80_set_cycle_tables is possible
- (wait state is similar to MSX) but I can't be bothered, better solution
- is to add M1 pin to the z80 core. Until then, it'll run ~20% too fast.
-
-*******************************************************************************
-
-Chess King Master overview (yes, it's plainly named "Master"):
-- Z80 CPU(NEC D780C-1) @ 4MHz(8MHz XTAL), IRQ from 555 timer
-- 8KB ROM(NEC D2764C-3), 2KB RAM(NEC D4016C), ROM is scrambled for easy PCB placement
-- simple I/O via 2*74373 and a 74145
-- 8*8 chessboard buttons, 32+1 border leds, piezo
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/chessbase.h"
-
-#include "cpu/z80/z80.h"
-#include "machine/bankdev.h"
-#include "sound/dac.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-// internal artwork
-#include "ck_master.lh" // clickable
-
-
-namespace {
-
-class master_state : public chessbase_state
-{
-public:
- master_state(const machine_config &mconfig, device_type type, const char *tag) :
- chessbase_state(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_irq_on(*this, "irq_on"),
- m_dac(*this, "dac"),
- m_mainmap(*this, "mainmap")
- { }
-
- // machine drivers
- void master(machine_config &config);
-
- void init_master();
-
-private:
- // devices/pointers
- required_device<cpu_device> m_maincpu;
- required_device<timer_device> m_irq_on;
- required_device<dac_2bit_binary_weighted_ones_complement_device> m_dac;
- required_device<address_map_bank_device> m_mainmap;
-
- // periodic interrupts
- template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
- template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); }
-
- // address maps
- void main_map(address_map &map);
- void main_trampoline(address_map &map);
- u8 main_trampoline_r(offs_t offset);
- void main_trampoline_w(offs_t offset, u8 data);
-
- // I/O handlers
- u8 input_r();
- void control_w(u8 data);
-};
-
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// TTL/generic
-
-void master_state::control_w(u8 data)
-{
- // d0-d3: 74145 A-D
- // 74145 0-9: input mux, led select
- u16 sel = 1 << (data & 0xf) & 0x3ff;
- m_inp_mux = sel;
-
- // d4,d5: led data
- display_matrix(2, 9, data >> 4 & 3, sel & 0x1ff);
-
- // d6,d7: speaker +/-
- m_dac->write(data >> 6 & 3);
-}
-
-u8 master_state::input_r()
-{
- // d0-d7: multiplexed inputs (active low)
- return ~read_inputs(10);
-}
-
-void master_state::init_master()
-{
- u8 *rom = memregion("maincpu")->base();
- const u32 len = memregion("maincpu")->bytes();
-
- // descramble data lines
- for (int i = 0; i < len; i++)
- rom[i] = bitswap<8>(rom[i], 4,5,0,7,6,1,3,2);
-
- // descramble address lines
- std::vector<u8> buf(len);
- memcpy(&buf[0], rom, len);
- for (int i = 0; i < len; i++)
- rom[i] = buf[bitswap<16>(i, 15,14,13,12,11,3,7,9, 10,8,6,5,4,2,1,0)];
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void master_state::main_map(address_map &map)
-{
- map(0x0000, 0x1fff).mirror(0x6000).rom().region("maincpu", 0); // _A15
- map(0xa000, 0xa000).mirror(0x1fff).rw(FUNC(master_state::input_r), FUNC(master_state::control_w)); // A13
- map(0xc000, 0xc7ff).mirror(0x3800).ram(); // A14
-}
-
-// PCB design is prone to bus conflicts, but should be fine if software obeys
-void master_state::main_trampoline_w(offs_t offset, u8 data)
-{
- if (offset & 0x2000)
- m_mainmap->write8((offset & 0x3fff) | 0x8000, data);
- if (offset & 0x4000)
- m_mainmap->write8((offset & 0x7fff) | 0x8000, data);
-}
-
-u8 master_state::main_trampoline_r(offs_t offset)
-{
- u8 data = 0xff;
- if (~offset & 0x8000)
- data &= m_mainmap->read8(offset);
- if (offset & 0x2000)
- data &= m_mainmap->read8((offset & 0x3fff) | 0x8000);
- if (offset & 0x4000)
- data &= m_mainmap->read8((offset & 0x7fff) | 0x8000);
-
- return data;
-}
-
-void master_state::main_trampoline(address_map &map)
-{
- map(0x0000, 0xffff).rw(FUNC(master_state::main_trampoline_r), FUNC(master_state::main_trampoline_w));
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( master )
- PORT_INCLUDE( generic_cb_buttons )
-
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Change Position")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("Clear Board")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("New Game")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("Take Back")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("King")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_NAME("Queen")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_NAME("Rook")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
-
- PORT_START("IN.9")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("Bishop")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_NAME("Knight")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_NAME("Pawn")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("White")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Black")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Move")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Level")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Sound")
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void master_state::master(machine_config &config)
-{
- /* basic machine hardware */
- Z80(config, m_maincpu, 8_MHz_XTAL/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &master_state::main_trampoline);
- ADDRESS_MAP_BANK(config, "mainmap").set_map(&master_state::main_map).set_options(ENDIANNESS_LITTLE, 8, 16);
-
- const attotime irq_period = attotime::from_hz(429); // theoretical frequency from 555 timer (22nF, 150K, 1K5), measurement was 418Hz
- TIMER(config, m_irq_on).configure_periodic(FUNC(master_state::irq_on<INPUT_LINE_IRQ0>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_nsec(22870)); // active for 22.87us
- TIMER(config, "irq_off").configure_periodic(FUNC(master_state::irq_off<INPUT_LINE_IRQ0>), irq_period);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(master_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_ck_master);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_2BIT_BINARY_WEIGHTED_ONES_COMPLEMENT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( ckmaster )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("ckmaster.ic2", 0x0000, 0x2000, CRC(59cbec9e) SHA1(2e0629e65778da62bed857406b91a334698d2fe8) ) // D2764C, no label
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-CONS( 1984, ckmaster, 0, 0, master, master, master_state, init_master, "Chess King", "Master (Chess King)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/ckz80.cpp b/src/mame/drivers/ckz80.cpp
new file mode 100644
index 00000000000..7e087426c20
--- /dev/null
+++ b/src/mame/drivers/ckz80.cpp
@@ -0,0 +1,473 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+// thanks-to:Berger
+/******************************************************************************
+
+ Chess King generic Z80 based chess computer driver
+
+ NOTE: MAME doesn't include a generalized implementation for boardpieces yet,
+ greatly affecting user playability of emulated electronic board games.
+ As workaround for the chess games, use an external chess GUI on the side,
+ such as Arena(in editmode).
+
+ TODO:
+ - ckmaster 1 WAIT CLK per M1, workaround with z80_set_cycle_tables is possible
+ (wait state is similar to MSX) but I can't be bothered, better solution
+ is to add M1 pin to the z80 core. Until then, it'll run ~20% too fast.
+
+******************************************************************************
+
+Master:
+- Z80 CPU(NEC D780C-1) @ 4MHz(8MHz XTAL), IRQ from 555 timer
+- 8KB ROM(NEC D2764C-3), 2KB RAM(NEC D4016C), ROM is scrambled for easy PCB placement
+- simple I/O via 2*74373 and a 74145
+- 8*8 chessboard buttons, 32+1 border leds, piezo
+
+******************************************************************************/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "machine/timer.h"
+#include "machine/bankdev.h"
+#include "sound/dac.h"
+#include "sound/volt_reg.h"
+#include "speaker.h"
+
+// internal artwork
+#include "ck_master.lh" // clickable
+
+
+class ckz80_state : public driver_device
+{
+public:
+ ckz80_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_dac(*this, "dac"),
+ m_master_map(*this, "master_map"),
+ m_inp_matrix(*this, "IN.%u", 0),
+ m_out_x(*this, "%u.%u", 0U, 0U),
+ m_out_a(*this, "%u.a", 0U),
+ m_out_digit(*this, "digit%u", 0U),
+ m_display_wait(33),
+ m_display_maxy(1),
+ m_display_maxx(0)
+ { }
+
+ // devices/pointers
+ required_device<cpu_device> m_maincpu;
+ required_device<dac_2bit_binary_weighted_ones_complement_device> m_dac;
+ optional_device<address_map_bank_device> m_master_map;
+ optional_ioport_array<10> m_inp_matrix; // max 10
+ output_finder<0x20, 0x20> m_out_x;
+ output_finder<0x20> m_out_a;
+ output_finder<0x20> m_out_digit;
+
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE); }
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); }
+
+ // misc common
+ u16 m_inp_mux; // multiplexed keypad mask
+ u16 m_led_select;
+ u16 m_led_data;
+
+ u16 read_inputs(int columns);
+
+ // display common
+ int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
+ int m_display_maxy; // display matrix number of rows
+ int m_display_maxx; // display matrix number of columns (max 31 for now)
+
+ u32 m_display_state[0x20]; // display matrix rows data (last bit is used for always-on)
+ u16 m_display_segmask[0x20]; // if not 0, display matrix row is a digit, mask indicates connected segments
+ u8 m_display_decay[0x20][0x20]; // (internal use)
+
+ TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
+ void display_update();
+ void set_display_size(int maxx, int maxy);
+ void display_matrix(int maxx, int maxy, u32 setx, u32 sety, bool update = true);
+
+ // Master
+ DECLARE_READ8_MEMBER(master_input_r);
+ DECLARE_WRITE8_MEMBER(master_control_w);
+ void init_master();
+ DECLARE_READ8_MEMBER(master_trampoline_r);
+ DECLARE_WRITE8_MEMBER(master_trampoline_w);
+ void master_map(address_map &map);
+ void master_trampoline(address_map &map);
+ void master(machine_config &config);
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+};
+
+
+// machine start/reset
+
+void ckz80_state::machine_start()
+{
+ // resolve handlers
+ m_out_x.resolve();
+ m_out_a.resolve();
+ m_out_digit.resolve();
+
+ // zerofill
+ memset(m_display_state, 0, sizeof(m_display_state));
+ memset(m_display_decay, 0, sizeof(m_display_decay));
+ memset(m_display_segmask, 0, sizeof(m_display_segmask));
+
+ m_inp_mux = 0;
+ m_led_select = 0;
+ m_led_data = 0;
+
+ // register for savestates
+ save_item(NAME(m_display_maxy));
+ save_item(NAME(m_display_maxx));
+ save_item(NAME(m_display_wait));
+
+ save_item(NAME(m_display_state));
+ save_item(NAME(m_display_decay));
+ save_item(NAME(m_display_segmask));
+
+ save_item(NAME(m_inp_mux));
+ save_item(NAME(m_led_select));
+ save_item(NAME(m_led_data));
+}
+
+void ckz80_state::machine_reset()
+{
+}
+
+
+
+/***************************************************************************
+
+ Helper Functions
+
+***************************************************************************/
+
+// The device may strobe the outputs very fast, it is unnoticeable to the user.
+// To prevent flickering here, we need to simulate a decay.
+
+void ckz80_state::display_update()
+{
+ for (int y = 0; y < m_display_maxy; y++)
+ {
+ u32 active_state = 0;
+
+ for (int x = 0; x <= m_display_maxx; x++)
+ {
+ // turn on powered segments
+ if (m_display_state[y] >> x & 1)
+ m_display_decay[y][x] = m_display_wait;
+
+ // determine active state
+ u32 ds = (m_display_decay[y][x] != 0) ? 1 : 0;
+ active_state |= (ds << x);
+
+ // output to y.x, or y.a when always-on
+ if (x != m_display_maxx)
+ m_out_x[y][x] = ds;
+ else
+ m_out_a[y] = ds;
+ }
+
+ // output to digity
+ if (m_display_segmask[y] != 0)
+ m_out_digit[y] = active_state & m_display_segmask[y];
+ }
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(ckz80_state::display_decay_tick)
+{
+ // slowly turn off unpowered segments
+ for (int y = 0; y < m_display_maxy; y++)
+ for (int x = 0; x <= m_display_maxx; x++)
+ if (m_display_decay[y][x] != 0)
+ m_display_decay[y][x]--;
+
+ display_update();
+}
+
+void ckz80_state::set_display_size(int maxx, int maxy)
+{
+ m_display_maxx = maxx;
+ m_display_maxy = maxy;
+}
+
+void ckz80_state::display_matrix(int maxx, int maxy, u32 setx, u32 sety, bool update)
+{
+ set_display_size(maxx, maxy);
+
+ // update current state
+ u32 mask = (1 << maxx) - 1;
+ for (int y = 0; y < maxy; y++)
+ m_display_state[y] = (sety >> y & 1) ? ((setx & mask) | (1 << maxx)) : 0;
+
+ if (update)
+ display_update();
+}
+
+
+// generic input handlers
+
+u16 ckz80_state::read_inputs(int columns)
+{
+ u16 ret = 0;
+
+ // read selected input rows
+ for (int i = 0; i < columns; i++)
+ if (m_inp_mux >> i & 1)
+ ret |= m_inp_matrix[i]->read();
+
+ return ret;
+}
+
+
+
+// Devices, I/O
+
+/******************************************************************************
+ Master
+******************************************************************************/
+
+// TTL/generic
+
+WRITE8_MEMBER(ckz80_state::master_control_w)
+{
+ // d0-d3: 74145 A-D
+ // 74145 0-9: input mux, led select
+ u16 sel = 1 << (data & 0xf) & 0x3ff;
+ m_inp_mux = sel;
+
+ // d4,d5: led data
+ display_matrix(2, 9, data >> 4 & 3, sel & 0x1ff);
+
+ // d6,d7: speaker +/-
+ m_dac->write(data >> 6 & 3);
+}
+
+READ8_MEMBER(ckz80_state::master_input_r)
+{
+ // d0-d7: multiplexed inputs (active low)
+ return ~read_inputs(10);
+}
+
+void ckz80_state::init_master()
+{
+ u8 *rom = memregion("maincpu")->base();
+ const u32 len = memregion("maincpu")->bytes();
+
+ // descramble data lines
+ for (int i = 0; i < len; i++)
+ rom[i] = bitswap<8>(rom[i], 4,5,0,7,6,1,3,2);
+
+ // descramble address lines
+ std::vector<u8> buf(len);
+ memcpy(&buf[0], rom, len);
+ for (int i = 0; i < len; i++)
+ rom[i] = buf[bitswap<16>(i, 15,14,13,12,11,3,7,9, 10,8,6,5,4,2,1,0)];
+}
+
+
+
+/******************************************************************************
+ Address Maps
+******************************************************************************/
+
+// Master
+
+void ckz80_state::master_map(address_map &map)
+{
+ map(0x0000, 0x1fff).mirror(0x6000).rom().region("maincpu", 0); // _A15
+ map(0xa000, 0xa000).mirror(0x1fff).rw(FUNC(ckz80_state::master_input_r), FUNC(ckz80_state::master_control_w)); // A13
+ map(0xc000, 0xc7ff).mirror(0x3800).ram(); // A14
+}
+
+// PCB design is prone to bus conflicts, but should be fine if software obeys
+WRITE8_MEMBER(ckz80_state::master_trampoline_w)
+{
+ if (offset & 0x2000)
+ m_master_map->write8(space, (offset & 0x3fff) | 0x8000, data);
+ if (offset & 0x4000)
+ m_master_map->write8(space, (offset & 0x7fff) | 0x8000, data);
+}
+
+READ8_MEMBER(ckz80_state::master_trampoline_r)
+{
+ u8 data = 0xff;
+ if (~offset & 0x8000)
+ data &= m_master_map->read8(space, offset);
+ if (offset & 0x2000)
+ data &= m_master_map->read8(space, (offset & 0x3fff) | 0x8000);
+ if (offset & 0x4000)
+ data &= m_master_map->read8(space, (offset & 0x7fff) | 0x8000);
+
+ return data;
+}
+
+void ckz80_state::master_trampoline(address_map &map)
+{
+ map(0x0000, 0xffff).rw(FUNC(ckz80_state::master_trampoline_r), FUNC(ckz80_state::master_trampoline_w));
+}
+
+
+
+/******************************************************************************
+ Input Ports
+******************************************************************************/
+
+static INPUT_PORTS_START( cb_buttons )
+ PORT_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.4")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.5")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.6")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( master )
+ PORT_INCLUDE( cb_buttons )
+
+ PORT_START("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Change Position")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("Clear Board")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("New Game")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("Take Back")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("King")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_NAME("Queen")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_NAME("Rook")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
+
+ PORT_START("IN.9")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("Bishop")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_NAME("Knight")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_NAME("Pawn")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("White")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Black")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Move")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Level")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Sound")
+INPUT_PORTS_END
+
+
+
+/******************************************************************************
+ Machine Drivers
+******************************************************************************/
+
+MACHINE_CONFIG_START(ckz80_state::master)
+
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", Z80, 8_MHz_XTAL/2)
+ MCFG_DEVICE_PROGRAM_MAP(master_trampoline)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", ckz80_state, irq_on, attotime::from_hz(429)) // theoretical frequency from 555 timer (22nF, 150K, 1K5), measurement was 418Hz
+ MCFG_TIMER_START_DELAY(attotime::from_hz(429) - attotime::from_nsec(22870)) // active for 22.87us
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", ckz80_state, irq_off, attotime::from_hz(429))
+
+ ADDRESS_MAP_BANK(config, "master_map").set_map(&ckz80_state::master_map).set_options(ENDIANNESS_LITTLE, 8, 16);
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", ckz80_state, display_decay_tick, attotime::from_msec(1))
+ config.set_default_layout(layout_ck_master);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ MCFG_DEVICE_ADD("dac", DAC_2BIT_BINARY_WEIGHTED_ONES_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
+
+
+
+/******************************************************************************
+ ROM Definitions
+******************************************************************************/
+
+ROM_START( ckmaster )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("ckmaster.ic2", 0x0000, 0x2000, CRC(59cbec9e) SHA1(2e0629e65778da62bed857406b91a334698d2fe8) ) // D2764C, no label
+ROM_END
+
+
+
+/******************************************************************************
+ Drivers
+******************************************************************************/
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+CONS( 1984, ckmaster, 0, 0, master, master, ckz80_state, init_master, "Chess King", "Master (Chess King)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/clayshoo.cpp b/src/mame/drivers/clayshoo.cpp
index 3c571d811a0..bddff8b1082 100644
--- a/src/mame/drivers/clayshoo.cpp
+++ b/src/mame/drivers/clayshoo.cpp
@@ -322,30 +322,30 @@ void clayshoo_state::machine_reset()
m_analog_port_val = 0;
}
-void clayshoo_state::clayshoo(machine_config &config)
-{
+MACHINE_CONFIG_START(clayshoo_state::clayshoo)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 5068000/4); /* 5.068/4 Mhz (divider is a guess) */
- m_maincpu->set_addrmap(AS_PROGRAM, &clayshoo_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &clayshoo_state::main_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(clayshoo_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,5068000/4) /* 5.068/4 Mhz (divider is a guess) */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", clayshoo_state, irq0_line_hold)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_size(256, 256);
- screen.set_visarea(0, 255, 64, 255);
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_screen_update(FUNC(clayshoo_state::screen_update_clayshoo));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 64, 255)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_UPDATE_DRIVER(clayshoo_state, screen_update_clayshoo)
I8255A(config, "ppi8255_0");
i8255_device &ppi1(I8255A(config, "ppi8255_1"));
ppi1.out_pa_callback().set(FUNC(clayshoo_state::input_port_select_w));
ppi1.in_pb_callback().set(FUNC(clayshoo_state::input_port_r));
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/clcd.cpp b/src/mame/drivers/clcd.cpp
index 4e2f60a1795..136ccc419de 100644
--- a/src/mame/drivers/clcd.cpp
+++ b/src/mame/drivers/clcd.cpp
@@ -657,11 +657,10 @@ static INPUT_PORTS_START( clcd )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // clears screen and goes into infinite loop
INPUT_PORTS_END
-void clcd_state::clcd(machine_config &config)
-{
+MACHINE_CONFIG_START(clcd_state::clcd)
/* basic machine hardware */
- M65C02(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &clcd_state::clcd_mem);
+ MCFG_DEVICE_ADD("maincpu", M65C02, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(clcd_mem)
INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline("maincpu", m65c02_device::IRQ_LINE);
@@ -713,23 +712,24 @@ void clcd_state::clcd(machine_config &config)
m_rtc->set_default_24h(true);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(80);
- screen.set_screen_update(FUNC(clcd_state::screen_update));
- screen.set_size(480, 128);
- screen.set_visarea_full();
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(80)
+ MCFG_SCREEN_UPDATE_DRIVER(clcd_state, screen_update)
+ MCFG_SCREEN_SIZE(480, 128)
+ MCFG_SCREEN_VISIBLE_AREA(0, 480-1, 0, 128-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(clcd_state::clcd_palette), 2);
// sound hardware
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
RAM(config, "ram").set_default_size("128K").set_extra_options("32K,64K").set_default_value(0);
NVRAM(config, "nvram").set_custom_handler(FUNC(clcd_state::nvram_init));
-}
+MACHINE_CONFIG_END
ROM_START( clcd )
diff --git a/src/mame/drivers/clickstart.cpp b/src/mame/drivers/clickstart.cpp
deleted file mode 100644
index 69d1fb1235e..00000000000
--- a/src/mame/drivers/clickstart.cpp
+++ /dev/null
@@ -1,441 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Ryan Holtz, David Haywood
-/******************************************************************************
-
- Leapfrog Clickstart Emulation
-
- die markings show
- "SunPlus QL8041C" ( known as Sunplus SPG2?? )
-
- Status:
-
- Some games have Checksums listed in the header area that appear to be
- like the byte checksums on the Radica games in vii.cpp, however the
- calculation doesn't add up correctly. There is also a checksum in
- a footer area at the end of every ROM that does add up correctly in
- all cases.
-
- The ROM carts are marked for 4MByte ROMs at least so the sizes
- should be correct.
-
- What type of SPG is this?
-
-*******************************************************************************/
-
-#include "emu.h"
-
-#include "bus/generic/slot.h"
-#include "bus/generic/carts.h"
-
-#include "cpu/unsp/unsp.h"
-
-#include "machine/spg2xx.h"
-
-#include "screen.h"
-#include "softlist.h"
-#include "speaker.h"
-
-class clickstart_state : public driver_device
-{
-public:
- clickstart_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_screen(*this, "screen")
- , m_spg(*this, "spg")
- , m_cart(*this, "cartslot")
- , m_system_region(*this, "maincpu")
- , m_io_mouse_x(*this, "MOUSEX")
- , m_io_mouse_y(*this, "MOUSEY")
- , m_cart_region(nullptr)
- , m_mouse_x(0)
- , m_mouse_y(0)
- , m_mouse_dx(0)
- , m_mouse_dy(0)
- , m_uart_tx_fifo_start(0)
- , m_uart_tx_fifo_end(0)
- , m_uart_tx_fifo_count(0)
- , m_uart_tx_timer(nullptr)
- , m_unk_portc_toggle(0)
- { }
-
- void clickstart(machine_config &config);
-
- DECLARE_INPUT_CHANGED_MEMBER(mouse_update);
- DECLARE_INPUT_CHANGED_MEMBER(key_update);
-
-private:
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
-
- static const device_timer_id TIMER_UART_TX = 0;
-
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
- void mem_map(address_map &map);
-
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart);
-
- DECLARE_READ16_MEMBER(rom_r);
-
- DECLARE_WRITE16_MEMBER(porta_w);
- DECLARE_WRITE16_MEMBER(portb_w);
- DECLARE_WRITE16_MEMBER(portc_w);
- DECLARE_READ16_MEMBER(porta_r);
- DECLARE_READ16_MEMBER(portb_r);
- DECLARE_READ16_MEMBER(portc_r);
-
- DECLARE_WRITE8_MEMBER(chip_sel_w);
-
- void handle_uart_tx();
- void uart_tx_fifo_push(uint8_t value);
-
- void update_mouse_buffer();
-
- required_device<cpu_device> m_maincpu;
- required_device<screen_device> m_screen;
- required_device<spg2xx_device> m_spg;
- required_device<generic_slot_device> m_cart;
- required_memory_region m_system_region;
- required_ioport m_io_mouse_x;
- required_ioport m_io_mouse_y;
- memory_region *m_cart_region;
-
- uint16_t m_mouse_x;
- uint16_t m_mouse_y;
- int16_t m_mouse_dx;
- int16_t m_mouse_dy;
-
- uint8_t m_uart_tx_fifo[32]; // arbitrary size
- uint8_t m_uart_tx_fifo_start;
- uint8_t m_uart_tx_fifo_end;
- uint8_t m_uart_tx_fifo_count;
- emu_timer *m_uart_tx_timer;
-
- uint16_t m_unk_portc_toggle;
-};
-
-void clickstart_state::machine_start()
-{
- // if there's a cart, override the standard mapping
- if (m_cart && m_cart->exists())
- {
- std::string region_tag;
- m_cart_region = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
- }
-
- save_item(NAME(m_mouse_x));
- save_item(NAME(m_mouse_y));
- save_item(NAME(m_mouse_dx));
- save_item(NAME(m_mouse_dy));
-
- save_item(NAME(m_uart_tx_fifo));
- save_item(NAME(m_uart_tx_fifo_start));
- save_item(NAME(m_uart_tx_fifo_end));
- save_item(NAME(m_uart_tx_fifo_count));
-
- save_item(NAME(m_unk_portc_toggle));
-
- m_uart_tx_timer = timer_alloc(TIMER_UART_TX);
- m_uart_tx_timer->adjust(attotime::never);
-}
-
-void clickstart_state::machine_reset()
-{
- m_mouse_x = 0xffff;
- m_mouse_y = 0xffff;
- m_mouse_dx = 0;
- m_mouse_dy = 0;
-
- memset(m_uart_tx_fifo, 0, ARRAY_LENGTH(m_uart_tx_fifo));
- m_uart_tx_fifo_start = 0;
- m_uart_tx_fifo_end = 0;
- m_uart_tx_fifo_count = 0;
- m_uart_tx_timer->adjust(attotime::from_hz(3200/10), 0, attotime::from_hz(3200/10));
-
- m_unk_portc_toggle = 0;
-}
-
-DEVICE_IMAGE_LOAD_MEMBER(clickstart_state, cart)
-{
- uint32_t size = m_cart->common_get_size("rom");
-
- m_cart->rom_alloc(size, GENERIC_ROM16_WIDTH, ENDIANNESS_LITTLE);
- m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
-
- return image_init_result::PASS;
-}
-
-void clickstart_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
-{
- if (id == TIMER_UART_TX)
- {
- handle_uart_tx();
- }
-}
-
-void clickstart_state::handle_uart_tx()
-{
- if (m_uart_tx_fifo_count == 0)
- return;
-
- m_spg->uart_rx(m_uart_tx_fifo[m_uart_tx_fifo_start]);
- m_uart_tx_fifo_start = (m_uart_tx_fifo_start + 1) % ARRAY_LENGTH(m_uart_tx_fifo);
- m_uart_tx_fifo_count--;
-}
-
-void clickstart_state::uart_tx_fifo_push(uint8_t value)
-{
- if (m_uart_tx_fifo_count >= ARRAY_LENGTH(m_uart_tx_fifo))
- {
- logerror("Warning: Trying to push too much data onto the mouse Tx FIFO, data will be lost.\n");
- }
-
- m_uart_tx_fifo[m_uart_tx_fifo_end] = value;
- m_uart_tx_fifo_end = (m_uart_tx_fifo_end + 1) % ARRAY_LENGTH(m_uart_tx_fifo);
- m_uart_tx_fifo_count++;
-}
-
-INPUT_CHANGED_MEMBER(clickstart_state::key_update)
-{
- const size_t keycode = reinterpret_cast<size_t>(param);
- printf("keycode:%02x, oldval:%02x, newval:%02x\n", (uint8_t)keycode, oldval, newval);
-
- uint8_t buffer[5] = {};
- buffer[0] = 0x01;
- buffer[1] = newval ? keycode : 0x3f;
- buffer[2] = 0x3f;
- buffer[3] = 0x01;
- buffer[4] = 0x01;
-
- printf("Keyboard queueing: ");
- uint16_t sum = 0;
- for (int i = 0; i < 5; i++)
- {
- uart_tx_fifo_push(buffer[i] ^ 0xff);
- sum += buffer[i];
- printf("%02x/%02x ", buffer[i], buffer[i] ^ 0xff);
- }
- sum = (sum & 0xff) ^ 0xff;
- uart_tx_fifo_push((uint8_t)sum);
- printf("%02x\n", (uint8_t)sum);
-}
-
-INPUT_CHANGED_MEMBER(clickstart_state::mouse_update)
-{
- uint16_t x = m_io_mouse_x->read();
- uint16_t y = m_io_mouse_y->read();
- uint16_t old_mouse_x = m_mouse_x;
- uint16_t old_mouse_y = m_mouse_y;
-
- if (m_mouse_x == 0xffff)
- {
- old_mouse_x = x;
- old_mouse_y = y;
- }
-
- m_mouse_x = x;
- m_mouse_y = y;
-
- m_mouse_dx += (m_mouse_x - old_mouse_x);
- m_mouse_dy += (m_mouse_y - old_mouse_y);
-
- if (m_mouse_dx < -63)
- m_mouse_dx = -63;
- else if (m_mouse_dx > 62)
- m_mouse_dx = 62;
-
- if (m_mouse_dy < -63)
- m_mouse_dy = -63;
- else if (m_mouse_dy > 62)
- m_mouse_dy = 62;
-
- update_mouse_buffer();
-
- m_mouse_dx = 0;
- m_mouse_dy = 0;
-}
-
-void clickstart_state::update_mouse_buffer()
-{
- if (m_mouse_dx == 0 && m_mouse_dy == 0)
- return;
-
- uint8_t buffer[5] = {};
- buffer[0] = 0x01;
- buffer[1] = 0x3f;
- buffer[2] = 0x3f;
- buffer[3] = (m_mouse_dx + 1) & 0x3f;
- buffer[4] = (m_mouse_dy + 1) & 0x3f;
-
- printf("Mouse queueing: ");
- uint16_t sum = 0;
- for (int i = 0; i < 5; i++)
- {
- uart_tx_fifo_push(buffer[i] ^ 0xff);
- sum += buffer[i];
- printf("%02x/%02x ", buffer[i], buffer[i] ^ 0xff);
- }
- sum = (sum & 0xff) ^ 0xff;
- uart_tx_fifo_push((uint8_t)sum);
- printf("%02x\n", (uint8_t)sum);
-}
-
-READ16_MEMBER(clickstart_state::rom_r)
-{
- if (offset < 0x400000 / 2)
- {
- if (m_cart->exists())
- return ((uint16_t*)m_cart_region->base())[offset];
- else
- return ((uint16_t*)m_system_region->base())[offset];
- }
- else
- {
- return ((uint16_t*)m_system_region->base())[offset];
- }
-}
-
-WRITE16_MEMBER(clickstart_state::porta_w)
-{
- //logerror("%s: porta_w: %04x & %04x\n", machine().describe_context(), data, mem_mask);
-}
-
-WRITE16_MEMBER(clickstart_state::portb_w)
-{
- logerror("%s: portb_w: %04x & %04x\n", machine().describe_context(), data, mem_mask);
-}
-
-WRITE16_MEMBER(clickstart_state::portc_w)
-{
- //logerror("%s: portc_w: %04x & %04x\n", machine().describe_context(), data, mem_mask);
-}
-
-READ16_MEMBER(clickstart_state::porta_r)
-{
- uint16_t data = 0x4000;
- //logerror("%s: porta_r: %04x & %04x\n", machine().describe_context(), data, mem_mask);
- return data;
-}
-
-READ16_MEMBER(clickstart_state::portb_r)
-{
- logerror("%s: portb_r: %04x\n", machine().describe_context(), mem_mask);
- return 0;
-}
-
-READ16_MEMBER(clickstart_state::portc_r)
-{
- uint16_t data = m_unk_portc_toggle;
- m_unk_portc_toggle ^= 0x0400;
- //logerror("%s: portc_r: %04x & %04x\n", machine().describe_context(), data, mem_mask);
- return data;
-}
-
-WRITE8_MEMBER(clickstart_state::chip_sel_w)
-{
- // Seems unused, currently
-}
-
-void clickstart_state::mem_map(address_map &map)
-{
- map(0x000000, 0x3fffff).r(FUNC(clickstart_state::rom_r));
- map(0x000000, 0x003fff).m(m_spg, FUNC(spg2xx_device::map));
-}
-
-static INPUT_PORTS_START( clickstart )
- PORT_START("MOUSEX")
- PORT_BIT(0x3e, 0x00, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, mouse_update, 0)
-
- PORT_START("MOUSEY")
- PORT_BIT(0x3e, 0x00, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, mouse_update, 0)
-
- PORT_START("KEYS0")
- PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x01) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
- PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x02) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
- PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x03) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
- PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x04) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
- PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x05) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
- PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x06) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
- PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x07) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
- PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x08) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
- PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x09) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
- PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x0a) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
- PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x0b) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
- PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x0c) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
- PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x0d) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
- PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x0e) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
- PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x0f) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
- PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x10) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
-
- PORT_START("KEYS1")
- PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x11) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('q')
- PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x12) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('r')
- PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x13) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('s')
- PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x14) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('t')
- PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x15) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('u')
- PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x16) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('v')
- PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x17) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('w')
- PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x18) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('x')
- PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x19) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('y')
- PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x1a) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('z')
- PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x1b) PORT_CODE(KEYCODE_0) PORT_CHAR('0')
- PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x1c) PORT_CODE(KEYCODE_1) PORT_CHAR('1')
- PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x1d) PORT_CODE(KEYCODE_2) PORT_CHAR('2')
- PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x1e) PORT_CODE(KEYCODE_3) PORT_CHAR('3')
- PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x1f) PORT_CODE(KEYCODE_4) PORT_CHAR('4')
- PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x20) PORT_CODE(KEYCODE_5) PORT_CHAR('5')
-
- PORT_START("KEYS2")
- PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x21) PORT_CODE(KEYCODE_6) PORT_CHAR('6')
- PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x22) PORT_CODE(KEYCODE_7) PORT_CHAR('7')
- PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x23) PORT_CODE(KEYCODE_8) PORT_CHAR('8')
- PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x24) PORT_CODE(KEYCODE_9) PORT_CHAR('9')
- PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0x27) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
- PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, clickstart_state, key_update, 0xa9) PORT_CODE(KEYCODE_LSHIFT) PORT_NAME("Shift")
- PORT_BIT(0xffc0, IP_ACTIVE_HIGH, IPT_UNUSED)
-INPUT_PORTS_END
-
-// There is a SEEPROM on the motherboard (type?)
-
-void clickstart_state::clickstart(machine_config &config)
-{
- UNSP(config, m_maincpu, XTAL(27'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &clickstart_state::mem_map);
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(320, 262);
- m_screen->set_visarea(0, 320-1, 0, 240-1);
- m_screen->set_screen_update("spg", FUNC(spg2xx_device::screen_update));
- m_screen->screen_vblank().set(m_spg, FUNC(spg2xx_device::vblank));
-
- SPEAKER(config, "lspeaker").front_left();
- SPEAKER(config, "rspeaker").front_right();
-
- SPG28X(config, m_spg, XTAL(27'000'000), m_maincpu, m_screen);
- m_spg->porta_out().set(FUNC(clickstart_state::porta_w));
- m_spg->portb_out().set(FUNC(clickstart_state::portb_w));
- m_spg->portc_out().set(FUNC(clickstart_state::portc_w));
- m_spg->porta_in().set(FUNC(clickstart_state::porta_r));
- m_spg->portb_in().set(FUNC(clickstart_state::portb_r));
- m_spg->portc_in().set(FUNC(clickstart_state::portc_r));
- m_spg->adc_in<0>().set_constant(0x0fff);
- m_spg->chip_select().set(FUNC(clickstart_state::chip_sel_w));
- m_spg->add_route(ALL_OUTPUTS, "lspeaker", 0.5);
- m_spg->add_route(ALL_OUTPUTS, "rspeaker", 0.5);
-
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "clickstart_cart");
- m_cart->set_width(GENERIC_ROM16_WIDTH);
- m_cart->set_device_load(device_image_load_delegate(&clickstart_state::device_image_load_cart, this));
-
- SOFTWARE_LIST(config, "cart_list").set_original("clickstart_cart");
-}
-
-ROM_START( clikstrt )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD16_WORD_SWAP( "clickstartbios.bin", 0x000000, 0x800000, CRC(7c833bd0) SHA1(2e9ef38e1a7582705920339e6b9944f6404fcf9b) )
-ROM_END
-
-// year, name, parent, compat, machine, input, class, init, company, fullname, flags
-CONS( 2007, clikstrt, 0, 0, clickstart, clickstart, clickstart_state, empty_init, "LeapFrog Enterprises", "ClickStart", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // 'My First Computer' tagline
diff --git a/src/mame/drivers/cliffhgr.cpp b/src/mame/drivers/cliffhgr.cpp
index e93fae702f3..2096eedf939 100644
--- a/src/mame/drivers/cliffhgr.cpp
+++ b/src/mame/drivers/cliffhgr.cpp
@@ -26,15 +26,15 @@ More info on the LD-V1100:
http://www.laserdiscarchive.co.uk/laserdisc_archive/pioneer/pioneer_ld-1100/pioneer_ld-1100.htm
Interrupts:
-The frame decoder reads in the Philips code from the composite signal into
+The frame decoder reads in the Phillips code from the composite signal into
3x8 bit flip flops. If bit 7 of the code is set, then an IRQ is generated.
-Philips codes come in scanline 17 and 18 of the composite signal for each
+Phillips codes come in scanline 17 and 18 of the composite signal for each
field, so if we have valid codes, we would have 4 irq's per frame.
NMIs are triggered by the TMS9128NL chip. The TMS9128NL SYNC signal is hooked
up to the composite SYNC signal from the frame decoder.
Goal To Go Side detection:
-The side detection code expects to read a chapter Philips code of 0x881DDD
+The side detection code expects to read a chapter Phillips code of 0x881DDD
for Side 1, or 0x8F7DDD for Side 2. That would be chapter 1 for Side 1, or
chapter number 119 for Side 2.
@@ -47,13 +47,13 @@ IO Ports:
0x44: W TMS9128NL VRAM Port
0x45: R TMS9128NL VRAM Port
0x46: W Sound/Overlay
-0x50: R Reads lower byte of Philips code
-0x51: R Reads middle byte of Philips code
-0x52: R Reads high byte of Philips code
+0x50: R Reads lower byte of Phillips code
+0x51: R Reads middle byte of Phillips code
+0x52: R Reads high byte of Phillips code
0x53: R Clears the flip flop that generated the IRQ
0x54: W TMS9128NL REG Port
0x55: R TMS9128NL REG Port
-0x57: W Clears the serial->parallel chips of the Philips code reader.
+0x57: W Clears the serial->parallel chips of the Phillips code reader.
0x60: W Input Port/Dipswitch selector
0x62: R Input Port/Dipswitch data read
0x64: - Unused in the schematics, but used in the code (maybe as delay?)
@@ -97,7 +97,7 @@ public:
: driver_device(mconfig, type, tag)
, m_laserdisc(*this, "laserdisc")
, m_port_bank(0)
- , m_philips_code(0)
+ , m_phillips_code(0)
, m_maincpu(*this, "maincpu")
, m_discrete(*this, "discrete")
, m_screen(*this, "screen")
@@ -107,8 +107,8 @@ public:
DECLARE_WRITE8_MEMBER(cliff_test_led_w);
DECLARE_WRITE8_MEMBER(cliff_port_bank_w);
DECLARE_READ8_MEMBER(cliff_port_r);
- DECLARE_READ8_MEMBER(cliff_philips_code_r);
- DECLARE_WRITE8_MEMBER(cliff_philips_clear_w);
+ DECLARE_READ8_MEMBER(cliff_phillips_code_r);
+ DECLARE_WRITE8_MEMBER(cliff_phillips_clear_w);
DECLARE_WRITE8_MEMBER(cliff_coin_counter_w);
DECLARE_READ8_MEMBER(cliff_irq_ack_r);
DECLARE_WRITE8_MEMBER(cliff_ldwire_w);
@@ -127,7 +127,7 @@ private:
required_device<pioneer_pr8210_device> m_laserdisc;
int m_port_bank;
- uint32_t m_philips_code;
+ uint32_t m_phillips_code;
emu_timer *m_irq_timer;
@@ -167,12 +167,12 @@ READ8_MEMBER(cliffhgr_state::cliff_port_r)
return 0xff;
}
-READ8_MEMBER(cliffhgr_state::cliff_philips_code_r)
+READ8_MEMBER(cliffhgr_state::cliff_phillips_code_r)
{
- return (m_philips_code >> (8 * offset)) & 0xff;
+ return (m_phillips_code >> (8 * offset)) & 0xff;
}
-WRITE8_MEMBER(cliffhgr_state::cliff_philips_clear_w)
+WRITE8_MEMBER(cliffhgr_state::cliff_phillips_clear_w)
{
/* reset serial to parallel converters */
}
@@ -209,25 +209,25 @@ WRITE8_MEMBER(cliffhgr_state::cliff_ldwire_w)
TIMER_CALLBACK_MEMBER(cliffhgr_state::cliff_irq_callback)
{
- m_philips_code = 0;
+ m_phillips_code = 0;
switch (param)
{
case 17:
- m_philips_code = m_laserdisc->get_field_code(LASERDISC_CODE_LINE17, true);
+ m_phillips_code = m_laserdisc->get_field_code(LASERDISC_CODE_LINE17, true);
param = 18;
break;
case 18:
- m_philips_code = m_laserdisc->get_field_code(LASERDISC_CODE_LINE18, true);
+ m_phillips_code = m_laserdisc->get_field_code(LASERDISC_CODE_LINE18, true);
param = 17;
break;
}
/* if we have a valid code, trigger an IRQ */
- if (m_philips_code & 0x800000)
+ if (m_phillips_code & 0x800000)
{
-// printf("%2d:code = %06X\n", param, philips_code);
+// printf("%2d:code = %06X\n", param, phillips_code);
m_maincpu->set_input_line(0, ASSERT_LINE);
}
@@ -243,7 +243,7 @@ void cliffhgr_state::machine_start()
void cliffhgr_state::machine_reset()
{
m_port_bank = 0;
- m_philips_code = 0;
+ m_phillips_code = 0;
m_irq_timer->adjust(m_screen->time_until_pos(17), 17);
}
@@ -259,14 +259,14 @@ void cliffhgr_state::mainmem(address_map &map)
void cliffhgr_state::mainport(address_map &map)
{
map.global_mask(0xff);
- map(0x44, 0x44).w("tms9928a", FUNC(tms9928a_device::vram_write));
- map(0x45, 0x45).r("tms9928a", FUNC(tms9928a_device::vram_read));
+ map(0x44, 0x44).w("tms9928a", FUNC(tms9928a_device::vram_w));
+ map(0x45, 0x45).r("tms9928a", FUNC(tms9928a_device::vram_r));
map(0x46, 0x46).w(FUNC(cliffhgr_state::cliff_sound_overlay_w));
- map(0x50, 0x52).r(FUNC(cliffhgr_state::cliff_philips_code_r));
+ map(0x50, 0x52).r(FUNC(cliffhgr_state::cliff_phillips_code_r));
map(0x53, 0x53).r(FUNC(cliffhgr_state::cliff_irq_ack_r));
- map(0x54, 0x54).w("tms9928a", FUNC(tms9928a_device::register_write));
- map(0x55, 0x55).r("tms9928a", FUNC(tms9928a_device::register_read));
- map(0x57, 0x57).w(FUNC(cliffhgr_state::cliff_philips_clear_w));
+ map(0x54, 0x54).w("tms9928a", FUNC(tms9928a_device::register_w));
+ map(0x55, 0x55).r("tms9928a", FUNC(tms9928a_device::register_r));
+ map(0x57, 0x57).w(FUNC(cliffhgr_state::cliff_phillips_clear_w));
map(0x60, 0x60).w(FUNC(cliffhgr_state::cliff_port_bank_w));
map(0x62, 0x62).r(FUNC(cliffhgr_state::cliff_port_r));
map(0x64, 0x64).nopw(); /* unused in schematics, may be used as timing delay for IR interface */
@@ -689,18 +689,17 @@ INPUT_PORTS_END
*************************************/
MACHINE_CONFIG_START(cliffhgr_state::cliffhgr)
- Z80(config, m_maincpu, 4000000); /* 4MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &cliffhgr_state::mainmem);
- m_maincpu->set_addrmap(AS_IO, &cliffhgr_state::mainport);
+
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4MHz */
+ MCFG_DEVICE_PROGRAM_MAP(mainmem)
+ MCFG_DEVICE_IO_MAP(mainport)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- PIONEER_PR8210(config, m_laserdisc, 0);
- m_laserdisc->set_overlay(tms9928a_device::TOTAL_HORZ, tms9928a_device::TOTAL_VERT_NTSC, "tms9928a", FUNC(tms9928a_device::screen_update));
- m_laserdisc->set_overlay_clip(tms9928a_device::HORZ_DISPLAY_START-12, tms9928a_device::HORZ_DISPLAY_START+32*8+12-1, tms9928a_device::VERT_DISPLAY_START_NTSC - 12, tms9928a_device::VERT_DISPLAY_START_NTSC+24*8+12-1);
- m_laserdisc->add_route(0, "lspeaker", 1.0);
- m_laserdisc->add_route(1, "rspeaker", 1.0);
+ MCFG_LASERDISC_PR8210_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY_DEVICE(tms9928a_device::TOTAL_HORZ, tms9928a_device::TOTAL_VERT_NTSC, "tms9928a", tms9928a_device, screen_update)
+ MCFG_LASERDISC_OVERLAY_CLIP(tms9928a_device::HORZ_DISPLAY_START-12, tms9928a_device::HORZ_DISPLAY_START+32*8+12-1, tms9928a_device::VERT_DISPLAY_START_NTSC - 12, tms9928a_device::VERT_DISPLAY_START_NTSC+24*8+12-1)
/* start with the TMS9928a video configuration */
tms9128_device &vdp(TMS9128(config, "tms9928a", XTAL(10'738'635))); /* TMS9128NL on the board */
@@ -714,7 +713,12 @@ MACHINE_CONFIG_START(cliffhgr_state::cliffhgr)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- DISCRETE(config, m_discrete, cliffhgr_discrete).add_route(ALL_OUTPUTS, "lspeaker", 1.0);
+ MCFG_DEVICE_MODIFY("laserdisc")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+
+ MCFG_DEVICE_ADD("discrete", DISCRETE, cliffhgr_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/clowndwn.cpp b/src/mame/drivers/clowndwn.cpp
index e31862cef12..2fe069950f8 100644
--- a/src/mame/drivers/clowndwn.cpp
+++ b/src/mame/drivers/clowndwn.cpp
@@ -56,21 +56,21 @@ void clowndwn_state::machine_reset()
}
-void clowndwn_state::clowndwn(machine_config &config)
-{
+MACHINE_CONFIG_START(clowndwn_state::clowndwn)
+
/* basic machine hardware */
- M6802(config, m_maincpu, 8000000); // unknown type and clock
- m_maincpu->set_addrmap(AS_PROGRAM, &clowndwn_state::clowndwn_map);
+ MCFG_DEVICE_ADD("maincpu", M6802, 8000000) // unknown type and clock
+ MCFG_DEVICE_PROGRAM_MAP(clowndwn_map)
- PIA6821(config, "pia0", 0);
- PIA6821(config, "pia1", 0);
- PIA6821(config, "pia2", 0);
- PIA6821(config, "pia3", 0);
- PIA6821(config, "pia4", 0);
+ MCFG_DEVICE_ADD("pia0", PIA6821, 0)
+ MCFG_DEVICE_ADD("pia1", PIA6821, 0)
+ MCFG_DEVICE_ADD("pia2", PIA6821, 0)
+ MCFG_DEVICE_ADD("pia3", PIA6821, 0)
+ MCFG_DEVICE_ADD("pia4", PIA6821, 0)
/* sound hardware */
SPEAKER(config, "mono").front_center();
-}
+MACHINE_CONFIG_END
// has
diff --git a/src/mame/drivers/clpoker.cpp b/src/mame/drivers/clpoker.cpp
index 71f1c76c27a..587e946bdfc 100644
--- a/src/mame/drivers/clpoker.cpp
+++ b/src/mame/drivers/clpoker.cpp
@@ -253,12 +253,11 @@ static GFXDECODE_START( gfx_clpoker )
GFXDECODE_END
-void clpoker_state::clpoker(machine_config &config)
-{
+MACHINE_CONFIG_START(clpoker_state::clpoker)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000) / 3); // Z0840004PSC, divider not verified
- m_maincpu->set_addrmap(AS_PROGRAM, &clpoker_state::prg_map);
- m_maincpu->set_addrmap(AS_IO, &clpoker_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000) / 3) // Z0840004PSC, divider not verified
+ MCFG_DEVICE_PROGRAM_MAP(prg_map)
+ MCFG_DEVICE_IO_MAP(io_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // HY6116ALP-12
@@ -272,22 +271,22 @@ void clpoker_state::clpoker(machine_config &config)
ppi_inputs.in_pb_callback().set_ioport("INB");
ppi_inputs.in_pc_callback().set_ioport("INC");
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(60), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(60), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60); // wrong
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); // wrong
- screen.set_size(64*8, 32*8); // wrong
- screen.set_visarea_full(); // probably right
- screen.set_screen_update(FUNC(clpoker_state::screen_update));
- screen.set_palette("palette");
- screen.screen_vblank().set(FUNC(clpoker_state::vblank_w));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60) // wrong
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) // wrong
+ MCFG_SCREEN_SIZE(64*8, 32*8) // wrong
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1) // probably right
+ MCFG_SCREEN_UPDATE_DRIVER(clpoker_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, clpoker_state, vblank_w))
- PALETTE(config, "palette").set_entries(0x100);
+ MCFG_PALETTE_ADD("palette", 0x100)
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, "palette")); // HM86171
ramdac.set_addrmap(0, &clpoker_state::ramdac_map);
- GFXDECODE(config, m_gfxdecode, "palette", gfx_clpoker);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_clpoker)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -295,7 +294,7 @@ void clpoker_state::clpoker(machine_config &config)
aysnd.port_a_read_callback().set_ioport("DSW1");
aysnd.port_b_read_callback().set_ioport("DSW2");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+MACHINE_CONFIG_END
ROM_START( clpoker )
diff --git a/src/mame/drivers/clshroad.cpp b/src/mame/drivers/clshroad.cpp
index f908f05a46b..4c443919ac8 100644
--- a/src/mame/drivers/clshroad.cpp
+++ b/src/mame/drivers/clshroad.cpp
@@ -272,16 +272,16 @@ INTERRUPT_GEN_MEMBER(clshroad_state::sound_timer_irq)
device.execute().set_input_line(0, HOLD_LINE);
}
-void clshroad_state::firebatl(machine_config &config)
-{
+MACHINE_CONFIG_START(clshroad_state::firebatl)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLOCK); /* ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &clshroad_state::clshroad_map);
- m_maincpu->set_vblank_int("screen", FUNC(clshroad_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CLOCK) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(clshroad_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", clshroad_state, vblank_irq)
- Z80(config, m_audiocpu, MAIN_CLOCK); /* ? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &clshroad_state::clshroad_sound_map);
- m_audiocpu->set_periodic_int(FUNC(clshroad_state::sound_timer_irq), attotime::from_hz(120)); /* periodic interrupt, don't know about the frequency */
+ MCFG_DEVICE_ADD("audiocpu", Z80, MAIN_CLOCK) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(clshroad_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(clshroad_state, sound_timer_irq, 120) /* periodic interrupt, don't know about the frequency */
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set_inputline(m_audiocpu, INPUT_LINE_RESET).invert();
@@ -290,13 +290,13 @@ void clshroad_state::firebatl(machine_config &config)
mainlatch.q_out_cb<4>().set(FUNC(clshroad_state::flipscreen_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(0x120, 0x100);
- screen.set_visarea(0, 0x120-1, 0x0+16, 0x100-16-1);
- screen.set_screen_update(FUNC(clshroad_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x120, 0x100)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x120-1, 0x0+16, 0x100-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(clshroad_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_firebatl);
PALETTE(config, m_palette, FUNC(clshroad_state::firebatl_palette), 512+64*4, 256);
@@ -306,20 +306,21 @@ void clshroad_state::firebatl(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WIPING_CUSTOM(config, "custom", 96000).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("custom", WIPING_CUSTOM, 96000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(clshroad_state::clshroad)
-void clshroad_state::clshroad(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLOCK); /* ? real speed unknown. 3MHz is too low and causes problems */
- m_maincpu->set_addrmap(AS_PROGRAM, &clshroad_state::clshroad_map);
- m_maincpu->set_vblank_int("screen", FUNC(clshroad_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CLOCK) /* ? real speed unknown. 3MHz is too low and causes problems */
+ MCFG_DEVICE_PROGRAM_MAP(clshroad_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", clshroad_state, vblank_irq)
- Z80(config, m_audiocpu, MAIN_CLOCK); /* ? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &clshroad_state::clshroad_sound_map);
- //m_audiocpu->set_vblank_int("screen", FUNC(clshroad_state::irq0_line_hold)); /* IRQ, no NMI */
- m_audiocpu->set_periodic_int(FUNC(clshroad_state::sound_timer_irq), attotime::from_hz(60)); /* periodic interrupt, don't know about the frequency */
+ MCFG_DEVICE_ADD("audiocpu", Z80, MAIN_CLOCK) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(clshroad_sound_map)
+ //MCFG_DEVICE_VBLANK_INT_DRIVER("screen", clshroad_state, irq0_line_hold) /* IRQ, no NMI */
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(clshroad_state, sound_timer_irq, 60) /* periodic interrupt, don't know about the frequency */
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set_nop(); // never writes here?
@@ -328,13 +329,13 @@ void clshroad_state::clshroad(machine_config &config)
mainlatch.q_out_cb<4>().set(FUNC(clshroad_state::flipscreen_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(0x120, 0x100);
- screen.set_visarea(0, 0x120-1, 0x0+16, 0x100-16-1);
- screen.set_screen_update(FUNC(clshroad_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x120, 0x100)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x120-1, 0x0+16, 0x100-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(clshroad_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_clshroad);
PALETTE(config, m_palette, FUNC(clshroad_state::clshroad_palette), 256);
@@ -344,8 +345,9 @@ void clshroad_state::clshroad(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WIPING_CUSTOM(config, "custom", 96000).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("custom", WIPING_CUSTOM, 96000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/cm1800.cpp b/src/mame/drivers/cm1800.cpp
index f89a09c66d8..9307be3cd83 100644
--- a/src/mame/drivers/cm1800.cpp
+++ b/src/mame/drivers/cm1800.cpp
@@ -36,7 +36,6 @@ to be a save command.
#include "emu.h"
#include "cpu/i8085/i8085.h"
#include "machine/ay31015.h"
-#include "machine/clock.h"
#include "bus/rs232/rs232.h"
@@ -107,14 +106,12 @@ void cm1800_state::cm1800(machine_config &config)
/* video hardware */
AY51013(config, m_uart); // exact uart type is unknown
+ m_uart->set_tx_clock(153600);
+ m_uart->set_rx_clock(153600);
m_uart->read_si_callback().set("rs232", FUNC(rs232_port_device::rxd_r));
m_uart->write_so_callback().set("rs232", FUNC(rs232_port_device::write_txd));
m_uart->set_auto_rdav(true);
- clock_device &uart_clock(CLOCK(config, "uart_clock", 153600));
- uart_clock.signal_handler().set(m_uart, FUNC(ay31015_device::write_tcp));
- uart_clock.signal_handler().append(m_uart, FUNC(ay31015_device::write_rcp));
-
RS232_PORT(config, "rs232", default_rs232_devices, "terminal");
}
diff --git a/src/mame/drivers/cmi.cpp b/src/mame/drivers/cmi.cpp
index 148e0386fd8..cb7cbc5eca0 100644
--- a/src/mame/drivers/cmi.cpp
+++ b/src/mame/drivers/cmi.cpp
@@ -1519,7 +1519,7 @@ READ8_MEMBER( cmi_state::cmi02_r )
{
if (ch_mask & (1 << i))
{
- return m_channels[i]->read(offset & 0x1f);
+ return m_channels[i]->read(space, offset & 0x1f, 0xff);
}
}
@@ -1530,7 +1530,7 @@ READ8_MEMBER( cmi_state::cmi02_r )
switch (offset)
{
case 0x20: case 0x21: case 0x22: case 0x23:
- return m_cmi02_pia[0]->read(offset & 3);
+ return m_cmi02_pia[0]->read(space, offset & 3);
case 0x26:
m_maincpu2->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
@@ -1543,10 +1543,10 @@ READ8_MEMBER( cmi_state::cmi02_r )
return 0xff;
case 0x28: case 0x29: case 0x2a: case 0x2b:
- return m_cmi02_pia[1]->read(offset & 3);
+ return m_cmi02_pia[1]->read(space, offset & 3);
case 0x38: case 0x39: case 0x3a: case 0x3b: case 0x3c: case 0x3d: case 0x3e: case 0x3f:
- return m_cmi02_ptm->read(offset & 7);
+ return m_cmi02_ptm->read(space, offset & 7);
default:
logerror("CMI02 R: %x\n", offset);
@@ -1564,7 +1564,7 @@ WRITE8_MEMBER( cmi_state::cmi02_w )
for (int i = 0; i < 8; ++i)
{
if (ch_mask & (1 << i))
- m_channels[i]->write(offset & 0x1f, data);
+ m_channels[i]->write(space, offset & 0x1f, data, 0xff);
}
}
else
@@ -1572,11 +1572,11 @@ WRITE8_MEMBER( cmi_state::cmi02_w )
switch (offset)
{
case 0x20: case 0x21: case 0x22: case 0x23:
- m_cmi02_pia[0]->write(offset & 3, data);
+ m_cmi02_pia[0]->write(space, offset & 3, data);
break;
case 0x28: case 0x29: case 0x2a: case 0x2b:
- m_cmi02_pia[1]->write(offset & 3, data);
+ m_cmi02_pia[1]->write(space, offset & 3, data);
break;
case 0x30:
@@ -1595,7 +1595,7 @@ WRITE8_MEMBER( cmi_state::cmi02_w )
break;
case 0x38: case 0x39: case 0x3a: case 0x3b: case 0x3c: case 0x3d: case 0x3e: case 0x3f:
- m_cmi02_ptm->write(offset & 7, data);
+ m_cmi02_ptm->write(space, offset & 7, data);
break;
default:
@@ -1674,22 +1674,22 @@ void cmi_state::install_peripherals(int cpunum)
else
space->install_readwrite_handler(0xfc5f, 0xfc5f, read8_delegate(FUNC(cmi_state::map_r<0>),this), write8_delegate(FUNC(cmi_state::map_w<0>),this));
- space->install_readwrite_handler(0xfc80, 0xfc83, read8sm_delegate(FUNC(mos6551_device::read),m_q133_acia[0].target()), write8sm_delegate(FUNC(mos6551_device::write),m_q133_acia[0].target()));
- space->install_readwrite_handler(0xfc84, 0xfc87, read8sm_delegate(FUNC(mos6551_device::read),m_q133_acia[1].target()), write8sm_delegate(FUNC(mos6551_device::write),m_q133_acia[1].target()));
- space->install_readwrite_handler(0xfc88, 0xfc8b, read8sm_delegate(FUNC(mos6551_device::read),m_q133_acia[2].target()), write8sm_delegate(FUNC(mos6551_device::write),m_q133_acia[2].target()));
- space->install_readwrite_handler(0xfc8c, 0xfc8f, read8sm_delegate(FUNC(mos6551_device::read),m_q133_acia[3].target()), write8sm_delegate(FUNC(mos6551_device::write),m_q133_acia[3].target()));
- space->install_readwrite_handler(0xfc90, 0xfc97, read8sm_delegate(FUNC(ptm6840_device::read),m_q133_ptm.target()), write8sm_delegate(FUNC(ptm6840_device::write),m_q133_ptm.target()));
+ space->install_readwrite_handler(0xfc80, 0xfc83, read8_delegate(FUNC(mos6551_device::read),m_q133_acia[0].target()), write8_delegate(FUNC(mos6551_device::write),m_q133_acia[0].target()));
+ space->install_readwrite_handler(0xfc84, 0xfc87, read8_delegate(FUNC(mos6551_device::read),m_q133_acia[1].target()), write8_delegate(FUNC(mos6551_device::write),m_q133_acia[1].target()));
+ space->install_readwrite_handler(0xfc88, 0xfc8b, read8_delegate(FUNC(mos6551_device::read),m_q133_acia[2].target()), write8_delegate(FUNC(mos6551_device::write),m_q133_acia[2].target()));
+ space->install_readwrite_handler(0xfc8c, 0xfc8f, read8_delegate(FUNC(mos6551_device::read),m_q133_acia[3].target()), write8_delegate(FUNC(mos6551_device::write),m_q133_acia[3].target()));
+ space->install_readwrite_handler(0xfc90, 0xfc97, read8_delegate(FUNC(ptm6840_device::read),m_q133_ptm.target()), write8_delegate(FUNC(ptm6840_device::write),m_q133_ptm.target()));
space->install_readwrite_handler(0xfcbc, 0xfcbc, read8_delegate(FUNC(cmi_state::cmi07_r),this), write8_delegate(FUNC(cmi_state::cmi07_w),this));
space->install_read_handler(0xfcc0, 0xfcc3, read8_delegate(FUNC(cmi_state::lightpen_r),this));
- space->install_readwrite_handler(0xfcc4, 0xfcc7, read8sm_delegate(FUNC(pia6821_device::read),m_q219_pia.target()), write8sm_delegate(FUNC(pia6821_device::write),m_q219_pia.target()));
- space->install_readwrite_handler(0xfcc8, 0xfccf, read8sm_delegate(FUNC(ptm6840_device::read),m_q219_ptm.target()), write8sm_delegate(FUNC(ptm6840_device::write),m_q219_ptm.target()));
+ space->install_readwrite_handler(0xfcc4, 0xfcc7, read8_delegate(FUNC(pia6821_device::read),m_q219_pia.target()), write8_delegate(FUNC(pia6821_device::write),m_q219_pia.target()));
+ space->install_readwrite_handler(0xfcc8, 0xfccf, read8_delegate(FUNC(ptm6840_device::read),m_q219_ptm.target()), write8_delegate(FUNC(ptm6840_device::write),m_q219_ptm.target()));
space->install_readwrite_handler(0xfcd0, 0xfcdc, read8_delegate(FUNC(cmi_state::video_r),this), write8_delegate(FUNC(cmi_state::video_w),this));
space->install_readwrite_handler(0xfce0, 0xfce1, read8_delegate(FUNC(cmi_state::fdc_r),this), write8_delegate(FUNC(cmi_state::fdc_w),this));
space->nop_readwrite(0xfce2, 0xfcef); // Monitor ROM will attempt to detect floppy disk controller cards in this entire range
- space->install_readwrite_handler(0xfcf0, 0xfcf7, read8sm_delegate(FUNC(pia6821_device::read),m_q133_pia[0].target()), write8sm_delegate(FUNC(pia6821_device::write),m_q133_pia[0].target()));
- space->install_readwrite_handler(0xfcf8, 0xfcff, read8sm_delegate(FUNC(pia6821_device::read),m_q133_pia[1].target()), write8sm_delegate(FUNC(pia6821_device::write),m_q133_pia[1].target()));
+ space->install_readwrite_handler(0xfcf0, 0xfcf7, read8_delegate(FUNC(pia6821_device::read),m_q133_pia[0].target()), write8_delegate(FUNC(pia6821_device::write),m_q133_pia[0].target()));
+ space->install_readwrite_handler(0xfcf8, 0xfcff, read8_delegate(FUNC(pia6821_device::read),m_q133_pia[1].target()), write8_delegate(FUNC(pia6821_device::write),m_q133_pia[1].target()));
space->install_write_handler(0xfcfc, 0xfcfc, write8_delegate(FUNC(cmi_state::i8214_cpu1_w),this));
space->install_write_handler(0xfcfd, 0xfcfd, write8_delegate(FUNC(cmi_state::i8214_cpu2_w),this));
@@ -2158,44 +2158,43 @@ static void cmi2x_floppies(device_slot_interface &device)
device.option_add("8dssd", FLOPPY_8_DSSD);
}
-void cmi_state::cmi2x(machine_config &config)
-{
- MC6809E(config, m_maincpu1, Q209_CPU_CLOCK);
- m_maincpu1->set_addrmap(AS_PROGRAM, &cmi_state::maincpu1_map);
- m_maincpu1->set_irq_acknowledge_callback(FUNC(cmi_state::cpu1_interrupt_callback));
- config.m_perfect_cpu_quantum = subtag("maincpu1");
+MACHINE_CONFIG_START(cmi_state::cmi2x)
+ MCFG_DEVICE_ADD("maincpu1", MC6809E, Q209_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(maincpu1_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cmi_state, cpu1_interrupt_callback)
+ MCFG_QUANTUM_PERFECT_CPU("maincpu1")
- MC6809E(config, m_maincpu2, Q209_CPU_CLOCK);
- m_maincpu2->set_addrmap(AS_PROGRAM, &cmi_state::maincpu2_map);
- m_maincpu2->set_irq_acknowledge_callback(FUNC(cmi_state::cpu2_interrupt_callback));
- config.m_perfect_cpu_quantum = subtag("maincpu2");
+ MCFG_DEVICE_ADD("maincpu2", MC6809E, Q209_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(maincpu2_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cmi_state, cpu2_interrupt_callback)
+ MCFG_QUANTUM_PERFECT_CPU("maincpu2")
- M6802(config, m_muskeyscpu, 4_MHz_XTAL);
- m_muskeyscpu->set_addrmap(AS_PROGRAM, &cmi_state::muskeys_map);
+ MCFG_DEVICE_ADD("muskeys", M6802, 4_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(muskeys_map)
- M6802(config, m_alphakeyscpu, 3.84_MHz_XTAL);
- m_alphakeyscpu->set_addrmap(AS_PROGRAM, &cmi_state::alphakeys_map);
- m_alphakeyscpu->set_periodic_int(FUNC(cmi_state::irq0_line_hold), attotime::from_hz(3.84_MHz_XTAL / 400)); // TODO: PIA controls this
+ MCFG_DEVICE_ADD("alphakeys", M6802, 3.84_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(alphakeys_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(cmi_state, irq0_line_hold, 3.84_MHz_XTAL / 400) // TODO: PIA controls this
- M68000(config, m_midicpu, 20_MHz_XTAL / 2);
- m_midicpu->set_addrmap(AS_PROGRAM, &cmi_state::midicpu_map);
+ MCFG_DEVICE_ADD("smptemidi", M68000, 20_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(midicpu_map)
- MC6809E(config, m_cmi07cpu, Q209_CPU_CLOCK); // ?
- m_cmi07cpu->set_addrmap(AS_PROGRAM, &cmi_state::cmi07cpu_map);
+ MCFG_DEVICE_ADD("cmi07cpu", MC6809E, Q209_CPU_CLOCK) // ?
+ MCFG_DEVICE_PROGRAM_MAP(cmi07cpu_map)
/* alpha-numeric display */
- DL1416T(config, m_dp1, u32(0));
- m_dp1->update().set(FUNC(cmi_state::cmi_iix_update_dp<0>));
- DL1416T(config, m_dp2, u32(0));
- m_dp2->update().set(FUNC(cmi_state::cmi_iix_update_dp<1>));
- DL1416T(config, m_dp3, u32(0));
- m_dp3->update().set(FUNC(cmi_state::cmi_iix_update_dp<2>));
+ MCFG_DEVICE_ADD("dp1", DL1416T, u32(0))
+ MCFG_DL1416_UPDATE_HANDLER(WRITE16(*this, cmi_state, cmi_iix_update_dp<0>))
+ MCFG_DEVICE_ADD("dp2", DL1416T, u32(0))
+ MCFG_DL1416_UPDATE_HANDLER(WRITE16(*this, cmi_state, cmi_iix_update_dp<1>))
+ MCFG_DEVICE_ADD("dp3", DL1416T, u32(0))
+ MCFG_DL1416_UPDATE_HANDLER(WRITE16(*this, cmi_state, cmi_iix_update_dp<2>))
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER, rgb_t::green());
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBLANK_END, HBLANK_START, VTOTAL, VBLANK_END, VBLANK_START);
- m_screen->set_screen_update(FUNC(cmi_state::screen_update_cmi2x));
- m_screen->screen_vblank().set(FUNC(cmi_state::cmi_iix_vblank));
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBLANK_END, HBLANK_START, VTOTAL, VBLANK_END, VBLANK_START)
+ MCFG_SCREEN_UPDATE_DRIVER(cmi_state, screen_update_cmi2x)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cmi_state, cmi_iix_vblank))
PALETTE(config, m_palette, palette_device::MONOCHROME);
@@ -2239,8 +2238,8 @@ void cmi_state::cmi2x(machine_config &config)
m_cmi02_ptm->o2_callback().set(FUNC(cmi_state::cmi02_ptm_o2));
m_cmi02_ptm->irq_callback().set(FUNC(cmi_state::cmi02_ptm_irq));
- clock_device &mkbd_acia_clock(CLOCK(config, "mkbd_acia_clock", 1.8432_MHz_XTAL / 12));
- mkbd_acia_clock.signal_handler().set(FUNC(cmi_state::mkbd_acia_clock));
+ MCFG_DEVICE_ADD("mkbd_acia_clock", CLOCK, 1.8432_MHz_XTAL / 12)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, cmi_state, mkbd_acia_clock))
for (auto &acia : m_q133_acia)
MOS6551(config, acia, 1.8432_MHz_XTAL).set_xtal(1.8432_MHz_XTAL);
@@ -2266,7 +2265,8 @@ void cmi_state::cmi2x(machine_config &config)
m_acia_mkbd_kbd->rts_handler().set("ank_pia", FUNC(pia6821_device::ca2_w));
m_acia_mkbd_kbd->irq_handler().set(FUNC(cmi_state::mkbd_kbd_acia_int));
- INPUT_MERGER_ANY_HIGH(config, "irqs").output_handler().set_inputline(m_alphakeyscpu, M6802_IRQ_LINE);
+ MCFG_INPUT_MERGER_ANY_HIGH("irqs")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("alphakeys", M6802_IRQ_LINE))
m_ank_pia->readpa_handler().set(FUNC(cmi_state::ank_col_r));
m_ank_pia->readcb1_handler().set(FUNC(cmi_state::ank_rts_r));
@@ -2275,8 +2275,8 @@ void cmi_state::cmi2x(machine_config &config)
m_ank_pia->irqa_handler().set("irqs", FUNC(input_merger_device::in_w<0>));
m_ank_pia->irqb_handler().set("irqs", FUNC(input_merger_device::in_w<1>));
- clock_device &ank_pia_clock(CLOCK(config, "ank_pia_clock", 9600));
- ank_pia_clock.signal_handler().set(m_ank_pia, FUNC(pia6821_device::ca1_w));
+ MCFG_DEVICE_ADD("ank_pia_clock", CLOCK, 9600)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE("ank_pia", pia6821_device, ca1_w))
PTM6840(config, m_cmi07_ptm, 2000000); // ptm_cmi07_config TODO
m_cmi07_ptm->irq_callback().set(FUNC(cmi_state::cmi07_irq));
@@ -2284,8 +2284,8 @@ void cmi_state::cmi2x(machine_config &config)
FD1791(config, m_wd1791, 16_MHz_XTAL / 8); // wd1791_interface
m_wd1791->intrq_wr_callback().set(FUNC(cmi_state::wd1791_irq));
m_wd1791->drq_wr_callback().set(FUNC(cmi_state::wd1791_drq));
- FLOPPY_CONNECTOR(config, "wd1791:0", cmi2x_floppies, "8dsdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "wd1791:1", cmi2x_floppies, "8dsdd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("wd1791:0", cmi2x_floppies, "8dsdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1791:1", cmi2x_floppies, "8dsdd", floppy_image_device::default_floppy_formats)
/* Musical keyboard */
PIA6821(config, m_cmi10_pia_u20, 0);
@@ -2325,7 +2325,7 @@ void cmi_state::cmi2x(machine_config &config)
cmi01a_device &cmi01a_7(CMI01A_CHANNEL_CARD(config, "cmi01a_7", 0));
cmi01a_7.add_route(ALL_OUTPUTS, "mono", 0.25);
cmi01a_7.irq_callback().set(FUNC(cmi_state::channel_irq<0>));
-}
+MACHINE_CONFIG_END
ROM_START( cmi2x )
/* Q133 Processor control card */
diff --git a/src/mame/drivers/cmmb.cpp b/src/mame/drivers/cmmb.cpp
index 8b8a811fe07..ecf1a90ca71 100644
--- a/src/mame/drivers/cmmb.cpp
+++ b/src/mame/drivers/cmmb.cpp
@@ -146,12 +146,12 @@ WRITE8_MEMBER(cmmb_state::cmmb_charram_w)
READ8_MEMBER(cmmb_state::flash_r)
{
- return m_flash->read(offset + 0x2000);
+ return m_flash->read(space, offset + 0x2000);
}
WRITE8_MEMBER(cmmb_state::flash_w)
{
- m_flash->write(offset + 0x2000, data);
+ m_flash->write(space, offset + 0x2000, data);
}
READ8_MEMBER(cmmb_state::cmmb_input_r)
@@ -416,31 +416,31 @@ void cmmb_state::machine_reset()
}
-void cmmb_state::cmmb(machine_config &config)
-{
+MACHINE_CONFIG_START(cmmb_state::cmmb)
+
/* basic machine hardware */
- M65SC02(config, m_maincpu, MAIN_CLOCK/5); // Unknown clock, but chip rated for 14MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &cmmb_state::cmmb_map);
- m_maincpu->set_vblank_int("screen", FUNC(cmmb_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", M65SC02, MAIN_CLOCK/5) // Unknown clock, but chip rated for 14MHz
+ MCFG_DEVICE_PROGRAM_MAP(cmmb_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cmmb_state, vblank_irq)
AT29C020(config, "at29c020");
ADDRESS_MAP_BANK(config, "bnk2000").set_map(&cmmb_state::bnk2000_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x8000);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(MAIN_CLOCK/12, 384, 0, 256, 264, 0, 240); // TBD, not real measurements
- screen.set_screen_update(FUNC(cmmb_state::screen_update_cmmb));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK/12, 384, 0, 256, 264, 0, 240) // TBD, not real measurements
+ MCFG_SCREEN_UPDATE_DRIVER(cmmb_state, screen_update_cmmb)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cmmb);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cmmb)
PALETTE(config, m_palette).set_format(palette_device::RGB_332_inverted, 512);
/* sound hardware */
// SPEAKER(config, "mono").front_center();
// AY8910(config, "aysnd", 8000000/4).add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/cms.cpp b/src/mame/drivers/cms.cpp
index 02283669b7d..4d9090a0577 100644
--- a/src/mame/drivers/cms.cpp
+++ b/src/mame/drivers/cms.cpp
@@ -276,7 +276,7 @@ void cms_state::cms6502(machine_config &config)
/* 7 Slot Backplane */
ACORN_BUS(config, m_bus, 0);
- m_bus->set_space(m_maincpu, AS_PROGRAM);
+ m_bus->set_cputag(m_maincpu);
m_bus->out_irq_callback().set(m_irqs, FUNC(input_merger_device::in_w<1>));
m_bus->out_nmi_callback().set(FUNC(cms_state::bus_nmi_w));
ACORN_BUS_SLOT(config, "bus1", m_bus, cms_bus_devices, "4080term");
diff --git a/src/mame/drivers/cninja.cpp b/src/mame/drivers/cninja.cpp
index 5bd7276e6ca..6f2b1e92b90 100644
--- a/src/mame/drivers/cninja.cpp
+++ b/src/mame/drivers/cninja.cpp
@@ -791,11 +791,11 @@ MACHINE_RESET_MEMBER(cninja_state,robocop2)
m_priority = 0;
}
-void cninja_state::cninja(machine_config &config)
-{
+MACHINE_CONFIG_START(cninja_state::cninja)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cninja_state::cninja_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(cninja_map)
h6280_device &audiocpu(H6280(config, m_audiocpu, XTAL(32'220'000) / 8));
audiocpu.set_addrmap(AS_PROGRAM, &cninja_state::sound_map);
@@ -808,15 +808,15 @@ void cninja_state::cninja(machine_config &config)
irq.vblank_irq_callback().set_inputline(m_maincpu, 5);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(24'000'000) / 4, 376, 0, 256, 274, 8, 248);
- m_screen->set_screen_update(FUNC(cninja_state::screen_update_cninja));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(24'000'000) / 4, 376, 0, 256, 274, 8, 248)
+ MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_cninja)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cninja);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cninja)
PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 2048);
- BUFFERED_SPRITERAM16(config, m_spriteram[0]);
+ MCFG_DEVICE_ADD("spriteram1", BUFFERED_SPRITERAM16)
DECO16IC(config, m_deco_tilegen[0], 0);
m_deco_tilegen[0]->set_split(1);
@@ -863,7 +863,8 @@ void cninja_state::cninja(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM2203(config, "ym1", XTAL(32'220'000) / 8).add_route(ALL_OUTPUTS, "mono", 0.60);
+ MCFG_DEVICE_ADD("ym1", YM2203, XTAL(32'220'000) / 8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000) / 9));
ym2.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
@@ -871,20 +872,22 @@ void cninja_state::cninja(machine_config &config)
ym2.add_route(0, "mono", 0.45);
ym2.add_route(1, "mono", 0.45);
- OKIM6295(config, "oki1", XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.75);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
- OKIM6295(config, m_oki2, XTAL(32'220'000) / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(32'220'000) / 16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+MACHINE_CONFIG_END
-void cninja_state::stoneage(machine_config &config)
-{
+MACHINE_CONFIG_START(cninja_state::stoneage)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cninja_state::cninja_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(cninja_map)
- Z80(config, m_audiocpu, 3579545);
- m_audiocpu->set_addrmap(AS_PROGRAM, &cninja_state::stoneage_s_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 3579545)
+ MCFG_DEVICE_PROGRAM_MAP(stoneage_s_map)
deco_irq_device &irq(DECO_IRQ(config, "irq", 0));
irq.set_screen_tag(m_screen);
@@ -893,17 +896,17 @@ void cninja_state::stoneage(machine_config &config)
irq.vblank_irq_callback().set_inputline(m_maincpu, 5);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(24'000'000) / 4, 376, 0, 256, 274, 8, 248);
- m_screen->set_screen_update(FUNC(cninja_state::screen_update_cninja));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(24'000'000) / 4, 376, 0, 256, 274, 8, 248)
+ MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_cninja)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cninja);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cninja)
PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 2048);
MCFG_VIDEO_START_OVERRIDE(cninja_state,stoneage)
- BUFFERED_SPRITERAM16(config, m_spriteram[0]);
+ MCFG_DEVICE_ADD("spriteram1", BUFFERED_SPRITERAM16)
DECO16IC(config, m_deco_tilegen[0], 0);
m_deco_tilegen[0]->set_split(1);
@@ -955,33 +958,35 @@ void cninja_state::stoneage(machine_config &config)
ymsnd.add_route(0, "mono", 0.45);
ymsnd.add_route(1, "mono", 0.45);
- OKIM6295(config, "oki1", XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.75);
-}
+ MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+MACHINE_CONFIG_END
-void cninja_state::cninjabl2(machine_config &config)
-{
+MACHINE_CONFIG_START(cninja_state::cninjabl2)
stoneage(config);
- m_audiocpu->set_addrmap(AS_PROGRAM, &cninja_state::cninjabl2_s_map);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(cninjabl2_s_map)
- m_screen->set_screen_update(FUNC(cninja_state::screen_update_cninjabl2));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_cninjabl2)
m_ioprot->soundlatch_irq_cb().set_inputline(m_audiocpu, INPUT_LINE_IRQ0);
- config.device_remove("ymsnd");
+ MCFG_DEVICE_REMOVE("ymsnd")
- okim6295_device &oki1(OKIM6295(config.replace(), "oki1", XTAL(32'220'000) / 32, okim6295_device::PIN7_LOW));
- oki1.add_route(ALL_OUTPUTS, "mono", 1.0);
- oki1.set_addrmap(0, &cninja_state::cninjabl2_oki_map);
-}
+ MCFG_DEVICE_REPLACE("oki1", OKIM6295, XTAL(32'220'000) / 32, okim6295_device::PIN7_LOW)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, cninjabl2_oki_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(cninja_state::cninjabl)
-void cninja_state::cninjabl(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cninja_state::cninjabl_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(cninjabl_map)
- Z80(config, m_audiocpu, 3579545);
- m_audiocpu->set_addrmap(AS_PROGRAM, &cninja_state::cninjabl_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 3579545)
+ MCFG_DEVICE_PROGRAM_MAP(cninjabl_sound_map)
deco_irq_device &irq(DECO_IRQ(config, "irq", 0));
irq.set_screen_tag(m_screen);
@@ -990,15 +995,15 @@ void cninja_state::cninjabl(machine_config &config)
irq.vblank_irq_callback().set_inputline(m_maincpu, 5);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(24'000'000) / 4, 376, 0, 256, 274, 8, 248);
- m_screen->set_screen_update(FUNC(cninja_state::screen_update_cninjabl));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(24'000'000) / 4, 376, 0, 256, 274, 8, 248)
+ MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_cninjabl)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cninjabl);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cninjabl)
PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 2048);
- BUFFERED_SPRITERAM16(config, m_spriteram[0]);
+ MCFG_DEVICE_ADD("spriteram1", BUFFERED_SPRITERAM16)
DECO16IC(config, m_deco_tilegen[0], 0);
m_deco_tilegen[0]->set_split(1);
@@ -1041,15 +1046,16 @@ void cninja_state::cninjabl(machine_config &config)
ymsnd.add_route(0, "mono", 0.45);
ymsnd.add_route(1, "mono", 0.45);
- OKIM6295(config, "oki1", XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.75);
-}
+ MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+MACHINE_CONFIG_END
-void cninja_state::edrandy(machine_config &config)
-{
+MACHINE_CONFIG_START(cninja_state::edrandy)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cninja_state::edrandy_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(edrandy_map)
h6280_device &audiocpu(H6280(config, m_audiocpu, XTAL(32'220'000) / 8));
audiocpu.set_addrmap(AS_PROGRAM, &cninja_state::sound_map);
@@ -1062,15 +1068,15 @@ void cninja_state::edrandy(machine_config &config)
irq.vblank_irq_callback().set_inputline(m_maincpu, 5);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(24'000'000) / 4, 376, 0, 256, 274, 8, 248);
- m_screen->set_screen_update(FUNC(cninja_state::screen_update_edrandy));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(24'000'000) / 4, 376, 0, 256, 274, 8, 248)
+ MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_edrandy)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cninja);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cninja)
PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 2048);
- BUFFERED_SPRITERAM16(config, m_spriteram[0]);
+ MCFG_DEVICE_ADD("spriteram1", BUFFERED_SPRITERAM16)
DECO16IC(config, m_deco_tilegen[0], 0);
m_deco_tilegen[0]->set_split(0);
@@ -1116,7 +1122,8 @@ void cninja_state::edrandy(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM2203(config, "ym1", XTAL(32'220'000) / 8).add_route(ALL_OUTPUTS, "mono", 0.60);
+ MCFG_DEVICE_ADD("ym1", YM2203, XTAL(32'220'000) / 8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000) / 9));
ym2.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
@@ -1124,17 +1131,19 @@ void cninja_state::edrandy(machine_config &config)
ym2.add_route(0, "mono", 0.45);
ym2.add_route(1, "mono", 0.45);
- OKIM6295(config, "oki1", XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.75);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
- OKIM6295(config, m_oki2, XTAL(32'220'000) / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(32'220'000) / 16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+MACHINE_CONFIG_END
-void cninja_state::robocop2(machine_config &config)
-{
+MACHINE_CONFIG_START(cninja_state::robocop2)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(28'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cninja_state::robocop2_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(28'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(robocop2_map)
h6280_device &audiocpu(H6280(config, m_audiocpu, XTAL(32'220'000) / 8));
audiocpu.set_addrmap(AS_PROGRAM, &cninja_state::sound_map);
@@ -1148,18 +1157,18 @@ void cninja_state::robocop2(machine_config &config)
irq.vblank_irq_callback().set_inputline(m_maincpu, 5);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248);
- m_screen->set_screen_update(FUNC(cninja_state::screen_update_robocop2));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248)
+ MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_robocop2)
+ MCFG_SCREEN_PALETTE(m_palette)
MCFG_MACHINE_START_OVERRIDE(cninja_state,robocop2)
MCFG_MACHINE_RESET_OVERRIDE(cninja_state,robocop2)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_robocop2);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_robocop2)
PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 2048);
- BUFFERED_SPRITERAM16(config, m_spriteram[0]);
+ MCFG_DEVICE_ADD("spriteram1", BUFFERED_SPRITERAM16)
DECO16IC(config, m_deco_tilegen[0], 0);
m_deco_tilegen[0]->set_split(0);
@@ -1208,9 +1217,9 @@ void cninja_state::robocop2(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ym2203_device &ym1(YM2203(config, "ym1", XTAL(32'220'000) / 8));
- ym1.add_route(ALL_OUTPUTS, "lspeaker", 0.60);
- ym1.add_route(ALL_OUTPUTS, "rspeaker", 0.60);
+ MCFG_DEVICE_ADD("ym1", YM2203, XTAL(32'220'000) / 8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60)
ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000) / 9));
ym2.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
@@ -1218,22 +1227,22 @@ void cninja_state::robocop2(machine_config &config)
ym2.add_route(0, "lspeaker", 0.45);
ym2.add_route(1, "rspeaker", 0.45);
- okim6295_device &oki1(OKIM6295(config, "oki1", XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH));
- oki1.add_route(ALL_OUTPUTS, "lspeaker", 0.75);
- oki1.add_route(ALL_OUTPUTS, "rspeaker", 0.75);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75)
- OKIM6295(config, m_oki2, XTAL(32'220'000) / 16, okim6295_device::PIN7_HIGH);
- m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 0.60);
- m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 0.60);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(32'220'000) / 16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60)
+MACHINE_CONFIG_END
-void cninja_state::mutantf(machine_config &config)
-{
+MACHINE_CONFIG_START(cninja_state::mutantf)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(28'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cninja_state::mutantf_map);
- m_maincpu->set_vblank_int("screen", FUNC(cninja_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(28'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(mutantf_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cninja_state, irq6_line_hold)
h6280_device &audiocpu(H6280(config, m_audiocpu, XTAL(32'220'000) / 8));
audiocpu.set_addrmap(AS_PROGRAM, &cninja_state::sound_map_mutantf);
@@ -1241,19 +1250,19 @@ void cninja_state::mutantf(machine_config &config)
audiocpu.add_route(ALL_OUTPUTS, "rspeaker", 0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248); // same as robocop2? verify this from real pcb
- m_screen->set_screen_update(FUNC(cninja_state::screen_update_mutantf));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248) // same as robocop2? verify this from real pcb
+ MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_mutantf)
MCFG_MACHINE_START_OVERRIDE(cninja_state,robocop2)
MCFG_MACHINE_RESET_OVERRIDE(cninja_state,robocop2)
MCFG_VIDEO_START_OVERRIDE(cninja_state,mutantf)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_mutantf);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mutantf)
PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 2048);
- BUFFERED_SPRITERAM16(config, m_spriteram[0]);
- BUFFERED_SPRITERAM16(config, m_spriteram[1]);
+ MCFG_DEVICE_ADD("spriteram1", BUFFERED_SPRITERAM16)
+ MCFG_DEVICE_ADD("spriteram2", BUFFERED_SPRITERAM16)
DECO16IC(config, m_deco_tilegen[0], 0);
m_deco_tilegen[0]->set_split(0);
@@ -1311,14 +1320,14 @@ void cninja_state::mutantf(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.45);
ymsnd.add_route(1, "rspeaker", 0.45);
- okim6295_device &oki1(OKIM6295(config, "oki1", XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH));
- oki1.add_route(ALL_OUTPUTS, "lspeaker", 0.75);
- oki1.add_route(ALL_OUTPUTS, "rspeaker", 0.75);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75)
- OKIM6295(config, m_oki2, XTAL(32'220'000) / 16, okim6295_device::PIN7_HIGH);
- m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 0.60);
- m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 0.60);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(32'220'000) / 16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60)
+MACHINE_CONFIG_END
/**********************************************************************************/
diff --git a/src/mame/drivers/cntsteer.cpp b/src/mame/drivers/cntsteer.cpp
index 8c51d520398..5e79d57521d 100644
--- a/src/mame/drivers/cntsteer.cpp
+++ b/src/mame/drivers/cntsteer.cpp
@@ -919,19 +919,19 @@ MACHINE_RESET_MEMBER(cntsteer_state,cntsteer)
MACHINE_RESET_CALL_MEMBER(zerotrgt);
}
-void cntsteer_state::cntsteer(machine_config &config)
-{
+MACHINE_CONFIG_START(cntsteer_state::cntsteer)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, 2000000); /* MC68B09E */
- m_maincpu->set_addrmap(AS_PROGRAM, &cntsteer_state::cntsteer_cpu1_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, 2000000) /* MC68B09E */
+ MCFG_DEVICE_PROGRAM_MAP(cntsteer_cpu1_map)
- MC6809E(config, m_subcpu, 2000000); /* MC68B09E */
- m_subcpu->set_addrmap(AS_PROGRAM, &cntsteer_state::cntsteer_cpu2_map);
-// m_subcpu->set_disable();
+ MCFG_DEVICE_ADD("subcpu", MC6809E, 2000000) /* MC68B09E */
+ MCFG_DEVICE_PROGRAM_MAP(cntsteer_cpu2_map)
+// MCFG_DEVICE_DISABLE()
- M6502(config, m_audiocpu, 1500000); /* ? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &cntsteer_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(cntsteer_state::sound_interrupt), attotime::from_hz(480));
+ MCFG_DEVICE_ADD("audiocpu", M6502, 1500000) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(cntsteer_state, sound_interrupt, 480)
MCFG_MACHINE_START_OVERRIDE(cntsteer_state,cntsteer)
MCFG_MACHINE_RESET_OVERRIDE(cntsteer_state,cntsteer)
@@ -947,8 +947,8 @@ void cntsteer_state::cntsteer(machine_config &config)
screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI); // ?
screen.screen_vblank().append(FUNC(cntsteer_state::subcpu_vblank_irq)); // ?
- config.m_perfect_cpu_quantum = subtag("maincpu");
- config.m_perfect_cpu_quantum = subtag("subcpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
+ MCFG_QUANTUM_PERFECT_CPU("subcpu")
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cntsteer);
PALETTE(config, m_palette).set_entries(256);
@@ -967,39 +967,38 @@ void cntsteer_state::cntsteer(machine_config &config)
AY8910(config, "ay2", 1500000).add_route(ALL_OUTPUTS, "speaker", 0.5);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(cntsteer_state::zerotrgt)
-void cntsteer_state::zerotrgt(machine_config &config)
-{
/* basic machine hardware */
- MC6809E(config, m_maincpu, 2000000); /* ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &cntsteer_state::gekitsui_cpu1_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, 2000000) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(gekitsui_cpu1_map)
- MC6809E(config, m_subcpu, 2000000); /* ? */
- m_subcpu->set_addrmap(AS_PROGRAM, &cntsteer_state::gekitsui_cpu2_map);
+ MCFG_DEVICE_ADD("subcpu", MC6809E, 2000000) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(gekitsui_cpu2_map)
- M6502(config, m_audiocpu, 1500000); /* ? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &cntsteer_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(cntsteer_state::sound_interrupt), attotime::from_hz(480));
+ MCFG_DEVICE_ADD("audiocpu", M6502, 1500000) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(cntsteer_state, sound_interrupt, 480)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
MCFG_MACHINE_START_OVERRIDE(cntsteer_state,zerotrgt)
MCFG_MACHINE_RESET_OVERRIDE(cntsteer_state,zerotrgt)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(256, 256);
- screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(cntsteer_state::screen_update_zerotrgt));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI); // ?
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cntsteer_state, screen_update_zerotrgt)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) // ?
GFXDECODE(config, m_gfxdecode, m_palette, gfx_zerotrgt);
PALETTE(config, m_palette, FUNC(cntsteer_state::zerotrgt_palette), 256);
@@ -1014,7 +1013,7 @@ void cntsteer_state::zerotrgt(machine_config &config)
AY8910(config, "ay1", 1500000).add_route(ALL_OUTPUTS, "speaker", 0.5);
AY8910(config, "ay2", 1500000).add_route(ALL_OUTPUTS, "speaker", 0.5);
-}
+MACHINE_CONFIG_END
/***************************************************************************/
diff --git a/src/mame/drivers/cobra.cpp b/src/mame/drivers/cobra.cpp
index 035c9ac6ea7..3d358b5edaa 100644
--- a/src/mame/drivers/cobra.cpp
+++ b/src/mame/drivers/cobra.cpp
@@ -3305,23 +3305,25 @@ MACHINE_CONFIG_START(cobra_state::cobra)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(512, 400);
- m_screen->set_visarea_full();
- m_screen->set_screen_update(FUNC(cobra_state::screen_update_cobra));
- PALETTE(config, m_palette).set_entries(65536);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(512, 400)
+ MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 399)
+ MCFG_SCREEN_UPDATE_DRIVER(cobra_state, screen_update_cobra)
+ MCFG_PALETTE_ADD("palette", 65536)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- rf5c400_device &rfsnd(RF5C400(config, "rfsnd", XTAL(16'934'400)));
- rfsnd.add_route(0, "lspeaker", 1.0);
- rfsnd.add_route(1, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("rfsnd", RF5C400, XTAL(16'934'400))
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
- DMADAC(config, m_dmadac[0]).add_route(ALL_OUTPUTS, "lspeaker", 1.0);
+ MCFG_DEVICE_ADD(m_dmadac[0], DMADAC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- DMADAC(config, m_dmadac[1]).add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD(m_dmadac[1], DMADAC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
M48T58(config, "m48t58", 0);
diff --git a/src/mame/drivers/coco12.cpp b/src/mame/drivers/coco12.cpp
index 45e0049cbef..2c4131efb74 100644
--- a/src/mame/drivers/coco12.cpp
+++ b/src/mame/drivers/coco12.cpp
@@ -378,28 +378,27 @@ void t4426_cart(device_slot_interface &device)
}
//-------------------------------------------------
-// machine_config( coco_sound )
+// MACHINE_CONFIG_START( coco_sound )
//-------------------------------------------------
-void coco_state::coco_sound(machine_config &config)
-{
+MACHINE_CONFIG_START(coco_state::coco_sound)
SPEAKER(config, "speaker").front_center();
// 6-bit D/A: R10-15 = 10K, 20K, 40.2K, 80.6K, 162K, 324K (according to parts list); output also controls joysticks
- DAC_6BIT_BINARY_WEIGHTED(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.125);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "sbs", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "sbs", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_6BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.125)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "sbs", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "sbs", -1.0, DAC_VREF_NEG_INPUT)
// Single-bit sound: R22 = 10K
DAC_1BIT(config, "sbs", 0).add_route(ALL_OUTPUTS, "speaker", 0.125);
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.25);
-}
+MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config ( coco_floating )
+// MACHINE_CONFIG ( coco_floating )
//-------------------------------------------------
void coco_state::coco_floating_map(address_map &map)
@@ -427,17 +426,17 @@ static DEVICE_INPUT_DEFAULTS_START( printer )
DEVICE_INPUT_DEFAULTS_END
//-------------------------------------------------
-// machine_config
+// MACHINE_CONFIG
//-------------------------------------------------
-void coco12_state::coco(machine_config &config)
-{
- this->set_clock(XTAL(14'318'181) / 16);
+MACHINE_CONFIG_START(coco12_state::coco)
+ MCFG_DEVICE_MODIFY(":")
+ MCFG_DEVICE_CLOCK(XTAL(14'318'181) / 16)
// basic machine hardware
- MC6809E(config, m_maincpu, DERIVED_CLOCK(1, 1));
- m_maincpu->set_addrmap(AS_PROGRAM, &coco12_state::coco_mem);
- m_maincpu->set_dasm_override(FUNC(coco_state::dasm_override));
+ MCFG_DEVICE_ADD(MAINCPU_TAG, MC6809E, DERIVED_CLOCK(1, 1))
+ MCFG_DEVICE_PROGRAM_MAP(coco_mem)
+ MCFG_DEVICE_DISASSEMBLE_OVERRIDE(coco_state, dasm_override)
// devices
pia6821_device &pia0(PIA6821(config, PIA0_TAG, 0));
@@ -462,11 +461,11 @@ void coco12_state::coco(machine_config &config)
m_sam->res_rd_callback().set(FUNC(coco12_state::sam_read));
// Becker Port device
- COCO_DWSOCK(config, DWSOCK_TAG, 0);
+ MCFG_DEVICE_ADD(DWSOCK_TAG, COCO_DWSOCK, 0)
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(coco_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(coco_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, "printer"));
rs232.dcd_handler().set(PIA1_TAG, FUNC(pia6821_device::ca1_w));
@@ -478,13 +477,12 @@ void coco12_state::coco(machine_config &config)
cartslot.halt_callback().set_inputline(m_maincpu, INPUT_LINE_HALT);
// video hardware
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
+ MCFG_SCREEN_MC6847_NTSC_ADD(SCREEN_TAG, VDG_TAG)
- MC6847_NTSC(config, m_vdg, XTAL(14'318'181) / 4); // VClk output from MC6883
- m_vdg->set_screen("screen");
- m_vdg->hsync_wr_callback().set(FUNC(coco12_state::horizontal_sync));
- m_vdg->fsync_wr_callback().set(FUNC(coco12_state::field_sync));
- m_vdg->input_callback().set(m_sam, FUNC(sam6883_device::display_read));
+ MCFG_DEVICE_ADD(VDG_TAG, MC6847_NTSC, XTAL(14'318'181) / 4) // VClk output from MC6883
+ MCFG_MC6847_HSYNC_CALLBACK(WRITELINE(*this, coco12_state, horizontal_sync))
+ MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(*this, coco12_state, field_sync))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(m_sam, sam6883_device, display_read))
// sound hardware
coco_sound(config);
@@ -496,18 +494,19 @@ void coco12_state::coco(machine_config &config)
coco_floating(config);
// software lists
- SOFTWARE_LIST(config, "coco_cart_list").set_original("coco_cart").set_filter("COCO");
- SOFTWARE_LIST(config, "coco_flop_list").set_original("coco_flop").set_filter("COCO");
- SOFTWARE_LIST(config, "dragon_cart_list").set_compatible("dragon_cart");
-}
-
-void coco12_state::cocoh(machine_config &config)
-{
+ MCFG_SOFTWARE_LIST_ADD("coco_cart_list", "coco_cart")
+ MCFG_SOFTWARE_LIST_FILTER("coco_cart_list", "COCO")
+ MCFG_SOFTWARE_LIST_ADD("coco_flop_list", "coco_flop")
+ MCFG_SOFTWARE_LIST_FILTER("coco_flop_list", "COCO")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("dragon_cart_list", "dragon_cart")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(coco12_state::cocoh)
coco(config);
- HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
- m_maincpu->set_addrmap(AS_PROGRAM, &coco12_state::coco_mem);
+ MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
+ MCFG_DEVICE_PROGRAM_MAP(coco_mem)
m_ram->set_default_size("64K");
-}
+MACHINE_CONFIG_END
void coco12_state::cocoe(machine_config &config)
{
@@ -516,17 +515,16 @@ void coco12_state::cocoe(machine_config &config)
cartslot.cart_callback().set([this] (int state) { cart_w(state != 0); }); // lambda because name is overloaded
cartslot.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
cartslot.halt_callback().set_inputline(m_maincpu, INPUT_LINE_HALT);
- COCO_VHD(config, m_vhd_0, 0, m_maincpu);
- COCO_VHD(config, m_vhd_1, 0, m_maincpu);
+ COCO_VHD(config, m_vhd_0, 0);
+ COCO_VHD(config, m_vhd_1, 0);
}
-void coco12_state::cocoeh(machine_config &config)
-{
+MACHINE_CONFIG_START(coco12_state::cocoeh)
cocoe(config);
- HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
- m_maincpu->set_addrmap(AS_PROGRAM, &coco12_state::coco_mem);
+ MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
+ MCFG_DEVICE_PROGRAM_MAP(coco_mem)
m_ram->set_default_size("64K");
-}
+MACHINE_CONFIG_END
void coco12_state::coco2(machine_config &config)
{
@@ -535,35 +533,32 @@ void coco12_state::coco2(machine_config &config)
cartslot.cart_callback().set([this] (int state) { cart_w(state != 0); }); // lambda because name is overloaded
cartslot.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
cartslot.halt_callback().set_inputline(m_maincpu, INPUT_LINE_HALT);
- COCO_VHD(config, m_vhd_0, 0, m_maincpu);
- COCO_VHD(config, m_vhd_1, 0, m_maincpu);
+ COCO_VHD(config, m_vhd_0, 0);
+ COCO_VHD(config, m_vhd_1, 0);
}
-void coco12_state::coco2h(machine_config &config)
-{
+MACHINE_CONFIG_START(coco12_state::coco2h)
coco2(config);
- HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
- m_maincpu->set_addrmap(AS_PROGRAM, &coco12_state::coco_mem);
+ MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
+ MCFG_DEVICE_PROGRAM_MAP(coco_mem)
m_ram->set_default_size("64K");
-}
+MACHINE_CONFIG_END
-void coco12_state::coco2b(machine_config &config)
-{
+MACHINE_CONFIG_START(coco12_state::coco2b)
coco2(config);
- MC6847T1_NTSC(config.replace(), m_vdg, XTAL(14'318'181) / 4);
- m_vdg->set_screen(SCREEN_TAG);
- m_vdg->hsync_wr_callback().set(FUNC(coco12_state::horizontal_sync));
- m_vdg->fsync_wr_callback().set(FUNC(coco12_state::field_sync));
- m_vdg->input_callback().set(m_sam, FUNC(sam6883_device::display_read));
-}
-
-void coco12_state::coco2bh(machine_config &config)
-{
+ MCFG_DEVICE_REMOVE(VDG_TAG)
+ MCFG_DEVICE_ADD(VDG_TAG, MC6847T1_NTSC, XTAL(14'318'181) / 4)
+ MCFG_MC6847_HSYNC_CALLBACK(WRITELINE(*this, coco12_state, horizontal_sync))
+ MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(*this, coco12_state, field_sync))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(m_sam, sam6883_device, display_read))
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(coco12_state::coco2bh)
coco2b(config);
- HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
- m_maincpu->set_addrmap(AS_PROGRAM, &coco12_state::coco_mem);
+ MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
+ MCFG_DEVICE_PROGRAM_MAP(coco_mem)
m_ram->set_default_size("64K");
-}
+MACHINE_CONFIG_END
void coco12_state::cp400(machine_config &config)
{
diff --git a/src/mame/drivers/coco3.cpp b/src/mame/drivers/coco3.cpp
index 9c985218e0b..d7c8033b195 100644
--- a/src/mame/drivers/coco3.cpp
+++ b/src/mame/drivers/coco3.cpp
@@ -242,14 +242,14 @@ DEVICE_INPUT_DEFAULTS_END
// MACHINE CONFIGURATION
//**************************************************************************
-void coco3_state::coco3(machine_config &config)
-{
- this->set_clock(XTAL(28'636'363) / 32);
+MACHINE_CONFIG_START(coco3_state::coco3)
+ MCFG_DEVICE_MODIFY(":")
+ MCFG_DEVICE_CLOCK(XTAL(28'636'363) / 32)
// basic machine hardware
- MC6809E(config, m_maincpu, DERIVED_CLOCK(1, 1));
- m_maincpu->set_addrmap(AS_PROGRAM, &coco3_state::coco3_mem);
- m_maincpu->set_dasm_override(FUNC(coco_state::dasm_override));
+ MCFG_DEVICE_ADD(MAINCPU_TAG, MC6809E, DERIVED_CLOCK(1, 1))
+ MCFG_DEVICE_PROGRAM_MAP(coco3_mem)
+ MCFG_DEVICE_DISASSEMBLE_OVERRIDE(coco_state, dasm_override)
// devices
pia6821_device &pia0(PIA6821(config, PIA0_TAG, 0));
@@ -271,11 +271,11 @@ void coco3_state::coco3(machine_config &config)
pia1.irqb_handler().set(FUNC(coco_state::pia1_firq_b));
// Becker Port device
- COCO_DWSOCK(config, DWSOCK_TAG, 0);
+ MCFG_DEVICE_ADD(DWSOCK_TAG, COCO_DWSOCK, 0)
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(coco_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(coco_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, "printer"));
rs232.dcd_handler().set(PIA1_TAG, FUNC(pia6821_device::ca1_w));
@@ -286,14 +286,13 @@ void coco3_state::coco3(machine_config &config)
cartslot.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
cartslot.halt_callback().set_inputline(m_maincpu, INPUT_LINE_HALT);
- COCO_VHD(config, m_vhd_0, 0, m_maincpu);
- COCO_VHD(config, m_vhd_1, 0, m_maincpu);
+ COCO_VHD(config, m_vhd_0, 0);
+ COCO_VHD(config, m_vhd_1, 0);
// video hardware
config.set_default_layout(layout_coco3);
GIME_NTSC(config, m_gime, XTAL(28'636'363), MAINCPU_TAG, RAM_TAG, CARTRIDGE_TAG, MAINCPU_TAG);
- m_gime->set_screen(COMPOSITE_SCREEN_TAG);
m_gime->hsync_wr_callback().set(PIA0_TAG, FUNC(pia6821_device::ca1_w));
m_gime->fsync_wr_callback().set(PIA0_TAG, FUNC(pia6821_device::cb1_w));
m_gime->irq_wr_callback().set(FUNC(coco3_state::gime_irq_w));
@@ -301,20 +300,20 @@ void coco3_state::coco3(machine_config &config)
m_gime->floating_bus_rd_callback().set(FUNC(coco3_state::floating_bus_r));
// composite monitor
- screen_device &composite_screen(SCREEN(config, COMPOSITE_SCREEN_TAG, SCREEN_TYPE_RASTER));
- composite_screen.set_refresh_hz(60);
- composite_screen.set_screen_update(FUNC(coco3_state::screen_update));
- composite_screen.set_size(640, 243);
- composite_screen.set_visarea(0, 640-1, 1, 241-1);
- composite_screen.set_vblank_time(0);
+ MCFG_SCREEN_ADD(COMPOSITE_SCREEN_TAG, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_UPDATE_DRIVER(coco3_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 243)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 1, 241-1)
+ MCFG_SCREEN_VBLANK_TIME(0)
// RGB monitor
- screen_device &rgb_screen(SCREEN(config, RGB_SCREEN_TAG, SCREEN_TYPE_RASTER));
- rgb_screen.set_refresh_hz(60);
- rgb_screen.set_screen_update(FUNC(coco3_state::screen_update));
- rgb_screen.set_size(640, 243);
- rgb_screen.set_visarea(0, 640-1, 1, 241-1);
- rgb_screen.set_vblank_time(0);
+ MCFG_SCREEN_ADD(RGB_SCREEN_TAG, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_UPDATE_DRIVER(coco3_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 243)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 1, 241-1)
+ MCFG_SCREEN_VBLANK_TIME(0)
// sound hardware
coco_sound(config);
@@ -326,32 +325,32 @@ void coco3_state::coco3(machine_config &config)
coco_floating(config);
// software lists
- SOFTWARE_LIST(config, "cart_list").set_original("coco_cart").set_filter("COCO3");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","coco_cart")
+ MCFG_SOFTWARE_LIST_FILTER("cart_list","COCO3")
- SOFTWARE_LIST(config, "flop_list").set_original("coco_flop").set_filter("COCO3");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list","coco_flop")
+ MCFG_SOFTWARE_LIST_FILTER("flop_list","COCO3")
+MACHINE_CONFIG_END
-void coco3_state::coco3p(machine_config &config)
-{
+MACHINE_CONFIG_START(coco3_state::coco3p)
coco3(config);
- this->set_clock(XTAL(28'475'000) / 32);
+ MCFG_DEVICE_MODIFY(":")
+ MCFG_DEVICE_CLOCK(XTAL(28'475'000) / 32)
// An additional 4.433618 MHz XTAL is required for PAL color encoding
GIME_PAL(config.replace(), m_gime, XTAL(28'475'000), MAINCPU_TAG, RAM_TAG, CARTRIDGE_TAG, MAINCPU_TAG);
- m_gime->set_screen(COMPOSITE_SCREEN_TAG);
m_gime->hsync_wr_callback().set(PIA0_TAG, FUNC(pia6821_device::ca1_w));
m_gime->fsync_wr_callback().set(PIA0_TAG, FUNC(pia6821_device::cb1_w));
m_gime->irq_wr_callback().set(FUNC(coco3_state::gime_irq_w));
m_gime->firq_wr_callback().set(FUNC(coco3_state::gime_firq_w));
m_gime->floating_bus_rd_callback().set(FUNC(coco3_state::floating_bus_r));
-}
+MACHINE_CONFIG_END
-void coco3_state::coco3h(machine_config &config)
-{
+MACHINE_CONFIG_START(coco3_state::coco3h)
coco3(config);
- HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
- m_maincpu->set_addrmap(AS_PROGRAM, &coco3_state::coco3_mem);
-}
+ MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
+ MCFG_DEVICE_PROGRAM_MAP(coco3_mem)
+MACHINE_CONFIG_END
void coco3_state::coco3dw1(machine_config &config)
{
diff --git a/src/mame/drivers/cocoloco.cpp b/src/mame/drivers/cocoloco.cpp
index 202477886be..6b1f8bbd68a 100644
--- a/src/mame/drivers/cocoloco.cpp
+++ b/src/mame/drivers/cocoloco.cpp
@@ -514,14 +514,14 @@ INPUT_PORTS_END
MACHINE_CONFIG_START(cocoloco_state::cocoloco)
/* basic machine hardware */
- M6502(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &cocoloco_state::cocoloco_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(cocoloco_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(CPU_CLOCK * 4, 384, 0, 256, 262, 0, 256); // TODO: not accurate, ~50 Hz
- screen.set_screen_update(FUNC(cocoloco_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(CPU_CLOCK * 4, 384, 0, 256, 262, 0, 256) // TODO: not accurate, ~50 Hz
+ MCFG_SCREEN_UPDATE_DRIVER(cocoloco_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(cocoloco_state::cocoloco_palette), 0x10);
diff --git a/src/mame/drivers/coinmstr.cpp b/src/mame/drivers/coinmstr.cpp
index 5abd1acc21e..69ad7079b9f 100644
--- a/src/mame/drivers/coinmstr.cpp
+++ b/src/mame/drivers/coinmstr.cpp
@@ -1255,11 +1255,10 @@ uint32_t coinmstr_state::screen_update_coinmstr(screen_device &screen, bitmap_in
}
-void coinmstr_state::coinmstr(machine_config &config)
-{
- Z80(config, m_maincpu, CPU_CLOCK); // 7 MHz.
- m_maincpu->set_addrmap(AS_PROGRAM, &coinmstr_state::coinmstr_map);
- m_maincpu->set_vblank_int("screen", FUNC(coinmstr_state::irq0_line_hold));
+MACHINE_CONFIG_START(coinmstr_state::coinmstr)
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK) // 7 MHz.
+ MCFG_DEVICE_PROGRAM_MAP(coinmstr_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", coinmstr_state, irq0_line_hold)
pia6821_device &pia0(PIA6821(config, "pia0", 0));
pia0.readpa_handler().set_ioport("PIA0.A");
@@ -1274,16 +1273,16 @@ void coinmstr_state::coinmstr(machine_config &config)
pia2.readpb_handler().set_ioport("PIA2.B");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 46*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(coinmstr_state::screen_update_coinmstr));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 46*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(coinmstr_state, screen_update_coinmstr)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_coinmstr);
- PALETTE(config, m_palette).set_entries(46*32*4);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_coinmstr)
+ MCFG_PALETTE_ADD("palette", 46*32*4)
h46505_device &crtc(H46505(config, "crtc", 14000000 / 16));
crtc.set_screen("screen");
@@ -1296,39 +1295,39 @@ void coinmstr_state::coinmstr(machine_config &config)
ay8910_device &aysnd(AY8910(config, "aysnd", SND_CLOCK));
aysnd.port_a_read_callback().set_ioport("DSW1");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
-void coinmstr_state::quizmstr(machine_config &config)
-{
+MACHINE_CONFIG_START(coinmstr_state::quizmstr)
coinmstr(config);
- m_maincpu->set_addrmap(AS_IO, &coinmstr_state::quizmstr_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(quizmstr_io_map)
+MACHINE_CONFIG_END
-void coinmstr_state::trailblz(machine_config &config)
-{
+MACHINE_CONFIG_START(coinmstr_state::trailblz)
coinmstr(config);
- m_maincpu->set_addrmap(AS_IO, &coinmstr_state::trailblz_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(trailblz_io_map)
+MACHINE_CONFIG_END
-void coinmstr_state::supnudg2(machine_config &config)
-{
+MACHINE_CONFIG_START(coinmstr_state::supnudg2)
coinmstr(config);
- m_maincpu->set_addrmap(AS_IO, &coinmstr_state::supnudg2_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(supnudg2_io_map)
+MACHINE_CONFIG_END
-void coinmstr_state::pokeroul(machine_config &config)
-{
+MACHINE_CONFIG_START(coinmstr_state::pokeroul)
coinmstr(config);
- m_maincpu->set_addrmap(AS_IO, &coinmstr_state::pokeroul_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(pokeroul_io_map)
+MACHINE_CONFIG_END
-void coinmstr_state::jpcoin(machine_config &config)
-{
+MACHINE_CONFIG_START(coinmstr_state::jpcoin)
coinmstr(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &coinmstr_state::jpcoin_map);
- m_maincpu->set_addrmap(AS_IO, &coinmstr_state::jpcoin_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(jpcoin_map)
+ MCFG_DEVICE_IO_MAP(jpcoin_io_map)
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/coinmvga.cpp b/src/mame/drivers/coinmvga.cpp
index 3c3e47934dc..dc340e2f41b 100644
--- a/src/mame/drivers/coinmvga.cpp
+++ b/src/mame/drivers/coinmvga.cpp
@@ -636,33 +636,33 @@ void coinmvga_state::ramdac2_map(address_map &map)
}
-void coinmvga_state::coinmvga(machine_config &config)
-{
+MACHINE_CONFIG_START(coinmvga_state::coinmvga)
+
/* basic machine hardware */
- H83007(config, m_maincpu, CPU_CLOCK); /* xtal */
- m_maincpu->set_addrmap(AS_PROGRAM, &coinmvga_state::coinmvga_map);
- m_maincpu->set_addrmap(AS_IO, &coinmvga_state::coinmvga_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(coinmvga_state::vblank_irq)); /* wrong, fix me */
+ MCFG_DEVICE_ADD("maincpu", H83007, CPU_CLOCK) /* xtal */
+ MCFG_DEVICE_PROGRAM_MAP(coinmvga_map)
+ MCFG_DEVICE_IO_MAP(coinmvga_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", coinmvga_state, vblank_irq) /* wrong, fix me */
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(640,480);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(coinmvga_state::screen_update_coinmvga));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_coinmvga);
- GFXDECODE(config, "gfxdecode2", m_palette2, gfx_coinmvga2);
-
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(640,480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(coinmvga_state, screen_update_coinmvga)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_coinmvga)
+ MCFG_DEVICE_ADD("gfxdecode2", GFXDECODE, "palette2", gfx_coinmvga2)
+
+ MCFG_PALETTE_ADD("palette", 256)
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette));
ramdac.set_addrmap(0, &coinmvga_state::ramdac_map);
- PALETTE(config, m_palette2).set_entries(16);
+ MCFG_PALETTE_ADD("palette2", 16)
ramdac_device &ramdac2(RAMDAC(config, "ramdac2", 0, m_palette2));
ramdac2.set_addrmap(0, &coinmvga_state::ramdac2_map);
@@ -670,10 +670,10 @@ void coinmvga_state::coinmvga(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ymz280b_device &ymz(YMZ280B(config, "ymz", SND_CLOCK));
- ymz.add_route(0, "lspeaker", 1.0);
- ymz.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, SND_CLOCK)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/coleco.cpp b/src/mame/drivers/coleco.cpp
index 8c44a8f89cd..c554f43ea91 100644
--- a/src/mame/drivers/coleco.cpp
+++ b/src/mame/drivers/coleco.cpp
@@ -105,9 +105,10 @@ void coleco_state::coleco_io_map(address_map &map)
{
map.global_mask(0xff);
map(0x80, 0x80).mirror(0x1f).w(FUNC(coleco_state::paddle_off_w));
- map(0xa0, 0xa1).mirror(0x1e).rw("tms9928a", FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
+ map(0xa0, 0xa0).mirror(0x1e).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0xa1, 0xa1).mirror(0x1e).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
map(0xc0, 0xc0).mirror(0x1f).w(FUNC(coleco_state::paddle_on_w));
- map(0xe0, 0xe0).mirror(0x1f).w("sn76489a", FUNC(sn76489a_device::write));
+ map(0xe0, 0xe0).mirror(0x1f).w("sn76489a", FUNC(sn76489a_device::command_w));
map(0xe0, 0xe0).mirror(0x1d).r(FUNC(coleco_state::paddle_1_r));
map(0xe2, 0xe2).mirror(0x1d).r(FUNC(coleco_state::paddle_2_r));
}
@@ -231,7 +232,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(coleco_state::paddle_update_callback)
READ8_MEMBER( coleco_state::cart_r )
{
- return m_cart->bd_r(offset & 0x7fff, 0, 0, 0, 0, 0);
+ return m_cart->bd_r(space, offset & 0x7fff, 0, 0, 0, 0, 0);
}
uint8_t coleco_state::coleco_scan_paddles(uint8_t *joy_status0, uint8_t *joy_status1)
diff --git a/src/mame/drivers/comebaby.cpp b/src/mame/drivers/comebaby.cpp
index da1e49c37a9..65bf27731f4 100644
--- a/src/mame/drivers/comebaby.cpp
+++ b/src/mame/drivers/comebaby.cpp
@@ -236,26 +236,25 @@ static INPUT_PORTS_START( comebaby )
INPUT_PORTS_END
-void comebaby_state::comebaby(machine_config &config)
-{
+MACHINE_CONFIG_START(comebaby_state::comebaby)
/* basic machine hardware */
- PENTIUM2(config, m_maincpu, (66666666*19)/2); /* Actually a Celeron */
- m_maincpu->set_addrmap(AS_PROGRAM, &comebaby_state::comebaby_map);
- m_maincpu->set_addrmap(AS_IO, &comebaby_state::comebaby_io);
+ MCFG_DEVICE_ADD("maincpu", PENTIUM2, (66666666*19)/2) /* Actually a Celeron */
+ MCFG_DEVICE_PROGRAM_MAP(comebaby_map)
+ MCFG_DEVICE_IO_MAP(comebaby_io)
pcat_common(config);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(comebaby_state::screen_update));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea_full();
- screen.set_palette("palette");
-
- PALETTE(config, "palette").set_entries(0x100);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(comebaby_state, screen_update)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 0x100)
+MACHINE_CONFIG_END
ROM_START(comebaby)
diff --git a/src/mame/drivers/commando.cpp b/src/mame/drivers/commando.cpp
index 4c310d24464..2400b021dda 100644
--- a/src/mame/drivers/commando.cpp
+++ b/src/mame/drivers/commando.cpp
@@ -252,16 +252,16 @@ void commando_state::machine_reset()
}
-void commando_state::commando(machine_config &config)
-{
+MACHINE_CONFIG_START(commando_state::commando)
+
/* basic machine hardware */
- Z80(config, m_maincpu, PHI_MAIN); // ???
- m_maincpu->set_addrmap(AS_PROGRAM, &commando_state::commando_map);
- m_maincpu->set_addrmap(AS_OPCODES, &commando_state::decrypted_opcodes_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, PHI_MAIN) // ???
+ MCFG_DEVICE_PROGRAM_MAP(commando_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
- Z80(config, m_audiocpu, PHI_B); // 3 MHz
- m_audiocpu->set_addrmap(AS_PROGRAM, &commando_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(commando_state::irq0_line_hold), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("audiocpu", Z80, PHI_B) // 3 MHz
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(commando_state, irq0_line_hold, 4*60)
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -274,7 +274,7 @@ void commando_state::commando(machine_config &config)
screen.screen_vblank().append(FUNC(commando_state::vblank_irq));
screen.set_palette(m_palette);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_commando);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_commando)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
BUFFERED_SPRITERAM8(config, m_spriteram);
@@ -287,7 +287,7 @@ void commando_state::commando(machine_config &config)
YM2203(config, "ym1", PHI_B/2).add_route(ALL_OUTPUTS, "mono", 0.15);
YM2203(config, "ym2", PHI_B/2).add_route(ALL_OUTPUTS, "mono", 0.15);
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/compc.cpp b/src/mame/drivers/compc.cpp
index a13dc96603f..b6cc2124e9c 100644
--- a/src/mame/drivers/compc.cpp
+++ b/src/mame/drivers/compc.cpp
@@ -220,15 +220,14 @@ void compc_state::compciii_io(address_map &map)
map(0x0060, 0x0063).rw(FUNC(compc_state::pioiii_r), FUNC(compc_state::pioiii_w));
}
-void compc_state::compc(machine_config &config)
-{
- I8088(config, m_maincpu, 4772720*2);
- m_maincpu->set_addrmap(AS_PROGRAM, &compc_state::compc_map);
- m_maincpu->set_addrmap(AS_IO, &compc_state::compc_io);
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
-
- PCNOPPI_MOTHERBOARD(config, "mb", 0).set_cputag(m_maincpu);
- config.device_remove("mb:pit8253");
+MACHINE_CONFIG_START(compc_state::compc)
+ MCFG_DEVICE_ADD("maincpu", I8088, 4772720*2)
+ MCFG_DEVICE_PROGRAM_MAP(compc_map)
+ MCFG_DEVICE_IO_MAP(compc_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
+
+ MCFG_PCNOPPI_MOTHERBOARD_ADD("mb", "maincpu")
+ MCFG_DEVICE_REMOVE("mb:pit8253")
fe2010_pit_device &pit(FE2010_PIT(config, "mb:pit8253", 0));
pit.set_clk<0>(XTAL(14'318'181)/12.0); /* heartbeat IRQ */
pit.out_handler<0>().set("mb:pic8259", FUNC(pic8259_device::ir0_w));
@@ -238,26 +237,25 @@ void compc_state::compc(machine_config &config)
pit.out_handler<2>().set(m_mb, FUNC(ibm5160_mb_device::pc_pit8253_out2_changed));
// FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "mda", false);
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, "lpt", false);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, "com", false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "fdc_xt", false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "mda", false)
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "lpt", false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", false)
- PC_KEYB(config, m_keyboard);
- m_keyboard->keypress().set("mb:pic8259", FUNC(pic8259_device::ir1_w));
+ MCFG_PC_KEYB_ADD("pc_keyboard", WRITELINE("mb:pic8259", pic8259_device, ir1_w))
/* internal ram */
RAM(config, RAM_TAG).set_default_size("256K").set_extra_options("512K, 640K");
/* software lists */
- SOFTWARE_LIST(config, "disk_list").set_original("ibm5150");
-}
+ MCFG_SOFTWARE_LIST_ADD("disk_list", "ibm5150")
+MACHINE_CONFIG_END
-void compc_state::pc10iii(machine_config &config)
-{
+MACHINE_CONFIG_START(compc_state::pc10iii)
compc(config);
- m_maincpu->set_addrmap(AS_IO, &compc_state::compciii_io);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(compciii_io)
+MACHINE_CONFIG_END
ROM_START(compc10)
ROM_REGION(0x10000, "bios", 0)
diff --git a/src/mame/drivers/compgolf.cpp b/src/mame/drivers/compgolf.cpp
index 14c334fee6f..1fef8268176 100644
--- a/src/mame/drivers/compgolf.cpp
+++ b/src/mame/drivers/compgolf.cpp
@@ -222,24 +222,24 @@ void compgolf_state::machine_reset()
m_scrolly_hi = 0;
}
-void compgolf_state::compgolf(machine_config &config)
-{
+MACHINE_CONFIG_START(compgolf_state::compgolf)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, 2000000); // HD68B09EP
- m_maincpu->set_addrmap(AS_PROGRAM, &compgolf_state::compgolf_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, 2000000) // HD68B09EP
+ MCFG_DEVICE_PROGRAM_MAP(compgolf_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(256, 256);
- screen.set_visarea(1*8, 32*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(compgolf_state::screen_update_compgolf));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(compgolf_state, screen_update_compgolf)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
PALETTE(config, m_palette, FUNC(compgolf_state::compgolf_palette), 0x100);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_compgolf);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_compgolf)
SPEAKER(config, "mono").front_center();
@@ -249,7 +249,7 @@ void compgolf_state::compgolf(machine_config &config)
ymsnd.port_a_write_callback().set(FUNC(compgolf_state::compgolf_scrollx_lo_w));
ymsnd.port_b_write_callback().set(FUNC(compgolf_state::compgolf_scrolly_lo_w));
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/compis.cpp b/src/mame/drivers/compis.cpp
index b8d28f9254e..54ac9883c88 100644
--- a/src/mame/drivers/compis.cpp
+++ b/src/mame/drivers/compis.cpp
@@ -177,7 +177,7 @@ READ16_MEMBER( compis_state::pcs6_0_1_r )
}
else
{
- return m_graphics->dma_ack_r(offset);
+ return m_graphics->dma_ack_r(space, offset);
}
}
@@ -191,7 +191,7 @@ WRITE16_MEMBER( compis_state::pcs6_0_1_w )
}
else
{
- m_graphics->dma_ack_w(offset, data);
+ m_graphics->dma_ack_w(space, offset, data);
}
}
@@ -250,7 +250,7 @@ READ16_MEMBER( compis_state::pcs6_6_7_r )
{
if (ACCESSING_BITS_0_7)
{
- return m_graphics->pcs6_6_r(offset);
+ return m_graphics->pcs6_6_r(space, offset);
}
else
{
@@ -265,7 +265,7 @@ WRITE16_MEMBER( compis_state::pcs6_6_7_w )
{
if (ACCESSING_BITS_0_7)
{
- m_graphics->pcs6_6_w(offset, data);
+ m_graphics->pcs6_6_w(space, offset, data);
}
else
{
@@ -278,11 +278,11 @@ READ16_MEMBER( compis_state::pcs6_8_9_r )
{
if (ACCESSING_BITS_0_7)
{
- return m_isbx0->mcs0_r(offset);
+ return m_isbx0->mcs0_r(space, offset);
}
else
{
- return m_isbx0->mcs1_r(offset) << 8;
+ return m_isbx0->mcs1_r(space, offset) << 8;
}
}
@@ -290,11 +290,11 @@ WRITE16_MEMBER( compis_state::pcs6_8_9_w )
{
if (ACCESSING_BITS_0_7)
{
- m_isbx0->mcs0_w(offset, data);
+ m_isbx0->mcs0_w(space, offset, data);
}
else
{
- m_isbx0->mcs1_w(offset, data >> 8);
+ m_isbx0->mcs1_w(space, offset, data >> 8);
}
}
@@ -302,11 +302,11 @@ READ16_MEMBER( compis_state::pcs6_10_11_r )
{
if (ACCESSING_BITS_0_7)
{
- return m_isbx0->mcs1_r(offset);
+ return m_isbx0->mcs1_r(space, offset);
}
else
{
- return m_isbx0->mdack_r(offset) << 8;
+ return m_isbx0->mdack_r(space, offset) << 8;
}
}
@@ -314,11 +314,11 @@ WRITE16_MEMBER( compis_state::pcs6_10_11_w )
{
if (ACCESSING_BITS_0_7)
{
- m_isbx0->mcs1_w(offset, data);
+ m_isbx0->mcs1_w(space, offset, data);
}
else
{
- m_isbx0->mdack_w(offset, data >> 8);
+ m_isbx0->mdack_w(space, offset, data >> 8);
}
}
@@ -326,11 +326,11 @@ READ16_MEMBER( compis_state::pcs6_12_13_r )
{
if (ACCESSING_BITS_0_7)
{
- return m_isbx1->mcs0_r(offset);
+ return m_isbx1->mcs0_r(space, offset);
}
else
{
- return m_isbx1->mcs1_r(offset) << 8;
+ return m_isbx1->mcs1_r(space, offset) << 8;
}
}
@@ -338,11 +338,11 @@ WRITE16_MEMBER( compis_state::pcs6_12_13_w )
{
if (ACCESSING_BITS_0_7)
{
- m_isbx1->mcs0_w(offset, data);
+ m_isbx1->mcs0_w(space, offset, data);
}
else
{
- m_isbx1->mcs1_w(offset, data >> 8);
+ m_isbx1->mcs1_w(space, offset, data >> 8);
}
}
@@ -350,11 +350,11 @@ READ16_MEMBER( compis_state::pcs6_14_15_r )
{
if (ACCESSING_BITS_0_7)
{
- return m_isbx1->mcs1_r(offset);
+ return m_isbx1->mcs1_r(space, offset);
}
else
{
- return m_isbx1->mdack_r(offset) << 8;
+ return m_isbx1->mdack_r(space, offset) << 8;
}
}
@@ -362,11 +362,11 @@ WRITE16_MEMBER( compis_state::pcs6_14_15_w )
{
if (ACCESSING_BITS_0_7)
{
- m_isbx1->mcs1_w(offset, data);
+ m_isbx1->mcs1_w(space, offset, data);
}
else
{
- m_isbx1->mdack_w(offset, data >> 8);
+ m_isbx1->mdack_w(space, offset, data >> 8);
}
}
@@ -734,7 +734,7 @@ void compis_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( compis )
+// MACHINE_CONFIG( compis )
//-------------------------------------------------
void compis_state::compis(machine_config &config)
@@ -829,7 +829,7 @@ void compis_state::compis(machine_config &config)
//-------------------------------------------------
-// machine_config( compis2 )
+// MACHINE_CONFIG( compis2 )
//-------------------------------------------------
void compis_state::compis2(machine_config &config)
diff --git a/src/mame/drivers/compucolor.cpp b/src/mame/drivers/compucolor.cpp
index 7be709ab659..487298f071c 100644
--- a/src/mame/drivers/compucolor.cpp
+++ b/src/mame/drivers/compucolor.cpp
@@ -395,18 +395,17 @@ void compucolor2_state::machine_reset()
m_rs232->write_dtr(1);
}
-void compucolor2_state::compucolor2(machine_config &config)
-{
+MACHINE_CONFIG_START(compucolor2_state::compucolor2)
// basic machine hardware
- I8080(config, m_maincpu, XTAL(17'971'200)/9);
- m_maincpu->set_addrmap(AS_PROGRAM, &compucolor2_state::compucolor2_mem);
- m_maincpu->set_addrmap(AS_IO, &compucolor2_state::compucolor2_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(compucolor2_state::int_ack));
+ MCFG_DEVICE_ADD(I8080_TAG, I8080, XTAL(17'971'200)/9)
+ MCFG_DEVICE_PROGRAM_MAP(compucolor2_mem)
+ MCFG_DEVICE_IO_MAP(compucolor2_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(compucolor2_state,int_ack)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(17'971'200)/2, 93*6, 0, 64*6, 268, 0, 256);
- screen.set_screen_update(FUNC(compucolor2_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(17'971'200)/2, 93*6, 0, 64*6, 268, 0, 256)
+ MCFG_SCREEN_UPDATE_DRIVER(compucolor2_state, screen_update)
PALETTE(config, m_palette, palette_device::RGB_3BIT);
@@ -439,8 +438,8 @@ void compucolor2_state::compucolor2(machine_config &config)
RAM(config, RAM_TAG).set_default_size("32K").set_extra_options("8K,16K");
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("compclr2_flop");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "compclr2_flop")
+MACHINE_CONFIG_END
ROM_START( compclr2 )
ROM_REGION( 0x4000, I8080_TAG, 0 )
diff --git a/src/mame/drivers/comquest.cpp b/src/mame/drivers/comquest.cpp
index acec184d755..f0b194811e0 100644
--- a/src/mame/drivers/comquest.cpp
+++ b/src/mame/drivers/comquest.cpp
@@ -214,12 +214,11 @@ void comquest_state::machine_reset()
}
-void comquest_state::comquest(machine_config &config)
-{
+MACHINE_CONFIG_START(comquest_state::comquest)
/* basic machine hardware */
- M6805(config, m_maincpu, 4000000); /* 4000000? */
- /* HD63705(config, m_maincpu, 4000000); instruction set looks like m6805/m6808 */
- /* M68705(config, m_maincpu, 4000000); instruction set looks like m6805/m6808 */
+ MCFG_DEVICE_ADD("maincpu", M6805, 4000000) /* 4000000? */
+ /*MCFG_DEVICE_ADD("maincpu", HD63705, 4000000) instruction set looks like m6805/m6808 */
+ /*MCFG_DEVICE_ADD("maincpu", M68705, 4000000) instruction set looks like m6805/m6808 */
/*
8 bit bus, integrated io, serial io?,
@@ -245,25 +244,25 @@ void comquest_state::comquest(machine_config &config)
not epson e0c88
*/
- m_maincpu->set_addrmap(AS_PROGRAM, &comquest_state::comquest_mem);
+ MCFG_DEVICE_PROGRAM_MAP(comquest_mem)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(30);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(64*4, 128); /* 160 x 102 */
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(comquest_state::screen_update_comquest));
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_comquest);
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(30)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(64*4, 128) /* 160 x 102 */
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*4-1, 0, 128-1)
+ MCFG_SCREEN_UPDATE_DRIVER(comquest_state, screen_update_comquest)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_comquest )
PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */
/* unknown ? */
-}
+MACHINE_CONFIG_END
ROM_START(comquest)
// ROM_REGION(0x10000,"maincpu",0)
diff --git a/src/mame/drivers/comx35.cpp b/src/mame/drivers/comx35.cpp
index c6b10c873db..5d245ccd2ad 100644
--- a/src/mame/drivers/comx35.cpp
+++ b/src/mame/drivers/comx35.cpp
@@ -209,7 +209,7 @@ READ8_MEMBER( comx35_state::mem_r )
{
int extrom = 1;
- uint8_t data = m_exp->mrd_r(offset, &extrom);
+ uint8_t data = m_exp->mrd_r(space, offset, &extrom);
if (offset < 0x4000)
{
@@ -234,7 +234,7 @@ READ8_MEMBER( comx35_state::mem_r )
WRITE8_MEMBER( comx35_state::mem_w )
{
- m_exp->mwr_w(offset, data);
+ m_exp->mwr_w(space, offset, data);
if (offset >= 0x4000 && offset < 0xc000)
{
@@ -257,7 +257,7 @@ WRITE8_MEMBER( comx35_state::mem_w )
READ8_MEMBER( comx35_state::io_r )
{
- uint8_t data = m_exp->io_r(offset);
+ uint8_t data = m_exp->io_r(space, offset);
if (offset == 3)
{
@@ -274,7 +274,7 @@ READ8_MEMBER( comx35_state::io_r )
WRITE8_MEMBER( comx35_state::io_w )
{
- m_exp->io_w(offset, data);
+ m_exp->io_w(space, offset, data);
if (offset >= 3)
{
@@ -592,7 +592,7 @@ void comx35_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( pal )
+// MACHINE_CONFIG( pal )
//-------------------------------------------------
void comx35_state::base(machine_config &config, const XTAL clock)
@@ -625,8 +625,8 @@ void comx35_state::base(machine_config &config, const XTAL clock)
m_kbe->d11_callback().set_ioport("D11");
m_kbe->da_callback().set_inputline(m_maincpu, COSMAC_INPUT_LINE_EF3);
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(comx35_state, comx), this), "comx");
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(comx35_state, comx), this), "comx", 0);
CASSETTE(config, m_cassette).set_default_state((cassette_state) (CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED));
diff --git a/src/mame/drivers/concept.cpp b/src/mame/drivers/concept.cpp
index 4fcba27ad13..4251ecd123c 100644
--- a/src/mame/drivers/concept.cpp
+++ b/src/mame/drivers/concept.cpp
@@ -13,7 +13,7 @@
LAN port (seems more or less similar to AppleTalk)
* 4 expansion ports enable to add expansion cards, namely floppy disk
and hard disk controllers (the expansion ports are partially compatible
- with Apple 2 expansion ports; DMA is not supported)
+ with Apple 2 expansion ports)
Video: monochrome bitmapped display, 720*560 visible area (bitmaps are 768
pixels wide in memory). One interesting feature is the fact that the
@@ -39,7 +39,6 @@
#include "bus/a2bus/corvfdc01.h"
#include "bus/a2bus/corvfdc02.h"
#include "bus/rs232/rs232.h"
-#include "machine/input_merger.h"
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
@@ -50,7 +49,7 @@ void concept_state::concept_memmap(address_map &map)
map(0x000008, 0x000fff).ram(); /* static RAM */
map(0x010000, 0x011fff).rom().region("maincpu", 0x010000); /* boot ROM */
map(0x020000, 0x021fff).rom().region("macsbug", 0x0); /* macsbugs ROM (optional) */
- map(0x030000, 0x03ffff).rw(FUNC(concept_state::io_r), FUNC(concept_state::io_w)).umask16(0x00ff); /* I/O space */
+ map(0x030000, 0x03ffff).rw(FUNC(concept_state::concept_io_r), FUNC(concept_state::concept_io_w)); /* I/O space */
map(0x080000, 0x0fffff).ram().share("videoram");/* AM_RAMBANK(2) */ /* DRAM */
}
@@ -210,7 +209,7 @@ void concept_a2_cards(device_slot_interface &device)
void concept_state::concept(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 16.364_MHz_XTAL / 2);
+ M68000(config, m_maincpu, 8182000); /* 16.364 MHz / 2 */
m_maincpu->set_addrmap(AS_PROGRAM, &concept_state::concept_memmap);
config.m_minimum_quantum = attotime::from_hz(60);
@@ -233,12 +232,12 @@ void concept_state::concept(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
/* rtc */
- MM58274C(config, m_mm58274, 32.768_kHz_XTAL);
+ MM58274C(config, m_mm58274, 0);
m_mm58274->set_mode24(0); // 12 hour
m_mm58274->set_day1(1); // monday
/* via */
- VIA6522(config, m_via0, 16.364_MHz_XTAL / 16);
+ VIA6522(config, m_via0, 1022750);
m_via0->readpa_handler().set(FUNC(concept_state::via_in_a));
m_via0->readpb_handler().set(FUNC(concept_state::via_in_b));
m_via0->writepa_handler().set(FUNC(concept_state::via_out_a));
@@ -247,28 +246,24 @@ void concept_state::concept(machine_config &config)
m_via0->irq_handler().set(FUNC(concept_state::via_irq_func));
/* ACIAs */
- MOS6551(config, m_acia0, 16.364_MHz_XTAL / 16);
- m_acia0->set_xtal(16.364_MHz_XTAL / 9);
+ MOS6551(config, m_acia0, 0);
+ m_acia0->set_xtal(XTAL(1'843'200));
m_acia0->txd_handler().set("rs232a", FUNC(rs232_port_device::write_txd));
- MOS6551(config, m_acia1, 16.364_MHz_XTAL / 16);
- m_acia1->set_xtal(16.364_MHz_XTAL / 9);
+ MOS6551(config, m_acia1, 0);
+ m_acia1->set_xtal(XTAL(1'843'200));
m_acia1->txd_handler().set("rs232b", FUNC(rs232_port_device::write_txd));
- MOS6551(config, m_kbdacia, 16.364_MHz_XTAL / 16);
- m_kbdacia->set_xtal(16.364_MHz_XTAL / 9);
+ MOS6551(config, m_kbdacia, 0);
+ m_kbdacia->set_xtal(XTAL(1'843'200));
/* Apple II bus */
- A2BUS(config, m_a2bus, 0).set_space(m_maincpu, AS_PROGRAM);
- m_a2bus->nmi_w().set("iocint", FUNC(input_merger_device::in_w<0>));
- m_a2bus->irq_w().set("iocint", FUNC(input_merger_device::in_w<1>));
+ A2BUS(config, m_a2bus, 0).set_cputag(m_maincpu);
A2BUS_SLOT(config, "sl1", m_a2bus, concept_a2_cards, nullptr);
A2BUS_SLOT(config, "sl2", m_a2bus, concept_a2_cards, nullptr);
A2BUS_SLOT(config, "sl3", m_a2bus, concept_a2_cards, nullptr);
A2BUS_SLOT(config, "sl4", m_a2bus, concept_a2_cards, "fdc01");
- INPUT_MERGER_ANY_HIGH(config, "iocint").output_handler().set(FUNC(concept_state::ioc_interrupt));
-
/* 2x RS232 ports */
rs232_port_device &rs232a(RS232_PORT(config, "rs232a", default_rs232_devices, nullptr));
rs232a.rxd_handler().set(m_acia0, FUNC(mos6551_device::write_rxd));
diff --git a/src/mame/drivers/contra.cpp b/src/mame/drivers/contra.cpp
index b8990718f0c..56f86ed6c26 100644
--- a/src/mame/drivers/contra.cpp
+++ b/src/mame/drivers/contra.cpp
@@ -206,27 +206,27 @@ void contra_state::machine_reset()
m_audiocpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE);
}
-void contra_state::contra(machine_config &config)
-{
+MACHINE_CONFIG_START(contra_state::contra)
+
/* basic machine hardware */
- HD6309E(config, m_maincpu, XTAL(24'000'000) / 8); /* 3000000? (HD63C09EP) */
- m_maincpu->set_addrmap(AS_PROGRAM, &contra_state::contra_map);
- m_maincpu->set_vblank_int("screen", FUNC(contra_state::contra_interrupt));
+ MCFG_DEVICE_ADD("maincpu", HD6309E, XTAL(24'000'000) / 8) /* 3000000? (HD63C09EP) */
+ MCFG_DEVICE_PROGRAM_MAP(contra_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", contra_state, contra_interrupt)
- MC6809E(config, m_audiocpu, XTAL(24'000'000)/8); /* 3000000? (HD68B09EP) */
- m_audiocpu->set_addrmap(AS_PROGRAM, &contra_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", MC6809E, XTAL(24'000'000)/8) /* 3000000? (HD68B09EP) */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
- config.m_minimum_quantum = attotime::from_hz(6000); /* enough for the sound CPU to read all commands */
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* enough for the sound CPU to read all commands */
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(37*8, 32*8);
- m_screen->set_visarea(0*8, 35*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(contra_state::screen_update_contra));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(37*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 35*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(contra_state, screen_update_contra)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_contra);
@@ -247,7 +247,7 @@ void contra_state::contra(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 0.60).add_route(1, "rspeaker", 0.60);
-}
+MACHINE_CONFIG_END
ROM_START( contra )
diff --git a/src/mame/drivers/controlid.cpp b/src/mame/drivers/controlid.cpp
index f026d795baa..926eaea65f2 100644
--- a/src/mame/drivers/controlid.cpp
+++ b/src/mame/drivers/controlid.cpp
@@ -144,8 +144,7 @@ void controlidx628_state::controlidx628_palette(palette_device &palette) const
* Machine Driver *
*************************/
-void controlidx628_state::controlidx628(machine_config &config)
-{
+MACHINE_CONFIG_START(controlidx628_state::controlidx628)
// basic machine hardware
at89s52_device &maincpu(AT89S52(config, "maincpu", XTAL(11'059'200)));
maincpu.set_addrmap(AS_IO, &controlidx628_state::io_map);
@@ -157,18 +156,18 @@ void controlidx628_state::controlidx628(machine_config &config)
maincpu.port_out_cb<3>().set(FUNC(controlidx628_state::p3_w));
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
- screen.set_size(132, 65);
- screen.set_visarea(3, 130, 0, 63);
- screen.set_screen_update("nt7534", FUNC(nt7534_device::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
+ MCFG_SCREEN_SIZE(132, 65)
+ MCFG_SCREEN_VISIBLE_AREA(3, 130, 0, 63)
+ MCFG_SCREEN_UPDATE_DEVICE("nt7534", nt7534_device, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(controlidx628_state::controlidx628_palette), 2);
NT7534(config, m_lcdc);
-}
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/coolpool.cpp b/src/mame/drivers/coolpool.cpp
index c3c26b3ff4b..945c12246f9 100644
--- a/src/mame/drivers/coolpool.cpp
+++ b/src/mame/drivers/coolpool.cpp
@@ -528,6 +528,7 @@ void coolpool_state::amerdart_map(address_map &map)
map(0x04000000, 0x0400000f).w(FUNC(coolpool_state::amerdart_misc_w));
map(0x05000000, 0x0500000f).r(m_dsp2main, FUNC(generic_latch_16_device::read)).w(m_main2dsp, FUNC(generic_latch_16_device::write));
map(0x06000000, 0x06007fff).ram().w(FUNC(coolpool_state::nvram_thrash_data_w)).share("nvram");
+ map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xffb00000, 0xffffffff).rom().region("maincpu", 0);
}
@@ -540,6 +541,7 @@ void coolpool_state::coolpool_map(address_map &map)
map(0x03000000, 0x0300000f).w(FUNC(coolpool_state::coolpool_misc_w));
map(0x03000000, 0x03ffffff).rom().region("gfx1", 0);
map(0x06000000, 0x06007fff).ram().w(FUNC(coolpool_state::nvram_thrash_data_w)).share("nvram");
+ map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xffe00000, 0xffffffff).rom().region("maincpu", 0);
}
@@ -551,6 +553,7 @@ void coolpool_state::nballsht_map(address_map &map)
map(0x03000000, 0x0300000f).w(FUNC(coolpool_state::coolpool_misc_w));
map(0x04000000, 0x040000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff); // IMSG176P-40
map(0x06000000, 0x0601ffff).mirror(0x00020000).ram().w(FUNC(coolpool_state::nvram_thrash_data_w)).share("nvram");
+ map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xff000000, 0xff7fffff).rom().region("gfx1", 0);
map(0xffc00000, 0xffffffff).rom().region("maincpu", 0);
}
@@ -710,8 +713,8 @@ INPUT_PORTS_END
*
*************************************/
-void coolpool_state::amerdart(machine_config &config)
-{
+MACHINE_CONFIG_START(coolpool_state::amerdart)
+
/* basic machine hardware */
TMS34010(config, m_maincpu, XTAL(40'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &coolpool_state::amerdart_map);
@@ -728,7 +731,7 @@ void coolpool_state::amerdart(machine_config &config)
dsp.set_addrmap(AS_IO, &coolpool_state::amerdart_dsp_io_map);
dsp.bio().set(FUNC(coolpool_state::amerdart_dsp_bio_line_r));
- TIMER(config, "audioint").configure_scanline(FUNC(coolpool_state::amerdart_audio_int_gen), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("audioint", coolpool_state, amerdart_audio_int_gen, "screen", 0, 1)
GENERIC_LATCH_16(config, m_main2dsp);
GENERIC_LATCH_16(config, m_dsp2main);
@@ -737,24 +740,23 @@ void coolpool_state::amerdart(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(coolpool_state,amerdart)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TIMER(config, m_nvram_timer).configure_generic(FUNC(coolpool_state::nvram_write_timeout));
+ MCFG_TIMER_DRIVER_ADD(m_nvram_timer, coolpool_state, nvram_write_timeout)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(40'000'000)/6, 212*2, 0, 161*2, 262, 0, 241);
- screen.set_screen_update("maincpu", FUNC(tms34010_device::tms340x0_rgb32));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(40'000'000)/6, 212*2, 0, 161*2, 262, 0, 241)
+ MCFG_SCREEN_UPDATE_DEVICE("maincpu", tms34010_device, tms340x0_rgb32)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- MP1210(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 1.0);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", MP1210, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void coolpool_state::coolpool(machine_config &config)
-{
+MACHINE_CONFIG_START(coolpool_state::coolpool)
+
/* basic machine hardware */
TMS34010(config, m_maincpu, XTAL(40'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &coolpool_state::coolpool_map);
@@ -783,22 +785,21 @@ void coolpool_state::coolpool(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(coolpool_state,coolpool)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TIMER(config, m_nvram_timer).configure_generic(FUNC(coolpool_state::nvram_write_timeout));
+ MCFG_TIMER_DRIVER_ADD(m_nvram_timer, coolpool_state, nvram_write_timeout)
/* video hardware */
- TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT);
+ MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(40'000'000)/6, 424, 0, 320, 262, 0, 240);
- screen.set_screen_update("maincpu", FUNC(tms34010_device::tms340x0_rgb32));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(40'000'000)/6, 424, 0, 320, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DEVICE("maincpu", tms34010_device, tms340x0_rgb32)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- MP1210(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 1.0);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", MP1210, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
void coolpool_state::_9ballsht(machine_config &config)
diff --git a/src/mame/drivers/coolridr.cpp b/src/mame/drivers/coolridr.cpp
index b58f7718fb7..5e0840bd651 100644
--- a/src/mame/drivers/coolridr.cpp
+++ b/src/mame/drivers/coolridr.cpp
@@ -3219,18 +3219,17 @@ WRITE_LINE_MEMBER(coolridr_state::scsp2_to_sh1_irq)
#define MAIN_CLOCK XTAL(28'636'363)
-void coolridr_state::coolridr(machine_config &config)
-{
- SH2(config, m_maincpu, MAIN_CLOCK); // 28 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &coolridr_state::system_h1_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(coolridr_state::interrupt_main), "screen", 0, 1);
+MACHINE_CONFIG_START(coolridr_state::coolridr)
+ MCFG_DEVICE_ADD("maincpu", SH2, MAIN_CLOCK) // 28 MHz
+ MCFG_DEVICE_PROGRAM_MAP(system_h1_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", coolridr_state, interrupt_main, "screen", 0, 1)
- M68000(config, m_soundcpu, 22579000/2); // 22.579 MHz XTAL / 2 = 11.2895 MHz
- m_soundcpu->set_addrmap(AS_PROGRAM, &coolridr_state::system_h1_sound_map);
+ MCFG_DEVICE_ADD("soundcpu", M68000, 22579000/2) // 22.579 MHz XTAL / 2 = 11.2895 MHz
+ MCFG_DEVICE_PROGRAM_MAP(system_h1_sound_map)
- SH1(config, m_subcpu, 16000000); // SH7032 HD6417032F20!! 16 MHz
- m_subcpu->set_addrmap(AS_PROGRAM, &coolridr_state::coolridr_submap);
- TIMER(config, "scantimer2").configure_scanline(FUNC(coolridr_state::interrupt_sub), "screen", 0, 1);
+ MCFG_DEVICE_ADD("sub", SH1, 16000000) // SH7032 HD6417032F20!! 16 MHz
+ MCFG_DEVICE_PROGRAM_MAP(coolridr_submap)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer2", coolridr_state, interrupt_sub, "screen", 0, 1)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -3246,21 +3245,21 @@ void coolridr_state::coolridr(machine_config &config)
io.an_port_callback<5>().set_ioport("AN5");
io.an_port_callback<6>().set_ioport("AN6");
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_coolridr);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_coolridr)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(640, 512);
- m_screen->set_visarea(CLIPMINX_FULL,CLIPMAXX_FULL, CLIPMINY_FULL, CLIPMAXY_FULL);
- m_screen->set_screen_update(FUNC(coolridr_state::screen_update<0>));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(640, 512)
+ MCFG_SCREEN_VISIBLE_AREA(CLIPMINX_FULL,CLIPMAXX_FULL, CLIPMINY_FULL, CLIPMAXY_FULL)
+ MCFG_SCREEN_UPDATE_DRIVER(coolridr_state, screen_update<0>)
+ MCFG_SCREEN_PALETTE(m_palette)
- screen_device &screen2(SCREEN(config, "screen2", SCREEN_TYPE_RASTER));
- screen2.set_refresh_hz(60);
- screen2.set_size(640, 512);
- screen2.set_visarea(CLIPMINX_FULL,CLIPMAXX_FULL, CLIPMINY_FULL, CLIPMAXY_FULL);
- screen2.set_screen_update(FUNC(coolridr_state::screen_update<1>));
- screen2.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen2", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(640, 512)
+ MCFG_SCREEN_VISIBLE_AREA(CLIPMINX_FULL,CLIPMAXX_FULL, CLIPMINY_FULL, CLIPMAXY_FULL)
+ MCFG_SCREEN_UPDATE_DRIVER(coolridr_state, screen_update<1>)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, palette_device::RGB_555);
@@ -3281,19 +3280,20 @@ void coolridr_state::coolridr(machine_config &config)
scsp2.main_irq_cb().set(FUNC(coolridr_state::scsp2_to_sh1_irq));
scsp2.add_route(0, "lspeaker", 1.0);
scsp2.add_route(1, "rspeaker", 1.0);
-}
+MACHINE_CONFIG_END
-void coolridr_state::aquastge(machine_config &config)
-{
+MACHINE_CONFIG_START(coolridr_state::aquastge)
coolridr(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &coolridr_state::aquastge_h1_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(aquastge_h1_map)
- m_subcpu->set_addrmap(AS_PROGRAM, &coolridr_state::aquastge_submap);
+ MCFG_DEVICE_MODIFY("sub")
+ MCFG_DEVICE_PROGRAM_MAP(aquastge_submap)
sega_315_5649_device &io(SEGA_315_5649(config.replace(), "io", 0));
io.in_pc_callback().set_ioport("IN0");
io.in_pd_callback().set_ioport("IN1");
-}
+MACHINE_CONFIG_END
ROM_START( coolridr )
ROM_REGION( 0x200000, "maincpu", 0 ) /* SH2 code */
diff --git a/src/mame/drivers/cop01.cpp b/src/mame/drivers/cop01.cpp
index 605268c84f0..31fe01d33ea 100644
--- a/src/mame/drivers/cop01.cpp
+++ b/src/mame/drivers/cop01.cpp
@@ -446,27 +446,27 @@ void cop01_state::machine_reset()
}
-void cop01_state::cop01(machine_config &config)
-{
+MACHINE_CONFIG_START(cop01_state::cop01)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MAINCPU_CLOCK/2); /* unknown clock / divider */
- m_maincpu->set_addrmap(AS_PROGRAM, &cop01_state::cop01_map);
- m_maincpu->set_addrmap(AS_IO, &cop01_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(cop01_state::irq0_line_assert));
+ MCFG_DEVICE_ADD("maincpu", Z80, MAINCPU_CLOCK/2) /* unknown clock / divider */
+ MCFG_DEVICE_PROGRAM_MAP(cop01_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cop01_state, irq0_line_assert)
- Z80(config, m_audiocpu, XTAL(3'000'000)); /* unknown clock / divider, hand-tuned to match audio reference */
- m_audiocpu->set_addrmap(AS_PROGRAM, &cop01_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &cop01_state::audio_io_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'000'000)) /* unknown clock / divider, hand-tuned to match audio reference */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(audio_io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(cop01_state::screen_update_cop01));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cop01_state, screen_update_cop01)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cop01);
PALETTE(config, m_palette, FUNC(cop01_state::cop01_palette), 16+8*16+16*16, 256);
@@ -481,31 +481,31 @@ void cop01_state::cop01(machine_config &config)
AY8910(config, "ay2", 1250000).add_route(ALL_OUTPUTS, "mono", 0.25); /* unknown clock / divider, hand-tuned to match audio reference */
AY8910(config, "ay3", 1250000).add_route(ALL_OUTPUTS, "mono", 0.25); /* unknown clock / divider, hand-tuned to match audio reference */
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(mightguy_state::mightguy)
-void mightguy_state::mightguy(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, MAINCPU_CLOCK/2); /* unknown divider */
- m_maincpu->set_addrmap(AS_PROGRAM, &mightguy_state::cop01_map);
- m_maincpu->set_addrmap(AS_IO, &mightguy_state::mightguy_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(cop01_state::irq0_line_assert));
+ MCFG_DEVICE_ADD("maincpu", Z80, MAINCPU_CLOCK/2) /* unknown divider */
+ MCFG_DEVICE_PROGRAM_MAP(cop01_map)
+ MCFG_DEVICE_IO_MAP(mightguy_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cop01_state, irq0_line_assert)
- Z80(config, m_audiocpu, AUDIOCPU_CLOCK/2); /* unknown divider */
- m_audiocpu->set_addrmap(AS_PROGRAM, &mightguy_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &mightguy_state::mightguy_audio_io_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, AUDIOCPU_CLOCK/2) /* unknown divider */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(mightguy_audio_io_map)
NB1412M2(config, m_prot, XTAL(8'000'000)/2); // divided by 2 maybe
m_prot->dac_callback().set("dac", FUNC(dac_byte_interface::data_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(cop01_state::screen_update_cop01));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cop01_state, screen_update_cop01)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cop01);
PALETTE(config, m_palette, FUNC(cop01_state::cop01_palette), 16+8*16+16*16, 256);
@@ -515,13 +515,14 @@ void mightguy_state::mightguy(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- YM3526(config, "ymsnd", AUDIOCPU_CLOCK/2).add_route(ALL_OUTPUTS, "mono", 1.0); /* unknown divider */
+ MCFG_DEVICE_ADD("ymsnd", YM3526, AUDIOCPU_CLOCK/2) /* unknown divider */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "mono", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) // unknown DAC
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/copsnrob.cpp b/src/mame/drivers/copsnrob.cpp
index 061158521e4..f55533f8aa3 100644
--- a/src/mame/drivers/copsnrob.cpp
+++ b/src/mame/drivers/copsnrob.cpp
@@ -248,11 +248,11 @@ void copsnrob_state::machine_reset()
}
-void copsnrob_state::copsnrob(machine_config &config)
-{
+MACHINE_CONFIG_START(copsnrob_state::copsnrob)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 14318180/16); /* 894886.25 kHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &copsnrob_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M6502,14318180/16) /* 894886.25 kHz */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
@@ -263,11 +263,11 @@ void copsnrob_state::copsnrob(machine_config &config)
m_screen->set_screen_update(FUNC(copsnrob_state::screen_update_copsnrob));
m_screen->set_palette(m_palette);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_copsnrob);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_copsnrob)
PALETTE(config, m_palette, palette_device::MONOCHROME);
copsnrob_audio(config);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/corona.cpp b/src/mame/drivers/corona.cpp
index 21453d8c290..83e220434c4 100644
--- a/src/mame/drivers/corona.cpp
+++ b/src/mame/drivers/corona.cpp
@@ -1385,29 +1385,28 @@ INPUT_PORTS_END
* Machine Drivers *
*******************************************/
-void corona_state::winner81(machine_config &config)
-{
+MACHINE_CONFIG_START(corona_state::winner81)
/* basic machine hardware */
- Z80(config, m_maincpu, WC81_MAIN_XTAL/8); /* measured */
- m_maincpu->set_addrmap(AS_PROGRAM, &corona_state::winner81_map);
- m_maincpu->set_addrmap(AS_IO, &corona_state::winner81_cpu_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, WC81_MAIN_XTAL/8) /* measured */
+ MCFG_DEVICE_PROGRAM_MAP(winner81_map)
+ MCFG_DEVICE_IO_MAP(winner81_cpu_io_map)
- Z80(config, m_soundcpu, WC81_MAIN_XTAL/10); /* measured */
- m_soundcpu->set_addrmap(AS_PROGRAM, &corona_state::winner81_sound_map);
- m_soundcpu->set_addrmap(AS_IO, &corona_state::winner81_sound_cpu_io_map);
- m_soundcpu->set_periodic_int(FUNC(corona_state::nmi_line_pulse), attotime::from_hz(244)); /* 244 Hz (1MHz/16/16/16) */
+ MCFG_DEVICE_ADD("soundcpu", Z80, WC81_MAIN_XTAL/10) /* measured */
+ MCFG_DEVICE_PROGRAM_MAP(winner81_sound_map)
+ MCFG_DEVICE_IO_MAP(winner81_sound_cpu_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(corona_state, nmi_line_pulse, 244) /* 244 Hz (1MHz/16/16/16) */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); //not accurate
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- m_screen->set_screen_update(FUNC(corona_state::screen_update_winner));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_winner)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
PALETTE(config, "palette", FUNC(corona_state::corona_palette), 0x100);
@@ -1416,31 +1415,30 @@ void corona_state::winner81(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
AY8912(config, "aysnd", AY_CLK1).add_route(ALL_OUTPUTS, "mono", 1.0); /* measured */
-}
+MACHINE_CONFIG_END
-void corona_state::winner82(machine_config &config)
-{
+MACHINE_CONFIG_START(corona_state::winner82)
/* basic machine hardware */
- Z80(config, m_maincpu, WC82_MAIN_XTAL/8); /* measured */
- m_maincpu->set_addrmap(AS_PROGRAM, &corona_state::winner82_map);
- m_maincpu->set_addrmap(AS_IO, &corona_state::winner82_cpu_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, WC82_MAIN_XTAL/8) /* measured */
+ MCFG_DEVICE_PROGRAM_MAP(winner82_map)
+ MCFG_DEVICE_IO_MAP(winner82_cpu_io_map)
- Z80(config, m_soundcpu, WC82_MAIN_XTAL/8); /* measured */
- m_soundcpu->set_addrmap(AS_PROGRAM, &corona_state::winner82_sound_map); /* IM1 instead of NMI */
- m_soundcpu->set_addrmap(AS_IO, &corona_state::winner82_sound_cpu_io_map);
+ MCFG_DEVICE_ADD("soundcpu", Z80, WC82_MAIN_XTAL/8) /* measured */
+ MCFG_DEVICE_PROGRAM_MAP(winner82_sound_map) /* IM1 instead of NMI */
+ MCFG_DEVICE_IO_MAP(winner82_sound_cpu_io_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); //not accurate
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- m_screen->set_screen_update(FUNC(corona_state::screen_update_winner));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_winner)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
PALETTE(config, "palette", FUNC(corona_state::corona_palette), 0x100);
@@ -1449,32 +1447,31 @@ void corona_state::winner82(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
AY8910(config, "aysnd", AY_CLK2).add_route(ALL_OUTPUTS, "mono", 1.0); /* measured */
-}
+MACHINE_CONFIG_END
-void corona_state::re800(machine_config &config)
-{
+MACHINE_CONFIG_START(corona_state::re800)
/* basic machine hardware */
- Z80(config, m_maincpu, RE_MAIN_XTAL/8); /* measured 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &corona_state::re800_map);
- m_maincpu->set_addrmap(AS_IO, &corona_state::re800_cpu_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, RE_MAIN_XTAL/8) /* measured 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(re800_map)
+ MCFG_DEVICE_IO_MAP(re800_cpu_io_map)
- Z80(config, m_soundcpu, RE_MAIN_XTAL/8); /* measured 2MHz */
- m_soundcpu->set_addrmap(AS_PROGRAM, &corona_state::re800_sound_map);
- m_soundcpu->set_addrmap(AS_IO, &corona_state::re800_sound_cpu_io_map);
- m_soundcpu->set_periodic_int(FUNC(corona_state::nmi_line_pulse), attotime::from_hz(244)); /* 244 Hz (1MHz/16/16/16) */
+ MCFG_DEVICE_ADD("soundcpu", Z80, RE_MAIN_XTAL/8) /* measured 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(re800_sound_map)
+ MCFG_DEVICE_IO_MAP(re800_sound_cpu_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(corona_state, nmi_line_pulse, 244) /* 244 Hz (1MHz/16/16/16) */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); //not accurate
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 1*8, 32*8-1);
- m_screen->set_screen_update(FUNC(corona_state::screen_update_winner));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_winner)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
PALETTE(config, "palette", FUNC(corona_state::corona_palette), 0x100);
@@ -1483,31 +1480,30 @@ void corona_state::re800(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
AY8912(config, "aysnd", AY_CLK2).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
-void corona_state::rcirulet(machine_config &config)
-{
+MACHINE_CONFIG_START(corona_state::rcirulet)
/* basic machine hardware */
- Z80(config, m_maincpu, RE_MAIN_XTAL/8); /* measured 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &corona_state::re800_map);
- m_maincpu->set_addrmap(AS_IO, &corona_state::re800_cpu_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, RE_MAIN_XTAL/8) /* measured 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(re800_map)
+ MCFG_DEVICE_IO_MAP(re800_cpu_io_map)
- Z80(config, m_soundcpu, RE_MAIN_XTAL/8); /* measured 2MHz */
- m_soundcpu->set_addrmap(AS_PROGRAM, &corona_state::winner82_sound_map); /* IM1 instead of NMI */
- m_soundcpu->set_addrmap(AS_IO, &corona_state::winner82_sound_cpu_io_map);
+ MCFG_DEVICE_ADD("soundcpu", Z80, RE_MAIN_XTAL/8) /* measured 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(winner82_sound_map) /* IM1 instead of NMI */
+ MCFG_DEVICE_IO_MAP(winner82_sound_cpu_io_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); //not accurate
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 1*8, 32*8-1);
- m_screen->set_screen_update(FUNC(corona_state::screen_update_winner));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_winner)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
PALETTE(config, "palette", FUNC(corona_state::corona_palette), 0x100);
@@ -1516,32 +1512,31 @@ void corona_state::rcirulet(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
AY8912(config, "aysnd", AY_CLK2).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
-void corona_state::luckyrlt(machine_config &config)
-{
+MACHINE_CONFIG_START(corona_state::luckyrlt)
/* basic machine hardware */
- Z80(config, m_maincpu, RE_MAIN_XTAL/8); /* measured 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &corona_state::luckyrlt_map);
- m_maincpu->set_addrmap(AS_IO, &corona_state::luckyrlt_cpu_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, RE_MAIN_XTAL/8) /* measured 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(luckyrlt_map)
+ MCFG_DEVICE_IO_MAP(luckyrlt_cpu_io_map)
- Z80(config, m_soundcpu, RE_MAIN_XTAL/8); /* measured 2MHz */
- m_soundcpu->set_addrmap(AS_PROGRAM, &corona_state::luckyrlt_sound_map);
- m_soundcpu->set_addrmap(AS_IO, &corona_state::luckyrlt_sound_cpu_io_map);
- m_soundcpu->set_periodic_int(FUNC(corona_state::nmi_line_pulse), attotime::from_hz(244)); /* 244 Hz (1MHz/16/16/16) */
+ MCFG_DEVICE_ADD("soundcpu", Z80, RE_MAIN_XTAL/8) /* measured 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(luckyrlt_sound_map)
+ MCFG_DEVICE_IO_MAP(luckyrlt_sound_cpu_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(corona_state, nmi_line_pulse, 244) /* 244 Hz (1MHz/16/16/16) */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); //not accurate
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 1*8, 30*8-1);
- m_screen->set_screen_update(FUNC(corona_state::screen_update_luckyrlt));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_luckyrlt)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
PALETTE(config, "palette", FUNC(corona_state::corona_palette), 0x100);
@@ -1550,7 +1545,7 @@ void corona_state::luckyrlt(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
AY8912(config, "aysnd", AY_CLK1).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/**************** Corona Co,LTD. Hardware ****************
diff --git a/src/mame/drivers/cortex.cpp b/src/mame/drivers/cortex.cpp
index 11159292b18..e127ba600ab 100644
--- a/src/mame/drivers/cortex.cpp
+++ b/src/mame/drivers/cortex.cpp
@@ -90,22 +90,26 @@ void cortex_state::mem_map(address_map &map)
map(0x0000, 0x7fff).bankr("bankr0").bankw("bankw0");
map(0x8000, 0xefff).ram();
map(0xf100, 0xf11f).ram(); // memory mapping unit
- map(0xf120, 0xf121).rw("crtc", FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
- //map(0xf140, 0xf147) // fdc tms9909
+ map(0xf120, 0xf120).rw("crtc", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0xf121, 0xf121).rw("crtc", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
+ //AM_RANGE(0xf140, 0xf147) // fdc tms9909
}
void cortex_state::io_map(address_map &map)
{
map.unmap_value_high();
- map(0x0000, 0x000f).mirror(0x30).w("control", FUNC(ls259_device::write_d0));
- map(0x0000, 0x000f).r(FUNC(cortex_state::pio_r));
- map(0x0010, 0x001f).r(FUNC(cortex_state::keyboard_r));
- //map(0x0080, 0x00bf).rw("uart1", FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite)); // RS232 (r12 = 80-bf)
- //map(0x0180, 0x01bf).rw("uart2", FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite)); // Cassette (r12 = 180-1bf)
- //map(0x01c0, 0x01ff).rw("dma", FUNC(tms9911_device::read), FUNC(tms9911_device::write)); // r12 = 1c0-1fe
- //map(0x0800, 0x080f).w(cortex_state::cent_data_w)); // r12 = 800-80e
- //map(0x0810, 0x0811).w(FUNC(cortex_state::cent_strobe_w)); // r12 = 810
- //map(0x0812, 0x0813).r(FUNC(cortex_state::cent_stat_r)); // CRU 409 (r12 = 812)
+ map(0x0000, 0x0007).mirror(0x18).w("control", FUNC(ls259_device::write_d0));
+ map(0x0000, 0x0000).r(FUNC(cortex_state::pio_r));
+ map(0x0001, 0x0001).r(FUNC(cortex_state::keyboard_r));
+ //AM_RANGE(0x0040, 0x005f) AM_DEVWRITE("uart1", tms9902_device, cruwrite) // RS232 (r12 = 80-bf)
+ //AM_RANGE(0x0008, 0x000b) AM_DEVREAD("uart1", tms9902_device, cruread) // RS232
+ //AM_RANGE(0x00c0, 0x00df) AM_DEVWRITE("uart2", tms9902_device, cruwrite) // Cassette (r12 = 180-1bf)
+ //AM_RANGE(0x0018, 0x001b) AM_DEVREAD("uart2", tms9902_device, cruread) // Cassette
+ //AM_RANGE(0x00e0, 0x00ff) AM_WRITE("dma", tms9911_device, write) // r12 = 1c0-1fe
+ //AM_RANGE(0x001c, 0x001f) AM_READ("dma", tms9911_device, read) // if reading is needed
+ //AM_RANGE(0x0400, 0x0407) AM_WRITE(cent_data_w) // r12 = 800-80e
+ //AM_RANGE(0x0408, 0x0408) AM_WRITE(cent_strobe_w) // r12 = 810
+ //AM_RANGE(0x0081, 0x0081) AM_READ(cent_stat_r) // CRU 409 (r12 = 812)
}
/* Input ports */
@@ -121,26 +125,12 @@ INPUT_PORTS_END
READ8_MEMBER( cortex_state::pio_r )
{
- switch (offset)
- {
- case 5:
- return m_kbd_ack;
-
- case 6:
- return m_vdp_int;
-
- case 2:
- case 3:
- return BIT(m_io_dsw->read(), offset);
-
- default:
- return 1;
- }
+ return (m_kbd_ack ? 0x20 : 0) | (m_vdp_int ? 0x40 : 0) | m_io_dsw->read() | 0x93;
}
READ8_MEMBER( cortex_state::keyboard_r )
{
- return BIT(m_term_data, offset);
+ return m_term_data;
}
WRITE_LINE_MEMBER( cortex_state::keyboard_ack_w )
diff --git a/src/mame/drivers/cosmic.cpp b/src/mame/drivers/cosmic.cpp
index 1413d03eb01..3ef350824df 100644
--- a/src/mame/drivers/cosmic.cpp
+++ b/src/mame/drivers/cosmic.cpp
@@ -340,15 +340,7 @@ READ8_MEMBER(cosmic_state::cosmica_pixel_clock_r)
READ8_MEMBER(cosmic_state::cosmicg_port_0_r)
{
/* The top four address lines from the CRTC are bits 0-3 */
- if (offset >= 4)
- return BIT(m_in_ports[0]->read(), offset);
- else
- return BIT(m_screen->vpos(), offset + 4);
-}
-
-READ8_MEMBER(cosmic_state::cosmicg_port_1_r)
-{
- return BIT(m_in_ports[1]->read(), offset);
+ return (m_in_ports[0]->read() & 0xf0) | ((m_screen->vpos() & 0xf0) >> 4);
}
READ8_MEMBER(cosmic_state::magspot_coinage_dip_r)
@@ -423,10 +415,10 @@ void cosmic_state::cosmicg_map(address_map &map)
void cosmic_state::cosmicg_io_map(address_map &map)
{
- map(0x0000, 0x000f).r(FUNC(cosmic_state::cosmicg_port_0_r));
- map(0x0010, 0x001f).r(FUNC(cosmic_state::cosmicg_port_1_r));
- map(0x0000, 0x002b).w(FUNC(cosmic_state::cosmicg_output_w));
- map(0x002c, 0x002f).w(FUNC(cosmic_state::cosmic_color_register_w));
+ map(0x00, 0x00).r(FUNC(cosmic_state::cosmicg_port_0_r));
+ map(0x01, 0x01).portr("IN1");
+ map(0x00, 0x15).w(FUNC(cosmic_state::cosmicg_output_w));
+ map(0x16, 0x17).w(FUNC(cosmic_state::cosmic_color_register_w));
}
@@ -1065,6 +1057,7 @@ void cosmic_state::panic(machine_config &config)
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}
@@ -1120,6 +1113,7 @@ void cosmic_state::cosmicg(machine_config &config)
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // NE556
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
// Other DACs include 3-bit binary-weighted (100K/50K/25K) DAC combined with another NE556 for attack march
}
@@ -1143,6 +1137,7 @@ void cosmic_state::magspot(machine_config &config)
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}
@@ -1172,6 +1167,7 @@ void cosmic_state::nomnlnd(machine_config &config)
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}
diff --git a/src/mame/drivers/cosmicos.cpp b/src/mame/drivers/cosmicos.cpp
index 628e0446309..f3aa02eba41 100644
--- a/src/mame/drivers/cosmicos.cpp
+++ b/src/mame/drivers/cosmicos.cpp
@@ -524,16 +524,17 @@ MACHINE_CONFIG_START(cosmicos_state::cosmicos)
/* video hardware */
config.set_default_layout(layout_cosmicos);
- DM9368(config, m_led, 0);
- TIMER(config, "digit").configure_periodic(FUNC(cosmicos_state::digit_tick), attotime::from_hz(100));
- TIMER(config, "interrupt").configure_periodic(FUNC(cosmicos_state::int_tick), attotime::from_hz(1000));
+ MCFG_DEVICE_ADD(DM9368_TAG, DM9368, 0)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("digit", cosmicos_state, digit_tick, attotime::from_hz(100))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("interrupt", cosmicos_state, int_tick, attotime::from_hz(1000))
SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
CDP1864(config, m_cti, 1.75_MHz_XTAL).set_screen(SCREEN_TAG);
m_cti->inlace_cb().set_constant(0);
@@ -547,9 +548,9 @@ MACHINE_CONFIG_START(cosmicos_state::cosmicos)
m_cti->add_route(ALL_OUTPUTS, "mono", 0.25);
/* devices */
- MCFG_QUICKLOAD_ADD("quickload", cosmicos_state, cosmicos, "bin")
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_QUICKLOAD_ADD("quickload", cosmicos_state, cosmicos, "bin", 0)
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("256").set_extra_options("4K,48K");
diff --git a/src/mame/drivers/cp1.cpp b/src/mame/drivers/cp1.cpp
index a329130a81e..c94ab232131 100644
--- a/src/mame/drivers/cp1.cpp
+++ b/src/mame/drivers/cp1.cpp
@@ -122,14 +122,14 @@ READ8_MEMBER(cp1_state::i8155_read)
if (!(m_port2 & 0x10))
{
- m_i8155->ale_w(BIT(m_port2, 7), offset);
- data |= m_i8155->data_r();
+ m_i8155->ale_w(space, BIT(m_port2, 7), offset);
+ data |= m_i8155->read(space, offset);
}
if ((m_io_config->read() & 0x02) && !(m_port2 & 0x20))
{
// CP3 RAM expansion
- m_i8155_cp3->ale_w(BIT(m_port2, 7), offset);
- data |= m_i8155_cp3->data_r();
+ m_i8155_cp3->ale_w(space, BIT(m_port2, 7), offset);
+ data |= m_i8155_cp3->read(space, offset);
}
return data;
@@ -139,14 +139,14 @@ WRITE8_MEMBER(cp1_state::i8155_write)
{
if (!(m_port2 & 0x10))
{
- m_i8155->ale_w(BIT(m_port2, 7), offset);
- m_i8155->data_w(data);
+ m_i8155->ale_w(space, BIT(m_port2, 7), offset);
+ m_i8155->write(space, offset, data);
}
if ((m_io_config->read() & 0x02) && !(m_port2 & 0x20))
{
// CP3 RAM expansion
- m_i8155_cp3->ale_w(BIT(m_port2, 7), offset);
- m_i8155_cp3->data_w(data);
+ m_i8155_cp3->ale_w(space, BIT(m_port2, 7), offset);
+ m_i8155_cp3->write(space, offset, data);
}
}
@@ -244,6 +244,7 @@ void cp1_state::machine_reset()
QUICKLOAD_LOAD_MEMBER( cp1_state, quickload )
{
+ address_space &space = machine().dummy_space();
char line[0x10];
int addr = 0;
while (image.fgets(line, 10) && addr < 0x100)
@@ -251,8 +252,8 @@ QUICKLOAD_LOAD_MEMBER( cp1_state, quickload )
int op = 0, arg = 0;
if (sscanf(line, "%d.%d", &op, &arg) == 2)
{
- m_i8155->memory_w(addr++, op);
- m_i8155->memory_w(addr++, arg);
+ m_i8155->memory_w(space, addr++, op);
+ m_i8155->memory_w(space, addr++, arg);
}
else
{
@@ -263,8 +264,7 @@ QUICKLOAD_LOAD_MEMBER( cp1_state, quickload )
return image_init_result::PASS;
}
-void cp1_state::cp1(machine_config &config)
-{
+MACHINE_CONFIG_START(cp1_state::cp1)
/* basic machine hardware */
i8049_device &maincpu(I8049(config, m_maincpu, 6_MHz_XTAL));
maincpu.set_addrmap(AS_IO, &cp1_state::cp1_io);
@@ -287,10 +287,10 @@ void cp1_state::cp1(machine_config &config)
config.set_default_layout(layout_cp1);
- CASSETTE(config, m_cassette);
+ MCFG_CASSETTE_ADD("cassette")
- QUICKLOAD(config, "quickload").set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(cp1_state, quickload), this), "obj", attotime::from_seconds(1));
-}
+ MCFG_QUICKLOAD_ADD("quickload", cp1_state, quickload, "obj", 1)
+MACHINE_CONFIG_END
/* ROM definition */
/*
diff --git a/src/mame/drivers/cps1.cpp b/src/mame/drivers/cps1.cpp
index 0d0394a4e40..888dc71291a 100644
--- a/src/mame/drivers/cps1.cpp
+++ b/src/mame/drivers/cps1.cpp
@@ -3383,28 +3383,28 @@ MACHINE_START_MEMBER(cps_state,qsound)
membank("bank1")->configure_entries(0, 6, memregion("audiocpu")->base() + 0x10000, 0x4000);
}
-void cps_state::cps1_10MHz(machine_config &config)
-{
+MACHINE_CONFIG_START(cps_state::cps1_10MHz)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(10'000'000)); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(10'000'000) ) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
- Z80(config, m_audiocpu, XTAL(3'579'545)); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sub_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(sub_map)
MCFG_MACHINE_START_OVERRIDE(cps_state,cps1)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(CPS_PIXEL_CLOCK, CPS_HTOTAL, CPS_HBEND, CPS_HBSTART, CPS_VTOTAL, CPS_VBEND, CPS_VBSTART);
- m_screen->set_screen_update(FUNC(cps_state::screen_update_cps1));
- m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(CPS_PIXEL_CLOCK, CPS_HTOTAL, CPS_HBEND, CPS_HBSTART, CPS_VTOTAL, CPS_VBEND, CPS_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
- PALETTE(config, m_palette).set_entries(0xc00);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -3418,26 +3418,27 @@ void cps_state::cps1_10MHz(machine_config &config)
ym2151.add_route(1, "mono", 0.35);
/* CPS PPU is fed by a 16mhz clock,pin 117 outputs a 4mhz clock which is divided by 4 using 2 74ls74 */
- OKIM6295(config, m_oki, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30); // pin 7 can be changed by the game code, see f006 on z80
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
-void cps_state::forgottn(machine_config &config)
-{
+MACHINE_CONFIG_START(cps_state::forgottn)
cps1_10MHz(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::forgottn_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(forgottn_map)
upd4701_device &upd4701(UPD4701A(config, "upd4701"));
upd4701.set_portx_tag("DIAL0");
upd4701.set_porty_tag("DIAL1");
-}
+MACHINE_CONFIG_END
-void cps_state::cps1_12MHz(machine_config &config)
-{
+MACHINE_CONFIG_START(cps_state::cps1_12MHz)
cps1_10MHz(config);
/* basic machine hardware */
- m_maincpu->set_clock(XTAL(12'000'000)); /* verified on pcb */
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK( XTAL(12'000'000) ) /* verified on pcb */
+MACHINE_CONFIG_END
void cps_state::pang3(machine_config &config)
{
@@ -3447,46 +3448,48 @@ void cps_state::pang3(machine_config &config)
EEPROM_93C46_16BIT(config, "eeprom");
}
-void cps_state::ganbare(machine_config &config)
-{
+MACHINE_CONFIG_START(cps_state::ganbare)
cps1_10MHz(config);
/* basic machine hardware */
- TIMER(config, "scantimer").configure_scanline(FUNC(cps_state::ganbare_interrupt), "screen", 0, 1); // need to investigate more
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cps_state, ganbare_interrupt, "screen", 0, 1) // need to investigate more
- M48T35(config, m_m48t35, 0);
-}
+ MCFG_DEVICE_ADD("m48t35", M48T35, 0)
+MACHINE_CONFIG_END
-void cps_state::qsound(machine_config &config)
-{
+MACHINE_CONFIG_START(cps_state::qsound)
cps1_12MHz(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::qsound_main_map);
+ MCFG_DEVICE_REPLACE("maincpu", M68000, XTAL(12'000'000) ) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(qsound_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
- Z80(config.replace(), m_audiocpu, XTAL(8'000'000)); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::qsound_sub_map);
- m_audiocpu->set_addrmap(AS_OPCODES, &cps_state::qsound_decrypted_opcodes_map);
- m_audiocpu->set_periodic_int(FUNC(cps_state::irq0_line_hold), attotime::from_hz(250)); // measured (cps2.cpp)
+ MCFG_DEVICE_REPLACE("audiocpu", Z80, XTAL(8'000'000)) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(qsound_sub_map)
+ MCFG_DEVICE_OPCODES_MAP(qsound_decrypted_opcodes_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(cps_state, irq0_line_hold, 250) // measured (cps2.c)
MCFG_MACHINE_START_OVERRIDE(cps_state, qsound)
EEPROM_93C46_8BIT(config, "eeprom");
/* sound hardware */
- config.device_remove("mono");
+ MCFG_DEVICE_REMOVE("mono")
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- config.device_remove("soundlatch");
- config.device_remove("soundlatch2");
- config.device_remove("2151");
- config.device_remove("oki");
+ MCFG_DEVICE_REMOVE("soundlatch")
+ MCFG_DEVICE_REMOVE("soundlatch2")
+ MCFG_DEVICE_REMOVE("2151")
+ MCFG_DEVICE_REMOVE("oki")
- qsound_device &qsound(QSOUND(config, "qsound"));
- qsound.add_route(0, "lspeaker", 1.0);
- qsound.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("qsound", QSOUND)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
void cps_state::wofhfh(machine_config &config)
{
@@ -3496,23 +3499,23 @@ void cps_state::wofhfh(machine_config &config)
EEPROM_93C46_8BIT(config, "eeprom");
}
-void cps_state::sf2m3(machine_config &config)
-{
+MACHINE_CONFIG_START(cps_state::sf2m3)
cps1_12MHz(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::sf2m3_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sf2m3_map)
+MACHINE_CONFIG_END
-void cps_state::sf2cems6(machine_config &config)
-{
+MACHINE_CONFIG_START(cps_state::sf2cems6)
cps1_10MHz(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::sf2cems6_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sf2cems6_map)
+MACHINE_CONFIG_END
-void cps_state::sf2m10(machine_config &config)
-{
+MACHINE_CONFIG_START(cps_state::sf2m10)
cps1_12MHz(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::sf2m10_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sf2m10_map)
+MACHINE_CONFIG_END
/***************************************************************************
@@ -9843,52 +9846,53 @@ Sound rom match various romset
ROM_START( sf2ceblp )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
- ROM_LOAD16_BYTE( "1k.31.e13", 0x00000, 0x20000, CRC(ea78f9b4) SHA1(967f84615f6ef4d046df3593d5ffce0d43a3ac64) ) // 27c010
- ROM_LOAD16_BYTE( "se.36.j13", 0x00001, 0x20000, CRC(d30c263e) SHA1(6d8b13f82dde3237115306d91f37ac95b8238e0a) ) // 27c010
- ROM_LOAD16_BYTE( "0e.30.e11", 0x40000, 0x20000, CRC(005b54cc) SHA1(3d3d7742c11f31cc62d81931dc970cd1f4a26835) ) // 27c010
- ROM_LOAD16_BYTE( "de.35.j11", 0x40001, 0x20000, CRC(c184d26d) SHA1(b1011e869d0b84c1ab609fcf193b46c7d9cc3b28) ) // 27c010
- ROM_LOAD16_BYTE( "bk.29.e10", 0x80000, 0x20000, CRC(524f5c55) SHA1(67adfd36bb325c4a6d3e1e5b668c4dc983ac0a62) ) // 27c010
- ROM_LOAD16_BYTE( "ff.34.j10", 0x80001, 0x20000, CRC(f06a12f2) SHA1(ddc431ce01392d4a7562760743abd9ea73b06cf3) ) // 27c010
- ROM_LOAD16_BYTE( "8k.28.e9", 0xc0000, 0x40000, CRC(b7ad5214) SHA1(17b05e0aa9a4eb5f1aaafe35fa029d2a9aea530d) ) // 27c020
- ROM_LOAD16_BYTE( "tf.33.j9", 0xc0001, 0x40000, CRC(6340b914) SHA1(443e37a06058548c8ce7a15ecd10a6635e69d09f) ) // 27c020
-
- ROM_REGION( 0x600000, "gfx", 0 ) // all 27c020
- ROMX_LOAD( "24.e7", 0x000000, 0x40000, CRC(a8b5633a) SHA1(6548a89d616910d06db126eb1a9c6b5979baff03) , ROM_SKIP(7) ) // sldh
- ROMX_LOAD( "14.c7", 0x000001, 0x40000, CRC(5db24ca7) SHA1(0543e89174fecc866a08e0ecc7c31a6efca15da5) , ROM_SKIP(7) )
- ROMX_LOAD( "26.e9", 0x000002, 0x40000, CRC(82e8e384) SHA1(a8849bdb97c496777ba87e8f1942585c0fc9a29b) , ROM_SKIP(7) ) // sldh
- ROMX_LOAD( "16.c9", 0x000003, 0x40000, CRC(1fd98ad0) SHA1(c0edf8ad305d5f8ba72498024cacf28b08491a57) , ROM_SKIP(7) )
- ROMX_LOAD( "20.e3", 0x000004, 0x40000, CRC(8d5d0045) SHA1(74691132c740cc28585ebe9469fa36fea28c1cef) , ROM_SKIP(7) )
- ROMX_LOAD( "10.c3", 0x000005, 0x40000, CRC(eb48f7f2) SHA1(f1d269949a8e06434e2206842535d86a70bcf58f) , ROM_SKIP(7) )
- ROMX_LOAD( "22.e5", 0x000006, 0x40000, CRC(4109d637) SHA1(f7b0961ae3053a0751749ab77f27503e03ae1e5b) , ROM_SKIP(7) )
- ROMX_LOAD( "12.c5", 0x000007, 0x40000, CRC(5d21d8b3) SHA1(1e75a4bf8d750e0858d70a489b59b50839b8c720) , ROM_SKIP(7) )
-
- ROMX_LOAD( "25.e8", 0x200000, 0x40000, CRC(72e923df) SHA1(f8db61f8a768fbf99a0be54af712aa19161978d1) , ROM_SKIP(7) ) // sldh
- ROMX_LOAD( "15.c8", 0x200001, 0x40000, CRC(9a96be48) SHA1(c0a46aefba442196ead30d4f5de2b0370b1c03f0) , ROM_SKIP(7) )
- ROMX_LOAD( "27.e10", 0x200002, 0x40000, CRC(4a3a8d09) SHA1(eaa7307963c7a5381a4d84a4ebcc483b55cc1411) , ROM_SKIP(7) ) // sldh
- ROMX_LOAD( "17.c10", 0x200003, 0x40000, CRC(a917a922) SHA1(2186095f8473538756ca22dbdb2c68d17cbf24ab) , ROM_SKIP(7) )
- ROMX_LOAD( "21.e4", 0x200004, 0x40000, CRC(55c2b455) SHA1(677ac8f988ea3c0564b2dd178ee2ab7077aeafc8) , ROM_SKIP(7) )
- ROMX_LOAD( "11.c4", 0x200005, 0x40000, CRC(ff36859e) SHA1(7f5ab9daacfdb338913d6bca723efe3128dc931f) , ROM_SKIP(7) )
- ROMX_LOAD( "23.e6", 0x200006, 0x40000, CRC(ef9c2d4d) SHA1(35c3ab5a3cc3ce2219b596c4c3e97d28b9cc2297) , ROM_SKIP(7) )
- ROMX_LOAD( "13.c6", 0x200007, 0x40000, CRC(bc937c96) SHA1(772ff4e06093043f693729d8e94e7f8e3f8e866f) , ROM_SKIP(7) )
-
- ROMX_LOAD( "6.a8", 0x400000, 0x40000, CRC(023baa18) SHA1(671600e629aff1cc161567ee4a5ceb2228731a36) , ROM_SKIP(7) )
- ROMX_LOAD( "5.a7", 0x400001, 0x40000, CRC(a6ad6ef3) SHA1(c670931a98dfc6ca39d54d8cb8848421232d8c8c) , ROM_SKIP(7) )
- ROMX_LOAD( "8.a10", 0x400002, 0x40000, CRC(26fb340c) SHA1(270455c10a0c7e4ba95a38ab7d815faedfe51fde) , ROM_SKIP(7) )
- ROMX_LOAD( "7.a9", 0x400003, 0x40000, CRC(f56085ba) SHA1(ce8c33d7be271a501e770da5249778f62ca0e0a1) , ROM_SKIP(7) )
- ROMX_LOAD( "1.a3", 0x400004, 0x40000, CRC(877b2b18) SHA1(36ebef5b534d2449b163df38b9a98f769c1d85ed) , ROM_SKIP(7) )
- ROMX_LOAD( "2.a4", 0x400005, 0x40000, CRC(144aa4c9) SHA1(f00bf10f04ae774dda7e3a1c862aba67f70d61c3) , ROM_SKIP(7) )
- ROMX_LOAD( "4.a6", 0x400006, 0x40000, CRC(f2c400b4) SHA1(090ff7184cd2a1b992cc9f1f8c03f8832bc11416) , ROM_SKIP(7) )
- ROMX_LOAD( "3.a5", 0x400007, 0x40000, CRC(8053335d) SHA1(c653cb249401162fbf39f293e1999fe5e09c35c4) , ROM_SKIP(7) )
-
- ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
- ROM_LOAD( "snd.9.b13", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) // 27c512
- ROM_CONTINUE( 0x10000, 0x08000 )
- ROM_REGION( 0x40000, "oki", 0 ) /* Samples, both 27c010 */
- ROM_LOAD( "9k.18.c11", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
- ROM_LOAD( "lk.19.c13", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ ROM_LOAD16_BYTE( "prg31.bin", 0x00000, 0x20000, CRC(ea78f9b4) SHA1(967f84615f6ef4d046df3593d5ffce0d43a3ac64) )
+ ROM_LOAD16_BYTE( "prg36.bin", 0x00001, 0x20000, CRC(d30c263e) SHA1(6d8b13f82dde3237115306d91f37ac95b8238e0a) )
+ ROM_LOAD16_BYTE( "prg30.bin", 0x40000, 0x20000, CRC(005b54cc) SHA1(3d3d7742c11f31cc62d81931dc970cd1f4a26835) )
+ ROM_LOAD16_BYTE( "prg35.bin", 0x40001, 0x20000, CRC(c184d26d) SHA1(b1011e869d0b84c1ab609fcf193b46c7d9cc3b28) )
+ ROM_LOAD16_BYTE( "prg29.bin", 0x80000, 0x20000, CRC(524f5c55) SHA1(67adfd36bb325c4a6d3e1e5b668c4dc983ac0a62) )
+ ROM_LOAD16_BYTE( "prg34.bin", 0x80001, 0x20000, CRC(f06a12f2) SHA1(ddc431ce01392d4a7562760743abd9ea73b06cf3) )
+ ROM_LOAD16_BYTE( "prg28.bin", 0xc0000, 0x40000, CRC(b7ad5214) SHA1(17b05e0aa9a4eb5f1aaafe35fa029d2a9aea530d) )
+ ROM_LOAD16_BYTE( "prg33.bin", 0xc0001, 0x40000, CRC(6340b914) SHA1(443e37a06058548c8ce7a15ecd10a6635e69d09f) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "24.bin", 0x000000, 0x40000, CRC(a8b5633a) SHA1(6548a89d616910d06db126eb1a9c6b5979baff03) , ROM_SKIP(7) ) // sldh
+ ROMX_LOAD( "14.bin", 0x000001, 0x40000, CRC(5db24ca7) SHA1(0543e89174fecc866a08e0ecc7c31a6efca15da5) , ROM_SKIP(7) )
+ ROMX_LOAD( "26.bin", 0x000002, 0x40000, CRC(82e8e384) SHA1(a8849bdb97c496777ba87e8f1942585c0fc9a29b) , ROM_SKIP(7) ) // sldh
+ ROMX_LOAD( "16.bin", 0x000003, 0x40000, CRC(1fd98ad0) SHA1(c0edf8ad305d5f8ba72498024cacf28b08491a57) , ROM_SKIP(7) )
+ ROMX_LOAD( "20.bin", 0x000004, 0x40000, CRC(8d5d0045) SHA1(74691132c740cc28585ebe9469fa36fea28c1cef) , ROM_SKIP(7) )
+ ROMX_LOAD( "10.bin", 0x000005, 0x40000, CRC(eb48f7f2) SHA1(f1d269949a8e06434e2206842535d86a70bcf58f) , ROM_SKIP(7) )
+ ROMX_LOAD( "22.bin", 0x000006, 0x40000, CRC(4109d637) SHA1(f7b0961ae3053a0751749ab77f27503e03ae1e5b) , ROM_SKIP(7) )
+ ROMX_LOAD( "12.bin", 0x000007, 0x40000, CRC(5d21d8b3) SHA1(1e75a4bf8d750e0858d70a489b59b50839b8c720) , ROM_SKIP(7) )
+
+ ROMX_LOAD( "25.bin", 0x200000, 0x40000, CRC(72e923df) SHA1(f8db61f8a768fbf99a0be54af712aa19161978d1) , ROM_SKIP(7) ) // sldh
+ ROMX_LOAD( "15.bin", 0x200001, 0x40000, CRC(9a96be48) SHA1(c0a46aefba442196ead30d4f5de2b0370b1c03f0) , ROM_SKIP(7) )
+ ROMX_LOAD( "27.bin", 0x200002, 0x40000, CRC(4a3a8d09) SHA1(eaa7307963c7a5381a4d84a4ebcc483b55cc1411) , ROM_SKIP(7) ) // sldh
+ ROMX_LOAD( "17.bin", 0x200003, 0x40000, CRC(a917a922) SHA1(2186095f8473538756ca22dbdb2c68d17cbf24ab) , ROM_SKIP(7) )
+ ROMX_LOAD( "21.bin", 0x200004, 0x40000, CRC(55c2b455) SHA1(677ac8f988ea3c0564b2dd178ee2ab7077aeafc8) , ROM_SKIP(7) )
+ ROMX_LOAD( "11.bin", 0x200005, 0x40000, CRC(ff36859e) SHA1(7f5ab9daacfdb338913d6bca723efe3128dc931f) , ROM_SKIP(7) )
+ ROMX_LOAD( "23.bin", 0x200006, 0x40000, CRC(ef9c2d4d) SHA1(35c3ab5a3cc3ce2219b596c4c3e97d28b9cc2297) , ROM_SKIP(7) )
+ ROMX_LOAD( "13.bin", 0x200007, 0x40000, CRC(bc937c96) SHA1(772ff4e06093043f693729d8e94e7f8e3f8e866f) , ROM_SKIP(7) )
+
+ ROMX_LOAD( "6.bin", 0x400000, 0x40000, CRC(023baa18) SHA1(671600e629aff1cc161567ee4a5ceb2228731a36) , ROM_SKIP(7) )
+ ROMX_LOAD( "5.bin", 0x400001, 0x40000, CRC(a6ad6ef3) SHA1(c670931a98dfc6ca39d54d8cb8848421232d8c8c) , ROM_SKIP(7) )
+ ROMX_LOAD( "8.bin", 0x400002, 0x40000, CRC(26fb340c) SHA1(270455c10a0c7e4ba95a38ab7d815faedfe51fde) , ROM_SKIP(7) )
+ ROMX_LOAD( "7.bin", 0x400003, 0x40000, CRC(f56085ba) SHA1(ce8c33d7be271a501e770da5249778f62ca0e0a1) , ROM_SKIP(7) )
+ ROMX_LOAD( "1.bin", 0x400004, 0x40000, CRC(877b2b18) SHA1(36ebef5b534d2449b163df38b9a98f769c1d85ed) , ROM_SKIP(7) )
+ ROMX_LOAD( "2.bin", 0x400005, 0x40000, CRC(144aa4c9) SHA1(f00bf10f04ae774dda7e3a1c862aba67f70d61c3) , ROM_SKIP(7) )
+ ROMX_LOAD( "4.bin", 0x400006, 0x40000, CRC(f2c400b4) SHA1(090ff7184cd2a1b992cc9f1f8c03f8832bc11416) , ROM_SKIP(7) )
+ ROMX_LOAD( "3.bin", 0x400007, 0x40000, CRC(8053335d) SHA1(c653cb249401162fbf39f293e1999fe5e09c35c4) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
- ROM_REGION( 0x2000, "protection_pic", 0 )
+ ROM_REGION( 0x2000, "protectin_pic", 0 )
ROM_LOAD( "pic16c55", 0x00000, 0x2000, BAD_DUMP CRC(f22e2311) SHA1(320edfba140728599e91c01e863a8b6d071e4bbf) )
ROM_END
@@ -13164,7 +13168,7 @@ READ16_MEMBER(cps_state::ganbare_ram_r)
uint16_t result = 0xffff;
if (ACCESSING_BITS_0_7)
- result = (result & ~0x00ff) | m_m48t35->read(offset);
+ result = (result & ~0x00ff) | m_m48t35->read(space, offset, 0xff);
if (ACCESSING_BITS_8_15)
result = (result & ~0xff00) | (m_mainram[offset] & 0xff00);
@@ -13176,7 +13180,7 @@ WRITE16_MEMBER(cps_state::ganbare_ram_w)
COMBINE_DATA(&m_mainram[offset]);
if (ACCESSING_BITS_0_7)
- m_m48t35->write(offset, data & 0xff);
+ m_m48t35->write(space, offset, data & 0xff, 0xff);
}
void cps_state::init_ganbare()
diff --git a/src/mame/drivers/cps2.cpp b/src/mame/drivers/cps2.cpp
index 40abe058624..2f5ad6bd244 100644
--- a/src/mame/drivers/cps2.cpp
+++ b/src/mame/drivers/cps2.cpp
@@ -1295,62 +1295,63 @@ MACHINE_START_MEMBER(cps2_state,cps2)
}
-void cps2_state::cps2(machine_config &config)
-{
+MACHINE_CONFIG_START(cps2_state::cps2)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &cps2_state::cps2_map);
- m_maincpu->set_addrmap(AS_OPCODES, &cps2_state::decrypted_opcodes_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(cps2_state::cps2_interrupt), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(cps2_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cps2_state, cps2_interrupt, "screen", 0, 1)
- Z80(config, m_audiocpu, XTAL(8'000'000));
- m_audiocpu->set_addrmap(AS_PROGRAM, &cps2_state::qsound_sub_map);
- m_audiocpu->set_periodic_int(FUNC(cps2_state::irq0_line_hold), attotime::from_hz(250)); // measured
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(8'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(qsound_sub_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(cps2_state, irq0_line_hold, 250) // measured
MCFG_MACHINE_START_OVERRIDE(cps2_state, cps2)
EEPROM_93C46_16BIT(config, "eeprom");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
- m_screen->set_raw(CPS_PIXEL_CLOCK, CPS_HTOTAL, CPS_HBEND, CPS_HBSTART, CPS_VTOTAL, CPS_VBEND, CPS_VBSTART);
- m_screen->set_screen_update(FUNC(cps2_state::screen_update_cps2));
- m_screen->screen_vblank().set(FUNC(cps2_state::screen_vblank_cps1));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_SCREEN_RAW_PARAMS(CPS_PIXEL_CLOCK, CPS_HTOTAL, CPS_HBEND, CPS_HBSTART, CPS_VTOTAL, CPS_VBEND, CPS_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(cps2_state, screen_update_cps2)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps2_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
- PALETTE(config, m_palette).set_entries(0xc00);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- QSOUND(config, m_qsound);
- m_qsound->add_route(0, "lspeaker", 1.0);
- m_qsound->add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("qsound", QSOUND)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
-void cps2_state::dead_cps2(machine_config &config)
-{
+MACHINE_CONFIG_START(cps2_state::dead_cps2)
cps2(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps2_state::dead_cps2_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dead_cps2_map)
+MACHINE_CONFIG_END
-void cps2_state::gigaman2(machine_config &config)
-{
+MACHINE_CONFIG_START(cps2_state::gigaman2)
cps2(config);
- config.device_remove("audiocpu");
+ MCFG_DEVICE_REMOVE("audiocpu")
// gigaman2 has an AT89C4051 (8051) MCU as an audio cpu, no qsound.
- config.device_remove("qsound");
+ MCFG_DEVICE_REMOVE("qsound")
- OKIM6295(config, m_oki, XTAL(32'000'000)/32, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
- m_oki->add_route(ALL_OUTPUTS, "lspeaker", 0.47);
- m_oki->add_route(ALL_OUTPUTS, "rspeaker", 0.47);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(32'000'000)/32, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47)
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/cps3.cpp b/src/mame/drivers/cps3.cpp
index 3cf6d516ab2..10f9558b8e2 100644
--- a/src/mame/drivers/cps3.cpp
+++ b/src/mame/drivers/cps3.cpp
@@ -464,8 +464,9 @@ hardware modification to the security cart.....
#include "machine/intelfsh.h"
#include "machine/nvram.h"
#include "includes/cps3.h"
-#include "machine/nscsi_cd.h"
-#include "machine/wd33c9x.h"
+#include "bus/scsi/scsi.h"
+#include "bus/scsi/scsicd.h"
+#include "machine/wd33c93.h"
#include "screen.h"
#include "speaker.h"
@@ -772,6 +773,12 @@ void cps3_state::cps3_decrypt_bios()
#endif
}
+void cps3_state::init_common(void)
+{
+ m_eeprom = std::make_unique<uint32_t[]>(0x400/4);
+ subdevice<nvram_device>("eeprom")->set_base(m_eeprom.get(), 0x400);
+}
+
void cps3_state::init_crypt(uint32_t key1, uint32_t key2, int altEncryption)
{
@@ -808,6 +815,8 @@ void cps3_state::init_crypt(uint32_t key1, uint32_t key2, int altEncryption)
m_maincpu->sh2drc_add_fastram(0x040C0030, 0x040C003b, 0, &m_tilemap30_regs_base[0]);
cps3_decrypt_bios();
+
+ init_common();
}
void cps3_state::init_redearth() { init_crypt(0x9e300ab1, 0xa175b82c, 0); }
@@ -894,8 +903,13 @@ void cps3_state::cps3_set_mame_colours(int colournum, uint16_t data, uint32_t fa
void cps3_state::video_start()
{
- m_ss_ram = make_unique_clear<uint32_t[]>(0x10000/4);
- m_char_ram = make_unique_clear<uint32_t[]>(0x800000/4);
+ m_ss_ram = std::make_unique<uint32_t[]>(0x10000/4);
+ memset(m_ss_ram.get(), 0x00, 0x10000);
+ save_pointer(NAME(m_ss_ram), 0x10000/4);
+
+ m_char_ram = std::make_unique<uint32_t[]>(0x800000/4);
+ memset(m_char_ram.get(), 0x00, 0x800000);
+ save_pointer(NAME(m_char_ram), 0x800000 /4);
/* create the char set (gfx will then be updated dynamically from RAM) */
m_gfxdecode->set_gfx(0, std::make_unique<gfx_element>(m_palette, cps3_tiles8x8_layout, (uint8_t *)m_ss_ram.get(), 0, m_palette->entries() / 16, 0));
@@ -908,7 +922,8 @@ void cps3_state::video_start()
//decode_charram();
- m_mame_colours = make_unique_clear<uint32_t[]>(0x80000/2);
+ m_mame_colours = std::make_unique<uint32_t[]>(0x80000/4);
+ memset(m_mame_colours.get(), 0x00, 0x80000);
m_screenwidth = 384;
@@ -919,14 +934,6 @@ void cps3_state::video_start()
m_renderbuffer_clip.set(0, m_screenwidth-1, 0, 224-1);
m_renderbuffer_bitmap.fill(0x3f, m_renderbuffer_clip);
-
- save_item(NAME(m_ss_pal_base));
- save_item(NAME(m_unk_vidregs));
- save_item(NAME(m_ss_bank_base));
-
- save_pointer(NAME(m_ss_ram), 0x10000/4);
- save_pointer(NAME(m_char_ram), 0x800000/4);
- save_pointer(NAME(m_mame_colours), 0x80000/2);
}
// the 0x400 bit in the tilemap regs is "draw it upside-down" (bios tilemap during flashing, otherwise capcom logo is flipped)
@@ -1080,16 +1087,10 @@ uint32_t cps3_state::screen_update_cps3(screen_device &screen, bitmap_rgb32 &bit
uint32_t fszx = (fullscreenzoomx << 16) / 0x40;
uint32_t fszy = (fullscreenzoomy << 16) / 0x40;
- if (fullscreenzoomx == 0x40 && fullscreenzoomy == 0x40)
- {
- m_renderbuffer_clip = cliprect;
- }
- else
- {
- m_renderbuffer_clip.set(
- (cliprect.left() * fszx) >> 16, (((cliprect.right() + 1) * fszx + 0x8000) >> 16) - 1,
- (cliprect.top() * fszy) >> 16, (((cliprect.bottom() + 1) * fszy + 0x8000) >> 16) - 1);
- }
+ m_renderbuffer_clip.set(
+ 0, ((m_screenwidth*fszx) >> 16) - 1,
+ 0, ((224 * fszx) >> 16) - 1);
+
m_renderbuffer_bitmap.fill(0, m_renderbuffer_clip);
/* Sprites */
@@ -1164,7 +1165,7 @@ uint32_t cps3_state::screen_update_cps3(screen_device &screen, bitmap_rgb32 &bit
if (bg_drawn[tilemapnum] == 0)
{
- for (int uu = m_renderbuffer_clip.top(); uu <= m_renderbuffer_clip.bottom(); uu++)
+ for (int uu = 0; uu < 1023; uu++)
{
cps3_draw_tilemapsprite_line(tilemapnum, uu, m_renderbuffer_bitmap, m_renderbuffer_clip);
}
@@ -1269,35 +1270,21 @@ uint32_t cps3_state::screen_update_cps3(screen_device &screen, bitmap_rgb32 &bit
}
}
- if (fullscreenzoomx == 0x40 && fullscreenzoomy == 0x40)
+ /* copy render bitmap with zoom */
{
- /* copy render bitmap without zoom */
- for (uint32_t rendery = cliprect.top(); rendery <= cliprect.bottom(); rendery++)
- {
- uint32_t* dstbitmap = &bitmap.pix32(rendery);
- uint32_t* srcbitmap = &m_renderbuffer_bitmap.pix32(rendery);
-
- for (uint32_t renderx = cliprect.left(); renderx <= cliprect.right(); renderx++)
- {
- dstbitmap[renderx] = m_mame_colours[srcbitmap[renderx] & 0x1ffff];
- }
- }
- }
- else
- {
- /* copy render bitmap with zoom */
- uint32_t srcy = cliprect.top() * fszy;
- for (uint32_t rendery = cliprect.top(); rendery <= cliprect.bottom(); rendery++)
+ uint32_t srcy = 0;
+ for (uint32_t rendery = 0; rendery < 224; rendery++)
{
uint32_t* dstbitmap = &bitmap.pix32(rendery);
uint32_t* srcbitmap = &m_renderbuffer_bitmap.pix32(srcy >> 16);
- uint32_t srcx = cliprect.left() * fszx;
+ uint32_t srcx = 0;
- for (uint32_t renderx = cliprect.left(); renderx <= cliprect.right(); renderx++)
+ for (uint32_t renderx = 0; renderx < m_screenwidth; renderx++)
{
dstbitmap[renderx] = m_mame_colours[srcbitmap[srcx >> 16] & 0x1ffff];
srcx += fszx;
}
+
srcy += fszy;
}
}
@@ -1405,22 +1392,22 @@ READ32_MEMBER(cps3_state::cps3_gfxflash_r)
if (ACCESSING_BITS_24_31) // GFX Flash 1
{
//logerror("read GFX flash chip %s addr %02x\n", chip0->tag(), (offset<<1));
- result |= chip0->read(offset<<1) << 24;
+ result |= chip0->read(space, (offset<<1)) << 24;
}
if (ACCESSING_BITS_16_23) // GFX Flash 2
{
//logerror("read GFX flash chip %s addr %02x\n", chip1->tag(), (offset<<1));
- result |= chip1->read(offset<<1) << 16;
+ result |= chip1->read(space, (offset<<1)) << 16;
}
if (ACCESSING_BITS_8_15) // GFX Flash 1
{
//logerror("read GFX flash chip %s addr %02x\n", chip0->tag(), (offset<<1)+1);
- result |= chip0->read((offset<<1)+0x1) << 8;
+ result |= chip0->read(space, (offset<<1)+0x1) << 8;
}
if (ACCESSING_BITS_0_7) // GFX Flash 2
{
//logerror("read GFX flash chip %s addr %02x\n", chip1->tag(), (offset<<1)+1);
- result |= chip1->read((offset<<1)+0x1) << 0;
+ result |= chip1->read(space, (offset<<1)+0x1) << 0;
}
//printf("read GFX flash chips addr %02x returning %08x mem_mask %08x crambank %08x gfxbank %08x\n", offset*2, result,mem_mask, m_cram_bank, m_cram_gfxflash_bank );
@@ -1445,25 +1432,25 @@ WRITE32_MEMBER(cps3_state::cps3_gfxflash_w)
{
command = (data >> 24) & 0xff;
//logerror("write to GFX flash chip %s addr %02x cmd %02x\n", chip0->tag(), (offset<<1), command);
- chip0->write((offset<<1), command);
+ chip0->write(space, (offset<<1), command);
}
if (ACCESSING_BITS_16_23) // GFX Flash 2
{
command = (data >> 16) & 0xff;
//logerror("write to GFX flash chip %s addr %02x cmd %02x\n", chip1->tag(), (offset<<1), command);
- chip1->write((offset<<1), command);
+ chip1->write(space, (offset<<1), command);
}
if (ACCESSING_BITS_8_15) // GFX Flash 1
{
command = (data >> 8) & 0xff;
//logerror("write to GFX flash chip %s addr %02x cmd %02x\n", chip0->tag(), (offset<<1)+1, command);
- chip0->write((offset<<1)+0x1, command);
+ chip0->write(space, (offset<<1)+0x1, command);
}
if (ACCESSING_BITS_0_7) // GFX Flash 2
{
command = (data >> 0) & 0xff;
//if ( ((offset<<1)+1) != 0x555) printf("write to GFX flash chip %s addr %02x cmd %02x\n", chip1->tag(), (offset<<1)+1, command);
- chip1->write((offset<<1)+0x1, command);
+ chip1->write(space, (offset<<1)+0x1, command);
}
/* make a copy in the linear memory region we actually use for drawing etc. having it stored in interleaved flash roms isnt' very useful */
@@ -1496,22 +1483,22 @@ uint32_t cps3_state::cps3_flashmain_r(int which, uint32_t offset, uint32_t mem_m
if (ACCESSING_BITS_24_31) // Flash 1
{
//logerror("read flash chip %d addr %02x\n", base+0, offset*4 );
- result |= (m_simm[which][0]->read(offset)<<24);
+ result |= (m_simm[which][0]->read(machine().dummy_space(), offset)<<24);
}
if (ACCESSING_BITS_16_23) // Flash 1
{
//logerror("read flash chip %d addr %02x\n", base+1, offset*4 );
- result |= (m_simm[which][1]->read(offset)<<16);
+ result |= (m_simm[which][1]->read(machine().dummy_space(), offset)<<16);
}
if (ACCESSING_BITS_8_15) // Flash 1
{
//logerror("read flash chip %d addr %02x\n", base+2, offset*4 );
- result |= (m_simm[which][2]->read(offset)<<8);
+ result |= (m_simm[which][2]->read(machine().dummy_space(), offset)<<8);
}
if (ACCESSING_BITS_0_7) // Flash 1
{
//logerror("read flash chip %d addr %02x\n", base+3, offset*4 );
- result |= (m_simm[which][3]->read(offset)<<0);
+ result |= (m_simm[which][3]->read(machine().dummy_space(), offset)<<0);
}
// if (base==4) logerror("read flash chips addr %02x returning %08x\n", offset*4, result );
@@ -1552,25 +1539,25 @@ void cps3_state::cps3_flashmain_w(int which, uint32_t offset, uint32_t data, uin
{
command = (data >> 24) & 0xff;
//logerror("write to flash chip %s addr %02x cmd %02x\n", m_simm[which][0]->tag(), offset, command);
- m_simm[which][0]->write(offset, command);
+ m_simm[which][0]->write(machine().dummy_space(), offset, command);
}
if (ACCESSING_BITS_16_23) // Flash 2
{
command = (data >> 16) & 0xff;
//logerror("write to flash chip %s addr %02x cmd %02x\n", m_simm[which][1]->tag(), offset, command);
- m_simm[which][1]->write(offset, command);
+ m_simm[which][1]->write(machine().dummy_space(), offset, command);
}
if (ACCESSING_BITS_8_15) // Flash 2
{
command = (data >> 8) & 0xff;
//logerror("write to flash chip %s addr %02x cmd %02x\n", m_simm[which][2]->tag(), offset, command);
- m_simm[which][2]->write(offset, command);
+ m_simm[which][2]->write(machine().dummy_space(), offset, command);
}
if (ACCESSING_BITS_0_7) // Flash 2
{
command = (data >> 0) & 0xff;
//logerror("write to flash chip %s addr %02x cmd %02x\n", m_simm[which][3]->tag(), offset, command);
- m_simm[which][3]->write(offset, command);
+ m_simm[which][3]->write(machine().dummy_space(), offset, command);
}
/* copy data into regions to execute from */
@@ -2190,7 +2177,7 @@ void cps3_state::cps3_map(address_map &map)
map(0x05100000, 0x05100003).w(FUNC(cps3_state::cps3_irq12_ack_w));
map(0x05110000, 0x05110003).w(FUNC(cps3_state::cps3_irq10_ack_w));
- map(0x05140000, 0x05140003).rw("scsi:7:wd33c93", FUNC(wd33c93_device::indir_r), FUNC(wd33c93_device::indir_w)).umask32(0x00ff00ff);
+ map(0x05140000, 0x05140003).rw("wd33c93", FUNC(wd33c93_device::read), FUNC(wd33c93_device::write)).umask32(0x00ff00ff);
map(0x06000000, 0x067fffff).rw(FUNC(cps3_state::cps3_flash1_r), FUNC(cps3_state::cps3_flash1_w)); /* Flash ROMs simm 1 */
map(0x06800000, 0x06ffffff).rw(FUNC(cps3_state::cps3_flash2_r), FUNC(cps3_state::cps3_flash2_w)); /* Flash ROMs simm 2 */
@@ -2289,28 +2276,6 @@ INTERRUPT_GEN_MEMBER(cps3_state::cps3_other_interrupt)
}
-void cps3_state::machine_start()
-{
- m_eeprom = std::make_unique<uint32_t[]>(0x400/4);
- subdevice<nvram_device>("eeprom")->set_base(m_eeprom.get(), 0x400);
-
- save_item(NAME(m_cram_gfxflash_bank));
- save_item(NAME(m_cram_bank));
- save_item(NAME(m_current_eeprom_read));
- save_item(NAME(m_paldma_source));
- save_item(NAME(m_paldma_realsource));
- save_item(NAME(m_paldma_dest));
- save_item(NAME(m_paldma_fade));
- save_item(NAME(m_paldma_other2));
- save_item(NAME(m_paldma_length));
- save_item(NAME(m_chardma_source));
- save_item(NAME(m_chardma_other));
- save_item(NAME(m_current_table_address));
-
- save_pointer(NAME(m_eeprom), 0x400/4);
-}
-
-
void cps3_state::machine_reset()
{
m_current_table_address = -1;
@@ -2320,12 +2285,6 @@ void cps3_state::machine_reset()
}
-void cps3_state::device_post_load()
-{
- // copy data from flashroms back into user regions + decrypt into regions we execute/draw from.
- copy_from_nvram();
-}
-
// make a copy in the regions we execute code / draw gfx from
void cps3_state::copy_from_nvram()
@@ -2551,9 +2510,11 @@ void cps3_state::cps3(machine_config &config)
m_maincpu->set_periodic_int(FUNC(cps3_state::cps3_other_interrupt), attotime::from_hz(80)); /* ?source? */
m_maincpu->set_dma_kludge_callback(FUNC(cps3_state::dma_callback));
- NSCSI_BUS(config, "scsi");
- NSCSI_CONNECTOR(config, "scsi:1").option_set("cdrom", NSCSI_CDROM);
- NSCSI_CONNECTOR(config, "scsi:7").option_set("wd33c93", WD33C93A).clock(10'000'000);
+ scsi_port_device &scsi(SCSI_PORT(config, "scsi"));
+ scsi.set_slot_device(1, "cdrom", SCSICD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_1));
+
+ wd33c93_device& wd33c93(WD33C93(config, "wd33c93"));
+ wd33c93.set_scsi_port("scsi");
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -2652,7 +2613,7 @@ ROM_START( redearth )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "redearth_euro.29f400.u2", 0x000000, 0x080000, CRC(02e0f336) SHA1(acc37e830dfeb9674f5a0fb24f4cc23217ae4ff5) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-wzd-5", 0, BAD_DUMP SHA1(e5676752b08283dc4a98c3d7b759e8aa6dcd0679) )
ROM_END
@@ -2660,7 +2621,7 @@ ROM_START( redearthr1 )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "redearth_euro.29f400.u2", 0x000000, 0x080000, CRC(02e0f336) SHA1(acc37e830dfeb9674f5a0fb24f4cc23217ae4ff5) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-wzd-3", 0, SHA1(a6ff67093db6bc80ee5fc46e4300e0177b213a52) )
ROM_END
@@ -2668,7 +2629,7 @@ ROM_START( warzard )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "warzard_japan.29f400.u2", 0x000000, 0x080000, CRC(f8e2f0c6) SHA1(93d6a986f44c211fff014e55681eca4d2a2774d6) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-wzd-5", 0, BAD_DUMP SHA1(e5676752b08283dc4a98c3d7b759e8aa6dcd0679) )
ROM_END
@@ -2676,7 +2637,7 @@ ROM_START( warzardr1 )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "warzard_japan.29f400.u2", 0x000000, 0x080000, CRC(f8e2f0c6) SHA1(93d6a986f44c211fff014e55681eca4d2a2774d6) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-wzd-3", 0, SHA1(a6ff67093db6bc80ee5fc46e4300e0177b213a52) )
ROM_END
@@ -2685,7 +2646,7 @@ ROM_START( sfiii )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "sfiii_euro.29f400.u2", 0x000000, 0x080000, CRC(27699ddc) SHA1(d8b525cd27e584560b129598df31fd2c5b2a682a) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-sf3-3", 0, BAD_DUMP SHA1(606e62cc5f46275e366e7dbb412dbaeb7e54cd0c) )
ROM_END
@@ -2693,7 +2654,7 @@ ROM_START( sfiiiu )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "sfiii_usa_region_b1.29f400.u2", 0x000000, 0x080000, CRC(fb172a8e) SHA1(48ebf59910f246835f7dc0c588da30f7a908072f) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-sf3-3", 0, BAD_DUMP SHA1(606e62cc5f46275e366e7dbb412dbaeb7e54cd0c) )
ROM_END
@@ -2701,7 +2662,7 @@ ROM_START( sfiiia )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "sfiii_asia_region_bd.29f400.u2", 0x000000, 0x080000, CRC(cbd28de7) SHA1(9c15ecb73b9587d20850e62e8683930a45caa01b) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-sf3-3", 0, BAD_DUMP SHA1(606e62cc5f46275e366e7dbb412dbaeb7e54cd0c) )
ROM_END
@@ -2709,7 +2670,7 @@ ROM_START( sfiiij )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "sfiii_japan.29f400.u2", 0x000000, 0x080000, CRC(74205250) SHA1(c3e83ace7121d32da729162662ec6b5285a31211) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-sf3-3", 0, BAD_DUMP SHA1(606e62cc5f46275e366e7dbb412dbaeb7e54cd0c) )
ROM_END
@@ -2717,7 +2678,7 @@ ROM_START( sfiiih )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "sfiii_hispanic.29f400.u2", 0x000000, 0x080000, CRC(d2b3cd48) SHA1(00ebb270c24a66515c97e35331de54ff5358000e) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-sf3-3", 0, BAD_DUMP SHA1(606e62cc5f46275e366e7dbb412dbaeb7e54cd0c) )
ROM_END
@@ -2726,7 +2687,7 @@ ROM_START( sfiii2 )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "sfiii2_usa.29f400.u2", 0x000000, 0x080000, CRC(75dd72e0) SHA1(5a12d6ea6734df5de00ecee6f9ef470749d2f242) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-3ga000", 0, BAD_DUMP SHA1(4e162885b0b3265a56e0265037bcf247e820f027) )
ROM_END
@@ -2734,7 +2695,7 @@ ROM_START( sfiii2j )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "sfiii2_japan.29f400.u2", 0x000000, 0x080000, CRC(faea0a3e) SHA1(a03cd63bcf52e4d57f7a598c8bc8e243694624ec) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-3ga000", 0, BAD_DUMP SHA1(4e162885b0b3265a56e0265037bcf247e820f027) )
ROM_END
@@ -2743,7 +2704,7 @@ ROM_START( jojo )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "jojo_usa.29f400.u2", 0x000000, 0x080000, CRC(8d40f7be) SHA1(2a4bd83db2f959c33b071e517941aa55a0f919c0) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-jjk-3", 0, SHA1(dc6e74b5e02e13f62cb8c4e234dd6061501e49c1) )
ROM_END
@@ -2751,7 +2712,7 @@ ROM_START( jojor1 )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "jojo_usa.29f400.u2", 0x000000, 0x080000, CRC(8d40f7be) SHA1(2a4bd83db2f959c33b071e517941aa55a0f919c0) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-jjk-2", 0, BAD_DUMP SHA1(0f5c09171409213e191a607ee89ca3a91fe9c96a) )
ROM_END
@@ -2759,7 +2720,7 @@ ROM_START( jojor2 )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "jojo_usa.29f400.u2", 0x000000, 0x080000, CRC(8d40f7be) SHA1(2a4bd83db2f959c33b071e517941aa55a0f919c0) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-jjk000", 0, BAD_DUMP SHA1(09869f6d8c032b527e02d815749dc8fab1289e86) )
ROM_END
@@ -2767,7 +2728,7 @@ ROM_START( jojoj )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "jojo_japan.29f400.u2", 0x000000, 0x080000, CRC(02778f60) SHA1(a167f9ebe030592a0cdb0c6a3c75835c6a43be4c) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-jjk-3", 0, SHA1(dc6e74b5e02e13f62cb8c4e234dd6061501e49c1) )
ROM_END
@@ -2775,7 +2736,7 @@ ROM_START( jojojr1 )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "jojo_japan.29f400.u2", 0x000000, 0x080000, CRC(02778f60) SHA1(a167f9ebe030592a0cdb0c6a3c75835c6a43be4c) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-jjk-2", 0, BAD_DUMP SHA1(0f5c09171409213e191a607ee89ca3a91fe9c96a) )
ROM_END
@@ -2783,7 +2744,7 @@ ROM_START( jojojr2 )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "jojo_japan.29f400.u2", 0x000000, 0x080000, CRC(02778f60) SHA1(a167f9ebe030592a0cdb0c6a3c75835c6a43be4c) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-jjk000", 0, BAD_DUMP SHA1(09869f6d8c032b527e02d815749dc8fab1289e86) )
ROM_END
@@ -2792,7 +2753,7 @@ ROM_START( sfiii3 )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "sfiii3_euro.29f400.u2", 0x000000, 0x080000, CRC(30bbf293) SHA1(f094c2eeaf4f6709060197aca371a4532346bf78) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-33s-2", 0, BAD_DUMP SHA1(41b0e246db91cbfc3f8f0f62d981734feb4b4ab5) )
ROM_END
@@ -2800,7 +2761,7 @@ ROM_START( sfiii3r1 )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "sfiii3_euro.29f400.u2", 0x000000, 0x080000, CRC(30bbf293) SHA1(f094c2eeaf4f6709060197aca371a4532346bf78) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-33s-1", 0, BAD_DUMP SHA1(2f4a9006a31903114f9f9dc09465ae253e565c51) )
ROM_END
@@ -2808,7 +2769,7 @@ ROM_START( sfiii3u )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "sfiii3_usa.29f400.u2", 0x000000, 0x080000, CRC(ecc545c1) SHA1(e39083820aae914fd8b80c9765129bedb745ceba) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-33s-2", 0, BAD_DUMP SHA1(41b0e246db91cbfc3f8f0f62d981734feb4b4ab5) )
ROM_END
@@ -2816,7 +2777,7 @@ ROM_START( sfiii3ur1 )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "sfiii3_usa.29f400.u2", 0x000000, 0x080000, CRC(ecc545c1) SHA1(e39083820aae914fd8b80c9765129bedb745ceba) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-33s-1", 0, BAD_DUMP SHA1(2f4a9006a31903114f9f9dc09465ae253e565c51) )
ROM_END
@@ -2824,7 +2785,7 @@ ROM_START( sfiii3j )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "sfiii3_japan.29f400.u2", 0x000000, 0x080000, CRC(63f23d1f) SHA1(58559403c325454f8c8d3eb0f569a531aa22db26) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-33s-2", 0, BAD_DUMP SHA1(41b0e246db91cbfc3f8f0f62d981734feb4b4ab5) )
ROM_END
@@ -2832,7 +2793,7 @@ ROM_START( sfiii3jr1 )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "sfiii3_japan.29f400.u2", 0x000000, 0x080000, CRC(63f23d1f) SHA1(58559403c325454f8c8d3eb0f569a531aa22db26) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-33s-1", 0, BAD_DUMP SHA1(2f4a9006a31903114f9f9dc09465ae253e565c51) )
ROM_END
@@ -2841,7 +2802,7 @@ ROM_START( jojoba )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "jojoba_japan.29f400.u2", 0x000000, 0x080000, CRC(3085478c) SHA1(055eab1fc42816f370a44b17fd7e87ffcb10e8b7) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-jjm-1", 0, SHA1(8628d3fa555fbd5f4121082e925c1834b76c5e65) )
ROM_END
@@ -2849,7 +2810,7 @@ ROM_START( jojobar1 )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "jojoba_japan.29f400.u2", 0x000000, 0x080000, CRC(3085478c) SHA1(055eab1fc42816f370a44b17fd7e87ffcb10e8b7) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "cap-jjm-0", 0, BAD_DUMP SHA1(0678a0baeb853dcff1d230c14f0873cc9f143d7b) )
ROM_END
@@ -3710,7 +3671,7 @@ ROM_START( cps3boot ) // for cart with standard SH2
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "no-battery_bios_29f400_for_hd6417095_sh2.u2", 0x000000, 0x080000, CRC(cb9bd5b0) SHA1(ea7ecb3deb69f5307a62d8f0d7d8e68d49013d07))
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "unicd-cps3_for_standard_sh2_v4", 0, SHA1(099c52bd38753f0f4876243e7aa87ca482a2dcb7) )
ROM_END
@@ -3718,7 +3679,7 @@ ROM_START( cps3booto ) // for cart with standard SH2
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "no-battery_bios_29f400_for_hd6417095_sh2.u2", 0x000000, 0x080000, CRC(cb9bd5b0) SHA1(ea7ecb3deb69f5307a62d8f0d7d8e68d49013d07))
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "no-battery_multi-game_bootleg_cd_for_hd6417095_sh2", 0, SHA1(6057cc3ec7991c0c00a7ab9da6ac2f92c9fb1aed) )
ROM_END
@@ -3726,7 +3687,7 @@ ROM_START( cps3booto2 ) // for cart with standard SH2
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "no-battery_bios_29f400_for_hd6417095_sh2.u2", 0x000000, 0x080000, CRC(cb9bd5b0) SHA1(ea7ecb3deb69f5307a62d8f0d7d8e68d49013d07))
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "no-battery_multi-game_bootleg_cd_for_hd6417095_sh2_older", 0, SHA1(123f2fcb0f3dd3d6b859e82a51d0127e46763776) )
ROM_END
@@ -3734,7 +3695,7 @@ ROM_START( cps3bs32 ) // for cart with standard SH2
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "no-battery_bios_29f400_for_hd6417095_sh2.u2", 0x000000, 0x080000, CRC(cb9bd5b0) SHA1(ea7ecb3deb69f5307a62d8f0d7d8e68d49013d07))
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "sfiii_2nd_impact_converted_for_standard_sh2_v3", 0, SHA1(8f180d159e88042a1e819cefd39eef67f5e86e3d) )
ROM_END
@@ -3742,7 +3703,7 @@ ROM_START( cps3bs32a ) // for cart with standard SH2
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "no-battery_bios_29f400_for_hd6417095_sh2.u2", 0x000000, 0x080000, CRC(cb9bd5b0) SHA1(ea7ecb3deb69f5307a62d8f0d7d8e68d49013d07))
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "sfiii_2nd_impact_converted_for_standard_sh2_older", 0, SHA1(8a8e4138c3bf12435933ab9d9ace510513200843) ) // v1 or v2?
ROM_END
@@ -3750,7 +3711,7 @@ ROM_START( cps3boota ) // for cart with dead custom SH2 (or 2nd Impact CPU which
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "no-battery_bios_29f400_for_dead_security_cart.u2", 0x000000, 0x080000, CRC(0fd56fb3) SHA1(5a8bffc07eb7da73cf4bca6718df72e471296bfd) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "unicd-cps3_for_custom_sh2_v5", 0, SHA1(50a5b2845d3dd3de3bce15c4f1b58500db80cabe) )
ROM_END
@@ -3758,7 +3719,7 @@ ROM_START( cps3bootao ) // for cart with dead custom SH2 (or 2nd Impact CPU whic
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "no-battery_bios_29f400_for_dead_security_cart.u2", 0x000000, 0x080000, CRC(0fd56fb3) SHA1(5a8bffc07eb7da73cf4bca6718df72e471296bfd) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "no-battery_multi-game_bootleg_cd_for_dead_security_cart", 0, SHA1(1ede2f1ba197ee787208358a13eae7185a5ae3b2) )
ROM_END
@@ -3767,7 +3728,7 @@ ROM_START( cps3bootao2 ) // for cart with dead custom SH2 (or 2nd Impact CPU whi
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "no-battery_bios_29f400_for_dead_security_cart.u2", 0x000000, 0x080000, CRC(0fd56fb3) SHA1(5a8bffc07eb7da73cf4bca6718df72e471296bfd) )
- DISK_REGION( "scsi:1:cdrom" )
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "no-battery_multi-game_bootleg_cd_for_dead_security_cart_older", 0, SHA1(4b0b673b45dac94da018576c0a7f8644653fc564) )
ROM_END
diff --git a/src/mame/drivers/craft.cpp b/src/mame/drivers/craft.cpp
index c63a1ca94af..e04f678cc80 100644
--- a/src/mame/drivers/craft.cpp
+++ b/src/mame/drivers/craft.cpp
@@ -267,6 +267,7 @@ void craft_state::craft(machine_config &config)
SPEAKER(config, "avr8").front_center();
DAC_6BIT_R2R(config, "dac", 0).add_route(0, "avr8", 0.25); // pd1/pd2/pd4/pd5/pd6/pd7 + 2k(x7) + 1k(x5)
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/crbaloon.cpp b/src/mame/drivers/crbaloon.cpp
index ff32e1de93e..4d24798c54b 100644
--- a/src/mame/drivers/crbaloon.cpp
+++ b/src/mame/drivers/crbaloon.cpp
@@ -361,30 +361,31 @@ INTERRUPT_GEN_MEMBER(crbaloon_state::vblank_irq)
}
-void crbaloon_state::crbaloon(machine_config &config)
-{
+MACHINE_CONFIG_START(crbaloon_state::crbaloon)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CRBALOON_MASTER_XTAL / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &crbaloon_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &crbaloon_state::main_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(crbaloon_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, CRBALOON_MASTER_XTAL / 3)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", crbaloon_state, vblank_irq)
/* video hardware */
GFXDECODE(config, m_gfxdecode, "palette", gfx_crbaloon);
PALETTE(config, "palette", FUNC(crbaloon_state::crbaloon_palette), 32);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_video_attributes(VIDEO_ALWAYS_UPDATE);
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
- screen.set_screen_update(FUNC(crbaloon_state::screen_update_crbaloon));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(crbaloon_state, screen_update_crbaloon)
+ MCFG_SCREEN_PALETTE("palette")
/* audio hardware */
crbaloon_audio(config);
-}
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cromptons.cpp b/src/mame/drivers/cromptons.cpp
deleted file mode 100644
index fd1701f1977..00000000000
--- a/src/mame/drivers/cromptons.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:AJR
-/*
- Skeleton driver for Cromptons Leisure Machines' Frantic Fruits redemption game.
-
- Hardware overview:
- Main CPU: TS80C32X2-MCA
- Sound: CD sound?
- Other: M48T08 timekeeper RAM
- OSC: 11.0592 MHz
- Dips: 2 x 8 dips banks
-
- Video: https://www.youtube.com/watch?v=89XJpor9dSQ
-*/
-
-#include "emu.h"
-#include "cpu/mcs51/mcs51.h"
-#include "machine/74259.h"
-#include "machine/timekpr.h"
-#include "screen.h"
-
-class cromptons_state : public driver_device
-{
-public:
- cromptons_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_outlatch(*this, "outlatch%u", 0U)
- , m_inputs(*this, "IN%u", 0U)
- { }
-
- void cromptons(machine_config &config);
-
-protected:
- virtual void machine_start() override;
-
-private:
- u8 port_r();
- void port_w(u8 data);
-
- required_device<mcs51_cpu_device> m_maincpu;
- required_device_array<hc259_device, 4> m_outlatch;
- required_ioport_array<4> m_inputs;
-
- void prg_map(address_map &map);
- void io_map(address_map &map);
-
- u8 m_port_select;
-};
-
-void cromptons_state::machine_start()
-{
- save_item(NAME(m_port_select));
-}
-
-u8 cromptons_state::port_r()
-{
- return BIT(m_inputs[(m_port_select & 0x18) >> 3]->read(), m_port_select & 0x07) ? 0xff : 0x7f;
-}
-
-void cromptons_state::port_w(u8 data)
-{
- if (!BIT(data, 6))
- m_outlatch[(data & 0x18) >> 3]->write_bit(data & 0x07, BIT(data, 5));
-
- m_port_select = data;
-}
-
-void cromptons_state::prg_map(address_map &map)
-{
- map(0x0000, 0xffff).rom().region("maincpu", 0);
-}
-
-void cromptons_state::io_map(address_map &map)
-{
- map(0xe000, 0xffff).rw("timekpr", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write));
-}
-
-static INPUT_PORTS_START( cromptons )
- PORT_START("IN0")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
-
- 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")
-
- PORT_START("IN2")
- PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW2:1")
- PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW2:2")
- PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW2:3")
- PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW2:4")
- PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW2:5")
- PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW2:6")
- PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW2:7")
- PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW2:8")
-
- PORT_START("IN3")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_UNUSED)
-INPUT_PORTS_END
-
-
-void cromptons_state::cromptons(machine_config &config)
-{
- /* basic machine hardware */
- I80C32(config, m_maincpu, 11.0592_MHz_XTAL); // TS80C32X2-MCA
- m_maincpu->set_addrmap(AS_PROGRAM, &cromptons_state::prg_map);
- m_maincpu->set_addrmap(AS_IO, &cromptons_state::io_map);
- m_maincpu->port_in_cb<1>().set(FUNC(cromptons_state::port_r));
- m_maincpu->port_out_cb<1>().set(FUNC(cromptons_state::port_w));
-
- MK48T08(config, "timekpr");
-
- HC259(config, m_outlatch[0]); // types not verified
- HC259(config, m_outlatch[1]);
- HC259(config, m_outlatch[2]);
- HC259(config, m_outlatch[3]);
-
- // sound ??
-}
-
-/***************************************************************************
-
- Game drivers
-
-***************************************************************************/
-
-ROM_START( ffruits )
- ROM_REGION(0x10000, "maincpu", 0)
- ROM_LOAD( "frntf5v6.ic11", 0x00000, 0x10000, CRC(ca60c557) SHA1(6f356827f0c93ec0376a7edc03963ef0748dccdb) ) // 27c512
-ROM_END
-
-
-GAME( 2000, ffruits, 0, cromptons, cromptons, cromptons_state, empty_init, ROT0, "Cromptons Leisure Machines", "Frantic Fruits", MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/crospang.cpp b/src/mame/drivers/crospang.cpp
index 1d0f7970c4b..fb3b3c4a6d0 100644
--- a/src/mame/drivers/crospang.cpp
+++ b/src/mame/drivers/crospang.cpp
@@ -40,15 +40,15 @@
/* main cpu */
-void crospang_state::base_map(address_map &map)
+void crospang_state::crospang_base_map(address_map &map)
{
map(0x000000, 0x0fffff).rom().nopw(); // writes to rom quite often
- map(0x100000, 0x100001).w(FUNC(crospang_state::tilebank_select_w));
- map(0x10000e, 0x10000f).w(FUNC(crospang_state::tilebank_data_w));
+ map(0x100000, 0x100001).w(FUNC(crospang_state::bestri_tilebank_select_w));
+ map(0x10000e, 0x10000f).w(FUNC(crospang_state::bestri_tilebank_data_w));
- map(0x120000, 0x1207ff).ram().w(FUNC(crospang_state::fg_videoram_w)).share("fg_videoram");
- map(0x122000, 0x1227ff).ram().w(FUNC(crospang_state::bg_videoram_w)).share("bg_videoram");
+ map(0x120000, 0x1207ff).ram().w(FUNC(crospang_state::crospang_fg_videoram_w)).share("fg_videoram");
+ map(0x122000, 0x1227ff).ram().w(FUNC(crospang_state::crospang_bg_videoram_w)).share("bg_videoram");
map(0x200000, 0x2005ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
map(0x210000, 0x2107ff).ram().share("spriteram");
map(0x270001, 0x270001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
@@ -62,31 +62,31 @@ void crospang_state::base_map(address_map &map)
void crospang_state::crospang_map(address_map &map)
{
- base_map(map);
+ crospang_base_map(map);
- map(0x100002, 0x100003).w(FUNC(crospang_state::fg_scrolly_w));
- map(0x100004, 0x100005).w(FUNC(crospang_state::bg_scrollx_w));
- map(0x100006, 0x100007).w(FUNC(crospang_state::bg_scrolly_w));
- map(0x100008, 0x100009).w(FUNC(crospang_state::fg_scrollx_w));
+ map(0x100002, 0x100003).w(FUNC(crospang_state::crospang_fg_scrolly_w));
+ map(0x100004, 0x100005).w(FUNC(crospang_state::crospang_bg_scrollx_w));
+ map(0x100006, 0x100007).w(FUNC(crospang_state::crospang_bg_scrolly_w));
+ map(0x100008, 0x100009).w(FUNC(crospang_state::crospang_fg_scrollx_w));
map(0x320000, 0x32ffff).ram();
}
void crospang_state::pitapat_map(address_map &map)
{
- base_map(map);
+ crospang_base_map(map);
- map(0x100002, 0x100003).w(FUNC(crospang_state::fg_scrolly_w));
- map(0x100004, 0x100005).w(FUNC(crospang_state::bg_scrollx_w));
- map(0x100006, 0x100007).w(FUNC(crospang_state::bg_scrolly_w));
- map(0x100008, 0x100009).w(FUNC(crospang_state::fg_scrollx_w));
+ map(0x100002, 0x100003).w(FUNC(crospang_state::crospang_fg_scrolly_w));
+ map(0x100004, 0x100005).w(FUNC(crospang_state::crospang_bg_scrollx_w));
+ map(0x100006, 0x100007).w(FUNC(crospang_state::crospang_bg_scrolly_w));
+ map(0x100008, 0x100009).w(FUNC(crospang_state::crospang_fg_scrollx_w));
map(0x300000, 0x30ffff).ram();
}
void crospang_state::bestri_map(address_map &map)
{
- base_map(map);
+ crospang_base_map(map);
map(0x100004, 0x100005).w(FUNC(crospang_state::bestri_fg_scrollx_w));
map(0x100006, 0x100007).w(FUNC(crospang_state::bestri_fg_scrolly_w));
@@ -98,7 +98,7 @@ void crospang_state::bestri_map(address_map &map)
void crospang_state::bestria_map(address_map &map)
{
- base_map(map);
+ crospang_base_map(map);
map(0x100006, 0x100007).w(FUNC(crospang_state::bestri_fg_scrollx_w));
map(0x100008, 0x100009).w(FUNC(crospang_state::bestri_fg_scrolly_w));
@@ -110,13 +110,13 @@ void crospang_state::bestria_map(address_map &map)
/* sound cpu */
-void crospang_state::sound_map(address_map &map)
+void crospang_state::crospang_sound_map(address_map &map)
{
map(0x0000, 0xbfff).rom();
map(0xc000, 0xc7ff).ram();
}
-void crospang_state::sound_io_map(address_map &map)
+void crospang_state::crospang_sound_io_map(address_map &map)
{
map.global_mask(0xff);
map(0x00, 0x01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
@@ -393,42 +393,33 @@ static const gfx_layout tlayout =
RGN_FRAC(1,2),
4,
{ RGN_FRAC(1,2)+8, RGN_FRAC(1,2)+0, 8, 0 },
- { STEP8(8*2*16,1), STEP8(0,1) },
- { STEP16(0,8*2) },
- 64*8
-};
-
-static const gfx_layout tlayout_alt =
-{
- 16,16,
- RGN_FRAC(1,2),
- 4,
- { 8, 0, RGN_FRAC(1,2)+8, RGN_FRAC(1,2)+0 },
- { STEP8(0,1), STEP8(8*2*16,1) },
- { STEP16(0,8*2) },
+ { 32*8+0, 32*8+1, 32*8+2, 32*8+3, 32*8+4, 32*8+5, 32*8+6, 32*8+7,
+ 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
+ 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
64*8
};
static GFXDECODE_START( gfx_crospang )
- GFXDECODE_ENTRY( "gfx2", 0, tlayout, 0, 64 ) /* Sprites 16x16 */
- GFXDECODE_ENTRY( "gfx1", 0, tlayout_alt, 0, 64 ) /* Tiles 16x16 */
+ GFXDECODE_ENTRY( "gfx2", 0, tlayout, 0, 64 ) /* Tiles 16x16 */
+ GFXDECODE_ENTRY( "gfx1", 0, tlayout, 0, 64 ) /* Sprites 16x16 */
GFXDECODE_END
void crospang_state::machine_start()
{
- save_item(NAME(m_tilebank));
- save_item(NAME(m_tilebankselect));
+ save_item(NAME(m_bestri_tilebank));
+ save_item(NAME(m_bestri_tilebankselect));
}
void crospang_state::machine_reset()
{
- m_tilebank[0] = 0x00;
- m_tilebank[1] = 0x01;
- m_tilebank[2] = 0x02;
- m_tilebank[3] = 0x03;
+ m_bestri_tilebank[0] = 0x00;
+ m_bestri_tilebank[1] = 0x01;
+ m_bestri_tilebank[2] = 0x02;
+ m_bestri_tilebank[3] = 0x03;
- m_tilebankselect = 0;
+ m_bestri_tilebankselect = 0;
}
void crospang_state::crospang(machine_config &config)
@@ -439,8 +430,8 @@ void crospang_state::crospang(machine_config &config)
m_maincpu->set_vblank_int("screen", FUNC(crospang_state::irq6_line_hold));
z80_device &audiocpu(Z80(config, "audiocpu", XTAL(14'318'181)/4)); /* 3.579545MHz */
- audiocpu.set_addrmap(AS_PROGRAM, &crospang_state::sound_map);
- audiocpu.set_addrmap(AS_IO, &crospang_state::sound_io_map);
+ audiocpu.set_addrmap(AS_PROGRAM, &crospang_state::crospang_sound_map);
+ audiocpu.set_addrmap(AS_IO, &crospang_state::crospang_sound_io_map);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -448,7 +439,7 @@ void crospang_state::crospang(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 64*8);
screen.set_visarea(0, 40*8-1, 0, 30*8-1);
- screen.set_screen_update(FUNC(crospang_state::screen_update));
+ screen.set_screen_update(FUNC(crospang_state::screen_update_crospang));
screen.set_palette("palette");
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x300);
@@ -752,9 +743,34 @@ ROM_START( pitapat )
ROM_LOAD16_BYTE( "ud17", 0x080001, 0x40000, CRC(d4c67e2e) SHA1(e684b58333d64f5961983b42f56c61bb0bea2e5c) )
ROM_END
+void crospang_state::tumblepb_gfx1_rearrange()
+{
+ uint8_t *rom = memregion("gfx1")->base();
+ int len = memregion("gfx1")->bytes();
+ int i;
+
+ /* gfx data is in the wrong order */
+ for (i = 0; i < len; i++)
+ {
+ if ((i & 0x20) == 0)
+ {
+ int t = rom[i]; rom[i] = rom[i + 0x20]; rom[i + 0x20] = t;
+ }
+ }
+ /* low/high half are also swapped */
+ for (i = 0; i < len / 2; i++)
+ {
+ int t = rom[i]; rom[i] = rom[i + len / 2]; rom[i + len / 2] = t;
+ }
+}
+
+void crospang_state::init_crospang()
+{
+ tumblepb_gfx1_rearrange();
+}
-GAME( 1998, crospang, 0, crospang, crospang, crospang_state, empty_init, ROT0, "F2 System", "Cross Pang", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, heuksun, 0, crospang, heuksun, crospang_state, empty_init, ROT0, "Oksan / F2 System", "Heuk Sun Baek Sa (Korea)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, bestri, 0, bestri, bestri, crospang_state, empty_init, ROT0, "F2 System", "Bestri (Korea, set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, bestria, bestri, bestria, bestri, crospang_state, empty_init, ROT0, "F2 System", "Bestri (Korea, set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, pitapat, 0, pitapat, pitapat, crospang_state, empty_init, ROT0, "F2 System", "Pitapat Puzzle", MACHINE_SUPPORTS_SAVE ) // Test Mode calls it 'Puzzle Ball'
+GAME( 1998, crospang, 0, crospang, crospang, crospang_state, init_crospang, ROT0, "F2 System", "Cross Pang", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, heuksun, 0, crospang, heuksun, crospang_state, init_crospang, ROT0, "Oksan / F2 System", "Heuk Sun Baek Sa (Korea)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, bestri, 0, bestri, bestri, crospang_state, init_crospang, ROT0, "F2 System", "Bestri (Korea, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, bestria, bestri, bestria, bestri, crospang_state, init_crospang, ROT0, "F2 System", "Bestri (Korea, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, pitapat, 0, pitapat, pitapat, crospang_state, init_crospang, ROT0, "F2 System", "Pitapat Puzzle", MACHINE_SUPPORTS_SAVE ) // Test Mode calls it 'Puzzle Ball'
diff --git a/src/mame/drivers/crvision.cpp b/src/mame/drivers/crvision.cpp
index 081d886b9fb..172241241ee 100644
--- a/src/mame/drivers/crvision.cpp
+++ b/src/mame/drivers/crvision.cpp
@@ -146,8 +146,10 @@ void crvision_state::crvision_map(address_map &map)
{
map(0x0000, 0x03ff).mirror(0x0c00).ram();
map(0x1000, 0x1003).mirror(0x0ffc).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
- map(0x2000, 0x2001).mirror(0x0ffe).r(TMS9929_TAG, FUNC(tms9928a_device::read));
- map(0x3000, 0x3001).mirror(0x0ffe).w(TMS9929_TAG, FUNC(tms9928a_device::write));
+ map(0x2000, 0x2000).mirror(0x0ffe).r(TMS9929_TAG, FUNC(tms9928a_device::vram_r));
+ map(0x2001, 0x2001).mirror(0x0ffe).r(TMS9929_TAG, FUNC(tms9928a_device::register_r));
+ map(0x3000, 0x3000).mirror(0x0ffe).w(TMS9929_TAG, FUNC(tms9928a_device::vram_w));
+ map(0x3001, 0x3001).mirror(0x0ffe).w(TMS9929_TAG, FUNC(tms9928a_device::register_w));
map(0x4000, 0x7fff).bankr(BANK_ROM2);
map(0x8000, 0xbfff).bankr(BANK_ROM1);
// AM_RANGE(0xc000, 0xe7ff) AM_RAMBANK(3)
@@ -166,8 +168,10 @@ void laser2001_state::lasr2001_map(address_map &map)
{
map(0x0000, 0x03ff).mirror(0x0c00).ram();
map(0x1000, 0x1003).mirror(0x0ffc).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
- map(0x2000, 0x2001).mirror(0x0ffe).r(TMS9929_TAG, FUNC(tms9928a_device::read));
- map(0x3000, 0x3001).mirror(0x0ffe).w(TMS9929_TAG, FUNC(tms9928a_device::write));
+ map(0x2000, 0x2000).mirror(0x0ffe).r(TMS9929_TAG, FUNC(tms9928a_device::vram_r));
+ map(0x2001, 0x2001).mirror(0x0ffe).r(TMS9929_TAG, FUNC(tms9928a_device::register_r));
+ map(0x3000, 0x3000).mirror(0x0ffe).w(TMS9929_TAG, FUNC(tms9928a_device::vram_w));
+ map(0x3001, 0x3001).mirror(0x0ffe).w(TMS9929_TAG, FUNC(tms9928a_device::register_w));
map(0x4000, 0x7fff).bankrw(BANK_ROM2);
map(0x8000, 0xbfff).bankrw(BANK_ROM1);
map(0xc000, 0xffff).rom().region(M6502_TAG, 0);
@@ -744,7 +748,7 @@ void crvision_state::creativision(machine_config &config)
m_pia->readpa_handler().set(FUNC(crvision_state::pia_pa_r));
m_pia->readpb_handler().set(FUNC(crvision_state::pia_pb_r));
m_pia->writepa_handler().set(FUNC(crvision_state::pia_pa_w));
- m_pia->writepb_handler().set(SN76489_TAG, FUNC(sn76496_base_device::write));
+ m_pia->writepb_handler().set(SN76489_TAG, FUNC(sn76496_base_device::command_w));
CASSETTE(config, m_cassette);
m_cassette->set_default_state((cassette_state)(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED));
@@ -780,7 +784,7 @@ void crvision_state::creativision(machine_config &config)
}
/*-------------------------------------------------
- machine_config( ntsc )
+ MACHINE_CONFIG_START( ntsc )
-------------------------------------------------*/
void crvision_state::ntsc(machine_config &config)
@@ -795,7 +799,7 @@ void crvision_state::ntsc(machine_config &config)
}
/*-------------------------------------------------
- machine_config( pal )
+ MACHINE_CONFIG_START( pal )
-------------------------------------------------*/
void crvision_pal_state::pal(machine_config &config)
@@ -810,7 +814,7 @@ void crvision_pal_state::pal(machine_config &config)
}
/*-------------------------------------------------
- machine_config( lasr2001 )
+ MACHINE_CONFIG_START( lasr2001 )
-------------------------------------------------*/
void laser2001_state::lasr2001(machine_config &config)
diff --git a/src/mame/drivers/csplayh5.cpp b/src/mame/drivers/csplayh5.cpp
index bca9301e1ca..6ac1e75b7ec 100644
--- a/src/mame/drivers/csplayh5.cpp
+++ b/src/mame/drivers/csplayh5.cpp
@@ -49,12 +49,14 @@ public:
csplayh5_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
+ m_tmp68301(*this, "tmp68301"),
m_nichisnd(*this, "nichisnd"),
m_key(*this, "KEY.%u", 0),
m_region_maincpu(*this, "maincpu")
{ }
- required_device<tmp68301_device> m_maincpu;
+ required_device<cpu_device> m_maincpu;
+ required_device<tmp68301_device> m_tmp68301;
required_device<nichisnd_device> m_nichisnd;
required_ioport_array<5> m_key;
required_memory_region m_region_maincpu;
@@ -140,6 +142,8 @@ void csplayh5_state::csplayh5_map(address_map &map)
map(0x800000, 0xbfffff).rom().region("blit_gfx", 0); // GFX ROM routes here
map(0xc00000, 0xc7ffff).ram().share("nvram").mirror(0x380000); // work RAM
+
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
#if USE_H8
@@ -326,7 +330,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(csplayh5_state::csplayh5_irq)
int scanline = param;
if(scanline == 212*2)
- m_maincpu->external_interrupt_0();
+ m_tmp68301->external_interrupt_0();
}
WRITE_LINE_MEMBER(csplayh5_state::csplayh5_vdp0_interrupt)
@@ -357,12 +361,16 @@ WRITE16_MEMBER(csplayh5_state::tmp68301_parallel_port_w)
void csplayh5_state::csplayh5(machine_config &config)
{
/* basic machine hardware */
- TMP68301(config, m_maincpu, 16000000); /* TMP68301-16 */
+ M68000(config, m_maincpu, 16000000); /* TMP68301-16 */
m_maincpu->set_addrmap(AS_PROGRAM, &csplayh5_state::csplayh5_map);
- m_maincpu->out_parallel_callback().set(FUNC(csplayh5_state::tmp68301_parallel_port_w));
+ m_maincpu->set_irq_acknowledge_callback("tmp68301", FUNC(tmp68301_device::irq_callback));
TIMER(config, "scantimer", 0).configure_scanline(timer_device::expired_delegate(FUNC(csplayh5_state::csplayh5_irq), this), "screen", 0, 1);
+ TMP68301(config, m_tmp68301, 0);
+ m_tmp68301->set_cputag(m_maincpu);
+ m_tmp68301->out_parallel_callback().set(FUNC(csplayh5_state::tmp68301_parallel_port_w));
+
#if USE_H8
h830002_device &subcpu(H83002(config, "subcpu", DVD_CLOCK/2)); /* unknown divider */
subcpu.set_addrmap(AS_PROGRAM, &csplayh5_state::csplayh5_sub_map);
diff --git a/src/mame/drivers/cswat.cpp b/src/mame/drivers/cswat.cpp
index 7052a3b98d3..2c281e6a6e7 100644
--- a/src/mame/drivers/cswat.cpp
+++ b/src/mame/drivers/cswat.cpp
@@ -257,29 +257,30 @@ void cswat_state::machine_start()
save_item(NAME(m_nmi_enabled));
}
-void cswat_state::cswat(machine_config &config)
-{
+MACHINE_CONFIG_START(cswat_state::cswat)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, XTAL(18'432'000)/3/4); // HD68A09EP, 1.5MHz?
- m_maincpu->set_addrmap(AS_PROGRAM, &cswat_state::cswat_map);
- m_maincpu->set_vblank_int("screen", FUNC(cswat_state::irq0_line_assert));
- m_maincpu->set_periodic_int(FUNC(cswat_state::nmi_handler), attotime::from_hz(300)); // ?
+ MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(18'432'000)/3/4) // HD68A09EP, 1.5MHz?
+ MCFG_DEVICE_PROGRAM_MAP(cswat_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cswat_state, irq0_line_assert)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(cswat_state, nmi_handler, 300) // ?
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(36*8, 28*8);
- screen.set_visarea_full();
- screen.set_palette("palette");
- screen.set_screen_update(FUNC(cswat_state::screen_update_cswat));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(36*8, 28*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, "gfxdecode", "palette", gfx_cswat);
- PALETTE(config, "palette").set_entries(4*256);
+ MCFG_SCREEN_UPDATE_DRIVER(cswat_state, screen_update_cswat)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cswat)
+ MCFG_PALETTE_ADD("palette", 4*256)
/* sound hardware */
// TODO
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/ct486.cpp b/src/mame/drivers/ct486.cpp
index 0cd1035ad38..cc4dbe25081 100644
--- a/src/mame/drivers/ct486.cpp
+++ b/src/mame/drivers/ct486.cpp
@@ -110,12 +110,11 @@ void ct486_state::ct486_io(address_map &map)
// MACHINE DRIVERS
//**************************************************************************
-void ct486_state::ct486(machine_config &config)
-{
- I486(config, m_maincpu, XTAL(25'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &ct486_state::ct486_map);
- m_maincpu->set_addrmap(AS_IO, &ct486_state::ct486_io);
- m_maincpu->set_irq_acknowledge_callback("cs4031", FUNC(cs4031_device::int_ack_r));
+MACHINE_CONFIG_START(ct486_state::ct486)
+ MCFG_DEVICE_ADD("maincpu", I486, XTAL(25'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(ct486_map)
+ MCFG_DEVICE_IO_MAP(ct486_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("cs4031", cs4031_device, int_ack_r)
CS4031(config, m_cs4031, XTAL(25'000'000), "maincpu", "isa", "bios", "keybc");
// cpu connections
@@ -140,14 +139,13 @@ void ct486_state::ct486(machine_config &config)
keybc.kbd_clk().set("pc_kbdc", FUNC(pc_kbdc_device::clock_write_from_mb));
keybc.kbd_data().set("pc_kbdc", FUNC(pc_kbdc_device::data_write_from_mb));
- pc_kbdc_device &pc_kbdc(PC_KBDC(config, "pc_kbdc", 0));
- pc_kbdc.out_clock_cb().set(keybc, FUNC(at_kbc_device_base::kbd_clk_w));
- pc_kbdc.out_data_cb().set(keybc, FUNC(at_kbc_device_base::kbd_data_w));
- PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL).set_pc_kbdc_slot(&pc_kbdc);
+ MCFG_DEVICE_ADD("pc_kbdc", PC_KBDC, 0)
+ MCFG_PC_KBDC_OUT_CLOCK_CB(WRITELINE("keybc", at_kbc_device_base, kbd_clk_w))
+ MCFG_PC_KBDC_OUT_DATA_CB(WRITELINE("keybc", at_kbc_device_base, kbd_data_w))
+ MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL)
ISA16(config, m_isabus, 0);
- m_isabus->set_memspace(m_maincpu, AS_PROGRAM);
- m_isabus->set_iospace(m_maincpu, AS_IO);
+ m_isabus->set_cputag("maincpu");
m_isabus->iochck_callback().set(m_cs4031, FUNC(cs4031_device::iochck_w));
m_isabus->irq2_callback().set(m_cs4031, FUNC(cs4031_device::irq09_w));
m_isabus->irq3_callback().set(m_cs4031, FUNC(cs4031_device::irq03_w));
@@ -167,28 +165,29 @@ void ct486_state::ct486(machine_config &config)
m_isabus->drq5_callback().set(m_cs4031, FUNC(cs4031_device::dreq5_w));
m_isabus->drq6_callback().set(m_cs4031, FUNC(cs4031_device::dreq6_w));
m_isabus->drq7_callback().set(m_cs4031, FUNC(cs4031_device::dreq7_w));
- ISA16_SLOT(config, "board1", 0, "isabus", pc_isa16_cards, "fdcsmc", true);
- ISA16_SLOT(config, "board2", 0, "isabus", pc_isa16_cards, "comat", true);
- ISA16_SLOT(config, "board3", 0, "isabus", pc_isa16_cards, "ide", true);
- ISA16_SLOT(config, "board4", 0, "isabus", pc_isa16_cards, "lpt", true);
- ISA16_SLOT(config, "isa1", 0, "isabus", pc_isa16_cards, "svga_et4k", false);
- ISA16_SLOT(config, "isa2", 0, "isabus", pc_isa16_cards, nullptr, false);
- ISA16_SLOT(config, "isa3", 0, "isabus", pc_isa16_cards, nullptr, false);
- ISA16_SLOT(config, "isa4", 0, "isabus", pc_isa16_cards, nullptr, false);
- ISA16_SLOT(config, "isa5", 0, "isabus", pc_isa16_cards, nullptr, false);
+ MCFG_DEVICE_ADD("board1", ISA16_SLOT, 0, "isabus", pc_isa16_cards, "fdcsmc", true)
+ MCFG_DEVICE_ADD("board2", ISA16_SLOT, 0, "isabus", pc_isa16_cards, "comat", true)
+ MCFG_DEVICE_ADD("board3", ISA16_SLOT, 0, "isabus", pc_isa16_cards, "ide", true)
+ MCFG_DEVICE_ADD("board4", ISA16_SLOT, 0, "isabus", pc_isa16_cards, "lpt", true)
+ MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "isabus", pc_isa16_cards, "svga_et4k", false)
+ MCFG_DEVICE_ADD("isa2", ISA16_SLOT, 0, "isabus", pc_isa16_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa3", ISA16_SLOT, 0, "isabus", pc_isa16_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa4", ISA16_SLOT, 0, "isabus", pc_isa16_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa5", ISA16_SLOT, 0, "isabus", pc_isa16_cards, nullptr, false)
// sound hardware
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
// video hardware
- PALETTE(config, "palette").set_entries(256); // todo: really needed?
+ MCFG_PALETTE_ADD("palette", 256) // todo: really needed?
/* software lists */
- SOFTWARE_LIST(config, "pc_disk_list").set_original("ibm5150");
- SOFTWARE_LIST(config, "at_disk_list").set_original("ibm5170");
- SOFTWARE_LIST(config, "at_cdrom_list").set_original("ibm5170_cdrom");
-}
+ MCFG_SOFTWARE_LIST_ADD("pc_disk_list","ibm5150")
+ MCFG_SOFTWARE_LIST_ADD("at_disk_list","ibm5170")
+ MCFG_SOFTWARE_LIST_ADD("at_cdrom_list","ibm5170_cdrom")
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/cubeqst.cpp b/src/mame/drivers/cubeqst.cpp
index 247d30ad1d2..03a089fcbc9 100644
--- a/src/mame/drivers/cubeqst.cpp
+++ b/src/mame/drivers/cubeqst.cpp
@@ -574,6 +574,7 @@ void cubeqst_state::cubeqst(machine_config &config)
AD7521(config, m_dacs[i*2+1], 0).add_route(0, "lspeaker", 0.125);
}
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "rdac0", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "rdac0", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "ldac0", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "ldac0", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "rdac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "rdac1", -1.0, DAC_VREF_NEG_INPUT);
diff --git a/src/mame/drivers/cubo.cpp b/src/mame/drivers/cubo.cpp
index 4d2df329d95..2eafaa32783 100644
--- a/src/mame/drivers/cubo.cpp
+++ b/src/mame/drivers/cubo.cpp
@@ -411,7 +411,7 @@ WRITE8_MEMBER( cubo_state::akiko_cia_0_port_a_write )
/* bit 1 = Power Led on Amiga */
m_power_led = BIT(~data, 1);
- handle_joystick_cia(data, m_cia_0->read(2));
+ handle_joystick_cia(data, m_cia_0->read(space, 2));
}
@@ -1030,11 +1030,11 @@ static INPUT_PORTS_START( mgprem11 )
INPUT_PORTS_END
-void cubo_state::cubo(machine_config &config)
-{
+MACHINE_CONFIG_START(cubo_state::cubo)
+
/* basic machine hardware */
- M68EC020(config, m_maincpu, amiga_state::CLK_28M_PAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cubo_state::cubo_mem);
+ MCFG_DEVICE_ADD("maincpu", M68EC020, amiga_state::CLK_28M_PAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(cubo_mem)
ADDRESS_MAP_BANK(config, "overlay").set_map(&amiga_state::overlay_2mb_map32).set_options(ENDIANNESS_BIG, 32, 22, 0x200000);
@@ -1050,8 +1050,9 @@ void cubo_state::cubo(machine_config &config)
// video hardware
pal_video(config);
- m_screen->set_screen_update(FUNC(amiga_state::screen_update_amiga_aga));
- m_screen->set_palette(finder_base::DUMMY_TAG);
+ MCFG_DEVICE_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
MCFG_VIDEO_START_OVERRIDE(amiga_state, amiga_aga)
@@ -1067,23 +1068,23 @@ void cubo_state::cubo(machine_config &config)
paula.mem_read_cb().set(FUNC(amiga_state::chip_ram_r));
paula.int_cb().set(FUNC(amiga_state::paula_int_w));
- CDDA(config, m_cdda);
- m_cdda->add_route(0, "lspeaker", 0.50);
- m_cdda->add_route(1, "rspeaker", 0.50);
+ MCFG_DEVICE_ADD("cdda", CDDA)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
/* cia */
// these are setup differently on other amiga drivers (needed for floppy to work) which is correct / why?
- MOS8520(config, m_cia_0, amiga_state::CLK_E_PAL);
- m_cia_0->irq_wr_callback().set(FUNC(amiga_state::cia_0_irq));
- m_cia_0->pa_rd_callback().set_ioport("CIA0PORTA");
- m_cia_0->pa_wr_callback().set(FUNC(cubo_state::akiko_cia_0_port_a_write));
+ MCFG_DEVICE_ADD("cia_0", MOS8520, amiga_state::CLK_E_PAL)
+ MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(*this, amiga_state, cia_0_irq))
+ MCFG_MOS6526_PA_INPUT_CALLBACK(IOPORT("CIA0PORTA"))
+ MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(*this, cubo_state, akiko_cia_0_port_a_write))
+ MCFG_DEVICE_ADD("cia_1", MOS8520, amiga_state::CLK_E_PAL)
+ MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(*this, amiga_state, cia_1_irq))
- MOS8520(config, m_cia_1, amiga_state::CLK_E_PAL);
- m_cia_1->irq_wr_callback().set(FUNC(amiga_state::cia_1_irq));
+ MCFG_MICROTOUCH_ADD("microtouch", 9600, WRITELINE(*this, cubo_state, rs232_rx_w))
- MICROTOUCH(config, m_microtouch, 9600).stx().set(FUNC(cubo_state::rs232_rx_w));
-
- CDROM(config, "cd32_cdrom").set_interface("cd32_cdrom");
+ MCFG_CDROM_ADD("cd32_cdrom")
+ MCFG_CDROM_INTERFACE("cd32_cdrom")
/* fdc */
AMIGA_FDC(config, m_fdc, amiga_state::CLK_7M_PAL);
@@ -1092,7 +1093,7 @@ void cubo_state::cubo(machine_config &config)
m_fdc->write_dma_callback().set(FUNC(amiga_state::chip_ram_w));
m_fdc->dskblk_callback().set(FUNC(amiga_state::fdc_dskblk_w));
m_fdc->dsksyn_callback().set(FUNC(amiga_state::fdc_dsksyn_w));
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cultures.cpp b/src/mame/drivers/cultures.cpp
index 51acf0d401b..dcf6c5e9dee 100644
--- a/src/mame/drivers/cultures.cpp
+++ b/src/mame/drivers/cultures.cpp
@@ -405,33 +405,35 @@ void cultures_state::machine_reset()
MACHINE_CONFIG_START(cultures_state::cultures)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MCLK/2); /* 8.000 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &cultures_state::cultures_map);
- m_maincpu->set_addrmap(AS_IO, &cultures_state::cultures_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(cultures_state::cultures_interrupt));
+ MCFG_DEVICE_ADD("maincpu", Z80, MCLK/2) /* 8.000 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(cultures_map)
+ MCFG_DEVICE_IO_MAP(cultures_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cultures_state, cultures_interrupt)
ADDRESS_MAP_BANK(config, "vrambank").set_map(&cultures_state::vrambank_map).set_options(ENDIANNESS_LITTLE, 8, 15, 0x4000);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 48*8-1, 0*8, 30*8-1);
- screen.set_screen_update(FUNC(cultures_state::screen_update_cultures));
- screen.set_palette("palette");
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_cultures);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cultures_state, screen_update_cultures)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cultures)
MCFG_PALETTE_ADD("palette", 0x3000/2)
MCFG_PALETTE_FORMAT(xRGBRRRRGGGGBBBB_bit0)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- okim6295_device &oki(OKIM6295(config, "oki", MCLK/8, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
- oki.add_route(ALL_OUTPUTS, "mono", 0.30);
- oki.set_addrmap(0, &cultures_state::oki_map);
+ MCFG_DEVICE_ADD("oki", OKIM6295, MCLK/8, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+
MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/cupidon.cpp b/src/mame/drivers/cupidon.cpp
index d6c776f615b..96cdaf46259 100644
--- a/src/mame/drivers/cupidon.cpp
+++ b/src/mame/drivers/cupidon.cpp
@@ -103,25 +103,24 @@ static INPUT_PORTS_START( cupidon )
INPUT_PORTS_END
-void cupidon_state::cupidon(machine_config &config)
-{
+MACHINE_CONFIG_START(cupidon_state::cupidon)
M68340(config, m_maincpu, 16000000); // The access to 3FF00 at the start would suggest this is a 68340 so probably 16 or 25 mhz?
m_maincpu->set_addrmap(AS_PROGRAM, &cupidon_state::cupidon_map);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(cupidon_state::screen_update_cupidon));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cupidon_state, screen_update_cupidon)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, "palette").set_entries(0x10000);
+ MCFG_PALETTE_ADD("palette", 0x10000)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
/* unknown sound, probably DAC driven using 68340 DMA */
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cvicny.cpp b/src/mame/drivers/cvicny.cpp
index 7d5dca51587..12a03f7ee71 100644
--- a/src/mame/drivers/cvicny.cpp
+++ b/src/mame/drivers/cvicny.cpp
@@ -135,15 +135,14 @@ static INPUT_PORTS_START( cvicny )
INPUT_PORTS_END
-void cvicny_state::cvicny(machine_config &config)
-{
+MACHINE_CONFIG_START(cvicny_state::cvicny)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(2'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &cvicny_state::cvicny_mem);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(2'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(cvicny_mem)
/* video hardware */
config.set_default_layout(layout_cvicny);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( cvicny )
diff --git a/src/mame/drivers/cvs.cpp b/src/mame/drivers/cvs.cpp
index 66c87ae485f..ed4b04ca199 100644
--- a/src/mame/drivers/cvs.cpp
+++ b/src/mame/drivers/cvs.cpp
@@ -1019,6 +1019,7 @@ void cvs_state::cvs(machine_config &config)
DAC_4BIT_R2R(config, m_dac2, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
DAC_1BIT(config, m_dac3, 0).add_route(ALL_OUTPUTS, "speaker", 0.99);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT);
diff --git a/src/mame/drivers/cxg_ch2001.cpp b/src/mame/drivers/cxg_ch2001.cpp
deleted file mode 100644
index 047f0112143..00000000000
--- a/src/mame/drivers/cxg_ch2001.cpp
+++ /dev/null
@@ -1,193 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:Berger
-/******************************************************************************
-*
-* cxg_ch2001.cpp, subdriver of machine/chessbase.cpp
-
-*******************************************************************************
-
-CXG Chess 2001 overview:
-- Zilog Z8400APS @ 4 MHz (8MHz XTAL)
-- 2KB RAM HM6116, 16KB ROM D27128D
-- TTL, piezo, 8*8+9 LEDs, magnetic sensors
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/chessbase.h"
-
-#include "cpu/z80/z80.h"
-#include "sound/dac.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-// internal artwork
-#include "cxg_ch2001.lh" // clickable
-
-
-namespace {
-
-class ch2001_state : public chessbase_state
-{
-public:
- ch2001_state(const machine_config &mconfig, device_type type, const char *tag) :
- chessbase_state(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_irq_on(*this, "irq_on"),
- m_dac(*this, "dac"),
- m_speaker_off(*this, "speaker_off")
- { }
-
- // machine drivers
- void ch2001(machine_config &config);
-
-private:
- // devices/pointers
- required_device<cpu_device> m_maincpu;
- required_device<timer_device> m_irq_on;
- required_device<dac_bit_interface> m_dac;
- required_device<timer_device> m_speaker_off;
-
- // periodic interrupts
- template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
- template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); }
-
- TIMER_DEVICE_CALLBACK_MEMBER(speaker_off) { m_dac->write(0); }
-
- // address maps
- void main_map(address_map &map);
-
- // I/O handlers
- DECLARE_WRITE8_MEMBER(speaker_w);
- DECLARE_WRITE8_MEMBER(leds_w);
- DECLARE_READ8_MEMBER(input_r);
-};
-
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// TTL
-
-WRITE8_MEMBER(ch2001_state::speaker_w)
-{
- // 74ls109 clock pulse to speaker
- m_dac->write(1);
- m_speaker_off->adjust(attotime::from_usec(200)); // not accurate
-}
-
-WRITE8_MEMBER(ch2001_state::leds_w)
-{
- // d0-d7: 74ls273 (WR to CLK)
- // 74ls273 Q1-Q4: 74ls145 A-D
- // 74ls145 0-9: input mux/led select
- m_inp_mux = 1 << (data & 0xf) & 0x3ff;
-
- // 74ls273 Q5-Q8: MC14028 A-D
- // MC14028 Q0-Q7: led data, Q8,Q9: N/C
- u8 led_data = 1 << (data >> 4 & 0xf) & 0xff;
- display_matrix(8, 10, led_data, m_inp_mux);
-}
-
-READ8_MEMBER(ch2001_state::input_r)
-{
- // d0-d7: multiplexed inputs
- return ~read_inputs(10);
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void ch2001_state::main_map(address_map &map)
-{
- map(0x0000, 0x3fff).rom();
- map(0x4000, 0x47ff).mirror(0x3800).ram();
- map(0x8000, 0x8000).mirror(0x3fff).rw(FUNC(ch2001_state::input_r), FUNC(ch2001_state::leds_w));
- map(0xc000, 0xc000).mirror(0x3fff).w(FUNC(ch2001_state::speaker_w));
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( ch2001 )
- PORT_INCLUDE( generic_cb_magnets )
-
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Black")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("King")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("Queen")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("Rook")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Bishop")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Knight")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Pawn")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("White")
-
- PORT_START("IN.9")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Set up")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("New Game")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) PORT_NAME("Take Back")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Forward")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_NAME("Hint")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("Move")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("Level")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_NAME("Sound")
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void ch2001_state::ch2001(machine_config &config)
-{
- /* basic machine hardware */
- Z80(config, m_maincpu, 8_MHz_XTAL/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &ch2001_state::main_map);
-
- const attotime irq_period = attotime::from_hz(484); // theoretical frequency from 555 timer (22nF, 100K+33K, 1K2), measurement was 568Hz
- TIMER(config, m_irq_on).configure_periodic(FUNC(ch2001_state::irq_on<INPUT_LINE_IRQ0>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_nsec(18300)); // active for 18.3us
- TIMER(config, "irq_off").configure_periodic(FUNC(ch2001_state::irq_off<INPUT_LINE_IRQ0>), irq_period);
-
- TIMER(config, m_speaker_off).configure_generic(FUNC(ch2001_state::speaker_off));
-
- TIMER(config, "display_decay").configure_periodic(FUNC(ch2001_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_cxg_ch2001);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( ch2001 )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("ch2001.bin", 0x0000, 0x4000, CRC(b3485c73) SHA1(f405c6f67fe70edf45dcc383a4049ee6bad387a9) ) // D27128D, no label
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-CONS( 1984, ch2001, 0, 0, ch2001, ch2001, ch2001_state, empty_init, "CXG", "Chess 2001", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/cxgz80.cpp b/src/mame/drivers/cxgz80.cpp
new file mode 100644
index 00000000000..32552430251
--- /dev/null
+++ b/src/mame/drivers/cxgz80.cpp
@@ -0,0 +1,437 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+// thanks-to:Berger
+/******************************************************************************
+
+ CXG* generic Z80 based chess computer driver
+ *later known as CXG Newcrest Technology Ltd.
+
+ NOTE: MAME doesn't include a generalized implementation for boardpieces yet,
+ greatly affecting user playability of emulated electronic board games.
+ As workaround for the chess games, use an external chess GUI on the side,
+ such as Arena(in editmode).
+
+ TODO:
+ - nothing
+
+******************************************************************************
+
+Chess 2001:
+- Zilog Z8400APS @ 4 MHz (8MHz XTAL)
+- 2KB RAM HM6116, 16KB ROM D27128D
+- TTL, piezo, 8*8+9 LEDs, magnetic sensors
+
+******************************************************************************/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "machine/timer.h"
+#include "sound/dac.h"
+#include "sound/volt_reg.h"
+#include "speaker.h"
+
+// internal artwork
+#include "cxg_ch2001.lh" // clickable
+
+
+class cxgz80_state : public driver_device
+{
+public:
+ cxgz80_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_dac(*this, "dac"),
+ m_speaker_off_timer(*this, "speaker_off"),
+ m_inp_matrix(*this, "IN.%u", 0),
+ m_out_x(*this, "%u.%u", 0U, 0U),
+ m_out_a(*this, "%u.a", 0U),
+ m_out_digit(*this, "digit%u", 0U),
+ m_display_wait(33),
+ m_display_maxy(1),
+ m_display_maxx(0)
+ { }
+
+ // devices/pointers
+ required_device<cpu_device> m_maincpu;
+ required_device<dac_bit_interface> m_dac;
+ required_device<timer_device> m_speaker_off_timer;
+ optional_ioport_array<10> m_inp_matrix; // max 10
+ output_finder<0x20, 0x20> m_out_x;
+ output_finder<0x20> m_out_a;
+ output_finder<0x20> m_out_digit;
+
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE); }
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); }
+
+ // misc common
+ u16 m_inp_mux; // multiplexed keypad mask
+ u16 m_led_select;
+ u16 m_led_data;
+
+ u16 read_inputs(int columns);
+
+ // display common
+ int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
+ int m_display_maxy; // display matrix number of rows
+ int m_display_maxx; // display matrix number of columns (max 31 for now)
+
+ u32 m_display_state[0x20]; // display matrix rows data (last bit is used for always-on)
+ u16 m_display_segmask[0x20]; // if not 0, display matrix row is a digit, mask indicates connected segments
+ u8 m_display_decay[0x20][0x20]; // (internal use)
+
+ TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
+ void display_update();
+ void set_display_size(int maxx, int maxy);
+ void display_matrix(int maxx, int maxy, u32 setx, u32 sety, bool update = true);
+
+ // Chess 2001
+ TIMER_DEVICE_CALLBACK_MEMBER(speaker_off_callback);
+ DECLARE_WRITE8_MEMBER(ch2001_speaker_on_w);
+ DECLARE_WRITE8_MEMBER(ch2001_leds_w);
+ DECLARE_READ8_MEMBER(ch2001_input_r);
+ void ch2001_map(address_map &map);
+ void ch2001(machine_config &config);
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+};
+
+
+// machine start/reset
+
+void cxgz80_state::machine_start()
+{
+ // resolve handlers
+ m_out_x.resolve();
+ m_out_a.resolve();
+ m_out_digit.resolve();
+
+ // zerofill
+ memset(m_display_state, 0, sizeof(m_display_state));
+ memset(m_display_decay, 0, sizeof(m_display_decay));
+ memset(m_display_segmask, 0, sizeof(m_display_segmask));
+
+ m_inp_mux = 0;
+ m_led_select = 0;
+ m_led_data = 0;
+
+ // register for savestates
+ save_item(NAME(m_display_maxy));
+ save_item(NAME(m_display_maxx));
+ save_item(NAME(m_display_wait));
+
+ save_item(NAME(m_display_state));
+ save_item(NAME(m_display_decay));
+ save_item(NAME(m_display_segmask));
+
+ save_item(NAME(m_inp_mux));
+ save_item(NAME(m_led_select));
+ save_item(NAME(m_led_data));
+}
+
+void cxgz80_state::machine_reset()
+{
+}
+
+
+
+/***************************************************************************
+
+ Helper Functions
+
+***************************************************************************/
+
+// The device may strobe the outputs very fast, it is unnoticeable to the user.
+// To prevent flickering here, we need to simulate a decay.
+
+void cxgz80_state::display_update()
+{
+ for (int y = 0; y < m_display_maxy; y++)
+ {
+ u32 active_state = 0;
+
+ for (int x = 0; x <= m_display_maxx; x++)
+ {
+ // turn on powered segments
+ if (m_display_state[y] >> x & 1)
+ m_display_decay[y][x] = m_display_wait;
+
+ // determine active state
+ u32 ds = (m_display_decay[y][x] != 0) ? 1 : 0;
+ active_state |= (ds << x);
+
+ // output to y.x, or y.a when always-on
+ if (x != m_display_maxx)
+ m_out_x[y][x] = ds;
+ else
+ m_out_a[y] = ds;
+ }
+
+ // output to digity
+ if (m_display_segmask[y] != 0)
+ m_out_digit[y] = active_state & m_display_segmask[y];
+ }
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(cxgz80_state::display_decay_tick)
+{
+ // slowly turn off unpowered segments
+ for (int y = 0; y < m_display_maxy; y++)
+ for (int x = 0; x <= m_display_maxx; x++)
+ if (m_display_decay[y][x] != 0)
+ m_display_decay[y][x]--;
+
+ display_update();
+}
+
+void cxgz80_state::set_display_size(int maxx, int maxy)
+{
+ m_display_maxx = maxx;
+ m_display_maxy = maxy;
+}
+
+void cxgz80_state::display_matrix(int maxx, int maxy, u32 setx, u32 sety, bool update)
+{
+ set_display_size(maxx, maxy);
+
+ // update current state
+ u32 mask = (1 << maxx) - 1;
+ for (int y = 0; y < maxy; y++)
+ m_display_state[y] = (sety >> y & 1) ? ((setx & mask) | (1 << maxx)) : 0;
+
+ if (update)
+ display_update();
+}
+
+
+// generic input handlers
+
+u16 cxgz80_state::read_inputs(int columns)
+{
+ u16 ret = 0;
+
+ // read selected input rows
+ for (int i = 0; i < columns; i++)
+ if (m_inp_mux >> i & 1)
+ ret |= m_inp_matrix[i]->read();
+
+ return ret;
+}
+
+
+
+// Devices, I/O
+
+/******************************************************************************
+ Chess 2001
+******************************************************************************/
+
+// TTL
+
+TIMER_DEVICE_CALLBACK_MEMBER(cxgz80_state::speaker_off_callback)
+{
+ m_dac->write(0);
+}
+
+WRITE8_MEMBER(cxgz80_state::ch2001_speaker_on_w)
+{
+ // 74ls109 clock pulse to speaker
+ m_dac->write(1);
+ m_speaker_off_timer->adjust(attotime::from_usec(200)); // not accurate
+}
+
+WRITE8_MEMBER(cxgz80_state::ch2001_leds_w)
+{
+ // d0-d7: 74ls273 (WR to CLK)
+ // 74ls273 Q1-Q4: 74ls145 A-D
+ // 74ls145 0-9: input mux/led select
+ m_inp_mux = 1 << (data & 0xf) & 0x3ff;
+
+ // 74ls273 Q5-Q8: MC14028 A-D
+ // MC14028 Q0-Q7: led data, Q8,Q9: N/C
+ u8 led_data = 1 << (data >> 4 & 0xf) & 0xff;
+ display_matrix(8, 10, led_data, m_inp_mux);
+}
+
+READ8_MEMBER(cxgz80_state::ch2001_input_r)
+{
+ // d0-d7: multiplexed inputs
+ return ~read_inputs(10);
+}
+
+
+
+/******************************************************************************
+ Address Maps
+******************************************************************************/
+
+// Chess 2001
+
+void cxgz80_state::ch2001_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).mirror(0x3800).ram();
+ map(0x8000, 0x8000).mirror(0x3fff).rw(FUNC(cxgz80_state::ch2001_input_r), FUNC(cxgz80_state::ch2001_leds_w));
+ map(0xc000, 0xc000).mirror(0x3fff).w(FUNC(cxgz80_state::ch2001_speaker_on_w));
+}
+
+
+
+/******************************************************************************
+ Input Ports
+******************************************************************************/
+
+static INPUT_PORTS_START( cb_magnets )
+ PORT_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.4")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.5")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.6")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( ch2001 )
+ PORT_INCLUDE( cb_magnets )
+
+ PORT_START("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Black")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("King")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("Queen")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("Rook")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Bishop")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Knight")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Pawn")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("White")
+
+ PORT_START("IN.9")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Set up")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("New Game")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) PORT_NAME("Take Back")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Forward")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_NAME("Hint")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("Move")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("Level")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_NAME("Sound")
+INPUT_PORTS_END
+
+
+
+/******************************************************************************
+ Machine Drivers
+******************************************************************************/
+
+MACHINE_CONFIG_START(cxgz80_state::ch2001)
+
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", Z80, 8_MHz_XTAL/2)
+ MCFG_DEVICE_PROGRAM_MAP(ch2001_map)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", cxgz80_state, irq_on, attotime::from_hz(484)) // theoretical frequency from 555 timer (22nF, 100K+33K, 1K2), measurement was 568Hz
+ MCFG_TIMER_START_DELAY(attotime::from_hz(484) - attotime::from_nsec(18300)) // active for 18.3us
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", cxgz80_state, irq_off, attotime::from_hz(484))
+
+ MCFG_TIMER_DRIVER_ADD("speaker_off", cxgz80_state, speaker_off_callback)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", cxgz80_state, display_decay_tick, attotime::from_msec(1))
+ config.set_default_layout(layout_cxg_ch2001);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
+
+
+
+/******************************************************************************
+ ROM Definitions
+******************************************************************************/
+
+ROM_START( ch2001 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("ch2001.bin", 0x0000, 0x4000, CRC(b3485c73) SHA1(f405c6f67fe70edf45dcc383a4049ee6bad387a9) ) // D27128D, no label
+ROM_END
+
+
+
+/******************************************************************************
+ Drivers
+******************************************************************************/
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+CONS( 1984, ch2001, 0, 0, ch2001, ch2001, cxgz80_state, empty_init, "CXG", "Chess 2001", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/cxhumax.cpp b/src/mame/drivers/cxhumax.cpp
index 3f990dd8a32..cd3ad8feaa8 100644
--- a/src/mame/drivers/cxhumax.cpp
+++ b/src/mame/drivers/cxhumax.cpp
@@ -120,9 +120,9 @@ WRITE32_MEMBER ( cxhumax_state::flash_w )
{
offset *= 2;
if(ACCESSING_BITS_0_15)
- m_flash->write(offset, data);
+ m_flash->write(space, offset, data);
if(ACCESSING_BITS_16_31)
- m_flash->write(offset+1, data >> 16);
+ m_flash->write(space, offset+1, data >> 16);
verboselog(*this, 9, "(FLASH) %08X <- %08X\n", 0xF0000000 + (offset << 2), data);
}
@@ -131,9 +131,9 @@ READ32_MEMBER ( cxhumax_state::flash_r )
uint32_t res = 0;
offset *= 2;
if(ACCESSING_BITS_0_15)
- res |= m_flash->read(offset);
+ res |= m_flash->read(space, offset);
if(ACCESSING_BITS_16_31)
- res |= m_flash->read(offset+1) << 16;
+ res |= m_flash->read(space, offset+1) << 16;
//if(m_flash->m_flash_mode!=FM_NORMAL) verboselog(*this, 9, "(FLASH) %08X -> %08X\n", 0xF0000000 + (offset << 2), res);
return res;
}
@@ -167,7 +167,7 @@ READ32_MEMBER( cxhumax_state::cx_scratch_r )
int i = 0;
while ((temp=program.read_byte(m_maincpu->state_int(ARM7_R0)+i))) {
buf[i++]=temp;
- //m_terminal->write(temp);
+ //m_terminal->write(space, 0, temp);
}
osd_printf_debug("%s", buf);
verboselog(*this, 9, "(DEBUG) %s", buf);
@@ -412,7 +412,7 @@ WRITE32_MEMBER( cxhumax_state::cx_uart2_w )
case UART_FIFO_REG:
if(!(m_uart2_regs[UART_FRMC_REG]&UART_FRMC_BDS_BIT)) {
/* Sending byte... add logging */
- m_terminal->write(data);
+ m_terminal->write(space, 0, data);
/* Transmitter Idle Interrupt Enable */
if(m_uart2_regs[UART_IRQE_REG]&UART_IRQE_TIDE_BIT) {
@@ -1055,27 +1055,26 @@ void cxhumax_state::machine_reset()
memset(m_gxa_cmd_regs,0,sizeof(m_gxa_cmd_regs));
}
-void cxhumax_state::cxhumax(machine_config &config)
-{
- ARM920T(config, m_maincpu, 180000000); // CX24175 (RevC up?)
- m_maincpu->set_addrmap(AS_PROGRAM, &cxhumax_state::cxhumax_map);
+MACHINE_CONFIG_START(cxhumax_state::cxhumax)
+ MCFG_DEVICE_ADD("maincpu", ARM920T, 180000000) // CX24175 (RevC up?)
+ MCFG_DEVICE_PROGRAM_MAP(cxhumax_map)
INTEL_28F320J3D(config, "flash");
I2CMEM(config, "eeprom", 0).set_data_size(0x2000);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(1920, 1080);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(cxhumax_state::screen_update_cxhumax));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(1920, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1920-1, 0, 1080-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cxhumax_state, screen_update_cxhumax)
PALETTE(config, "palette", palette_device::MONOCHROME);
GENERIC_TERMINAL(config, m_terminal, 0);
-}
+MACHINE_CONFIG_END
ROM_START( hxhdci2k )
ROM_REGION( 0x400000, "flash", 0 )
diff --git a/src/mame/drivers/cyberbal.cpp b/src/mame/drivers/cyberbal.cpp
index dc1bb096aa3..172eda403d4 100644
--- a/src/mame/drivers/cyberbal.cpp
+++ b/src/mame/drivers/cyberbal.cpp
@@ -392,8 +392,8 @@ GFXDECODE_END
*
*************************************/
-void cyberbal_state::cyberbal_base(machine_config &config)
-{
+MACHINE_CONFIG_START(cyberbal_state::cyberbal_base)
+
/* basic machine hardware */
M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2);
m_maincpu->set_addrmap(AS_PROGRAM, &cyberbal_state::main_map);
@@ -405,9 +405,9 @@ void cyberbal_state::cyberbal_base(machine_config &config)
M68000(config, m_extracpu, ATARI_CLOCK_14MHz/2);
m_extracpu->set_addrmap(AS_PROGRAM, &cyberbal_state::extra_map);
- M68000(config, m_daccpu, ATARI_CLOCK_14MHz/2);
- m_daccpu->set_addrmap(AS_PROGRAM, &cyberbal_state::sound_68k_map);
- m_daccpu->set_periodic_int(FUNC(cyberbal_state::sound_68k_irq_gen), attotime::from_hz(10000));
+ MCFG_DEVICE_ADD("dac", M68000, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(sound_68k_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(cyberbal_state, sound_68k_irq_gen, 10000)
config.m_minimum_quantum = attotime::from_hz(600);
@@ -466,11 +466,12 @@ void cyberbal_state::cyberbal_base(machine_config &config)
AM6012(config, m_rdac, 0).add_route(ALL_OUTPUTS, "rspeaker", 0.5); // AM6012.6j
AM6012(config, m_ldac, 0).add_route(ALL_OUTPUTS, "lspeaker", 0.5); // AM6012.6j
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
-}
+MACHINE_CONFIG_END
void cyberbal_state::cyberbal(machine_config &config)
{
@@ -487,11 +488,11 @@ void cyberbal_state::cyberbalt(machine_config &config)
SLAPSTIC(config, "slapstic", 116, true);
}
-void cyberbal2p_state::cyberbal2p(machine_config &config)
-{
+MACHINE_CONFIG_START(cyberbal2p_state::cyberbal2p)
+
/* basic machine hardware */
- M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cyberbal2p_state::cyberbal2p_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(cyberbal2p_map)
EEPROM_2816(config, "eeprom").lock_after_write(true);
@@ -509,14 +510,14 @@ void cyberbal2p_state::cyberbal2p(machine_config &config)
m_mob->set_config(cyberbal2p_state::s_mob_config);
m_mob->set_gfxdecode("gfxdecode");
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz, 456*2, 0, 336*2, 262, 0, 240);
- m_screen->set_screen_update(FUNC(cyberbal2p_state::screen_update_cyberbal2p));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set(FUNC(cyberbal2p_state::video_int_write_line));
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz, 456*2, 0, 336*2, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(cyberbal2p_state, screen_update_cyberbal2p)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cyberbal2p_state, video_int_write_line))
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -525,7 +526,7 @@ void cyberbal2p_state::cyberbal2p(machine_config &config)
m_jsa->main_int_cb().set_inputline(m_maincpu, M68K_IRQ_3);
m_jsa->test_read_cb().set_ioport("IN2").bit(15);
m_jsa->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cybertnk.cpp b/src/mame/drivers/cybertnk.cpp
index c44fa12bf29..1a590d59513 100644
--- a/src/mame/drivers/cybertnk.cpp
+++ b/src/mame/drivers/cybertnk.cpp
@@ -819,39 +819,38 @@ GFXDECODE_END
*/
-void cybertnk_state::cybertnk(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(20'000'000)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cybertnk_state::master_mem);
- m_maincpu->set_vblank_int("lscreen", FUNC(cybertnk_state::irq1_line_assert));
+MACHINE_CONFIG_START(cybertnk_state::cybertnk)
+ MCFG_DEVICE_ADD("maincpu", M68000,XTAL(20'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(master_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("lscreen", cybertnk_state, irq1_line_assert)
- m68000_device &slave(M68000(config, "slave", XTAL(20'000'000)/2));
- slave.set_addrmap(AS_PROGRAM, &cybertnk_state::slave_mem);
- slave.set_vblank_int("lscreen", FUNC(cybertnk_state::irq3_line_hold));
+ MCFG_DEVICE_ADD("slave", M68000,XTAL(20'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(slave_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("lscreen", cybertnk_state, irq3_line_hold)
- Z80(config, m_audiocpu, XTAL(3'579'545));
- m_audiocpu->set_addrmap(AS_PROGRAM, &cybertnk_state::sound_mem);
+ MCFG_DEVICE_ADD("audiocpu", Z80,XTAL(3'579'545))
+ MCFG_DEVICE_PROGRAM_MAP(sound_mem)
- config.m_minimum_quantum = attotime::from_hz(60000); //arbitrary value, needed to get the communication to work
+ MCFG_QUANTUM_TIME(attotime::from_hz(60000))//arbitrary value,needed to get the communication to work
/* video hardware */
config.set_default_layout(layout_dualhsxs);
- screen_device &lscreen(SCREEN(config, "lscreen", SCREEN_TYPE_RASTER));
- lscreen.set_refresh_hz(60);
- lscreen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- lscreen.set_size(32*8, 32*8);
- lscreen.set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
- lscreen.set_screen_update(FUNC(cybertnk_state::screen_update_cybertnk_left));
- lscreen.set_palette(m_palette);
-
- screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER));
- rscreen.set_refresh_hz(60);
- rscreen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- rscreen.set_size(32*8, 32*8);
- rscreen.set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
- rscreen.set_screen_update(FUNC(cybertnk_state::screen_update_cybertnk_right));
- rscreen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("lscreen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cybertnk_state, screen_update_cybertnk_left)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_SCREEN_ADD("rscreen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cybertnk_state, screen_update_cybertnk_right)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cybertnk);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x4000);
@@ -863,11 +862,13 @@ void cybertnk_state::cybertnk(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0, HOLD_LINE);
- // Split output per chip
- Y8950(config, "ym1", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "lspeaker", 1.0);
+ // Splited output per chip
+ MCFG_DEVICE_ADD("ym1", Y8950, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- Y8950(config, "ym2", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ym2", Y8950, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/cybiko.cpp b/src/mame/drivers/cybiko.cpp
index 4b5fa470899..440e770d2f7 100644
--- a/src/mame/drivers/cybiko.cpp
+++ b/src/mame/drivers/cybiko.cpp
@@ -426,8 +426,8 @@ void cybiko_state::cybikov1_base(machine_config &config)
m_debug_serial->set_option_device_input_defaults("pty", DEVICE_INPUT_DEFAULTS_NAME(debug_serial));
// quickload
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(cybiko_state, cybiko), this), "bin,nv");
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(cybiko_state, cybiko), this), "bin,nv", 0);
}
void cybiko_state::cybikov1_flash(machine_config &config)
@@ -498,8 +498,8 @@ void cybiko_state::cybikoxt(machine_config &config)
subdevice<h8_sci_device>("maincpu:sci2")->tx_handler().set("debug_serial", FUNC(rs232_port_device::write_txd));
// quickload
- quickload_image_device &quickload(QUICKLOAD(config.replace(), "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(cybiko_state, cybikoxt), this), "bin,nv");
+ quickload_image_device &quickload(QUICKLOAD(config.replace(), "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(cybiko_state, cybikoxt), this), "bin,nv", 0);
}
/////////
diff --git a/src/mame/drivers/cybstorm.cpp b/src/mame/drivers/cybstorm.cpp
index 17ec3230508..6310ef3755d 100644
--- a/src/mame/drivers/cybstorm.cpp
+++ b/src/mame/drivers/cybstorm.cpp
@@ -222,11 +222,11 @@ GFXDECODE_END
*
*************************************/
-void cybstorm_state::round2(machine_config &config)
-{
+MACHINE_CONFIG_START(cybstorm_state::round2)
+
/* basic machine hardware */
- M68EC020(config, m_maincpu, ATARI_CLOCK_14MHz);
- m_maincpu->set_addrmap(AS_PROGRAM, &cybstorm_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68EC020, ATARI_CLOCK_14MHz)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
EEPROM_2816(config, "eeprom").lock_after_write(true);
@@ -242,17 +242,18 @@ void cybstorm_state::round2(machine_config &config)
ADDRESS_MAP_BANK(config, "vadbank").set_map(&cybstorm_state::vadbank_map).set_options(ENDIANNESS_BIG, 16, 32, 0x90000);
- GFXDECODE(config, m_gfxdecode, "palette", gfx_cybstorm);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cybstorm)
PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 32768);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_palette("palette");
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(cybstorm_state::screen_update_cybstorm));
-}
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+
+ MCFG_SCREEN_UPDATE_DRIVER(cybstorm_state, screen_update_cybstorm)
+MACHINE_CONFIG_END
void cybstorm_state::cybstorm(machine_config &config)
diff --git a/src/mame/drivers/cyclemb.cpp b/src/mame/drivers/cyclemb.cpp
index d60a7f808e8..a41c93dca08 100644
--- a/src/mame/drivers/cyclemb.cpp
+++ b/src/mame/drivers/cyclemb.cpp
@@ -976,27 +976,26 @@ static GFXDECODE_START( gfx_cyclemb )
GFXDECODE_ENTRY( "sprite_data", 0, spritelayout_32x32, 0x00, 0x40 )
GFXDECODE_END
-void cyclemb_state::cyclemb(machine_config &config)
-{
+MACHINE_CONFIG_START(cyclemb_state::cyclemb)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'000'000)/3); // Z8400BPS
- m_maincpu->set_addrmap(AS_PROGRAM, &cyclemb_state::cyclemb_map);
- m_maincpu->set_addrmap(AS_IO, &cyclemb_state::cyclemb_io);
- m_maincpu->set_vblank_int("screen", FUNC(cyclemb_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'000'000)/3) // Z8400BPS
+ MCFG_DEVICE_PROGRAM_MAP(cyclemb_map)
+ MCFG_DEVICE_IO_MAP(cyclemb_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cyclemb_state, irq0_line_hold)
- Z80(config, m_audiocpu, XTAL(18'000'000)/6);
- m_audiocpu->set_addrmap(AS_PROGRAM, &cyclemb_state::cyclemb_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &cyclemb_state::cyclemb_sound_io);
- m_audiocpu->set_periodic_int(FUNC(cyclemb_state::irq0_line_hold), attotime::from_hz(60));
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(18'000'000)/6)
+ MCFG_DEVICE_PROGRAM_MAP(cyclemb_sound_map)
+ MCFG_DEVICE_IO_MAP(cyclemb_sound_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(cyclemb_state, irq0_line_hold, 60)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(cyclemb_state::screen_update_cyclemb));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cyclemb_state, screen_update_cyclemb)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cyclemb);
PALETTE(config, m_palette, FUNC(cyclemb_state::cyclemb_palette), 256);
@@ -1011,20 +1010,20 @@ void cyclemb_state::cyclemb(machine_config &config)
// ymsnd.irq_handler().set(FUNC(cyclemb_state::ym_irq));
// ymsnd.port_b_read_callback().set_ioport("UNK");
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
-void cyclemb_state::skydest(machine_config &config)
-{
+MACHINE_CONFIG_START(cyclemb_state::skydest)
cyclemb(config);
- m_maincpu->set_addrmap(AS_IO, &cyclemb_state::skydest_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(skydest_io)
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(2*8, 34*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(cyclemb_state::screen_update_skydest));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(2*8, 34*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cyclemb_state, screen_update_skydest)
-// m_palette->set_init(FUNC(cyclemb_state::skydest));
-}
+// MCFG_PALETTE_INIT_OWNER(cyclemb_state,skydest)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/cz101.cpp b/src/mame/drivers/cz101.cpp
index 3ece028eed4..93268c9dba6 100644
--- a/src/mame/drivers/cz101.cpp
+++ b/src/mame/drivers/cz101.cpp
@@ -381,8 +381,7 @@ void cz101_state::machine_reset()
// MACHINE DEFINTIONS
//**************************************************************************
-void cz101_state::cz101(machine_config &config)
-{
+MACHINE_CONFIG_START( cz101_state::cz101 )
UPD7810(config, m_maincpu, 10_MHz_XTAL); // actually 7811, but internal ROM disabled
m_maincpu->set_addrmap(AS_PROGRAM, &cz101_state::maincpu_map);
m_maincpu->pa_in_cb().set(FUNC(cz101_state::port_a_r));
@@ -393,22 +392,22 @@ void cz101_state::cz101(machine_config &config)
CLOCK(config, "midi_clock", 2_MHz_XTAL)/*.signal_handler().set(m_maincpu, FUNC(upd7810_device::sck_w))*/; // not supported yet
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(6*16+1, 19);
- screen.set_visarea_full();
- screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(6*16+1, 19)
+ MCFG_SCREEN_VISIBLE_AREA(0, 6*16, 0, 19-1)
+ MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(cz101_state::cz101_palette), 3);
- HD44780(config, m_hd44780, 0);
- m_hd44780->set_lcd_size(2, 16);
- m_hd44780->set_pixel_update_cb(FUNC(cz101_state::lcd_pixel_update), this);
+ MCFG_HD44780_ADD("hd44780")
+ MCFG_HD44780_LCD_SIZE(2, 16)
+ MCFG_HD44780_PIXEL_UPDATE_CB(cz101_state, lcd_pixel_update)
config.set_default_layout(layout_cz101);
-}
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/d6800.cpp b/src/mame/drivers/d6800.cpp
index fac7892b7b5..d0776d1ee56 100644
--- a/src/mame/drivers/d6800.cpp
+++ b/src/mame/drivers/d6800.cpp
@@ -16,16 +16,10 @@
The cassette has no checksum, header or blocks. It is simply a stream
of pulses. The successful loading of a tape is therefore a matter of luck.
- To modify memory, press RST, then enter the 4-digit address (nothing happens
- until the 4th digit is pressed), then press FN, then 0, then the 2 digit data.
- It will enter the data (you won't see anything), then the address will increment.
- Enter the data for this new address. If you want to skip this address, press FN.
- When you're done, press RST. NOTE!!! Do NOT change any of these addresses:
- 0000,0001,0006-007F, or the system may crash. It's recommended to start all
- your programs at 0200.
-
Function keys:
- FN 0 - Modify memory - see above paragraph.
+ FN 0 - Modify memory - firstly enter a 4-digit address, then 2-digit data
+ the address will increment by itself, enter the next byte.
+ FN by itself will step to the next address.
FN 1 - Tape load. You must have entered the start address at 0002, and
the end address+1 at 0004 (big-endian).
@@ -33,14 +27,14 @@
FN 2 - Tape save. You must have entered the start address at 0002, and
the end address+1 at 0004 (big-endian).
- FN 3 - Run. To use, press RST, then enter the 4-digit start address
- (nothing happens until the 4th digit is pressed), then FN, then 3.
+ FN 3 - Run. You must have entered the 4-digit go address first.
- All CHIP-8 programs load at 0200 (max size 4k), and exec address
+ All CHIP-8 programs load at 0x200 (max size 4k), and exec address
is C000.
Information and programs can be found at http://chip8.com/?page=78
+
**********************************************************************************/
@@ -81,8 +75,6 @@ public:
void d6800(machine_config &config);
- DECLARE_INPUT_CHANGED_MEMBER(reset_button);
-
private:
DECLARE_READ8_MEMBER( d6800_cassette_r );
DECLARE_WRITE8_MEMBER( d6800_cassette_w );
@@ -193,23 +185,13 @@ static INPUT_PORTS_START( d6800 )
PORT_START("SHIFT")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("FN") PORT_CODE(KEYCODE_LSHIFT)
- PORT_START("RESET")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RST") PORT_CODE(KEYCODE_LALT) PORT_CHANGED_MEMBER(DEVICE_SELF, d6800_state, reset_button, nullptr)
-
PORT_START("VS")
/* vblank */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_VBLANK("screen")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_VBLANK("screen")
INPUT_PORTS_END
-INPUT_CHANGED_MEMBER(d6800_state::reset_button)
-{
- // RESET button wired to POR on the mc6875, which activates the Reset output pin which in turn connects to the CPU's Reset pin.
- if (newval)
- m_pia->reset();
- m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
-}
-
/* Video */
+
uint32_t d6800_state::screen_update_d6800(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint8_t x,y,gfx=0;
@@ -408,23 +390,23 @@ QUICKLOAD_LOAD_MEMBER( d6800_state, d6800 )
MACHINE_CONFIG_START(d6800_state::d6800)
/* basic machine hardware */
- M6800(config, m_maincpu, XTAL(4'000'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &d6800_state::d6800_map);
+ MCFG_DEVICE_ADD("maincpu",M6800, XTAL(4'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(d6800_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_size(64, 32);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(d6800_state::screen_update_d6800));
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(25));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(64, 32)
+ MCFG_SCREEN_VISIBLE_AREA(0, 63, 0, 31)
+ MCFG_SCREEN_UPDATE_DRIVER(d6800_state, screen_update_d6800)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(25))
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.50);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.50);
BEEP(config, "beeper", 1200).add_route(ALL_OUTPUTS, "mono", 0.50);
/* devices */
@@ -437,14 +419,14 @@ MACHINE_CONFIG_START(d6800_state::d6800)
m_pia->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- CASSETTE(config, m_cass);
- m_cass->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
- TIMER(config, "d6800_c").configure_periodic(FUNC(d6800_state::d6800_c), attotime::from_hz(4800));
- TIMER(config, "d6800_p").configure_periodic(FUNC(d6800_state::d6800_p), attotime::from_hz(40000));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("d6800_c", d6800_state, d6800_c, attotime::from_hz(4800))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("d6800_p", d6800_state, d6800_p, attotime::from_hz(40000))
/* quickload */
- MCFG_QUICKLOAD_ADD("quickload", d6800_state, d6800, "bin,c8,ch8", attotime::from_seconds(1))
+ MCFG_QUICKLOAD_ADD("quickload", d6800_state, d6800, "bin,c8,ch8", 1)
MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/d6809.cpp b/src/mame/drivers/d6809.cpp
index 24525bcc328..9c5c8e1d543 100644
--- a/src/mame/drivers/d6809.cpp
+++ b/src/mame/drivers/d6809.cpp
@@ -145,7 +145,7 @@ READ8_MEMBER( d6809_state::term_r )
WRITE8_MEMBER( d6809_state::term_w )
{
if ((data > 0) && (data < 0x80))
- m_terminal->write(data);
+ m_terminal->write(space, 0, data);
}
void d6809_state::mem_map(address_map &map)
@@ -189,14 +189,13 @@ static void floppies(device_slot_interface &device)
}
-void d6809_state::d6809(machine_config &config)
-{
+MACHINE_CONFIG_START(d6809_state::d6809)
/* basic machine hardware */
- MC6809E(config, m_maincpu, XTAL(14'745'600) / 8); // MC68B09EP
- m_maincpu->set_addrmap(AS_PROGRAM, &d6809_state::mem_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(14'745'600) / 8) // MC68B09EP
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
- MOS6551(config, "acia1", XTAL(14'745'600) / 8); // uses Q clock
- MOS6551(config, "acia2", XTAL(14'745'600) / 8); // uses Q clock
+ MCFG_DEVICE_ADD("acia1", MOS6551, XTAL(14'745'600) / 8) // uses Q clock
+ MCFG_DEVICE_ADD("acia2", MOS6551, XTAL(14'745'600) / 8) // uses Q clock
/* video hardware */
GENERIC_TERMINAL(config, m_terminal, 0);
@@ -205,8 +204,9 @@ void d6809_state::d6809(machine_config &config)
// Floppy
UPD765A(config, m_fdc, 8'000'000, true, true);
//m_fdc->drq_wr_callback().set(m_fdc, FUNC(upd765a_device::dack_w)); // pin not emulated
- FLOPPY_CONNECTOR(config, "fdc:0", floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
-}
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( d6809 )
diff --git a/src/mame/drivers/d9final.cpp b/src/mame/drivers/d9final.cpp
index 7590a51ce4b..e1704b33ee1 100644
--- a/src/mame/drivers/d9final.cpp
+++ b/src/mame/drivers/d9final.cpp
@@ -302,36 +302,37 @@ void d9final_state::machine_start()
membank("bank1")->set_entry(0);
}
-void d9final_state::d9final(machine_config &config)
-{
+MACHINE_CONFIG_START(d9final_state::d9final)
/* basic machine hardware */
- Z80(config, m_maincpu, 24000000/4); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &d9final_state::d9final_map);
- m_maincpu->set_addrmap(AS_IO, &d9final_state::d9final_io);
- m_maincpu->set_vblank_int("screen", FUNC(d9final_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 24000000/4)/* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(d9final_map)
+ MCFG_DEVICE_IO_MAP(d9final_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", d9final_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // Sharp LH5116D-10 + battery
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 16, 256-16-1);
- screen.set_screen_update(FUNC(d9final_state::screen_update));
- screen.set_palette("palette");
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_d9final);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(d9final_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_d9final)
PALETTE(config, "palette", palette_device::BLACK).set_format(palette_device::xBRG_444, 0x400);
SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 0.5);
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
- //ES8712(config, "essnd", 24000000/3).add_route(ALL_OUTPUTS, "mono", 1.0); // clock unknown
+ //MCFG_DEVICE_ADD("essnd", ES8712, 24000000/3) // clock unknown
+ //MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- RTC62421(config, "rtc", XTAL(32'768)); // internal oscillator
-}
+ MCFG_DEVICE_ADD("rtc", RTC62421, XTAL(32'768)) // internal oscillator
+MACHINE_CONFIG_END
ROM_START( d9final )
diff --git a/src/mame/drivers/dacholer.cpp b/src/mame/drivers/dacholer.cpp
index 26d330b5eab..5b3acce684b 100644
--- a/src/mame/drivers/dacholer.cpp
+++ b/src/mame/drivers/dacholer.cpp
@@ -649,18 +649,18 @@ void dacholer_state::dacholer_palette(palette_device &palette) const
bit0 = BIT(color_prom[i], 0);
bit1 = BIT(color_prom[i], 1);
bit2 = BIT(color_prom[i], 2);
- int const r = combine_weights(weights_rg, bit0, bit1, bit2);
+ int const r = combine_3_weights(weights_rg, bit0, bit1, bit2);
// green component
bit0 = BIT(color_prom[i], 3);
bit1 = BIT(color_prom[i], 4);
bit2 = BIT(color_prom[i], 5);
- int const g = combine_weights(weights_rg, bit0, bit1, bit2);
+ int const g = combine_3_weights(weights_rg, bit0, bit1, bit2);
// blue component
bit0 = BIT(color_prom[i], 6);
bit1 = BIT(color_prom[i], 7);
- int const b = combine_weights(weights_b, bit0, bit1);
+ int const b = combine_2_weights(weights_b, bit0, bit1);
palette.set_pen_color(i, rgb_t(r, g, b));
}
@@ -702,7 +702,7 @@ void dacholer_state::dacholer(machine_config &config)
AY8910(config, "ay3", XTAL(19'968'000)/16).add_route(ALL_OUTPUTS, "mono", 0.15);
MSM5205(config, m_msm, XTAL(384'000));
- m_msm->vck_legacy_callback().set(FUNC(dacholer_state::adpcm_int)); /* interrupt function */
+ m_msm->vck_legacy_callback().set(FUNC(dacholer_state::adpcm_int)); /* interrupt function */
m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 1 / 96 = 3906.25Hz playback - guess */
m_msm->add_route(ALL_OUTPUTS, "mono", 0.30);
}
diff --git a/src/mame/drivers/dai.cpp b/src/mame/drivers/dai.cpp
index 9791381e4c0..42425d3f928 100644
--- a/src/mame/drivers/dai.cpp
+++ b/src/mame/drivers/dai.cpp
@@ -187,14 +187,13 @@ static GFXDECODE_START( gfx_dai )
GFXDECODE_END
/* machine definition */
-void dai_state::dai(machine_config &config)
-{
+MACHINE_CONFIG_START(dai_state::dai)
/* basic machine hardware */
- I8080(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &dai_state::dai_mem);
- m_maincpu->set_addrmap(AS_IO, &dai_state::dai_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(dai_state::int_ack));
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD("maincpu", I8080, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(dai_mem)
+ MCFG_DEVICE_IO_MAP(dai_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(dai_state,int_ack)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
PIT8253(config, m_pit, 0);
m_pit->set_clk<0>(2000000);
@@ -207,29 +206,29 @@ void dai_state::dai(machine_config &config)
I8255(config, "ppi8255");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(1056, 542);
- screen.set_visarea(0, 1056-1, 0, 302-1);
- screen.set_screen_update(FUNC(dai_state::screen_update_dai));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, "gfxdecode", m_palette, gfx_dai);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(1056, 542)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1056-1, 0, 302-1)
+ MCFG_SCREEN_UPDATE_DRIVER(dai_state, screen_update_dai)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_dai)
PALETTE(config, m_palette, FUNC(dai_state::dai_palette), ARRAY_LENGTH(s_palette));
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
DAI_SOUND(config, m_sound).add_route(0, "lspeaker", 0.50).add_route(1, "rspeaker", 0.50);
/* cassette */
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("dai_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("dai_cass")
/* tms5501 */
TMS5501(config, m_tms5501, 2000000);
@@ -241,8 +240,8 @@ void dai_state::dai(machine_config &config)
RAM(config, RAM_TAG).set_default_size("48K");
/* software lists */
- SOFTWARE_LIST(config, "cass_list").set_original("dai_cass");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "dai_cass")
+MACHINE_CONFIG_END
ROM_START(dai)
diff --git a/src/mame/drivers/dai3wksi.cpp b/src/mame/drivers/dai3wksi.cpp
index 2002ee353d8..5f434b5eced 100644
--- a/src/mame/drivers/dai3wksi.cpp
+++ b/src/mame/drivers/dai3wksi.cpp
@@ -5,7 +5,7 @@
-Galaxy Force
-Run Away
--------------------------
-Dai 3 Wakusei
+Dai San Wakusei Meteor
(c)1979 Sun Electronics
SIV-01-B
@@ -533,7 +533,7 @@ void dai3wksi_state::dai3wksi(machine_config &config)
m_ic81->set_enable(1);
m_ic81->add_route(ALL_OUTPUTS, "mono", 0.4);
#endif
-}
+MACHINE_CONFIG_END
/*************************************
@@ -557,4 +557,4 @@ ROM_END
*
*************************************/
-GAME( 1979, dai3wksi, 0, dai3wksi, dai3wksi, dai3wksi_state, empty_init, ROT270, "Sun Electronics", "Dai 3 Wakusei (Japan)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, dai3wksi, 0, dai3wksi, dai3wksi, dai3wksi_state, empty_init, ROT270, "Sun Electronics", "Dai San Wakusei Meteor (Japan)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dambustr.cpp b/src/mame/drivers/dambustr.cpp
index 9c185d0b378..a2b7a52340a 100644
--- a/src/mame/drivers/dambustr.cpp
+++ b/src/mame/drivers/dambustr.cpp
@@ -261,28 +261,27 @@ void dambustr_state::init_dambustr()
-void dambustr_state::dambustr(machine_config &config)
-{
+MACHINE_CONFIG_START(dambustr_state::dambustr)
/* basic machine hardware */
- Z80(config, m_maincpu, 18432000/6); /* 3.072 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &dambustr_state::dambustr_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(dambustr_map)
MCFG_MACHINE_RESET_OVERRIDE(dambustr_state,galaxold)
TTL7474(config, "7474_9m_1", 0).output_cb().set(FUNC(dambustr_state::galaxold_7474_9m_1_callback));
TTL7474(config, "7474_9m_2", 0).comp_output_cb().set(FUNC(dambustr_state::galaxold_7474_9m_2_q_callback));
- TIMER(config, "int_timer").configure_generic(FUNC(dambustr_state::galaxold_interrupt_timer));
+ MCFG_TIMER_DRIVER_ADD("int_timer", dambustr_state, galaxold_interrupt_timer)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(16000.0/132/2);
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(dambustr_state::screen_update_dambustr));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(16000.0/132/2)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(dambustr_state, screen_update_dambustr)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_dambustr);
PALETTE(config, m_palette, FUNC(dambustr_state::dambustr_palette), 32+2+64+8); // 32 for the characters, 2 for the bullets, 64 for the stars, 8 for the background
@@ -293,7 +292,7 @@ void dambustr_state::dambustr(machine_config &config)
SPEAKER(config, "speaker").front_center();
galaxian_audio(config);
-}
+MACHINE_CONFIG_END
ROM_START( dambustr )
diff --git a/src/mame/drivers/darkmist.cpp b/src/mame/drivers/darkmist.cpp
index 58cd566b3e6..fd2c10f808e 100644
--- a/src/mame/drivers/darkmist.cpp
+++ b/src/mame/drivers/darkmist.cpp
@@ -239,24 +239,23 @@ TIMER_DEVICE_CALLBACK_MEMBER(darkmist_state::scanline)
-void darkmist_state::darkmist(machine_config &config)
-{
+MACHINE_CONFIG_START(darkmist_state::darkmist)
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &darkmist_state::memmap);
- m_maincpu->set_addrmap(AS_OPCODES, &darkmist_state::decrypted_opcodes_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(darkmist_state::scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", Z80,4000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(memmap)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", darkmist_state, scanline, "screen", 0, 1)
- T5182(config, m_t5182, 0);
+ MCFG_DEVICE_ADD("t5182", T5182, 0)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 256-1, 16, 256-16-1);
- m_screen->set_screen_update(FUNC(darkmist_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(darkmist_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_darkmist);
PALETTE(config, m_palette, FUNC(darkmist_state::darkmist_palette));
@@ -270,7 +269,7 @@ void darkmist_state::darkmist(machine_config &config)
ymsnd.irq_handler().set(m_t5182, FUNC(t5182_device::ym2151_irq_handler));
ymsnd.add_route(0, "mono", 1.0);
ymsnd.add_route(1, "mono", 1.0);
-}
+MACHINE_CONFIG_END
ROM_START( darkmist )
ROM_REGION( 0x18000, "maincpu", 0 )
diff --git a/src/mame/drivers/darkseal.cpp b/src/mame/drivers/darkseal.cpp
index 71fe922f2bd..9cea0a5512f 100644
--- a/src/mame/drivers/darkseal.cpp
+++ b/src/mame/drivers/darkseal.cpp
@@ -201,30 +201,30 @@ GFXDECODE_END
/******************************************************************************/
-void darkseal_state::darkseal(machine_config &config)
-{
+MACHINE_CONFIG_START(darkseal_state::darkseal)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000)/2); /* Custom chip 59 */
- m_maincpu->set_addrmap(AS_PROGRAM, &darkseal_state::darkseal_map);
- m_maincpu->set_vblank_int("screen", FUNC(darkseal_state::irq6_line_assert)); /* VBL */
+ MCFG_DEVICE_ADD(m_maincpu, M68000, XTAL(24'000'000)/2) /* Custom chip 59 */
+ MCFG_DEVICE_PROGRAM_MAP(darkseal_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", darkseal_state, irq6_line_assert)/* VBL */
H6280(config, m_audiocpu, XTAL(32'220'000)/4); /* Custom chip 45, Audio section crystal is 32.220 MHz */
m_audiocpu->set_addrmap(AS_PROGRAM, &darkseal_state::sound_map);
m_audiocpu->add_route(ALL_OUTPUTS, "mono", 0); // internal sound unused
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(529));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(darkseal_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(darkseal_state, screen_update)
+ MCFG_SCREEN_PALETTE("colors")
- GFXDECODE(config, "gfxdecode", m_palette, gfx_darkseal);
- PALETTE(config, m_palette).set_entries(2048);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_darkseal)
+ MCFG_PALETTE_ADD(m_palette, 2048)
- BUFFERED_SPRITERAM16(config, m_spriteram);
+ MCFG_DEVICE_ADD(m_spriteram, BUFFERED_SPRITERAM16)
DECO16IC(config, m_deco_tilegen[0], 0);
m_deco_tilegen[0]->set_split(0);
@@ -264,17 +264,20 @@ void darkseal_state::darkseal(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
- YM2203(config, "ym1", XTAL(32'220'000)/8).add_route(ALL_OUTPUTS, "mono", 0.45);
+ MCFG_DEVICE_ADD("ym1", YM2203, XTAL(32'220'000)/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000)/9));
ym2.irq_handler().set_inputline(m_audiocpu, 1); // IRQ2
ym2.add_route(0, "mono", 0.55);
ym2.add_route(1, "mono", 0.55);
- OKIM6295(config, "oki1", XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- OKIM6295(config, "oki2", XTAL(32'220'000)/16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(32'220'000)/16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+MACHINE_CONFIG_END
/******************************************************************************/
diff --git a/src/mame/drivers/daruma.cpp b/src/mame/drivers/daruma.cpp
index 1ac8fd665f1..2a4946ba9fb 100644
--- a/src/mame/drivers/daruma.cpp
+++ b/src/mame/drivers/daruma.cpp
@@ -118,17 +118,17 @@ static INPUT_PORTS_START( daruma )
INPUT_PORTS_END
-void daruma_state::daruma(machine_config &config)
-{
+MACHINE_CONFIG_START(daruma_state::daruma)
/* basic machine hardware */
- I80C32(config, m_maincpu, 11059200); //verified on pcb
- m_maincpu->set_addrmap(AS_PROGRAM, &daruma_state::mem_prg);
- m_maincpu->set_addrmap(AS_IO, &daruma_state::mem_io);
+ MCFG_DEVICE_ADD("maincpu", I80C32,11059200) //verified on pcb
+ MCFG_DEVICE_PROGRAM_MAP(mem_prg)
+ MCFG_DEVICE_IO_MAP(mem_io)
// TODO: ports
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(0, "mono", 1.00);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(0, "mono", 1.00)
/* TODO:
config.set_default_layout(layout_daruma);
@@ -136,9 +136,9 @@ void daruma_state::daruma(machine_config &config)
Motors: MTA011
http://pdf.datasheetcatalog.com/datasheet/Shindengen/mXstzvq.pdf
- The motor controller supposedly is used to cut the paper strip out after finishing printing something.
+ The motor controller suposedly is used to cut the paper strip out after finishing printing something.
*/
-}
+MACHINE_CONFIG_END
ROM_START( ds348 )
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/dassault.cpp b/src/mame/drivers/dassault.cpp
index 8ede1f49abb..f69aba9b005 100644
--- a/src/mame/drivers/dassault.cpp
+++ b/src/mame/drivers/dassault.cpp
@@ -522,39 +522,39 @@ void dassault_state::machine_reset()
m_priority = 0;
}
-void dassault_state::dassault(machine_config &config)
-{
+MACHINE_CONFIG_START(dassault_state::dassault)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(28'000'000)/2); /* 14MHz - Accurate */
- m_maincpu->set_addrmap(AS_PROGRAM, &dassault_state::dassault_map);
- m_maincpu->set_vblank_int("screen", FUNC(dassault_state::irq4_line_assert));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(28'000'000)/2) /* 14MHz - Accurate */
+ MCFG_DEVICE_PROGRAM_MAP(dassault_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dassault_state, irq4_line_assert)
- M68000(config, m_subcpu, XTAL(28'000'000)/2); /* 14MHz - Accurate */
- m_subcpu->set_addrmap(AS_PROGRAM, &dassault_state::dassault_sub_map);
- m_subcpu->set_vblank_int("screen", FUNC(dassault_state::irq5_line_assert));
+ MCFG_DEVICE_ADD("sub", M68000, XTAL(28'000'000)/2) /* 14MHz - Accurate */
+ MCFG_DEVICE_PROGRAM_MAP(dassault_sub_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dassault_state, irq5_line_assert)
H6280(config, m_audiocpu, XTAL(32'220'000)/8); /* Accurate */
m_audiocpu->set_addrmap(AS_PROGRAM, &dassault_state::sound_map);
m_audiocpu->add_route(ALL_OUTPUTS, "lspeaker", 0); // internal sound unused
m_audiocpu->add_route(ALL_OUTPUTS, "rspeaker", 0);
-// config.m_minimum_quantum = attotime::from_hz(8400); /* 140 CPU slices per frame */
- config.m_perfect_cpu_quantum = subtag("maincpu"); // I was seeing random lockups.. let's see if this helps
+// MCFG_QUANTUM_TIME(attotime::from_hz(8400)) /* 140 CPU slices per frame */
+ MCFG_QUANTUM_PERFECT_CPU("maincpu") // I was seeing random lockups.. let's see if this helps
mb8421_mb8431_16_device &sharedram(MB8421_MB8431_16BIT(config, "sharedram"));
sharedram.intl_callback().set_inputline("maincpu", M68K_IRQ_5);
sharedram.intr_callback().set_inputline("sub", M68K_IRQ_6);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248); // same as robocop2(cninja.cpp)? verify this from real pcb.
- screen.set_screen_update(FUNC(dassault_state::screen_update_dassault));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248) // same as robocop2(cninja.cpp)? verify this from real pcb.
+ MCFG_SCREEN_UPDATE_DRIVER(dassault_state, screen_update_dassault)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_dassault);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dassault)
PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 4096);
- BUFFERED_SPRITERAM16(config, m_spriteram[0]);
- BUFFERED_SPRITERAM16(config, m_spriteram[1]);
+ MCFG_DEVICE_ADD("spriteram1", BUFFERED_SPRITERAM16)
+ MCFG_DEVICE_ADD("spriteram2", BUFFERED_SPRITERAM16)
DECO16IC(config, m_deco_tilegen[0], 0);
m_deco_tilegen[0]->set_split(0);
@@ -603,9 +603,9 @@ void dassault_state::dassault(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0); // IRQ1
- ym2203_device &ym1(YM2203(config, "ym1", XTAL(32'220'000)/8));
- ym1.add_route(ALL_OUTPUTS, "lspeaker", 0.40);
- ym1.add_route(ALL_OUTPUTS, "rspeaker", 0.40);
+ MCFG_DEVICE_ADD("ym1", YM2203, XTAL(32'220'000)/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000)/9));
ym2.irq_handler().set_inputline(m_audiocpu, 1);
@@ -613,14 +613,14 @@ void dassault_state::dassault(machine_config &config)
ym2.add_route(0, "lspeaker", 0.45);
ym2.add_route(1, "rspeaker", 0.45);
- okim6295_device &oki1(OKIM6295(config, "oki1", XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH)); // verified
- oki1.add_route(ALL_OUTPUTS, "lspeaker", 0.50);
- oki1.add_route(ALL_OUTPUTS, "rspeaker", 0.50);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH) // verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
- OKIM6295(config, m_oki2, XTAL(32'220'000)/16, okim6295_device::PIN7_HIGH); // verified
- m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 0.25);
- m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 0.25);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(32'220'000)/16, okim6295_device::PIN7_HIGH) // verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25)
+MACHINE_CONFIG_END
/**********************************************************************************/
diff --git a/src/mame/drivers/datum.cpp b/src/mame/drivers/datum.cpp
index 6b957acd9a1..d774b737b66 100644
--- a/src/mame/drivers/datum.cpp
+++ b/src/mame/drivers/datum.cpp
@@ -182,11 +182,10 @@ WRITE8_MEMBER( datum_state::pb_w )
}
-void datum_state::datum(machine_config &config)
-{
+MACHINE_CONFIG_START(datum_state::datum)
/* basic machine hardware */
- M6802(config, m_maincpu, XTAL(4'000'000)); // internally divided to 1 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &datum_state::datum_mem);
+ MCFG_DEVICE_ADD("maincpu",M6802, XTAL(4'000'000)) // internally divided to 1 MHz
+ MCFG_DEVICE_PROGRAM_MAP(datum_mem)
/* video hardware */
config.set_default_layout(layout_datum);
@@ -203,8 +202,8 @@ void datum_state::datum(machine_config &config)
pia2.irqa_handler().set_inputline("maincpu", M6802_IRQ_LINE);
pia2.irqb_handler().set_inputline("maincpu", M6802_IRQ_LINE);
- ACIA6850(config, "acia", 0); // rs232
-}
+ MCFG_DEVICE_ADD("acia", ACIA6850, 0) // rs232
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/dblcrown.cpp b/src/mame/drivers/dblcrown.cpp
index 55eab934533..77399816668 100644
--- a/src/mame/drivers/dblcrown.cpp
+++ b/src/mame/drivers/dblcrown.cpp
@@ -599,26 +599,26 @@ It needs at least 64 instances because 0xa05b will be eventually nuked by the vb
}
-void dblcrown_state::dblcrown(machine_config &config)
-{
+MACHINE_CONFIG_START(dblcrown_state::dblcrown)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &dblcrown_state::dblcrown_map);
- m_maincpu->set_addrmap(AS_IO, &dblcrown_state::dblcrown_io);
- TIMER(config, "scantimer").configure_scanline(FUNC(dblcrown_state::dblcrown_irq_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(dblcrown_map)
+ MCFG_DEVICE_IO_MAP(dblcrown_io)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", dblcrown_state, dblcrown_irq_scanline, "screen", 0, 1)
WATCHDOG_TIMER(config, m_watchdog).set_time(attotime::from_msec(1000)); /* 1000 ms. (minimal of MAX693A watchdog long timeout period with internal oscillator) */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_screen_update(FUNC(dblcrown_state::screen_update));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1);
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_UPDATE_DRIVER(dblcrown_state, screen_update)
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_dblcrown);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_dblcrown)
PALETTE(config, m_palette, FUNC(dblcrown_state::dblcrown_palette), 0x100);
@@ -632,7 +632,7 @@ void dblcrown_state::dblcrown(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
YMZ284(config, "ymz", SND_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.75);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/dblewing.cpp b/src/mame/drivers/dblewing.cpp
index 8f45fc625a7..f973a632dcd 100644
--- a/src/mame/drivers/dblewing.cpp
+++ b/src/mame/drivers/dblewing.cpp
@@ -352,34 +352,35 @@ DECOSPR_PRIORITY_CB_MEMBER(dblewing_state::pri_callback)
return 0; // sprites always on top?
}
-void dblewing_state::dblewing(machine_config &config)
-{
+MACHINE_CONFIG_START(dblewing_state::dblewing)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(28'000'000)/2); /* DE102 */
- m_maincpu->set_addrmap(AS_PROGRAM, &dblewing_state::dblewing_map);
- m_maincpu->set_addrmap(AS_OPCODES, &dblewing_state::decrypted_opcodes_map);
- m_maincpu->set_vblank_int("screen", FUNC(dblewing_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(28'000'000)/2) /* DE102 */
+ MCFG_DEVICE_PROGRAM_MAP(dblewing_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dblewing_state, irq6_line_hold)
- Z80(config, m_audiocpu, XTAL(32'220'000)/9);
- m_audiocpu->set_addrmap(AS_PROGRAM, &dblewing_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &dblewing_state::sound_io);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(32'220'000)/9)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_io)
- INPUT_MERGER_ANY_HIGH(config, "soundirq").output_handler().set_inputline(m_audiocpu, 0);
+ MCFG_INPUT_MERGER_ANY_HIGH("soundirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", 0))
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58.443);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(dblewing_state::screen_update_dblewing));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58.443)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(dblewing_state, screen_update_dblewing)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xBGR_444, 4096);
- GFXDECODE(config, "gfxdecode", "palette", gfx_dblewing);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dblewing)
DECO16IC(config, m_deco_tilegen, 0);
m_deco_tilegen->set_split(0);
@@ -418,8 +419,9 @@ void dblewing_state::dblewing(machine_config &config)
ymsnd.irq_handler().set("soundirq", FUNC(input_merger_device::in_w<1>));
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
- OKIM6295(config, "oki", XTAL(28'000'000)/28, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(28'000'000)/28, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/dbox.cpp b/src/mame/drivers/dbox.cpp
index 51d635b7da4..88e8b5e7bf4 100644
--- a/src/mame/drivers/dbox.cpp
+++ b/src/mame/drivers/dbox.cpp
@@ -603,8 +603,7 @@ void dbox_state::dbox_map(address_map &map)
static INPUT_PORTS_START( dbox )
INPUT_PORTS_END
-void dbox_state::dbox(machine_config &config)
-{
+MACHINE_CONFIG_START(dbox_state::dbox)
M68340(config, m_maincpu, 0); // The 68340 has an internal VCO as clock source, hence need no CPU clock
m_maincpu->set_crystal(XTAL(32'768)); // The dbox uses the VCO and has a crystal as VCO reference and to synthesize internal clocks from
m_maincpu->set_addrmap(AS_PROGRAM, &dbox_state::dbox_map);
@@ -615,8 +614,9 @@ void dbox_state::dbox(machine_config &config)
//m_maincpu->tgate2_in_callback().set("dsc", FUNC(descrambler_device::rxd_receiver));
/* Configure the serial ports */
- subdevice<mc68340_serial_module_device>("maincpu:serial")->a_tx_cb().set("rs232", FUNC(rs232_port_device::write_txd));
- subdevice<mc68340_serial_module_device>("maincpu:serial")->b_tx_cb().set("modem", FUNC(rs232_port_device::write_txd));
+ MCFG_DEVICE_MODIFY("maincpu:serial")
+ MCFG_MC68340SER_A_TX_CALLBACK(WRITELINE("rs232", rs232_port_device, write_txd))
+ MCFG_MC68340SER_B_TX_CALLBACK(WRITELINE("modem", rs232_port_device, write_txd))
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr));
rs232.rxd_handler().set("maincpu:serial", FUNC(mc68340_serial_module_device::rx_a_w));
rs232_port_device &modem(RS232_PORT(config, "modem", default_rs232_devices, nullptr));
@@ -626,13 +626,13 @@ void dbox_state::dbox(machine_config &config)
AMD_29F800B_16BIT(config, "flash");
/* LED Matrix Display */
- SDA5708(config, m_display, 0);
+ MCFG_SDA5708_ADD("display")
config.set_default_layout(layout_sda5708);
/* IP16 74256 8 bit latch */
LATCH8(config, m_ip16_74259);
m_ip16_74259->write_cb<4>().set("display", FUNC(sda5708_device::reset_w));
-}
+MACHINE_CONFIG_END
void dbox_state::init_dbox()
{
diff --git a/src/mame/drivers/dbz.cpp b/src/mame/drivers/dbz.cpp
index 2555c1aa644..0044a9b50f5 100644
--- a/src/mame/drivers/dbz.cpp
+++ b/src/mame/drivers/dbz.cpp
@@ -324,25 +324,25 @@ void dbz_state::machine_reset()
m_control = 0;
}
-void dbz_state::dbz(machine_config &config)
-{
+MACHINE_CONFIG_START(dbz_state::dbz)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 16000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &dbz_state::dbz_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(dbz_state::dbz_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M68000, 16000000)
+ MCFG_DEVICE_PROGRAM_MAP(dbz_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", dbz_state, dbz_scanline, "screen", 0, 1)
- Z80(config, m_audiocpu, 4000000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &dbz_state::dbz_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &dbz_state::dbz_sound_io_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(dbz_sound_map)
+ MCFG_DEVICE_IO_MAP(dbz_sound_io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(55);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 40*8);
- screen.set_visarea(0, 48*8-1, 0, 32*8-1);
- screen.set_screen_update(FUNC(dbz_state::screen_update_dbz));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(55)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 40*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 48*8-1, 0, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(dbz_state, screen_update_dbz)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_dbz);
@@ -382,10 +382,10 @@ void dbz_state::dbz(machine_config &config)
ymsnd.add_route(0, "lspeaker", 1.0);
ymsnd.add_route(1, "rspeaker", 1.0);
- okim6295_device &oki(OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH));
- oki.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/**********************************************************************************/
diff --git a/src/mame/drivers/dccons.cpp b/src/mame/drivers/dccons.cpp
index 062def2d2e3..e9e1be60cba 100644
--- a/src/mame/drivers/dccons.cpp
+++ b/src/mame/drivers/dccons.cpp
@@ -317,18 +317,6 @@ void dc_cons_state::init_dcjp()
init_dc();
}
-void dc_cons_state::init_tream()
-{
- // Modchip connected to BIOS ROM chip changes 4 bytes (actually bits) as shown below, which allow to boot any region games.
- u8 *rom = (u8 *)memregion("maincpu")->base();
- rom[0x503] |= 0x40;
- rom[0x50f] |= 0x40;
- rom[0x523] |= 0x40;
- rom[0x531] |= 0x40;
-
- init_dcus();
-}
-
READ64_MEMBER(dc_cons_state::dc_pdtra_r )
{
uint64_t out = PCTRA<<32;
@@ -593,8 +581,7 @@ void dc_cons_state::gdrom_config(device_t *device)
MCFG_SOUND_ROUTE(1, "^^aica", 1.0)
}
-void dc_cons_state::dc(machine_config &config)
-{
+MACHINE_CONFIG_START(dc_cons_state::dc)
/* basic machine hardware */
SH4LE(config, m_maincpu, CPU_CLOCK);
m_maincpu->set_md(0, 1);
@@ -610,10 +597,10 @@ void dc_cons_state::dc(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &dc_cons_state::dc_map);
m_maincpu->set_addrmap(AS_IO, &dc_cons_state::dc_port);
- TIMER(config, "scantimer").configure_scanline(FUNC(dc_state::dc_scanline), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", dc_state, dc_scanline, "screen", 0, 1)
- ARM7(config, m_soundcpu, ((XTAL(33'868'800)*2)/3)/8); // AICA bus clock is 2/3rds * 33.8688. ARM7 gets 1 bus cycle out of each 8.
- m_soundcpu->set_addrmap(AS_PROGRAM, &dc_cons_state::dc_audio_map);
+ MCFG_DEVICE_ADD("soundcpu", ARM7, ((XTAL(33'868'800)*2)/3)/8) // AICA bus clock is 2/3rds * 33.8688. ARM7 gets 1 bus cycle out of each 8.
+ MCFG_DEVICE_PROGRAM_MAP(dc_audio_map)
MCFG_MACHINE_RESET_OVERRIDE(dc_cons_state,dc_console )
@@ -659,10 +646,10 @@ void dc_cons_state::dc(machine_config &config)
dcctrl3.set_port_tag<7>("P4:A5");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(13458568*2, 857, 0, 640, 524, 0, 480); /* TODO: where pclk actually comes? */
- screen.set_screen_update("powervr2", FUNC(powervr2_device::screen_update));
- PALETTE(config, "palette").set_entries(0x1000);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(13458568*2, 857, 0, 640, 524, 0, 480) /* TODO: where pclk actually comes? */
+ MCFG_SCREEN_UPDATE_DEVICE("powervr2", powervr2_device, screen_update)
+ MCFG_PALETTE_ADD("palette", 0x1000)
POWERVR2(config, m_powervr2, 0);
m_powervr2->irq_callback().set(FUNC(dc_state::pvr_irq));
@@ -681,13 +668,13 @@ void dc_cons_state::dc(machine_config &config)
ATA_INTERFACE(config, m_ata, 0);
m_ata->irq_handler().set(FUNC(dc_cons_state::ata_interrupt));
- ata_slot_device &ata_0(*subdevice<ata_slot_device>("ata:0"));
- ata_0.option_add("gdrom", GDROM);
- ata_0.set_option_machine_config("gdrom", gdrom_config);
- ata_0.set_default_option("gdrom");
+ MCFG_DEVICE_MODIFY("ata:0")
+ MCFG_SLOT_OPTION_ADD("gdrom", GDROM)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("gdrom", gdrom_config)
+ MCFG_SLOT_DEFAULT_OPTION("gdrom")
- SOFTWARE_LIST(config, "cd_list").set_original("dc");
-}
+ MCFG_SOFTWARE_LIST_ADD("cd_list","dc")
+MACHINE_CONFIG_END
#define ROM_LOAD_BIOS(bios,name,offset,length,hash) \
@@ -778,15 +765,15 @@ ROM_END
// unauthorised portable modification
ROM_START( dctream )
ROM_REGION(0x200000, "maincpu", 0)
- // uses regular mpr-21931 BIOS chip, have region-free mod-chip installed, see driver init.
- ROM_LOAD( "mpr-21931.ic501", 0x000000, 0x200000, CRC(89f2b1a1) SHA1(8951d1bb219ab2ff8583033d2119c899cc81f18c) )
+ // multi-region hack of mpr-21931/1.01d BIOS, hardware checksum protection passes OK due to algorithm weakness
+ ROM_LOAD( "dc_bios.bin", 0x000000, 0x200000, CRC(cff88d0d) SHA1(e3f84705b183ffded0a349ac7f2ab00be2ab74ee) ) // dumped in software way, ROM label unknown
ROM_REGION(0x020000, "dcflash", 0)
ROM_LOAD( "dc_flash.bin", 0x000000, 0x020000, CRC(9d5515c4) SHA1(78a86fd4e8b58fc9d3535eef6591178f1b97ecf9) ) // VA1 NTSC-US
ROM_END
-// normally, with DIP switch 4 off, HKT-0100/0110/0120 AKA "Katana Set 5.xx", will be booted from flash ROM IC507 (first 2 dumps below)
-// otherwise it boots from EPROM which contain system checker software (last 2 dumps)
+// normally, with DIP switch 4 off, HKT-100/110/120 AKA "Katana Set 5.xx", will be booted from flash ROM IC507 (first 2 dumps below)
+// otherwise it boots from EPROM which contain system checker software (last dump)
ROM_START( dcdev )
ROM_REGION(0x200000, "maincpu", 0)
ROM_SYSTEM_BIOS(0, "1011", "Katana Set5 v1.011 (World)") // BOOT flash rom update from Katana SDK R9-R11, WinCE SDK v2.1
@@ -795,14 +782,11 @@ ROM_START( dcdev )
ROM_LOAD_BIOS(1, "set5v1.001.ic507", 0x000000, 0x200000, CRC(5702d38f) SHA1(ea7a3ae1de73683008dd795c252941a4fc81b42e) )
// 27C160 EPROM (DIP42) IC??? labeled
- // SET5 7676
- // V0.71 98/11/13
- ROM_SYSTEM_BIOS(2, "071", "Katana Set5 Checker v0.71")
- ROM_LOAD_BIOS(2, "set5v0.71.bin", 0x000000, 0x200000, CRC(52d01969) SHA1(28aec4a01419d2d2a664c540bef30ea289ca0644) )
// SET5 FC52
// V0.41 98/08/27
- ROM_SYSTEM_BIOS(3, "041", "Katana Set5 Checker v0.41")
- ROM_LOAD_BIOS(3, "set5v0.41.bin", 0x000000, 0x200000, CRC(485877bd) SHA1(dc1af1f1248ffa87d57bc5ef2ea41aac95ecfc5e) )
+ // also known to exists v0.71 98/11/13
+ ROM_SYSTEM_BIOS(2, "041", "Katana Set5 Checker v0.41")
+ ROM_LOAD_BIOS(2, "set5v0.41.bin", 0x000000, 0x200000, CRC(485877bd) SHA1(dc1af1f1248ffa87d57bc5ef2ea41aac95ecfc5e) )
ROM_REGION(0x020000, "dcflash", 0)
ROM_LOAD( "hkt-0120-flash.bin", 0x000000, 0x020000, CRC(7784c304) SHA1(31ef57f550d8cd13e40263cbc657253089e53034) ) // Dev.Boxes have empty (FF filled) flash ROM
@@ -812,5 +796,5 @@ ROM_END
CONS( 1999, dc, dcjp, 0, dc, dc, dc_cons_state, init_dcus, "Sega", "Dreamcast (USA, NTSC)", MACHINE_NOT_WORKING )
CONS( 1998, dcjp, 0, 0, dc, dc, dc_cons_state, init_dcjp, "Sega", "Dreamcast (Japan, NTSC)", MACHINE_NOT_WORKING )
CONS( 1999, dceu, dcjp, 0, dc, dc, dc_cons_state, init_dcus, "Sega", "Dreamcast (Europe, PAL)", MACHINE_NOT_WORKING )
-CONS( 200?, dctream, dcjp, 0, dc, dc, dc_cons_state, init_tream,"<unknown>", "Treamcast", MACHINE_NOT_WORKING )
+CONS( 200?, dctream, dcjp, 0, dc, dc, dc_cons_state, init_dcus, "<unknown>", "Treamcast", MACHINE_NOT_WORKING )
CONS( 1998, dcdev, 0, 0, dc, dc, dc_cons_state, init_dc, "Sega", "HKT-0120 Sega Dreamcast Development Box", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/dcheese.cpp b/src/mame/drivers/dcheese.cpp
index ae549e95787..beda6b290d3 100644
--- a/src/mame/drivers/dcheese.cpp
+++ b/src/mame/drivers/dcheese.cpp
@@ -69,17 +69,17 @@ IRQ_CALLBACK_MEMBER(dcheese_state::irq_callback)
}
-void dcheese_state::signal_irq(u8 which)
+void dcheese_state::dcheese_signal_irq(int which )
{
m_irq_state[which] = 1;
update_irq_state();
}
-INTERRUPT_GEN_MEMBER(dcheese_state::vblank)
+INTERRUPT_GEN_MEMBER(dcheese_state::dcheese_vblank)
{
logerror("---- VBLANK ----\n");
- signal_irq(4);
+ dcheese_signal_irq(4);
}
@@ -117,7 +117,7 @@ WRITE16_MEMBER(dcheese_state::eeprom_control_w)
/* bits $0080-$0010 are probably lamps */
if (ACCESSING_BITS_0_7)
{
- m_eepromout_io->write(data, 0xff);
+ ioport("EEPROMOUT")->write(data, 0xff);
}
}
@@ -138,7 +138,7 @@ READ8_MEMBER(dcheese_state::sound_status_r)
WRITE8_MEMBER(dcheese_state::sound_control_w)
{
- u8 const diff = data ^ m_sound_control;
+ uint8_t diff = data ^ m_sound_control;
m_sound_control = data;
/* bit 0x20 = LED */
@@ -173,7 +173,7 @@ WRITE8_MEMBER(dcheese_state::bsmt_data_w)
void dcheese_state::main_cpu_map(address_map &map)
{
map.unmap_value_high();
- map(0x000000, 0x03ffff).rom().region("maincpu", 0);
+ map(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram();
map(0x200000, 0x200001).portr("200000").w("watchdog", FUNC(watchdog_timer_device::reset16_w));
map(0x220000, 0x220001).portr("220000").w(FUNC(dcheese_state::blitter_color_w));
@@ -200,7 +200,7 @@ void dcheese_state::sound_cpu_map(address_map &map)
map(0x0800, 0x0800).mirror(0x07ff).r(m_soundlatch, FUNC(generic_latch_8_device::read));
map(0x1000, 0x10ff).mirror(0x0700).w(FUNC(dcheese_state::bsmt_data_w));
map(0x1800, 0x1fff).ram();
- map(0x2000, 0xffff).rom().region("audiocpu", 0x2000);
+ map(0x2000, 0xffff).rom();
}
@@ -371,31 +371,31 @@ INPUT_PORTS_END
*
*************************************/
-void dcheese_state::dcheese(machine_config &config)
-{
+MACHINE_CONFIG_START(dcheese_state::dcheese)
+
/* basic machine hardware */
- M68000(config, m_maincpu, MAIN_OSC);
- m_maincpu->set_addrmap(AS_PROGRAM, &dcheese_state::main_cpu_map);
- m_maincpu->set_vblank_int("screen", FUNC(dcheese_state::vblank));
- m_maincpu->set_irq_acknowledge_callback(FUNC(dcheese_state::irq_callback));
+ MCFG_DEVICE_ADD("maincpu", M68000, MAIN_OSC)
+ MCFG_DEVICE_PROGRAM_MAP(main_cpu_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dcheese_state, dcheese_vblank)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(dcheese_state,irq_callback)
- M6809(config, m_audiocpu, SOUND_OSC/16); // TODO : Unknown CPU type
- m_audiocpu->set_addrmap(AS_PROGRAM, &dcheese_state::sound_cpu_map);
- m_audiocpu->set_periodic_int(FUNC(dcheese_state::irq1_line_hold), attotime::from_hz(480)); /* accurate for fredmem */
+ MCFG_DEVICE_ADD("audiocpu", M6809, SOUND_OSC/16)
+ MCFG_DEVICE_PROGRAM_MAP(sound_cpu_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(dcheese_state, irq1_line_hold, 480) /* accurate for fredmem */
EEPROM_93C46_16BIT(config, "eeprom");
- TICKET_DISPENSER(config, "ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+ MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(360, 262); /* guess, need to see what the games write to the vid registers */
- m_screen->set_visarea(0, 319, 0, 239);
- m_screen->set_screen_update(FUNC(dcheese_state::screen_update));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(360, 262) /* guess, need to see what the games write to the vid registers */
+ MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
+ MCFG_SCREEN_UPDATE_DRIVER(dcheese_state, screen_update_dcheese)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(dcheese_state::dcheese_palette), 65536);
@@ -406,18 +406,17 @@ void dcheese_state::dcheese(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
- BSMT2000(config, m_bsmt, SOUND_OSC);
- m_bsmt->add_route(0, "lspeaker", 1.2);
- m_bsmt->add_route(1, "rspeaker", 1.2);
-}
+ MCFG_DEVICE_ADD("bsmt", BSMT2000, SOUND_OSC)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.2)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.2)
+MACHINE_CONFIG_END
-void dcheese_state::fredmem(machine_config &config)
-{
+MACHINE_CONFIG_START(dcheese_state::fredmem)
dcheese(config);
-
- m_screen->set_visarea(0, 359, 0, 239);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 359, 0, 239)
+MACHINE_CONFIG_END
@@ -761,7 +760,7 @@ ROM_START( cecmatch )
ROM_RELOAD( 0x3c0000, 0x40000 )
ROM_REGION16_LE( 0x20000, "palrom", 0 )
- ROM_LOAD16_BYTE( "0.144", 0x00000, 0x10000, CRC(69b3cc85) SHA1(05f7204ac961274b5d2f42cc6c0d06e5fa146aef) ) /* Palette - 0 at U144 */
+ ROM_LOAD16_BYTE( "0.144", 0x00000, 0x10000, CRC(69b3cc85) SHA1(05f7204ac961274b5d2f42cc6c0d06e5fa146aef)) /* Palette - 0 at U144 */
ROM_LOAD16_BYTE( "1.145", 0x00001, 0x10000, CRC(e64a8511) SHA1(0e3a1fe936c841b8acfb150bf63e564b1dec2363) ) /* Palette - 1 at U145 */
ROM_END
diff --git a/src/mame/drivers/dday.cpp b/src/mame/drivers/dday.cpp
index 7a061fc3215..00d67128fb4 100644
--- a/src/mame/drivers/dday.cpp
+++ b/src/mame/drivers/dday.cpp
@@ -254,21 +254,21 @@ void dday_state::machine_reset()
}
-void dday_state::dday(machine_config &config)
-{
+MACHINE_CONFIG_START(dday_state::dday)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 2000000); /* 2 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &dday_state::dday_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 2000000) /* 2 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(dday_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
- m_screen->set_screen_update(FUNC(dday_state::screen_update_dday));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(dday_state, screen_update_dday)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_dday);
PALETTE(config, m_palette, FUNC(dday_state::dday_palette), 256).enable_shadows();
@@ -279,7 +279,7 @@ void dday_state::dday(machine_config &config)
AY8910(config, m_ay1, 1000000).add_route(ALL_OUTPUTS, "mono", 0.25);
AY8910(config, "ay2", 1000000).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ddayjlc.cpp b/src/mame/drivers/ddayjlc.cpp
index 9681a93f218..1e4c1f1e2ea 100644
--- a/src/mame/drivers/ddayjlc.cpp
+++ b/src/mame/drivers/ddayjlc.cpp
@@ -599,28 +599,28 @@ void ddayjlc_state::ddayjlc_palette(palette_device &palette) const
palette.set_pen_color(0x203, rgb_t(0xff, 0xff, 0xff));
}
-void ddayjlc_state::ddayjlc(machine_config &config)
-{
+MACHINE_CONFIG_START(ddayjlc_state::ddayjlc)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 12000000/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &ddayjlc_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", Z80,12000000/3)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- Z80(config, m_audiocpu, 12000000/4);
- m_audiocpu->set_addrmap(AS_PROGRAM, &ddayjlc_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 12000000/4)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(ddayjlc_state::screen_update_ddayjlc));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(ddayjlc_state::vblank_irq));
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_ddayjlc);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ddayjlc_state, screen_update_ddayjlc)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, ddayjlc_state, vblank_irq))
+
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_ddayjlc)
PALETTE(config, m_palette, FUNC(ddayjlc_state::ddayjlc_palette), 0x200+4);
SPEAKER(config, "mono").front_center();
@@ -632,7 +632,7 @@ void ddayjlc_state::ddayjlc(machine_config &config)
ay1.add_route(ALL_OUTPUTS, "mono", 1.0);
AY8910(config, "ay2", 12000000/6).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
ROM_START( ddayjlc )
diff --git a/src/mame/drivers/ddealer.cpp b/src/mame/drivers/ddealer.cpp
index d46ca085054..834f0a91ddf 100644
--- a/src/mame/drivers/ddealer.cpp
+++ b/src/mame/drivers/ddealer.cpp
@@ -628,32 +628,33 @@ void ddealer_state::machine_reset()
m_coin_input = 0;
}
-void ddealer_state::ddealer(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(16'000'000)/2); /* 8MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &ddealer_state::ddealer_map);
- m_maincpu->set_vblank_int("screen", FUNC(ddealer_state::irq4_line_hold));
- m_maincpu->set_periodic_int(FUNC(ddealer_state::irq1_line_hold), attotime::from_hz(90)); //guess, controls music tempo, 112 is way too fast
+MACHINE_CONFIG_START(ddealer_state::ddealer)
+
+ MCFG_DEVICE_ADD("maincpu" , M68000, XTAL(16'000'000)/2) /* 8MHz */
+ MCFG_DEVICE_PROGRAM_MAP(ddealer_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ddealer_state, irq4_line_hold)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(ddealer_state, irq1_line_hold, 90)//guess, controls music tempo, 112 is way too fast
// M50747 or NMK-110 8131 MCU
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ddealer);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0*8, 48*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(ddealer_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ddealer_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 0x200);
- TIMER(config, "coinsim").configure_periodic(FUNC(ddealer_state::mcu_sim), attotime::from_hz(10000));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("coinsim", ddealer_state, mcu_sim, attotime::from_hz(10000))
SPEAKER(config, "mono").front_center();
- YM2203(config, "ymsnd", XTAL(6'000'000) / 8).add_route(ALL_OUTPUTS, "mono", 0.40); /* 7.5KHz */
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2203, XTAL(6'000'000) / 8) /* 7.5KHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ddenlovr.cpp b/src/mame/drivers/ddenlovr.cpp
index e05af0653f3..ef3e339ba7f 100644
--- a/src/mame/drivers/ddenlovr.cpp
+++ b/src/mame/drivers/ddenlovr.cpp
@@ -4331,8 +4331,8 @@ void dynax_state::htengoku_banked_map(address_map &map)
map(0x80000, 0x801ff).w(FUNC(dynax_state::tenkai_palette_w));
}
-void ddenlovr_state::htengoku(machine_config &config)
-{
+MACHINE_CONFIG_START(ddenlovr_state::htengoku)
+
/* basic machine hardware */
Z80(config, m_maincpu, 20000000 / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &ddenlovr_state::htengoku_mem_map);
@@ -4392,7 +4392,7 @@ void ddenlovr_state::htengoku(machine_config &config)
/* devices */
msm6242_device &rtc(MSM6242(config, "rtc", XTAL(32'768)));
rtc.out_int_handler().set("mainirq", FUNC(rst_pos_buffer_device::rst1_w));
-}
+MACHINE_CONFIG_END
/***************************************************************************
@@ -9692,8 +9692,8 @@ WRITE_LINE_MEMBER(ddenlovr_state::ddenlovr_irq)
m_maincpu->set_input_line(M68K_IRQ_1, HOLD_LINE);
}
-void ddenlovr_state::ddenlovr(machine_config &config)
-{
+MACHINE_CONFIG_START(ddenlovr_state::ddenlovr)
+
/* basic machine hardware */
M68000(config, m_maincpu, XTAL(24'000'000) / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &ddenlovr_state::ddenlovr_map);
@@ -9730,14 +9730,14 @@ void ddenlovr_state::ddenlovr(machine_config &config)
YMZ284(config, "aysnd", XTAL(28'636'363) / 16).add_route(ALL_OUTPUTS, "mono", 0.30); // or /8 ?
- OKIM6295(config, m_oki, XTAL(28'636'363) / 28, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.80);
+ okim6295_device &oki(OKIM6295(config, "oki", XTAL(28'636'363) / 28, okim6295_device::PIN7_HIGH));
+ oki.add_route(ALL_OUTPUTS, "mono", 0.80);
/* devices */
RTC72421(config, "rtc", XTAL(32'768)); // internal oscillator
-}
+MACHINE_CONFIG_END
-void ddenlovr_state::ddenlovj(machine_config &config)
-{
+MACHINE_CONFIG_START(ddenlovr_state::ddenlovj)
ddenlovr(config);
/* basic machine hardware */
@@ -9748,7 +9748,7 @@ void ddenlovr_state::ddenlovj(machine_config &config)
m_mainlatch->q_out_cb<5>().set(FUNC(ddenlovr_state::ddenlovr_blitter_irq_ack_w));
RTC62421(config.replace(), "rtc", XTAL(32'768)); // internal oscillator
-}
+MACHINE_CONFIG_END
void ddenlovr_state::ddenlovrk(machine_config &config)
{
@@ -10061,7 +10061,7 @@ void ddenlovr_state::kotbinyo(machine_config &config)
m_screen->set_visarea(0, 336-1-1, 1+4, 256-15-1+4);
m_screen->set_screen_update(FUNC(ddenlovr_state::screen_update_ddenlovr));
m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_palette(m_palette);
+ m_screen->set_palette("palette");
m_screen->screen_vblank().set(FUNC(ddenlovr_state::hanakanz_irq));
PALETTE(config, m_palette).set_entries(0x200);
@@ -10077,7 +10077,8 @@ void ddenlovr_state::kotbinyo(machine_config &config)
m_oki->add_route(ALL_OUTPUTS, "mono", 0.80);
/* devices */
-// MSM6242(config, "rtc", XTAL(32'768)).out_int_handler().set(FUNC(ddenlovr_state::hanakanz_rtc_irq));
+// MCFG_DEVICE_ADD("rtc", MSM6242, XTAL(32'768))
+// MCFG_MSM6242_OUT_INT_HANDLER(WRITELINE(*this, ddenlovr_state, hanakanz_rtc_irq))
}
void ddenlovr_state::kotbinsp(machine_config &config)
@@ -10431,8 +10432,7 @@ void ddenlovr_state::mjflove(machine_config &config)
AY8910(config, "aysnd", 28636363/8).add_route(ALL_OUTPUTS, "mono", 0.30);
}
-void ddenlovr_state::hparadis(machine_config &config)
-{
+MACHINE_CONFIG_START(ddenlovr_state::hparadis)
quizchq(config);
/* basic machine hardware */
@@ -10443,33 +10443,33 @@ void ddenlovr_state::hparadis(machine_config &config)
maincpu.out_pb_callback().set(FUNC(ddenlovr_state::hparadis_select_w));
// the RTC seems unused
- config.device_remove("rtc");
+ MCFG_DEVICE_REMOVE("rtc")
MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,hparadis)
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(ddenlovr_state::jongtei)
-void ddenlovr_state::jongtei(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(20'000'000) / 2); // KL5C80A12
- m_maincpu->set_addrmap(AS_PROGRAM, &ddenlovr_state::hanakanz_map);
- m_maincpu->set_addrmap(AS_IO, &ddenlovr_state::jongtei_portmap);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(20'000'000) / 2) // KL5C80A12
+ MCFG_DEVICE_PROGRAM_MAP(hanakanz_map)
+ MCFG_DEVICE_IO_MAP(jongtei_portmap)
MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,hanakanz)
MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(336, 256);
- m_screen->set_visarea(0, 336-1, 5, 256-11-1);
- m_screen->set_screen_update(FUNC(ddenlovr_state::screen_update_ddenlovr));
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(ddenlovr_state::hanakanz_irq));
-
- PALETTE(config, m_palette).set_entries(0x200);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(336, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-11-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, ddenlovr_state, hanakanz_irq))
+
+ MCFG_PALETTE_ADD("palette", 0x200)
blitter_irq().set(FUNC(ddenlovr_state::mjflove_blitter_irq));
@@ -10480,27 +10480,30 @@ void ddenlovr_state::jongtei(machine_config &config)
YM2413(config, "ym2413", XTAL(28'636'363) / 8).add_route(ALL_OUTPUTS, "mono", 0.80);
- OKIM6295(config, m_oki, XTAL(28'636'363) / 28, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(28'636'363) / 28, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
/* devices */
- MSM6242(config, "rtc", XTAL(32'768)).out_int_handler().set(FUNC(ddenlovr_state::hanakanz_rtc_irq));
-}
+ MCFG_DEVICE_ADD("rtc", MSM6242, XTAL(32'768))
+ MCFG_MSM6242_OUT_INT_HANDLER(WRITELINE(*this, ddenlovr_state, hanakanz_rtc_irq))
+MACHINE_CONFIG_END
-void ddenlovr_state::mjgnight(machine_config &config)
-{
+MACHINE_CONFIG_START(ddenlovr_state::mjgnight)
jongtei(config);
- m_maincpu->set_addrmap(AS_IO, &ddenlovr_state::mjgnight_portmap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(mjgnight_portmap)
- m_screen->set_size(336, 256);
- m_screen->set_visarea(0, 336-1, 5-4, 256-11-1-4);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(336, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5-4, 256-11-1-4)
+MACHINE_CONFIG_END
/***************************************************************************
Mahjong Seiryu Densetsu
***************************************************************************/
-void ddenlovr_state::sryudens(machine_config &config)
-{
+MACHINE_CONFIG_START(ddenlovr_state::sryudens)
+
/* basic machine hardware */
tmpz84c015_device &maincpu(TMPZ84C015(config, m_maincpu, XTAL(16'000'000) / 2)); // ?
maincpu.set_addrmap(AS_PROGRAM, &ddenlovr_state::sryudens_map);
@@ -10512,17 +10515,17 @@ void ddenlovr_state::sryudens(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60.8532); // VSync 60.8532Hz, HSync 15.2790kHz
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(336, 256+22);
- m_screen->set_visarea(0, 336-1, 0+5, 256-12-1);
- m_screen->set_screen_update(FUNC(ddenlovr_state::screen_update_ddenlovr));
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(m_maincpu, FUNC(tmpz84c015_device::trg0));
-
- PALETTE(config, m_palette).set_entries(0x100);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60.8532) // VSync 60.8532Hz, HSync 15.2790kHz
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(336, 256+22)
+ MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+5, 256-12-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("maincpu", tmpz84c015_device, trg0))
+
+ MCFG_PALETTE_ADD("palette", 0x100)
blitter_irq().set(FUNC(ddenlovr_state::mjflove_blitter_irq));
@@ -10535,19 +10538,21 @@ void ddenlovr_state::sryudens(machine_config &config)
YMZ284(config, "aysnd", XTAL(28'636'363) / 8).add_route(ALL_OUTPUTS, "mono", 0.30);
- OKIM6295(config, m_oki, XTAL(28'636'363) / 28, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.80); // ?
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(28'636'363) / 28, okim6295_device::PIN7_HIGH) // ?
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
/* devices */
- RTC62421(config, "rtc", XTAL(32'768)).out_int_handler().set(m_maincpu, FUNC(tmpz84c015_device::trg1)); // internal oscillator
-}
+ MCFG_DEVICE_ADD("rtc", RTC62421, XTAL(32'768)) // internal oscillator
+ MCFG_MSM6242_OUT_INT_HANDLER(WRITELINE("maincpu", tmpz84c015_device, trg1))
+MACHINE_CONFIG_END
/***************************************************************************
Mahjong Janshin Plus
***************************************************************************/
// PCB: NM7001004
-void ddenlovr_state::janshinp(machine_config &config)
-{
+MACHINE_CONFIG_START(ddenlovr_state::janshinp)
+
/* basic machine hardware */
tmpz84c015_device &maincpu(TMPZ84C015(config, m_maincpu, XTAL(16'000'000) / 2));
maincpu.set_addrmap(AS_PROGRAM, &ddenlovr_state::janshinp_map);
@@ -10559,17 +10564,17 @@ void ddenlovr_state::janshinp(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60.8532); // VSync 60.8532Hz, HSync 15.2790kHz ?
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(336, 256+22);
- m_screen->set_visarea(0, 336-1, 0+5, 256-12-1);
- m_screen->set_screen_update(FUNC(ddenlovr_state::screen_update_ddenlovr));
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(m_maincpu, FUNC(tmpz84c015_device::trg0));
-
- PALETTE(config, m_palette).set_entries(0x100);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60.8532) // VSync 60.8532Hz, HSync 15.2790kHz ?
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(336, 256+22)
+ MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+5, 256-12-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("maincpu", tmpz84c015_device, trg0))
+
+ MCFG_PALETTE_ADD("palette", 0x100)
blitter_irq().set(FUNC(ddenlovr_state::mjflove_blitter_irq));
@@ -10582,11 +10587,13 @@ void ddenlovr_state::janshinp(machine_config &config)
YMZ284(config, "aysnd", XTAL(28'636'363) / 8).add_route(ALL_OUTPUTS, "mono", 0.30);
- OKIM6295(config, m_oki, XTAL(28'636'363) / 28, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.80); // ?
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(28'636'363) / 28, okim6295_device::PIN7_HIGH) // ?
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
/* devices */
- MSM6242(config, "rtc", XTAL(32'768)).out_int_handler().set(m_maincpu, FUNC(tmpz84c015_device::trg1));
-}
+ MCFG_DEVICE_ADD("rtc", MSM6242, XTAL(32'768))
+ MCFG_MSM6242_OUT_INT_HANDLER(WRITELINE("maincpu", tmpz84c015_device, trg1))
+MACHINE_CONFIG_END
// Same PCB as janshinp
void ddenlovr_state::dtoyoken(machine_config &config)
@@ -10615,8 +10622,8 @@ MACHINE_START_MEMBER(ddenlovr_state,seljan2)
MACHINE_START_CALL_MEMBER(ddenlovr);
}
-void ddenlovr_state::seljan2(machine_config &config)
-{
+MACHINE_CONFIG_START(ddenlovr_state::seljan2)
+
/* basic machine hardware */
tmpz84c015_device &maincpu(TMPZ84C015(config, m_maincpu, XTAL(16'000'000) / 2));
maincpu.set_addrmap(AS_PROGRAM, &ddenlovr_state::seljan2_map);
@@ -10628,17 +10635,17 @@ void ddenlovr_state::seljan2(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60.8532); // VSync 60.8532Hz, HSync 15.2790kHz ?
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(336, 256+22);
- m_screen->set_visarea(0, 336-1, 0+5, 256-12-1);
- m_screen->set_screen_update(FUNC(ddenlovr_state::screen_update_ddenlovr));
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(m_maincpu, FUNC(tmpz84c015_device::trg0));
-
- PALETTE(config, m_palette).set_entries(0x100);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60.8532) // VSync 60.8532Hz, HSync 15.2790kHz ?
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(336, 256+22)
+ MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+5, 256-12-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("maincpu", tmpz84c015_device, trg0))
+
+ MCFG_PALETTE_ADD("palette", 0x100)
blitter_irq().set("maincpu", FUNC(tmpz84c015_device::pa7_w)).invert(); // PA bit 7 = blitter busy
@@ -10654,11 +10661,13 @@ void ddenlovr_state::seljan2(machine_config &config)
aysnd.port_b_write_callback().set(FUNC(ddenlovr_state::ddenlovr_select_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.30);
- OKIM6295(config, m_oki, XTAL(28'636'363) / 28, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.80); // ?
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(28'636'363) / 28, okim6295_device::PIN7_HIGH) // ?
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
/* devices */
- MSM6242(config, "rtc", XTAL(32'768)).out_int_handler().set(m_maincpu, FUNC(tmpz84c015_device::trg1));
-}
+ MCFG_DEVICE_ADD("rtc", MSM6242, XTAL(32'768))
+ MCFG_MSM6242_OUT_INT_HANDLER(WRITELINE("maincpu", tmpz84c015_device, trg1))
+MACHINE_CONFIG_END
/***************************************************************************
@@ -10666,28 +10675,28 @@ void ddenlovr_state::seljan2(machine_config &config)
***************************************************************************/
-void ddenlovr_state::daimyojn(machine_config &config)
-{
+MACHINE_CONFIG_START(ddenlovr_state::daimyojn)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(20'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &ddenlovr_state::hanakanz_map);
- m_maincpu->set_addrmap(AS_IO, &ddenlovr_state::daimyojn_portmap);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(20'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(hanakanz_map)
+ MCFG_DEVICE_IO_MAP(daimyojn_portmap)
MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,mjflove)
MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(59.7922); // HSync 15.4248kHz
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(336, 256+22);
- m_screen->set_visarea(0, 336-1-1, 1, 256-15-1);
- m_screen->set_screen_update(FUNC(ddenlovr_state::screen_update_ddenlovr));
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(ddenlovr_state::hanakanz_irq));
-
- PALETTE(config, m_palette).set_entries(0x200);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.7922) // HSync 15.4248kHz
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(336, 256+22)
+ MCFG_SCREEN_VISIBLE_AREA(0, 336-1-1, 1, 256-15-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, ddenlovr_state, hanakanz_irq))
+
+ MCFG_PALETTE_ADD("palette", 0x200)
MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,hanakanz) // blitter commands in the roms are shuffled around
@@ -10696,11 +10705,13 @@ void ddenlovr_state::daimyojn(machine_config &config)
YM2413(config, "ym2413", XTAL(28'636'363) / 8).add_route(ALL_OUTPUTS, "mono", 0.80);
- OKIM6295(config, m_oki, XTAL(28'636'363) / 28, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(28'636'363) / 28, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
/* devices */
- MSM6242(config, "rtc", XTAL(32'768)).out_int_handler().set(FUNC(ddenlovr_state::hanakanz_rtc_irq));
-}
+ MCFG_DEVICE_ADD("rtc", MSM6242, XTAL(32'768))
+ MCFG_MSM6242_OUT_INT_HANDLER(WRITELINE(*this, ddenlovr_state, hanakanz_rtc_irq))
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ddragon.cpp b/src/mame/drivers/ddragon.cpp
index 19efd23349f..192bd3140a3 100644
--- a/src/mame/drivers/ddragon.cpp
+++ b/src/mame/drivers/ddragon.cpp
@@ -20,7 +20,7 @@ Removed now-unnecessary workarounds.
Modifications by Bryan McPhail, June-November 2003:
Correct video & interrupt timing derived from Xain schematics and confirmed on real DD board.
-Corrected interrupt handling, especially to MCU (but one semi-hack remains).
+Corrected interrupt handling, epecially to MCU (but one semi-hack remains).
TStrike now boots but sprites don't appear (I had them working at one point, can't remember what broke them again).
Dangerous Dungeons fixed.
World version of Double Dragon added (actually same roms as the bootleg, but confirmed from real board)
@@ -944,14 +944,14 @@ GFXDECODE_END
void ddragon_state::ddragon(machine_config &config)
{
/* basic machine hardware */
- HD6309E(config, m_maincpu, MAIN_CLOCK / 4); /* HD63C09EP, 3 MHz */
+ HD6309E(config, m_maincpu, MAIN_CLOCK / 4); /* HD63C09EP, 3 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &ddragon_state::ddragon_map);
TIMER(config, "scantimer").configure_scanline(FUNC(ddragon_state::ddragon_scanline), "screen", 0, 1);
- HD63701(config, m_subcpu, MAIN_CLOCK / 2); /* HD63701YOP, 6 MHz / 4 internally */
+ HD63701(config, m_subcpu, MAIN_CLOCK / 2); /* HD63701YOP, 6 MHz / 4 internally */
m_subcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sub_map);
- MC6809(config, m_soundcpu, MAIN_CLOCK / 2); /* HD68A09P, 6 MHz / 4 internally */
+ MC6809(config, m_soundcpu, MAIN_CLOCK / 2); /* HD68A09P, 6 MHz / 4 internally */
m_soundcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sound_map);
config.m_minimum_quantum = attotime::from_hz(60000); /* heavy interleaving to sync up sprite<->main CPUs */
@@ -1015,14 +1015,14 @@ void ddragon_state::ddragonba(machine_config &config)
void ddragon_state::ddragon6809(machine_config &config)
{
/* basic machine hardware */
- MC6809E(config, m_maincpu, MAIN_CLOCK / 8); /* 1.5 MHz */
+ MC6809E(config, m_maincpu, MAIN_CLOCK / 8); /* 1.5 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &ddragon_state::ddragon_map);
TIMER(config, "scantimer").configure_scanline(FUNC(ddragon_state::ddragon_scanline), "screen", 0, 1);
- MC6809E(config, m_subcpu, MAIN_CLOCK / 8); /* 1.5 Mhz */
+ MC6809E(config, m_subcpu, MAIN_CLOCK / 8); /* 1.5 Mhz */
m_subcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sub_map);
- MC6809E(config, m_soundcpu, MAIN_CLOCK / 8); /* 1.5 MHz */
+ MC6809E(config, m_soundcpu, MAIN_CLOCK / 8); /* 1.5 MHz */
m_soundcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sound_map);
config.m_minimum_quantum = attotime::from_hz(60000); /* heavy interleaving to sync up sprite<->main CPUs */
@@ -1066,11 +1066,11 @@ void ddragon_state::ddragon6809(machine_config &config)
void ddragon_state::ddragon2(machine_config &config)
{
/* basic machine hardware */
- HD6309E(config, m_maincpu, MAIN_CLOCK / 4); /* HD63C09EP, 3 MHz */
+ HD6309E(config, m_maincpu, MAIN_CLOCK / 4); /* HD63C09EP, 3 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &ddragon_state::dd2_map);
TIMER(config, "scantimer").configure_scanline(FUNC(ddragon_state::ddragon_scanline), "screen", 0, 1);
- Z80(config, m_subcpu, MAIN_CLOCK / 3); /* 4 MHz */
+ Z80(config, m_subcpu, MAIN_CLOCK / 3); /* 4 MHz */
m_subcpu->set_addrmap(AS_PROGRAM, &ddragon_state::dd2_sub_map);
Z80(config, m_soundcpu, 3579545);
@@ -1706,16 +1706,17 @@ ROM_START( ddragon2 )
ROM_LOAD( "prom.16", 0x0000, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) ) /* sprite timing (same as ddragon) */
ROM_END
-
+// came from a dead board, 2 of the program roms were failing
+// if you attempt to use ROMs from another set it fails on Game Over due to code which should be different at 0x1800 in ic63
ROM_START( ddragon2j )
ROM_REGION( 0x30000, "maincpu", 0 )
ROM_LOAD( "26a9-0_j.ic38", 0x08000, 0x8000, CRC(5e4fcdff) SHA1(78bf79a0b4f248c3355fef40448c76eb028f9163) )
ROM_LOAD( "26aa-0_j.ic52", 0x10000, 0x8000, CRC(bfb4ee04) SHA1(3692bbdef7d5b7cc3eb76362945b91b4a0f6ad4b) )
- ROM_LOAD( "26ab-0.ic53", 0x18000, 0x8000, CRC(49ddddcd) SHA1(91dc53718d04718b313f23d86e241027c89d1a03) )
- ROM_LOAD( "26ac-0_j.ic63", 0x20000, 0x8000, CRC(165858c7) SHA1(a00953df924cff9e79d28061849070f5401014d7) )
+ ROM_LOAD( "26ab-0.ic53", 0x18000, 0x8000, NO_DUMP) // proper dump might match other sets
+ ROM_LOAD( "26ac-0_j.ic63", 0x20000, 0x8000, NO_DUMP) // should be different
ROM_REGION( 0x10000, "sub", 0 ) /* sprite CPU 64kb (Upper 16kb = 0) */
- ROM_LOAD( "26ae-0.ic37", 0x00000, 0x10000, CRC(ea437867) SHA1(cd910203af0565f981b9bdef51ea6e9c33ee82d3) )
+ ROM_LOAD( "26ae-0.bin", 0x00000, 0x10000, CRC(ea437867) SHA1(cd910203af0565f981b9bdef51ea6e9c33ee82d3) )
ROM_REGION( 0x10000, "soundcpu", 0 ) /* music CPU, 64kb */
ROM_LOAD( "26ad-0.ic41", 0x00000, 0x8000, CRC(3788af3b) SHA1(7f8833b01522553c767c470a9c27d24e638f37b9) ) // why is this different, label was the same
@@ -2213,7 +2214,7 @@ GAME( 1987, ddragon6809a, ddragon, ddragon6809, ddragon, ddragon_state, init_
GAME( 1988, ddragon2, 0, ddragon2, ddragon2, ddragon_state, init_ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (World)", MACHINE_SUPPORTS_SAVE )
GAME( 1988, ddragon2u, ddragon2, ddragon2, ddragon2, ddragon_state, init_ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (US)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, ddragon2j, ddragon2, ddragon2, ddragon2, ddragon_state, init_ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, ddragon2j, ddragon2, ddragon2, ddragon2, ddragon_state, init_ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (Japan)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // bad dump
GAME( 1988, ddragon2b, ddragon2, ddragon2, ddragon2, ddragon_state, init_ddragon2, ROT0, "bootleg", "Double Dragon II - The Revenge (US, bootleg)", MACHINE_SUPPORTS_SAVE )
/* these were conversions of double dragon */
diff --git a/src/mame/drivers/ddragon3.cpp b/src/mame/drivers/ddragon3.cpp
index ac3c7c9a629..deee7c6d491 100644
--- a/src/mame/drivers/ddragon3.cpp
+++ b/src/mame/drivers/ddragon3.cpp
@@ -820,22 +820,22 @@ void ddragon3_state::machine_reset()
m_bg_tilebase = 0;
}
-void ddragon3_state::ddragon3(machine_config &config)
-{
+MACHINE_CONFIG_START(ddragon3_state::ddragon3)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 20_MHz_XTAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &ddragon3_state::ddragon3_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(ddragon3_state::ddragon3_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M68000, 20_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(ddragon3_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ddragon3_state, ddragon3_scanline, "screen", 0, 1)
- Z80(config, m_audiocpu, XTAL(3'579'545));
- m_audiocpu->set_addrmap(AS_PROGRAM, &ddragon3_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545))
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(28_MHz_XTAL / 4, 448, 0, 320, 272, 8, 248); /* HTOTAL and VTOTAL are guessed */
- m_screen->set_screen_update(FUNC(ddragon3_state::screen_update_ddragon3));
- m_screen->screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(28_MHz_XTAL / 4, 448, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
+ MCFG_SCREEN_UPDATE_DRIVER(ddragon3_state, screen_update_ddragon3)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ddragon3);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 768);
@@ -854,62 +854,66 @@ void ddragon3_state::ddragon3(machine_config &config)
ym2151.add_route(0, "lspeaker", 0.50);
ym2151.add_route(1, "rspeaker", 0.50);
- OKIM6295(config, m_oki, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH);
- m_oki->add_route(ALL_OUTPUTS, "lspeaker", 1.50);
- m_oki->add_route(ALL_OUTPUTS, "rspeaker", 1.50);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.50)
+MACHINE_CONFIG_END
-void ddragon3_state::ddragon3b(machine_config &config)
-{
+MACHINE_CONFIG_START(ddragon3_state::ddragon3b)
ddragon3(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &ddragon3_state::dd3b_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dd3b_map)
- m_screen->screen_vblank().set_nop();
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VBLANK_CALLBACK(NOOP)
+MACHINE_CONFIG_END
-void ddragon3_state::ctribe(machine_config &config)
-{
+MACHINE_CONFIG_START(ddragon3_state::ctribe)
ddragon3(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &ddragon3_state::ctribe_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ctribe_map)
- m_audiocpu->set_addrmap(AS_PROGRAM, &ddragon3_state::ctribe_sound_map);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(ctribe_sound_map)
m_palette->set_format(palette_device::xBGR_444, 768);
- m_screen->set_screen_update(FUNC(ddragon3_state::screen_update_ctribe));
- m_screen->screen_vblank().set_nop();
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(ddragon3_state, screen_update_ctribe)
+ MCFG_SCREEN_VBLANK_CALLBACK(NOOP)
- ym2151_device &ym2151(*subdevice<ym2151_device>("ym2151"));
- ym2151.reset_routes();
- ym2151.add_route(0, "lspeaker", 1.20);
- ym2151.add_route(1, "rspeaker", 1.20);
+ MCFG_DEVICE_MODIFY("ym2151")
+ MCFG_SOUND_ROUTES_RESET()
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.20)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.20)
- m_oki->reset_routes();
- m_oki->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
- m_oki->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
-}
+ MCFG_DEVICE_MODIFY("oki")
+ MCFG_SOUND_ROUTES_RESET()
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
+MACHINE_CONFIG_END
-void wwfwfest_state::wwfwfest(machine_config &config)
-{
+MACHINE_CONFIG_START(wwfwfest_state::wwfwfest)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 24_MHz_XTAL / 2); /* 24 crystal, 12 rated chip */
- m_maincpu->set_addrmap(AS_PROGRAM, &wwfwfest_state::main_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(ddragon3_state::ddragon3_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M68000, 24_MHz_XTAL / 2) /* 24 crystal, 12 rated chip */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ddragon3_state, ddragon3_scanline, "screen", 0, 1)
- Z80(config, m_audiocpu, XTAL(3'579'545));
- m_audiocpu->set_addrmap(AS_PROGRAM, &wwfwfest_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545))
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
/* video hardware */
BUFFERED_SPRITERAM16(config, m_spriteram);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(28_MHz_XTAL / 4, 448, 0, 320, 272, 8, 248); /* HTOTAL and VTOTAL are guessed */
- m_screen->set_screen_update(FUNC(wwfwfest_state::screen_update_wwfwfest));
- m_screen->screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(28_MHz_XTAL / 4, 448, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
+ MCFG_SCREEN_UPDATE_DRIVER(wwfwfest_state, screen_update_wwfwfest)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_wwfwfest);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 8192);
@@ -925,14 +929,14 @@ void wwfwfest_state::wwfwfest(machine_config &config)
ym2151.add_route(0, "mono", 0.45);
ym2151.add_route(1, "mono", 0.45);
- OKIM6295(config, m_oki, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.90); /* Verified - Pin 7 tied to +5VDC */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH) /* Verified - Pin 7 tied to +5VDC */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90)
+MACHINE_CONFIG_END
-void wwfwfest_state::wwfwfstb(machine_config &config)
-{
+MACHINE_CONFIG_START(wwfwfest_state::wwfwfstb)
wwfwfest(config);
MCFG_VIDEO_START_OVERRIDE(wwfwfest_state,wwfwfstb)
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/ddribble.cpp b/src/mame/drivers/ddribble.cpp
index e632afca03c..83cf4e806d0 100644
--- a/src/mame/drivers/ddribble.cpp
+++ b/src/mame/drivers/ddribble.cpp
@@ -257,33 +257,33 @@ void ddribble_state::machine_reset()
m_charbank[1] = 0;
}
-void ddribble_state::ddribble(machine_config &config)
-{
+MACHINE_CONFIG_START(ddribble_state::ddribble)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, XTAL(18'432'000)/12); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &ddribble_state::cpu0_map);
+ MCFG_DEVICE_ADD(m_maincpu, MC6809E, XTAL(18'432'000)/12) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(cpu0_map)
- MC6809E(config, m_cpu1, XTAL(18'432'000)/12); /* verified on pcb */
- m_cpu1->set_addrmap(AS_PROGRAM, &ddribble_state::cpu1_map);
+ MCFG_DEVICE_ADD(m_cpu1, MC6809E, XTAL(18'432'000)/12) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(cpu1_map)
- mc6809e_device &cpu2(MC6809E(config, "cpu2", XTAL(18'432'000)/12)); /* verified on pcb */
- cpu2.set_addrmap(AS_PROGRAM, &ddribble_state::cpu2_map);
+ MCFG_DEVICE_ADD("cpu2", MC6809E, XTAL(18'432'000)/12) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(cpu2_map)
- config.m_minimum_quantum = attotime::from_hz(6000); /* we need heavy synch */
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* we need heavy synch */
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
-/* screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1); */
- screen.set_screen_update(FUNC(ddribble_state::screen_update_ddribble));
- screen.set_palette("palette");
- screen.screen_vblank().set(FUNC(ddribble_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+/* MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) */
+ MCFG_SCREEN_UPDATE_DRIVER(ddribble_state, screen_update_ddribble)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, ddribble_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, "palette", gfx_ddribble);
PALETTE(config, "palette", FUNC(ddribble_state::ddribble_palette)).set_format(palette_device::xBGR_555, 64 + 256, 64);
@@ -299,16 +299,17 @@ void ddribble_state::ddribble(machine_config &config)
ymsnd.add_route(2, "filter3", 0.25);
ymsnd.add_route(3, "mono", 0.25);
- VLM5030(config, m_vlm, XTAL(3'579'545)); /* verified on pcb */
- m_vlm->add_route(ALL_OUTPUTS, "mono", 1.0);
- m_vlm->set_addrmap(0, &ddribble_state::vlm_map);
-
- FILTER_RC(config, m_filter1).add_route(ALL_OUTPUTS, "mono", 1.0);
-
- FILTER_RC(config, m_filter2).add_route(ALL_OUTPUTS, "mono", 1.0);
-
- FILTER_RC(config, m_filter3).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD(m_vlm, VLM5030, XTAL(3'579'545)) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, vlm_map)
+
+ MCFG_DEVICE_ADD(m_filter1, FILTER_RC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADD(m_filter2, FILTER_RC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADD(m_filter3, FILTER_RC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( ddribble )
diff --git a/src/mame/drivers/de_3.cpp b/src/mame/drivers/de_3.cpp
index 2ca8097353d..98c21f0d7ae 100644
--- a/src/mame/drivers/de_3.cpp
+++ b/src/mame/drivers/de_3.cpp
@@ -1000,20 +1000,6 @@ ROM_START(stwr_106s)
ROM_LOAD("s-wars.u21", 0x080000, 0x40000, CRC(7b08fdf1) SHA1(489d21a10e97e886f948d81dedd7f8de3acecd2b))
ROM_END
-ROM_START(stwr_a046)
- ROM_REGION(0x10000, "maincpu", 0)
- ROM_LOAD("starcpua.106", 0x0000, 0x10000, CRC(35d3cfd9) SHA1(14d8960f3657d7cd977b0a749e995aadb3fd4c7c))
- ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
- ROM_REGION(0x80000, "gfx3", 0)
- ROM_LOAD("sw4mrom1.a046", 0x00000, 0x40000, CRC(5ceac219) SHA1(76b7acf378f83bacf6c4adb020d6e544eacbac7a))
- ROM_LOAD("sw4mrom0.a046", 0x40000, 0x40000, CRC(305e45be) SHA1(fbdc90175467a9ee59dc11c5ccbe83130b3644c8))
- ROM_REGION(0x010000, "soundcpu", 0)
- ROM_LOAD("s-wars.u7", 0x8000, 0x8000, CRC(cefa19d5) SHA1(7ddf9cc85ab601514305bc46083a07a3d087b286))
- ROM_REGION(0x1000000, "bsmt", 0)
- ROM_LOAD("s-wars.u17", 0x000000, 0x80000, CRC(7950a147) SHA1(f5bcd5cf6b35f9e4f14d62b084495c3a743d92a1))
- ROM_LOAD("s-wars.u21", 0x080000, 0x40000, CRC(7b08fdf1) SHA1(489d21a10e97e886f948d81dedd7f8de3acecd2b))
-ROM_END
-
ROM_START(stwr_104)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("starcpua.104", 0x0000, 0x10000, CRC(12b87cfa) SHA1(12e0ab52f6784beefce8291d29b8aff01b2f2818))
@@ -1328,7 +1314,6 @@ GAME(1992, trek_110, trek_201, de_3_dmd1, de_3, de_3_state, empty_init, ROT0,
GAME(1992, trek_11a, trek_201, de_3_dmd1, de_3, de_3_state, empty_init, ROT0, "Data East", "Star Trek 25th Anniversary (1.10 Alpha Display)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1992, stwr_106, 0, de_3_dmd2, de_3, de_3_state, empty_init, ROT0, "Data East", "Star Wars (1.06)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1992, stwr_106s, stwr_106, de_3_dmd2, de_3, de_3_state, empty_init, ROT0, "Data East", "Star Wars (1.06, Display S1.05)", MACHINE_IS_SKELETON_MECHANICAL)
-GAME(1992, stwr_a046, stwr_106, de_3_dmd2, de_3, de_3_state, empty_init, ROT0, "Data East", "Star Wars (1.06, Display A0.46)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1992, stwr_104, stwr_106, de_3_dmd2, de_3, de_3_state, empty_init, ROT0, "Data East", "Star Wars (1.04)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1992, stwr_103, stwr_106, de_3_dmd2, de_3, de_3_state, empty_init, ROT0, "Data East", "Star Wars (1.03)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1992, stwr_g11, stwr_106, de_3_dmd2, de_3, de_3_state, empty_init, ROT0, "Data East", "Star Wars (1.01 Germany)", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/dec0.cpp b/src/mame/drivers/dec0.cpp
index 105f03a1b83..f06acb827e0 100644
--- a/src/mame/drivers/dec0.cpp
+++ b/src/mame/drivers/dec0.cpp
@@ -26,16 +26,11 @@
* Midnight Resistance (USA set)
* Midnight Resistance (Japanese set)
* Boulderdash (World set)
- * Bandit (USA set)
Heavy Barrel, Bad Dudes, Robocop, Birdie Try & Hippodrome use the 'MEC-M1'
motherboard and varying game boards. Sly Spy, Midnight Resistance and
Boulderdash use the same graphics chips but are different pcbs.
- Bandit (USA) is almost certainly a field test prototype, the software runs
- on a Heavy Barrel board including the original Heavy Barrel MCU (which is effectively
- not used). There is also Japanese version known to run on a DE-0321-1 top board.
-
There are Secret Agent (bootleg) and Robocop (bootleg) sets to add.
Thanks to Gouky & Richard Bush for information along the way, especially
@@ -340,7 +335,6 @@ Notes:
#include "cpu/m6502/m6502.h"
#include "cpu/z80/z80.h"
#include "cpu/m6805/m68705.h"
-#include "machine/upd4701.h"
#include "sound/2203intf.h"
#include "sound/3812intf.h"
#include "sound/okim6295.h"
@@ -392,6 +386,7 @@ WRITE16_MEMBER(dec0_state::dec0_control_w)
}
}
+
WRITE16_MEMBER(dec0_automat_state::automat_control_w)
{
switch (offset << 1)
@@ -460,23 +455,8 @@ void dec0_state::dec0_map(address_map &map)
map(0x30c018, 0x30c019).nopr(); // clr.w for irq ack
map(0x310000, 0x3107ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x314000, 0x3147ff).ram().w(m_palette, FUNC(palette_device::write16_ext)).share("palette_ext");
-
- map(0x318000, 0x31bfff).ram().share("ram"); // Bandit uses 318000/31c000 which are mirrors but exact mirror patten is unclear
- map(0x31c000, 0x31c7ff).ram().share("spriteram");
-
map(0xff8000, 0xffbfff).ram().share("ram"); /* Main ram */
- map(0xffc000, 0xffc7ff).ram().share("spriteram");
-}
-
-void dec0_state::dec0_tb_map(address_map &map)
-{
- dec0_map(map);
- map(0x300010, 0x300017).r("tb0", FUNC(upd4701_device::read_xy)).umask16(0x00ff);
- map(0x300018, 0x30001f).r("tb1", FUNC(upd4701_device::read_xy)).umask16(0x00ff);
- map(0x300001, 0x300001).w("tb0", FUNC(upd4701_device::reset_x_w));
- map(0x300009, 0x300009).w("tb0", FUNC(upd4701_device::reset_y_w));
- map(0x300011, 0x300011).w("tb1", FUNC(upd4701_device::reset_x_w));
- map(0x300019, 0x300019).w("tb1", FUNC(upd4701_device::reset_y_w));
+ map(0xffc000, 0xffc7ff).ram().share("spriteram"); /* Sprites */
}
void dec0_state::robocop_map(address_map &map)
@@ -696,9 +676,9 @@ void dec0_state::midresb_map(address_map &map)
void dec0_state::dec0_s_map(address_map &map)
{
- map(0x0000, 0x07ff).ram();
- map(0x0800, 0x0801).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
- map(0x1000, 0x1001).rw("ym2", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0x0000, 0x05ff).ram();
+ map(0x0800, 0x0801).w("ym1", FUNC(ym2203_device::write));
+ map(0x1000, 0x1001).w("ym2", FUNC(ym3812_device::write));
map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
map(0x3800, 0x3800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
map(0x8000, 0xffff).rom();
@@ -984,20 +964,6 @@ static INPUT_PORTS_START( rotary_ports )
PORT_BIT( 0xffff, 0x0000, IPT_POSITIONAL ) PORT_POSITIONS(12) PORT_WRAPS PORT_SENSITIVITY(10) PORT_KEYDELTA(1) PORT_REMAP_TABLE(rotary_table) PORT_PLAYER(2) PORT_REVERSE PORT_FULL_TURN_COUNT(12)
INPUT_PORTS_END
-static INPUT_PORTS_START( trackball_ports )
- PORT_START("track_0")
- PORT_BIT( 0x0fff, 0, IPT_TRACKBALL_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(24) PORT_RESET PORT_REVERSE PORT_PLAYER(1)
-
- PORT_START("track_1")
- PORT_BIT( 0x0fff, 0, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(24) PORT_RESET PORT_PLAYER(1)
-
- PORT_START("track_2")
- PORT_BIT( 0x0fff, 0, IPT_TRACKBALL_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(24) PORT_RESET PORT_REVERSE PORT_PLAYER(2)
-
- PORT_START("track_3")
- PORT_BIT( 0x0fff, 0, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(24) PORT_RESET PORT_PLAYER(2)
-INPUT_PORTS_END
-
static INPUT_PORTS_START( rotary_null )
PORT_START("AN0")
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -1006,7 +972,6 @@ static INPUT_PORTS_START( rotary_null )
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
-
static INPUT_PORTS_START( hbarrel )
PORT_INCLUDE( dec0 )
@@ -1064,101 +1029,6 @@ static INPUT_PORTS_START( hbarrel )
PORT_INCLUDE( rotary_ports )
INPUT_PORTS_END
-static INPUT_PORTS_START( bandit )
- PORT_INCLUDE( dec0 )
-
- PORT_MODIFY("INPUTS")
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Fire")
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Bomb")
- PORT_BIT( 0x00c0, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Fire")
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Bomb")
- PORT_BIT( 0xc000, IP_ACTIVE_LOW, IPT_UNUSED )
-
-#if 0
- PORT_DIPNAME( 0x0001, 0x0001, "UNK_0" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0002, 0x0002, "UNK_1" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0004, 0x0004, "UNK_2" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0008, 0x0008, "UNK_3" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0010, 0x0010, "UNK_4" ) // Gun
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0020, 0x0020, "UNK_5" ) // Missile
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0040, 0x0040, "UNK_6" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0080, 0x0080, "UNK_7" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
-#endif
- PORT_MODIFY("SYSTEM")
- PORT_BIT( 0x0003, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("DSW")
- PORT_DIPNAME( 0x0001, 0x0001, "Analog controls?" ) // ?
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0002, 0x0002, "L/R control related (keep off)" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0004, 0x0004, "DSUNK_2" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0008, 0x0000, "Road select (debug)" ) // Debug mode
- PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Flip_Screen ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0020, 0x0020, "DSUNK_5" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0040, 0x0040, "DSUNK_6" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0080, 0x0000, "Enable enemies" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
-
- PORT_DIPNAME( 0x0100, 0x0100, "DSUNK_8" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0200, 0x0200, "DSUNK_9" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0400, 0x0400, "DSUNK_A" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
- PORT_DIPNAME( 0x0800, 0x0800, "DSUNK_B" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
- PORT_DIPNAME( 0x1000, 0x1000, "DSUNK_C" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
- PORT_DIPNAME( 0x2000, 0x2000, "DSUNK_D" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
- PORT_DIPNAME( 0x4000, 0x4000, "DSUNK_E" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
- PORT_DIPNAME( 0x8000, 0x8000, "DSUNK_F" )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
-
- PORT_INCLUDE( rotary_null )
- PORT_INCLUDE( trackball_ports )
-INPUT_PORTS_END
-
static INPUT_PORTS_START( birdtry )
PORT_INCLUDE( dec0 )
@@ -1222,7 +1092,7 @@ static INPUT_PORTS_START( birdtry )
*/
PORT_INCLUDE( rotary_null )
- PORT_INCLUDE( trackball_ports )
+// TODO: trackball inputs
INPUT_PORTS_END
static INPUT_PORTS_START( baddudes )
@@ -1795,7 +1665,6 @@ void dec0_state::dec0(machine_config &config)
ym1.add_route(1, "mono", 0.90);
ym1.add_route(2, "mono", 0.90);
ym1.add_route(3, "mono", 0.35);
- ym1.irq_handler().set_inputline(m_audiocpu, 0); // Schematics show both ym2203 and ym3812 can trigger IRQ, but Bandit is only game to program 2203 to do so
ym3812_device &ym2(YM3812(config, "ym2", XTAL(12'000'000) / 4));
ym2.irq_handler().set_inputline(m_audiocpu, 0);
@@ -2029,31 +1898,6 @@ void dec0_state::hbarrel(machine_config &config)
m_screen->set_screen_update(FUNC(dec0_state::screen_update_hbarrel));
}
-void dec0_state::bandit(machine_config &config)
-{
- dec0(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &dec0_state::dec0_tb_map);
-
- upd4701_device &tb0(UPD4701A(config, "tb0"));
- tb0.set_portx_tag("track_0");
- tb0.set_porty_tag("track_1");
-
- upd4701_device &tb1(UPD4701A(config, "tb1"));
- tb1.set_portx_tag("track_2");
- tb1.set_porty_tag("track_3");
-
- i8751_device &mcu(I8751(config, m_mcu, XTAL(8'000'000)));
- mcu.port_in_cb<0>().set(FUNC(dec0_state::dec0_mcu_port0_r));
- mcu.port_out_cb<0>().set(FUNC(dec0_state::dec0_mcu_port0_w));
- mcu.port_out_cb<1>().set(FUNC(dec0_state::dec0_mcu_port1_w));
- mcu.port_out_cb<2>().set(FUNC(dec0_state::dec0_mcu_port2_w));
- mcu.port_out_cb<3>().set(FUNC(dec0_state::dec0_mcu_port3_w));
-
- /* video hardware */
- m_screen->set_screen_update(FUNC(dec0_state::screen_update_bandit));
-}
-
void dec0_state::baddudes(machine_config &config)
{
dec0(config);
@@ -2081,16 +1925,6 @@ void dec0_state::birdtry(machine_config &config)
{
dec0(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &dec0_state::dec0_tb_map);
-
- upd4701_device &tb0(UPD4701A(config, "tb0"));
- tb0.set_portx_tag("track_0");
- tb0.set_porty_tag("track_1");
-
- upd4701_device &tb1(UPD4701A(config, "tb1"));
- tb1.set_portx_tag("track_2");
- tb1.set_porty_tag("track_3");
-
/* video hardware */
m_screen->set_screen_update(FUNC(dec0_state::screen_update_birdtry));
}
@@ -3002,51 +2836,6 @@ ROM_START( automat )
ROM_LOAD( "19.bin", 0x70000, 0x08000, CRC(118e7fc7) SHA1(fa6d8eef9da873579e19a9bf982643e061b8ca26) )
ROM_END
-ROM_START( bandit )
- ROM_REGION( 0x60000, "maincpu", 0 ) /* 6*64k for 68000 code */
- ROM_LOAD16_BYTE( "4.4", 0x00000, 0x10000, CRC(01a29133) SHA1(6a8e9b959828f82333ca17dbc751a9fbafae6935) )
- ROM_LOAD16_BYTE( "1.1", 0x00001, 0x10000, CRC(dc61b11f) SHA1(3178a1247d2ef4d30f9c6c55b53db658214d2861) )
- ROM_LOAD16_BYTE( "5.5", 0x20000, 0x10000, CRC(7dbfa088) SHA1(7046d84f0a00f86cfa0c4d77e43118adda111001) )
- ROM_LOAD16_BYTE( "2.2", 0x20001, 0x10000, CRC(3e81e138) SHA1(b2eb57900fe110d64852a5c4c9d12c060ecb54e5) )
- ROM_LOAD16_BYTE( "6.6", 0x40000, 0x10000, CRC(b12e33cc) SHA1(b551cc09d25bb8ae198415f75ac2a150f2789849) )
- ROM_LOAD16_BYTE( "3.3", 0x40001, 0x10000, CRC(30bf52cf) SHA1(f45d3028d0e4e8c8f2c5968b52399a4e7eb9255f) )
-
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* 6502 Sound */
- ROM_LOAD( "7.7", 0x8000, 0x8000, CRC(69259ca4) SHA1(ce014836c71e269569279a09abef20cf03d46e31) )
-
- ROM_REGION( 0x1000, "mcu", 0 ) /* i8751 microcontroller */
- ROM_LOAD( "hb31.9a", 0x0000, 0x1000, CRC(239d726f) SHA1(969f38ae981ffde6053ece93cc51614d492edbbb) )
-
- ROM_REGION( 0x20000, "gfx1", 0 ) /* chars */
- ROM_LOAD( "25.25", 0x00000, 0x10000, CRC(4047ff81) SHA1(56a82c7694e6dbbdb9b42ed134120a76f848f7a5) )
- ROM_LOAD( "26.26", 0x10000, 0x10000, CRC(3a0a2f1e) SHA1(f06b44e4a8c29ee2c0a6e8f786fbee144138ba72) )
-
- ROM_REGION( 0x80000, "gfx2", 0 ) /* tiles */
- ROM_LOAD( "18.18", 0x00000, 0x10000, CRC(ac38e585) SHA1(c1a6fb083c096d119351883dea121ee6358d9298) )
- ROM_LOAD( "20.20", 0x20000, 0x10000, CRC(2194f737) SHA1(fbe2f7d0d6b80bf62fb9c38f9f2a001a728f3b7c) )
- ROM_LOAD( "22.22", 0x40000, 0x10000, CRC(fcc6cb4d) SHA1(548bd8688b255cdd1eef82e4fbec3d88e1d0ab53) )
- ROM_LOAD( "24.24", 0x60000, 0x10000, CRC(aa3c33b6) SHA1(f7770daedb5c1d5dd5099f1378c5c292c68a6a12) )
-
- ROM_REGION( 0x40000, "gfx3", 0 ) /* tiles */
- ROM_LOAD( "29.29", 0x00000, 0x10000, CRC(32218c8a) SHA1(33e922ffd7000a03a8fa8bbe61483cd8e916ebd6) )
- ROM_LOAD( "30.30", 0x10000, 0x10000, CRC(6a5fe9a9) SHA1(a750373e9fb1a0ad81d63a19bbac7a6079d3372f) )
- ROM_LOAD( "27.27", 0x20000, 0x10000, CRC(62970304) SHA1(57606bedfd83429629593bbea50fb25db1f2d874) )
- ROM_LOAD( "28.28", 0x30000, 0x10000, CRC(e018459f) SHA1(136ce96523988173425fa791742dab62ecaef5c9) )
-
- ROM_REGION( 0x80000, "gfx4", 0 ) /* sprites */
- ROM_LOAD( "15.15", 0x00000, 0x10000, CRC(84c03235) SHA1(3b5a8e24dd0aba1d1530d37685aaa46a35b0249a) )
- ROM_LOAD( "16.16", 0x10000, 0x10000, CRC(eaa35477) SHA1(08763d7937a6fa76f6029974d5b909ba05c69d81) )
- ROM_LOAD( "11.11", 0x20000, 0x10000, CRC(c9e6b57f) SHA1(9c12e0e7e25d48c7679ea65c3dfeaca9fdfdcbb3) )
- ROM_LOAD( "12.12", 0x30000, 0x10000, CRC(317f7e4a) SHA1(7d20722e75d69ef4f408e1995a29338c452b63c9) )
-
- ROM_LOAD( "13.13", 0x40000, 0x10000, CRC(0c063bec) SHA1(e9808d20dc9e450c6a880ca1d8383246aff1ab36) )
- ROM_LOAD( "14.14", 0x50000, 0x10000, CRC(2ebf06d3) SHA1(6381f978c0e719bf80d2c16a8355a0892473720a) )
- ROM_LOAD( "9.9", 0x60000, 0x10000, CRC(046f9d58) SHA1(a3078c13d27f365f900be3b55d1a917a8cd712f8) )
- ROM_LOAD( "10.10", 0x70000, 0x10000, CRC(3d2d704e) SHA1(3dcf3dd8cc91c5629e014bc6e2ccce234cf549a5) )
-
- ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
- ROM_LOAD( "8.8", 0x0000, 0x10000, CRC(b0e79b9f) SHA1(6613c41234b8305d8959d06d6b4e9127bfc5eebe) )
-ROM_END
ROM_START( hippodrm )
ROM_REGION( 0x60000, "maincpu", 0 ) /* 4*64k for 68000 code */
@@ -3980,7 +3769,6 @@ GAME( 1988, robocop, 0, robocop, robocop, dec0_state, empty_init
GAME( 1988, robocopw, robocop, robocop, robocop, dec0_state, empty_init, ROT0, "Data East Corporation", "Robocop (World revision 3)", MACHINE_SUPPORTS_SAVE )
GAME( 1988, robocopj, robocop, robocop, robocop, dec0_state, empty_init, ROT0, "Data East Corporation", "Robocop (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1988, robocopu, robocop, robocop, robocop, dec0_state, empty_init, ROT0, "Data East USA", "Robocop (US revision 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1989, bandit, 0, bandit, bandit, dec0_state, init_hbarrel, ROT90, "Data East USA", "Bandit (US)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
GAME( 1988, robocopu0, robocop, robocop, robocop, dec0_state, empty_init, ROT0, "Data East USA", "Robocop (US revision 0)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, hippodrm, 0, hippodrm, hippodrm, dec0_state, init_hippodrm, ROT0, "Data East USA", "Hippodrome (US)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, ffantasy, hippodrm, hippodrm, ffantasy, dec0_state, init_hippodrm, ROT0, "Data East Corporation", "Fighting Fantasy (Japan revision 3)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/deco156.cpp b/src/mame/drivers/deco156.cpp
index df7bd749e1b..83c64367d83 100644
--- a/src/mame/drivers/deco156.cpp
+++ b/src/mame/drivers/deco156.cpp
@@ -329,23 +329,23 @@ DECOSPR_PRIORITY_CB_MEMBER(deco156_state::pri_callback)
return 0;
}
-void deco156_state::hvysmsh(machine_config &config)
-{
+MACHINE_CONFIG_START(deco156_state::hvysmsh)
+
/* basic machine hardware */
- ARM(config, m_maincpu, 28000000); /* Unconfirmed */
- m_maincpu->set_addrmap(AS_PROGRAM, &deco156_state::hvysmsh_map);
- m_maincpu->set_vblank_int("screen", FUNC(deco156_state::deco32_vbl_interrupt));
+ MCFG_DEVICE_ADD("maincpu", ARM, 28000000) /* Unconfirmed */
+ MCFG_DEVICE_PROGRAM_MAP(hvysmsh_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", deco156_state, deco32_vbl_interrupt)
EEPROM_93C46_16BIT(config, "eeprom");
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(529));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(deco156_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(deco156_state, screen_update)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_hvysmsh);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_hvysmsh)
PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 1024);
DECO16IC(config, m_deco_tilegen, 0);
@@ -373,32 +373,32 @@ void deco156_state::hvysmsh(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- OKIM6295(config, m_oki1, 28000000/28, okim6295_device::PIN7_HIGH);
- m_oki1->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_oki1->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 28000000/28, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
- OKIM6295(config, m_oki2, 28000000/14, okim6295_device::PIN7_HIGH);
- m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 0.35);
- m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 0.35);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 28000000/14, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(deco156_state::wcvol95)
-void deco156_state::wcvol95(machine_config &config)
-{
/* basic machine hardware */
- ARM(config, m_maincpu, 28000000); /* Unconfirmed */
- m_maincpu->set_addrmap(AS_PROGRAM, &deco156_state::wcvol95_map);
- m_maincpu->set_vblank_int("screen", FUNC(deco156_state::deco32_vbl_interrupt));
+ MCFG_DEVICE_ADD("maincpu", ARM, 28000000) /* Unconfirmed */
+ MCFG_DEVICE_PROGRAM_MAP(wcvol95_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", deco156_state, deco32_vbl_interrupt)
EEPROM_93C46_16BIT(config, "eeprom");
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(529));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(deco156_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(deco156_state, screen_update)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_hvysmsh);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_hvysmsh)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 1024);
DECO16IC(config, m_deco_tilegen, 0);
@@ -426,10 +426,10 @@ void deco156_state::wcvol95(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ymz280b_device &ymz(YMZ280B(config, "ymz", 28000000 / 2));
- ymz.add_route(0, "lspeaker", 1.0);
- ymz.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, 28000000 / 2)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/**********************************************************************************/
diff --git a/src/mame/drivers/deco32.cpp b/src/mame/drivers/deco32.cpp
index 026b633b546..2670ac4dd12 100644
--- a/src/mame/drivers/deco32.cpp
+++ b/src/mame/drivers/deco32.cpp
@@ -3664,7 +3664,7 @@ ROM_START( tattass )
ROM_LOAD16_BYTE( "ob2_c2.b3", 0x700000, 0x80000, CRC(90fe5f4f) SHA1(2149e9eae152556c632ebd4d0b2de49e40916a77) )
ROM_LOAD16_BYTE( "ob2_c3.b3", 0x700001, 0x80000, CRC(e3517e6e) SHA1(68ac60570423d8f0d7cff3db1901c9c050d0be91) )
- ROM_REGION(0x1000000, "bsmt", 0 )
+ ROM_REGION(0x1000000, "bsmt", 0 ) // are the sample roms 100% confirmed as good? some sounds cause everything to cut out followed by a loud static pop? (did the same before the bsmt decap)
ROM_LOAD( "u17.snd", 0x000000, 0x80000, CRC(b945c18d) SHA1(6556bbb4a7057df3680132f24687fa944006c784) )
ROM_LOAD( "u21.snd", 0x080000, 0x80000, CRC(10b2110c) SHA1(83e5938ed22da2874022e1dc8df76c72d95c448d) )
ROM_LOAD( "u36.snd", 0x100000, 0x80000, CRC(3b73abe2) SHA1(195096e2302e84123b23b4ccd982fb3ab9afe42c) )
diff --git a/src/mame/drivers/deco_ld.cpp b/src/mame/drivers/deco_ld.cpp
index 8caa719787b..bde3b0fcdc2 100644
--- a/src/mame/drivers/deco_ld.cpp
+++ b/src/mame/drivers/deco_ld.cpp
@@ -465,26 +465,24 @@ void deco_ld_state::machine_start()
MACHINE_CONFIG_START(deco_ld_state::rblaster)
/* basic machine hardware */
- M6502(config, m_maincpu, 8000000/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &deco_ld_state::rblaster_map);
- m_maincpu->set_vblank_int("screen", FUNC(deco_ld_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu",M6502,8000000/2)
+ MCFG_DEVICE_PROGRAM_MAP(rblaster_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", deco_ld_state, irq0_line_hold)
- M6502(config, m_audiocpu, 8000000/2);
- m_audiocpu->set_addrmap(AS_PROGRAM, &deco_ld_state::rblaster_sound_map);
- m_audiocpu->set_periodic_int(FUNC(deco_ld_state::sound_interrupt), attotime::from_hz(640));
+ MCFG_DEVICE_ADD("audiocpu",M6502,8000000/2)
+ MCFG_DEVICE_PROGRAM_MAP(rblaster_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(deco_ld_state, sound_interrupt, 640)
-// config.m_minimum_quantum = attotime::from_hz(6000);
+// MCFG_QUANTUM_TIME(attotime::from_hz(6000))
- SONY_LDP1000(config, m_laserdisc, 0);
- m_laserdisc->set_overlay(256, 256, FUNC(deco_ld_state::screen_update_rblaster));
- //m_laserdisc->set_overlay_clip(0, 256-1, 8, 240-1);
- m_laserdisc->set_overlay_palette(m_palette);
- m_laserdisc->add_route(0, "lspeaker", 1.0);
- m_laserdisc->add_route(1, "rspeaker", 1.0);
+ MCFG_LASERDISC_LDP1000_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, deco_ld_state, screen_update_rblaster)
+ //MCFG_LASERDISC_OVERLAY_CLIP(0, 256-1, 8, 240-1)
+ MCFG_LASERDISC_OVERLAY_PALETTE(m_palette)
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_rblaster);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rblaster)
PALETTE(config, m_palette).set_format(palette_device::BGR_233_inverted, 0x800);
//ACIA6850(config, m_acia, 0);
@@ -502,6 +500,10 @@ MACHINE_CONFIG_START(deco_ld_state::rblaster)
AY8910(config, "ay1", 1500000).add_route(ALL_OUTPUTS, "lspeaker", 0.25).add_route(ALL_OUTPUTS, "rspeaker", 0.25);
AY8910(config, "ay2", 1500000).add_route(ALL_OUTPUTS, "lspeaker", 0.25).add_route(ALL_OUTPUTS, "rspeaker", 0.25);
+
+ MCFG_DEVICE_MODIFY("laserdisc")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/deco_mlc.cpp b/src/mame/drivers/deco_mlc.cpp
index b3639af5000..bf49ae120e8 100644
--- a/src/mame/drivers/deco_mlc.cpp
+++ b/src/mame/drivers/deco_mlc.cpp
@@ -507,59 +507,61 @@ void deco_mlc_state::machine_reset()
m_vbl_i = 0xffffffff;
}
-void deco_mlc_state::avengrgs(machine_config &config)
-{
+MACHINE_CONFIG_START(deco_mlc_state::avengrgs)
+
/* basic machine hardware */
- SH2(config, m_maincpu, 42000000/2); /* 21 MHz clock confirmed on real board */
- m_maincpu->set_addrmap(AS_PROGRAM, &deco_mlc_state::avengrgs_map);
+ MCFG_DEVICE_ADD(m_maincpu, SH2, 42000000/2) /* 21 MHz clock confirmed on real board */
+ MCFG_DEVICE_PROGRAM_MAP(avengrgs_map)
EEPROM_93C46_16BIT(config, m_eeprom); /* Actually 93c45 */
- TIMER(config, m_raster_irq_timer).configure_generic(FUNC(deco_mlc_state::interrupt_gen));
+ MCFG_TIMER_DRIVER_ADD(m_raster_irq_timer, deco_mlc_state, interrupt_gen)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(58);
- m_screen->set_size(40*8, 32*8);
- m_screen->set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- m_screen->set_screen_update(FUNC(deco_mlc_state::screen_update));
- m_screen->screen_vblank().set(FUNC(deco_mlc_state::screen_vblank_mlc));
- m_screen->set_video_attributes(VIDEO_UPDATE_SCANLINE);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_deco_mlc);
- PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 2048);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(deco_mlc_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, deco_mlc_state, screen_vblank_mlc))
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE)
+
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_deco_mlc)
+ PALETTE(config, m_palette);
+ m_palette->set_format(palette_device::xBGR_555, 2048);
m_palette->set_membits(16);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- YMZ280B(config, m_ymz, 42000000 / 3);
- m_ymz->add_route(0, "lspeaker", 1.0);
- m_ymz->add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD(m_ymz, YMZ280B, 42000000 / 3)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(deco_mlc_state::mlc)
-void deco_mlc_state::mlc(machine_config &config)
-{
/* basic machine hardware */
- ARM(config, m_maincpu, 42000000/6); /* 42 MHz -> 7MHz clock confirmed on real board */
- m_maincpu->set_addrmap(AS_PROGRAM, &deco_mlc_state::decomlc_map);
+ MCFG_DEVICE_ADD(m_maincpu, ARM,42000000/6) /* 42 MHz -> 7MHz clock confirmed on real board */
+ MCFG_DEVICE_PROGRAM_MAP(decomlc_map)
EEPROM_93C46_16BIT(config, m_eeprom); /* Actually 93c45 */
- TIMER(config, m_raster_irq_timer).configure_generic(FUNC(deco_mlc_state::interrupt_gen));
+ MCFG_TIMER_DRIVER_ADD(m_raster_irq_timer, deco_mlc_state, interrupt_gen)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(58);
- m_screen->set_size(40*8, 32*8);
- m_screen->set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- m_screen->set_screen_update(FUNC(deco_mlc_state::screen_update));
- m_screen->screen_vblank().set(FUNC(deco_mlc_state::screen_vblank_mlc));
- m_screen->set_video_attributes(VIDEO_UPDATE_SCANLINE);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_deco_mlc);
- PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 2048);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(deco_mlc_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, deco_mlc_state, screen_vblank_mlc))
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE)
+
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_deco_mlc)
+ PALETTE(config, m_palette);
+ m_palette->set_format(palette_device::xBGR_555, 2048);
m_palette->set_membits(16);
DECO146PROT(config, m_deco146, 0);
@@ -569,28 +571,25 @@ void deco_mlc_state::mlc(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- YMZ280B(config, m_ymz, 42000000 / 3);
- m_ymz->add_route(0, "lspeaker", 1.0);
- m_ymz->add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD(m_ymz, YMZ280B, 42000000 / 3)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
-void deco_mlc_state::mlc_6bpp(machine_config &config)
-{
+MACHINE_CONFIG_START(deco_mlc_state::mlc_6bpp)
mlc(config);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_6bpp)
+MACHINE_CONFIG_END
- m_gfxdecode->set_info(gfx_6bpp);
-}
-
-void deco_mlc_state::mlc_5bpp(machine_config &config)
-{
+MACHINE_CONFIG_START(deco_mlc_state::mlc_5bpp)
mlc(config);
-
- m_gfxdecode->set_info(gfx_5bpp);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_5bpp)
// TODO: mono? ch.0 doesn't output any sound in-game
- m_ymz->add_route(1, "lspeaker", 1.0);
- m_ymz->add_route(0, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_MODIFY("ymz")
+ MCFG_SOUND_ROUTE(1, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(0, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************/
diff --git a/src/mame/drivers/decocass.cpp b/src/mame/drivers/decocass.cpp
index 8f86b713c48..305ae5f7889 100644
--- a/src/mame/drivers/decocass.cpp
+++ b/src/mame/drivers/decocass.cpp
@@ -950,15 +950,15 @@ void decocass_state::decocass_palette(palette_device &palette) const
}
-void decocass_state::decocass(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_state::decocass)
+
/* basic machine hardware */
- DECO_222(config, m_maincpu, HCLK4); /* the earlier revision board doesn't have the 222 but must have the same thing implemented in logic for the M6502 */
- m_maincpu->set_addrmap(AS_PROGRAM, &decocass_state::decocass_map);
+ MCFG_DEVICE_ADD("maincpu", DECO_222, HCLK4) /* the earlier revision board doesn't have the 222 but must have the same thing implemented in logic for the M6502 */
+ MCFG_DEVICE_PROGRAM_MAP(decocass_map)
- M6502(config, m_audiocpu, HCLK1/3/2);
- m_audiocpu->set_addrmap(AS_PROGRAM, &decocass_state::decocass_sound_map);
- TIMER(config, "audionmi").configure_scanline(FUNC(decocass_state::decocass_audio_nmi_gen), "screen", 0, 8);
+ MCFG_DEVICE_ADD("audiocpu", M6502, HCLK1/3/2)
+ MCFG_DEVICE_PROGRAM_MAP(decocass_sound_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("audionmi", decocass_state, decocass_audio_nmi_gen, "screen", 0, 8)
I8041(config, m_mcu, HCLK);
m_mcu->p1_in_cb().set(FUNC(decocass_state::i8041_p1_r));
@@ -966,19 +966,19 @@ void decocass_state::decocass(machine_config &config)
m_mcu->p2_in_cb().set(FUNC(decocass_state::i8041_p2_r));
m_mcu->p2_out_cb().set(FUNC(decocass_state::i8041_p2_w));
- config.m_minimum_quantum = attotime::from_hz(4200); /* interleave CPUs */
+ MCFG_QUANTUM_TIME(attotime::from_hz(4200)) /* interleave CPUs */
WATCHDOG_TIMER(config, m_watchdog);
DECOCASS_TAPE(config, m_cassette, 0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(HCLK, 384, 0*8, 256, 272, 1*8, 248);
- m_screen->set_screen_update(FUNC(decocass_state::screen_update_decocass));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(HCLK, 384, 0*8, 256, 272, 1*8, 248)
+ MCFG_SCREEN_UPDATE_DRIVER(decocass_state, screen_update_decocass)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_decocass);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_decocass)
PALETTE(config, m_palette, FUNC(decocass_state::decocass_palette), 64, 32);
/* sound hardware */
@@ -990,280 +990,249 @@ void decocass_state::decocass(machine_config &config)
AY8910(config, "ay1", HCLK2).add_route(ALL_OUTPUTS, "mono", 0.40);
AY8910(config, "ay2", HCLK2).add_route(ALL_OUTPUTS, "mono", 0.40);
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::ctsttape(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type1_state::ctsttape)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,ctsttape)
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::cprogolfj(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type1_state::cprogolfj)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cprogolfj)
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::cdsteljn(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type1_state::cdsteljn)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cdsteljn)
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::cmanhat(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type1_state::cmanhat)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cmanhat)
-}
+MACHINE_CONFIG_END
-void decocass_type3_state::cfishing(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type3_state::cfishing)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cfishing)
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::chwy(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type1_state::chwy)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,chwy)
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::cterrani(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type1_state::cterrani)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cterrani)
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::castfant(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type1_state::castfant)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,castfant)
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::csuperas(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type1_state::csuperas)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,csuperas)
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::cocean1a(machine_config &config) /* 10 */
-{
+MACHINE_CONFIG_START(decocass_type1_state::cocean1a) /* 10 */
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cocean1a)
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::clocknch(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type1_state::clocknch)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,clocknch)
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::clocknchj(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type1_state::clocknchj)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,clocknchj)
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::cfboy0a1(machine_config &config) /* 12 */
-{
+MACHINE_CONFIG_START(decocass_type1_state::cfboy0a1) /* 12 */
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cfboy0a1)
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::cprogolf(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type1_state::cprogolf)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cprogolf)
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::cluckypo(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type1_state::cluckypo)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cluckypo)
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::ctisland(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type1_state::ctisland)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,ctisland)
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::ctisland3(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type1_state::ctisland3)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,ctisland3)
-}
+MACHINE_CONFIG_END
-void decocass_type1_state::cexplore(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type1_state::cexplore)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cexplore)
-}
+MACHINE_CONFIG_END
-void decocass_type3_state::cbtime(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type3_state::cbtime)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cbtime)
-}
+MACHINE_CONFIG_END
-void decocass_type3_state::cburnrub(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type3_state::cburnrub)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cburnrub)
-}
+MACHINE_CONFIG_END
-void decocass_type3_state::cgraplop(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type3_state::cgraplop)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cgraplop)
-}
+MACHINE_CONFIG_END
-void decocass_type3_state::cgraplop2(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type3_state::cgraplop2)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cgraplop2)
-}
+MACHINE_CONFIG_END
-void decocass_type3_state::clapapa(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type3_state::clapapa)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,clapapa)
-}
+MACHINE_CONFIG_END
-void decocass_type3_state::cskater(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type3_state::cskater)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cskater)
-}
+MACHINE_CONFIG_END
-void decocass_type3_state::cprobowl(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type3_state::cprobowl)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cprobowl)
-}
+MACHINE_CONFIG_END
-void decocass_type3_state::cnightst(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type3_state::cnightst)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cnightst)
-}
+MACHINE_CONFIG_END
-void decocass_type3_state::cpsoccer(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type3_state::cpsoccer)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cpsoccer)
-}
+MACHINE_CONFIG_END
-void decocass_type3_state::csdtenis(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type3_state::csdtenis)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,csdtenis)
-}
+MACHINE_CONFIG_END
-void decocass_type3_state::czeroize(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type3_state::czeroize)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,czeroize)
-}
+MACHINE_CONFIG_END
-void decocass_type3_state::cppicf(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type3_state::cppicf)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cppicf)
-}
+MACHINE_CONFIG_END
-void decocass_type3_state::cfghtice(machine_config &config)
-{
+MACHINE_CONFIG_START(decocass_type3_state::cfghtice)
decocass(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cfghtice)
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/decstation.cpp b/src/mame/drivers/decstation.cpp
index 4d7d412e1a9..c75668f2e13 100644
--- a/src/mame/drivers/decstation.cpp
+++ b/src/mame/drivers/decstation.cpp
@@ -73,7 +73,6 @@
#include "bus/rs232/rs232.h"
#include "screen.h"
#include "video/bt459.h"
-#include "video/decsfb.h"
class decstation_state : public driver_device
{
@@ -83,7 +82,6 @@ public:
m_maincpu(*this, "maincpu"),
m_screen(*this, "screen"),
m_scantimer(*this, "scantimer"),
- m_sfb(*this, "sfb"),
m_lk201(*this, "lk201"),
m_ioga(*this, "ioga"),
m_rtc(*this, "rtc"),
@@ -105,7 +103,6 @@ public:
protected:
DECLARE_READ_LINE_MEMBER(brcond0_r) { return ASSERT_LINE; }
DECLARE_WRITE_LINE_MEMBER(ioga_irq_w);
- DECLARE_WRITE_LINE_MEMBER(dz_irq_w);
DECLARE_READ32_MEMBER(cfb_r);
DECLARE_WRITE32_MEMBER(cfb_w);
@@ -133,10 +130,9 @@ private:
uint32_t kn01_screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- required_device<mips1_device_base> m_maincpu;
+ required_device<mips1core_device_base> m_maincpu;
required_device<screen_device> m_screen;
optional_device<timer_device> m_scantimer;
- optional_device<decsfb_device> m_sfb;
optional_device<lk201_device> m_lk201;
optional_device<dec_ioga_device> m_ioga;
required_device<mc146818_device> m_rtc;
@@ -152,6 +148,9 @@ private:
void threemin_map(address_map &map);
u8 *m_vrom_ptr;
+ u32 m_vram[0x200000/4];
+ u32 m_sfb[0x80];
+ int m_copy_src;
u32 m_kn01_control, m_kn01_status;
u32 m_palette[256], m_overlay[256];
@@ -191,27 +190,69 @@ uint32_t decstation_state::kn01_screen_update(screen_device &screen, bitmap_rgb3
uint32_t decstation_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- m_bt459->screen_update(screen, bitmap, cliprect, (uint8_t *)m_sfb->get_vram());
+ m_bt459->screen_update(screen, bitmap, cliprect, (uint8_t *)&m_vram[0]);
return 0;
}
+/*
+ 0x100000 copy register 0
+ 0x100004 copy register 1
+ 0x100008 copy register 2
+ 0x10000C copy register 3
+ 0x100010 copy register 4
+ 0x100014 copy register 5
+ 0x100018 copy register 6
+ 0x10001C copy register 7
+ 0x100020 foreground register
+ 0x100024 background register
+ 0x100028 plane mask
+ 0x10002C pixel mask
+ 0x100030 cxt mode
+ 0x100034 boolean operation
+ 0x100038 pixel shift
+ 0x10003C line address
+ 0x100040 bresh 1
+ 0x100044 bresh 2
+ 0x100048 bresh 3
+ 0x10004C bresh continue
+ 0x100050 deep register
+ 0x100054 start register
+ 0x100058 Clear Interrupt
+ 0x10005C reserved 2
+ 0x100060 refresh count
+ 0x100064 video horiz
+ 0x100068 video vertical
+ 0x10006C refresh base
+ 0x100070 video valid
+ 0x100074 Interrupt Enable
+*/
+
+#define MODE_SIMPLE 0
+#define MODE_OPAQUESTIPPLE 1
+#define MODE_OPAQUELINE 2
+#define MODE_TRANSPARENTSTIPPLE 5
+#define MODE_TRANSPARENTLINE 6
+#define MODE_COPY 7
+
READ32_MEMBER(decstation_state::cfb_r)
{
uint32_t addr = offset << 2;
- //logerror("cfb_r: reading at %x\n", addr);
+// logerror("cfb_r: reading at %x\n", addr);
- if (addr < 0x80000)
+ if (addr < 0x800000)
{
return m_vrom_ptr[addr>>2] & 0xff;
}
if ((addr >= 0x100000) && (addr < 0x100200))
{
+ return m_sfb[offset-(0x100000/4)];
}
if ((addr >= 0x200000) && (addr < 0x400000))
{
+ return m_vram[offset-(0x200000/4)];
}
return 0xffffffff;
@@ -223,6 +264,13 @@ WRITE32_MEMBER(decstation_state::cfb_w)
if ((addr >= 0x100000) && (addr < 0x100200))
{
+ //printf("SFB: %08x (mask %08x) @ %x\n", data, mem_mask, offset<<2);
+ COMBINE_DATA(&m_sfb[offset-(0x100000/4)]);
+
+ if ((addr == 0x100030) && (data = 7))
+ {
+ m_copy_src = 1;
+ }
return;
}
@@ -234,6 +282,70 @@ WRITE32_MEMBER(decstation_state::cfb_w)
if ((addr >= 0x200000) && (addr < 0x400000))
{
+ //printf("FB: %08x (mask %08x) @ %x\n", data, mem_mask, offset<<2);
+
+ switch (m_sfb[0x30/4])
+ {
+ case MODE_SIMPLE: // simple
+ COMBINE_DATA(&m_vram[offset-(0x200000/4)]);
+ break;
+
+ case MODE_TRANSPARENTSTIPPLE:
+ {
+ uint8_t *pVRAM = (uint8_t *)&m_vram[offset-(0x200000/4)];
+ uint8_t fgs[4];
+
+ fgs[0] = m_sfb[0x20/4] >> 24;
+ fgs[1] = (m_sfb[0x20/4] >> 16) & 0xff;
+ fgs[2] = (m_sfb[0x20/4] >> 8) & 0xff;
+ fgs[3] = m_sfb[0x20/4] & 0xff;
+ for (int x = 0; x < 32; x++)
+ {
+ if (data & (1<<(31-x)))
+ {
+ pVRAM[x] = fgs[x & 3];
+ }
+ }
+ }
+ break;
+
+ case MODE_COPY:
+ {
+ uint8_t *pVRAM = (uint8_t *)&m_vram[offset-(0x200000/4)];
+ uint8_t *pBuffer = (uint8_t *)&m_sfb[0]; // first 8 32-bit regs are the copy buffer
+
+ if (m_copy_src)
+ {
+ m_copy_src = 0;
+
+ for (int x = 0; x < 32; x++)
+ {
+ if (data & (1<<(31-x)))
+ {
+ pBuffer[x] = pVRAM[x];
+ }
+ }
+ }
+ else
+ {
+ m_copy_src = 1;
+
+ for (int x = 0; x < 32; x++)
+ {
+ if (data & (1<<(31-x)))
+ {
+ pVRAM[x] = pBuffer[x];
+ }
+ }
+ }
+ }
+ break;
+
+ default:
+ logerror("SFB: Unsupported VRAM write %08x (mask %08x) at %08x in mode %x\n", data, mem_mask, offset<<2, m_sfb[0x30/4]);
+ break;
+ }
+ return;
}
}
@@ -439,24 +551,18 @@ WRITE_LINE_MEMBER(decstation_state::ioga_irq_w)
m_maincpu->set_input_line(INPUT_LINE_IRQ3, state);
}
-WRITE_LINE_MEMBER(decstation_state::dz_irq_w)
-{
- m_maincpu->set_input_line(INPUT_LINE_IRQ2, state);
-}
-
void decstation_state::machine_start()
{
if (m_vrom)
m_vrom_ptr = m_vrom->base();
+ save_item(NAME(m_vram));
+ save_item(NAME(m_sfb));
+ save_item(NAME(m_copy_src));
}
void decstation_state::machine_reset()
{
- if (m_ioga)
- {
- m_ioga->set_dma_space(&m_maincpu->space(AS_PROGRAM));
- }
-
+ m_copy_src = 1;
m_entry = 0;
m_stage = 0;
m_r = m_g = m_b = 0;
@@ -506,10 +612,8 @@ void decstation_state::kn01_map(address_map &map)
void decstation_state::threemin_map(address_map &map)
{
map(0x00000000, 0x07ffffff).ram(); // full 128 MB
- map(0x10000000, 0x1007ffff).rw(FUNC(decstation_state::cfb_r), FUNC(decstation_state::cfb_w));
- map(0x10100000, 0x101001ff).rw(m_sfb, FUNC(decsfb_device::read), FUNC(decsfb_device::write));
+ map(0x10000000, 0x13ffffff).rw(FUNC(decstation_state::cfb_r), FUNC(decstation_state::cfb_w));
map(0x101c0000, 0x101c000f).m("bt459", FUNC(bt459_device::map)).umask32(0x000000ff);
- map(0x10200000, 0x103fffff).rw(m_sfb, FUNC(decsfb_device::vram_r), FUNC(decsfb_device::vram_w));
map(0x1c000000, 0x1c07ffff).m(m_ioga, FUNC(dec_ioga_device::map));
map(0x1c0c0000, 0x1c0c0007).rw(m_lance, FUNC(am79c90_device::regs_r), FUNC(am79c90_device::regs_w)).umask32(0x0000ffff);
map(0x1c100000, 0x1c100003).rw(m_scc0, FUNC(z80scc_device::ca_r), FUNC(z80scc_device::ca_w)).umask32(0x0000ff00);
@@ -543,11 +647,10 @@ static void dec_scsi_devices(device_slot_interface &device)
device.option_add_internal("asc", NCR53C94);
}
-void decstation_state::kn01(machine_config &config)
-{
+MACHINE_CONFIG_START(decstation_state::kn01)
R2000(config, m_maincpu, 16.67_MHz_XTAL, 65536, 131072);
m_maincpu->set_endianness(ENDIANNESS_LITTLE);
- m_maincpu->set_fpu(mips1_device_base::MIPS_R3010Av4);
+ m_maincpu->set_fpurev(0x340);
m_maincpu->in_brcond<0>().set(FUNC(decstation_state::brcond0_r));
m_maincpu->set_addrmap(AS_PROGRAM, &decstation_state::kn01_map);
@@ -559,20 +662,17 @@ void decstation_state::kn01(machine_config &config)
m_scantimer->configure_scanline(FUNC(decstation_state::scanline_timer), "screen", 0, 1);
DC7085(config, m_dz, 0);
- m_dz->int_cb().set(FUNC(decstation_state::dz_irq_w));
- m_dz->ch1_tx_cb().set("dc7085:ch1", FUNC(dc7085_channel::rx_w));
AM79C90(config, m_lance, XTAL(12'500'000));
MC146818(config, m_rtc, XTAL(32'768));
m_rtc->set_binary(true);
-}
+MACHINE_CONFIG_END
-void decstation_state::kn02ba(machine_config &config)
-{
+MACHINE_CONFIG_START(decstation_state::kn02ba)
R3000A(config, m_maincpu, 33.333_MHz_XTAL, 65536, 131072);
m_maincpu->set_endianness(ENDIANNESS_LITTLE);
- m_maincpu->set_fpu(mips1_device_base::MIPS_R3010Av4);
+ m_maincpu->set_fpurev(0x340); // should be R3010A v4.0
m_maincpu->in_brcond<0>().set(FUNC(decstation_state::brcond0_r));
m_maincpu->set_addrmap(AS_PROGRAM, &decstation_state::threemin_map);
@@ -580,15 +680,10 @@ void decstation_state::kn02ba(machine_config &config)
m_screen->set_raw(130000000, 1704, 32, (1280+32), 1064, 3, (1024+3));
m_screen->set_screen_update(FUNC(decstation_state::screen_update));
- DECSFB(config, m_sfb, 25'000'000); // clock based on white paper which quotes "40ns" gate array cycle times
-// m_sfb->int_cb().set(FUNC(dec_ioga_device::slot0_irq_w));
-
BT459(config, m_bt459, 83'020'800);
AM79C90(config, m_lance, XTAL(12'500'000));
m_lance->intr_out().set("ioga", FUNC(dec_ioga_device::lance_irq_w));
- m_lance->dma_in().set("ioga", FUNC(dec_ioga_device::lance_dma_r));
- m_lance->dma_out().set("ioga", FUNC(dec_ioga_device::lance_dma_w));
DECSTATION_IOGA(config, m_ioga, XTAL(12'500'000));
m_ioga->irq_out().set(FUNC(decstation_state::ioga_irq_w));
@@ -619,16 +714,17 @@ void decstation_state::kn02ba(machine_config &config)
rs232b.dcd_handler().set(m_scc0, FUNC(z80scc_device::dcdb_w));
rs232b.cts_handler().set(m_scc0, FUNC(z80scc_device::ctsb_w));
- NSCSI_BUS(config, "scsibus");
- NSCSI_CONNECTOR(config, "scsibus:0", dec_scsi_devices, "harddisk");
- NSCSI_CONNECTOR(config, "scsibus:1", dec_scsi_devices, "cdrom");
- NSCSI_CONNECTOR(config, "scsibus:2", dec_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:3", dec_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:4", dec_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:5", dec_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:6", dec_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:7", dec_scsi_devices, "asc", true).set_option_machine_config("asc", [this] (device_t *device) { ncr5394(device); });
-}
+ MCFG_NSCSI_BUS_ADD("scsibus")
+ MCFG_NSCSI_ADD("scsibus:0", dec_scsi_devices, "harddisk", false)
+ MCFG_NSCSI_ADD("scsibus:1", dec_scsi_devices, "cdrom", false)
+ MCFG_NSCSI_ADD("scsibus:2", dec_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:3", dec_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:4", dec_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:5", dec_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:6", dec_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:7", dec_scsi_devices, "asc", true)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("asc", [this] (device_t *device) { ncr5394(device); })
+MACHINE_CONFIG_END
static INPUT_PORTS_START( decstation )
PORT_START("UNUSED") // unused IN0
diff --git a/src/mame/drivers/dectalk.cpp b/src/mame/drivers/dectalk.cpp
index ee03a4ed2f3..4805da6c6bf 100644
--- a/src/mame/drivers/dectalk.cpp
+++ b/src/mame/drivers/dectalk.cpp
@@ -876,18 +876,16 @@ TIMER_CALLBACK_MEMBER(dectalk_state::outfifo_read_cb)
m_duart->duart_rx_break(1, 0);*/
}
-void dectalk_state::dectalk(machine_config &config)
-{
+MACHINE_CONFIG_START(dectalk_state::dectalk)
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(20'000'000)/2); /* E74 20MHz OSC (/2) */
- m_maincpu->set_addrmap(AS_PROGRAM, &dectalk_state::m68k_mem);
-
- SCN2681(config, m_duart, XTAL(3'686'400)); // MC2681 DUART ; Y3 3.6864MHz xtal */
- m_duart->irq_cb().set(FUNC(dectalk_state::duart_irq_handler));
- m_duart->a_tx_cb().set(FUNC(dectalk_state::duart_txa));
- m_duart->b_tx_cb().set("rs232", FUNC(rs232_port_device::write_txd));
- m_duart->inport_cb().set(FUNC(dectalk_state::duart_input));
- m_duart->outport_cb().set(FUNC(dectalk_state::duart_output));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(20'000'000)/2) /* E74 20MHz OSC (/2) */
+ MCFG_DEVICE_PROGRAM_MAP(m68k_mem)
+ MCFG_DEVICE_ADD(m_duart, SCN2681, XTAL(3'686'400)) // MC2681 DUART ; Y3 3.6864MHz xtal */
+ MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, dectalk_state, duart_irq_handler))
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE(*this, dectalk_state, duart_txa))
+ MCFG_MC68681_B_TX_CALLBACK(WRITELINE("rs232", rs232_port_device, write_txd))
+ MCFG_MC68681_INPORT_CALLBACK(READ8(*this, dectalk_state, duart_input))
+ MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, dectalk_state, duart_output))
TMS32010(config, m_dsp, XTAL(20'000'000)); /* Y1 20MHz xtal */
m_dsp->set_addrmap(AS_PROGRAM, &dectalk_state::tms32010_mem);
@@ -895,9 +893,9 @@ void dectalk_state::dectalk(machine_config &config)
m_dsp->bio().set(FUNC(dectalk_state::spc_semaphore_r)); //read infifo-has-data-in-it fifo readable status
#ifdef USE_LOOSE_TIMING
- config.m_minimum_quantum = attotime::from_hz(100);
+ MCFG_QUANTUM_TIME(attotime::from_hz(100))
#else
- config.m_perfect_cpu_quantum = subtag("dsp");
+ MCFG_QUANTUM_PERFECT_CPU("dsp")
#endif
X2212(config, "x2212");
@@ -906,16 +904,15 @@ void dectalk_state::dectalk(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- AD7541(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.9); // ad7541.e107 (E88 10KHz OSC, handled by timer)
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", AD7541, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.9) // ad7541.e107 (E88 10KHz OSC, handled by timer)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
/* Y2 is a 3.579545 MHz xtal for the dtmf decoder chip */
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
rs232.rxd_handler().set(m_duart, FUNC(scn2681_device::rx_b_w));
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/decwritr.cpp b/src/mame/drivers/decwritr.cpp
index bcd83f09b89..ead4c944006 100644
--- a/src/mame/drivers/decwritr.cpp
+++ b/src/mame/drivers/decwritr.cpp
@@ -408,25 +408,25 @@ void decwriter_state::machine_reset()
// MACHINE DRIVERS
//**************************************************************************
-void decwriter_state::la120(machine_config &config)
-{
- I8080A(config, m_maincpu, XTAL(18'000'000) / 9); // 18Mhz xtal on schematics, using an i8224 clock divider/reset sanitizer IC
- m_maincpu->set_addrmap(AS_PROGRAM, &decwriter_state::la120_mem);
- m_maincpu->set_addrmap(AS_IO, &decwriter_state::la120_io);
- //m_maincpu->set_irq_acknowledge_callback("prtlsi", FUNC(dc305_device::inta_cb));
+MACHINE_CONFIG_START(decwriter_state::la120)
+
+ MCFG_DEVICE_ADD("maincpu", I8080A, XTAL(18'000'000) / 9) // 18Mhz xtal on schematics, using an i8224 clock divider/reset sanitizer IC
+ MCFG_DEVICE_PROGRAM_MAP(la120_mem)
+ MCFG_DEVICE_IO_MAP(la120_io)
+ //MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("prtlsi", dc305_device, inta_cb)
/* video hardware */
//TODO: no actual screen! has 8 leds above the keyboard (similar to vt100/vk100) and has 4 7segment leds for showing an error code.
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(decwriter_state::screen_update));
- screen.set_size(640,480);
- screen.set_visarea_full();
- screen.set_refresh_hz(30);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(decwriter_state, screen_update)
+ MCFG_SCREEN_SIZE(640,480)
+ MCFG_SCREEN_VISIBLE_AREA(0,639, 0,479)
+ MCFG_SCREEN_REFRESH_RATE(30)
- //dc305_device &prtlsi(DC305(config, "prtlsi", XTAL(18'000'000) / 9));
- //prtlsi.out_rxc_cb().set("usart", FUNC(i8251_device, write_rxc));
- //prtlsi.out_txc_cb().set("usart", FUNC(i8251_device, write_txc));
- //prtlsi.out_int_cb().set("mainint", FUNC(input_merger_device::in_w<0>));
+ //MCFG_DEVICE_ADD("prtlsi", DC305, XTAL(18'000'000) / 9)
+ //MCFG_DC305_OUT_RXC_CB(WRITELINE("usart", i8251_device, write_rxc))
+ //MCFG_DC305_OUT_TXC_CB(WRITELINE("usart", i8251_device, write_txc))
+ //MCFG_DC305_OUT_INT_CB(WRITELINE("mainint", input_merger_device, in_w<0>))
LS259(config, m_ledlatch); // E2 on keyboard
m_ledlatch->q_out_cb<0>().set_output("led1").invert(); // ON LINE
@@ -442,7 +442,8 @@ void decwriter_state::la120(machine_config &config)
/* audio hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, m_speaker, 786).add_route(ALL_OUTPUTS, "mono", 0.50); // TODO: LA120 speaker is controlled by asic; VT100 has: 7.945us per serial clock = ~125865.324hz, / 160 clocks per char = ~ 786 hz
+ MCFG_DEVICE_ADD("beeper", BEEP, 786) // TODO: LA120 speaker is controlled by asic; VT100 has: 7.945us per serial clock = ~125865.324hz, / 160 clocks per char = ~ 786 hz
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* i8251 */
I8251(config, "usart", XTAL(18'000'000) / 9);
@@ -452,7 +453,8 @@ void decwriter_state::la120(machine_config &config)
usart.rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts));
usart.rxrdy_handler().set("mainint", FUNC(input_merger_device::in_w<1>));
- INPUT_MERGER_ANY_HIGH(config, "mainint").output_handler().set_inputline(m_maincpu, 0);
+ MCFG_INPUT_MERGER_ANY_HIGH("mainint")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", 0))
rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr));
rs232.rxd_handler().set("usart", FUNC(i8251_device::write_rxd));
@@ -460,7 +462,7 @@ void decwriter_state::la120(machine_config &config)
*/
ER1400(config, m_nvm);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/deniam.cpp b/src/mame/drivers/deniam.cpp
index d03c39074ee..7823f6ccc77 100644
--- a/src/mame/drivers/deniam.cpp
+++ b/src/mame/drivers/deniam.cpp
@@ -253,11 +253,11 @@ void deniam_state::machine_reset()
void deniam_state::deniam16b(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(25'000'000)/2); /* 12.5Mhz verified */
+ M68000(config, m_maincpu, XTAL(25'000'000)/2); /* 12.5Mhz verified */
m_maincpu->set_addrmap(AS_PROGRAM, &deniam_state::deniam16b_map);
m_maincpu->set_vblank_int("screen", FUNC(deniam_state::irq4_line_assert));
- Z80(config, m_audiocpu, XTAL(25'000'000)/4); /* 6.25Mhz verified */
+ Z80(config, m_audiocpu, XTAL(25'000'000)/4); /* 6.25Mhz verified */
m_audiocpu->set_addrmap(AS_PROGRAM, &deniam_state::sound_map);
m_audiocpu->set_addrmap(AS_IO, &deniam_state::sound_io_map);
@@ -291,7 +291,7 @@ void deniam_state::deniam16b(machine_config &config)
void deniam_state::deniam16c(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(25'000'000)/2); /* 12.5Mhz verified */
+ M68000(config, m_maincpu, XTAL(25'000'000)/2); /* 12.5Mhz verified */
m_maincpu->set_addrmap(AS_PROGRAM, &deniam_state::deniam16c_map);
m_maincpu->set_vblank_int("screen", FUNC(deniam_state::irq4_line_assert));
diff --git a/src/mame/drivers/deshoros.cpp b/src/mame/drivers/deshoros.cpp
index 8dfda215b70..cb489a945da 100644
--- a/src/mame/drivers/deshoros.cpp
+++ b/src/mame/drivers/deshoros.cpp
@@ -266,21 +266,21 @@ void destiny_state::machine_reset()
bank_select_w(m_maincpu->space(AS_PROGRAM), 0, 0);
}
-void destiny_state::destiny(machine_config &config)
-{
+MACHINE_CONFIG_START(destiny_state::destiny)
+
/* basic machine hardware */
- M6809(config, m_maincpu, XTAL(4'000'000)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &destiny_state::main_map);
- m_maincpu->set_periodic_int(FUNC(destiny_state::irq0_line_hold), attotime::from_hz(50)); // timer irq controls update speed, frequency needs to be determined yet (2MHz through three 74LS390)
+ MCFG_DEVICE_ADD("maincpu", M6809, XTAL(4'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(destiny_state, irq0_line_hold, 50) // timer irq controls update speed, frequency needs to be determined yet (2MHz through three 74LS390)
/* video hardware (dummy) */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(6*16, 9*2);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(destiny_state::screen_update_destiny));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(6*16, 9*2)
+ MCFG_SCREEN_VISIBLE_AREA(0, 6*16-1, 0, 9*2-1)
+ MCFG_SCREEN_UPDATE_DRIVER(destiny_state, screen_update_destiny)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -288,7 +288,7 @@ void destiny_state::destiny(machine_config &config)
SPEAKER(config, "mono").front_center();
BEEP(config, m_beeper, 800); // TODO: determine exact frequency thru schematics
m_beeper->add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/destroyr.cpp b/src/mame/drivers/destroyr.cpp
index 33c33c66d7b..bd91789eef2 100644
--- a/src/mame/drivers/destroyr.cpp
+++ b/src/mame/drivers/destroyr.cpp
@@ -465,12 +465,12 @@ void destroyr_state::machine_start()
save_item(NAME(m_potsense));
}
-void destroyr_state::destroyr(machine_config &config)
-{
+MACHINE_CONFIG_START(destroyr_state::destroyr)
+
/* basic machine hardware */
- M6800(config, m_maincpu, XTAL(12'096'000) / 16);
- m_maincpu->set_addrmap(AS_PROGRAM, &destroyr_state::destroyr_map);
- m_maincpu->set_periodic_int(FUNC(destroyr_state::irq0_line_assert), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("maincpu", M6800, XTAL(12'096'000) / 16)
+ MCFG_DEVICE_PROGRAM_MAP(destroyr_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(destroyr_state, irq0_line_assert, 4*60)
f9334_device &outlatch(F9334(config, "outlatch")); // F8
outlatch.q_out_cb<0>().set_output("led0").invert(); // LED 1
@@ -485,18 +485,18 @@ void destroyr_state::destroyr(machine_config &config)
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(256, 262);
- m_screen->set_visarea(0, 255, 0, 239);
- m_screen->set_screen_update(FUNC(destroyr_state::screen_update));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_destroyr);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(256, 262)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
+ MCFG_SCREEN_UPDATE_DRIVER(destroyr_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_destroyr)
PALETTE(config, m_palette, FUNC(destroyr_state::destroyr_palette), 8);
/* sound hardware */
-}
+MACHINE_CONFIG_END
ROM_START( destroyr )
diff --git a/src/mame/drivers/dfruit.cpp b/src/mame/drivers/dfruit.cpp
index 634c4a59914..4e542240a84 100644
--- a/src/mame/drivers/dfruit.cpp
+++ b/src/mame/drivers/dfruit.cpp
@@ -371,28 +371,28 @@ TIMER_DEVICE_CALLBACK_MEMBER(dfruit_state::dfruit_irq_scanline)
#define MASTER_CLOCK XTAL(14'000'000)
-void dfruit_state::dfruit(machine_config &config)
-{
+MACHINE_CONFIG_START(dfruit_state::dfruit)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/2); //!!! TC0091LVC !!!
- m_maincpu->set_addrmap(AS_PROGRAM, &dfruit_state::dfruit_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(dfruit_state::dfruit_irq_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu",Z80,MASTER_CLOCK/2) //!!! TC0091LVC !!!
+ MCFG_DEVICE_PROGRAM_MAP(dfruit_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", dfruit_state, dfruit_irq_scanline, "screen", 0, 1)
//MCFG_MACHINE_START_OVERRIDE(dfruit_state,4enraya)
//MCFG_MACHINE_RESET_OVERRIDE(dfruit_state,4enraya)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(dfruit_state::screen_update));
- screen.screen_vblank().set(FUNC(dfruit_state::screen_vblank));
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_dfruit);
- PALETTE(config, "palette").set_entries(0x100);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(dfruit_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, dfruit_state, screen_vblank))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dfruit )
+ MCFG_PALETTE_ADD("palette", 0x100)
TC0091LVC(config, m_vdp, 0);
m_vdp->set_gfxdecode_tag("gfxdecode");
@@ -408,7 +408,7 @@ void dfruit_state::dfruit(machine_config &config)
opn.port_a_read_callback().set_ioport("IN4");
opn.port_b_read_callback().set_ioport("IN5");
opn.add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/dgn_beta.cpp b/src/mame/drivers/dgn_beta.cpp
index 3e635eab3d6..36048fc99de 100644
--- a/src/mame/drivers/dgn_beta.cpp
+++ b/src/mame/drivers/dgn_beta.cpp
@@ -317,27 +317,26 @@ static void dgnbeta_floppies(device_slot_interface &device)
device.option_add("dd", FLOPPY_35_DD);
}
-void dgn_beta_state::dgnbeta(machine_config &config)
-{
+MACHINE_CONFIG_START(dgn_beta_state::dgnbeta)
/* basic machine hardware */
- MC6809E(config, m_maincpu, DGNBETA_CPU_SPEED_HZ); /* 2 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &dgn_beta_state::dgnbeta_map);
- m_maincpu->set_dasm_override(FUNC(dgn_beta_state::dgnbeta_dasm_override));
+ MCFG_DEVICE_ADD(MAINCPU_TAG, MC6809E, DGNBETA_CPU_SPEED_HZ) /* 2 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(dgnbeta_map)
+ MCFG_DEVICE_DISASSEMBLE_OVERRIDE(dgn_beta_state, dgnbeta_dasm_override)
/* both cpus in the beta share the same address/data buses */
- MC6809E(config, m_dmacpu, DGNBETA_CPU_SPEED_HZ); /* 2 MHz */
- m_dmacpu->set_addrmap(AS_PROGRAM, &dgn_beta_state::dgnbeta_map);
+ MCFG_DEVICE_ADD(DMACPU_TAG, MC6809E, DGNBETA_CPU_SPEED_HZ) /* 2 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(dgnbeta_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(DGNBETA_FRAMES_PER_SECOND);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(100));
- screen.set_size(700,550);
- screen.set_visarea(0, 699, 0, 549);
- screen.set_screen_update("crtc", FUNC(hd6845_device::screen_update));
- screen.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
-
- GFXDECODE(config, "gfxdecode", m_palette, gfx_dgnbeta);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(DGNBETA_FRAMES_PER_SECOND)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(100))
+ MCFG_SCREEN_SIZE(700,550)
+ MCFG_SCREEN_VISIBLE_AREA(0, 699, 0, 549)
+ MCFG_SCREEN_UPDATE_DEVICE( "crtc", hd6845_device, screen_update )
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_dgnbeta)
PALETTE(config, m_palette, FUNC(dgn_beta_state::dgn_beta_palette), ARRAY_LENGTH(dgnbeta_pens));
/* PIA 0 at $FC20-$FC23 I46 */
@@ -374,10 +373,14 @@ void dgn_beta_state::dgnbeta(machine_config &config)
m_fdc->intrq_wr_callback().set(FUNC(dgn_beta_state::dgnbeta_fdc_intrq_w));
m_fdc->drq_wr_callback().set(FUNC(dgn_beta_state::dgnbeta_fdc_drq_w));
- FLOPPY_CONNECTOR(config, FDC_TAG ":0", dgnbeta_floppies, "dd", dgn_beta_state::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, FDC_TAG ":1", dgnbeta_floppies, "dd", dgn_beta_state::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, FDC_TAG ":2", dgnbeta_floppies, nullptr, dgn_beta_state::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, FDC_TAG ":3", dgnbeta_floppies, nullptr, dgn_beta_state::floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", dgnbeta_floppies, "dd", dgn_beta_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":1", dgnbeta_floppies, "dd", dgn_beta_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":2", dgnbeta_floppies, nullptr, dgn_beta_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":3", dgnbeta_floppies, nullptr, dgn_beta_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
HD6845(config, m_mc6845, 12.288_MHz_XTAL / 16); //XTAL is guessed
m_mc6845->set_screen("screen");
@@ -395,8 +398,8 @@ void dgn_beta_state::dgnbeta(machine_config &config)
/* in blocks of 128K up to this maximum. */
/* software lists */
- SOFTWARE_LIST(config, "flop_list").set_original("dgnbeta_flop");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "dgnbeta_flop")
+MACHINE_CONFIG_END
ROM_START(dgnbeta)
ROM_REGION(0x4000,MAINCPU_TAG,0)
diff --git a/src/mame/drivers/dgpix.cpp b/src/mame/drivers/dgpix.cpp
index 7e855c2e3c3..ad3d02361e2 100644
--- a/src/mame/drivers/dgpix.cpp
+++ b/src/mame/drivers/dgpix.cpp
@@ -431,11 +431,10 @@ void dgpix_state::machine_reset()
}
-void dgpix_state::dgpix(machine_config &config)
-{
- E132XT(config, m_maincpu, 20000000*4); /* 4x internal multiplier */
- m_maincpu->set_addrmap(AS_PROGRAM, &dgpix_state::cpu_map);
- m_maincpu->set_addrmap(AS_IO, &dgpix_state::io_map);
+MACHINE_CONFIG_START(dgpix_state::dgpix)
+ MCFG_DEVICE_ADD("maincpu", E132XT, 20000000*4) /* 4x internal multiplier */
+ MCFG_DEVICE_PROGRAM_MAP(cpu_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/*
unknown 16bit sound cpu, embedded inside the KS0164 sound chip
@@ -445,19 +444,19 @@ void dgpix_state::dgpix(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_NONE);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(512, 256);
- screen.set_visarea(0, 319, 0, 239);
- screen.set_screen_update(FUNC(dgpix_state::screen_update_dgpix));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
+ MCFG_SCREEN_UPDATE_DRIVER(dgpix_state, screen_update_dgpix)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::BGR_555);
/* sound hardware */
// KS0164 sound chip
-}
+MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/diablo1300.cpp b/src/mame/drivers/diablo1300.cpp
index 692ad0730c5..868a3f7867b 100644
--- a/src/mame/drivers/diablo1300.cpp
+++ b/src/mame/drivers/diablo1300.cpp
@@ -176,13 +176,12 @@ void diablo1300_state::machine_reset()
{
}
-void diablo1300_state::diablo1300(machine_config &config)
-{
+MACHINE_CONFIG_START( diablo1300_state::diablo1300 )
/* basic machine hardware */
- DIABLO1300(config, m_maincpu, XTAL(1'689'600));
- m_maincpu->set_addrmap(AS_PROGRAM, &diablo1300_state::diablo1300_map);
- m_maincpu->set_addrmap(AS_DATA, &diablo1300_state::diablo1300_data_map);
-}
+ MCFG_DEVICE_ADD("maincpu", DIABLO1300, XTAL(1'689'600))
+ MCFG_DEVICE_PROGRAM_MAP(diablo1300_map)
+ MCFG_DEVICE_DATA_MAP(diablo1300_data_map)
+MACHINE_CONFIG_END
ROM_START( diablo )
ROM_REGION( 0x10000, "maincpu", ROMREGION_16BIT )
diff --git a/src/mame/drivers/didact.cpp b/src/mame/drivers/didact.cpp
index 0fa835eb64f..5e2651d8be7 100644
--- a/src/mame/drivers/didact.cpp
+++ b/src/mame/drivers/didact.cpp
@@ -2,15 +2,13 @@
// copyright-holders:Joakim Larsson Edstrom
/*
*
- * History of Didact and Esselte Studium
- *--------------------------------------
+ * History of Didact
+ *------------------
* Didact Laromedelsproduktion was started in Linkoping in Sweden by Anders Andersson, Arne Kullbjer and
* Lars Bjorklund. They constructed a series of microcomputers for educational purposes such as "Mikrodator 6802",
* Esselte 100 and the Candela computer for the swedish schools to educate the students in assembly programming
* and BASIC for electro mechanical applications such as stepper motors, simple process control, buttons
- * and LED:s. Didact designs were marketed by Esselte Studium to the swedish schools. Late designs like the
- * "Modulab v2" appears to have been owned or licensed to Esselte and enhanced with more modular monitor routines
- * in a project driven by Alf Karlsson.
+ * and LED:s. Didact designs were marketed by Esselte Studium to the swedish schools.
*
* The Esselte 1000 was an educational package based on Apple II plus software and litterature
* but the relation to Didact is at this point unknown so it is probably a pure Esselte software production.
@@ -23,30 +21,28 @@
* http://elektronikforumet.com/forum/viewtopic.php?f=2&t=79576&start=150#p1203915
*
* TODO:
- * Didact designs: mp68a, md6802, Modulab
- * ------------------------------------------
- * - Add PCB layouts OK OK OK
- * - Dump ROM:s, OK OK OK
- * - Keyboard OK OK OK
- * - Display/CRT OK OK OK
- * - Clickable Artwork RQ RQ OK
+ * Didact designs: mp68a, md6802, Modulab, Esselte 100
+ * -------------------------------------------------------
+ * - Add PCB layouts OK OK OK
+ * - Dump ROM:s, OK OK rev2
+ * - Keyboard OK OK rev2
+ * - Display/CRT OK OK OK
+ * - Clickable Artwork RQ RQ
* - Sound NA NA
- * - Cassette i/f
+ * - Cassette i/f OK
* - Expansion bus
* - Expansion overlay
- * - Interrupts OK
- * - Serial XX
+ * - Interrupts OK OK
+ * - Serial XX XX
* XX = needs debug
- *********************************************/
+ ****************************************************************************/
#include "emu.h"
-#include "cpu/m6800/m6800.h" // For all boards
+#include "cpu/m6800/m6800.h" // For mp68a, md6802
#include "machine/6821pia.h" // For all boards
#include "machine/74145.h" // For the md6802
+#include "machine/timer.h"
#include "video/dm9368.h" // For the mp68a
-#include "machine/ins8154.h" // For the modulab
-#include "machine/mm74c922.h"// For the modulab
-#include "machine/rescap.h" // For the modulab
// Features
#include "imagedev/cassette.h"
@@ -56,25 +52,32 @@
// Generated artwork includes
#include "mp68a.lh"
#include "md6802.lh"
-#include "modulab.lh"
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG_SETUP (1U << 1)
-#define LOG_READ (1U << 2)
-#define LOG_DISPLAY (1U << 3)
-#define LOG_KEYBOARD (1U << 4)
+#define LOG_SETUP (1U << 1)
+#define LOG_SCAN (1U << 2)
+#define LOG_BANK (1U << 3)
+#define LOG_SCREEN (1U << 4)
+#define LOG_READ (1U << 5)
+#define LOG_CS (1U << 6)
+#define LOG_PLA (1U << 7)
+#define LOG_PROM (1U << 8)
-//#define VERBOSE (LOG_KEYBOARD)
+//#define VERBOSE (LOG_READ | LOG_GENERAL | LOG_SETUP | LOG_PLA | LOG_BANK)
//#define LOG_OUTPUT_FUNC printf
#include "logmacro.h"
-#define LOGSETUP(...) LOGMASKED(LOG_SETUP, __VA_ARGS__)
-#define LOGREAD(...) LOGMASKED(LOG_READ, __VA_ARGS__)
-#define LOGDISPLAY(...) LOGMASKED(LOG_DISPLAY, __VA_ARGS__)
-#define LOGKBD(...) LOGMASKED(LOG_KEYBOARD, __VA_ARGS__)
+#define LOGSETUP(...) LOGMASKED(LOG_SETUP, __VA_ARGS__)
+#define LOGSCAN(...) LOGMASKED(LOG_SCAN, __VA_ARGS__)
+#define LOGBANK(...) LOGMASKED(LOG_BANK, __VA_ARGS__)
+#define LOGSCREEN(...) LOGMASKED(LOG_SCREEN, __VA_ARGS__)
+#define LOGR(...) LOGMASKED(LOG_READ, __VA_ARGS__)
+#define LOGCS(...) LOGMASKED(LOG_CS, __VA_ARGS__)
+#define LOGPLA(...) LOGMASKED(LOG_PLA, __VA_ARGS__)
+#define LOGPROM(...) LOGMASKED(LOG_PROM, __VA_ARGS__)
#ifdef _MSC_VER
#define FUNCNAME __func__
@@ -86,7 +89,6 @@
#define PIA2_TAG "pia2"
#define PIA3_TAG "pia3"
#define PIA4_TAG "pia4"
-#define MM74C923_TAG "74c923"
/* Didact base class */
class didact_state : public driver_device
@@ -96,21 +98,23 @@ class didact_state : public driver_device
: driver_device(mconfig, type, tag)
, m_io_lines(*this, "LINE%u", 0U)
, m_lines{ 0, 0, 0, 0 }
+ , m_led(0)
, m_rs232(*this, "rs232")
- , m_led(*this, "led1")
+ , m_leds(*this, "led%u", 0U)
{ }
- DECLARE_INPUT_CHANGED_MEMBER(trigger_reset);
- DECLARE_INPUT_CHANGED_MEMBER(trigger_shift);
+ TIMER_DEVICE_CALLBACK_MEMBER(scan_artwork);
+
protected:
- virtual void machine_start() override { m_led.resolve(); }
+ virtual void machine_start() override { m_leds.resolve(); }
required_ioport_array<5> m_io_lines;
uint8_t m_lines[4];
uint8_t m_reset;
uint8_t m_shift;
+ uint8_t m_led;
optional_device<rs232_port_device> m_rs232;
- output_finder<> m_led;
+ output_finder<2> m_leds;
};
@@ -171,7 +175,7 @@ protected:
DECLARE_WRITE8_MEMBER( pia2_kbA_w );
DECLARE_READ8_MEMBER( pia2_kbB_r );
DECLARE_WRITE8_MEMBER( pia2_kbB_w );
- DECLARE_WRITE_LINE_MEMBER( pia2_ca2_w );
+ DECLARE_WRITE_LINE_MEMBER( pia2_ca2_w);
virtual void machine_reset() override;
virtual void machine_start() override;
@@ -208,7 +212,7 @@ READ8_MEMBER( md6802_state::pia2_kbA_r )
if (m_shift)
{
pa &= 0x7f; // Clear shift bit if button being pressed (PA7) to ground (internal pullup)
- LOGKBD("SHIFT is pressed\n");
+ LOG("SHIFT is pressed\n");
}
// Serial IN - needs debug/verification
@@ -247,8 +251,8 @@ WRITE8_MEMBER( md6802_state::pia2_kbB_w )
WRITE_LINE_MEMBER( md6802_state::pia2_ca2_w )
{
- LOGKBD("--->%s(%02x) LED is connected through resisitor to +5v so logical 0 will lit it\n", FUNCNAME, state);
- m_led = state ? 0 :1;
+ LOG("--->%s(%02x) LED is connected through resisitor to +5v so logical 0 will lit it\n", FUNCNAME, state);
+ m_leds[m_led] = state ? 0 :1;
// Serial Out - needs debug/verification
m_rs232->write_txd(state);
@@ -265,11 +269,13 @@ void md6802_state::machine_start()
save_item(NAME(m_reset));
save_item(NAME(m_shift));
+ save_item(NAME(m_led));
}
void md6802_state::machine_reset()
{
LOG("--->%s()\n", FUNCNAME);
+ m_led = 1;
m_maincpu->reset();
}
@@ -359,20 +365,6 @@ protected:
required_device<pia6820_device> m_pia2;
};
-INPUT_CHANGED_MEMBER(didact_state::trigger_shift)
-{
- if (newval == CLEAR_LINE)
- {
- LOGKBD("SHIFT is released\n");
- }
- else
- {
- LOGKBD("SHIFT is pressed\n");
- m_shift = 1;
- m_led = 1;
- }
-}
-
READ8_MEMBER( mp68a_state::pia2_kbA_r )
{
LOG("--->%s\n", FUNCNAME);
@@ -409,7 +401,7 @@ READ8_MEMBER( mp68a_state::pia2_kbB_r )
{
uint8_t a012, line, pb;
- LOGKBD("--->%s %02x %02x %02x %02x %02x => ", FUNCNAME, m_lines[0], m_lines[1], m_lines[2], m_lines[3], m_shift);
+ LOG("--->%s %02x %02x %02x %02x %02x => ", FUNCNAME, m_lines[0], m_lines[1], m_lines[2], m_lines[3], m_shift);
a012 = 0;
if ((line = (m_lines[0] | m_lines[1])) != 0)
@@ -430,11 +422,11 @@ READ8_MEMBER( mp68a_state::pia2_kbB_r )
{
pb |= 0x80; // Set shift bit (PB7)
m_shift = 0; // Reset flip flop
- m_led = 0;
- LOGKBD(" SHIFT is released\n");
+ m_leds[m_led] = m_shift ? 1 : 0;
+ LOG("SHIFT is released\n");
}
- LOGKBD("%02x\n", pb);
+ LOG("%02x\n", pb);
return pb;
}
@@ -449,8 +441,10 @@ READ_LINE_MEMBER( mp68a_state::pia2_cb1_r )
for (unsigned i = 0U; 4U > i; ++i)
m_lines[i] = m_io_lines[i]->read();
- if ((VERBOSE & LOG_GENERAL) && (m_lines[0] | m_lines[1] | m_lines[2] | m_lines[3]))
+#if VERBOSE
+ if (m_lines[0] | m_lines[1] | m_lines[2] | m_lines[3])
LOG("%s()-->%02x %02x %02x %02x\n", FUNCNAME, m_lines[0], m_lines[1], m_lines[2], m_lines[3]);
+#endif
return (m_lines[0] | m_lines[1] | m_lines[2] | m_lines[3]) ? 0 : 1;
}
@@ -470,6 +464,7 @@ void mp68a_state::machine_start()
/* register for state saving */
save_item(NAME(m_shift));
+ save_item(NAME(m_led));
save_item(NAME(m_reset));
}
@@ -483,213 +478,6 @@ void mp68a_state::mp68a_map(address_map &map)
map(0x0800, 0x0bff).rom().mirror(0xf400).region("maincpu", 0x0800);
}
-//===================
-
-/* The Modulab CPU board, by Didact/Esselte ca 1984
- * __________________________________________________________________________________________
- * | ADRESS DATA |
- * | PORT A +-_--++-_--++-_--++-_--+ +-_--++-_--+ VCC |
- * | o o o o o o o o || | ||| | ||| | ||| | | || | ||| | | O |
- * | 7 6 5 4 3 2 1 0 | - || - || - || - | | - || - | |
- * | o o o o o o o o ||_|.|||_|.|||_|.|||_|.| ||_|.|||_|.| GND |
- * | PORT B +----++----++----++----+ +----++----+ O |
- * | o VCC +--+ +--+ +--+ +--+ +--+ +--+ |
- * | |LS| |LS| |LS| |LS| |LS| |LS| |
- * | o GND |164 |164 |164 |164 |164 |164 |
- * \\ |-5|<-|-4|<-|-3|<-|-2| <- |-1|<-|-0|<- DB0 |
- * |\\ ____ +--+ +--+ +--+ +--+ +--+ +--+ |
- * | \/o O| +-------+-------+-------+-------+-------+
- * | | |E +--------------------+ +--+ | | | | | |
- * | | |X +----+ | PIA + 128x8 SRAM | |LS| | RUN | ADS | FWD | C/B | RESET |
- * | | |P |4MHz| | INS8154N | |14| | | | | | |
- * | | |A |XTAL| +--------------------+ | | +-------+-------+-------+-------+-------+
- * | | |N |____| +--+ | | | | | |
- * | |__ |S | | +--------------------+ +--+ | C | D | E | F | |
- * | __| |I | CPU | |LS| | | | | | |
- * | | |O | MC6802P | |138 +-------+-------+-------+-------+ |
- * | | |N +--------------------+ | | | | | | | |
- * | | |B +--+ | 8 | 9 | A | B | |
- * | | |U IRQ +-------------+ +--+ | | | | | |
- * | | |S o | EPROM | |74| +-------+-------+-------+-------+ |
- * | /\o O| | 2764 | |C | | | | | | |
- * |// ---- +-------------+ |923 | 4 | 5 | 6 | 7 | |
- * // +-----------+ | | | | | | | |
- * | | 2KB SRAM | +--+ +-------+-------+-------+-------+ |
- * | | 6116 | +--+ | | | | | |
- * | +-----------+ |LS| | 0 | 1 | 2 | 3 | |
- * | ESSELTE +-------+ +---+ +--------+ |138 | | | | | |
- * | STUDIUM |74LS123| |TRM| |SN74367 | | | +-------+-------+-------+-------+ |
- * | +-------+ +---+ +--------+ +--+
- * |__________________________________________________________________________________________|
- *
- */
-
-/* Didact modulab driver class */
-class modulab_state : public didact_state
-{
- public:
- modulab_state(const machine_config &mconfig, device_type type, const char * tag)
- : didact_state(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_7segs(*this, "digit%u", 0U)
- , m_pia1(*this, PIA1_TAG)
- , m_kb(*this, MM74C923_TAG)
- , m_da(0)
- { }
-
- required_device<m6802_cpu_device> m_maincpu;
-
- output_finder<6> m_7segs;
-
- virtual void machine_reset() override;
- virtual void machine_start() override;
- void modulab(machine_config &config);
-protected:
- DECLARE_READ8_MEMBER( io_r );
- DECLARE_WRITE8_MEMBER( io_w );
- DECLARE_WRITE_LINE_MEMBER( da_w );
-private:
- void modulab_map(address_map &map);
- // Offsets for display and keyboard i/o
- enum
- {
- DISPLAY = 0,
- KEY_DATA = 2,
- KEY_STROBE = 3
- };
-
- // Simple emulation of 6 cascaded 74164 that drives the AAAADD BCD display elements, right to left
- class shift8
- {
- public:
- shift8(){ byte = 0; }
- void shiftIn(uint8_t in){ byte = ((byte << 1) & 0xfe) | (in & 1 ? 1 : 0); }
- uint8_t byte;
- };
- shift8 m_74164[6];
-
- required_device<ins8154_device> m_pia1;
- required_device<mm74c922_device> m_kb;
- uint8_t m_da;
-};
-
-WRITE_LINE_MEMBER( modulab_state::da_w )
-{
- LOG("--->%s()\n", FUNCNAME);
- m_da = state == CLEAR_LINE ? 0 : 1; // Capture data available signal
-}
-
-READ8_MEMBER(modulab_state::io_r)
-{
- switch (offset)
- {
- case 3: // Poll Data available signal
- return m_da & 0x01; // Data Available signal gated by an 8097 hexbuffer to DB0
- break;
- case 2:
- LOG("--->%s Read Keyboard @ %04x\n", FUNCNAME, offset);
- return m_kb->read();
- break;
- default:
- LOG("--->%s BAD access @ %04x\n", FUNCNAME, offset);
- break;
- }
- return 0;
-}
-
-WRITE8_MEMBER(modulab_state::io_w)
-{
- LOG("--->%s()\n", FUNCNAME);
- uint8_t b = data & 1;
- switch (offset)
- {
- case DISPLAY:
- // Update the BCD elements with a data bit b shifted in right to left, CS is used as clock for all 164's
- for (int i = 0; i < 6; i++)
- {
- uint8_t c = (m_74164[i].byte & 0x80) ? 1 : 0; // Bit 7 is connected to the next BCD right to left
- m_74164[i].shiftIn(b);
- m_7segs[i] = ~m_74164[i].byte & 0x7f; // Bit 0 to 6 drives the 7 seg display
- b = c; // bit 7 prior shift will be shifted in next (simultaneous in real life)
- }
- LOGDISPLAY("Shifted: %02x %02x %02x %02x %02x %02x\n",
- ~m_74164[0].byte & 0x7f, ~m_74164[1].byte & 0x7f, ~m_74164[2].byte & 0x7f,
- ~m_74164[3].byte & 0x7f, ~m_74164[4].byte & 0x7f, ~m_74164[5].byte & 0x7f);
- break;
- default:
- break;
- };
-}
-
-void modulab_state::machine_reset()
-{
- LOG("--->%s()\n", FUNCNAME);
-
- m_maincpu->reset();
-}
-
-void modulab_state::machine_start()
-{
- LOG("--->%s()\n", FUNCNAME);
-
- didact_state::machine_start();
- m_7segs.resolve();
-
- /* register for state saving */
- save_item(NAME(m_shift));
- save_item(NAME(m_reset));
-}
-
-// This address map is traced from pcb
-void modulab_state::modulab_map(address_map &map)
-{
- //map(0x0000, 0x007f).ram() // Schematics holds RAM enable low so that the M6802 internal RAM is disabled.
- map(0x0000, 0x03ff).ram().mirror(0xe000); // RAM0 always present 2114
- map(0x0400, 0x07ff).ram().mirror(0xe000); // RAM1 optional 2114
- // map(0x0800, 0x13ff).ram().mirror(0xe000); // expansion port area consisting of 3 chip selects each selecting 0x3ff byte addresses
- map(0x1400, 0x17ff).rom().mirror(0xe000).region("maincpu", 0x0000);
- map(0x1800, 0x187f).rw(FUNC(modulab_state::io_r), FUNC(modulab_state::io_w)).mirror(0xe200);
- map(0x1900, 0x197f).rw(m_pia1, FUNC(ins8154_device::read_io), FUNC(ins8154_device::write_io)).mirror(0xe200);
- map(0x1980, 0x19ff).rw(m_pia1, FUNC(ins8154_device::read_ram), FUNC(ins8154_device::write_ram)).mirror(0xe200);
- map(0x1c00, 0x1fff).rom().mirror(0xe000).region("maincpu", 0x0400);
-}
-
-//===================
-
-static INPUT_PORTS_START( modulab )
- PORT_START("LINE0") // X1
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CHAR('0')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_CHAR('8')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('C')
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RUN") PORT_CODE(KEYCODE_R) PORT_CHAR('R')
-
- PORT_START("LINE1") // X2
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CHAR('1')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CHAR('9')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('D')
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ADS") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
-
- PORT_START("LINE2") // X3
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CHAR('6')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('A')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('E')
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("FWD") PORT_CODE(KEYCODE_W) PORT_CHAR('W')
-
- PORT_START("LINE3") // X4
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_CHAR('7')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('B')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('F')
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("C/B") PORT_CODE(KEYCODE_X) PORT_CHAR('X')
-
- PORT_START("LINE4") /* Special KEY ROW for reset key */
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Reset") PORT_CODE(KEYCODE_F12) PORT_CHANGED_MEMBER(DEVICE_SELF, modulab_state, trigger_reset, nullptr)
- PORT_BIT(0xfb, 0x00, IPT_UNUSED )
-INPUT_PORTS_END
-
static INPUT_PORTS_START( md6802 )
PORT_START("LINE0") /* KEY ROW 0 */
PORT_BIT(0x01, 0x01, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
@@ -720,8 +508,8 @@ static INPUT_PORTS_START( md6802 )
PORT_BIT(0xf0, 0x00, IPT_UNUSED )
PORT_START("LINE4") /* Special KEY ROW for reset and Shift/'*' keys */
- PORT_BIT(0x08, 0x00, IPT_KEYBOARD) PORT_NAME("*") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR('*') PORT_CHANGED_MEMBER(DEVICE_SELF, md6802_state, trigger_shift, nullptr)
- PORT_BIT(0x04, 0x00, IPT_KEYBOARD) PORT_NAME("Reset") PORT_CODE(KEYCODE_F12) PORT_CHANGED_MEMBER(DEVICE_SELF, md6802_state, trigger_reset, nullptr)
+ PORT_BIT(0x08, 0x00, IPT_KEYBOARD) PORT_NAME("*") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR('*')
+ PORT_BIT(0x04, 0x00, IPT_KEYBOARD) PORT_NAME("Reset") PORT_CODE(KEYCODE_F12)
PORT_BIT(0xf3, 0x00, IPT_UNUSED )
INPUT_PORTS_END
@@ -754,53 +542,48 @@ static INPUT_PORTS_START( mp68a )
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3')
PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_START("LINE4") /* Special KEY ROW for reset and Shift/'*' keys, they are hard wired */
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("*") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR('*') PORT_CHANGED_MEMBER(DEVICE_SELF, mp68a_state, trigger_shift, nullptr)
- //PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Reset") PORT_CODE(KEYCODE_F12)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Reset") PORT_CODE(KEYCODE_F12) PORT_CHANGED_MEMBER(DEVICE_SELF, mp68a_state, trigger_reset, nullptr)
+ PORT_START("LINE4") /* Special KEY ROW for reset and Shift/'*' keys */
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("*") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR('*')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Reset") PORT_CODE(KEYCODE_F12)
PORT_BIT(0xf3, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
-INPUT_CHANGED_MEMBER(didact_state::trigger_reset)
+// TODO: Fix shift led for mp68a correctly, workaround doesn't work anymore! Shift works though...
+TIMER_DEVICE_CALLBACK_MEMBER(didact_state::scan_artwork)
{
- if (newval == CLEAR_LINE)
+ // LOG("--->%s()\n", FUNCNAME);
+
+ // Poll the artwork Reset key
+ if (m_io_lines[4]->read() & 0x04)
{
- LOGKBD("RESET is released, resetting the CPU\n");
- machine_reset();
+ LOG("RESET is pressed, resetting the CPU\n");
m_shift = 0;
- m_led = 0;
+ m_leds[m_led] = m_shift ? 1 : 0; // For mp68a only
+ if (m_reset == 0)
+ {
+ machine_reset();
+ }
+ m_reset = 1; // Inhibit multiple resets
+ }
+ else if (m_io_lines[4]->read() & 0x08)
+ {
+ // Poll the artwork SHIFT/* key
+ LOG("%s", !m_shift ? "SHIFT is set\n" : "");
+ m_shift = 1;
+ m_leds[m_led] = m_shift ? 1 : 0; // For mp68a only
+ }
+ else
+ {
+ if (m_reset == 1)
+ {
+ m_reset = 0; // Enable reset again
+ }
}
}
-
-void modulab_state::modulab(machine_config &config)
-{
- M6802(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &modulab_state::modulab_map);
- config.set_default_layout(layout_modulab);
-
- /* Devices */
- MM74C923(config, m_kb, 0);
- m_kb->set_cap_osc(CAP_U(0.10));
- m_kb->set_cap_debounce(CAP_U(1));
- m_kb->da_wr_callback().set(FUNC(modulab_state::da_w));
- m_kb->x1_rd_callback().set_ioport("LINE0");
- m_kb->x2_rd_callback().set_ioport("LINE1");
- m_kb->x3_rd_callback().set_ioport("LINE2");
- m_kb->x4_rd_callback().set_ioport("LINE3");
-
- /* PIA #1 0x????-0x??? - */
- INS8154(config, m_pia1);
- //m_ins8154->in_a().set(FUNC(modulab_state::ins8154_pa_r));
- //m_ins8154->out_a().set(FUNC(modulab_state::ins8154_pa_w));
-
- //RS232_PORT(config, m_rs232, default_rs232_devices, nullptr);
-}
-
-void md6802_state::md6802(machine_config &config)
-{
- M6802(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &md6802_state::md6802_map);
+MACHINE_CONFIG_START(md6802_state::md6802)
+ MCFG_DEVICE_ADD("maincpu", M6802, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(md6802_map)
config.set_default_layout(layout_md6802);
/* Devices */
@@ -827,15 +610,16 @@ void md6802_state::md6802(machine_config &config)
m_pia2->readpb_handler().set(FUNC(md6802_state::pia2_kbB_r));
m_pia2->ca2_handler().set(FUNC(md6802_state::pia2_ca2_w));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", md6802_state, scan_artwork, attotime::from_hz(10))
+
RS232_PORT(config, m_rs232, default_rs232_devices, nullptr);
-}
+MACHINE_CONFIG_END
-void mp68a_state::mp68a(machine_config &config)
-{
+MACHINE_CONFIG_START(mp68a_state::mp68a)
// Clock source is based on a N9602N Dual Retriggerable Resettable Monostable Multivibrator oscillator at aprox 505KHz.
// Trimpot seems broken/stuck at 5K Ohm thu. ROM code 1Ms delay loops suggest 1MHz+
- M6800(config, m_maincpu, 505000);
- m_maincpu->set_addrmap(AS_PROGRAM, &mp68a_state::mp68a_map);
+ MCFG_DEVICE_ADD("maincpu", M6800, 505000)
+ MCFG_DEVICE_PROGRAM_MAP(mp68a_map)
config.set_default_layout(layout_mp68a);
/* Devices */
@@ -876,27 +660,21 @@ void mp68a_state::mp68a(machine_config &config)
/* 0x086B 0x600 (Port A) = 0x70 */
/* 0x086B 0x600 (Port A) = 0x50 */
/* 0x086B 0x600 (Port A) = 0x70 */
- DM9368(config, m_digits[0], 0).update_cb().set(FUNC(mp68a_state::digit_w<0>));
- DM9368(config, m_digits[1], 0).update_cb().set(FUNC(mp68a_state::digit_w<1>));
- DM9368(config, m_digits[2], 0).update_cb().set(FUNC(mp68a_state::digit_w<2>));
- DM9368(config, m_digits[3], 0).update_cb().set(FUNC(mp68a_state::digit_w<3>));
- DM9368(config, m_digits[4], 0).update_cb().set(FUNC(mp68a_state::digit_w<4>));
- DM9368(config, m_digits[5], 0).update_cb().set(FUNC(mp68a_state::digit_w<5>));
-}
-
-ROM_START( modulab )
- ROM_REGION(0x10000, "maincpu", 0)
- ROM_DEFAULT_BIOS("modulabvl")
-
- ROM_SYSTEM_BIOS(0, "modulabv1", "Modulab Version 1")
- ROMX_LOAD( "mlab1_00.bin", 0x0000, 0x0800, NO_DUMP, ROM_BIOS(0) )
-
- ROM_SYSTEM_BIOS(1, "modulabv2", "Modulab Version 2")
- ROMX_LOAD( "mlab2_00.bin", 0x0000, 0x0800, NO_DUMP, ROM_BIOS(1) )
-
- ROM_SYSTEM_BIOS(2, "modulabvl", "Modulab Prototype")
- ROMX_LOAD( "modulab_levererad.bin", 0x0000, 0x0800, CRC(40774ef4) SHA1(9cf188342993fbcff13dbbecc62d1ee49010d6f4), ROM_BIOS(2) )
-ROM_END
+ MCFG_DEVICE_ADD("digit0", DM9368, 0)
+ MCFG_DM9368_UPDATE_CALLBACK(WRITE8(*this, mp68a_state, digit_w<0>))
+ MCFG_DEVICE_ADD("digit1", DM9368, 0)
+ MCFG_DM9368_UPDATE_CALLBACK(WRITE8(*this, mp68a_state, digit_w<1>))
+ MCFG_DEVICE_ADD("digit2", DM9368, 0)
+ MCFG_DM9368_UPDATE_CALLBACK(WRITE8(*this, mp68a_state, digit_w<2>))
+ MCFG_DEVICE_ADD("digit3", DM9368, 0)
+ MCFG_DM9368_UPDATE_CALLBACK(WRITE8(*this, mp68a_state, digit_w<3>))
+ MCFG_DEVICE_ADD("digit4", DM9368, 0)
+ MCFG_DM9368_UPDATE_CALLBACK(WRITE8(*this, mp68a_state, digit_w<4>))
+ MCFG_DEVICE_ADD("digit5", DM9368, 0)
+ MCFG_DM9368_UPDATE_CALLBACK(WRITE8(*this, mp68a_state, digit_w<5>))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", mp68a_state, scan_artwork, attotime::from_hz(10))
+MACHINE_CONFIG_END
// TODO split ROM image into proper ROM set
ROM_START( md6802 ) // ROM image from http://elektronikforumet.com/forum/viewtopic.php?f=2&t=79576&start=135#p1203640
@@ -910,7 +688,6 @@ ROM_START( mp68a ) // ROM image from http://elektronikforumet.com/forum/viewtopi
ROM_LOAD( "didactb.bin", 0x0a00, 0x0200, CRC(592898dc) SHA1(2962f4817712cae97f3ab37b088fc73e66535ff8) )
ROM_END
-// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP( 1979, mp68a, 0, 0, mp68a, mp68a, mp68a_state, empty_init, "Didact AB", "mp68a", MACHINE_NO_SOUND_HW )
-COMP( 1983, md6802, 0, 0, md6802, md6802, md6802_state, empty_init, "Didact AB", "Mikrodator 6802", MACHINE_NO_SOUND_HW )
-COMP( 1984, modulab, 0, 0, modulab, modulab, modulab_state, empty_init, "Esselte Studium AB", "Modulab", MACHINE_NO_SOUND_HW )
+// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
+COMP( 1979, mp68a, 0, 0, mp68a, mp68a, mp68a_state, empty_init, "Didact AB", "mp68a", MACHINE_NO_SOUND_HW )
+COMP( 1983, md6802, 0, 0, md6802, md6802, md6802_state, empty_init, "Didact AB", "Mikrodator 6802", MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/dietgo.cpp b/src/mame/drivers/dietgo.cpp
index 12cfb54fb7a..12c462f31dc 100644
--- a/src/mame/drivers/dietgo.cpp
+++ b/src/mame/drivers/dietgo.cpp
@@ -205,30 +205,30 @@ DECO16IC_BANK_CB_MEMBER(dietgo_state::bank_callback)
return (bank & 0x70) << 8;
}
-void dietgo_state::dietgo(machine_config &config)
-{
+MACHINE_CONFIG_START(dietgo_state::dietgo)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(28'000'000)/2); /* DE102 (verified on pcb) */
- m_maincpu->set_addrmap(AS_PROGRAM, &dietgo_state::dietgo_map);
- m_maincpu->set_addrmap(AS_OPCODES, &dietgo_state::decrypted_opcodes_map);
- m_maincpu->set_vblank_int("screen", FUNC(dietgo_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(28'000'000)/2) /* DE102 (verified on pcb) */
+ MCFG_DEVICE_PROGRAM_MAP(dietgo_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dietgo_state, irq6_line_hold)
H6280(config, m_audiocpu, XTAL(32'220'000)/4/3); /* Custom chip 45; XIN is 32.220MHZ/4, verified on pcb */
m_audiocpu->set_addrmap(AS_PROGRAM, &dietgo_state::sound_map);
m_audiocpu->add_route(ALL_OUTPUTS, "mono", 0); // internal sound unused
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(dietgo_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(dietgo_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xBGR_888, 1024);
- GFXDECODE(config, "gfxdecode", "palette", gfx_dietgo);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dietgo)
DECO16IC(config, m_deco_tilegen, 0);
m_deco_tilegen->set_split(0);
@@ -265,8 +265,9 @@ void dietgo_state::dietgo(machine_config &config)
ymsnd.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.45);
- OKIM6295(config, "oki", XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60); /* verified on pcb */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+MACHINE_CONFIG_END
/* Diet Go Go */
diff --git a/src/mame/drivers/digel804.cpp b/src/mame/drivers/digel804.cpp
index 254f36741dc..c9ea5eff85c 100644
--- a/src/mame/drivers/digel804.cpp
+++ b/src/mame/drivers/digel804.cpp
@@ -424,44 +424,44 @@ INPUT_CHANGED_MEMBER( digel804_state::mode_change )
/* ACIA Trampolines */
READ8_MEMBER( digel804_state::acia_rxd_r )
{
- return m_acia->read(0);
+ return m_acia->read(space, 0);
}
WRITE8_MEMBER( digel804_state::acia_txd_w )
{
- m_acia->write(0, data);
+ m_acia->write(space, 0, data);
}
READ8_MEMBER( digel804_state::acia_status_r )
{
- return m_acia->read(1);
+ return m_acia->read(space, 1);
}
WRITE8_MEMBER( digel804_state::acia_reset_w )
{
- m_acia->write(1, data);
+ m_acia->write(space, 1, data);
}
READ8_MEMBER( digel804_state::acia_command_r )
{
- return m_acia->read(2);
+ return m_acia->read(space, 2);
}
WRITE8_MEMBER( digel804_state::acia_command_w )
{
data |= 0x08; // HACK for ep804 remote mode
- m_acia->write(2, data);
+ m_acia->write(space, 2, data);
}
READ8_MEMBER( digel804_state::acia_control_r )
{
- return m_acia->read(3);
+ return m_acia->read(space, 3);
}
WRITE8_MEMBER( digel804_state::acia_control_w )
{
- m_acia->write(3, data);
+ m_acia->write(space, 3, data);
}
@@ -631,25 +631,24 @@ WRITE_LINE_MEMBER( ep804_state::ep804_acia_irq_w )
{
}
-void digel804_state::digel804(machine_config &config)
-{
+MACHINE_CONFIG_START(digel804_state::digel804)
/* basic machine hardware */
- Z80(config, m_maincpu, 3.6864_MHz_XTAL/2); /* Z80A, X1(aka E0 on schematics): 3.6864Mhz */
- m_maincpu->set_addrmap(AS_PROGRAM, &digel804_state::z80_mem_804_1_4);
- m_maincpu->set_addrmap(AS_IO, &digel804_state::z80_io_1_4);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD(m_maincpu, Z80, 3.6864_MHz_XTAL/2) /* Z80A, X1(aka E0 on schematics): 3.6864Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(z80_mem_804_1_4)
+ MCFG_DEVICE_IO_MAP(z80_io_1_4)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
ROC10937(config, m_vfd); // RIGHT_TO_LEFT
/* video hardware */
config.set_default_layout(layout_digel804);
- MM74C923(config, m_kb, 0);
- m_kb->da_wr_callback().set(FUNC(digel804_state::da_w));
- m_kb->x1_rd_callback().set_ioport("LINE0");
- m_kb->x2_rd_callback().set_ioport("LINE1");
- m_kb->x3_rd_callback().set_ioport("LINE2");
- m_kb->x4_rd_callback().set_ioport("LINE3");
+ MCFG_DEVICE_ADD("74c923", MM74C923, 0)
+ MCFG_MM74C922_DA_CALLBACK(WRITELINE(*this, digel804_state, da_w))
+ MCFG_MM74C922_X1_CALLBACK(IOPORT("LINE0"))
+ MCFG_MM74C922_X2_CALLBACK(IOPORT("LINE1"))
+ MCFG_MM74C922_X3_CALLBACK(IOPORT("LINE2"))
+ MCFG_MM74C922_X4_CALLBACK(IOPORT("LINE3"))
/* acia */
MOS6551(config, m_acia, 0);
@@ -670,8 +669,9 @@ void digel804_state::digel804(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
void ep804_state::ep804(machine_config &config)
{
diff --git a/src/mame/drivers/digijet.cpp b/src/mame/drivers/digijet.cpp
index f7644ae3353..21da2bc0113 100644
--- a/src/mame/drivers/digijet.cpp
+++ b/src/mame/drivers/digijet.cpp
@@ -50,12 +50,11 @@ void digijet_state::io_map(address_map &map)
static INPUT_PORTS_START( digijet )
INPUT_PORTS_END
-void digijet_state::digijet(machine_config &config)
-{
+MACHINE_CONFIG_START(digijet_state::digijet)
/* basic machine hardware */
- I8049(config, m_maincpu, XTAL(11'000'000));
- m_maincpu->set_addrmap(AS_IO, &digijet_state::io_map);
-}
+ MCFG_DEVICE_ADD(I8049_TAG, I8049, XTAL(11'000'000))
+ MCFG_DEVICE_IO_MAP(io_map)
+MACHINE_CONFIG_END
ROM_START( digijet )
ROM_REGION( 0x800, I8049_TAG, 0 )
diff --git a/src/mame/drivers/dim68k.cpp b/src/mame/drivers/dim68k.cpp
index ab51d8c4d88..52476842985 100644
--- a/src/mame/drivers/dim68k.cpp
+++ b/src/mame/drivers/dim68k.cpp
@@ -311,30 +311,30 @@ void dim68k_state::kbd_put(u8 data)
m_term_data = data;
}
-void dim68k_state::dim68k(machine_config &config)
-{
+MACHINE_CONFIG_START(dim68k_state::dim68k)
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(10'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &dim68k_state::dim68k_mem);
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(10'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(dim68k_mem)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 250-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 250-1)
PALETTE(config, m_palette, palette_device::MONOCHROME);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_dim68k);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dim68k)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
UPD765A(config, "fdc", 8'000'000, true, true); // these options unknown
- FLOPPY_CONNECTOR(config, "fdc:0", dim68k_floppies, "525hd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", dim68k_floppies, "525hd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", dim68k_floppies, "525hd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", dim68k_floppies, "525hd", floppy_image_device::default_floppy_formats)
MC6845(config, m_crtc, 1790000);
m_crtc->set_screen("screen");
@@ -346,8 +346,8 @@ void dim68k_state::dim68k(machine_config &config)
keyboard.set_keyboard_callback(FUNC(dim68k_state::kbd_put));
// software lists
- SOFTWARE_LIST(config, "flop_list").set_original("dim68k");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "dim68k")
+MACHINE_CONFIG_END
/*
68000
diff --git a/src/mame/drivers/discoboy.cpp b/src/mame/drivers/discoboy.cpp
index c351b4cc56c..de5bc4d40f9 100644
--- a/src/mame/drivers/discoboy.cpp
+++ b/src/mame/drivers/discoboy.cpp
@@ -456,30 +456,31 @@ WRITE_LINE_MEMBER(discoboy_state::yunsung8_adpcm_int)
m_audiocpu->set_input_line(INPUT_LINE_NMI, m_toggle);
}
-void discoboy_state::discoboy(machine_config &config)
-{
+MACHINE_CONFIG_START(discoboy_state::discoboy)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/2); /* 6 MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &discoboy_state::discoboy_map);
- m_maincpu->set_addrmap(AS_IO, &discoboy_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(discoboy_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* 6 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(discoboy_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", discoboy_state, irq0_line_hold)
- Z80(config, m_audiocpu, XTAL(10'000'000)/2); /* 5 MHz? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &discoboy_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(10'000'000)/2) /* 5 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
ADDRESS_MAP_BANK(config, "rambank1").set_map(&discoboy_state::rambank1_map).set_options(ENDIANNESS_BIG, 8, 13, 0x800);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(8*8, 512-1-8*8, 0+8, 256-1-8);
- screen.set_screen_update(FUNC(discoboy_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, 512-1-8*8, 0+8, 256-1-8)
+ MCFG_SCREEN_UPDATE_DRIVER(discoboy_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_discoboy)
+ MCFG_PALETTE_ADD("palette", 0x1000)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_discoboy);
- PALETTE(config, m_palette).set_entries(0x1000);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -488,19 +489,19 @@ void discoboy_state::discoboy(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
- ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(10'000'000)/4)); /* 2.5 MHz? */
- ymsnd.add_route(ALL_OUTPUTS, "lspeaker", 0.6);
- ymsnd.add_route(ALL_OUTPUTS, "rspeaker", 0.6);
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(10'000'000)/4) /* 2.5 MHz? */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.6)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.6)
LS157(config, m_adpcm_select, 0);
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
- MSM5205(config, m_msm, XTAL(400'000));
- m_msm->vck_legacy_callback().set(FUNC(discoboy_state::yunsung8_adpcm_int)); /* interrupt function */
- m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz, 4 Bits */
- m_msm->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
- m_msm->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, XTAL(400'000))
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, discoboy_state, yunsung8_adpcm_int)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz, 4 Bits */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
+MACHINE_CONFIG_END
ROM_START( discoboy )
diff --git a/src/mame/drivers/divebomb.cpp b/src/mame/drivers/divebomb.cpp
index c33052b34a1..842a7cb903a 100644
--- a/src/mame/drivers/divebomb.cpp
+++ b/src/mame/drivers/divebomb.cpp
@@ -114,12 +114,12 @@ void divebomb_state::divebomb_fgcpu_map(address_map &map)
void divebomb_state::divebomb_fgcpu_iomap(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).w("sn0", FUNC(sn76489_device::write));
- map(0x01, 0x01).w("sn1", FUNC(sn76489_device::write));
- map(0x02, 0x02).w("sn2", FUNC(sn76489_device::write));
- map(0x03, 0x03).w("sn3", FUNC(sn76489_device::write));
- map(0x04, 0x04).w("sn4", FUNC(sn76489_device::write));
- map(0x05, 0x05).w("sn5", FUNC(sn76489_device::write));
+ map(0x00, 0x00).w("sn0", FUNC(sn76489_device::command_w));
+ map(0x01, 0x01).w("sn1", FUNC(sn76489_device::command_w));
+ map(0x02, 0x02).w("sn2", FUNC(sn76489_device::command_w));
+ map(0x03, 0x03).w("sn3", FUNC(sn76489_device::command_w));
+ map(0x04, 0x04).w("sn4", FUNC(sn76489_device::command_w));
+ map(0x05, 0x05).w("sn5", FUNC(sn76489_device::command_w));
map(0x10, 0x10).r(m_roz2fg_latch, FUNC(generic_latch_8_device::read)).w("fg2roz", FUNC(generic_latch_8_device::write));
map(0x20, 0x20).r(m_spr2fg_latch, FUNC(generic_latch_8_device::read)).w("fg2spr", FUNC(generic_latch_8_device::write));
map(0x30, 0x30).portr("IN0");
@@ -386,23 +386,24 @@ GFXDECODE_END
*
*************************************/
-void divebomb_state::divebomb(machine_config &config)
-{
- Z80(config, m_fgcpu, XTAL1/4); // ?
- m_fgcpu->set_addrmap(AS_PROGRAM, &divebomb_state::divebomb_fgcpu_map);
- m_fgcpu->set_addrmap(AS_IO, &divebomb_state::divebomb_fgcpu_iomap);
+MACHINE_CONFIG_START(divebomb_state::divebomb)
+
+ MCFG_DEVICE_ADD("fgcpu", Z80,XTAL1/4) // ?
+ MCFG_DEVICE_PROGRAM_MAP(divebomb_fgcpu_map)
+ MCFG_DEVICE_IO_MAP(divebomb_fgcpu_iomap)
- Z80(config, m_spritecpu, XTAL1/4); // ?
- m_spritecpu->set_addrmap(AS_PROGRAM, &divebomb_state::divebomb_spritecpu_map);
- m_spritecpu->set_addrmap(AS_IO, &divebomb_state::divebomb_spritecpu_iomap);
+ MCFG_DEVICE_ADD("spritecpu", Z80,XTAL1/4) // ?
+ MCFG_DEVICE_PROGRAM_MAP(divebomb_spritecpu_map)
+ MCFG_DEVICE_IO_MAP(divebomb_spritecpu_iomap)
- Z80(config, m_rozcpu, XTAL1/4); // ?
- m_rozcpu->set_addrmap(AS_PROGRAM, &divebomb_state::divebomb_rozcpu_map);
- m_rozcpu->set_addrmap(AS_IO, &divebomb_state::divebomb_rozcpu_iomap);
+ MCFG_DEVICE_ADD("rozcpu", Z80,XTAL1/4) // ?
+ MCFG_DEVICE_PROGRAM_MAP(divebomb_rozcpu_map)
+ MCFG_DEVICE_IO_MAP(divebomb_rozcpu_iomap)
- config.m_perfect_cpu_quantum = subtag("fgcpu");
+ MCFG_QUANTUM_PERFECT_CPU("fgcpu")
- INPUT_MERGER_ANY_HIGH(config, m_fgcpu_irq).output_handler().set_inputline(m_fgcpu, INPUT_LINE_IRQ0);
+ MCFG_INPUT_MERGER_ANY_HIGH("fgcpu_irq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("fgcpu", INPUT_LINE_IRQ0))
GENERIC_LATCH_8(config, "fg2spr").data_pending_callback().set_inputline(m_spritecpu, INPUT_LINE_IRQ0);
@@ -452,13 +453,19 @@ void divebomb_state::divebomb(machine_config &config)
SPEAKER(config, "mono").front_center();
// All frequencies unverified
- SN76489(config, "sn0", XTAL1/8).add_route(ALL_OUTPUTS, "mono", 0.15);
- SN76489(config, "sn1", XTAL1/8).add_route(ALL_OUTPUTS, "mono", 0.15);
- SN76489(config, "sn2", XTAL1/8).add_route(ALL_OUTPUTS, "mono", 0.15);
- SN76489(config, "sn3", XTAL1/8).add_route(ALL_OUTPUTS, "mono", 0.15);
- SN76489(config, "sn4", XTAL1/8).add_route(ALL_OUTPUTS, "mono", 0.15);
- SN76489(config, "sn5", XTAL1/8).add_route(ALL_OUTPUTS, "mono", 0.15);
-}
+ MCFG_DEVICE_ADD("sn0", SN76489, XTAL1/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
+ MCFG_DEVICE_ADD("sn1", SN76489, XTAL1/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
+ MCFG_DEVICE_ADD("sn2", SN76489, XTAL1/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
+ MCFG_DEVICE_ADD("sn3", SN76489, XTAL1/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
+ MCFG_DEVICE_ADD("sn4", SN76489, XTAL1/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
+ MCFG_DEVICE_ADD("sn5", SN76489, XTAL1/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/diverboy.cpp b/src/mame/drivers/diverboy.cpp
index 63f3eafefec..4305aaa37e1 100644
--- a/src/mame/drivers/diverboy.cpp
+++ b/src/mame/drivers/diverboy.cpp
@@ -274,25 +274,25 @@ void diverboy_state::machine_start()
{
}
-void diverboy_state::diverboy(machine_config &config)
-{
- M68000(config, m_maincpu, 12000000); /* guess */
- m_maincpu->set_addrmap(AS_PROGRAM, &diverboy_state::diverboy_map);
- m_maincpu->set_vblank_int("screen", FUNC(diverboy_state::irq6_line_hold));
+MACHINE_CONFIG_START(diverboy_state::diverboy)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000) /* guess */
+ MCFG_DEVICE_PROGRAM_MAP(diverboy_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", diverboy_state, irq6_line_hold)
- Z80(config, m_audiocpu, 4000000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &diverboy_state::snd_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(snd_map)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_diverboy);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_diverboy)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(0*8+4, 40*8+1, 2*8, 32*8-1);
- m_screen->set_screen_update(FUNC(diverboy_state::screen_update_diverboy));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8+4, 40*8+1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(diverboy_state, screen_update_diverboy)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 0x400);
@@ -301,8 +301,9 @@ void diverboy_state::diverboy(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- OKIM6295(config, m_oki, 1320000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.50); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1320000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/djboy.cpp b/src/mame/drivers/djboy.cpp
index 23b4ea2caf6..0387de96fe4 100644
--- a/src/mame/drivers/djboy.cpp
+++ b/src/mame/drivers/djboy.cpp
@@ -478,22 +478,22 @@ void djboy_state::machine_reset()
m_scrolly = 0;
}
-void djboy_state::djboy(machine_config &config)
-{
- Z80(config, m_mastercpu, 12_MHz_XTAL / 2); // 6.000MHz, verified
- m_mastercpu->set_addrmap(AS_PROGRAM, &djboy_state::mastercpu_am);
- m_mastercpu->set_addrmap(AS_IO, &djboy_state::mastercpu_port_am);
- TIMER(config, "scantimer").configure_scanline(FUNC(djboy_state::djboy_scanline), "screen", 0, 1);
+MACHINE_CONFIG_START(djboy_state::djboy)
+
+ MCFG_DEVICE_ADD("mastercpu", Z80, 12_MHz_XTAL / 2) // 6.000MHz, verified
+ MCFG_DEVICE_PROGRAM_MAP(mastercpu_am)
+ MCFG_DEVICE_IO_MAP(mastercpu_port_am)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", djboy_state, djboy_scanline, "screen", 0, 1)
- Z80(config, m_slavecpu, 12_MHz_XTAL / 2); // 6.000MHz, verified
- m_slavecpu->set_addrmap(AS_PROGRAM, &djboy_state::slavecpu_am);
- m_slavecpu->set_addrmap(AS_IO, &djboy_state::slavecpu_port_am);
- m_slavecpu->set_vblank_int("screen", FUNC(djboy_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("slavecpu", Z80, 12_MHz_XTAL / 2) // 6.000MHz, verified
+ MCFG_DEVICE_PROGRAM_MAP(slavecpu_am)
+ MCFG_DEVICE_IO_MAP(slavecpu_port_am)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", djboy_state, irq0_line_hold)
- Z80(config, m_soundcpu, 12_MHz_XTAL / 2); // 6.000MHz, verified
- m_soundcpu->set_addrmap(AS_PROGRAM, &djboy_state::soundcpu_am);
- m_soundcpu->set_addrmap(AS_IO, &djboy_state::soundcpu_port_am);
- m_soundcpu->set_vblank_int("screen", FUNC(djboy_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("soundcpu", Z80, 12_MHz_XTAL / 2) // 6.000MHz, verified
+ MCFG_DEVICE_PROGRAM_MAP(soundcpu_am)
+ MCFG_DEVICE_IO_MAP(soundcpu_port_am)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", djboy_state, irq0_line_hold)
I80C51(config, m_beast, 12_MHz_XTAL / 2); // 6.000MHz, verified
m_beast->port_in_cb<0>().set(FUNC(djboy_state::beast_p0_r));
@@ -505,7 +505,7 @@ void djboy_state::djboy(machine_config &config)
m_beast->port_in_cb<3>().set(FUNC(djboy_state::beast_p3_r));
m_beast->port_out_cb<3>().set(FUNC(djboy_state::beast_p3_w));
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
GENERIC_LATCH_8(config, m_slavelatch);
@@ -513,17 +513,17 @@ void djboy_state::djboy(machine_config &config)
m_beastlatch->data_pending_callback().set_inputline(m_beast, INPUT_LINE_IRQ0);
m_beastlatch->set_separate_acknowledge(true);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57.5);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 16, 256-16-1);
- screen.set_screen_update(FUNC(djboy_state::screen_update_djboy));
- screen.screen_vblank().set(FUNC(djboy_state::screen_vblank_djboy));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57.5)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(djboy_state, screen_update_djboy)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, djboy_state, screen_vblank_djboy))
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_djboy);
- PALETTE(config, m_palette).set_entries(0x200);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_djboy)
+ MCFG_PALETTE_ADD("palette", 0x200)
KANEKO_PANDORA(config, m_pandora, 0);
m_pandora->set_gfxdecode_tag(m_gfxdecode);
@@ -534,52 +534,22 @@ void djboy_state::djboy(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI);
- ym2203_device &ymsnd(YM2203(config, "ymsnd", 12_MHz_XTAL / 4)); // 3.000MHz, verified
- ymsnd.add_route(ALL_OUTPUTS, "lspeaker", 0.40);
- ymsnd.add_route(ALL_OUTPUTS, "rspeaker", 0.40);
+ MCFG_DEVICE_ADD("ymsnd", YM2203, 12_MHz_XTAL / 4) // 3.000MHz, verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
- okim6295_device &oki_l(OKIM6295(config, "oki_l", 12_MHz_XTAL / 8, okim6295_device::PIN7_LOW)); // 1.500MHz, verified
- oki_l.set_device_rom_tag("oki");
- oki_l.add_route(ALL_OUTPUTS, "lspeaker", 0.50);
+ MCFG_DEVICE_ADD("oki_l", OKIM6295, 12_MHz_XTAL / 8, okim6295_device::PIN7_LOW) // 1.500MHz, verified
+ MCFG_DEVICE_ROM("oki")
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
- okim6295_device &oki_r(OKIM6295(config, "oki_r", 12_MHz_XTAL / 8, okim6295_device::PIN7_LOW)); // 1.500MHz, verified
- oki_r.set_device_rom_tag("oki");
- oki_r.add_route(ALL_OUTPUTS, "rspeaker", 0.50);
-}
+ MCFG_DEVICE_ADD("oki_r", OKIM6295, 12_MHz_XTAL / 8, okim6295_device::PIN7_LOW) // 1.500MHz, verified
+ MCFG_DEVICE_ROM("oki")
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
+MACHINE_CONFIG_END
ROM_START( djboy )
ROM_REGION( 0x40000, "mastercpu", 0 )
- ROM_LOAD( "djboy.4b", 0x00000, 0x20000, CRC(354531ec) SHA1(4722376601ca2d8fb79622fef35ab5b5b084555d) ) // verified on 2 PCBs, neither PCB had a label on the ROM
- ROM_LOAD( "bs100.4d", 0x20000, 0x20000, CRC(081e8af8) SHA1(3589dab1cf31b109a40370b4db1f31785023e2ed) )
-
- ROM_REGION( 0x30000, "slavecpu", 0 )
- ROM_LOAD( "djboy.5y", 0x00000, 0x10000, CRC(91eb189a) SHA1(a6a2662369cd6c851ae45a49654f6150fa8cf42e) ) // mask ROM without label
- ROM_LOAD( "bs101.6w", 0x10000, 0x20000, CRC(a7c85577) SHA1(8296b96d5f69f6c730b7ed77fa8c93496b33529c) )
-
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* sound */
- ROM_LOAD( "bs200.8c", 0x00000, 0x20000, CRC(f6c19e51) SHA1(82193f71122df07cce0a7f057a87b89eb2d587a1) )
-
- ROM_REGION( 0x1000, "beast", 0 ) /* MSM80C51F microcontroller */
- ROM_LOAD( "beast.9s", 0x00000, 0x1000, CRC(ebe0f5f3) SHA1(6081343c9b4510c4c16b71f6340266a1f76170ac) ) // Internal ROM image
-
- ROM_REGION( 0x200000, "gfx1", 0 ) /* sprites */
- ROM_LOAD( "bs000.1h", 0x000000, 0x80000, CRC(be4bf805) SHA1(a73c564575fe89d26225ca8ec2d98b6ac319ac18) )
- ROM_LOAD( "bs001.1f", 0x080000, 0x80000, CRC(fdf36e6b) SHA1(a8762458dfd5201304247c113ceb85e96e33d423) )
- ROM_LOAD( "bs002.1d", 0x100000, 0x80000, CRC(c52fee7f) SHA1(bd33117f7a57899fd4ec0a77413107edd9c44629) )
- ROM_LOAD( "bs003.1k", 0x180000, 0x80000, CRC(ed89acb4) SHA1(611af362606b73cd2cf501678b463db52dcf69c4) )
- ROM_LOAD( "bs06.1b", 0x1f0000, 0x10000, CRC(22c8aa08) SHA1(5521c9d73b4ee82a2de1992d6edc7ef62788ad72) ) // replaces last 0x200 tiles - verified correct for the World set
-
- ROM_REGION( 0x100000, "gfx2", 0 ) /* background */
- ROM_LOAD( "bs004.1s", 0x000000, 0x80000, CRC(2f1392c3) SHA1(1bc3030b3612766a02133eef0b4d20013c0495a4) )
- ROM_LOAD( "bs005.1u", 0x080000, 0x80000, CRC(46b400c4) SHA1(35f4823364bbff1fc935994498d462bbd3bc6044) )
-
- ROM_REGION( 0x40000, "oki", 0 ) /* OKI-M6295 samples */
- ROM_LOAD( "bs203.5j", 0x000000, 0x40000, CRC(805341fb) SHA1(fb94e400e2283aaa806814d5a39d6196457dc822) )
-ROM_END
-
-ROM_START( djboyu )
- ROM_REGION( 0x40000, "mastercpu", 0 )
ROM_LOAD( "bs64.4b", 0x00000, 0x20000, CRC(b77aacc7) SHA1(78100d4695738a702f13807526eb1bcac759cce3) )
ROM_LOAD( "bs100.4d", 0x20000, 0x20000, CRC(081e8af8) SHA1(3589dab1cf31b109a40370b4db1f31785023e2ed) )
@@ -591,14 +561,14 @@ ROM_START( djboyu )
ROM_LOAD( "bs200.8c", 0x00000, 0x20000, CRC(f6c19e51) SHA1(82193f71122df07cce0a7f057a87b89eb2d587a1) )
ROM_REGION( 0x1000, "beast", 0 ) /* MSM80C51F microcontroller */
- ROM_LOAD( "beast.9s", 0x00000, 0x1000, CRC(ebe0f5f3) SHA1(6081343c9b4510c4c16b71f6340266a1f76170ac) ) // Internal ROM image
+ ROM_LOAD( "beast.9s", 0x00000, 0x1000, CRC(ebe0f5f3) SHA1(6081343c9b4510c4c16b71f6340266a1f76170ac) ) /* Internal ROM image */
ROM_REGION( 0x200000, "gfx1", 0 ) /* sprites */
ROM_LOAD( "bs000.1h", 0x000000, 0x80000, CRC(be4bf805) SHA1(a73c564575fe89d26225ca8ec2d98b6ac319ac18) )
ROM_LOAD( "bs001.1f", 0x080000, 0x80000, CRC(fdf36e6b) SHA1(a8762458dfd5201304247c113ceb85e96e33d423) )
ROM_LOAD( "bs002.1d", 0x100000, 0x80000, CRC(c52fee7f) SHA1(bd33117f7a57899fd4ec0a77413107edd9c44629) )
ROM_LOAD( "bs003.1k", 0x180000, 0x80000, CRC(ed89acb4) SHA1(611af362606b73cd2cf501678b463db52dcf69c4) )
- ROM_LOAD( "bs07s.1b", 0x1f0000, 0x10000, CRC(d9b7a220) SHA1(ba3b528d50650c209c986268bb29b42ff1276eb2) ) // replaces last 0x200 tiles - found labeled as both BS07 and BS07S, same data - verified
+ ROM_LOAD( "bs07s.1b", 0x1f0000, 0x10000, CRC(d9b7a220) SHA1(ba3b528d50650c209c986268bb29b42ff1276eb2) ) // replaces last 0x200 tiles
ROM_REGION( 0x100000, "gfx2", 0 ) /* background */
ROM_LOAD( "bs004.1s", 0x000000, 0x80000, CRC(2f1392c3) SHA1(1bc3030b3612766a02133eef0b4d20013c0495a4) )
@@ -608,27 +578,27 @@ ROM_START( djboyu )
ROM_LOAD( "bs203.5j", 0x000000, 0x40000, CRC(805341fb) SHA1(fb94e400e2283aaa806814d5a39d6196457dc822) )
ROM_END
-ROM_START( djboyua )
+ROM_START( djboya )
ROM_REGION( 0x40000, "mastercpu", 0 )
- ROM_LOAD( "bs19s.4b", 0x00000, 0x20000, CRC(17ce9f6c) SHA1(a0c1832b05dc46991e8949067ca0278f5498835f) ) // found labeled as both BS19 and BS19S, same data - verified
+ ROM_LOAD( "bs19s.rom", 0x00000, 0x20000, CRC(17ce9f6c) SHA1(a0c1832b05dc46991e8949067ca0278f5498835f) )
ROM_LOAD( "bs100.4d", 0x20000, 0x20000, CRC(081e8af8) SHA1(3589dab1cf31b109a40370b4db1f31785023e2ed) )
ROM_REGION( 0x30000, "slavecpu", 0 )
- ROM_LOAD( "bs15s.5y", 0x00000, 0x10000, CRC(e6f966b2) SHA1(f9df16035a8b09d87eb70315b216892e25d99b03) ) // found labeled as both BS15 and BS15S, same data - verified
+ ROM_LOAD( "bs15s.rom", 0x00000, 0x10000, CRC(e6f966b2) SHA1(f9df16035a8b09d87eb70315b216892e25d99b03) )
ROM_LOAD( "bs101.6w", 0x10000, 0x20000, CRC(a7c85577) SHA1(8296b96d5f69f6c730b7ed77fa8c93496b33529c) )
ROM_REGION( 0x20000, "soundcpu", 0 ) /* sound */
ROM_LOAD( "bs200.8c", 0x00000, 0x20000, CRC(f6c19e51) SHA1(82193f71122df07cce0a7f057a87b89eb2d587a1) )
ROM_REGION( 0x1000, "beast", 0 ) /* MSM80C51F microcontroller */
- ROM_LOAD( "beast.9s", 0x00000, 0x1000, CRC(ebe0f5f3) SHA1(6081343c9b4510c4c16b71f6340266a1f76170ac) ) // Internal ROM image
+ ROM_LOAD( "beast.9s", 0x00000, 0x1000, CRC(ebe0f5f3) SHA1(6081343c9b4510c4c16b71f6340266a1f76170ac) ) /* Internal ROM image */
ROM_REGION( 0x200000, "gfx1", 0 ) /* sprites */
ROM_LOAD( "bs000.1h", 0x000000, 0x80000, CRC(be4bf805) SHA1(a73c564575fe89d26225ca8ec2d98b6ac319ac18) )
ROM_LOAD( "bs001.1f", 0x080000, 0x80000, CRC(fdf36e6b) SHA1(a8762458dfd5201304247c113ceb85e96e33d423) )
ROM_LOAD( "bs002.1d", 0x100000, 0x80000, CRC(c52fee7f) SHA1(bd33117f7a57899fd4ec0a77413107edd9c44629) )
ROM_LOAD( "bs003.1k", 0x180000, 0x80000, CRC(ed89acb4) SHA1(611af362606b73cd2cf501678b463db52dcf69c4) )
- ROM_LOAD( "bs07s.1b", 0x1f0000, 0x10000, CRC(d9b7a220) SHA1(ba3b528d50650c209c986268bb29b42ff1276eb2) ) // replaces last 0x200 tiles - found labeled as both BS07 and BS07S, same data - verified
+ ROM_LOAD( "bs07s.1b", 0x1f0000, 0x10000, CRC(d9b7a220) SHA1(ba3b528d50650c209c986268bb29b42ff1276eb2) ) // replaces last 0x200 tiles
ROM_REGION( 0x100000, "gfx2", 0 ) /* background */
ROM_LOAD( "bs004.1s", 0x000000, 0x80000, CRC(2f1392c3) SHA1(1bc3030b3612766a02133eef0b4d20013c0495a4) )
@@ -651,14 +621,14 @@ ROM_START( djboyj )
ROM_LOAD( "bs200.8c", 0x00000, 0x20000, CRC(f6c19e51) SHA1(82193f71122df07cce0a7f057a87b89eb2d587a1) )
ROM_REGION( 0x1000, "beast", 0 ) /* MSM80C51F microcontroller */
- ROM_LOAD( "beast.9s", 0x00000, 0x1000, CRC(ebe0f5f3) SHA1(6081343c9b4510c4c16b71f6340266a1f76170ac) ) // Internal ROM image
+ ROM_LOAD( "beast.9s", 0x00000, 0x1000, CRC(ebe0f5f3) SHA1(6081343c9b4510c4c16b71f6340266a1f76170ac) ) /* Internal ROM image */
ROM_REGION( 0x200000, "gfx1", 0 ) /* sprites */
ROM_LOAD( "bs000.1h", 0x000000, 0x80000, CRC(be4bf805) SHA1(a73c564575fe89d26225ca8ec2d98b6ac319ac18) )
ROM_LOAD( "bs001.1f", 0x080000, 0x80000, CRC(fdf36e6b) SHA1(a8762458dfd5201304247c113ceb85e96e33d423) )
ROM_LOAD( "bs002.1d", 0x100000, 0x80000, CRC(c52fee7f) SHA1(bd33117f7a57899fd4ec0a77413107edd9c44629) )
ROM_LOAD( "bs003.1k", 0x180000, 0x80000, CRC(ed89acb4) SHA1(611af362606b73cd2cf501678b463db52dcf69c4) )
- ROM_LOAD( "bs06.1b", 0x1f0000, 0x10000, CRC(22c8aa08) SHA1(5521c9d73b4ee82a2de1992d6edc7ef62788ad72) ) // replaces last 0x200 tiles
+ ROM_LOAD( "bsxx.1b", 0x1f0000, 0x10000, CRC(22c8aa08) SHA1(5521c9d73b4ee82a2de1992d6edc7ef62788ad72) ) // replaces last 0x200 tiles
ROM_REGION( 0x100000, "gfx2", 0 ) /* background */
ROM_LOAD( "bs004.1s", 0x000000, 0x80000, CRC(2f1392c3) SHA1(1bc3030b3612766a02133eef0b4d20013c0495a4) )
@@ -668,37 +638,6 @@ ROM_START( djboyj )
ROM_LOAD( "bs-204.5j", 0x000000, 0x40000, CRC(510244f0) SHA1(afb502d46d268ad9cd209ae1da72c50e4e785626) )
ROM_END
-ROM_START( djboyja )
- ROM_REGION( 0x40000, "mastercpu", 0 )
- ROM_LOAD( "djboyja.4b", 0x00000, 0x20000, CRC(f7ac20ca) SHA1(1bf66bfaa6d98f4cff50bc4d15cebfb7f4b09ae5) ) // mask ROM without label
- ROM_LOAD( "bs100.4d", 0x20000, 0x20000, CRC(081e8af8) SHA1(3589dab1cf31b109a40370b4db1f31785023e2ed) )
-
- ROM_REGION( 0x30000, "slavecpu", 0 )
- ROM_LOAD( "bs13.5y", 0x00000, 0x10000, CRC(5c3f2f96) SHA1(bb7ee028a2d8d3c76a78a29fba60bcc36e9399f5) )
- ROM_LOAD( "bs101.6w", 0x10000, 0x20000, CRC(a7c85577) SHA1(8296b96d5f69f6c730b7ed77fa8c93496b33529c) )
-
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* sound */
- ROM_LOAD( "bs200.8c", 0x00000, 0x20000, CRC(f6c19e51) SHA1(82193f71122df07cce0a7f057a87b89eb2d587a1) )
-
- ROM_REGION( 0x1000, "beast", 0 ) /* MSM80C51F microcontroller */
- ROM_LOAD( "beast.9s", 0x00000, 0x1000, CRC(ebe0f5f3) SHA1(6081343c9b4510c4c16b71f6340266a1f76170ac) ) // Internal ROM image
-
- ROM_REGION( 0x200000, "gfx1", 0 ) /* sprites */
- ROM_LOAD( "bs000.1h", 0x000000, 0x80000, CRC(be4bf805) SHA1(a73c564575fe89d26225ca8ec2d98b6ac319ac18) )
- ROM_LOAD( "bs001.1f", 0x080000, 0x80000, CRC(fdf36e6b) SHA1(a8762458dfd5201304247c113ceb85e96e33d423) )
- ROM_LOAD( "bs002.1d", 0x100000, 0x80000, CRC(c52fee7f) SHA1(bd33117f7a57899fd4ec0a77413107edd9c44629) )
- ROM_LOAD( "bs003.1k", 0x180000, 0x80000, CRC(ed89acb4) SHA1(611af362606b73cd2cf501678b463db52dcf69c4) )
- ROM_LOAD( "bs06.1b", 0x1f0000, 0x10000, CRC(22c8aa08) SHA1(5521c9d73b4ee82a2de1992d6edc7ef62788ad72) ) // replaces last 0x200 tiles
-
- ROM_REGION( 0x100000, "gfx2", 0 ) /* background */
- ROM_LOAD( "bs004.1s", 0x000000, 0x80000, CRC(2f1392c3) SHA1(1bc3030b3612766a02133eef0b4d20013c0495a4) )
- ROM_LOAD( "bs005.1u", 0x080000, 0x80000, CRC(46b400c4) SHA1(35f4823364bbff1fc935994498d462bbd3bc6044) )
-
- ROM_REGION( 0x40000, "oki", 0 ) /* OKI-M6295 samples */
- ROM_LOAD( "bs24_l.5j", 0x000000, 0x20000, CRC(b0e0a452) SHA1(ff2d7ea750d43b1a05c55ad01296866af9aea444) ) // same data as bs-204.5j but split in halves
- ROM_LOAD( "bs24_h.5l", 0x020000, 0x20000, CRC(d24988ad) SHA1(22c2b9823e5320cf4e659d3e3b54991617b1e6b1) )
-ROM_END
-
void djboy_state::init_djboy()
{
@@ -710,9 +649,7 @@ void djboy_state::init_djboyj()
m_bankxor = 0x1f;
}
-/* YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MNTR, COMPANY, FULLNAME, FLAGS */
-GAME( 1989, djboy, 0, djboy, djboy, djboy_state, init_djboy, ROT0, "Kaneko", "DJ Boy (World)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, djboyu, djboy, djboy, djboy, djboy_state, init_djboy, ROT0, "Kaneko (American Sammy license)", "DJ Boy (US, set 1)", MACHINE_SUPPORTS_SAVE ) // Sammy & Williams logos in FG ROM
-GAME( 1990, djboyua, djboy, djboy, djboy, djboy_state, init_djboy, ROT0, "Kaneko (American Sammy license)", "DJ Boy (US, set 2)", MACHINE_SUPPORTS_SAVE ) // Sammy & Williams logos in FG ROM
-GAME( 1989, djboyj, djboy, djboy, djboy, djboy_state, init_djboyj, ROT0, "Kaneko (Sega license)", "DJ Boy (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) // Sega logo in FG ROM
-GAME( 1989, djboyja, djboy, djboy, djboy, djboy_state, init_djboyj, ROT0, "Kaneko (Sega license)", "DJ Boy (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) // Sega logo in FG ROM
+/* YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MNTR, COMPANY, FULLNAME, FLAGS */
+GAME( 1989, djboy, 0, djboy, djboy, djboy_state, init_djboy, ROT0, "Kaneko (American Sammy license)", "DJ Boy (set 1)", MACHINE_SUPPORTS_SAVE) // Sammy & Williams logos in FG ROM
+GAME( 1989, djboya, djboy, djboy, djboy, djboy_state, init_djboy, ROT0, "Kaneko (American Sammy license)", "DJ Boy (set 2)", MACHINE_SUPPORTS_SAVE) // Sammy & Williams logos in FG ROM
+GAME( 1989, djboyj, djboy, djboy, djboy, djboy_state, init_djboyj, ROT0, "Kaneko (Sega license)", "DJ Boy (Japan)", MACHINE_SUPPORTS_SAVE ) // Sega logo in FG ROM
diff --git a/src/mame/drivers/djmain.cpp b/src/mame/drivers/djmain.cpp
index 11354990fbc..1239d9c5df1 100644
--- a/src/mame/drivers/djmain.cpp
+++ b/src/mame/drivers/djmain.cpp
@@ -1379,25 +1379,25 @@ void djmain_state::machine_reset()
*
*************************************/
-void djmain_state::djmainj(machine_config &config)
-{
+MACHINE_CONFIG_START(djmain_state::djmainj)
+
/* basic machine hardware */
// popn3 works 9.6 MHz or slower in some songs */
- //M68EC020(config, m_maincpu, 18432000/2); /* 9.216 MHz!? */
- M68EC020(config, m_maincpu, 32000000/4); /* 8.000 MHz!? */
- m_maincpu->set_addrmap(AS_PROGRAM, &djmain_state::maincpu_djmainj);
- m_maincpu->set_vblank_int("screen", FUNC(djmain_state::vb_interrupt));
+ //MCFG_DEVICE_ADD("maincpu", M68EC020, 18432000/2) /* 9.216 MHz!? */
+ MCFG_DEVICE_ADD("maincpu", M68EC020, 32000000/4) /* 8.000 MHz!? */
+ MCFG_DEVICE_PROGRAM_MAP(maincpu_djmainj)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", djmain_state, vb_interrupt)
ATA_INTERFACE(config, m_ata).options(ata_devices, "hdd", nullptr, true);
m_ata->irq_handler().set(FUNC(djmain_state::ide_interrupt));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(12, 512-12-1, 0, 384-1);
- screen.set_screen_update(FUNC(djmain_state::screen_update_djmain));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(12, 512-12-1, 0, 384-1)
+ MCFG_SCREEN_UPDATE_DRIVER(djmain_state, screen_update_djmain)
PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 0x4440 / 4);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_djmain);
@@ -1413,28 +1413,28 @@ void djmain_state::djmainj(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- k054539_device &k054539_1(K054539(config, "k054539_1", XTAL(18'432'000)));
- k054539_1.set_addrmap(0, &djmain_state::k054539_map);
- k054539_1.add_route(0, "lspeaker", 1.0);
- k054539_1.add_route(1, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("k054539_1", K054539, XTAL(18'432'000))
+ MCFG_DEVICE_ADDRESS_MAP(0, k054539_map)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
- k054539_device &k054539_2(K054539(config, "k054539_2", XTAL(18'432'000)));
- k054539_2.set_addrmap(0, &djmain_state::k054539_map);
- k054539_2.add_route(0, "lspeaker", 1.0);
- k054539_2.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("k054539_2", K054539, XTAL(18'432'000))
+ MCFG_DEVICE_ADDRESS_MAP(0, k054539_map)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
-void djmain_state::djmainu(machine_config &config)
-{
+MACHINE_CONFIG_START(djmain_state::djmainu)
djmainj(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &djmain_state::maincpu_djmainu);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(maincpu_djmainu)
+MACHINE_CONFIG_END
-void djmain_state::djmaina(machine_config &config)
-{
+MACHINE_CONFIG_START(djmain_state::djmaina)
djmainj(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &djmain_state::maincpu_djmaina);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(maincpu_djmaina)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/dkmb.cpp b/src/mame/drivers/dkmb.cpp
index 02684188d89..617f45138cf 100644
--- a/src/mame/drivers/dkmb.cpp
+++ b/src/mame/drivers/dkmb.cpp
@@ -119,24 +119,24 @@ static INPUT_PORTS_START( dkmb )
INPUT_PORTS_END
-void dkmb_state::dkmb(machine_config &config)
-{
- PPC603R(config, m_maincpu, 75'000'000); // Actually MPC603RRX266LC
- m_maincpu->set_addrmap(AS_PROGRAM, &dkmb_state::main_map);
+MACHINE_CONFIG_START(dkmb_state::dkmb)
+
+ MCFG_DEVICE_ADD("maincpu", PPC603R, 75'000'000) // Actually MPC603RRX266LC
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- PIC16C56(config, "pic", 4'000'000); // Actually PIC12C508, clock not verified
+ MCFG_DEVICE_ADD("pic", PIC16C56, 4'000'000) // Actually PIC12C508, clock not verified
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); // wrong
- screen.set_refresh_hz(60);
- screen.set_screen_update(FUNC(dkmb_state::screen_update));
- screen.set_size(1024, 256);
- screen.set_visarea_full();
+ MCFG_SCREEN_ADD("screen", RASTER) // wrong
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_UPDATE_DRIVER(dkmb_state, screen_update)
+ MCFG_SCREEN_SIZE(1024, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 256-1)
- PALETTE(config, "palette").set_entries(65536);
+ MCFG_PALETTE_ADD("palette", 65536)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
-}
+MACHINE_CONFIG_END
ROM_START( dkmb )
diff --git a/src/mame/drivers/dkong.cpp b/src/mame/drivers/dkong.cpp
index 9be28348ab8..55af4b84ce7 100644
--- a/src/mame/drivers/dkong.cpp
+++ b/src/mame/drivers/dkong.cpp
@@ -1692,11 +1692,11 @@ WRITE_LINE_MEMBER(dkong_state::busreq_w )
m_dma8257->hlda_w(state);
}
-void dkong_state::dkong_base(machine_config &config)
-{
+MACHINE_CONFIG_START(dkong_state::dkong_base)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CLOCK_1H);
- m_maincpu->set_addrmap(AS_PROGRAM, &dkong_state::dkong_map);
+ MCFG_DEVICE_ADD(m_maincpu, Z80, CLOCK_1H)
+ MCFG_DEVICE_PROGRAM_MAP(dkong_map)
MCFG_MACHINE_START_OVERRIDE(dkong_state,dkong2b)
MCFG_MACHINE_RESET_OVERRIDE(dkong_state,dkong)
@@ -1710,20 +1710,19 @@ void dkong_state::dkong_base(machine_config &config)
m_dma8257->set_reverse_rw_mode(1); // why?
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(dkong_state::screen_update_dkong));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(dkong_state::vblank_irq));
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(dkong_state, screen_update_dkong)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, dkong_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_dkong);
PALETTE(config, m_palette, FUNC(dkong_state::dkong2b_palette), DK2B_PALETTE_LENGTH);
MCFG_VIDEO_START_OVERRIDE(dkong_state,dkong)
-}
+MACHINE_CONFIG_END
-void dkong_state::radarscp(machine_config &config)
-{
+MACHINE_CONFIG_START(dkong_state::radarscp)
dkong_base(config);
/* basic machine hardware */
@@ -1733,10 +1732,9 @@ void dkong_state::radarscp(machine_config &config)
/* sound hardware */
radarscp_audio(config);
-}
+MACHINE_CONFIG_END
-void dkong_state::radarscp1(machine_config &config)
-{
+MACHINE_CONFIG_START(dkong_state::radarscp1)
dkong_base(config);
/* basic machine hardware */
@@ -1746,11 +1744,10 @@ void dkong_state::radarscp1(machine_config &config)
/* sound hardware */
radarscp1_audio(config);
-}
+MACHINE_CONFIG_END
-void dkong_state::dkong2b(machine_config &config)
-{
+MACHINE_CONFIG_START(dkong_state::dkong2b)
dkong_base(config);
/* basic machine hardware */
@@ -1761,7 +1758,7 @@ void dkong_state::dkong2b(machine_config &config)
dkong2b_audio(config);
WATCHDOG_TIMER(config, m_watchdog);
-}
+MACHINE_CONFIG_END
void dkong_state::dk_braze(machine_config &config)
{
@@ -1791,12 +1788,12 @@ void dkong_state::dk3_braze(machine_config &config)
EEPROM_93C46_8BIT(config, "eeprom");
}
-void dkong_state::dkong3(machine_config &config)
-{
+MACHINE_CONFIG_START(dkong_state::dkong3)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(8'000'000) / 2); /* verified in schematics */
- m_maincpu->set_addrmap(AS_PROGRAM, &dkong_state::dkong3_map);
- m_maincpu->set_addrmap(AS_IO, &dkong_state::dkong3_io_map);
+ MCFG_DEVICE_ADD(m_maincpu, Z80, XTAL(8'000'000) / 2) /* verified in schematics */
+ MCFG_DEVICE_PROGRAM_MAP(dkong3_map)
+ MCFG_DEVICE_IO_MAP(dkong3_io_map)
MCFG_MACHINE_START_OVERRIDE(dkong_state, dkong3)
@@ -1821,28 +1818,27 @@ void dkong_state::dkong3(machine_config &config)
/* sound hardware */
dkong3_audio(config);
-}
+MACHINE_CONFIG_END
-void dkong_state::dkongjr(machine_config &config)
-{
+MACHINE_CONFIG_START(dkong_state::dkongjr)
dkong_base(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &dkong_state::dkongjr_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dkongjr_map)
/* sound hardware */
dkongjr_audio(config);
WATCHDOG_TIMER(config, m_watchdog);
-}
+MACHINE_CONFIG_END
-void dkong_state::pestplce(machine_config &config)
-{
+MACHINE_CONFIG_START(dkong_state::pestplce)
dkongjr(config);
/* video hardware */
m_palette->set_init(FUNC(dkong_state::dkong2b_palette)); // wrong!
m_screen->set_screen_update(FUNC(dkong_state::screen_update_pestplce));
-}
+MACHINE_CONFIG_END
void dkong_state::dkong3b(machine_config &config)
{
@@ -1897,35 +1893,35 @@ void dkong_state::spclforc(machine_config &config)
*
*************************************/
-void dkong_state::strtheat(machine_config &config)
-{
+MACHINE_CONFIG_START(dkong_state::strtheat)
dkong2b(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &dkong_state::epos_readport);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(epos_readport)
MCFG_MACHINE_RESET_OVERRIDE(dkong_state,strtheat)
-}
+MACHINE_CONFIG_END
-void dkong_state::drakton(machine_config &config)
-{
+MACHINE_CONFIG_START(dkong_state::drakton)
dkong2b(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &dkong_state::epos_readport);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(epos_readport)
MCFG_MACHINE_RESET_OVERRIDE(dkong_state,drakton)
-}
+MACHINE_CONFIG_END
-void dkong_state::drktnjr(machine_config &config)
-{
+MACHINE_CONFIG_START(dkong_state::drktnjr)
dkongjr(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &dkong_state::epos_readport);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(epos_readport)
MCFG_MACHINE_RESET_OVERRIDE(dkong_state,drakton)
-}
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/dlair.cpp b/src/mame/drivers/dlair.cpp
index 2125123dc60..6decd6ef2c7 100644
--- a/src/mame/drivers/dlair.cpp
+++ b/src/mame/drivers/dlair.cpp
@@ -141,7 +141,7 @@ private:
optional_device<palette_device> m_palette;
optional_device<pioneer_ldv1000_device> m_ldv1000;
optional_device<pioneer_pr7820_device> m_pr7820;
- optional_device<philips_22vp932_device> m_22vp932;
+ optional_device<phillips_22vp932_device> m_22vp932;
optional_shared_ptr<uint8_t> m_videoram;
output_finder<16> m_digits;
@@ -744,18 +744,18 @@ void dlair_state::dlair_base(machine_config &config)
MACHINE_CONFIG_START(dlair_state::dlair_pr7820)
dlair_base(config);
- PIONEER_PR7820(config, m_pr7820, 0);
- m_pr7820->add_route(0, "lspeaker", 1.0);
- m_pr7820->add_route(1, "rspeaker", 1.0);
+ MCFG_LASERDISC_PR7820_ADD("ld_pr7820")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "ld_pr7820")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(dlair_state::dlair_ldv1000)
dlair_base(config);
- PIONEER_LDV1000(config, m_ldv1000, 0);
- m_ldv1000->add_route(0, "lspeaker", 1.0);
- m_ldv1000->add_route(1, "rspeaker", 1.0);
+ MCFG_LASERDISC_LDV1000_ADD("ld_ldv1000")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "ld_ldv1000")
MACHINE_CONFIG_END
@@ -778,25 +778,27 @@ MACHINE_CONFIG_START(dlair_state::dleuro)
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_hz(MASTER_CLOCK_EURO/(16*16*16*16*16*8)));
- PHILIPS_22VP932(config, m_22vp932, 0);
- m_22vp932->set_overlay(256, 256, FUNC(dlair_state::screen_update_dleuro));
- m_22vp932->set_overlay_palette(m_palette);
- m_22vp932->add_route(0, "lspeaker", 1.0);
- m_22vp932->add_route(1, "rspeaker", 1.0);
+ MCFG_LASERDISC_22VP932_ADD("ld_22vp932")
+ MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, dlair_state, screen_update_dleuro)
+ MCFG_LASERDISC_OVERLAY_PALETTE(m_palette)
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_PAL("screen", "ld_22vp932")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_dlair);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_dlair)
PALETTE(config, m_palette, FUNC(dlair_state::dleuro_palette), 16);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- SPEAKER_SOUND(config, m_speaker);
- m_speaker->add_route(ALL_OUTPUTS, "lspeaker", 0.33);
- m_speaker->add_route(ALL_OUTPUTS, "rspeaker", 0.33);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.33)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.33)
+
+ MCFG_DEVICE_MODIFY("ld_22vp932")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/dlair2.cpp b/src/mame/drivers/dlair2.cpp
index daf30d47ebb..2b0c600ed26 100644
--- a/src/mame/drivers/dlair2.cpp
+++ b/src/mame/drivers/dlair2.cpp
@@ -183,30 +183,30 @@ INTERRUPT_GEN_MEMBER(dlair2_state::dlair2_timer_irq)
device.execute().set_input_line_and_vector(0,HOLD_LINE,0x20/4);
}
-void dlair2_state::dlair2(machine_config &config)
-{
+MACHINE_CONFIG_START(dlair2_state::dlair2)
+
/* basic machine hardware */
- I8088(config, m_maincpu, MAIN_CLOCK/3); /* Schematics show I8088 "max" CPU */
- m_maincpu->set_addrmap(AS_PROGRAM, &dlair2_state::dlair2_map);
- m_maincpu->set_addrmap(AS_IO, &dlair2_state::dlair2_io);
- m_maincpu->set_periodic_int(FUNC(dlair2_state::dlair2_timer_irq), attotime::from_hz(60)); // timer irq, TODO: timing
+ MCFG_DEVICE_ADD("maincpu", I8088 , MAIN_CLOCK/3) /* Schematics show I8088 "max" CPU */
+ MCFG_DEVICE_PROGRAM_MAP(dlair2_map)
+ MCFG_DEVICE_IO_MAP(dlair2_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(dlair2_state, dlair2_timer_irq, 60) // timer irq, TODO: timing
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_screen_update(FUNC(dlair2_state::screen_update));
- screen.set_size(32*8, 32*8);
- screen.set_visarea_full();
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_UPDATE_DRIVER(dlair2_state, screen_update)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_PALETTE("palette")
-// GFXDECODE(config, "gfxdecode", "palette", gfx_dlair2);
+// MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dlair2)
PALETTE(config, "palette", FUNC(dlair2_state::dlair2_palette), 256);
/* sound hardware */
SPEAKER(config, "mono").front_center();
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/dm7000.cpp b/src/mame/drivers/dm7000.cpp
index 4bde5a8ea1e..60d5868dcb0 100644
--- a/src/mame/drivers/dm7000.cpp
+++ b/src/mame/drivers/dm7000.cpp
@@ -107,7 +107,7 @@ WRITE8_MEMBER( dm7000_state::dm7000_scc0_w )
switch(offset) {
case UART_THR:
if(!(m_scc0_lcr & UART_LCR_DLAB)) {
- m_terminal->write(data);
+ m_terminal->write(space, 0, data);
m_scc0_lsr = 1;
}
break;
diff --git a/src/mame/drivers/dmax8000.cpp b/src/mame/drivers/dmax8000.cpp
index fea238d8e2e..0f1358433ee 100644
--- a/src/mame/drivers/dmax8000.cpp
+++ b/src/mame/drivers/dmax8000.cpp
@@ -152,12 +152,11 @@ static void floppies(device_slot_interface &device)
}
-void dmax8000_state::dmax8000(machine_config &config)
-{
+MACHINE_CONFIG_START(dmax8000_state::dmax8000)
/* basic machine hardware */
- Z80(config, m_maincpu, 4'000'000); // no idea what crystal is used, but 4MHz clock is confirmed
- m_maincpu->set_addrmap(AS_PROGRAM, &dmax8000_state::dmax8000_mem);
- m_maincpu->set_addrmap(AS_IO, &dmax8000_state::dmax8000_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, 4'000'000) // no idea what crystal is used, but 4MHz clock is confirmed
+ MCFG_DEVICE_PROGRAM_MAP(dmax8000_mem)
+ MCFG_DEVICE_IO_MAP(dmax8000_io)
MCFG_MACHINE_RESET_OVERRIDE(dmax8000_state, dmax8000)
z80ctc_device &ctc(Z80CTC(config, "ctc", 4_MHz_XTAL));
@@ -193,13 +192,14 @@ void dmax8000_state::dmax8000(machine_config &config)
FD1793(config, m_fdc, 2'000'000); // no idea
m_fdc->intrq_wr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
m_fdc->drq_wr_callback().set(FUNC(dmax8000_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, "fdc:0", floppies, "8dsdd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", floppies, "8dsdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
- mm58274c_device &rtc(MM58274C(config, "rtc", 0)); // MM58174
+ MCFG_DEVICE_ADD("rtc", MM58274C, 0) // MM58174
// this is all guess
- rtc.set_mode24(0); // 12 hour
- rtc.set_day1(1); // monday
-}
+ MCFG_MM58274C_MODE24(0) // 12 hour
+ MCFG_MM58274C_DAY1(1) // monday
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/dmndrby.cpp b/src/mame/drivers/dmndrby.cpp
index 0de837b2e2d..0055bfe608d 100644
--- a/src/mame/drivers/dmndrby.cpp
+++ b/src/mame/drivers/dmndrby.cpp
@@ -497,18 +497,18 @@ void dmndrby_state::dmndrby_palette(palette_device &palette) const
bit0 = BIT(color_prom[i], 0);
bit1 = BIT(color_prom[i], 1);
bit2 = BIT(color_prom[i], 2);
- int const r = combine_weights(rweights, bit0, bit1, bit2);
+ int const r = combine_3_weights(rweights, bit0, bit1, bit2);
// green component
bit0 = BIT(color_prom[i], 3);
bit1 = BIT(color_prom[i], 4);
bit2 = BIT(color_prom[i], 5);
- int const g = combine_weights(gweights, bit0, bit1, bit2);
+ int const g = combine_3_weights(gweights, bit0, bit1, bit2);
// blue component
bit0 = BIT(color_prom[i], 6);
bit1 = BIT(color_prom[i], 7);
- int const b = combine_weights(bweights, bit0, bit1);
+ int const b = combine_2_weights(bweights, bit0, bit1);
palette.set_indirect_color(i, rgb_t(r, g, b));
}
@@ -535,28 +535,27 @@ INTERRUPT_GEN_MEMBER(dmndrby_state::dderby_timer_irq)
m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xcf); /* RST 08h */
}
-void dmndrby_state::dderby(machine_config &config)
-{
+MACHINE_CONFIG_START(dmndrby_state::dderby)
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &dmndrby_state::memmap);
- m_maincpu->set_vblank_int("screen", FUNC(dmndrby_state::dderby_irq));
- m_maincpu->set_periodic_int(FUNC(dmndrby_state::dderby_timer_irq), attotime::from_hz(244/2));
+ MCFG_DEVICE_ADD("maincpu", Z80,4000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(memmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dmndrby_state, dderby_irq)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(dmndrby_state, dderby_timer_irq, 244/2)
- Z80(config, m_audiocpu, 4000000); /* verified on schematics */
- m_audiocpu->set_addrmap(AS_PROGRAM, &dmndrby_state::dderby_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* verified on schematics */
+ MCFG_DEVICE_PROGRAM_MAP(dderby_sound_map)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 16, 256-16-1);
- screen.set_screen_update(FUNC(dmndrby_state::screen_update_dderby));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(dmndrby_state, screen_update_dderby)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_dmndrby);
PALETTE(config, m_palette, FUNC(dmndrby_state::dmndrby_palette), 0x300, 0x20);
@@ -566,7 +565,7 @@ void dmndrby_state::dderby(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
AY8910(config, "ay1", 1789750).add_route(ALL_OUTPUTS, "mono", 0.35); // frequency guessed
-}
+MACHINE_CONFIG_END
ROM_START( dmndrby )
diff --git a/src/mame/drivers/dms5000.cpp b/src/mame/drivers/dms5000.cpp
index 1eb4a93cc4a..06e14ea41c0 100644
--- a/src/mame/drivers/dms5000.cpp
+++ b/src/mame/drivers/dms5000.cpp
@@ -94,26 +94,25 @@ uint32_t dms5000_state::screen_update_dms5000(screen_device &screen, bitmap_ind1
return 0;
}
-void dms5000_state::dms5000(machine_config &config)
-{
+MACHINE_CONFIG_START(dms5000_state::dms5000)
/* basic machine hardware */
- I8086(config, m_maincpu, XTAL(9'830'400));
- m_maincpu->set_addrmap(AS_PROGRAM, &dms5000_state::dms5000_mem);
- m_maincpu->set_addrmap(AS_IO, &dms5000_state::dms5000_io);
+ MCFG_DEVICE_ADD("maincpu",I8086, XTAL(9'830'400))
+ MCFG_DEVICE_PROGRAM_MAP(dms5000_mem)
+ MCFG_DEVICE_IO_MAP(dms5000_io)
- LS259(config, "cntlatch", 0); // V34
+ MCFG_DEVICE_ADD("cntlatch", LS259, 0) // V34
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(50);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(640, 480);
- m_screen->set_visarea_full();
- m_screen->set_screen_update(FUNC(dms5000_state::screen_update_dms5000));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(dms5000_state, screen_update_dms5000)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( dms5000 )
diff --git a/src/mame/drivers/dmv.cpp b/src/mame/drivers/dmv.cpp
index 4c98414e380..23af1f0590d 100644
--- a/src/mame/drivers/dmv.cpp
+++ b/src/mame/drivers/dmv.cpp
@@ -127,21 +127,21 @@ private:
DECLARE_FLOPPY_FORMATS( floppy_formats );
DECLARE_QUICKLOAD_LOAD_MEMBER(dmv);
- uint8_t program_read(int cas, offs_t offset);
- void program_write(int cas, offs_t offset, uint8_t data);
-
- void ifsel_r(int ifsel, offs_t offset, uint8_t &data);
- void ifsel_w(int ifsel, offs_t offset, uint8_t data);
- DECLARE_READ8_MEMBER(ifsel0_r) { uint8_t data = 0xff; ifsel_r(0, offset, data); return data; }
- DECLARE_READ8_MEMBER(ifsel1_r) { uint8_t data = 0xff; ifsel_r(1, offset, data); return data; }
- DECLARE_READ8_MEMBER(ifsel2_r) { uint8_t data = 0xff; ifsel_r(2, offset, data); return data; }
- DECLARE_READ8_MEMBER(ifsel3_r) { uint8_t data = 0xff; ifsel_r(3, offset, data); return data; }
- DECLARE_READ8_MEMBER(ifsel4_r) { uint8_t data = 0xff; ifsel_r(4, offset, data); return data; }
- DECLARE_WRITE8_MEMBER(ifsel0_w) { ifsel_w(0, offset, data); }
- DECLARE_WRITE8_MEMBER(ifsel1_w) { ifsel_w(1, offset, data); }
- DECLARE_WRITE8_MEMBER(ifsel2_w) { ifsel_w(2, offset, data); }
- DECLARE_WRITE8_MEMBER(ifsel3_w) { ifsel_w(3, offset, data); }
- DECLARE_WRITE8_MEMBER(ifsel4_w) { ifsel_w(4, offset, data); }
+ uint8_t program_read(address_space &space, int cas, offs_t offset);
+ void program_write(address_space &space, int cas, offs_t offset, uint8_t data);
+
+ void ifsel_r(address_space &space, int ifsel, offs_t offset, uint8_t &data);
+ void ifsel_w(address_space &space, int ifsel, offs_t offset, uint8_t data);
+ DECLARE_READ8_MEMBER(ifsel0_r) { uint8_t data = 0xff; ifsel_r(space, 0, offset, data); return data; }
+ DECLARE_READ8_MEMBER(ifsel1_r) { uint8_t data = 0xff; ifsel_r(space, 1, offset, data); return data; }
+ DECLARE_READ8_MEMBER(ifsel2_r) { uint8_t data = 0xff; ifsel_r(space, 2, offset, data); return data; }
+ DECLARE_READ8_MEMBER(ifsel3_r) { uint8_t data = 0xff; ifsel_r(space, 3, offset, data); return data; }
+ DECLARE_READ8_MEMBER(ifsel4_r) { uint8_t data = 0xff; ifsel_r(space, 4, offset, data); return data; }
+ DECLARE_WRITE8_MEMBER(ifsel0_w) { ifsel_w(space, 0, offset, data); }
+ DECLARE_WRITE8_MEMBER(ifsel1_w) { ifsel_w(space, 1, offset, data); }
+ DECLARE_WRITE8_MEMBER(ifsel2_w) { ifsel_w(space, 2, offset, data); }
+ DECLARE_WRITE8_MEMBER(ifsel3_w) { ifsel_w(space, 3, offset, data); }
+ DECLARE_WRITE8_MEMBER(ifsel4_w) { ifsel_w(space, 4, offset, data); }
UPD7220_DISPLAY_PIXELS_MEMBER( hgdc_display_pixels );
UPD7220_DRAW_TEXT_LINE_MEMBER( hgdc_draw_text );
@@ -426,36 +426,38 @@ static void dmv_floppies(device_slot_interface &device)
}
-void dmv_state::ifsel_r(int ifsel, offs_t offset, uint8_t &data)
+void dmv_state::ifsel_r(address_space &space, int ifsel, offs_t offset, uint8_t &data)
{
- for (auto &slot : { m_slot2, m_slot2a, m_slot3, m_slot4, m_slot5, m_slot6, m_slot7, m_slot7a })
- slot->io_read(ifsel, offset, data);
+ dmvcart_slot_device *slots[] = { m_slot2, m_slot2a, m_slot3, m_slot4, m_slot5, m_slot6, m_slot7, m_slot7a };
+ for(auto & slot : slots)
+ slot->io_read(space, ifsel, offset, data);
}
-void dmv_state::ifsel_w(int ifsel, offs_t offset, uint8_t data)
+void dmv_state::ifsel_w(address_space &space, int ifsel, offs_t offset, uint8_t data)
{
- for(auto &slot : { m_slot2, m_slot2a, m_slot3, m_slot4, m_slot5, m_slot6, m_slot7, m_slot7a })
- slot->io_write(ifsel, offset, data);
+ dmvcart_slot_device *slots[] = { m_slot2, m_slot2a, m_slot3, m_slot4, m_slot5, m_slot6, m_slot7, m_slot7a };
+ for(auto & slot : slots)
+ slot->io_write(space, ifsel, offset, data);
}
WRITE8_MEMBER(dmv_state::exp_program_w)
{
- program_write((offset >> 16) & 0x07, offset, data);
+ program_write(space, (offset >> 16) & 0x07, offset, data);
}
READ8_MEMBER(dmv_state::exp_program_r)
{
- return program_read((offset >> 16) & 0x07, offset);
+ return program_read(space, (offset >> 16) & 0x07, offset);
}
WRITE8_MEMBER(dmv_state::program_w)
{
- program_write(m_ram_bank, offset, data);
+ program_write(space, m_ram_bank, offset, data);
}
READ8_MEMBER(dmv_state::program_r)
{
- return program_read(m_ram_bank, offset);
+ return program_read(space, m_ram_bank, offset);
}
WRITE_LINE_MEMBER( dmv_state::thold7_w )
@@ -517,7 +519,7 @@ void dmv_state::update_irqs(int slot, int state)
}
}
-void dmv_state::program_write(int cas, offs_t offset, uint8_t data)
+void dmv_state::program_write(address_space &space, int cas, offs_t offset, uint8_t data)
{
bool tramd = false;
dmvcart_slot_device *slots[] = { m_slot2, m_slot2a, m_slot3, m_slot4, m_slot5, m_slot6, m_slot7, m_slot7a };
@@ -533,7 +535,7 @@ void dmv_state::program_write(int cas, offs_t offset, uint8_t data)
}
}
-uint8_t dmv_state::program_read(int cas, offs_t offset)
+uint8_t dmv_state::program_read(address_space &space, int cas, offs_t offset)
{
uint8_t data = 0xff;
if (m_ramoutdis && offset < 0x2000)
@@ -773,38 +775,37 @@ static void dmv_slot7a(device_slot_interface &device)
device.option_add("k235", DMV_K235); // K235 Internal 8088 module with interrupt controller
}
-void dmv_state::dmv(machine_config &config)
-{
+MACHINE_CONFIG_START(dmv_state::dmv)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(24'000'000) / 6);
- m_maincpu->set_addrmap(AS_PROGRAM, &dmv_state::dmv_mem);
- m_maincpu->set_addrmap(AS_IO, &dmv_state::dmv_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(24'000'000) / 6)
+ MCFG_DEVICE_PROGRAM_MAP(dmv_mem)
+ MCFG_DEVICE_IO_MAP(dmv_io)
i8741_device &kbmcu(I8741(config, "kb_ctrl_mcu", XTAL(6'000'000)));
kbmcu.p1_in_cb().set(FUNC(dmv_state::kb_mcu_port1_r)); // bit 0 data from kb
kbmcu.p1_out_cb().set(FUNC(dmv_state::kb_mcu_port1_w)); // bit 1 data to kb
kbmcu.p2_out_cb().set(FUNC(dmv_state::kb_mcu_port2_w));
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
DMV_KEYBOARD(config, m_keyboard, 0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(50);
- m_screen->set_screen_update("upd7220", FUNC(upd7220_device::screen_update));
- m_screen->set_size(640, 400);
- m_screen->set_visarea(0, 640-1, 0, 400-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_UPDATE_DEVICE("upd7220", upd7220_device, screen_update)
+ MCFG_SCREEN_SIZE(640, 400)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_dmv);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dmv)
PALETTE(config, m_palette, palette_device::RGB_3BIT);
config.set_default_layout(layout_dmv);
// devices
UPD7220(config, m_hgdc, XTAL(5'000'000)/2); // unk clock
m_hgdc->set_addrmap(0, &dmv_state::upd7220_map);
- m_hgdc->set_display_pixels(FUNC(dmv_state::hgdc_display_pixels));
- m_hgdc->set_draw_text(FUNC(dmv_state::hgdc_draw_text));
+ m_hgdc->set_display_pixels_callback(FUNC(dmv_state::hgdc_display_pixels), this);
+ m_hgdc->set_draw_text_callback(FUNC(dmv_state::hgdc_draw_text), this);
AM9517A(config, m_dmac, 4_MHz_XTAL);
m_dmac->out_hreq_callback().set(FUNC(dmv_state::dma_hrq_changed));
@@ -817,15 +818,15 @@ void dmv_state::dmv(machine_config &config)
m_dmac->out_iow_callback<1>().set_log("Write DMA CH2");
m_dmac->in_ior_callback<2>().set(m_hgdc, FUNC(upd7220_device::dack_r));
m_dmac->out_iow_callback<2>().set(m_hgdc, FUNC(upd7220_device::dack_w));
- m_dmac->in_ior_callback<3>().set(m_fdc, FUNC(i8272a_device::dma_r));
- m_dmac->out_iow_callback<3>().set(m_fdc, FUNC(i8272a_device::dma_w));
+ m_dmac->in_ior_callback<3>().set(m_fdc, FUNC(i8272a_device::mdma_r));
+ m_dmac->out_iow_callback<3>().set(m_fdc, FUNC(i8272a_device::mdma_w));
m_dmac->out_dack_callback<3>().set(FUNC(dmv_state::dmac_dack3));
I8272A(config, m_fdc, 8'000'000, true);
m_fdc->intrq_wr_callback().set(FUNC(dmv_state::fdc_irq));
m_fdc->drq_wr_callback().set(m_dmac, FUNC(am9517a_device::dreq3_w));
- FLOPPY_CONNECTOR(config, "i8272:0", dmv_floppies, "525dd", dmv_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "i8272:1", dmv_floppies, "525dd", dmv_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("i8272:0", dmv_floppies, "525dd", dmv_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("i8272:1", dmv_floppies, "525dd", dmv_state::floppy_formats)
PIT8253(config, m_pit, 0);
m_pit->set_clk<0>(50);
@@ -835,52 +836,54 @@ void dmv_state::dmv(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
-
- DMVCART_SLOT(config, m_slot1, dmv_slot1, nullptr);
- DMVCART_SLOT(config, m_slot2, dmv_slot2_6, nullptr);
- m_slot2->out_int().set(FUNC(dmv_state::busint2_w));
- m_slot2->out_irq().set(FUNC(dmv_state::irq2_w));
- DMVCART_SLOT(config, m_slot2a, dmv_slot2a, nullptr);
- m_slot2a->out_int().set(FUNC(dmv_state::busint2a_w));
- m_slot2a->out_irq().set(FUNC(dmv_state::irq2a_w));
- DMVCART_SLOT(config, m_slot3, dmv_slot2_6, nullptr);
- m_slot3->out_int().set(FUNC(dmv_state::busint3_w));
- m_slot3->out_irq().set(FUNC(dmv_state::irq3_w));
- DMVCART_SLOT(config, m_slot4, dmv_slot2_6, nullptr);
- m_slot4->out_int().set(FUNC(dmv_state::busint4_w));
- m_slot4->out_irq().set(FUNC(dmv_state::irq4_w));
- DMVCART_SLOT(config, m_slot5, dmv_slot2_6, nullptr);
- m_slot5->out_int().set(FUNC(dmv_state::busint5_w));
- m_slot5->out_irq().set(FUNC(dmv_state::irq5_w));
- DMVCART_SLOT(config, m_slot6, dmv_slot2_6, nullptr);
- m_slot6->out_int().set(FUNC(dmv_state::busint6_w));
- m_slot6->out_irq().set(FUNC(dmv_state::irq6_w));
-
- DMVCART_SLOT(config, m_slot7, dmv_slot7, nullptr);
- m_slot7->prog_read().set(FUNC(dmv_state::exp_program_r));
- m_slot7->prog_write().set(FUNC(dmv_state::exp_program_w));
- m_slot7->out_thold().set(FUNC(dmv_state::thold7_w));
- m_slot7->out_int().set(FUNC(dmv_state::busint7_w));
- m_slot7->out_irq().set(FUNC(dmv_state::irq7_w));
- DMVCART_SLOT(config, m_slot7a, dmv_slot7a, "k230");
- m_slot7a->prog_read().set(FUNC(dmv_state::exp_program_r));
- m_slot7a->prog_write().set(FUNC(dmv_state::exp_program_w));
- m_slot7a->out_thold().set(FUNC(dmv_state::thold7_w));
- m_slot7a->out_int().set(FUNC(dmv_state::busint7a_w));
- m_slot7a->out_irq().set(FUNC(dmv_state::irq7a_w));
-
- for (auto &slot : { m_slot1, m_slot2, m_slot2a, m_slot3, m_slot4, m_slot5, m_slot6, m_slot7, m_slot7a })
- {
- slot->set_memspace(m_maincpu, AS_PROGRAM);
- slot->set_iospace(m_maincpu, AS_IO);
- }
-
- SOFTWARE_LIST(config, "flop_list").set_original("dmv");
-
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(dmv_state, dmv), this), "com,cpm", attotime::from_seconds(3));
-}
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+
+ MCFG_DEVICE_ADD("slot1", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot1, nullptr, false)
+ MCFG_DEVICE_ADD("slot2", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, nullptr, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(*this, dmv_state, busint2_w))
+ MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(*this, dmv_state, irq2_w))
+ MCFG_DEVICE_ADD("slot2a", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2a, nullptr, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(*this, dmv_state, busint2a_w))
+ MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(*this, dmv_state, irq2a_w))
+ MCFG_DEVICE_ADD("slot3", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, nullptr, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(*this, dmv_state, busint3_w))
+ MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(*this, dmv_state, irq3_w))
+ MCFG_DEVICE_ADD("slot4", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, nullptr, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(*this, dmv_state, busint4_w))
+ MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(*this, dmv_state, irq4_w))
+ MCFG_DEVICE_ADD("slot5", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, nullptr, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(*this, dmv_state, busint5_w))
+ MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(*this, dmv_state, irq5_w))
+ MCFG_DEVICE_ADD("slot6", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, nullptr, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(*this, dmv_state, busint6_w))
+ MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(*this, dmv_state, irq6_w))
+
+ MCFG_DEVICE_ADD("slot7", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot7, nullptr, false)
+ MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(*this, dmv_state, exp_program_r), WRITE8(*this, dmv_state, exp_program_w))
+ MCFG_DMVCART_SLOT_OUT_THOLD_CB(WRITELINE(*this, dmv_state, thold7_w))
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(*this, dmv_state, busint7_w))
+ MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(*this, dmv_state, irq7_w))
+ MCFG_DEVICE_ADD("slot7a", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot7a, "k230", false)
+ MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(*this, dmv_state, exp_program_r), WRITE8(*this, dmv_state, exp_program_w))
+ MCFG_DMVCART_SLOT_OUT_THOLD_CB(WRITELINE(*this, dmv_state, thold7_w))
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(*this, dmv_state, busint7a_w))
+ MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(*this, dmv_state, irq7a_w))
+
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "dmv")
+
+ MCFG_QUICKLOAD_ADD("quickload", dmv_state, dmv, "com,cpm", 3)
+
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( dmv )
diff --git a/src/mame/drivers/docastle.cpp b/src/mame/drivers/docastle.cpp
index d90b12bf812..567663b9d05 100644
--- a/src/mame/drivers/docastle.cpp
+++ b/src/mame/drivers/docastle.cpp
@@ -240,10 +240,10 @@ void docastle_state::docastle_map2(address_map &map)
map(0x8000, 0x87ff).ram();
map(0xa000, 0xa008).rw(FUNC(docastle_state::docastle_shared1_r), FUNC(docastle_state::docastle_shared0_w));
map(0xc000, 0xc007).select(0x0080).rw(FUNC(docastle_state::inputs_flipscreen_r), FUNC(docastle_state::flipscreen_w));
- map(0xe000, 0xe000).w("sn1", FUNC(sn76489a_device::write));
- map(0xe400, 0xe400).w("sn2", FUNC(sn76489a_device::write));
- map(0xe800, 0xe800).w("sn3", FUNC(sn76489a_device::write));
- map(0xec00, 0xec00).w("sn4", FUNC(sn76489a_device::write));
+ map(0xe000, 0xe000).w("sn1", FUNC(sn76489a_device::command_w));
+ map(0xe400, 0xe400).w("sn2", FUNC(sn76489a_device::command_w));
+ map(0xe800, 0xe800).w("sn3", FUNC(sn76489a_device::command_w));
+ map(0xec00, 0xec00).w("sn4", FUNC(sn76489a_device::command_w));
}
void docastle_state::docastle_map3(address_map &map)
@@ -280,10 +280,10 @@ void docastle_state::dorunrun_map2(address_map &map)
{
map(0x0000, 0x3fff).rom();
map(0x8000, 0x87ff).ram();
- map(0xa000, 0xa000).w("sn1", FUNC(sn76489a_device::write));
- map(0xa400, 0xa400).w("sn2", FUNC(sn76489a_device::write));
- map(0xa800, 0xa800).w("sn3", FUNC(sn76489a_device::write));
- map(0xac00, 0xac00).w("sn4", FUNC(sn76489a_device::write));
+ map(0xa000, 0xa000).w("sn1", FUNC(sn76489a_device::command_w));
+ map(0xa400, 0xa400).w("sn2", FUNC(sn76489a_device::command_w));
+ map(0xa800, 0xa800).w("sn3", FUNC(sn76489a_device::command_w));
+ map(0xac00, 0xac00).w("sn4", FUNC(sn76489a_device::command_w));
map(0xc000, 0xc007).select(0x0080).rw(FUNC(docastle_state::inputs_flipscreen_r), FUNC(docastle_state::flipscreen_w));
map(0xe000, 0xe008).rw(FUNC(docastle_state::docastle_shared1_r), FUNC(docastle_state::docastle_shared0_w));
}
@@ -580,18 +580,18 @@ void docastle_state::machine_start()
save_item(NAME(m_buffer1));
}
-void docastle_state::docastle(machine_config &config)
-{
+MACHINE_CONFIG_START(docastle_state::docastle)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &docastle_state::docastle_map);
- m_maincpu->set_addrmap(AS_IO, &docastle_state::docastle_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(docastle_map)
+ MCFG_DEVICE_IO_MAP(docastle_io_map)
- Z80(config, m_slave, XTAL(4'000'000));
- m_slave->set_addrmap(AS_PROGRAM, &docastle_state::docastle_map2);
+ MCFG_DEVICE_ADD("slave", Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(docastle_map2)
- Z80(config, m_cpu3, XTAL(4'000'000));
- m_cpu3->set_addrmap(AS_PROGRAM, &docastle_state::docastle_map3);
+ MCFG_DEVICE_ADD("cpu3", Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(docastle_map3)
TMS1025(config, m_inp[0]);
m_inp[0]->read_port1_callback().set_ioport("DSW2");
@@ -625,10 +625,10 @@ void docastle_state::docastle(machine_config &config)
m_crtc->out_vsync_callback().append_inputline(m_cpu3, INPUT_LINE_NMI);
m_crtc->out_hsync_callback().set(FUNC(docastle_state::docastle_tint));
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(9'828'000)/2, 0x138, 8, 0x100-8, 0x108, 0, 0xc0); // from CRTC
- screen.set_screen_update(FUNC(docastle_state::screen_update_docastle));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(9'828'000)/2, 0x138, 8, 0x100-8, 0x108, 0, 0xc0) // from CRTC
+ MCFG_SCREEN_UPDATE_DRIVER(docastle_state, screen_update_docastle)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_docastle);
PALETTE(config, m_palette, FUNC(docastle_state::docastle_palette), 512);
@@ -640,26 +640,28 @@ void docastle_state::docastle(machine_config &config)
SN76489A(config, "sn2", 4_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 0.25);
SN76489A(config, "sn3", 4_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 0.25);
SN76489A(config, "sn4", 4_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
-void docastle_state::dorunrun(machine_config &config)
-{
+MACHINE_CONFIG_START(docastle_state::dorunrun)
docastle(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &docastle_state::dorunrun_map);
- m_slave->set_addrmap(AS_PROGRAM, &docastle_state::dorunrun_map2);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dorunrun_map)
+
+ MCFG_DEVICE_MODIFY("slave")
+ MCFG_DEVICE_PROGRAM_MAP(dorunrun_map2)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(docastle_state,dorunrun)
-}
+MACHINE_CONFIG_END
-void docastle_state::idsoccer(machine_config &config)
-{
+MACHINE_CONFIG_START(docastle_state::idsoccer)
docastle(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &docastle_state::idsoccer_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(idsoccer_map)
m_inp[0]->read_port4_callback().set_ioport("JOYS_RIGHT");
m_inp[1]->read_port4_callback().set_ioport("JOYS_RIGHT").rshift(4);
@@ -668,11 +670,11 @@ void docastle_state::idsoccer(machine_config &config)
MCFG_VIDEO_START_OVERRIDE(docastle_state,dorunrun)
/* sound hardware */
- MSM5205(config, m_msm, XTAL(384'000)); // Crystal verified on American Soccer board.
- m_msm->vck_legacy_callback().set(FUNC(docastle_state::idsoccer_adpcm_int)); // interrupt function
- m_msm->set_prescaler_selector(msm5205_device::S64_4B); // 6 kHz ???
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.40);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000)) // Crystal verified on American Soccer board.
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, docastle_state, idsoccer_adpcm_int)) // interrupt function
+ MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) // 6 kHz ???
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/dogfgt.cpp b/src/mame/drivers/dogfgt.cpp
index b419707cf60..c588d603b85 100644
--- a/src/mame/drivers/dogfgt.cpp
+++ b/src/mame/drivers/dogfgt.cpp
@@ -37,11 +37,11 @@ WRITE8_MEMBER(dogfgt_state::soundcontrol_w)
{
/* bit 5 goes to 8910 #0 BDIR pin */
if ((m_last_snd_ctrl & 0x20) == 0x20 && (data & 0x20) == 0x00)
- m_ay[0]->data_address_w(m_last_snd_ctrl >> 4, m_soundlatch);
+ m_ay[0]->data_address_w(space, m_last_snd_ctrl >> 4, m_soundlatch);
/* bit 7 goes to 8910 #1 BDIR pin */
if ((m_last_snd_ctrl & 0x80) == 0x80 && (data & 0x80) == 0x00)
- m_ay[1]->data_address_w(m_last_snd_ctrl >> 6, m_soundlatch);
+ m_ay[1]->data_address_w(space, m_last_snd_ctrl >> 6, m_soundlatch);
m_last_snd_ctrl = data;
}
@@ -227,26 +227,26 @@ void dogfgt_state::machine_reset()
}
-void dogfgt_state::dogfgt(machine_config &config)
-{
+MACHINE_CONFIG_START(dogfgt_state::dogfgt)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 1500000); /* 1.5 MHz ???? */
- m_maincpu->set_addrmap(AS_PROGRAM, &dogfgt_state::main_map);
- m_maincpu->set_periodic_int(FUNC(dogfgt_state::irq0_line_hold), attotime::from_hz(16*60)); /* ? controls music tempo */
+ MCFG_DEVICE_ADD(m_maincpu, M6502, 1500000) /* 1.5 MHz ???? */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(dogfgt_state, irq0_line_hold, 16*60) /* ? controls music tempo */
- M6502(config, m_subcpu, 1500000); /* 1.5 MHz ???? */
- m_subcpu->set_addrmap(AS_PROGRAM, &dogfgt_state::sub_map);
+ MCFG_DEVICE_ADD(m_subcpu, M6502, 1500000) /* 1.5 MHz ???? */
+ MCFG_DEVICE_PROGRAM_MAP(sub_map)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- m_screen->set_screen_update(FUNC(dogfgt_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(dogfgt_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_dogfgt);
PALETTE(config, m_palette, FUNC(dogfgt_state::dogfgt_palette)).set_format(palette_device::BGR_233, 16 + 64);
@@ -256,7 +256,7 @@ void dogfgt_state::dogfgt(machine_config &config)
AY8910(config, m_ay[0], 1500000).add_route(ALL_OUTPUTS, "mono", 0.30);
AY8910(config, m_ay[1], 1500000).add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/dominob.cpp b/src/mame/drivers/dominob.cpp
index 3daa7ceede5..913b7da384e 100644
--- a/src/mame/drivers/dominob.cpp
+++ b/src/mame/drivers/dominob.cpp
@@ -302,22 +302,22 @@ static GFXDECODE_START( gfx_dominob )
GFXDECODE_END
-void dominob_state::dominob(machine_config &config)
-{
+MACHINE_CONFIG_START(dominob_state::dominob)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &dominob_state::memmap);
- m_maincpu->set_addrmap(AS_IO, &dominob_state::portmap);
- m_maincpu->set_vblank_int("screen", FUNC(dominob_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,XTAL(12'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(memmap)
+ MCFG_DEVICE_IO_MAP(portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dominob_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.1524);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(dominob_state::screen_update_dominob));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.1524)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(dominob_state, screen_update_dominob)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_dominob);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 512);
@@ -327,7 +327,7 @@ void dominob_state::dominob(machine_config &config)
ym2149_device &aysnd(YM2149(config, "aysnd", XTAL(12'000'000)/4));
aysnd.port_b_read_callback().set_ioport("DSW");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/dooyong.cpp b/src/mame/drivers/dooyong.cpp
index 64acce48ce0..d3545a18b82 100644
--- a/src/mame/drivers/dooyong.cpp
+++ b/src/mame/drivers/dooyong.cpp
@@ -1428,9 +1428,9 @@ READ8_MEMBER(dooyong_z80_ym2203_state::unk_r)
***************************************************************************/
-void dooyong_z80_ym2203_state::sound_2203(machine_config &config)
-{
- INPUT_MERGER_ANY_HIGH(config, "soundirq").output_handler().set_inputline(m_audiocpu, 0);
+MACHINE_CONFIG_START(dooyong_z80_ym2203_state::sound_2203)
+ MCFG_INPUT_MERGER_ANY_HIGH("soundirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", 0))
SPEAKER(config, "mono").front_center();
@@ -1445,10 +1445,9 @@ void dooyong_z80_ym2203_state::sound_2203(machine_config &config)
ym2.irq_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<1>));
ym2.port_a_read_callback().set(FUNC(dooyong_z80_ym2203_state::unk_r));
ym2.add_route(ALL_OUTPUTS, "mono", 0.40);
-}
+MACHINE_CONFIG_END
-void dooyong_z80_state::sound_2151(machine_config &config)
-{
+MACHINE_CONFIG_START(dooyong_z80_state::sound_2151)
SPEAKER(config, "mono").front_center();
GENERIC_LATCH_8(config, "soundlatch");
@@ -1458,11 +1457,11 @@ void dooyong_z80_state::sound_2151(machine_config &config)
ymsnd.add_route(0, "mono", 0.50);
ymsnd.add_route(1, "mono", 0.50);
- OKIM6295(config, "oki", 1_MHz_XTAL, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1_MHz_XTAL, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+MACHINE_CONFIG_END
-void dooyong_state::sound_2151_4mhz(machine_config &config)
-{
+MACHINE_CONFIG_START(dooyong_state::sound_2151_4mhz)
SPEAKER(config, "mono").front_center();
GENERIC_LATCH_8(config, "soundlatch");
@@ -1472,32 +1471,33 @@ void dooyong_state::sound_2151_4mhz(machine_config &config)
ymsnd.add_route(0, "mono", 0.50);
ymsnd.add_route(1, "mono", 0.50);
- OKIM6295(config, "oki", 16_MHz_XTAL/16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60); /* 1MHz (16MHz/16 for most, 8Mhz/8 for Super-X) */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 16_MHz_XTAL/16, okim6295_device::PIN7_HIGH) /* 1MHz (16MHz/16 for most, 8Mhz/8 for Super-X) */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(dooyong_z80_ym2203_state::lastday)
-void dooyong_z80_ym2203_state::lastday(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 16_MHz_XTAL/2); /* 8MHz verified for Last Day / D-day */
- m_maincpu->set_addrmap(AS_PROGRAM, &dooyong_z80_ym2203_state::lastday_map);
- m_maincpu->set_vblank_int("screen", FUNC(dooyong_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 16_MHz_XTAL/2) /* 8MHz verified for Last Day / D-day */
+ MCFG_DEVICE_PROGRAM_MAP(lastday_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dooyong_state, irq0_line_hold)
- Z80(config, m_audiocpu, 16_MHz_XTAL/4); /* 4MHz verified for Last Day / D-day */
- m_audiocpu->set_addrmap(AS_PROGRAM, &dooyong_z80_ym2203_state::lastday_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 16_MHz_XTAL/4) /* 4MHz verified for Last Day / D-day */
+ MCFG_DEVICE_PROGRAM_MAP(lastday_sound_map)
MCFG_MACHINE_START_OVERRIDE(dooyong_z80_ym2203_state, cpu_z80)
/* video hardware */
- BUFFERED_SPRITERAM8(config, m_spriteram);
+ MCFG_DEVICE_ADD(m_spriteram, BUFFERED_SPRITERAM8)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1 );
- screen.set_screen_update(FUNC(dooyong_z80_ym2203_state::screen_update_lastday));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(dooyong_z80_ym2203_state, screen_update_lastday)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(m_spriteram, buffered_spriteram8_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lastday);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 1024);
@@ -1509,7 +1509,8 @@ void dooyong_z80_ym2203_state::lastday(machine_config &config)
MCFG_VIDEO_START_OVERRIDE(dooyong_z80_ym2203_state, lastday)
/* sound hardware */
- INPUT_MERGER_ANY_HIGH(config, "soundirq").output_handler().set_inputline(m_audiocpu, 0);
+ MCFG_INPUT_MERGER_ANY_HIGH("soundirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", 0))
SPEAKER(config, "mono").front_center();
@@ -1524,31 +1525,31 @@ void dooyong_z80_ym2203_state::lastday(machine_config &config)
ym2.irq_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<1>));
ym2.port_a_read_callback().set(FUNC(dooyong_z80_ym2203_state::unk_r));
ym2.add_route(ALL_OUTPUTS, "mono", 0.40);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(dooyong_z80_ym2203_state::gulfstrm)
-void dooyong_z80_ym2203_state::gulfstrm(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 8000000); /* ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &dooyong_z80_ym2203_state::gulfstrm_map);
- m_maincpu->set_vblank_int("screen", FUNC(dooyong_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 8000000) /* ??? */
+ MCFG_DEVICE_PROGRAM_MAP(gulfstrm_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dooyong_state, irq0_line_hold)
- Z80(config, m_audiocpu, 8000000); /* ??? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &dooyong_z80_ym2203_state::lastday_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 8000000) /* ??? */
+ MCFG_DEVICE_PROGRAM_MAP(lastday_sound_map)
MCFG_MACHINE_START_OVERRIDE(dooyong_z80_ym2203_state, cpu_z80)
/* video hardware */
- BUFFERED_SPRITERAM8(config, m_spriteram);
+ MCFG_DEVICE_ADD(m_spriteram, BUFFERED_SPRITERAM8)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1 );
- screen.set_screen_update(FUNC(dooyong_z80_ym2203_state::screen_update_gulfstrm));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(dooyong_z80_ym2203_state, screen_update_gulfstrm)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(m_spriteram, buffered_spriteram8_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lastday);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024);
@@ -1561,31 +1562,31 @@ void dooyong_z80_ym2203_state::gulfstrm(machine_config &config)
/* sound hardware */
sound_2203(config); /* 3.579545MHz */
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(dooyong_z80_ym2203_state::pollux)
-void dooyong_z80_ym2203_state::pollux(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 16_MHz_XTAL/2); /* 8Mhz */
- m_maincpu->set_addrmap(AS_PROGRAM, &dooyong_z80_ym2203_state::pollux_map);
- m_maincpu->set_vblank_int("screen", FUNC(dooyong_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 16_MHz_XTAL/2) /* 8Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(pollux_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dooyong_state, irq0_line_hold)
- Z80(config, m_audiocpu, 16_MHz_XTAL/4); /* 4Mhz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &dooyong_z80_ym2203_state::pollux_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 16_MHz_XTAL/4) /* 4Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(pollux_sound_map)
MCFG_MACHINE_START_OVERRIDE(dooyong_z80_ym2203_state, cpu_z80)
/* video hardware */
- BUFFERED_SPRITERAM8(config, m_spriteram);
+ MCFG_DEVICE_ADD(m_spriteram, BUFFERED_SPRITERAM8)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1 );
- screen.set_screen_update(FUNC(dooyong_z80_ym2203_state::screen_update_pollux));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(dooyong_z80_ym2203_state, screen_update_pollux)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(m_spriteram, buffered_spriteram8_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lastday);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024*2);
@@ -1598,31 +1599,31 @@ void dooyong_z80_ym2203_state::pollux(machine_config &config)
/* sound hardware */
sound_2203(config); /* 3.579545MHz or 4Mhz ??? */
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(dooyong_z80_state::bluehawk)
-void dooyong_z80_state::bluehawk(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 8000000); /* ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &dooyong_z80_state::bluehawk_map);
- m_maincpu->set_vblank_int("screen", FUNC(dooyong_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 8000000) /* ??? */
+ MCFG_DEVICE_PROGRAM_MAP(bluehawk_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dooyong_state, irq0_line_hold)
- Z80(config, m_audiocpu, 4000000); /* ??? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &dooyong_z80_state::bluehawk_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* ??? */
+ MCFG_DEVICE_PROGRAM_MAP(bluehawk_sound_map)
MCFG_MACHINE_START_OVERRIDE(dooyong_z80_state, cpu_z80)
/* video hardware */
- BUFFERED_SPRITERAM8(config, m_spriteram);
+ MCFG_DEVICE_ADD(m_spriteram, BUFFERED_SPRITERAM8)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1 );
- screen.set_screen_update(FUNC(dooyong_z80_state::screen_update_bluehawk));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(dooyong_z80_state, screen_update_bluehawk)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(m_spriteram, buffered_spriteram8_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_bluehawk);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024);
@@ -1637,31 +1638,31 @@ void dooyong_z80_state::bluehawk(machine_config &config)
/* sound hardware */
sound_2151(config); /* 3.579545MHz or 4Mhz ??? */
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(dooyong_z80_state::flytiger)
-void dooyong_z80_state::flytiger(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 16_MHz_XTAL/2); /* 8MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &dooyong_z80_state::flytiger_map);
- m_maincpu->set_vblank_int("screen", FUNC(dooyong_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 16_MHz_XTAL/2) /* 8MHz */
+ MCFG_DEVICE_PROGRAM_MAP(flytiger_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dooyong_state, irq0_line_hold)
- Z80(config, m_audiocpu, 16_MHz_XTAL/4); /* 4Mhz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &dooyong_z80_state::bluehawk_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 16_MHz_XTAL/4) /* 4Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(bluehawk_sound_map)
MCFG_MACHINE_START_OVERRIDE(dooyong_z80_state, cpu_z80)
/* video hardware */
- BUFFERED_SPRITERAM8(config, m_spriteram);
+ MCFG_DEVICE_ADD(m_spriteram, BUFFERED_SPRITERAM8)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1 );
- screen.set_screen_update(FUNC(dooyong_z80_state::screen_update_flytiger));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(dooyong_z80_state, screen_update_flytiger)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(m_spriteram, buffered_spriteram8_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_flytiger);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024*2);
@@ -1675,28 +1676,28 @@ void dooyong_z80_state::flytiger(machine_config &config)
/* sound hardware */
sound_2151(config);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(dooyong_z80_state::primella)
-void dooyong_z80_state::primella(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 16_MHz_XTAL/2); /* 8MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &dooyong_z80_state::primella_map);
- m_maincpu->set_vblank_int("screen", FUNC(dooyong_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 16_MHz_XTAL/2) /* 8MHz */
+ MCFG_DEVICE_PROGRAM_MAP(primella_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dooyong_state, irq0_line_hold)
- Z80(config, m_audiocpu, 16_MHz_XTAL/4); /* 4MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &dooyong_z80_state::bluehawk_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 16_MHz_XTAL/4) /* 4MHz */
+ MCFG_DEVICE_PROGRAM_MAP(bluehawk_sound_map)
MCFG_MACHINE_START_OVERRIDE(dooyong_z80_state, cpu_z80)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, (64-8)*8-1, 0*8, 32*8-1 );
- screen.set_screen_update(FUNC(dooyong_z80_state::screen_update_primella));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 0*8, 32*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(dooyong_z80_state, screen_update_primella)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_primella);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024);
@@ -1711,7 +1712,7 @@ void dooyong_z80_state::primella(machine_config &config)
/* sound hardware */
sound_2151_4mhz(config); /* PCB has only 1 OSC at 16Mhz */
-}
+MACHINE_CONFIG_END
TIMER_DEVICE_CALLBACK_MEMBER(dooyong_68k_state::scanline)
@@ -1726,28 +1727,28 @@ TIMER_DEVICE_CALLBACK_MEMBER(dooyong_68k_state::scanline)
}
-void rshark_state::dooyong_68k(machine_config &config)
-{
+MACHINE_CONFIG_START(rshark_state::dooyong_68k)
+
// basic machine hardware
- M68000(config, m_maincpu, 8_MHz_XTAL); // 8MHz measured on Super-X
- TIMER(config, "scantimer").configure_scanline(FUNC(rshark_state::scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M68000, 8_MHz_XTAL) // 8MHz measured on Super-X
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", rshark_state, scanline, "screen", 0, 1)
- Z80(config, m_audiocpu, 8_MHz_XTAL/2); // 4MHz measured on Super-X
- m_audiocpu->set_addrmap(AS_PROGRAM, &rshark_state::bluehawk_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 8_MHz_XTAL/2) // 4MHz measured on Super-X
+ MCFG_DEVICE_PROGRAM_MAP(bluehawk_sound_map)
// video hardware
- BUFFERED_SPRITERAM16(config, m_spriteram);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(rshark_state::screen_update_rshark));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_rshark);
+ MCFG_DEVICE_ADD(m_spriteram, BUFFERED_SPRITERAM16)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(rshark_state, screen_update_rshark)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(m_spriteram, buffered_spriteram16_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rshark)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048);
RSHARK_ROM_TILEMAP(config, m_bg[0], m_gfxdecode, 4, "gfx5", 0x00000, "gfx6", 0x60000);
@@ -1760,45 +1761,45 @@ void rshark_state::dooyong_68k(machine_config &config)
// sound hardware
sound_2151_4mhz(config);
-}
+MACHINE_CONFIG_END
-void rshark_state::rshark(machine_config &config)
-{
+MACHINE_CONFIG_START(rshark_state::rshark)
dooyong_68k(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &rshark_state::rshark_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(rshark_map)
+MACHINE_CONFIG_END
-void rshark_state::superx(machine_config &config)
-{
+MACHINE_CONFIG_START(rshark_state::superx)
dooyong_68k(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &rshark_state::superx_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(superx_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(popbingo_state::popbingo)
-void popbingo_state::popbingo(machine_config &config)
-{
// basic machine hardware
- M68000(config, m_maincpu, 20_MHz_XTAL/2); // 10MHz measured
- m_maincpu->set_addrmap(AS_PROGRAM, &popbingo_state::popbingo_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(popbingo_state::scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M68000, 20_MHz_XTAL/2) // 10MHz measured
+ MCFG_DEVICE_PROGRAM_MAP(popbingo_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", popbingo_state, scanline, "screen", 0, 1)
- Z80(config, m_audiocpu, 16_MHz_XTAL/4); // 4MHz measured
- m_audiocpu->set_addrmap(AS_PROGRAM, &popbingo_state::bluehawk_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 16_MHz_XTAL/4) // 4MHz measured
+ MCFG_DEVICE_PROGRAM_MAP(bluehawk_sound_map)
// video hardware
- BUFFERED_SPRITERAM16(config, m_spriteram);
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1);
- m_screen->set_screen_update(FUNC(popbingo_state::screen_update_popbingo));
- m_screen->screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_popbingo);
+ MCFG_DEVICE_ADD(m_spriteram, BUFFERED_SPRITERAM16)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(popbingo_state, screen_update_popbingo)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(m_spriteram, buffered_spriteram16_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_popbingo)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048);
DOOYONG_ROM_TILEMAP(config, m_bg[0], m_gfxdecode, 1, "gfx2", 0x00000);
@@ -1808,7 +1809,7 @@ void popbingo_state::popbingo(machine_config &config)
// sound hardware
sound_2151_4mhz(config);
-}
+MACHINE_CONFIG_END
} // anonymous namespace
diff --git a/src/mame/drivers/dorachan.cpp b/src/mame/drivers/dorachan.cpp
index 9c08186054f..a4c377f8cf2 100644
--- a/src/mame/drivers/dorachan.cpp
+++ b/src/mame/drivers/dorachan.cpp
@@ -226,23 +226,23 @@ void dorachan_state::machine_reset()
m_prot_value = 0;
}
-void dorachan_state::dorachan(machine_config &config)
-{
+MACHINE_CONFIG_START(dorachan_state::dorachan)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &dorachan_state::dorachan_map);
- m_maincpu->set_addrmap(AS_IO, &dorachan_state::dorachan_io_map);
- m_maincpu->set_periodic_int(FUNC(dorachan_state::irq0_line_hold), attotime::from_hz(2*60));
+ MCFG_DEVICE_ADD("maincpu", Z80, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(dorachan_map)
+ MCFG_DEVICE_IO_MAP(dorachan_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(dorachan_state, irq0_line_hold, 2*60)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- m_screen->set_refresh_hz(60);
- m_screen->set_screen_update(FUNC(dorachan_state::screen_update_dorachan));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_UPDATE_DRIVER(dorachan_state, screen_update_dorachan)
PALETTE(config, m_palette, palette_device::BGR_3BIT);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/dotrikun.cpp b/src/mame/drivers/dotrikun.cpp
index 0a379652e2c..0a224a121e5 100644
--- a/src/mame/drivers/dotrikun.cpp
+++ b/src/mame/drivers/dotrikun.cpp
@@ -197,27 +197,26 @@ void dotrikun_state::machine_reset()
m_color = 0;
}
-void dotrikun_state::dotrikun(machine_config &config)
-{
- /* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &dotrikun_state::dotrikun_map);
- m_maincpu->set_addrmap(AS_IO, &dotrikun_state::io_map);
+MACHINE_CONFIG_START(dotrikun_state::dotrikun)
- TIMER(config, "scanline_on").configure_scanline(FUNC(dotrikun_state::scanline_on), "screen", 0, 1);
- TIMER(config, m_scanline_off_timer).configure_generic(FUNC(dotrikun_state::scanline_off));
- TIMER(config, m_interrupt_timer).configure_generic(FUNC(dotrikun_state::interrupt));
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(dotrikun_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scanline_on", dotrikun_state, scanline_on, "screen", 0, 1)
+ MCFG_TIMER_DRIVER_ADD("scanline_off", dotrikun_state, scanline_off)
+ MCFG_TIMER_DRIVER_ADD("interrupt", dotrikun_state, interrupt)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MASTER_CLOCK, 128+128, 0, 128, 192+64, 0, 192);
- m_screen->set_screen_update(FUNC(dotrikun_state::screen_update));
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK, 128+128, 0, 128, 192+64, 0, 192)
+ MCFG_SCREEN_UPDATE_DRIVER(dotrikun_state, screen_update)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::RGB_3BIT);
/* no sound hardware */
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/dps1.cpp b/src/mame/drivers/dps1.cpp
index 370c1673fa8..0690daab4f6 100644
--- a/src/mame/drivers/dps1.cpp
+++ b/src/mame/drivers/dps1.cpp
@@ -38,9 +38,6 @@ public:
void init_dps1();
-protected:
- virtual void machine_reset() override;
-
private:
DECLARE_WRITE8_MEMBER(portb2_w);
DECLARE_WRITE8_MEMBER(portb4_w);
@@ -52,6 +49,7 @@ private:
DECLARE_READ8_MEMBER(portff_r);
DECLARE_WRITE8_MEMBER(portff_w);
DECLARE_WRITE_LINE_MEMBER(fdc_drq_w);
+ DECLARE_MACHINE_RESET(dps1);
void io_map(address_map &map);
void mem_map(address_map &map);
@@ -158,18 +156,18 @@ WRITE_LINE_MEMBER( dps1_state::fdc_drq_w )
address_space& mem = m_maincpu->space(AS_PROGRAM);
if (m_dma_dir)
{ // disk to mem
- mem.write_byte(m_dma_adr, m_fdc->dma_r());
+ mem.write_byte(m_dma_adr, m_fdc->mdma_r(mem, 0));
}
else
{ // mem to disk
- m_fdc->dma_w(mem.read_byte(m_dma_adr));
+ m_fdc->mdma_w(mem, 0, mem.read_byte(m_dma_adr));
}
m_dma_adr++;
}
// else take /dack high (unsupported)
}
-void dps1_state::machine_reset()
+MACHINE_RESET_MEMBER( dps1_state, dps1 )
{
membank("bankr0")->set_entry(1); // point at rom
membank("bankw0")->set_entry(0); // always write to ram
@@ -198,13 +196,14 @@ static void floppies(device_slot_interface &device)
device.option_add("floppy0", FLOPPY_8_DSDD);
}
-void dps1_state::dps1(machine_config &config)
-{
+MACHINE_CONFIG_START(dps1_state::dps1)
// basic machine hardware
Z80(config, m_maincpu, 4_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &dps1_state::mem_map);
m_maincpu->set_addrmap(AS_IO, &dps1_state::io_map);
+ MCFG_MACHINE_RESET_OVERRIDE(dps1_state, dps1)
+
/* video hardware */
mc2661_device &uart(MC2661(config, "uart", 5.0688_MHz_XTAL)); // Signetics 2651N
uart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
@@ -223,12 +222,14 @@ void dps1_state::dps1(machine_config &config)
UPD765A(config, m_fdc, 16_MHz_XTAL / 2, false, true);
//m_fdc->intrq_wr_callback().set(FUNC(dps1_state::fdc_int_w)); // doesn't appear to be used
m_fdc->drq_wr_callback().set(FUNC(dps1_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, "fdc:0", floppies, "floppy0", floppy_image_device::default_floppy_formats).enable_sound(true);
- //FLOPPY_CONNECTOR(config, "fdc:1", floppies, "floppy1", floppy_image_device::default_floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", floppies, "floppy0", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ //MCFG_FLOPPY_DRIVE_ADD("fdc:1", floppies, "floppy1", floppy_image_device::default_floppy_formats)
+ //MCFG_FLOPPY_DRIVE_SOUND(true)
// software lists
- SOFTWARE_LIST(config, "flop_list").set_original("dps1");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "dps1")
+MACHINE_CONFIG_END
ROM_START( dps1 )
ROM_REGION( 0x800, "maincpu", 0 )
diff --git a/src/mame/drivers/dragon.cpp b/src/mame/drivers/dragon.cpp
index c336b62b628..17d373ef071 100644
--- a/src/mame/drivers/dragon.cpp
+++ b/src/mame/drivers/dragon.cpp
@@ -187,13 +187,13 @@ static void dragon_alpha_floppies(device_slot_interface &device)
device.option_add("dd", FLOPPY_35_DD);
}
-void dragon_state::dragon_base(machine_config &config)
-{
- this->set_clock(14.218_MHz_XTAL / 16);
+MACHINE_CONFIG_START(dragon_state::dragon_base)
+ MCFG_DEVICE_MODIFY(":")
+ MCFG_DEVICE_CLOCK(14.218_MHz_XTAL / 16)
// basic machine hardware
- MC6809E(config, m_maincpu, DERIVED_CLOCK(1, 1));
- m_maincpu->set_addrmap(AS_PROGRAM, &dragon_state::dragon_mem);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, DERIVED_CLOCK(1, 1))
+ MCFG_DEVICE_PROGRAM_MAP(dragon_mem)
// devices
pia6821_device &pia0(PIA6821(config, PIA0_TAG, 0));
@@ -216,21 +216,20 @@ void dragon_state::dragon_base(machine_config &config)
SAM6883(config, m_sam, 14.218_MHz_XTAL, m_maincpu);
m_sam->res_rd_callback().set(FUNC(dragon_state::sam_read));
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(coco_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED);
- m_cassette->set_interface("dragon_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(coco_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
+ MCFG_CASSETTE_INTERFACE("dragon_cass")
- PRINTER(config, m_printer, 0);
+ MCFG_DEVICE_ADD(PRINTER_TAG, PRINTER, 0)
// video hardware
- SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER);
+ MCFG_SCREEN_MC6847_PAL_ADD(SCREEN_TAG, VDG_TAG)
- MC6847_PAL(config, m_vdg, 4.433619_MHz_XTAL);
- m_vdg->set_screen(SCREEN_TAG);
- m_vdg->hsync_wr_callback().set(FUNC(dragon_state::horizontal_sync));
- m_vdg->fsync_wr_callback().set(FUNC(dragon_state::field_sync));
- m_vdg->input_callback().set(m_sam, FUNC(sam6883_device::display_read));
+ MCFG_DEVICE_ADD(VDG_TAG, MC6847_PAL, 4.433619_MHz_XTAL)
+ MCFG_MC6847_HSYNC_CALLBACK(WRITELINE(*this, dragon_state, horizontal_sync))
+ MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(*this, dragon_state, field_sync))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(m_sam, sam6883_device, display_read))
// sound hardware
coco_sound(config);
@@ -239,14 +238,13 @@ void dragon_state::dragon_base(machine_config &config)
coco_floating(config);
// software lists
- SOFTWARE_LIST(config, "dragon_cart_list").set_original("dragon_cart");
- SOFTWARE_LIST(config, "dragon_cass_list").set_original("dragon_cass");
- SOFTWARE_LIST(config, "dragon_flop_list").set_original("dragon_flop");
- SOFTWARE_LIST(config, "coco_cart_list").set_compatible("coco_cart");
-}
+ MCFG_SOFTWARE_LIST_ADD("dragon_cart_list", "dragon_cart")
+ MCFG_SOFTWARE_LIST_ADD("dragon_cass_list", "dragon_cass")
+ MCFG_SOFTWARE_LIST_ADD("dragon_flop_list", "dragon_flop")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("coco_cart_list", "coco_cart")
+MACHINE_CONFIG_END
-void dragon_state::dragon32(machine_config &config)
-{
+MACHINE_CONFIG_START(dragon_state::dragon32)
dragon_base(config);
// internal ram
RAM(config, m_ram).set_default_size("32K").set_extra_options("64K");
@@ -256,10 +254,9 @@ void dragon_state::dragon32(machine_config &config)
cartslot.cart_callback().set([this] (int state) { cart_w(state != 0); }); // lambda because name is overloaded
cartslot.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
cartslot.halt_callback().set_inputline(m_maincpu, INPUT_LINE_HALT);
-}
+MACHINE_CONFIG_END
-void dragon64_state::dragon64(machine_config &config)
-{
+MACHINE_CONFIG_START(dragon64_state::dragon64)
dragon_base(config);
// internal ram
RAM(config, m_ram).set_default_size("64K");
@@ -275,36 +272,34 @@ void dragon64_state::dragon64(machine_config &config)
acia.set_xtal(1.8432_MHz_XTAL);
// software lists
- SOFTWARE_LIST(config, "dragon_flex_list").set_original("dragon_flex");
- SOFTWARE_LIST(config, "dragon_os9_list").set_original("dragon_os9");
-}
+ MCFG_SOFTWARE_LIST_ADD("dragon_flex_list", "dragon_flex")
+ MCFG_SOFTWARE_LIST_ADD("dragon_os9_list", "dragon_os9")
+MACHINE_CONFIG_END
-void dragon64_state::dragon64h(machine_config &config)
-{
+MACHINE_CONFIG_START(dragon64_state::dragon64h)
dragon64(config);
// Replace M6809 with HD6309
- HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
- m_maincpu->set_addrmap(AS_PROGRAM, &dragon64_state::dragon_mem);
+ MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
+ MCFG_DEVICE_PROGRAM_MAP(dragon_mem)
m_ram->set_default_size("64K");
-}
+MACHINE_CONFIG_END
-void dragon200e_state::dragon200e(machine_config &config)
-{
+MACHINE_CONFIG_START(dragon200e_state::dragon200e)
dragon64(config);
// video hardware
- m_vdg->set_get_char_rom(FUNC(dragon200e_state::char_rom_r));
-}
+ MCFG_DEVICE_MODIFY(VDG_TAG)
+ MCFG_MC6847_CHARROM_CALLBACK(dragon200e_state, char_rom_r)
+MACHINE_CONFIG_END
-void d64plus_state::d64plus(machine_config &config)
-{
+MACHINE_CONFIG_START(d64plus_state::d64plus)
dragon64(config);
// video hardware
- screen_device &plus_screen(SCREEN(config, "plus_screen", SCREEN_TYPE_RASTER));
- plus_screen.set_refresh_hz(50);
- plus_screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- plus_screen.set_size(640, 264);
- plus_screen.set_visarea_full();
- plus_screen.set_screen_update("crtc", FUNC(hd6845_device::screen_update));
+ MCFG_SCREEN_ADD("plus_screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 264)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 264-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", hd6845_device, screen_update)
PALETTE(config, m_palette, palette_device::MONOCHROME);
// crtc
@@ -313,10 +308,9 @@ void d64plus_state::d64plus(machine_config &config)
m_crtc->set_show_border_area(false);
m_crtc->set_char_width(8);
m_crtc->set_update_row_callback(FUNC(d64plus_state::crtc_update_row), this);
-}
+MACHINE_CONFIG_END
-void dragon_alpha_state::dgnalpha(machine_config &config)
-{
+MACHINE_CONFIG_START(dragon_alpha_state::dgnalpha)
dragon_base(config);
// internal ram
RAM(config, RAM_TAG).set_default_size("64K");
@@ -336,10 +330,14 @@ void dragon_alpha_state::dgnalpha(machine_config &config)
m_fdc->intrq_wr_callback().set(FUNC(dragon_alpha_state::fdc_intrq_w));
m_fdc->drq_wr_callback().set(FUNC(dragon_alpha_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, WD2797_TAG ":0", dragon_alpha_floppies, "dd", dragon_alpha_state::dragon_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, WD2797_TAG ":1", dragon_alpha_floppies, "dd", dragon_alpha_state::dragon_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, WD2797_TAG ":2", dragon_alpha_floppies, nullptr, dragon_alpha_state::dragon_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, WD2797_TAG ":3", dragon_alpha_floppies, nullptr, dragon_alpha_state::dragon_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":0", dragon_alpha_floppies, "dd", dragon_alpha_state::dragon_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":1", dragon_alpha_floppies, "dd", dragon_alpha_state::dragon_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":2", dragon_alpha_floppies, nullptr, dragon_alpha_state::dragon_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":3", dragon_alpha_floppies, nullptr, dragon_alpha_state::dragon_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
// sound hardware
ay8912_device &ay8912(AY8912(config, AY8912_TAG, 1000000));
@@ -354,37 +352,32 @@ void dragon_alpha_state::dgnalpha(machine_config &config)
pia2.irqb_handler().set(FUNC(dragon_alpha_state::pia2_firq_b));
// software lists
- SOFTWARE_LIST(config, "dgnalpha_flop_list").set_original("dgnalpha_flop");
- SOFTWARE_LIST(config, "dragon_flex_list").set_original("dragon_flex");
- SOFTWARE_LIST(config, "dragon_os9_list").set_original("dragon_os9");
-}
+ MCFG_SOFTWARE_LIST_ADD("dgnalpha_flop_list", "dgnalpha_flop")
+ MCFG_SOFTWARE_LIST_ADD("dragon_flex_list", "dragon_flex")
+ MCFG_SOFTWARE_LIST_ADD("dragon_os9_list", "dragon_os9")
+MACHINE_CONFIG_END
-void dragon64_state::tanodr64(machine_config &config)
-{
+MACHINE_CONFIG_START(dragon64_state::tanodr64)
dragon64(config);
- this->set_clock(14.318181_MHz_XTAL / 16);
-
- m_sam->set_clock(14.318181_MHz_XTAL);
+ MCFG_DEVICE_MODIFY(":")
+ MCFG_DEVICE_CLOCK(14.318181_MHz_XTAL / 4)
// video hardware
- MC6847_NTSC(config.replace(), m_vdg, 14.318181_MHz_XTAL / 4);
- m_vdg->set_screen(SCREEN_TAG);
- m_vdg->hsync_wr_callback().set(FUNC(dragon_state::horizontal_sync));
- m_vdg->fsync_wr_callback().set(FUNC(dragon_state::field_sync));
- m_vdg->input_callback().set(m_sam, FUNC(sam6883_device::display_read));
+ MCFG_SCREEN_MODIFY(SCREEN_TAG)
+ MCFG_SCREEN_REFRESH_RATE(60)
// cartridge
- subdevice<cococart_slot_device>(CARTRIDGE_TAG)->set_default_option("sdtandy_fdc");
-}
+ MCFG_DEVICE_MODIFY(CARTRIDGE_TAG)
+ MCFG_DEVICE_SLOT_INTERFACE(dragon_cart, "sdtandy_fdc", false)
+MACHINE_CONFIG_END
-void dragon64_state::tanodr64h(machine_config &config)
-{
+MACHINE_CONFIG_START(dragon64_state::tanodr64h)
tanodr64(config);
// Replace M6809 CPU with HD6309 CPU
- HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
- m_maincpu->set_addrmap(AS_PROGRAM, &dragon64_state::dragon_mem);
+ MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
+ MCFG_DEVICE_PROGRAM_MAP(dragon_mem)
m_ram->set_default_size("64K");
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/dragrace.cpp b/src/mame/drivers/dragrace.cpp
index 876a8a1527c..6b79539e335 100644
--- a/src/mame/drivers/dragrace.cpp
+++ b/src/mame/drivers/dragrace.cpp
@@ -272,35 +272,35 @@ void dragrace_state::machine_reset()
m_gear[1] = 0;
}
-void dragrace_state::dragrace(machine_config &config)
-{
+MACHINE_CONFIG_START(dragrace_state::dragrace)
+
/* basic machine hardware */
- M6800(config, m_maincpu, 12.096_MHz_XTAL / 12);
- m_maincpu->set_addrmap(AS_PROGRAM, &dragrace_state::dragrace_map);
- m_maincpu->set_periodic_int(FUNC(dragrace_state::irq0_line_hold), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("maincpu", M6800, 12.096_MHz_XTAL / 12)
+ MCFG_DEVICE_PROGRAM_MAP(dragrace_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(dragrace_state, irq0_line_hold, 4*60)
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 8);
- TIMER(config, "frame_timer").configure_periodic(FUNC(dragrace_state::dragrace_frame_callback), attotime::from_hz(60));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("frame_timer", dragrace_state, dragrace_frame_callback, attotime::from_hz(60))
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(256, 262);
- m_screen->set_visarea(0, 255, 0, 239);
- m_screen->set_screen_update(FUNC(dragrace_state::screen_update_dragrace));
- m_screen->set_palette("palette");
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_dragrace);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(256, 262)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
+ MCFG_SCREEN_UPDATE_DRIVER(dragrace_state, screen_update_dragrace)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dragrace)
PALETTE(config, "palette", FUNC(dragrace_state::dragrace_palette), 16);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- DISCRETE(config, m_discrete, dragrace_discrete);
- m_discrete->add_route(0, "lspeaker", 1.0);
- m_discrete->add_route(1, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("discrete", DISCRETE, dragrace_discrete)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
f9334_device &latch_f5(F9334(config, "latch_f5")); // F5
latch_f5.parallel_out_cb().set(FUNC(dragrace_state::speed1_w)).mask(0x1f); // set 3SPEED1-7SPEED1
@@ -324,7 +324,7 @@ void dragrace_state::dragrace(machine_config &config)
latch_e5.q_out_cb<3>().set(m_discrete, FUNC(discrete_device::write_line<DRAGRACE_MOTOR2_EN>)); // Motor2 enable
latch_e5.q_out_cb<5>().set(m_discrete, FUNC(discrete_device::write_line<DRAGRACE_HITONE_EN>)); // HiTone enable
latch_e5.q_out_cb<7>().set_output("led1"); // Player 2 Start Lamp
-}
+MACHINE_CONFIG_END
ROM_START( dragrace )
diff --git a/src/mame/drivers/dreambal.cpp b/src/mame/drivers/dreambal.cpp
index 07169fefc68..5401e207ffb 100644
--- a/src/mame/drivers/dreambal.cpp
+++ b/src/mame/drivers/dreambal.cpp
@@ -311,24 +311,24 @@ void dreambal_state::machine_reset()
}
// xtals = 28.000, 9.8304
-void dreambal_state::dreambal(machine_config &config)
-{
+MACHINE_CONFIG_START(dreambal_state::dreambal)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 28000000/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &dreambal_state::dreambal_map);
- m_maincpu->set_vblank_int("screen", FUNC(dreambal_state::irq6_line_hold)); // 5 valid too?
+ MCFG_DEVICE_ADD("maincpu", M68000, 28000000/2)
+ MCFG_DEVICE_PROGRAM_MAP(dreambal_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dreambal_state, irq6_line_hold) // 5 valid too?
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(dreambal_state::screen_update_dreambal));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(dreambal_state, screen_update_dreambal)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xBGR_444, 0x400/2);
- GFXDECODE(config, "gfxdecode", "palette", gfx_dreambal);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dreambal)
EEPROM_93C46_16BIT(config, "eeprom"); // 93lc46b
@@ -356,8 +356,10 @@ void dreambal_state::dreambal(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 9830400/8, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 9830400/8, okim6295_device::PIN7_HIGH)
+
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/dreamwld.cpp b/src/mame/drivers/dreamwld.cpp
index 8267c94898b..cc93023d745 100644
--- a/src/mame/drivers/dreamwld.cpp
+++ b/src/mame/drivers/dreamwld.cpp
@@ -746,46 +746,48 @@ void dreamwld_state::machine_reset()
}
-void dreamwld_state::baryon(machine_config &config)
-{
+MACHINE_CONFIG_START(dreamwld_state::baryon)
+
/* basic machine hardware */
- M68EC020(config, m_maincpu, XTAL(32'000'000)/2); /* 16MHz verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &dreamwld_state::baryon_map);
- m_maincpu->set_vblank_int("screen", FUNC(dreamwld_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68EC020, XTAL(32'000'000)/2) /* 16MHz verified */
+ MCFG_DEVICE_PROGRAM_MAP(baryon_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dreamwld_state, irq4_line_hold)
- AT89C52(config, "mcu", XTAL(32'000'000)/2).set_disable(); /* AT89C52 or 87(C)52, unknown clock (value from docs), internal ROMs aren't dumped */
+ MCFG_DEVICE_ADD("mcu", AT89C52, XTAL(32'000'000)/2) /* AT89C52 or 87(C)52, unknown clock (value from docs) */
+ MCFG_DEVICE_DISABLE() /* Internal ROM aren't dumped */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57.793);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(512,256);
- screen.set_visarea(0, 308-1, 0, 224-1);
- screen.set_screen_update(FUNC(dreamwld_state::screen_update_dreamwld));
- screen.screen_vblank().set(FUNC(dreamwld_state::screen_vblank_dreamwld));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57.793)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(512,256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 308-1, 0, 224-1)
+ MCFG_SCREEN_UPDATE_DRIVER(dreamwld_state, screen_update_dreamwld)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, dreamwld_state, screen_vblank_dreamwld))
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1000);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_dreamwld);
SPEAKER(config, "mono").front_center();
- okim6295_device &oki1(OKIM6295(config, "oki1", XTAL(32'000'000)/32, okim6295_device::PIN7_LOW)); /* 1MHz verified */
- oki1.add_route(ALL_OUTPUTS, "mono", 1.00);
- oki1.set_addrmap(0, &dreamwld_state::oki1_map);
-}
+ MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'000'000)/32, okim6295_device::PIN7_LOW) /* 1MHz verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki1_map)
+MACHINE_CONFIG_END
-void dreamwld_state::dreamwld(machine_config &config)
-{
+MACHINE_CONFIG_START(dreamwld_state::dreamwld)
baryon(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &dreamwld_state::dreamwld_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dreamwld_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dreamwld_state, irq4_line_hold)
- okim6295_device &oki2(OKIM6295(config, "oki2", XTAL(32'000'000)/32, okim6295_device::PIN7_LOW)); /* 1MHz verified */
- oki2.add_route(ALL_OUTPUTS, "mono", 1.00);
- oki2.set_addrmap(0, &dreamwld_state::oki2_map);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(32'000'000)/32, okim6295_device::PIN7_LOW) /* 1MHz verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki2_map)
+MACHINE_CONFIG_END
/*
@@ -1021,7 +1023,7 @@ ROM_START( rolcrush )
ROM_LOAD( "mx27c4000_5.bin", 0x000000, 0x80000, CRC(7afa6adb) SHA1(d4049e1068a5f7abf0e14d0b9fbbbc6dfb5d0170) )
ROM_REGION( 0x80000, "oki2", ROMREGION_ERASE00 ) /* OKI Samples - 2nd chip (neither OKI or rom is present, empty sockets) */
- /* not populated */
+ /* not populared */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprite Tiles - decoded */
ROM_LOAD( "m27c160.8.bin", 0x000000, 0x200000, CRC(a509bc36) SHA1(aaa008e07e4b24ff9dbcee5925d6516d1662931c) )
@@ -1055,7 +1057,7 @@ ROM_START( rolcrusha )
ROM_LOAD( "5", 0x000000, 0x80000, CRC(7afa6adb) SHA1(d4049e1068a5f7abf0e14d0b9fbbbc6dfb5d0170) )
ROM_REGION( 0x80000, "oki2", ROMREGION_ERASE00 ) /* OKI Samples - 2nd chip (neither OKI or rom is present, empty sockets) */
- /* not populated */
+ /* not populared */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprite Tiles - decoded */
ROM_LOAD( "8", 0x000000, 0x200000, CRC(01446191) SHA1(b106ed6c085fad617552972db78866a3346e4553) )
@@ -1217,7 +1219,7 @@ ROM_START( gaialast )
ROM_LOAD( "1", 0x000000, 0x80000, CRC(2dbad410) SHA1(bb788ea14bb605be9af9c8f8adec94ad1c17ab55) )
ROM_REGION( 0x80000, "oki2", ROMREGION_ERASE00 ) /* OKI Samples - 2nd chip (neither OKI or rom is present, empty sockets) */
- /* not populated */
+ /* not populared */
ROM_REGION( 0x800000, "gfx1", 0 ) /* Sprite Tiles - decoded */
ROM_LOAD( "10", 0x000000, 0x200000, CRC(5822ef93) SHA1(8ce22c30f8027f35c5f72eb6ce57a74540dd55da) )
diff --git a/src/mame/drivers/drgnmst.cpp b/src/mame/drivers/drgnmst.cpp
index 5928ea8497c..e731f9dbce3 100644
--- a/src/mame/drivers/drgnmst.cpp
+++ b/src/mame/drivers/drgnmst.cpp
@@ -77,8 +77,8 @@ READ8_MEMBER(drgnmst_state::snd_command_r)
switch (m_oki_control & 0x1f)
{
- case 0x12: data = (m_oki[1]->read() & 0x0f); break;
- case 0x16: data = (m_oki[0]->read() & 0x0f); break;
+ case 0x12: data = (m_oki[1]->read(space, 0) & 0x0f); break;
+ case 0x16: data = (m_oki[0]->read(space, 0) & 0x0f); break;
case 0x0b:
case 0x0f: data = m_snd_command; break;
default: break;
@@ -160,17 +160,17 @@ WRITE8_MEMBER(drgnmst_state::snd_control_w)
switch (m_oki_control & 0x1f)
{
- case 0x11:
+ case 0x11:
// logerror("Writing %02x to OKI1", m_oki_command);
// logerror(", PortC=%02x, Code=%02x, Bank0=%01x, Bank1=%01x\n", m_oki_control, m_snd_command, m_oki_bank[0], m_oki_bank[1]);
- m_oki[1]->write(m_oki_command);
- break;
- case 0x15:
+ m_oki[1]->write(space, 0, m_oki_command);
+ break;
+ case 0x15:
// logerror("Writing %02x to OKI0", m_oki_command);
// logerror(", PortC=%02x, Code=%02x, Bank0=%01x, Bank1=%01x\n", m_oki_control, m_snd_command, m_oki_bank[0], m_oki_bank[1]);
- m_oki[0]->write(m_oki_command);
- break;
- default: break;
+ m_oki[0]->write(space, 0, m_oki_command);
+ break;
+ default: break;
}
}
@@ -373,11 +373,11 @@ void drgnmst_state::machine_reset()
m_oki_bank[0] = 0;
}
-void drgnmst_state::drgnmst(machine_config &config)
-{
- M68000(config, m_maincpu, 12_MHz_XTAL); /* Confirmed */
- m_maincpu->set_addrmap(AS_PROGRAM, &drgnmst_state::drgnmst_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(drgnmst_state::irq2_line_hold));
+MACHINE_CONFIG_START(drgnmst_state::drgnmst)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 12_MHz_XTAL) /* Confirmed */
+ MCFG_DEVICE_PROGRAM_MAP(drgnmst_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", drgnmst_state, irq2_line_hold)
PIC16C55(config, m_audiocpu, 32_MHz_XTAL / 8); /* 4MHz - Confirmed */
m_audiocpu->read_a().set(FUNC(drgnmst_state::pic16c5x_port0_r));
@@ -389,26 +389,26 @@ void drgnmst_state::drgnmst(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_drgnmst);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, 56*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(drgnmst_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, 56*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(drgnmst_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(2, &drgnmst_state::drgnmst_IIIIRRRRGGGGBBBB, 0x2000);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki[0], 32_MHz_XTAL / 32, okim6295_device::PIN7_HIGH);
- m_oki[0]->set_addrmap(0, &drgnmst_state::drgnmst_oki1_map);
- m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 32_MHz_XTAL / 32, okim6295_device::PIN7_HIGH)
+ MCFG_DEVICE_ADDRESS_MAP(0, drgnmst_oki1_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
- OKIM6295(config, m_oki[1], 32_MHz_XTAL / 32, okim6295_device::PIN7_HIGH);
- m_oki[1]->add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 32_MHz_XTAL / 32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
ROM_START( drgnmst )
diff --git a/src/mame/drivers/dribling.cpp b/src/mame/drivers/dribling.cpp
index 107dedfec10..736a9ed58fe 100644
--- a/src/mame/drivers/dribling.cpp
+++ b/src/mame/drivers/dribling.cpp
@@ -268,13 +268,13 @@ void dribling_state::machine_reset()
}
-void dribling_state::dribling(machine_config &config)
-{
+MACHINE_CONFIG_START(dribling_state::dribling)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 20_MHz_XTAL / 4); // XTAL verified, divider not
- m_maincpu->set_addrmap(AS_PROGRAM, &dribling_state::dribling_map);
- m_maincpu->set_addrmap(AS_IO, &dribling_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(dribling_state::dribling_irq_gen));
+ MCFG_DEVICE_ADD("maincpu", Z80, 5000000)
+ MCFG_DEVICE_PROGRAM_MAP(dribling_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dribling_state, dribling_irq_gen)
I8255A(config, m_ppi8255_0);
m_ppi8255_0->in_pa_callback().set(FUNC(dribling_state::dsr_r));
@@ -290,19 +290,19 @@ void dribling_state::dribling(machine_config &config)
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(256, 256);
- screen.set_visarea(0, 255, 40, 255);
- screen.set_screen_update(FUNC(dribling_state::screen_update_dribling));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 40, 255)
+ MCFG_SCREEN_UPDATE_DRIVER(dribling_state, screen_update_dribling)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(dribling_state::dribling_palette), 256);
/* sound hardware */
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/drmicro.cpp b/src/mame/drivers/drmicro.cpp
index 5dff7a2e260..3aad808e81c 100644
--- a/src/mame/drivers/drmicro.cpp
+++ b/src/mame/drivers/drmicro.cpp
@@ -87,9 +87,9 @@ void drmicro_state::drmicro_map(address_map &map)
void drmicro_state::io_map(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).portr("P1").w("sn1", FUNC(sn76496_device::write));
- map(0x01, 0x01).portr("P2").w("sn2", FUNC(sn76496_device::write));
- map(0x02, 0x02).w("sn3", FUNC(sn76496_device::write));
+ map(0x00, 0x00).portr("P1").w("sn1", FUNC(sn76496_device::command_w));
+ map(0x01, 0x01).portr("P2").w("sn2", FUNC(sn76496_device::command_w));
+ map(0x02, 0x02).w("sn3", FUNC(sn76496_device::command_w));
map(0x03, 0x03).portr("DSW1").w(FUNC(drmicro_state::pcm_set_w));
map(0x04, 0x04).portr("DSW2").w(FUNC(drmicro_state::nmi_enable_w));
map(0x05, 0x05).noprw(); // unused? / watchdog?
@@ -240,24 +240,25 @@ void drmicro_state::machine_reset()
}
-void drmicro_state::drmicro(machine_config &config)
-{
+MACHINE_CONFIG_START(drmicro_state::drmicro)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MCLK/6); /* 3.072MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &drmicro_state::drmicro_map);
- m_maincpu->set_addrmap(AS_IO, &drmicro_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(drmicro_state::drmicro_interrupt));
+ MCFG_DEVICE_ADD("maincpu", Z80,MCLK/6) /* 3.072MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(drmicro_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", drmicro_state, drmicro_interrupt)
+
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
- config.m_minimum_quantum = attotime::from_hz(60);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(drmicro_state::screen_update_drmicro));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(drmicro_state, screen_update_drmicro)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_drmicro);
PALETTE(config, m_palette, FUNC(drmicro_state::drmicro_palette), 512, 32);
@@ -265,15 +266,20 @@ void drmicro_state::drmicro(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76496(config, "sn1", MCLK/4).add_route(ALL_OUTPUTS, "mono", 0.50);
- SN76496(config, "sn2", MCLK/4).add_route(ALL_OUTPUTS, "mono", 0.50);
- SN76496(config, "sn3", MCLK/4).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("sn1", SN76496, MCLK/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(drmicro_state::pcm_w)); /* IRQ handler */
- m_msm->set_prescaler_selector(msm5205_device::S64_4B); /* 6 KHz */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.75);
-}
+ MCFG_DEVICE_ADD("sn2", SN76496, MCLK/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+
+ MCFG_DEVICE_ADD("sn3", SN76496, MCLK/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, drmicro_state, pcm_w)) /* IRQ handler */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) /* 6 KHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/drtomy.cpp b/src/mame/drivers/drtomy.cpp
index 722585083db..35e0857e9cb 100644
--- a/src/mame/drivers/drtomy.cpp
+++ b/src/mame/drivers/drtomy.cpp
@@ -306,22 +306,22 @@ void drtomy_state::machine_reset()
m_oki_bank = 0;
}
-void drtomy_state::drtomy(machine_config &config)
-{
+MACHINE_CONFIG_START(drtomy_state::drtomy)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 24000000/2); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &drtomy_state::drtomy_map);
- m_maincpu->set_vblank_int("screen", FUNC(drtomy_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000,24000000/2) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(drtomy_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", drtomy_state, irq6_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*16, 32*16);
- screen.set_visarea(0, 320-1, 16, 256-1);
- screen.set_screen_update(FUNC(drtomy_state::screen_update_drtomy));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*16, 32*16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(drtomy_state, screen_update_drtomy)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_drtomy);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024);
@@ -329,8 +329,9 @@ void drtomy_state::drtomy(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, 26000000/16, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 0.8);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 26000000/16, okim6295_device::PIN7_LOW)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.8)
+MACHINE_CONFIG_END
ROM_START( drtomy )
diff --git a/src/mame/drivers/drw80pkr.cpp b/src/mame/drivers/drw80pkr.cpp
index 4cbdce3e6f1..6396fef640c 100644
--- a/src/mame/drivers/drw80pkr.cpp
+++ b/src/mame/drivers/drw80pkr.cpp
@@ -201,11 +201,11 @@ WRITE8_MEMBER(drw80pkr_state::io_w)
// ay8910 control port
if (m_p1 == 0xfc)
- m_aysnd->address_w(data);
+ m_aysnd->address_w(space, 0, data);
// ay8910_write_port_0_w
if (m_p1 == 0xfe)
- m_aysnd->data_w(data);
+ m_aysnd->data_w(space, 0, data);
}
}
@@ -451,8 +451,7 @@ INPUT_PORTS_END
* Machine Driver *
*************************/
-void drw80pkr_state::drw80pkr(machine_config &config)
-{
+MACHINE_CONFIG_START(drw80pkr_state::drw80pkr)
// basic machine hardware
I8039(config, m_maincpu, CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &drw80pkr_state::map);
@@ -469,15 +468,15 @@ void drw80pkr_state::drw80pkr(machine_config &config)
m_maincpu->set_vblank_int("screen", FUNC(drw80pkr_state::irq0_line_hold));
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size((31+1)*8, (31+1)*8);
- screen.set_visarea(0*8, 24*8-1, 0*8, 27*8-1);
- screen.set_screen_update(FUNC(drw80pkr_state::screen_update));
- screen.set_palette("palette");
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_drw80pkr);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE((31+1)*8, (31+1)*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 24*8-1, 0*8, 27*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(drw80pkr_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, "palette", gfx_drw80pkr)
PALETTE(config, "palette", FUNC(drw80pkr_state::drw80pkr_palette), 16 * 16);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -486,7 +485,7 @@ void drw80pkr_state::drw80pkr(machine_config &config)
SPEAKER(config, "mono").front_center();
AY8912(config, m_aysnd, 20000000/12).add_route(ALL_OUTPUTS, "mono", 0.75);
-}
+MACHINE_CONFIG_END
/*************************
* Rom Load *
diff --git a/src/mame/drivers/dual68.cpp b/src/mame/drivers/dual68.cpp
index e49dbf70b65..cb7d57789d4 100644
--- a/src/mame/drivers/dual68.cpp
+++ b/src/mame/drivers/dual68.cpp
@@ -46,7 +46,7 @@ private:
WRITE16_MEMBER( dual68_state::terminal_w )
{
- m_terminal->write(data >> 8);
+ m_terminal->write(space, 0, data >> 8);
}
void dual68_state::dual68_mem(address_map &map)
@@ -93,25 +93,24 @@ void dual68_state::kbd_put(u8 data)
//m_term_data = data;
}
-void dual68_state::dual68(machine_config &config)
-{
+MACHINE_CONFIG_START(dual68_state::dual68)
/* basic machine hardware */
- M68000(config, m_maincpu, 16_MHz_XTAL / 2); // MC68000L8
- m_maincpu->set_addrmap(AS_PROGRAM, &dual68_state::dual68_mem);
+ MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL / 2) // MC68000L8
+ MCFG_DEVICE_PROGRAM_MAP(dual68_mem)
- i8085a_cpu_device &siocpu(I8085A(config, "siocpu", 9.8304_MHz_XTAL)); // NEC D8085AC-2
- siocpu.set_addrmap(AS_PROGRAM, &dual68_state::sio4_mem);
- siocpu.set_addrmap(AS_IO, &dual68_state::sio4_io);
+ MCFG_DEVICE_ADD("siocpu", I8085A, 9.8304_MHz_XTAL) // NEC D8085AC-2
+ MCFG_DEVICE_PROGRAM_MAP(sio4_mem)
+ MCFG_DEVICE_IO_MAP(sio4_io)
/* video hardware */
GENERIC_TERMINAL(config, m_terminal, 0);
m_terminal->set_keyboard_callback(FUNC(dual68_state::kbd_put));
- MC2661(config, "usart1", 9.8304_MHz_XTAL / 2); // SCN2661B
- MC2661(config, "usart2", 9.8304_MHz_XTAL / 2); // SCN2661B
- MC2661(config, "usart3", 9.8304_MHz_XTAL / 2); // SCN2661B
- MC2661(config, "usart4", 9.8304_MHz_XTAL / 2); // SCN2661B
-}
+ MCFG_DEVICE_ADD("usart1", MC2661, 9.8304_MHz_XTAL / 2) // SCN2661B
+ MCFG_DEVICE_ADD("usart2", MC2661, 9.8304_MHz_XTAL / 2) // SCN2661B
+ MCFG_DEVICE_ADD("usart3", MC2661, 9.8304_MHz_XTAL / 2) // SCN2661B
+ MCFG_DEVICE_ADD("usart4", MC2661, 9.8304_MHz_XTAL / 2) // SCN2661B
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( dual68 )
diff --git a/src/mame/drivers/duet16.cpp b/src/mame/drivers/duet16.cpp
index a0d31db2481..3fb6656fb74 100644
--- a/src/mame/drivers/duet16.cpp
+++ b/src/mame/drivers/duet16.cpp
@@ -5,7 +5,6 @@
#include "cpu/i86/i86.h"
#include "cpu/mcs48/mcs48.h"
#include "imagedev/floppy.h"
-#include "machine/i8087.h"
#include "machine/i8251.h"
#include "machine/input_merger.h"
#include "machine/pit8253.h"
@@ -70,7 +69,7 @@ private:
MC6845_UPDATE_ROW(crtc_update_row);
void duet16_io(address_map &map);
void duet16_mem(address_map &map);
- required_device<i8086_cpu_device> m_maincpu;
+ required_device<cpu_device> m_maincpu;
required_device<pic8259_device> m_pic;
required_device<upd765a_device> m_fdc;
required_device<am9517a_device> m_dmac;
@@ -353,19 +352,11 @@ static DEVICE_INPUT_DEFAULTS_START(keyboard)
DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_2 )
DEVICE_INPUT_DEFAULTS_END
-void duet16_state::duet16(machine_config &config)
-{
- I8086(config, m_maincpu, 24_MHz_XTAL / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &duet16_state::duet16_mem);
- m_maincpu->set_addrmap(AS_IO, &duet16_state::duet16_io);
- m_maincpu->set_irq_acknowledge_callback("pic", FUNC(pic8259_device::inta_cb));
- m_maincpu->esc_opcode_handler().set("i8087", FUNC(i8087_device::insn_w));
- m_maincpu->esc_data_handler().set("i8087", FUNC(i8087_device::addr_w));
-
- i8087_device &i8087(I8087(config, "i8087", 24_MHz_XTAL / 3));
- i8087.set_space_86(m_maincpu, AS_PROGRAM);
- i8087.irq().set(m_pic, FUNC(pic8259_device::ir2_w)); // INT87
- i8087.busy().set_inputline(m_maincpu, INPUT_LINE_TEST);
+MACHINE_CONFIG_START(duet16_state::duet16)
+ MCFG_DEVICE_ADD("maincpu", I8086, 24_MHz_XTAL / 3)
+ MCFG_DEVICE_PROGRAM_MAP(duet16_mem)
+ MCFG_DEVICE_IO_MAP(duet16_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic", pic8259_device, inta_cb)
I8741(config, "i8741", 20_MHz_XTAL / 4);
@@ -376,8 +367,8 @@ void duet16_state::duet16(machine_config &config)
m_dmac->out_hreq_callback().set(FUNC(duet16_state::hrq_w));
m_dmac->in_memr_callback().set(FUNC(duet16_state::dma_mem_r));
m_dmac->out_memw_callback().set(FUNC(duet16_state::dma_mem_w));
- m_dmac->in_ior_callback<0>().set(m_fdc, FUNC(upd765a_device::dma_r));
- m_dmac->out_iow_callback<0>().set(m_fdc, FUNC(upd765a_device::dma_w));
+ m_dmac->in_ior_callback<0>().set(m_fdc, FUNC(upd765a_device::mdma_r));
+ m_dmac->out_iow_callback<0>().set(m_fdc, FUNC(upd765a_device::mdma_w));
m_dmac->out_eop_callback().set(m_fdc, FUNC(upd765a_device::tc_line_w));
pit8253_device &bgpit(PIT8253(config, "bgpit", 0));
@@ -410,40 +401,44 @@ void duet16_state::duet16(machine_config &config)
kbd.rxd_handler().set("kbusart", FUNC(i8251_device::write_rxd));
kbd.set_option_device_input_defaults("keyboard", DEVICE_INPUT_DEFAULTS_NAME(keyboard));
- INPUT_MERGER_ANY_HIGH(config, "kbint").output_handler().set(m_pic, FUNC(pic8259_device::ir5_w)); // INT2
+ MCFG_INPUT_MERGER_ANY_HIGH("kbint")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(WRITELINE("pic", pic8259_device, ir5_w)) // INT2
- INPUT_MERGER_ANY_HIGH(config, m_tmint).output_handler().set(m_pic, FUNC(pic8259_device::ir0_w)); // INT6
+ MCFG_INPUT_MERGER_ANY_HIGH("tmint")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(WRITELINE("pic", pic8259_device, ir0_w)) // INT6
UPD765A(config, m_fdc, 8_MHz_XTAL, true, false);
m_fdc->drq_wr_callback().set(m_dmac, FUNC(am9517a_device::dreq0_w));
m_fdc->intrq_wr_callback().set(m_pic, FUNC(pic8259_device::ir3_w)); // INT4
- FLOPPY_CONNECTOR(config, "fdc:0", duet16_floppies, "525qd", floppy_image_device::default_floppy_formats, true);
- FLOPPY_CONNECTOR(config, "fdc:1", duet16_floppies, "525qd", floppy_image_device::default_floppy_formats, true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", duet16_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_SLOT_FIXED(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", duet16_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_SLOT_FIXED(true)
h46505_device &crtc(H46505(config, "crtc", 2000000));
crtc.set_char_width(8);
crtc.set_update_row_callback(FUNC(duet16_state::crtc_update_row), this);
- PALETTE(config, m_pal).set_entries(8);
+ MCFG_PALETTE_ADD("palette", 8)
PALETTE(config, m_chrpal, palette_device::BRG_3BIT);
- GFXDECODE(config, "gfxdecode", m_chrpal, gfx_duet16);
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(640, 480);
- m_screen->set_visarea_full();
- m_screen->set_screen_update("crtc", FUNC(h46505_device::screen_update));
-
- MSM58321(config, m_rtc, 32768_Hz_XTAL);
- m_rtc->d0_handler().set(FUNC(duet16_state::rtc_d0_w));
- m_rtc->d1_handler().set(FUNC(duet16_state::rtc_d1_w));
- m_rtc->d2_handler().set(FUNC(duet16_state::rtc_d2_w));
- m_rtc->d3_handler().set(FUNC(duet16_state::rtc_d3_w));
- m_rtc->busy_handler().set(FUNC(duet16_state::rtc_busy_w));
- m_rtc->set_year0(1980);
- m_rtc->set_default_24h(true);
-}
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "chrpal", gfx_duet16)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", h46505_device, screen_update)
+
+ MCFG_DEVICE_ADD("rtc", MSM58321, 32768_Hz_XTAL)
+ MCFG_MSM58321_D0_HANDLER(WRITELINE(*this, duet16_state, rtc_d0_w))
+ MCFG_MSM58321_D1_HANDLER(WRITELINE(*this, duet16_state, rtc_d1_w))
+ MCFG_MSM58321_D2_HANDLER(WRITELINE(*this, duet16_state, rtc_d2_w))
+ MCFG_MSM58321_D3_HANDLER(WRITELINE(*this, duet16_state, rtc_d3_w))
+ MCFG_MSM58321_BUSY_HANDLER(WRITELINE(*this, duet16_state, rtc_busy_w))
+ MCFG_MSM58321_YEAR0(1980)
+ MCFG_MSM58321_DEFAULT_24H(true)
+MACHINE_CONFIG_END
ROM_START(duet16)
ROM_REGION(0x2000, "rom", 0)
diff --git a/src/mame/drivers/dunhuang.cpp b/src/mame/drivers/dunhuang.cpp
index 2ef9246b647..ab06b3d80db 100644
--- a/src/mame/drivers/dunhuang.cpp
+++ b/src/mame/drivers/dunhuang.cpp
@@ -804,27 +804,27 @@ void dunhuang_state::machine_reset()
}
-void dunhuang_state::dunhuang(machine_config &config)
-{
+MACHINE_CONFIG_START(dunhuang_state::dunhuang)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 12000000/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &dunhuang_state::dunhuang_map);
- m_maincpu->set_addrmap(AS_IO, &dunhuang_state::dunhuang_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(dunhuang_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,12000000/2)
+ MCFG_DEVICE_PROGRAM_MAP(dunhuang_map)
+ MCFG_DEVICE_IO_MAP(dunhuang_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", dunhuang_state, irq0_line_hold)
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(5));
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0+8, 512-8-1, 0+16, 256-16-1);
- m_screen->set_screen_update(FUNC(dunhuang_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0+8, 512-8-1, 0+16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(dunhuang_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_dunhuang);
- PALETTE(config, m_palette).set_entries(0x100);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dunhuang)
+ MCFG_PALETTE_ADD("palette", 0x100)
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette)); // HMC HM86171 VGA 256 colour RAMDAC
ramdac.set_addrmap(0, &dunhuang_state::ramdac_map);
@@ -839,8 +839,9 @@ void dunhuang_state::dunhuang(machine_config &config)
ay8910.port_a_write_callback().set(FUNC(dunhuang_state::input_w));
ay8910.add_route(ALL_OUTPUTS, "mono", 0.30);
- OKIM6295(config, "oki", 12000000/8, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 12000000/8, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/dvk_kcgd.cpp b/src/mame/drivers/dvk_kcgd.cpp
index d654e026898..713cd0fc139 100644
--- a/src/mame/drivers/dvk_kcgd.cpp
+++ b/src/mame/drivers/dvk_kcgd.cpp
@@ -346,34 +346,32 @@ static GFXDECODE_START( gfx_kcgd )
GFXDECODE_ENTRY("maincpu", 0112236, kcgd_charlayout, 0, 1)
GFXDECODE_END
-void kcgd_state::kcgd(machine_config &config)
-{
+MACHINE_CONFIG_START(kcgd_state::kcgd)
K1801VM2(config, m_maincpu, XTAL(30'800'000)/4);
m_maincpu->set_addrmap(AS_PROGRAM, &kcgd_state::kcgd_mem);
m_maincpu->set_initial_mode(0100000);
- timer_device &scantimer(TIMER(config, "scantimer"));
- scantimer.configure_periodic(FUNC(kcgd_state::scanline_callback), attotime::from_hz(50*28*11)); // XXX verify
- scantimer.set_start_delay(attotime::from_hz(XTAL(30'800'000)/KCGD_HORZ_START));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("scantimer", kcgd_state, scanline_callback, attotime::from_hz(50*28*11)) // XXX verify
+ MCFG_TIMER_START_DELAY(attotime::from_hz(XTAL(30'800'000)/KCGD_HORZ_START))
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_screen_update(FUNC(kcgd_state::screen_update));
- m_screen->set_raw(XTAL(30'800'000), KCGD_TOTAL_HORZ, KCGD_HORZ_START,
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(kcgd_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(30'800'000), KCGD_TOTAL_HORZ, KCGD_HORZ_START,
KCGD_HORZ_START+KCGD_DISP_HORZ, KCGD_TOTAL_VERT, KCGD_VERT_START,
KCGD_VERT_START+KCGD_DISP_VERT);
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(kcgd_state::kcgd_palette), 16);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_kcgd);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_kcgd)
#if 0
MS7004(config, m_ms7004, 0);
m_ms7004->tx_handler().set("i8251kbd", FUNC(i8251_device::write_rxd));
- clock_device &keyboard_clock(CLOCK(config, "keyboard_clock", 4800*16));
- keyboard_clock.signal_handler().set(FUNC(kcgd_state::write_keyboard_clock));
+ MCFG_DEVICE_ADD("keyboard_clock", CLOCK, 4800*16)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, kcgd_state, write_keyboard_clock))
#endif
-}
+MACHINE_CONFIG_END
ROM_START( dvk_kcgd )
ROM_REGION16_BE(0x100000,"maincpu", ROMREGION_ERASE00)
diff --git a/src/mame/drivers/dvk_ksm.cpp b/src/mame/drivers/dvk_ksm.cpp
index a1e0b109afa..1299bea8ee3 100644
--- a/src/mame/drivers/dvk_ksm.cpp
+++ b/src/mame/drivers/dvk_ksm.cpp
@@ -78,16 +78,17 @@ ksm|DVK KSM,
#define KSM_STATUSLINE_VRAM 0xF8B0
-//#define LOG_GENERAL (1U << 0) //defined in logmacro.h already
-#define LOG_KEYBOARD (1U << 1)
-#define LOG_DEBUG (1U << 2)
+#define VERBOSE_DBG 0 /* general debug messages */
-//#define VERBOSE (LOG_DEBUG)
-//#define LOG_OUTPUT_FUNC printf
-#include "logmacro.h"
-
-#define LOGKBD(...) LOGMASKED(LOG_KEYBOARD, __VA_ARGS__)
-#define LOGDBG(...) LOGMASKED(LOG_DEBUG, __VA_ARGS__)
+#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
@@ -249,7 +250,7 @@ void ksm_state::video_start()
WRITE8_MEMBER(ksm_state::ksm_ppi_porta_w)
{
- LOG("PPI port A line %d\n", data);
+ DBG_LOG(1, "PPI port A", ("line %d\n", data));
m_video.line = data;
}
@@ -257,7 +258,7 @@ WRITE8_MEMBER(ksm_state::ksm_ppi_portc_w)
{
brgc = (data >> 5) & 3;
- LOG("PPI port C raw %02x blink %d speed %d\n", data, BIT(data, 7), brgc);
+ DBG_LOG(1, "PPI port C", ("raw %02x blink %d speed %d\n", data, BIT(data, 7), brgc));
update_brg(brga, brgb, brgc);
}
@@ -282,7 +283,7 @@ WRITE_LINE_MEMBER(ksm_state::write_brgb)
void ksm_state::update_brg(bool a, bool b, int c)
{
- LOGDBG("brg %d %d %d\n", a, b, c);
+ DBG_LOG(2, "brg", ("%d %d %d\n", a, b, c));
if (a && b) return;
@@ -370,8 +371,9 @@ TIMER_DEVICE_CALLBACK_MEMBER(ksm_state::scanline_callback)
uint16_t y = m_screen->vpos();
uint16_t offset;
- LOGDBG("scanline_cb addr %02x frame %d x %.4d y %.3d row %.2d\n",
- m_video.line, (int)m_screen->frame_number(), m_screen->hpos(), y, y%11);
+ DBG_LOG(2,"scanline_cb",
+ ("addr %02x frame %d x %.4d y %.3d row %.2d\n",
+ m_video.line, (int)m_screen->frame_number(), m_screen->hpos(), y, y%11));
if (y < KSM_VERT_START) return;
y -= KSM_VERT_START;
@@ -414,23 +416,23 @@ static GFXDECODE_START( gfx_ksm )
GFXDECODE_ENTRY("chargen", 0x0000, ksm_charlayout, 0, 1)
GFXDECODE_END
-void ksm_state::ksm(machine_config &config)
-{
- I8080(config, m_maincpu, XTAL(15'400'000)/10);
- m_maincpu->set_addrmap(AS_PROGRAM, &ksm_state::ksm_mem);
- m_maincpu->set_addrmap(AS_IO, &ksm_state::ksm_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(ksm_state::ksm)
+ MCFG_DEVICE_ADD("maincpu", I8080, XTAL(15'400'000)/10)
+ MCFG_DEVICE_PROGRAM_MAP(ksm_mem)
+ MCFG_DEVICE_IO_MAP(ksm_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
- TIMER(config, "scantimer").configure_scanline(FUNC(ksm_state::scanline_callback), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ksm_state, scanline_callback, "screen", 0, 1)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER, rgb_t::green());
- m_screen->set_screen_update(FUNC(ksm_state::screen_update));
- m_screen->set_raw(XTAL(15'400'000), KSM_TOTAL_HORZ, KSM_HORZ_START,
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_UPDATE_DRIVER(ksm_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(15'400'000), KSM_TOTAL_HORZ, KSM_HORZ_START,
KSM_HORZ_START+KSM_DISP_HORZ, KSM_TOTAL_VERT, KSM_VERT_START,
KSM_VERT_START+KSM_DISP_VERT);
- m_screen->set_palette("palette");
- GFXDECODE(config, "gfxdecode", "palette", gfx_ksm);
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ksm)
PALETTE(config, "palette", palette_device::MONOCHROME);
PIC8259(config, m_pic8259, 0);
@@ -463,9 +465,9 @@ void ksm_state::ksm(machine_config &config)
m_ms7004->tx_handler().set(m_i8251kbd, FUNC(i8251_device::write_rxd));
// baud rate is supposed to be 4800 but keyboard is slightly faster
- clock_device &keyboard_clock(CLOCK(config, "keyboard_clock", 4960*16));
- keyboard_clock.signal_handler().set(FUNC(ksm_state::write_keyboard_clock));
-}
+ MCFG_DEVICE_ADD("keyboard_clock", CLOCK, 4960*16)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, ksm_state, write_keyboard_clock))
+MACHINE_CONFIG_END
ROM_START( dvk_ksm )
ROM_REGION(0x1000, "maincpu", ROMREGION_ERASE00)
diff --git a/src/mame/drivers/dynadice.cpp b/src/mame/drivers/dynadice.cpp
index 73048c13abd..f1a30943fcf 100644
--- a/src/mame/drivers/dynadice.cpp
+++ b/src/mame/drivers/dynadice.cpp
@@ -119,10 +119,10 @@ WRITE8_MEMBER(dynadice_state::sound_control_w)
*/
if ((data & 7) == 7)
- m_ay8910->address_w(m_ay_data);
+ m_ay8910->address_w(space, 0, m_ay_data);
if ((data & 7) == 6)
- m_ay8910->data_w(m_ay_data);
+ m_ay8910->data_w(space, 0, m_ay_data);
}
@@ -260,30 +260,30 @@ void dynadice_state::machine_reset()
m_ay_data = 0;
}
-void dynadice_state::dynadice(machine_config &config)
-{
+MACHINE_CONFIG_START(dynadice_state::dynadice)
+
/* basic machine hardware */
- I8080(config, m_maincpu, 18.432_MHz_XTAL / 8);
- m_maincpu->set_addrmap(AS_PROGRAM, &dynadice_state::dynadice_map);
- m_maincpu->set_addrmap(AS_IO, &dynadice_state::dynadice_io_map);
+ MCFG_DEVICE_ADD(m_maincpu, I8080, 18.432_MHz_XTAL / 8)
+ MCFG_DEVICE_PROGRAM_MAP(dynadice_map)
+ MCFG_DEVICE_IO_MAP(dynadice_io_map)
- z80_device &audiocpu(Z80(config, "audiocpu", 18.432_MHz_XTAL / 6));
- audiocpu.set_addrmap(AS_PROGRAM, &dynadice_state::dynadice_sound_map);
- audiocpu.set_addrmap(AS_IO, &dynadice_state::dynadice_sound_io_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 18.432_MHz_XTAL / 6)
+ MCFG_DEVICE_PROGRAM_MAP(dynadice_sound_map)
+ MCFG_DEVICE_IO_MAP(dynadice_sound_io_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256+16, 256);
- screen.set_visarea(0*8, 34*8-1, 3*8, 28*8-1);
- screen.set_screen_update(FUNC(dynadice_state::screen_update));
- screen.set_palette("palette");
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_dynadice);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256+16, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 34*8-1, 3*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(dynadice_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, "palette", gfx_dynadice)
PALETTE(config, "palette", palette_device::BRG_3BIT);
SPEAKER(config, "mono").front_center();
@@ -291,7 +291,7 @@ void dynadice_state::dynadice(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
AY8910(config, m_ay8910, 2000000).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
ROM_START( dynadice )
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/dynax.cpp b/src/mame/drivers/dynax.cpp
index a8195352825..f0312250ca1 100644
--- a/src/mame/drivers/dynax.cpp
+++ b/src/mame/drivers/dynax.cpp
@@ -4192,13 +4192,13 @@ MACHINE_START_MEMBER(dynax_state,hanamai)
Castle Of Dracula
***************************************************************************/
-void dynax_state::cdracula(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::cdracula)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(21'477'272)/4); /* 5.3693175MHz measured */
- m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::cdracula_mem_map);
- m_maincpu->set_addrmap(AS_IO, &dynax_state::cdracula_io_map);
- m_maincpu->set_irq_acknowledge_callback("mainirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(21'477'272)/4) /* 5.3693175MHz measured */
+ MCFG_DEVICE_PROGRAM_MAP(cdracula_mem_map)
+ MCFG_DEVICE_IO_MAP(cdracula_io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) // IM 0 needs an opcode on the data bus
MCFG_MACHINE_START_OVERRIDE(dynax_state,dynax)
MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax)
@@ -4235,22 +4235,22 @@ void dynax_state::cdracula(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(4'000'000) / 4, okim6295_device::PIN7_HIGH); /* 1MHz measured */
- m_oki->add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(4'000'000) / 4, okim6295_device::PIN7_HIGH) /* 1MHz measured */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
/***************************************************************************
Hana no Mai
***************************************************************************/
-void dynax_state::hanamai(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::hanamai)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 22000000 / 4); /* 5.5MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::sprtmtch_mem_map);
- m_maincpu->set_addrmap(AS_IO, &dynax_state::hanamai_io_map);
- m_maincpu->set_irq_acknowledge_callback("mainirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
+ MCFG_DEVICE_ADD("maincpu",Z80,22000000 / 4) /* 5.5MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sprtmtch_mem_map)
+ MCFG_DEVICE_IO_MAP(hanamai_io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) // IM 0 needs an opcode on the data bus
MCFG_MACHINE_START_OVERRIDE(dynax_state,hanamai)
MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax)
@@ -4302,11 +4302,11 @@ void dynax_state::hanamai(machine_config &config)
ym2203.add_route(2, "mono", 0.20);
ym2203.add_route(3, "mono", 0.50);
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(dynax_state::adpcm_int)); /* IRQ handler */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
- m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, dynax_state, adpcm_int)) /* IRQ handler */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
@@ -4314,13 +4314,13 @@ void dynax_state::hanamai(machine_config &config)
Hana Oriduru
***************************************************************************/
-void dynax_state::hnoridur(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::hnoridur)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(22'000'000) / 4); /* 5.5MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::hnoridur_mem_map);
- m_maincpu->set_addrmap(AS_IO, &dynax_state::hnoridur_io_map);
- m_maincpu->set_irq_acknowledge_callback("mainirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
+ MCFG_DEVICE_ADD("maincpu",Z80,XTAL(22'000'000) / 4) /* 5.5MHz */
+ MCFG_DEVICE_PROGRAM_MAP(hnoridur_mem_map)
+ MCFG_DEVICE_IO_MAP(hnoridur_io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) // IM 0 needs an opcode on the data bus
MCFG_MACHINE_START_OVERRIDE(dynax_state,dynax)
MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax)
@@ -4370,24 +4370,24 @@ void dynax_state::hnoridur(machine_config &config)
YM2413(config, "ym2413", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
- MSM5205(config, m_msm, XTAL(384'000));
- m_msm->vck_legacy_callback().set(FUNC(dynax_state::adpcm_int)); /* IRQ handler */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
- m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000))
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, dynax_state, adpcm_int)) /* IRQ handler */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
Hana Jingi
***************************************************************************/
-void dynax_state::hjingi(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::hjingi)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(22'000'000) / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::hjingi_mem_map);
- m_maincpu->set_addrmap(AS_IO, &dynax_state::hjingi_io_map);
- m_maincpu->set_irq_acknowledge_callback("mainirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(22'000'000) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(hjingi_mem_map)
+ MCFG_DEVICE_IO_MAP(hjingi_io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) // IM 0 needs an opcode on the data bus
MCFG_MACHINE_START_OVERRIDE(dynax_state,hjingi)
MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax)
@@ -4439,24 +4439,24 @@ void dynax_state::hjingi(machine_config &config)
YM2413(config, "ym2413", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
- MSM5205(config, m_msm, XTAL(384'000));
- m_msm->vck_legacy_callback().set(FUNC(dynax_state::adpcm_int)); /* IRQ handler */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
- m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000) )
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, dynax_state, adpcm_int)) /* IRQ handler */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
Sports Match
***************************************************************************/
-void dynax_state::sprtmtch(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::sprtmtch)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 22000000 / 4); /* 5.5MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::sprtmtch_mem_map);
- m_maincpu->set_addrmap(AS_IO, &dynax_state::sprtmtch_io_map);
- m_maincpu->set_irq_acknowledge_callback("mainirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
+ MCFG_DEVICE_ADD("maincpu", Z80,22000000 / 4) /* 5.5MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sprtmtch_mem_map)
+ MCFG_DEVICE_IO_MAP(sprtmtch_io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) // IM 0 needs an opcode on the data bus
MCFG_MACHINE_START_OVERRIDE(dynax_state,hanamai)
MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax)
@@ -4502,7 +4502,7 @@ void dynax_state::sprtmtch(machine_config &config)
ym2203.add_route(1, "mono", 0.20);
ym2203.add_route(2, "mono", 0.20);
ym2203.add_route(3, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/***************************************************************************
@@ -4515,12 +4515,12 @@ WRITE_LINE_MEMBER(dynax_state::mjfriday_vblank_w)
m_maincpu->set_input_line(0, HOLD_LINE);
}
-void dynax_state::mjfriday(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::mjfriday)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 24000000/4); /* 6 MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::sprtmtch_mem_map);
- m_maincpu->set_addrmap(AS_IO, &dynax_state::mjfriday_io_map);
+ MCFG_DEVICE_ADD("maincpu",Z80,24000000/4) /* 6 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(sprtmtch_mem_map)
+ MCFG_DEVICE_IO_MAP(mjfriday_io_map)
MCFG_MACHINE_START_OVERRIDE(dynax_state,hanamai)
MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax)
@@ -4560,85 +4560,87 @@ void dynax_state::mjfriday(machine_config &config)
SPEAKER(config, "mono").front_center();
YM2413(config, "ym2413", 24000000/6).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/***************************************************************************
Mahjong Dial Q2
***************************************************************************/
-void dynax_state::mjdialq2(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::mjdialq2)
mjfriday(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::mjdialq2_mem_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mjdialq2_mem_map)
+MACHINE_CONFIG_END
/***************************************************************************
Yarunara / Quiz TV Q&Q / Mahjong Angels
***************************************************************************/
-void dynax_state::yarunara(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::yarunara)
hnoridur(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::yarunara_mem_map);
- m_maincpu->set_addrmap(AS_IO, &dynax_state::yarunara_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(yarunara_mem_map)
+ MCFG_DEVICE_IO_MAP(yarunara_io_map)
- m_bankdev->set_addrmap(AS_PROGRAM, &dynax_state::yarunara_banked_map);
+ MCFG_DEVICE_MODIFY("bankdev")
+ MCFG_DEVICE_PROGRAM_MAP(yarunara_banked_map)
- config.device_remove("outlatch"); // ???
+ MCFG_DEVICE_REMOVE("outlatch") // ???
m_screen->set_visarea(0, 336-1, 8, 256-1-8-1);
/* devices */
MSM6242(config, "rtc", 32.768_kHz_XTAL).out_int_handler().set(m_mainirq, FUNC(rst_pos_buffer_device::rst1_w));
-}
+MACHINE_CONFIG_END
-void dynax_state::mjangels(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::mjangels)
yarunara(config);
+ MCFG_DEVICE_MODIFY("bankdev")
m_bankdev->set_map(&dynax_state::mjangels_banked_map).set_addr_width(21);
-}
+MACHINE_CONFIG_END
-void dynax_state::quiztvqq(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::quiztvqq)
mjangels(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::quiztvqq_mem_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(quiztvqq_mem_map)
+MACHINE_CONFIG_END
/***************************************************************************
Mahjong Campus Hunting
***************************************************************************/
-void dynax_state::mcnpshnt(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::mcnpshnt)
hnoridur(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::mcnpshnt_mem_map);
- m_maincpu->set_addrmap(AS_IO, &dynax_state::mcnpshnt_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mcnpshnt_mem_map)
+ MCFG_DEVICE_IO_MAP(mcnpshnt_io_map)
MCFG_VIDEO_START_OVERRIDE(dynax_state,mcnpshnt) // different priorities
-}
+MACHINE_CONFIG_END
/***************************************************************************
7jigen
***************************************************************************/
-void dynax_state::nanajign(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::nanajign)
hnoridur(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::nanajign_mem_map);
- m_maincpu->set_addrmap(AS_IO, &dynax_state::nanajign_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(nanajign_mem_map)
+ MCFG_DEVICE_IO_MAP(nanajign_io_map)
- m_bankdev->set_addrmap(AS_PROGRAM, &dynax_state::nanajign_banked_map);
-}
+ MCFG_DEVICE_MODIFY("bankdev")
+ MCFG_DEVICE_PROGRAM_MAP(nanajign_banked_map)
+MACHINE_CONFIG_END
/***************************************************************************
@@ -4659,18 +4661,18 @@ MACHINE_START_MEMBER(dynax_state,jantouki)
}
-void dynax_state::jantouki(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::jantouki)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 22000000 / 4); /* 5.5MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::jantouki_mem_map);
- m_maincpu->set_addrmap(AS_IO, &dynax_state::jantouki_io_map);
- m_maincpu->set_irq_acknowledge_callback("mainirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
+ MCFG_DEVICE_ADD("maincpu",Z80,22000000 / 4) /* 5.5MHz */
+ MCFG_DEVICE_PROGRAM_MAP(jantouki_mem_map)
+ MCFG_DEVICE_IO_MAP(jantouki_io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) // IM 0 needs an opcode on the data bus
- Z80(config, m_soundcpu, 22000000 / 4); /* 5.5MHz */
- m_soundcpu->set_addrmap(AS_PROGRAM, &dynax_state::jantouki_sound_mem_map);
- m_soundcpu->set_addrmap(AS_IO, &dynax_state::jantouki_sound_io_map);
- m_soundcpu->set_irq_acknowledge_callback("soundirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
+ MCFG_DEVICE_ADD("soundcpu",Z80,22000000 / 4) /* 5.5MHz */
+ MCFG_DEVICE_PROGRAM_MAP(jantouki_sound_mem_map)
+ MCFG_DEVICE_IO_MAP(jantouki_sound_io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("soundirq", rst_pos_buffer_device, inta_cb) // IM 0 needs an opcode on the data bus
MCFG_MACHINE_START_OVERRIDE(dynax_state,jantouki)
MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax)
@@ -4678,6 +4680,7 @@ void dynax_state::jantouki(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
RST_POS_BUFFER(config, m_mainirq, 0).int_callback().set_inputline(m_maincpu, 0);
+
RST_POS_BUFFER(config, m_soundirq, 0).int_callback().set_inputline(m_soundcpu, 0);
LS259(config, m_mainlatch);
@@ -4738,14 +4741,14 @@ void dynax_state::jantouki(machine_config &config)
ym2203.add_route(2, "mono", 0.20);
ym2203.add_route(3, "mono", 0.50);
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(dynax_state::adpcm_int_cpu1)); /* IRQ handler */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
- m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, dynax_state, adpcm_int_cpu1)) /* IRQ handler */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
/* devices */
MSM6242(config, "rtc", 32.768_kHz_XTAL);
-}
+MACHINE_CONFIG_END
void dynax_state::janyuki(machine_config &config)
{
@@ -4762,14 +4765,14 @@ void dynax_state::janyuki(machine_config &config)
0xfa and 0xfc are very similar, they should be triggered by the blitter
0xf8 is vblank */
-void dynax_state::mjelctrn(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::mjelctrn)
hnoridur(config);
TMPZ84C015(config.replace(), m_maincpu, XTAL(22'000'000) / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::nanajign_mem_map);
m_maincpu->set_addrmap(AS_IO, &dynax_state::mjelctrn_io_map);
- m_bankdev->set_addrmap(AS_PROGRAM, &dynax_state::mjelctrn_banked_map);
+ MCFG_DEVICE_MODIFY("bankdev")
+ MCFG_DEVICE_PROGRAM_MAP(mjelctrn_banked_map)
LS259(config.replace(), m_mainlatch);
m_mainlatch->q_out_cb<0>().set(FUNC(dynax_state::flipscreen_w));
@@ -4777,7 +4780,7 @@ void dynax_state::mjelctrn(machine_config &config)
m_mainlatch->q_out_cb<2>().set(FUNC(dynax_state::layer_half2_w));
// Q3, Q4 seem to be related to wrap around enable
- config.device_remove("mainirq");
+ MCFG_DEVICE_REMOVE("mainirq")
m_screen->screen_vblank().set(m_maincpu, FUNC(tmpz84c015_device::trg0)).invert();
@@ -4785,10 +4788,9 @@ void dynax_state::mjelctrn(machine_config &config)
m_blitter->ready_cb().append(m_maincpu, FUNC(tmpz84c015_device::trg2));
MCFG_VIDEO_START_OVERRIDE(dynax_state,mjelctrn)
-}
+MACHINE_CONFIG_END
-void dynax_state::mjembase(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::mjembase)
mjelctrn(config);
tmpz84c015_device &maincpu(*subdevice<tmpz84c015_device>("maincpu"));
@@ -4800,10 +4802,10 @@ void dynax_state::mjembase(machine_config &config)
m_mainlatch->q_out_cb<3>().set(FUNC(dynax_state::coincounter_0_w));
m_mainlatch->q_out_cb<4>().set(FUNC(dynax_state::coincounter_1_w));
- config.device_remove("outlatch");
+ MCFG_DEVICE_REMOVE("outlatch")
MCFG_VIDEO_START_OVERRIDE(dynax_state,mjembase)
-}
+MACHINE_CONFIG_END
/***************************************************************************
Neruton
@@ -4814,11 +4816,10 @@ void dynax_state::mjembase(machine_config &config)
0x40 is vblank
0x46 is a periodic irq? */
-void dynax_state::neruton(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::neruton)
mjelctrn(config);
MCFG_VIDEO_START_OVERRIDE(dynax_state,neruton)
-}
+MACHINE_CONFIG_END
@@ -4841,8 +4842,8 @@ WRITE_LINE_MEMBER(dynax_state::tenkai_blitter_ack_w)
}
-void dynax_state::tenkai(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::tenkai)
+
/* basic machine hardware */
tmp91640_device &tmp(TMP91640(config, m_maincpu, 21472700 / 2));
tmp.set_addrmap(AS_PROGRAM, &dynax_state::tenkai_map);
@@ -4902,7 +4903,7 @@ void dynax_state::tenkai(machine_config &config)
/* devices */
MSM6242(config, "rtc", 32.768_kHz_XTAL).out_int_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ2);
-}
+MACHINE_CONFIG_END
void dynax_state::majrjhdx(machine_config &config)
{
@@ -4921,8 +4922,8 @@ void dynax_state::mjreach(machine_config &config)
Mahjong Gekisha
***************************************************************************/
-void dynax_state::gekisha(machine_config &config)
-{
+MACHINE_CONFIG_START(dynax_state::gekisha)
+
/* basic machine hardware */
tmp90841_device &tmp(TMP90841(config, m_maincpu, XTAL(10'000'000))); // ?
tmp.set_addrmap(AS_PROGRAM, &dynax_state::gekisha_map);
@@ -4972,7 +4973,7 @@ void dynax_state::gekisha(machine_config &config)
ay8910.add_route(ALL_OUTPUTS, "mono", 0.20);
YM2413(config, "ym2413", XTAL(24'000'000) / 8).add_route(ALL_OUTPUTS, "mono", 1.0); // ?
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/e100.cpp b/src/mame/drivers/e100.cpp
index b239287e33e..cd77707ade0 100644
--- a/src/mame/drivers/e100.cpp
+++ b/src/mame/drivers/e100.cpp
@@ -258,12 +258,12 @@ WRITE8_MEMBER( e100_state::pia_w )
if ((offset & 0x08) == 0x08)
{
LOG("- PIA1\n");
- m_pia1->write(offset, data);
+ m_pia1->write(space, offset, data);
}
if ((offset & 0x10) == 0x10)
{
LOG("- PIA2\n");
- m_pia2->write(offset, data);
+ m_pia2->write(space, offset, data);
}
if (VERBOSE && (offset & 0x18) == 0x18)
{
@@ -284,19 +284,19 @@ READ8_MEMBER( e100_state::pia_r )
{
case 0x18: // read PIA1 and PIA2 at the same time, should really only happen for writes...
{
- uint8_t data1 = m_pia1->read(offset);
- uint8_t data2 = m_pia2->read(offset);
+ uint8_t data1 = m_pia1->read(space, offset);
+ uint8_t data2 = m_pia2->read(space, offset);
logerror("%s: Dual device read may have caused unpredictable results on real hardware\n", FUNCNAME);
data = data1 & data2; // We assume that the stable behaviour is that data lines with a low level by either device succeeds
LOGCS("%s %s[%02x] %02x & %02x -> %02x Dual device read!!\n", PIA1_TAG "/" PIA2_TAG, FUNCNAME, offset, data1, data2, data);
}
break;
case 0x08: // PIA1
- data = m_pia1->read(offset);
+ data = m_pia1->read(space, offset);
LOGCS("%s %s(%02x)\n", PIA1_TAG, FUNCNAME, data);
break;
case 0x10: // PIA2
- data = m_pia2->read(offset);
+ data = m_pia2->read(space, offset);
LOGCS("%s %s(%02x)\n", PIA2_TAG, FUNCNAME, data);
break;
default: // None of the devices are selected
@@ -538,10 +538,9 @@ static INPUT_PORTS_START( e100 )
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
INPUT_PORTS_END
-void e100_state::e100(machine_config &config)
-{
- M6802(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &e100_state::e100_map);
+MACHINE_CONFIG_START(e100_state::e100)
+ MCFG_DEVICE_ADD("maincpu", M6802, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(e100_map)
/* Devices */
TTL74145(config, m_kbd_74145, 0);
@@ -586,19 +585,19 @@ void e100_state::e100(machine_config &config)
* Once created it may be given on the commandline or mounted via TAB and select
* E100 supports cassette through the 'LOAD' and 'SAVE' commands with no arguments
*/
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_MUTED | CASSETTE_MOTOR_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_MUTED | CASSETTE_MOTOR_ENABLED)
/* screen TODO: simplify the screen config, look at zx.cpp */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(4'000'000)/2, 265, 0, 265, 265, 0, 265);
- screen.set_screen_update(FUNC(e100_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(4'000'000)/2, 265, 0, 265, 265, 0, 265)
+ MCFG_SCREEN_UPDATE_DRIVER(e100_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
/* There is a 50Hz signal from the video circuit to CA1 which generates interrupts and drives a software RTC */
- TIMER(config, "video50hz").configure_periodic(FUNC(e100_state::rtc_w), attotime::from_hz(100)); /* Will be divided by two through toggle in the handler */
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("video50hz", e100_state, rtc_w, attotime::from_hz(100)) /* Will be divided by two through toggle in the handler */
+MACHINE_CONFIG_END
/* ROM sets from Didact was not versioned in general, so the numbering are just assumptions */
ROM_START( e100 )
diff --git a/src/mame/drivers/eacc.cpp b/src/mame/drivers/eacc.cpp
index be855d4e75c..54f40da22c3 100644
--- a/src/mame/drivers/eacc.cpp
+++ b/src/mame/drivers/eacc.cpp
@@ -245,11 +245,10 @@ WRITE8_MEMBER( eacc_state::eacc_digit_w )
Machine Drivers
******************************************************************************/
-void eacc_state::eacc(machine_config &config)
-{
+MACHINE_CONFIG_START(eacc_state::eacc)
/* basic machine hardware */
- M6802(config, m_maincpu, XTAL(3'579'545)); /* Divided by 4 inside the m6802*/
- m_maincpu->set_addrmap(AS_PROGRAM, &eacc_state::eacc_mem);
+ MCFG_DEVICE_ADD("maincpu", M6802, XTAL(3'579'545)) /* Divided by 4 inside the m6802*/
+ MCFG_DEVICE_PROGRAM_MAP(eacc_mem)
config.set_default_layout(layout_eacc);
@@ -265,9 +264,9 @@ void eacc_state::eacc(machine_config &config)
m_pia->irqb_handler().set_inputline("maincpu", M6802_IRQ_LINE);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TIMER(config, "eacc_nmi").configure_periodic(FUNC(eacc_state::eacc_nmi), attotime::from_hz(600));
- TIMER(config, "eacc_cb1").configure_periodic(FUNC(eacc_state::eacc_cb1), attotime::from_hz(30));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("eacc_nmi", eacc_state, eacc_nmi, attotime::from_hz(600))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("eacc_cb1", eacc_state, eacc_cb1, attotime::from_hz(30))
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ec184x.cpp b/src/mame/drivers/ec184x.cpp
index 98a3056406c..43f1901503b 100644
--- a/src/mame/drivers/ec184x.cpp
+++ b/src/mame/drivers/ec184x.cpp
@@ -18,20 +18,19 @@
#include "machine/ram.h"
#include "softlist.h"
+#define EC1841_MEMBOARD_SIZE (512*1024)
-//#define LOG_GENERAL (1U << 0) //defined in logmacro.h already
-#define LOG_KEYBOARD (1U << 1)
-#define LOG_DEBUG (1U << 2)
-
-//#define VERBOSE (LOG_DEBUG)
-//#define LOG_OUTPUT_FUNC printf
-#include "logmacro.h"
-
-#define LOGKBD(...) LOGMASKED(LOG_KEYBOARD, __VA_ARGS__)
-#define LOGDBG(...) LOGMASKED(LOG_DEBUG, __VA_ARGS__)
-
+#define VERBOSE_DBG 1 /* general debug messages */
-#define EC1841_MEMBOARD_SIZE (512*1024)
+#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 ec184x_state : public driver_device
@@ -99,7 +98,7 @@ READ8_MEMBER(ec184x_state::memboard_r)
data = 0xff;
else
data = m_memory.enable[data];
- LOG("ec1841_memboard R (%d of %d) == %02X\n", offset + 1, m_memory.boards, data);
+ DBG_LOG(1, "ec1841_memboard", ("R (%d of %d) == %02X\n", offset + 1, m_memory.boards, data));
return data;
}
@@ -109,7 +108,7 @@ WRITE8_MEMBER(ec184x_state::memboard_w)
address_space &program = m_maincpu->space(AS_PROGRAM);
uint8_t current = m_memory.enable[offset];
- LOG("ec1841_memboard W (%d of %d) <- %02X (%02X)\n", offset + 1, m_memory.boards, data, current);
+ DBG_LOG(1, "ec1841_memboard", ("W (%d of %d) <- %02X (%02X)\n", offset + 1, m_memory.boards, data, current));
if (offset >= m_memory.boards)
{
@@ -120,14 +119,14 @@ WRITE8_MEMBER(ec184x_state::memboard_w)
{
// disable read access
program.unmap_read(0, EC1841_MEMBOARD_SIZE - 1);
- LOG("ec1841_memboard_w unmap_read(%d)\n", offset);
+ DBG_LOG(1, "ec1841_memboard_w", ("unmap_read(%d)\n", offset));
}
if (BIT(current, 3) && !BIT(data, 3))
{
// disable write access
program.unmap_write(0, EC1841_MEMBOARD_SIZE - 1);
- LOG("ec1841_memboard_w unmap_write(%d)\n", offset);
+ DBG_LOG(1, "ec1841_memboard_w", ("unmap_write(%d)\n", offset));
}
if (!BIT(current, 2) && BIT(data, 2))
@@ -137,7 +136,7 @@ WRITE8_MEMBER(ec184x_state::memboard_w)
// enable read access
membank("bank10")->set_base(m_ram->pointer() + offset * EC1841_MEMBOARD_SIZE);
program.install_read_bank(0, EC1841_MEMBOARD_SIZE - 1, "bank10");
- LOG("ec1841_memboard_w map_read(%d)\n", offset);
+ DBG_LOG(1, "ec1841_memboard_w", ("map_read(%d)\n", offset));
}
if (!BIT(current, 3) && BIT(data, 3))
@@ -147,7 +146,7 @@ WRITE8_MEMBER(ec184x_state::memboard_w)
// enable write access
membank("bank20")->set_base(m_ram->pointer() + offset * EC1841_MEMBOARD_SIZE);
program.install_write_bank(0, EC1841_MEMBOARD_SIZE - 1, "bank20");
- LOG("ec1841_memboard_w map_write(%d)\n", offset);
+ DBG_LOG(1, "ec1841_memboard_w", ("map_write(%d)\n", offset));
}
m_memory.enable[offset] = data;
@@ -225,78 +224,75 @@ void ec184x_state::ec1847_io(address_map &map)
// XXX verify everything
-void ec184x_state::ec1840(machine_config &config)
-{
- I8088(config, m_maincpu, 4096000);
- m_maincpu->set_addrmap(AS_PROGRAM, &ec184x_state::ec1840_map);
- m_maincpu->set_addrmap(AS_IO, &ec184x_state::ec1840_io);
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(ec184x_state::ec1840)
+ MCFG_DEVICE_ADD("maincpu", I8088, 4096000)
+ MCFG_DEVICE_PROGRAM_MAP(ec1840_map)
+ MCFG_DEVICE_IO_MAP(ec1840_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
- IBM5150_MOTHERBOARD(config, "mb", 0).set_cputag(m_maincpu);
+ MCFG_IBM5150_MOTHERBOARD_ADD("mb","maincpu")
// FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa1", 0, "mb:isa", ec184x_isa8_cards, "ec1840.0002", false);
- ISA8_SLOT(config, "isa2", 0, "mb:isa", ec184x_isa8_cards, "ec1840.0003", false);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", ec184x_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", ec184x_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa5", 0, "mb:isa", ec184x_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa6", 0, "mb:isa", ec184x_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", ec184x_isa8_cards, "ec1840.0002", false)
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", ec184x_isa8_cards, "ec1840.0003", false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", ec184x_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", ec184x_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, "mb:isa", ec184x_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa6", ISA8_SLOT, 0, "mb:isa", ec184x_isa8_cards, nullptr, false)
- SOFTWARE_LIST(config, "flop_list").set_original("ec1841");
+ MCFG_SOFTWARE_LIST_ADD("flop_list","ec1841")
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_EC_1841).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
+ MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_EC_1841)
RAM(config, m_ram).set_default_size("512K");
-}
+MACHINE_CONFIG_END
-void ec184x_state::ec1841(machine_config &config)
-{
- I8086(config, m_maincpu, XTAL(12'288'000) / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &ec184x_state::ec1841_map);
- m_maincpu->set_addrmap(AS_IO, &ec184x_state::ec1841_io);
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(ec184x_state::ec1841)
+ MCFG_DEVICE_ADD("maincpu", I8086, XTAL(12'288'000) / 3)
+ MCFG_DEVICE_PROGRAM_MAP(ec1841_map)
+ MCFG_DEVICE_IO_MAP(ec1841_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
MCFG_MACHINE_RESET_OVERRIDE(ec184x_state, ec1841)
- EC1841_MOTHERBOARD(config, "mb", 0).set_cputag(m_maincpu);
+ MCFG_EC1841_MOTHERBOARD_ADD("mb", "maincpu")
// FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa1", 0, "mb:isa", ec184x_isa8_cards, "ec1841.0002", false); // cga
- ISA8_SLOT(config, "isa2", 0, "mb:isa", ec184x_isa8_cards, "ec1841.0003", false); // fdc (IRQ6) + mouse port (IRQ2..5)
- ISA8_SLOT(config, "isa3", 0, "mb:isa", ec184x_isa8_cards, "ec1841.0004", false); // lpt (IRQ7||5) [+ serial (IRQx)]
- ISA8_SLOT(config, "isa4", 0, "mb:isa", ec184x_isa8_cards, "hdc", false);
- ISA8_SLOT(config, "isa5", 0, "mb:isa", ec184x_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa6", 0, "mb:isa", ec184x_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", ec184x_isa8_cards, "ec1841.0002", false) // cga
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", ec184x_isa8_cards, "ec1841.0003", false) // fdc (IRQ6) + mouse port (IRQ2..5)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", ec184x_isa8_cards, "ec1841.0004", false) // lpt (IRQ7||5) [+ serial (IRQx)]
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", ec184x_isa8_cards, "hdc", false)
+ MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, "mb:isa", ec184x_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa6", ISA8_SLOT, 0, "mb:isa", ec184x_isa8_cards, nullptr, false)
- SOFTWARE_LIST(config, "flop_list").set_original("ec1841");
+ MCFG_SOFTWARE_LIST_ADD("flop_list","ec1841")
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_EC_1841).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
+ MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_EC_1841)
RAM(config, m_ram).set_default_size("640K").set_extra_options("512K,1024K,1576K,2048K");
-}
+MACHINE_CONFIG_END
// XXX verify everything
-void ec184x_state::ec1847(machine_config &config)
-{
- I8088(config, m_maincpu, 4772720);
- m_maincpu->set_addrmap(AS_PROGRAM, &ec184x_state::ec1847_map);
- m_maincpu->set_addrmap(AS_IO, &ec184x_state::ec1847_io);
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(ec184x_state::ec1847)
+ MCFG_DEVICE_ADD("maincpu", I8088, 4772720)
+ MCFG_DEVICE_PROGRAM_MAP(ec1847_map)
+ MCFG_DEVICE_IO_MAP(ec1847_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
- IBM5160_MOTHERBOARD(config, "mb", 0).set_cputag(m_maincpu);
+ MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu")
// FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "hercules", false); // cga, ega and vga(?) are options too
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, "fdc_xt", false);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, nullptr, false); // native variant (wd1010 + z80) not emulated
- ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, nullptr, false); // native serial (2x8251) not emulated
- ISA8_SLOT(config, "isa5", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa6", 0, "mb:isa", pc_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "hercules", false) // cga, ega and vga(?) are options too
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false) // native variant (wd1010 + z80) not emulated
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false) // native serial (2x8251) not emulated
+ MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa6", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
+ MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270)
RAM(config, m_ram).set_default_size("640K");
-}
+MACHINE_CONFIG_END
ROM_START( ec1840 )
ROM_REGION16_LE(0x10000,"bios", 0)
diff --git a/src/mame/drivers/ec65.cpp b/src/mame/drivers/ec65.cpp
index 8a67d6ef703..1efcc82d158 100644
--- a/src/mame/drivers/ec65.cpp
+++ b/src/mame/drivers/ec65.cpp
@@ -171,21 +171,21 @@ static GFXDECODE_START( gfx_ec65 )
GFXDECODE_ENTRY( "chargen", 0x0000, ec65_charlayout, 0, 1 )
GFXDECODE_END
-void ec65_state::ec65(machine_config &config)
-{
+MACHINE_CONFIG_START(ec65_state::ec65)
+
/* basic machine hardware */
- M6502(config, m_maincpu, XTAL(4'000'000) / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &ec65_state::ec65_mem);
+ MCFG_DEVICE_ADD("maincpu",M6502, XTAL(4'000'000) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(ec65_mem)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 200);
- screen.set_visarea_full();
- screen.set_screen_update(MC6845_TAG, FUNC(mc6845_device::screen_update));
-
- GFXDECODE(config, "gfxdecode", m_palette, gfx_ec65);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 200)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640 - 1, 0, 200 - 1)
+ MCFG_SCREEN_UPDATE_DEVICE(MC6845_TAG, mc6845_device, screen_update)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ec65)
PALETTE(config, "palette", palette_device::MONOCHROME);
mc6845_device &crtc(MC6845(config, MC6845_TAG, XTAL(16'000'000) / 8));
@@ -208,30 +208,30 @@ void ec65_state::ec65(machine_config &config)
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, KEYBOARD_TAG, 0));
keyboard.set_keyboard_callback(FUNC(ec65_state::kbd_put));
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(ec65k_state::ec65k)
-void ec65k_state::ec65k(machine_config &config)
-{
/* basic machine hardware */
- g65816_device &maincpu(G65816(config, "maincpu", XTAL(4'000'000))); // can use 4,2 or 1 MHz
- maincpu.set_addrmap(AS_PROGRAM, &ec65k_state::ec65k_mem);
+ MCFG_DEVICE_ADD("maincpu",G65816, XTAL(4'000'000)) // can use 4,2 or 1 MHz
+ MCFG_DEVICE_PROGRAM_MAP(ec65k_mem)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 200);
- screen.set_visarea_full();
- screen.set_screen_update(MC6845_TAG, FUNC(mc6845_device::screen_update));
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_ec65);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 200)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640 - 1, 0, 200 - 1)
+ MCFG_SCREEN_UPDATE_DEVICE(MC6845_TAG, mc6845_device, screen_update)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ec65)
PALETTE(config, "palette", palette_device::MONOCHROME);
mc6845_device &crtc(MC6845(config, MC6845_TAG, XTAL(16'000'000) / 8));
crtc.set_screen("screen");
crtc.set_show_border_area(false);
crtc.set_char_width(8); /*?*/
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( ec65 )
diff --git a/src/mame/drivers/ecoinf1.cpp b/src/mame/drivers/ecoinf1.cpp
index f0853e9542c..39df2f05dab 100644
--- a/src/mame/drivers/ecoinf1.cpp
+++ b/src/mame/drivers/ecoinf1.cpp
@@ -253,13 +253,12 @@ static INPUT_PORTS_START( ecoinf1 )
INPUT_PORTS_END
-void ecoinf1_state::ecoinf1_older(machine_config &config)
-{
+MACHINE_CONFIG_START(ecoinf1_state::ecoinf1_older)
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &ecoinf1_state::older_memmap);
- m_maincpu->set_addrmap(AS_IO, &ecoinf1_state::older_portmap);
-}
+ MCFG_DEVICE_ADD("maincpu", Z80,4000000)
+ MCFG_DEVICE_PROGRAM_MAP(older_memmap)
+ MCFG_DEVICE_IO_MAP(older_portmap)
+MACHINE_CONFIG_END
/********************************************************************************************************************
diff --git a/src/mame/drivers/ecoinf2.cpp b/src/mame/drivers/ecoinf2.cpp
index c1d6844ba91..fef7051f799 100644
--- a/src/mame/drivers/ecoinf2.cpp
+++ b/src/mame/drivers/ecoinf2.cpp
@@ -542,7 +542,7 @@ void ecoinf2_state::ecoinf2_oxo(machine_config &config)
m_reels[3]->optic_handler().set(FUNC(ecoinf2_state::reel_optic_cb<3>));
METERS(config, m_meters, 0);
- m_meters->set_number(8);
+ m_meters->set_number_meters(8);
// I8255(config, "ic25_dips", 0);
}
diff --git a/src/mame/drivers/ecoinf3.cpp b/src/mame/drivers/ecoinf3.cpp
index 08aa113dd7c..13f690573ad 100644
--- a/src/mame/drivers/ecoinf3.cpp
+++ b/src/mame/drivers/ecoinf3.cpp
@@ -446,7 +446,7 @@ void ecoinf3_state::pyramid_portmap(address_map &map)
map(0x58, 0x5b).rw("ppi8255_g", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0x5c, 0x5f).rw("ppi8255_h", FUNC(i8255_device::read), FUNC(i8255_device::write));
// frequently accesses DB after 5B, mirror? bug?
- map(0xDB, 0xDB).w("sn1", FUNC(sn76489_device::write)); // no idea what the sound chip is, this sounds terrible
+ map(0xDB, 0xDB).w("sn1", FUNC(sn76489_device::command_w)); // no idea what the sound chip is, this sounds terrible
}
diff --git a/src/mame/drivers/efdt.cpp b/src/mame/drivers/efdt.cpp
index cf5bd51cdef..df5618971ac 100644
--- a/src/mame/drivers/efdt.cpp
+++ b/src/mame/drivers/efdt.cpp
@@ -544,15 +544,15 @@ GFXDECODE_END
* Machine Driver *
*********************************************/
-void efdt_state::efdt(machine_config &config)
-{
+MACHINE_CONFIG_START( efdt_state::efdt )
+
/* basic machine hardware */
- Z80(config, m_maincpu, Z80_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &efdt_state::efdt_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, Z80_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(efdt_map)
- M6802(config, m_audiocpu, F6802_CLOCK);
- m_audiocpu->set_addrmap(AS_PROGRAM, &efdt_state::efdt_snd_map);
- m_audiocpu->set_periodic_int(FUNC(efdt_state::irq0_line_hold), attotime::from_hz(F6802_CLOCK / 8192));
+ MCFG_DEVICE_ADD("audiocpu", M6802, F6802_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(efdt_snd_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(efdt_state, irq0_line_hold, F6802_CLOCK / 8192)
LS259(config, m_vlatch[0]);
m_vlatch[0]->q_out_cb<0>().set(FUNC(efdt_state::nmi_clear_w));
@@ -562,14 +562,14 @@ void efdt_state::efdt(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(32*8, 32*8);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_visarea(0, 32*8 - 1, 16, 30*8 - 1);
- screen.set_screen_update(FUNC(efdt_state::screen_update_efdt));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(efdt_state::vblank_nmi_w));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_VISIBLE_AREA(0, 32*8 - 1, 16, 30*8 - 1)
+ MCFG_SCREEN_UPDATE_DRIVER(efdt_state, screen_update_efdt)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, efdt_state, vblank_nmi_w))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_efdt);
PALETTE(config, m_palette, FUNC(efdt_state::efdt_palette), 256);
@@ -590,7 +590,8 @@ void efdt_state::efdt(machine_config &config)
ay2.port_b_read_callback().set(FUNC(efdt_state::soundlatch_3_r));
ay2.port_a_write_callback().set(FUNC(efdt_state::soundlatch_2_w));
ay2.port_b_write_callback().set(FUNC(efdt_state::soundlatch_3_w));
-}
+
+MACHINE_CONFIG_END
/*********************************************
diff --git a/src/mame/drivers/egghunt.cpp b/src/mame/drivers/egghunt.cpp
index 29d48c6fe2e..41f67502fcb 100644
--- a/src/mame/drivers/egghunt.cpp
+++ b/src/mame/drivers/egghunt.cpp
@@ -428,28 +428,28 @@ void egghunt_state::machine_reset()
m_vidram_bank = 0;
}
-void egghunt_state::egghunt(machine_config &config)
-{
+MACHINE_CONFIG_START(egghunt_state::egghunt)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 12000000/2); /* 6 MHz ?*/
- m_maincpu->set_addrmap(AS_PROGRAM, &egghunt_state::egghunt_map);
- m_maincpu->set_addrmap(AS_IO, &egghunt_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(egghunt_state::irq0_line_hold)); // or 2 like mitchell.cpp?
+ MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6 MHz ?*/
+ MCFG_DEVICE_PROGRAM_MAP(egghunt_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", egghunt_state, irq0_line_hold) // or 2 like mitchell.c?
- Z80(config, m_audiocpu, 12000000/2); /* 6 MHz ?*/
- m_audiocpu->set_addrmap(AS_PROGRAM, &egghunt_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80,12000000/2) /* 6 MHz ?*/
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, 56*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(egghunt_state::screen_update_egghunt));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, 56*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(egghunt_state, screen_update_egghunt)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_egghunt);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_egghunt)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x400);
@@ -458,8 +458,9 @@ void egghunt_state::egghunt(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- OKIM6295(config, m_oki, 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( egghunt )
ROM_REGION( 0x20000, "maincpu", 0 )
diff --git a/src/mame/drivers/einstein.cpp b/src/mame/drivers/einstein.cpp
index b14aebedeb6..9b06d8bfd80 100644
--- a/src/mame/drivers/einstein.cpp
+++ b/src/mame/drivers/einstein.cpp
@@ -390,6 +390,10 @@ void einstein_state::machine_start()
m_bank1->configure_entry(1, m_bios->base());
m_bank2->set_base(m_ram->pointer());
m_bank3->set_base(m_ram->pointer() + 0x8000);
+
+ // setup expansion slot
+ m_pipe->set_program_space(&m_maincpu->space(AS_PROGRAM));
+ m_pipe->set_io_space(&m_maincpu->space(AS_IO));
}
void einstein_state::machine_reset()
@@ -424,7 +428,8 @@ void einstein_state::einstein_io(address_map &map)
map(0x00, 0x00).mirror(0xff04).rw(FUNC(einstein_state::reset_r), FUNC(einstein_state::reset_w));
map(0x02, 0x02).mirror(0xff04).rw(m_psg, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w));
map(0x03, 0x03).mirror(0xff04).w(m_psg, FUNC(ay8910_device::data_w));
- map(0x08, 0x09).mirror(0xff06).rw("vdp", FUNC(tms9129_device::read), FUNC(tms9129_device::write));
+ map(0x08, 0x08).mirror(0xff06).rw("vdp", FUNC(tms9129_device::vram_r), FUNC(tms9129_device::vram_w));
+ map(0x09, 0x09).mirror(0xff06).rw("vdp", FUNC(tms9129_device::register_r), FUNC(tms9129_device::register_w));
map(0x10, 0x11).mirror(0xff06).rw(IC_I060, FUNC(i8251_device::read), FUNC(i8251_device::write));
map(0x18, 0x1b).mirror(0xff04).rw(m_fdc, FUNC(wd1770_device::read), FUNC(wd1770_device::write));
map(0x20, 0x20).mirror(0xff00).rw(FUNC(einstein_state::kybint_msk_r), FUNC(einstein_state::kybint_msk_w));
@@ -571,8 +576,7 @@ static void einstein_floppies(device_slot_interface &device)
device.option_add("35dd", FLOPPY_35_DD);
}
-void einstein_state::einstein(machine_config &config)
-{
+MACHINE_CONFIG_START(einstein_state::einstein)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL_X002 / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &einstein_state::einstein_mem);
@@ -581,7 +585,7 @@ void einstein_state::einstein(machine_config &config)
/* this is actually clocked at the system clock 4 MHz, but this would be too fast for our
driver. So we update at 50Hz and hope this is good enough. */
- TIMER(config, "keyboard").configure_periodic(FUNC(einstein_state::keyboard_timer_callback), attotime::from_hz(50));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", einstein_state, keyboard_timer_callback, attotime::from_hz(50))
z80pio_device& pio(Z80PIO(config, IC_I063, XTAL_X002 / 2));
pio.out_int_callback().set(FUNC(einstein_state::int_w<0>));
@@ -629,16 +633,15 @@ void einstein_state::einstein(machine_config &config)
adc.ch4_callback().set_ioport("analogue_2_y");
/* printer */
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(IC_I063, FUNC(z80pio_device::strobe_a));
- m_centronics->busy_handler().set(FUNC(einstein_state::write_centronics_busy));
- m_centronics->perror_handler().set(FUNC(einstein_state::write_centronics_perror));
- m_centronics->fault_handler().set(FUNC(einstein_state::write_centronics_fault));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(IC_I063, z80pio_device, strobe_a))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, einstein_state, write_centronics_busy))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, einstein_state, write_centronics_perror))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, einstein_state, write_centronics_fault))
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
- TIMER(config, m_strobe_timer).configure_generic(FUNC(einstein_state::strobe_callback));
+ MCFG_TIMER_DRIVER_ADD("strobe", einstein_state, strobe_callback)
// uart
i8251_device &ic_i060(I8251(config, IC_I060, XTAL_X002 / 4));
@@ -655,13 +658,13 @@ void einstein_state::einstein(machine_config &config)
// floppy
WD1770(config, m_fdc, XTAL_X002);
- FLOPPY_CONNECTOR(config, IC_I042 ":0", einstein_floppies, "3ss", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, IC_I042 ":1", einstein_floppies, "3ss", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, IC_I042 ":2", einstein_floppies, "525qd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, IC_I042 ":3", einstein_floppies, "525qd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(IC_I042 ":0", einstein_floppies, "3ss", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(IC_I042 ":1", einstein_floppies, "3ss", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(IC_I042 ":2", einstein_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(IC_I042 ":3", einstein_floppies, "525qd", floppy_image_device::default_floppy_formats)
/* software lists */
- SOFTWARE_LIST(config, "disk_list").set_original("einstein");
+ MCFG_SOFTWARE_LIST_ADD("disk_list","einstein")
/* RAM is provided by 8k DRAM ICs i009, i010, i011, i012, i013, i014, i015 and i016 */
/* internal ram */
@@ -669,13 +672,12 @@ void einstein_state::einstein(machine_config &config)
// tatung pipe connector
TATUNG_PIPE(config, m_pipe, XTAL_X002 / 2, tatung_pipe_cards, nullptr);
- m_pipe->set_program_space(m_maincpu, AS_PROGRAM);
- m_pipe->set_io_space(m_maincpu, AS_IO);
m_pipe->nmi_handler().set_inputline(IC_I001, INPUT_LINE_NMI);
// user port
- EINSTEIN_USERPORT(config, "user").bstb_handler().set(IC_I063, FUNC(z80pio_device::strobe_b));
-}
+ MCFG_EINSTEIN_USERPORT_ADD("user")
+ MCFG_EINSTEIN_USERPORT_BSTB_HANDLER(WRITELINE(IC_I063, z80pio_device, strobe_b))
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/electra.cpp b/src/mame/drivers/electra.cpp
index 627f8215ce2..59dca302ffa 100644
--- a/src/mame/drivers/electra.cpp
+++ b/src/mame/drivers/electra.cpp
@@ -92,21 +92,20 @@ void electra_state::video_start()
{
}
-void electra_state::electra(machine_config &config)
-{
+MACHINE_CONFIG_START(electra_state::electra)
+
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_electra);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(electra)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL);
- m_video->set_vert_params(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.30);
-}
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/electron.cpp b/src/mame/drivers/electron.cpp
index cc799facb50..f05545007ce 100644
--- a/src/mame/drivers/electron.cpp
+++ b/src/mame/drivers/electron.cpp
@@ -106,7 +106,7 @@ void electron_state::electron64_opcodes(address_map &map)
INPUT_CHANGED_MEMBER(electron_state::trigger_reset)
{
m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
- if (!newval)
+ if (newval)
{
m_exp->reset();
}
@@ -211,8 +211,7 @@ static INPUT_PORTS_START( electron64 )
PORT_CONFSETTING(0x02, "64K")
INPUT_PORTS_END
-void electron_state::electron(machine_config &config)
-{
+MACHINE_CONFIG_START(electron_state::electron)
M6502(config, m_maincpu, 16_MHz_XTAL / 8);
m_maincpu->set_addrmap(AS_PROGRAM, &electron_state::electron_mem);
@@ -223,7 +222,7 @@ void electron_state::electron(machine_config &config)
m_screen->set_video_attributes(VIDEO_UPDATE_SCANLINE);
m_screen->set_palette("palette");
- PALETTE(config, "palette", FUNC(electron_state::electron_colours), 8);
+ PALETTE(config, "palette", FUNC(electron_state::electron_colours), 16);
SPEAKER(config, "mono").front_center();
BEEP(config, m_beeper, 300).add_route(ALL_OUTPUTS, "mono", 1.00);
@@ -236,34 +235,33 @@ void electron_state::electron(machine_config &config)
m_cassette->set_interface("electron_cass");
/* expansion port */
- ELECTRON_EXPANSION_SLOT(config, m_exp, 16_MHz_XTAL, electron_expansion_devices, "plus3");
- m_exp->irq_handler().set_inputline(m_maincpu, M6502_IRQ_LINE);
- m_exp->nmi_handler().set_inputline(m_maincpu, M6502_NMI_LINE);
+ MCFG_ELECTRON_EXPANSION_SLOT_ADD("exp", electron_expansion_devices, "plus3", false)
+ MCFG_ELECTRON_EXPANSION_SLOT_IRQ_HANDLER(INPUTLINE("maincpu", M6502_IRQ_LINE))
+ MCFG_ELECTRON_EXPANSION_SLOT_NMI_HANDLER(INPUTLINE("maincpu", M6502_NMI_LINE))
/* software lists */
SOFTWARE_LIST(config, "cass_list").set_original("electron_cass");
SOFTWARE_LIST(config, "cart_list").set_original("electron_cart");
SOFTWARE_LIST(config, "flop_list").set_original("electron_flop");
SOFTWARE_LIST(config, "rom_list").set_original("electron_rom");
-}
+MACHINE_CONFIG_END
-void electron_state::btm2105(machine_config &config)
-{
+MACHINE_CONFIG_START(electron_state::btm2105)
electron(config);
m_screen->set_color(rgb_t::amber());
/* expansion port */
- m_exp->set_default_option("m2105");
- m_exp->set_fixed(true);
+ MCFG_DEVICE_MODIFY("exp")
+ MCFG_DEVICE_SLOT_INTERFACE(electron_expansion_devices, "m2105", true)
/* software lists */
config.device_remove("cass_list");
config.device_remove("cart_list");
config.device_remove("flop_list");
config.device_remove("rom_list");
-}
+MACHINE_CONFIG_END
void electron_state::electron64(machine_config &config)
@@ -277,6 +275,7 @@ void electron_state::electron64(machine_config &config)
}
+/* Electron Rom Load */
ROM_START(electron)
ROM_REGION( 0x4000, "mos", 0 )
ROM_LOAD( "b02_acornos-1.rom", 0x0000, 0x4000, CRC(a0c2cf43) SHA1(a27ce645472cc5497690e4bfab43710efbb0792d) )
diff --git a/src/mame/drivers/elekscmp.cpp b/src/mame/drivers/elekscmp.cpp
index 41aa33323bd..da2cba712b3 100644
--- a/src/mame/drivers/elekscmp.cpp
+++ b/src/mame/drivers/elekscmp.cpp
@@ -144,15 +144,14 @@ static INPUT_PORTS_START( elekscmp )
PORT_BIT(0xfe, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
-void elekscmp_state::elekscmp(machine_config &config)
-{
+MACHINE_CONFIG_START(elekscmp_state::elekscmp)
/* basic machine hardware */
- INS8060(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &elekscmp_state::mem_map);
+ MCFG_DEVICE_ADD("maincpu",INS8060, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
/* video hardware */
config.set_default_layout(layout_elekscmp);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( elekscmp )
diff --git a/src/mame/drivers/elektronmono.cpp b/src/mame/drivers/elektronmono.cpp
index 366f5e350a4..92fbd07775d 100644
--- a/src/mame/drivers/elektronmono.cpp
+++ b/src/mame/drivers/elektronmono.cpp
@@ -154,14 +154,13 @@ void elekmono_state::elektron_map(address_map &map)
map(0x10000000, 0x107fffff).rom().region("maincpu", 0);
}
-void elekmono_state::elektron(machine_config &config)
-{
- MCF5206E(config, m_maincpu, XTAL(25'447'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &elekmono_state::elektron_map);
+MACHINE_CONFIG_START(elekmono_state::elektron)
+ MCFG_DEVICE_ADD("maincpu", MCF5206E, XTAL(25'447'000))
+ MCFG_DEVICE_PROGRAM_MAP(elektron_map)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
-}
+MACHINE_CONFIG_END
static INPUT_PORTS_START( elektron )
INPUT_PORTS_END
diff --git a/src/mame/drivers/elf.cpp b/src/mame/drivers/elf.cpp
index 316db189ac5..f9ce8358370 100644
--- a/src/mame/drivers/elf.cpp
+++ b/src/mame/drivers/elf.cpp
@@ -236,8 +236,7 @@ QUICKLOAD_LOAD_MEMBER( elf2_state, elf )
return image_init_result::PASS;
}
-void elf2_state::elf2(machine_config &config)
-{
+MACHINE_CONFIG_START(elf2_state::elf2)
/* basic machine hardware */
CDP1802(config, m_maincpu, XTAL(3'579'545)/2);
m_maincpu->set_addrmap(AS_PROGRAM, &elf2_state::elf2_mem);
@@ -260,26 +259,28 @@ void elf2_state::elf2(machine_config &config)
SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER);
/* devices */
- MM74C923(config, m_kb, 0);
- m_kb->set_cap_osc(CAP_U(0.15));
- m_kb->set_cap_debounce(CAP_U(1));
- m_kb->da_wr_callback().set(FUNC(elf2_state::da_w));
- m_kb->x1_rd_callback().set_ioport("X1");
- m_kb->x2_rd_callback().set_ioport("X2");
- m_kb->x3_rd_callback().set_ioport("X3");
- m_kb->x4_rd_callback().set_ioport("X4");
+ MCFG_DEVICE_ADD(MM74C923_TAG, MM74C923, 0)
+ MCFG_MM74C922_OSC(CAP_U(0.15))
+ MCFG_MM74C922_DEBOUNCE(CAP_U(1))
+ MCFG_MM74C922_DA_CALLBACK(WRITELINE(*this, elf2_state, da_w))
+ MCFG_MM74C922_X1_CALLBACK(IOPORT("X1"))
+ MCFG_MM74C922_X2_CALLBACK(IOPORT("X2"))
+ MCFG_MM74C922_X3_CALLBACK(IOPORT("X3"))
+ MCFG_MM74C922_X4_CALLBACK(IOPORT("X4"))
- DM9368(config, m_led_h, 0).update_cb().set(FUNC(elf2_state::digit_w<0>));
- DM9368(config, m_led_l, 0).update_cb().set(FUNC(elf2_state::digit_w<1>));
+ MCFG_DEVICE_ADD(DM9368_H_TAG, DM9368, 0)
+ MCFG_DM9368_UPDATE_CALLBACK(WRITE8(*this, elf2_state, digit_w<0>))
+ MCFG_DEVICE_ADD(DM9368_L_TAG, DM9368, 0)
+ MCFG_DM9368_UPDATE_CALLBACK(WRITE8(*this, elf2_state, digit_w<1>))
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
- QUICKLOAD(config, "quickload").set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(elf2_state, elf), this), "bin");
+ MCFG_QUICKLOAD_ADD("quickload", elf2_state, elf, "bin", 0)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("256");
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/elwro800.cpp b/src/mame/drivers/elwro800.cpp
index 476aae5a0f8..30a59a8db30 100644
--- a/src/mame/drivers/elwro800.cpp
+++ b/src/mame/drivers/elwro800.cpp
@@ -60,7 +60,7 @@ private:
/* NR signal */
uint8_t m_NR;
- uint8_t nmi_r();
+ DECLARE_READ8_MEMBER(nmi_r);
DECLARE_WRITE8_MEMBER(elwro800jr_fdc_control_w);
DECLARE_READ8_MEMBER(elwro800jr_io_r);
DECLARE_WRITE8_MEMBER(elwro800jr_io_w);
@@ -99,12 +99,12 @@ private:
*
*************************************/
-uint8_t elwro800_state::nmi_r()
+READ8_MEMBER(elwro800_state::nmi_r)
{
if (m_ram_at_0000)
return 0xdf;
else
- return m_bank1->read8(0x66);
+ return m_bank1->read8(space, 0x66);
}
/*************************************
@@ -284,11 +284,11 @@ READ8_MEMBER(elwro800_state::elwro800jr_io_r)
// CSFDC
if (offset & 1)
{
- return m_upd765->fifo_r();
+ return m_upd765->fifo_r(space, 0, 0xff);
}
else
{
- return m_upd765->msr_r();
+ return m_upd765->msr_r(space, 0, 0xff);
}
}
else if (!BIT(cs,4))
@@ -332,7 +332,7 @@ WRITE8_MEMBER(elwro800_state::elwro800jr_io_w)
// CSFDC
if (offset & 1)
{
- m_upd765->fifo_w(data);
+ m_upd765->fifo_w(space, 0, data, 0xff);
}
}
else if (!BIT(cs,4))
@@ -554,24 +554,24 @@ static GFXDECODE_START( gfx_elwro800 )
GFXDECODE_END
-void elwro800_state::elwro800(machine_config &config)
-{
+MACHINE_CONFIG_START(elwro800_state::elwro800)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 14_MHz_XTAL / 4); /* 3.5 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &elwro800_state::elwro800_mem);
- m_maincpu->set_addrmap(AS_IO, &elwro800_state::elwro800_io);
- m_maincpu->set_addrmap(AS_OPCODES, &elwro800_state::elwro800_m1);
- m_maincpu->set_vblank_int("screen", FUNC(elwro800_state::elwro800jr_interrupt));
+ MCFG_DEVICE_ADD("maincpu",Z80, 14_MHz_XTAL / 4) /* 3.5 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(elwro800_mem)
+ MCFG_DEVICE_IO_MAP(elwro800_io)
+ MCFG_DEVICE_OPCODES_MAP(elwro800_m1)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", elwro800_state, elwro800jr_interrupt)
MCFG_MACHINE_RESET_OVERRIDE(elwro800_state,elwro800)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(14_MHz_XTAL / 2, 448, 0, SPEC_SCREEN_WIDTH, 312, 0, SPEC_SCREEN_HEIGHT);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(14_MHz_XTAL / 2, 448, 0, SPEC_SCREEN_WIDTH, 312, 0, SPEC_SCREEN_HEIGHT)
// Sync and interrupt timings determined by 2716 EPROM
- screen.set_screen_update(FUNC(elwro800_state::screen_update_spectrum));
- screen.screen_vblank().set(FUNC(elwro800_state::screen_vblank_spectrum));
- screen.set_palette("palette");
+ MCFG_SCREEN_UPDATE_DRIVER(elwro800_state, screen_update_spectrum )
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, elwro800_state, screen_vblank_spectrum))
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(elwro800_state::spectrum_palette), 16);
GFXDECODE(config, "gfxdecode", "palette", gfx_elwro800);
@@ -593,29 +593,28 @@ void elwro800_state::elwro800(machine_config &config)
m_centronics->ack_handler().set(FUNC(elwro800_state::write_centronics_ack));
INPUT_BUFFER(config, "cent_data_in");
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
I8251(config, m_i8251, 14_MHz_XTAL / 4);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(tzx_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(tzx_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
- FLOPPY_CONNECTOR(config, "upd765:0", elwro800jr_floppies, "525hd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765:1", elwro800jr_floppies, "525hd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("upd765:0", elwro800jr_floppies, "525hd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765:1", elwro800jr_floppies, "525hd", floppy_image_device::default_floppy_formats)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K");
ADDRESS_MAP_BANK(config, "bank1").set_map(&elwro800_state::elwro800_bank1).set_data_width(8).set_stride(0x2000);
ADDRESS_MAP_BANK(config, "bank2").set_map(&elwro800_state::elwro800_bank2).set_data_width(8).set_stride(0x2000);
-}
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/embargo.cpp b/src/mame/drivers/embargo.cpp
index 241e1a712bf..2468e88e6b5 100644
--- a/src/mame/drivers/embargo.cpp
+++ b/src/mame/drivers/embargo.cpp
@@ -266,21 +266,22 @@ void embargo_state::machine_reset()
*
*************************************/
-void embargo_state::embargo(machine_config &config)
-{
+MACHINE_CONFIG_START(embargo_state::embargo)
+
/* basic machine hardware */
- S2650(config, m_maincpu, 625000);
- m_maincpu->set_addrmap(AS_PROGRAM, &embargo_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &embargo_state::main_io_map);
- m_maincpu->set_addrmap(AS_DATA, &embargo_state::main_data_map);
+ MCFG_DEVICE_ADD("maincpu", S2650, 625000)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_io_map)
+ MCFG_DEVICE_DATA_MAP(main_data_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_size(256, 256);
- screen.set_visarea(0, 255, 0, 239);
- screen.set_refresh_hz(60);
- screen.set_screen_update(FUNC(embargo_state::screen_update_embargo));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_UPDATE_DRIVER(embargo_state, screen_update_embargo)
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/emma2.cpp b/src/mame/drivers/emma2.cpp
index 1c83b0c1d64..2a1fa2ebfdb 100644
--- a/src/mame/drivers/emma2.cpp
+++ b/src/mame/drivers/emma2.cpp
@@ -191,11 +191,10 @@ void emma2_state::machine_reset()
m_dig_change = 0;
}
-void emma2_state::emma2(machine_config &config)
-{
+MACHINE_CONFIG_START(emma2_state::emma2)
/* basic machine hardware */
- M6502(config, m_maincpu, 1'000'000);
- m_maincpu->set_addrmap(AS_PROGRAM, &emma2_state::mem_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, 1'000'000)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
/* video hardware */
config.set_default_layout(layout_emma2);
@@ -213,13 +212,13 @@ void emma2_state::emma2(machine_config &config)
m_pia->irqb_handler().set_inputline(m_maincpu, m6502_device::IRQ_LINE);
/* cassette */
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.05);
-}
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05);
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/enigma2.cpp b/src/mame/drivers/enigma2.cpp
index e0f172e9501..64cf7b590f7 100644
--- a/src/mame/drivers/enigma2.cpp
+++ b/src/mame/drivers/enigma2.cpp
@@ -605,21 +605,21 @@ static INPUT_PORTS_START( enigma2a )
INPUT_PORTS_END
-void enigma2_state::enigma2(machine_config &config)
-{
+MACHINE_CONFIG_START(enigma2_state::enigma2)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &enigma2_state::enigma2_main_cpu_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(enigma2_main_cpu_map)
- Z80(config, m_audiocpu, 2500000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &enigma2_state::enigma2_audio_cpu_map);
- m_audiocpu->set_periodic_int(FUNC(enigma2_state::irq0_line_hold), attotime::from_hz(8*52));
+ MCFG_DEVICE_ADD("audiocpu", Z80, 2500000)
+ MCFG_DEVICE_PROGRAM_MAP(enigma2_audio_cpu_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(enigma2_state, irq0_line_hold, 8*52)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(enigma2_state::screen_update_enigma2));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(enigma2_state, screen_update_enigma2)
PALETTE(config, m_palette, palette_device::BGR_3BIT);
@@ -630,25 +630,25 @@ void enigma2_state::enigma2(machine_config &config)
aysnd.port_a_read_callback().set(FUNC(enigma2_state::sound_latch_r));
aysnd.port_b_write_callback().set(FUNC(enigma2_state::protection_data_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
-void enigma2_state::enigma2a(machine_config &config)
-{
+MACHINE_CONFIG_START(enigma2_state::enigma2a)
+
/* basic machine hardware */
- I8080(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &enigma2_state::enigma2a_main_cpu_map);
- m_maincpu->set_addrmap(AS_IO, &enigma2_state::enigma2a_main_cpu_io_map);
+ MCFG_DEVICE_ADD("maincpu", I8080, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(enigma2a_main_cpu_map)
+ MCFG_DEVICE_IO_MAP(enigma2a_main_cpu_io_map)
- Z80(config, m_audiocpu, 2500000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &enigma2_state::enigma2_audio_cpu_map);
- m_audiocpu->set_periodic_int(FUNC(enigma2_state::irq0_line_hold), attotime::from_hz(8*52));
+ MCFG_DEVICE_ADD("audiocpu", Z80, 2500000)
+ MCFG_DEVICE_PROGRAM_MAP(enigma2_audio_cpu_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(enigma2_state, irq0_line_hold, 8*52)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(enigma2_state::screen_update_enigma2a));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(enigma2_state, screen_update_enigma2a)
/* audio hardware */
SPEAKER(config, "mono").front_center();
@@ -657,7 +657,7 @@ void enigma2_state::enigma2a(machine_config &config)
aysnd.port_a_read_callback().set(FUNC(enigma2_state::sound_latch_r));
aysnd.port_b_write_callback().set(FUNC(enigma2_state::protection_data_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/eolith.cpp b/src/mame/drivers/eolith.cpp
index 7608da87cac..2f812b13f8d 100644
--- a/src/mame/drivers/eolith.cpp
+++ b/src/mame/drivers/eolith.cpp
@@ -557,8 +557,8 @@ void eolith_state::eolith45(machine_config &config)
.write_time(attotime::from_usec(250));
// for testing sound sync
-// config.m_perfect_cpu_quantum = subtag("maincpu");
-// config.m_minimum_quantum = attotime::from_hz(6000);
+// MCFG_QUANTUM_PERFECT_CPU("maincpu")
+// MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
diff --git a/src/mame/drivers/eolith16.cpp b/src/mame/drivers/eolith16.cpp
index 882c27ad7fd..d7b6bac7c49 100644
--- a/src/mame/drivers/eolith16.cpp
+++ b/src/mame/drivers/eolith16.cpp
@@ -159,32 +159,31 @@ void eolith16_state::eolith16_palette(palette_device &palette) const
}
-void eolith16_state::eolith16(machine_config &config)
-{
- E116T(config, m_maincpu, XTAL(60'000'000)); /* no internal multiplier */
- m_maincpu->set_addrmap(AS_PROGRAM, &eolith16_state::eolith16_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(eolith16_state::eolith_speedup), "screen", 0, 1);
+MACHINE_CONFIG_START(eolith16_state::eolith16)
+ MCFG_DEVICE_ADD("maincpu", E116T, XTAL(60'000'000)) /* no internal multiplier */
+ MCFG_DEVICE_PROGRAM_MAP(eolith16_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", eolith16_state, eolith_speedup, "screen", 0, 1)
EEPROM_93C66_8BIT(config, "eeprom");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- m_screen->set_size(512, 262);
- m_screen->set_visarea(0, 319, 0, 199);
- m_screen->set_screen_update(FUNC(eolith16_state::screen_update_eolith16));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(512, 262)
+ MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 199)
+ MCFG_SCREEN_UPDATE_DRIVER(eolith16_state, screen_update_eolith16)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(eolith16_state::eolith16_palette), 256);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(1'000'000), okim6295_device::PIN7_HIGH));
- oki.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(1'000'000), okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/ep64.cpp b/src/mame/drivers/ep64.cpp
index a5c271c6833..00df7844f3d 100644
--- a/src/mame/drivers/ep64.cpp
+++ b/src/mame/drivers/ep64.cpp
@@ -174,7 +174,6 @@ Notes: (All IC's shown)
#define CASSETTE1_TAG "cassette1"
#define CASSETTE2_TAG "cassette2"
#define SCREEN_TAG "screen"
-#define EP64_EXPANSION_BUS_TAG "exp"
class ep64_state : public driver_device
{
@@ -544,7 +543,7 @@ INPUT_PORTS_END
void ep64_state::machine_start()
{
if (m_cart->exists())
- m_dave->space(AS_PROGRAM).install_read_handler(0x010000, 0x01ffff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
+ m_dave->space(AS_PROGRAM).install_read_handler(0x010000, 0x01ffff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
// state saving
save_item(NAME(m_key));
@@ -570,7 +569,7 @@ void ep64_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( ep64 )
+// MACHINE_CONFIG( ep64 )
//-------------------------------------------------
void ep64_state::ep64(machine_config &config)
@@ -603,8 +602,7 @@ void ep64_state::ep64(machine_config &config)
// devices
EP64_EXPANSION_BUS_SLOT(config, m_exp, nullptr);
- m_exp->set_program_space(m_dave, AS_PROGRAM);
- m_exp->set_io_space(m_dave, AS_IO);
+ m_exp->set_dave_tag(m_dave);
m_exp->irq_wr().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
m_exp->nmi_wr().set_inputline(m_maincpu, INPUT_LINE_NMI);
m_exp->wait_wr().set_inputline(m_maincpu, Z80_INPUT_LINE_BOGUSWAIT);
@@ -639,7 +637,7 @@ void ep64_state::ep64(machine_config &config)
//-------------------------------------------------
-// machine_config( ep128 )
+// MACHINE_CONFIG( ep128 )
//-------------------------------------------------
void ep64_state::ep128(machine_config &config)
diff --git a/src/mame/drivers/epos.cpp b/src/mame/drivers/epos.cpp
index 749408e6f13..65a4f7c3d9f 100644
--- a/src/mame/drivers/epos.cpp
+++ b/src/mame/drivers/epos.cpp
@@ -457,39 +457,39 @@ MACHINE_START_MEMBER(epos_state,dealer)
MACHINE_START_CALL_MEMBER(epos);
}
-void epos_state::epos(machine_config &config) /* EPOS TRISTAR 8000 PCB */
-{
+MACHINE_CONFIG_START(epos_state::epos) /* EPOS TRISTAR 8000 PCB */
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(11'000'000)/4); /* 2.75 MHz schematics confirm 11MHz XTAL (see notes) */
- m_maincpu->set_addrmap(AS_PROGRAM, &epos_state::epos_map);
- m_maincpu->set_addrmap(AS_IO, &epos_state::epos_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(epos_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(11'000'000)/4) /* 2.75 MHz schematics confirm 11MHz XTAL (see notes) */
+ MCFG_DEVICE_PROGRAM_MAP(epos_map)
+ MCFG_DEVICE_IO_MAP(epos_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", epos_state, irq0_line_hold)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(272, 241);
- screen.set_visarea(0, 271, 0, 235);
- screen.set_screen_update(FUNC(epos_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(272, 241)
+ MCFG_SCREEN_VISIBLE_AREA(0, 271, 0, 235)
+ MCFG_SCREEN_UPDATE_DRIVER(epos_state, screen_update)
PALETTE(config, m_palette, FUNC(epos_state::epos_palette), 32);
/* sound hardware */
SPEAKER(config, "mono").front_center();
AY8912(config, "aysnd", XTAL(11'000'000)/16).add_route(ALL_OUTPUTS, "mono", 1.0); /* 0.6875 MHz, confirmed from schematics */
-}
+MACHINE_CONFIG_END
-void epos_state::dealer(machine_config &config) /* EPOS TRISTAR 9000 PCB */
-{
+MACHINE_CONFIG_START(epos_state::dealer) /* EPOS TRISTAR 9000 PCB */
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(22'118'400)/8); /* 2.7648 MHz (measured) */
- m_maincpu->set_addrmap(AS_PROGRAM, &epos_state::dealer_map);
- m_maincpu->set_addrmap(AS_IO, &epos_state::dealer_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(epos_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(22'118'400)/8) /* 2.7648 MHz (measured) */
+ MCFG_DEVICE_PROGRAM_MAP(dealer_map)
+ MCFG_DEVICE_IO_MAP(dealer_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", epos_state, irq0_line_hold)
i8255_device &ppi(I8255A(config, "ppi8255"));
ppi.in_pa_callback().set(FUNC(epos_state::i8255_porta_r));
@@ -505,12 +505,12 @@ void epos_state::dealer(machine_config &config) /* EPOS TRISTAR 9000 PCB */
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(272, 241);
- screen.set_visarea(0, 271, 0, 235);
- screen.set_screen_update(FUNC(epos_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(272, 241)
+ MCFG_SCREEN_VISIBLE_AREA(0, 271, 0, 235)
+ MCFG_SCREEN_UPDATE_DRIVER(epos_state, screen_update)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -519,7 +519,7 @@ void epos_state::dealer(machine_config &config) /* EPOS TRISTAR 9000 PCB */
aysnd.port_a_read_callback().set(FUNC(epos_state::ay_porta_mpx_r));
// port a writes?
aysnd.port_b_write_callback().set(FUNC(epos_state::flip_screen_w)); // flipscreen and ay port a multiplex control
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/eprom.cpp b/src/mame/drivers/eprom.cpp
index f0443b42e3e..4e12bfde4d1 100644
--- a/src/mame/drivers/eprom.cpp
+++ b/src/mame/drivers/eprom.cpp
@@ -83,9 +83,9 @@ READ8_MEMBER(eprom_state::adc_r)
if (!m_adc.found())
return 0xff;
- uint8_t result = m_adc->data_r();
+ uint8_t result = m_adc->data_r(space, 0);
if (!machine().side_effects_disabled())
- m_adc->address_offset_start_w(offset, 0);
+ m_adc->address_offset_start_w(space, offset, 0);
return result;
}
@@ -380,16 +380,16 @@ GFXDECODE_END
*
*************************************/
-void eprom_state::eprom(machine_config &config)
-{
+MACHINE_CONFIG_START(eprom_state::eprom)
+
/* basic machine hardware */
- M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &eprom_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- M68000(config, m_extra, ATARI_CLOCK_14MHz/2);
- m_extra->set_addrmap(AS_PROGRAM, &eprom_state::extra_map);
+ MCFG_DEVICE_ADD("extra", M68000, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(extra_map)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
ADC0809(config, m_adc, ATARI_CLOCK_14MHz/16);
m_adc->in_callback<0>().set_ioport("ADC0");
@@ -402,23 +402,23 @@ void eprom_state::eprom(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_eprom);
- PALETTE(config, m_palette).set_entries(2048);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_eprom)
+ MCFG_PALETTE_ADD("palette", 2048)
- TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_COLS, 64,64).set_info_callback(FUNC(eprom_state::get_playfield_tile_info));
- TILEMAP(config, m_alpha_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64,32, 0).set_info_callback(FUNC(eprom_state::get_alpha_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 2, eprom_state, get_playfield_tile_info, 8,8, SCAN_COLS, 64,64)
+ MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", "gfxdecode", 2, eprom_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, eprom_state::s_mob_config);
m_mob->set_gfxdecode(m_gfxdecode);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses a SYNGEN chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(eprom_state::screen_update_eprom));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(eprom_state::video_int_write_line));
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(eprom_state, screen_update_eprom)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, eprom_state, video_int_write_line))
MCFG_VIDEO_START_OVERRIDE(eprom_state,eprom)
@@ -430,39 +430,39 @@ void eprom_state::eprom(machine_config &config)
m_jsa->test_read_cb().set_ioport("260010").bit(1);
m_jsa->add_route(ALL_OUTPUTS, "mono", 1.0);
config.device_remove("jsa:pokey");
-}
+MACHINE_CONFIG_END
-void eprom_state::klaxp(machine_config &config)
-{
+MACHINE_CONFIG_START(eprom_state::klaxp)
+
/* basic machine hardware */
- M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &eprom_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
EEPROM_2804(config, "eeprom").lock_after_write(true);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_eprom);
- PALETTE(config, m_palette).set_entries(2048);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_eprom)
+ MCFG_PALETTE_ADD("palette", 2048)
- TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_COLS, 64,64).set_info_callback(FUNC(eprom_state::get_playfield_tile_info));
- TILEMAP(config, m_alpha_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64,32, 0).set_info_callback(FUNC(eprom_state::get_alpha_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 2, eprom_state, get_playfield_tile_info, 8,8, SCAN_COLS, 64,64)
+ MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", "gfxdecode", 2, eprom_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, eprom_state::s_mob_config);
m_mob->set_gfxdecode(m_gfxdecode);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses a SYNGEN chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(eprom_state::screen_update_eprom));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(eprom_state::video_int_write_line));
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(eprom_state, screen_update_eprom)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, eprom_state, video_int_write_line))
MCFG_VIDEO_START_OVERRIDE(eprom_state,eprom)
@@ -473,16 +473,16 @@ void eprom_state::klaxp(machine_config &config)
m_jsa->main_int_cb().set_inputline(m_maincpu, M68K_IRQ_6);
m_jsa->test_read_cb().set_ioport("260010").bit(1);
m_jsa->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
-void eprom_state::guts(machine_config &config)
-{
+MACHINE_CONFIG_START(eprom_state::guts)
+
/* basic machine hardware */
- M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &eprom_state::guts_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(guts_map)
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
ADC0809(config, m_adc, ATARI_CLOCK_14MHz/16);
m_adc->in_callback<0>().set_ioport("ADC0");
@@ -495,23 +495,23 @@ void eprom_state::guts(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_guts);
- PALETTE(config, m_palette).set_entries(2048);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_guts)
+ MCFG_PALETTE_ADD("palette", 2048)
- TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_COLS, 64,64).set_info_callback(FUNC(eprom_state::guts_get_playfield_tile_info));
- TILEMAP(config, m_alpha_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64,32, 0).set_info_callback(FUNC(eprom_state::get_alpha_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 2, eprom_state, guts_get_playfield_tile_info, 8,8, SCAN_COLS, 64,64)
+ MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", "gfxdecode", 2, eprom_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, eprom_state::s_guts_mob_config);
m_mob->set_gfxdecode(m_gfxdecode);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses a SYNGEN chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(eprom_state::screen_update_guts));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(eprom_state::video_int_write_line));
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(eprom_state, screen_update_guts)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, eprom_state, video_int_write_line))
MCFG_VIDEO_START_OVERRIDE(eprom_state,guts)
@@ -522,7 +522,7 @@ void eprom_state::guts(machine_config &config)
m_jsa->main_int_cb().set_inputline(m_maincpu, M68K_IRQ_6);
m_jsa->test_read_cb().set_ioport("260010").bit(1);
m_jsa->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/equites.cpp b/src/mame/drivers/equites.cpp
index ebec71eb31d..4996ea32a97 100644
--- a/src/mame/drivers/equites.cpp
+++ b/src/mame/drivers/equites.cpp
@@ -1079,6 +1079,7 @@ void equites_state::common_sound(machine_config &config)
DAC_6BIT_R2R(config, m_dac_1, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
DAC_6BIT_R2R(config, m_dac_2, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT);
diff --git a/src/mame/drivers/ertictac.cpp b/src/mame/drivers/ertictac.cpp
index 2686577a556..7e3b1205c24 100644
--- a/src/mame/drivers/ertictac.cpp
+++ b/src/mame/drivers/ertictac.cpp
@@ -245,6 +245,7 @@ void ertictac_state::ertictac(machine_config &config)
DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_dac[i], 0).add_route(0, "speaker", 0.05); // unknown DAC
}
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac0", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac0", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
diff --git a/src/mame/drivers/esd16.cpp b/src/mame/drivers/esd16.cpp
index ec6ec003c0e..ba3ae9dd816 100644
--- a/src/mame/drivers/esd16.cpp
+++ b/src/mame/drivers/esd16.cpp
@@ -85,66 +85,70 @@ ToDo:
***************************************************************************/
-WRITE8_MEMBER(esd16_state::sound_command_w)
+WRITE16_MEMBER(esd16_state::esd16_sound_command_w)
{
- m_soundlatch->write(space, 0, data & 0xff);
- m_maincpu->spin_until_time(attotime::from_usec(50)); // Allow the other CPU to reply
+ if (ACCESSING_BITS_0_7)
+ {
+ m_soundlatch->write(space, 0, data & 0xff);
+ m_audiocpu->set_input_line(0, ASSERT_LINE); // Generate an IRQ
+ m_maincpu->spin_until_time(attotime::from_usec(50)); // Allow the other CPU to reply
+ }
}
-template<unsigned Layer>
-void esd16_state::vram_w(offs_t offset, u16 data, u16 mem_mask)
-{
- COMBINE_DATA(&m_vram[Layer][offset]);
- m_tilemap[Layer]->mark_tile_dirty(offset);
- m_tilemap_16x16[Layer]->mark_tile_dirty(offset);
-}
-
-void esd16_state::hedpanic_platform_w(u16 data)
+WRITE16_MEMBER(esd16_state::hedpanic_platform_w)
{
int offsets = m_headpanic_platform_x[0] + 0x40 * m_headpanic_platform_y[0];
- m_vram[1][offsets] = data;
- m_tilemap[1]->mark_tile_dirty(offsets);
- m_tilemap_16x16[1]->mark_tile_dirty(offsets);
+ m_vram_1[offsets] = data;
+ m_tilemap_1_16x16->mark_tile_dirty(offsets);
}
-u8 esd16_state::eeprom_r()
+READ16_MEMBER(esd16_state::esd_eeprom_r)
{
- return ((m_eeprom->do_read() & 0x01) << 7);
+ if (ACCESSING_BITS_8_15)
+ {
+ return ((m_eeprom->do_read() & 0x01) << 15);
+ }
+
+// logerror("(0x%06x) unk EEPROM read: %04x\n", m_maincpu->pc(), mem_mask);
+ return 0;
}
-void esd16_state::eeprom_w(u8 data)
+WRITE16_MEMBER(esd16_state::esd_eeprom_w)
{
- m_io_eepromout->write(data, 0xff);
+ if (ACCESSING_BITS_8_15)
+ ioport("EEPROMOUT")->write(data, 0xffff);
+
+// logerror("(0x%06x) Unk EEPROM write: %04x %04x\n", m_maincpu->pc(), data, mem_mask);
}
-void esd16_state::io_area_dsw(address_map &map, u32 base)
+void esd16_state::esd16_io_area_dsw(address_map &map, u32 base)
{
map(base + 0x0, base + 0x1).nopw(); /* Irq Ack */
map(base + 0x2, base + 0x3).portr("P1_P2");
map(base + 0x4, base + 0x5).portr("SYSTEM");
map(base + 0x6, base + 0x7).portr("DSW");
- map(base + 0x8, base + 0x9).w(FUNC(esd16_state::tilemap0_color_w));
+ map(base + 0x8, base + 0x9).w(FUNC(esd16_state::esd16_tilemap0_color_w));
map(base + 0xa, base + 0xb).nopw(); /* Unknown */
- map(base + 0xd, base + 0xd).w(FUNC(esd16_state::sound_command_w));
+ map(base + 0xc, base + 0xd).w(FUNC(esd16_state::esd16_sound_command_w));
map(base + 0xe, base + 0xf).nopw(); /* n/c */
}
-void esd16_state::io_area_eeprom(address_map &map, u32 base)
+void esd16_state::esd16_io_area_eeprom(address_map &map, u32 base)
{
map(base + 0x0, base + 0x1).nopw(); /* Irq Ack */
map(base + 0x2, base + 0x3).portr("P1_P2");
map(base + 0x4, base + 0x5).portr("SYSTEM");
- map(base + 0x6, base + 0x6).r(FUNC(esd16_state::eeprom_r));
- map(base + 0x8, base + 0x9).w(FUNC(esd16_state::tilemap0_color_w));
+ map(base + 0x6, base + 0x7).r(FUNC(esd16_state::esd_eeprom_r));
+ map(base + 0x8, base + 0x9).w(FUNC(esd16_state::esd16_tilemap0_color_w));
map(base + 0xa, base + 0xb).nopw(); /* Unknown */
- map(base + 0xd, base + 0xd).w(FUNC(esd16_state::sound_command_w));
- map(base + 0xe, base + 0xf).w(FUNC(esd16_state::eeprom_w));
+ map(base + 0xc, base + 0xd).w(FUNC(esd16_state::esd16_sound_command_w));
+ map(base + 0xe, base + 0xf).w(FUNC(esd16_state::esd_eeprom_w));
}
-void esd16_state::vid_attr_area(address_map &map, u32 base)
+void esd16_state::esd16_vid_attr_area(address_map &map, u32 base)
{
map(base + 0x0, base + 0x3).writeonly().share("scroll_0");
map(base + 0x4, base + 0x7).writeonly().share("scroll_1");
@@ -154,20 +158,20 @@ void esd16_state::vid_attr_area(address_map &map, u32 base)
map(base + 0xe, base + 0xf).writeonly().share("head_layersize");
}
-void esd16_state::palette_area(address_map &map, u32 base)
+void esd16_state::esd16_palette_area(address_map &map, u32 base)
{
map(base + 0x000, base + 0xfff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
}
-void esd16_state::sprite_area(address_map &map, u32 base)
+void esd16_state::esd16_sprite_area(address_map &map, u32 base)
{
map(base + 0x000, base + 0x7ff).writeonly().share("spriteram").mirror(0x000800);
}
-void esd16_state::vram_area(address_map &map, u32 base)
+void esd16_state::esd16_vram_area(address_map &map, u32 base)
{
- map(base + 0x00000, base + 0x03fff).w(FUNC(esd16_state::vram_w<0>)).share("vram_0").mirror(0x4000);
- map(base + 0x20000, base + 0x23fff).w(FUNC(esd16_state::vram_w<1>)).share("vram_1").mirror(0x4000);
+ map(base + 0x00000, base + 0x03fff).w(FUNC(esd16_state::esd16_vram_0_w)).share("vram_0").mirror(0x4000);
+ map(base + 0x20000, base + 0x23fff).w(FUNC(esd16_state::esd16_vram_1_w)).share("vram_1").mirror(0x4000);
}
/*** Memory Maps ***/
@@ -177,11 +181,11 @@ void esd16_state::multchmp_map(address_map &map)
map(0x000000, 0x07ffff).rom();
map(0x100000, 0x10ffff).ram();
- palette_area(map, 0x200000);
- sprite_area(map, 0x300000);
- vram_area(map, 0x400000);
- vid_attr_area(map, 0x500000);
- io_area_dsw(map, 0x600000);
+ esd16_palette_area(map, 0x200000);
+ esd16_sprite_area(map, 0x300000);
+ esd16_vram_area(map, 0x400000);
+ esd16_vid_attr_area(map, 0x500000);
+ esd16_io_area_dsw(map, 0x600000);
map(0x700008, 0x70000b).nopr(); // unused protection?
}
@@ -192,13 +196,13 @@ void esd16_state::jumppop_map(address_map &map)
map(0x120000, 0x123fff).ram();
map(0x1a0000, 0x1a7fff).ram();
- palette_area(map, 0x140000);
- sprite_area(map, 0x160000);
- io_area_dsw(map, 0x180000);
- vram_area(map, 0x300000);
- vid_attr_area(map, 0x380000);
+ esd16_palette_area(map, 0x140000);
+ esd16_sprite_area(map, 0x160000);
+ esd16_io_area_dsw(map, 0x180000);
+ esd16_vram_area(map, 0x300000);
+ esd16_vid_attr_area(map, 0x380000);
- map(0x180008, 0x180009).w(FUNC(esd16_state::tilemap0_color_jumppop_w)); // todo
+ map(0x180008, 0x180009).w(FUNC(esd16_state::esd16_tilemap0_color_jumppop_w)); // todo
}
void esd16_state::hedpanic_map(address_map &map)
@@ -206,11 +210,11 @@ void esd16_state::hedpanic_map(address_map &map)
map(0x000000, 0x07ffff).rom();
map(0x100000, 0x10ffff).ram();
- palette_area(map, 0x800000);
- sprite_area(map, 0x900000);
- vram_area(map, 0xa00000);
- vid_attr_area(map, 0xb00000);
- io_area_eeprom(map, 0xc00000);
+ esd16_palette_area(map, 0x800000);
+ esd16_sprite_area(map, 0x900000);
+ esd16_vram_area(map, 0xa00000);
+ esd16_vid_attr_area(map, 0xb00000);
+ esd16_io_area_eeprom(map, 0xc00000);
map(0xd00008, 0xd00009).w(FUNC(esd16_state::hedpanic_platform_w)); // protection
}
@@ -222,11 +226,11 @@ void esd16_state::mchampdx_map(address_map &map)
map(0x000000, 0x07ffff).rom();
map(0x200000, 0x20ffff).ram();
- vram_area(map, 0x300000);
- palette_area(map, 0x400000);
- io_area_eeprom(map, 0x500000);
- sprite_area(map, 0x600000);
- vid_attr_area(map, 0x700000);
+ esd16_vram_area(map, 0x300000);
+ esd16_palette_area(map, 0x400000);
+ esd16_io_area_eeprom(map, 0x500000);
+ esd16_sprite_area(map, 0x600000);
+ esd16_vid_attr_area(map, 0x700000);
map(0xd00008, 0xd00009).w(FUNC(esd16_state::hedpanic_platform_w)); // not used in mchampdx?
}
@@ -238,11 +242,11 @@ void esd16_state::tangtang_map(address_map &map)
map(0x000000, 0x07ffff).rom();
map(0x700000, 0x70ffff).ram();
- palette_area(map, 0x100000);
- sprite_area(map, 0x200000);
- vram_area(map, 0x300000);
- vid_attr_area(map, 0x400000);
- io_area_eeprom(map, 0x500000);
+ esd16_palette_area(map, 0x100000);
+ esd16_sprite_area(map, 0x200000);
+ esd16_vram_area(map, 0x300000);
+ esd16_vid_attr_area(map, 0x400000);
+ esd16_io_area_eeprom(map, 0x500000);
map(0x600008, 0x600009).w(FUNC(esd16_state::hedpanic_platform_w));
}
@@ -255,26 +259,34 @@ void esd16_state::tangtang_map(address_map &map)
***************************************************************************/
-void esd16_state::sound_rombank_w(u8 data)
+WRITE8_MEMBER(esd16_state::esd16_sound_rombank_w)
{
- m_audiobank->set_entry(data & 0xf);
+ int bank = data & 0xf;
+ membank("bank1")->set_entry(bank);
}
-void esd16_state::sound_map(address_map &map)
+void esd16_state::multchmp_sound_map(address_map &map)
{
map(0x0000, 0x7fff).rom(); // ROM
- map(0x8000, 0xbfff).bankr("audiobank"); // Banked ROM
+ map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM
map(0xf800, 0xffff).ram(); // RAM
}
-void esd16_state::sound_io_map(address_map &map)
+READ8_MEMBER(esd16_state::esd16_sound_command_r)
+{
+ /* Clear IRQ only after reading the command, or some get lost */
+ m_audiocpu->set_input_line(0, CLEAR_LINE);
+ return m_soundlatch->read(space, 0);
+}
+
+void esd16_state::multchmp_sound_io_map(address_map &map)
{
map.global_mask(0xff);
map(0x00, 0x01).w("ymsnd", FUNC(ym3812_device::write)); // YM3812
map(0x02, 0x02).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
- map(0x03, 0x03).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU
+ map(0x03, 0x03).r(FUNC(esd16_state::esd16_sound_command_r)); // From Main CPU
map(0x04, 0x04).nopw(); // ? $00, $30
- map(0x05, 0x05).w(FUNC(esd16_state::sound_rombank_w)); // ROM Bank
+ map(0x05, 0x05).w(FUNC(esd16_state::esd16_sound_rombank_w)); // ROM Bank
map(0x06, 0x06).noprw(); // ? At the start / ? 1 (End of NMI routine)
}
@@ -472,9 +484,9 @@ static INPUT_PORTS_START( hedpanic )
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START( "EEPROMOUT" )
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
+ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
+ PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
+ PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
INPUT_PORTS_END
@@ -509,9 +521,9 @@ static INPUT_PORTS_START( swatpolc )
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START( "EEPROMOUT" )
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
+ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
+ PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
+ PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
INPUT_PORTS_END
/***************************************************************************
@@ -530,8 +542,10 @@ static const gfx_layout jumppop_sprite_16x16x4 =
RGN_FRAC(1,2),
4,
{ RGN_FRAC(1,2)+8, RGN_FRAC(1,2)+0, 8, 0 },
- { STEP8(8*2*16,1), STEP8(0,1) },
- { STEP16(0,8*2) },
+ { 32*8+0, 32*8+1, 32*8+2, 32*8+3, 32*8+4, 32*8+5, 32*8+6, 32*8+7,
+ 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
+ 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
64*8
};
@@ -540,9 +554,9 @@ static const gfx_layout hedpanic_sprite_16x16x5 =
16,16,
RGN_FRAC(1,3),
5,
- { RGN_FRAC(2,3), RGN_FRAC(0,3), RGN_FRAC(0,3)+8, RGN_FRAC(1,3),RGN_FRAC(1,3)+8 },
- { STEP8(8*2*16,1), STEP8(0,1) },
- { STEP16(0,8*2) },
+ { RGN_FRAC(2,3), RGN_FRAC(0,3), RGN_FRAC(0,3)+8, RGN_FRAC(1,3),RGN_FRAC(1,3)+8 },
+ { 256+0,256+1,256+2,256+3,256+4,256+5,256+6,256+7,0,1,2,3,4,5,6,7 },
+ { 0*16,1*16,2*16,3*16,4*16,5*16,6*16,7*16,8*16,9*16,10*16,11*16,12*16,13*16,14*16,15*16 },
16*32,
};
@@ -551,9 +565,9 @@ static const gfx_layout hedpanic_layout_8x8x8 =
8,8,
RGN_FRAC(1,1),
8,
- { STEP8(0,1) },
- { STEP8(0,8) },
- { STEP8(0,8*8) },
+ { 0,1,2,3,4,5,6,7 },
+ { 0*8,2*8,1*8,3*8,4*8,6*8,5*8,7*8 },
+ { 0*64,1*64,2*64,3*64,4*64,5*64,6*64,7*64 },
64*8,
};
@@ -562,9 +576,12 @@ static const gfx_layout hedpanic_layout_16x16x8 =
16,16,
RGN_FRAC(1,1),
8,
- { STEP8(0,1) },
- { STEP8(0,8), STEP8(8*8*8,8) },
- { STEP8(0,8*8), STEP8(8*8*8*2,8*8) },
+ { 0,1,2,3,4,5,6,7 },
+ { 0*8,2*8,1*8,3*8,4*8,6*8,5*8,7*8,
+ 64*8+0*8,64*8+2*8,64*8+1*8,64*8+3*8,64*8+4*8,64*8+6*8,64*8+5*8,64*8+7*8 },
+ { 0*64,1*64,2*64,3*64,4*64,5*64,6*64,7*64,
+ 128*8+0*64,128*8+1*64,128*8+2*64,128*8+3*64,128*8+4*64,128*8+5*64,128*8+6*64,128*8+7*64
+ },
256*8,
};
@@ -594,18 +611,19 @@ void esd16_state::machine_start()
{
uint8_t *AUDIO = memregion("audiocpu")->base();
- m_audiobank->configure_entries(0, 16, &AUDIO[0x0000], 0x4000);
+ membank("bank1")->configure_entries(0, 16, &AUDIO[0x0000], 0x4000);
- save_item(NAME(m_tilemap_color));
+ save_item(NAME(m_tilemap0_color));
+ save_item(NAME(m_tilemap1_color));
}
void esd16_state::machine_reset()
{
- m_tilemap_color[0] = 0;
- m_tilemap_color[1] = 0;
+ m_tilemap0_color = 0;
+ m_tilemap1_color = 0;
}
-DECOSPR_PRIORITY_CB_MEMBER(esd16_state::pri_callback)
+DECOSPR_PRIORITY_CB_MEMBER(esd16_state::hedpanic_pri_callback)
{
if (pri & 0x8000)
return 0xfffe; // under "tilemap 1"
@@ -613,75 +631,82 @@ DECOSPR_PRIORITY_CB_MEMBER(esd16_state::pri_callback)
return 0; // above everything
}
-void esd16_state::esd16(machine_config &config)
-{
+MACHINE_CONFIG_START(esd16_state::esd16)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000)); /* 16MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &esd16_state::multchmp_map);
- m_maincpu->set_vblank_int("screen", FUNC(esd16_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu",M68000, XTAL(16'000'000)) /* 16MHz */
+ MCFG_DEVICE_PROGRAM_MAP(multchmp_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", esd16_state, irq6_line_hold)
+
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/4) /* 4MHz */
+ MCFG_DEVICE_PROGRAM_MAP(multchmp_sound_map)
+ MCFG_DEVICE_IO_MAP(multchmp_sound_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(esd16_state, nmi_line_pulse, 32*60) /* IRQ By Main CPU */
- Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* 4MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &esd16_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &esd16_state::sound_io_map);
- m_audiocpu->set_periodic_int(FUNC(esd16_state::nmi_line_pulse), attotime::from_hz(32*60)); /* IRQ By Main CPU */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(0x140, 0x100);
- screen.set_visarea(0, 0x140-1, 0+8, 0x100-8-1);
- screen.set_screen_update(FUNC(esd16_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x140, 0x100)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0+8, 0x100-8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(esd16_state, screen_update_hedpanic)
+ MCFG_SCREEN_PALETTE("palette")
DECO_SPRITE(config, m_sprgen, 0);
m_sprgen->set_gfx_region(0);
m_sprgen->set_is_bootleg(true);
- m_sprgen->set_pri_callback(FUNC(esd16_state::pri_callback), this);
+ m_sprgen->set_pri_callback(FUNC(esd16_state::hedpanic_pri_callback), this);
m_sprgen->set_flipallx(1);
m_sprgen->set_gfxdecode_tag(m_gfxdecode);
GFXDECODE(config, m_gfxdecode, "palette", gfx_esd16);
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x1000/2);
+
/* sound hardware */
SPEAKER(config, "mono").front_center();
- GENERIC_LATCH_8(config, m_soundlatch).data_pending_callback().set_inputline(m_audiocpu, 0);
+ GENERIC_LATCH_8(config, m_soundlatch);
- YM3812(config, "ymsnd", XTAL(16'000'000)/4).add_route(ALL_OUTPUTS, "mono", 0.30); /* 4MHz */
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(16'000'000)/4) /* 4MHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
- OKIM6295(config, "oki", XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60); /* 1MHz */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH) /* 1MHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+MACHINE_CONFIG_END
-void esd16_state::jumppop(machine_config &config)
-{
+MACHINE_CONFIG_START(esd16_state::jumppop)
esd16(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &esd16_state::jumppop_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(jumppop_map)
- m_audiocpu->set_clock(XTAL(14'000'000)/4); /* 3.5MHz - Verified */
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_CLOCK( XTAL(14'000'000)/4) /* 3.5MHz - Verified */
- m_gfxdecode->set_info(gfx_jumppop);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_jumppop)
- subdevice<ym3812_device>("ymsnd")->set_clock(XTAL(14'000'000)/4); /* 3.5MHz - Verified */
+ MCFG_DEVICE_REPLACE("ymsnd", YM3812, XTAL(14'000'000)/4) /* 3.5MHz - Verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
- subdevice<okim6295_device>("oki")->set_clock(XTAL(14'000'000)/16); /* 875kHz - Verified */
-}
+ MCFG_DEVICE_REPLACE("oki", OKIM6295, XTAL(14'000'000)/16, okim6295_device::PIN7_HIGH) /* 875kHz - Verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+MACHINE_CONFIG_END
/* The ESD 05-28-99 PCB adds an EEPROM */
-void esd16_state::hedpanio(machine_config &config)
-{
+MACHINE_CONFIG_START(esd16_state::hedpanio)
esd16(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &esd16_state::hedpanic_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hedpanic_map)
EEPROM_93C46_16BIT(config, "eeprom");
-}
+MACHINE_CONFIG_END
/* The ESD 08-26-1999 PCBs take that further and modify the sprite offsets */
@@ -693,17 +718,21 @@ void esd16_state::hedpanic(machine_config &config)
/* ESD 08-26-1999 PCBs with different memory maps */
-void esd16_state::mchampdx(machine_config &config)
-{
+MACHINE_CONFIG_START(esd16_state::mchampdx)
hedpanic(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &esd16_state::mchampdx_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mchampdx_map)
+MACHINE_CONFIG_END
-void esd16_state::tangtang(machine_config &config)
-{
+MACHINE_CONFIG_START(esd16_state::tangtang)
hedpanic(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &esd16_state::tangtang_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tangtang_map)
+MACHINE_CONFIG_END
+
+
+
+
/***************************************************************************
@@ -788,12 +817,12 @@ ROM_START( multchmp )
ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
ROM_LOAD32_BYTE( "esd9.fu28", 0x000000, 0x080000, CRC(6652c04a) SHA1(178e1d42847506d869ef79db2f7e10df05e9ef76) )
- ROM_LOAD32_BYTE( "esd11.fu29", 0x000002, 0x080000, CRC(9bafd8ee) SHA1(db18be05431d4b6d4207e19fa4ed8701621aaa19) )
- ROM_LOAD32_BYTE( "esd7.fu26", 0x000001, 0x080000, CRC(a783a003) SHA1(1ff61a049485c5b599c458a8bf7f48027d14f8e0) )
+ ROM_LOAD32_BYTE( "esd11.fu29", 0x000001, 0x080000, CRC(9bafd8ee) SHA1(db18be05431d4b6d4207e19fa4ed8701621aaa19) )
+ ROM_LOAD32_BYTE( "esd7.fu26", 0x000002, 0x080000, CRC(a783a003) SHA1(1ff61a049485c5b599c458a8bf7f48027d14f8e0) )
ROM_LOAD32_BYTE( "esd5.fu27", 0x000003, 0x080000, CRC(299f32c2) SHA1(274752444f6ddba16eeefc02c3e78525c079b3d8) )
ROM_LOAD32_BYTE( "esd10.fu31", 0x200000, 0x080000, CRC(d815974b) SHA1(3e528a5df79fa7dc0f38b0ee7f2f3a0ebc97a369) )
- ROM_LOAD32_BYTE( "esd12.fu33", 0x200002, 0x080000, CRC(c6b86001) SHA1(11a63b56df30ab7b85ce4568d2a24e96a125735a) )
- ROM_LOAD32_BYTE( "esd8.fu30", 0x200001, 0x080000, CRC(22861af2) SHA1(1e74e85517cb8fd5fb4bda6e9d9d54046e31f653) )
+ ROM_LOAD32_BYTE( "esd12.fu33", 0x200001, 0x080000, CRC(c6b86001) SHA1(11a63b56df30ab7b85ce4568d2a24e96a125735a) )
+ ROM_LOAD32_BYTE( "esd8.fu30", 0x200002, 0x080000, CRC(22861af2) SHA1(1e74e85517cb8fd5fb4bda6e9d9d54046e31f653) )
ROM_LOAD32_BYTE( "esd6.fu32", 0x200003, 0x080000, CRC(e2689bb2) SHA1(1da9b1f7335d5c2d1c2f8353fccf91c0109d2e9d) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
@@ -817,12 +846,12 @@ ROM_START( multchmpk )
ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
ROM_LOAD32_BYTE( "multchmp.u31", 0x000000, 0x080000, CRC(b1e4e9e3) SHA1(1a7393e9073b028b4170393b3788ad8cb86c0c78) )
- ROM_LOAD32_BYTE( "multchmp.u33", 0x000002, 0x080000, CRC(e4c0ec96) SHA1(74152108e4d05f4aff9d38919f212fcb8c87cef3) )
- ROM_LOAD32_BYTE( "multchmp.u29", 0x000001, 0x080000, CRC(01bd1399) SHA1(b717ccffe0af92a42a0879736d34d3ad71840233) )
+ ROM_LOAD32_BYTE( "multchmp.u33", 0x000001, 0x080000, CRC(e4c0ec96) SHA1(74152108e4d05f4aff9d38919f212fcb8c87cef3) )
+ ROM_LOAD32_BYTE( "multchmp.u29", 0x000002, 0x080000, CRC(01bd1399) SHA1(b717ccffe0af92a42a0879736d34d3ad71840233) )
ROM_LOAD32_BYTE( "multchmp.u27", 0x000003, 0x080000, CRC(dc42704e) SHA1(58a04a47ffc6d6ae0e4d49e466b1c58b37ad741a) )
ROM_LOAD32_BYTE( "multchmp.u32", 0x200000, 0x080000, CRC(f05cb5b4) SHA1(1b33e60942238e39d61ae59e9317b99e83595ab1) )
- ROM_LOAD32_BYTE( "multchmp.u34", 0x200002, 0x080000, CRC(bffaaccc) SHA1(d9ab248e2c7c639666e3717cfc5d8c8468a1bde2) )
- ROM_LOAD32_BYTE( "multchmp.u30", 0x200001, 0x080000, CRC(c6b4cc18) SHA1(d9097b85584272cfe4989a40d622ef1feeee6775) )
+ ROM_LOAD32_BYTE( "multchmp.u34", 0x200001, 0x080000, CRC(bffaaccc) SHA1(d9ab248e2c7c639666e3717cfc5d8c8468a1bde2) )
+ ROM_LOAD32_BYTE( "multchmp.u30", 0x200002, 0x080000, CRC(c6b4cc18) SHA1(d9097b85584272cfe4989a40d622ef1feeee6775) )
ROM_LOAD32_BYTE( "multchmp.u28", 0x200003, 0x080000, CRC(449991fa) SHA1(fd93e420a04cb8bea5421aa9cbe079bd3e7d4924) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
@@ -846,12 +875,12 @@ ROM_START( multchmpa ) /* Also found on a ESD 10-10-98 PCB which looks identical
ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
ROM_LOAD32_BYTE( "esd9.fu28", 0x000000, 0x080000, CRC(a3cfe895) SHA1(a8dc0d5d9e64d4c5112177b8f20b5bdb86ca73af) )
- ROM_LOAD32_BYTE( "esd11.fu29", 0x000002, 0x080000, CRC(d3c1855e) SHA1(bb547d4a45a745e9ae4a6727087cdf325105de90) )
- ROM_LOAD32_BYTE( "esd7.fu26", 0x000001, 0x080000, CRC(042d59ff) SHA1(8e45a4757e07d8aaf50b151d8849c1a27424e64b) )
+ ROM_LOAD32_BYTE( "esd11.fu29", 0x000001, 0x080000, CRC(d3c1855e) SHA1(bb547d4a45a745e9ae4a6727087cdf325105de90) )
+ ROM_LOAD32_BYTE( "esd7.fu26", 0x000002, 0x080000, CRC(042d59ff) SHA1(8e45a4757e07d8aaf50b151d8849c1a27424e64b) )
ROM_LOAD32_BYTE( "esd5.fu27", 0x000003, 0x080000, CRC(ed5b4e58) SHA1(82c3ee9e2525c0b370a29d5560c21ec6380d1a43) )
ROM_LOAD32_BYTE( "esd10.fu31", 0x200000, 0x080000, CRC(396d77b6) SHA1(f22449a7f9f50e172e36db4f399c14e527409884) )
- ROM_LOAD32_BYTE( "esd12.fu33", 0x200002, 0x080000, CRC(a68848a8) SHA1(915239a961d76af6a1a567eb89b1569f158e714e) )
- ROM_LOAD32_BYTE( "esd8.fu30", 0x200001, 0x080000, CRC(fa8cd2d3) SHA1(ddc1b98867e6d2eee458bf35a933e7cdc59f4c7e) )
+ ROM_LOAD32_BYTE( "esd12.fu33", 0x200001, 0x080000, CRC(a68848a8) SHA1(915239a961d76af6a1a567eb89b1569f158e714e) )
+ ROM_LOAD32_BYTE( "esd8.fu30", 0x200002, 0x080000, CRC(fa8cd2d3) SHA1(ddc1b98867e6d2eee458bf35a933e7cdc59f4c7e) )
ROM_LOAD32_BYTE( "esd6.fu32", 0x200003, 0x080000, CRC(97fde7b1) SHA1(b3610f6fcc1367ff079dc01121c86bc1e1f4c7a2) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
@@ -929,8 +958,8 @@ ROM_START( mchampdx )
ROM_FILL( 0x500000, 0x100000, 0x00 )
ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
- ROM_LOAD32_WORD( "rom.fu35", 0x000000, 0x200000, CRC(ba46f3dc) SHA1(4ac7695bdf4237654481f7f74f8650d70a51e691) )
- ROM_LOAD32_WORD( "rom.fu34", 0x000002, 0x200000, CRC(2895cf09) SHA1(88756fcd589af1986c3881d4080f086afc11b498) )
+ ROM_LOAD16_BYTE( "rom.fu35", 0x000000, 0x200000, CRC(ba46f3dc) SHA1(4ac7695bdf4237654481f7f74f8650d70a51e691) )
+ ROM_LOAD16_BYTE( "rom.fu34", 0x000001, 0x200000, CRC(2895cf09) SHA1(88756fcd589af1986c3881d4080f086afc11b498) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "esd4.su10", 0x00000, 0x40000, CRC(2fbe94ab) SHA1(1bc4a33ec93a80fb598722d2b50bdf3ccaaa984a) )
@@ -955,8 +984,8 @@ ROM_START( mchampdxa )
ROM_FILL( 0x500000, 0x100000, 0x00 )
ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
- ROM_LOAD32_WORD( "rom.fu35", 0x000000, 0x200000, CRC(ba46f3dc) SHA1(4ac7695bdf4237654481f7f74f8650d70a51e691) )
- ROM_LOAD32_WORD( "rom.fu34", 0x000002, 0x200000, CRC(2895cf09) SHA1(88756fcd589af1986c3881d4080f086afc11b498) )
+ ROM_LOAD16_BYTE( "rom.fu35", 0x000000, 0x200000, CRC(ba46f3dc) SHA1(4ac7695bdf4237654481f7f74f8650d70a51e691) )
+ ROM_LOAD16_BYTE( "rom.fu34", 0x000001, 0x200000, CRC(2895cf09) SHA1(88756fcd589af1986c3881d4080f086afc11b498) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "esd4.su10", 0x00000, 0x40000, CRC(2fbe94ab) SHA1(1bc4a33ec93a80fb598722d2b50bdf3ccaaa984a) )
@@ -981,8 +1010,8 @@ ROM_START( mchampdxb )
ROM_FILL( 0x500000, 0x100000, 0x00 )
ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
- ROM_LOAD32_WORD( "ver1114_fu35", 0x000000, 0x200000, CRC(c515c704) SHA1(c1657534314e66a25c38f70a12f14d2225ab89cc) ) // SMT Flash MX chips
- ROM_LOAD32_WORD( "ver1114_fu34", 0x000002, 0x200000, CRC(39d448bb) SHA1(07cd6e30a25d1c0caeef0f95f23df0ca6a2c7a26) )
+ ROM_LOAD16_BYTE( "ver1114_fu35", 0x000000, 0x200000, CRC(c515c704) SHA1(c1657534314e66a25c38f70a12f14d2225ab89cc) ) // SMT Flash MX chips
+ ROM_LOAD16_BYTE( "ver1114_fu34", 0x000001, 0x200000, CRC(39d448bb) SHA1(07cd6e30a25d1c0caeef0f95f23df0ca6a2c7a26) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "esd4.su10", 0x00000, 0x40000, CRC(2fbe94ab) SHA1(1bc4a33ec93a80fb598722d2b50bdf3ccaaa984a) )
@@ -1094,8 +1123,8 @@ ROM_START( hedpanic ) /* Story line & game instructions in English */
ROM_FILL( 0x500000, 0x100000, 0x00 )
ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
- ROM_LOAD32_WORD( "esd8.fu35", 0x000000, 0x200000, CRC(23aceb4f) SHA1(35d9ebc33b9e1515e47750cfcdfc0bf8bf44b71d) )
- ROM_LOAD32_WORD( "esd9.fu34", 0x000002, 0x200000, CRC(76b46cd2) SHA1(679cbf50ae5935e8848868081ecef4ec66424f6c) )
+ ROM_LOAD16_BYTE( "esd8.fu35", 0x000000, 0x200000, CRC(23aceb4f) SHA1(35d9ebc33b9e1515e47750cfcdfc0bf8bf44b71d) )
+ ROM_LOAD16_BYTE( "esd9.fu34", 0x000001, 0x200000, CRC(76b46cd2) SHA1(679cbf50ae5935e8848868081ecef4ec66424f6c) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "esd4.su10", 0x000000, 0x020000, CRC(3c11c590) SHA1(cb33845c3dc0501fff8055c2d66f412881089df1) ) /* AT27010 mask rom */
@@ -1121,8 +1150,8 @@ ROM_START( hedpanicf ) /* Story line in Japanese, game instructions in English *
ROM_FILL( 0x500000, 0x100000, 0x00 )
ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
- ROM_LOAD32_WORD( "esd8.fu35", 0x000000, 0x200000, CRC(23aceb4f) SHA1(35d9ebc33b9e1515e47750cfcdfc0bf8bf44b71d) )
- ROM_LOAD32_WORD( "esd9.fu34", 0x000002, 0x200000, CRC(76b46cd2) SHA1(679cbf50ae5935e8848868081ecef4ec66424f6c) )
+ ROM_LOAD16_BYTE( "esd8.fu35", 0x000000, 0x200000, CRC(23aceb4f) SHA1(35d9ebc33b9e1515e47750cfcdfc0bf8bf44b71d) )
+ ROM_LOAD16_BYTE( "esd9.fu34", 0x000001, 0x200000, CRC(76b46cd2) SHA1(679cbf50ae5935e8848868081ecef4ec66424f6c) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "esd4.su10", 0x000000, 0x020000, CRC(3c11c590) SHA1(cb33845c3dc0501fff8055c2d66f412881089df1) ) /* AT27010 mask rom */
@@ -1148,8 +1177,8 @@ ROM_START( hedpanica ) /* Story line & game instructions in English, copyright y
ROM_FILL( 0x500000, 0x100000, 0x00 )
ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
- ROM_LOAD32_WORD( "fu35", 0x000000, 0x200000, CRC(9b5a45c5) SHA1(fbd8bc6ccc068d2cc7fe4f575fa0847f53e786ab) )
- ROM_LOAD32_WORD( "fu34", 0x000002, 0x200000, CRC(8f2099cc) SHA1(40795ae5fb8de613c2d5b6147992c153695bf698) )
+ ROM_LOAD16_BYTE( "fu35", 0x000000, 0x200000, CRC(9b5a45c5) SHA1(fbd8bc6ccc068d2cc7fe4f575fa0847f53e786ab) )
+ ROM_LOAD16_BYTE( "fu34", 0x000001, 0x200000, CRC(8f2099cc) SHA1(40795ae5fb8de613c2d5b6147992c153695bf698) )
ROM_REGION( 0x80000, "oki", 0 ) /* Samples */
ROM_LOAD( "esd4.bin", 0x000000, 0x080000, CRC(5692fe92) SHA1(4423039cb437ab36d198b212ef394bf1704be404) ) /* SU10 */
@@ -1175,8 +1204,8 @@ ROM_START( hedpanico ) /* Story line & game instructions in English, copyright y
ROM_FILL( 0x500000, 0x100000, 0x00 )
ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
- ROM_LOAD32_WORD( "sm3.fu35", 0x000000, 0x200000, CRC(94dd4cfc) SHA1(a3f9c49611f0bc9d26166dafb44e2c5ebbb31127) )
- ROM_LOAD32_WORD( "sm4.fu34", 0x000002, 0x200000, CRC(6da0fb9e) SHA1(c4e7487953f45c5f6ce2ebe558b4c325f6ec54eb) )
+ ROM_LOAD16_BYTE( "sm3.fu35", 0x000000, 0x200000, CRC(94dd4cfc) SHA1(a3f9c49611f0bc9d26166dafb44e2c5ebbb31127) )
+ ROM_LOAD16_BYTE( "sm4.fu34", 0x000001, 0x200000, CRC(6da0fb9e) SHA1(c4e7487953f45c5f6ce2ebe558b4c325f6ec54eb) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "esd4.rom", 0x000000, 0x020000, CRC(d7ca6806) SHA1(8ad668bfb5b7561cc0f3e36dfc3c936b136a4274) ) /* SU10 */
@@ -1253,8 +1282,8 @@ ROM_START( deluxe5 ) /* Deluxe 5 */
ROM_LOAD16_BYTE( "am27c020.ju07", 0x100000, 0x040000, CRC(d414c3af) SHA1(9299b07a8c7a3e30a1bb6028204a049a7cb510f7) )
ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
- ROM_LOAD32_WORD( "fu35", 0x000000, 0x200000, CRC(ae10242a) SHA1(f3d18c0cb7951b5f7ee47aa2856b7554088328ed) ) /* No labels on the flash roms */
- ROM_LOAD32_WORD( "fu34", 0x000002, 0x200000, CRC(248b8c05) SHA1(fe7bcc05ae0dd0a27c6ba4beb4ac155a8f3d7f7e) ) /* No labels on the flash roms */
+ ROM_LOAD16_BYTE( "fu35", 0x000000, 0x200000, CRC(ae10242a) SHA1(f3d18c0cb7951b5f7ee47aa2856b7554088328ed) ) /* No labels on the flash roms */
+ ROM_LOAD16_BYTE( "fu34", 0x000001, 0x200000, CRC(248b8c05) SHA1(fe7bcc05ae0dd0a27c6ba4beb4ac155a8f3d7f7e) ) /* No labels on the flash roms */
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "esd4.su10", 0x00000, 0x20000, CRC(23f2b7d9) SHA1(328c951d14674760df68486841c933bad0d59fe3) ) /* AT27C010 mask rom */
@@ -1279,8 +1308,8 @@ ROM_START( deluxe5a ) /* Deluxe 5 */
ROM_LOAD16_BYTE( "am27c020.ju07", 0x100000, 0x040000, CRC(d414c3af) SHA1(9299b07a8c7a3e30a1bb6028204a049a7cb510f7) )
ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
- ROM_LOAD32_WORD( "fu35", 0x000000, 0x200000, CRC(ae10242a) SHA1(f3d18c0cb7951b5f7ee47aa2856b7554088328ed) ) /* No labels on the flash roms */
- ROM_LOAD32_WORD( "fu34", 0x000002, 0x200000, CRC(248b8c05) SHA1(fe7bcc05ae0dd0a27c6ba4beb4ac155a8f3d7f7e) ) /* No labels on the flash roms */
+ ROM_LOAD16_BYTE( "fu35", 0x000000, 0x200000, CRC(ae10242a) SHA1(f3d18c0cb7951b5f7ee47aa2856b7554088328ed) ) /* No labels on the flash roms */
+ ROM_LOAD16_BYTE( "fu34", 0x000001, 0x200000, CRC(248b8c05) SHA1(fe7bcc05ae0dd0a27c6ba4beb4ac155a8f3d7f7e) ) /* No labels on the flash roms */
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "esd4.su10", 0x00000, 0x20000, CRC(23f2b7d9) SHA1(328c951d14674760df68486841c933bad0d59fe3) ) /* AT27C010 mask rom */
@@ -1305,8 +1334,8 @@ ROM_START( deluxe5b ) /* Deluxe 5 */
ROM_LOAD16_BYTE( "am27c020.ju07", 0x100000, 0x040000, CRC(d414c3af) SHA1(9299b07a8c7a3e30a1bb6028204a049a7cb510f7) )
ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
- ROM_LOAD32_WORD( "fu35", 0x000000, 0x200000, CRC(ae10242a) SHA1(f3d18c0cb7951b5f7ee47aa2856b7554088328ed) ) /* No labels on the flash roms */
- ROM_LOAD32_WORD( "fu34", 0x000002, 0x200000, CRC(248b8c05) SHA1(fe7bcc05ae0dd0a27c6ba4beb4ac155a8f3d7f7e) ) /* No labels on the flash roms */
+ ROM_LOAD16_BYTE( "fu35", 0x000000, 0x200000, CRC(ae10242a) SHA1(f3d18c0cb7951b5f7ee47aa2856b7554088328ed) ) /* No labels on the flash roms */
+ ROM_LOAD16_BYTE( "fu34", 0x000001, 0x200000, CRC(248b8c05) SHA1(fe7bcc05ae0dd0a27c6ba4beb4ac155a8f3d7f7e) ) /* No labels on the flash roms */
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "esd4.su10", 0x00000, 0x20000, CRC(23f2b7d9) SHA1(328c951d14674760df68486841c933bad0d59fe3) ) /* AT27C010 mask rom */
@@ -1332,8 +1361,8 @@ ROM_START( deluxe4u ) /* Deluxe 4 U - Removes Blackjack game, but otherwise same
ROM_LOAD16_BYTE( "am27c020.ju07", 0x100000, 0x040000, CRC(d414c3af) SHA1(9299b07a8c7a3e30a1bb6028204a049a7cb510f7) )
ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
- ROM_LOAD32_WORD( "fu35", 0x000000, 0x200000, CRC(6df14570) SHA1(fa4fc64c984d6a94fe61ec809ec515e840388704) ) /* Specific to Deluxe 4 U - No labels on the flash roms */
- ROM_LOAD32_WORD( "fu34", 0x000002, 0x200000, CRC(93175d6d) SHA1(691832134f43e17bb767dff080b2736288961414) ) /* Specific to Deluxe 4 U - No labels on the flash roms */
+ ROM_LOAD16_BYTE( "fu35", 0x000000, 0x200000, CRC(6df14570) SHA1(fa4fc64c984d6a94fe61ec809ec515e840388704) ) /* Specific to Deluxe 4 U - No labels on the flash roms */
+ ROM_LOAD16_BYTE( "fu34", 0x000001, 0x200000, CRC(93175d6d) SHA1(691832134f43e17bb767dff080b2736288961414) ) /* Specific to Deluxe 4 U - No labels on the flash roms */
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "esd4.su10", 0x00000, 0x20000, CRC(23f2b7d9) SHA1(328c951d14674760df68486841c933bad0d59fe3) ) /* AT27C010 mask rom */
@@ -1412,8 +1441,8 @@ ROM_START( tangtang )
ROM_LOAD16_BYTE( "xju08.bin", 0x100000, 0x040000, CRC(ecc2d8c7) SHA1(1aabdf7204fcdff8d46cb50de8b097e3775dddf3) )
ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
- ROM_LOAD32_WORD( "fu35.bin", 0x000000, 0x200000, CRC(84f3f833) SHA1(f84e41d93dc47a58ada800b921a7e5902b7631cd) )
- ROM_LOAD32_WORD( "fu34.bin", 0x000002, 0x200000, CRC(bf91f543) SHA1(7c149fed8b8044850cd6b798622a91c45336cd47) )
+ ROM_LOAD16_BYTE( "fu35.bin", 0x000000, 0x200000, CRC(84f3f833) SHA1(f84e41d93dc47a58ada800b921a7e5902b7631cd) )
+ ROM_LOAD16_BYTE( "fu34.bin", 0x000001, 0x200000, CRC(bf91f543) SHA1(7c149fed8b8044850cd6b798622a91c45336cd47) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "esd4.su10", 0x00000, 0x20000, CRC(f2dfb02d) SHA1(04001488697aad3e5b2d15c9f5a81dc2b7d0952c) )
@@ -1488,8 +1517,8 @@ ROM_START( swatpolc ) /* SWAT Police */
ROM_LOAD16_BYTE( "esd5.ju07", 0x200000, 0x080000, CRC(d2c27f03) SHA1(7cbdf7f7ff17df16ca81823f69e82ae1cf96b714) )
ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
- ROM_LOAD32_WORD( "fu35", 0x000000, 0x200000, CRC(c55897c5) SHA1(f6e0ef1c2fcfe6a511fe787a3abeff4da16d1b54) ) /* No labels on the flash roms */
- ROM_LOAD32_WORD( "fu34", 0x000002, 0x200000, CRC(7117a6a2) SHA1(17c0ab02698cffa0582ed2d2b7dbb7fed8cd9393) ) /* No labels on the flash roms */
+ ROM_LOAD16_BYTE( "fu35", 0x000000, 0x200000, CRC(c55897c5) SHA1(f6e0ef1c2fcfe6a511fe787a3abeff4da16d1b54) ) /* No labels on the flash roms */
+ ROM_LOAD16_BYTE( "fu34", 0x000001, 0x200000, CRC(7117a6a2) SHA1(17c0ab02698cffa0582ed2d2b7dbb7fed8cd9393) ) /* No labels on the flash roms */
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "at27c020.su10", 0x00000, 0x40000, CRC(c43efec2) SHA1(4ef328d8703b81328de09ecc4328763aba06e883) ) /* AT27C020 mask rom with no label */
@@ -1598,8 +1627,8 @@ ROM_START( jumppop )
ROM_LOAD( "sp1.bin", 0x100000, 0x100000, CRC(7eae782e) SHA1(a33c544ad9516ec409c209968e72f63e7cdb934b) )
ROM_REGION( 0x200000, "bgs", 0 )
- ROM_LOAD32_WORD( "bg1.bin", 0x000000, 0x100000, CRC(5b37f943) SHA1(fe73b839f29d4c32823418711b22f85a5f583ec2) )
- ROM_LOAD32_WORD( "bg0.bin", 0x000002, 0x100000, CRC(35a1363d) SHA1(66c550b0bdea7c8b079f186f5e044f731d31bc58) )
+ ROM_LOAD16_BYTE( "bg1.bin", 0x000000, 0x100000, CRC(5b37f943) SHA1(fe73b839f29d4c32823418711b22f85a5f583ec2) )
+ ROM_LOAD16_BYTE( "bg0.bin", 0x000001, 0x100000, CRC(35a1363d) SHA1(66c550b0bdea7c8b079f186f5e044f731d31bc58) )
ROM_REGION( 0x80000, "oki", 0 ) /* Oki samples */
ROM_LOAD( "samples.bin", 0x00000, 0x40000, CRC(066f30a7) SHA1(6bdd0210001c597819f7132ffa1dc1b1d55b4e0a) )
@@ -1622,8 +1651,8 @@ ROM_START( jumppope ) /* Running on an original ESD 11-09-98 PCB with original E
ROM_REGION( 0x200000, "bgs", 0 )
ROM_LOAD32_BYTE( "esd5.fu28", 0x000000, 0x080000, CRC(0d47f821) SHA1(fc1ef080eb05990909e25d5db59918f1f4e90a67) ) // [even 1/2] 99.769974%, [even 2/2] 99.267578%
- ROM_LOAD32_BYTE( "esd6.fu29", 0x000002, 0x080000, CRC(c01af40d) SHA1(fce0244027d4d4eb5cff1809cf8f404bfe016455) ) // [even 1/2] 99.778366%, [even 2/2] 99.267578%
- ROM_LOAD32_BYTE( "esd4.fu26", 0x000001, 0x080000, CRC(97b409be) SHA1(3a4344ca8ffb0aee046e3c0bab2d7c3f7c0eb204) ) // [odd 1/2] 99.763107%, [odd 2/2] 99.267578%
+ ROM_LOAD32_BYTE( "esd6.fu29", 0x000001, 0x080000, CRC(c01af40d) SHA1(fce0244027d4d4eb5cff1809cf8f404bfe016455) ) // [even 1/2] 99.778366%, [even 2/2] 99.267578%
+ ROM_LOAD32_BYTE( "esd4.fu26", 0x000002, 0x080000, CRC(97b409be) SHA1(3a4344ca8ffb0aee046e3c0bab2d7c3f7c0eb204) ) // [odd 1/2] 99.763107%, [odd 2/2] 99.267578%
ROM_LOAD32_BYTE( "esd3.fu27", 0x000003, 0x080000, CRC(3358a693) SHA1(2e368e5c26755bbe6d04838015fd4ca5e43ccfb5) ) // [odd 1/2] 99.784470%, [odd 2/2] 99.267578%
ROM_REGION( 0x80000, "oki", 0 ) /* Oki samples */
diff --git a/src/mame/drivers/esh.cpp b/src/mame/drivers/esh.cpp
index 6fb6c3f2f08..4137a8e7b12 100644
--- a/src/mame/drivers/esh.cpp
+++ b/src/mame/drivers/esh.cpp
@@ -361,19 +361,17 @@ void esh_state::machine_start()
/* DRIVER */
MACHINE_CONFIG_START(esh_state::esh)
/* main cpu */
- Z80(config, m_maincpu, PCB_CLOCK/6); /* The denominator is a Daphne guess based on PacMan's hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &esh_state::z80_0_mem);
- m_maincpu->set_addrmap(AS_IO, &esh_state::z80_0_io);
- m_maincpu->set_vblank_int("screen", FUNC(esh_state::vblank_callback_esh));
+ MCFG_DEVICE_ADD("maincpu", Z80, PCB_CLOCK/6) /* The denominator is a Daphne guess based on PacMan's hardware */
+ MCFG_DEVICE_PROGRAM_MAP(z80_0_mem)
+ MCFG_DEVICE_IO_MAP(z80_0_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", esh_state, vblank_callback_esh)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- PIONEER_LDV1000(config, m_laserdisc, 0);
- m_laserdisc->command_strobe_callback().set(FUNC(esh_state::ld_command_strobe_cb));
- m_laserdisc->set_overlay(256, 256, FUNC(esh_state::screen_update_esh));
- m_laserdisc->set_overlay_palette(m_palette);
- m_laserdisc->add_route(0, "lspeaker", 1.0);
- m_laserdisc->add_route(1, "rspeaker", 1.0);
+ MCFG_LASERDISC_LDV1000_ADD("laserdisc")
+ MCFG_LASERDISC_LDV1000_COMMAND_STROBE_CB(WRITELINE(*this, esh_state, ld_command_strobe_cb))
+ MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, esh_state, screen_update_esh)
+ MCFG_LASERDISC_OVERLAY_PALETTE(m_palette)
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
@@ -385,8 +383,12 @@ MACHINE_CONFIG_START(esh_state::esh)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
+ MCFG_DEVICE_MODIFY("laserdisc")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beep, 2000).add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("beeper", BEEP, 2000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
// we just disable even lines so we can simulate line blinking
diff --git a/src/mame/drivers/espial.cpp b/src/mame/drivers/espial.cpp
index a222b72a6d6..47091a72620 100644
--- a/src/mame/drivers/espial.cpp
+++ b/src/mame/drivers/espial.cpp
@@ -319,28 +319,28 @@ GFXDECODE_END
-void espial_state::espial(machine_config &config)
-{
+MACHINE_CONFIG_START(espial_state::espial)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 3072000); /* 3.072 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &espial_state::espial_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(espial_state::espial_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", Z80, 3072000) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(espial_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", espial_state, espial_scanline, "screen", 0, 1)
- Z80(config, m_audiocpu, 3072000); /* 2 MHz?????? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &espial_state::espial_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &espial_state::espial_sound_io_map);
- m_audiocpu->set_periodic_int(FUNC(espial_state::espial_sound_nmi_gen), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("audiocpu", Z80, 3072000) /* 2 MHz?????? */
+ MCFG_DEVICE_PROGRAM_MAP(espial_sound_map)
+ MCFG_DEVICE_IO_MAP(espial_sound_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(espial_state, espial_sound_nmi_gen, 4*60)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(espial_state::screen_update_espial));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(espial_state, screen_update_espial)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_espial);
PALETTE(config, m_palette, FUNC(espial_state::espial_palette), 256);
@@ -352,21 +352,22 @@ void espial_state::espial(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch2");
AY8910(config, "aysnd", 1500000).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
-void espial_state::netwars(machine_config &config)
-{
+MACHINE_CONFIG_START(espial_state::netwars)
espial(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &espial_state::netwars_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(netwars_map)
/* video hardware */
- subdevice<screen_device>("screen")->set_size(32*8, 64*8);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(32*8, 64*8)
MCFG_VIDEO_START_OVERRIDE(espial_state,netwars)
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/esq5505.cpp b/src/mame/drivers/esq5505.cpp
index 09dc834a0fa..ba790ee8dd6 100644
--- a/src/mame/drivers/esq5505.cpp
+++ b/src/mame/drivers/esq5505.cpp
@@ -222,8 +222,6 @@ private:
DECLARE_WRITE_LINE_MEMBER(duart_tx_b);
DECLARE_WRITE8_MEMBER(duart_output);
- void es5505_clock_changed(u32 data);
-
int m_system_type;
uint8_t m_duart_io;
uint8_t otis_irq_state;
@@ -272,6 +270,8 @@ IRQ_CALLBACK_MEMBER(esq5505_state::maincpu_irq_acknowledge_callback)
void esq5505_state::machine_start()
{
driver_device::machine_start();
+ // tell the pump about the ESP chips
+ m_pump->set_esp(m_esp);
m_rom = (uint16_t *)(void *)memregion("osrom")->base();
m_ram = (uint16_t *)(void *)memshare("osram")->ptr();
@@ -435,11 +435,6 @@ WRITE_LINE_MEMBER(esq5505_state::esq5505_otis_irq)
update_irq_to_maincpu();
}
-void esq5505_state::es5505_clock_changed(u32 data)
-{
- m_pump->set_unscaled_clock(data);
-}
-
WRITE16_MEMBER(esq5505_state::analog_w)
{
offset &= 0x7;
@@ -649,12 +644,10 @@ void esq5505_state::vfx(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
ESQ_5505_5510_PUMP(config, m_pump, 10_MHz_XTAL / (16 * 21));
- m_pump->set_esp(m_esp);
m_pump->add_route(0, "lspeaker", 1.0);
m_pump->add_route(1, "rspeaker", 1.0);
auto &es5505(ES5505(config, "otis", 10_MHz_XTAL));
- es5505.sample_rate_changed().set(FUNC(esq5505_state::es5505_clock_changed));
es5505.set_region0("waverom"); /* Bank 0 */
es5505.set_region1("waverom2"); /* Bank 1 */
es5505.set_channels(4); /* channels */
@@ -740,12 +733,10 @@ void esq5505_state::vfx32(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
ESQ_5505_5510_PUMP(config, m_pump, 30.4761_MHz_XTAL / (2 * 16 * 32));
- m_pump->set_esp(m_esp);
m_pump->add_route(0, "lspeaker", 1.0);
m_pump->add_route(1, "rspeaker", 1.0);
auto &es5505(ES5505(config, "otis", 30.4761_MHz_XTAL / 2));
- es5505.sample_rate_changed().set(FUNC(esq5505_state::es5505_clock_changed));
es5505.set_region0("waverom"); /* Bank 0 */
es5505.set_region1("waverom2"); /* Bank 1 */
es5505.set_channels(4); /* channels */
diff --git a/src/mame/drivers/esqasr.cpp b/src/mame/drivers/esqasr.cpp
index 890748050b0..139aeab4dea 100644
--- a/src/mame/drivers/esqasr.cpp
+++ b/src/mame/drivers/esqasr.cpp
@@ -76,14 +76,18 @@ private:
DECLARE_WRITE_LINE_MEMBER(esq5506_otto_irq);
DECLARE_READ16_MEMBER(esq5506_read_adc);
- void es5506_clock_changed(u32 data);
-
void asr_map(address_map &map);
void asrx_map(address_map &map);
};
void esqasr_state::machine_start()
{
+ if (m_pump.found())
+ {
+ // tell the pump about the ESP chips
+ if (m_esp.found())
+ m_pump->set_esp(m_esp);
+ }
}
void esqasr_state::machine_reset()
@@ -112,11 +116,6 @@ READ16_MEMBER(esqasr_state::esq5506_read_adc)
return 0;
}
-void esqasr_state::es5506_clock_changed(u32 data)
-{
- m_pump->set_unscaled_clock(data);
-}
-
void esqasr_state::asr(machine_config &config)
{
M68000(config, m_maincpu, XTAL(16'000'000)); // actually MC68302
@@ -131,12 +130,10 @@ void esqasr_state::asr(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
ESQ_5505_5510_PUMP(config, m_pump, XTAL(16'000'000) / (16 * 32));
- m_pump->set_esp(m_esp);
m_pump->add_route(0, "lspeaker", 1.0);
m_pump->add_route(1, "rspeaker", 1.0);
es5506_device &ensoniq(ES5506(config, "ensoniq", XTAL(16'000'000)));
- ensoniq.sample_rate_changed().set(FUNC(esqasr_state::es5506_clock_changed));
ensoniq.set_region0("waverom"); /* Bank 0 */
ensoniq.set_region1("waverom2"); /* Bank 1 */
ensoniq.set_region2("waverom3"); /* Bank 0 */
@@ -168,12 +165,10 @@ void esqasr_state::asrx(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
ESQ_5505_5510_PUMP(config, m_pump, XTAL(16'000'000) / (16 * 32)); // Actually ES5511
- m_pump->set_esp(m_esp);
m_pump->add_route(0, "lspeaker", 1.0);
m_pump->add_route(1, "rspeaker", 1.0);
es5506_device &ensoniq(ES5506(config, "ensoniq", XTAL(16'000'000)));
- ensoniq.sample_rate_changed().set(FUNC(esqasr_state::es5506_clock_changed));
ensoniq.set_region0("waverom"); /* Bank 0 */
ensoniq.set_region1("waverom2"); /* Bank 1 */
ensoniq.set_region2("waverom3"); /* Bank 0 */
diff --git a/src/mame/drivers/esqkt.cpp b/src/mame/drivers/esqkt.cpp
index 0b53ebc8c17..370c97ef0bb 100644
--- a/src/mame/drivers/esqkt.cpp
+++ b/src/mame/drivers/esqkt.cpp
@@ -139,12 +139,13 @@ private:
DECLARE_WRITE_LINE_MEMBER(esq5506_otto_irq);
DECLARE_READ16_MEMBER(esq5506_read_adc);
- void es5506_clock_changed(u32 data);
void kt_map(address_map &map);
};
void esqkt_state::machine_start()
{
+ // tell the pump about the ESP chips
+ m_pump->set_esp(m_esp);
}
void esqkt_state::machine_reset()
@@ -193,11 +194,6 @@ READ16_MEMBER(esqkt_state::esq5506_read_adc)
}
}
-void esqkt_state::es5506_clock_changed(u32 data)
-{
- m_pump->set_unscaled_clock(data);
-}
-
WRITE_LINE_MEMBER(esqkt_state::duart_irq_handler)
{
m_maincpu->set_input_line(M68K_IRQ_3, state);
@@ -248,12 +244,10 @@ void esqkt_state::kt(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
ESQ_5505_5510_PUMP(config, m_pump, 16_MHz_XTAL / (16 * 32));
- m_pump->set_esp(m_esp);
m_pump->add_route(0, "lspeaker", 1.0);
m_pump->add_route(1, "rspeaker", 1.0);
auto &es5506a(ES5506(config, "ensoniq1", 16_MHz_XTAL));
- es5506a.sample_rate_changed().set(FUNC(esqkt_state::es5506_clock_changed)); // TODO : Sync with 2 chips?
es5506a.set_region0("waverom"); /* Bank 0 */
es5506a.set_region1("waverom2"); /* Bank 1 */
es5506a.set_region2("waverom3"); /* Bank 0 */
diff --git a/src/mame/drivers/esripsys.cpp b/src/mame/drivers/esripsys.cpp
index 40b749ceae8..16ddf2c927b 100644
--- a/src/mame/drivers/esripsys.cpp
+++ b/src/mame/drivers/esripsys.cpp
@@ -704,6 +704,7 @@ void esripsys_state::esripsys(machine_config &config)
dacvol.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
dacvol.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dacvol", 1.0, DAC_VREF_POS_INPUT);
TMS5220(config, m_tms, 640000).add_route(ALL_OUTPUTS, "speaker", 1.0);
diff --git a/src/mame/drivers/et3400.cpp b/src/mame/drivers/et3400.cpp
index e42a4b41111..eb86741f3fc 100644
--- a/src/mame/drivers/et3400.cpp
+++ b/src/mame/drivers/et3400.cpp
@@ -219,11 +219,10 @@ static DEVICE_INPUT_DEFAULTS_START( terminal )
DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_2 )
DEVICE_INPUT_DEFAULTS_END
-void et3400_state::et3400(machine_config &config)
-{
+MACHINE_CONFIG_START(et3400_state::et3400)
/* basic machine hardware */
- M6800(config, m_maincpu, XTAL(4'000'000) / 4 ); // 1MHz with memory i/o accessory, or 500khz without it
- m_maincpu->set_addrmap(AS_PROGRAM, &et3400_state::mem_map);
+ MCFG_DEVICE_ADD("maincpu", M6800, XTAL(4'000'000) / 4 ) // 1MHz with memory i/o accessory, or 500khz without it
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
/* video hardware */
config.set_default_layout(layout_et3400);
@@ -248,11 +247,11 @@ void et3400_state::et3400(machine_config &config)
m_displatch[4]->parallel_out_cb().set(FUNC(et3400_state::led_w<5>));
m_displatch[5]->parallel_out_cb().set(FUNC(et3400_state::led_w<6>));
- CASSETTE(config, m_cass);
- m_cass->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.05);
-}
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05);
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( et3400 )
diff --git a/src/mame/drivers/eti660.cpp b/src/mame/drivers/eti660.cpp
index 0aae8a216db..9ca22647fc5 100644
--- a/src/mame/drivers/eti660.cpp
+++ b/src/mame/drivers/eti660.cpp
@@ -48,7 +48,7 @@ READ8_MEMBER( eti660_state::pia_r )
{
uint8_t pia_offset = m_maincpu->get_memory_address() & 0x03;
- return m_pia->read(pia_offset);
+ return m_pia->read(space, pia_offset);
}
WRITE8_MEMBER( eti660_state::pia_w )
@@ -66,7 +66,7 @@ WRITE8_MEMBER( eti660_state::pia_w )
data = 0x24;
}
- m_pia->write(pia_offset, data);
+ m_pia->write(space, pia_offset, data);
}
WRITE8_MEMBER( eti660_state::colorram_w )
@@ -342,14 +342,14 @@ MACHINE_CONFIG_START(eti660_state::eti660)
m_pia->irqa_handler().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT).invert(); // FIXME: use an input merger for these lines
m_pia->irqb_handler().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT).invert();
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("3K");
/* quickload */
- MCFG_QUICKLOAD_ADD("quickload", eti660_state, eti660, "bin,c8,ch8", attotime::from_seconds(2))
+ MCFG_QUICKLOAD_ADD("quickload", eti660_state, eti660, "bin,c8,ch8", 2)
MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/ettrivia.cpp b/src/mame/drivers/ettrivia.cpp
index 9ad1b40a8bb..abcead4b5eb 100644
--- a/src/mame/drivers/ettrivia.cpp
+++ b/src/mame/drivers/ettrivia.cpp
@@ -138,20 +138,20 @@ WRITE8_MEMBER(ettrivia_state::b800_w)
/* special case to return the value written to 0xb000 */
/* does it reset the chips too ? */
case 0: break;
- case 0xc4: m_b000_ret = m_ay[0]->data_r(); break;
- case 0x94: m_b000_ret = m_ay[1]->data_r(); break;
- case 0x86: m_b000_ret = m_ay[2]->data_r(); break;
+ case 0xc4: m_b000_ret = m_ay[0]->data_r(space, 0); break;
+ case 0x94: m_b000_ret = m_ay[1]->data_r(space, 0); break;
+ case 0x86: m_b000_ret = m_ay[2]->data_r(space, 0); break;
case 0x80:
switch(m_b800_prev)
{
- case 0xe0: m_ay[0]->address_w(m_b000_val); break;
- case 0x98: m_ay[1]->address_w(m_b000_val); break;
- case 0x83: m_ay[2]->address_w(m_b000_val); break;
+ case 0xe0: m_ay[0]->address_w(space,0,m_b000_val); break;
+ case 0x98: m_ay[1]->address_w(space,0,m_b000_val); break;
+ case 0x83: m_ay[2]->address_w(space,0,m_b000_val); break;
- case 0xa0: m_ay[0]->data_w(m_b000_val); break;
- case 0x88: m_ay[1]->data_w(m_b000_val); break;
- case 0x81: m_ay[2]->data_w(m_b000_val); break;
+ case 0xa0: m_ay[0]->data_w(space,0,m_b000_val); break;
+ case 0x88: m_ay[1]->data_w(space,0,m_b000_val); break;
+ case 0x81: m_ay[2]->data_w(space,0,m_b000_val); break;
}
break;
@@ -258,17 +258,17 @@ void ettrivia_state::ettrivia_palette(palette_device &palette) const
// red component
bit0 = BIT(color_prom[i], 0);
bit1 = BIT(color_prom[i+0x100], 0);
- int const r = combine_weights(weights, bit0, bit1);
+ int const r = combine_2_weights(weights, bit0, bit1);
// green component
bit0 = BIT(color_prom[i], 2);
bit1 = BIT(color_prom[i+0x100], 2);
- int const g = combine_weights(weights, bit0, bit1);
+ int const g = combine_2_weights(weights, bit0, bit1);
// blue component
bit0 = BIT(color_prom[i], 1);
bit1 = BIT(color_prom[i+0x100], 1);
- int const b = combine_weights(weights, bit0, bit1);
+ int const b = combine_2_weights(weights, bit0, bit1);
palette.set_pen_color(bitswap<8>(i,5,7,6,2,1,0,4,3), rgb_t(r, g, b));
}
@@ -297,23 +297,22 @@ INTERRUPT_GEN_MEMBER(ettrivia_state::ettrivia_interrupt)
device.execute().set_input_line(0, HOLD_LINE);
}
-void ettrivia_state::ettrivia(machine_config &config)
-{
- Z80(config, m_maincpu, 12000000/4-48000); //should be ok, it gives the 300 interrupts expected
- m_maincpu->set_addrmap(AS_PROGRAM, &ettrivia_state::cpu_map);
- m_maincpu->set_addrmap(AS_IO, &ettrivia_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(ettrivia_state::ettrivia_interrupt));
+MACHINE_CONFIG_START(ettrivia_state::ettrivia)
+ MCFG_DEVICE_ADD("maincpu", Z80,12000000/4-48000) //should be ok, it gives the 300 interrupts expected
+ MCFG_DEVICE_PROGRAM_MAP(cpu_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ettrivia_state, ettrivia_interrupt)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
- screen.set_screen_update(FUNC(ettrivia_state::screen_update_ettrivia));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ettrivia_state, screen_update_ettrivia)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_ettrivia);
PALETTE(config, "palette", FUNC(ettrivia_state::ettrivia_palette), 256);
@@ -330,7 +329,7 @@ void ettrivia_state::ettrivia(machine_config &config)
AY8912(config, m_ay[2], 1500000);
m_ay[2]->port_a_read_callback().set_ioport("IN0");
m_ay[2]->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
ROM_START( promutrv )
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/eurocom2.cpp b/src/mame/drivers/eurocom2.cpp
index 9f916f38183..cb14c154bfa 100644
--- a/src/mame/drivers/eurocom2.cpp
+++ b/src/mame/drivers/eurocom2.cpp
@@ -51,16 +51,17 @@
#define VC_DISP_VERT 256
-//#define LOG_GENERAL (1U << 0) //defined in logmacro.h already
-#define LOG_KEYBOARD (1U << 1)
-#define LOG_DEBUG (1U << 2)
+#define VERBOSE_DBG 2 /* general debug messages */
-//#define VERBOSE (LOG_DEBUG)
-//#define LOG_OUTPUT_FUNC printf
-#include "logmacro.h"
-
-#define LOGKBD(...) LOGMASKED(LOG_KEYBOARD, __VA_ARGS__)
-#define LOGDBG(...) LOGMASKED(LOG_DEBUG, __VA_ARGS__)
+#define DBG_LOG(N,M,A) \
+ do { \
+ if(VERBOSE_DBG>=N) \
+ { \
+ if( M ) \
+ logerror("%11.6f at %s: %-10s",machine().time().as_double(),machine().describe_context(),(char*)M ); \
+ logerror A; \
+ } \
+ } while (0)
class eurocom2_state : public driver_device
@@ -171,7 +172,7 @@ READ8_MEMBER(eurocom2_state::fdc_aux_r)
data |= (m_fdc->intrq_r() << 6);
data |= (m_fdc->drq_r() << 7);
- LOGDBG("Floppy %d == %02x\n", offset, data);
+ DBG_LOG(3, "Floppy", ("%d == %02x\n", offset, data));
return data;
}
@@ -211,12 +212,12 @@ WRITE8_MEMBER(eurocom2_state::fdc_aux_w)
m_fdc->dden_w(BIT(data, 5));
- LOGDBG("Floppy %d <- %02x\n", offset, data);
+ DBG_LOG(3, "Floppy", ("%d <- %02x\n", offset, data));
}
WRITE8_MEMBER(eurocom2_state::vico_w)
{
- LOG("VICO %d <- %02x\n", offset, data);
+ DBG_LOG(2, "VICO", ("%d <- %02x\n", offset, data));
m_vico[offset & 1] = data;
}
@@ -224,21 +225,21 @@ WRITE8_MEMBER(eurocom2_state::vico_w)
READ_LINE_MEMBER(eurocom2_state::pia1_ca2_r)
{
- LOGDBG("PIA1 CA2 == %d (SST Q14)\n", m_sst_state);
+ DBG_LOG(3, "PIA1", ("CA2 == %d (SST Q14)\n", m_sst_state));
return m_sst_state;
}
READ_LINE_MEMBER(eurocom2_state::pia1_cb1_r)
{
- LOGDBG("PIA1 CB1 == %d (SST Q6)\n", m_sst_state);
+ DBG_LOG(3, "PIA1", ("CB1 == %d (SST Q6)\n", m_sst_state));
return m_sst_state;
}
WRITE_LINE_MEMBER(eurocom2_state::pia1_cb2_w)
{
- LOG("PIA1 CB2 <- %d (SST reset)\n", state);
+ DBG_LOG(2, "PIA1", ("CB2 <- %d (SST reset)\n", state));
// reset single-step timer
}
@@ -437,15 +438,14 @@ static void eurocom_floppies(device_slot_interface &device)
device.option_add("8dsdd", FLOPPY_8_DSDD);
}
-void eurocom2_state::eurocom2(machine_config &config)
-{
- MC6809(config, m_maincpu, 10.7172_MHz_XTAL / 2); // EXTAL = CLK/2 = 5.3586 MHz; Q = E = 1.33965 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &eurocom2_state::eurocom2_map);
+MACHINE_CONFIG_START(eurocom2_state::eurocom2)
+ MCFG_DEVICE_ADD("maincpu", MC6809, 10.7172_MHz_XTAL / 2) // EXTAL = CLK/2 = 5.3586 MHz; Q = E = 1.33965 MHz
+ MCFG_DEVICE_PROGRAM_MAP(eurocom2_map)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER, rgb_t::green());
- m_screen->set_raw(10.7172_MHz_XTAL, VC_TOTAL_HORZ, 0, VC_DISP_HORZ, VC_TOTAL_VERT, 0, VC_DISP_VERT);
- m_screen->set_screen_update(FUNC(eurocom2_state::screen_update));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_RAW_PARAMS(10.7172_MHz_XTAL, VC_TOTAL_HORZ, 0, VC_DISP_HORZ, VC_TOTAL_VERT, 0, VC_DISP_VERT)
+ MCFG_SCREEN_UPDATE_DRIVER(eurocom2_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -475,14 +475,16 @@ void eurocom2_state::eurocom2(machine_config &config)
FD1793(config, m_fdc, 2_MHz_XTAL / 2);
// m_fdc->intrq_wr_callback().set_inputline(m_maincpu, M6809_IRQ_LINE);
- FLOPPY_CONNECTOR(config, "fdc:0", eurocom_floppies, "525qd", eurocom2_state::floppy_formats);// enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", eurocom_floppies, "525qd", eurocom2_state::floppy_formats);// enable_sound(true);
-}
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", eurocom_floppies, "525qd", eurocom2_state::floppy_formats)
+// MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", eurocom_floppies, "525qd", eurocom2_state::floppy_formats)
+// MCFG_FLOPPY_DRIVE_SOUND(true)
+MACHINE_CONFIG_END
-void waveterm_state::waveterm(machine_config &config)
-{
+MACHINE_CONFIG_START(waveterm_state::waveterm)
eurocom2(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &waveterm_state::waveterm_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(waveterm_map)
m_pia2->cb2_handler().set(FUNC(waveterm_state::waveterm_kbh_w));
m_pia2->writepb_handler().set(FUNC(waveterm_state::waveterm_kb_w));
@@ -499,17 +501,16 @@ void waveterm_state::waveterm(machine_config &config)
m_pia3->readcb1_handler().set_ioport("FP");
// m_pia3->cb2_handler().set(FUNC(waveterm_state::pia3_cb2_w));
- PTM6840(config, m_ptm, 0);
+ MCFG_DEVICE_ADD("ptm", PTM6840, 0)
- SOFTWARE_LIST(config, "disk_list").set_original("waveterm");
-}
+ MCFG_SOFTWARE_LIST_ADD("disk_list", "waveterm")
+MACHINE_CONFIG_END
-void eurocom2_state::microtrol(machine_config &config)
-{
+MACHINE_CONFIG_START(eurocom2_state::microtrol)
eurocom2(config);
// TODO: Second board has WD2793A FDC and what looks like a RAM disk
-}
+MACHINE_CONFIG_END
ROM_START(eurocom2)
diff --git a/src/mame/drivers/europc.cpp b/src/mame/drivers/europc.cpp
index 429def9e01b..1ac51ff2853 100644
--- a/src/mame/drivers/europc.cpp
+++ b/src/mame/drivers/europc.cpp
@@ -31,7 +31,6 @@
#include "emu.h"
#include "cpu/i86/i86.h"
#include "bus/isa/aga.h"
-#include "bus/isa/fdc.h"
#include "machine/genpc.h"
#include "machine/nvram.h"
#include "machine/pckeybrd.h"
@@ -92,6 +91,7 @@ private:
{
TIMER_RTC
};
+ static void cfg_builtin_720K(device_t *device);
void europc_io(address_map &map);
void europc_map(address_map &map);
};
@@ -514,59 +514,32 @@ void europc_pc_state::europc_io(address_map &map)
map(0x02e0, 0x02e0).r(FUNC(europc_pc_state::europc_jim2_r));
}
-class europc_fdc_device : public isa8_fdc_device
+/* single built-in 3.5" 720K drive, connector for optional external 3.5" or 5.25" drive */
+void europc_pc_state::cfg_builtin_720K(device_t *device)
{
-public:
- europc_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-protected:
- virtual void device_add_mconfig(machine_config &config) override;
-};
-
-DEFINE_DEVICE_TYPE(EUROPC_FDC, europc_fdc_device, "europc_fdc", "EURO PC FDC hookup")
-
-europc_fdc_device::europc_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : isa8_fdc_device(mconfig, EUROPC_FDC, tag, owner, clock)
-{
-}
-
-static void pc_dd_floppies(device_slot_interface &device)
-{
- device.option_add("525dd", FLOPPY_525_DD);
- device.option_add("35dd", FLOPPY_35_DD);
-}
-
-void europc_fdc_device::device_add_mconfig(machine_config &config)
-{
- wd37c65c_device &fdc(WD37C65C(config, m_fdc, 16_MHz_XTAL));
- fdc.intrq_wr_callback().set(FUNC(isa8_fdc_device::irq_w));
- fdc.drq_wr_callback().set(FUNC(isa8_fdc_device::drq_w));
- // single built-in 3.5" 720K drive, connector for optional external 3.5" or 5.25" drive
- FLOPPY_CONNECTOR(config, "fdc:0", pc_dd_floppies, "35dd", isa8_fdc_device::floppy_formats).set_fixed(true);
- FLOPPY_CONNECTOR(config, "fdc:1", pc_dd_floppies, "", isa8_fdc_device::floppy_formats);
-}
-
-static void europc_fdc(device_slot_interface &device)
-{
- device.option_add("fdc", EUROPC_FDC);
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_default_option("35dd");
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:0")).set_fixed(true);
+ dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option("");
}
//Euro PC
-void europc_pc_state::europc(machine_config &config)
-{
- I8088(config, m_maincpu, 4772720*2);
- m_maincpu->set_addrmap(AS_PROGRAM, &europc_pc_state::europc_map);
- m_maincpu->set_addrmap(AS_IO, &europc_pc_state::europc_io);
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
-
- PCNOPPI_MOTHERBOARD(config, "mb", 0).set_cputag(m_maincpu);
-
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "aga", false); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, "lpt", true);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, "com", true);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", europc_fdc, "fdc", true);
- PC_KEYB(config, m_keyboard);
- m_keyboard->keypress().set("mb:pic8259", FUNC(pic8259_device::ir1_w));
+MACHINE_CONFIG_START(europc_pc_state::europc)
+ MCFG_DEVICE_ADD("maincpu", I8088, 4772720*2)
+ MCFG_DEVICE_PROGRAM_MAP(europc_map)
+ MCFG_DEVICE_IO_MAP(europc_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
+
+ MCFG_PCNOPPI_MOTHERBOARD_ADD("mb", "maincpu")
+
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "aga", false) // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "lpt", false)
+ MCFG_SLOT_FIXED(true)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", false)
+ MCFG_SLOT_FIXED(true)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", false)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc_xt", cfg_builtin_720K)
+ MCFG_SLOT_FIXED(true)
+ MCFG_PC_KEYB_ADD("pc_keyboard", WRITELINE("mb:pic8259", pic8259_device, ir1_w))
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);;
@@ -575,8 +548,8 @@ void europc_pc_state::europc(machine_config &config)
RAM(config, m_ram).set_default_size("512K").set_extra_options("256K, 640K");
/* software lists */
- SOFTWARE_LIST(config, "disk_list").set_original("ibm5150");
-}
+ MCFG_SOFTWARE_LIST_ADD("disk_list", "ibm5150")
+MACHINE_CONFIG_END
//Euro PC II
void europc_pc_state::europc2(machine_config &config)
@@ -587,16 +560,18 @@ void europc_pc_state::europc2(machine_config &config)
}
//Euro XT
-void europc_pc_state::euroxt(machine_config &config)
-{
+MACHINE_CONFIG_START(europc_pc_state::euroxt)
europc(config);
m_ram->set_default_size("768K");
- subdevice<isa8_slot_device>("isa2")->set_default_option(nullptr);
- ISA8_SLOT(config, "isa5", 0, "mb:isa", pc_isa8_cards, "xtide", true); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa6", 0, "mb:isa", pc_isa8_cards, "lpt", true);
-}
+ MCFG_DEVICE_MODIFY("isa2")
+ MCFG_SLOT_DEFAULT_OPTION(nullptr)
+ MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "xtide", false) // FIXME: determine ISA bus clock
+ MCFG_SLOT_FIXED(true)
+ MCFG_DEVICE_ADD("isa6", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "lpt", false)
+ MCFG_SLOT_FIXED(true)
+MACHINE_CONFIG_END
ROM_START( europc )
ROM_REGION(0x10000,"bios", 0)
@@ -617,18 +592,12 @@ ROM_START( europc )
ROMX_LOAD("bios_v2.04.bin", 0x8000, 0x8000, CRC(e623967c) SHA1(5196b14018da1f3198e2950af0e6eab41425f556), ROM_BIOS(6))
ROM_SYSTEM_BIOS( 7, "v2.05", "EuroPC v2.05" )
ROMX_LOAD("bios_2.05.bin", 0x8000, 0x8000, CRC(372ceed6) SHA1(bb3d3957a22422f98be2225bdc47705bcab96f56), ROM_BIOS(7)) // v2.04 and v2.05 don't work yet, , see comment section
-
- ROM_REGION(0x1000, "kbdctrl", 0)
- ROM_LOAD("zc86115p-mc6805u2.bin", 0x0000, 0x1000, CRC(d90c1fab) SHA1(ddb7060abddee7294723833c303090de35c1e79c))
-ROM_END
+ ROM_END
ROM_START( europc2 )
ROM_REGION(0x10000,"bios", 0)
// hdd bios integrated!
ROM_LOAD("europcii_bios_v3.01_500145.bin", 0x8000, 0x8000, CRC(ecca89c8) SHA1(802b89babdf0ab0a0a9c21d1234e529c8386d6fb))
-
- ROM_REGION(0x1000, "kbdctrl", 0)
- ROM_LOAD("zc86115p-mc6805u2.bin", 0x0000, 0x1000, CRC(d90c1fab) SHA1(ddb7060abddee7294723833c303090de35c1e79c))
ROM_END
ROM_START( euroxt )
diff --git a/src/mame/drivers/evmbug.cpp b/src/mame/drivers/evmbug.cpp
index ad78722fbb7..4d5669728b5 100644
--- a/src/mame/drivers/evmbug.cpp
+++ b/src/mame/drivers/evmbug.cpp
@@ -59,8 +59,10 @@ void evmbug_state::mem_map(address_map &map)
void evmbug_state::io_map(address_map &map)
{
map.unmap_value_high();
- //map(0x0000, 0x003f).rw("uart1", FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite));
- map(0x0000, 0x003f).rw(FUNC(evmbug_state::rs232_r), FUNC(evmbug_state::rs232_w));
+ //AM_RANGE(0x0000, 0x0003) AM_DEVREAD("uart1", tms9902_device, cruread)
+ //AM_RANGE(0x0000, 0x001f) AM_DEVWRITE("uart1", tms9902_device, cruwrite)
+ map(0x0000, 0x0003).r(FUNC(evmbug_state::rs232_r));
+ map(0x0000, 0x001f).w(FUNC(evmbug_state::rs232_w));
}
/* Input ports */
@@ -69,19 +71,16 @@ INPUT_PORTS_END
READ8_MEMBER( evmbug_state::rs232_r )
{
- if (offset < 8)
- return BIT(m_term_data, offset);
- else if (offset == 21)
- return m_rbrl;
- else if (offset == 22 || offset == 23)
- return 1;
- else if (offset == 15)
+ if (offset == 0)
+ return m_term_data;
+ else
+ if (offset == 2)
+ return (m_rbrl ? 0x20 : 0) | 0xc0;
+ else
{
m_rin ^= 1;
- return m_rin;
+ return m_rin << 7;
}
- else
- return 0;
}
WRITE8_MEMBER( evmbug_state::rs232_w )
@@ -94,7 +93,7 @@ WRITE8_MEMBER( evmbug_state::rs232_w )
m_term_out |= (data << offset);
if (offset == 7)
- m_terminal->write(m_term_out & 0x7f);
+ m_terminal->write(space, 0, m_term_out & 0x7f);
}
else
if (offset == 18)
diff --git a/src/mame/drivers/excali64.cpp b/src/mame/drivers/excali64.cpp
index 8779ce79392..caf29423c86 100644
--- a/src/mame/drivers/excali64.cpp
+++ b/src/mame/drivers/excali64.cpp
@@ -75,9 +75,6 @@ public:
void excali64(machine_config &config);
-protected:
- virtual void machine_reset() override;
-
private:
void excali64_palette(palette_device &palette);
DECLARE_WRITE8_MEMBER(ppib_w);
@@ -100,7 +97,7 @@ private:
DECLARE_WRITE_LINE_MEMBER(crtc_hs);
DECLARE_WRITE_LINE_MEMBER(crtc_vs);
DECLARE_WRITE_LINE_MEMBER(motor_w);
-
+ DECLARE_MACHINE_RESET(excali64);
void io_map(address_map &map);
void mem_map(address_map &map);
@@ -415,7 +412,7 @@ WRITE8_MEMBER( excali64_state::port70_w )
membank("bankr1")->set_entry(2);
}
-void excali64_state::machine_reset()
+MACHINE_RESET_MEMBER( excali64_state, excali64 )
{
membank("bankr1")->set_entry(1); // read from ROM
membank("bankr2")->set_entry(1); // read from ROM
@@ -553,12 +550,13 @@ MC6845_UPDATE_ROW( excali64_state::update_row )
}
}
-void excali64_state::excali64(machine_config &config)
-{
+MACHINE_CONFIG_START(excali64_state::excali64)
/* basic machine hardware */
- Z80(config, m_maincpu, 16_MHz_XTAL / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &excali64_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &excali64_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 16_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+
+ MCFG_MACHINE_RESET_OVERRIDE(excali64_state, excali64)
I8251(config, "uart", 0);
//uart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
@@ -583,12 +581,12 @@ void excali64_state::excali64(machine_config &config)
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05);
/* Video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(80*8, 24*12);
- screen.set_visarea_full();
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(80*8, 24*12)
+ MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 24*12-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
PALETTE(config, m_palette, FUNC(excali64_state::excali64_palette), 40);
GFXDECODE(config, "gfxdecode", m_palette, gfx_excali64);
@@ -602,12 +600,14 @@ void excali64_state::excali64(machine_config &config)
m_crtc->out_vsync_callback().set(FUNC(excali64_state::crtc_vs));
/* Devices */
- CASSETTE(config, m_cass);
+ MCFG_CASSETTE_ADD( "cassette" )
WD2793(config, m_fdc, 16_MHz_XTAL / 16);
m_fdc->drq_wr_callback().set(m_dma, FUNC(z80dma_device::rdy_w));
- FLOPPY_CONNECTOR(config, "fdc:0", excali64_floppies, "525qd", excali64_state::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", excali64_floppies, "525qd", excali64_state::floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", excali64_floppies, "525qd", excali64_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", excali64_floppies, "525qd", excali64_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
Z80DMA(config, m_dma, 16_MHz_XTAL / 4);
m_dma->out_busreq_callback().set(FUNC(excali64_state::busreq_w));
@@ -625,12 +625,10 @@ void excali64_state::excali64(machine_config &config)
m_u12->set_clear_pin_value(1); /* Clear pin - pulled high */
m_u12->out_cb().set(FUNC(excali64_state::motor_w));
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(excali64_state::cent_busy_w));
-
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
-}
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, excali64_state, cent_busy_w))
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( excali64 )
diff --git a/src/mame/drivers/exedexes.cpp b/src/mame/drivers/exedexes.cpp
index 66e5701f002..d8214068174 100644
--- a/src/mame/drivers/exedexes.cpp
+++ b/src/mame/drivers/exedexes.cpp
@@ -63,8 +63,8 @@ void exedexes_state::sound_map(address_map &map)
map(0x4000, 0x47ff).ram();
map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read));
map(0x8000, 0x8001).w("aysnd", FUNC(ay8910_device::address_data_w));
- map(0x8002, 0x8002).w("sn1", FUNC(sn76489_device::write));
- map(0x8003, 0x8003).w("sn2", FUNC(sn76489_device::write));
+ map(0x8002, 0x8002).w("sn1", FUNC(sn76489_device::command_w));
+ map(0x8003, 0x8003).w("sn2", FUNC(sn76489_device::command_w));
}
@@ -219,31 +219,31 @@ void exedexes_state::machine_reset()
m_sc2on = 0;
}
-void exedexes_state::exedexes(machine_config &config)
-{
+MACHINE_CONFIG_START(exedexes_state::exedexes)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* 4 MHz (?) */
- m_maincpu->set_addrmap(AS_PROGRAM, &exedexes_state::exedexes_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(exedexes_state::exedexes_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz (?) */
+ MCFG_DEVICE_PROGRAM_MAP(exedexes_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", exedexes_state, exedexes_scanline, "screen", 0, 1)
- z80_device &audiocpu(Z80(config, "audiocpu", 3000000)); /* 3 MHz ??? */
- audiocpu.set_addrmap(AS_PROGRAM, &exedexes_state::sound_map);
- audiocpu.set_periodic_int(FUNC(exedexes_state::irq0_line_hold), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("audiocpu", Z80, 3000000) /* 3 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(exedexes_state, irq0_line_hold, 4*60)
/* video hardware */
- BUFFERED_SPRITERAM8(config, m_spriteram);
+ MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(exedexes_state::screen_update_exedexes));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(exedexes_state, screen_update_exedexes)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_exedexes);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_exedexes)
PALETTE(config, m_palette, FUNC(exedexes_state::exedexes_palette), 64*4+64*4+16*16+16*16, 256);
@@ -254,10 +254,12 @@ void exedexes_state::exedexes(machine_config &config)
AY8910(config, "aysnd", 1500000).add_route(ALL_OUTPUTS, "mono", 0.10);
- SN76489(config, "sn1", 3000000).add_route(ALL_OUTPUTS, "mono", 0.36);
+ MCFG_DEVICE_ADD("sn1", SN76489, 3000000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.36)
- SN76489(config, "sn2", 3000000).add_route(ALL_OUTPUTS, "mono", 0.36);
-}
+ MCFG_DEVICE_ADD("sn2", SN76489, 3000000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.36)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/exelv.cpp b/src/mame/drivers/exelv.cpp
index f4a8b03a942..6c0be4d51ca 100644
--- a/src/mame/drivers/exelv.cpp
+++ b/src/mame/drivers/exelv.cpp
@@ -380,7 +380,7 @@ WRITE8_MEMBER(exelv_state::tms7041_portd_w)
READ8_MEMBER(exelv_state::rom_r)
{
if (m_cart && m_cart->exists())
- return m_cart->read_rom(offset + 0x200);
+ return m_cart->read_rom(space, offset + 0x200);
return 0;
}
diff --git a/src/mame/drivers/exerion.cpp b/src/mame/drivers/exerion.cpp
index 93afe3231ea..1bce76d1346 100644
--- a/src/mame/drivers/exerion.cpp
+++ b/src/mame/drivers/exerion.cpp
@@ -372,20 +372,20 @@ void exerion_state::machine_reset()
m_background_latches[i] = 0;
}
-void exerion_state::exerion(machine_config &config)
-{
- Z80(config, m_maincpu, EXERION_CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &exerion_state::main_map);
+MACHINE_CONFIG_START(exerion_state::exerion)
+
+ MCFG_DEVICE_ADD("maincpu", Z80, EXERION_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- z80_device &sub(Z80(config, "sub", EXERION_CPU_CLOCK));
- sub.set_addrmap(AS_PROGRAM, &exerion_state::sub_map);
+ MCFG_DEVICE_ADD("sub", Z80, EXERION_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(sub_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(EXERION_PIXEL_CLOCK, EXERION_HTOTAL, EXERION_HBEND, EXERION_HBSTART, EXERION_VTOTAL, EXERION_VBEND, EXERION_VBSTART);
- m_screen->set_screen_update(FUNC(exerion_state::screen_update_exerion));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(EXERION_PIXEL_CLOCK, EXERION_HTOTAL, EXERION_HBEND, EXERION_HBSTART, EXERION_VTOTAL, EXERION_VBEND, EXERION_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(exerion_state, screen_update_exerion)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_exerion);
PALETTE(config, m_palette, FUNC(exerion_state::exerion_palette), 256*3, 32);
@@ -401,7 +401,7 @@ void exerion_state::exerion(machine_config &config)
ay2.port_a_read_callback().set(FUNC(exerion_state::exerion_porta_r));
ay2.port_b_write_callback().set(FUNC(exerion_state::exerion_portb_w));
ay2.add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+MACHINE_CONFIG_END
void exerion_state::irion(machine_config &config)
{
diff --git a/src/mame/drivers/exidy.cpp b/src/mame/drivers/exidy.cpp
index 79313769fb4..de262b538c4 100644
--- a/src/mame/drivers/exidy.cpp
+++ b/src/mame/drivers/exidy.cpp
@@ -838,77 +838,78 @@ MACHINE_START_MEMBER(exidy_state,teetert)
*
*************************************/
-void exidy_state::base(machine_config &config)
-{
+MACHINE_CONFIG_START(exidy_state::base)
+
/* basic machine hardware */
- M6502(config, m_maincpu, EXIDY_CPU_CLOCK);
- m_maincpu->set_vblank_int("screen", FUNC(exidy_state::exidy_vblank_interrupt));
+ MCFG_DEVICE_ADD("maincpu", M6502, EXIDY_CPU_CLOCK)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", exidy_state, exidy_vblank_interrupt)
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_exidy);
- PALETTE(config, m_palette).set_entries(8);
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_raw(EXIDY_PIXEL_CLOCK, EXIDY_HTOTAL, EXIDY_HBEND, EXIDY_HBSTART, EXIDY_VTOTAL, EXIDY_VBEND, EXIDY_VBSTART);
- m_screen->set_screen_update(FUNC(exidy_state::screen_update_exidy));
- m_screen->set_palette(m_palette);
-}
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_exidy)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_RAW_PARAMS(EXIDY_PIXEL_CLOCK, EXIDY_HTOTAL, EXIDY_HBEND, EXIDY_HBSTART, EXIDY_VTOTAL, EXIDY_VBEND, EXIDY_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(exidy_state, screen_update_exidy)
+ MCFG_SCREEN_PALETTE("palette")
-void exidy_state::sidetrac(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_START(exidy_state::sidetrac)
base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &exidy_state::sidetrac_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sidetrac_map)
/* audio hardware */
spectar_audio(config);
-}
+MACHINE_CONFIG_END
-void exidy_state::targ(machine_config &config)
-{
+MACHINE_CONFIG_START(exidy_state::targ)
base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &exidy_state::targ_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(targ_map)
/* audio hardware */
targ_audio(config);
-}
+MACHINE_CONFIG_END
-void exidy_state::spectar(machine_config &config)
-{
+MACHINE_CONFIG_START(exidy_state::spectar)
base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &exidy_state::spectar_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(spectar_map)
/* audio hardware */
spectar_audio(config);
-}
+MACHINE_CONFIG_END
-void exidy_state::rallys(machine_config &config)
-{
+MACHINE_CONFIG_START(exidy_state::rallys)
spectar(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &exidy_state::rallys_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(rallys_map)
+MACHINE_CONFIG_END
-void exidy_state::venture(machine_config &config)
-{
+MACHINE_CONFIG_START(exidy_state::venture)
base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &exidy_state::venture_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(venture_map)
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
/* audio hardware */
pia6821_device &pia(PIA6821(config, "pia", 0));
@@ -922,28 +923,29 @@ void exidy_state::venture(machine_config &config)
soundbd.pb_callback().set("pia", FUNC(pia6821_device::porta_w));
soundbd.ca2_callback().set("pia", FUNC(pia6821_device::cb1_w));
soundbd.cb2_callback().set("pia", FUNC(pia6821_device::ca1_w));
-}
+MACHINE_CONFIG_END
-void exidy_state::teetert(machine_config &config)
-{
+MACHINE_CONFIG_START(exidy_state::teetert)
venture(config);
/* basic machine hardware */
- m_maincpu->set_periodic_int(FUNC(exidy_state::nmi_line_pulse), attotime::from_hz(10*60));
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(exidy_state, nmi_line_pulse, 10*60)
MCFG_MACHINE_START_OVERRIDE(exidy_state, teetert )
-}
+MACHINE_CONFIG_END
-void exidy_state::mtrap(machine_config &config)
-{
+
+MACHINE_CONFIG_START(exidy_state::mtrap)
base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &exidy_state::mtrap_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mtrap_map)
- config.m_minimum_quantum = attotime::from_hz(1920);
+ MCFG_QUANTUM_TIME(attotime::from_hz(1920))
/* audio hardware */
pia6821_device &pia(PIA6821(config, "pia", 0));
@@ -957,25 +959,25 @@ void exidy_state::mtrap(machine_config &config)
soundbd.pb_callback().set("pia", FUNC(pia6821_device::porta_w));
soundbd.ca2_callback().set("pia", FUNC(pia6821_device::cb1_w));
soundbd.cb2_callback().set("pia", FUNC(pia6821_device::ca1_w));
-}
+MACHINE_CONFIG_END
-void exidy_state::pepper2(machine_config &config)
-{
+MACHINE_CONFIG_START(exidy_state::pepper2)
venture(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &exidy_state::pepper2_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(pepper2_map)
+MACHINE_CONFIG_END
-void exidy_state::fax(machine_config &config)
-{
+MACHINE_CONFIG_START(exidy_state::fax)
pepper2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &exidy_state::fax_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(fax_map)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/exidy440.cpp b/src/mame/drivers/exidy440.cpp
index a71c7f05624..248b57d46a5 100644
--- a/src/mame/drivers/exidy440.cpp
+++ b/src/mame/drivers/exidy440.cpp
@@ -996,11 +996,11 @@ INPUT_PORTS_END
*
*************************************/
-void exidy440_state::exidy440(machine_config &config)
-{
+MACHINE_CONFIG_START(exidy440_state::exidy440)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, MAIN_CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &exidy440_state::exidy440_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, MAIN_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(exidy440_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -1011,19 +1011,20 @@ void exidy440_state::exidy440(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- EXIDY440(config, m_custom, EXIDY440_MC3418_CLOCK);
- m_custom->add_route(0, "lspeaker", 1.0);
- m_custom->add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("440audio", EXIDY440, EXIDY440_MC3418_CLOCK)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
-void topsecex_state::topsecex(machine_config &config)
-{
+MACHINE_CONFIG_START(topsecex_state::topsecex)
exidy440(config);
+ /* basic machine hardware */
+
/* video hardware */
topsecex_video(config);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/exidyttl.cpp b/src/mame/drivers/exidyttl.cpp
index 296a716b609..55e9650b4a1 100644
--- a/src/mame/drivers/exidyttl.cpp
+++ b/src/mame/drivers/exidyttl.cpp
@@ -95,37 +95,35 @@ void exidyttl_state::video_start()
{
}
-void exidyttl_state::attack(machine_config &config)
-{
+MACHINE_CONFIG_START(exidyttl_state::attack)
+
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_attack);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(attack)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL);
- m_video->set_vert_params(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.30);
-}
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(exidyttl_state::deathrac)
-void exidyttl_state::deathrac(machine_config &config)
-{
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_attack);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(attack)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL);
- m_video->set_vert_params(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.30);
-}
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/expro02.cpp b/src/mame/drivers/expro02.cpp
index e4d9ab9537e..bc078757484 100644
--- a/src/mame/drivers/expro02.cpp
+++ b/src/mame/drivers/expro02.cpp
@@ -54,9 +54,9 @@ EXPRO-02
| GP-U27 PAL 41464 |---------| |
|J PAL GP-U41 41464 |KANEKO | |
|A MC-8282 PAL 41464 |VU-002 | PM006E.U83 PM018E.U94 |
-|M D42101C 41464 | | |
+|M 6116 41464 | | |
|M | | PM019U_U93-01.U93|
-|A D42101C |---------| PM206E.U82 |
+|A 6116 |---------| PM206E.U82 |
| HM53461 |
| PAL HM53461 PAL |-------| CALC1-CHIP |
| HM53461 PAL |KANEKO | PM016E.U92 |
@@ -82,7 +82,6 @@ EXPRO-02
CALC1-CHIP clock - 16.0MHz
GP-U41 clocks - pins 21 & 22 - 12.0MHz, pins 1 & 2 - 6.0MHz, pins 8 & 9 - 15.6249kHz (HSync?)
GP-U27 clock - none (so it's not an MCU)
- D42101C - Line buffer for NTSC TV
(TODO: which is correct?)
OKI M6295 clock - 2.0MHz (12/6). pin7 = low
@@ -108,7 +107,7 @@ M6100575A GALS PANIC (PCB manufactured by Taito)
CPU: MC68000
Sound: M6295
OSC: 12.0000MHz, 16.0000MHz
-Custom: VU-002, VIEW2, CALC1
+Custom: VU-002, VIEW2, CACL1
ROMs:
PM109J.U88 (OKI M271000ZB) - Main programs
@@ -900,23 +899,23 @@ GFXDECODE_END
*
*************************************/
-void expro02_state::expro02(machine_config &config)
-{
+MACHINE_CONFIG_START(expro02_state::expro02)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &expro02_state::expro02_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(expro02_state::scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(expro02_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", expro02_state, scanline, "screen", 0, 1)
/* CALC01 MCU @ 16Mhz (unknown type, simulated) */
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 256-1, 0, 256-32-1);
- m_screen->set_screen_update(FUNC(expro02_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-32-1)
+ MCFG_SCREEN_UPDATE_DRIVER(expro02_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, "gfxdecode", m_palette, gfx_expro02);
PALETTE(config, m_palette, FUNC(expro02_state::expro02_palette)).set_format(palette_device::GRBx_555, 2048 + 32768);
@@ -939,18 +938,18 @@ void expro02_state::expro02(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- okim6295_device &oki(OKIM6295(config, "oki", 12000000/6, okim6295_device::PIN7_LOW));
- oki.set_addrmap(0, &expro02_state::oki_map);
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 12000000/6, okim6295_device::PIN7_LOW)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void expro02_state::comad(machine_config &config)
-{
- expro02(config);
+MACHINE_CONFIG_START(expro02_state::comad)
+ expro02(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &expro02_state::fantasia_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(fantasia_map)
config.device_remove("calc1_mcu");
@@ -959,76 +958,68 @@ void expro02_state::comad(machine_config &config)
m_view2_0->set_offset(-256, -216, 256, 224);
subdevice<watchdog_timer_device>("watchdog")->set_time(attotime::from_seconds(0)); /* a guess, and certainly wrong */
-}
+MACHINE_CONFIG_END
-void expro02_state::comad_noview2(machine_config &config)
-{
+MACHINE_CONFIG_START(expro02_state::comad_noview2)
comad(config);
-
config.device_remove("view2_0");
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_expro02_noview2);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_expro02_noview2)
+MACHINE_CONFIG_END
-void expro02_state::fantasia(machine_config &config)
-{
+MACHINE_CONFIG_START(expro02_state::fantasia)
comad_noview2(config);
- m_maincpu->set_clock(10000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &expro02_state::comad_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(10000000)
+ MCFG_DEVICE_PROGRAM_MAP(comad_map)
+MACHINE_CONFIG_END
-void expro02_state::supmodel(machine_config &config)
-{
+MACHINE_CONFIG_START(expro02_state::supmodel)
comad_noview2(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &expro02_state::supmodel_map);
-
- okim6295_device &oki(OKIM6295(config.replace(), "oki", 1584000, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
- oki.set_addrmap(0, &expro02_state::oki_map);
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
-
-void expro02_state::smissw(machine_config &config) // 951127 PCB, 12 & 16 clocks
-{
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(supmodel_map)
+ MCFG_DEVICE_REPLACE("oki", OKIM6295, 1584000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(expro02_state::smissw) // 951127 PCB, 12 & 16 clocks
comad_noview2(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(smissw_map)
+MACHINE_CONFIG_END
- m_maincpu->set_addrmap(AS_PROGRAM, &expro02_state::smissw_map);
-}
-
-void expro02_state::fantsia2(machine_config &config)
-{
+MACHINE_CONFIG_START(expro02_state::fantsia2)
comad_noview2(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(fantsia2_map)
+MACHINE_CONFIG_END
- m_maincpu->set_addrmap(AS_PROGRAM, &expro02_state::fantsia2_map);
-}
-
-void expro02_state::galhustl(machine_config &config)
-{
+MACHINE_CONFIG_START(expro02_state::galhustl)
comad_noview2(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(galhustl_map)
+ MCFG_DEVICE_REPLACE("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- m_maincpu->set_addrmap(AS_PROGRAM, &expro02_state::galhustl_map);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(expro02_state, screen_update_zipzap)
+MACHINE_CONFIG_END
- okim6295_device &oki(OKIM6295(config.replace(), "oki", 1056000, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
- oki.set_addrmap(0, &expro02_state::oki_map);
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
-
- m_screen->set_screen_update(FUNC(expro02_state::screen_update_zipzap));
-}
-
-void expro02_state::zipzap(machine_config &config)
-{
+MACHINE_CONFIG_START(expro02_state::zipzap)
comad_noview2(config);
-
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &expro02_state::zipzap_map);
-
- okim6295_device &oki(OKIM6295(config.replace(), "oki", 1056000, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
- oki.set_addrmap(0, &expro02_state::oki_map);
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
-
- m_screen->set_screen_update(FUNC(expro02_state::screen_update_zipzap)); // doesn't work with original kaneko_spr implementation
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(zipzap_map)
+ MCFG_DEVICE_REPLACE("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+
+ MCFG_SCREEN_MODIFY("screen") // doesn't work with original kaneko_spr implementation
+ MCFG_SCREEN_UPDATE_DRIVER(expro02_state, screen_update_zipzap)
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/exterm.cpp b/src/mame/drivers/exterm.cpp
index fdc3b8337dc..0ce68b6395a 100644
--- a/src/mame/drivers/exterm.cpp
+++ b/src/mame/drivers/exterm.cpp
@@ -92,13 +92,13 @@ void exterm_state::machine_start()
WRITE16_MEMBER(exterm_state::host_data_w)
{
- m_slave->host_w(offset / 0x0010000, data);
+ m_slave->host_w(space,offset / 0x0010000, data, 0xffff);
}
READ16_MEMBER(exterm_state::host_data_r)
{
- return m_slave->host_r(offset / 0x0010000);
+ return m_slave->host_r(space,offset / 0x0010000, 0xffff);
}
@@ -197,7 +197,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(exterm_state::master_sound_nmi_callback)
WRITE8_MEMBER(exterm_state::ym2151_data_latch_w)
{
/* bit 7 of the sound control selects which port */
- m_ym2151->write(m_sound_control >> 7, data);
+ m_ym2151->write(space, m_sound_control >> 7, data);
}
@@ -253,6 +253,7 @@ void exterm_state::master_map(address_map &map)
map(0x01800000, 0x01807fff).mirror(0xfc7f8000).ram().w("palette", FUNC(palette_device::write16)).share("palette");
map(0x02800000, 0x02807fff).mirror(0xfc7f8000).ram().share("nvram");
map(0x03000000, 0x03ffffff).mirror(0xfc000000).rom().region("maincpu", 0);
+ map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
}
@@ -260,6 +261,7 @@ void exterm_state::slave_map(address_map &map)
{
map(0x00000000, 0x000fffff).mirror(0xfbf00000).ram().share("slave_videoram");
map(0x04000000, 0x047fffff).mirror(0xfb800000).ram();
+ map(0xc0000000, 0xc00001ff).rw(m_slave, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
}
@@ -369,8 +371,8 @@ INPUT_PORTS_END
*
*************************************/
-void exterm_state::exterm(machine_config &config)
-{
+MACHINE_CONFIG_START(exterm_state::exterm)
+
/* basic machine hardware */
TMS34010(config, m_maincpu, 40000000);
m_maincpu->set_addrmap(AS_PROGRAM, &exterm_state::master_map);
@@ -399,29 +401,30 @@ void exterm_state::exterm(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TIMER(config, m_nmi_timer).configure_generic(FUNC(exterm_state::master_sound_nmi_callback));
+ MCFG_TIMER_DRIVER_ADD(m_nmi_timer, exterm_state, master_sound_nmi_callback)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
PALETTE(config, "palette", FUNC(exterm_state::exterm_palette)).set_format(palette_device::xRGB_555, 2048+32768);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(40000000/8, 318, 0, 256, 264, 0, 240);
- screen.set_screen_update("maincpu", FUNC(tms34010_device::tms340x0_ind16));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(40000000/8, 318, 0, 256, 264, 0, 240)
+ MCFG_SCREEN_UPDATE_DEVICE("maincpu", tms34010_device, tms340x0_ind16)
+ MCFG_SCREEN_PALETTE("palette")
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- AD7528(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // ad7528j.e2
- AD7528(config, "dacvol", 0).add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT).add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); // ad7528j.e2
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dacvol", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("dac", AD7528, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // ad7528j.e2
+ MCFG_DEVICE_ADD("dacvol", AD7528, 0) // ad7528j.e2
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dacvol", 1.0, DAC_VREF_POS_INPUT)
YM2151(config, m_ym2151, 4000000).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/extrema.cpp b/src/mame/drivers/extrema.cpp
index 9ede6984f97..0229b3510af 100644
--- a/src/mame/drivers/extrema.cpp
+++ b/src/mame/drivers/extrema.cpp
@@ -51,13 +51,12 @@ static INPUT_PORTS_START( extrema )
INPUT_PORTS_END
-void extrema_state::extrema(machine_config &config)
-{
+MACHINE_CONFIG_START(extrema_state::extrema)
/* basic machine hardware */
- Z80(config, m_maincpu, 6000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &extrema_state::extrema_map);
- m_maincpu->set_addrmap(AS_IO, &extrema_state::extrema_portmap);
-}
+ MCFG_DEVICE_ADD("maincpu", Z80, 6000000)
+ MCFG_DEVICE_PROGRAM_MAP(extrema_map)
+ MCFG_DEVICE_IO_MAP(extrema_portmap)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/exzisus.cpp b/src/mame/drivers/exzisus.cpp
index 5b9d2da76b1..af75f3addec 100644
--- a/src/mame/drivers/exzisus.cpp
+++ b/src/mame/drivers/exzisus.cpp
@@ -229,36 +229,36 @@ GFXDECODE_END
/* All clocks are unconfirmed */
-void exzisus_state::exzisus(machine_config &config)
-{
+MACHINE_CONFIG_START(exzisus_state::exzisus)
+
/* basic machine hardware */
- z80_device &cpua(Z80(config, "cpua", 6000000));
- cpua.set_addrmap(AS_PROGRAM, &exzisus_state::cpua_map);
- cpua.set_vblank_int("screen", FUNC(exzisus_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("cpua", Z80, 6000000)
+ MCFG_DEVICE_PROGRAM_MAP(cpua_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", exzisus_state, irq0_line_hold)
- z80_device &cpub(Z80(config, "cpub", 6000000));
- cpub.set_addrmap(AS_PROGRAM, &exzisus_state::cpub_map);
- cpub.set_vblank_int("screen", FUNC(exzisus_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("cpub", Z80, 6000000)
+ MCFG_DEVICE_PROGRAM_MAP(cpub_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", exzisus_state, irq0_line_hold)
- Z80(config, m_cpuc, 6000000);
- m_cpuc->set_addrmap(AS_PROGRAM, &exzisus_state::cpuc_map);
- m_cpuc->set_vblank_int("screen", FUNC(exzisus_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("cpuc", Z80, 6000000)
+ MCFG_DEVICE_PROGRAM_MAP(cpuc_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", exzisus_state, irq0_line_hold)
- z80_device &audiocpu(Z80(config, "audiocpu", 4000000));
- audiocpu.set_addrmap(AS_PROGRAM, &exzisus_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
- config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
+ MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(exzisus_state::screen_update));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_exzisus);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(exzisus_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_exzisus)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 1024);
/* sound hardware */
@@ -272,7 +272,7 @@ void exzisus_state::exzisus(machine_config &config)
pc060ha_device &ciu(PC060HA(config, "ciu", 0));
ciu.set_master_tag("cpub");
ciu.set_slave_tag("audiocpu");
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/ez2d.cpp b/src/mame/drivers/ez2d.cpp
index 9e8fcb043d5..23a73cf93ab 100644
--- a/src/mame/drivers/ez2d.cpp
+++ b/src/mame/drivers/ez2d.cpp
@@ -87,20 +87,20 @@ void ez2d_state::machine_reset()
{
}
-void ez2d_state::ez2d(machine_config &config)
-{
+MACHINE_CONFIG_START(ez2d_state::ez2d)
+
/* basic machine hardware */
- PENTIUM3(config, m_maincpu, 100000000); // actually a Celeron at 533 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &ez2d_state::ez2d_map);
+ MCFG_DEVICE_ADD("maincpu", PENTIUM3, 100000000) // actually a Celeron at 533 MHz
+ MCFG_DEVICE_PROGRAM_MAP(ez2d_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(640, 480);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(ez2d_state::screen_update));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ez2d_state, screen_update)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/f-32.cpp b/src/mame/drivers/f-32.cpp
index 65ababc1634..ee1c14f0272 100644
--- a/src/mame/drivers/f-32.cpp
+++ b/src/mame/drivers/f-32.cpp
@@ -168,26 +168,26 @@ INPUT_PORTS_END
-void mosaicf2_state::mosaicf2(machine_config &config)
-{
+MACHINE_CONFIG_START(mosaicf2_state::mosaicf2)
+
/* basic machine hardware */
- E132XN(config, m_maincpu, XTAL(20'000'000)*4); /* 4x internal multiplier */
- m_maincpu->set_addrmap(AS_PROGRAM, &mosaicf2_state::common_map);
- m_maincpu->set_addrmap(AS_IO, &mosaicf2_state::mosaicf2_io);
- m_maincpu->set_vblank_int("screen", FUNC(mosaicf2_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", E132XN, XTAL(20'000'000)*4) /* 4x internal multiplier */
+ MCFG_DEVICE_PROGRAM_MAP(common_map)
+ MCFG_DEVICE_IO_MAP(mosaicf2_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mosaicf2_state, irq0_line_hold)
EEPROM_93C46_16BIT(config, "eeprom")
.erase_time(attotime::from_usec(1))
.write_time(attotime::from_usec(1));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(512, 512);
- screen.set_visarea(0, 319, 0, 223);
- screen.set_screen_update(FUNC(mosaicf2_state::screen_update_mosaicf2));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(512, 512)
+ MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 223)
+ MCFG_SCREEN_UPDATE_DRIVER(mosaicf2_state, screen_update_mosaicf2)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::RGB_555);
@@ -199,10 +199,10 @@ void mosaicf2_state::mosaicf2(machine_config &config)
ymsnd.add_route(0, "lspeaker", 1.0);
ymsnd.add_route(1, "rspeaker", 1.0);
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(14'318'181)/8, okim6295_device::PIN7_HIGH)); /* 1.7897725 MHz */
- oki.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(14'318'181)/8, okim6295_device::PIN7_HIGH) /* 1.7897725 MHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
@@ -247,26 +247,26 @@ void mosaicf2_state::royalpk2_io(address_map &map)
map(0x6a00, 0x6a03).portw("EEPROMOUT");
}
-void mosaicf2_state::royalpk2(machine_config &config)
-{
+MACHINE_CONFIG_START(mosaicf2_state::royalpk2)
+
/* basic machine hardware */
- GMS30C2132(config, m_maincpu, XTAL(50'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &mosaicf2_state::royalpk2_map);
- m_maincpu->set_addrmap(AS_IO, &mosaicf2_state::royalpk2_io);
- m_maincpu->set_vblank_int("screen", FUNC(mosaicf2_state::irq1_line_hold));
+ MCFG_DEVICE_ADD("maincpu", GMS30C2132, XTAL(50'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(royalpk2_map)
+ MCFG_DEVICE_IO_MAP(royalpk2_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mosaicf2_state, irq1_line_hold)
EEPROM_93C46_16BIT(config, "eeprom")
.erase_time(attotime::from_usec(1))
.write_time(attotime::from_usec(1));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(512, 512);
- screen.set_visarea(0, 319, 0, 223);
- screen.set_screen_update(FUNC(mosaicf2_state::screen_update_mosaicf2));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(512, 512)
+ MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 223)
+ MCFG_SCREEN_UPDATE_DRIVER(mosaicf2_state, screen_update_mosaicf2)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::RGB_555);
@@ -278,12 +278,12 @@ void mosaicf2_state::royalpk2(machine_config &config)
// ymsnd.add_route(0, "lspeaker", 1.0);
// ymsnd.add_route(1, "rspeaker", 1.0);
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(14'318'181)/8, okim6295_device::PIN7_HIGH)); /* 1.7897725 MHz */
- oki.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(14'318'181)/8, okim6295_device::PIN7_HIGH) /* 1.7897725 MHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
// there is a 16c550 for communication
-}
+MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/fantland.cpp b/src/mame/drivers/fantland.cpp
index 4299704624b..771a3c8a043 100644
--- a/src/mame/drivers/fantland.cpp
+++ b/src/mame/drivers/fantland.cpp
@@ -808,29 +808,29 @@ INTERRUPT_GEN_MEMBER(fantland_state::fantland_sound_irq)
device.execute().set_input_line_and_vector(0, HOLD_LINE, 0x80 / 4);
}
-void fantland_state::fantland(machine_config &config)
-{
+MACHINE_CONFIG_START(fantland_state::fantland)
+
/* basic machine hardware */
- I8086(config, m_maincpu, 8000000); // ?
- m_maincpu->set_addrmap(AS_PROGRAM, &fantland_state::fantland_map);
+ MCFG_DEVICE_ADD("maincpu", I8086, 8000000) // ?
+ MCFG_DEVICE_PROGRAM_MAP(fantland_map)
- I8088(config, m_audiocpu, 8000000); // ?
- m_audiocpu->set_addrmap(AS_PROGRAM, &fantland_state::fantland_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &fantland_state::fantland_sound_iomap);
- m_audiocpu->set_periodic_int(FUNC(fantland_state::fantland_sound_irq), attotime::from_hz(8000));
+ MCFG_DEVICE_ADD("audiocpu", I8088, 8000000) // ?
+ MCFG_DEVICE_PROGRAM_MAP(fantland_sound_map)
+ MCFG_DEVICE_IO_MAP(fantland_sound_iomap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(fantland_state, fantland_sound_irq, 8000)
// NMI when soundlatch is written
- config.m_minimum_quantum = attotime::from_hz(8000); // sound irq must feed the DAC at 8kHz
+ MCFG_QUANTUM_TIME(attotime::from_hz(8000)) // sound irq must feed the DAC at 8kHz
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(352,256);
- m_screen->set_visarea_full();
- m_screen->set_screen_update(FUNC(fantland_state::screen_update));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(fantland_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(352,256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(fantland_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, fantland_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_fantland);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 256);
@@ -842,11 +842,10 @@ void fantland_state::fantland(machine_config &config)
YM2151(config, "ymsnd", 3000000).add_route(0, "speaker", 0.35).add_route(1, "speaker", 0.35);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
WRITE_LINE_MEMBER(fantland_state::galaxygn_sound_irq)
@@ -854,26 +853,26 @@ WRITE_LINE_MEMBER(fantland_state::galaxygn_sound_irq)
m_audiocpu->set_input_line_and_vector(0, state ? ASSERT_LINE : CLEAR_LINE, 0x80/4);
}
-void fantland_state::galaxygn(machine_config &config)
-{
+MACHINE_CONFIG_START(fantland_state::galaxygn)
+
/* basic machine hardware */
- I8088(config, m_maincpu, XTAL(16'000'000) / 2); // AMD P8088-2
- m_maincpu->set_addrmap(AS_PROGRAM, &fantland_state::galaxygn_map);
+ MCFG_DEVICE_ADD("maincpu", I8088, XTAL(16'000'000) / 2) // AMD P8088-2
+ MCFG_DEVICE_PROGRAM_MAP(galaxygn_map)
- V20(config, m_audiocpu, XTAL(7'995'500)); // NEC D70108C-8
- m_audiocpu->set_addrmap(AS_PROGRAM, &fantland_state::fantland_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &fantland_state::galaxygn_sound_iomap);
+ MCFG_DEVICE_ADD("audiocpu", V20, XTAL(7'995'500)) // NEC D70108C-8
+ MCFG_DEVICE_PROGRAM_MAP(fantland_sound_map)
+ MCFG_DEVICE_IO_MAP(galaxygn_sound_iomap)
// IRQ by YM2151, NMI when soundlatch is written
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(352,256);
- m_screen->set_visarea_full();
- m_screen->set_screen_update(FUNC(fantland_state::screen_update));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(fantland_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(352,256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(fantland_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, fantland_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_fantland);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 256);
@@ -887,7 +886,7 @@ void fantland_state::galaxygn(machine_config &config)
ymsnd.irq_handler().set(FUNC(fantland_state::galaxygn_sound_irq));
ymsnd.add_route(0, "speaker", 1.0);
ymsnd.add_route(1, "speaker", 1.0);
-}
+MACHINE_CONFIG_END
void borntofi_state::machine_start()
@@ -935,10 +934,10 @@ void borntofi_state::machine_reset()
void borntofi_state::borntofi(machine_config &config)
{
/* basic machine hardware */
- V20(config, m_maincpu, 16000000/2); // D701080C-8 - NEC D70108C-8 V20 CPU, running at 8.000MHz [16/2]
+ V20(config, m_maincpu, 16000000/2); // D701080C-8 - NEC D70108C-8 V20 CPU, running at 8.000MHz [16/2]
m_maincpu->set_addrmap(AS_PROGRAM, &borntofi_state::main_map);
- I8088(config, m_audiocpu, 18432000/3); // 8088 - AMD P8088-2 CPU, running at 6.144MHz [18.432/3]
+ I8088(config, m_audiocpu, 18432000/3); // 8088 - AMD P8088-2 CPU, running at 6.144MHz [18.432/3]
m_audiocpu->set_addrmap(AS_PROGRAM, &borntofi_state::sound_map);
/* video hardware */
@@ -984,10 +983,10 @@ void borntofi_state::borntofi(machine_config &config)
void fantland_state::wheelrun(machine_config &config)
{
/* basic machine hardware */
- V20(config, m_maincpu, XTAL(18'000'000)/2); // D701080C-8 (V20)
+ V20(config, m_maincpu, XTAL(18'000'000)/2); // D701080C-8 (V20)
m_maincpu->set_addrmap(AS_PROGRAM, &fantland_state::wheelrun_map);
- Z80(config, m_audiocpu, XTAL(18'000'000)/2); // Z8400BB1 (Z80B)
+ Z80(config, m_audiocpu, XTAL(18'000'000)/2); // Z8400BB1 (Z80B)
m_audiocpu->set_addrmap(AS_PROGRAM, &fantland_state::wheelrun_sound_map);
// IRQ by YM3526, NMI when soundlatch is written
diff --git a/src/mame/drivers/fanucs15.cpp b/src/mame/drivers/fanucs15.cpp
index 823903768cd..211abbef1a6 100644
--- a/src/mame/drivers/fanucs15.cpp
+++ b/src/mame/drivers/fanucs15.cpp
@@ -370,24 +370,23 @@ void fanucs15_state::machine_reset()
{
}
-void fanucs15_state::fanucs15(machine_config &config)
-{
+MACHINE_CONFIG_START(fanucs15_state::fanucs15)
/* basic machine hardware */
- M68020(config, m_maincpu, XTAL(12'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &fanucs15_state::maincpu_mem);
- m_maincpu->set_disable();
+ MCFG_DEVICE_ADD("maincpu", M68020, XTAL(12'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(maincpu_mem)
+ MCFG_DEVICE_DISABLE()
- M68000(config, m_pmccpu, XTAL(12'000'000));
- m_pmccpu->set_addrmap(AS_PROGRAM, &fanucs15_state::pmccpu_mem);
- m_pmccpu->set_disable();
+ MCFG_DEVICE_ADD("pmccpu", M68000, XTAL(12'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(pmccpu_mem)
+ MCFG_DEVICE_DISABLE()
- M68000(config, m_gfxcpu, XTAL(10'000'000)); // wants bit 15 of 70500 to be set
- m_gfxcpu->set_addrmap(AS_PROGRAM, &fanucs15_state::gfxcpu_mem);
- m_gfxcpu->set_disable();
+ MCFG_DEVICE_ADD("gfxcpu", M68000, XTAL(10'000'000)) // wants bit 15 of 70500 to be set
+ MCFG_DEVICE_PROGRAM_MAP(gfxcpu_mem)
+ MCFG_DEVICE_DISABLE()
- I80286(config, m_convcpu, XTAL(8'000'000)); // wants 70500 to return 0x8000 (same as what gfxcpu looks for, basically)
- m_convcpu->set_addrmap(AS_PROGRAM, &fanucs15_state::convcpu_mem);
-}
+ MCFG_DEVICE_ADD("convcpu", I80286, XTAL(8'000'000)) // wants 70500 to return 0x8000 (same as what gfxcpu looks for, basically)
+ MCFG_DEVICE_PROGRAM_MAP(convcpu_mem)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( fanucs15 )
diff --git a/src/mame/drivers/fanucspmg.cpp b/src/mame/drivers/fanucspmg.cpp
index a898334a118..03640e93f63 100644
--- a/src/mame/drivers/fanucspmg.cpp
+++ b/src/mame/drivers/fanucspmg.cpp
@@ -956,7 +956,8 @@ void fanucspmg_state::fanucspmg(machine_config &config)
m_maincpu->esc_data_handler().set("i8087", FUNC(i8087_device::addr_w));
i8087_device &i8087(I8087(config, "i8087", XTAL(15'000'000)/3));
- i8087.set_space_86(m_maincpu, AS_PROGRAM);
+ i8087.set_addrmap(AS_PROGRAM, &fanucspmg_state::maincpu_mem);
+ i8087.set_data_width(16);
//i8087.irq().set_inputline("maincpu", INPUT_LINE_NMI); // TODO: presumably this is connected to the pic
i8087.busy().set_inputline("maincpu", INPUT_LINE_TEST);
diff --git a/src/mame/drivers/fastfred.cpp b/src/mame/drivers/fastfred.cpp
index 025d9027b1a..5a0cd8f3aed 100644
--- a/src/mame/drivers/fastfred.cpp
+++ b/src/mame/drivers/fastfred.cpp
@@ -632,15 +632,15 @@ INTERRUPT_GEN_MEMBER(fastfred_state::sound_timer_irq)
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
-void fastfred_state::fastfred(machine_config &config)
-{
+MACHINE_CONFIG_START(fastfred_state::fastfred)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'432'000)/4); /* 3.108 MHz; xtal from pcb pics, divider not verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &fastfred_state::fastfred_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'432'000)/4) /* 3.108 MHz; xtal from pcb pics, divider not verified */
+ MCFG_DEVICE_PROGRAM_MAP(fastfred_map)
- Z80(config, m_audiocpu, XTAL(12'432'000)/8); /* 1.554 MHz; xtal from pcb pics, divider not verified */
- m_audiocpu->set_addrmap(AS_PROGRAM, &fastfred_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(fastfred_state::sound_timer_irq), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(12'432'000)/8) /* 1.554 MHz; xtal from pcb pics, divider not verified */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(fastfred_state, sound_timer_irq, 4*60)
LS259(config, m_outlatch); // "Control Signal Latch" at D10
m_outlatch->q_out_cb<1>().set(FUNC(fastfred_state::nmi_mask_w));
@@ -654,14 +654,14 @@ void fastfred_state::fastfred(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); //CLOCK/16/60
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(fastfred_state::screen_update_fastfred));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(fastfred_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) //CLOCK/16/60
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(fastfred_state, screen_update_fastfred)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, fastfred_state, vblank_irq))
GFXDECODE(config, "gfxdecode", m_palette, gfx_fastfred);
@@ -676,31 +676,31 @@ void fastfred_state::fastfred(machine_config &config)
AY8910(config, "ay8910.1", XTAL(12'432'000)/8).add_route(ALL_OUTPUTS, "mono", 0.25); /* 1.554 MHz; xtal from pcb pics, divider not verified */
AY8910(config, "ay8910.2", XTAL(12'432'000)/8).add_route(ALL_OUTPUTS, "mono", 0.25); /* 1.554 MHz; xtal from pcb pics, divider not verified */
-}
+MACHINE_CONFIG_END
-void fastfred_state::jumpcoas(machine_config &config)
-{
+MACHINE_CONFIG_START(fastfred_state::jumpcoas)
fastfred(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &fastfred_state::jumpcoas_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(jumpcoas_map)
- config.device_remove("audiocpu");
+ MCFG_DEVICE_REMOVE("audiocpu")
/* video hardware */
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_jumpcoas);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_jumpcoas)
/* sound hardware */
- config.device_remove("soundlatch");
- config.device_remove("ay8910.2");
-}
+ MCFG_DEVICE_REMOVE("soundlatch")
+ MCFG_DEVICE_REMOVE("ay8910.2")
+MACHINE_CONFIG_END
-void fastfred_state::imago(machine_config &config)
-{
+MACHINE_CONFIG_START(fastfred_state::imago)
fastfred(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &fastfred_state::imago_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(imago_map)
m_outlatch->q_out_cb<0>().set_nop(); // writes 1 when level starts, 0 when game over
m_outlatch->q_out_cb<4>().set(FUNC(fastfred_state::imago_dma_irq_w));
@@ -710,11 +710,12 @@ void fastfred_state::imago(machine_config &config)
/* video hardware */
m_palette->set_entries(256+64+2); // 256 for characters, 64 for the stars and 2 for the web
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_imago);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_imago)
MCFG_VIDEO_START_OVERRIDE(fastfred_state,imago)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(fastfred_state::screen_update_imago));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(fastfred_state, screen_update_imago)
+MACHINE_CONFIG_END
#undef CLOCK
@@ -916,29 +917,6 @@ ROM_START( boggy84b )
ROM_LOAD( "b12e", 0x0200, 0x0100, CRC(52b7f445) SHA1(6395ac705a35e602a355cbf700025ff917e89b37) )
ROM_END
-// main PCB is marked: "MC9003" and "MADE IN ITALY" on component side
-// main PCB is marked: "MADE IN ITALY" on solder side
-// ROMs PCB is marked: "MG25157" on component side
-ROM_START( boggy84b2 )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "boggy84-1.bin", 0x0000, 0x1000, CRC(97235e3a) SHA1(f493efd03331416a392cab7d73e39029d7e8098c) )
- ROM_LOAD( "boggy84-2.bin", 0x1000, 0x1000, CRC(282f8830) SHA1(10c2c3d3b14fbe44ef4ad81607c61361fa2f25ae) )
- ROM_LOAD( "boggy84-3.bin", 0x2000, 0x1000, CRC(b49c835a) SHA1(c6782643ff44e6cf972f0d2fc47ecc0a220c0e26) )
- ROM_LOAD( "boggy84-4.bin", 0x3000, 0x1000, CRC(1f98ce07) SHA1(4145785ea55db3940ff4d3834ab736825e5c8712) )
- ROM_LOAD( "boggy84-5.bin", 0x4000, 0x1000, CRC(7b3fd5fb) SHA1(630e7553fc76e59448cedca5dcb34dae3b08d9ba) )
- ROM_LOAD( "boggy84-6.bin", 0x5000, 0x1000, CRC(a4083cc2) SHA1(a266ff0935288678d6e0286ac67ea17b9b42371a) )
- ROM_LOAD( "boggy84-7.bin", 0x6000, 0x1000, CRC(9da29eb9) SHA1(d8802b9b67f9993aa26b8fe7941fc662a6719172) )
- ROM_LOAD( "boggy84-8.bin", 0x7000, 0x1000, NO_DUMP ) // broken, unreadable
-
- ROM_REGION( 0x3000, "gfx1", 0 )
- ROM_LOAD( "boggy84-11.7a", 0x0000, 0x1000, CRC(f4238c68) SHA1(a14cedb126e49e40bab6f46870af64c04ccb01f4) )
- ROM_LOAD( "boggy84-10.9a", 0x1000, 0x1000, CRC(1979d9a6) SHA1(9da387179e6f09ba113219689d3aa039e87bd5e1) )
- ROM_LOAD( "boggy84-9.bin", 0x2000, 0x0800, CRC(de3d8f06) SHA1(0ccc261fe15f63d5bd000b3a7008e294b78837a2) )
-
- ROM_REGION( 0x20, "proms", 0 )
- ROM_LOAD( "6331.10f", 0x00, 0x20, CRC(24652bc4) SHA1(d89575f3749c75dc963317fe451ffeffd9856e4d) )
-ROM_END
-
ROM_START( redrobin )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "redro01f.16d", 0x0000, 0x1000, CRC(0788ce10) SHA1(32084714fe005d0489ab1a7e6684a49bd103ce5e) )
@@ -1101,8 +1079,7 @@ GAME( 1983, jumpcoas, 0, jumpcoas, jumpcoas, fastfred_state, init_jumpco
GAME( 1983, jumpcoasa, jumpcoas, jumpcoas, jumpcoas, fastfred_state, init_jumpcoas, ROT90, "Kaneko", "Jump Coaster", MACHINE_SUPPORTS_SAVE )
GAME( 1983, jumpcoast, jumpcoas, jumpcoas, jumpcoas, fastfred_state, init_jumpcoas, ROT90, "Kaneko (Taito license)", "Jump Coaster (Taito)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, boggy84, 0, jumpcoas, boggy84, fastfred_state, init_boggy84, ROT90, "Kaneko", "Boggy '84", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, boggy84b, boggy84, jumpcoas, boggy84, fastfred_state, init_boggy84b, ROT90, "bootleg (Eddie's Games)", "Boggy '84 (bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, boggy84b2, boggy84, jumpcoas, boggy84, fastfred_state, init_boggy84, ROT90, "bootleg", "Boggy '84 (bootleg, set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // one program ROM isn't dumped
+GAME( 1983, boggy84b, boggy84, jumpcoas, boggy84, fastfred_state, init_boggy84b, ROT90, "bootleg (Eddie's Games)", "Boggy '84 (bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, redrobin, 0, fastfred, redrobin, fastfred_state, init_flyboyb, ROT90, "Elettronolo", "Red Robin", MACHINE_SUPPORTS_SAVE )
GAME( 1984, imago, 0, imago, imago, fastfred_state, init_imago, ROT90, "Acom", "Imago (cocktail set)", 0 )
GAME( 1983, imagoa, imago, imago, imagoa, fastfred_state, init_imago, ROT90, "Acom", "Imago (no cocktail set)", 0 )
diff --git a/src/mame/drivers/fb01.cpp b/src/mame/drivers/fb01.cpp
index 21707c452cc..0cae2c6467a 100644
--- a/src/mame/drivers/fb01.cpp
+++ b/src/mame/drivers/fb01.cpp
@@ -179,43 +179,43 @@ void fb01_state::fb01_palette(palette_device &palette) const
}
-void fb01_state::fb01(machine_config &config)
-{
+MACHINE_CONFIG_START(fb01_state::fb01)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &fb01_state::fb01_mem);
- m_maincpu->set_addrmap(AS_IO, &fb01_state::fb01_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(fb01_mem)
+ MCFG_DEVICE_IO_MAP(fb01_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(6*16, 9);
- screen.set_visarea_full();
- screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(6*16, 9)
+ MCFG_SCREEN_VISIBLE_AREA(0, 6*16-1, 0, 9-1)
+ MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
config.set_default_layout(layout_fb01);
PALETTE(config, "palette", FUNC(fb01_state::fb01_palette), 2);
- hd44780_device &hd44780(HD44780(config, "hd44780", 0));
- hd44780.set_lcd_size(2, 8); // 2x8 displayed as 1x16
- hd44780.set_pixel_update_cb(FUNC(fb01_state::fb01_pixel_update), this);
+ MCFG_HD44780_ADD("hd44780")
+ MCFG_HD44780_LCD_SIZE(2, 8) // 2x8 displayed as 1x16
+ MCFG_HD44780_PIXEL_UPDATE_CB(fb01_state,fb01_pixel_update)
I8251(config, m_upd71051, XTAL(4'000'000));
m_upd71051->rxrdy_handler().set(FUNC(fb01_state::upd71051_rxrdy_w));
m_upd71051->txrdy_handler().set(FUNC(fb01_state::upd71051_txrdy_w));
m_upd71051->txd_handler().set("mdout", FUNC(midi_port_device::write_txd));
- clock_device &usart_clock(CLOCK(config, "usart_clock", XTAL(4'000'000) / 8)); // 500KHz
- usart_clock.signal_handler().set(FUNC(fb01_state::write_usart_clock));
+ MCFG_DEVICE_ADD("usart_clock", CLOCK, XTAL(4'000'000) / 8) // 500KHz
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, fb01_state, write_usart_clock))
- MIDI_PORT(config, "mdin", midiin_slot, "midiin").rxd_handler().set(FUNC(fb01_state::midi_in));
+ MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
+ MCFG_MIDI_RX_HANDLER(WRITELINE(*this, fb01_state, midi_in))
- MIDI_PORT(config, "mdout", midiout_slot, "midiout");
+ MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout")
- MIDI_PORT(config, "mdthru", midiout_slot, "midiout");
+ MCFG_MIDI_PORT_ADD("mdthru", midiout_slot, "midiout")
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
@@ -225,7 +225,7 @@ void fb01_state::fb01(machine_config &config)
ym2164.add_route(1, "rspeaker", 1.00);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/fc100.cpp b/src/mame/drivers/fc100.cpp
index 41283265e66..2f4ad646d3c 100644
--- a/src/mame/drivers/fc100.cpp
+++ b/src/mame/drivers/fc100.cpp
@@ -472,7 +472,7 @@ void fc100_state::machine_start()
m_inv = 0;
if (m_cart->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000, 0x6fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000, 0x6fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
save_item(NAME(m_ag));
save_item(NAME(m_gm2));
@@ -515,28 +515,26 @@ void fc100_state::init_fc100()
membank("bankr")->configure_entry(1, &ram[0]);
}
-void fc100_state::fc100(machine_config &config)
-{
+MACHINE_CONFIG_START(fc100_state::fc100)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(7'159'090)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &fc100_state::fc100_mem);
- m_maincpu->set_addrmap(AS_IO, &fc100_state::fc100_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(7'159'090)/2)
+ MCFG_DEVICE_PROGRAM_MAP(fc100_mem)
+ MCFG_DEVICE_IO_MAP(fc100_io)
/* video hardware */
- M5C6847P1(config, m_vdg, XTAL(7'159'090)/3); // Clock not verified
- m_vdg->set_screen("screen");
- m_vdg->input_callback().set(FUNC(fc100_state::mc6847_videoram_r));
- m_vdg->set_get_char_rom(FUNC(fc100_state::get_char_rom));
- m_vdg->set_get_fixed_mode(m5c6847p1_device::MODE_INTEXT);
+ MCFG_DEVICE_ADD("vdg", M5C6847P1, XTAL(7'159'090)/3) // Clock not verified
+ MCFG_MC6847_INPUT_CALLBACK(READ8(*this, fc100_state, mc6847_videoram_r))
+ MCFG_MC6847_CHARROM_CALLBACK(fc100_state, get_char_rom)
+ MCFG_MC6847_FIXED_MODE(m5c6847p1_device::MODE_INTEXT)
// other lines not connected
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- GFXDECODE(config, "gfxdecode", "f4palette", gfx_fc100);
+ MCFG_SCREEN_MC6847_NTSC_ADD("screen", "vdg")
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "f4palette", gfx_fc100)
PALETTE(config, "f4palette", palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.05);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05);
ay8910_device &psg(AY8910(config, "psg", XTAL(7'159'090)/3/2)); /* AY-3-8910 - clock not verified */
psg.port_a_read_callback().set_ioport("JOY0");
psg.port_b_read_callback().set_ioport("JOY1");
@@ -545,9 +543,9 @@ void fc100_state::fc100(machine_config &config)
psg.add_route(ALL_OUTPUTS, "mono", 1.50);
/* Devices */
- CASSETTE(config, m_cass);
- m_cass->set_formats(fc100_cassette_formats);
- m_cass->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(fc100_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
I8251(config, m_uart, 0);
m_uart->txd_handler().set(FUNC(fc100_state::txdata_callback));
@@ -555,21 +553,18 @@ void fc100_state::fc100(machine_config &config)
uart_clock.signal_handler().set(m_uart, FUNC(i8251_device::write_txc));
uart_clock.signal_handler().append(m_uart, FUNC(i8251_device::write_rxc));
- TIMER(config, "timer_c").configure_periodic(FUNC(fc100_state::timer_c), attotime::from_hz(4800)); // cass write
- TIMER(config, "timer_p").configure_periodic(FUNC(fc100_state::timer_p), attotime::from_hz(40000)); // cass read
- TIMER(config, "timer_k").configure_periodic(FUNC(fc100_state::timer_k), attotime::from_hz(300)); // keyb scan
-
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fc100_cart");
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_c", fc100_state, timer_c, attotime::from_hz(4800)) // cass write
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_p", fc100_state, timer_p, attotime::from_hz(40000)) // cass read
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_k", fc100_state, timer_k, attotime::from_hz(300)) // keyb scan
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit4));
- m_centronics->busy_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit5));
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "fc100_cart")
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
-
- INPUT_BUFFER(config, "cent_status_in");
-}
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit4))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit5))
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+ MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( fc100 )
diff --git a/src/mame/drivers/fccpu20.cpp b/src/mame/drivers/fccpu20.cpp
index df443f4841f..16cec979f3a 100644
--- a/src/mame/drivers/fccpu20.cpp
+++ b/src/mame/drivers/fccpu20.cpp
@@ -154,47 +154,40 @@ static void cpu21yb_vme_cards(device_slot_interface &device)
}
/* Machine configurations */
-void cpu20_state::cpu20(machine_config &config)
-{
- VME(config, "vme", 0);
- VME_SLOT(config, "slot1", cpu20_vme_cards, "fccpu20", 1, "vme");
-}
-
-void cpu20_state::cpu21s(machine_config &config)
-{
- VME(config, "vme", 0);
- VME_SLOT(config, "slot1", cpu21s_vme_cards, "fccpu21s", 1, "vme");
-}
-
-void cpu20_state::cpu21(machine_config &config)
-{
- VME(config, "vme", 0);
- VME_SLOT(config, "slot1", cpu21_vme_cards, "fccpu21", 1, "vme");
-}
-
-void cpu20_state::cpu21a(machine_config &config)
-{
- VME(config, "vme", 0);
- VME_SLOT(config, "slot1", cpu21a_vme_cards, "fccpu21a", 1, "vme");
-}
-
-void cpu20_state::cpu21ya(machine_config &config)
-{
- VME(config, "vme", 0);
- VME_SLOT(config, "slot1", cpu21ya_vme_cards, "fccpu21ya", 1, "vme");
-}
-
-void cpu20_state::cpu21b(machine_config &config)
-{
- VME(config, "vme", 0);
- VME_SLOT(config, "slot1", cpu21b_vme_cards, "fccpu21b", 1, "vme");
-}
-
-void cpu20_state::cpu21yb(machine_config &config)
-{
- VME(config, "vme", 0);
- VME_SLOT(config, "slot1", cpu21yb_vme_cards, "fccpu21yb", 1, "vme");
-}
+MACHINE_CONFIG_START(cpu20_state::cpu20)
+ MCFG_VME_DEVICE_ADD("vme")
+ MCFG_VME_SLOT_ADD ("vme", 1, cpu20_vme_cards, "fccpu20")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(cpu20_state::cpu21s)
+ MCFG_VME_DEVICE_ADD("vme")
+ MCFG_VME_SLOT_ADD ("vme", 1, cpu21s_vme_cards, "fccpu21s")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(cpu20_state::cpu21)
+ MCFG_VME_DEVICE_ADD("vme")
+ MCFG_VME_SLOT_ADD ("vme", 1, cpu21_vme_cards, "fccpu21")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(cpu20_state::cpu21a)
+ MCFG_VME_DEVICE_ADD("vme")
+ MCFG_VME_SLOT_ADD ("vme", 1, cpu21a_vme_cards, "fccpu21a")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(cpu20_state::cpu21ya)
+ MCFG_VME_DEVICE_ADD("vme")
+ MCFG_VME_SLOT_ADD ("vme", 1, cpu21ya_vme_cards, "fccpu21ya")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(cpu20_state::cpu21b)
+ MCFG_VME_DEVICE_ADD("vme")
+ MCFG_VME_SLOT_ADD ("vme", 1, cpu21b_vme_cards, "fccpu21b")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(cpu20_state::cpu21yb)
+ MCFG_VME_DEVICE_ADD("vme")
+ MCFG_VME_SLOT_ADD ("vme", 1, cpu21yb_vme_cards, "fccpu21yb")
+MACHINE_CONFIG_END
/* ROM configurations */
ROM_START(fccpu20sbc) ROM_END
diff --git a/src/mame/drivers/fccpu30.cpp b/src/mame/drivers/fccpu30.cpp
index 9b11636e296..5c56648e275 100644
--- a/src/mame/drivers/fccpu30.cpp
+++ b/src/mame/drivers/fccpu30.cpp
@@ -658,16 +658,15 @@ static void fccpu30_vme_cards(device_slot_interface &device)
/*
* Machine configuration
*/
-void cpu30_state::cpu30(machine_config &config)
-{
+MACHINE_CONFIG_START(cpu30_state::cpu30)
/* basic machine hardware */
- M68030(config, m_maincpu, XTAL(25'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &cpu30_state::cpu30_mem);
- m_maincpu->set_irq_acknowledge_callback("fga002", FUNC(fga002_device::iack));
+ MCFG_DEVICE_ADD("maincpu", M68030, XTAL(25'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(cpu30_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("fga002", fga002_device, iack)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- VME(config, "vme", 0);
- VME_SLOT(config, "slot1", fccpu30_vme_cards, nullptr, 1, "vme");
+ MCFG_VME_DEVICE_ADD("vme")
+ MCFG_VME_SLOT_ADD("vme", 1, fccpu30_vme_cards, nullptr)
/* Terminal Port config */
/* Force CPU30 series of boards has up to four serial ports, p1-p4, the FGA boot uses p4 as console and subsequent
firmware uses p1 as console and in an operating system environment there may be user login shells on the other.
@@ -750,67 +749,67 @@ void cpu30_state::cpu30(machine_config &config)
// m_pit2->timer_irq_callback().set(m_fga002, FUNC(fga002_device::lirq3_w)); // The timer interrupt seems to silence the terminal interrupt, needs invectigation
/* FGA-002, Force Gate Array */
- FGA002(config, m_fga002, 0);
- m_fga002->out_int().set(FUNC(cpu30_state::fga_irq_callback));
- m_fga002->liack4().set("duscc", FUNC(duscc_device::iack));
- m_fga002->liack5().set("duscc2", FUNC(duscc_device::iack));
+ fga002_device &fga002(FGA002(config, m_fga002, 0));
+ fga002.out_int().set(FUNC(cpu30_state::fga_irq_callback));
+ fga002.liack4().set("duscc", FUNC(duscc_device::iack));
+ fga002.liack5().set("duscc2", FUNC(duscc_device::iack));
// RTC
- RTC72423(config, m_rtc, XTAL(32'768)); // Fake crystal value, the 72423 uses it own internal crystal
- m_rtc->out_int_handler().set(m_fga002, FUNC(fga002_device::lirq0_w));
+ MCFG_DEVICE_ADD("rtc", RTC72423, XTAL(32'768)) // Fake crystal value, the 72423 uses it own internal crystal
+ MCFG_MSM6242_OUT_INT_HANDLER(WRITELINE("fga002", fga002_device, lirq0_w))
// dual ported ram
RAM(config, m_ram).set_default_size("4M").set_extra_options("8M, 16M, 32M");
-}
+MACHINE_CONFIG_END
/* SYS68K/CPU-30X Part No.1 01300: 16.7 MHz 68030 based CPU board with 68882 FPCP, DMAC, 1 Mbyte Dual Ported RAM capacity and VMEPROM. */
-void cpu30_state::cpu30x(machine_config &config)
-{
+MACHINE_CONFIG_START(cpu30_state::cpu30x)
cpu30(config);
- m_maincpu->set_clock(XTAL(16'777'216)); /* 16.7 MHz from description, crystal needs verification */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(XTAL(16'777'216)) /* 16.7 MHz from description, crystal needs verification */
-// config.device_remove("");
+// MCFG_DEVICE_REMOVE("")
// dual ported ram
m_ram->set_default_size("1M").set_extra_options("1M, 2M, 4M");
-}
+MACHINE_CONFIG_END
/* SYS68K/CPU-30XA Part No.1 01301: 20.0 MHz 68030 based CPU board with 68882 FPCP, DMAC, 1 Mbyte Dual Ported RAM capacity and VMEPROM. Documentation included.*/
-void cpu30_state::cpu30xa(machine_config &config)
-{
+MACHINE_CONFIG_START(cpu30_state::cpu30xa)
cpu30x(config);
- m_maincpu->set_clock(XTAL(20'000'000)); /* 20.0 MHz from description, crystal needs verification */
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(XTAL(20'000'000)) /* 20.0 MHz from description, crystal needs verification */
+MACHINE_CONFIG_END
/* SYS68K/CPU-30ZA Part No.1 01302: 20.0 MHz 68030 based CPU board with 68882 FPCP, DMAC, 4 Mbyte Dual Ported RAM capacity and VMEPROM. Documentation included.*/
-void cpu30_state::cpu30za(machine_config &config)
-{
+MACHINE_CONFIG_START(cpu30_state::cpu30za)
cpu30xa(config);
- m_maincpu->set_clock(XTAL(20'000'000)); /* 20.0 MHz from description, crystal needs verification */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(XTAL(20'000'000)) /* 20.0 MHz from description, crystal needs verification */
// dual ported ram
m_ram->set_default_size("4M").set_extra_options("1M, 2M, 4M");
-}
+MACHINE_CONFIG_END
/* SYS68K/CPU-30ZBE 68030/68882 CPU, 25 MHz, 4 Mbyte shared DRAM, 4 Mbyte Flash, SCSI, Ethernet, Floppy disk, 4 serial I/O ports, 32-bit VMEbus interface */
-void cpu30_state::cpu30zbe(machine_config &config)
-{
+MACHINE_CONFIG_START(cpu30_state::cpu30zbe)
cpu30za(config);
- m_maincpu->set_clock(XTAL(25'000'000)); /* 25.0 MHz from description, crystal needs verification */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(XTAL(25'000'000)) /* 25.0 MHz from description, crystal needs verification */
// dual ported ram
m_ram->set_default_size("4M").set_extra_options("256K, 512K, 1M, 2M, 4M, 8M, 16M, 32M");
-}
+MACHINE_CONFIG_END
/* SYS68K/CPU-33 */
-void cpu30_state::cpu33(machine_config &config)
-{
+MACHINE_CONFIG_START(cpu30_state::cpu33)
cpu30zbe(config);
- m_maincpu->set_clock(XTAL(25'000'000)); /* 25.0 MHz from description, crystal needs verification */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(XTAL(25'000'000)) /* 25.0 MHz from description, crystal needs verification */
// dual ported ram
m_ram->set_default_size("4M").set_extra_options("256K, 512K, 1M, 2M, 4M, 8M, 16M, 32M");
-}
+MACHINE_CONFIG_END
/* SYS68K/CPU-30BE/8 68030/68882 CPU, 25 MHz, 8 Mbyte shared DRAM, 4 Mbyte Flash, SCSI, Ethernet, Floppy disk, 4 serial I/O ports, 32-bit VMEbus interface, VMEPROM firmware*/
void cpu30_state::cpu30be8(machine_config &config)
@@ -833,10 +832,10 @@ void cpu30_state::cpu30lite4(machine_config &config)
{
cpu30zbe(config);
// Enable these when added to main config
-// config.device_remove("fpu");
-// config.device_remove("scsi");
-// config.device_remove("eth");
-// config.device_remove("fdc");
+// MCFG_DEVICE_REMOVE("fpu")
+// MCFG_DEVICE_REMOVE("scsi")
+// MCFG_DEVICE_REMOVE("eth")
+// MCFG_DEVICE_REMOVE("fdc")
// dual ported ram
m_ram->set_default_size("4M").set_extra_options("256K, 512K, 1M, 2M, 4M, 8M, 16M, 32M");
}
diff --git a/src/mame/drivers/fcombat.cpp b/src/mame/drivers/fcombat.cpp
index 6273f47083f..7a0e8954007 100644
--- a/src/mame/drivers/fcombat.cpp
+++ b/src/mame/drivers/fcombat.cpp
@@ -288,20 +288,20 @@ void fcombat_state::machine_reset()
m_ty = 0;
}
-void fcombat_state::fcombat(machine_config &config)
-{
+MACHINE_CONFIG_START(fcombat_state::fcombat)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 10000000/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &fcombat_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 10000000/3)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- z80_device &audiocpu(Z80(config, "audiocpu", 10000000/3));
- audiocpu.set_addrmap(AS_PROGRAM, &fcombat_state::audio_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 10000000/3)
+ MCFG_DEVICE_PROGRAM_MAP(audio_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(FCOMBAT_PIXEL_CLOCK, FCOMBAT_HTOTAL, FCOMBAT_HBEND, FCOMBAT_HBSTART, FCOMBAT_VTOTAL, FCOMBAT_VBEND, FCOMBAT_VBSTART);
- screen.set_screen_update(FUNC(fcombat_state::screen_update_fcombat));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(FCOMBAT_PIXEL_CLOCK, FCOMBAT_HTOTAL, FCOMBAT_HBEND, FCOMBAT_HBSTART, FCOMBAT_VTOTAL, FCOMBAT_VBEND, FCOMBAT_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(fcombat_state, screen_update_fcombat)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_fcombat);
PALETTE(config, m_palette, FUNC(fcombat_state::fcombat_palette), 256*3, 32);
@@ -316,7 +316,7 @@ void fcombat_state::fcombat(machine_config &config)
YM2149(config, "ay2", 1500000).add_route(ALL_OUTPUTS, "mono", 0.12);
YM2149(config, "ay3", 1500000).add_route(ALL_OUTPUTS, "mono", 0.12);
-}
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/fcrash.cpp b/src/mame/drivers/fcrash.cpp
index 0bc74f47002..ea196c71bf7 100644
--- a/src/mame/drivers/fcrash.cpp
+++ b/src/mame/drivers/fcrash.cpp
@@ -68,6 +68,8 @@ dinopic2: no sound, one bad graphics ROM. Copying 8.bin from dinopic fixes it.
fcrash, kodb: old sprites show on next screen. Patch used.
+knightsb: sprites are entangled with the front layer.
+
punipic, punipic2: no sound. Problems in Central Park. Patches used.
punipic3: same as punipic, and doors are missing.
@@ -249,25 +251,13 @@ WRITE16_MEMBER(cps_state::knightsb_layer_w)
case 0x0000:
case 0x001f:
case 0x00ff:
- case 0x07ff:
data = 0x12f2;
break;
case 0x2000:
- data = 0x06c0;
- break;
- case 0x5800:
- case 0x5f00:
- data = 0x12c0;
- break;
- case 0x80ff:
- case 0x87ff:
- data = 0x1380;
+ data = 0x06f2;
break;
case 0xa000:
- data = 0x24c0;
- break;
- case 0xd800:
- data = 0x1380;
+ data = 0x24d0;
break;
default:
printf ("Unknown control word = %X\n",data);
@@ -320,8 +310,6 @@ WRITE16_MEMBER(cps_state::mtwinsb_layer_w)
WRITE16_MEMBER(cps_state::punipic_layer_w)
{
- m_cps_a_regs[0x08/2] = 0;
-
switch (offset)
{
case 0x00:
@@ -360,12 +348,14 @@ WRITE16_MEMBER(cps_state::punipic_layer_w)
break;
}
+ m_cps_a_regs[0x08 / 2] = m_mainram[0xdb90 / 2]; // fixes split objects
break;
case 0x07:
// unknown
break;
default:
logerror("%s: Unknown layer cmd %X %X\n",machine().describe_context(),offset<<1,data);
+
}
}
@@ -481,34 +471,6 @@ WRITE16_MEMBER(cps_state::sf2mdta_layer_w)
m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */
break;
case 0x0a:
- m_cps_a_regs[0x10 / 2] = 0xffce; /* scroll 2x */
- break;
- case 0x0b:
- m_cps_a_regs[0x16 / 2] = data; /* scroll 3y */
- break;
- case 0x26:
- m_cps_b_regs[m_layer_enable_reg / 2] = data;
- }
-}
-
-WRITE16_MEMBER(cps_state::sf2b_layer_w)
-{
- switch (offset)
- {
- case 0x06:
- m_cps_a_regs[0x0c / 2] = data + 0xffbe; /* scroll 1x */
- break;
- case 0x07:
- m_cps_a_regs[0x0e / 2] = data; /* scroll 1y */
- break;
- case 0x08:
- m_cps_a_regs[0x14 / 2] = data + 0xffce; /* scroll 3x */
- break;
- case 0x09:
- m_cps_a_regs[0x12 / 2] = data; /* scroll 2y */
- m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */
- break;
- case 0x0a:
m_cps_a_regs[0x10 / 2] = data + 0xffce; /* scroll 2x */
break;
case 0x0b:
@@ -516,9 +478,6 @@ WRITE16_MEMBER(cps_state::sf2b_layer_w)
break;
case 0x26:
m_cps_b_regs[m_layer_enable_reg / 2] = data;
- break;
- default:
- printf("%X:%X ",offset,data);
}
}
@@ -753,7 +712,7 @@ void cps_state::knightsb_map(address_map &map)
map(0x900000, 0x93ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
map(0x980000, 0x98002f).w(FUNC(cps_state::knightsb_layer_w));
map(0x990000, 0x990001).nopw(); // same as 880000
- map(0xff0000, 0xffffff).ram().share("mainram");
+ map(0xff0000, 0xffffff).ram();
}
void cps_state::dinopic_map(address_map &map)
@@ -773,7 +732,7 @@ void cps_state::dinopic_map(address_map &map)
map(0xf1c000, 0xf1c001).portr("IN2"); /* Player 3 controls (later games) */
map(0xf1c004, 0xf1c005).w(FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */
map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT");
- map(0xff0000, 0xffffff).ram().share("mainram");
+ map(0xff0000, 0xffffff).ram();
}
void cps_state::fcrash_map(address_map &map)
@@ -787,7 +746,7 @@ void cps_state::fcrash_map(address_map &map)
map(0x880008, 0x88000f).r(FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */
map(0x890000, 0x890001).nopw(); // palette related?
map(0x900000, 0x92ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
- map(0xff0000, 0xffffff).ram().share("mainram");
+ map(0xff0000, 0xffffff).ram();
}
void cps_state::mtwinsb_map(address_map &map)
@@ -838,7 +797,7 @@ void cps_state::sf2m1_map(address_map &map)
map(0x900000, 0x93ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
map(0x980000, 0x9801ff).w(FUNC(cps_state::sf2m1_layer_w));
map(0x990000, 0x990001).nopw(); // same as 880000
- map(0xff0000, 0xffffff).ram().share("mainram");
+ map(0xff0000, 0xffffff).ram();
}
void cps_state::sf2mdt_map(address_map &map)
@@ -854,13 +813,13 @@ void cps_state::sf2mdt_map(address_map &map)
map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */
map(0x800140, 0x80017f).ram().share("cps_b_regs"); /* CPS-B custom */
map(0x900000, 0x92ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
- map(0xff0000, 0xffffff).ram().share("mainram");
+ map(0xff0000, 0xffffff).ram();
}
void cps_state::sf2b_map(address_map &map)
{
map(0x000000, 0x3fffff).rom();
- map(0x708100, 0x7081ff).w(FUNC(cps_state::sf2b_layer_w));
+ map(0x708100, 0x7081ff).w(FUNC(cps_state::sf2mdta_layer_w));
map(0x70c000, 0x70c001).portr("IN1");
map(0x70c008, 0x70c009).portr("IN2");
map(0x70c018, 0x70c01f).r(FUNC(cps_state::cps1_hack_dsw_r));
@@ -870,7 +829,7 @@ void cps_state::sf2b_map(address_map &map)
map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */
map(0x800140, 0x80017f).rw(FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); /* CPS-B custom */
map(0x900000, 0x92ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
- map(0xff0000, 0xffffff).ram().share("mainram");
+ map(0xff0000, 0xffffff).ram();
}
void cps_state::sgyxz_map(address_map &map)
@@ -887,7 +846,7 @@ void cps_state::sgyxz_map(address_map &map)
map(0x900000, 0x92ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
map(0xf1c004, 0xf1c005).w(FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */
map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT");
- map(0xff0000, 0xffffff).ram().share("mainram");
+ map(0xff0000, 0xffffff).ram();
}
void cps_state::wofabl_map(address_map &map)
@@ -904,7 +863,7 @@ void cps_state::wofabl_map(address_map &map)
map(0x900000, 0x92ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
map(0xf1c004, 0xf1c005).w(FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */
map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT");
- map(0xff0000, 0xffffff).ram().share("mainram");
+ map(0xff0000, 0xffffff).ram();
}
void cps_state::slampic_map(address_map &map)
@@ -925,7 +884,7 @@ void cps_state::slampic_map(address_map &map)
map(0xf1c004, 0xf1c005).w(FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */
map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT");
map(0xf1f000, 0xf1ffff).noprw(); // writes 0 to range, then reads F1F6EC
- map(0xff0000, 0xffffff).ram().share("mainram");
+ map(0xff0000, 0xffffff).ram();
}
void cps_state::sound_map(address_map &map)
@@ -1676,11 +1635,11 @@ MACHINE_START_MEMBER(cps_state, knightsb)
membank("bank1")->configure_entries(0, 16, &ROM[0x10000], 0x4000);
- m_layer_enable_reg = 0x28;
- m_layer_mask_reg[0] = 0x26;
- m_layer_mask_reg[1] = 0x24;
- m_layer_mask_reg[2] = 0x22;
- m_layer_mask_reg[3] = 0x20;
+ m_layer_enable_reg = 0x30;
+ m_layer_mask_reg[0] = 0x28;
+ m_layer_mask_reg[1] = 0x2a;
+ m_layer_mask_reg[2] = 0x2c;
+ m_layer_mask_reg[3] = 0x2e;
m_layer_scroll1x_offset = 0x3e; //text
m_layer_scroll2x_offset = 0x3c; //bricks around scores
m_layer_scroll3x_offset = 0x40; //hill with sword going in
@@ -1716,95 +1675,95 @@ MACHINE_RESET_MEMBER(cps_state,fcrash)
m_sample_select2 = 0;
}
-void cps_state::fcrash(machine_config &config)
-{
+MACHINE_CONFIG_START(cps_state::fcrash)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 10000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::fcrash_map);
- m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
+ MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
+ MCFG_DEVICE_PROGRAM_MAP(fcrash_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
- Z80(config, m_audiocpu, 24000000/6); /* ? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 24000000/6) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
MCFG_MACHINE_START_OVERRIDE(cps_state,fcrash)
MCFG_MACHINE_RESET_OVERRIDE(cps_state,fcrash)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1 );
- m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
- m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
- PALETTE(config, m_palette).set_entries(4096);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
+ MCFG_PALETTE_ADD("palette", 4096)
// sound hardware
SPEAKER(config, "mono").front_center();
GENERIC_LATCH_8(config, m_soundlatch);
- ym2203_device &ym1(YM2203(config, "ym1", 24000000/6)); /* ? */
- ym1.add_route(0, "mono", 0.10);
- ym1.add_route(1, "mono", 0.10);
- ym1.add_route(2, "mono", 0.10);
- ym1.add_route(3, "mono", 1.0);
-
- ym2203_device &ym2(YM2203(config, "ym2", 24000000/6)); /* ? */
- ym2.add_route(0, "mono", 0.10);
- ym2.add_route(1, "mono", 0.10);
- ym2.add_route(2, "mono", 0.10);
- ym2.add_route(3, "mono", 1.0);
-
- MSM5205(config, m_msm_1, 24000000/64); /* ? */
- m_msm_1->vck_legacy_callback().set(FUNC(cps_state::m5205_int1)); /* interrupt function */
- m_msm_1->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
- m_msm_1->add_route(ALL_OUTPUTS, "mono", 0.25);
-
- MSM5205(config, m_msm_2, 24000000/64); /* ? */
- m_msm_2->vck_legacy_callback().set(FUNC(cps_state::m5205_int2)); /* interrupt function */
- m_msm_2->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
- m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-void cps_state::cawingbl(machine_config &config)
-{
+ MCFG_DEVICE_ADD("ym1", YM2203, 24000000/6) /* ? */
+ MCFG_SOUND_ROUTE(0, "mono", 0.10)
+ MCFG_SOUND_ROUTE(1, "mono", 0.10)
+ MCFG_SOUND_ROUTE(2, "mono", 0.10)
+ MCFG_SOUND_ROUTE(3, "mono", 1.0)
+
+ MCFG_DEVICE_ADD("ym2", YM2203, 24000000/6) /* ? */
+ MCFG_SOUND_ROUTE(0, "mono", 0.10)
+ MCFG_SOUND_ROUTE(1, "mono", 0.10)
+ MCFG_SOUND_ROUTE(2, "mono", 0.10)
+ MCFG_SOUND_ROUTE(3, "mono", 1.0)
+
+ MCFG_DEVICE_ADD("msm1", MSM5205, 24000000/64) /* ? */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, cps_state, m5205_int1)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+
+ MCFG_DEVICE_ADD("msm2", MSM5205, 24000000/64) /* ? */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, cps_state, m5205_int2)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(cps_state::cawingbl)
fcrash(config);
/* basic machine hardware */
- m_maincpu->set_vblank_int("screen", FUNC(cps_state::irq6_line_hold)); /* needed to write to scroll values */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, irq6_line_hold) /* needed to write to scroll values */
MCFG_MACHINE_START_OVERRIDE(cps_state, cawingbl)
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(cps_state::kodb)
-void cps_state::kodb(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, 10000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::fcrash_map);
- m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
+ MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
+ MCFG_DEVICE_PROGRAM_MAP(fcrash_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
- Z80(config, m_audiocpu, 3579545);
- m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::kodb_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 3579545)
+ MCFG_DEVICE_PROGRAM_MAP(kodb_sound_map)
MCFG_MACHINE_START_OVERRIDE(cps_state,kodb)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
- m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
- PALETTE(config, m_palette).set_entries(0xc00);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -1817,35 +1776,35 @@ void cps_state::kodb(machine_config &config)
ym2151.add_route(1, "mono", 0.35);
/* CPS PPU is fed by a 16mhz clock,pin 117 outputs a 4mhz clock which is divided by 4 using 2 74ls74 */
- OKIM6295(config, m_oki, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH); // pin 7 can be changed by the game code, see f006 on z80
- m_oki->add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(cps_state::mtwinsb)
-void cps_state::mtwinsb(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, 10000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::mtwinsb_map);
- m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
+ MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
+ MCFG_DEVICE_PROGRAM_MAP(mtwinsb_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
- Z80(config, m_audiocpu, 3579545);
- m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sgyxz_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 3579545)
+ MCFG_DEVICE_PROGRAM_MAP(sgyxz_sound_map)
MCFG_MACHINE_START_OVERRIDE(cps_state, mtwinsb)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
- m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
- PALETTE(config, m_palette).set_entries(0xc00);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -1858,35 +1817,35 @@ void cps_state::mtwinsb(machine_config &config)
ym2151.add_route(0, "mono", 0.35);
ym2151.add_route(1, "mono", 0.35);
- OKIM6295(config, m_oki, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH);
- m_oki->add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(cps_state::sf2mdt)
-void cps_state::sf2mdt(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::sf2mdt_map);
- m_maincpu->set_vblank_int("screen", FUNC(cps_state::irq4_line_hold)); /* triggers the sprite ram and scroll writes */
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(sf2mdt_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, irq4_line_hold) /* triggers the sprite ram and scroll writes */
- Z80(config, m_audiocpu, 3579545);
- m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sf2mdt_z80map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 3579545)
+ MCFG_DEVICE_PROGRAM_MAP(sf2mdt_z80map)
MCFG_MACHINE_START_OVERRIDE(cps_state, sf2mdt)
MCFG_MACHINE_RESET_OVERRIDE(cps_state,fcrash)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
- m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
- PALETTE(config, m_palette).set_entries(4096);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
+ MCFG_PALETTE_ADD("palette", 4096)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -1896,48 +1855,48 @@ void cps_state::sf2mdt(machine_config &config)
YM2151(config, "2151", XTAL(3'579'545)).add_route(0, "mono", 0.35).add_route(1, "mono", 0.35);
/* has 2x MSM5205 instead of OKI6295 */
- MSM5205(config, m_msm_1, 24000000/64); /* ? */
- m_msm_1->vck_legacy_callback().set(FUNC(cps_state::m5205_int1)); /* interrupt function */
- m_msm_1->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
- m_msm_1->add_route(ALL_OUTPUTS, "mono", 0.25);
-
- MSM5205(config, m_msm_2, 24000000/64); /* ? */
- m_msm_2->vck_legacy_callback().set(FUNC(cps_state::m5205_int2)); /* interrupt function */
- m_msm_2->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
- m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-void cps_state::sf2b(machine_config &config)
-{
+ MCFG_DEVICE_ADD("msm1", MSM5205, 24000000/64) /* ? */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, cps_state, m5205_int1)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+
+ MCFG_DEVICE_ADD("msm2", MSM5205, 24000000/64) /* ? */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, cps_state, m5205_int2)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(cps_state::sf2b)
sf2mdt(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::sf2b_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sf2b_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(cps_state::knightsb)
-void cps_state::knightsb(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, 24000000 / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::knightsb_map);
- m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
+ MCFG_DEVICE_ADD("maincpu", M68000, 24000000 / 2)
+ MCFG_DEVICE_PROGRAM_MAP(knightsb_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
- Z80(config, m_audiocpu, 29821000 / 8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::knightsb_z80map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 29821000 / 8)
+ MCFG_DEVICE_PROGRAM_MAP(knightsb_z80map)
MCFG_MACHINE_START_OVERRIDE(cps_state, knightsb)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
- m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
- PALETTE(config, m_palette).set_entries(0xc00);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -1950,16 +1909,16 @@ void cps_state::knightsb(machine_config &config)
ym2151.add_route(1, "mono", 0.35);
/* has 2x MSM5205 instead of OKI6295 */
- MSM5205(config, m_msm_1, 24000000/64); /* ? */
- m_msm_1->vck_legacy_callback().set(FUNC(cps_state::m5205_int1)); /* interrupt function */
- m_msm_1->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
- m_msm_1->add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("msm1", MSM5205, 24000000/64) /* ? */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, cps_state, m5205_int1)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- MSM5205(config, m_msm_2, 24000000/64); /* ? */
- m_msm_2->vck_legacy_callback().set(FUNC(cps_state::m5205_int2)); /* interrupt function */
- m_msm_2->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
- m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+ MCFG_DEVICE_ADD("msm2", MSM5205, 24000000/64) /* ? */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, cps_state, m5205_int2)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
#define CODE_SIZE 0x400000
@@ -2294,40 +2253,42 @@ MACHINE_START_MEMBER(cps_state, dinopic)
m_sprite_x_offset = 0;
}
-void cps_state::dinopic(machine_config &config)
-{
+MACHINE_CONFIG_START(cps_state::dinopic)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::dinopic_map);
- m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(dinopic_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
- //PIC16C57(config, m_audiocpu, 12000000).set_disable(); /* no valid dumps .. */
+ //MCFG_DEVICE_ADD("audiocpu", PIC16C57, 12000000)
+ //MCFG_DEVICE_DISABLE() /* no valid dumps .. */
MCFG_MACHINE_START_OVERRIDE(cps_state, dinopic)
EEPROM_93C46_8BIT(config, "eeprom");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1 );
- m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
- m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
- PALETTE(config, m_palette).set_entries(0xc00);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
/* sound hardware */
SPEAKER(config, "mono").front_center();
GENERIC_LATCH_8(config, m_soundlatch);
- OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
/*
@@ -2483,30 +2444,29 @@ void cps_state::init_mtwinsb()
// sound cpu is (239 V 249521 VC5006 KABUKI DL-030P-110V) - recycled Kabuki Z80 from genuine Capcom HW?
// 3x8 dsws
-void cps_state::sgyxz(machine_config &config)
-{
+MACHINE_CONFIG_START(cps_state::sgyxz)
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::sgyxz_map);
- m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(sgyxz_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
- Z80(config, m_audiocpu, 3579545);
- m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sgyxz_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 3579545)
+ MCFG_DEVICE_PROGRAM_MAP(sgyxz_sound_map)
MCFG_MACHINE_START_OVERRIDE(cps_state,sgyxz)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1 );
- m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
- m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
- m_screen->set_palette(m_palette);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
- PALETTE(config, m_palette).set_entries(0xc00);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
EEPROM_93C46_8BIT(config, "eeprom");
@@ -2522,8 +2482,9 @@ void cps_state::sgyxz(machine_config &config)
ym2151.add_route(1, "mono", 0.35);
/* CPS PPU is fed by a 16mhz clock,pin 117 outputs a 4mhz clock which is divided by 4 using 2 74ls74 */
- OKIM6295(config, m_oki, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30); // pin 7 can be changed by the game code, see f006 on z80
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
ROM_START( sgyxz )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 Code */
@@ -2558,12 +2519,12 @@ ROM_START( sgyxz )
ROM_LOAD( "sgyxz_snd1.bin", 0x00000, 0x40000, CRC(c15ac0f2) SHA1(8d9e5519d9820e4ac4f70555088c80e64d052c9d) )
ROM_END
-void cps_state::wofabl(machine_config &config)
-{
+MACHINE_CONFIG_START(cps_state::wofabl)
sgyxz(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::wofabl_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(wofabl_map)
+MACHINE_CONFIG_END
ROM_START( wofabl )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 Code */
@@ -2606,40 +2567,42 @@ MACHINE_START_MEMBER(cps_state, punipic)
m_sprite_x_offset = 0;
}
-void cps_state::punipic(machine_config &config)
-{
+MACHINE_CONFIG_START(cps_state::punipic)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::punipic_map);
- m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(punipic_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
- //PIC16C57(config, m_audiocpu, 12000000).set_disable(); /* no valid dumps .. */
+ //MCFG_DEVICE_ADD("audiocpu", PIC16C57, 12000000)
+ //MCFG_DEVICE_DISABLE() /* no valid dumps .. */
MCFG_MACHINE_START_OVERRIDE(cps_state, punipic)
EEPROM_93C46_8BIT(config, "eeprom");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1 );
- m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
- m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
- PALETTE(config, m_palette).set_entries(0xc00);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
/* sound hardware */
SPEAKER(config, "mono").front_center();
GENERIC_LATCH_8(config, m_soundlatch);
- OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
/* bootleg with pic, like dinopic / dinopic2 */
ROM_START( punipic )
@@ -2798,28 +2761,28 @@ void cps_state::init_punipic3()
// ************************************************************************* SF2M1
-void cps_state::sf2m1(machine_config &config)
-{
+MACHINE_CONFIG_START(cps_state::sf2m1)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(12'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::sf2m1_map);
- m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(12'000'000) )
+ MCFG_DEVICE_PROGRAM_MAP(sf2m1_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
- Z80(config, m_audiocpu, XTAL(3'579'545));
- m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sgyxz_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545))
+ MCFG_DEVICE_PROGRAM_MAP(sgyxz_sound_map)
MCFG_MACHINE_START_OVERRIDE(cps_state,sf2m1)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(CPS_PIXEL_CLOCK, CPS_HTOTAL, CPS_HBEND, CPS_HBSTART, CPS_VTOTAL, CPS_VBEND, CPS_VBSTART);
- m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
- m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(CPS_PIXEL_CLOCK, CPS_HTOTAL, CPS_HBEND, CPS_HBSTART, CPS_VTOTAL, CPS_VBEND, CPS_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
- PALETTE(config, m_palette).set_entries(0xc00);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -2829,8 +2792,9 @@ void cps_state::sf2m1(machine_config &config)
ym2151.irq_handler().set_inputline(m_audiocpu, 0);
ym2151.add_route(0, "mono", 0.35);
ym2151.add_route(1, "mono", 0.35);
- OKIM6295(config, m_oki, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
ROM_START( sf2m1 )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
@@ -3173,38 +3137,40 @@ MACHINE_START_MEMBER(cps_state, slampic)
m_sprite_x_offset = 0;
}
-void cps_state::slampic(machine_config &config)
-{
+MACHINE_CONFIG_START(cps_state::slampic)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::slampic_map);
- m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(slampic_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
- //PIC16C57(config, m_audiocpu, 12000000).set_disable(); /* no valid dumps .. */
+ //MCFG_DEVICE_ADD("audiocpu", PIC16C57, 12000000)
+ //MCFG_DEVICE_DISABLE() /* no valid dumps .. */
MCFG_MACHINE_START_OVERRIDE(cps_state, slampic)
EEPROM_93C46_8BIT(config, "eeprom");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1 );
- m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
- m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
- PALETTE(config, m_palette).set_entries(0xc00);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
ROM_START( slampic )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
@@ -3272,31 +3238,31 @@ void cps_state::varthb_map(address_map &map)
map(0xff0000, 0xffffff).ram().share("mainram");
}
-void cps_state::varthb(machine_config &config)
-{
+MACHINE_CONFIG_START(cps_state::varthb)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::varthb_map);
- m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(varthb_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
- Z80(config, m_audiocpu, 3579545);
- m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sgyxz_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 3579545)
+ MCFG_DEVICE_PROGRAM_MAP(sgyxz_sound_map)
MCFG_MACHINE_START_OVERRIDE(cps_state,cps1)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1 );
- m_screen->set_screen_update(FUNC(cps_state::screen_update_cps1));
- m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
- PALETTE(config, m_palette).set_entries(0xc00);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -3309,8 +3275,9 @@ void cps_state::varthb(machine_config &config)
ym2151.add_route(0, "mono", 0.35);
ym2151.add_route(1, "mono", 0.35);
- OKIM6295(config, m_oki, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
ROM_START( varthb )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
@@ -3360,12 +3327,12 @@ GAME( 1990, ffightbla, ffight, fcrash, fcrash, cps_state, init_cps1,
GAME( 1991, kodb, kod, kodb, kodb, cps_state, init_kodb, ROT0, "bootleg (Playmark)", "The King of Dragons (bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 910731 "ETC"
-GAME( 1991, knightsb, knights, knightsb, knights, cps_state, init_dinopic, ROT0, "bootleg", "Knights of the Round (bootleg)", MACHINE_SUPPORTS_SAVE ) // 911127 - based on World version
+GAME( 1991, knightsb, knights, knightsb, knights, cps_state, init_dinopic, ROT0, "bootleg", "Knights of the Round (bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 911127 - based on World version
GAME( 1993, mtwinsb, mtwins, mtwinsb, mtwins, cps_state, init_mtwinsb, ROT0, "David Inc. (bootleg)", "Twins (Mega Twins bootleg)", MACHINE_SUPPORTS_SAVE ) // based on World version
-GAME( 1993, punipic, punisher, punipic, punisher, cps_state, init_punipic, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930422 ETC
-GAME( 1993, punipic2, punisher, punipic, punisher, cps_state, init_punipic, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930422 ETC
+GAME( 1993, punipic, punisher, punipic, punisher, cps_state, init_punipic, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930422 ETC
+GAME( 1993, punipic2, punisher, punipic, punisher, cps_state, init_punipic, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930422 ETC
GAME( 1993, punipic3, punisher, punipic, punisher, cps_state, init_punipic3, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930422 ETC
GAME( 1992, sf2m1, sf2ce, sf2m1, sf2, cps_state, init_sf2m1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M1, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
diff --git a/src/mame/drivers/feversoc.cpp b/src/mame/drivers/feversoc.cpp
index 552d2d81df5..db22fe0ba17 100644
--- a/src/mame/drivers/feversoc.cpp
+++ b/src/mame/drivers/feversoc.cpp
@@ -286,28 +286,29 @@ void feversoc_state::machine_start()
m_lamps.resolve();
}
-void feversoc_state::feversoc(machine_config &config)
-{
+MACHINE_CONFIG_START(feversoc_state::feversoc)
+
/* basic machine hardware */
- SH2(config, m_maincpu, MASTER_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &feversoc_state::feversoc_map);
+ MCFG_DEVICE_ADD("maincpu",SH2,MASTER_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(feversoc_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 0*8, 30*8-1); //dynamic resolution?
- screen.set_screen_update(FUNC(feversoc_state::screen_update_feversoc));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(feversoc_state::feversoc_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1) //dynamic resolution?
+ MCFG_SCREEN_UPDATE_DRIVER(feversoc_state, screen_update_feversoc)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, feversoc_state, feversoc_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_feversoc);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x1000);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, MASTER_CLOCK/16, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 0.6); //pin 7 & frequency not verified (clock should be 28,6363 / n)
+ MCFG_DEVICE_ADD("oki", OKIM6295, MASTER_CLOCK/16, okim6295_device::PIN7_LOW) //pin 7 & frequency not verified (clock should be 28,6363 / n)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.6)
EEPROM_93C56_16BIT(config, "eeprom");
@@ -315,8 +316,8 @@ void feversoc_state::feversoc(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(60), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
-}
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(60), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/fgoal.cpp b/src/mame/drivers/fgoal.cpp
index e4014e1458c..8aee26d04be 100644
--- a/src/mame/drivers/fgoal.cpp
+++ b/src/mame/drivers/fgoal.cpp
@@ -359,28 +359,28 @@ void fgoal_state::machine_reset()
m_prev_coin = 0;
}
-void fgoal_state::fgoal(machine_config &config)
-{
+MACHINE_CONFIG_START(fgoal_state::fgoal)
+
/* basic machine hardware */
- M6800(config, m_maincpu, 10065000 / 10); /* ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &fgoal_state::cpu_map);
+ MCFG_DEVICE_ADD("maincpu", M6800, 10065000 / 10) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(cpu_map)
/* add shifter */
MB14241(config, "mb14241");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(256, 263);
- m_screen->set_visarea(0, 255, 16, 255);
- m_screen->set_screen_update(FUNC(fgoal_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(256, 263)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 255)
+ MCFG_SCREEN_UPDATE_DRIVER(fgoal_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_fgoal);
PALETTE(config, m_palette, FUNC(fgoal_state::fgoal_palette), 128 + 16 + 1);
/* sound hardware */
-}
+MACHINE_CONFIG_END
ROM_START( fgoal )
diff --git a/src/mame/drivers/fidel6502.cpp b/src/mame/drivers/fidel6502.cpp
new file mode 100644
index 00000000000..6209284c169
--- /dev/null
+++ b/src/mame/drivers/fidel6502.cpp
@@ -0,0 +1,2902 @@
+// license:BSD-3-Clause
+// copyright-holders:Kevin Horton,Jonathan Gevaryahu,Sandro Ronco,hap
+// thanks-to:Berger,yoyo_chessboard
+/******************************************************************************
+
+ Fidelity Electronics 6502 based board driver
+
+ NOTE: MAME doesn't include a generalized implementation for boardpieces yet,
+ greatly affecting user playability of emulated electronic board games.
+ As workaround for the chess games, use an external chess GUI on the side,
+ such as Arena(in editmode).
+
+ TODO:
+ - Source organization is a big mess. Each machine family could be in its own
+ sub driverclass, and separate files.
+ - verify cpu speed and rom labels where unknown
+ - improve EAS/SC12/etc CPU divider? it seems a little bit slower than the real machine.
+ Currently, a dummy timer workaround is needed, or it's much worse.
+ Is the problem here is due to timing of CPU addressbus changes? We can only 'sense'
+ the addressbus at read or write accesses.
+ - granits gives error beeps at start, need to press clear to play
+ - finish fphantom emulation
+
+******************************************************************************
+
+Champion Sensory Chess Challenger (CSC)
+---------------------------------------
+
+Memory map:
+-----------
+0000-07FF: 2K of RAM
+0800-0FFF: 1K of RAM (note: mirrored twice)
+1000-17FF: PIA 0 (display, TSI speech chip)
+1800-1FFF: PIA 1 (keypad, LEDs)
+2000-3FFF: 101-64019 ROM (also used on the regular sensory chess challenger)
+4000-7FFF: mirror of 0000-3FFF
+8000-9FFF: not used
+A000-BFFF: 101-1025A03 ROM
+C000-DFFF: 101-1025A02 ROM
+E000-FDFF: 101-1025A01 ROM
+FE00-FFFF: 512 byte 74S474 PROM
+
+CPU is a 6502 running at 1.95MHz (3.9MHz resonator, divided by 2)
+
+NMI is not used.
+IRQ is connected to a 600Hz oscillator (38.4KHz divided by 64).
+Reset is connected to a power-on reset circuit.
+
+PIA 0:
+------
+PA0 - 7seg segments E, TSI A0
+PA1 - 7seg segments D, TSI A1
+PA2 - 7seg segments C, TSI A2
+PA3 - 7seg segments H, TSI A3
+PA4 - 7seg segments G, TSI A4
+PA5 - 7seg segments F, TSI A5
+PA6 - 7seg segments B
+PA7 - 7seg segments A
+
+PB0 - A12 on speech ROM (if used... not used on this model, ROM is 4K)
+PB1 - START line on TSI
+PB2 - white wire
+PB3 - BUSY line from TSI
+PB4 - hi/lo TSI speaker volume
+PB5 - button row 9
+PB6 - selection jumper (resistor to 5V)
+PB7 - selection jumper (resistor to ground)
+
+CA1 - NC
+CA2 - violet wire
+
+CB1 - NC
+CB2 - NC (connects to pin 14 of soldered connector)
+
+PIA 1:
+------
+PA0 - button row 1
+PA1 - button row 2
+PA2 - button row 3
+PA3 - button row 4
+PA4 - button row 5
+PA5 - button row 6
+PA6 - 7442 selector bit 0
+PA7 - 7442 selector bit 1
+
+PB0 - LED row 1
+PB1 - LED row 2
+PB2 - LED row 3
+PB3 - LED row 4
+PB4 - LED row 5
+PB5 - LED row 6
+PB6 - LED row 7
+PB7 - LED row 8
+
+CA1 - button row 7
+CA2 - selector bit 3
+
+CB1 - button row 8
+CB2 - selector bit 2
+
+Selector: (attached to PIA 1, outputs 1 of 10 pins low. 7442)
+---------
+output # (selected turns this column on, and all others off)
+0 - LED column A, button column A, 7seg digit 1
+1 - LED column B, button column B, 7seg digit 2
+2 - LED column C, button column C, 7seg digit 3
+3 - LED column D, button column D, 7seg digit 4
+4 - LED column E, button column E
+5 - LED column F, button column F
+6 - LED column G, button column G
+7 - LED column H, button column H
+8 - button column I
+9 - Tone line (toggle to make a tone in the buzzer)
+
+The rows/columns are indicated on the game board:
+
+ ABCDEFGH I
+--------------
+| | 8
+| | 7
+| | 6
+| | 5
+| | 4
+| | 3
+| | 2
+| | 1
+--------------
+
+The "lone LED" is above the control column.
+column I is the "control column" on the right for starting a new game, etc.
+
+The upper 6 buttons are connected as such:
+
+column A - speak
+column B - RV
+column C - TM
+column D - LV
+column E - DM
+column F - ST
+
+these 6 buttons use row 9 (connects to PIA 0)
+
+LED display:
+------------
+43 21 (digit number)
+-----
+88:88
+
+The LED display is four 7 segment digits. normal ABCDEFG lettering is used for segments.
+
+The upper dot is connected to digit 3 common
+The lower dot is connected to digit 4 common
+The lone LED is connected to digit 1 common
+
+All three of the above are called "segment H".
+
+
+******************************************************************************
+
+Super 9 Sensory Chess Challenger (SU9/DS9)
+This is basically the Fidelity Elite A/S program on CSC hardware.
+Model DS9(Deluxe) has a 5MHz XTAL, but is otherwise same.
+---------------------------------
+
+R6502AP CPU, 1.95MHz(3.9MHz resonator)
+2 RAM chips, assume 4KB
+2*8KB ROM + 1*2KB ROM
+built-in CB9 module
+
+See CSC description above for more information.
+
+
+******************************************************************************
+
+Reversi Sensory Challenger (RSC)
+The 1st version came out in 1980, a program revision was released in 1981.
+Another distinction is the board color and layout, the 1981 version is green.
+---------------------------------
+
+8*(8+1) buttons, 8*8+1 LEDs
+1KB RAM(2*2114), 4KB ROM
+MOS MPS 6502B CPU, frequency unknown
+MOS MPS 6520 PIA, I/O is nearly same as CSC's PIA 1
+PCB label 510-1035A01
+
+
+******************************************************************************
+
+Elite A/S Challenger (EAS)
+This came out in 1982. 2 program updates were released in 1983 and 1984,
+named Budapest and Glasgow, places where Fidelity won chess computer matches.
+A/S stands for auto sensory, it's the 1st Fidelity board with magnet sensors.
+---------------------------------
+
+8*8 magnet sensors, 11 buttons, 8*(8+1) LEDs + 4*7seg LEDs
+R65C02P4 or R6502BP CPU, default frequency 3MHz*
+4KB RAM (2*HM6116), 24KB ROM
+TSI S14001A + speech ROM
+I/O with 8255 PPI and bunch of TTL
+module slot and printer port
+PCB label 510-1071A01
+
+*It was advertised as 3.2, 3.6, or 4MHz, with unofficial modifications up to 8MHz.
+PCB photos show only a 3MHz XTAL.
+
+A condensator keeps RAM contents alive for a few hours when powered off.
+
+Elite Avant Garde (models 6081,6088,6089) is on the same hardware.
+
+Prestige Challenger (PC) hardware is very similar. They stripped the 8255 PPI,
+and added more RAM(7*TMM2016P). Some were released at 3.6MHz instead of 4MHz,
+perhaps due to hardware instability?
+
+
+******************************************************************************
+
+Sensory Chess Challenger "9" (SC9)
+3 versions were available, the newest "B" version was 2MHz and included the Budapest program.
+The Playmatic S was only released in Germany, it's basically a 'deluxe' version of SC9
+with magnet sensors and came with CB9 and CB16.
+---------------------------------
+
+8*(8+1) buttons, 8*8+1 LEDs
+36-pin edge connector, assume same as SC12
+2KB RAM(TMM2016P), 2*8KB ROM(HN48364P)
+R6502-13, 1.4MHz from resonator, another pcb with the same resonator was measured 1.49MHz*
+PCB label 510-1046C01 2-1-82
+
+*: 2 other boards were measured 1.60MHz and 1.88MHz(newest serial). Online references
+suggest 3 versions of SC9(C01) total: 1.5MHz, 1.6MHz, and 1.9MHz.
+
+I/O is via TTL, not further documented here
+
+
+******************************************************************************
+
+Sensory 12 Chess Challenger (SC12-B, 6086)
+4 versions are known to exist: A,B,C, and X, with increasing CPU speed.
+---------------------------------
+RE information from netlist by Berger
+
+8*(8+1) buttons, 8+8+2 red LEDs
+DIN 41524C printer port
+36-pin edge connector
+CPU is a R65C02P4, running at 4MHz*
+
+*By default, the CPU frequency is lowered on A13/A14 access, with a factory-set jumper:
+/2 on model SC12(1.5MHz), /4 on model 6086(1MHz)
+
+NE556 dual-timer IC:
+- timer#1, one-shot at power-on, to CPU _RESET
+- timer#2: R1=82K+50K pot at 26K, R2=1K, C=22nF, to CPU _IRQ: ~596Hz, active low=15.25us
+
+Memory map:
+-----------
+0000-0FFF: 4K RAM (2016 * 2)
+2000-5FFF: cartridge
+6000-7FFF: control(W)
+8000-9FFF: 8K ROM SSS SCM23C65E4
+A000-BFFF: keypad(R)
+C000-DFFF: 4K ROM TI TMS2732AJL-45
+E000-FFFF: 8K ROM Toshiba TMM2764D-2
+
+control: (74LS377)
+--------
+Q0-Q3: 7442 A0-A3
+Q4: enable printer port pin 1 input
+Q5: printer port pin 5 output
+Q6,Q7: LEDs common anode
+
+7442 0-8: input mux and LEDs cathode
+7442 9: buzzer
+
+The keypad is read through a 74HC251, where S0,1,2 is from CPU A0,1,2, Y is connected to CPU D7.
+If control Q4 is set, printer data can be read from I0.
+
+
+******************************************************************************
+
+Voice Excellence (model 6092)
+----------------
+PCB 1: 510.1117A02, appears to be identical to other "Excellence" boards
+CPU: GTE G65SC102P-3, 32 KB PRG ROM: AMI 101-1080A01(IC5), 8192x8 SRAM SRM2264C10(IC6)
+2 rows of LEDs on the side: 1*8 green, 1*8 red
+
+PCB 2: 510.1117A01
+Speech: TSI S14001A, 32 KB ROM: AMI 101-1081A01(IC2)
+Dip Switches set ROM A13 and ROM A14, on the side of the board
+
+ROM A12 is tied to S14001A's A11 (yuck)
+ROM A11 is however tied to the CPU's XYZ
+
+0000_07FF - Spanish 1/4
+0800_0FFF - Spanish 3/4
+1000_17FF - Spanish 2/4
+1800_1FFF - Spanish 4/4
+
+2000_27FF - French 1/4
+2800_2FFF - French 3/4
+3000_3FFF - French 2/4
+3800_3FFF - French 4/4
+
+4000_47FF - German 1/4
+4800_4FFF - German 3/4
+5000_57FF - German 2/4
+5800_5FFF - German 4/4
+
+6000_67FF - English 1/2
+6800_6FFF - Bridge Challenger 1/2
+7000_77FF - English 2/2
+7800_7FFF - Bridge Challenger 2/2
+
+------------------
+RE info by hap, based on PCB photos
+
+Memory map:
+-----------
+0000-3FFF: 8K RAM (SRM2264)
+4000-7FFF: control (R/W)
+8000-FFFF: 32K ROM (M27256 compatible)
+
+control (W):
+------------
+CPU A0-A2 to 3*74259, CPU Dx to D (_C unused)
+
+CPU D0:
+- Q4,Q5: led commons
+- Q6,Q7,Q2,Q1: 7seg panel digit select
+- Q0-Q3: 7442 A0-A3
+ + 0-7: led data
+ + 0-8: keypad mux
+ + 9: buzzer out
+
+CPU D1: (model 6093)
+- Q0-Q7: 7seg data
+
+CPU D2: (model 6092)
+- Q0-Q5: TSI C0-C5
+- Q6: TSI START pin
+- Q7: TSI ROM A11
+
+A11 from TSI is tied to TSI ROM A12(!)
+TSI ROM A13,A14 are hardwired to the 2 language switches.
+Sound comes from the Audio out pin, digital out pins are N/C.
+
+control (R):
+------------
+CPU A0-A2 to 2*74251, CPU Dx to output
+
+CPU D7 to Y:
+- D0-D7: keypad row data
+
+CPU D6 to W: (model 6092, tied to VCC otherwise)
+- D0,D1: language switches
+- D2-D6: VCC
+- D7: TSI BUSY
+
+------------------
+One interesting clone of The Excellence is the Computerchess Playmate-2. It was
+produced in 1989 by SPS(Bulgaria) and RRR(Riga Radio Factory). The chess program
+ROM is identical to Excellence EP12. All internal circuitry is the same, the only
+difference is the capacitor driving the 555 for IRQ is 10nf instead of 22nf.
+
+What makes it unique is the addition of a chess clock.
+
+connector pinout from main pcb:
+1) 5V
+2) GND
+3) 74HC259.pin9 (Q4) = Row LED driving
+4) 74HC259.pin10 (Q5) = Column LED driving
+5) 74HC259.pin12 (Q7) = Bat. Low signal
+6) 74HC42.pin4 (Q3) = Col-D/Row-4 -> 'White Move' if D-LED blinks
+
+The extra board has a 7474, a К1016ХЛ1 (RTC, or MCU clock driver), a 4-digit
+VFD display, and some buttons for controlling the clock. IRQ frequency is doubled
+presumedly for using the blinking led as seconds counter. It only tracks player time,
+not of the opponent. And it obviously doesn't show chessmove coordinates either.
+
+
+******************************************************************************
+
+Designer series:
+
+Designer 2000 (model 6102)
+----------------
+8KB RAM(KM6264AL-10), 32KB ROM(AMI 101.1077A01)
+Ricoh RP65C02G CPU, 3MHz XTAL
+PCB label 510.1129A01
+basically same as (Par) Excellence hardware, reskinned board
+
+Designer 2100 (model 6103): exactly same, but running at 5MHz
+
+Designer 2100 Display (model 6106)
+----------------
+8KB RAM(MS6264L-10), 2*32KB ROM(27C256)
+WDC W65C02P-6 CPU, 6MHz XTAL
+4-digit LCD panel
+PCB label 510.1130A01
+
+Designer 2000 Display (model 6105): same hardware, no bookrom, 3MHz
+
+Designer 1500 is on 80C50 hardware
+
+
+******************************************************************************
+
+Phantom (model 6100)
+----------------
+R65C02P4, XTAL marked 4.91?200
+2*32KB ROM 27C256-15, 8KB RAM MS6264L-10
+LCD driver, display panel for digits
+magnetized x/y motor under chessboard, chesspieces have magnet underneath
+piezo speaker, LEDs, 8*8 chessboard buttons
+PCB label 510.1128A01
+
+Fidelity licensed the design of the Milton/Phantom motorized chessboard and released
+their own version. It has a small LCD panel added, the rest looks nearly the same from
+the outside. After Fidelity was taken over by H&G, it was rereleased in 1990 as the
+Mephisto Phantom. This is assumed to be identical.
+
+
+******************************************************************************
+
+Chesster (model 6120)
+There is also a German version titled Kishon Chesster (model 6120G, or 6127)
+----------------
+
+8*(8+1) buttons, 8+8+1 LEDs
+8KB RAM(UM6264-12), 32KB ROM(M27C256B)
+Ricoh RP65C02G CPU, 5MHz XTAL
+8-bit DAC speech timed via IRQ, 128KB ROM(AMI custom label)
+PCB label 510.1141C01
+
+I/O is via TTL, very similar to Designer Display
+
+******************************************************************************/
+
+#include "emu.h"
+#include "includes/fidelbase.h"
+
+#include "cpu/m6502/m6502.h"
+#include "cpu/m6502/r65c02.h"
+#include "cpu/m6502/m65sc02.h"
+#include "machine/bankdev.h"
+#include "machine/6821pia.h"
+#include "machine/i8255.h"
+#include "machine/nvram.h"
+#include "sound/volt_reg.h"
+#include "speaker.h"
+
+// internal artwork
+#include "fidel_as12.lh" // clickable
+#include "fidel_chesster.lh" // clickable
+#include "fidel_csc.lh" // clickable, with preliminary boardpieces simulation
+#include "fidel_des.lh" // clickable
+#include "fidel_desdis.lh" // clickable
+#include "fidel_eag.lh" // clickable
+#include "fidel_eas.lh" // clickable
+#include "fidel_ex.lh" // clickable
+#include "fidel_exd.lh" // clickable
+#include "fidel_pc.lh" // clickable
+#include "fidel_playmatic.lh" // clickable
+#include "fidel_rsc_v2.lh" // clickable
+#include "fidel_sc9.lh" // clickable
+#include "fidel_sc12.lh" // clickable
+#include "fidel_su9.lh" // clickable
+
+
+class fidel6502_state : public fidelbase_state
+{
+public:
+ fidel6502_state(const machine_config &mconfig, device_type type, const char *tag)
+ : fidelbase_state(mconfig, type, tag),
+ m_ppi8255(*this, "ppi8255"),
+ m_rombank(*this, "rombank"),
+ m_mainmap(*this, "mainmap"),
+ m_div_config(*this, "div_config"),
+ m_irq_on(*this, "irq_on")
+ { }
+
+ void csc(machine_config &config);
+ void su9(machine_config &config);
+ void rsc(machine_config &config);
+ DECLARE_INPUT_CHANGED_MEMBER(su9_cpu_freq);
+
+ void eas_base(machine_config &config);
+ void eas(machine_config &config);
+ void eag(machine_config &config);
+ void pc(machine_config &config);
+ void init_eag();
+
+ void sc9b(machine_config &config);
+ void sc9c(machine_config &config);
+ void sc9d(machine_config &config);
+ void playmatic(machine_config &config);
+ DECLARE_INPUT_CHANGED_MEMBER(sc9c_cpu_freq);
+
+ void sc12_map(address_map &map);
+ void sc12(machine_config &config);
+ void sc12b(machine_config &config);
+
+ void as12(machine_config &config);
+
+ void fexcel(machine_config &config);
+ void fexcelb(machine_config &config);
+ void fexcel4(machine_config &config);
+ void fexceld(machine_config &config);
+ void fexcelv(machine_config &config);
+ void fexcelp(machine_config &config);
+ void granits(machine_config &config);
+ void fdes2100(machine_config &config);
+ void fdes2000(machine_config &config);
+ DECLARE_INPUT_CHANGED_MEMBER(fexcelv_bankswitch);
+
+ void fdes2000d(machine_config &config);
+ void fdes2100d(machine_config &config);
+ void init_fdesdis();
+
+ void fphantom(machine_config &config);
+ void init_fphantom();
+
+ void chesster(machine_config &config);
+ void kishon(machine_config &config);
+ void init_chesster();
+
+private:
+ // devices/pointers
+ optional_device<i8255_device> m_ppi8255;
+ optional_memory_bank m_rombank;
+ optional_device<address_map_bank_device> m_mainmap;
+ optional_ioport m_div_config;
+ optional_device<timer_device> m_irq_on;
+
+ // common
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE); }
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE); }
+ TIMER_DEVICE_CALLBACK_MEMBER(dummy) { ; } // MCFG_QUANTUM_PERFECT_CPU("maincpu") didn't work
+
+ DECLARE_WRITE8_MEMBER(div_trampoline_w);
+ DECLARE_READ8_MEMBER(div_trampoline_r);
+ void div_set_cpu_freq(offs_t offset);
+ void div_trampoline(address_map &map);
+ u16 m_div_status;
+
+ // CSC, SU9, RSC
+ void csc_prepare_display();
+ DECLARE_READ8_MEMBER(csc_speech_r);
+ DECLARE_WRITE8_MEMBER(csc_pia0_pa_w);
+ DECLARE_WRITE8_MEMBER(csc_pia0_pb_w);
+ DECLARE_READ8_MEMBER(csc_pia0_pb_r);
+ DECLARE_WRITE_LINE_MEMBER(csc_pia0_ca2_w);
+ DECLARE_WRITE8_MEMBER(csc_pia1_pa_w);
+ DECLARE_WRITE8_MEMBER(csc_pia1_pb_w);
+ DECLARE_READ8_MEMBER(csc_pia1_pa_r);
+ DECLARE_WRITE_LINE_MEMBER(csc_pia1_ca2_w);
+ DECLARE_WRITE_LINE_MEMBER(csc_pia1_cb2_w);
+ DECLARE_READ_LINE_MEMBER(csc_pia1_ca1_r);
+ DECLARE_READ_LINE_MEMBER(csc_pia1_cb1_r);
+ DECLARE_MACHINE_RESET(su9);
+ void su9_set_cpu_freq();
+ void csc_map(address_map &map);
+ void su9_map(address_map &map);
+ void rsc_map(address_map &map);
+
+ // EAS, EAG, PC
+ void eas_prepare_display();
+ DECLARE_WRITE8_MEMBER(eas_segment_w);
+ DECLARE_WRITE8_MEMBER(eas_led_w);
+ DECLARE_READ8_MEMBER(eas_input_r);
+ DECLARE_WRITE8_MEMBER(eas_ppi_porta_w);
+ DECLARE_READ8_MEMBER(eas_ppi_portb_r);
+ DECLARE_WRITE8_MEMBER(eas_ppi_portc_w);
+ void eas_map(address_map &map);
+ void eag_map(address_map &map);
+ void pc_map(address_map &map);
+
+ // SC9
+ void sc9_prepare_display();
+ DECLARE_WRITE8_MEMBER(sc9_control_w);
+ DECLARE_WRITE8_MEMBER(sc9_led_w);
+ DECLARE_READ8_MEMBER(sc9_input_r);
+ DECLARE_READ8_MEMBER(sc9d_input_r);
+ DECLARE_MACHINE_RESET(sc9c);
+ void sc9c_set_cpu_freq();
+ void sc9_map(address_map &map);
+ void sc9d_map(address_map &map);
+
+ // SC12
+ DECLARE_WRITE8_MEMBER(sc12_control_w);
+ DECLARE_READ8_MEMBER(sc12_input_r);
+
+ // AS12
+ void as12_prepare_display();
+ DECLARE_WRITE8_MEMBER(as12_control_w);
+ DECLARE_WRITE8_MEMBER(as12_led_w);
+ DECLARE_READ8_MEMBER(as12_input_r);
+ void as12_map(address_map &map);
+
+ // Excellence
+ DECLARE_READ8_MEMBER(fexcelv_speech_r);
+ DECLARE_WRITE8_MEMBER(fexcel_ttl_w);
+ DECLARE_READ8_MEMBER(fexcelb_ttl_r);
+ DECLARE_READ8_MEMBER(fexcel_ttl_r);
+ void fexcel_map(address_map &map);
+ void fexcelb_map(address_map &map);
+ void fexcelp_map(address_map &map);
+
+ // Designer Display
+ DECLARE_WRITE8_MEMBER(fdesdis_control_w);
+ DECLARE_WRITE8_MEMBER(fdesdis_lcd_w);
+ DECLARE_READ8_MEMBER(fdesdis_input_r);
+ void fdesdis_map(address_map &map);
+
+ // Phantom
+ DECLARE_MACHINE_RESET(fphantom);
+ void fphantom_map(address_map &map);
+
+ // Chesster
+ DECLARE_WRITE8_MEMBER(chesster_control_w);
+ DECLARE_WRITE8_MEMBER(kishon_control_w);
+ void chesster_map(address_map &map);
+ void kishon_map(address_map &map);
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+};
+
+
+// machine start/reset
+
+void fidel6502_state::machine_start()
+{
+ fidelbase_state::machine_start();
+
+ // register for savestates
+ save_item(NAME(m_div_status));
+}
+
+void fidel6502_state::machine_reset()
+{
+ fidelbase_state::machine_reset();
+
+ m_div_status = ~0;
+}
+
+
+
+/***************************************************************************
+
+ Helper Functions
+
+***************************************************************************/
+
+// Offset-dependent CPU divider on some machines
+
+void fidel6502_state::div_set_cpu_freq(offs_t offset)
+{
+ static const u16 mask = 0x6000;
+ u16 status = (offset & mask) | m_div_config->read();
+
+ if (status != m_div_status && status & 2)
+ {
+ // when a13/a14 is high, XTAL goes through divider(s)
+ // (depending on factory-set jumper, either one or two 7474)
+ float div = (status & 1) ? 0.25 : 0.5;
+ m_maincpu->set_clock_scale((offset & mask) ? div : 1.0);
+ }
+
+ m_div_status = status;
+}
+
+WRITE8_MEMBER(fidel6502_state::div_trampoline_w)
+{
+ div_set_cpu_freq(offset);
+ m_mainmap->write8(space, offset, data);
+}
+
+READ8_MEMBER(fidel6502_state::div_trampoline_r)
+{
+ if (!machine().side_effects_disabled())
+ div_set_cpu_freq(offset);
+
+ return m_mainmap->read8(space, offset);
+}
+
+void fidel6502_state::div_trampoline(address_map &map)
+{
+ map(0x0000, 0xffff).rw(FUNC(fidel6502_state::div_trampoline_r), FUNC(fidel6502_state::div_trampoline_w));
+}
+
+static INPUT_PORTS_START( cpu_div_2 )
+ PORT_START("div_config") // hardwired, default to /2
+ PORT_CONFNAME( 0x03, 0x02, "CPU Divider" )
+ PORT_CONFSETTING( 0x00, "Disabled" )
+ PORT_CONFSETTING( 0x02, "2" )
+ PORT_CONFSETTING( 0x03, "4" )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( cpu_div_4 )
+ PORT_START("div_config") // hardwired, default to /4
+ PORT_CONFNAME( 0x03, 0x03, "CPU Divider" )
+ PORT_CONFSETTING( 0x00, "Disabled" )
+ PORT_CONFSETTING( 0x02, "2" )
+ PORT_CONFSETTING( 0x03, "4" )
+INPUT_PORTS_END
+
+
+
+// Devices, I/O
+
+/******************************************************************************
+ CSC, SU9, RSC
+******************************************************************************/
+
+// misc handlers
+
+void fidel6502_state::csc_prepare_display()
+{
+ // 7442 0-8: led select, input mux
+ m_inp_mux = 1 << m_led_select & 0x3ff;
+
+ // 7442 9: speaker out
+ m_dac->write(BIT(m_inp_mux, 9));
+
+ // 7seg leds+H (not on all models), 8*8(+1) chessboard leds
+ set_display_segmask(0xf, 0x7f);
+ display_matrix(16, 9, m_led_data << 8 | m_7seg_data, m_inp_mux);
+}
+
+READ8_MEMBER(fidel6502_state::csc_speech_r)
+{
+ return m_speech_rom[m_speech_bank << 12 | offset];
+}
+
+void fidel6502_state::su9_set_cpu_freq()
+{
+ // SU9 CPU is clocked 1.95MHz, DS9 is 2.5MHz
+ m_maincpu->set_unscaled_clock((ioport("FAKE")->read() & 1) ? (5_MHz_XTAL/2) : (3.9_MHz_XTAL/2));
+}
+
+MACHINE_RESET_MEMBER(fidel6502_state, su9)
+{
+ fidel6502_state::machine_reset();
+ su9_set_cpu_freq();
+}
+
+
+// 6821 PIA 0
+
+WRITE8_MEMBER(fidel6502_state::csc_pia0_pa_w)
+{
+ // d0-d5: TSI C0-C5
+ m_speech->data_w(space, 0, data & 0x3f);
+
+ // d0-d7: data for the 4 7seg leds, bits are ABFGHCDE (H is extra led)
+ m_7seg_data = bitswap<8>(data,0,1,5,6,7,2,3,4);
+ csc_prepare_display();
+}
+
+WRITE8_MEMBER(fidel6502_state::csc_pia0_pb_w)
+{
+ // d0: speech ROM A12
+ m_speech->force_update(); // update stream to now
+ m_speech_bank = data & 1;
+
+ // d1: TSI START line
+ m_speech->start_w(data >> 1 & 1);
+
+ // d4: lower TSI volume
+ m_speech->set_output_gain(0, (data & 0x10) ? 0.5 : 1.0);
+}
+
+READ8_MEMBER(fidel6502_state::csc_pia0_pb_r)
+{
+ // d2: printer?
+ u8 data = 0x04;
+
+ // d3: TSI BUSY line
+ if (m_speech->busy_r())
+ data |= 0x08;
+
+ // d5: button row 8 (active low)
+ // d6,d7: language switches
+ data |= (~read_inputs(9) >> 3 & 0x20) | (m_inp_matrix[9]->read() << 6 & 0xc0);
+
+ return data;
+}
+
+WRITE_LINE_MEMBER(fidel6502_state::csc_pia0_ca2_w)
+{
+ // printer?
+}
+
+
+// 6821 PIA 1
+
+READ8_MEMBER(fidel6502_state::csc_pia1_pa_r)
+{
+ // d0-d5: button row 0-5 (active low)
+ return (read_inputs(9) & 0x3f) ^ 0xff;
+}
+
+WRITE8_MEMBER(fidel6502_state::csc_pia1_pa_w)
+{
+ // d6,d7: 7442 A0,A1
+ m_led_select = (m_led_select & ~3) | (data >> 6 & 3);
+ csc_prepare_display();
+}
+
+WRITE8_MEMBER(fidel6502_state::csc_pia1_pb_w)
+{
+ // d0-d7: led row data
+ m_led_data = data;
+ csc_prepare_display();
+}
+
+READ_LINE_MEMBER(fidel6502_state::csc_pia1_ca1_r)
+{
+ // button row 6 (active low)
+ return ~read_inputs(9) >> 6 & 1;
+}
+
+READ_LINE_MEMBER(fidel6502_state::csc_pia1_cb1_r)
+{
+ // button row 7 (active low)
+ return ~read_inputs(9) >> 7 & 1;
+}
+
+WRITE_LINE_MEMBER(fidel6502_state::csc_pia1_cb2_w)
+{
+ // 7442 A2
+ m_led_select = (m_led_select & ~4) | (state ? 4 : 0);
+ csc_prepare_display();
+}
+
+WRITE_LINE_MEMBER(fidel6502_state::csc_pia1_ca2_w)
+{
+ // 7442 A3
+ m_led_select = (m_led_select & ~8) | (state ? 8 : 0);
+ csc_prepare_display();
+}
+
+
+
+/******************************************************************************
+ EAS, EAG, PC
+******************************************************************************/
+
+// TTL/generic
+
+void fidel6502_state::eas_prepare_display()
+{
+ // 4/8 7seg leds+H, 8*8(+1) chessboard leds
+ set_display_segmask(0x1ef, 0x7f);
+ display_matrix(16, 9, m_led_data << 8 | m_7seg_data, m_led_select);
+}
+
+WRITE8_MEMBER(fidel6502_state::eas_segment_w)
+{
+ // a0-a2,d7: digit segment
+ m_7seg_data = (data & 0x80) >> offset;
+ m_7seg_data = bitswap<8>(m_7seg_data,7,6,4,5,0,2,1,3);
+ eas_prepare_display();
+}
+
+WRITE8_MEMBER(fidel6502_state::eas_led_w)
+{
+ // a0-a2,d0: led data
+ m_led_data = (data & 1) << offset;
+ eas_prepare_display();
+}
+
+READ8_MEMBER(fidel6502_state::eas_input_r)
+{
+ // multiplexed inputs (active low)
+ return read_inputs(9) ^ 0xff;
+}
+
+void fidel6502_state::init_eag()
+{
+ m_rombank->configure_entries(0, 4, memregion("rombank")->base(), 0x2000);
+}
+
+
+// 8255 PPI (PC: done with TTL instead)
+
+WRITE8_MEMBER(fidel6502_state::eas_ppi_porta_w)
+{
+ // d0-d5: TSI C0-C5
+ // d6: TSI START line
+ m_speech->data_w(space, 0, data & 0x3f);
+ m_speech->start_w(data >> 6 & 1);
+
+ // d7: printer? (black wire to LED pcb)
+}
+
+WRITE8_MEMBER(fidel6502_state::eas_ppi_portc_w)
+{
+ // d0-d3: 7442 a0-a3
+ // 7442 0-8: led select, input mux
+ m_led_select = 1 << (data & 0xf) & 0x3ff;
+ m_inp_mux = m_led_select & 0x1ff;
+ eas_prepare_display();
+
+ // 7442 9: speaker out
+ m_dac->write(BIT(m_led_select, 9));
+
+ // d4: speech ROM A12
+ m_speech->force_update(); // update stream to now
+ m_speech_bank = data >> 4 & 1;
+
+ // d5: lower TSI volume
+ m_speech->set_output_gain(0, (data & 0x20) ? 0.5 : 1.0);
+
+ // d6,d7: bookrom bankswitch (model EAG)
+ if (m_rombank != nullptr)
+ m_rombank->set_entry(data >> 6 & 3);
+}
+
+READ8_MEMBER(fidel6502_state::eas_ppi_portb_r)
+{
+ // d0: printer? white wire from LED pcb
+ u8 data = 1;
+
+ // d1: TSI BUSY line
+ data |= (m_speech->busy_r()) ? 2 : 0;
+
+ // d2,d3: language switches
+ data |= m_inp_matrix[9]->read() << 2 & 0x0c;
+
+ // d5: multiplexed inputs highest bit
+ data |= (read_inputs(9) & 0x100) ? 0 : 0x20;
+
+ // other: ?
+ return data | 0xd0;
+}
+
+
+
+/******************************************************************************
+ SC9
+******************************************************************************/
+
+// TTL/generic
+
+void fidel6502_state::sc9_prepare_display()
+{
+ // 8*8 chessboard leds + 1 corner led
+ display_matrix(8, 9, m_led_data, m_inp_mux);
+}
+
+WRITE8_MEMBER(fidel6502_state::sc9_control_w)
+{
+ // d0-d3: 74245 P0-P3
+ // 74245 Q0-Q8: input mux, led select
+ u16 sel = 1 << (data & 0xf) & 0x3ff;
+ m_inp_mux = sel & 0x1ff;
+ sc9_prepare_display();
+
+ // 74245 Q9: speaker out
+ m_dac->write(BIT(sel, 9));
+
+ // d4,d5: ?
+ // d6,d7: N/C
+}
+
+WRITE8_MEMBER(fidel6502_state::sc9_led_w)
+{
+ // a0-a2,d0: led data via NE591N
+ m_led_data = (data & 1) << offset;
+ sc9_prepare_display();
+}
+
+READ8_MEMBER(fidel6502_state::sc9_input_r)
+{
+ // multiplexed inputs (active low)
+ return read_inputs(9) ^ 0xff;
+}
+
+READ8_MEMBER(fidel6502_state::sc9d_input_r)
+{
+ // a0-a2,d7: multiplexed inputs (active low)
+ return (read_inputs(9) >> offset & 1) ? 0 : 0x80;
+}
+
+void fidel6502_state::sc9c_set_cpu_freq()
+{
+ // SC9(C01) was released with 1.5MHz, 1.6MHz, or 1.9MHz CPU
+ u8 inp = ioport("FAKE")->read();
+ m_maincpu->set_unscaled_clock((inp & 2) ? 1900000 : ((inp & 1) ? 1600000 : 1500000));
+}
+
+MACHINE_RESET_MEMBER(fidel6502_state, sc9c)
+{
+ fidel6502_state::machine_reset();
+ sc9c_set_cpu_freq();
+}
+
+
+
+/******************************************************************************
+ SC12
+******************************************************************************/
+
+// TTL/generic
+
+WRITE8_MEMBER(fidel6502_state::sc12_control_w)
+{
+ // d0-d3: 7442 a0-a3
+ // 7442 0-8: led data, input mux
+ u16 sel = 1 << (data & 0xf) & 0x3ff;
+ m_inp_mux = sel & 0x1ff;
+
+ // 7442 9: speaker out
+ m_dac->write(BIT(sel, 9));
+
+ // d6,d7: led select (active low)
+ display_matrix(9, 2, sel & 0x1ff, ~data >> 6 & 3);
+
+ // d4,d5: printer
+ //..
+}
+
+READ8_MEMBER(fidel6502_state::sc12_input_r)
+{
+ // a0-a2,d7: multiplexed inputs (active low)
+ return (read_inputs(9) >> offset & 1) ? 0 : 0x80;
+}
+
+
+
+/******************************************************************************
+ AS12
+******************************************************************************/
+
+// TTL/generic
+
+void fidel6502_state::as12_prepare_display()
+{
+ // 8*8(+1) chessboard leds
+ display_matrix(8, 9, m_led_data, m_inp_mux);
+}
+
+WRITE8_MEMBER(fidel6502_state::as12_control_w)
+{
+ // d0-d3: 74245 P0-P3
+ // 74245 Q0-Q8: input mux, led select
+ u16 sel = 1 << (data & 0xf) & 0x3ff;
+ m_inp_mux = bitswap<9>(sel,5,8,7,6,4,3,1,0,2);
+ as12_prepare_display();
+
+ // 74245 Q9: speaker out
+ m_dac->write(BIT(sel, 9));
+
+ // d4,d5: printer?
+ // d6,d7: N/C?
+}
+
+WRITE8_MEMBER(fidel6502_state::as12_led_w)
+{
+ // a0-a2,d0: led data via NE591N
+ m_led_data = (data & 1) << offset;
+ as12_prepare_display();
+}
+
+READ8_MEMBER(fidel6502_state::as12_input_r)
+{
+ // a0-a2,d7: multiplexed inputs (active low)
+ u8 inp = bitswap<8>(read_inputs(9),4,3,2,1,0,5,6,7);
+ return (inp >> offset & 1) ? 0 : 0x80;
+}
+
+
+
+/******************************************************************************
+ Excellence
+******************************************************************************/
+
+// misc handlers
+
+INPUT_CHANGED_MEMBER(fidel6502_state::fexcelv_bankswitch)
+{
+ // tied to speech ROM highest bits
+ m_speech->force_update();
+ m_speech_bank = (m_speech_bank & 1) | newval << 1;
+}
+
+READ8_MEMBER(fidel6502_state::fexcelv_speech_r)
+{
+ // TSI A11 is A12, program controls A11, user controls A13,A14(language switches)
+ offset = (offset & 0x7ff) | (offset << 1 & 0x1000);
+ return m_speech_rom[offset | (m_speech_bank << 11 & 0x800) | (~m_speech_bank << 12 & 0x6000)];
+}
+
+
+// TTL
+
+WRITE8_MEMBER(fidel6502_state::fexcel_ttl_w)
+{
+ // a0-a2,d0: 74259(1)
+ u8 mask = 1 << offset;
+ m_led_select = (m_led_select & ~mask) | ((data & 1) ? mask : 0);
+
+ // 74259 Q0-Q3: 7442 a0-a3
+ // 7442 0-8: led data, input mux
+ u16 sel = 1 << (m_led_select & 0xf) & 0x3ff;
+ u8 led_data = sel & 0xff;
+ m_inp_mux = sel & 0x1ff;
+
+ // 7442 9: speaker out
+ m_dac->write(BIT(sel, 9));
+
+ // 74259 Q4-Q7,Q2,Q1: digit/led select (active low)
+ u8 led_sel = ~bitswap<8>(m_led_select,0,3,1,2,7,6,5,4) & 0x3f;
+
+ // a0-a2,d1: digit segment data (model 6093)
+ m_7seg_data = (m_7seg_data & ~mask) | ((data & 2) ? mask : 0);
+ u8 seg_data = bitswap<8>(m_7seg_data,0,1,3,2,7,5,6,4);
+
+ // update display: 4 7seg leds, 2*8 chessboard leds
+ for (int i = 0; i < 6; i++)
+ m_display_state[i] = (led_sel >> i & 1) ? ((i < 2) ? led_data : seg_data) : 0;
+
+ set_display_size(8, 2+4);
+ set_display_segmask(0x3c, 0x7f);
+ display_update();
+
+ // speech (model 6092)
+ if (m_speech != nullptr)
+ {
+ // a0-a2,d2: 74259(2) to speech board
+ m_speech_data = (m_speech_data & ~mask) | ((data & 4) ? mask : 0);
+
+ // 74259 Q6: TSI ROM A11
+ m_speech->force_update(); // update stream to now
+ m_speech_bank = (m_speech_bank & ~1) | (m_speech_data >> 6 & 1);
+
+ // Q0-Q5: TSI C0-C5
+ // Q7: TSI START line
+ m_speech->data_w(space, 0, m_speech_data & 0x3f);
+ m_speech->start_w(m_speech_data >> 7 & 1);
+ }
+}
+
+READ8_MEMBER(fidel6502_state::fexcelb_ttl_r)
+{
+ // a0-a2,d6: from speech board: language switches and TSI BUSY line, otherwise tied to VCC
+ u8 d6 = (m_inp_matrix[9].read_safe(0xff) >> offset & 1) ? 0x40 : 0;
+
+ // a0-a2,d7: multiplexed inputs (active low)
+ return d6 | ((read_inputs(9) >> offset & 1) ? 0 : 0x80);
+}
+
+READ8_MEMBER(fidel6502_state::fexcel_ttl_r)
+{
+ u8 d7 = 0x80;
+
+ // 74259(1) Q7 + 74251 I0: battery status
+ if (m_inp_mux == 1 && ~m_led_select & 0x80)
+ d7 = m_inp_matrix[9]->read() & 0x80;
+
+ // a0-a2,d7: multiplexed inputs (active low)
+ return d7 & ((read_inputs(9) >> offset & 1) ? 0 : 0x80);
+}
+
+
+
+/******************************************************************************
+ Designer Display
+******************************************************************************/
+
+// TTL/generic
+
+WRITE8_MEMBER(fidel6502_state::fdesdis_control_w)
+{
+ u8 q3_old = m_led_select & 8;
+
+ // a0-a2,d7: 74259
+ u8 mask = 1 << offset;
+ m_led_select = (m_led_select & ~mask) | ((data & 0x80) ? mask : 0);
+
+ // 74259 Q4-Q7: 7442 a0-a3
+ // 7442 0-8: led data, input mux
+ u16 sel = 1 << (m_led_select >> 4 & 0xf) & 0x3ff;
+ m_inp_mux = sel & 0x1ff;
+
+ // 7442 9: speaker out
+ m_dac->write(BIT(sel, 9));
+
+ // 74259 Q0,Q1: led select (active low)
+ display_matrix(9, 2, m_inp_mux, ~m_led_select & 3, false);
+
+ // 74259 Q2: book rom A14
+ m_rombank->set_entry(~m_led_select >> 2 & 1);
+
+ // 74259 Q3: lcd common, update on rising edge
+ if (~q3_old & m_led_select & 8)
+ {
+ for (int i = 0; i < 4; i++)
+ m_display_state[i+2] = m_7seg_data >> (8*i) & 0xff;
+ }
+
+ m_display_maxy += 4;
+ set_display_segmask(0x3c, 0x7f);
+ display_update();
+}
+
+WRITE8_MEMBER(fidel6502_state::fdesdis_lcd_w)
+{
+ // a0-a2,d0-d3: 4*74259 to lcd digit segments
+ u32 mask = bitswap<8>(1 << offset,3,7,6,0,1,2,4,5);
+ for (int i = 0; i < 4; i++)
+ {
+ m_7seg_data = (m_7seg_data & ~mask) | ((data >> i & 1) ? 0 : mask);
+ mask <<= 8;
+ }
+}
+
+READ8_MEMBER(fidel6502_state::fdesdis_input_r)
+{
+ // a0-a2,d7: multiplexed inputs (active low)
+ return (read_inputs(9) >> offset & 1) ? 0 : 0x80;
+}
+
+void fidel6502_state::init_fdesdis()
+{
+ m_rombank->configure_entries(0, 2, memregion("rombank")->base(), 0x4000);
+}
+
+
+
+/******************************************************************************
+ Phantom
+******************************************************************************/
+
+// TTL/generic
+
+MACHINE_RESET_MEMBER(fidel6502_state, fphantom)
+{
+ fidel6502_state::machine_reset();
+ m_rombank->set_entry(0);
+}
+
+void fidel6502_state::init_fphantom()
+{
+ m_rombank->configure_entries(0, 2, memregion("rombank")->base(), 0x4000);
+}
+
+
+
+/******************************************************************************
+ Chesster
+******************************************************************************/
+
+// TTL/generic
+
+WRITE8_MEMBER(fidel6502_state::chesster_control_w)
+{
+ // a0-a2,d7: 74259(1)
+ u8 mask = 1 << offset;
+ m_led_select = (m_led_select & ~mask) | ((data & 0x80) ? mask : 0);
+
+ // 74259 Q4-Q7: 7442 a0-a3
+ // 7442 0-8: led data, input mux
+ u16 sel = 1 << (m_led_select >> 4 & 0xf) & 0x3ff;
+ m_inp_mux = sel & 0x1ff;
+
+ // 74259 Q0,Q1: led select (active low)
+ display_matrix(9, 2, m_inp_mux, ~m_led_select & 3);
+
+ // 74259 Q2,Q3: speechrom A14,A15
+ // a0-a2,d0: 74259(2) where Q3 is speechrom A16, other outputs unconnected
+ m_speech_bank = (m_speech_bank & ~mask) | ((data & 1) ? mask : 0);
+ m_rombank->set_entry((m_led_select >> 2 & 3) | (m_speech_bank >> 1 & 4));
+}
+
+WRITE8_MEMBER(fidel6502_state::kishon_control_w)
+{
+ chesster_control_w(space, offset, data);
+
+ // 2 more bankswitch bits: 74259(2) Q2 to A17, Q0 to A18
+ u8 bank = (m_led_select >> 2 & 3) | bitswap<3>(m_speech_bank, 0,2,3) << 2;
+ m_rombank->set_entry(bank);
+}
+
+void fidel6502_state::init_chesster()
+{
+ m_rombank->configure_entries(0, memregion("rombank")->bytes() / 0x4000, memregion("rombank")->base(), 0x4000);
+}
+
+
+
+/******************************************************************************
+ Address Maps
+******************************************************************************/
+
+// CSC, SU9, RSC
+
+void fidel6502_state::csc_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).mirror(0x4000).ram();
+ map(0x0800, 0x0bff).mirror(0x4400).ram();
+ map(0x1000, 0x1003).mirror(0x47fc).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1800, 0x1803).mirror(0x47fc).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x2000, 0x3fff).mirror(0x4000).rom();
+ map(0xa000, 0xffff).rom();
+}
+
+void fidel6502_state::su9_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x1003).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1800, 0x1803).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x2000, 0x3fff).rom();
+ map(0xa000, 0xa7ff).rom();
+ map(0xc000, 0xffff).rom();
+}
+
+void fidel6502_state::rsc_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).ram();
+ map(0x2000, 0x2003).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xf000, 0xffff).rom();
+}
+
+
+// EAS, EAG, PC
+
+void fidel6502_state::eas_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).ram().share("nvram");
+ map(0x2000, 0x5fff).r(FUNC(fidel6502_state::cartridge_r));
+ map(0x7000, 0x7003).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x7020, 0x7027).w(FUNC(fidel6502_state::eas_segment_w)).nopr();
+ map(0x7030, 0x7037).w(FUNC(fidel6502_state::eas_led_w)).nopr();
+ map(0x7050, 0x7050).r(FUNC(fidel6502_state::eas_input_r));
+ map(0x8000, 0x9fff).rom();
+ map(0xc000, 0xffff).rom();
+}
+
+void fidel6502_state::eag_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).ram().share("nvram");
+ map(0x2000, 0x5fff).r(FUNC(fidel6502_state::cartridge_r));
+ map(0x7000, 0x7003).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x7020, 0x7027).w(FUNC(fidel6502_state::eas_segment_w)).nopr();
+ map(0x7030, 0x7037).w(FUNC(fidel6502_state::eas_led_w)).nopr();
+ map(0x7050, 0x7050).r(FUNC(fidel6502_state::eas_input_r));
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xbfff).bankr("rombank");
+ map(0xc000, 0xffff).rom();
+}
+
+void fidel6502_state::pc_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x17ff).ram();
+ map(0x2000, 0x5fff).r(FUNC(fidel6502_state::cartridge_r));
+ map(0x7000, 0x7000).w(FUNC(fidel6502_state::eas_ppi_porta_w));
+ map(0x7010, 0x7010).r(FUNC(fidel6502_state::eas_ppi_portb_r));
+ map(0x7020, 0x7027).w(FUNC(fidel6502_state::eas_segment_w)).nopr();
+ map(0x7030, 0x7037).w(FUNC(fidel6502_state::eas_led_w)).nopr();
+ map(0x7040, 0x7040).w(FUNC(fidel6502_state::eas_ppi_portc_w));
+ map(0x7050, 0x7050).r(FUNC(fidel6502_state::eas_input_r));
+ map(0x8000, 0x9fff).ram();
+ map(0xb000, 0xffff).rom();
+}
+
+
+// SC9
+
+void fidel6502_state::sc9_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).mirror(0x1800).ram();
+ map(0x2000, 0x5fff).r(FUNC(fidel6502_state::cartridge_r));
+ map(0x6000, 0x6000).mirror(0x1fff).w(FUNC(fidel6502_state::sc9_control_w));
+ map(0x8000, 0x8007).mirror(0x1ff8).w(FUNC(fidel6502_state::sc9_led_w)).nopr();
+ map(0xa000, 0xa000).mirror(0x1fff).r(FUNC(fidel6502_state::sc9_input_r));
+ map(0xc000, 0xffff).rom();
+}
+
+void fidel6502_state::sc9d_map(address_map &map)
+{
+ sc9_map(map);
+ map(0xa000, 0xa007).mirror(0x1ff8).r(FUNC(fidel6502_state::sc9d_input_r));
+}
+
+
+// SC12, AS12
+
+void fidel6502_state::sc12_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).ram();
+ map(0x2000, 0x5fff).r(FUNC(fidel6502_state::cartridge_r));
+ map(0x6000, 0x6000).mirror(0x1fff).w(FUNC(fidel6502_state::sc12_control_w));
+ map(0x8000, 0x9fff).rom();
+ map(0xa000, 0xa007).mirror(0x1ff8).r(FUNC(fidel6502_state::sc12_input_r));
+ map(0xc000, 0xcfff).mirror(0x1000).rom();
+ map(0xe000, 0xffff).rom();
+}
+
+void fidel6502_state::as12_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).ram();
+ map(0x1800, 0x1807).w(FUNC(fidel6502_state::as12_led_w)).nopr();
+ map(0x2000, 0x5fff).r(FUNC(fidel6502_state::cartridge_r));
+ map(0x6000, 0x6000).mirror(0x1fff).w(FUNC(fidel6502_state::as12_control_w));
+ map(0x8000, 0x9fff).rom();
+ map(0xa000, 0xa007).mirror(0x1ff8).r(FUNC(fidel6502_state::as12_input_r));
+ map(0xc000, 0xffff).rom();
+}
+
+
+// Excellence
+
+void fidel6502_state::fexcel_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x3800).ram();
+ map(0x4000, 0x4007).mirror(0x3ff8).rw(FUNC(fidel6502_state::fexcel_ttl_r), FUNC(fidel6502_state::fexcel_ttl_w));
+ //map(0x8000, 0x8000).nopr(); // checks for opening book module, but hw doesn't have a module slot
+ map(0xc000, 0xffff).rom();
+}
+
+void fidel6502_state::fexcelp_map(address_map &map)
+{
+ map(0x0000, 0x1fff).mirror(0x2000).ram();
+ map(0x4000, 0x4007).mirror(0x3ff8).rw(FUNC(fidel6502_state::fexcel_ttl_r), FUNC(fidel6502_state::fexcel_ttl_w));
+ map(0x8000, 0xffff).rom();
+}
+
+void fidel6502_state::fexcelb_map(address_map &map)
+{
+ map(0x0000, 0x1fff).mirror(0x2000).ram();
+ map(0x4000, 0x4007).mirror(0x3ff8).rw(FUNC(fidel6502_state::fexcelb_ttl_r), FUNC(fidel6502_state::fexcel_ttl_w));
+ map(0x8000, 0xffff).rom();
+}
+
+
+// Designer Display, Phantom, Chesster
+
+void fidel6502_state::fdesdis_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x2007).mirror(0x1ff8).rw(FUNC(fidel6502_state::fdesdis_input_r), FUNC(fidel6502_state::fdesdis_control_w));
+ map(0x4000, 0x7fff).bankr("rombank");
+ map(0x6000, 0x6007).mirror(0x1ff8).w(FUNC(fidel6502_state::fdesdis_lcd_w));
+ map(0x8000, 0xffff).rom();
+}
+
+void fidel6502_state::fphantom_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x4000, 0x7fff).bankr("rombank");
+ map(0x8000, 0xffff).rom();
+}
+
+void fidel6502_state::chesster_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x2007).mirror(0x1ff8).rw(FUNC(fidel6502_state::fdesdis_input_r), FUNC(fidel6502_state::chesster_control_w));
+ map(0x4000, 0x7fff).bankr("rombank");
+ map(0x6000, 0x6000).mirror(0x1fff).w("dac8", FUNC(dac_byte_interface::data_w));
+ map(0x8000, 0xffff).rom();
+}
+
+void fidel6502_state::kishon_map(address_map &map)
+{
+ chesster_map(map);
+ map(0x2000, 0x2007).mirror(0x1ff8).rw(FUNC(fidel6502_state::fdesdis_input_r), FUNC(fidel6502_state::kishon_control_w));
+}
+
+
+
+/******************************************************************************
+ Input Ports
+******************************************************************************/
+
+static INPUT_PORTS_START( rsc )
+ PORT_INCLUDE( fidel_cb_buttons )
+
+ PORT_START("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("ST")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("RV")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("DM")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("CL")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("LV")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("PV")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Speaker")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("RE")
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( csc )
+ PORT_INCLUDE( fidel_cb_buttons )
+
+ PORT_MODIFY("IN.0")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Speaker")
+
+ PORT_MODIFY("IN.1")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("RV")
+
+ PORT_MODIFY("IN.2")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("TM")
+
+ PORT_MODIFY("IN.3")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("LV")
+
+ PORT_MODIFY("IN.4")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("DM")
+
+ PORT_MODIFY("IN.5")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("ST")
+
+ PORT_START("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Pawn")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Rook")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Knight")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Bishop")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Queen")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("King")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("RE")
+
+ PORT_START("IN.9") // language setting, hardwired with 2 resistors/jumpers (0: Spanish, 1: French, 2: German, 3: English)
+ PORT_BIT(0x03, 0x03, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( cscsp )
+ PORT_INCLUDE( csc )
+
+ PORT_MODIFY("IN.9") // set to Spanish
+ PORT_BIT(0x03, 0x00, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( cscg )
+ PORT_INCLUDE( csc )
+
+ PORT_MODIFY("IN.9") // set to German
+ PORT_BIT(0x03, 0x02, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( cscfr )
+ PORT_INCLUDE( csc )
+
+ PORT_MODIFY("IN.9") // set to French
+ PORT_BIT(0x03, 0x01, IPT_CUSTOM)
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( su9 )
+ PORT_INCLUDE( csc )
+
+ PORT_MODIFY("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("RV / Pawn")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("DM / Knight")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("TB / Bishop")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("LV / Rook")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("PV / Queen")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("PB / King")
+
+ PORT_START("FAKE")
+ PORT_CONFNAME( 0x01, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, fidel6502_state, su9_cpu_freq, nullptr) // factory set
+ PORT_CONFSETTING( 0x00, "1.95MHz (SU9)" )
+ PORT_CONFSETTING( 0x01, "2.5MHz (DS9)" )
+INPUT_PORTS_END
+
+INPUT_CHANGED_MEMBER(fidel6502_state::su9_cpu_freq)
+{
+ su9_set_cpu_freq();
+}
+
+static INPUT_PORTS_START( su9sp )
+ PORT_INCLUDE( su9 )
+
+ PORT_MODIFY("IN.9") // set to Spanish
+ PORT_BIT(0x03, 0x00, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( su9g )
+ PORT_INCLUDE( su9 )
+
+ PORT_MODIFY("IN.9") // set to German
+ PORT_BIT(0x03, 0x02, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( su9fr )
+ PORT_INCLUDE( su9 )
+
+ PORT_MODIFY("IN.9") // set to French
+ PORT_BIT(0x03, 0x01, IPT_CUSTOM)
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( eas )
+ PORT_INCLUDE( fidel_cb_magnets )
+ PORT_INCLUDE( cpu_div_4 )
+
+ PORT_MODIFY("IN.0")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("DM")
+
+ PORT_MODIFY("IN.1")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
+
+ PORT_MODIFY("IN.2")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("RV")
+
+ PORT_START("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Game Control") // labeled RESET on the Prestige, but led display still says - G C -
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Speaker")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("PB / King")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("PV / Queen")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("TM / Rook")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("ST / Bishop")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("TB / Knight")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("LV / Pawn")
+
+ PORT_START("IN.9") // language setting, hardwired (0: Spanish, 1: French, 2: German, 3: English)
+ PORT_BIT(0x03, 0x03, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( eassp )
+ PORT_INCLUDE( eas )
+
+ PORT_MODIFY("IN.9") // set to Spanish
+ PORT_BIT(0x03, 0x00, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( easg )
+ PORT_INCLUDE( eas )
+
+ PORT_MODIFY("IN.9") // set to German
+ PORT_BIT(0x03, 0x02, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( easfr )
+ PORT_INCLUDE( eas )
+
+ PORT_MODIFY("IN.9") // set to French
+ PORT_BIT(0x03, 0x01, IPT_CUSTOM)
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( eag )
+ PORT_INCLUDE( fidel_cb_magnets )
+ PORT_INCLUDE( cpu_div_4 )
+
+ PORT_MODIFY("IN.0")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
+
+ PORT_MODIFY("IN.1")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("DM")
+
+ PORT_MODIFY("IN.2")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_N) PORT_NAME("New Game")
+
+ PORT_START("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("RV")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("Option")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("LV / Pawn")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("TB / Knight")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("ST / Bishop")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("TM / Rook")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("PV / Queen")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("PB / King")
+
+ PORT_START("IN.9") // language setting, hardwired (0: Spanish, 1: French, 2: German, 3: English)
+ PORT_BIT(0x03, 0x03, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( eagsp )
+ PORT_INCLUDE( eag )
+
+ PORT_MODIFY("IN.9") // set to Spanish
+ PORT_BIT(0x03, 0x00, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( eagg )
+ PORT_INCLUDE( eag )
+
+ PORT_MODIFY("IN.9") // set to German
+ PORT_BIT(0x03, 0x02, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( eagfr )
+ PORT_INCLUDE( eag )
+
+ PORT_MODIFY("IN.9") // set to French
+ PORT_BIT(0x03, 0x01, IPT_CUSTOM)
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( sc12_sidepanel )
+ PORT_START("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("RV / Pawn")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("DM / Knight")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("TB / Bishop")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("LV / Rook")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("PV / Queen")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("PB / King")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("RE")
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sc12 )
+ PORT_INCLUDE( fidel_cb_buttons )
+ PORT_INCLUDE( sc12_sidepanel )
+ PORT_INCLUDE( cpu_div_2 )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sc12b )
+ PORT_INCLUDE( fidel_cb_buttons )
+ PORT_INCLUDE( sc12_sidepanel )
+ PORT_INCLUDE( cpu_div_4 )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( as12 )
+ PORT_INCLUDE( fidel_cb_magnets )
+ PORT_INCLUDE( sc12_sidepanel )
+ PORT_INCLUDE( cpu_div_4 )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( playmatic )
+ PORT_INCLUDE( fidel_cb_magnets )
+ PORT_INCLUDE( sc12_sidepanel )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sc9 )
+ PORT_INCLUDE( fidel_cb_buttons )
+ PORT_INCLUDE( sc12_sidepanel )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sc9c )
+ PORT_INCLUDE( sc9 )
+
+ PORT_START("FAKE")
+ PORT_CONFNAME( 0x03, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, fidel6502_state, sc9c_cpu_freq, nullptr) // factory set
+ PORT_CONFSETTING( 0x00, "1.5MHz" )
+ PORT_CONFSETTING( 0x01, "1.6MHz" )
+ PORT_CONFSETTING( 0x02, "1.9MHz" )
+INPUT_PORTS_END
+
+INPUT_CHANGED_MEMBER(fidel6502_state::sc9c_cpu_freq)
+{
+ sc9c_set_cpu_freq();
+}
+
+
+static INPUT_PORTS_START( fexcelb )
+ PORT_INCLUDE( fidel_cb_buttons )
+
+ PORT_START("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Move / Pawn")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Hint / Knight")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Take Back / Bishop")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Level / Rook")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Options / Queen")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Verify / King")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_N) PORT_NAME("New Game")
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( fexcelv )
+ PORT_INCLUDE( fexcelb )
+
+ PORT_START("IN.9")
+ PORT_CONFNAME( 0x03, 0x00, DEF_STR( Language ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, fidel6502_state, fexcelv_bankswitch, 0)
+ PORT_CONFSETTING( 0x00, DEF_STR( English ) )
+ PORT_CONFSETTING( 0x01, DEF_STR( German ) )
+ PORT_CONFSETTING( 0x02, DEF_STR( French ) )
+ PORT_CONFSETTING( 0x03, DEF_STR( Spanish ) )
+ PORT_BIT(0x7c, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_READ_LINE_DEVICE_MEMBER("speech", s14001a_device, busy_r)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( fexcel )
+ PORT_INCLUDE( fexcelb )
+
+ PORT_START("IN.9")
+ PORT_CONFNAME( 0x80, 0x00, "Battery Status" )
+ PORT_CONFSETTING( 0x80, "Low" )
+ PORT_CONFSETTING( 0x00, DEF_STR( Normal ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( fdes )
+ PORT_INCLUDE( fexcel )
+
+ PORT_MODIFY("IN.9")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED) // no low-voltage detection circuit (still works in software though)
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( fdesdis )
+ PORT_INCLUDE( fidel_cb_buttons )
+
+ PORT_START("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("Move / Alternate")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Hint / Info")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("Take Back / Replay")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Level / New")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_NAME("Option / Time")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Verify / Problem")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("Shift")
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( chesster )
+ PORT_INCLUDE( fdesdis )
+
+ PORT_MODIFY("IN.8")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("Move / No")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Hint / Yes")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("Take Back / Repeat")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_NAME("Option / Replay")
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( fphantom )
+ PORT_INCLUDE( fidel_cb_buttons )
+INPUT_PORTS_END
+
+
+
+/******************************************************************************
+ Machine Drivers
+******************************************************************************/
+
+void fidel6502_state::rsc(machine_config &config)
+{
+ /* basic machine hardware */
+ M6502(config, m_maincpu, 1800000); // measured approx 1.81MHz
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::rsc_map);
+
+ TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(546)); // from 555 timer, measured
+ m_irq_on->set_start_delay(attotime::from_hz(546) - attotime::from_usec(38)); // active for 38us
+
+ TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(546));
+
+ pia6821_device &pia(PIA6821(config, "pia", 0)); // MOS 6520
+ pia.readpa_handler().set(FUNC(fidel6502_state::csc_pia1_pa_r));
+ pia.readca1_handler().set(FUNC(fidel6502_state::csc_pia1_ca1_r));
+ pia.readcb1_handler().set(FUNC(fidel6502_state::csc_pia1_cb1_r));
+ pia.writepa_handler().set(FUNC(fidel6502_state::csc_pia1_pa_w));
+ pia.writepb_handler().set(FUNC(fidel6502_state::csc_pia1_pb_w));
+ pia.ca2_handler().set(FUNC(fidel6502_state::csc_pia1_ca2_w));
+ pia.cb2_handler().set(FUNC(fidel6502_state::csc_pia1_cb2_w));
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
+ config.set_default_layout(layout_fidel_rsc_v2);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
+ vref.set_output(5.0);
+ vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+}
+
+void fidel6502_state::csc(machine_config &config)
+{
+ /* basic machine hardware */
+ M6502(config, m_maincpu, 3.9_MHz_XTAL/2); // from 3.9MHz resonator
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::csc_map);
+
+ TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(38.4_kHz_XTAL/64)); // through 4060 IC, 600Hz
+ m_irq_on->set_start_delay(attotime::from_hz(38.4_kHz_XTAL/64) - attotime::from_hz(38.4_kHz_XTAL*2)); // edge!
+ TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(38.4_kHz_XTAL/64));
+
+ pia6821_device &pia0(PIA6821(config, "pia0", 0));
+ pia0.readpb_handler().set(FUNC(fidel6502_state::csc_pia0_pb_r));
+ pia0.writepa_handler().set(FUNC(fidel6502_state::csc_pia0_pa_w));
+ pia0.writepb_handler().set(FUNC(fidel6502_state::csc_pia0_pb_w));
+ pia0.ca2_handler().set(FUNC(fidel6502_state::csc_pia0_ca2_w));
+
+ pia6821_device &pia1(PIA6821(config, "pia1", 0));
+ pia1.readpa_handler().set(FUNC(fidel6502_state::csc_pia1_pa_r));
+ pia1.readca1_handler().set(FUNC(fidel6502_state::csc_pia1_ca1_r));
+ pia1.readcb1_handler().set(FUNC(fidel6502_state::csc_pia1_cb1_r));
+ pia1.writepa_handler().set(FUNC(fidel6502_state::csc_pia1_pa_w));
+ pia1.writepb_handler().set(FUNC(fidel6502_state::csc_pia1_pb_w));
+ pia1.ca2_handler().set(FUNC(fidel6502_state::csc_pia1_ca2_w));
+ pia1.cb2_handler().set(FUNC(fidel6502_state::csc_pia1_cb2_w));
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
+ config.set_default_layout(layout_fidel_csc);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ s14001a_device &speech(S14001A(config, "speech", 25000)); // R/C circuit, around 25khz
+ speech.ext_read().set(FUNC(fidel6502_state::csc_speech_r));
+ speech.add_route(ALL_OUTPUTS, "speaker", 0.75);
+
+ DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
+ vref.set_output(5.0);
+ vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+}
+
+void fidel6502_state::su9(machine_config &config)
+{
+ csc(config);
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::su9_map);
+
+ MCFG_MACHINE_RESET_OVERRIDE(fidel6502_state, su9)
+
+ config.set_default_layout(layout_fidel_su9);
+}
+
+void fidel6502_state::eas_base(machine_config &config)
+{
+ /* basic machine hardware */
+ R65C02(config, m_maincpu, 3_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::div_trampoline);
+
+ TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(38.4_kHz_XTAL/64)); // through 4060 IC, 600Hz
+ m_irq_on->set_start_delay(attotime::from_hz(38.4_kHz_XTAL/64) - attotime::from_hz(38.4_kHz_XTAL*2)); // edge!
+
+ TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(38.4_kHz_XTAL/64));
+ TIMER(config, "dummy_timer").configure_periodic(FUNC(fidel6502_state::dummy), attotime::from_hz(3_MHz_XTAL));
+
+ ADDRESS_MAP_BANK(config, m_mainmap).set_map(&fidel6502_state::eas_map).set_options(ENDIANNESS_LITTLE, 8, 16);
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
+ config.set_default_layout(layout_fidel_eas);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ s14001a_device &speech(S14001A(config, "speech", 25000)); // R/C circuit, around 25khz
+ speech.ext_read().set(FUNC(fidel6502_state::csc_speech_r));
+ speech.add_route(ALL_OUTPUTS, "speaker", 0.75);
+
+ DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
+ vref.set_output(5.0);
+ vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+
+ /* cartridge */
+ generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_scc", "bin,dat"));
+ cartslot.set_device_load(device_image_load_delegate(&fidelbase_state::device_image_load_scc_cartridge, this));
+
+ SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
+}
+
+void fidel6502_state::eas(machine_config &config)
+{
+ eas_base(config);
+
+ I8255(config, m_ppi8255); // port B: input, port A & C: output
+ m_ppi8255->out_pa_callback().set(FUNC(fidel6502_state::eas_ppi_porta_w));
+ m_ppi8255->tri_pa_callback().set_constant(0);
+ m_ppi8255->in_pb_callback().set(FUNC(fidel6502_state::eas_ppi_portb_r));
+ m_ppi8255->out_pc_callback().set(FUNC(fidel6502_state::eas_ppi_portc_w));
+
+ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
+}
+
+void fidel6502_state::pc(machine_config &config)
+{
+ eas_base(config);
+
+ /* basic machine hardware */
+ m_maincpu->set_clock(4_MHz_XTAL); // R65C02P4
+
+ TIMER(config.replace(), "dummy_timer").configure_periodic(FUNC(fidel6502_state::dummy), attotime::from_hz(4_MHz_XTAL));
+
+ m_mainmap->set_addrmap(AS_PROGRAM, &fidel6502_state::pc_map);
+
+ config.set_default_layout(layout_fidel_pc);
+}
+
+void fidel6502_state::eag(machine_config &config)
+{
+ eas(config);
+
+ /* basic machine hardware */
+ m_maincpu->set_clock(5_MHz_XTAL); // R65C02P4
+
+ TIMER(config.replace(), "dummy_timer").configure_periodic(FUNC(fidel6502_state::dummy), attotime::from_hz(5_MHz_XTAL));
+
+ m_mainmap->set_addrmap(AS_PROGRAM, &fidel6502_state::eag_map);
+
+ config.set_default_layout(layout_fidel_eag);
+}
+
+void fidel6502_state::sc9d(machine_config &config)
+{
+ /* basic machine hardware */
+ M6502(config, m_maincpu, 3.9_MHz_XTAL/2); // R6502AP, 3.9MHz resonator
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::sc9d_map);
+ TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(610)); // from 555 timer (22nF, 102K, 2.7K)
+ m_irq_on->set_start_delay(attotime::from_hz(610) - attotime::from_usec(41)); // active for 41us
+ TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(610));
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
+ config.set_default_layout(layout_fidel_sc9);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+
+ DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
+ vref.set_output(5.0);
+ vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+
+ /* cartridge */
+ generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_scc", "bin,dat"));
+ cartslot.set_device_load(device_image_load_delegate(&fidelbase_state::device_image_load_scc_cartridge, this));
+
+ SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
+}
+
+void fidel6502_state::sc9b(machine_config &config)
+{
+ sc9d(config);
+
+ /* basic machine hardware */
+ M6502(config.replace(), m_maincpu, 1500000); // from ceramic resonator "681 JSA", measured
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::sc9_map);
+}
+
+void fidel6502_state::sc9c(machine_config &config)
+{
+ sc9b(config);
+
+ /* basic machine hardware */
+ MCFG_MACHINE_RESET_OVERRIDE(fidel6502_state, sc9c)
+}
+
+void fidel6502_state::playmatic(machine_config &config)
+{
+ sc9b(config);
+
+ /* basic machine hardware */
+ m_maincpu->set_clock(3100000); // approximation
+
+ config.set_default_layout(layout_fidel_playmatic);
+}
+
+void fidel6502_state::sc12(machine_config &config)
+{
+ /* basic machine hardware */
+ R65C02(config, m_maincpu, 3_MHz_XTAL); // R65C02P3
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::div_trampoline);
+ TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(630)); // from 556 timer (22nF, 102K, 1K)
+ m_irq_on->set_start_delay(attotime::from_hz(630) - attotime::from_nsec(15250)); // active for 15.25us
+ TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(630));
+
+ TIMER(config, "dummy_timer").configure_periodic(FUNC(fidel6502_state::dummy), attotime::from_hz(3_MHz_XTAL));
+
+ ADDRESS_MAP_BANK(config, m_mainmap).set_map(&fidel6502_state::sc12_map).set_options(ENDIANNESS_LITTLE, 8, 16);
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
+ config.set_default_layout(layout_fidel_sc12);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+
+ DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
+ vref.set_output(5.0);
+ vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+
+ /* cartridge */
+ generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_scc", "bin,dat"));
+ cartslot.set_device_load(device_image_load_delegate(&fidelbase_state::device_image_load_scc_cartridge, this));
+
+ SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
+}
+
+void fidel6502_state::sc12b(machine_config &config)
+{
+ sc12(config);
+
+ /* basic machine hardware */
+ m_maincpu->set_clock(4_MHz_XTAL); // R65C02P4
+
+ // change irq timer frequency
+ TIMER(config.replace(), m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(596)); // from 556 timer (22nF, 82K+26K, 1K)
+ m_irq_on->set_start_delay(attotime::from_hz(596) - attotime::from_nsec(15250)); // active for 15.25us
+ TIMER(config.replace(), "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(596));
+
+ TIMER(config.replace(), "dummy_timer").configure_periodic(FUNC(fidel6502_state::dummy), attotime::from_hz(4_MHz_XTAL));
+}
+
+void fidel6502_state::as12(machine_config &config)
+{
+ sc12b(config);
+
+ /* basic machine hardware */
+ m_mainmap->set_addrmap(AS_PROGRAM, &fidel6502_state::as12_map);
+
+ // change irq timer frequency
+ TIMER(config.replace(), m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(585)); // from 556 timer (22nF, 110K, 1K)
+ m_irq_on->set_start_delay(attotime::from_hz(585) - attotime::from_nsec(15250)); // active for 15.25us
+ TIMER(config.replace(), "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(585));
+
+ config.set_default_layout(layout_fidel_as12);
+}
+
+void fidel6502_state::fexcel(machine_config &config)
+{
+ /* basic machine hardware */
+ M65SC02(config, m_maincpu, 12_MHz_XTAL/4); // G65SC102P-3, 12.0M ceramic resonator
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcel_map);
+ TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(630)); // from 556 timer (22nF, 102K, 1K)
+ m_irq_on->set_start_delay(attotime::from_hz(630) - attotime::from_nsec(15250)); // active for 15.25us
+ TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(630));
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
+ config.set_default_layout(layout_fidel_ex);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
+ vref.set_output(5.0);
+ vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+}
+
+void fidel6502_state::fexcel4(machine_config &config)
+{
+ fexcel(config);
+
+ /* basic machine hardware */
+ R65C02(config.replace(), m_maincpu, 4_MHz_XTAL); // R65C02P4
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcel_map);
+}
+
+void fidel6502_state::fexcelb(machine_config &config)
+{
+ fexcel(config);
+
+ /* basic machine hardware */
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcelb_map);
+}
+
+void fidel6502_state::fexcelp(machine_config &config)
+{
+ fexcel(config);
+
+ /* basic machine hardware */
+ R65C02(config.replace(), m_maincpu, 5_MHz_XTAL); // R65C02P4
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcelp_map);
+}
+
+void fidel6502_state::granits(machine_config &config)
+{
+ fexcelp(config);
+
+ /* basic machine hardware */
+ m_maincpu->set_clock(8_MHz_XTAL); // overclocked
+}
+
+void fidel6502_state::fdes2100(machine_config &config)
+{
+ fexcel(config);
+
+ /* basic machine hardware */
+ M65C02(config.replace(), m_maincpu, 5_MHz_XTAL); // WDC 65C02
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcelp_map);
+
+ // change irq timer frequency
+ TIMER(config.replace(), m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(585)); // from 556 timer (22nF, 110K, 1K)
+ m_irq_on->set_start_delay(attotime::from_hz(585) - attotime::from_nsec(15250)); // active for 15.25us
+ TIMER(config.replace(), "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(585));
+
+ config.set_default_layout(layout_fidel_des);
+}
+
+void fidel6502_state::fdes2000(machine_config &config)
+{
+ fdes2100(config);
+
+ /* basic machine hardware */
+ R65C02(config.replace(), m_maincpu, 3_MHz_XTAL); // RP65C02G
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcelp_map);
+}
+
+void fidel6502_state::fexcelv(machine_config &config)
+{
+ fexcelb(config);
+
+ /* sound hardware */
+ S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
+ m_speech->ext_read().set(FUNC(fidel6502_state::fexcelv_speech_r));
+ m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
+}
+
+void fidel6502_state::fexceld(machine_config &config)
+{
+ fexcelb(config);
+
+ /* basic machine hardware */
+ config.set_default_layout(layout_fidel_exd);
+}
+
+void fidel6502_state::fdes2100d(machine_config &config)
+{
+ /* basic machine hardware */
+ M65C02(config, m_maincpu, 6_MHz_XTAL); // W65C02P-6
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fdesdis_map);
+ TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(630)); // from 556 timer (22nF, 102K, 1K)
+ m_irq_on->set_start_delay(attotime::from_hz(630) - attotime::from_nsec(15250)); // active for 15.25us
+ TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(630));
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
+ config.set_default_layout(layout_fidel_desdis);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
+ vref.set_output(5.0);
+ vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+}
+
+void fidel6502_state::fdes2000d(machine_config &config)
+{
+ fdes2100d(config);
+
+ /* basic machine hardware */
+ R65C02(config.replace(), m_maincpu, 3_MHz_XTAL); // R65C02P3
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fdesdis_map);
+}
+
+void fidel6502_state::fphantom(machine_config &config)
+{
+ /* basic machine hardware */
+ R65C02(config, m_maincpu, 4.9152_MHz_XTAL); // R65C02P4
+ m_maincpu->set_periodic_int(FUNC(fidel6502_state::irq0_line_hold), attotime::from_hz(600)); // guessed
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fphantom_map);
+
+ MCFG_MACHINE_RESET_OVERRIDE(fidel6502_state, fphantom)
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
+ //config.set_default_layout(layout_fidel_phantom);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
+ vref.set_output(5.0);
+ vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+}
+
+void fidel6502_state::chesster(machine_config &config)
+{
+ /* basic machine hardware */
+ R65C02(config, m_maincpu, 5_MHz_XTAL); // RP65C02G
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::chesster_map);
+ TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(9615)); // R/C circuit, measured
+ m_irq_on->set_start_delay(attotime::from_hz(9615) - attotime::from_nsec(2600)); // active for 2.6us
+ TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(9615));
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
+ config.set_default_layout(layout_fidel_chesster);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ DAC_8BIT_R2R(config, "dac8", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // m74hc374b1.ic1 + 8l513_02.z2
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
+ vref.set_output(5.0);
+ vref.add_route(0, "dac8", 1.0, DAC_VREF_POS_INPUT);
+ vref.add_route(0, "dac8", -1.0, DAC_VREF_NEG_INPUT);
+}
+
+void fidel6502_state::kishon(machine_config &config)
+{
+ chesster(config);
+
+ /* basic machine hardware */
+ m_maincpu->set_clock(3.579545_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::kishon_map);
+}
+
+
+
+/******************************************************************************
+ ROM Definitions
+******************************************************************************/
+
+ROM_START( reversic )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1000a01", 0xf000, 0x1000, CRC(ca7723a7) SHA1(bd92330f2d9494fa408f5a2ca300d7a755bdf489) )
+ROM_END
+
+
+ROM_START( csc )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64109", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("1025a03", 0xa000, 0x2000, CRC(63982c07) SHA1(5ed4356323d5c80df216da55994abe94ba4aa94c) )
+ ROM_LOAD("1025a02", 0xc000, 0x2000, CRC(9e6e7c69) SHA1(4f1ed9141b6596f4d2b1217d7a4ba48229f3f1b0) )
+ ROM_LOAD("1025a01", 0xe000, 0x2000, CRC(57f068c3) SHA1(7d2ac4b9a2fba19556782863bdd89e2d2d94e97b) )
+ ROM_LOAD("74s474", 0xfe00, 0x0200, CRC(4511ba31) SHA1(e275b1739f8c3aa445cccb6a2b597475f507e456) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) )
+ ROM_RELOAD( 0x1000, 0x1000)
+ROM_END
+
+ROM_START( cscsp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64109", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("1025a03", 0xa000, 0x2000, CRC(63982c07) SHA1(5ed4356323d5c80df216da55994abe94ba4aa94c) )
+ ROM_LOAD("1025a02", 0xc000, 0x2000, CRC(9e6e7c69) SHA1(4f1ed9141b6596f4d2b1217d7a4ba48229f3f1b0) )
+ ROM_LOAD("1025a01", 0xe000, 0x2000, CRC(57f068c3) SHA1(7d2ac4b9a2fba19556782863bdd89e2d2d94e97b) )
+ ROM_LOAD("74s474", 0xfe00, 0x0200, CRC(4511ba31) SHA1(e275b1739f8c3aa445cccb6a2b597475f507e456) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64106", 0x0000, 0x2000, BAD_DUMP CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // taken from vcc/fexcelv, assume correct
+ROM_END
+
+ROM_START( cscg )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64109", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("1025a03", 0xa000, 0x2000, CRC(63982c07) SHA1(5ed4356323d5c80df216da55994abe94ba4aa94c) )
+ ROM_LOAD("1025a02", 0xc000, 0x2000, CRC(9e6e7c69) SHA1(4f1ed9141b6596f4d2b1217d7a4ba48229f3f1b0) )
+ ROM_LOAD("1025a01", 0xe000, 0x2000, CRC(57f068c3) SHA1(7d2ac4b9a2fba19556782863bdd89e2d2d94e97b) )
+ ROM_LOAD("74s474", 0xfe00, 0x0200, CRC(4511ba31) SHA1(e275b1739f8c3aa445cccb6a2b597475f507e456) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
+ROM_END
+
+ROM_START( cscfr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64109", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("1025a03", 0xa000, 0x2000, CRC(63982c07) SHA1(5ed4356323d5c80df216da55994abe94ba4aa94c) )
+ ROM_LOAD("1025a02", 0xc000, 0x2000, CRC(9e6e7c69) SHA1(4f1ed9141b6596f4d2b1217d7a4ba48229f3f1b0) )
+ ROM_LOAD("1025a01", 0xe000, 0x2000, CRC(57f068c3) SHA1(7d2ac4b9a2fba19556782863bdd89e2d2d94e97b) )
+ ROM_LOAD("74s474", 0xfe00, 0x0200, CRC(4511ba31) SHA1(e275b1739f8c3aa445cccb6a2b597475f507e456) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64105", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
+ROM_END
+
+
+ROM_START( super9cc )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1050a01", 0x2000, 0x2000, CRC(421147e8) SHA1(ccf62f6f218e8992baf30973fe41b35e14a1cc1a) )
+ ROM_LOAD("101-1024b03", 0xa000, 0x0800, CRC(e8c97455) SHA1(ed2958fc5474253ee8c2eaf27fc64226e12f80ea) )
+ ROM_LOAD("101-1024b02", 0xc000, 0x2000, CRC(95004699) SHA1(ea79f43da73267344545df8ad61730f613876c2e) )
+ ROM_LOAD("101-1024c01", 0xe000, 0x2000, CRC(03904e86) SHA1(bfa0dd9d8541e3ec359a247a3eba543501f727bc) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-32107", 0x0000, 0x1000, BAD_DUMP CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) ) // taken from csc, assume correct
+ ROM_RELOAD( 0x1000, 0x1000)
+ROM_END
+
+ROM_START( super9ccsp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1050a01", 0x2000, 0x2000, CRC(421147e8) SHA1(ccf62f6f218e8992baf30973fe41b35e14a1cc1a) )
+ ROM_LOAD("101-1024b03", 0xa000, 0x0800, CRC(e8c97455) SHA1(ed2958fc5474253ee8c2eaf27fc64226e12f80ea) )
+ ROM_LOAD("101-1024b02", 0xc000, 0x2000, CRC(95004699) SHA1(ea79f43da73267344545df8ad61730f613876c2e) )
+ ROM_LOAD("101-1024c01", 0xe000, 0x2000, CRC(03904e86) SHA1(bfa0dd9d8541e3ec359a247a3eba543501f727bc) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64106", 0x0000, 0x2000, BAD_DUMP CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // taken from vcc/fexcelv, assume correct
+ROM_END
+
+ROM_START( super9ccg )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1050a01", 0x2000, 0x2000, CRC(421147e8) SHA1(ccf62f6f218e8992baf30973fe41b35e14a1cc1a) )
+ ROM_LOAD("101-1024b03", 0xa000, 0x0800, CRC(e8c97455) SHA1(ed2958fc5474253ee8c2eaf27fc64226e12f80ea) )
+ ROM_LOAD("101-1024b02", 0xc000, 0x2000, CRC(95004699) SHA1(ea79f43da73267344545df8ad61730f613876c2e) )
+ ROM_LOAD("101-1024c01", 0xe000, 0x2000, CRC(03904e86) SHA1(bfa0dd9d8541e3ec359a247a3eba543501f727bc) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
+ROM_END
+
+ROM_START( super9ccfr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1050a01", 0x2000, 0x2000, CRC(421147e8) SHA1(ccf62f6f218e8992baf30973fe41b35e14a1cc1a) )
+ ROM_LOAD("101-1024b03", 0xa000, 0x0800, CRC(e8c97455) SHA1(ed2958fc5474253ee8c2eaf27fc64226e12f80ea) )
+ ROM_LOAD("101-1024b02", 0xc000, 0x2000, CRC(95004699) SHA1(ea79f43da73267344545df8ad61730f613876c2e) )
+ ROM_LOAD("101-1024c01", 0xe000, 0x2000, CRC(03904e86) SHA1(bfa0dd9d8541e3ec359a247a3eba543501f727bc) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64105", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
+ROM_END
+
+
+ROM_START( feasbu )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("eli_bu.6", 0x8000, 0x0800, CRC(93dcc23b) SHA1(2eb8c5a85e566948bc256d6b1804694e6b0ffa6f) ) // ST M27C64A, unknown label
+ ROM_CONTINUE( 0x9000, 0x0800 )
+ ROM_CONTINUE( 0x8800, 0x0800 )
+ ROM_CONTINUE( 0x9800, 0x0800 )
+ ROM_LOAD("101-1052a02.4", 0xc000, 0x2000, CRC(859d69f1) SHA1(a8b057683369e2387f22fc7e916b6f3c75d44b21) ) // Mostek MK36C63N-5
+ ROM_LOAD("101-1052a01.5", 0xe000, 0x2000, CRC(571a33a7) SHA1(43b110cf0918caf16643178f401e58b2dc73894f) ) // Mostek MK36C63N-5
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) ) // NEC D2332C
+ ROM_RELOAD( 0x1000, 0x1000)
+ROM_END
+
+ROM_START( feasbusp )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("eli_bu.6", 0x8000, 0x0800, CRC(93dcc23b) SHA1(2eb8c5a85e566948bc256d6b1804694e6b0ffa6f) )
+ ROM_CONTINUE( 0x9000, 0x0800 )
+ ROM_CONTINUE( 0x8800, 0x0800 )
+ ROM_CONTINUE( 0x9800, 0x0800 )
+ ROM_LOAD("101-1052a02.4", 0xc000, 0x2000, CRC(859d69f1) SHA1(a8b057683369e2387f22fc7e916b6f3c75d44b21) )
+ ROM_LOAD("101-1052a01.5", 0xe000, 0x2000, CRC(571a33a7) SHA1(43b110cf0918caf16643178f401e58b2dc73894f) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64106", 0x0000, 0x2000, BAD_DUMP CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // taken from vcc/fexcelv, assume correct
+ROM_END
+
+ROM_START( feasbug )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("eli_bu.6", 0x8000, 0x0800, CRC(93dcc23b) SHA1(2eb8c5a85e566948bc256d6b1804694e6b0ffa6f) )
+ ROM_CONTINUE( 0x9000, 0x0800 )
+ ROM_CONTINUE( 0x8800, 0x0800 )
+ ROM_CONTINUE( 0x9800, 0x0800 )
+ ROM_LOAD("101-1052a02.4", 0xc000, 0x2000, CRC(859d69f1) SHA1(a8b057683369e2387f22fc7e916b6f3c75d44b21) )
+ ROM_LOAD("101-1052a01.5", 0xe000, 0x2000, CRC(571a33a7) SHA1(43b110cf0918caf16643178f401e58b2dc73894f) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
+ROM_END
+
+ROM_START( feasbufr )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("eli_bu.6", 0x8000, 0x0800, CRC(93dcc23b) SHA1(2eb8c5a85e566948bc256d6b1804694e6b0ffa6f) )
+ ROM_CONTINUE( 0x9000, 0x0800 )
+ ROM_CONTINUE( 0x8800, 0x0800 )
+ ROM_CONTINUE( 0x9800, 0x0800 )
+ ROM_LOAD("101-1052a02.4", 0xc000, 0x2000, CRC(859d69f1) SHA1(a8b057683369e2387f22fc7e916b6f3c75d44b21) )
+ ROM_LOAD("101-1052a01.5", 0xe000, 0x2000, CRC(571a33a7) SHA1(43b110cf0918caf16643178f401e58b2dc73894f) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64105", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
+ROM_END
+
+ROM_START( feasgla )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("eli_gla.6", 0x8000, 0x0800, CRC(2fdddb4f) SHA1(6da0a328a45462f285ae6a0756f97c5a43148f97) )
+ ROM_CONTINUE( 0x9000, 0x0800 )
+ ROM_CONTINUE( 0x8800, 0x0800 )
+ ROM_CONTINUE( 0x9800, 0x0800 )
+ ROM_LOAD("eli_gla.4", 0xc000, 0x0800, CRC(f094e625) SHA1(fef84c6a3da504aac15988ec9af94417e5fedfbd) )
+ ROM_CONTINUE( 0xd000, 0x0800 )
+ ROM_CONTINUE( 0xc800, 0x0800 )
+ ROM_CONTINUE( 0xd800, 0x0800 )
+ ROM_LOAD("eli_gla.5", 0xe000, 0x0800, CRC(5f6845d1) SHA1(684eb16faf36a49560e5a73b55fd0022dc090e35) )
+ ROM_CONTINUE( 0xf000, 0x0800 )
+ ROM_CONTINUE( 0xe800, 0x0800 )
+ ROM_CONTINUE( 0xf800, 0x0800 )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) ) // NEC D2332C
+ ROM_RELOAD( 0x1000, 0x1000)
+ROM_END
+
+ROM_START( feasglasp )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("eli_gla.6", 0x8000, 0x0800, CRC(2fdddb4f) SHA1(6da0a328a45462f285ae6a0756f97c5a43148f97) )
+ ROM_CONTINUE( 0x9000, 0x0800 )
+ ROM_CONTINUE( 0x8800, 0x0800 )
+ ROM_CONTINUE( 0x9800, 0x0800 )
+ ROM_LOAD("eli_gla.4", 0xc000, 0x0800, CRC(f094e625) SHA1(fef84c6a3da504aac15988ec9af94417e5fedfbd) )
+ ROM_CONTINUE( 0xd000, 0x0800 )
+ ROM_CONTINUE( 0xc800, 0x0800 )
+ ROM_CONTINUE( 0xd800, 0x0800 )
+ ROM_LOAD("eli_gla.5", 0xe000, 0x0800, CRC(5f6845d1) SHA1(684eb16faf36a49560e5a73b55fd0022dc090e35) )
+ ROM_CONTINUE( 0xf000, 0x0800 )
+ ROM_CONTINUE( 0xe800, 0x0800 )
+ ROM_CONTINUE( 0xf800, 0x0800 )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64106", 0x0000, 0x2000, BAD_DUMP CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // taken from vcc/fexcelv, assume correct
+ROM_END
+
+ROM_START( feasglag )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("eli_gla.6", 0x8000, 0x0800, CRC(2fdddb4f) SHA1(6da0a328a45462f285ae6a0756f97c5a43148f97) )
+ ROM_CONTINUE( 0x9000, 0x0800 )
+ ROM_CONTINUE( 0x8800, 0x0800 )
+ ROM_CONTINUE( 0x9800, 0x0800 )
+ ROM_LOAD("eli_gla.4", 0xc000, 0x0800, CRC(f094e625) SHA1(fef84c6a3da504aac15988ec9af94417e5fedfbd) )
+ ROM_CONTINUE( 0xd000, 0x0800 )
+ ROM_CONTINUE( 0xc800, 0x0800 )
+ ROM_CONTINUE( 0xd800, 0x0800 )
+ ROM_LOAD("eli_gla.5", 0xe000, 0x0800, CRC(5f6845d1) SHA1(684eb16faf36a49560e5a73b55fd0022dc090e35) )
+ ROM_CONTINUE( 0xf000, 0x0800 )
+ ROM_CONTINUE( 0xe800, 0x0800 )
+ ROM_CONTINUE( 0xf800, 0x0800 )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
+ROM_END
+
+ROM_START( feasglafr )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("eli_gla.6", 0x8000, 0x0800, CRC(2fdddb4f) SHA1(6da0a328a45462f285ae6a0756f97c5a43148f97) )
+ ROM_CONTINUE( 0x9000, 0x0800 )
+ ROM_CONTINUE( 0x8800, 0x0800 )
+ ROM_CONTINUE( 0x9800, 0x0800 )
+ ROM_LOAD("eli_gla.4", 0xc000, 0x0800, CRC(f094e625) SHA1(fef84c6a3da504aac15988ec9af94417e5fedfbd) )
+ ROM_CONTINUE( 0xd000, 0x0800 )
+ ROM_CONTINUE( 0xc800, 0x0800 )
+ ROM_CONTINUE( 0xd800, 0x0800 )
+ ROM_LOAD("eli_gla.5", 0xe000, 0x0800, CRC(5f6845d1) SHA1(684eb16faf36a49560e5a73b55fd0022dc090e35) )
+ ROM_CONTINUE( 0xf000, 0x0800 )
+ ROM_CONTINUE( 0xe800, 0x0800 )
+ ROM_CONTINUE( 0xf800, 0x0800 )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64105", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
+ROM_END
+
+
+ROM_START( fpres )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("u09_yellow", 0xb000, 0x1000, CRC(03fac294) SHA1(5a9d72978318c61185efd4bc9e4a868c226465b8) )
+ ROM_LOAD("u10_green", 0xc000, 0x1000, CRC(5d049d5e) SHA1(c7359bead92729e8a92d6cf1789d87ae43d23cbf) )
+ ROM_LOAD("u11_black", 0xd000, 0x1000, CRC(98bd01b7) SHA1(48cc560c4ca736f54e30d757990ff403c05c39ae) )
+ ROM_LOAD("u12_blue", 0xe000, 0x1000, CRC(6f18115f) SHA1(a08b3a66bfdc23f3400e03fe253a8b9a4967d14f) )
+ ROM_LOAD("u13_red", 0xf000, 0x1000, CRC(dea8091d) SHA1(1d94a90ae076215c2c009e78ec4919dbd8467ef8) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-32107", 0x0000, 0x1000, BAD_DUMP CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) ) // taken from csc, assume correct
+ ROM_RELOAD( 0x1000, 0x1000)
+ROM_END
+
+ROM_START( fpressp )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("u09_yellow", 0xb000, 0x1000, CRC(03fac294) SHA1(5a9d72978318c61185efd4bc9e4a868c226465b8) )
+ ROM_LOAD("u10_green", 0xc000, 0x1000, CRC(5d049d5e) SHA1(c7359bead92729e8a92d6cf1789d87ae43d23cbf) )
+ ROM_LOAD("u11_black", 0xd000, 0x1000, CRC(98bd01b7) SHA1(48cc560c4ca736f54e30d757990ff403c05c39ae) )
+ ROM_LOAD("u12_blue", 0xe000, 0x1000, CRC(6f18115f) SHA1(a08b3a66bfdc23f3400e03fe253a8b9a4967d14f) )
+ ROM_LOAD("u13_red", 0xf000, 0x1000, CRC(dea8091d) SHA1(1d94a90ae076215c2c009e78ec4919dbd8467ef8) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64106", 0x0000, 0x2000, BAD_DUMP CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // taken from vcc/fexcelv, assume correct
+ROM_END
+
+ROM_START( fpresg )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("u09_yellow", 0xb000, 0x1000, CRC(03fac294) SHA1(5a9d72978318c61185efd4bc9e4a868c226465b8) )
+ ROM_LOAD("u10_green", 0xc000, 0x1000, CRC(5d049d5e) SHA1(c7359bead92729e8a92d6cf1789d87ae43d23cbf) )
+ ROM_LOAD("u11_black", 0xd000, 0x1000, CRC(98bd01b7) SHA1(48cc560c4ca736f54e30d757990ff403c05c39ae) )
+ ROM_LOAD("u12_blue", 0xe000, 0x1000, CRC(6f18115f) SHA1(a08b3a66bfdc23f3400e03fe253a8b9a4967d14f) )
+ ROM_LOAD("u13_red", 0xf000, 0x1000, CRC(dea8091d) SHA1(1d94a90ae076215c2c009e78ec4919dbd8467ef8) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
+ROM_END
+
+ROM_START( fpresfr )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("u09_yellow", 0xb000, 0x1000, CRC(03fac294) SHA1(5a9d72978318c61185efd4bc9e4a868c226465b8) )
+ ROM_LOAD("u10_green", 0xc000, 0x1000, CRC(5d049d5e) SHA1(c7359bead92729e8a92d6cf1789d87ae43d23cbf) )
+ ROM_LOAD("u11_black", 0xd000, 0x1000, CRC(98bd01b7) SHA1(48cc560c4ca736f54e30d757990ff403c05c39ae) )
+ ROM_LOAD("u12_blue", 0xe000, 0x1000, CRC(6f18115f) SHA1(a08b3a66bfdc23f3400e03fe253a8b9a4967d14f) )
+ ROM_LOAD("u13_red", 0xf000, 0x1000, CRC(dea8091d) SHA1(1d94a90ae076215c2c009e78ec4919dbd8467ef8) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64105", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
+ROM_END
+
+ROM_START( fpresbu )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("u09_yellow", 0xb000, 0x1000, CRC(bb1cb486) SHA1(b83f50a3ef361d254b88eefaa5aac657aaa72375) )
+ ROM_LOAD("u10_green", 0xc000, 0x1000, CRC(af0aec0e) SHA1(8293d00a12efa1c142b9e37bc7786012250536d9) )
+ ROM_LOAD("u11_black", 0xd000, 0x1000, CRC(214a91cc) SHA1(aab07ecdd66ac208874f4053fc4b0b0659b017aa) )
+ ROM_LOAD("u12_blue", 0xe000, 0x1000, CRC(dae4d8e4) SHA1(f06dbb643f0324c0bddaaae9537d5829768bda22) )
+ ROM_LOAD("u13_red", 0xf000, 0x1000, CRC(5fb67708) SHA1(1e9ee724c2be38daf39d5cf37b0ae587e408777c) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-32107", 0x0000, 0x1000, BAD_DUMP CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) ) // taken from csc, assume correct
+ ROM_RELOAD( 0x1000, 0x1000)
+ROM_END
+
+ROM_START( fpresbusp )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("u09_yellow", 0xb000, 0x1000, CRC(bb1cb486) SHA1(b83f50a3ef361d254b88eefaa5aac657aaa72375) )
+ ROM_LOAD("u10_green", 0xc000, 0x1000, CRC(af0aec0e) SHA1(8293d00a12efa1c142b9e37bc7786012250536d9) )
+ ROM_LOAD("u11_black", 0xd000, 0x1000, CRC(214a91cc) SHA1(aab07ecdd66ac208874f4053fc4b0b0659b017aa) )
+ ROM_LOAD("u12_blue", 0xe000, 0x1000, CRC(dae4d8e4) SHA1(f06dbb643f0324c0bddaaae9537d5829768bda22) )
+ ROM_LOAD("u13_red", 0xf000, 0x1000, CRC(5fb67708) SHA1(1e9ee724c2be38daf39d5cf37b0ae587e408777c) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64106", 0x0000, 0x2000, BAD_DUMP CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // taken from vcc/fexcelv, assume correct
+ROM_END
+
+ROM_START( fpresbug )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("u09_yellow", 0xb000, 0x1000, CRC(bb1cb486) SHA1(b83f50a3ef361d254b88eefaa5aac657aaa72375) )
+ ROM_LOAD("u10_green", 0xc000, 0x1000, CRC(af0aec0e) SHA1(8293d00a12efa1c142b9e37bc7786012250536d9) )
+ ROM_LOAD("u11_black", 0xd000, 0x1000, CRC(214a91cc) SHA1(aab07ecdd66ac208874f4053fc4b0b0659b017aa) )
+ ROM_LOAD("u12_blue", 0xe000, 0x1000, CRC(dae4d8e4) SHA1(f06dbb643f0324c0bddaaae9537d5829768bda22) )
+ ROM_LOAD("u13_red", 0xf000, 0x1000, CRC(5fb67708) SHA1(1e9ee724c2be38daf39d5cf37b0ae587e408777c) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
+ROM_END
+
+ROM_START( fpresbufr )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("u09_yellow", 0xb000, 0x1000, CRC(bb1cb486) SHA1(b83f50a3ef361d254b88eefaa5aac657aaa72375) )
+ ROM_LOAD("u10_green", 0xc000, 0x1000, CRC(af0aec0e) SHA1(8293d00a12efa1c142b9e37bc7786012250536d9) )
+ ROM_LOAD("u11_black", 0xd000, 0x1000, CRC(214a91cc) SHA1(aab07ecdd66ac208874f4053fc4b0b0659b017aa) )
+ ROM_LOAD("u12_blue", 0xe000, 0x1000, CRC(dae4d8e4) SHA1(f06dbb643f0324c0bddaaae9537d5829768bda22) )
+ ROM_LOAD("u13_red", 0xf000, 0x1000, CRC(5fb67708) SHA1(1e9ee724c2be38daf39d5cf37b0ae587e408777c) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64105", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
+ROM_END
+
+
+ROM_START( feag2100 )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("el2100.2", 0xc000, 0x2000, CRC(76fec42f) SHA1(34660edb8458919fd179e93fdab3fe428a6625d0) )
+ ROM_LOAD("el2100.3", 0xe000, 0x2000, CRC(2079a506) SHA1(a7bb83138c7b6eff6ea96702d453a214697f4890) )
+
+ ROM_REGION( 0x8000, "rombank", 0 )
+ ROM_LOAD("el2100.1", 0x0000, 0x8000, CRC(9b62b7d5) SHA1(cfcaea2e36c2d52fe4a85c77dbc7fa135893860c) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-32107", 0x0000, 0x1000, BAD_DUMP CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) ) // taken from csc, assume correct
+ ROM_RELOAD( 0x1000, 0x1000)
+ROM_END
+
+ROM_START( feag2100sp )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("el2100.2", 0xc000, 0x2000, CRC(76fec42f) SHA1(34660edb8458919fd179e93fdab3fe428a6625d0) )
+ ROM_LOAD("el2100.3", 0xe000, 0x2000, CRC(2079a506) SHA1(a7bb83138c7b6eff6ea96702d453a214697f4890) )
+
+ ROM_REGION( 0x8000, "rombank", 0 )
+ ROM_LOAD("el2100.1", 0x0000, 0x8000, CRC(9b62b7d5) SHA1(cfcaea2e36c2d52fe4a85c77dbc7fa135893860c) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64106", 0x0000, 0x2000, BAD_DUMP CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // taken from vcc/fexcelv, assume correct
+ROM_END
+
+ROM_START( feag2100g )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("el2100.2", 0xc000, 0x2000, CRC(76fec42f) SHA1(34660edb8458919fd179e93fdab3fe428a6625d0) )
+ ROM_LOAD("el2100.3", 0xe000, 0x2000, CRC(2079a506) SHA1(a7bb83138c7b6eff6ea96702d453a214697f4890) )
+
+ ROM_REGION( 0x8000, "rombank", 0 )
+ ROM_LOAD("el2100.1", 0x0000, 0x8000, CRC(9b62b7d5) SHA1(cfcaea2e36c2d52fe4a85c77dbc7fa135893860c) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
+ROM_END
+
+ROM_START( feag2100fr )
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("el2100.2", 0xc000, 0x2000, CRC(76fec42f) SHA1(34660edb8458919fd179e93fdab3fe428a6625d0) )
+ ROM_LOAD("el2100.3", 0xe000, 0x2000, CRC(2079a506) SHA1(a7bb83138c7b6eff6ea96702d453a214697f4890) )
+
+ ROM_REGION( 0x8000, "rombank", 0 )
+ ROM_LOAD("el2100.1", 0x0000, 0x8000, CRC(9b62b7d5) SHA1(cfcaea2e36c2d52fe4a85c77dbc7fa135893860c) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64105", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
+ROM_END
+
+
+ROM_START( fscc9 ) // PCB label 510-1046D01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1034b01", 0xc000, 0x2000, CRC(65288753) SHA1(651f5ca5969ddd72a20cbebdec2de83c4bf10650) )
+ ROM_LOAD("101-1034c02", 0xe000, 0x2000, CRC(238b092f) SHA1(7ddffc6dba822aee9d8ad6815b23024ed5cdfd26) )
+ROM_END
+
+ROM_START( fscc9b ) // PCB label 510-1046B01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1034a01", 0xc000, 0x2000, CRC(b845c458) SHA1(d3fda65dbd9fae44fa4b93f8207839d8fa0c367a) )
+ ROM_LOAD("101-1034a02", 0xe000, 0x2000, CRC(ecfa0a4c) SHA1(738df99a250fad0b1da5ebeb8c92a9ad1461417b) )
+ROM_END
+
+ROM_START( fscc9c ) // PCB label 510-1046C01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1034a01", 0xc000, 0x2000, CRC(b845c458) SHA1(d3fda65dbd9fae44fa4b93f8207839d8fa0c367a) ) // HN48364P
+ ROM_LOAD("101-1034b02", 0xe000, 0x2000, CRC(cbaf97d7) SHA1(7ed8e68bb74713d9e2ff1d9c037012320b7bfcbf) ) // "
+ROM_END
+
+ROM_START( fscc9ps )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("play64c1.bin", 0xc000, 0x2000, CRC(e96aa95d) SHA1(16d90cf0ef166aef579d442671290a2c43e24dfe) )
+ ROM_LOAD("play64en.bin", 0xe000, 0x2000, CRC(6fa188d2) SHA1(1b9b0209c496c89ecb7f9ec07bfd9429ff9b275e) )
+ROM_END
+
+
+ROM_START( fscc12 ) // model SC12, PCB label 510-1084B01
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("101-1068a01.ic15", 0x8000, 0x2000, CRC(63c76cdd) SHA1(e0771c98d4483a6b1620791cb99a7e46b0db95c4) ) // SSS SCM23C65E4
+ ROM_LOAD("orange.ic13", 0xc000, 0x1000, CRC(ed5289b2) SHA1(9b0c7f9ae4102d4a66eb8c91d4e84b9eec2ffb3d) ) // TI TMS2732AJL-45, no label, orange sticker
+ ROM_LOAD("red.ic14", 0xe000, 0x2000, CRC(0c4968c4) SHA1(965a66870b0f8ce9549418cbda09d2ff262a1504) ) // TI TMS2764JL-25, no label, red sticker
+ROM_END
+
+ROM_START( fscc12b ) // model 6086, PCB label 510-1084B01
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("101-1068a01.ic15", 0x8000, 0x2000, CRC(63c76cdd) SHA1(e0771c98d4483a6b1620791cb99a7e46b0db95c4) ) // SSS SCM23C65E4
+ ROM_LOAD("orange.ic13", 0xc000, 0x1000, CRC(45070a71) SHA1(8aeecff828f26fb7081902c757559903be272649) ) // TI TMS2732AJL-45, no label, orange sticker
+ ROM_LOAD("red.ic14", 0xe000, 0x2000, CRC(183d3edc) SHA1(3296a4c3bce5209587d4a1694fce153558544e63) ) // Toshiba TMM2764D-2, no label, red sticker
+ROM_END
+
+
+ROM_START( feleg ) // model AS12(or 6085), PCB label 510-1084B01
+ ROM_REGION( 0x10000, "mainmap", 0 )
+ ROM_LOAD("feleg.1", 0x8000, 0x2000, CRC(e9df31e8) SHA1(31c52bb8f75580c82093eb950959c1bc294189a8) ) // TMM2764, no label
+ ROM_LOAD("feleg.2", 0xc000, 0x2000, CRC(bed9c84b) SHA1(c12f39765b054d2ad81f747e698715ad4246806d) ) // "
+ ROM_LOAD("feleg.3", 0xe000, 0x2000, CRC(b1fb49aa) SHA1(d8c9687dd564f0fa603e6d684effb1d113ac64b4) ) // "
+ROM_END
+
+
+ROM_START( fexcel ) // model 6080(B), PCB label 510.1117A02
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1080a01.ic5", 0x8000, 0x8000, CRC(846f8e40) SHA1(4e1d5b08d5ff3422192b54fa82cb3f505a69a971) )
+ROM_END
+
+ROM_START( fexceld ) // model 6093, PCB label 510.1117A02
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1080a01.ic5", 0x8000, 0x8000, CRC(846f8e40) SHA1(4e1d5b08d5ff3422192b54fa82cb3f505a69a971) ) // same rom as fexcel
+ROM_END
+
+ROM_START( fexcelv ) // model 6092, PCB label 510.1117A02, sound PCB 510.1117A01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1080a01.ic5", 0x8000, 0x8000, CRC(846f8e40) SHA1(4e1d5b08d5ff3422192b54fa82cb3f505a69a971) ) // PCB1, M27256, same rom as fexcel
+
+ ROM_REGION( 0x8000, "speech", 0 )
+ ROM_LOAD("101-1081a01.ic2", 0x0000, 0x8000, CRC(c8ae1607) SHA1(6491ce6be60ed77f3dd931c0ca17616f13af943e) ) // PCB2, M27256
+ROM_END
+
+ROM_START( fexcel12 ) // model EP12, PCB label 510-1099A01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1072a01.ic5", 0xc000, 0x4000, CRC(212b006d) SHA1(242ff851b0841cbec66bbada6a730da021010e2c) )
+ROM_END
+
+ROM_START( fexcel124 ) // model EP12, PCB label 510-1099A01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1073a01.ic5", 0xc000, 0x4000, CRC(3e221534) SHA1(7516bc6a8aab9d8ac30ac1a9317630a6aa9ac1a0) )
+ROM_END
+
+ROM_START( fexcela ) // model 6080, PCB label 510-1099A01(manuf.1985) or 510-1099B01(manuf.1986)
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1072b01.ic5", 0xc000, 0x4000, CRC(fd2f6064) SHA1(f84bb98bdb9565a04891eb6820597d7aecc90c21) ) // RCA
+ROM_END
+
+
+ROM_START( fexcelp ) // model 6083, PCB label 510-1099A01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) )
+ROM_END
+
+ROM_START( fexcelpb ) // model 6083, PCB label 510-1099B01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("par_ex.ic5", 0x8000, 0x8000, CRC(0d17b0f0) SHA1(3a6070fd4718c62b62ff0f08637bb6eb84eb9a1c) ) // GI 27C256, no label, only 1 byte difference, assume bugfix in bookrom
+ROM_END
+
+ROM_START( granits ) // modified SC12 board, overclocked Par Excellence program
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("granit_s-4", 0x8000, 0x8000, CRC(274d6aff) SHA1(c8d943b2f15422ac62f539b568f5509cbce568a3) )
+ROM_END
+
+ROM_START( fdes2000 ) // model 6102, PCB label 510.1129A01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) ) // AMI, same label as fexcelp
+ROM_END
+
+ROM_START( fdes2100 ) // model 6103, PCB label 510.1129A01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) ) // same as fdes2000
+ROM_END
+
+
+ROM_START( fdes2100d ) // model 6106, PCB label 510.1130A01. The 'rev B' dump came from a post-release bugfix by Fidelity
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("i9_orange.ic9", 0x8000, 0x8000, CRC(83fec02a) SHA1(6f43ab05bc605061989b05d0592dbd184efff9d4) ) // WSI 27C256L-12
+
+ ROM_REGION( 0x8000, "rombank", 0 )
+ ROM_LOAD("bk3_white.ic10", 0x0000, 0x8000, CRC(3857cc35) SHA1(f073dafb9fd885c7ddb7fbff10e3653f343ef1c6) ) // WSI 27C256L-12
+ROM_END
+
+ROM_START( fdes2000d ) // model 6105, PCB label 510.1130A01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("27c256.ic9", 0x8000, 0x8000, CRC(b136d1a1) SHA1(8438790a62f45284ff33a0255c5c89f526726d3e) ) // 27C256, no label
+
+ ROM_REGION( 0x8000, "rombank", ROMREGION_ERASEFF ) // no rom in ic10
+ROM_END
+
+
+ROM_START( fphantom ) // model 6100, PCB label 510.1128A01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("u_3c_yellow.u3", 0x8000, 0x8000, CRC(fb7c38ae) SHA1(a1aa7637705052cb4eec92644dc79aee7ba4d77c) ) // 27C256
+
+ ROM_REGION( 0x8000, "rombank", 0 )
+ ROM_LOAD("u_4_white.u4", 0x0000, 0x8000, CRC(e4181ba2) SHA1(1f77d1867c6f566be98645fc252a01108f412c96) ) // 27C256
+ROM_END
+
+
+ROM_START( chesster ) // model 6120, PCB label 510.1141C01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("ch_1.3.ic9", 0x8000, 0x8000, CRC(8b42d1ad) SHA1(2161fc5ab2476fe7ca4ffc226e3cb329b8a57a01) ) // 27256, CH 1.3 on sticker
+
+ ROM_REGION( 0x20000, "rombank", 0 )
+ ROM_LOAD("101-1091b02.ic10", 0x0000, 0x20000, CRC(fa370e88) SHA1(a937c8f1ec295cf9539d12466993974e40771493) ) // AMI, 27C010 or equivalent
+ROM_END
+
+ROM_START( chesstera ) // model 6120, PCB label 510.1141C01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("chesster.ic9", 0x8000, 0x8000, CRC(29f9a698) SHA1(4c83ca46fd5fc9c40302e9c7f16b4ae2c18b06e6) ) // M27C256B, sticker but no label
+
+ ROM_REGION( 0x20000, "rombank", 0 )
+ ROM_LOAD("101-1091a02.ic10", 0x0000, 0x20000, CRC(2b4d243c) SHA1(921e51978facb502b207b4f64a73b1e74127e826) ) // AMI, 27C010 or equivalent
+ROM_END
+
+ROM_START( kishon ) // model 6120G or 6127(same), PCB label 510.1141C01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("kishon.ic9", 0x8000, 0x8000, CRC(121c007f) SHA1(652e9ea47b6bb1632d10eb0fcd7f98cdba22fce7) ) // 27C256
+
+ ROM_REGION( 0x80000, "rombank", 0 )
+ ROM_LOAD("kishon_v2.6_1-14-91.ic10", 0x0000, 0x80000, CRC(50598869) SHA1(2087e0c2f40a2408fe217a6502c8c3a247bdd063) ) // Toshiba TC544000P-12, aka 101-1094A01
+ROM_END
+
+
+
+/******************************************************************************
+ Drivers
+******************************************************************************/
+
+// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
+CONS( 1981, reversic, 0, 0, rsc, rsc, fidel6502_state, empty_init, "Fidelity Electronics", "Reversi Sensory Challenger (green version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1981, csc, 0, 0, csc, csc, fidel6502_state, empty_init, "Fidelity Electronics", "Champion Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1981, cscsp, csc, 0, csc, cscsp, fidel6502_state, empty_init, "Fidelity Electronics", "Champion Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1981, cscg, csc, 0, csc, cscg, fidel6502_state, empty_init, "Fidelity Electronics", "Champion Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1981, cscfr, csc, 0, csc, cscfr, fidel6502_state, empty_init, "Fidelity Electronics", "Champion Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1983, super9cc, 0, 0, su9, su9, fidel6502_state, empty_init, "Fidelity Electronics", "Super 9 Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1983, super9ccsp, super9cc, 0, su9, su9sp, fidel6502_state, empty_init, "Fidelity Electronics", "Super 9 Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1983, super9ccg, super9cc, 0, su9, su9g, fidel6502_state, empty_init, "Fidelity Electronics", "Super 9 Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1983, super9ccfr, super9cc, 0, su9, su9fr, fidel6502_state, empty_init, "Fidelity Electronics", "Super 9 Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1983, feasbu, 0, 0, eas, eas, fidel6502_state, empty_init, "Fidelity Electronics", "Elite A/S Challenger (Budapest program, English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1983, feasbusp, feasbu, 0, eas, eassp, fidel6502_state, empty_init, "Fidelity Electronics", "Elite A/S Challenger (Budapest program, Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1983, feasbug, feasbu, 0, eas, easg, fidel6502_state, empty_init, "Fidelity Electronics", "Elite A/S Challenger (Budapest program, German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1983, feasbufr, feasbu, 0, eas, easfr, fidel6502_state, empty_init, "Fidelity Electronics", "Elite A/S Challenger (Budapest program, French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1984, feasgla, feasbu, 0, eas, eas, fidel6502_state, empty_init, "Fidelity Electronics", "Elite A/S Challenger (Glasgow program, English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1984, feasglasp, feasbu, 0, eas, eassp, fidel6502_state, empty_init, "Fidelity Electronics", "Elite A/S Challenger (Glasgow program, Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1984, feasglag, feasbu, 0, eas, easg, fidel6502_state, empty_init, "Fidelity Electronics", "Elite A/S Challenger (Glasgow program, German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1984, feasglafr, feasbu, 0, eas, easfr, fidel6502_state, empty_init, "Fidelity Electronics", "Elite A/S Challenger (Glasgow program, French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1982, fpres, 0, 0, pc, eas, fidel6502_state, empty_init, "Fidelity Electronics", "Prestige Challenger (original program, English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1982, fpressp, fpres, 0, pc, eassp, fidel6502_state, empty_init, "Fidelity Electronics", "Prestige Challenger (original program, Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1982, fpresg, fpres, 0, pc, easg, fidel6502_state, empty_init, "Fidelity Electronics", "Prestige Challenger (original program, German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1982, fpresfr, fpres, 0, pc, easfr, fidel6502_state, empty_init, "Fidelity Electronics", "Prestige Challenger (original program, French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1983, fpresbu, fpres, 0, pc, eas, fidel6502_state, empty_init, "Fidelity Electronics", "Prestige Challenger (Budapest program, English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1983, fpresbusp, fpres, 0, pc, eassp, fidel6502_state, empty_init, "Fidelity Electronics", "Prestige Challenger (Budapest program, Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1983, fpresbug, fpres, 0, pc, easg, fidel6502_state, empty_init, "Fidelity Electronics", "Prestige Challenger (Budapest program, German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1983, fpresbufr, fpres, 0, pc, easfr, fidel6502_state, empty_init, "Fidelity Electronics", "Prestige Challenger (Budapest program, French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1986, feag2100, 0, 0, eag, eag, fidel6502_state, init_eag, "Fidelity Electronics", "Elite Avant Garde 2100 (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1986, feag2100sp, feag2100, 0, eag, eagsp, fidel6502_state, init_eag, "Fidelity Electronics", "Elite Avant Garde 2100 (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1986, feag2100g, feag2100, 0, eag, eagg, fidel6502_state, init_eag, "Fidelity Electronics", "Elite Avant Garde 2100 (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1986, feag2100fr, feag2100, 0, eag, eagfr, fidel6502_state, init_eag, "Fidelity Electronics", "Elite Avant Garde 2100 (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1982, fscc9, 0, 0, sc9d, sc9, fidel6502_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger 9 (rev. D)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS ) // aka version "B"
+CONS( 1982, fscc9b, fscc9, 0, sc9b, sc9, fidel6502_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger 9 (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1982, fscc9c, fscc9, 0, sc9c, sc9c, fidel6502_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger 9 (rev. C)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1983, fscc9ps, fscc9, 0, playmatic, playmatic, fidel6502_state, empty_init, "Fidelity Electronics", "Sensory 9 Playmatic 'S'", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS ) // Fidelity West Germany
+
+CONS( 1984, fscc12, 0, 0, sc12, sc12, fidel6502_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger 12", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
+CONS( 1984, fscc12b, fscc12, 0, sc12b, sc12b, fidel6502_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger 12-B", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
+
+CONS( 1985, feleg, 0, 0, as12, as12, fidel6502_state, empty_init, "Fidelity Electronics", "Elegance Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
+
+CONS( 1987, fexcel, 0, 0, fexcelb, fexcelb, fidel6502_state, empty_init, "Fidelity Electronics", "The Excellence (model 6080B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1987, fexcelv, fexcel, 0, fexcelv, fexcelv, fidel6502_state, empty_init, "Fidelity Electronics", "Voice Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1987, fexceld, fexcel, 0, fexceld, fexcelb, fidel6502_state, empty_init, "Fidelity Electronics", "Excel Display", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1985, fexcel12, fexcel, 0, fexcel, fexcel, fidel6502_state, empty_init, "Fidelity Electronics", "The Excellence (model EP12, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS ) // 1st version of The Excellence
+CONS( 1985, fexcel124, fexcel, 0, fexcel4, fexcel, fidel6502_state, empty_init, "Fidelity Electronics", "The Excellence (model EP12, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1985, fexcela, fexcel, 0, fexcel, fexcel, fidel6502_state, empty_init, "Fidelity Electronics", "The Excellence (model 6080)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1986, fexcelp, 0, 0, fexcelp, fexcel, fidel6502_state, empty_init, "Fidelity Electronics", "The Par Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1986, fexcelpb, fexcelp, 0, fexcelp, fexcel, fidel6502_state, empty_init, "Fidelity Electronics", "The Par Excellence (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1986, granits, fexcelp, 0, granits, fexcel, fidel6502_state, empty_init, "hack (RCS)", "Granit 'S'", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1988, fdes2000, fexcelp, 0, fdes2000, fdes, fidel6502_state, empty_init, "Fidelity Electronics", "Designer 2000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS ) // Excellence series hardware
+CONS( 1988, fdes2100, fexcelp, 0, fdes2100, fdes, fidel6502_state, empty_init, "Fidelity Electronics", "Designer 2100", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS ) // "
+
+CONS( 1988, fdes2100d, 0, 0, fdes2100d, fdesdis, fidel6502_state, init_fdesdis, "Fidelity Electronics", "Designer 2100 Display (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1988, fdes2000d, fdes2100d,0, fdes2000d, fdesdis, fidel6502_state, init_fdesdis, "Fidelity Electronics", "Designer 2000 Display", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1988, fphantom, 0, 0, fphantom, fphantom, fidel6502_state, init_fphantom, "Fidelity Electronics", "Phantom (Fidelity)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
+
+CONS( 1990, chesster, 0, 0, chesster, chesster, fidel6502_state, init_chesster, "Fidelity Electronics", "Chesster Challenger (V1.3)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1990, chesstera, chesster, 0, chesster, chesster, fidel6502_state, init_chesster, "Fidelity Electronics", "Chesster Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1991, kishon, chesster, 0, kishon, chesster, fidel6502_state, init_chesster, "Fidelity Electronics", "Kishon Chesster", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/fidel68k.cpp b/src/mame/drivers/fidel68k.cpp
new file mode 100644
index 00000000000..7b8046f62cc
--- /dev/null
+++ b/src/mame/drivers/fidel68k.cpp
@@ -0,0 +1,818 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+// thanks-to:Berger,yoyo_chessboard
+/******************************************************************************
+
+ Fidelity Electronics 68000 based board driver
+
+ NOTE: MAME doesn't include a generalized implementation for boardpieces yet,
+ greatly affecting user playability of emulated electronic board games.
+ As workaround for the chess games, use an external chess GUI on the side,
+ such as Arena(in editmode).
+
+ TODO:
+ - USART is not emulated
+ - V9(68030 @ 32MHz) is faster than V10(68040 @ 25MHz) but it should be the other
+ way around, culprit is unemulated cache?
+ - V11 CPU should be M68EC060, not yet emulated. Now using M68EC040 in its place
+ at twice the frequency due to lack of superscalar.
+ - V11 beeper is too high pitched, obviously related to wrong CPU type too
+
+******************************************************************************
+
+Excel 68000 (model 6094)
+------------------------
+16KB RAM(2*SRM2264C-10 @ U8/U9), 64KB ROM(2*AT27C256-15DC @ U6/U7)
+HD68HC000P12 CPU, 12MHz XTAL
+PCB label 510-1129A01
+PCB has edge connector for module, but no external slot
+
+There's room for 2 SIMMs at U22 and U23, unpopulated in Excel 68000 and Mach III.
+Mach II has 2*64KB DRAM with a MB1422A DRAM controller @ 25MHz.
+Mach III has wire mods from U22/U23 to U8/U9(2*8KB + 2*32KB piggybacked).
+Mach IV has 2*256KB DRAM, and a daughterboard(510.1123B01) for the 68020.
+
+I/O is via TTL, overall very similar to EAG.
+
+
+******************************************************************************
+
+Designer Mach III Master 2265 (model 6113)
+------------------------------------------
+80KB RAM(2*KM6264AL-10, 2*KM62256AP-10), 64KB ROM(2*WSI 27C256L-12)
+MC68HC000P12F CPU, 16MHz XTAL
+IRQ(IPL2) from 555 timer, 1.67ms low, 6us high
+PCB label 510.1134A02
+
+ROM address/data lines are scrambled, presumed for easy placement on PCB and not
+for obfuscation. I/O is nearly the same as Designer Display on 6502 hardware.
+
+Designer Mach IV Master 2325 (model 6129)
+-----------------------------------------
+32KB(4*P5164-70) + 512KB(TC518512PL-80) RAM, 64KB ROM(TMS 27C512-120JL)
+MC68EC020RP25 CPU, 20MHz XTAL
+PCB label 510.1149A01
+It has a green "Shift" led instead of red, and ROM is not scrambled.
+
+
+******************************************************************************
+
+
+Elite Avant Garde (EAG, model 6114)
+-----------------------------------
+
+There are 5 versions of model 6114(V1 to V5). The one emulated here came from a V2,
+but is practically emulated as a V4.
+
+V1: 128KB DRAM, no EEPROM
+V2: 128KB DRAM
+V3: 512KB DRAM
+V4: 1MB DRAM
+V5: 128KB+64KB DRAM, dual-CPU! (2*68K @ 16MHz)
+
+V6-V11 are on model 6117. Older 1986 model 6081/6088/6089 uses a 6502 CPU.
+
+Hardware info:
+--------------
+- MC68HC000P12F 16MHz CPU, 16MHz XTAL
+- MB1422A DRAM Controller, 25MHz XTAL near, 4 DRAM slots
+ (V2: slot 2 & 3 64KB, V3: slot 2 & 3 256KB)
+- 2*27C512 64KB EPROM, 2*KM6264AL-10 8KB SRAM, 2*AT28C64X 8KB EEPROM
+- OKI M82C51A-2 USART, 4.9152MHz XTAL
+- other special: magnet sensors, external module slot, serial port
+
+IRQ source is a 4,9152MHz quartz crystal (Y3) connected to a 74HC4060 (U8,
+ripple counter/divider). From Q13 output (counter=8192) we obtain the IRQ signal
+applied to IPL1 of 68000 (pin 24) 4,9152 MHz / 8192 = 600 Hz.
+
+The module slot pinout is different from SCC series. The data on those appears
+to be compatible with EAG though and will load fine with an adapter.
+
+The USART allows for a serial connection between the chess computer and another
+device, for example a PC. Fidelity released a DOS tool called EAGLINK which
+featured PC printer support, complete I/O control, detailed information while
+the program is 'thinking', etc.
+
+Memory map: (of what is known)
+-----------
+000000-01FFFF: 128KB ROM
+104000-107FFF: 16KB SRAM
+200000-2FFFFF: hashtable DRAM (max. 1MB)
+300000-30000F W hi d0: NE591: 7seg data
+300000-30000F W lo d0: NE591: LED data
+300000-30000F R lo d7: 74259: keypad rows 0-7
+400000-400001 W lo d0-d3: 74145/7442: led/keypad mux, buzzer out
+400000-4????? R hi: external module slot
+700002-700003 R lo d7: 74251: keypad row 8
+604000-607FFF: 16KB EEPROM
+
+
+******************************************************************************
+
+Elite Avant Garde (EAG, model 6117)
+-----------------------------------
+
+There are 6 versions of model 6114(V6 to V11). From a programmer's point of view,
+the hardware is very similar to model 6114.
+
+V6: 68020, 512KB hashtable RAM
+V7: 68020, 1MB h.RAM
+V8: 2*68020, 512KB+128KB h.RAM
+V9: 68030, 1MB h.RAM
+V10: 68040, 1MB h.RAM
+V11: 68060, 2MB h.RAM, high speed
+
+V7 Hardware info:
+-----------------
+- MC68020RC25E CPU, 25MHz XTAL - this PCB was overclocked, original was 20MHz so let's use that
+- 4*AS7C164-20PC 8KB SRAM, 2*KM684000ALG-7L 512KB CMOS SRAM
+- 2*27C512? 64KB EPROM, 2*HM6264LP-15 8KB SRAM, 2*AT28C64B 8KB EEPROM, 2*GAL16V8C
+- same as 6114: M82C51A, NE555, SN74HC4060, module slot, chessboard, ..
+
+V7 Memory map:
+--------------
+000000-01FFFF: 128KB ROM
+104000-107FFF: 16KB SRAM (unused?)
+200000-2FFFFF: hashtable SRAM
+300000-30000x: see model 6114
+400000-40000x: see model 6114
+700000-70000x: see model 6114
+604000-607FFF: 16KB EEPROM
+800000-807FFF: 32KB SRAM
+
+V10 Hardware info:
+------------------
+- 68040 CPU, 25MHz
+- other: assume same or very similar to V11(see below)
+
+The ROM dump came from the V11(see below). Built-in factory test proves
+that this program is a V10. Hold TB button immediately after power-on and
+press it for a sequence of tests:
+1) all LEDs on
+2) F40C: V10 program version
+3) 38b9: V10 ROM checksum
+4) xxxx: external module ROM checksum (0000 if no module present)
+5) xxxx: user settings (stored in EEPROM)
+6) xxxx: "
+7) 1024: hashtable RAM size
+8) return to game
+
+V11 Hardware info:
+------------------
+- MC68EC060RC75 CPU, 36MHz XTAL(36MHz bus, 72MHz CPU), CPU cooler required
+- 4*CXK5863AP-20 8KB SRAM, 4*K6X4008C1F-DF55 512KB CMOS SRAM
+- 4*M27C256B 32KB EPROM, 2*AT28C64 8KB EEPROM, 5*GAL16V8D
+- NEC D71051C USART, assume 8MHz, on quick glance it's same as the OKI USART
+- same as 6114: NE555, SN74HC4060, module slot, chessboard, ..
+
+This is a custom overclocked V10, manufactured by Wilfried Bucke. PCB is marked:
+"CHESS HW DESIGN COPYRIGHT 22-10-2002: REVA03 510.1136A01/510.1144B01 COMPONENT SIDE"
+There are two versions of this, one with a 66MHz CPU, one with a 72MHz CPU.
+Maybe other differences too?
+
+V1x Memory map:
+---------------
+000000-01FFFF: 128KB ROM
+200000-3FFFFF: hashtable SRAM (less on V10?)
+B0000x-xxxxxx: see V7, -800000
+
+******************************************************************************/
+
+#include "emu.h"
+#include "includes/fidelbase.h"
+
+#include "cpu/m68000/m68000.h"
+#include "machine/ram.h"
+#include "machine/nvram.h"
+#include "sound/volt_reg.h"
+#include "speaker.h"
+
+// internal artwork
+#include "fidel_desdis_68kg.lh" // clickable
+#include "fidel_desdis_68kr.lh" // clickable
+#include "fidel_ex_68k.lh" // clickable
+#include "fidel_eag_68k.lh" // clickable
+
+
+class fidel68k_state : public fidelbase_state
+{
+public:
+ fidel68k_state(const machine_config &mconfig, device_type type, const char *tag)
+ : fidelbase_state(mconfig, type, tag),
+ m_ram(*this, "ram")
+ { }
+
+ void fex68k(machine_config &config);
+ void fex68km2(machine_config &config);
+ void fex68km3(machine_config &config);
+
+ void fdes2265(machine_config &config);
+ void fdes2325(machine_config &config);
+ void init_fdes2265();
+
+ void eag_base(machine_config &config);
+ void eag(machine_config &config);
+ void eagv7(machine_config &config);
+ void eagv9(machine_config &config);
+ void eagv10(machine_config &config);
+ void eagv11(machine_config &config);
+ void init_eag();
+
+private:
+ optional_device<ram_device> m_ram;
+
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(M68K_IRQ_2, ASSERT_LINE); }
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(M68K_IRQ_2, CLEAR_LINE); }
+
+ // Excel 68000
+ DECLARE_WRITE8_MEMBER(fex68k_mux_w);
+ void fex68k_map(address_map &map);
+ void fex68km2_map(address_map &map);
+ void fex68km3_map(address_map &map);
+
+ // Designer Master
+ DECLARE_WRITE8_MEMBER(fdes68k_control_w);
+ DECLARE_READ8_MEMBER(fdes68k_input_r);
+ DECLARE_WRITE8_MEMBER(fdes68k_lcd_w);
+ void fdes2265_map(address_map &map);
+ void fdes2325_map(address_map &map);
+
+ // EAG(6114/6117)
+ void eag_prepare_display();
+ DECLARE_READ8_MEMBER(eag_input1_r);
+ DECLARE_WRITE8_MEMBER(eag_leds_w);
+ DECLARE_WRITE8_MEMBER(eag_7seg_w);
+ DECLARE_WRITE8_MEMBER(eag_mux_w);
+ DECLARE_READ8_MEMBER(eag_input2_r);
+ void eag_map(address_map &map);
+ void eagv7_map(address_map &map);
+ void eagv11_map(address_map &map);
+};
+
+
+
+// Devices, I/O
+
+/******************************************************************************
+ Excel 68000
+******************************************************************************/
+
+WRITE8_MEMBER(fidel68k_state::fex68k_mux_w)
+{
+ // a1-a3,d0: 74259
+ u8 mask = 1 << offset;
+ m_led_select = (m_led_select & ~mask) | ((data & 1) ? mask : 0);
+
+ // 74259 Q0-Q3: 74145 A-D (Q4-Q7 N/C)
+ eag_mux_w(space, offset, m_led_select & 0xf);
+}
+
+
+
+/******************************************************************************
+ Designer Master
+******************************************************************************/
+
+WRITE8_MEMBER(fidel68k_state::fdes68k_control_w)
+{
+ u8 q3_old = m_led_select & 8;
+
+ // a1-a3,d0: 74259
+ u8 mask = 1 << offset;
+ m_led_select = (m_led_select & ~mask) | ((data & 1) ? mask : 0);
+
+ // 74259 Q4-Q7: 7442 a0-a3
+ // 7442 0-8: led data, input mux
+ u16 sel = 1 << (m_led_select >> 4 & 0xf) & 0x3ff;
+ m_inp_mux = sel & 0x1ff;
+
+ // 7442 9: speaker out
+ m_dac->write(BIT(sel, 9));
+
+ // 74259 Q0,Q1: led select (active low)
+ display_matrix(9, 2, m_inp_mux, ~m_led_select & 3, false);
+
+ // 74259 Q3: lcd common, update on rising edge
+ if (~q3_old & m_led_select & 8)
+ {
+ for (int i = 0; i < 4; i++)
+ m_display_state[i+2] = m_7seg_data >> (8*i) & 0xff;
+ }
+
+ m_display_maxy += 4;
+ set_display_segmask(0x3c, 0x7f);
+ display_update();
+}
+
+READ8_MEMBER(fidel68k_state::fdes68k_input_r)
+{
+ // a1-a3,d7(d15): multiplexed inputs (active low)
+ return (read_inputs(9) >> offset & 1) ? 0 : 0x80;
+}
+
+WRITE8_MEMBER(fidel68k_state::fdes68k_lcd_w)
+{
+ // a1-a3,d0-d3: 4*74259 to lcd digit segments
+ u32 mask = bitswap<8>(1 << offset,3,7,6,0,1,2,4,5);
+ for (int i = 0; i < 4; i++)
+ {
+ m_7seg_data = (m_7seg_data & ~mask) | ((data >> i & 1) ? mask : 0);
+ mask <<= 8;
+ }
+}
+
+void fidel68k_state::init_fdes2265()
+{
+ u16 *rom = (u16*)memregion("maincpu")->base();
+ const u32 len = memregion("maincpu")->bytes() / 2;
+
+ // descramble data lines
+ for (int i = 0; i < len; i++)
+ rom[i] = bitswap<16>(rom[i], 15,14,8,13,9,12,10,11, 3,4,5,7,6,0,1,2);
+
+ // descramble address lines
+ std::vector<u16> buf(len);
+ memcpy(&buf[0], rom, len*2);
+ for (int i = 0; i < len; i++)
+ rom[i] = buf[bitswap<24>(i, 23,22,21,20,19,18,17,16, 15,14,13,12,11,8,10,9, 7,6,5,4,3,2,1,0)];
+}
+
+
+
+/******************************************************************************
+ EAG
+******************************************************************************/
+
+// TTL/generic
+
+void fidel68k_state::eag_prepare_display()
+{
+ // Excel 68000: 4*7seg leds, 8*8 chessboard leds
+ // EAG: 8*7seg leds(2 panels), (8+1)*8 chessboard leds
+ u8 seg_data = bitswap<8>(m_7seg_data,0,1,3,2,7,5,6,4);
+ set_display_segmask(0x1ff, 0x7f);
+ display_matrix(16, 9, m_led_data << 8 | seg_data, m_inp_mux);
+}
+
+READ8_MEMBER(fidel68k_state::eag_input1_r)
+{
+ // a1-a3,d7: multiplexed inputs (active low)
+ return (read_inputs(9) >> offset & 1) ? 0 : 0x80;
+}
+
+READ8_MEMBER(fidel68k_state::eag_input2_r)
+{
+ // d7: multiplexed inputs highest bit
+ return (read_inputs(9) & 0x100) ? 0x80 : 0;
+}
+
+WRITE8_MEMBER(fidel68k_state::eag_leds_w)
+{
+ // a1-a3,d0: led data
+ m_led_data = (m_led_data & ~(1 << offset)) | ((data & 1) << offset);
+ eag_prepare_display();
+}
+
+WRITE8_MEMBER(fidel68k_state::eag_7seg_w)
+{
+ // a1-a3,d0(d8): digit segment data
+ m_7seg_data = (m_7seg_data & ~(1 << offset)) | ((data & 1) << offset);
+ eag_prepare_display();
+}
+
+WRITE8_MEMBER(fidel68k_state::eag_mux_w)
+{
+ // d0-d3: 74145 A-D
+ // 74145 0-8: input mux, digit/led select
+ // 74145 9: speaker out
+ u16 sel = 1 << (data & 0xf);
+ m_dac->write(BIT(sel, 9));
+ m_inp_mux = sel & 0x1ff;
+ eag_prepare_display();
+}
+
+
+
+/******************************************************************************
+ Address Maps
+******************************************************************************/
+
+// Excel 68000
+
+void fidel68k_state::fex68k_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x000000, 0x00000f).mirror(0x00fff0).w(FUNC(fidel68k_state::eag_leds_w)).umask16(0x00ff);
+ map(0x000000, 0x00000f).mirror(0x00fff0).w(FUNC(fidel68k_state::eag_7seg_w)).umask16(0xff00);
+ map(0x044000, 0x047fff).ram();
+ map(0x100000, 0x10000f).mirror(0x03fff0).r(FUNC(fidel68k_state::eag_input1_r)).umask16(0x00ff);
+ map(0x140000, 0x14000f).mirror(0x03fff0).w(FUNC(fidel68k_state::fex68k_mux_w)).umask16(0x00ff);
+}
+
+void fidel68k_state::fex68km2_map(address_map &map)
+{
+ fex68k_map(map);
+ map(0x200000, 0x21ffff).ram();
+}
+
+void fidel68k_state::fex68km3_map(address_map &map)
+{
+ fex68k_map(map);
+ map(0x200000, 0x20ffff).ram();
+}
+
+
+// Designer Master
+
+void fidel68k_state::fdes2265_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x00ffff).rom();
+ map(0x000000, 0x00000f).w(FUNC(fidel68k_state::fdes68k_lcd_w)).umask16(0x00ff);
+ map(0x044000, 0x047fff).ram();
+ map(0x100000, 0x10ffff).ram();
+ map(0x140000, 0x14000f).r(FUNC(fidel68k_state::fdes68k_input_r)).umask16(0xff00);
+ map(0x140000, 0x14000f).w(FUNC(fidel68k_state::fdes68k_control_w)).umask16(0x00ff);
+}
+
+void fidel68k_state::fdes2325_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x00ffff).rom();
+ map(0x100000, 0x10000f).w(FUNC(fidel68k_state::fdes68k_lcd_w)).umask32(0x00ff00ff);
+ map(0x140000, 0x14000f).w(FUNC(fidel68k_state::fdes68k_control_w)).umask32(0x00ff00ff);
+ map(0x180000, 0x18000f).r(FUNC(fidel68k_state::fdes68k_input_r)).umask32(0xff00ff00);
+ map(0x300000, 0x37ffff).ram();
+ map(0x500000, 0x507fff).ram();
+}
+
+
+// EAG
+
+void fidel68k_state::init_eag()
+{
+ // eag_map: DRAM slots at $200000-$2fffff - V1/V2: 128K, V3: 512K, V4: 1M
+ m_maincpu->space(AS_PROGRAM).install_ram(0x200000, 0x200000 + m_ram->size() - 1, m_ram->pointer());
+}
+
+void fidel68k_state::eag_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x104000, 0x107fff).ram();
+ map(0x300000, 0x30000f).mirror(0x000010).w(FUNC(fidel68k_state::eag_7seg_w)).umask16(0xff00).nopr();
+ map(0x300000, 0x30000f).mirror(0x000010).rw(FUNC(fidel68k_state::eag_input1_r), FUNC(fidel68k_state::eag_leds_w)).umask16(0x00ff);
+ map(0x400000, 0x407fff).r(FUNC(fidel68k_state::cartridge_r)).umask16(0xff00);
+ map(0x400001, 0x400001).w(FUNC(fidel68k_state::eag_mux_w));
+ map(0x400002, 0x400007).nopw(); // ?
+ map(0x604000, 0x607fff).ram().share("nvram");
+ map(0x700003, 0x700003).r(FUNC(fidel68k_state::eag_input2_r));
+}
+
+void fidel68k_state::eagv7_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x104000, 0x107fff).ram();
+ map(0x200000, 0x2fffff).ram();
+ map(0x300000, 0x30000f).mirror(0x000010).w(FUNC(fidel68k_state::eag_7seg_w)).umask32(0xff00ff00).nopr();
+ map(0x300000, 0x30000f).mirror(0x000010).rw(FUNC(fidel68k_state::eag_input1_r), FUNC(fidel68k_state::eag_leds_w)).umask32(0x00ff00ff);
+ map(0x400000, 0x407fff).r(FUNC(fidel68k_state::cartridge_r)).umask32(0xff00ff00);
+ map(0x400001, 0x400001).w(FUNC(fidel68k_state::eag_mux_w));
+ map(0x400004, 0x400007).nopw(); // ?
+ map(0x604000, 0x607fff).ram().share("nvram");
+ map(0x700003, 0x700003).r(FUNC(fidel68k_state::eag_input2_r));
+ map(0x800000, 0x807fff).ram();
+}
+
+void fidel68k_state::eagv11_map(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).rom();
+ map(0x00200000, 0x003fffff).ram();
+ map(0x00b00000, 0x00b0000f).mirror(0x00000010).w(FUNC(fidel68k_state::eag_7seg_w)).umask32(0xff00ff00).nopr();
+ map(0x00b00000, 0x00b0000f).mirror(0x00000010).rw(FUNC(fidel68k_state::eag_input1_r), FUNC(fidel68k_state::eag_leds_w)).umask32(0x00ff00ff);
+ map(0x00c00000, 0x00c07fff).r(FUNC(fidel68k_state::cartridge_r)).umask32(0xff00ff00);
+ map(0x00c00001, 0x00c00001).w(FUNC(fidel68k_state::eag_mux_w));
+ map(0x00c00004, 0x00c00007).nopw(); // ?
+ map(0x00e04000, 0x00e07fff).ram().share("nvram");
+ map(0x00f00003, 0x00f00003).r(FUNC(fidel68k_state::eag_input2_r));
+ map(0x01000000, 0x0101ffff).ram();
+}
+
+
+
+/******************************************************************************
+ Input Ports
+******************************************************************************/
+
+static INPUT_PORTS_START( fex68k )
+ PORT_INCLUDE( fidel_cb_buttons )
+
+ PORT_START("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Move / Pawn")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Hint / Knight")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Take Back / Bishop")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Level / Rook")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Options / Queen")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Verify / King")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_N) PORT_NAME("New Game")
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( fdes68k )
+ PORT_INCLUDE( fidel_cb_buttons )
+
+ PORT_START("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("Move / Alternate")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Hint / Info")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("Take Back / Replay")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Level / New")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_NAME("Option / Time")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Verify / Problem")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("Shift")
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( eag )
+ PORT_INCLUDE( fidel_cb_magnets )
+
+ PORT_MODIFY("IN.0")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
+
+ PORT_MODIFY("IN.1")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("DM")
+
+ PORT_MODIFY("IN.2")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_N) PORT_NAME("New Game")
+
+ PORT_START("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("PB / King")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("PV / Queen")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("TM / Rook")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("ST / Bishop")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("TB / Knight")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("LV / Pawn")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("Option")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("RV")
+INPUT_PORTS_END
+
+
+
+/******************************************************************************
+ Machine Drivers
+******************************************************************************/
+
+MACHINE_CONFIG_START(fidel68k_state::fex68k)
+
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", M68000, 12_MHz_XTAL) // HD68HC000P12
+ MCFG_DEVICE_PROGRAM_MAP(fex68k_map)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel68k_state, irq_on, attotime::from_hz(618)) // theoretical frequency from 556 timer (22nF, 91K + 20K POT @ 14.8K, 0.1K), measurement was 580Hz
+ MCFG_TIMER_START_DELAY(attotime::from_hz(618) - attotime::from_nsec(1525)) // active for 1.525us
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel68k_state, irq_off, attotime::from_hz(618))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
+ config.set_default_layout(layout_fidel_ex_68k);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(fidel68k_state::fex68km2)
+ fex68k(config);
+
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(fex68km2_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(fidel68k_state::fex68km3)
+ fex68k(config);
+
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(16_MHz_XTAL) // factory overclock
+ MCFG_DEVICE_PROGRAM_MAP(fex68km3_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(fidel68k_state::fdes2265)
+
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL) // MC68HC000P12F
+ MCFG_DEVICE_PROGRAM_MAP(fdes2265_map)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel68k_state, irq_on, attotime::from_hz(597)) // from 555 timer, measured
+ MCFG_TIMER_START_DELAY(attotime::from_hz(597) - attotime::from_nsec(6000)) // active for 6us
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel68k_state, irq_off, attotime::from_hz(597))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
+ config.set_default_layout(layout_fidel_desdis_68kr);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(fidel68k_state::fdes2325)
+ fdes2265(config);
+
+ /* basic machine hardware */
+ MCFG_DEVICE_REPLACE("maincpu", M68EC020, 20_MHz_XTAL) // MC68EC020RP25
+ MCFG_DEVICE_PROGRAM_MAP(fdes2325_map)
+
+ config.set_default_layout(layout_fidel_desdis_68kg);
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(fidel68k_state::eag_base)
+
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(eag_map)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel68k_state, irq_on, attotime::from_hz(4.9152_MHz_XTAL/0x2000)) // 600Hz
+ MCFG_TIMER_START_DELAY(attotime::from_hz(4.9152_MHz_XTAL/0x2000) - attotime::from_nsec(8250)) // active for 8.25us
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel68k_state, irq_off, attotime::from_hz(4.9152_MHz_XTAL/0x2000))
+
+ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
+ config.set_default_layout(layout_fidel_eag_68k);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+
+ /* cartridge */
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "fidel_scc")
+ MCFG_GENERIC_EXTENSIONS("bin,dat")
+ MCFG_GENERIC_LOAD(fidelbase_state, scc_cartridge)
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "fidel_scc")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(fidel68k_state::eag)
+ eag_base(config);
+ RAM(config, "ram").set_default_size("1M").set_extra_options("128K, 512K, 1M");
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(fidel68k_state::eagv7)
+ eag_base(config);
+
+ /* basic machine hardware */
+ MCFG_DEVICE_REPLACE("maincpu", M68020, 20_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(eagv7_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(fidel68k_state::eagv9)
+ eagv7(config);
+
+ /* basic machine hardware */
+ MCFG_DEVICE_REPLACE("maincpu", M68030, 32_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(eagv7_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(fidel68k_state::eagv10)
+ eagv7(config);
+
+ /* basic machine hardware */
+ MCFG_DEVICE_REPLACE("maincpu", M68040, 25_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(eagv11_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(fidel68k_state::eagv11)
+ eagv7(config);
+
+ /* basic machine hardware */
+ MCFG_DEVICE_REPLACE("maincpu", M68EC040, 36_MHz_XTAL*2*2) // wrong! should be M68EC060 @ 72MHz
+ MCFG_DEVICE_PROGRAM_MAP(eagv11_map)
+
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(fidel68k_state, irq2_line_hold, 600)
+ MCFG_DEVICE_REMOVE("irq_on") // 8.25us is too long
+ MCFG_DEVICE_REMOVE("irq_off")
+MACHINE_CONFIG_END
+
+
+
+/******************************************************************************
+ ROM Definitions
+******************************************************************************/
+
+ROM_START( fex68k ) // model 6094, PCB label 510.1120B01
+ ROM_REGION16_BE( 0x10000, "maincpu", 0 )
+ ROM_LOAD16_BYTE("e3_yellow.u6", 0x00000, 0x08000, CRC(a8a27714) SHA1(bc42a561eb39dd389c7831f1a25ad260510085d8) ) // AT27C256-15
+ ROM_LOAD16_BYTE("o4_red.u7", 0x00001, 0x08000, CRC(560a14b7) SHA1(11f2375255bfa229314697f103e891ba1cf0c715) ) // "
+ROM_END
+
+ROM_START( fex68ka )
+ ROM_REGION16_BE( 0x10000, "maincpu", 0 )
+ ROM_LOAD16_BYTE("e3_yellow.u6", 0x00000, 0x08000, CRC(7dc60d05) SHA1(e47b4d4e64c4cac6c5a94a900c9f2dd017f849ce) )
+ ROM_LOAD16_BYTE("o4_red.u7", 0x00001, 0x08000, CRC(4b738583) SHA1(ff506296ea460c7ed852339d2ab24aaae01730d8) )
+ROM_END
+
+ROM_START( fex68kb )
+ ROM_REGION16_BE( 0x10000, "maincpu", 0 )
+ ROM_LOAD16_BYTE("e3_yellow.u6", 0x00000, 0x08000, CRC(d9f252f5) SHA1(205cdbadb58a4cdd486d4e40d2fe6a5209d2f8a4) )
+ ROM_LOAD16_BYTE("o4_red.u7", 0x00001, 0x08000, CRC(3bf8b3d7) SHA1(6ce419c63159501d2349abfd1e142e38e5466fbc) )
+ROM_END
+
+ROM_START( fex68km2 ) // model 6097, PCB label 510.1120B01
+ ROM_REGION16_BE( 0x10000, "maincpu", 0 )
+ ROM_LOAD16_BYTE("e6_yellow.u6", 0x00000, 0x08000, CRC(2e65e7ad) SHA1(4f3aec12041c9014d5d700909bac66bae1f9eadf) ) // 27c256
+ ROM_LOAD16_BYTE("o7_red.u7", 0x00001, 0x08000, CRC(4c20334a) SHA1(2e575b88c41505cc89599d2fc13e1e84fe474469) ) // "
+ROM_END
+
+ROM_START( fex68km3 ) // model 6098, PCB label 510.1120B01
+ ROM_REGION16_BE( 0x10000, "maincpu", 0 )
+ ROM_LOAD16_BYTE("me_white.u6", 0x00000, 0x08000, CRC(4b14cd9f) SHA1(4d41196900a71bf0699dae50f4726acc0ed3dced) ) // 27c256
+ ROM_LOAD16_BYTE("mo_yellow.u7", 0x00001, 0x08000, CRC(b96b0b5f) SHA1(281145be802efb38ed764aecb26b511dcd71cb87) ) // "
+ROM_END
+
+
+ROM_START( fdes2265 ) // model 6113, PCB label 510.1134A02
+ ROM_REGION16_BE( 0x10000, "maincpu", 0 )
+ ROM_LOAD16_BYTE("13e_red.ic11", 0x00000, 0x08000, CRC(15a35628) SHA1(8213862e129951c6943a80f73cd0b63a31bb1357) ) // 27c256
+ ROM_LOAD16_BYTE("13o_blue.ic10", 0x00001, 0x08000, CRC(81ce7ab2) SHA1(f01a70bcf2fbfe66c7a77d3c4437d897e5cc682d) ) // "
+ROM_END
+
+ROM_START( fdes2325 ) // model 6129, PCB label 510.1149A01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("61_29_white.ic10", 0x00000, 0x10000, CRC(f74157e1) SHA1(87f3f2d584e292f81593e053240d022cc477834d) ) // 27c512
+
+ ROM_REGION( 0x100, "pals", 0 )
+ ROM_LOAD("101-1097a01.ic19", 0x000, 0x100, NO_DUMP ) // PALCE16V8Q-25PC
+ROM_END
+
+
+ROM_START( feagv2 ) // from a V2 board
+ ROM_REGION16_BE( 0x20000, "maincpu", 0 )
+ ROM_LOAD16_BYTE("6114_e5_yellow.u22", 0x00000, 0x10000, CRC(f9c7bada) SHA1(60e545f829121b9a4f1100d9e85ac83797715e80) ) // 27c512
+ ROM_LOAD16_BYTE("6114_o5_green.u19", 0x00001, 0x10000, CRC(04f97b22) SHA1(8b2845dd115498f7b385e8948eca6a5893c223d1) ) // "
+ROM_END
+
+ROM_START( feagv2a ) // from a V3 board
+ ROM_REGION16_BE( 0x20000, "maincpu", 0 )
+ ROM_LOAD16_BYTE("elite_1.6_e.u22", 0x00000, 0x10000, CRC(c8b89ccc) SHA1(d62e0a72f54b793ab8853468a81255b62f874658) )
+ ROM_LOAD16_BYTE("elite_1.6_o.u19", 0x00001, 0x10000, CRC(904c7061) SHA1(742110576cf673321440bc81a4dae4c949b49e38) )
+ROM_END
+
+ROM_START( feagv7 )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD16_BYTE("eag-v7b", 0x00000, 0x10000, CRC(f2f68b63) SHA1(621e5073e9c5083ac9a9b467f3ef8aa29beac5ac) )
+ ROM_LOAD16_BYTE("eag-v7a", 0x00001, 0x10000, CRC(506b688f) SHA1(0a091c35d0f01166b57f964b111cde51c5720d58) )
+ROM_END
+
+ROM_START( feagv7a )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD16_BYTE("eag-v7b", 0x00000, 0x10000, CRC(44baefbf) SHA1(dbc24340d7e3013cc8f111ebb2a59169c5dcb8e8) )
+ ROM_LOAD16_BYTE("eag-v7a", 0x00001, 0x10000, CRC(951a7857) SHA1(dad21b049fd4f411a79d4faefb922c1277569c0e) )
+ROM_END
+
+ROM_START( feagv9 )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD16_BYTE("eag-v9b", 0x00000, 0x10000, CRC(60523199) SHA1(a308eb6b782732af1ab2fd0ed8b046de7a8dd24b) )
+ ROM_LOAD16_BYTE("eag-v9a", 0x00001, 0x10000, CRC(255c63c0) SHA1(8aa0397bdb3731002f5b066cd04ec62531267e22) )
+ROM_END
+
+ROM_START( feagv10 )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD32_BYTE("16", 0x00000, 0x08000, CRC(8375d61f) SHA1(e042f6f01480c59ee09a458cf34f135664479824) ) // 27c256
+ ROM_LOAD32_BYTE("17", 0x00001, 0x08000, CRC(bfd14916) SHA1(115af6dfd29ddd8ad6d2ce390f8ecc4d60de6fce) ) // "
+ ROM_LOAD32_BYTE("18", 0x00002, 0x08000, CRC(9341dcaf) SHA1(686bd4799e89ffaf11a813d4cf5a2aedd4c2d97a) ) // "
+ ROM_LOAD32_BYTE("19", 0x00003, 0x08000, CRC(a70c5468) SHA1(7f6b4f46577d5cfdaa84d387c7ce35d941e5bbc7) ) // "
+ROM_END
+
+ROM_START( feagv11 )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD32_BYTE("16", 0x00000, 0x08000, CRC(8375d61f) SHA1(e042f6f01480c59ee09a458cf34f135664479824) ) // 27c256
+ ROM_LOAD32_BYTE("17", 0x00001, 0x08000, CRC(bfd14916) SHA1(115af6dfd29ddd8ad6d2ce390f8ecc4d60de6fce) ) // "
+ ROM_LOAD32_BYTE("18", 0x00002, 0x08000, CRC(9341dcaf) SHA1(686bd4799e89ffaf11a813d4cf5a2aedd4c2d97a) ) // "
+ ROM_LOAD32_BYTE("19", 0x00003, 0x08000, CRC(a70c5468) SHA1(7f6b4f46577d5cfdaa84d387c7ce35d941e5bbc7) ) // "
+ROM_END
+
+
+
+/******************************************************************************
+ Drivers
+******************************************************************************/
+
+// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY FULLNAME, FLAGS
+CONS( 1987, fex68k, 0, 0, fex68k, fex68k, fidel68k_state, empty_init, "Fidelity Electronics", "Excel 68000 (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1987, fex68ka, fex68k, 0, fex68k, fex68k, fidel68k_state, empty_init, "Fidelity Electronics", "Excel 68000 (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1987, fex68kb, fex68k, 0, fex68k, fex68k, fidel68k_state, empty_init, "Fidelity Electronics", "Excel 68000 (set 3)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1988, fex68km2, fex68k, 0, fex68km2, fex68k, fidel68k_state, empty_init, "Fidelity Electronics", "Excel 68000 Mach II (rev. C+)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1988, fex68km3, fex68k, 0, fex68km3, fex68k, fidel68k_state, empty_init, "Fidelity Electronics", "Excel 68000 Mach III Master", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1989, fdes2265, 0, 0, fdes2265, fdes68k, fidel68k_state, init_fdes2265, "Fidelity Electronics", "Designer Mach III Master 2265", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1991, fdes2325, fdes2265, 0, fdes2325, fdes68k, fidel68k_state, empty_init, "Fidelity Electronics", "Designer Mach IV Master 2325", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1989, feagv2, 0, 0, eag, eag, fidel68k_state, init_eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1989, feagv2a, feagv2, 0, eag, eag, fidel68k_state, init_eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1990, feagv7, feagv2, 0, eagv7, eag, fidel68k_state, empty_init, "Fidelity Electronics", "Elite Avant Garde (model 6117-7, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1990, feagv7a, feagv2, 0, eagv7, eag, fidel68k_state, empty_init, "Fidelity Electronics", "Elite Avant Garde (model 6117-7, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1990, feagv9, feagv2, 0, eagv9, eag, fidel68k_state, empty_init, "Fidelity Electronics", "Elite Avant Garde (model 6117-9)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1990, feagv10, feagv2, 0, eagv10, eag, fidel68k_state, empty_init, "Fidelity Electronics", "Elite Avant Garde (model 6117-10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
+CONS( 2002, feagv11, feagv2, 0, eagv11, eag, fidel68k_state, empty_init, "hack (Wilfried Bucke)", "Elite Avant Garde (model 6117-11)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
diff --git a/src/mame/drivers/fidel_as12.cpp b/src/mame/drivers/fidel_as12.cpp
deleted file mode 100644
index 9b27dc53940..00000000000
--- a/src/mame/drivers/fidel_as12.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:yoyo_chessboard
-/******************************************************************************
-*
-* fidel_as12.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-*******************************************************************************
-
-Fidelity Elegance Chess Challenger (AS12) overview:
-- R65C02P4 CPU @ 4MHz
-- 3*8KB ROM(TMM2764), 2*2KB RAM(HM6116)
-- PCB label 510-1084B01
-
-This is on the SC12B board, with enough modifications to support more leds and
-magnetic chess board sensors. See fidel_sc12.cpp for a more technical description.
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/m6502/r65c02.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-// internal artwork
-#include "fidel_as12.lh" // clickable
-
-
-namespace {
-
-class as12_state : public fidelbase_state
-{
-public:
- as12_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag)
- { }
-
- // machine drivers
- void as12(machine_config &config);
-
-private:
- // address maps
- void main_map(address_map &map);
-
- // I/O handlers
- void prepare_display();
- DECLARE_WRITE8_MEMBER(control_w);
- DECLARE_WRITE8_MEMBER(led_w);
- DECLARE_READ8_MEMBER(input_r);
-};
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// TTL/generic
-
-void as12_state::prepare_display()
-{
- // 8*8(+1) chessboard leds
- display_matrix(8, 9, m_led_data, m_inp_mux);
-}
-
-WRITE8_MEMBER(as12_state::control_w)
-{
- // d0-d3: 74245 P0-P3
- // 74245 Q0-Q8: input mux, led select
- u16 sel = 1 << (data & 0xf) & 0x3ff;
- m_inp_mux = bitswap<9>(sel,5,8,7,6,4,3,1,0,2);
- prepare_display();
-
- // 74245 Q9: speaker out
- m_dac->write(BIT(sel, 9));
-
- // d4,d5: printer?
- // d6,d7: N/C?
-}
-
-WRITE8_MEMBER(as12_state::led_w)
-{
- // a0-a2,d0: led data via NE591N
- m_led_data = (data & 1) << offset;
- prepare_display();
-}
-
-READ8_MEMBER(as12_state::input_r)
-{
- // a0-a2,d7: multiplexed inputs (active low)
- u8 inp = bitswap<8>(read_inputs(9),4,3,2,1,0,5,6,7);
- return (inp >> offset & 1) ? 0 : 0x80;
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void as12_state::main_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x0000, 0x0fff).ram();
- map(0x1800, 0x1807).w(FUNC(as12_state::led_w)).nopr();
- map(0x2000, 0x5fff).r(FUNC(as12_state::cartridge_r));
- map(0x6000, 0x6000).mirror(0x1fff).w(FUNC(as12_state::control_w));
- map(0x8000, 0x9fff).rom();
- map(0xa000, 0xa007).mirror(0x1ff8).r(FUNC(as12_state::input_r));
- map(0xc000, 0xffff).rom();
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( as12 )
- PORT_INCLUDE( fidel_cpu_div_4 )
- PORT_INCLUDE( generic_cb_magnets )
-
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("RV / Pawn")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("DM / Knight")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("TB / Bishop")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("LV / Rook")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("PV / Queen")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("PB / King")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("RE")
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void as12_state::as12(machine_config &config)
-{
- /* basic machine hardware */
- R65C02(config, m_maincpu, 4_MHz_XTAL); // R65C02P4
- m_maincpu->set_addrmap(AS_PROGRAM, &as12_state::div_trampoline);
- ADDRESS_MAP_BANK(config, m_mainmap).set_map(&as12_state::main_map).set_options(ENDIANNESS_LITTLE, 8, 16);
-
- TIMER(config, "dummy_timer").configure_periodic(timer_device::expired_delegate(), attotime::from_hz(4_MHz_XTAL));
-
- const attotime irq_period = attotime::from_hz(585); // from 556 timer (22nF, 110K, 1K)
- TIMER(config, m_irq_on).configure_periodic(FUNC(as12_state::irq_on<M6502_IRQ_LINE>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_nsec(15250)); // active for 15.25us
- TIMER(config, "irq_off").configure_periodic(FUNC(as12_state::irq_off<M6502_IRQ_LINE>), irq_period);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(as12_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_as12);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-
- /* cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_scc", "bin,dat");
- m_cart->set_device_load(device_image_load_delegate(&as12_state::device_image_load_scc_cartridge, this));
-
- SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( feleg ) // model AS12(or 6085)
- ROM_REGION( 0x10000, "mainmap", 0 )
- ROM_LOAD("feleg.1", 0x8000, 0x2000, CRC(e9df31e8) SHA1(31c52bb8f75580c82093eb950959c1bc294189a8) ) // TMM2764, no label
- ROM_LOAD("feleg.2", 0xc000, 0x2000, CRC(bed9c84b) SHA1(c12f39765b054d2ad81f747e698715ad4246806d) ) // "
- ROM_LOAD("feleg.3", 0xe000, 0x2000, CRC(b1fb49aa) SHA1(d8c9687dd564f0fa603e6d684effb1d113ac64b4) ) // "
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1985, feleg, 0, 0, as12, as12, as12_state, empty_init, "Fidelity Electronics", "Elegance Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
diff --git a/src/mame/drivers/fidel_card.cpp b/src/mame/drivers/fidel_card.cpp
deleted file mode 100644
index ccb8d10ade2..00000000000
--- a/src/mame/drivers/fidel_card.cpp
+++ /dev/null
@@ -1,675 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Kevin Horton, Jonathan Gevaryahu, Sandro Ronco, hap
-/******************************************************************************
-*
-* fidel_card.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-Fidelity electronic card games
-- *Bridge Challenger (BRC)
-- Advanced Bridge Challenger (UBC)
-- Voice Bridge Challenger (VBRC)
-- Bridge Challenger III (English,*French) (BV3)
-- Gin & Cribbage Challenger (GIN)
-- *Skat Challenger (SKT)
-
-*: not dumped yet
-
-NOTE: The card scanner is simulated, but the player is kind of forced to cheat
-and has to peek at the card before it is scanned.
-
-TODO:
-- Z80 WAIT pin is not fully emulated, affecting VBRC speech busy state
-
-*******************************************************************************
-
-Voice Bridge Challenger (Model VBRC, later reissued as Model 7002)
-and Bridge Challenger 3 (Model 7014)
-(which both share the same* hardware)
---------------------------------
-* The Bridge Challenger 3 does not actually have the 8 LEDs nor the
-latches which operate them populated and the plastic indicator cap locations
-are instead are covered by a piece of plastic, but they do work if manually
-added.
-
-RE notes by Kevin Horton
-
-This unit is similar in construction kinda to the chess challengers, however it
-has an 8041 which does ALL of the system I/O. The Z80 has NO IO AT ALL other than
-what is performed through the 8041!
-
-The main CPU is a Z80 running at 2.5MHz
-
-INT connects to VCC (not used)
-NMI connects to VCC (not used)
-RST connects to power on reset, and reset button
-
-The 8041 runs at 5MHz.
-
-Memory Map:
------------
-0000-1FFF: 8K 101-64108 ROM
-2000-3FFF: 8K 101-64109 ROM
-4000-5FFF: 8K 101-64110 ROM
-6000-7FFF: 1K of RAM (2114 * 2)
-8000-DFFF: unused
-E000-FFFF: write to TSI chip
-
-NOTE: when the TSI chip is written to, the CPU IS STOPPED. The CPU will run again
-when the word is done being spoken. This is because D0-D5 run to the TSI chip directly.
-
-The TSI chip's ROM is 4K, and is marked 101-32118. The clock is the same as the Chess
-Challengers- 470K/100pf which gives a frequency around 25KHz or so.
-
-Port Map:
----------
-00-FF: 8041 I/O ports (A0 selects between the two)
-
-8041 pinout:
-------------
-(note: columns are pulled up with 10K resistors)
-
-P10 - column H, RD LED, VFD grid 0
-P11 - column G, DB LED, VFD grid 1
-P12 - column F, <>V LED, VFD grid 2
-P13 - column E, ^V LED, VFD grid 3
-P14 - column D, W LED, VFD grid 4
-P15 - column C, S LED, VFD grid 5
-P16 - column B, E LED, VFD grid 6
-P17 - column A, N LED, VFD grid 7
-
-P20 - I/O expander
-P21 - I/O expander
-P22 - I/O expander
-P23 - I/O expander
-P24 - row 0 through inverter
-P25 - row 1 through inverter
-P26 - row 2 through inverter
-P27 - row 3 through inverter
-
-PROG - I/O expander
-
-T0 - optical card sensor (high = bright/reflective, low = dark/non reflective)
-T1 - connects to inverter, then 5MHz/4
-
-D8243C I/O expander:
---------------------
-P4.0 - segment M
-P4.1 - segment L
-P4.2 - segment N
-P4.3 - segment E
-
-P5.0 - segment D
-P5.1 - segment I
-P5.2 - segment K
-P5.3 - segment J
-
-P6.0 - segment A
-P6.1 - segment B
-P6.2 - segment F
-P6.3 - segment G
-
-P7.0 - LED enable (high = LEDs can be lit. low = LEDs will not light)
-P7.1 - goes through inverter, to pads that are not used
-P7.2 - segment C
-P7.3 - segment H
-
-button matrix:
---------------
-the matrix is composed of 8 columns by 4 rows.
-
- A B C D E F G H
- -------------------------
-0- RE xx CL EN J Q K A
-1- BR PB DB SC 7 8 9 10
-2- DL CV VL PL 3 4 5 6
-3- cl di he sp NT P 1 2
-
-xx - speaker symbol
-cl - clubs symbol
-di - diamonds symbol
-he - hearts symbol
-sp - spades symbol
-
-NOTE: RE is not wired into the matrix, and is run separately out.
-
-There are 8 LEDs, and an 8 digit 14 segment VFD with commas and periods.
-This display is the same one as can be found on the speak and spell.
-
- A * comma
- *********** *
- * *I *J K* *
-F* * * * *B
- * * * * *
- G**** *****H
- * * * * *
-E* * * * *C
- * *N *M L* *
- *********** *decimal point
- D
-
-The digits of the display are numbered left to right, 0 through 7 and are controlled
-by the grids. hi = grid on, hi = segment on.
-
-A detailed description of the hardware can be found also in the patent 4,373,719.
-
-cards:
-------
-Playing cards have a 9-bit barcode on the face side near the edge. Swipe them downward
-against the card scanner and the game will detect the card.
-Barcode sync bits(msb and lsb) are the same for each card so that leaves 7 bits of data:
-2 for suit, 4 for value, and 1 for parity so the card can't be scanned backwards.
-
-Two card decks exist (red and blue), each has the same set of barcodes.
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/z80/z80.h"
-#include "cpu/mcs48/mcs48.h"
-#include "machine/i8243.h"
-#include "machine/clock.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-// internal artwork
-#include "fidel_brc.lh" // clickable
-#include "fidel_bv3.lh" // clickable
-#include "fidel_gin.lh" // clickable
-
-
-namespace {
-
-class card_state : public fidelbase_state
-{
-public:
- card_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag),
- m_mcu(*this, "mcu"),
- m_i8243(*this, "i8243")
- { }
-
- // machine drivers
- void ubc(machine_config &config);
- void vbrc(machine_config &config);
- void bv3(machine_config &config);
- void gin(machine_config &config);
-
- virtual DECLARE_INPUT_CHANGED_MEMBER(reset_button) override;
- DECLARE_INPUT_CHANGED_MEMBER(start_scan);
-
-protected:
- virtual void machine_start() override;
-
-private:
- void brc_base(machine_config &config);
-
- // devices/pointers
- required_device<i8041_device> m_mcu;
- required_device<i8243_device> m_i8243;
-
- // address maps
- void main_map(address_map &map);
- void main_io(address_map &map);
-
- TIMER_DEVICE_CALLBACK_MEMBER(barcode_shift) { m_barcode >>= 1; }
- u32 m_barcode;
-
- // I/O handlers
- void prepare_display();
- DECLARE_WRITE8_MEMBER(speech_w);
- DECLARE_WRITE8_MEMBER(mcu_p1_w);
- DECLARE_READ8_MEMBER(mcu_p2_r);
- DECLARE_READ_LINE_MEMBER(mcu_t0_r);
- template<int P> void ioexp_port_w(uint8_t data);
-};
-
-void card_state::machine_start()
-{
- fidelbase_state::machine_start();
-
- // zerofill/register for savestates
- m_barcode = 0;
- save_item(NAME(m_barcode));
-}
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// misc handlers
-
-void card_state::prepare_display()
-{
- // 14seg led segments, d15(12) is extra led
- u16 outdata = bitswap<16>(m_7seg_data,12,13,1,6,5,2,0,7,15,11,10,14,4,3,9,8);
- set_display_segmask(0xff, 0x3fff);
- display_matrix(16, 8, outdata, m_led_select);
-}
-
-WRITE8_MEMBER(card_state::speech_w)
-{
- if (m_speech == nullptr)
- return;
-
- m_speech->data_w(space, 0, data & 0x3f);
- m_speech->start_w(1);
- m_speech->start_w(0);
-}
-
-
-// I8243 I/O expander
-
-template<int P>
-void card_state::ioexp_port_w(uint8_t data)
-{
- // P4x-P7x: digit segment data
- m_7seg_data = (m_7seg_data & ~(0xf << (4*P))) | ((data & 0xf) << (4*P));
- prepare_display();
-
- // P71 is tone (not on speech model)
- if (P == 3 && m_dac != nullptr)
- m_dac->write(BIT(data, 1));
-}
-
-
-// I8041 MCU
-
-WRITE8_MEMBER(card_state::mcu_p1_w)
-{
- // P10-P17: select digits, input mux
- m_inp_mux = m_led_select = data;
- prepare_display();
-}
-
-READ8_MEMBER(card_state::mcu_p2_r)
-{
- // P20-P23: I8243 P2
- // P24-P27: multiplexed inputs (active low)
- return (m_i8243->p2_r() & 0x0f) | (read_inputs(8) << 4 ^ 0xf0);
-}
-
-READ_LINE_MEMBER(card_state::mcu_t0_r)
-{
- // T0: card scanner light sensor (1=white/none, 0=black)
- return ~m_barcode & 1;
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void card_state::main_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x0000, 0x5fff).rom();
- map(0x6000, 0x63ff).mirror(0x1c00).ram();
- map(0xe000, 0xe000).mirror(0x1fff).w(FUNC(card_state::speech_w));
-}
-
-void card_state::main_io(address_map &map)
-{
- map.global_mask(0x01);
- map(0x00, 0x01).rw(m_mcu, FUNC(i8041_device::upi41_master_r), FUNC(i8041_device::upi41_master_w));
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-INPUT_CHANGED_MEMBER(card_state::start_scan)
-{
- if (!newval)
- return;
-
- u32 code = (u32)(uintptr_t)param;
- m_barcode = 0;
-
- // convert bits to rising/falling edges
- for (int i = 0; i < 9; i++)
- {
- m_barcode <<= 2;
- m_barcode |= 1 << (code & 1);
- code >>= 1;
- }
-
- m_barcode <<= 1; // in case next barcode_shift timeout is soon
-}
-
-INPUT_CHANGED_MEMBER(card_state::reset_button)
-{
- // reset button is directly wired to maincpu/mcu RESET pins
- m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
- m_mcu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
-}
-
-static INPUT_PORTS_START( scanner )
- PORT_START("CARDS.0") // spades + jokers
- PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x6f) PORT_NAME("Scan: Spades A")
- PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x47) PORT_NAME("Scan: Spades 2")
- PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xd7) PORT_NAME("Scan: Spades 3")
- PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x27) PORT_NAME("Scan: Spades 4")
- PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xb7) PORT_NAME("Scan: Spades 5")
- PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x77) PORT_NAME("Scan: Spades 6")
- PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xe7) PORT_NAME("Scan: Spades 7")
- PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x0f) PORT_NAME("Scan: Spades 8")
- PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x9f) PORT_NAME("Scan: Spades 9")
- PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x5f) PORT_NAME("Scan: Spades 10")
- PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xcf) PORT_NAME("Scan: Spades J")
- PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x3f) PORT_NAME("Scan: Spades Q")
- PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xaf) PORT_NAME("Scan: Spades K")
- PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xf9) PORT_NAME("Scan: Joker 1")
- PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xed) PORT_NAME("Scan: Joker 2")
-
- PORT_START("CARDS.1") // hearts
- PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x7b) PORT_NAME("Scan: Hearts A")
- PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x53) PORT_NAME("Scan: Hearts 2")
- PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xc3) PORT_NAME("Scan: Hearts 3")
- PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x33) PORT_NAME("Scan: Hearts 4")
- PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xa3) PORT_NAME("Scan: Hearts 5")
- PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x63) PORT_NAME("Scan: Hearts 6")
- PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xf3) PORT_NAME("Scan: Hearts 7")
- PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x1b) PORT_NAME("Scan: Hearts 8")
- PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x8b) PORT_NAME("Scan: Hearts 9")
- PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x4b) PORT_NAME("Scan: Hearts 10")
- PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xdb) PORT_NAME("Scan: Hearts J")
- PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x2b) PORT_NAME("Scan: Hearts Q")
- PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xbb) PORT_NAME("Scan: Hearts K")
-
- PORT_START("CARDS.2") // clubs
- PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x69) PORT_NAME("Scan: Clubs A")
- PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x95) PORT_NAME("Scan: Clubs 2")
- PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xd1) PORT_NAME("Scan: Clubs 3")
- PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x93) PORT_NAME("Scan: Clubs 4")
- PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xb1) PORT_NAME("Scan: Clubs 5")
- PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x71) PORT_NAME("Scan: Clubs 6")
- PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xe1) PORT_NAME("Scan: Clubs 7")
- PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x87) PORT_NAME("Scan: Clubs 8")
- PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x99) PORT_NAME("Scan: Clubs 9")
- PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x59) PORT_NAME("Scan: Clubs 10")
- PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xc9) PORT_NAME("Scan: Clubs J")
- PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x39) PORT_NAME("Scan: Clubs Q")
- PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xa9) PORT_NAME("Scan: Clubs K")
-
- PORT_START("CARDS.3") // diamonds
- PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x7d) PORT_NAME("Scan: Diamonds A")
- PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x55) PORT_NAME("Scan: Diamonds 2")
- PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xc5) PORT_NAME("Scan: Diamonds 3")
- PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x35) PORT_NAME("Scan: Diamonds 4")
- PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xa5) PORT_NAME("Scan: Diamonds 5")
- PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x65) PORT_NAME("Scan: Diamonds 6")
- PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xf5) PORT_NAME("Scan: Diamonds 7")
- PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x1d) PORT_NAME("Scan: Diamonds 8")
- PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x8d) PORT_NAME("Scan: Diamonds 9")
- PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x4d) PORT_NAME("Scan: Diamonds 10")
- PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xdd) PORT_NAME("Scan: Diamonds J")
- PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0x2d) PORT_NAME("Scan: Diamonds Q")
- PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, start_scan, 0xbd) PORT_NAME("Scan: Diamonds K")
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( brc )
- PORT_INCLUDE( scanner )
-
- PORT_START("IN.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("A")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("10")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2")
-
- PORT_START("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("K")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
-
- PORT_START("IN.2")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME("Q")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SLASH) PORT_NAME("P")
-
- PORT_START("IN.3")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME("J")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_STOP) PORT_NAME("NT")
-
- PORT_START("IN.4")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("EN")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("SC")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("PL")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_COMMA) PORT_NAME("Spades")
-
- PORT_START("IN.5")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("CL")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_NAME("DB")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("VL")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("Hearts")
-
- PORT_START("IN.6")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Speaker")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("PB")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_X) PORT_NAME("CV")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_NAME("Diamonds")
-
- PORT_START("IN.7")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("BR")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Z) PORT_NAME("DL")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_NAME("Clubs")
-
- PORT_START("RESET") // is not on matrix IN.7 d0
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, reset_button, nullptr) PORT_NAME("RE")
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( bv3 )
- PORT_INCLUDE( brc )
-
- PORT_MODIFY("IN.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("Ace")
-
- PORT_MODIFY("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("King")
-
- PORT_MODIFY("IN.2")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME("Queen")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SLASH) PORT_NAME("Quit")
-
- PORT_MODIFY("IN.3")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME("Jack")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_STOP) PORT_NAME("No Trump")
-
- PORT_MODIFY("IN.4")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Yes/Enter")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("No/Pass")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("Player")
-
- PORT_MODIFY("IN.5")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Clear")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_NAME("Double")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Score")
-
- PORT_MODIFY("IN.6")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Auto")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_X) PORT_NAME("Conv")
-
- PORT_MODIFY("IN.7")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Review")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Z) PORT_NAME("Dealer")
-
- PORT_MODIFY("RESET")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_CHANGED_MEMBER(DEVICE_SELF, card_state, reset_button, nullptr) PORT_NAME("Reset")
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( gin )
- PORT_INCLUDE( bv3 )
-
- PORT_MODIFY("IN.2")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SLASH) PORT_NAME("Human")
-
- PORT_MODIFY("IN.3")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_STOP) PORT_NAME("Computer")
-
- PORT_MODIFY("IN.4")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Yes/Go")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("No")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("Hand")
-
- PORT_MODIFY("IN.5")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_NAME("Score")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Conv")
-
- PORT_MODIFY("IN.6")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Quit")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_X) PORT_NAME("Language")
-
- PORT_MODIFY("IN.7")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Knock")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Z) PORT_NAME("Dealer")
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void card_state::brc_base(machine_config &config)
-{
- /* basic machine hardware */
- Z80(config, m_maincpu, 5_MHz_XTAL/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &card_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &card_state::main_io);
- config.m_perfect_cpu_quantum = subtag("maincpu");
-
- I8041(config, m_mcu, 5_MHz_XTAL);
- m_mcu->p1_out_cb().set(FUNC(card_state::mcu_p1_w));
- m_mcu->p2_in_cb().set(FUNC(card_state::mcu_p2_r));
- m_mcu->p2_out_cb().set(m_i8243, FUNC(i8243_device::p2_w));
- m_mcu->prog_out_cb().set(m_i8243, FUNC(i8243_device::prog_w));
- m_mcu->t0_in_cb().set(FUNC(card_state::mcu_t0_r));
-
- // MCU T1 tied to master clock / 4
- CLOCK(config, "t1_clock", 5_MHz_XTAL/4).signal_handler().set_nop();
- m_mcu->t1_in_cb().set("t1_clock", FUNC(clock_device::signal_r)).invert();
-
- I8243(config, m_i8243);
- m_i8243->p4_out_cb().set(FUNC(card_state::ioexp_port_w<0>));
- m_i8243->p5_out_cb().set(FUNC(card_state::ioexp_port_w<1>));
- m_i8243->p6_out_cb().set(FUNC(card_state::ioexp_port_w<2>));
- m_i8243->p7_out_cb().set(FUNC(card_state::ioexp_port_w<3>));
-
- TIMER(config, "barcode_shift").configure_periodic(FUNC(card_state::barcode_shift), attotime::from_msec(2));
-
- TIMER(config, "display_decay").configure_periodic(FUNC(card_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_brc);
-}
-
-void card_state::ubc(machine_config &config)
-{
- brc_base(config);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
-
-void card_state::vbrc(machine_config &config)
-{
- brc_base(config);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
- m_speech->bsy().set_inputline("maincpu", Z80_INPUT_LINE_WAIT);
- m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
-}
-
-void card_state::bv3(machine_config &config)
-{
- vbrc(config);
- config.set_default_layout(layout_fidel_bv3);
-}
-
-void card_state::gin(machine_config &config)
-{
- ubc(config);
- config.set_default_layout(layout_fidel_gin);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( vbrc ) // model VBRC aka 7002
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-64108", 0x0000, 0x2000, CRC(08472223) SHA1(859865b13c908dbb474333263dc60f6a32461141) ) // NEC 2364
- ROM_LOAD("101-64109", 0x2000, 0x2000, CRC(320afa0f) SHA1(90edfe0ac19b108d232cda376b03a3a24befad4c) ) // NEC 2364
- ROM_LOAD("101-64110", 0x4000, 0x2000, CRC(3040d0bd) SHA1(caa55fc8d9196e408fb41e7171a68e5099519813) ) // NEC 2364
-
- ROM_REGION( 0x0400, "mcu", 0 )
- ROM_LOAD("100-1009", 0x0000, 0x0400, CRC(60eb343f) SHA1(8a63e95ebd62e123bdecc330c0484a47c354bd1a) )
-
- ROM_REGION( 0x1000, "speech", 0 )
- ROM_LOAD("101-32118", 0x0000, 0x1000, CRC(a0b8bb8f) SHA1(f56852108928d5c6caccfc8166fa347d6760a740) )
-ROM_END
-
-ROM_START( bridgeca ) // model UBC
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-64108", 0x0000, 0x2000, CRC(08472223) SHA1(859865b13c908dbb474333263dc60f6a32461141) )
- ROM_LOAD("101-64109", 0x2000, 0x2000, CRC(320afa0f) SHA1(90edfe0ac19b108d232cda376b03a3a24befad4c) )
- ROM_LOAD("101-64110", 0x4000, 0x2000, CRC(3040d0bd) SHA1(caa55fc8d9196e408fb41e7171a68e5099519813) )
-
- ROM_REGION( 0x0400, "mcu", 0 )
- ROM_LOAD("100-1009", 0x0000, 0x0400, CRC(60eb343f) SHA1(8a63e95ebd62e123bdecc330c0484a47c354bd1a) )
-ROM_END
-
-
-ROM_START( bridgec3 ) // model BV3 aka 7014, PCB label 510-1016 Rev.1
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("7014_white", 0x0000, 0x2000, CRC(eb1620ef) SHA1(987a9abc8c685f1a68678ea4ee65ec4a99419179) ) // TMM2764AD-20, white sticker
- ROM_LOAD("7014_red", 0x2000, 0x2000, CRC(74af0019) SHA1(8dc05950c254ca050b95b93e5d0cf48f913a6d49) ) // TMM2764AD-20, red sticker
- ROM_LOAD("7014_blue", 0x4000, 0x2000, CRC(341d9ca6) SHA1(370876573bb9408e75f4fc797304b6c64af0590a) ) // TMM2764AD-20, blue sticker
-
- ROM_REGION( 0x0400, "mcu", 0 )
- ROM_LOAD("100-1009", 0x0000, 0x0400, CRC(60eb343f) SHA1(8a63e95ebd62e123bdecc330c0484a47c354bd1a) ) // NEC P07021-027 || D8041C 563 100-1009
-
- ROM_REGION( 0x1000, "speech", 0 )
- ROM_LOAD("101-32118", 0x0000, 0x1000, CRC(a0b8bb8f) SHA1(f56852108928d5c6caccfc8166fa347d6760a740) ) // ea 101-32118 || (C) 1980 || EA 8332A247-4 || 8034
-ROM_END
-
-
-ROM_START( gincribc ) // model GIN, PCB label 510-4020-1C
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD("101-1036a01", 0x0000, 0x2000, CRC(30d8d900) SHA1(b31a4acc52143baad28a35ec515ab30d7b39683a) ) // MOSTEK MK36974N-5
- ROM_LOAD("101-1037a02", 0x2000, 0x2000, CRC(8802a71b) SHA1(416350acc1cbf38ff74194d49916b848bf6c2330) ) // MOSTEK MK36976N-5
- ROM_LOAD("bridge-3", 0x4000, 0x1000, CRC(d3cda2e3) SHA1(69b62fa22b388a922abad4e89c78bdb01a5fb322) ) // NEC 2332C 188
-
- ROM_REGION( 0x0400, "mcu", 0 )
- ROM_LOAD("100-1009", 0x0000, 0x0400, CRC(60eb343f) SHA1(8a63e95ebd62e123bdecc330c0484a47c354bd1a) )
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1980, vbrc, 0, 0, vbrc, brc, card_state, empty_init, "Fidelity Electronics", "Voice Bridge Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1980, bridgeca, vbrc, 0, ubc, brc, card_state, empty_init, "Fidelity Electronics", "Advanced Bridge Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-
-CONS( 1982, bridgec3, 0, 0, bv3, bv3, card_state, empty_init, "Fidelity Electronics", "Bridge Challenger III", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-
-CONS( 1982, gincribc, 0, 0, gin, gin, card_state, empty_init, "Fidelity Electronics", "Gin & Cribbage Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/fidel_cc1.cpp b/src/mame/drivers/fidel_cc1.cpp
deleted file mode 100644
index cfee2fdda67..00000000000
--- a/src/mame/drivers/fidel_cc1.cpp
+++ /dev/null
@@ -1,221 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:Berger, Sean Riddle
-/******************************************************************************
-*
-* fidel_cc1.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-Fidelity's 1st generation chess computers:
-- *Chess Challenger
-- *Chess Challenger 3
-- *Chess Challenger 10 (UCC10)
-
-* denotes not dumped (actually CC1 is dumped, but with half of the contents missing)
-
-TODO:
-- driver is untested, but it should be easy to get working when a good dump
- shows up (or a rom of CC3, even)
-
-*******************************************************************************
-
-Chess Challenger (1)
---------------------
-This is the world's 1st released dedicated chess computer. Oddly, the rows/columns
-are reversed: left to right is 1-8, bottom to top is A-H, eg. pawn from D2 to D4
-is 4B to 4D here.
-
-PCB label PC-P-86, P179 C-2 7.77
-NEC 8080AF @ 2MHz(18MHz XTAL through a 8224)
-Everything goes via a NEC B8228, its special features are unused.
-NEC 2316A ROM(2KB), 4*2101AL RAM(0.5KB total)
-8255C for I/O, 4*7seg display + 2 extra leds, 12-key keypad
-
-Chess Challenger 3 is on the same hardware, but with double ROM size, and they
-corrected the reversed chess notation. It was also offered as an upgrade to CC1.
-
-Chess Challenger 10 version 'C'(model UCC10) is on (nearly) the same PCB too,
-label P179 C-3 9.77, with a small daughterboard for 8KB ROM. Again, it was also
-offered as an upgrade to CC1, or CC3.
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/i8085/i8085.h"
-#include "machine/i8255.h"
-
-// internal artwork
-#include "fidel_cc1.lh" // clickable
-
-
-namespace {
-
-class cc1_state : public fidelbase_state
-{
-public:
- cc1_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag),
- m_ppi8255(*this, "ppi8255"),
- m_delay(*this, "delay")
- { }
-
- // machine drivers
- void cc1(machine_config &config);
-
-private:
- // devices/pointers
- required_device<i8255_device> m_ppi8255;
- optional_device<timer_device> m_delay;
-
- // address maps
- void main_map(address_map &map);
- void main_io(address_map &map);
-
- // I/O handlers
- void prepare_display();
- DECLARE_READ8_MEMBER(ppi_porta_r);
- DECLARE_WRITE8_MEMBER(ppi_portb_w);
- DECLARE_WRITE8_MEMBER(ppi_portc_w);
-};
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// misc handlers
-
-void cc1_state::prepare_display()
-{
- // 4 7segs + 2 leds
- set_display_segmask(0xf, 0x7f);
- display_matrix(7, 6, m_7seg_data, m_led_select);
-}
-
-
-// I8255 PPI
-
-READ8_MEMBER(cc1_state::ppi_porta_r)
-{
- // 74148(priority encoder) I0-I7: inputs
- // d0-d2: 74148 S0-S2, d3: 74148 GS
- u8 data = count_leading_zeros(m_inp_matrix[0]->read()) - 24;
-
- // d5-d7: more inputs (direct)
- data |= ~m_inp_matrix[1]->read() << 5 & 0xe0;
-
- // d4: 555 Q
- return data | ((m_delay->enabled()) ? 0x10 : 0);
-}
-
-WRITE8_MEMBER(cc1_state::ppi_portb_w)
-{
- // d0-d6: digit segment data
- m_7seg_data = bitswap<7>(data,0,1,2,3,4,5,6);
- prepare_display();
-}
-
-WRITE8_MEMBER(cc1_state::ppi_portc_w)
-{
- // d6: trigger monostable 555 (R=15K, C=1uF)
- if (~data & m_led_select & 0x40 && !m_delay->enabled())
- m_delay->adjust(attotime::from_msec(17));
-
- // d0-d3: digit select
- // d4: check led, d5: lose led
- m_led_select = data;
- prepare_display();
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void cc1_state::main_map(address_map &map)
-{
- map.global_mask(0x1fff);
- map(0x0000, 0x0fff).rom();
- map(0x1000, 0x11ff).mirror(0x0e00).ram();
-}
-
-void cc1_state::main_io(address_map &map)
-{
- map.global_mask(0x0f);
- map(0x00, 0x03).mirror(0x04).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( cc1 )
- PORT_START("IN.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("1") PORT_CODE(KEYCODE_1)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("2") PORT_CODE(KEYCODE_2)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("3") PORT_CODE(KEYCODE_3)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("4") PORT_CODE(KEYCODE_4)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("5") PORT_CODE(KEYCODE_5)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("6") PORT_CODE(KEYCODE_6)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("7") PORT_CODE(KEYCODE_7)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("8") PORT_CODE(KEYCODE_8)
-
- PORT_START("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("9") PORT_CODE(KEYCODE_9)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("0") PORT_CODE(KEYCODE_0)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS)
-
- PORT_START("RESET")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, cc1_state, reset_button, nullptr)
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void cc1_state::cc1(machine_config &config)
-{
- /* basic machine hardware */
- I8080A(config, m_maincpu, 18_MHz_XTAL/9);
- m_maincpu->set_addrmap(AS_PROGRAM, &cc1_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &cc1_state::main_io);
-
- I8255(config, m_ppi8255);
- m_ppi8255->in_pa_callback().set(FUNC(cc1_state::ppi_porta_r));
- m_ppi8255->out_pb_callback().set(FUNC(cc1_state::ppi_portb_w));
- m_ppi8255->tri_pb_callback().set_constant(0);
- m_ppi8255->out_pc_callback().set(FUNC(cc1_state::ppi_portc_w));
-
- TIMER(config, "delay").configure_generic(timer_device::expired_delegate());
-
- TIMER(config, "display_decay").configure_periodic(FUNC(cc1_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_cc1);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( cc1 )
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "d2316ac_011", 0x0000, 0x0800, BAD_DUMP CRC(e27f9816) SHA1(ad9881b3bf8341829a27e86de27805fc2ccb5f7d) ) // A4 line was broken
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1977, cc1, 0, 0, cc1, cc1, cc1_state, empty_init, "Fidelity Electronics", "Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/fidel_cc10.cpp b/src/mame/drivers/fidel_cc10.cpp
deleted file mode 100644
index 128332a5001..00000000000
--- a/src/mame/drivers/fidel_cc10.cpp
+++ /dev/null
@@ -1,321 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Jonathan Gevaryahu, Sandro Ronco, hap
-// thanks-to:Berger, Sean Riddle
-/******************************************************************************
-*
-* fidel_cc10.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-TODO:
-- What is cc10 8255 PB.7 for? When set, maximum levels is 3, like in CC3. But
- there is no CC3 with 16 buttons, and things get glitchy in this mode.
-
-*******************************************************************************
-
-Fidelity Chess Challenger 10 (CCX)
--------------------
-3 versions are known to exist: A,B,C. Strangely, version C(UCC10) has an 8080
-instead of Z80 and no beeper, it's on CC1-based hardware.
-
-Z80A CPU @ 4MHz, NEC D8255C
-4KB ROM(NEC 2332A), 2*256 bytes RAM(4*NEC 2111AL-4)
-The beeper is via a 556 timer, fixed-frequency at around 1300-1400Hz.
-
-Checker Challenger 4 (ACR) is on the same PCB, twice less RAM and the beeper gone.
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/z80/z80.h"
-#include "machine/i8255.h"
-#include "sound/beep.h"
-#include "speaker.h"
-
-// internal artwork
-#include "fidel_acr.lh" // clickable
-#include "fidel_cc10.lh" // clickable
-
-
-namespace {
-
-class ccx_state : public fidelbase_state
-{
-public:
- ccx_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag),
- m_ppi8255(*this, "ppi8255"),
- m_beeper_off(*this, "beeper_off"),
- m_beeper(*this, "beeper")
- { }
-
- // machine drivers
- void acr(machine_config &config);
- void ccx(machine_config &config);
-
-private:
- // devices/pointers
- required_device<i8255_device> m_ppi8255;
- optional_device<timer_device> m_beeper_off;
- optional_device<beep_device> m_beeper;
-
- TIMER_DEVICE_CALLBACK_MEMBER(beeper_off) { m_beeper->set_state(0); }
-
- // address maps
- void acr_map(address_map &map);
- void ccx_map(address_map &map);
- void main_trampoline(address_map &map);
- void main_io(address_map &map);
-
- u8 main_trampoline_r(offs_t offset);
- void main_trampoline_w(offs_t offset, u8 data);
-
- // I/O handlers
- void prepare_display();
- DECLARE_WRITE8_MEMBER(ppi_porta_w);
- DECLARE_WRITE8_MEMBER(ppi_portb_w);
- DECLARE_READ8_MEMBER(ppi_portc_r);
- DECLARE_WRITE8_MEMBER(ppi_portc_w);
-};
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// misc handlers
-
-void ccx_state::prepare_display()
-{
- // 4 7segs + 2 leds
- set_display_segmask(0xf, 0x7f);
- display_matrix(8, 6, m_7seg_data, m_led_select);
-}
-
-
-// I8255 PPI
-
-WRITE8_MEMBER(ccx_state::ppi_porta_w)
-{
- // d7: enable beeper on falling edge (556 monostable) (unpopulated on ACR)
- if (m_beeper != nullptr && ~data & m_7seg_data & 0x80 && !m_beeper_off->enabled())
- {
- m_beeper->set_state(1);
- m_beeper_off->adjust(attotime::from_msec(80)); // duration is approximate
- }
-
- // d0-d6: digit segment data
- m_7seg_data = bitswap<8>(data,7,0,1,2,3,4,5,6);
- prepare_display();
-}
-
-WRITE8_MEMBER(ccx_state::ppi_portb_w)
-{
- // d0: lose led, d1: check(win) led
- // d2-d5: digit select
- m_led_select = bitswap<6>(data,0,1,5,4,3,2);
- prepare_display();
-}
-
-READ8_MEMBER(ccx_state::ppi_portc_r)
-{
- // d0-d3: multiplexed inputs (active low)
- return ~read_inputs(4) & 0xf;
-}
-
-WRITE8_MEMBER(ccx_state::ppi_portc_w)
-{
- // d4-d7: input mux (inverted)
- m_inp_mux = ~data >> 4 & 0xf;
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void ccx_state::acr_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x0000, 0x0fff).rom().region("maincpu", 0); // _A12
- map(0x2000, 0x20ff).mirror(0x0f00).ram(); // A13
-}
-
-void ccx_state::ccx_map(address_map &map)
-{
- acr_map(map);
- map(0x4000, 0x40ff).mirror(0x0f00).ram(); // A14
-}
-
-// PCB design is prone to bus conflicts, but assuming software behaves fine,
-// it will access ROM at $0xxx, RAM at $3xxx and $5xxx
-void ccx_state::main_trampoline_w(offs_t offset, u8 data)
-{
- if (offset & 0x2000)
- m_mainmap->write8(offset & 0x2fff, data);
- if (offset & 0x4000)
- m_mainmap->write8(offset & 0x4fff, data);
-}
-
-u8 ccx_state::main_trampoline_r(offs_t offset)
-{
- u8 data = 0xff;
- if (~offset & 0x1000)
- data &= m_mainmap->read8(offset & 0x0fff);
- if (offset & 0x2000)
- data &= m_mainmap->read8(offset & 0x2fff);
- if (offset & 0x4000)
- data &= m_mainmap->read8(offset & 0x4fff);
-
- return data;
-}
-
-void ccx_state::main_trampoline(address_map &map)
-{
- map.global_mask(0x7fff);
- map(0x0000, 0x7fff).rw(FUNC(ccx_state::main_trampoline_r), FUNC(ccx_state::main_trampoline_w));
-}
-
-void ccx_state::main_io(address_map &map)
-{
- map.global_mask(0x03);
- map(0x00, 0x03).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( ccx )
- PORT_START("IN.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_A)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_E)
-
- PORT_START("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Speaker") PORT_CODE(KEYCODE_SPACE)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F)
-
- PORT_START("IN.2")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_O)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G)
-
- PORT_START("IN.3")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_V)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H)
-
- PORT_START("RESET") // is not on matrix IN.0 d0
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, ccx_state, reset_button, nullptr)
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( acr )
- PORT_START("IN.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_V)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD)
-
- PORT_START("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
-
- PORT_START("IN.2")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TO") PORT_CODE(KEYCODE_T)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
-
- PORT_START("IN.3")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
-
- PORT_START("RESET") // is not on matrix IN.0 d0
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, ccx_state, reset_button, nullptr)
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void ccx_state::acr(machine_config &config)
-{
- /* basic machine hardware */
- Z80(config, m_maincpu, 4_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &ccx_state::main_trampoline);
- ADDRESS_MAP_BANK(config, m_mainmap).set_map(&ccx_state::acr_map).set_options(ENDIANNESS_LITTLE, 8, 16);
- m_maincpu->set_addrmap(AS_IO, &ccx_state::main_io);
-
- I8255(config, m_ppi8255);
- m_ppi8255->out_pa_callback().set(FUNC(ccx_state::ppi_porta_w));
- m_ppi8255->tri_pa_callback().set_constant(0);
- m_ppi8255->in_pb_callback().set_constant(0);
- m_ppi8255->out_pb_callback().set(FUNC(ccx_state::ppi_portb_w));
- m_ppi8255->tri_pb_callback().set_constant(0);
- m_ppi8255->in_pc_callback().set(FUNC(ccx_state::ppi_portc_r));
- m_ppi8255->out_pc_callback().set(FUNC(ccx_state::ppi_portc_w));
-
- TIMER(config, "display_decay").configure_periodic(FUNC(ccx_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_acr);
-}
-
-void ccx_state::ccx(machine_config &config)
-{
- acr(config);
-
- /* basic machine hardware */
- m_mainmap->set_addrmap(AS_PROGRAM, &ccx_state::ccx_map);
-
- config.set_default_layout(layout_fidel_cc10);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- BEEP(config, m_beeper, 1360); // approximation, from 556 timer ic
- m_beeper->add_route(ALL_OUTPUTS, "speaker", 0.25);
- TIMER(config, "beeper_off").configure_generic(FUNC(ccx_state::beeper_off));
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( cc10 ) // model CCX, PCB label P241C-1
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "cn19053n_cc10b", 0x0000, 0x1000, CRC(afd3ca99) SHA1(870d09b2b52ccb8572d69642c59b5215d5fb26ab) ) // 2332
-ROM_END
-
-
-ROM_START( checkc4 ) // model ACR, PCB label P241C
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "d2332c_043", 0x0000, 0x1000, CRC(4c251d90) SHA1(474d54b05971f2a3208bab56dc6e27f03781c541) ) // no custom label
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1978, cc10, 0, 0, ccx, ccx, ccx_state, empty_init, "Fidelity Electronics", "Chess Challenger 10 (model CCX, rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-
-CONS( 1978, checkc4, 0, 0, acr, acr, ccx_state, empty_init, "Fidelity Electronics", "Checker Challenger 4", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/fidel_cc7.cpp b/src/mame/drivers/fidel_cc7.cpp
deleted file mode 100644
index 36bd7756dc7..00000000000
--- a/src/mame/drivers/fidel_cc7.cpp
+++ /dev/null
@@ -1,245 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:Berger
-/******************************************************************************
-*
-* fidel_cc7.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-*******************************************************************************
-
-Fidelity Chess Challenger 7 (BCC)
-------------------------
-model CC7 is an older version
-RE information from netlist by Berger
-
-Zilog Z80A, 3.579MHz from XTAL
-Z80 IRQ/NMI unused, no timer IC.
-This is a cost-reduced design from CC10, no special I/O chips.
-
-Backgammon Challenger (BKC) is the same PCB, with the speaker connection going
-to the display panel instead.
-
-Memory map:
------------
-0000-0FFF: 4K 2332 ROM CN19103N BCC-REVB.
-2000-2FFF: ROM/RAM bus conflict!
-3000-3FFF: 256 bytes RAM (2111 SRAM x2)
-4000-FFFF: Z80 A14/A15 not connected
-
-Port map (Write):
----------
-D0-D3: digit select and keypad mux
-D4: CHECK led
-D5: LOSE led
-A0-A2: NE591 A0-A2
-D7: NE591 D (_C not used)
-NE591 Q0-Q6: digit segments A-G
-NE591 Q7: buzzer
-
-Port map (Read):
----------
-D0-D3: keypad row
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/z80/z80.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-// internal artwork
-#include "fidel_bcc.lh" // clickable
-#include "fidel_bkc.lh" // clickable
-
-
-namespace {
-
-class bcc_state : public fidelbase_state
-{
-public:
- bcc_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag)
- { }
-
- // machine drivers
- void bcc(machine_config &config);
- void bkc(machine_config &config);
-
-private:
- // address maps
- void main_map(address_map &map);
- void main_io(address_map &map);
-
- // I/O handlers
- DECLARE_READ8_MEMBER(input_r);
- DECLARE_WRITE8_MEMBER(control_w);
-};
-
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// TTL
-
-WRITE8_MEMBER(bcc_state::control_w)
-{
- // a0-a2,d7: digit segment data via NE591
- u8 mask = 1 << (offset & 7);
- m_7seg_data = (m_7seg_data & ~mask) | ((data & 0x80) ? mask : 0);
-
- // BCC: NE591 Q7 is speaker out
- if (m_dac != nullptr)
- m_dac->write(BIT(m_7seg_data, 7));
-
- // d0-d3: led select, input mux
- // d4,d5: upper leds(direct)
- set_display_segmask(0xf, 0x7f);
- display_matrix(8, 6, m_7seg_data, data & 0x3f);
- m_inp_mux = data & 0xf;
-}
-
-READ8_MEMBER(bcc_state::input_r)
-{
- // d0-d3: multiplexed inputs
- return read_inputs(4);
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void bcc_state::main_map(address_map &map)
-{
- map.unmap_value_high();
- map.global_mask(0x3fff);
- map(0x0000, 0x0fff).rom();
- map(0x3000, 0x30ff).mirror(0x0f00).ram();
-}
-
-void bcc_state::main_io(address_map &map)
-{
- map.global_mask(0x07);
- map(0x00, 0x07).rw(FUNC(bcc_state::input_r), FUNC(bcc_state::control_w));
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( bcc )
- PORT_START("IN.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_V)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H)
-
- PORT_START("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_O)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G)
-
- PORT_START("IN.2")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CB") PORT_CODE(KEYCODE_SPACE)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F)
-
- PORT_START("IN.3")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_A)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_E)
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( bkc )
- PORT_START("IN.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
-
- PORT_START("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
-
- PORT_START("IN.2")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("GM") PORT_CODE(KEYCODE_SPACE)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
-
- PORT_START("IN.3")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_O)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_V)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD)
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void bcc_state::bkc(machine_config &config)
-{
- /* basic machine hardware */
- Z80(config, m_maincpu, 3.579545_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &bcc_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &bcc_state::main_io);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(bcc_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_bkc);
-}
-
-void bcc_state::bcc(machine_config &config)
-{
- bkc(config);
- config.set_default_layout(layout_fidel_bcc);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( cc7 ) // model BCC
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "cn19103n_bcc-revb", 0x0000, 0x1000, CRC(a397d471) SHA1(9b12bc442fccee40f4d8500c792bc9d886c5e1a5) ) // 2332
-ROM_END
-
-
-ROM_START( backgamc ) // model BKC, PCB label P-380A-5
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "cn19255n_101-32012", 0x0000, 0x1000, CRC(0a8a19b7) SHA1(d6f0dd44b33c9b79570cf0ceac02a036ec91ba57) ) // 2332
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1979, cc7, 0, 0, bcc, bcc, bcc_state, empty_init, "Fidelity Electronics", "Chess Challenger 7 (model BCC, rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-
-CONS( 1979, backgamc, 0, 0, bkc, bkc, bcc_state, empty_init, "Fidelity Electronics", "Backgammon Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/fidel_chesster.cpp b/src/mame/drivers/fidel_chesster.cpp
deleted file mode 100644
index ac5ce242889..00000000000
--- a/src/mame/drivers/fidel_chesster.cpp
+++ /dev/null
@@ -1,227 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:yoyo_chessboard, Berger
-/******************************************************************************
-*
-* fidel_chesster.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-These were made after Hegener & Glaser took over Fidelity(design phase started
-before that). Kishon Chesster was released under both Fidelity, and Mephisto brands.
-
-*******************************************************************************
-
-Fidelity Chesster (model 6120)
-There is also a German version titled Kishon Chesster (model 6120G, or 6127)
-----------------
-8*(8+1) buttons, 8+8+1 LEDs
-8KB RAM(UM6264-12), 32KB ROM(M27C256B)
-Ricoh RP65C02G CPU, 5MHz XTAL
-8-bit DAC speech timed via IRQ, 128KB ROM(AMI custom label)
-PCB label 510.1141C01
-
-I/O is via TTL, memory map is similar to Designer Display
-
-The speech technology was invented by Forrest S. Mozer(same person that invented
-the S14001A in the 70s), this time a 65C02 software solution.
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/m6502/r65c02.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-// internal artwork
-#include "fidel_chesster.lh" // clickable
-
-
-namespace {
-
-class chesster_state : public fidelbase_state
-{
-public:
- chesster_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag)
- { }
-
- // machine drivers
- void chesster(machine_config &config);
- void kishon(machine_config &config);
-
- void init_chesster();
-
-private:
- // address maps
- void main_map(address_map &map);
-
- int m_numbanks;
-
- // I/O handlers
- DECLARE_WRITE8_MEMBER(control_w);
- DECLARE_READ8_MEMBER(input_r);
-};
-
-void chesster_state::init_chesster()
-{
- m_numbanks = memregion("rombank")->bytes() / 0x4000;
- m_rombank->configure_entries(0, m_numbanks, memregion("rombank")->base(), 0x4000);
-}
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// TTL/generic
-
-WRITE8_MEMBER(chesster_state::control_w)
-{
- // a0-a2,d7: 74259(1)
- u8 mask = 1 << offset;
- m_led_select = (m_led_select & ~mask) | ((data & 0x80) ? mask : 0);
-
- // 74259 Q4-Q7: 7442 a0-a3
- // 7442 0-8: led data, input mux
- u16 sel = 1 << (m_led_select >> 4 & 0xf) & 0x3ff;
- m_inp_mux = sel & 0x1ff;
-
- // 74259 Q0,Q1: led select (active low)
- display_matrix(9, 2, m_inp_mux, ~m_led_select & 3);
-
- // 74259 Q2,Q3: speechrom A14,A15
- // a0-a2,d0: 74259(2) Q3,Q2,Q0 to A16,A17,A18
- m_speech_bank = (m_speech_bank & ~mask) | ((data & 1) ? mask : 0);
- u8 bank = (m_led_select >> 2 & 3) | bitswap<3>(m_speech_bank, 0,2,3) << 2;
- m_rombank->set_entry(bank & (m_numbanks - 1));
-}
-
-READ8_MEMBER(chesster_state::input_r)
-{
- // a0-a2,d7: multiplexed inputs (active low)
- return (read_inputs(9) >> offset & 1) ? 0 : 0x80;
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void chesster_state::main_map(address_map &map)
-{
- map(0x0000, 0x1fff).ram();
- map(0x2000, 0x2007).mirror(0x1ff8).rw(FUNC(chesster_state::input_r), FUNC(chesster_state::control_w));
- map(0x4000, 0x7fff).bankr("rombank");
- map(0x6000, 0x6000).mirror(0x1fff).w("dac8", FUNC(dac_byte_interface::data_w));
- map(0x8000, 0xffff).rom();
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( chesster )
- PORT_INCLUDE( generic_cb_buttons )
-
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("Move / No")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Hint / Yes")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("Take Back / Repeat")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Level / New")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_NAME("Option / Replay")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Verify / Problem")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("Shift")
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void chesster_state::chesster(machine_config &config)
-{
- /* basic machine hardware */
- R65C02(config, m_maincpu, 5_MHz_XTAL); // RP65C02G
- m_maincpu->set_addrmap(AS_PROGRAM, &chesster_state::main_map);
-
- const attotime irq_period = attotime::from_hz(9500); // from 555 timer, measured (9.6kHz on a Chesster, 9.3kHz on a Kishon)
- TIMER(config, m_irq_on).configure_periodic(FUNC(chesster_state::irq_on<M6502_IRQ_LINE>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_nsec(2600)); // active for 2.6us
- TIMER(config, "irq_off").configure_periodic(FUNC(chesster_state::irq_off<M6502_IRQ_LINE>), irq_period);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(chesster_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_chesster);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_8BIT_R2R(config, "dac8").add_route(ALL_OUTPUTS, "speaker", 0.5); // m74hc374b1.ic1 + 8l513_02.z2
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac8", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac8", -1.0, DAC_VREF_NEG_INPUT);
-}
-
-void chesster_state::kishon(machine_config &config)
-{
- chesster(config);
-
- /* basic machine hardware */
- m_maincpu->set_clock(3.579545_MHz_XTAL); // same CPU
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( chesster ) // model 6120, PCB label 510.1141C01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("ch_1.3.ic9", 0x8000, 0x8000, CRC(8b42d1ad) SHA1(2161fc5ab2476fe7ca4ffc226e3cb329b8a57a01) ) // 27256, CH 1.3 on sticker
-
- ROM_REGION( 0x20000, "rombank", 0 )
- ROM_LOAD("101-1091b02.ic10", 0x0000, 0x20000, CRC(fa370e88) SHA1(a937c8f1ec295cf9539d12466993974e40771493) ) // AMI, 27C010 or equivalent
-ROM_END
-
-ROM_START( chesstera ) // model 6120, PCB label 510.1141C01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("chesster.ic9", 0x8000, 0x8000, CRC(29f9a698) SHA1(4c83ca46fd5fc9c40302e9c7f16b4ae2c18b06e6) ) // M27C256B, sticker but no label
-
- ROM_REGION( 0x20000, "rombank", 0 )
- ROM_LOAD("101-1091a02.ic10", 0x0000, 0x20000, CRC(2b4d243c) SHA1(921e51978facb502b207b4f64a73b1e74127e826) ) // AMI, 27C010 or equivalent
-ROM_END
-
-ROM_START( kishon ) // possibly Mephisto brand?, PCB label 510.1141C01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("german_chesster_v2.2.ic9", 0x8000, 0x8000, CRC(43e0cfcd) SHA1(961c7335f562b19fa96324c429ab70e8ab4d7647) ) // 27C256, 15.1.91
-
- ROM_REGION( 0x80000, "rombank", 0 )
- ROM_LOAD("kishon_chesster_v2.6.ic10", 0x0000, 0x80000, CRC(50598869) SHA1(2087e0c2f40a2408fe217a6502c8c3a247bdd063) ) // Toshiba TC544000P-12
-ROM_END
-
-ROM_START( kishona ) // model 6120G or 6127(same), PCB label 510.1141C01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("kishon.ic9", 0x8000, 0x8000, CRC(121c007f) SHA1(652e9ea47b6bb1632d10eb0fcd7f98cdba22fce7) ) // 27C256, no label
-
- ROM_REGION( 0x80000, "rombank", 0 )
- ROM_LOAD("kishon_chesster_v2.6.ic10", 0x0000, 0x80000, CRC(50598869) SHA1(2087e0c2f40a2408fe217a6502c8c3a247bdd063) ) // Toshiba TC544000P-12, 1-14-91, aka 101-1094A01 on 6127
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1990, chesster, 0, 0, chesster, chesster, chesster_state, init_chesster, "Fidelity Electronics", "Chesster Challenger (v1.3)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1990, chesstera, chesster, 0, chesster, chesster, chesster_state, init_chesster, "Fidelity Electronics", "Chesster Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1991, kishon, chesster, 0, kishon, chesster, chesster_state, init_chesster, "Fidelity Electronics", "Kishon Chesster (v2.2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1991, kishona, chesster, 0, kishon, chesster, chesster_state, init_chesster, "Fidelity Electronics", "Kishon Chesster", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/fidel_csc.cpp b/src/mame/drivers/fidel_csc.cpp
deleted file mode 100644
index f1ee6488c59..00000000000
--- a/src/mame/drivers/fidel_csc.cpp
+++ /dev/null
@@ -1,712 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Kevin Horton, Jonathan Gevaryahu, Sandro Ronco, hap
-// thanks-to:Berger, yoyo_chessboard
-/******************************************************************************
-*
-* fidel_csc.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-Fidelity CSC(and derived) hardware
-- Champion Sensory Chess Challenger
-- Elite Champion Challenger
-- Super 9 Sensory Chess Challenger
-- Reversi Sensory Challenger
-
-TODO:
-- verify csce original roms (current set came from an overclock mod)
-- hook up csce I/O properly, it doesn't have PIAs
-
-*******************************************************************************
-
-Champion Sensory Chess Challenger (CSC)
----------------------------------------
-RE notes by Kevin Horton
-
-Memory map:
------------
-0000-07FF: 2K of RAM
-0800-0FFF: 1K of RAM (note: mirrored twice)
-1000-17FF: PIA 1 (display, TSI speech chip)
-1800-1FFF: PIA 0 (keypad, LEDs)
-2000-3FFF: 101-64019 ROM*
-4000-7FFF: mirror of 0000-3FFF
-8000-9FFF: not used
-A000-BFFF: 101-1025A03 ROM
-C000-DFFF: 101-1025A02 ROM
-E000-FDFF: 101-1025A01 ROM
-FE00-FFFF: 512 byte 74S474 PROM
-
-*: 101-64019 is also used on the VSC(fidel_vsc.cpp). It contains the opening book
-and "64 greatest games", as well as some Z80 code. Obviously the latter is unused
-on the CSC.
-
-CPU is a 6502 running at 1.95MHz (3.9MHz resonator, divided by 2)
-
-NMI is not used.
-IRQ is connected to a 600Hz oscillator (38.4KHz divided by 64).
-Reset is connected to a power-on reset circuit.
-
-PIA 1:
-------
-PA0 - 7seg segments E, TSI A0
-PA1 - 7seg segments D, TSI A1
-PA2 - 7seg segments C, TSI A2
-PA3 - 7seg segments H, TSI A3
-PA4 - 7seg segments G, TSI A4
-PA5 - 7seg segments F, TSI A5
-PA6 - 7seg segments B
-PA7 - 7seg segments A
-
-PB0 - A12 on speech ROM (if used... not used on this model, ROM is 4K)
-PB1 - START line on TSI
-PB2 - white wire
-PB3 - BUSY line from TSI
-PB4 - hi/lo TSI speaker volume
-PB5 - button row 9
-PB6 - selection jumper (resistor to 5V)
-PB7 - selection jumper (resistor to ground)
-
-CA1 - NC
-CA2 - violet wire
-
-CB1 - NC
-CB2 - NC (connects to pin 14 of soldered connector)
-
-PIA 0:
-------
-PA0 - button row 1
-PA1 - button row 2
-PA2 - button row 3
-PA3 - button row 4
-PA4 - button row 5
-PA5 - button row 6
-PA6 - 7442 selector bit 0
-PA7 - 7442 selector bit 1
-
-PB0 - LED row 1
-PB1 - LED row 2
-PB2 - LED row 3
-PB3 - LED row 4
-PB4 - LED row 5
-PB5 - LED row 6
-PB6 - LED row 7
-PB7 - LED row 8
-
-CA1 - button row 7
-CA2 - selector bit 3
-
-CB1 - button row 8
-CB2 - selector bit 2
-
-Selector: (attached to PIA 0, outputs 1 of 10 pins low. 7442)
----------
-output # (selected turns this column on, and all others off)
-0 - LED column A, button column A, 7seg digit 1
-1 - LED column B, button column B, 7seg digit 2
-2 - LED column C, button column C, 7seg digit 3
-3 - LED column D, button column D, 7seg digit 4
-4 - LED column E, button column E
-5 - LED column F, button column F
-6 - LED column G, button column G
-7 - LED column H, button column H
-8 - button column I
-9 - Tone line (toggle to make a tone in the buzzer)
-
-The rows/columns are indicated on the game board:
-
- ABCDEFGH I
---------------
-| | 8
-| | 7
-| | 6
-| | 5
-| | 4
-| | 3
-| | 2
-| | 1
---------------
-
-The "lone LED" is above the control column.
-column I is the "control column" on the right for starting a new game, etc.
-
-The upper 6 buttons are connected as such:
-
-column A - speak
-column B - RV
-column C - TM
-column D - LV
-column E - DM
-column F - ST
-
-these 6 buttons use row 9 (connects to PIA 1)
-
-LED display:
-------------
-43 21 (digit number)
------
-88:88
-
-The LED display is four 7 segment digits. normal ABCDEFG lettering is used for segments.
-
-The upper dot is connected to digit 3 common
-The lower dot is connected to digit 4 common
-The lone LED is connected to digit 1 common
-
-All three of the above are called "segment H".
-
-*******************************************************************************
-
-Elite Champion Challenger
-This is a limited-release chess computer based on the CSC. They removed the PIAs
-and did the I/O with TTL instead (PIAs will still work from software point of view).
----------------------------------
-R6502B? CPU @ 4MHz
-32KB ROMs total size, 4KB RAM(8*HM6147P)
-
-In the 90s, Wilfried Bucke provided an upgrade to make it more similar to the one
-that won the 1981 Travemünde contest. CPU was changed to R65C02 or UM6502C at 5MHz.
-
-*******************************************************************************
-
-Super 9 Sensory Chess Challenger (SU9/DS9)
-This is basically the Fidelity Elite A/S program on CSC hardware.
-Model DS9(Deluxe) has a 5MHz XTAL, but is otherwise same.
-Septennial(SCC) is the same as well, but clocked even higher.
----------------------------------
-R6502AP CPU, 1.95MHz(3.9MHz resonator)
-2 RAM chips, assume 4KB
-2*8KB ROM + 1*2KB ROM
-built-in CB9 module
-
-See CSC description above for more information.
-
-*******************************************************************************
-
-Reversi Sensory Challenger (RSC)
-The 1st version came out in 1980, a program revision was released in 1981.
-Another distinction is the board color and layout, the 1981 version is green.
----------------------------------
-8*(8+1) buttons, 8*8+1 LEDs
-1KB RAM(2*2114), 4KB ROM
-MOS MPS 6502B CPU, frequency unknown
-MOS MPS 6520 PIA, I/O is nearly same as CSC's PIA 0
-PCB label 510-1035A01
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/m6502/m6502.h"
-#include "machine/6821pia.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-// internal artwork
-#include "fidel_csc.lh" // clickable
-#include "fidel_rsc_v2.lh" // clickable
-#include "fidel_su9.lh" // clickable
-
-
-namespace {
-
-class csc_state : public fidelbase_state
-{
-public:
- csc_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag),
- m_pia(*this, "pia%u", 0)
- { }
-
- // machine drivers
- void csc(machine_config &config);
- void csce(machine_config &config);
- void su9(machine_config &config);
- void rsc(machine_config &config);
-
-protected:
- // devices/pointers
- optional_device_array<pia6821_device, 2> m_pia;
-
- // address maps
- void csc_map(address_map &map);
- void su9_map(address_map &map);
- void rsc_map(address_map &map);
-
- // I/O handlers
- void prepare_display();
- DECLARE_READ8_MEMBER(speech_r);
- DECLARE_WRITE8_MEMBER(pia0_pa_w);
- DECLARE_WRITE8_MEMBER(pia0_pb_w);
- DECLARE_READ8_MEMBER(pia0_pa_r);
- DECLARE_WRITE_LINE_MEMBER(pia0_ca2_w);
- DECLARE_WRITE_LINE_MEMBER(pia0_cb2_w);
- DECLARE_READ_LINE_MEMBER(pia0_ca1_r);
- DECLARE_READ_LINE_MEMBER(pia0_cb1_r);
- DECLARE_WRITE8_MEMBER(pia1_pa_w);
- DECLARE_WRITE8_MEMBER(pia1_pb_w);
- DECLARE_READ8_MEMBER(pia1_pb_r);
- DECLARE_WRITE_LINE_MEMBER(pia1_ca2_w);
-};
-
-class su9_state : public csc_state
-{
-public:
- su9_state(const machine_config &mconfig, device_type type, const char *tag) :
- csc_state(mconfig, type, tag)
- { }
-
- DECLARE_INPUT_CHANGED_MEMBER(su9_cpu_freq) { su9_set_cpu_freq(); }
-
-protected:
- virtual void machine_reset() override;
- void su9_set_cpu_freq();
-};
-
-void su9_state::machine_reset()
-{
- csc_state::machine_reset();
- su9_set_cpu_freq();
-}
-
-void su9_state::su9_set_cpu_freq()
-{
- // SU9 CPU is clocked 1.95MHz, DS9 is 2.5MHz, SCC is 3MHz
- u8 inp = ioport("FAKE")->read();
- m_maincpu->set_unscaled_clock((inp & 2) ? (3_MHz_XTAL) : ((inp & 1) ? (5_MHz_XTAL/2) : (3.9_MHz_XTAL/2)));
-}
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// misc handlers
-
-void csc_state::prepare_display()
-{
- // 7442 0-8: led select, input mux
- m_inp_mux = 1 << m_led_select & 0x3ff;
-
- // 7442 9: speaker out
- m_dac->write(BIT(m_inp_mux, 9));
-
- // 7seg leds+H (not on all models), 8*8(+1) chessboard leds
- set_display_segmask(0xf, 0x7f);
- display_matrix(16, 9, m_led_data << 8 | m_7seg_data, m_inp_mux);
-}
-
-READ8_MEMBER(csc_state::speech_r)
-{
- return m_speech_rom[m_speech_bank << 12 | offset];
-}
-
-
-// 6821 PIA 0
-
-READ8_MEMBER(csc_state::pia0_pa_r)
-{
- // d0-d5: button row 0-5 (active low)
- return (read_inputs(9) & 0x3f) ^ 0xff;
-}
-
-WRITE8_MEMBER(csc_state::pia0_pa_w)
-{
- // d6,d7: 7442 A0,A1
- m_led_select = (m_led_select & ~3) | (data >> 6 & 3);
- prepare_display();
-}
-
-WRITE8_MEMBER(csc_state::pia0_pb_w)
-{
- // d0-d7: led row data
- m_led_data = data;
- prepare_display();
-}
-
-READ_LINE_MEMBER(csc_state::pia0_ca1_r)
-{
- // button row 6 (active low)
- return ~read_inputs(9) >> 6 & 1;
-}
-
-READ_LINE_MEMBER(csc_state::pia0_cb1_r)
-{
- // button row 7 (active low)
- return ~read_inputs(9) >> 7 & 1;
-}
-
-WRITE_LINE_MEMBER(csc_state::pia0_cb2_w)
-{
- // 7442 A2
- m_led_select = (m_led_select & ~4) | (state ? 4 : 0);
- prepare_display();
-}
-
-WRITE_LINE_MEMBER(csc_state::pia0_ca2_w)
-{
- // 7442 A3
- m_led_select = (m_led_select & ~8) | (state ? 8 : 0);
- prepare_display();
-}
-
-
-// 6821 PIA 1
-
-WRITE8_MEMBER(csc_state::pia1_pa_w)
-{
- // d0-d5: TSI C0-C5
- m_speech->data_w(space, 0, data & 0x3f);
-
- // d0-d7: data for the 4 7seg leds, bits are ABFGHCDE (H is extra led)
- m_7seg_data = bitswap<8>(data,0,1,5,6,7,2,3,4);
- prepare_display();
-}
-
-WRITE8_MEMBER(csc_state::pia1_pb_w)
-{
- // d0: speech ROM A12
- m_speech->force_update(); // update stream to now
- m_speech_bank = data & 1;
-
- // d1: TSI START line
- m_speech->start_w(data >> 1 & 1);
-
- // d4: lower TSI volume
- m_speech->set_output_gain(0, (data & 0x10) ? 0.5 : 1.0);
-}
-
-READ8_MEMBER(csc_state::pia1_pb_r)
-{
- // d2: printer?
- u8 data = 0x04;
-
- // d3: TSI BUSY line
- if (m_speech->busy_r())
- data |= 0x08;
-
- // d5: button row 8 (active low)
- // d6,d7: language switches(hardwired with 2 resistors/jumpers)
- data |= (~read_inputs(9) >> 3 & 0x20) | (*m_language << 6 & 0xc0);
-
- return data;
-}
-
-WRITE_LINE_MEMBER(csc_state::pia1_ca2_w)
-{
- // printer?
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void csc_state::csc_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x0000, 0x07ff).mirror(0x4000).ram();
- map(0x0800, 0x0bff).mirror(0x4400).ram();
- map(0x1000, 0x1003).mirror(0x47fc).rw(m_pia[1], FUNC(pia6821_device::read), FUNC(pia6821_device::write));
- map(0x1800, 0x1803).mirror(0x47fc).rw(m_pia[0], FUNC(pia6821_device::read), FUNC(pia6821_device::write));
- map(0x2000, 0x3fff).mirror(0x4000).rom();
- map(0xa000, 0xffff).rom();
-}
-
-void csc_state::su9_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x0000, 0x0fff).ram();
- map(0x1000, 0x1003).rw(m_pia[1], FUNC(pia6821_device::read), FUNC(pia6821_device::write));
- map(0x1800, 0x1803).rw(m_pia[0], FUNC(pia6821_device::read), FUNC(pia6821_device::write));
- map(0x2000, 0x3fff).rom();
- map(0xa000, 0xffff).rom();
-}
-
-void csc_state::rsc_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x0000, 0x03ff).ram();
- map(0x2000, 0x2003).rw(m_pia[0], FUNC(pia6821_device::read), FUNC(pia6821_device::write));
- map(0xf000, 0xffff).rom();
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( csc )
- PORT_INCLUDE( generic_cb_buttons )
-
- PORT_MODIFY("IN.0")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Speaker")
-
- PORT_MODIFY("IN.1")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("RV")
-
- PORT_MODIFY("IN.2")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("TM")
-
- PORT_MODIFY("IN.3")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("LV")
-
- PORT_MODIFY("IN.4")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("DM")
-
- PORT_MODIFY("IN.5")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("ST")
-
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Pawn")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Rook")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Knight")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Bishop")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Queen")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("King")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("RE")
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( su9 )
- PORT_INCLUDE( csc )
-
- PORT_MODIFY("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("RV / Pawn")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("DM / Knight")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("TB / Bishop")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("LV / Rook")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("PV / Queen")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("PB / King")
-
- PORT_START("FAKE")
- PORT_CONFNAME( 0x03, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, su9_state, su9_cpu_freq, nullptr) // factory set
- PORT_CONFSETTING( 0x00, "1.95MHz (original)" )
- PORT_CONFSETTING( 0x01, "2.5MHz (Deluxe)" )
- PORT_CONFSETTING( 0x02, "3MHz (Septennial)" )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( rsc )
- PORT_INCLUDE( generic_cb_buttons )
-
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("ST")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("RV")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("DM")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("CL")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("LV")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("PV")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Speaker")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("RE")
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void csc_state::csc(machine_config &config)
-{
- /* basic machine hardware */
- M6502(config, m_maincpu, 3.9_MHz_XTAL/2); // from 3.9MHz resonator
- m_maincpu->set_addrmap(AS_PROGRAM, &csc_state::csc_map);
-
- const attotime irq_period = attotime::from_hz(38.4_kHz_XTAL/64); // through 4060 IC, 600Hz
- TIMER(config, m_irq_on).configure_periodic(FUNC(csc_state::irq_on<M6502_IRQ_LINE>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_hz(38.4_kHz_XTAL*2)); // edge!
- TIMER(config, "irq_off").configure_periodic(FUNC(csc_state::irq_off<M6502_IRQ_LINE>), irq_period);
-
- PIA6821(config, m_pia[0], 0);
- m_pia[0]->readpa_handler().set(FUNC(csc_state::pia0_pa_r));
- m_pia[0]->readca1_handler().set(FUNC(csc_state::pia0_ca1_r));
- m_pia[0]->readcb1_handler().set(FUNC(csc_state::pia0_cb1_r));
- m_pia[0]->writepa_handler().set(FUNC(csc_state::pia0_pa_w));
- m_pia[0]->writepb_handler().set(FUNC(csc_state::pia0_pb_w));
- m_pia[0]->ca2_handler().set(FUNC(csc_state::pia0_ca2_w));
- m_pia[0]->cb2_handler().set(FUNC(csc_state::pia0_cb2_w));
-
- PIA6821(config, m_pia[1], 0);
- m_pia[1]->readpb_handler().set(FUNC(csc_state::pia1_pb_r));
- m_pia[1]->writepa_handler().set(FUNC(csc_state::pia1_pa_w));
- m_pia[1]->writepb_handler().set(FUNC(csc_state::pia1_pb_w));
- m_pia[1]->ca2_handler().set(FUNC(csc_state::pia1_ca2_w));
-
- TIMER(config, "display_decay").configure_periodic(FUNC(csc_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_csc);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
- m_speech->ext_read().set(FUNC(csc_state::speech_r));
- m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
-
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
-
-void csc_state::csce(machine_config &config)
-{
- csc(config);
-
- /* basic machine hardware */
- m_maincpu->set_clock(4_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &csc_state::su9_map);
-}
-
-void csc_state::su9(machine_config &config)
-{
- csc(config);
-
- /* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &csc_state::su9_map);
- config.set_default_layout(layout_fidel_su9);
-}
-
-void csc_state::rsc(machine_config &config)
-{
- /* basic machine hardware */
- M6502(config, m_maincpu, 1800000); // measured approx 1.81MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &csc_state::rsc_map);
-
- const attotime irq_period = attotime::from_hz(546); // from 555 timer, measured
- TIMER(config, m_irq_on).configure_periodic(FUNC(csc_state::irq_on<M6502_IRQ_LINE>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_usec(38)); // active for 38us
- TIMER(config, "irq_off").configure_periodic(FUNC(csc_state::irq_off<M6502_IRQ_LINE>), irq_period);
-
- PIA6821(config, m_pia[0], 0); // MOS 6520
- m_pia[0]->readpa_handler().set(FUNC(csc_state::pia0_pa_r));
- m_pia[0]->readca1_handler().set(FUNC(csc_state::pia0_ca1_r));
- m_pia[0]->readcb1_handler().set(FUNC(csc_state::pia0_cb1_r));
- m_pia[0]->writepa_handler().set(FUNC(csc_state::pia0_pa_w));
- m_pia[0]->writepb_handler().set(FUNC(csc_state::pia0_pb_w));
- m_pia[0]->ca2_handler().set(FUNC(csc_state::pia0_ca2_w));
- m_pia[0]->cb2_handler().set(FUNC(csc_state::pia0_cb2_w));
-
- TIMER(config, "display_decay").configure_periodic(FUNC(csc_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_rsc_v2);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( csc )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-64019", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
- ROM_LOAD("1025a03", 0xa000, 0x2000, CRC(63982c07) SHA1(5ed4356323d5c80df216da55994abe94ba4aa94c) )
- ROM_LOAD("1025a02", 0xc000, 0x2000, CRC(9e6e7c69) SHA1(4f1ed9141b6596f4d2b1217d7a4ba48229f3f1b0) )
- ROM_LOAD("1025a01", 0xe000, 0x2000, CRC(57f068c3) SHA1(7d2ac4b9a2fba19556782863bdd89e2d2d94e97b) )
- ROM_LOAD("74s474", 0xfe00, 0x0200, CRC(4511ba31) SHA1(e275b1739f8c3aa445cccb6a2b597475f507e456) )
-
- // speech ROM
- ROM_DEFAULT_BIOS("en")
- ROM_SYSTEM_BIOS(0, "en", "English")
- ROM_SYSTEM_BIOS(1, "de", "German")
- ROM_SYSTEM_BIOS(2, "fr", "French")
- ROM_SYSTEM_BIOS(3, "sp", "Spanish")
-
- ROM_REGION( 1, "language", 0 )
- ROMX_FILL(0, 1, 3, ROM_BIOS(0) )
- ROMX_FILL(0, 1, 2, ROM_BIOS(1) )
- ROMX_FILL(0, 1, 1, ROM_BIOS(2) )
- ROMX_FILL(0, 1, 0, ROM_BIOS(3) )
-
- ROM_REGION( 0x2000, "speech", 0 )
- ROMX_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d), ROM_BIOS(0) )
- ROM_RELOAD( 0x1000, 0x1000)
- ROMX_LOAD("101-64101", 0x0000, 0x2000, CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff), ROM_BIOS(1) )
- ROMX_LOAD("101-64105", 0x0000, 0x2000, CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3), ROM_BIOS(2) )
- ROMX_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
-ROM_END
-
-ROM_START( csce )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("03", 0x2000, 0x2000, CRC(22e43531) SHA1(696dc019bea3812ae6cf9c2b2c4d3a7b9017807d) )
- ROM_LOAD("02", 0xa000, 0x2000, CRC(e593f114) SHA1(4dc5a2456a87c128235958f046cee9502cb3ac65) )
- ROM_LOAD("06", 0xc000, 0x0800, CRC(5d41b1e5) SHA1(fe95d8811d8894688336b798212c397bdb216956) )
- ROM_LOAD("07", 0xc800, 0x0800, CRC(9078d40a) SHA1(4ffd36a4fcde1988e42543652e29463bc6ad5a8f) )
- ROM_LOAD("08", 0xd000, 0x0800, CRC(c9472cc1) SHA1(ef4b1ae99e81689efeae323fe6ed58cf2c773fd6) )
- ROM_LOAD("09", 0xd800, 0x0800, CRC(255c94a0) SHA1(d8e79213b69710e9d94c698492ec7b7420c9c7d8) )
- ROM_LOAD("04", 0xe000, 0x1000, CRC(098873bd) SHA1(86001129a57db390e565f59a5677ec0b34b41d99) )
- ROM_LOAD("05", 0xf000, 0x1000, CRC(1a516bfe) SHA1(2a2b252ca5d425fdf162cbc53077aee448b94437) )
-
- // speech ROM
- ROM_DEFAULT_BIOS("en")
- ROM_SYSTEM_BIOS(0, "en", "English")
- ROM_SYSTEM_BIOS(1, "de", "German")
- ROM_SYSTEM_BIOS(2, "fr", "French")
- ROM_SYSTEM_BIOS(3, "sp", "Spanish")
-
- ROM_REGION( 1, "language", 0 )
- ROMX_FILL(0, 1, 3, ROM_BIOS(0) )
- ROMX_FILL(0, 1, 2, ROM_BIOS(1) )
- ROMX_FILL(0, 1, 1, ROM_BIOS(2) )
- ROMX_FILL(0, 1, 0, ROM_BIOS(3) )
-
- ROM_REGION( 0x2000, "speech", 0 )
- ROMX_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d), ROM_BIOS(0) )
- ROM_RELOAD( 0x1000, 0x1000)
- ROMX_LOAD("101-64101", 0x0000, 0x2000, CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff), ROM_BIOS(1) )
- ROMX_LOAD("101-64105", 0x0000, 0x2000, CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3), ROM_BIOS(2) )
- ROMX_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
-ROM_END
-
-
-ROM_START( super9cc )
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD("101-1050a01", 0x2000, 0x2000, CRC(421147e8) SHA1(ccf62f6f218e8992baf30973fe41b35e14a1cc1a) )
- ROM_LOAD("101-1024b03", 0xa000, 0x0800, CRC(e8c97455) SHA1(ed2958fc5474253ee8c2eaf27fc64226e12f80ea) )
- ROM_LOAD("101-1024b02", 0xc000, 0x2000, CRC(95004699) SHA1(ea79f43da73267344545df8ad61730f613876c2e) )
- ROM_LOAD("101-1024c01", 0xe000, 0x2000, CRC(03904e86) SHA1(bfa0dd9d8541e3ec359a247a3eba543501f727bc) )
-
- // speech ROM
- ROM_DEFAULT_BIOS("en")
- ROM_SYSTEM_BIOS(0, "en", "English")
- ROM_SYSTEM_BIOS(1, "de", "German")
- ROM_SYSTEM_BIOS(2, "fr", "French")
- ROM_SYSTEM_BIOS(3, "sp", "Spanish")
-
- ROM_REGION( 1, "language", 0 )
- ROMX_FILL(0, 1, 3, ROM_BIOS(0) )
- ROMX_FILL(0, 1, 2, ROM_BIOS(1) )
- ROMX_FILL(0, 1, 1, ROM_BIOS(2) )
- ROMX_FILL(0, 1, 0, ROM_BIOS(3) )
-
- ROM_REGION( 0x2000, "speech", 0 )
- ROMX_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d), ROM_BIOS(0) )
- ROM_RELOAD( 0x1000, 0x1000)
- ROMX_LOAD("101-64101", 0x0000, 0x2000, CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff), ROM_BIOS(1) )
- ROMX_LOAD("101-64105", 0x0000, 0x2000, CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3), ROM_BIOS(2) )
- ROMX_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
-ROM_END
-
-
-ROM_START( reversic )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-1000a01", 0xf000, 0x1000, CRC(ca7723a7) SHA1(bd92330f2d9494fa408f5a2ca300d7a755bdf489) )
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1981, csc, 0, 0, csc, csc, csc_state, empty_init, "Fidelity Electronics", "Champion Sensory Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1981, csce, 0, 0, csce, csc, csc_state, empty_init, "Fidelity Electronics", "Elite Champion Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-
-CONS( 1983, super9cc, 0, 0, su9, su9, su9_state, empty_init, "Fidelity Electronics", "Super 9 Sensory Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-
-CONS( 1981, reversic, 0, 0, rsc, rsc, csc_state, empty_init, "Fidelity Electronics", "Reversi Sensory Challenger (green version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/fidel_dames.cpp b/src/mame/drivers/fidel_dames.cpp
deleted file mode 100644
index 083a0fbb8c6..00000000000
--- a/src/mame/drivers/fidel_dames.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:yoyo_chessboard
-/******************************************************************************
-*
-* fidel_dames.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-*******************************************************************************
-
-Fidelity Dame Sensory Challenger (DSC) overview:
-- Z80A CPU @ 3.9MHz
-- 8KB ROM(MOS 2364), 1KB RAM(2*TMM314APL)
-- 4-digit 7seg panel, sensory board with 50 buttons
-- PCB label 510-1030A01
-
-It's a checkers game for once instead of chess
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/z80/z80.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-// internal artwork
-#include "fidel_dsc.lh" // clickable
-
-
-namespace {
-
-class dsc_state : public fidelbase_state
-{
-public:
- dsc_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag)
- { }
-
- // machine drivers
- void dsc(machine_config &config);
-
-private:
- // address maps
- void main_map(address_map &map);
-
- // I/O handlers
- void prepare_display();
- DECLARE_WRITE8_MEMBER(control_w);
- DECLARE_WRITE8_MEMBER(select_w);
- DECLARE_READ8_MEMBER(input_r);
-};
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// TTL
-
-void dsc_state::prepare_display()
-{
- // 4 7seg leds
- set_display_segmask(0xf, 0x7f);
- display_matrix(8, 4, m_7seg_data, m_led_select);
-}
-
-WRITE8_MEMBER(dsc_state::control_w)
-{
- // d0-d7: input mux, 7seg data
- m_inp_mux = ~data;
- m_7seg_data = data;
- prepare_display();
-}
-
-WRITE8_MEMBER(dsc_state::select_w)
-{
- // d4: speaker out
- m_dac->write(BIT(~data, 4));
-
- // d0-d3: digit select
- m_led_select = data & 0xf;
- prepare_display();
-}
-
-READ8_MEMBER(dsc_state::input_r)
-{
- // d0-d7: multiplexed inputs (active low)
- return ~read_inputs(8);
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void dsc_state::main_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x0000, 0x1fff).rom();
- map(0x4000, 0x4000).mirror(0x1fff).w(FUNC(dsc_state::control_w));
- map(0x6000, 0x6000).mirror(0x1fff).w(FUNC(dsc_state::select_w));
- map(0x8000, 0x8000).mirror(0x1fff).r(FUNC(dsc_state::input_r));
- map(0xa000, 0xa3ff).mirror(0x1c00).ram();
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( dsc )
- PORT_INCLUDE( generic_cb_buttons )
-
- PORT_MODIFY("IN.4")
- PORT_BIT(0x8f, IP_ACTIVE_HIGH, IPT_UNUSED)
-
- PORT_MODIFY("IN.6")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Black King")
-
- PORT_MODIFY("IN.7")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Black")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("White King")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("White")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("RV")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("RE")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("PB")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("LV")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("CL")
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void dsc_state::dsc(machine_config &config)
-{
- /* basic machine hardware */
- Z80(config, m_maincpu, 3.9_MHz_XTAL); // 3.9MHz resonator
- m_maincpu->set_addrmap(AS_PROGRAM, &dsc_state::main_map);
-
- const attotime irq_period = attotime::from_hz(523); // from 555 timer (22nF, 120K, 2.7K)
- TIMER(config, m_irq_on).configure_periodic(FUNC(dsc_state::irq_on<INPUT_LINE_IRQ0>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_usec(41)); // active for 41us
- TIMER(config, "irq_off").configure_periodic(FUNC(dsc_state::irq_off<INPUT_LINE_IRQ0>), irq_period);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(dsc_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_dsc);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( damesc ) // model DSC
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "101-1027a01", 0x0000, 0x2000, CRC(d86c985c) SHA1(20f923a24420050fd16e1172f5e889f144d17ac9) ) // MOS 2364
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1981, damesc, 0, 0, dsc, dsc, dsc_state, empty_init, "Fidelity Electronics", "Dame Sensory Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/fidel_desdis.cpp b/src/mame/drivers/fidel_desdis.cpp
deleted file mode 100644
index 0c59c8af683..00000000000
--- a/src/mame/drivers/fidel_desdis.cpp
+++ /dev/null
@@ -1,358 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:Berger, yoyo_chessboard
-/******************************************************************************
-*
-* fidel_desdis.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-Fidelity Designer Display series, 6502 and 68000
-(6502-based displayless Designer is in fidel_excel.cpp)
-
-*******************************************************************************
-
-Designer 2100 Display (model 6106) overview:
-- 8KB RAM(MS6264L-10), 2*32KB ROM(27C256)
-- WDC W65C02P-6 CPU, 6MHz XTAL
-- 4-digit LCD panel
-- PCB label 510.1130A01
-
-Designer 2000 Display (model 6105): same hardware, no bookrom, 3MHz
-
-*******************************************************************************
-
-Designer Mach III Master 2265 (model 6113) overview:
-- 80KB RAM(2*KM6264AL-10, 2*KM62256AP-10), 64KB ROM(2*WSI 27C256L-12)
-- MC68HC000P12F CPU, 16MHz XTAL
-- IRQ(IPL2) from 555 timer, 1.67ms low, 6us high
-- PCB label 510.1134A02
-
-ROM address/data lines are scrambled, presumed for easy placement on PCB and not
-for obfuscation. I/O is nearly the same as Designer Display on 6502 hardware.
-
-Designer Mach IV Master 2325 (model 6129) overview:
-- 32KB(4*P5164-70) + 512KB(TC518512PL-80) RAM, 64KB ROM(TMS 27C512-120JL)
-- MC68EC020RP25 CPU, 20MHz XTAL
-- PCB label 510.1149A01
-- It has a green "Shift" led instead of red, and ROM is not scrambled.
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/m6502/r65c02.h"
-#include "cpu/m6502/m65sc02.h"
-#include "cpu/m68000/m68000.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-// internal artwork
-#include "fidel_desdis.lh" // clickable
-#include "fidel_desdis_68kg.lh" // clickable
-#include "fidel_desdis_68kr.lh" // clickable
-
-
-namespace {
-
-class desdis_state : public fidelbase_state
-{
-public:
- desdis_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag)
- { }
-
- // machine drivers
- void fdes2000d(machine_config &config);
- void fdes2100d(machine_config &config);
-
- void init_fdes2100d();
-
-protected:
- // address maps
- void fdes2100d_map(address_map &map);
-
- // I/O handlers
- virtual DECLARE_WRITE8_MEMBER(control_w);
- virtual DECLARE_WRITE8_MEMBER(lcd_w);
- virtual DECLARE_READ8_MEMBER(input_r);
-};
-
-class desmas_state : public desdis_state
-{
-public:
- desmas_state(const machine_config &mconfig, device_type type, const char *tag) :
- desdis_state(mconfig, type, tag)
- { }
-
- // machine drivers
- void fdes2265(machine_config &config);
- void fdes2325(machine_config &config);
-
- void init_fdes2265();
-
-private:
- // address maps
- void fdes2265_map(address_map &map);
- void fdes2325_map(address_map &map);
-
- // I/O handlers, slightly different (control_w is d0 instead of d7, lcd_w is inverted)
- virtual DECLARE_WRITE8_MEMBER(control_w) override { desdis_state::control_w(space, offset, data << 7); }
- virtual DECLARE_WRITE8_MEMBER(lcd_w) override { desdis_state::lcd_w(space, offset, ~data); }
-};
-
-
-// init
-
-void desdis_state::init_fdes2100d()
-{
- m_rombank->configure_entries(0, 2, memregion("rombank")->base(), 0x4000);
-}
-
-void desmas_state::init_fdes2265()
-{
- u16 *rom = (u16*)memregion("maincpu")->base();
- const u32 len = memregion("maincpu")->bytes() / 2;
-
- // descramble data lines
- for (int i = 0; i < len; i++)
- rom[i] = bitswap<16>(rom[i], 15,14,8,13,9,12,10,11, 3,4,5,7,6,0,1,2);
-
- // descramble address lines
- std::vector<u16> buf(len);
- memcpy(&buf[0], rom, len*2);
- for (int i = 0; i < len; i++)
- rom[i] = buf[bitswap<24>(i, 23,22,21,20,19,18,17,16, 15,14,13,12,11,8,10,9, 7,6,5,4,3,2,1,0)];
-}
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// TTL/generic
-
-WRITE8_MEMBER(desdis_state::control_w)
-{
- u8 q3_old = m_led_select & 8;
-
- // a0-a2,d7: 74259
- u8 mask = 1 << offset;
- m_led_select = (m_led_select & ~mask) | ((data & 0x80) ? mask : 0);
-
- // 74259 Q4-Q7: 7442 a0-a3
- // 7442 0-8: led data, input mux
- u16 sel = 1 << (m_led_select >> 4 & 0xf) & 0x3ff;
- m_inp_mux = sel & 0x1ff;
-
- // 7442 9: speaker out
- m_dac->write(BIT(sel, 9));
-
- // 74259 Q0,Q1: led select (active low)
- display_matrix(9, 2, m_inp_mux, ~m_led_select & 3, false);
-
- // 74259 Q2: book rom A14
- if (m_rombank != nullptr)
- m_rombank->set_entry(~m_led_select >> 2 & 1);
-
- // 74259 Q3: lcd common, update on rising edge
- if (~q3_old & m_led_select & 8)
- {
- for (int i = 0; i < 4; i++)
- m_display_state[i+2] = m_7seg_data >> (8*i) & 0xff;
- }
-
- m_display_maxy += 4;
- set_display_segmask(0x3c, 0x7f);
- display_update();
-}
-
-WRITE8_MEMBER(desdis_state::lcd_w)
-{
- // a0-a2,d0-d3: 4*74259 to lcd digit segments
- u32 mask = bitswap<8>(1 << offset,3,7,6,0,1,2,4,5);
- for (int i = 0; i < 4; i++)
- {
- m_7seg_data = (m_7seg_data & ~mask) | ((data >> i & 1) ? 0 : mask);
- mask <<= 8;
- }
-}
-
-READ8_MEMBER(desdis_state::input_r)
-{
- // a0-a2,d7: multiplexed inputs (active low)
- return (read_inputs(9) >> offset & 1) ? 0 : 0x80;
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void desdis_state::fdes2100d_map(address_map &map)
-{
- map(0x0000, 0x1fff).ram();
- map(0x2000, 0x2007).mirror(0x1ff8).rw(FUNC(desdis_state::input_r), FUNC(desdis_state::control_w));
- map(0x4000, 0x7fff).bankr("rombank");
- map(0x6000, 0x6007).mirror(0x1ff8).w(FUNC(desdis_state::lcd_w));
- map(0x8000, 0xffff).rom();
-}
-
-void desmas_state::fdes2265_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x000000, 0x00ffff).rom();
- map(0x000000, 0x00000f).w(FUNC(desmas_state::lcd_w)).umask16(0x00ff);
- map(0x044000, 0x047fff).ram();
- map(0x100000, 0x10ffff).ram();
- map(0x140000, 0x14000f).r(FUNC(desmas_state::input_r)).umask16(0xff00);
- map(0x140000, 0x14000f).w(FUNC(desmas_state::control_w)).umask16(0x00ff);
-}
-
-void desmas_state::fdes2325_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x000000, 0x00ffff).rom();
- map(0x100000, 0x10000f).w(FUNC(desmas_state::lcd_w)).umask32(0x00ff00ff);
- map(0x140000, 0x14000f).w(FUNC(desmas_state::control_w)).umask32(0x00ff00ff);
- map(0x180000, 0x18000f).r(FUNC(desmas_state::input_r)).umask32(0xff00ff00);
- map(0x300000, 0x37ffff).ram();
- map(0x500000, 0x507fff).ram();
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( desdis )
- PORT_INCLUDE( generic_cb_buttons )
-
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("Move / Alternate")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Hint / Info")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("Take Back / Replay")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Level / New")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_NAME("Option / Time")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Verify / Problem")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("Shift")
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void desdis_state::fdes2100d(machine_config &config)
-{
- /* basic machine hardware */
- M65C02(config, m_maincpu, 6_MHz_XTAL); // W65C02P-6
- m_maincpu->set_addrmap(AS_PROGRAM, &desdis_state::fdes2100d_map);
-
- const attotime irq_period = attotime::from_hz(630); // from 556 timer (22nF, 102K, 1K)
- TIMER(config, m_irq_on).configure_periodic(FUNC(desdis_state::irq_on<M6502_IRQ_LINE>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_nsec(15250)); // active for 15.25us
- TIMER(config, "irq_off").configure_periodic(FUNC(desdis_state::irq_off<M6502_IRQ_LINE>), irq_period);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(desdis_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_desdis);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
-
-void desdis_state::fdes2000d(machine_config &config)
-{
- fdes2100d(config);
-
- /* basic machine hardware */
- R65C02(config.replace(), m_maincpu, 3_MHz_XTAL); // R65C02P3
- m_maincpu->set_addrmap(AS_PROGRAM, &desdis_state::fdes2100d_map);
-}
-
-void desmas_state::fdes2265(machine_config &config)
-{
- /* basic machine hardware */
- M68000(config, m_maincpu, 16_MHz_XTAL); // MC68HC000P12F
- m_maincpu->set_addrmap(AS_PROGRAM, &desmas_state::fdes2265_map);
-
- const attotime irq_period = attotime::from_hz(597); // from 555 timer, measured
- TIMER(config, m_irq_on).configure_periodic(FUNC(desmas_state::irq_on<M68K_IRQ_4>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_nsec(6000)); // active for 6us
- TIMER(config, "irq_off").configure_periodic(FUNC(desmas_state::irq_off<M68K_IRQ_4>), irq_period);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(desmas_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_desdis_68kr);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
-
-void desmas_state::fdes2325(machine_config &config)
-{
- fdes2265(config);
-
- /* basic machine hardware */
- M68EC020(config.replace(), m_maincpu, 20_MHz_XTAL); // MC68EC020RP25
- m_maincpu->set_addrmap(AS_PROGRAM, &desmas_state::fdes2325_map);
-
- config.set_default_layout(layout_fidel_desdis_68kg);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( fdes2100d ) // model 6106, PCB label 510.1130A01. The 'rev B' dump came from a post-release bugfix by Fidelity
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("i9_orange.ic9", 0x8000, 0x8000, CRC(83fec02a) SHA1(6f43ab05bc605061989b05d0592dbd184efff9d4) ) // WSI 27C256L-12
-
- ROM_REGION( 0x8000, "rombank", 0 )
- ROM_LOAD("bk3_white.ic10", 0x0000, 0x8000, CRC(3857cc35) SHA1(f073dafb9fd885c7ddb7fbff10e3653f343ef1c6) ) // WSI 27C256L-12
-ROM_END
-
-ROM_START( fdes2000d ) // model 6105, PCB label 510.1130A01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("27c256.ic9", 0x8000, 0x8000, CRC(b136d1a1) SHA1(8438790a62f45284ff33a0255c5c89f526726d3e) ) // 27C256, no label
-
- ROM_REGION( 0x8000, "rombank", ROMREGION_ERASEFF ) // no rom in ic10
-ROM_END
-
-
-ROM_START( fdes2265 ) // model 6113, PCB label 510.1134A02
- ROM_REGION16_BE( 0x10000, "maincpu", 0 )
- ROM_LOAD16_BYTE("13e_red.ic11", 0x00000, 0x08000, CRC(15a35628) SHA1(8213862e129951c6943a80f73cd0b63a31bb1357) ) // 27c256
- ROM_LOAD16_BYTE("13o_blue.ic10", 0x00001, 0x08000, CRC(81ce7ab2) SHA1(f01a70bcf2fbfe66c7a77d3c4437d897e5cc682d) ) // "
-ROM_END
-
-ROM_START( fdes2325 ) // model 6129, PCB label 510.1149A01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("61_29_white.ic10", 0x00000, 0x10000, CRC(f74157e1) SHA1(87f3f2d584e292f81593e053240d022cc477834d) ) // 27c512
-
- ROM_REGION( 0x100, "pals", 0 )
- ROM_LOAD("101-1097a01.ic19", 0x000, 0x100, NO_DUMP ) // PALCE16V8Q-25PC
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1988, fdes2100d, 0, 0, fdes2100d, desdis, desdis_state, init_fdes2100d, "Fidelity Electronics", "Designer 2100 Display (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1988, fdes2000d, fdes2100d, 0, fdes2000d, desdis, desdis_state, init_fdes2100d, "Fidelity Electronics", "Designer 2000 Display", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-
-CONS( 1989, fdes2265, 0, 0, fdes2265, desdis, desmas_state, init_fdes2265, "Fidelity Electronics", "Designer Mach III Master 2265", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1991, fdes2325, fdes2265, 0, fdes2325, desdis, desmas_state, empty_init, "Fidelity Electronics", "Designer Mach IV Master 2325", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/fidel_eag68k.cpp b/src/mame/drivers/fidel_eag68k.cpp
deleted file mode 100644
index 6405d2fc4b1..00000000000
--- a/src/mame/drivers/fidel_eag68k.cpp
+++ /dev/null
@@ -1,737 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:Berger, yoyo_chessboard
-/******************************************************************************
-*
-* fidel_eag68k.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-Fidelity 68000-based Elite Avant Garde driver
-For 6502-based EAG, see fidel_elite.cpp
-Excel 68000 I/O is very similar to EAG, so it's handled in this driver as well
-
-TODO:
-- USART is not emulated
-- V11 CPU should be M68EC060, not yet emulated. Now using M68EC040 in its place
- at twice the frequency due to lack of superscalar.
-- V11 beeper is too high pitched, related to wrong CPU type too? But even at 72MHz
- it's still wrong, so maybe waitstates or clock divider on I/O access.
-
-*******************************************************************************
-
-Excel 68000 (model 6094) overview:
-- 16KB RAM(2*SRM2264C-10 @ U8/U9), 64KB ROM(2*AT27C256-15DC @ U6/U7)
-- HD68HC000P12 CPU, 12MHz XTAL
-- PCB label 510-1129A01
-- PCB has edge connector for module, but no external slot
-
-There's room for 2 SIMMs at U22 and U23, unpopulated in Excel 68000 and Mach III.
-Mach II has 2*64KB DRAM with a MB1422A DRAM controller @ 25MHz.
-Mach III has wire mods from U22/U23 to U8/U9(2*8KB + 2*32KB piggybacked).
-Mach IV has 2*256KB DRAM, and a daughterboard(510.1123B01) for the 68020.
-
-I/O is via TTL, overall very similar to EAG.
-
-*******************************************************************************
-
-Elite Avant Garde (EAG, model 6114)
------------------------------------
-
-There are 5 versions of model 6114(V1 to V5):
-
-V1: 128KB DRAM, no EEPROM
-V2: 128KB DRAM
-V3: 512KB DRAM
-V4: 1MB DRAM
-V5: 128KB+16KB DRAM, dual-CPU! (2*68K @ 16MHz)
-
-V6-V11 are on model 6117. Older 1986 model 6081/6088/6089 uses a 6502 CPU.
-
-Hardware info:
---------------
-- MC68HC000P12F 16MHz CPU, 16MHz XTAL
-- MB1422A DRAM Controller, 25MHz XTAL near, 4 DRAM slots
- (V2: slot 2 & 3 64KB, V3: slot 2 & 3 256KB)
-- 2*27C512 64KB EPROM, 2*KM6264AL-10 8KB SRAM, 2*AT28C64X 8KB EEPROM
-- OKI M82C51A-2 USART, 4.9152MHz XTAL
-- other special: magnet sensors, external module slot, serial port
-
-IRQ source is a 4,9152MHz quartz crystal (Y3) connected to a 74HC4060 (U8,
-ripple counter/divider). From Q13 output (counter=8192) we obtain the IRQ signal
-applied to IPL1 of 68000 (pin 24) 4,9152 MHz / 8192 = 600 Hz.
-
-The module slot pinout is different from SCC series. The data on those appears
-to be compatible with EAG though and will load fine with an adapter.
-
-The USART allows for a serial connection between the chess computer and another
-device, for example a PC. Fidelity released a DOS tool called EAGLINK which
-featured PC printer support, complete I/O control, detailed information while
-the program is 'thinking', etc.
-
-Memory map: (of what is known)
------------
-000000-01FFFF: 128KB ROM
-104000-107FFF: 16KB SRAM
-200000-2FFFFF: hashtable DRAM (max. 1MB)
-300000-30000F W hi d0: NE591: 7seg data
-300000-30000F W lo d0: NE591: LED data
-300000-30000F R lo d7: 74259: keypad rows 0-7
-400000-400007 W lo d0: 74259,74145/7442: led/keypad mux, buzzer out
-400000-4????? R hi: external module slot
-700002-700003 R lo d7: 74251: keypad row 8
-604000-607FFF: 16KB EEPROM
-
-*******************************************************************************
-
-Elite Avant Garde (EAG, model 6117)
------------------------------------
-
-There are 6 versions of model 6117(V6 to V11). From a programmer's point of view,
-the hardware is very similar to model 6114.
-
-V6: 68020, 512KB hashtable RAM
-V7: 68020, 1MB h.RAM
-V8: 2*68020, 512KB+128KB h.RAM
-V9: 68030, 1MB h.RAM
-V10: 68040, 1MB h.RAM
-V11: 68060, 2MB h.RAM, high speed
-
-V7 Hardware info:
------------------
-- MC68020RC25E CPU, 25MHz XTAL - this PCB was overclocked, original was 20MHz so let's use that
-- 4*AS7C164-20PC 8KB SRAM, 2*KM684000ALG-7L 512KB CMOS SRAM
-- 2*27C512? 64KB EPROM, 2*HM6264LP-15 8KB SRAM, 2*AT28C64B 8KB EEPROM, 2*GAL16V8C
-- same as 6114: M82C51A, NE555, SN74HC4060, module slot, chessboard, ..
-
-V7 Memory map:
---------------
-000000-01FFFF: 128KB ROM
-104000-107FFF: 16KB SRAM (unused?)
-200000-2FFFFF: hashtable SRAM
-300000-30000x: see model 6114
-400000-40000x: see model 6114
-700000-70000x: see model 6114
-604000-607FFF: 16KB EEPROM
-800000-807FFF: 32KB SRAM
-
-V10 Hardware info:
-------------------
-- 68040 CPU, 25MHz
-- other: assume same or very similar to V11(see below)
-
-The ROM dump came from the V11(see below). Built-in factory test proves
-that this program is a V10. Hold TB button immediately after power-on and
-press it for a sequence of tests:
-1) all LEDs on
-2) F40C: V10 program version
-3) 38b9: V10 ROM checksum
-4) xxxx: external module ROM checksum (0000 if no module present)
-5) xxxx: user settings (stored in EEPROM)
-6) xxxx: "
-7) 1024: hashtable RAM size
-8) return to game
-
-V11 Hardware info:
-------------------
-- MC68EC060RC75 CPU, 36MHz XTAL(36MHz bus, 72MHz CPU), CPU cooler required
-- 4*CXK5863AP-20 8KB SRAM, 4*K6X4008C1F-DF55 512KB CMOS SRAM
-- 4*M27C256B 32KB EPROM, 2*AT28C64 8KB EEPROM, 5*GAL16V8D
-- NEC D71051C USART, assume 8MHz, on quick glance it's same as the OKI USART
-- same as 6114: NE555, SN74HC4060, module slot, chessboard, ..
-
-This is a custom overclocked V10, manufactured by Wilfried Bucke. PCB is marked:
-"CHESS HW DESIGN COPYRIGHT 22-10-2002: REVA03 510.1136A01/510.1144B01 COMPONENT SIDE"
-There are two versions of this, one with a 66MHz CPU, one with a 72MHz CPU.
-Maybe other differences too?
-
-V1x Memory map:
----------------
-000000-01FFFF: 128KB ROM
-200000-3FFFFF: hashtable SRAM (less on V10?)
-B0000x-xxxxxx: see V7, -800000
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/m68000/m68000.h"
-#include "machine/gen_latch.h"
-#include "machine/ram.h"
-#include "machine/nvram.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-// internal artwork
-#include "fidel_ex_68k.lh" // clickable
-#include "fidel_eag_68k.lh" // clickable
-
-
-namespace {
-
-class eag_state : public fidelbase_state
-{
-public:
- eag_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag),
- m_ram(*this, "ram")
- { }
-
- // machine drivers
- void eagv2(machine_config &config);
- void eagv3(machine_config &config);
- void eagv5(machine_config &config);
- void eagv7(machine_config &config);
- void eagv9(machine_config &config);
- void eagv10(machine_config &config);
- void eagv11(machine_config &config);
-
- void init_eag();
-
-protected:
- void eag_base(machine_config &config);
-
- // devices/pointers
- optional_device<ram_device> m_ram;
-
- // address maps
- void eag_map(address_map &map);
- void eagv7_map(address_map &map);
- void eagv10_map(address_map &map);
-
- // I/O handlers
- void prepare_display();
- virtual DECLARE_WRITE8_MEMBER(mux_w);
- DECLARE_READ8_MEMBER(input1_r);
- DECLARE_READ8_MEMBER(input2_r);
- DECLARE_WRITE8_MEMBER(leds_w);
- DECLARE_WRITE8_MEMBER(digit_w);
-};
-
-class eagv5_state : public eag_state
-{
-public:
- eagv5_state(const machine_config &mconfig, device_type type, const char *tag) :
- eag_state(mconfig, type, tag),
- m_subcpu(*this, "subcpu"),
- m_mainlatch(*this, "mainlatch"),
- m_sublatch(*this, "sublatch")
- { }
-
- // machine drivers
- void eagv5(machine_config &config);
-
-private:
- // devices/pointers
- required_device<cpu_device> m_subcpu;
- required_device<generic_latch_8_device> m_mainlatch;
- required_device<generic_latch_8_device> m_sublatch;
-
- // address maps
- void main_map(address_map &map);
- void sub_map(address_map &map);
-
- // I/O handlers
- DECLARE_WRITE8_MEMBER(reset_subcpu_w);
- DECLARE_READ8_MEMBER(main_ack_r);
- DECLARE_READ8_MEMBER(sub_ack_r);
-};
-
-class excel68k_state : public eag_state
-{
-public:
- excel68k_state(const machine_config &mconfig, device_type type, const char *tag) :
- eag_state(mconfig, type, tag)
- { }
-
- // machine drivers
- void fex68k(machine_config &config);
- void fex68km2(machine_config &config);
- void fex68km3(machine_config &config);
-
-private:
- // address maps
- void fex68k_map(address_map &map);
- void fex68km2_map(address_map &map);
- void fex68km3_map(address_map &map);
-};
-
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// TTL/generic
-
-void eag_state::prepare_display()
-{
- // Excel 68000: 4*7seg leds, 8*8 chessboard leds
- // EAG: 8*7seg leds(2 panels), (8+1)*8 chessboard leds
- u8 seg_data = bitswap<8>(m_7seg_data,0,1,3,2,7,5,6,4);
- set_display_segmask(0x1ff, 0x7f);
- display_matrix(16, 9, m_led_data << 8 | seg_data, m_inp_mux);
-}
-
-WRITE8_MEMBER(eag_state::mux_w)
-{
- // a1-a3,d0: 74259
- u8 mask = 1 << offset;
- m_led_select = (m_led_select & ~mask) | ((data & 1) ? mask : 0);
-
- // 74259 Q0-Q3: 74145 A-D (Q4-Q7 N/C)
- // 74145 0-8: input mux, digit/led select
- // 74145 9: speaker out
- u16 sel = 1 << (m_led_select & 0xf);
- m_dac->write(BIT(sel, 9));
- m_inp_mux = sel & 0x1ff;
- prepare_display();
-}
-
-READ8_MEMBER(eag_state::input1_r)
-{
- // a1-a3,d7: multiplexed inputs (active low)
- return (read_inputs(9) >> offset & 1) ? 0 : 0x80;
-}
-
-READ8_MEMBER(eag_state::input2_r)
-{
- // d7: multiplexed inputs highest bit
- return (read_inputs(9) & 0x100) ? 0x80 : 0;
-}
-
-WRITE8_MEMBER(eag_state::leds_w)
-{
- // a1-a3,d0: led data
- m_led_data = (m_led_data & ~(1 << offset)) | ((data & 1) << offset);
- prepare_display();
-}
-
-WRITE8_MEMBER(eag_state::digit_w)
-{
- // a1-a3,d0(d8): digit segment data
- m_7seg_data = (m_7seg_data & ~(1 << offset)) | ((data & 1) << offset);
- prepare_display();
-}
-
-
-// EAG V5
-
-WRITE8_MEMBER(eagv5_state::reset_subcpu_w)
-{
- // reset subcpu, from trigger to monostable 555 (R1=47K, C1=1uF)
- m_subcpu->pulse_input_line(INPUT_LINE_RESET, attotime::from_msec(52));
-}
-
-READ8_MEMBER(eagv5_state::main_ack_r)
-{
- // d8,d9: latches ack state
- return (m_mainlatch->pending_r() << 1 ^ 2) | m_sublatch->pending_r();
-}
-
-READ8_MEMBER(eagv5_state::sub_ack_r)
-{
- // d8,d9: latches ack state
- return (m_sublatch->pending_r() << 1 ^ 2) | m_mainlatch->pending_r();
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-// Excel 68000
-
-void excel68k_state::fex68k_map(address_map &map)
-{
- map(0x000000, 0x00ffff).rom();
- map(0x000000, 0x00000f).mirror(0x00fff0).w(FUNC(excel68k_state::leds_w)).umask16(0x00ff);
- map(0x000000, 0x00000f).mirror(0x00fff0).w(FUNC(excel68k_state::digit_w)).umask16(0xff00);
- map(0x044000, 0x047fff).ram();
- map(0x100000, 0x10000f).mirror(0x03fff0).r(FUNC(excel68k_state::input1_r)).umask16(0x00ff);
- map(0x140000, 0x14000f).mirror(0x03fff0).w(FUNC(excel68k_state::mux_w)).umask16(0x00ff);
-}
-
-void excel68k_state::fex68km2_map(address_map &map)
-{
- fex68k_map(map);
- map(0x200000, 0x21ffff).ram();
-}
-
-void excel68k_state::fex68km3_map(address_map &map)
-{
- fex68k_map(map);
- map(0x200000, 0x20ffff).ram();
-}
-
-
-// EAG
-
-void eag_state::init_eag()
-{
- // eag_map: DRAM slots at $200000-$2fffff - V1/V2/V5: 128K, V3: 512K, V4: 1M
- m_maincpu->space(AS_PROGRAM).install_ram(0x200000, 0x200000 + m_ram->size() - 1, m_ram->pointer());
-}
-
-void eag_state::eag_map(address_map &map)
-{
- map(0x000000, 0x01ffff).rom();
- map(0x104000, 0x107fff).ram();
- map(0x300000, 0x30000f).mirror(0x000010).w(FUNC(eag_state::digit_w)).umask16(0xff00).nopr();
- map(0x300000, 0x30000f).mirror(0x000010).rw(FUNC(eag_state::input1_r), FUNC(eag_state::leds_w)).umask16(0x00ff);
- map(0x400000, 0x400007).w(FUNC(eag_state::mux_w)).umask16(0x00ff);
- map(0x400000, 0x407fff).r(FUNC(eag_state::cartridge_r)).umask16(0xff00);
- map(0x604000, 0x607fff).ram().share("nvram");
- map(0x700003, 0x700003).r(FUNC(eag_state::input2_r));
-}
-
-void eagv5_state::main_map(address_map &map)
-{
- eag_map(map);
- map(0x500000, 0x500000).r(m_sublatch, FUNC(generic_latch_8_device::read)).w(m_mainlatch, FUNC(generic_latch_8_device::write));
- map(0x500002, 0x500002).rw(FUNC(eagv5_state::main_ack_r), FUNC(eagv5_state::reset_subcpu_w));
-}
-
-void eagv5_state::sub_map(address_map &map)
-{
- map(0x000000, 0x00ffff).rom();
- map(0x000001, 0x000001).mirror(0x00fffe).w(m_sublatch, FUNC(generic_latch_8_device::write));
- map(0x044000, 0x047fff).ram();
- map(0x140000, 0x140000).r(FUNC(eagv5_state::sub_ack_r));
- map(0x140001, 0x140001).r(m_mainlatch, FUNC(generic_latch_8_device::read));
-}
-
-void eag_state::eagv7_map(address_map &map)
-{
- map(0x000000, 0x01ffff).rom();
- map(0x104000, 0x107fff).ram();
- map(0x200000, 0x2fffff).ram();
- map(0x300000, 0x30000f).mirror(0x000010).w(FUNC(eag_state::digit_w)).umask32(0xff00ff00).nopr();
- map(0x300000, 0x30000f).mirror(0x000010).rw(FUNC(eag_state::input1_r), FUNC(eag_state::leds_w)).umask32(0x00ff00ff);
- map(0x400000, 0x400007).w(FUNC(eag_state::mux_w)).umask32(0x00ff00ff);
- map(0x400000, 0x407fff).r(FUNC(eag_state::cartridge_r)).umask32(0xff00ff00);
- map(0x604000, 0x607fff).ram().share("nvram");
- map(0x700003, 0x700003).r(FUNC(eag_state::input2_r));
- map(0x800000, 0x807fff).ram();
-}
-
-void eag_state::eagv10_map(address_map &map)
-{
- map(0x00000000, 0x0001ffff).rom();
- map(0x00200000, 0x003fffff).ram();
- map(0x00b00000, 0x00b0000f).mirror(0x00000010).w(FUNC(eag_state::digit_w)).umask32(0xff00ff00).nopr();
- map(0x00b00000, 0x00b0000f).mirror(0x00000010).rw(FUNC(eag_state::input1_r), FUNC(eag_state::leds_w)).umask32(0x00ff00ff);
- map(0x00c00000, 0x00c00007).w(FUNC(eag_state::mux_w)).umask32(0x00ff00ff);
- map(0x00c00000, 0x00c07fff).r(FUNC(eag_state::cartridge_r)).umask32(0xff00ff00);
- map(0x00e04000, 0x00e07fff).ram().share("nvram");
- map(0x00f00003, 0x00f00003).r(FUNC(eag_state::input2_r));
- map(0x01000000, 0x0101ffff).ram();
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( excel68k )
- PORT_INCLUDE( generic_cb_buttons )
-
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Move / Pawn")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Hint / Knight")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Take Back / Bishop")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Level / Rook")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Options / Queen")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Verify / King")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_N) PORT_NAME("New Game")
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( eag )
- PORT_INCLUDE( generic_cb_magnets )
-
- PORT_MODIFY("IN.0")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
-
- PORT_MODIFY("IN.1")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("DM")
-
- PORT_MODIFY("IN.2")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_N) PORT_NAME("New Game")
-
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("PB / King")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("PV / Queen")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("TM / Rook")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("ST / Bishop")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("TB / Knight")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("LV / Pawn")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("Option")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("RV")
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void excel68k_state::fex68k(machine_config &config)
-{
- /* basic machine hardware */
- M68000(config, m_maincpu, 12_MHz_XTAL); // HD68HC000P12
- m_maincpu->set_addrmap(AS_PROGRAM, &excel68k_state::fex68k_map);
-
- const attotime irq_period = attotime::from_hz(618); // theoretical frequency from 556 timer (22nF, 91K + 20K POT @ 14.8K, 0.1K), measurement was 580Hz
- TIMER(config, m_irq_on).configure_periodic(FUNC(excel68k_state::irq_on<M68K_IRQ_2>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_nsec(1528)); // active for 1.525us
- TIMER(config, "irq_off").configure_periodic(FUNC(excel68k_state::irq_off<M68K_IRQ_2>), irq_period);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(excel68k_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_ex_68k);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
-
-void excel68k_state::fex68km2(machine_config &config)
-{
- fex68k(config);
-
- /* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &excel68k_state::fex68km2_map);
-}
-
-void excel68k_state::fex68km3(machine_config &config)
-{
- fex68k(config);
-
- /* basic machine hardware */
- m_maincpu->set_clock(16_MHz_XTAL); // factory overclock
- m_maincpu->set_addrmap(AS_PROGRAM, &excel68k_state::fex68km3_map);
-}
-
-void eag_state::eag_base(machine_config &config)
-{
- /* basic machine hardware */
- M68000(config, m_maincpu, 16_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &eag_state::eag_map);
-
- const attotime irq_period = attotime::from_hz(4.9152_MHz_XTAL/0x2000); // 4060 Q13, 600Hz
- TIMER(config, m_irq_on).configure_periodic(FUNC(eag_state::irq_on<M68K_IRQ_2>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_nsec(8250)); // active for 8.25us
- TIMER(config, "irq_off").configure_periodic(FUNC(eag_state::irq_off<M68K_IRQ_2>), irq_period);
-
- NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(eag_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_eag_68k);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-
- /* cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_scc", "bin,dat");
- m_cart->set_device_load(device_image_load_delegate(&eag_state::device_image_load_scc_cartridge, this));
-
- SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
-}
-
-void eag_state::eagv2(machine_config &config)
-{
- eag_base(config);
-
- /* basic machine hardware */
- RAM(config, m_ram).set_extra_options("128K, 512K, 1M");
- m_ram->set_default_size("128K");
-}
-
-void eag_state::eagv3(machine_config &config)
-{
- eagv2(config);
-
- /* basic machine hardware */
- m_ram->set_default_size("512K");
-}
-
-void eagv5_state::eagv5(machine_config &config)
-{
- eagv2(config);
-
- /* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &eagv5_state::main_map);
-
- M68000(config, m_subcpu, 16_MHz_XTAL);
- m_subcpu->set_addrmap(AS_PROGRAM, &eagv5_state::sub_map);
- m_subcpu->set_periodic_int(FUNC(eagv5_state::irq2_line_hold), attotime::from_hz(16_MHz_XTAL/0x4000)); // 4060 Q14, ~1kHz
-
- GENERIC_LATCH_8(config, m_mainlatch);
- GENERIC_LATCH_8(config, m_sublatch);
- m_sublatch->data_pending_callback().set_inputline(m_maincpu, M68K_IRQ_1); // IPL0
-
- // gen_latch syncs on write, but this is still needed with tight cpu comms
- // (not that it locks up or anything, but it will calculate moves much slower if timing is off)
- config.m_perfect_cpu_quantum = subtag("maincpu");
-}
-
-void eag_state::eagv7(machine_config &config)
-{
- eag_base(config);
-
- /* basic machine hardware */
- M68020(config.replace(), m_maincpu, 20_MHz_XTAL); // also seen with 25MHz XTAL
- m_maincpu->set_addrmap(AS_PROGRAM, &eag_state::eagv7_map);
-}
-
-void eag_state::eagv9(machine_config &config)
-{
- eagv7(config);
-
- /* basic machine hardware */
- M68030(config.replace(), m_maincpu, 32_MHz_XTAL/2); // also seen with 40MHz XTAL
- m_maincpu->set_addrmap(AS_PROGRAM, &eag_state::eagv7_map);
-}
-
-void eag_state::eagv10(machine_config &config)
-{
- eagv7(config);
-
- /* basic machine hardware */
- M68040(config.replace(), m_maincpu, 25_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &eag_state::eagv10_map);
-}
-
-void eag_state::eagv11(machine_config &config)
-{
- eagv7(config);
-
- /* basic machine hardware */
- M68EC040(config.replace(), m_maincpu, 36_MHz_XTAL*2*2); // wrong! should be M68EC060 @ 72MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &eag_state::eagv10_map);
- m_maincpu->set_periodic_int(FUNC(eag_state::irq2_line_hold), attotime::from_hz(600));
-
- config.device_remove("irq_on"); // 8.25us is too long
- config.device_remove("irq_off");
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( fex68k ) // model 6094, PCB label 510.1120B01
- ROM_REGION16_BE( 0x10000, "maincpu", 0 )
- ROM_LOAD16_BYTE("e3_yellow.u6", 0x00000, 0x08000, CRC(a8a27714) SHA1(bc42a561eb39dd389c7831f1a25ad260510085d8) ) // AT27C256-15
- ROM_LOAD16_BYTE("o4_red.u7", 0x00001, 0x08000, CRC(560a14b7) SHA1(11f2375255bfa229314697f103e891ba1cf0c715) ) // "
-ROM_END
-
-ROM_START( fex68ka )
- ROM_REGION16_BE( 0x10000, "maincpu", 0 )
- ROM_LOAD16_BYTE("e3_yellow.u6", 0x00000, 0x08000, CRC(7dc60d05) SHA1(e47b4d4e64c4cac6c5a94a900c9f2dd017f849ce) )
- ROM_LOAD16_BYTE("o4_red.u7", 0x00001, 0x08000, CRC(4b738583) SHA1(ff506296ea460c7ed852339d2ab24aaae01730d8) )
-ROM_END
-
-ROM_START( fex68kb )
- ROM_REGION16_BE( 0x10000, "maincpu", 0 )
- ROM_LOAD16_BYTE("e3_yellow.u6", 0x00000, 0x08000, CRC(d9f252f5) SHA1(205cdbadb58a4cdd486d4e40d2fe6a5209d2f8a4) )
- ROM_LOAD16_BYTE("o4_red.u7", 0x00001, 0x08000, CRC(3bf8b3d7) SHA1(6ce419c63159501d2349abfd1e142e38e5466fbc) )
-ROM_END
-
-ROM_START( fex68km2 ) // model 6097, PCB label 510.1120B01
- ROM_REGION16_BE( 0x10000, "maincpu", 0 )
- ROM_LOAD16_BYTE("e6_yellow.u6", 0x00000, 0x08000, CRC(2e65e7ad) SHA1(4f3aec12041c9014d5d700909bac66bae1f9eadf) ) // 27c256
- ROM_LOAD16_BYTE("o7_red.u7", 0x00001, 0x08000, CRC(4c20334a) SHA1(2e575b88c41505cc89599d2fc13e1e84fe474469) ) // "
-ROM_END
-
-ROM_START( fex68km3 ) // model 6098, PCB label 510.1120B01
- ROM_REGION16_BE( 0x10000, "maincpu", 0 )
- ROM_LOAD16_BYTE("me_white.u6", 0x00000, 0x08000, CRC(4b14cd9f) SHA1(4d41196900a71bf0699dae50f4726acc0ed3dced) ) // 27c256
- ROM_LOAD16_BYTE("mo_yellow.u7", 0x00001, 0x08000, CRC(b96b0b5f) SHA1(281145be802efb38ed764aecb26b511dcd71cb87) ) // "
-ROM_END
-
-
-ROM_START( feagv2 )
- ROM_REGION16_BE( 0x20000, "maincpu", 0 )
- ROM_LOAD16_BYTE("6114_e5_yellow.u22", 0x00000, 0x10000, CRC(f9c7bada) SHA1(60e545f829121b9a4f1100d9e85ac83797715e80) ) // 27c512
- ROM_LOAD16_BYTE("6114_o5_green.u19", 0x00001, 0x10000, CRC(04f97b22) SHA1(8b2845dd115498f7b385e8948eca6a5893c223d1) ) // "
-ROM_END
-
-ROM_START( feagv3 )
- ROM_REGION16_BE( 0x20000, "maincpu", 0 )
- ROM_LOAD16_BYTE("elite_1.6_e.u22", 0x00000, 0x10000, CRC(c8b89ccc) SHA1(d62e0a72f54b793ab8853468a81255b62f874658) )
- ROM_LOAD16_BYTE("elite_1.6_o.u19", 0x00001, 0x10000, CRC(904c7061) SHA1(742110576cf673321440bc81a4dae4c949b49e38) )
-ROM_END
-
-ROM_START( feagv5 )
- ROM_REGION( 0x20000, "maincpu", 0 ) // PCB label 510.1136A01
- ROM_LOAD16_BYTE("master_e", 0x00000, 0x10000, CRC(e424bddc) SHA1(ff03656addfe5c47f06df2efb4602f43a9e19d96) )
- ROM_LOAD16_BYTE("master_o", 0x00001, 0x10000, CRC(33a00894) SHA1(849460332b1ac10d452ca3631eb99f5597511b73) )
-
- ROM_REGION( 0x10000, "subcpu", 0 ) // PCB label 510.1138B01
- ROM_LOAD16_BYTE("slave_e", 0x00000, 0x08000, CRC(eea4de52) SHA1(a64ca8a44b431e2fa7f00e44cab7e6aa2d4a9403) )
- ROM_LOAD16_BYTE("slave_o", 0x00001, 0x08000, CRC(35fe2fdf) SHA1(731da12ee290bad9bc03cffe281c8cc48e555dfb) )
-ROM_END
-
-ROM_START( feagv7 )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD16_BYTE("eag-v7b", 0x00000, 0x10000, CRC(f2f68b63) SHA1(621e5073e9c5083ac9a9b467f3ef8aa29beac5ac) )
- ROM_LOAD16_BYTE("eag-v7a", 0x00001, 0x10000, CRC(506b688f) SHA1(0a091c35d0f01166b57f964b111cde51c5720d58) )
-ROM_END
-
-ROM_START( feagv7a )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD16_BYTE("eag-v7b", 0x00000, 0x10000, CRC(44baefbf) SHA1(dbc24340d7e3013cc8f111ebb2a59169c5dcb8e8) )
- ROM_LOAD16_BYTE("eag-v7a", 0x00001, 0x10000, CRC(951a7857) SHA1(dad21b049fd4f411a79d4faefb922c1277569c0e) )
-ROM_END
-
-ROM_START( feagv9 )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD16_BYTE("eag-v9b", 0x00000, 0x10000, CRC(60523199) SHA1(a308eb6b782732af1ab2fd0ed8b046de7a8dd24b) )
- ROM_LOAD16_BYTE("eag-v9a", 0x00001, 0x10000, CRC(255c63c0) SHA1(8aa0397bdb3731002f5b066cd04ec62531267e22) )
-ROM_END
-
-ROM_START( feagv10 )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD32_BYTE("16", 0x00000, 0x08000, CRC(8375d61f) SHA1(e042f6f01480c59ee09a458cf34f135664479824) ) // 27c256
- ROM_LOAD32_BYTE("17", 0x00001, 0x08000, CRC(bfd14916) SHA1(115af6dfd29ddd8ad6d2ce390f8ecc4d60de6fce) ) // "
- ROM_LOAD32_BYTE("18", 0x00002, 0x08000, CRC(9341dcaf) SHA1(686bd4799e89ffaf11a813d4cf5a2aedd4c2d97a) ) // "
- ROM_LOAD32_BYTE("19", 0x00003, 0x08000, CRC(a70c5468) SHA1(7f6b4f46577d5cfdaa84d387c7ce35d941e5bbc7) ) // "
-ROM_END
-
-ROM_START( feagv11 )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD32_BYTE("16", 0x00000, 0x08000, CRC(8375d61f) SHA1(e042f6f01480c59ee09a458cf34f135664479824) ) // 27c256
- ROM_LOAD32_BYTE("17", 0x00001, 0x08000, CRC(bfd14916) SHA1(115af6dfd29ddd8ad6d2ce390f8ecc4d60de6fce) ) // "
- ROM_LOAD32_BYTE("18", 0x00002, 0x08000, CRC(9341dcaf) SHA1(686bd4799e89ffaf11a813d4cf5a2aedd4c2d97a) ) // "
- ROM_LOAD32_BYTE("19", 0x00003, 0x08000, CRC(a70c5468) SHA1(7f6b4f46577d5cfdaa84d387c7ce35d941e5bbc7) ) // "
-ROM_END
-
-} // anonymous namespace
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
-CONS( 1987, fex68k, 0, 0, fex68k, excel68k, excel68k_state, empty_init, "Fidelity Electronics", "Excel 68000 (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1987, fex68ka, fex68k, 0, fex68k, excel68k, excel68k_state, empty_init, "Fidelity Electronics", "Excel 68000 (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1987, fex68kb, fex68k, 0, fex68k, excel68k, excel68k_state, empty_init, "Fidelity Electronics", "Excel 68000 (set 3)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1988, fex68km2, fex68k, 0, fex68km2, excel68k, excel68k_state, empty_init, "Fidelity Electronics", "Excel 68000 Mach II (rev. C+)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1988, fex68km3, fex68k, 0, fex68km3, excel68k, excel68k_state, empty_init, "Fidelity Electronics", "Excel 68000 Mach III Master", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-
-CONS( 1989, feagv2, 0, 0, eagv2, eag, eag_state, init_eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1989, feagv3, feagv2, 0, eagv3, eag, eag_state, init_eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-3)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1989, feagv5, feagv2, 0, eagv5, eag, eagv5_state, init_eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-5)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1990, feagv7, feagv2, 0, eagv7, eag, eag_state, empty_init, "Fidelity Electronics", "Elite Avant Garde (model 6117-7, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1990, feagv7a, feagv2, 0, eagv7, eag, eag_state, empty_init, "Fidelity Electronics", "Elite Avant Garde (model 6117-7, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1990, feagv9, feagv2, 0, eagv9, eag, eag_state, empty_init, "Fidelity Electronics", "Elite Avant Garde (model 6117-9)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1990, feagv10, feagv2, 0, eagv10, eag, eag_state, empty_init, "Fidelity Electronics", "Elite Avant Garde (model 6117-10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 2002, feagv11, feagv2, 0, eagv11, eag, eag_state, empty_init, "hack (Wilfried Bucke)", "Elite Avant Garde (model 6117-11)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/fidel_elite.cpp b/src/mame/drivers/fidel_elite.cpp
deleted file mode 100644
index b3b2bc3ac56..00000000000
--- a/src/mame/drivers/fidel_elite.cpp
+++ /dev/null
@@ -1,647 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:Berger
-/******************************************************************************
-*
-* fidel_elite.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-Fidelity Elite A/S series hardware (EAS, EAG, PC)
-see fidel_eag68k.cpp for 68000-based EAG hardware
-
-*******************************************************************************
-
-Elite A/S Challenger (EAS)
----------------------------------
-This came out in 1982. 2 program updates were released in 1983 and 1984,
-named Budapest and Glasgow, places where Fidelity won chess computer matches.
-A/S stands for auto sensory, it's the 1st Fidelity board with magnet sensors.
-The magnetic chessboard was licensed from AVE Micro Systems, in fact it's the
-exact same one as in AVE's ARB (ave_arb.cpp driver).
-
-hardware overview:
-- 8*8 magnet sensors, 11 buttons, 8*(8+1) LEDs + 4*7seg LEDs
-- R65C02P4 or R6502BP CPU, default frequency 3MHz*
-- 4KB RAM (2*HM6116), 24KB ROM
-- TSI S14001A + speech ROM
-- I/O with 8255 PPI and bunch of TTL
-- module slot and printer port
-- PCB label 510-1071A01
-
-*In West Germany, some distributors released it with overclocked CPUs,
-advertised as 3.2, 3.6, or 4MHz. Unmodified EAS PCB photos show only a 3MHz XTAL.
-
-A condensator keeps RAM contents alive for a few hours when powered off.
-
-Prestige Challenger (PC) hardware is very similar. They stripped the 8255 PPI,
-and added more RAM(7*TMM2016P). Some were released at 3.6MHz instead of 4MHz,
-perhaps due to hardware instability? Opening module PC16 was included by default,
-this module is the same as CB16 but at different form factor.
-
-Elite Avant Garde (models 6081,6088,6089) is on the same hardware as EAS.
-
-Fidelity Private Line is a modified EAS Glasgow. They took out the motherboard
-and leds and placed them a little box separate from a (ledless) magnetic chessboard.
-It was probably only released in Germany.
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/m6502/m65c02.h"
-#include "cpu/m6502/r65c02.h"
-#include "machine/i8255.h"
-#include "machine/nvram.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-// internal artwork
-#include "fidel_eag.lh" // clickable
-#include "fidel_eas.lh" // clickable
-#include "fidel_eas_priv.lh" // clickable
-#include "fidel_pc.lh" // clickable
-
-
-namespace {
-
-class elite_state : public fidelbase_state
-{
-public:
- elite_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag),
- m_ppi8255(*this, "ppi8255")
- { }
-
- // machine drivers
- void pc(machine_config &config);
- void eas(machine_config &config);
- void eas_priv(machine_config &config);
- void eag(machine_config &config);
- void eag2100(machine_config &config);
-
- void init_eag2100();
-
-private:
- // devices/pointers
- optional_device<i8255_device> m_ppi8255;
-
- // address maps
- void eas_map(address_map &map);
- void eag_map(address_map &map);
- void eag2100_map(address_map &map);
- void pc_map(address_map &map);
-
- // I/O handlers
- void prepare_display();
- DECLARE_READ8_MEMBER(speech_r);
- DECLARE_WRITE8_MEMBER(segment_w);
- DECLARE_WRITE8_MEMBER(led_w);
- DECLARE_READ8_MEMBER(input_r);
- DECLARE_WRITE8_MEMBER(ppi_porta_w);
- DECLARE_READ8_MEMBER(ppi_portb_r);
- DECLARE_WRITE8_MEMBER(ppi_portc_w);
-};
-
-void elite_state::init_eag2100()
-{
- m_rombank->configure_entries(0, 4, memregion("rombank")->base(), 0x2000);
-}
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// TTL/generic
-
-void elite_state::prepare_display()
-{
- // 4/8 7seg leds+H, 8*8(+1) chessboard leds
- set_display_segmask(0x1ef, 0x7f);
- display_matrix(16, 9, m_led_data << 8 | m_7seg_data, m_led_select);
-}
-
-READ8_MEMBER(elite_state::speech_r)
-{
- return m_speech_rom[m_speech_bank << 12 | offset];
-}
-
-WRITE8_MEMBER(elite_state::segment_w)
-{
- // a0-a2,d7: digit segment
- m_7seg_data = (data & 0x80) >> offset;
- m_7seg_data = bitswap<8>(m_7seg_data,7,6,4,5,0,2,1,3);
- prepare_display();
-}
-
-WRITE8_MEMBER(elite_state::led_w)
-{
- // a0-a2,d0: led data
- m_led_data = (data & 1) << offset;
- prepare_display();
-}
-
-READ8_MEMBER(elite_state::input_r)
-{
- // multiplexed inputs (active low)
- return read_inputs(9) ^ 0xff;
-}
-
-
-// 8255 PPI (PC: done with TTL instead)
-
-WRITE8_MEMBER(elite_state::ppi_porta_w)
-{
- // d0-d5: TSI C0-C5
- // d6: TSI START line
- m_speech->data_w(space, 0, data & 0x3f);
- m_speech->start_w(data >> 6 & 1);
-
- // d7: printer? (black wire to LED pcb)
-}
-
-WRITE8_MEMBER(elite_state::ppi_portc_w)
-{
- // d0-d3: 7442 a0-a3
- // 7442 0-8: led select, input mux
- m_led_select = 1 << (data & 0xf) & 0x3ff;
- m_inp_mux = m_led_select & 0x1ff;
- prepare_display();
-
- // 7442 9: speaker out
- m_dac->write(BIT(m_led_select, 9));
-
- // d4: speech ROM A12
- m_speech->force_update(); // update stream to now
- m_speech_bank = data >> 4 & 1;
-
- // d5: lower TSI volume
- m_speech->set_output_gain(0, (data & 0x20) ? 0.5 : 1.0);
-
- // d6,d7: bookrom bankswitch (model EAG)
- if (m_rombank != nullptr)
- m_rombank->set_entry(data >> 6 & 3);
-}
-
-READ8_MEMBER(elite_state::ppi_portb_r)
-{
- // d0: printer? white wire from LED pcb
- u8 data = 1;
-
- // d1: TSI BUSY line
- data |= (m_speech->busy_r()) ? 2 : 0;
-
- // d2,d3: language switches(hardwired)
- data |= *m_language << 2 & 0x0c;
-
- // d5: multiplexed inputs highest bit
- data |= (read_inputs(9) & 0x100) ? 0 : 0x20;
-
- // other: ?
- return data | 0xd0;
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void elite_state::eas_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x0000, 0x0fff).ram().share("nvram");
- map(0x2000, 0x5fff).r(FUNC(elite_state::cartridge_r));
- map(0x7000, 0x7003).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
- map(0x7020, 0x7027).w(FUNC(elite_state::segment_w)).nopr();
- map(0x7030, 0x7037).w(FUNC(elite_state::led_w)).nopr();
- map(0x7050, 0x7050).r(FUNC(elite_state::input_r));
- map(0x8000, 0x9fff).rom();
- map(0xc000, 0xffff).rom();
-}
-
-void elite_state::eag_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x0000, 0x1fff).ram().share("nvram.ic8");
- map(0x2000, 0x5fff).r(FUNC(elite_state::cartridge_r));
- map(0x7000, 0x7003).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
- map(0x7020, 0x7027).w(FUNC(elite_state::segment_w)).nopr();
- map(0x7030, 0x7037).w(FUNC(elite_state::led_w)).nopr();
- map(0x7050, 0x7050).r(FUNC(elite_state::input_r));
- map(0x8000, 0x9fff).ram().share("nvram.ic6");
- map(0xa000, 0xffff).rom();
-}
-
-void elite_state::eag2100_map(address_map &map)
-{
- eag_map(map);
- map(0xa000, 0xbfff).bankr("rombank");
-}
-
-void elite_state::pc_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x0000, 0x17ff).ram();
- map(0x2000, 0x5fff).r(FUNC(elite_state::cartridge_r));
- map(0x7000, 0x7000).w(FUNC(elite_state::ppi_porta_w));
- map(0x7010, 0x7010).r(FUNC(elite_state::ppi_portb_r));
- map(0x7020, 0x7027).w(FUNC(elite_state::segment_w)).nopr();
- map(0x7030, 0x7037).w(FUNC(elite_state::led_w)).nopr();
- map(0x7040, 0x7040).w(FUNC(elite_state::ppi_portc_w));
- map(0x7050, 0x7050).r(FUNC(elite_state::input_r));
- map(0x8000, 0x9fff).ram();
- map(0xb000, 0xffff).rom();
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( eas )
- PORT_INCLUDE( fidel_cpu_div_4 )
- PORT_INCLUDE( generic_cb_magnets )
-
- PORT_MODIFY("IN.0")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("DM")
-
- PORT_MODIFY("IN.1")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
-
- PORT_MODIFY("IN.2")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("RV")
-
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Game Control") // labeled RESET on the Prestige, but led display still says - G C -
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Speaker")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("PB / King")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("PV / Queen")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("TM / Rook")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("ST / Bishop")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("TB / Knight")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("LV / Pawn")
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( eag )
- PORT_INCLUDE( fidel_cpu_div_4 )
- PORT_INCLUDE( generic_cb_magnets )
-
- PORT_MODIFY("IN.0")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
-
- PORT_MODIFY("IN.1")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("DM")
-
- PORT_MODIFY("IN.2")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_N) PORT_NAME("New Game")
-
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("RV")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("Option")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("LV / Pawn")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("TB / Knight")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("ST / Bishop")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("TM / Rook")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("PV / Queen")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("PB / King")
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void elite_state::pc(machine_config &config)
-{
- /* basic machine hardware */
- R65C02(config, m_maincpu, 4_MHz_XTAL); // R65C02P4
- m_maincpu->set_addrmap(AS_PROGRAM, &elite_state::div_trampoline);
- ADDRESS_MAP_BANK(config, m_mainmap).set_map(&elite_state::pc_map).set_options(ENDIANNESS_LITTLE, 8, 16);
-
- TIMER(config, "dummy_timer").configure_periodic(timer_device::expired_delegate(), attotime::from_hz(4_MHz_XTAL));
-
- const attotime irq_period = attotime::from_hz(38.4_kHz_XTAL/64); // through 4060 IC, 600Hz
- TIMER(config, m_irq_on).configure_periodic(FUNC(elite_state::irq_on<M6502_IRQ_LINE>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_hz(38.4_kHz_XTAL*2)); // edge!
- TIMER(config, "irq_off").configure_periodic(FUNC(elite_state::irq_off<M6502_IRQ_LINE>), irq_period);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(elite_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_pc);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
- m_speech->ext_read().set(FUNC(elite_state::speech_r));
- m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
-
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-
- /* cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_scc", "bin,dat");
- m_cart->set_device_load(device_image_load_delegate(&elite_state::device_image_load_scc_cartridge, this));
-
- SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
-}
-
-void elite_state::eas(machine_config &config)
-{
- pc(config);
-
- /* basic machine hardware */
- m_maincpu->set_clock(3_MHz_XTAL);
- m_mainmap->set_addrmap(AS_PROGRAM, &elite_state::eas_map);
- TIMER(config.replace(), "dummy_timer").configure_periodic(timer_device::expired_delegate(), attotime::from_hz(3_MHz_XTAL));
-
- I8255(config, m_ppi8255); // port B: input, port A & C: output
- m_ppi8255->out_pa_callback().set(FUNC(elite_state::ppi_porta_w));
- m_ppi8255->tri_pa_callback().set_constant(0);
- m_ppi8255->in_pb_callback().set(FUNC(elite_state::ppi_portb_r));
- m_ppi8255->out_pc_callback().set(FUNC(elite_state::ppi_portc_w));
-
- NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-
- config.set_default_layout(layout_fidel_eas);
-}
-
-void elite_state::eas_priv(machine_config &config)
-{
- eas(config);
-
- /* basic machine hardware */
- M65C02(config.replace(), m_maincpu, 3.579545_MHz_XTAL); // UM6502C
- m_maincpu->set_addrmap(AS_PROGRAM, &elite_state::div_trampoline);
- TIMER(config.replace(), "dummy_timer").configure_periodic(timer_device::expired_delegate(), attotime::from_hz(3.579545_MHz_XTAL));
-
- config.set_default_layout(layout_fidel_eas_priv);
-}
-
-void elite_state::eag(machine_config &config)
-{
- eas(config);
-
- /* basic machine hardware */
- m_maincpu->set_clock(5_MHz_XTAL); // R65C02P4
- m_mainmap->set_addrmap(AS_PROGRAM, &elite_state::eag_map);
- TIMER(config.replace(), "dummy_timer").configure_periodic(timer_device::expired_delegate(), attotime::from_hz(5_MHz_XTAL));
-
- config.device_remove("nvram");
- NVRAM(config, "nvram.ic8", nvram_device::DEFAULT_ALL_0);
- NVRAM(config, "nvram.ic6", nvram_device::DEFAULT_ALL_0);
-
- config.set_default_layout(layout_fidel_eag);
-}
-
-void elite_state::eag2100(machine_config &config)
-{
- eag(config);
-
- /* basic machine hardware */
- m_mainmap->set_addrmap(AS_PROGRAM, &elite_state::eag2100_map);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( feasbu )
- ROM_REGION( 0x10000, "mainmap", 0 )
- ROM_LOAD("eli_bu.6", 0x8000, 0x0800, CRC(93dcc23b) SHA1(2eb8c5a85e566948bc256d6b1804694e6b0ffa6f) ) // ST M27C64A, unknown label
- ROM_CONTINUE( 0x9000, 0x0800 )
- ROM_CONTINUE( 0x8800, 0x0800 )
- ROM_CONTINUE( 0x9800, 0x0800 )
- ROM_LOAD("101-1052a02.5", 0xc000, 0x2000, CRC(859d69f1) SHA1(a8b057683369e2387f22fc7e916b6f3c75d44b21) ) // Mostek MK36C63N-5
- ROM_LOAD("101-1052a01.4", 0xe000, 0x2000, CRC(571a33a7) SHA1(43b110cf0918caf16643178f401e58b2dc73894f) ) // Mostek MK36C63N-5
-
- // speech ROM
- ROM_DEFAULT_BIOS("en")
- ROM_SYSTEM_BIOS(0, "en", "English")
- ROM_SYSTEM_BIOS(1, "de", "German")
- ROM_SYSTEM_BIOS(2, "fr", "French")
- ROM_SYSTEM_BIOS(3, "sp", "Spanish")
-
- ROM_REGION( 1, "language", 0 )
- ROMX_FILL(0, 1, 3, ROM_BIOS(0) )
- ROMX_FILL(0, 1, 2, ROM_BIOS(1) )
- ROMX_FILL(0, 1, 1, ROM_BIOS(2) )
- ROMX_FILL(0, 1, 0, ROM_BIOS(3) )
-
- ROM_REGION( 0x2000, "speech", 0 )
- ROMX_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d), ROM_BIOS(0) ) // NEC D2332C
- ROM_RELOAD( 0x1000, 0x1000)
- ROMX_LOAD("101-64101", 0x0000, 0x2000, CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff), ROM_BIOS(1) )
- ROMX_LOAD("101-64105", 0x0000, 0x2000, CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3), ROM_BIOS(2) )
- ROMX_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
-ROM_END
-
-ROM_START( feasgla )
- ROM_REGION( 0x10000, "mainmap", 0 )
- ROM_LOAD("eli_gla.6", 0x8000, 0x0800, CRC(2fdddb4f) SHA1(6da0a328a45462f285ae6a0756f97c5a43148f97) )
- ROM_CONTINUE( 0x9000, 0x0800 )
- ROM_CONTINUE( 0x8800, 0x0800 )
- ROM_CONTINUE( 0x9800, 0x0800 )
- ROM_LOAD("eli_gla.5", 0xc000, 0x0800, CRC(f094e625) SHA1(fef84c6a3da504aac15988ec9af94417e5fedfbd) )
- ROM_CONTINUE( 0xd000, 0x0800 )
- ROM_CONTINUE( 0xc800, 0x0800 )
- ROM_CONTINUE( 0xd800, 0x0800 )
- ROM_LOAD("eli_gla.4", 0xe000, 0x0800, CRC(5f6845d1) SHA1(684eb16faf36a49560e5a73b55fd0022dc090e35) )
- ROM_CONTINUE( 0xf000, 0x0800 )
- ROM_CONTINUE( 0xe800, 0x0800 )
- ROM_CONTINUE( 0xf800, 0x0800 )
-
- // speech ROM
- ROM_DEFAULT_BIOS("en")
- ROM_SYSTEM_BIOS(0, "en", "English")
- ROM_SYSTEM_BIOS(1, "de", "German")
- ROM_SYSTEM_BIOS(2, "fr", "French")
- ROM_SYSTEM_BIOS(3, "sp", "Spanish")
-
- ROM_REGION( 1, "language", 0 )
- ROMX_FILL(0, 1, 3, ROM_BIOS(0) )
- ROMX_FILL(0, 1, 2, ROM_BIOS(1) )
- ROMX_FILL(0, 1, 1, ROM_BIOS(2) )
- ROMX_FILL(0, 1, 0, ROM_BIOS(3) )
-
- ROM_REGION( 0x2000, "speech", 0 )
- ROMX_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d), ROM_BIOS(0) ) // NEC D2332C
- ROM_RELOAD( 0x1000, 0x1000)
- ROMX_LOAD("101-64101", 0x0000, 0x2000, CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff), ROM_BIOS(1) )
- ROMX_LOAD("101-64105", 0x0000, 0x2000, CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3), ROM_BIOS(2) )
- ROMX_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
-ROM_END
-
-ROM_START( fepriv )
- ROM_REGION( 0x10000, "mainmap", 0 )
- ROM_LOAD("4,0_8.6", 0x8000, 0x0800, CRC(32784e2d) SHA1(dae060a5c49cc1993a78db293cd80464adfd892d) )
- ROM_CONTINUE( 0x9000, 0x0800 )
- ROM_CONTINUE( 0x8800, 0x0800 )
- ROM_CONTINUE( 0x9800, 0x0800 )
- ROM_LOAD("c.5", 0xc000, 0x0800, CRC(ddb80412) SHA1(b1d9435d9a71b8eb241a2169bfbaa0499f510769) )
- ROM_CONTINUE( 0xd000, 0x0800 )
- ROM_CONTINUE( 0xc800, 0x0800 )
- ROM_CONTINUE( 0xd800, 0x0800 )
- ROM_LOAD("4,0_e.4", 0xe000, 0x0800, CRC(62a5305a) SHA1(a361bd9a54b903d7b0fbacabe55ea5ccbbc1dc51) )
- ROM_CONTINUE( 0xf000, 0x0800 )
- ROM_CONTINUE( 0xe800, 0x0800 )
- ROM_CONTINUE( 0xf800, 0x0800 )
-
- // speech ROM
- ROM_DEFAULT_BIOS("en")
- ROM_SYSTEM_BIOS(0, "en", "English")
- ROM_SYSTEM_BIOS(1, "de", "German")
- ROM_SYSTEM_BIOS(2, "fr", "French")
- ROM_SYSTEM_BIOS(3, "sp", "Spanish")
-
- ROM_REGION( 1, "language", 0 )
- ROMX_FILL(0, 1, 3, ROM_BIOS(0) )
- ROMX_FILL(0, 1, 2, ROM_BIOS(1) )
- ROMX_FILL(0, 1, 1, ROM_BIOS(2) )
- ROMX_FILL(0, 1, 0, ROM_BIOS(3) )
-
- ROM_REGION( 0x2000, "speech", 0 )
- ROMX_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d), ROM_BIOS(0) )
- ROM_RELOAD( 0x1000, 0x1000)
- ROMX_LOAD("101-64101", 0x0000, 0x2000, CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff), ROM_BIOS(1) )
- ROMX_LOAD("101-64105", 0x0000, 0x2000, CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3), ROM_BIOS(2) )
- ROMX_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
-ROM_END
-
-
-ROM_START( fpres )
- ROM_REGION( 0x10000, "mainmap", 0 )
- ROM_LOAD("u09_yellow", 0xb000, 0x1000, CRC(03fac294) SHA1(5a9d72978318c61185efd4bc9e4a868c226465b8) )
- ROM_LOAD("u10_green", 0xc000, 0x1000, CRC(5d049d5e) SHA1(c7359bead92729e8a92d6cf1789d87ae43d23cbf) )
- ROM_LOAD("u11_black", 0xd000, 0x1000, CRC(98bd01b7) SHA1(48cc560c4ca736f54e30d757990ff403c05c39ae) )
- ROM_LOAD("u12_blue", 0xe000, 0x1000, CRC(6f18115f) SHA1(a08b3a66bfdc23f3400e03fe253a8b9a4967d14f) )
- ROM_LOAD("u13_red", 0xf000, 0x1000, CRC(dea8091d) SHA1(1d94a90ae076215c2c009e78ec4919dbd8467ef8) )
-
- // speech ROM
- ROM_DEFAULT_BIOS("en")
- ROM_SYSTEM_BIOS(0, "en", "English")
- ROM_SYSTEM_BIOS(1, "de", "German")
- ROM_SYSTEM_BIOS(2, "fr", "French")
- ROM_SYSTEM_BIOS(3, "sp", "Spanish")
-
- ROM_REGION( 1, "language", 0 )
- ROMX_FILL(0, 1, 3, ROM_BIOS(0) )
- ROMX_FILL(0, 1, 2, ROM_BIOS(1) )
- ROMX_FILL(0, 1, 1, ROM_BIOS(2) )
- ROMX_FILL(0, 1, 0, ROM_BIOS(3) )
-
- ROM_REGION( 0x2000, "speech", 0 )
- ROMX_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d), ROM_BIOS(0) )
- ROM_RELOAD( 0x1000, 0x1000)
- ROMX_LOAD("101-64101", 0x0000, 0x2000, CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff), ROM_BIOS(1) )
- ROMX_LOAD("101-64105", 0x0000, 0x2000, CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3), ROM_BIOS(2) )
- ROMX_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
-ROM_END
-
-ROM_START( fpresbu )
- ROM_REGION( 0x10000, "mainmap", 0 )
- ROM_LOAD("u09_yellow", 0xb000, 0x1000, CRC(bb1cb486) SHA1(b83f50a3ef361d254b88eefaa5aac657aaa72375) )
- ROM_LOAD("u10_green", 0xc000, 0x1000, CRC(af0aec0e) SHA1(8293d00a12efa1c142b9e37bc7786012250536d9) )
- ROM_LOAD("u11_black", 0xd000, 0x1000, CRC(214a91cc) SHA1(aab07ecdd66ac208874f4053fc4b0b0659b017aa) )
- ROM_LOAD("u12_blue", 0xe000, 0x1000, CRC(dae4d8e4) SHA1(f06dbb643f0324c0bddaaae9537d5829768bda22) )
- ROM_LOAD("u13_red", 0xf000, 0x1000, CRC(5fb67708) SHA1(1e9ee724c2be38daf39d5cf37b0ae587e408777c) )
-
- // speech ROM
- ROM_DEFAULT_BIOS("en")
- ROM_SYSTEM_BIOS(0, "en", "English")
- ROM_SYSTEM_BIOS(1, "de", "German")
- ROM_SYSTEM_BIOS(2, "fr", "French")
- ROM_SYSTEM_BIOS(3, "sp", "Spanish")
-
- ROM_REGION( 1, "language", 0 )
- ROMX_FILL(0, 1, 3, ROM_BIOS(0) )
- ROMX_FILL(0, 1, 2, ROM_BIOS(1) )
- ROMX_FILL(0, 1, 1, ROM_BIOS(2) )
- ROMX_FILL(0, 1, 0, ROM_BIOS(3) )
-
- ROM_REGION( 0x2000, "speech", 0 )
- ROMX_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d), ROM_BIOS(0) )
- ROM_RELOAD( 0x1000, 0x1000)
- ROMX_LOAD("101-64101", 0x0000, 0x2000, CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff), ROM_BIOS(1) )
- ROMX_LOAD("101-64105", 0x0000, 0x2000, CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3), ROM_BIOS(2) )
- ROMX_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
-ROM_END
-
-
-ROM_START( feag ) // model 6081, aka "Mobile Master"
- ROM_REGION( 0x10000, "mainmap", 0 )
- ROM_LOAD("eg_orange.ic9", 0xa000, 0x2000, CRC(df9e7e74) SHA1(db76750eba5515213ecce07402c4d974c14e1a23) ) // M5L2764K, orange sticker
- ROM_LOAD("eg_black.ic5", 0xc000, 0x2000, CRC(a5f6f295) SHA1(319f00d4b7a1704a3ca722c40f4096004b4b89d2) ) // M5L2764K, black sticker
- ROM_LOAD("eg_green.ic4", 0xe000, 0x2000, CRC(1dc6508a) SHA1(6f2e730b216bfb900074d1d786124fc3cb038a8d) ) // M5L2764K, green sticker
-
- // speech ROM
- ROM_DEFAULT_BIOS("en")
- ROM_SYSTEM_BIOS(0, "en", "English")
- ROM_SYSTEM_BIOS(1, "de", "German")
- ROM_SYSTEM_BIOS(2, "fr", "French")
- ROM_SYSTEM_BIOS(3, "sp", "Spanish")
-
- ROM_REGION( 1, "language", 0 )
- ROMX_FILL(0, 1, 3, ROM_BIOS(0) )
- ROMX_FILL(0, 1, 2, ROM_BIOS(1) )
- ROMX_FILL(0, 1, 1, ROM_BIOS(2) )
- ROMX_FILL(0, 1, 0, ROM_BIOS(3) )
-
- ROM_REGION( 0x2000, "speech", 0 )
- ROMX_LOAD("101-32107.ic16", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d), ROM_BIOS(0) )
- ROM_RELOAD( 0x1000, 0x1000)
- ROMX_LOAD("101-64101.ic16", 0x0000, 0x2000, CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff), ROM_BIOS(1) )
- ROMX_LOAD("101-64105.ic16", 0x0000, 0x2000, CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3), ROM_BIOS(2) )
- ROMX_LOAD("101-64106.ic16", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
-ROM_END
-
-ROM_START( feag2100 )
- ROM_REGION( 0x10000, "mainmap", 0 )
- ROM_LOAD("el2100.2", 0xc000, 0x2000, CRC(76fec42f) SHA1(34660edb8458919fd179e93fdab3fe428a6625d0) )
- ROM_LOAD("el2100.3", 0xe000, 0x2000, CRC(2079a506) SHA1(a7bb83138c7b6eff6ea96702d453a214697f4890) )
-
- ROM_REGION( 0x8000, "rombank", 0 )
- ROM_LOAD("el2100.1", 0x0000, 0x8000, CRC(9b62b7d5) SHA1(cfcaea2e36c2d52fe4a85c77dbc7fa135893860c) )
-
- // speech ROM
- ROM_DEFAULT_BIOS("en")
- ROM_SYSTEM_BIOS(0, "en", "English")
- ROM_SYSTEM_BIOS(1, "de", "German")
- ROM_SYSTEM_BIOS(2, "fr", "French")
- ROM_SYSTEM_BIOS(3, "sp", "Spanish")
-
- ROM_REGION( 1, "language", 0 )
- ROMX_FILL(0, 1, 3, ROM_BIOS(0) )
- ROMX_FILL(0, 1, 2, ROM_BIOS(1) )
- ROMX_FILL(0, 1, 1, ROM_BIOS(2) )
- ROMX_FILL(0, 1, 0, ROM_BIOS(3) )
-
- ROM_REGION( 0x2000, "speech", 0 )
- ROMX_LOAD("101-32107.ic16", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d), ROM_BIOS(0) )
- ROM_RELOAD( 0x1000, 0x1000)
- ROMX_LOAD("101-64101.ic16", 0x0000, 0x2000, CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff), ROM_BIOS(1) )
- ROMX_LOAD("101-64105.ic16", 0x0000, 0x2000, CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3), ROM_BIOS(2) )
- ROMX_LOAD("101-64106.ic16", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1983, feasbu, 0, 0, eas, eas, elite_state, empty_init, "Fidelity Electronics", "Elite A/S Challenger (Budapest program)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
-CONS( 1984, feasgla, feasbu, 0, eas, eas, elite_state, empty_init, "Fidelity Electronics", "Elite A/S Challenger (Glasgow program)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
-CONS( 1984, fepriv, feasbu, 0, eas_priv, eas, elite_state, empty_init, "Fidelity Deutschland", "Elite Private Line (red version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
-
-CONS( 1982, fpres, 0, 0, pc, eas, elite_state, empty_init, "Fidelity Electronics", "Prestige Challenger (original program)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
-CONS( 1983, fpresbu, fpres, 0, pc, eas, elite_state, empty_init, "Fidelity Electronics", "Prestige Challenger (Budapest program)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
-
-CONS( 1986, feag, 0, 0, eag, eag, elite_state, empty_init, "Fidelity Electronics", "Elite Avant Garde (model 6081)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
-CONS( 1986, feag2100, feag, 0, eag2100, eag, elite_state, init_eag2100, "Fidelity Electronics", "Elite Avant Garde 2100", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
diff --git a/src/mame/drivers/fidel_excel.cpp b/src/mame/drivers/fidel_excel.cpp
deleted file mode 100644
index 11fc4f12107..00000000000
--- a/src/mame/drivers/fidel_excel.cpp
+++ /dev/null
@@ -1,523 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:Berger, yoyo_chessboard
-/******************************************************************************
-*
-* fidel_vsc.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-Fidelity Excellence series hardware
-(for Excel 68000, see fidel_eag68k.cpp)
-
-TODO:
-- granits gives error beeps at start, need to press clear to play
-- granits chessboard buttons seem too sensitive (detects input on falling edge if held too long)
-
-*******************************************************************************
-
-Voice Excellence (model 6092)
-----------------
-PCB 1: 510.1117A02, appears to be identical to other "Excellence" boards
-CPU: GTE G65SC102P-3, 32 KB PRG ROM: AMI 101-1080A01(IC5), 8192x8 SRAM SRM2264C10(IC6)
-2 rows of LEDs on the side: 1*8 green, 1*8 red
-
-PCB 2: 510.1117A01
-Speech: TSI S14001A, 32 KB ROM: AMI 101-1081A01(IC2)
-Dip Switches set ROM A13 and ROM A14, on the side of the board
-
-ROM A12 is tied to S14001A's A11 (yuck)
-ROM A11 is however tied to the CPU's XYZ
-
-0000_07FF - Spanish 1/4
-0800_0FFF - Spanish 3/4
-1000_17FF - Spanish 2/4
-1800_1FFF - Spanish 4/4
-
-2000_27FF - French 1/4
-2800_2FFF - French 3/4
-3000_3FFF - French 2/4
-3800_3FFF - French 4/4
-
-4000_47FF - German 1/4
-4800_4FFF - German 3/4
-5000_57FF - German 2/4
-5800_5FFF - German 4/4
-
-6000_67FF - English 1/2
-6800_6FFF - Bridge Challenger 1/2
-7000_77FF - English 2/2
-7800_7FFF - Bridge Challenger 2/2
-
-------------------
-RE info by hap, based on PCB photos
-
-Memory map:
------------
-0000-3FFF: 8K RAM (SRM2264)
-4000-7FFF: control (R/W)
-8000-FFFF: 32K ROM (M27256 compatible)
-
-control (W):
-------------
-CPU A0-A2 to 3*74259, CPU Dx to D (_C unused)
-
-CPU D0:
-- Q4,Q5: led commons
-- Q6,Q7,Q2,Q1: 7seg panel digit select
-- Q0-Q3: 7442 A0-A3
- + 0-7: led data
- + 0-8: keypad mux
- + 9: buzzer out
-
-CPU D1: (model 6093)
-- Q0-Q7: 7seg data
-
-CPU D2: (model 6092)
-- Q0-Q5: TSI C0-C5
-- Q6: TSI START pin
-- Q7: TSI ROM A11
-
-A11 from TSI is tied to TSI ROM A12(!)
-TSI ROM A13,A14 are hardwired to the 2 language switches.
-Sound comes from the Audio out pin, digital out pins are N/C.
-
-control (R):
-------------
-CPU A0-A2 to 2*74251, CPU Dx to output
-
-CPU D7 to Y:
-- D0-D7: keypad row data
-
-CPU D6 to W: (model 6092, tied to VCC otherwise)
-- D0,D1: language switches
-- D2-D6: VCC
-- D7: TSI BUSY
-
-------------------
-One interesting clone of The Excellence is the Computerchess Playmate-2. It was
-produced in 1989 by SPS(Bulgaria) and RRR(Riga Radio Factory). The chess program
-ROM is identical to Excellence EP12. All internal circuitry is the same, the only
-difference is the capacitor driving the 555 for IRQ is 10nf instead of 22nf.
-
-What makes it unique is the addition of a chess clock.
-
-connector pinout from main pcb:
-1) 5V
-2) GND
-3) 74HC259.pin9 (Q4) = Row LED driving
-4) 74HC259.pin10 (Q5) = Column LED driving
-5) 74HC259.pin12 (Q7) = Bat. Low signal
-6) 74HC42.pin4 (Q3) = Col-D/Row-4 -> 'White Move' if D-LED blinks
-
-The extra board has a 7474, a К1016ХЛ1 (RTC, or MCU clock driver), a 4-digit
-VFD display, and some buttons for controlling the clock. IRQ frequency is doubled
-presumedly for using the blinking led as seconds counter. It only tracks player time,
-not of the opponent. And it obviously doesn't show chessmove coordinates either.
-
-*******************************************************************************
-
-Designer 2000 (model 6102)
-----------------
-8KB RAM(KM6264AL-10), 32KB ROM(AMI 101.1077A01)
-Ricoh RP65C02G CPU, 3MHz XTAL
-PCB label 510.1129A01
-basically same as (Par) Excellence hardware, reskinned board
-
-Designer 2100 (model 6103): exactly same, but running at 5MHz
-
-(Designer 1500 is on 80C50 hardware)
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/m6502/r65c02.h"
-#include "cpu/m6502/m65sc02.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-// internal artwork
-#include "fidel_des.lh" // clickable
-#include "fidel_ex.lh" // clickable
-#include "fidel_exd.lh" // clickable
-
-
-namespace {
-
-class excel_state : public fidelbase_state
-{
-public:
- excel_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag)
- { }
-
- // machine drivers
- void fexcel(machine_config &config);
- void fexcelb(machine_config &config);
- void fexcel4(machine_config &config);
- void fexceld(machine_config &config);
- void fexcelv(machine_config &config);
- void fexcelp(machine_config &config);
- void granits(machine_config &config);
- void fdes2100(machine_config &config);
- void fdes2000(machine_config &config);
-
- DECLARE_INPUT_CHANGED_MEMBER(speech_bankswitch);
-
-private:
- // address maps
- void fexcel_map(address_map &map);
- void fexcelb_map(address_map &map);
-
- // I/O handlers
- DECLARE_READ8_MEMBER(speech_r);
- DECLARE_WRITE8_MEMBER(ttl_w);
- DECLARE_READ8_MEMBER(ttl_r);
-};
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// misc handlers
-
-INPUT_CHANGED_MEMBER(excel_state::speech_bankswitch)
-{
- // tied to speech ROM highest bits
- m_speech->force_update();
- m_speech_bank = (m_speech_bank & 1) | newval << 1;
-}
-
-READ8_MEMBER(excel_state::speech_r)
-{
- // TSI A11 is A12, program controls A11, user controls A13,A14(language switches)
- offset = (offset & 0x7ff) | (offset << 1 & 0x1000);
- return m_speech_rom[offset | (m_speech_bank << 11 & 0x800) | (~m_speech_bank << 12 & 0x6000)];
-}
-
-
-// TTL
-
-WRITE8_MEMBER(excel_state::ttl_w)
-{
- // a0-a2,d0: 74259(1)
- u8 mask = 1 << offset;
- m_led_select = (m_led_select & ~mask) | ((data & 1) ? mask : 0);
-
- // 74259 Q0-Q3: 7442 a0-a3
- // 7442 0-8: led data, input mux
- u16 sel = 1 << (m_led_select & 0xf) & 0x3ff;
- u8 led_data = sel & 0xff;
- m_inp_mux = sel & 0x1ff;
-
- // 7442 9: speaker out
- m_dac->write(BIT(sel, 9));
-
- // 74259 Q4-Q7,Q2,Q1: digit/led select (active low)
- u8 led_sel = ~bitswap<8>(m_led_select,0,3,1,2,7,6,5,4) & 0x3f;
-
- // a0-a2,d1: digit segment data (model 6093)
- m_7seg_data = (m_7seg_data & ~mask) | ((data & 2) ? mask : 0);
- u8 seg_data = bitswap<8>(m_7seg_data,0,1,3,2,7,5,6,4);
-
- // update display: 4 7seg leds, 2*8 chessboard leds
- for (int i = 0; i < 6; i++)
- m_display_state[i] = (led_sel >> i & 1) ? ((i < 2) ? led_data : seg_data) : 0;
-
- set_display_size(8, 2+4);
- set_display_segmask(0x3c, 0x7f);
- display_update();
-
- // speech (model 6092)
- if (m_speech != nullptr)
- {
- // a0-a2,d2: 74259(2) to speech board
- m_speech_data = (m_speech_data & ~mask) | ((data & 4) ? mask : 0);
-
- // 74259 Q6: TSI ROM A11
- m_speech->force_update(); // update stream to now
- m_speech_bank = (m_speech_bank & ~1) | (m_speech_data >> 6 & 1);
-
- // Q0-Q5: TSI C0-C5
- // Q7: TSI START line
- m_speech->data_w(space, 0, m_speech_data & 0x3f);
- m_speech->start_w(m_speech_data >> 7 & 1);
- }
-}
-
-READ8_MEMBER(excel_state::ttl_r)
-{
- u8 d7 = 0x80;
-
- // 74259(1) Q7 + 74251 I0: battery status
- if (m_inp_matrix[10] != nullptr && m_inp_mux == 1 && ~m_led_select & 0x80)
- d7 = m_inp_matrix[10]->read() & 0x80;
-
- // a0-a2,d6: from speech board: language switches and TSI BUSY line, otherwise tied to VCC
- u8 d6 = (m_inp_matrix[9].read_safe(0xff) >> offset & 1) ? 0x40 : 0;
-
- // a0-a2,d7: multiplexed inputs (active low)
- return ((read_inputs(9) >> offset & 1) ? 0 : d7) | d6 | 0x3f;
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void excel_state::fexcel_map(address_map &map)
-{
- map(0x0000, 0x07ff).mirror(0x3800).ram();
- map(0x4000, 0x4007).mirror(0x3ff8).rw(FUNC(excel_state::ttl_r), FUNC(excel_state::ttl_w));
- //map(0x8000, 0x8000).nopr(); // checks for opening book module, but hw doesn't have a module slot
- map(0xc000, 0xffff).rom();
-}
-
-void excel_state::fexcelb_map(address_map &map)
-{
- map(0x0000, 0x1fff).mirror(0x2000).ram();
- map(0x4000, 0x4007).mirror(0x3ff8).rw(FUNC(excel_state::ttl_r), FUNC(excel_state::ttl_w));
- map(0x8000, 0xffff).rom();
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( fexcelb )
- PORT_INCLUDE( generic_cb_buttons )
-
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Move / Pawn")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Hint / Knight")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Take Back / Bishop")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Level / Rook")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Options / Queen")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Verify / King")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_N) PORT_NAME("New Game")
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( fexcelv )
- PORT_INCLUDE( fexcelb )
-
- PORT_START("IN.9")
- PORT_CONFNAME( 0x03, 0x00, DEF_STR( Language ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, excel_state, speech_bankswitch, 0)
- PORT_CONFSETTING( 0x00, DEF_STR( English ) )
- PORT_CONFSETTING( 0x01, DEF_STR( German ) )
- PORT_CONFSETTING( 0x02, DEF_STR( French ) )
- PORT_CONFSETTING( 0x03, DEF_STR( Spanish ) )
- PORT_BIT(0x7c, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_READ_LINE_DEVICE_MEMBER("speech", s14001a_device, busy_r)
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( fexcel )
- PORT_INCLUDE( fexcelb )
-
- PORT_START("IN.10")
- PORT_CONFNAME( 0x80, 0x00, "Battery Status" )
- PORT_CONFSETTING( 0x80, "Low" )
- PORT_CONFSETTING( 0x00, DEF_STR( Normal ) )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( fdes )
- PORT_INCLUDE( fexcel )
-
- PORT_MODIFY("IN.10")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED) // no low-voltage detection circuit (still works in software though)
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void excel_state::fexcel(machine_config &config)
-{
- /* basic machine hardware */
- M65SC02(config, m_maincpu, 12_MHz_XTAL/4); // G65SC102P-3, 12.0M ceramic resonator
- m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcel_map);
-
- const attotime irq_period = attotime::from_hz(630); // from 556 timer (22nF, 102K, 1K)
- TIMER(config, m_irq_on).configure_periodic(FUNC(excel_state::irq_on<M6502_IRQ_LINE>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_nsec(15250)); // active for 15.25us
- TIMER(config, "irq_off").configure_periodic(FUNC(excel_state::irq_off<M6502_IRQ_LINE>), irq_period);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(excel_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_ex);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
-
-void excel_state::fexcel4(machine_config &config)
-{
- fexcel(config);
-
- /* basic machine hardware */
- R65C02(config.replace(), m_maincpu, 4_MHz_XTAL); // R65C02P4
- m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcel_map);
-}
-
-void excel_state::fexcelb(machine_config &config)
-{
- fexcel(config);
-
- /* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcelb_map);
-}
-
-void excel_state::fexcelp(machine_config &config)
-{
- fexcel(config);
-
- /* basic machine hardware */
- R65C02(config.replace(), m_maincpu, 5_MHz_XTAL); // R65C02P4
- m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcelb_map);
-}
-
-void excel_state::granits(machine_config &config)
-{
- fexcelp(config);
-
- /* basic machine hardware */
- m_maincpu->set_clock(8_MHz_XTAL/2);
-}
-
-void excel_state::fdes2100(machine_config &config)
-{
- fexcel(config);
-
- /* basic machine hardware */
- M65C02(config.replace(), m_maincpu, 5_MHz_XTAL); // WDC 65C02
- m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcelb_map);
-
- // change irq timer frequency
- const attotime irq_period = attotime::from_hz(630); // from 556 timer (22nF, 102K, 1K)
- TIMER(config.replace(), m_irq_on).configure_periodic(FUNC(excel_state::irq_on<M6502_IRQ_LINE>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_nsec(15250)); // active for 15.25us
- TIMER(config.replace(), "irq_off").configure_periodic(FUNC(excel_state::irq_off<M6502_IRQ_LINE>), irq_period);
-
- config.set_default_layout(layout_fidel_des);
-}
-
-void excel_state::fdes2000(machine_config &config)
-{
- fdes2100(config);
-
- /* basic machine hardware */
- R65C02(config.replace(), m_maincpu, 3_MHz_XTAL); // RP65C02G
- m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcelb_map);
-}
-
-void excel_state::fexcelv(machine_config &config)
-{
- fexcelb(config);
-
- /* sound hardware */
- S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
- m_speech->ext_read().set(FUNC(excel_state::speech_r));
- m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
-}
-
-void excel_state::fexceld(machine_config &config)
-{
- fexcelb(config);
-
- /* basic machine hardware */
- config.set_default_layout(layout_fidel_exd);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( fexcel ) // model 6080(B), PCB label 510.1117A02
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-1080a01.ic5", 0x8000, 0x8000, CRC(846f8e40) SHA1(4e1d5b08d5ff3422192b54fa82cb3f505a69a971) )
-ROM_END
-
-ROM_START( fexceld ) // model 6093, PCB label 510.1117A02
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-1080a01.ic5", 0x8000, 0x8000, CRC(846f8e40) SHA1(4e1d5b08d5ff3422192b54fa82cb3f505a69a971) ) // same rom as fexcel
-ROM_END
-
-ROM_START( fexcelv ) // model 6092, PCB label 510.1117A02, sound PCB 510.1117A01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-1080a01.ic5", 0x8000, 0x8000, CRC(846f8e40) SHA1(4e1d5b08d5ff3422192b54fa82cb3f505a69a971) ) // PCB1, M27256, same rom as fexcel
-
- ROM_REGION( 0x8000, "speech", 0 )
- ROM_LOAD("101-1081a01.ic2", 0x0000, 0x8000, CRC(c8ae1607) SHA1(6491ce6be60ed77f3dd931c0ca17616f13af943e) ) // PCB2, M27256
-ROM_END
-
-ROM_START( fexcel12 ) // model EP12, PCB label 510-1099A01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-1072a01.ic5", 0xc000, 0x4000, CRC(212b006d) SHA1(242ff851b0841cbec66bbada6a730da021010e2c) )
-ROM_END
-
-ROM_START( fexcel124 ) // model EP12, PCB label 510-1099A01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-1073a01.ic5", 0xc000, 0x4000, CRC(3e221534) SHA1(7516bc6a8aab9d8ac30ac1a9317630a6aa9ac1a0) )
-ROM_END
-
-ROM_START( fexcela ) // model 6080, PCB label 510-1099A01(manuf.1985) or 510-1099B01(manuf.1986)
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-1072b01.ic5", 0xc000, 0x4000, CRC(fd2f6064) SHA1(f84bb98bdb9565a04891eb6820597d7aecc90c21) ) // RCA
-ROM_END
-
-
-ROM_START( fexcelp ) // model 6083, PCB label 510-1099A01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) )
-ROM_END
-
-ROM_START( fexcelpb ) // model 6083, PCB label 510-1099B01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("par_ex.ic5", 0x8000, 0x8000, CRC(0d17b0f0) SHA1(3a6070fd4718c62b62ff0f08637bb6eb84eb9a1c) ) // GI 27C256, no label, only 1 byte difference, assume bugfix in bookrom
-ROM_END
-
-ROM_START( granits ) // modified SC12 board, overclocked Par Excellence program
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("granit_s-4", 0x8000, 0x8000, CRC(274d6aff) SHA1(c8d943b2f15422ac62f539b568f5509cbce568a3) )
-ROM_END
-
-ROM_START( fdes2000 ) // model 6102, PCB label 510.1129A01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) ) // AMI, same label as fexcelp
-ROM_END
-
-ROM_START( fdes2100 ) // model 6103, PCB label 510.1129A01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) ) // same as fdes2000
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1987, fexcel, 0, 0, fexcelb, fexcelb, excel_state, empty_init, "Fidelity Electronics", "The Excellence (model 6080B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1987, fexcelv, fexcel, 0, fexcelv, fexcelv, excel_state, empty_init, "Fidelity Electronics", "Voice Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1987, fexceld, fexcel, 0, fexceld, fexcelb, excel_state, empty_init, "Fidelity Electronics", "Excel Display", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1985, fexcel12, fexcel, 0, fexcel, fexcel, excel_state, empty_init, "Fidelity Electronics", "The Excellence (model EP12, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS ) // 1st version of The Excellence
-CONS( 1985, fexcel124, fexcel, 0, fexcel4, fexcel, excel_state, empty_init, "Fidelity Electronics", "The Excellence (model EP12, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1985, fexcela, fexcel, 0, fexcel, fexcel, excel_state, empty_init, "Fidelity Electronics", "The Excellence (model 6080)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-
-CONS( 1986, fexcelp, 0, 0, fexcelp, fexcel, excel_state, empty_init, "Fidelity Electronics", "The Par Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1986, fexcelpb, fexcelp, 0, fexcelp, fexcel, excel_state, empty_init, "Fidelity Electronics", "The Par Excellence (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1986, granits, fexcelp, 0, granits, fexcel, excel_state, empty_init, "hack (RCS)", "Granit S", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1988, fdes2000, fexcelp, 0, fdes2000, fdes, excel_state, empty_init, "Fidelity Electronics", "Designer 2000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1988, fdes2100, fexcelp, 0, fdes2100, fdes, excel_state, empty_init, "Fidelity Electronics", "Designer 2100", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/fidel_phantom.cpp b/src/mame/drivers/fidel_phantom.cpp
deleted file mode 100644
index f1862aa5c57..00000000000
--- a/src/mame/drivers/fidel_phantom.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-/******************************************************************************
-*
-* fidel_phantom.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-TODO:
-- everything, this is a skeleton driver
-
-*******************************************************************************
-
-Fidelity licensed the design of the Milton/Phantom motorized chessboard and released
-their own version. It has a small LCD panel added, the rest looks nearly the same from
-the outside. After Fidelity was taken over by H&G, it was rereleased in 1990 as the
-Mephisto Phantom. This is assumed to be identical.
-
-Fidelity Phantom (model 6100) overview:
-- R65C02P4, XTAL marked 4.91?200
-- 2*32KB ROM 27C256-15, 8KB RAM MS6264L-10
-- LCD driver, display panel for digits
-- magnetized x/y motor under chessboard, chesspieces have magnet underneath
-- piezo speaker, LEDs, 8*8 chessboard buttons
-- PCB label 510.1128A01
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/m6502/r65c02.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-// internal artwork
-//#include "fidel_phantom.lh" // clickable
-
-
-namespace {
-
-class phantom_state : public fidelbase_state
-{
-public:
- phantom_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag)
- { }
-
- void fphantom(machine_config &config);
- void init_fphantom();
-
-protected:
- virtual void machine_reset() override;
-
-private:
- void main_map(address_map &map);
-};
-
-void phantom_state::machine_reset()
-{
- fidelbase_state::machine_reset();
- m_rombank->set_entry(0);
-}
-
-void phantom_state::init_fphantom()
-{
- m_rombank->configure_entries(0, 2, memregion("rombank")->base(), 0x4000);
-}
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-//..
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void phantom_state::main_map(address_map &map)
-{
- map(0x0000, 0x1fff).ram();
- map(0x4000, 0x7fff).bankr("rombank");
- map(0x8000, 0xffff).rom();
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( fphantom )
- PORT_INCLUDE( generic_cb_buttons )
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void phantom_state::fphantom(machine_config &config)
-{
- /* basic machine hardware */
- R65C02(config, m_maincpu, 4.9152_MHz_XTAL); // R65C02P4
- m_maincpu->set_periodic_int(FUNC(phantom_state::irq0_line_hold), attotime::from_hz(600)); // guessed
- m_maincpu->set_addrmap(AS_PROGRAM, &phantom_state::main_map);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(phantom_state::display_decay_tick), attotime::from_msec(1));
- //config.set_default_layout(layout_fidel_phantom);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( fphantom ) // model 6100, PCB label 510.1128A01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("u_3c_yellow.u3", 0x8000, 0x8000, CRC(fb7c38ae) SHA1(a1aa7637705052cb4eec92644dc79aee7ba4d77c) ) // 27C256
-
- ROM_REGION( 0x8000, "rombank", 0 )
- ROM_LOAD("u_4_white.u4", 0x0000, 0x8000, CRC(e4181ba2) SHA1(1f77d1867c6f566be98645fc252a01108f412c96) ) // 27C256
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1988, fphantom, 0, 0, fphantom, fphantom, phantom_state, init_fphantom, "Fidelity Electronics", "Phantom Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/fidel_sc12.cpp b/src/mame/drivers/fidel_sc12.cpp
deleted file mode 100644
index 49859191df4..00000000000
--- a/src/mame/drivers/fidel_sc12.cpp
+++ /dev/null
@@ -1,244 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:Berger, yoyo_chessboard
-/******************************************************************************
-*
-* fidel_sc12.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-*******************************************************************************
-
-Fidelity Sensory 12 Chess Challenger (SC12-B, 6086)
-4 versions are known to exist: A,B,C, and X, with increasing CPU speed.
----------------------------------
-RE information from netlist by Berger
-
-8*(8+1) buttons, 8+8+2 red LEDs
-DIN 41524C printer port
-36-pin edge connector
-CPU is a R65C02P4, running at 4MHz*
-
-*By default, the CPU frequency is lowered on A13/A14 access, with a factory-set jumper:
-/2 on model SC12(1.5MHz), /4 on model 6086(1MHz)
-
-NE556 dual-timer IC:
-- timer#1, one-shot at power-on, to CPU _RESET
-- timer#2: R1=82K+50K pot at 26K, R2=1K, C=22nF, to CPU _IRQ: ~596Hz, active low=15.25us
-
-Memory map:
------------
-0000-0FFF: 4K RAM (2016 * 2)
-2000-5FFF: cartridge
-6000-7FFF: control(W)
-8000-9FFF: 8K ROM SSS SCM23C65E4
-A000-BFFF: keypad(R)
-C000-DFFF: 4K ROM TI TMS2732AJL-45
-E000-FFFF: 8K ROM Toshiba TMM2764D-2
-
-control: (74LS377)
---------
-Q0-Q3: 7442 A0-A3
-Q4: enable printer port pin 1 input
-Q5: printer port pin 5 output
-Q6,Q7: LEDs common anode
-
-7442 0-8: input mux and LEDs cathode
-7442 9: buzzer
-
-The keypad is read through a 74HC251, where S0,1,2 is from CPU A0,1,2, Y is connected to CPU D7.
-If control Q4 is set, printer data can be read from I0.
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/m6502/r65c02.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-// internal artwork
-#include "fidel_sc12.lh" // clickable
-
-
-namespace {
-
-class sc12_state : public fidelbase_state
-{
-public:
- sc12_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag)
- { }
-
- // machine drivers
- void sc12(machine_config &config);
- void sc12b(machine_config &config);
-
-private:
- // address maps
- void main_map(address_map &map);
-
- // I/O handlers
- DECLARE_WRITE8_MEMBER(control_w);
- DECLARE_READ8_MEMBER(input_r);
-};
-
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// TTL/generic
-
-WRITE8_MEMBER(sc12_state::control_w)
-{
- // d0-d3: 7442 a0-a3
- // 7442 0-8: led data, input mux
- u16 sel = 1 << (data & 0xf) & 0x3ff;
- m_inp_mux = sel & 0x1ff;
-
- // 7442 9: speaker out
- m_dac->write(BIT(sel, 9));
-
- // d6,d7: led select (active low)
- display_matrix(9, 2, sel & 0x1ff, ~data >> 6 & 3);
-
- // d4,d5: printer
- //..
-}
-
-READ8_MEMBER(sc12_state::input_r)
-{
- // a0-a2,d7: multiplexed inputs (active low)
- return (read_inputs(9) >> offset & 1) ? 0 : 0x80;
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void sc12_state::main_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x0000, 0x0fff).ram();
- map(0x2000, 0x5fff).r(FUNC(sc12_state::cartridge_r));
- map(0x6000, 0x6000).mirror(0x1fff).w(FUNC(sc12_state::control_w));
- map(0x8000, 0x9fff).rom();
- map(0xa000, 0xa007).mirror(0x1ff8).r(FUNC(sc12_state::input_r));
- map(0xc000, 0xcfff).mirror(0x1000).rom();
- map(0xe000, 0xffff).rom();
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( sc12_sidepanel )
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("RV / Pawn")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("DM / Knight")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("TB / Bishop")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("LV / Rook")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("PV / Queen")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("PB / King")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("RE")
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( sc12 )
- PORT_INCLUDE( fidel_cpu_div_2 )
- PORT_INCLUDE( generic_cb_buttons )
- PORT_INCLUDE( sc12_sidepanel )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( sc12b )
- PORT_INCLUDE( fidel_cpu_div_4 )
- PORT_INCLUDE( generic_cb_buttons )
- PORT_INCLUDE( sc12_sidepanel )
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void sc12_state::sc12(machine_config &config)
-{
- /* basic machine hardware */
- R65C02(config, m_maincpu, 3_MHz_XTAL); // R65C02P3
- m_maincpu->set_addrmap(AS_PROGRAM, &sc12_state::div_trampoline);
- ADDRESS_MAP_BANK(config, m_mainmap).set_map(&sc12_state::main_map).set_options(ENDIANNESS_LITTLE, 8, 16);
-
- TIMER(config, "dummy_timer").configure_periodic(timer_device::expired_delegate(), attotime::from_hz(3_MHz_XTAL));
-
- const attotime irq_period = attotime::from_hz(630); // from 556 timer (22nF, 102K, 1K)
- TIMER(config, m_irq_on).configure_periodic(FUNC(sc12_state::irq_on<M6502_IRQ_LINE>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_nsec(15250)); // active for 15.25us
- TIMER(config, "irq_off").configure_periodic(FUNC(sc12_state::irq_off<M6502_IRQ_LINE>), irq_period);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(sc12_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_sc12);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-
- /* cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_scc", "bin,dat");
- m_cart->set_device_load(device_image_load_delegate(&sc12_state::device_image_load_scc_cartridge, this));
-
- SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
-}
-
-void sc12_state::sc12b(machine_config &config)
-{
- sc12(config);
-
- /* basic machine hardware */
- m_maincpu->set_clock(4_MHz_XTAL); // R65C02P4
- TIMER(config.replace(), "dummy_timer").configure_periodic(timer_device::expired_delegate(), attotime::from_hz(4_MHz_XTAL));
-
- // change irq timer frequency
- const attotime irq_period = attotime::from_hz(596); // from 556 timer (22nF, 82K+26K, 1K)
- TIMER(config.replace(), m_irq_on).configure_periodic(FUNC(sc12_state::irq_on<M6502_IRQ_LINE>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_nsec(15250)); // active for 15.25us
- TIMER(config.replace(), "irq_off").configure_periodic(FUNC(sc12_state::irq_off<M6502_IRQ_LINE>), irq_period);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( fscc12 ) // model SC12, PCB label 510-1084B01
- ROM_REGION( 0x10000, "mainmap", 0 )
- ROM_LOAD("101-1068a01.ic15", 0x8000, 0x2000, CRC(63c76cdd) SHA1(e0771c98d4483a6b1620791cb99a7e46b0db95c4) ) // SSS SCM23C65E4
- ROM_LOAD("orange.ic13", 0xc000, 0x1000, CRC(ed5289b2) SHA1(9b0c7f9ae4102d4a66eb8c91d4e84b9eec2ffb3d) ) // TI TMS2732AJL-45, no label, orange sticker
- ROM_LOAD("red.ic14", 0xe000, 0x2000, CRC(0c4968c4) SHA1(965a66870b0f8ce9549418cbda09d2ff262a1504) ) // TI TMS2764JL-25, no label, red sticker
-ROM_END
-
-ROM_START( fscc12b ) // model 6086, PCB label 510-1084B01
- ROM_REGION( 0x10000, "mainmap", 0 )
- ROM_LOAD("101-1068a01.ic15", 0x8000, 0x2000, CRC(63c76cdd) SHA1(e0771c98d4483a6b1620791cb99a7e46b0db95c4) ) // SSS SCM23C65E4
- ROM_LOAD("orange.ic13", 0xc000, 0x1000, CRC(45070a71) SHA1(8aeecff828f26fb7081902c757559903be272649) ) // TI TMS2732AJL-45, no label, orange sticker
- ROM_LOAD("red.ic14", 0xe000, 0x2000, CRC(183d3edc) SHA1(3296a4c3bce5209587d4a1694fce153558544e63) ) // Toshiba TMM2764D-2, no label, red sticker
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1984, fscc12, 0, 0, sc12, sc12, sc12_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger 12", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
-CONS( 1984, fscc12b, fscc12, 0, sc12b, sc12b, sc12_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger 12-B", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
diff --git a/src/mame/drivers/fidel_sc8.cpp b/src/mame/drivers/fidel_sc8.cpp
deleted file mode 100644
index 2e03a0458a4..00000000000
--- a/src/mame/drivers/fidel_sc8.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:yoyo_chessboard
-/******************************************************************************
-*
-* fidel_sc8.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-*******************************************************************************
-
-Fidelity Sensory Chess Challenger 8 overview:
-- Z80A CPU @ 3.9MHz
-- 4KB ROM(MOS 2732), 256 bytes RAM(35391CP)
-- chessboard buttons, 8*8+1 leds
-- PCB label 510-1011 REV.2
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/z80/z80.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-// internal artwork
-#include "fidel_sc8.lh" // clickable
-
-
-namespace {
-
-class scc_state : public fidelbase_state
-{
-public:
- scc_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag)
- { }
-
- // machine drivers
- void scc(machine_config &config);
-
-private:
- // address maps
- void main_map(address_map &map);
- void main_io(address_map &map);
-
- // I/O handlers
- DECLARE_READ8_MEMBER(input_r);
- DECLARE_WRITE8_MEMBER(control_w);
-};
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// TTL
-
-WRITE8_MEMBER(scc_state::control_w)
-{
- // a0-a2,d7: led data
- u8 mask = 1 << (offset & 7);
- m_led_data = (m_led_data & ~mask) | ((data & 0x80) ? mask : 0);
-
- // d0-d3: led select, input mux (row 9 is speaker out)
- // d4: corner led(direct)
- m_inp_mux = 1 << (data & 0xf);
- m_dac->write(BIT(m_inp_mux, 9));
- display_matrix(8, 9, m_led_data, (m_inp_mux & 0xff) | (data << 4 & 0x100));
-}
-
-READ8_MEMBER(scc_state::input_r)
-{
- // d0-d7: multiplexed inputs (active low)
- return ~read_inputs(9);
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void scc_state::main_map(address_map &map)
-{
- map(0x0000, 0x0fff).rom();
- map(0x5000, 0x50ff).ram();
-}
-
-void scc_state::main_io(address_map &map)
-{
- map.global_mask(0x07);
- map(0x00, 0x07).rw(FUNC(scc_state::input_r), FUNC(scc_state::control_w));
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( scc )
- PORT_INCLUDE( generic_cb_buttons )
-
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Pawn")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Rook")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Knight")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Bishop")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Queen")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("King")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("RE")
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void scc_state::scc(machine_config &config)
-{
- /* basic machine hardware */
- Z80(config, m_maincpu, 3.9_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &scc_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &scc_state::main_io);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(scc_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_sc8);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( fscc8 ) // model SCC
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "101-32017", 0x0000, 0x1000, CRC(5340820d) SHA1(e3494c7624b3cacbbb9a0a8cc9e1ed3e00326dfd) ) // 2732
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1980, fscc8, 0, 0, scc, scc, scc_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger 8", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/fidel_sc9.cpp b/src/mame/drivers/fidel_sc9.cpp
deleted file mode 100644
index 97fe169a1d0..00000000000
--- a/src/mame/drivers/fidel_sc9.cpp
+++ /dev/null
@@ -1,295 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:Berger, yoyo_chessboard
-/******************************************************************************
-*
-* fidel_sc9.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-*******************************************************************************
-
-Fidelity Sensory Chess Challenger "9" (SC9) overview:
-- 8*(8+1) buttons, 8*8+1 LEDs
-- 36-pin edge connector, assume same as SC12
-- 2KB RAM(TMM2016P), 2*8KB ROM(HN48364P)
-- R6502-13, 1.4MHz from resonator, another pcb with the same resonator was measured 1.49MHz*
-- PCB label 510-1046C01 2-1-82
-
-*: 2 other boards were measured 1.60MHz and 1.88MHz(newest serial). Online references
-suggest 3 versions of SC9(C01) total: 1.5MHz, 1.6MHz, and 1.9MHz.
-
-I/O is via TTL, not further documented here
-
-3 versions were available, the newest "B" version was 2MHz and included the Budapest program.
-The Playmatic S was only released in Germany, it's basically a 'deluxe' version of SC9
-with magnet sensors and came with CB9 and CB16.
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/m6502/m6502.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-// internal artwork
-#include "fidel_playmatic.lh" // clickable
-#include "fidel_sc9.lh" // clickable
-
-
-namespace {
-
-class sc9_state : public fidelbase_state
-{
-public:
- sc9_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag)
- { }
-
- // machine drivers
- void sc9b(machine_config &config);
- void sc9c(machine_config &config);
- void sc9d(machine_config &config);
- void playmatic(machine_config &config);
-
-protected:
- // address maps
- void sc9_map(address_map &map);
- void sc9d_map(address_map &map);
-
- // I/O handlers
- void prepare_display();
- DECLARE_WRITE8_MEMBER(control_w);
- DECLARE_WRITE8_MEMBER(led_w);
- DECLARE_READ8_MEMBER(input_r);
- DECLARE_READ8_MEMBER(input_d7_r);
-};
-
-class sc9c_state : public sc9_state
-{
-public:
- sc9c_state(const machine_config &mconfig, device_type type, const char *tag) :
- sc9_state(mconfig, type, tag)
- { }
-
- DECLARE_INPUT_CHANGED_MEMBER(sc9c_cpu_freq) { sc9c_set_cpu_freq(); }
-
-protected:
- virtual void machine_reset() override;
- void sc9c_set_cpu_freq();
-};
-
-void sc9c_state::machine_reset()
-{
- sc9_state::machine_reset();
- sc9c_set_cpu_freq();
-}
-
-void sc9c_state::sc9c_set_cpu_freq()
-{
- // SC9(C01) was released with 1.5MHz, 1.6MHz, or 1.9MHz CPU
- u8 inp = ioport("FAKE")->read();
- m_maincpu->set_unscaled_clock((inp & 2) ? 1900000 : ((inp & 1) ? 1600000 : 1500000));
-}
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// TTL/generic
-
-void sc9_state::prepare_display()
-{
- // 8*8 chessboard leds + 1 corner led
- display_matrix(8, 9, m_led_data, m_inp_mux);
-}
-
-WRITE8_MEMBER(sc9_state::control_w)
-{
- // d0-d3: 74245 P0-P3
- // 74245 Q0-Q8: input mux, led select
- u16 sel = 1 << (data & 0xf) & 0x3ff;
- m_inp_mux = sel & 0x1ff;
- prepare_display();
-
- // 74245 Q9: speaker out
- m_dac->write(BIT(sel, 9));
-
- // d4,d5: ?
- // d6,d7: N/C
-}
-
-WRITE8_MEMBER(sc9_state::led_w)
-{
- // a0-a2,d0: led data via NE591N
- m_led_data = (data & 1) << offset;
- prepare_display();
-}
-
-READ8_MEMBER(sc9_state::input_r)
-{
- // multiplexed inputs (active low)
- return read_inputs(9) ^ 0xff;
-}
-
-READ8_MEMBER(sc9_state::input_d7_r)
-{
- // a0-a2,d7: multiplexed inputs (active low)
- return (read_inputs(9) >> offset & 1) ? 0 : 0x80;
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void sc9_state::sc9_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x0000, 0x07ff).mirror(0x1800).ram();
- map(0x2000, 0x5fff).r(FUNC(sc9_state::cartridge_r));
- map(0x6000, 0x6000).mirror(0x1fff).w(FUNC(sc9_state::control_w));
- map(0x8000, 0x8007).mirror(0x1ff8).w(FUNC(sc9_state::led_w)).nopr();
- map(0xa000, 0xa000).mirror(0x1fff).r(FUNC(sc9_state::input_r));
- map(0xc000, 0xffff).rom();
-}
-
-void sc9_state::sc9d_map(address_map &map)
-{
- sc9_map(map);
- map(0xa000, 0xa007).mirror(0x1ff8).r(FUNC(sc9_state::input_d7_r));
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( sc9_sidepanel )
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("RV / Pawn")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("DM / Knight")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("TB / Bishop")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("LV / Rook")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("PV / Queen")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("PB / King")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("RE")
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( sc9 )
- PORT_INCLUDE( generic_cb_buttons )
- PORT_INCLUDE( sc9_sidepanel )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( playmatic )
- PORT_INCLUDE( generic_cb_magnets )
- PORT_INCLUDE( sc9_sidepanel )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( sc9c )
- PORT_INCLUDE( sc9 )
-
- PORT_START("FAKE")
- PORT_CONFNAME( 0x03, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, sc9c_state, sc9c_cpu_freq, nullptr) // factory set
- PORT_CONFSETTING( 0x00, "1.5MHz" )
- PORT_CONFSETTING( 0x01, "1.6MHz" )
- PORT_CONFSETTING( 0x02, "1.9MHz" )
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void sc9_state::sc9d(machine_config &config)
-{
- /* basic machine hardware */
- M6502(config, m_maincpu, 3.9_MHz_XTAL/2); // R6502AP, 3.9MHz resonator
- m_maincpu->set_addrmap(AS_PROGRAM, &sc9_state::sc9d_map);
-
- const attotime irq_period = attotime::from_hz(610); // from 555 timer (22nF, 102K, 2.7K)
- TIMER(config, m_irq_on).configure_periodic(FUNC(sc9_state::irq_on<M6502_IRQ_LINE>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_usec(41)); // active for 41us
- TIMER(config, "irq_off").configure_periodic(FUNC(sc9_state::irq_off<M6502_IRQ_LINE>), irq_period);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(sc9_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_sc9);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-
- /* cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_scc", "bin,dat");
- m_cart->set_device_load(device_image_load_delegate(&sc9_state::device_image_load_scc_cartridge, this));
-
- SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
-}
-
-void sc9_state::sc9b(machine_config &config)
-{
- sc9d(config);
-
- /* basic machine hardware */
- m_maincpu->set_clock(1500000); // from ceramic resonator "681 JSA", measured
- m_maincpu->set_addrmap(AS_PROGRAM, &sc9_state::sc9_map);
-}
-
-void sc9_state::playmatic(machine_config &config)
-{
- sc9b(config);
-
- /* basic machine hardware */
- m_maincpu->set_clock(3100000); // approximation
- config.set_default_layout(layout_fidel_playmatic);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( fscc9 ) // PCB label 510-1046D01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-1034b01", 0xc000, 0x2000, CRC(65288753) SHA1(651f5ca5969ddd72a20cbebdec2de83c4bf10650) )
- ROM_LOAD("101-1034c02", 0xe000, 0x2000, CRC(238b092f) SHA1(7ddffc6dba822aee9d8ad6815b23024ed5cdfd26) )
-ROM_END
-
-ROM_START( fscc9b ) // PCB label 510-1046B01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-1034a01", 0xc000, 0x2000, CRC(b845c458) SHA1(d3fda65dbd9fae44fa4b93f8207839d8fa0c367a) )
- ROM_LOAD("101-1034a02", 0xe000, 0x2000, CRC(ecfa0a4c) SHA1(738df99a250fad0b1da5ebeb8c92a9ad1461417b) )
-ROM_END
-
-ROM_START( fscc9c ) // PCB label 510-1046C01
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-1034a01", 0xc000, 0x2000, CRC(b845c458) SHA1(d3fda65dbd9fae44fa4b93f8207839d8fa0c367a) ) // HN48364P
- ROM_LOAD("101-1034b02", 0xe000, 0x2000, CRC(cbaf97d7) SHA1(7ed8e68bb74713d9e2ff1d9c037012320b7bfcbf) ) // "
-ROM_END
-
-ROM_START( fscc9ps )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("play64c1.bin", 0xc000, 0x2000, CRC(e96aa95d) SHA1(16d90cf0ef166aef579d442671290a2c43e24dfe) )
- ROM_LOAD("play64en.bin", 0xe000, 0x2000, CRC(6fa188d2) SHA1(1b9b0209c496c89ecb7f9ec07bfd9429ff9b275e) )
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1982, fscc9, 0, 0, sc9d, sc9, sc9_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger 9 (rev. D)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS ) // aka version "B"
-CONS( 1982, fscc9b, fscc9, 0, sc9b, sc9, sc9_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger 9 (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1982, fscc9c, fscc9, 0, sc9b, sc9c, sc9c_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger 9 (rev. C)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1983, fscc9ps, fscc9, 0, playmatic, playmatic, sc9_state, empty_init, "Fidelity Deutschland", "Sensory 9 Playmatic S", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/fidel_vcc.cpp b/src/mame/drivers/fidel_vcc.cpp
deleted file mode 100644
index b54bddd4990..00000000000
--- a/src/mame/drivers/fidel_vcc.cpp
+++ /dev/null
@@ -1,386 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Kevin Horton, Jonathan Gevaryahu, Sandro Ronco, hap
-/******************************************************************************
-*
-* fidel_vcc.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-Fidelity Voice Chess Challenger series hardware
-- Voice Chess Challenger (VCC) (version A and B?)
-- Advanced Voice Chess Challenger (UVC)
-- *Grandmaster Voice Chess Challenger
-- *Decorator Challenger (FCC)
-
-*: not dumped yet
-
-*******************************************************************************
-
-RE notes by Kevin Horton
-
-The CPU is a Z80 running at 4MHz. The TSI chip runs at around 25KHz, using a
-470K / 100pf RC network. This system is very very basic, and is composed of just
-the Z80, 4 ROMs, the TSI chip, and an 8255.
-
-The Z80's interrupt inputs are all pulled to VCC, so no interrupts are used.
-
-Reset is connected to a power-on reset circuit and a button on the keypad (marked RE).
-
-The TSI chip connects to a 4K ROM. All of the 'Voiced' Chess Challengers
-use this same ROM (three or four). The later chess boards use a slightly different part
-number, but the contents are identical.
-
-Memory map (VCC):
------------
-0000-0FFF: 4K 2332 ROM 101-32013
-1000-1FFF: 4K 2332 ROM VCC2
-2000-2FFF: 4K 2332 ROM VCC3
-4000-5FFF: 1K RAM (2114 SRAM x2)
-6000-FFFF: empty
-
-Memory map (UVC):
------------
-0000-1FFF: 8K 2364 ROM 101-64017
-2000-2FFF: 4K 2332 ROM 101-32010
-4000-5FFF: 1K RAM (2114 SRAM x2)
-6000-FFFF: empty
-
-Port map:
----------
-00-03: 8255 port chip, mirrored over the 00-FF range; program accesses F4-F7
-
-8255 connections:
------------------
-PA.0 - segment G, TSI A0 (W)
-PA.1 - segment F, TSI A1 (W)
-PA.2 - segment E, TSI A2 (W)
-PA.3 - segment D, TSI A3 (W)
-PA.4 - segment C, TSI A4 (W)
-PA.5 - segment B, TSI A5 (W)
-PA.6 - segment A, language latch Data (W)
-PA.7 - TSI START line, language latch clock (W, see below)
-
-PB.0 - dot commons (W)
-PB.1 - NC
-PB.2 - digit 0, bottom dot (W)
-PB.3 - digit 1, top dot (W)
-PB.4 - digit 2 (W)
-PB.5 - digit 3 (W)
-PB.6 - enable language switches (W, see below)
-PB.7 - TSI BUSY line (R)
-
-(button rows pulled up to 5V through 2.2K resistors)
-PC.0 - button row 0, German language jumper (R)
-PC.1 - button row 1, French language jumper (R)
-PC.2 - button row 2, Spanish language jumper (R)
-PC.3 - button row 3, special language jumper (R)
-PC.4 - button column A (W)
-PC.5 - button column B (W)
-PC.6 - button column C (W)
-PC.7 - button column D (W)
-
-language switches:
-------------------
-When PB.6 is pulled low, the language switches can be read. There are four.
-They connect to the button rows. When enabled, the row(s) will read low if
-the jumper is present. English only VCC's do not have the 367 or any pads stuffed.
-The jumpers are labeled: French, German, Spanish, and special.
-
-language latch:
----------------
-There's an unstuffed 7474 on the board that connects to PA.6 and PA.7. It allows
-one to latch the state of A12 to the speech ROM. The English version has the chip
-missing, and a jumper pulling "A12" to ground. This line is really a negative
-enable.
-
-To make the VCC multi-language, one would install the 74367 (note: it must be a 74367
-or possibly a 74LS367. A 74HC367 would not work since they rely on the input current
-to keep the inputs pulled up), solder a piggybacked ROM to the existing English
-speech ROM, and finally install a 7474 dual flipflop.
-
-This way, the game can then detect which secondary language is present, and then it can
-automatically select the correct ROM(s). I have to test whether it will do automatic
-determination and give you a language option on power up or something.
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/z80/z80.h"
-#include "machine/i8255.h"
-#include "speaker.h"
-
-// internal artwork
-#include "fidel_vcc.lh" // clickable
-
-
-namespace {
-
-class vcc_state : public fidelbase_state
-{
-public:
- vcc_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag),
- m_ppi8255(*this, "ppi8255")
- { }
-
- // machine drivers
- void vcc(machine_config &config);
-
-protected:
- virtual void machine_start() override;
-
-private:
- // devices/pointers
- required_device<i8255_device> m_ppi8255;
-
- // address maps
- void main_map(address_map &map);
- void main_io(address_map &map);
-
- // I/O handlers
- void prepare_display();
- DECLARE_READ8_MEMBER(speech_r);
- DECLARE_WRITE8_MEMBER(ppi_porta_w);
- DECLARE_READ8_MEMBER(ppi_portb_r);
- DECLARE_WRITE8_MEMBER(ppi_portb_w);
- DECLARE_READ8_MEMBER(ppi_portc_r);
- DECLARE_WRITE8_MEMBER(ppi_portc_w);
-};
-
-void vcc_state::machine_start()
-{
- fidelbase_state::machine_start();
-
- // game relies on RAM filled with FF at power-on
- for (int i = 0; i < 0x400; i++)
- m_maincpu->space(AS_PROGRAM).write_byte(i + 0x4000, 0xff);
-}
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// misc handlers
-
-void vcc_state::prepare_display()
-{
- // 4 7seg leds (note: sel d0 for extra leds)
- u8 outdata = (m_7seg_data & 0x7f) | (m_led_select << 7 & 0x80);
- set_display_segmask(0xf, 0x7f);
- display_matrix(8, 4, outdata, m_led_select >> 2 & 0xf);
-}
-
-READ8_MEMBER(vcc_state::speech_r)
-{
- return m_speech_rom[m_speech_bank << 12 | offset];
-}
-
-
-// I8255 PPI
-
-WRITE8_MEMBER(vcc_state::ppi_porta_w)
-{
- // d0-d6: digit segment data, bits are xABCDEFG
- m_7seg_data = bitswap<8>(data,7,0,1,2,3,4,5,6);
- prepare_display();
-
- // d0-d5: TSI C0-C5
- // d7: TSI START line
- m_speech->data_w(space, 0, data & 0x3f);
- m_speech->start_w(data >> 7 & 1);
-
- // d6: language latch data
- // d7: language latch clock (latch on high)
- if (data & 0x80)
- {
- m_speech->force_update(); // update stream to now
- m_speech_bank = data >> 6 & 1;
- }
-}
-
-READ8_MEMBER(vcc_state::ppi_portb_r)
-{
- // d7: TSI BUSY line
- return (m_speech->busy_r()) ? 0x80 : 0x00;
-}
-
-WRITE8_MEMBER(vcc_state::ppi_portb_w)
-{
- // d0,d2-d5: digit/led select
- // _d6: enable language switches
- m_led_select = data;
- prepare_display();
-}
-
-READ8_MEMBER(vcc_state::ppi_portc_r)
-{
- // d0-d3: multiplexed inputs (active low)
- // also language switches, hardwired with 4 jumpers
- // 0(none wired): English, 1: German, 2: French, 4: Spanish, 8:Special(unused)
- u8 lan = (~m_led_select & 0x40) ? *m_language : 0;
- return ~(lan | read_inputs(4)) & 0xf;
-}
-
-WRITE8_MEMBER(vcc_state::ppi_portc_w)
-{
- // d4-d7: input mux (inverted)
- m_inp_mux = ~data >> 4 & 0xf;
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void vcc_state::main_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x0000, 0x2fff).rom();
- map(0x4000, 0x43ff).mirror(0x1c00).ram();
-}
-
-void vcc_state::main_io(address_map &map)
-{
- map.global_mask(0x03);
- map(0x00, 0x03).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( vcc )
- PORT_START("IN.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_A)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_E)
-
- PORT_START("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Speaker") PORT_CODE(KEYCODE_SPACE)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F)
-
- PORT_START("IN.2")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_O)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G)
-
- PORT_START("IN.3")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_V)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H)
-
- PORT_START("RESET") // is not on matrix IN.0 d0
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, vcc_state, reset_button, nullptr)
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void vcc_state::vcc(machine_config &config)
-{
- /* basic machine hardware */
- Z80(config, m_maincpu, 4_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &vcc_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &vcc_state::main_io);
-
- I8255(config, m_ppi8255);
- m_ppi8255->out_pa_callback().set(FUNC(vcc_state::ppi_porta_w));
- m_ppi8255->tri_pa_callback().set_constant(0);
- m_ppi8255->in_pb_callback().set(FUNC(vcc_state::ppi_portb_r));
- m_ppi8255->out_pb_callback().set(FUNC(vcc_state::ppi_portb_w));
- m_ppi8255->tri_pb_callback().set_constant(0);
- m_ppi8255->in_pc_callback().set(FUNC(vcc_state::ppi_portc_r));
- m_ppi8255->out_pc_callback().set(FUNC(vcc_state::ppi_portc_w));
-
- TIMER(config, "display_decay").configure_periodic(FUNC(vcc_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_vcc);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
- m_speech->ext_read().set(FUNC(vcc_state::speech_r));
- m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( vcc )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("cn19256n_101-32013", 0x0000, 0x1000, CRC(257bb5ab) SHA1(f7589225bb8e5f3eac55f23e2bd526be780b38b5) )
- ROM_LOAD("cn19174n_vcc2", 0x1000, 0x1000, CRC(f33095e7) SHA1(692fcab1b88c910b74d04fe4d0660367aee3f4f0) )
- ROM_LOAD("cn19175n_vcc3", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
-
- // speech ROM
- ROM_DEFAULT_BIOS("en")
- ROM_SYSTEM_BIOS(0, "en", "English")
- ROM_SYSTEM_BIOS(1, "de", "German")
- ROM_SYSTEM_BIOS(2, "fr", "French")
- ROM_SYSTEM_BIOS(3, "sp", "Spanish")
-
- ROM_REGION( 1, "language", 0 )
- ROMX_FILL(0, 1, 0, ROM_BIOS(0) )
- ROMX_FILL(0, 1, 1, ROM_BIOS(1) )
- ROMX_FILL(0, 1, 2, ROM_BIOS(2) )
- ROMX_FILL(0, 1, 4, ROM_BIOS(3) )
-
- ROM_REGION( 0x2000, "speech", 0 )
- ROMX_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d), ROM_BIOS(0) )
- ROM_RELOAD( 0x1000, 0x1000)
- ROMX_LOAD("101-64101", 0x0000, 0x2000, CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff), ROM_BIOS(1) )
- ROMX_LOAD("101-64105", 0x0000, 0x2000, CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3), ROM_BIOS(2) )
- ROMX_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
-ROM_END
-
-ROM_START( uvc )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-64017", 0x0000, 0x2000, CRC(f1133abf) SHA1(09dd85051c4e7d364d43507c1cfea5c2d08d37f4) ) // MOS // 101-64017 // 3880
- ROM_LOAD("101-32010", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) ) // NEC P9Z021 // D2332C 228 // 101-32010, == cn19175n_vcc3 on vcc
-
- // speech ROM
- ROM_DEFAULT_BIOS("en")
- ROM_SYSTEM_BIOS(0, "en", "English")
- ROM_SYSTEM_BIOS(1, "de", "German")
- ROM_SYSTEM_BIOS(2, "fr", "French")
- ROM_SYSTEM_BIOS(3, "sp", "Spanish")
-
- ROM_REGION( 1, "language", 0 )
- ROMX_FILL(0, 1, 0, ROM_BIOS(0) )
- ROMX_FILL(0, 1, 1, ROM_BIOS(1) )
- ROMX_FILL(0, 1, 2, ROM_BIOS(2) )
- ROMX_FILL(0, 1, 4, ROM_BIOS(3) )
-
- ROM_REGION( 0x2000, "speech", 0 )
- ROMX_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d), ROM_BIOS(0) ) // NEC P9Y019 // D2332C 229 // 101-32107
- ROM_RELOAD( 0x1000, 0x1000)
- ROMX_LOAD("101-64101", 0x0000, 0x2000, CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff), ROM_BIOS(1) )
- ROMX_LOAD("101-64105", 0x0000, 0x2000, CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3), ROM_BIOS(2) )
- ROMX_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1979, vcc, 0, 0, vcc, vcc, vcc_state, empty_init, "Fidelity Electronics", "Voice Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1980, uvc, vcc, 0, vcc, vcc, vcc_state, empty_init, "Fidelity Electronics", "Advanced Voice Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/fidel_vsc.cpp b/src/mame/drivers/fidel_vsc.cpp
deleted file mode 100644
index f31fbaf683a..00000000000
--- a/src/mame/drivers/fidel_vsc.cpp
+++ /dev/null
@@ -1,430 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Kevin Horton, Jonathan Gevaryahu, Sandro Ronco, hap
-/******************************************************************************
-*
-* fidel_vsc.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-
-*******************************************************************************
-
-Fidelity Voice Sensory Chess Challenger (VSC)
----------------------------------------------
-RE notes by Kevin Horton
-
-The display/button/LED/speech technology is identical to Fidelity CSC.
-Only the CPU board was changed. As such, it works the same but is interfaced
-to different port chips this time.
-
-Hardware:
----------
-On the board are 13 chips.
-
-The CPU is a Z80A running at 3.9MHz, with 20K of ROM and 1K of RAM mapped.
-I/O is composed of an 8255 triple port adaptor, and a Z80A PIO parallel I/O
-interface.
-
-There's the usual TSI S14001A speech synth with its requisite 4K ROM which is the
-same as on the other talking chess boards. The TSI chip is running at 26.37KHz.
-It uses a 470K resistor and a 100pf capacitor.
-
-The "perfect" clock would be 1/RC most likely (actually this will be skewed a tad by
-duty cycle of the oscillator) which with those parts values gives 21.27KHz. The
-formula is probably more likely to be 1/1.2RC or so.
-
-Rounding out the hardware are three driver chips for the LEDs, a 7404 inverter to
-run the crystal osc, a 555 timer to generate a clock, and a 74138 selector.
-
-NMI runs to a 555 oscillator that generates a 600Hz clock (measured: 598.9Hz.
-It has a multiturn pot to adjust).
-INT is pulled to 5V
-RST connects to a power-on reset circuit
-
-Memory map:
------------
-0000-1FFF: 8K ROM 101-64018
-2000-3FFF: 8K ROM 101-64019 (also used on the sensory champ. chess challenger)
-4000-5FFF: 4K ROM 101-32024
-6000-7FFF: 1K of RAM (2114 * 2)
-8000-FFFF: not used, maps to open bus
-
-Port map:
----------
-There's only two chips in the portmap, an 8255 triple port chip, and a Z80A PIO
-parallel input/output device.
-
-Decoding isn't performed using a selector, but instead address lines are used.
-
-A2 connects to /CE on the 8255
-A3 connects to /CE on the Z80A PIO
-
-A0 connects to port A/B select on PIO & A0 of 8255
-A1 connects to control/data select on PIO & A1 of 8255
-
-So to enable only the 8255, you'd write/read to 08-0Bh for example
-To enable only the PIO, you'd write/read to 04-07h for example.
-
-writing to 00-03h will enable and write to BOTH chips, and reading 00-03h
-will return data from BOTH chips (and cause a bus conflict). The code probably
-never does either of these things.
-
-Likewise, writing/reading to 0Ch-0Fh will result in open bus, because neither chip's
-enable line will be low.
-
-This sequence repeats every 16 addresses. So to recap:
-
-00-03: both chips enabled (probably not used)
-04-07: PIO enabled
-08-0B: 8255 enabled
-0C-0F: neither enabled
-
-10-FF: mirrors of 00-0F.
-
-Refer to the Sensory Champ. Chess Chall. for explanations of the below
-I/O names and labels. It's the same.
-
-8255:
------
-PA.0 - segment D, TSI A0
-PA.1 - segment E, TSI A1
-PA.2 - segment F, TSI A2
-PA.3 - segment A, TSI A3
-PA.4 - segment B, TSI A4
-PA.5 - segment C, TSI A5
-PA.6 - segment G
-PA.7 - segment H
-
-PB.0 - LED row 1
-PB.1 - LED row 2
-PB.2 - LED row 3
-PB.3 - LED row 4
-PB.4 - LED row 5
-PB.5 - LED row 6
-PB.6 - LED row 7
-PB.7 - LED row 8
-
-PC.0 - LED column A, button column A, 7seg digit 1
-PC.1 - LED column B, button column B, 7seg digit 2
-PC.2 - LED column C, button column C, 7seg digit 3
-PC.3 - LED column D, button column D, 7seg digit 4
-PC.4 - LED column E, button column E
-PC.5 - LED column F, button column F
-PC.6 - LED column G, button column G
-PC.7 - LED column H, button column H
-
-Z80A PIO:
----------
-PA.0 - button row 1
-PA.1 - button row 2
-PA.2 - button row 3
-PA.3 - button row 4
-PA.4 - button row 5
-PA.5 - button row 6
-PA.6 - button row 7
-PA.7 - button row 8
-
-PB.0 - button column I
-PB.1 - button column J
-PB.2 - hi/lo TSI speaker volume
-PB.3 - violet wire
-PB.4 - white wire (and TSI BUSY line)
-PB.5 - selection jumper input (see below)
-PB.6 - TSI start line
-PB.7 - TSI ROM A12 line
-
-selection jumpers:
-------------------
-These act like another row of buttons. It is composed of two diode locations,
-so there's up to 4 possible configurations. My board does not have either diode
-stuffed, so this most likely is "English". I suspect it selects which language to use
-for the speech synth. Of course you need the other speech ROMs for this to function
-properly.
-
-Anyways, the two jumpers are connected to button columns A and B and the common
-connects to Z80A PIO PB.5, which basically makes a 10th button row. I would
-expect that the software reads these once on startup only.
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/fidelbase.h"
-
-#include "cpu/z80/z80.h"
-#include "machine/i8255.h"
-#include "machine/z80pio.h"
-#include "speaker.h"
-
-// internal artwork
-#include "fidel_vsc.lh" // clickable
-
-
-namespace {
-
-class vsc_state : public fidelbase_state
-{
-public:
- vsc_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag),
- m_z80pio(*this, "z80pio"),
- m_ppi8255(*this, "ppi8255")
- { }
-
- // machine drivers
- void vsc(machine_config &config);
-
-private:
- // devices/pointers
- required_device<z80pio_device> m_z80pio;
- required_device<i8255_device> m_ppi8255;
-
- // address maps
- void main_map(address_map &map);
- void main_io(address_map &map);
- DECLARE_READ8_MEMBER(main_io_trampoline_r);
- DECLARE_WRITE8_MEMBER(main_io_trampoline_w);
-
- // I/O handlers
- void prepare_display();
- DECLARE_READ8_MEMBER(speech_r);
- DECLARE_WRITE8_MEMBER(ppi_porta_w);
- DECLARE_WRITE8_MEMBER(ppi_portb_w);
- DECLARE_WRITE8_MEMBER(ppi_portc_w);
- DECLARE_READ8_MEMBER(pio_porta_r);
- DECLARE_READ8_MEMBER(pio_portb_r);
- DECLARE_WRITE8_MEMBER(pio_portb_w);
-};
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// misc handlers
-
-void vsc_state::prepare_display()
-{
- // 4 7seg leds+H, 8*8 chessboard leds
- set_display_segmask(0xf, 0x7f);
- display_matrix(16, 8, m_led_data << 8 | m_7seg_data, m_led_select);
-}
-
-READ8_MEMBER(vsc_state::speech_r)
-{
- return m_speech_rom[m_speech_bank << 12 | offset];
-}
-
-
-// I8255 PPI
-
-WRITE8_MEMBER(vsc_state::ppi_porta_w)
-{
- // d0-d5: TSI C0-C5
- m_speech->data_w(space, 0, data & 0x3f);
-
- // d0-d7: data for the 4 7seg leds, bits are HGCBAFED (H is extra led)
- m_7seg_data = bitswap<8>(data,7,6,2,1,0,5,4,3);
- prepare_display();
-}
-
-WRITE8_MEMBER(vsc_state::ppi_portb_w)
-{
- // d0-d7: led row data
- m_led_data = data;
- prepare_display();
-}
-
-WRITE8_MEMBER(vsc_state::ppi_portc_w)
-{
- // d0-d3: select digits
- // d0-d7: select leds, input mux low bits
- m_inp_mux = (m_inp_mux & ~0xff) | data;
- m_led_select = data;
- prepare_display();
-}
-
-
-// Z80 PIO
-
-READ8_MEMBER(vsc_state::pio_porta_r)
-{
- // d0-d7: multiplexed inputs
- // also language switches(hardwired with 2 diodes)
- u8 lan = (m_inp_mux & 0x400) ? *m_language : 0;
- return read_inputs(10) | lan;
-}
-
-READ8_MEMBER(vsc_state::pio_portb_r)
-{
- u8 data = 0;
-
- // d4: TSI BUSY line
- data |= (m_speech->busy_r()) ? 0 : 0x10;
-
- return data;
-}
-
-WRITE8_MEMBER(vsc_state::pio_portb_w)
-{
- // d0,d1: input mux highest bits
- // d5: enable language switch
- m_inp_mux = (m_inp_mux & 0xff) | (data << 8 & 0x300) | (data << 5 & 0x400);
-
- // d7: TSI ROM A12
- m_speech->force_update(); // update stream to now
- m_speech_bank = data >> 7 & 1;
-
- // d6: TSI START line
- m_speech->start_w(data >> 6 & 1);
-
- // d2: lower TSI volume
- m_speech->set_output_gain(0, (data & 4) ? 0.5 : 1.0);
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void vsc_state::main_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x0000, 0x3fff).rom();
- map(0x4000, 0x4fff).mirror(0x1000).rom();
- map(0x6000, 0x63ff).mirror(0x1c00).ram();
-}
-
-// VSC io: A2 is 8255 _CE, A3 is Z80 PIO _CE - in theory, both chips can be accessed simultaneously
-READ8_MEMBER(vsc_state::main_io_trampoline_r)
-{
- u8 data = 0xff; // open bus
- if (~offset & 4)
- data &= m_ppi8255->read(offset & 3);
- if (~offset & 8)
- data &= m_z80pio->read(space, offset & 3);
-
- return data;
-}
-
-WRITE8_MEMBER(vsc_state::main_io_trampoline_w)
-{
- if (~offset & 4)
- m_ppi8255->write(offset & 3, data);
- if (~offset & 8)
- m_z80pio->write(space, offset & 3, data);
-}
-
-void vsc_state::main_io(address_map &map)
-{
- map.global_mask(0x0f);
- map(0x00, 0x0f).rw(FUNC(vsc_state::main_io_trampoline_r), FUNC(vsc_state::main_io_trampoline_w));
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( vsc )
- PORT_INCLUDE( generic_cb_buttons )
-
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Pawn")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Rook")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Knight")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Bishop")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Queen")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("King")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("RE")
-
- PORT_START("IN.9")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("TM")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("RV")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Speaker")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("LV")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("DM")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("ST")
- PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void vsc_state::vsc(machine_config &config)
-{
- /* basic machine hardware */
- Z80(config, m_maincpu, 3.9_MHz_XTAL); // 3.9MHz resonator
- m_maincpu->set_addrmap(AS_PROGRAM, &vsc_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &vsc_state::main_io);
-
- const attotime irq_period = attotime::from_hz(587); // 555 timer, measured
- TIMER(config, m_irq_on).configure_periodic(FUNC(vsc_state::irq_on<INPUT_LINE_NMI>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_usec(845)); // active for 0.845ms (approx half)
- TIMER(config, "irq_off").configure_periodic(FUNC(vsc_state::irq_off<INPUT_LINE_NMI>), irq_period);
-
- I8255(config, m_ppi8255);
- m_ppi8255->out_pa_callback().set(FUNC(vsc_state::ppi_porta_w));
- m_ppi8255->out_pb_callback().set(FUNC(vsc_state::ppi_portb_w));
- m_ppi8255->out_pc_callback().set(FUNC(vsc_state::ppi_portc_w));
-
- Z80PIO(config, m_z80pio, 3.9_MHz_XTAL);
- m_z80pio->in_pa_callback().set(FUNC(vsc_state::pio_porta_r));
- m_z80pio->in_pb_callback().set(FUNC(vsc_state::pio_portb_r));
- m_z80pio->out_pb_callback().set(FUNC(vsc_state::pio_portb_w));
-
- TIMER(config, "display_decay").configure_periodic(FUNC(vsc_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_fidel_vsc);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
- m_speech->ext_read().set(FUNC(vsc_state::speech_r));
- m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( vsc )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("101-64018", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
- ROM_LOAD("101-64019", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
- ROM_LOAD("101-32024", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
-
- // speech ROM
- ROM_DEFAULT_BIOS("en")
- ROM_SYSTEM_BIOS(0, "en", "English")
- ROM_SYSTEM_BIOS(1, "de", "German")
- ROM_SYSTEM_BIOS(2, "fr", "French")
- ROM_SYSTEM_BIOS(3, "sp", "Spanish")
-
- ROM_REGION( 1, "language", 0 )
- ROMX_FILL(0, 1, 0, ROM_BIOS(0) )
- ROMX_FILL(0, 1, 1, ROM_BIOS(1) )
- ROMX_FILL(0, 1, 2, ROM_BIOS(2) )
- ROMX_FILL(0, 1, 3, ROM_BIOS(3) )
-
- ROM_REGION( 0x2000, "speech", 0 )
- ROMX_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d), ROM_BIOS(0) )
- ROM_RELOAD( 0x1000, 0x1000)
- ROMX_LOAD("101-64101", 0x0000, 0x2000, CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff), ROM_BIOS(1) )
- ROMX_LOAD("101-64105", 0x0000, 0x2000, CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3), ROM_BIOS(2) )
- ROMX_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1980, vsc, 0, 0, vsc, vsc, vsc_state, empty_init, "Fidelity Electronics", "Voice Sensory Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/fidel_sc6.cpp b/src/mame/drivers/fidelmcs48.cpp
index 73096ca136d..7b49319751a 100644
--- a/src/mame/drivers/fidel_sc6.cpp
+++ b/src/mame/drivers/fidelmcs48.cpp
@@ -2,24 +2,25 @@
// copyright-holders:hap
// thanks-to:yoyo_chessboard
/******************************************************************************
-*
-* fidel_sc6.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
-*******************************************************************************
+ Fidelity Electronics generic MCS-48 based chess computer driver
-Fidelity Sensory Chess Challenger 6 (model SC6) overview:
+ NOTE: MAME doesn't include a generalized implementation for boardpieces yet,
+ greatly affecting user playability of emulated electronic board games.
+ As workaround for the chess games, use an external chess GUI on the side,
+ such as Arena(in editmode).
+
+ TODO:
+ - nothing
+
+******************************************************************************
+
+Sensory Chess Challenger 6 (model SC6):
- PCB label 510-1045B01
- INS8040N-11 MCU, 11MHz XTAL
- external 4KB ROM 2332 101-1035A01, in module slot
- buzzer, 2 7seg LEDs, 8*8 chessboard buttons
-released modules, * denotes not dumped yet:
-- *BO6: Book Openings I
-- *CG6: Greatest Chess Games 1
-- SC6: pack-in, original program
-
-SC6 program is contained in BO6 and CG6.
-
******************************************************************************/
#include "emu.h"
@@ -33,72 +34,44 @@ SC6 program is contained in BO6 and CG6.
#include "fidel_sc6.lh" // clickable
-namespace {
-
-class sc6_state : public fidelbase_state
+class fidelmcs48_state : public fidelbase_state
{
public:
- sc6_state(const machine_config &mconfig, device_type type, const char *tag) :
- fidelbase_state(mconfig, type, tag),
- m_maincpu(*this, "maincpu")
+ fidelmcs48_state(const machine_config &mconfig, device_type type, const char *tag)
+ : fidelbase_state(mconfig, type, tag)
{ }
- // machine drivers
void sc6(machine_config &config);
private:
- // devices/pointers
- required_device<mcs48_cpu_device> m_maincpu;
-
- // address maps
- void main_map(address_map &map);
+ // SC6
+ void sc6_prepare_display();
+ DECLARE_WRITE8_MEMBER(sc6_mux_w);
+ DECLARE_WRITE8_MEMBER(sc6_select_w);
+ DECLARE_READ8_MEMBER(sc6_input_r);
+ DECLARE_READ_LINE_MEMBER(sc6_input6_r);
+ DECLARE_READ_LINE_MEMBER(sc6_input7_r);
+ void sc6_map(address_map &map);
+};
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cartridge);
- // I/O handlers
- void prepare_display();
- DECLARE_WRITE8_MEMBER(mux_w);
- DECLARE_WRITE8_MEMBER(select_w);
- DECLARE_READ8_MEMBER(input_r);
- DECLARE_READ_LINE_MEMBER(input6_r);
- DECLARE_READ_LINE_MEMBER(input7_r);
-};
+// Devices, I/O
/******************************************************************************
- Devices, I/O
+ SC6
******************************************************************************/
-// cartridge
-
-DEVICE_IMAGE_LOAD_MEMBER(sc6_state, cartridge)
-{
- u32 size = m_cart->common_get_size("rom");
-
- // 4KB ROM only?
- if (size != 0x1000)
- {
- image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid file size");
- return image_init_result::FAIL;
- }
-
- m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
- m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
-
- return image_init_result::PASS;
-}
-
-
// MCU ports/generic
-void sc6_state::prepare_display()
+void fidelmcs48_state::sc6_prepare_display()
{
// 2 7seg leds
set_display_segmask(3, 0x7f);
display_matrix(7, 2, m_7seg_data, m_led_select);
}
-WRITE8_MEMBER(sc6_state::mux_w)
+WRITE8_MEMBER(fidelmcs48_state::sc6_mux_w)
{
// P24-P27: 7442 A-D
u16 sel = 1 << (data >> 4 & 0xf) & 0x3ff;
@@ -106,32 +79,32 @@ WRITE8_MEMBER(sc6_state::mux_w)
// 7442 0-8: input mux, 7seg data
m_inp_mux = sel & 0x1ff;
m_7seg_data = sel & 0x7f;
- prepare_display();
+ sc6_prepare_display();
// 7442 9: speaker out
m_dac->write(BIT(sel, 9));
}
-WRITE8_MEMBER(sc6_state::select_w)
+WRITE8_MEMBER(fidelmcs48_state::sc6_select_w)
{
// P16,P17: digit select
m_led_select = ~data >> 6 & 3;
- prepare_display();
+ sc6_prepare_display();
}
-READ8_MEMBER(sc6_state::input_r)
+READ8_MEMBER(fidelmcs48_state::sc6_input_r)
{
// P10-P15: multiplexed inputs low
return (~read_inputs(9) & 0x3f) | 0xc0;
}
-READ_LINE_MEMBER(sc6_state::input6_r)
+READ_LINE_MEMBER(fidelmcs48_state::sc6_input6_r)
{
// T0: multiplexed inputs bit 6
return ~read_inputs(9) >> 6 & 1;
}
-READ_LINE_MEMBER(sc6_state::input7_r)
+READ_LINE_MEMBER(fidelmcs48_state::sc6_input7_r)
{
// T1: multiplexed inputs bit 7
return ~read_inputs(9) >> 7 & 1;
@@ -143,9 +116,11 @@ READ_LINE_MEMBER(sc6_state::input7_r)
Address Maps
******************************************************************************/
-void sc6_state::main_map(address_map &map)
+// SC6
+
+void fidelmcs48_state::sc6_map(address_map &map)
{
- map(0x0000, 0x0fff).r("cartslot", FUNC(generic_slot_device::read_rom));
+ map(0x0000, 0x0fff).rom();
}
@@ -155,7 +130,7 @@ void sc6_state::main_map(address_map &map)
******************************************************************************/
static INPUT_PORTS_START( sc6 )
- PORT_INCLUDE( generic_cb_buttons )
+ PORT_INCLUDE( fidel_cb_buttons )
PORT_START("IN.8")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("RV / Pawn")
@@ -174,32 +149,26 @@ INPUT_PORTS_END
Machine Drivers
******************************************************************************/
-void sc6_state::sc6(machine_config &config)
-{
+MACHINE_CONFIG_START(fidelmcs48_state::sc6)
+
/* basic machine hardware */
- I8040(config, m_maincpu, 11_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &sc6_state::main_map);
- m_maincpu->p2_out_cb().set(FUNC(sc6_state::mux_w));
- m_maincpu->p1_in_cb().set(FUNC(sc6_state::input_r));
- m_maincpu->p1_out_cb().set(FUNC(sc6_state::select_w));
- m_maincpu->t0_in_cb().set(FUNC(sc6_state::input6_r));
- m_maincpu->t1_in_cb().set(FUNC(sc6_state::input7_r));
-
- TIMER(config, "display_decay").configure_periodic(FUNC(sc6_state::display_decay_tick), attotime::from_msec(1));
+ i8040_device &maincpu(I8040(config, m_maincpu, 11_MHz_XTAL));
+ maincpu.set_addrmap(AS_PROGRAM, &fidelmcs48_state::sc6_map);
+ maincpu.p2_out_cb().set(FUNC(fidelmcs48_state::sc6_mux_w));
+ maincpu.p1_in_cb().set(FUNC(fidelmcs48_state::sc6_input_r));
+ maincpu.p1_out_cb().set(FUNC(fidelmcs48_state::sc6_select_w));
+ maincpu.t0_in_cb().set(FUNC(fidelmcs48_state::sc6_input6_r));
+ maincpu.t1_in_cb().set(FUNC(fidelmcs48_state::sc6_input7_r));
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_fidel_sc6);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-
- /* cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_sc6", "bin");
- m_cart->set_device_load(device_image_load_delegate(&sc6_state::device_image_load_cartridge, this));
- m_cart->set_must_be_loaded(true);
-
- SOFTWARE_LIST(config, "cart_list").set_original("fidel_sc6");
-}
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
@@ -208,17 +177,15 @@ void sc6_state::sc6(machine_config &config)
******************************************************************************/
ROM_START( fscc6 )
- ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 )
- // none here, it's in the module slot
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD("101-1035a01", 0x0000, 0x1000, CRC(0024971f) SHA1(76b16364913ada2fb94b9e6a8524b924e6832ddf) ) // 2332
ROM_END
-} // anonymous namespace
-
/******************************************************************************
Drivers
******************************************************************************/
-// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-CONS( 1982, fscc6, 0, 0, sc6, sc6, sc6_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger 6", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
+CONS( 1982, fscc6, 0, 0, sc6, sc6, fidelmcs48_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger 6", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/fidelz80.cpp b/src/mame/drivers/fidelz80.cpp
new file mode 100644
index 00000000000..f5038d8b269
--- /dev/null
+++ b/src/mame/drivers/fidelz80.cpp
@@ -0,0 +1,2045 @@
+// license:BSD-3-Clause
+// copyright-holders:Kevin Horton,Jonathan Gevaryahu,Sandro Ronco,hap
+// thanks-to:Berger,yoyo_chessboard
+/******************************************************************************
+
+ Fidelity Electronics Z80 based board driver
+ for 6502 based boards, see drivers/fidel6502.cpp
+ for 68000 based boards, see drivers/fidel68k.cpp
+
+ NOTE: MAME doesn't include a generalized implementation for boardpieces yet,
+ greatly affecting user playability of emulated electronic board games.
+ As workaround for the chess games, use an external chess GUI on the side,
+ such as Arena(in editmode).
+
+ TODO:
+ - Source organization is a big mess. Each machine family could be in its own
+ sub driverclass, and separate files.
+ - VBRC card scanner
+ - VBRC MCU T1 is unknown
+ - Z80 WAIT pin is not fully emulated, affecting VBRC speech busy state
+ - DSC: what controls the 2 middle leds? or unused?
+
+ Read the official manual(s) on how to play.
+
+ Keypad legend:
+ - RE: Reset
+ - CL: Clear
+ - EN: Enter
+ - PB: Problem Mode
+ - PV: Position Verification
+ - LV: Playing Levels
+ - TB: Take Back
+ - DM: Display Move/Double Move
+ - RV: Reverse
+ - ST: Set/Stop
+ - TM: Time
+
+ Peripherals, compatible with various boards:
+ - Fidelity Challenger Printer - thermal printer, MCU=D8048C243
+
+ Program/data cartridges, for various boards, some cross-compatible:
+ - CG6: Greatest Chess Games 1
+ - CAC: Challenger Advanced Chess - 8KB 101-1038A01
+ - CB9: Challenger Book Openings 1 - 8KB (label not known)
+ - CB16: Challenger Book Openings 2 - 8+8KB 101-1042A01,02
+ - others are alt. titles of these?
+
+ Board hardware descriptions below.
+ Detailed RE work done by Kevin 'kevtris' Horton, except where noted
+
+******************************************************************************
+
+Voice Chess Challenger (VCC) (version A and B?)
+Advanced Voice Chess Challenger (UVC)
+Grandmaster Voice Chess Challenger
+Decorator Challenger (FCC)
+
+(which share the same hardware)
+----------------------
+The CPU is a Z80 running at 4MHz. The TSI chip runs at around 25KHz, using a
+470K / 100pf RC network. This system is very very basic, and is composed of just
+the Z80, 4 ROMs, the TSI chip, and an 8255.
+
+The Z80's interrupt inputs are all pulled to VCC, so no interrupts are used.
+
+Reset is connected to a power-on reset circuit and a button on the keypad (marked RE).
+
+The TSI chip connects to a 4K ROM. All of the 'Voiced' Chess Challengers
+use this same ROM (three or four). The later chess boards use a slightly different part
+number, but the contents are identical.
+
+Memory map (VCC):
+-----------
+0000-0FFF: 4K 2332 ROM 101-32103
+1000-1FFF: 4K 2332 ROM VCC2
+2000-2FFF: 4K 2332 ROM VCC3
+4000-5FFF: 1K RAM (2114 SRAM x2)
+6000-FFFF: empty
+
+Memory map (UVC):
+-----------
+0000-1FFF: 8K 2364 ROM 101-64017
+2000-2FFF: 4K 2332 ROM 101-32010
+4000-5FFF: 1K RAM (2114 SRAM x2)
+6000-FFFF: empty
+
+Port map:
+---------
+00-03: 8255 port chip, mirrored over the 00-FF range; program accesses F4-F7
+
+8255 connections:
+-----------------
+PA.0 - segment G, TSI A0 (W)
+PA.1 - segment F, TSI A1 (W)
+PA.2 - segment E, TSI A2 (W)
+PA.3 - segment D, TSI A3 (W)
+PA.4 - segment C, TSI A4 (W)
+PA.5 - segment B, TSI A5 (W)
+PA.6 - segment A, language latch Data (W)
+PA.7 - TSI START line, language latch clock (W, see below)
+
+PB.0 - dot commons (W)
+PB.1 - NC
+PB.2 - digit 0, bottom dot (W)
+PB.3 - digit 1, top dot (W)
+PB.4 - digit 2 (W)
+PB.5 - digit 3 (W)
+PB.6 - enable language switches (W, see below)
+PB.7 - TSI BUSY line (R)
+
+(button rows pulled up to 5V through 2.2K resistors)
+PC.0 - button row 0, German language jumper (R)
+PC.1 - button row 1, French language jumper (R)
+PC.2 - button row 2, Spanish language jumper (R)
+PC.3 - button row 3, special language jumper (R)
+PC.4 - button column A (W)
+PC.5 - button column B (W)
+PC.6 - button column C (W)
+PC.7 - button column D (W)
+
+language switches:
+------------------
+When PB.6 is pulled low, the language switches can be read. There are four.
+They connect to the button rows. When enabled, the row(s) will read low if
+the jumper is present. English only VCC's do not have the 367 or any pads stuffed.
+The jumpers are labelled: French, German, Spanish, and special.
+
+language latch:
+---------------
+There's an unstuffed 7474 on the board that connects to PA.6 and PA.7. It allows
+one to latch the state of A12 to the speech ROM. The English version has the chip
+missing, and a jumper pulling "A12" to ground. This line is really a negative
+enable.
+
+To make the VCC multi-language, one would install the 74367 (note: it must be a 74367
+or possibly a 74LS367. A 74HC367 would not work since they rely on the input current
+to keep the inputs pulled up), solder a piggybacked ROM to the existing English
+speech ROM, and finally install a 7474 dual flipflop.
+
+This way, the game can then detect which secondary language is present, and then it can
+automatically select the correct ROM(s). I have to test whether it will do automatic
+determination and give you a language option on power up or something.
+
+
+******************************************************************************
+
+Chess Challenger 10 (CC10)
+-------------------
+4 versions are known to exist: A,B,C,D. Strangely, version C has an 8080
+instead of Z80. Chess Challenger 1,3 and 7 also run on very similar hardware.
+
+This is an earlier hardware upon which the VCC and UVC above were based on;
+The hardware is nearly the same; in fact the only significant differences are
+the RAM being located in a different place, the lack of a speech chip, and
+the connections to ports A and B on the PPI:
+
+8255 connections:
+-----------------
+PA.0 - segment G (W)
+PA.1 - segment F (W)
+PA.2 - segment E (W)
+PA.3 - segment D (W)
+PA.4 - segment C (W)
+PA.5 - segment B (W)
+PA.6 - segment A (W)
+PA.7 - 'beeper' direct speaker output (W)
+
+The beeper is via a 556 timer, fixed-frequency at around 1300-1400Hz.
+Not all hardware configurations include the beeper.
+
+PB.0 - dot commons (W)
+PB.1 - NC
+PB.2 - digit 0, bottom dot (W)
+PB.3 - digit 1, top dot (W)
+PB.4 - digit 2 (W)
+PB.5 - digit 3 (W)
+PB.6 - NC
+PB.7 - Mode select (cc3 vs cc10, R) - note: there is no CC3 with 16 buttons
+
+(button rows pulled up to 5V through 2.2K resistors)
+PC.0 - button row 0 (R)
+PC.1 - button row 1 (R)
+PC.2 - button row 2 (R)
+PC.3 - button row 3 (R)
+PC.4 - button column A (W)
+PC.5 - button column B (W)
+PC.6 - button column C (W)
+PC.7 - button column D (W)
+
+
+******************************************************************************
+
+Chess Challenger 7 (BCC)
+------------------------
+RE information from netlist by Berger
+
+Zilog Z80A, 3.579MHz from XTAL
+Z80 IRQ/NMI unused, no timer IC.
+This is a cost-reduced design from CC10, no special I/O chips.
+
+Memory map:
+-----------
+0000-0FFF: 4K 2332 ROM CN19103N BCC-REVB.
+2000-2FFF: ROM/RAM bus conflict!
+3000-3FFF: 256 bytes RAM (2111 SRAM x2)
+4000-FFFF: Z80 A14/A15 not connected
+
+Port map (Write):
+---------
+D0-D3: digit select and keypad mux
+D4: LOSE led
+D5: CHECK led
+A0-A2: NE591 A0-A2
+D7: NE591 D (_C not used)
+NE591 Q0-Q6: digit segments A-G
+NE591 Q7: buzzer
+
+Port map (Read):
+---------
+D0-D3: keypad row
+
+
+******************************************************************************
+
+Voice Bridge Challenger (Model VBRC, later reissued as Model 7002)
+and Bridge Challenger 3 (Model 7014)
+(which both share the same* hardware)
+--------------------------------
+* The Bridge Challenger 3 does not actually have the 8 LEDs nor the
+latches which operate them populated and the plastic indicator cap locations
+are instead are covered by a piece of plastic, but they do work if manually
+added.
+
+This unit is similar in construction kinda to the chess challengers, however it
+has an 8041 which does ALL of the system I/O. The Z80 has NO IO AT ALL other than
+what is performed through the 8041!
+
+The main CPU is a Z80 running at 2.5MHz
+
+INT connects to VCC (not used)
+NMI connects to VCC (not used)
+RST connects to power on reset, and reset button
+
+The 8041 runs at 5MHz.
+
+Memory Map:
+-----------
+0000-1FFF: 8K 101-64108 ROM
+2000-3FFF: 8K 101-64109 ROM
+4000-5FFF: 8K 101-64110 ROM
+6000-7FFF: 1K of RAM (2114 * 2)
+8000-DFFF: unused
+E000-FFFF: write to TSI chip
+
+NOTE: when the TSI chip is written to, the CPU IS STOPPED. The CPU will run again
+when the word is done being spoken. This is because D0-D5 run to the TSI chip directly.
+
+The TSI chip's ROM is 4K, and is marked 101-32118. The clock is the same as the Chess
+Challengers- 470K/100pf which gives a frequency around 25KHz or so.
+
+Port Map:
+---------
+00-FF: 8041 I/O ports (A0 selects between the two)
+
+8041 pinout:
+------------
+(note: columns are pulled up with 10K resistors)
+
+P10 - column H, RD LED, VFD grid 0
+P11 - column G, DB LED, VFD grid 1
+P12 - column F, <>V LED, VFD grid 2
+P13 - column E, ^V LED, VFD grid 3
+P14 - column D, W LED, VFD grid 4
+P15 - column C, S LED, VFD grid 5
+P16 - column B, E LED, VFD grid 6
+P17 - column A, N LED, VFD grid 7
+
+P20 - I/O expander
+P21 - I/O expander
+P22 - I/O expander
+P23 - I/O expander
+P24 - row 0 through inverter
+P25 - row 1 through inverter
+P26 - row 2 through inverter
+P27 - row 3 through inverter
+
+PROG - I/O expander
+
+T0 - optical card sensor (high = bright/reflective, low = dark/non reflective)
+T1 - connects to inverter, then nothing?
+
+D8243C I/O expander:
+--------------------
+P4.0 - segment M
+P4.1 - segment L
+P4.2 - segment N
+P4.3 - segment E
+
+P5.0 - segment D
+P5.1 - segment I
+P5.2 - segment K
+P5.3 - segment J
+
+P6.0 - segment A
+P6.1 - segment B
+P6.2 - segment F
+P6.3 - segment G
+
+P7.0 - LED enable (high = LEDs can be lit. low = LEDs will not light)
+P7.1 - goes through inverter, to pads that are not used
+P7.2 - segment C
+P7.3 - segment H
+
+button matrix:
+--------------
+the matrix is composed of 8 columns by 4 rows.
+
+ A B C D E F G H
+ -------------------------
+0- RE xx CL EN J Q K A
+1- BR PB DB SC 7 8 9 10
+2- DL CV VL PL 3 4 5 6
+3- cl di he sp NT P 1 2
+
+xx - speaker symbol
+cl - clubs symbol
+di - diamonds symbol
+he - hearts symbol
+sp - spades symbol
+
+NOTE: RE is not wired into the matrix, and is run separately out.
+
+There are 8 LEDs, and an 8 digit 14 segment VFD with commas and periods.
+This display is the same one as can be found on the speak and spell.
+
+ A * comma
+ *********** *
+ * *I *J K* *
+F* * * * *B
+ * * * * *
+ G**** *****H
+ * * * * *
+E* * * * *C
+ * *N *M L* *
+ *********** *decimal point
+ D
+
+The digits of the display are numbered left to right, 0 through 7 and are controlled
+by the grids. hi = grid on, hi = segment on.
+
+A detailed description of the hardware can be found also in the patent 4,373,719.
+
+
+******************************************************************************
+
+Voice Sensory Chess Challenger (VSC)
+------------------------------------
+The display/button/LED/speech technology is identical to Fidelity CSC.
+Only the CPU board was changed. As such, it works the same but is interfaced
+to different port chips this time.
+
+Hardware:
+---------
+On the board are 13 chips.
+
+The CPU is a Z80A running at 3.9MHz, with 20K of ROM and 1K of RAM mapped.
+I/O is composed of an 8255 triple port adaptor, and a Z80A PIO parallel I/O
+interface.
+
+There's the usual TSI S14001A speech synth with its requisite 4K ROM which is the
+same as on the other talking chess boards. The TSI chip is running at 26.37KHz.
+It uses a 470K resistor and a 100pf capacitor.
+
+The "perfect" clock would be 1/RC most likely (actually this will be skewed a tad by
+duty cycle of the oscillator) which with those parts values gives 21.27KHz. The
+formula is probably more likely to be 1/1.2RC or so.
+
+Rounding out the hardware are three driver chips for the LEDs, a 7404 inverter to
+run the crystal osc, a 555 timer to generate a clock, and a 74138 selector.
+
+NMI runs to a 555 oscillator that generates a 600Hz clock (measured: 598.9Hz. It has a multiturn pot to adjust).
+INT is pulled to 5V
+RST connects to a power-on reset circuit
+
+Memory map:
+-----------
+0000-1FFF: 8K ROM 101-64018
+2000-3FFF: 8K ROM 101-64019 (also used on the sensory champ. chess challenger)
+4000-5FFF: 4K ROM 101-32024
+6000-7FFF: 1K of RAM (2114 * 2)
+8000-FFFF: not used, maps to open bus
+
+Port map:
+---------
+There's only two chips in the portmap, an 8255 triple port chip, and a Z80A PIO
+parallel input/output device.
+
+Decoding isn't performed using a selector, but instead address lines are used.
+
+A2 connects to /CE on the 8255
+A3 connects to /CE on the Z80A PIO
+
+A0 connects to port A/B select on PIO & A0 of 8255
+A1 connects to control/data select on PIO & A1 of 8255
+
+So to enable only the 8255, you'd write/read to 08-0Bh for example
+To enable only the PIO, you'd write/read to 04-07h for example.
+
+writing to 00-03h will enable and write to BOTH chips, and reading 00-03h
+will return data from BOTH chips (and cause a bus conflict). The code probably
+never does either of these things.
+
+Likewise, writing/reading to 0Ch-0Fh will result in open bus, because neither chip's
+enable line will be low.
+
+This sequence repeats every 16 addresses. So to recap:
+
+00-03: both chips enabled (probably not used)
+04-07: PIO enabled
+08-0B: 8255 enabled
+0C-0F: neither enabled
+
+10-FF: mirrors of 00-0F.
+
+Refer to the Sensory Champ. Chess Chall. for explanations of the below
+I/O names and labels. It's the same.
+
+8255:
+-----
+PA.0 - segment D, TSI A0
+PA.1 - segment E, TSI A1
+PA.2 - segment F, TSI A2
+PA.3 - segment A, TSI A3
+PA.4 - segment B, TSI A4
+PA.5 - segment C, TSI A5
+PA.6 - segment G
+PA.7 - segment H
+
+PB.0 - LED row 1
+PB.1 - LED row 2
+PB.2 - LED row 3
+PB.3 - LED row 4
+PB.4 - LED row 5
+PB.5 - LED row 6
+PB.6 - LED row 7
+PB.7 - LED row 8
+
+PC.0 - LED column A, button column A, 7seg digit 1
+PC.1 - LED column B, button column B, 7seg digit 2
+PC.2 - LED column C, button column C, 7seg digit 3
+PC.3 - LED column D, button column D, 7seg digit 4
+PC.4 - LED column E, button column E
+PC.5 - LED column F, button column F
+PC.6 - LED column G, button column G
+PC.7 - LED column H, button column H
+
+Z80A PIO:
+---------
+PA.0 - button row 1
+PA.1 - button row 2
+PA.2 - button row 3
+PA.3 - button row 4
+PA.4 - button row 5
+PA.5 - button row 6
+PA.6 - button row 7
+PA.7 - button row 8
+
+PB.0 - button column I
+PB.1 - button column J
+PB.2 - hi/lo TSI speaker volume
+PB.3 - violet wire
+PB.4 - white wire (and TSI BUSY line)
+PB.5 - selection jumper input (see below)
+PB.6 - TSI start line
+PB.7 - TSI ROM A12 line
+
+selection jumpers:
+------------------
+These act like another row of buttons. It is composed of two diode locations,
+so there's up to 4 possible configurations. My board does not have either diode
+stuffed, so this most likely is "English". I suspect it selects which language to use
+for the speech synth. Of course you need the other speech ROMs for this to function
+properly.
+
+Anyways, the two jumpers are connected to button columns A and B and the common
+connects to Z80A PIO PB.5, which basically makes a 10th button row. I would
+expect that the software reads these once on startup only.
+
+******************************************************************************/
+
+#include "emu.h"
+#include "includes/fidelbase.h"
+
+#include "cpu/z80/z80.h"
+#include "cpu/mcs48/mcs48.h"
+#include "machine/i8255.h"
+#include "machine/i8243.h"
+#include "machine/z80pio.h"
+#include "sound/beep.h"
+#include "sound/volt_reg.h"
+#include "speaker.h"
+
+// internal artwork
+#include "fidel_cc.lh" // clickable
+#include "fidel_bcc.lh" // clickable
+#include "fidel_dsc.lh" // clickable
+#include "fidel_sc8.lh" // clickable
+#include "fidel_vcc.lh" // clickable
+#include "fidel_vbrc.lh"
+#include "fidel_vsc.lh" // clickable
+
+
+class fidelz80_state : public fidelbase_state
+{
+public:
+ fidelz80_state(const machine_config &mconfig, device_type type, const char *tag)
+ : fidelbase_state(mconfig, type, tag),
+ m_mcu(*this, "mcu"),
+ m_z80pio(*this, "z80pio"),
+ m_ppi8255(*this, "ppi8255"),
+ m_i8243(*this, "i8243"),
+ m_beeper_off(*this, "beeper_off"),
+ m_beeper(*this, "beeper"),
+ m_irq_on(*this, "irq_on")
+ { }
+
+ void cc10(machine_config &config);
+ void vcc(machine_config &config);
+
+ void bcc(machine_config &config);
+
+ void scc(machine_config &config);
+
+ void vsc(machine_config &config);
+
+ void vbrc(machine_config &config);
+
+ void dsc(machine_config &config);
+
+ DECLARE_INPUT_CHANGED_MEMBER(reset_button);
+
+private:
+ // devices/pointers
+ optional_device<i8041_device> m_mcu;
+ optional_device<z80pio_device> m_z80pio;
+ optional_device<i8255_device> m_ppi8255;
+ optional_device<i8243_device> m_i8243;
+ optional_device<timer_device> m_beeper_off;
+ optional_device<beep_device> m_beeper;
+ optional_device<timer_device> m_irq_on;
+
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE); }
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); }
+
+ // CC10 and VCC/UVC
+ void vcc_prepare_display();
+ DECLARE_READ8_MEMBER(vcc_speech_r);
+ DECLARE_WRITE8_MEMBER(vcc_ppi_porta_w);
+ DECLARE_READ8_MEMBER(vcc_ppi_portb_r);
+ DECLARE_WRITE8_MEMBER(vcc_ppi_portb_w);
+ DECLARE_READ8_MEMBER(vcc_ppi_portc_r);
+ DECLARE_WRITE8_MEMBER(vcc_ppi_portc_w);
+ DECLARE_WRITE8_MEMBER(cc10_ppi_porta_w);
+ TIMER_DEVICE_CALLBACK_MEMBER(beeper_off_callback);
+ DECLARE_MACHINE_START(vcc);
+ void cc10_map(address_map &map);
+ void vcc_io(address_map &map);
+ void vcc_map(address_map &map);
+
+ // BCC
+ DECLARE_READ8_MEMBER(bcc_input_r);
+ DECLARE_WRITE8_MEMBER(bcc_control_w);
+ void bcc_io(address_map &map);
+ void bcc_map(address_map &map);
+
+ // SCC
+ DECLARE_READ8_MEMBER(scc_input_r);
+ DECLARE_WRITE8_MEMBER(scc_control_w);
+ void scc_io(address_map &map);
+ void scc_map(address_map &map);
+
+ // VSC
+ void vsc_prepare_display();
+ DECLARE_READ8_MEMBER(vsc_io_trampoline_r);
+ DECLARE_WRITE8_MEMBER(vsc_io_trampoline_w);
+ DECLARE_WRITE8_MEMBER(vsc_ppi_porta_w);
+ DECLARE_WRITE8_MEMBER(vsc_ppi_portb_w);
+ DECLARE_WRITE8_MEMBER(vsc_ppi_portc_w);
+ DECLARE_READ8_MEMBER(vsc_pio_porta_r);
+ DECLARE_READ8_MEMBER(vsc_pio_portb_r);
+ DECLARE_WRITE8_MEMBER(vsc_pio_portb_w);
+ void vsc_io(address_map &map);
+ void vsc_map(address_map &map);
+
+ // VBRC
+ void vbrc_prepare_display();
+ DECLARE_WRITE8_MEMBER(vbrc_speech_w);
+ DECLARE_WRITE8_MEMBER(vbrc_mcu_p1_w);
+ DECLARE_READ_LINE_MEMBER(vbrc_mcu_t0_r);
+ DECLARE_READ_LINE_MEMBER(vbrc_mcu_t1_r);
+ DECLARE_READ8_MEMBER(vbrc_mcu_p2_r);
+ template<int P> void vbrc_ioexp_port_w(uint8_t data);
+ void vbrc_main_io(address_map &map);
+ void vbrc_main_map(address_map &map);
+
+ // DSC
+ void dsc_prepare_display();
+ DECLARE_WRITE8_MEMBER(dsc_control_w);
+ DECLARE_WRITE8_MEMBER(dsc_select_w);
+ DECLARE_READ8_MEMBER(dsc_input_r);
+ void dsc_map(address_map &map);
+};
+
+
+// machine start/reset
+
+void fidelbase_state::machine_start()
+{
+ // resolve handlers
+ m_out_x.resolve();
+ m_out_a.resolve();
+ m_out_digit.resolve();
+
+ // zerofill
+ memset(m_display_state, 0, sizeof(m_display_state));
+ memset(m_display_decay, 0, sizeof(m_display_decay));
+ memset(m_display_segmask, 0, sizeof(m_display_segmask));
+
+ m_inp_mux = 0;
+ m_led_select = 0;
+ m_led_data = 0;
+ m_7seg_data = 0;
+ m_speech_data = 0;
+ m_speech_bank = 0;
+
+ // register for savestates
+ save_item(NAME(m_display_maxy));
+ save_item(NAME(m_display_maxx));
+ save_item(NAME(m_display_wait));
+
+ save_item(NAME(m_display_state));
+ save_item(NAME(m_display_decay));
+ save_item(NAME(m_display_segmask));
+
+ save_item(NAME(m_inp_mux));
+ save_item(NAME(m_led_select));
+ save_item(NAME(m_led_data));
+ save_item(NAME(m_7seg_data));
+ save_item(NAME(m_speech_data));
+ save_item(NAME(m_speech_bank));
+}
+
+void fidelbase_state::machine_reset()
+{
+}
+
+
+
+/***************************************************************************
+
+ Helper Functions
+
+***************************************************************************/
+
+// The device may strobe the outputs very fast, it is unnoticeable to the user.
+// To prevent flickering here, we need to simulate a decay.
+
+void fidelbase_state::display_update()
+{
+ for (int y = 0; y < m_display_maxy; y++)
+ {
+ u32 active_state = 0;
+
+ for (int x = 0; x <= m_display_maxx; x++)
+ {
+ // turn on powered segments
+ if (m_display_state[y] >> x & 1)
+ m_display_decay[y][x] = m_display_wait;
+
+ // determine active state
+ u32 ds = (m_display_decay[y][x] != 0) ? 1 : 0;
+ active_state |= (ds << x);
+
+ // output to y.x, or y.a when always-on
+ if (x != m_display_maxx)
+ m_out_x[y][x] = ds;
+ else
+ m_out_a[y] = ds;
+ }
+
+ // output to digity
+ if (m_display_segmask[y] != 0)
+ m_out_digit[y] = active_state & m_display_segmask[y];
+ }
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(fidelbase_state::display_decay_tick)
+{
+ // slowly turn off unpowered segments
+ for (int y = 0; y < m_display_maxy; y++)
+ for (int x = 0; x <= m_display_maxx; x++)
+ if (m_display_decay[y][x] != 0)
+ m_display_decay[y][x]--;
+
+ display_update();
+}
+
+void fidelbase_state::set_display_size(int maxx, int maxy)
+{
+ m_display_maxx = maxx;
+ m_display_maxy = maxy;
+}
+
+void fidelbase_state::set_display_segmask(u32 digits, u32 mask)
+{
+ // set a segment mask per selected digit, but leave unselected ones alone
+ for (int i = 0; i < 0x20; i++)
+ {
+ if (digits & 1)
+ m_display_segmask[i] = mask;
+ digits >>= 1;
+ }
+}
+
+void fidelbase_state::display_matrix(int maxx, int maxy, u32 setx, u32 sety, bool update)
+{
+ set_display_size(maxx, maxy);
+
+ // update current state
+ u32 mask = (1 << maxx) - 1;
+ for (int y = 0; y < maxy; y++)
+ m_display_state[y] = (sety >> y & 1) ? ((setx & mask) | (1 << maxx)) : 0;
+
+ if (update)
+ display_update();
+}
+
+
+// generic input handlers
+
+u16 fidelbase_state::read_inputs(int columns)
+{
+ u16 ret = 0;
+
+ // read selected input rows
+ for (int i = 0; i < columns; i++)
+ if (m_inp_mux >> i & 1)
+ ret |= m_inp_matrix[i]->read();
+
+ return ret;
+}
+
+INPUT_CHANGED_MEMBER(fidelz80_state::reset_button)
+{
+ // when RE button is directly wired to RESET pin(s)
+ m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
+
+ if (m_mcu)
+ m_mcu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
+}
+
+
+// cartridge
+
+DEVICE_IMAGE_LOAD_MEMBER(fidelbase_state, scc_cartridge)
+{
+ u32 size = m_cart->common_get_size("rom");
+
+ // max size is 16KB?
+ if (size > 0x4000)
+ {
+ image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid file size");
+ return image_init_result::FAIL;
+ }
+
+ m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
+ m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
+
+ return image_init_result::PASS;
+}
+
+READ8_MEMBER(fidelbase_state::cartridge_r)
+{
+ if (m_cart->exists())
+ return m_cart->read_rom(space, offset);
+ else
+ return 0;
+}
+
+
+
+// Devices, I/O
+
+/******************************************************************************
+ CC10 and VCC/UVC
+******************************************************************************/
+
+// misc handlers
+
+void fidelz80_state::vcc_prepare_display()
+{
+ // 4 7seg leds (note: sel d0 for extra leds)
+ u8 outdata = (m_7seg_data & 0x7f) | (m_led_select << 7 & 0x80);
+ set_display_segmask(0xf, 0x7f);
+ display_matrix(8, 4, outdata, m_led_select >> 2 & 0xf);
+}
+
+READ8_MEMBER(fidelz80_state::vcc_speech_r)
+{
+ return m_speech_rom[m_speech_bank << 12 | offset];
+}
+
+MACHINE_START_MEMBER(fidelz80_state,vcc)
+{
+ machine_start();
+
+ // game relies on RAM initialized filled with 1
+ for (int i = 0; i < 0x400; i++)
+ m_maincpu->space(AS_PROGRAM).write_byte(i + 0x4000, 0xff);
+}
+
+
+// I8255 PPI
+
+WRITE8_MEMBER(fidelz80_state::vcc_ppi_porta_w)
+{
+ // d0-d6: digit segment data, bits are xABCDEFG
+ m_7seg_data = bitswap<8>(data,7,0,1,2,3,4,5,6);
+ vcc_prepare_display();
+
+ // d0-d5: TSI C0-C5
+ // d7: TSI START line
+ m_speech->data_w(space, 0, data & 0x3f);
+ m_speech->start_w(data >> 7 & 1);
+
+ // d6: language latch data
+ // d7: language latch clock (latch on high)
+ if (data & 0x80)
+ {
+ m_speech->force_update(); // update stream to now
+ m_speech_bank = data >> 6 & 1;
+ }
+}
+
+READ8_MEMBER(fidelz80_state::vcc_ppi_portb_r)
+{
+ // d7: TSI BUSY line
+ return (m_speech->busy_r()) ? 0x80 : 0x00;
+}
+
+WRITE8_MEMBER(fidelz80_state::vcc_ppi_portb_w)
+{
+ // d0,d2-d5: digit/led select
+ // _d6: enable language switches
+ m_led_select = data;
+ vcc_prepare_display();
+}
+
+READ8_MEMBER(fidelz80_state::vcc_ppi_portc_r)
+{
+ // d0-d3: multiplexed inputs (active low), also language switches
+ u8 lan = (~m_led_select & 0x40) ? m_inp_matrix[4]->read() : 0;
+ return ~(lan | read_inputs(4)) & 0xf;
+}
+
+WRITE8_MEMBER(fidelz80_state::vcc_ppi_portc_w)
+{
+ // d4-d7: input mux (inverted)
+ m_inp_mux = ~data >> 4 & 0xf;
+}
+
+
+// CC10-specific (no speech chip, 1-bit beeper instead)
+
+TIMER_DEVICE_CALLBACK_MEMBER(fidelz80_state::beeper_off_callback)
+{
+ m_beeper->set_state(0);
+}
+
+WRITE8_MEMBER(fidelz80_state::cc10_ppi_porta_w)
+{
+ // d7: enable beeper on falling edge
+ if (m_beeper && ~data & m_7seg_data & 0x80)
+ {
+ m_beeper->set_state(1);
+ m_beeper_off->adjust(attotime::from_msec(80)); // duration is approximate
+ }
+
+ // d0-d6: digit segment data (same as VCC)
+ m_7seg_data = bitswap<8>(data,7,0,1,2,3,4,5,6);
+ vcc_prepare_display();
+}
+
+
+
+/******************************************************************************
+ BCC
+******************************************************************************/
+
+// TTL
+
+WRITE8_MEMBER(fidelz80_state::bcc_control_w)
+{
+ // a0-a2,d7: digit segment data via NE591, Q7 is speaker out
+ u8 mask = 1 << (offset & 7);
+ m_7seg_data = (m_7seg_data & ~mask) | ((data & 0x80) ? mask : 0);
+ m_dac->write(BIT(m_7seg_data, 7));
+
+ // d0-d3: led select, input mux
+ // d4,d5: check,lose leds(direct)
+ set_display_segmask(0xf, 0x7f);
+ display_matrix(7, 6, m_7seg_data & 0x7f, data & 0x3f);
+ m_inp_mux = data & 0xf;
+}
+
+READ8_MEMBER(fidelz80_state::bcc_input_r)
+{
+ // d0-d3: multiplexed inputs
+ return read_inputs(4);
+}
+
+
+
+/******************************************************************************
+ SCC
+******************************************************************************/
+
+// TTL
+
+WRITE8_MEMBER(fidelz80_state::scc_control_w)
+{
+ // a0-a2,d7: led data
+ u8 mask = 1 << (offset & 7);
+ m_led_data = (m_led_data & ~mask) | ((data & 0x80) ? mask : 0);
+
+ // d0-d3: led select, input mux (row 9 is speaker out)
+ // d4: corner led(direct)
+ m_inp_mux = 1 << (data & 0xf);
+ m_dac->write(BIT(m_inp_mux, 9));
+ display_matrix(8, 9, m_led_data, (m_inp_mux & 0xff) | (data << 4 & 0x100));
+}
+
+READ8_MEMBER(fidelz80_state::scc_input_r)
+{
+ // d0-d7: multiplexed inputs (active low)
+ return ~read_inputs(9);
+}
+
+
+
+/******************************************************************************
+ VSC
+******************************************************************************/
+
+// misc handlers
+
+void fidelz80_state::vsc_prepare_display()
+{
+ // 4 7seg leds+H, 8*8 chessboard leds
+ set_display_segmask(0xf, 0x7f);
+ display_matrix(16, 8, m_led_data << 8 | m_7seg_data, m_led_select);
+}
+
+
+// I8255 PPI
+
+WRITE8_MEMBER(fidelz80_state::vsc_ppi_porta_w)
+{
+ // d0-d5: TSI C0-C5
+ m_speech->data_w(space, 0, data & 0x3f);
+
+ // d0-d7: data for the 4 7seg leds, bits are HGCBAFED (H is extra led)
+ m_7seg_data = bitswap<8>(data,7,6,2,1,0,5,4,3);
+ vsc_prepare_display();
+}
+
+WRITE8_MEMBER(fidelz80_state::vsc_ppi_portb_w)
+{
+ // d0-d7: led row data
+ m_led_data = data;
+ vsc_prepare_display();
+}
+
+WRITE8_MEMBER(fidelz80_state::vsc_ppi_portc_w)
+{
+ // d0-d3: select digits
+ // d0-d7: select leds, input mux low bits
+ m_inp_mux = (m_inp_mux & ~0xff) | data;
+ m_led_select = data;
+ vsc_prepare_display();
+}
+
+
+// Z80 PIO
+
+READ8_MEMBER(fidelz80_state::vsc_pio_porta_r)
+{
+ // d0-d7: multiplexed inputs
+ return read_inputs(11);
+}
+
+READ8_MEMBER(fidelz80_state::vsc_pio_portb_r)
+{
+ u8 data = 0;
+
+ // d4: TSI BUSY line
+ data |= (m_speech->busy_r()) ? 0 : 0x10;
+
+ return data;
+}
+
+WRITE8_MEMBER(fidelz80_state::vsc_pio_portb_w)
+{
+ // d0,d1: input mux highest bits
+ // d5: enable language switch
+ m_inp_mux = (m_inp_mux & 0xff) | (data << 8 & 0x300) | (data << 5 & 0x400);
+
+ // d7: TSI ROM A12
+ m_speech->force_update(); // update stream to now
+ m_speech_bank = data >> 7 & 1;
+
+ // d6: TSI START line
+ m_speech->start_w(data >> 6 & 1);
+
+ // d2: lower TSI volume
+ m_speech->set_output_gain(0, (data & 4) ? 0.5 : 1.0);
+}
+
+
+
+/******************************************************************************
+ VBRC
+******************************************************************************/
+
+// misc handlers
+
+void fidelz80_state::vbrc_prepare_display()
+{
+ // 14seg led segments, d15 is extra led, d14 is unused (tone on prototype?)
+ u16 outdata = bitswap<16>(m_7seg_data,12,13,1,6,5,2,0,7,15,11,10,14,4,3,9,8);
+ set_display_segmask(0xff, 0x3fff);
+ display_matrix(16, 8, outdata, m_led_select);
+}
+
+WRITE8_MEMBER(fidelz80_state::vbrc_speech_w)
+{
+ m_speech->data_w(space, 0, data & 0x3f);
+ m_speech->start_w(1);
+ m_speech->start_w(0);
+}
+
+
+// I8243 I/O expander
+
+template<int P>
+void fidelz80_state::vbrc_ioexp_port_w(uint8_t data)
+{
+ // P4-P7: digit segment data
+ m_7seg_data = (m_7seg_data & ~(0xf << (4*P))) | ((data & 0xf) << (4*P));
+ vbrc_prepare_display();
+}
+
+
+// I8041 MCU
+
+WRITE8_MEMBER(fidelz80_state::vbrc_mcu_p1_w)
+{
+ // P10-P17: select digits, input mux
+ m_inp_mux = m_led_select = data;
+ vbrc_prepare_display();
+}
+
+READ8_MEMBER(fidelz80_state::vbrc_mcu_p2_r)
+{
+ // P20-P23: I8243 P2
+ // P24-P27: multiplexed inputs (active low)
+ return (m_i8243->p2_r() & 0x0f) | (read_inputs(8) << 4 ^ 0xf0);
+}
+
+READ_LINE_MEMBER(fidelz80_state::vbrc_mcu_t0_r)
+{
+ // T0: card scanner?
+ return 0;
+}
+
+READ_LINE_MEMBER(fidelz80_state::vbrc_mcu_t1_r)
+{
+ // T1: ? (locks up on const 0 or 1)
+ return machine().rand() & 1;
+}
+
+
+
+/******************************************************************************
+ DSC
+******************************************************************************/
+
+// TTL
+
+void fidelz80_state::dsc_prepare_display()
+{
+ // 4 7seg leds
+ set_display_segmask(0xf, 0x7f);
+ display_matrix(8, 4, m_7seg_data, m_led_select);
+}
+
+WRITE8_MEMBER(fidelz80_state::dsc_control_w)
+{
+ // d0-d7: input mux, 7seg data
+ m_inp_mux = ~data;
+ m_7seg_data = data;
+ dsc_prepare_display();
+}
+
+WRITE8_MEMBER(fidelz80_state::dsc_select_w)
+{
+ // d4: speaker out
+ m_dac->write(BIT(~data, 4));
+
+ // d0-d3: digit select
+ m_led_select = data & 0xf;
+ dsc_prepare_display();
+}
+
+READ8_MEMBER(fidelz80_state::dsc_input_r)
+{
+ // d0-d7: multiplexed inputs (active low)
+ return ~read_inputs(8);
+}
+
+
+
+/******************************************************************************
+ Address Maps
+******************************************************************************/
+
+// CC10 and VCC/UVC
+
+void fidelz80_state::cc10_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x3fff);
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x10ff).mirror(0x0f00).ram();
+ map(0x3000, 0x30ff).mirror(0x0f00).ram();
+}
+
+void fidelz80_state::vcc_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x2fff).rom();
+ map(0x4000, 0x43ff).mirror(0x1c00).ram();
+}
+
+void fidelz80_state::vcc_io(address_map &map)
+{
+ map.global_mask(0x03);
+ map(0x00, 0x03).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+
+// BCC
+
+void fidelz80_state::bcc_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x3fff);
+ map(0x0000, 0x0fff).rom();
+ map(0x3000, 0x30ff).mirror(0x0f00).ram();
+}
+
+void fidelz80_state::bcc_io(address_map &map)
+{
+ map.global_mask(0x07);
+ map(0x00, 0x07).rw(FUNC(fidelz80_state::bcc_input_r), FUNC(fidelz80_state::bcc_control_w));
+}
+
+
+// SCC
+
+void fidelz80_state::scc_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x5000, 0x50ff).ram();
+}
+
+void fidelz80_state::scc_io(address_map &map)
+{
+ map.global_mask(0x07);
+ map(0x00, 0x07).rw(FUNC(fidelz80_state::scc_input_r), FUNC(fidelz80_state::scc_control_w));
+}
+
+
+// VSC
+
+void fidelz80_state::vsc_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4fff).mirror(0x1000).rom();
+ map(0x6000, 0x63ff).mirror(0x1c00).ram();
+}
+
+// VSC io: A2 is 8255 _CE, A3 is Z80 PIO _CE - in theory, both chips can be accessed simultaneously
+READ8_MEMBER(fidelz80_state::vsc_io_trampoline_r)
+{
+ u8 data = 0xff; // open bus
+ if (~offset & 4)
+ data &= m_ppi8255->read(offset & 3);
+ if (~offset & 8)
+ data &= m_z80pio->read(space, offset & 3);
+
+ return data;
+}
+
+WRITE8_MEMBER(fidelz80_state::vsc_io_trampoline_w)
+{
+ if (~offset & 4)
+ m_ppi8255->write(offset & 3, data);
+ if (~offset & 8)
+ m_z80pio->write(space, offset & 3, data);
+}
+
+void fidelz80_state::vsc_io(address_map &map)
+{
+ map.global_mask(0x0f);
+ map(0x00, 0x0f).rw(FUNC(fidelz80_state::vsc_io_trampoline_r), FUNC(fidelz80_state::vsc_io_trampoline_w));
+}
+
+
+// VBRC
+
+void fidelz80_state::vbrc_main_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x63ff).mirror(0x1c00).ram();
+ map(0xe000, 0xe000).mirror(0x1fff).w(FUNC(fidelz80_state::vbrc_speech_w));
+}
+
+void fidelz80_state::vbrc_main_io(address_map &map)
+{
+ map.global_mask(0x01);
+ map(0x00, 0x01).rw(m_mcu, FUNC(i8041_device::upi41_master_r), FUNC(i8041_device::upi41_master_w));
+}
+
+
+// DSC
+
+void fidelz80_state::dsc_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x4000).mirror(0x1fff).w(FUNC(fidelz80_state::dsc_control_w));
+ map(0x6000, 0x6000).mirror(0x1fff).w(FUNC(fidelz80_state::dsc_select_w));
+ map(0x8000, 0x8000).mirror(0x1fff).r(FUNC(fidelz80_state::dsc_input_r));
+ map(0xa000, 0xa3ff).mirror(0x1c00).ram();
+}
+
+
+
+/******************************************************************************
+ Input Ports
+******************************************************************************/
+
+// static or boardless games
+
+static INPUT_PORTS_START( vcc_base )
+ PORT_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_A)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_E)
+
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Speaker") PORT_CODE(KEYCODE_SPACE)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F)
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_P)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G)
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_V)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H)
+
+ PORT_START("RESET") // is not on matrix IN.0 d0
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, fidelz80_state, reset_button, nullptr)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( cc10 )
+ PORT_INCLUDE( vcc_base )
+
+ PORT_START("IN.4")
+ PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED)
+
+ PORT_START("LEVEL") // hardwired (VCC/GND?)
+ PORT_CONFNAME( 0x80, 0x00, "Maximum Levels" )
+ PORT_CONFSETTING( 0x00, "10" ) // factory setting
+ PORT_CONFSETTING( 0x80, "3" )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( vcc )
+ PORT_INCLUDE( vcc_base )
+
+ PORT_START("IN.4") // language setting, hardwired with 4 jumpers (0: English, 1: German, 2: French, 4: Spanish, 8:Special(unused))
+ PORT_BIT(0x0f, 0x00, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( vccsp )
+ PORT_INCLUDE( vcc )
+
+ PORT_MODIFY("IN.4") // set to Spanish
+ PORT_BIT(0x0f, 0x04, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( vccg )
+ PORT_INCLUDE( vcc )
+
+ PORT_MODIFY("IN.4") // set to German
+ PORT_BIT(0x0f, 0x01, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( vccfr )
+ PORT_INCLUDE( vcc )
+
+ PORT_MODIFY("IN.4") // set to French
+ PORT_BIT(0x0f, 0x02, IPT_CUSTOM)
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( bcc )
+ PORT_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_V)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H)
+
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_P)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G)
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CB") PORT_CODE(KEYCODE_SPACE)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F)
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_A)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_E)
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( vbrc )
+ PORT_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("A")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_NAME("10")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_NAME("6")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("2")
+
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_K) PORT_NAME("K")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_NAME("9")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("5")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("1")
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Q")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("8")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("4")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Z) PORT_NAME("P")
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_J) PORT_NAME("J")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_NAME("7")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_NAME("NT")
+
+ PORT_START("IN.4")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("EN")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("SC")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_X) PORT_NAME("PL")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Spades")
+
+ PORT_START("IN.5")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("CL")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_NAME("DB")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("VL")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Hearts")
+
+ PORT_START("IN.6")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Speaker")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_NAME("PB")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("CV")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Diamonds")
+
+ PORT_START("IN.7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("BR")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("DL")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Clubs")
+
+ PORT_START("RESET") // is not on matrix IN.7 d0
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, fidelz80_state, reset_button, nullptr) PORT_NAME("RE")
+INPUT_PORTS_END
+
+
+// sensory board games
+
+INPUT_PORTS_START( fidel_cb_buttons )
+ PORT_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.4")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.5")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.6")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+INPUT_PORTS_END
+
+INPUT_PORTS_START( fidel_cb_magnets )
+ PORT_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.4")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.5")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.6")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( scc )
+ PORT_INCLUDE( fidel_cb_buttons )
+
+ PORT_START("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Pawn")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Rook")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Knight")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Bishop")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Queen")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("King")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("RE")
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( vsc )
+ PORT_INCLUDE( scc )
+
+ PORT_START("IN.9")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("TM")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("RV")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Speaker")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("LV")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("DM")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("ST")
+ PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
+
+ PORT_START("IN.10") // language setting, hardwired with 2 diodes (0: English, 1: German, 2: French, 3: Spanish)
+ PORT_BIT(0x03, 0x00, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( vscsp )
+ PORT_INCLUDE( vsc )
+
+ PORT_MODIFY("IN.10") // set to Spanish
+ PORT_BIT(0x03, 0x03, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( vscg )
+ PORT_INCLUDE( vsc )
+
+ PORT_MODIFY("IN.10") // set to German
+ PORT_BIT(0x03, 0x01, IPT_CUSTOM)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( vscfr )
+ PORT_INCLUDE( vsc )
+
+ PORT_MODIFY("IN.10") // set to French
+ PORT_BIT(0x03, 0x02, IPT_CUSTOM)
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( dsc )
+ PORT_INCLUDE( fidel_cb_buttons )
+
+ PORT_MODIFY("IN.4")
+ PORT_BIT(0x8f, IP_ACTIVE_HIGH, IPT_UNUSED)
+
+ PORT_MODIFY("IN.6")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Black King")
+
+ PORT_MODIFY("IN.7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Black")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("White King")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("White")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("RV")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("RE")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("PB")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("LV")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("CL")
+INPUT_PORTS_END
+
+
+
+/******************************************************************************
+ Machine Drivers
+******************************************************************************/
+
+void fidelz80_state::bcc(machine_config &config)
+{
+ /* basic machine hardware */
+ Z80(config, m_maincpu, 3.579545_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::bcc_map);
+ m_maincpu->set_addrmap(AS_IO, &fidelz80_state::bcc_io);
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
+ config.set_default_layout(layout_fidel_bcc);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
+ vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+}
+
+void fidelz80_state::scc(machine_config &config)
+{
+ /* basic machine hardware */
+ Z80(config, m_maincpu, 3.9_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::scc_map);
+ m_maincpu->set_addrmap(AS_IO, &fidelz80_state::scc_io);
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
+ config.set_default_layout(layout_fidel_sc8);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
+ vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+}
+
+void fidelz80_state::cc10(machine_config &config)
+{
+ /* basic machine hardware */
+ Z80(config, m_maincpu, 4_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::cc10_map);
+ m_maincpu->set_addrmap(AS_IO, &fidelz80_state::vcc_io);
+
+ I8255(config, m_ppi8255);
+ m_ppi8255->out_pa_callback().set(FUNC(fidelz80_state::cc10_ppi_porta_w));
+ m_ppi8255->tri_pa_callback().set_constant(0);
+ m_ppi8255->in_pb_callback().set_ioport("LEVEL");
+ m_ppi8255->out_pb_callback().set(FUNC(fidelz80_state::vcc_ppi_portb_w));
+ m_ppi8255->in_pc_callback().set(FUNC(fidelz80_state::vcc_ppi_portc_r));
+ m_ppi8255->tri_pb_callback().set_constant(0);
+ m_ppi8255->out_pc_callback().set(FUNC(fidelz80_state::vcc_ppi_portc_w));
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
+ config.set_default_layout(layout_fidel_cc);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ BEEP(config, m_beeper, 1360); // approximation, from 556 timer ic
+ m_beeper->add_route(ALL_OUTPUTS, "speaker", 0.25);
+ TIMER(config, "beeper_off").configure_generic(FUNC(fidelz80_state::beeper_off_callback));
+}
+
+void fidelz80_state::vcc(machine_config &config)
+{
+ /* basic machine hardware */
+ Z80(config, m_maincpu, 4_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::vcc_map);
+ m_maincpu->set_addrmap(AS_IO, &fidelz80_state::vcc_io);
+
+ I8255(config, m_ppi8255);
+ m_ppi8255->out_pa_callback().set(FUNC(fidelz80_state::vcc_ppi_porta_w));
+ m_ppi8255->tri_pa_callback().set_constant(0);
+ m_ppi8255->in_pb_callback().set(FUNC(fidelz80_state::vcc_ppi_portb_r));
+ m_ppi8255->out_pb_callback().set(FUNC(fidelz80_state::vcc_ppi_portb_w));
+ m_ppi8255->tri_pb_callback().set_constant(0);
+ m_ppi8255->in_pc_callback().set(FUNC(fidelz80_state::vcc_ppi_portc_r));
+ m_ppi8255->out_pc_callback().set(FUNC(fidelz80_state::vcc_ppi_portc_w));
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
+ config.set_default_layout(layout_fidel_vcc);
+
+ MCFG_MACHINE_START_OVERRIDE(fidelz80_state,vcc)
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
+ m_speech->ext_read().set(FUNC(fidelz80_state::vcc_speech_r));
+ m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
+}
+
+void fidelz80_state::vsc(machine_config &config)
+{
+ /* basic machine hardware */
+ Z80(config, m_maincpu, 3.9_MHz_XTAL); // 3.9MHz resonator
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::vsc_map);
+ m_maincpu->set_addrmap(AS_IO, &fidelz80_state::vsc_io);
+ m_maincpu->set_periodic_int(FUNC(fidelz80_state::nmi_line_pulse), attotime::from_hz(587)); // 555 timer, measured
+
+ I8255(config, m_ppi8255);
+ m_ppi8255->out_pa_callback().set(FUNC(fidelz80_state::vsc_ppi_porta_w));
+ m_ppi8255->out_pb_callback().set(FUNC(fidelz80_state::vsc_ppi_portb_w));
+ m_ppi8255->out_pc_callback().set(FUNC(fidelz80_state::vsc_ppi_portc_w));
+
+ Z80PIO(config, m_z80pio, 3.9_MHz_XTAL);
+ m_z80pio->in_pa_callback().set(FUNC(fidelz80_state::vsc_pio_porta_r));
+ m_z80pio->in_pb_callback().set(FUNC(fidelz80_state::vsc_pio_portb_r));
+ m_z80pio->out_pb_callback().set(FUNC(fidelz80_state::vsc_pio_portb_w));
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
+ config.set_default_layout(layout_fidel_vsc);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
+ m_speech->ext_read().set(FUNC(fidelz80_state::vcc_speech_r));
+ m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
+}
+
+void fidelz80_state::vbrc(machine_config &config)
+{
+ /* basic machine hardware */
+ Z80(config, m_maincpu, 5_MHz_XTAL/2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::vbrc_main_map);
+ m_maincpu->set_addrmap(AS_IO, &fidelz80_state::vbrc_main_io);
+ config.m_perfect_cpu_quantum = subtag("maincpu");
+
+ I8041(config, m_mcu, 5_MHz_XTAL);
+ m_mcu->p1_out_cb().set(FUNC(fidelz80_state::vbrc_mcu_p1_w));
+ m_mcu->p2_in_cb().set(FUNC(fidelz80_state::vbrc_mcu_p2_r));
+ m_mcu->p2_out_cb().set(m_i8243, FUNC(i8243_device::p2_w));
+ m_mcu->prog_out_cb().set(m_i8243, FUNC(i8243_device::prog_w));
+ m_mcu->t0_in_cb().set(FUNC(fidelz80_state::vbrc_mcu_t0_r));
+ m_mcu->t1_in_cb().set(FUNC(fidelz80_state::vbrc_mcu_t1_r));
+
+ I8243(config, m_i8243);
+ m_i8243->p4_out_cb().set(FUNC(fidelz80_state::vbrc_ioexp_port_w<0>));
+ m_i8243->p5_out_cb().set(FUNC(fidelz80_state::vbrc_ioexp_port_w<1>));
+ m_i8243->p6_out_cb().set(FUNC(fidelz80_state::vbrc_ioexp_port_w<2>));
+ m_i8243->p7_out_cb().set(FUNC(fidelz80_state::vbrc_ioexp_port_w<3>));
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
+ config.set_default_layout(layout_fidel_vbrc);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
+ m_speech->bsy().set_inputline("maincpu", Z80_INPUT_LINE_WAIT);
+ m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
+}
+
+void fidelz80_state::dsc(machine_config &config)
+{
+ /* basic machine hardware */
+ Z80(config, m_maincpu, 3.9_MHz_XTAL); // 3.9MHz resonator
+ m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::dsc_map);
+ TIMER(config, m_irq_on).configure_periodic(FUNC(fidelz80_state::irq_on), attotime::from_hz(523)); // from 555 timer (22nF, 120K, 2.7K)
+ m_irq_on->set_start_delay(attotime::from_hz(523) - attotime::from_usec(41)); // active for 41us
+ TIMER(config, "irq_off").configure_periodic(FUNC(fidelz80_state::irq_off), attotime::from_hz(523));
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
+ config.set_default_layout(layout_fidel_dsc);
+
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
+ vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+}
+
+
+
+/******************************************************************************
+ ROM Definitions
+******************************************************************************/
+
+ROM_START( cc10 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "cc10b", 0x0000, 0x1000, CRC(afd3ca99) SHA1(870d09b2b52ccb8572d69642c59b5215d5fb26ab) ) // 2332
+ROM_END
+
+
+ROM_START( cc7 ) // model BCC
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "cn19103n_bcc-revb", 0x0000, 0x1000, CRC(a397d471) SHA1(9b12bc442fccee40f4d8500c792bc9d886c5e1a5) ) // 2332
+ROM_END
+
+
+ROM_START( fscc8 ) // model SCC, PCB label 510-1011 REV.2
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "101-32017", 0x0000, 0x1000, CRC(5340820d) SHA1(e3494c7624b3cacbbb9a0a8cc9e1ed3e00326dfd) ) // 2732
+ROM_END
+
+
+ROM_START( vcc )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-32103.bin", 0x0000, 0x1000, CRC(257bb5ab) SHA1(f7589225bb8e5f3eac55f23e2bd526be780b38b5) ) // 32014.VCC??? at location b3?
+ ROM_LOAD("vcc2.bin", 0x1000, 0x1000, CRC(f33095e7) SHA1(692fcab1b88c910b74d04fe4d0660367aee3f4f0) ) // at location a2?
+ ROM_LOAD("vcc3.bin", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) ) // at location a1?
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) ) // at location c4?
+ ROM_RELOAD( 0x1000, 0x1000)
+ROM_END
+
+ROM_START( vccsp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-32103.bin", 0x0000, 0x1000, CRC(257bb5ab) SHA1(f7589225bb8e5f3eac55f23e2bd526be780b38b5) )
+ ROM_LOAD("vcc2.bin", 0x1000, 0x1000, CRC(f33095e7) SHA1(692fcab1b88c910b74d04fe4d0660367aee3f4f0) )
+ ROM_LOAD("vcc3.bin", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // dumped from Spanish VCC, is same as data in fexcelv
+ROM_END
+
+ROM_START( vccg )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-32103.bin", 0x0000, 0x1000, CRC(257bb5ab) SHA1(f7589225bb8e5f3eac55f23e2bd526be780b38b5) )
+ ROM_LOAD("vcc2.bin", 0x1000, 0x1000, CRC(f33095e7) SHA1(692fcab1b88c910b74d04fe4d0660367aee3f4f0) )
+ ROM_LOAD("vcc3.bin", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
+ROM_END
+
+ROM_START( vccfr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-32103.bin", 0x0000, 0x1000, CRC(257bb5ab) SHA1(f7589225bb8e5f3eac55f23e2bd526be780b38b5) )
+ ROM_LOAD("vcc2.bin", 0x1000, 0x1000, CRC(f33095e7) SHA1(692fcab1b88c910b74d04fe4d0660367aee3f4f0) )
+ ROM_LOAD("vcc3.bin", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64105", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
+ROM_END
+
+
+ROM_START( uvc )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64017.b3", 0x0000, 0x2000, CRC(f1133abf) SHA1(09dd85051c4e7d364d43507c1cfea5c2d08d37f4) ) // "MOS // 101-64017 // 3880"
+ ROM_LOAD("101-32010.a1", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) ) // "NEC P9Z021 // D2332C 228 // 101-32010", == vcc3.bin on vcc
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-32107.c4", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) ) // "NEC P9Y019 // D2332C 229 // 101-32107", == 101-32107 on vcc
+ ROM_RELOAD( 0x1000, 0x1000)
+ROM_END
+
+ROM_START( uvcsp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64017.b3", 0x0000, 0x2000, CRC(f1133abf) SHA1(09dd85051c4e7d364d43507c1cfea5c2d08d37f4) )
+ ROM_LOAD("101-32010.a1", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) )
+ROM_END
+
+ROM_START( uvcg )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64017.b3", 0x0000, 0x2000, CRC(f1133abf) SHA1(09dd85051c4e7d364d43507c1cfea5c2d08d37f4) )
+ ROM_LOAD("101-32010.a1", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
+ROM_END
+
+ROM_START( uvcfr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64017.b3", 0x0000, 0x2000, CRC(f1133abf) SHA1(09dd85051c4e7d364d43507c1cfea5c2d08d37f4) )
+ ROM_LOAD("101-32010.a1", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64105", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
+ROM_END
+
+
+ROM_START( vsc )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
+ ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-32107.bin", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) )
+ ROM_RELOAD( 0x1000, 0x1000)
+ROM_END
+
+ROM_START( vscsp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
+ ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64106", 0x0000, 0x2000, BAD_DUMP CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // taken from vcc/fexcelv, assume correct
+ROM_END
+
+ROM_START( vscg )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
+ ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64101", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
+ROM_END
+
+ROM_START( vscfr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
+ ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-64105", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
+ROM_END
+
+
+ROM_START( vbrc ) // AKA model 7002
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ // nec 2364 mask roms; pin 27 (PGM, probably NC here due to mask roms) goes to the pcb
+ ROM_LOAD("101-64108.g3", 0x0000, 0x2000, CRC(08472223) SHA1(859865b13c908dbb474333263dc60f6a32461141) )
+ ROM_LOAD("101-64109.f3", 0x2000, 0x2000, CRC(320afa0f) SHA1(90edfe0ac19b108d232cda376b03a3a24befad4c) )
+ ROM_LOAD("101-64110.e3", 0x4000, 0x2000, CRC(3040d0bd) SHA1(caa55fc8d9196e408fb41e7171a68e5099519813) )
+
+ ROM_REGION( 0x0400, "mcu", 0 )
+ ROM_LOAD("100-1009.a3", 0x0000, 0x0400, CRC(60eb343f) SHA1(8a63e95ebd62e123bdecc330c0484a47c354bd1a) )
+
+ ROM_REGION( 0x1000, "speech", 0 )
+ ROM_LOAD("101-32118.i2", 0x0000, 0x1000, CRC(a0b8bb8f) SHA1(f56852108928d5c6caccfc8166fa347d6760a740) )
+ROM_END
+
+ROM_START( bridgec3 ) // 510-1016 Rev.1 PCB has neither locations nor ic labels, so I declare the big heatsink is at C1, numbers count on the shorter length of pcb
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ // TMM2764AD-20 EPROMS with tiny hole-punch sized colored stickers (mostly) covering the quartz windows. pin 27 (PGM) is tied to vcc with small rework wires and does not connect to pcb.
+ ROM_LOAD("7014_white.g3", 0x0000, 0x2000, CRC(eb1620ef) SHA1(987a9abc8c685f1a68678ea4ee65ec4a99419179) ) // white sticker
+ ROM_LOAD("7014_red.f3", 0x2000, 0x2000, CRC(74af0019) SHA1(8dc05950c254ca050b95b93e5d0cf48f913a6d49) ) // red sticker
+ ROM_LOAD("7014_blue.e3", 0x4000, 0x2000, CRC(341d9ca6) SHA1(370876573bb9408e75f4fc797304b6c64af0590a) ) // blue sticker
+
+ ROM_REGION( 0x0400, "mcu", 0 )
+ ROM_LOAD("100-1009.a3", 0x0000, 0x0400, CRC(60eb343f) SHA1(8a63e95ebd62e123bdecc330c0484a47c354bd1a) ) // "NEC P07021-027 || D8041C 563 100-1009"
+
+ ROM_REGION( 0x1000, "speech", 0 )
+ ROM_LOAD("101-32118.i2", 0x0000, 0x1000, CRC(a0b8bb8f) SHA1(f56852108928d5c6caccfc8166fa347d6760a740) ) // "ea 101-32118 || (C) 1980 || EA 8332A247-4 || 8034"
+ROM_END
+
+
+ROM_START( damesc ) // model DSC, PCB label 510-1030A01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "101-1027a01", 0x0000, 0x2000, CRC(d86c985c) SHA1(20f923a24420050fd16e1172f5e889f144d17ac9) ) // MOS 2364
+ROM_END
+
+
+
+/******************************************************************************
+ Drivers
+******************************************************************************/
+
+// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY FULLNAME, FLAGS
+CONS( 1978, cc10, 0, 0, cc10, cc10, fidelz80_state, empty_init, "Fidelity Electronics", "Chess Challenger 10 (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1979, cc7, 0, 0, bcc, bcc, fidelz80_state, empty_init, "Fidelity Electronics", "Chess Challenger 7 (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+
+CONS( 1980, fscc8, 0, 0, scc, scc, fidelz80_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger 8", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1979, vcc, 0, 0, vcc, vcc, fidelz80_state, empty_init, "Fidelity Electronics", "Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1979, vccsp, vcc, 0, vcc, vccsp, fidelz80_state, empty_init, "Fidelity Electronics", "Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1979, vccg, vcc, 0, vcc, vccg, fidelz80_state, empty_init, "Fidelity Electronics", "Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1979, vccfr, vcc, 0, vcc, vccfr, fidelz80_state, empty_init, "Fidelity Electronics", "Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+
+CONS( 1980, uvc, vcc, 0, vcc, vcc, fidelz80_state, empty_init, "Fidelity Electronics", "Advanced Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1980, uvcsp, vcc, 0, vcc, vccsp, fidelz80_state, empty_init, "Fidelity Electronics", "Advanced Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1980, uvcg, vcc, 0, vcc, vccg, fidelz80_state, empty_init, "Fidelity Electronics", "Advanced Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1980, uvcfr, vcc, 0, vcc, vccfr, fidelz80_state, empty_init, "Fidelity Electronics", "Advanced Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+
+CONS( 1980, vsc, 0, 0, vsc, vsc, fidelz80_state, empty_init, "Fidelity Electronics", "Voice Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1980, vscsp, vsc, 0, vsc, vscsp, fidelz80_state, empty_init, "Fidelity Electronics", "Voice Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1980, vscg, vsc, 0, vsc, vscg, fidelz80_state, empty_init, "Fidelity Electronics", "Voice Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1980, vscfr, vsc, 0, vsc, vscfr, fidelz80_state, empty_init, "Fidelity Electronics", "Voice Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1979, vbrc, 0, 0, vbrc, vbrc, fidelz80_state, empty_init, "Fidelity Electronics", "Voice Bridge Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+CONS( 1980, bridgec3, vbrc, 0, vbrc, vbrc, fidelz80_state, empty_init, "Fidelity Electronics", "Bridge Challenger III", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+
+CONS( 1981, damesc, 0, 0, dsc, dsc, fidelz80_state, empty_init, "Fidelity Electronics", "Dame Sensory Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/finalizr.cpp b/src/mame/drivers/finalizr.cpp
index 1f4a85cc9e8..e4a2e9b6fbb 100644
--- a/src/mame/drivers/finalizr.cpp
+++ b/src/mame/drivers/finalizr.cpp
@@ -117,7 +117,7 @@ void finalizr_state::main_map(address_map &map)
map(0x0813, 0x0813).portr("DSW1");
map(0x0818, 0x0818).w("watchdog", FUNC(watchdog_timer_device::reset_w));
map(0x0819, 0x0819).w(FUNC(finalizr_state::finalizr_coin_w));
- map(0x081a, 0x081a).w("snsnd", FUNC(sn76489a_device::write)); /* This address triggers the SN chip to read the data port. */
+ map(0x081a, 0x081a).w("snsnd", FUNC(sn76489a_device::command_w)); /* This address triggers the SN chip to read the data port. */
map(0x081b, 0x081b).nopw(); /* Loads the snd command into the snd latch */
map(0x081c, 0x081c).w(FUNC(finalizr_state::finalizr_i8039_irq_w)); /* custom sound chip */
map(0x081d, 0x081d).w("soundlatch", FUNC(generic_latch_8_device::write)); /* custom sound chip */
@@ -195,7 +195,7 @@ static INPUT_PORTS_START( finalizr )
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
-static INPUT_PORTS_START( finalizra )
+static INPUT_PORTS_START( finalizrb )
PORT_INCLUDE( finalizr )
PORT_MODIFY("DSW2")
@@ -262,12 +262,12 @@ void finalizr_state::machine_reset()
m_irq_enable = 0;
}
-void finalizr_state::finalizr(machine_config &config)
-{
+MACHINE_CONFIG_START(finalizr_state::finalizr)
+
/* basic machine hardware */
- KONAMI1(config, m_maincpu, XTAL(18'432'000)/6); /* ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &finalizr_state::main_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(finalizr_state::finalizr_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", KONAMI1, XTAL(18'432'000)/6) /* ??? */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", finalizr_state, finalizr_scanline, "screen", 0, 1)
I8039(config, m_audiocpu, XTAL(18'432'000)/2); /* 9.216MHz clkin ?? */
m_audiocpu->set_addrmap(AS_PROGRAM, &finalizr_state::sound_map);
@@ -279,13 +279,13 @@ void finalizr_state::finalizr(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(36*8, 32*8);
- screen.set_visarea(1*8, 35*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(finalizr_state::screen_update_finalizr));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(36*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 35*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(finalizr_state, screen_update_finalizr)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_finalizr);
PALETTE(config, m_palette, FUNC(finalizr_state::finalizr_palette), 2*16*16, 32);
@@ -295,13 +295,13 @@ void finalizr_state::finalizr(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- SN76489A(config, "snsnd", XTAL(18'432'000)/12).add_route(ALL_OUTPUTS, "speaker", 0.75);
+ MCFG_DEVICE_ADD("snsnd", SN76489A, XTAL(18'432'000)/12)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75)
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.325); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.325) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
@@ -336,31 +336,6 @@ ROM_START( finalizr )
ROM_LOAD( "523h12.10f", 0x0140, 0x0100, CRC(53166a2a) SHA1(6cdde206036df7176679711f7888d72acee27c8f) ) /* sprites */
ROM_END
-ROM_START( finalizra )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "1.9c", 0x4000, 0x4000, CRC(7d464e5c) SHA1(45b1591a6be713dfc58ab657e61531ea2b9263c1) )
- ROM_LOAD( "2.12c", 0x8000, 0x4000, CRC(383dc94e) SHA1(f192e16e83ae34cc97af07072a4dc68e7c4c362c) )
- ROM_LOAD( "3.13c", 0xc000, 0x4000, CRC(ce177f6e) SHA1(034cbe0c1e2baf9577741b3c222a8b4a8ac8c919) )
-
- ROM_REGION( 0x1000, "audiocpu", 0 ) /* 8039 */
- ROM_LOAD( "d8749hd.bin", 0x0000, 0x0800, BAD_DUMP CRC(978dfc33) SHA1(13d24ce577b88bf6ec2e970d36dc67a7ec691c55) ) /* this comes from the bootleg, the original has a custom IC */
-
- ROM_REGION( 0x20000, "gfx1", 0 )
- ROM_LOAD16_BYTE( "523h04.5e", 0x00000, 0x4000, CRC(c056d710) SHA1(3fe0ab7ef3bce7298c2a073d0985c33f9dc40062) )
- ROM_LOAD16_BYTE( "523h07.5f", 0x00001, 0x4000, CRC(50e512ba) SHA1(f916afb9df1872f9de571d20b9045b20d9172eaa) )
- ROM_LOAD16_BYTE( "523h05.6e", 0x08000, 0x4000, CRC(ae0d0f76) SHA1(6dd0119e4ba7ebb32ba1ca6395f80d18f1617ce8) )
- ROM_LOAD16_BYTE( "523h08.6f", 0x08001, 0x4000, CRC(79f44e17) SHA1(cb32edc4df9f2209f13fc258fec4e67ee91badef) )
- ROM_LOAD16_BYTE( "523h06.7e", 0x10000, 0x4000, CRC(d2db9689) SHA1(ceb5913716b4da2ddff2e837ddaa04d91e52f9e1) )
- ROM_LOAD16_BYTE( "523h09.7f", 0x10001, 0x4000, CRC(8896dc85) SHA1(91493c6b69655de482f0c2a0cb3662fc0d1b6e45) )
- /* 18000-1ffff empty */
-
- ROM_REGION( 0x0240, "proms", 0 ) /* PROMs at 2F & 3F are MMI 63S081N (or compatibles), PROMs at 10F & 11F are MMI 6301-1N (or compatibles) */
- ROM_LOAD( "523h10.2f", 0x0000, 0x0020, CRC(ec15dd15) SHA1(710384b154a9363fdc88edffda252f1d60e000dc) ) /* palette */
- ROM_LOAD( "523h11.3f", 0x0020, 0x0020, CRC(54be2e83) SHA1(3200abc7f2238d62d7204ef57a6daa2df150538d) ) /* palette */
- ROM_LOAD( "523h13.11f", 0x0040, 0x0100, CRC(4e0647a0) SHA1(fb87f878456b8b76bb2c028cb890d2a5c1c3e388) ) /* characters */
- ROM_LOAD( "523h12.10f", 0x0140, 0x0100, CRC(53166a2a) SHA1(6cdde206036df7176679711f7888d72acee27c8f) ) /* sprites */
-ROM_END
-
ROM_START( finalizrb )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "finalizr.5", 0x4000, 0x8000, CRC(a55e3f14) SHA1(47f6da214b36cc56be547fa4313afcc5572508a2) )
@@ -387,6 +362,5 @@ ROM_END
-GAME( 1985, finalizr, 0, finalizr, finalizr, finalizr_state, empty_init, ROT90, "Konami", "Finalizer - Super Transformation (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
-GAME( 1985, finalizra, finalizr, finalizr, finalizra, finalizr_state, empty_init, ROT90, "Konami", "Finalizer - Super Transformation (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
-GAME( 1985, finalizrb, finalizr, finalizr, finalizra, finalizr_state, empty_init, ROT90, "bootleg", "Finalizer - Super Transformation (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, finalizr, 0, finalizr, finalizr, finalizr_state, empty_init, ROT90, "Konami", "Finalizer - Super Transformation", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, finalizrb, finalizr, finalizr, finalizrb, finalizr_state, empty_init, ROT90, "bootleg", "Finalizer - Super Transformation (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/fireball.cpp b/src/mame/drivers/fireball.cpp
index 3d897c55fdd..c95f1cfade6 100644
--- a/src/mame/drivers/fireball.cpp
+++ b/src/mame/drivers/fireball.cpp
@@ -250,21 +250,21 @@ WRITE8_MEMBER(fireball_state::io_06_w)
//address_w
if (LOG_AY8912)
logerror("write to 0x06 bc1=1\n");
- m_ay->address_w(to_ay_data);
+ m_ay->address_w(space,0,to_ay_data );
if (LOG_AY8912)
logerror("AY8912 address latch write=%02X\n",to_ay_data);
}else{
//data_w
if (LOG_AY8912)
logerror("write to 0x06 bc1=0\n");
- m_ay->data_w(to_ay_data);
+ m_ay->data_w(space,0,to_ay_data );
if (LOG_AY8912)
logerror("AY8912 data write=%02X\n",to_ay_data);
}
}else{
if (LOG_AY8912)
logerror("write to 0x06 bdir=0\n");
- ay_data=m_ay->data_r();
+ ay_data=m_ay->data_r(space,0);
}
m_p1_data=data;
@@ -492,8 +492,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( fireball_state::int_0 )
*************************/
-void fireball_state::fireball(machine_config &config)
-{
+MACHINE_CONFIG_START(fireball_state::fireball)
/* basic machine hardware */
I8031(config, m_maincpu, CPU_CLK); //
m_maincpu->set_addrmap(AS_PROGRAM, &fireball_state::fireball_map);
@@ -514,7 +513,7 @@ void fireball_state::fireball(machine_config &config)
/* Video */
config.set_default_layout(layout_fireball);
-}
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/firebeat.cpp b/src/mame/drivers/firebeat.cpp
index 2bb69eb3511..90b4a2aae13 100644
--- a/src/mame/drivers/firebeat.cpp
+++ b/src/mame/drivers/firebeat.cpp
@@ -1175,8 +1175,8 @@ static void firebeat_ata_devices(device_slot_interface &device)
device.option_add("cdrom", ATAPI_FIXED_CDROM);
}
-void firebeat_state::firebeat(machine_config &config)
-{
+MACHINE_CONFIG_START(firebeat_state::firebeat)
+
/* basic machine hardware */
PPC403GCX(config, m_maincpu, XTAL(64'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &firebeat_state::firebeat_map);
diff --git a/src/mame/drivers/firefox.cpp b/src/mame/drivers/firefox.cpp
index 5f0329ae858..e660eea76cb 100644
--- a/src/mame/drivers/firefox.cpp
+++ b/src/mame/drivers/firefox.cpp
@@ -103,14 +103,14 @@ private:
uint32_t screen_update_firefox(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(video_timer_callback);
void set_rgba( int start, int index, unsigned char *palette_ram );
- void firq_gen(philips_22vp931_device &laserdisc, int state);
+ void firq_gen(phillips_22vp931_device &laserdisc, int state);
virtual void machine_start() override;
virtual void video_start() override;
void audio_map(address_map &map);
void main_map(address_map &map);
- required_device<philips_22vp931_device> m_laserdisc;
+ required_device<phillips_22vp931_device> m_laserdisc;
required_shared_ptr<unsigned char> m_tileram;
required_shared_ptr<uint8_t> m_spriteram;
required_shared_ptr<unsigned char> m_sprite_palette;
@@ -445,7 +445,7 @@ WRITE_LINE_MEMBER(firefox_state::coin_counter_left_w)
}
-void firefox_state::firq_gen(philips_22vp931_device &laserdisc, int state)
+void firefox_state::firq_gen(phillips_22vp931_device &laserdisc, int state)
{
if (state)
m_maincpu->set_input_line(M6809_FIRQ_LINE, ASSERT_LINE );
@@ -456,7 +456,7 @@ void firefox_state::machine_start()
{
m_mainbank->configure_entries(0, 32, memregion("maincpu")->base() + 0x10000, 0x1000);
- m_laserdisc->set_data_ready_callback(philips_22vp931_device::data_ready_delegate(&firefox_state::firq_gen, this));
+ m_laserdisc->set_data_ready_callback(phillips_22vp931_device::data_ready_delegate(&firefox_state::firq_gen, this));
m_sprite_bank = 0;
}
@@ -650,15 +650,15 @@ GFXDECODE_END
MACHINE_CONFIG_START(firefox_state::firefox)
/* basic machine hardware */
- MC6809E(config, m_maincpu, MASTER_XTAL/8); // 68B09E
- m_maincpu->set_addrmap(AS_PROGRAM, &firefox_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, MASTER_XTAL/8) // 68B09E
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
/* interrupts count starting at end of VBLANK, which is 44, so add 44 */
- TIMER(config, "32v").configure_scanline(FUNC(firefox_state::video_timer_callback), "screen", 96+44, 128);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("32v", firefox_state, video_timer_callback, "screen", 96+44, 128)
- M6502(config, m_audiocpu, MASTER_XTAL/8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &firefox_state::audio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6502, MASTER_XTAL/8)
+ MCFG_DEVICE_PROGRAM_MAP(audio_map)
- config.m_minimum_quantum = attotime::from_hz(60000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60000))
adc0809_device &adc(ADC0809(config, "adc", MASTER_XTAL/16)); // nominally 900 kHz
adc.in_callback<0>().set_ioport("PITCH");
@@ -687,15 +687,13 @@ MACHINE_CONFIG_START(firefox_state::firefox)
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_hz(MASTER_XTAL/8/16/16/16/16));
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_firefox);
- PALETTE(config, m_palette).set_entries(512);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_firefox)
+ MCFG_PALETTE_ADD("palette", 512)
- PHILIPS_22VP931(config, m_laserdisc, 0);
- m_laserdisc->set_overlay(64*8, 525, FUNC(firefox_state::screen_update_firefox));
- m_laserdisc->set_overlay_clip(7*8, 53*8-1, 44, 480+44);
- m_laserdisc->set_overlay_palette(m_palette);
- m_laserdisc->add_route(0, "lspeaker", 0.50);
- m_laserdisc->add_route(1, "rspeaker", 0.50);
+ MCFG_LASERDISC_22VP931_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY_DRIVER(64*8, 525, firefox_state, screen_update_firefox)
+ MCFG_LASERDISC_OVERLAY_CLIP(7*8, 53*8-1, 44, 480+44)
+ MCFG_LASERDISC_OVERLAY_PALETTE("palette")
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
@@ -718,25 +716,29 @@ MACHINE_CONFIG_START(firefox_state::firefox)
GENERIC_LATCH_8(config, m_soundlatch2);
- pokey_device &pokey1(POKEY(config, "pokey1", MASTER_XTAL/8));
- pokey1.add_route(ALL_OUTPUTS, "lspeaker", 0.30);
- pokey1.add_route(ALL_OUTPUTS, "rspeaker", 0.30);
+ MCFG_DEVICE_ADD("pokey1", POKEY, MASTER_XTAL/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30)
- pokey_device &pokey2(POKEY(config, "pokey2", MASTER_XTAL/8));
- pokey2.add_route(ALL_OUTPUTS, "lspeaker", 0.30);
- pokey2.add_route(ALL_OUTPUTS, "rspeaker", 0.30);
+ MCFG_DEVICE_ADD("pokey2", POKEY, MASTER_XTAL/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30)
- pokey_device &pokey3(POKEY(config, "pokey3", MASTER_XTAL/8));
- pokey3.add_route(ALL_OUTPUTS, "lspeaker", 0.30);
- pokey3.add_route(ALL_OUTPUTS, "rspeaker", 0.30);
+ MCFG_DEVICE_ADD("pokey3", POKEY, MASTER_XTAL/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30)
- pokey_device &pokey4(POKEY(config, "pokey4", MASTER_XTAL/8));
- pokey4.add_route(ALL_OUTPUTS, "lspeaker", 0.30);
- pokey4.add_route(ALL_OUTPUTS, "rspeaker", 0.30);
+ MCFG_DEVICE_ADD("pokey4", POKEY, MASTER_XTAL/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30)
- TMS5220(config, m_tms, MASTER_XTAL/2/11);
- m_tms->add_route(ALL_OUTPUTS, "lspeaker", 0.75);
- m_tms->add_route(ALL_OUTPUTS, "rspeaker", 0.75);
+ MCFG_DEVICE_ADD("tms", TMS5220, MASTER_XTAL/2/11)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75)
+
+ MCFG_DEVICE_MODIFY("laserdisc")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/firetrap.cpp b/src/mame/drivers/firetrap.cpp
index 638303b51ca..815564c257a 100644
--- a/src/mame/drivers/firetrap.cpp
+++ b/src/mame/drivers/firetrap.cpp
@@ -339,7 +339,7 @@ WRITE_LINE_MEMBER(firetrap_state::firetrap_adpcm_int)
WRITE8_MEMBER(firetrap_state::adpcm_data_w)
{
m_audiocpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
- m_adpcm_select->ba_w(data);
+ m_adpcm_select->write_ba(data);
}
WRITE8_MEMBER(firetrap_state::flip_screen_w)
@@ -615,32 +615,33 @@ void firetrap_state::machine_reset()
m_coin_command_pending = 0;
}
-void firetrap_state::firetrap(machine_config &config)
-{
+MACHINE_CONFIG_START(firetrap_state::firetrap)
+
/* basic machine hardware */
- Z80(config, m_maincpu, FIRETRAP_XTAL/2); // 6 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &firetrap_state::firetrap_map);
- m_maincpu->set_vblank_int("screen", FUNC(firetrap_state::firetrap_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, FIRETRAP_XTAL/2) // 6 MHz
+ MCFG_DEVICE_PROGRAM_MAP(firetrap_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", firetrap_state, firetrap_irq)
- M6502(config, m_audiocpu, FIRETRAP_XTAL/8); // 1.5 MHz
- m_audiocpu->set_addrmap(AS_PROGRAM, &firetrap_state::sound_map);
- /* IRQs are caused by the ADPCM chip */
- /* NMIs are caused by the main CPU */
+ MCFG_DEVICE_ADD("audiocpu", M6502, FIRETRAP_XTAL/8) // 1.5 MHz
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ /* IRQs are caused by the ADPCM chip */
+ /* NMIs are caused by the main CPU */
- I8751(config, "mcu", XTAL(8'000'000)).set_disable();
+ MCFG_DEVICE_ADD("mcu", I8751, XTAL(8'000'000))
+ MCFG_DEVICE_DISABLE()
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
-// screen.set_refresh_hz(57.4034); // PCB measurement
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
-// screen.set_size(32*8, 32*8);
-// screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_REFRESH_RATE(57.4034) // PCB measurement
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+// MCFG_SCREEN_SIZE(32*8, 32*8)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
// DECO video CRTC, unverified
- screen.set_raw(FIRETRAP_XTAL/2,384,0,256,272,8,248);
- screen.set_screen_update(FUNC(firetrap_state::screen_update_firetrap));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_RAW_PARAMS(FIRETRAP_XTAL/2,384,0,256,272,8,248)
+ MCFG_SCREEN_UPDATE_DRIVER(firetrap_state, screen_update_firetrap)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_firetrap);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_firetrap)
PALETTE(config, m_palette, FUNC(firetrap_state::firetrap_palette), 256);
/* sound hardware */
@@ -649,42 +650,42 @@ void firetrap_state::firetrap(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- ym3526_device &ymsnd(YM3526(config, "ymsnd", FIRETRAP_XTAL/4)); // 3 MHz
- ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("ymsnd", YM3526, FIRETRAP_XTAL/4) // 3 MHz
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
LS157(config, m_adpcm_select, 0);
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
- MSM5205(config, m_msm, FIRETRAP_XTAL/32); // 375 kHz
- m_msm->vck_callback().set(FUNC(firetrap_state::firetrap_adpcm_int));
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 7.8125kHz */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, FIRETRAP_XTAL/32) // 375 kHz
+ MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, firetrap_state, firetrap_adpcm_int))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 7.8125kHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(firetrap_state::firetrapbl)
-void firetrap_state::firetrapbl(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, FIRETRAP_XTAL/2); // 6 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &firetrap_state::firetrap_bootleg_map);
- m_maincpu->set_vblank_int("screen", FUNC(firetrap_state::firetrap_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, FIRETRAP_XTAL/2) // 6 MHz
+ MCFG_DEVICE_PROGRAM_MAP(firetrap_bootleg_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", firetrap_state, firetrap_irq)
- M6502(config, m_audiocpu, FIRETRAP_XTAL/8); // 1.5 MHz
- m_audiocpu->set_addrmap(AS_PROGRAM, &firetrap_state::sound_map);
- /* IRQs are caused by the ADPCM chip */
- /* NMIs are caused by the main CPU */
+ MCFG_DEVICE_ADD("audiocpu", M6502, FIRETRAP_XTAL/8) // 1.5 MHz
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ /* IRQs are caused by the ADPCM chip */
+ /* NMIs are caused by the main CPU */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
-// screen.set_refresh_hz(57.4034);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
-// screen.set_size(32*8, 32*8);
-// screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_REFRESH_RATE(57.4034)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+// MCFG_SCREEN_SIZE(32*8, 32*8)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
// DECO video CRTC, unverified
- screen.set_raw(FIRETRAP_XTAL/2,384,0,256,272,8,248);
- screen.set_screen_update(FUNC(firetrap_state::screen_update_firetrap));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_RAW_PARAMS(FIRETRAP_XTAL/2,384,0,256,272,8,248)
+ MCFG_SCREEN_UPDATE_DRIVER(firetrap_state, screen_update_firetrap)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_firetrap);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_firetrap)
PALETTE(config, m_palette, FUNC(firetrap_state::firetrap_palette), 256);
/* sound hardware */
@@ -693,17 +694,17 @@ void firetrap_state::firetrapbl(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- ym3526_device &ymsnd(YM3526(config, "ymsnd", FIRETRAP_XTAL/4)); // 3 MHz
- ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("ymsnd", YM3526, FIRETRAP_XTAL/4) // 3 MHz
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
LS157(config, m_adpcm_select, 0);
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
- MSM5205(config, m_msm, FIRETRAP_XTAL/32); // 375 kHz
- m_msm->vck_callback().set(FUNC(firetrap_state::firetrap_adpcm_int));
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 7.8125kHz */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, FIRETRAP_XTAL/32) // 375 kHz
+ MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, firetrap_state, firetrap_adpcm_int))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 7.8125kHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/firetrk.cpp b/src/mame/drivers/firetrk.cpp
index 6e7d25d71a6..1c3085dbbaf 100644
--- a/src/mame/drivers/firetrk.cpp
+++ b/src/mame/drivers/firetrk.cpp
@@ -854,69 +854,75 @@ static GFXDECODE_START( gfx_montecar )
GFXDECODE_END
-void firetrk_state::firetrk(machine_config &config)
-{
+MACHINE_CONFIG_START(firetrk_state::firetrk)
+
/* basic machine hardware */
- M6800(config, m_maincpu, MASTER_CLOCK/12); /* 750Khz during service mode */
- m_maincpu->set_addrmap(AS_PROGRAM, &firetrk_state::firetrk_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(firetrk_state::firetrk_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M6800, MASTER_CLOCK/12) /* 750Khz during service mode */
+ MCFG_DEVICE_PROGRAM_MAP(firetrk_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", firetrk_state, firetrk_scanline, "screen", 0, 1)
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 5);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_raw(MASTER_CLOCK/2, 384, 0, 320, 262, 0, 240);
- m_screen->set_screen_update(FUNC(firetrk_state::screen_update_firetrk));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 384, 0, 320, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(firetrk_state, screen_update_firetrk)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(firetrk_state::firetrk_palette), 28);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_firetrk);
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_firetrk)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- DISCRETE(config, m_discrete, firetrk_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, firetrk_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void firetrk_state::superbug(machine_config &config)
-{
+MACHINE_CONFIG_START(firetrk_state::superbug)
firetrk(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &firetrk_state::superbug_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(superbug_map)
/* video hardware */
- m_screen->set_screen_update(FUNC(firetrk_state::screen_update_superbug));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(firetrk_state, screen_update_superbug)
MCFG_VIDEO_START_OVERRIDE(firetrk_state,superbug)
- m_gfxdecode->set_info(gfx_superbug);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_superbug)
/* sound hardware */
- DISCRETE(config.replace(), m_discrete, superbug_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_REPLACE("discrete", DISCRETE, superbug_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void firetrk_state::montecar(machine_config &config)
-{
+MACHINE_CONFIG_START(firetrk_state::montecar)
firetrk(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &firetrk_state::montecar_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(montecar_map)
/* video hardware */
- m_screen->set_screen_update(FUNC(firetrk_state::screen_update_montecar));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(firetrk_state, screen_update_montecar)
MCFG_VIDEO_START_OVERRIDE(firetrk_state,montecar)
- m_gfxdecode->set_info(gfx_montecar);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_montecar)
m_palette->set_entries(46);
m_palette->set_init(FUNC(firetrk_state::montecar_palette));
/* sound hardware */
- DISCRETE(config.replace(), m_discrete, montecar_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_REPLACE("discrete", DISCRETE, montecar_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( firetrk )
diff --git a/src/mame/drivers/fitfight.cpp b/src/mame/drivers/fitfight.cpp
index a75e86a61fc..6db1ba3f3ff 100644
--- a/src/mame/drivers/fitfight.cpp
+++ b/src/mame/drivers/fitfight.cpp
@@ -720,11 +720,11 @@ void fitfight_state::machine_reset()
m_fof_700000_data = 0;
}
-void fitfight_state::fitfight(machine_config &config)
-{
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &fitfight_state::fitfight_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(fitfight_state::irq2_line_hold));
+MACHINE_CONFIG_START(fitfight_state::fitfight)
+
+ MCFG_DEVICE_ADD("maincpu",M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(fitfight_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", fitfight_state, irq2_line_hold)
upd7810_device &audiocpu(UPD7810(config, m_audiocpu, 12000000));
audiocpu.set_addrmap(AS_PROGRAM, &fitfight_state::snd_mem);
@@ -750,31 +750,33 @@ void fitfight_state::fitfight(machine_config &config)
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1333333, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 1.0); // ~8080Hz ??? TODO: find out the real frequency
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1333333, okim6295_device::PIN7_LOW) // ~8080Hz ??? TODO: find out the real frequency
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void fitfight_state::bbprot(machine_config &config)
-{
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &fitfight_state::bbprot_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(fitfight_state::irq2_line_hold));
+MACHINE_CONFIG_START(fitfight_state::bbprot)
+
+ MCFG_DEVICE_ADD("maincpu",M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(bbprot_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", fitfight_state, irq2_line_hold)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_prot);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(2*8, 39*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(fitfight_state::screen_update_fitfight));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(2*8, 39*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(fitfight_state, screen_update_fitfight)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x2000);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1333333, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 1.0); // ~8080Hz ??? TODO: find out the real frequency
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1333333, okim6295_device::PIN7_LOW) // ~8080Hz ??? TODO: find out the real frequency
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/***
diff --git a/src/mame/drivers/fk1.cpp b/src/mame/drivers/fk1.cpp
index a75e3ff7a6b..aa63afa7fac 100644
--- a/src/mame/drivers/fk1.cpp
+++ b/src/mame/drivers/fk1.cpp
@@ -412,22 +412,21 @@ uint32_t fk1_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c
return 0;
}
-void fk1_state::fk1(machine_config &config)
-{
+MACHINE_CONFIG_START(fk1_state::fk1)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(8'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &fk1_state::fk1_mem);
- m_maincpu->set_addrmap(AS_IO, &fk1_state::fk1_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(fk1_state::fk1_irq_callback));
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(8'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(fk1_mem)
+ MCFG_DEVICE_IO_MAP(fk1_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(fk1_state,fk1_irq_callback)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(fk1_state::screen_update));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(fk1_state, screen_update)
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -467,9 +466,9 @@ void fk1_state::fk1(machine_config &config)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("80K"); // 64 + 16
- TIMER(config, "keyboard_timer").configure_periodic(FUNC(fk1_state::keyboard_callback), attotime::from_hz(24000));
- TIMER(config, "vsync_timer").configure_periodic(FUNC(fk1_state::vsync_callback), attotime::from_hz(50));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", fk1_state, keyboard_callback, attotime::from_hz(24000))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("vsync_timer", fk1_state, vsync_callback, attotime::from_hz(50))
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( fk1 )
diff --git a/src/mame/drivers/flipjack.cpp b/src/mame/drivers/flipjack.cpp
index 49710b33951..2a5445693e3 100644
--- a/src/mame/drivers/flipjack.cpp
+++ b/src/mame/drivers/flipjack.cpp
@@ -419,8 +419,8 @@ void flipjack_state::machine_start()
}
-void flipjack_state::flipjack(machine_config &config)
-{
+MACHINE_CONFIG_START(flipjack_state::flipjack)
+
/* basic machine hardware */
Z80(config, m_maincpu, MASTER_CLOCK/4);
m_maincpu->set_addrmap(AS_PROGRAM, &flipjack_state::main_map);
@@ -462,7 +462,7 @@ void flipjack_state::flipjack(machine_config &config)
ay1.add_route(ALL_OUTPUTS, "mono", 0.50);
AY8910(config, "ay2", MASTER_CLOCK/8).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
ROM_START( flipjack )
diff --git a/src/mame/drivers/flower.cpp b/src/mame/drivers/flower.cpp
index eca0e8d727e..e6b0f672a05 100644
--- a/src/mame/drivers/flower.cpp
+++ b/src/mame/drivers/flower.cpp
@@ -494,36 +494,36 @@ INTERRUPT_GEN_MEMBER(flower_state::slave_vblank_irq)
}
-void flower_state::flower(machine_config &config)
-{
- Z80(config, m_mastercpu, MASTER_CLOCK/4);
- m_mastercpu->set_addrmap(AS_PROGRAM, &flower_state::shared_map);
- m_mastercpu->set_vblank_int("screen", FUNC(flower_state::master_vblank_irq));
+MACHINE_CONFIG_START(flower_state::flower)
+ MCFG_DEVICE_ADD("mastercpu",Z80,MASTER_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(shared_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", flower_state, master_vblank_irq)
- Z80(config, m_slavecpu, MASTER_CLOCK/4);
- m_slavecpu->set_addrmap(AS_PROGRAM, &flower_state::shared_map);
- m_slavecpu->set_vblank_int("screen", FUNC(flower_state::slave_vblank_irq));
+ MCFG_DEVICE_ADD("slavecpu",Z80,MASTER_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(shared_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", flower_state, slave_vblank_irq)
- Z80(config, m_audiocpu, MASTER_CLOCK/4);
- m_audiocpu->set_addrmap(AS_PROGRAM, &flower_state::audio_map);
- m_audiocpu->set_periodic_int(FUNC(flower_state::irq0_line_hold), attotime::from_hz(90));
+ MCFG_DEVICE_ADD("audiocpu",Z80,MASTER_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(audio_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(flower_state, irq0_line_hold, 90)
- config.m_perfect_cpu_quantum = subtag("mastercpu");
+ MCFG_QUANTUM_PERFECT_CPU("mastercpu")
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_screen_update(FUNC(flower_state::screen_update));
- m_screen->set_raw(MASTER_CLOCK/3,384,0,288,264,16,240); // derived from Galaxian HW, 60.606060
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(flower_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3,384,0,288,264,16,240) // derived from Galaxian HW, 60.606060
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_flower);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_flower)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
GENERIC_LATCH_8(config, m_soundlatch);
SPEAKER(config, "mono").front_center();
- FLOWER_CUSTOM(config, "flower", 96000).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("flower", FLOWER_CUSTOM, 96000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( flower ) /* Komax version */
diff --git a/src/mame/drivers/flstory.cpp b/src/mame/drivers/flstory.cpp
index 8f2ad9132fd..e35a9756418 100644
--- a/src/mame/drivers/flstory.cpp
+++ b/src/mame/drivers/flstory.cpp
@@ -788,6 +788,7 @@ void flstory_state::common(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.1); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/flyball.cpp b/src/mame/drivers/flyball.cpp
index ac8ef621f9b..992fd3f8752 100644
--- a/src/mame/drivers/flyball.cpp
+++ b/src/mame/drivers/flyball.cpp
@@ -459,11 +459,11 @@ void flyball_state::machine_reset()
}
-void flyball_state::flyball(machine_config &config)
-{
+MACHINE_CONFIG_START(flyball_state::flyball)
+
/* basic machine hardware */
- M6502(config, m_maincpu, MASTER_CLOCK/16);
- m_maincpu->set_addrmap(AS_PROGRAM, &flyball_state::flyball_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, MASTER_CLOCK/16)
+ MCFG_DEVICE_PROGRAM_MAP(flyball_map)
F9334(config, m_outlatch); // F7
m_outlatch->q_out_cb<2>().set_nop(); // bat hit
@@ -474,19 +474,19 @@ void flyball_state::flyball(machine_config &config)
m_outlatch->q_out_cb<7>().set(FUNC(flyball_state::lamp_w)); // 1 player lamp
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(256, 262);
- m_screen->set_visarea(0, 255, 0, 239);
- m_screen->set_screen_update(FUNC(flyball_state::screen_update));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_flyball);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(256, 262)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
+ MCFG_SCREEN_UPDATE_DRIVER(flyball_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_flyball)
PALETTE(config, m_palette, FUNC(flyball_state::flyball_palette), 4);
/* sound hardware */
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/fm7.cpp b/src/mame/drivers/fm7.cpp
index 8c77675510f..4ed9ba92b60 100644
--- a/src/mame/drivers/fm7.cpp
+++ b/src/mame/drivers/fm7.cpp
@@ -851,6 +851,8 @@ READ8_MEMBER(fm7_state::fm77av_boot_mode_r)
*/
void fm7_state::fm7_update_psg()
{
+ address_space &space = m_maincpu->space(AS_PROGRAM);
+
if(m_type == SYS_FM7)
{
switch(m_psg_regsel)
@@ -860,15 +862,15 @@ void fm7_state::fm7_update_psg()
break;
case 0x01:
// Data read
- m_psg_data = m_psg->data_r();
+ m_psg_data = m_psg->data_r(space, 0);
break;
case 0x02:
// Data write
- m_psg->data_w(m_psg_data);
+ m_psg->data_w(space, 0,m_psg_data);
break;
case 0x03:
// Address latch
- m_psg->address_w(m_psg_data);
+ m_psg->address_w(space, 0,m_psg_data);
break;
}
}
@@ -881,21 +883,21 @@ void fm7_state::fm7_update_psg()
break;
case 0x01:
// Data read
- m_psg_data = m_ym->read(1);
+ m_psg_data = m_ym->read(space, 1);
break;
case 0x02:
// Data write
- m_ym->write(1,m_psg_data);
+ m_ym->write(space, 1,m_psg_data);
logerror("YM: data write 0x%02x\n",m_psg_data);
break;
case 0x03:
// Address latch
- m_ym->write(0,m_psg_data);
+ m_ym->write(space, 0,m_psg_data);
logerror("YM: address latch 0x%02x\n",m_psg_data);
break;
case 0x04:
// Status register
- m_psg_data = m_ym->read(0);
+ m_psg_data = m_ym->read(space, 0);
break;
case 0x09:
// Joystick port read
@@ -1146,7 +1148,7 @@ void fm7_state::fm7_mmr_refresh(address_space& space)
}
else
{
- space.install_readwrite_handler(0x7000,0x7fff,read8sm_delegate(FUNC(address_map_bank_device::read8),(address_map_bank_device*)m_avbank[7]),write8sm_delegate(FUNC(address_map_bank_device::write8),(address_map_bank_device*)m_avbank[7]));
+ space.install_readwrite_handler(0x7000,0x7fff,read8_delegate(FUNC(address_map_bank_device::read8),(address_map_bank_device*)m_avbank[7]),write8_delegate(FUNC(address_map_bank_device::write8),(address_map_bank_device*)m_avbank[7]));
}
if(m_init_rom_en)
{
@@ -2031,39 +2033,38 @@ static void fm7_floppies(device_slot_interface &device)
}
-void fm7_state::fm7(machine_config &config)
-{
+MACHINE_CONFIG_START(fm7_state::fm7)
/* basic machine hardware */
- MC6809(config, m_maincpu, 16.128_MHz_XTAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &fm7_state::fm7_mem);
- m_maincpu->set_irq_acknowledge_callback(FUNC(fm7_state::fm7_irq_ack));
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_DEVICE_ADD("maincpu", MC6809, 16.128_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(fm7_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_irq_ack)
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
- MC6809(config, m_sub, 16.128_MHz_XTAL / 2);
- m_sub->set_addrmap(AS_PROGRAM, &fm7_state::fm7_sub_mem);
- m_sub->set_irq_acknowledge_callback(FUNC(fm7_state::fm7_sub_irq_ack));
- config.m_perfect_cpu_quantum = subtag("sub");
+ MCFG_DEVICE_ADD("sub", MC6809, 16.128_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(fm7_sub_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_sub_irq_ack)
+ MCFG_QUANTUM_PERFECT_CPU("sub")
SPEAKER(config, "mono").front_center();
AY8910(config, m_psg, 4.9152_MHz_XTAL / 4).add_route(ALL_OUTPUTS,"mono", 1.00);
BEEP(config, "beeper", 1200).add_route(ALL_OUTPUTS, "mono", 0.50);
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
MCFG_MACHINE_START_OVERRIDE(fm7_state,fm7)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(16.128_MHz_XTAL, 1024, 0, 640, 262, 0, 200); // H = 15.75 KHz, V = 60.1145 Hz
- m_screen->set_screen_update(FUNC(fm7_state::screen_update_fm7));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(16.128_MHz_XTAL, 1024, 0, 640, 262, 0, 200) // H = 15.75 KHz, V = 60.1145 Hz
+ MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
PALETTE(config, m_palette, palette_device::BRG_3BIT);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(fm7_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("fm7_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("fm7_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("fm7_cass");
+ MCFG_SOFTWARE_LIST_ADD("cass_list","fm7_cass")
MB8877(config, m_fdc, 8_MHz_XTAL / 8);
m_fdc->intrq_wr_callback().set(FUNC(fm7_state::fm7_fdc_intrq_w));
@@ -2072,49 +2073,47 @@ void fm7_state::fm7(machine_config &config)
FLOPPY_CONNECTOR(config, m_floppy0, fm7_floppies, "qd", floppy_image_device::default_floppy_formats);
FLOPPY_CONNECTOR(config, m_floppy1, fm7_floppies, "qd", floppy_image_device::default_floppy_formats);
- SOFTWARE_LIST(config, "flop_list").set_original("fm7_disk");
+ MCFG_SOFTWARE_LIST_ADD("flop_list","fm7_disk")
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->option_add("dsjoy", DEMPA_SHINBUNSHA_JOYSTICK);
- m_centronics->busy_handler().set(FUNC(fm7_state::write_centronics_busy));
- m_centronics->fault_handler().set(FUNC(fm7_state::write_centronics_fault));
- m_centronics->ack_handler().set(FUNC(fm7_state::write_centronics_ack));
- m_centronics->perror_handler().set(FUNC(fm7_state::write_centronics_perror));
+ MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer")
+ MCFG_SLOT_OPTION_ADD( "dsjoy", DEMPA_SHINBUNSHA_JOYSTICK )
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, fm7_state, write_centronics_busy))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, fm7_state, write_centronics_fault))
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, fm7_state, write_centronics_ack))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, fm7_state, write_centronics_perror))
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
-}
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+MACHINE_CONFIG_END
-void fm7_state::fm8(machine_config &config)
-{
+MACHINE_CONFIG_START(fm7_state::fm8)
/* basic machine hardware */
- MC6809(config, m_maincpu, 4.9152_MHz_XTAL); // 1.2MHz 68A09
- m_maincpu->set_addrmap(AS_PROGRAM, &fm7_state::fm8_mem);
- m_maincpu->set_irq_acknowledge_callback(FUNC(fm7_state::fm7_irq_ack));
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_DEVICE_ADD("maincpu", MC6809, 4.9152_MHz_XTAL) // 1.2MHz 68A09
+ MCFG_DEVICE_PROGRAM_MAP(fm8_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_irq_ack)
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
- MC6809(config, m_sub, 16.128_MHz_XTAL / 2);
- m_sub->set_addrmap(AS_PROGRAM, &fm7_state::fm7_sub_mem);
- m_sub->set_irq_acknowledge_callback(FUNC(fm7_state::fm7_sub_irq_ack));
- config.m_perfect_cpu_quantum = subtag("sub");
+ MCFG_DEVICE_ADD("sub", MC6809, 16.128_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(fm7_sub_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_sub_irq_ack)
+ MCFG_QUANTUM_PERFECT_CPU("sub")
SPEAKER(config, "mono").front_center();
BEEP(config, m_beeper, 1200).add_route(ALL_OUTPUTS, "mono", 0.50);
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
MCFG_MACHINE_START_OVERRIDE(fm7_state,fm7)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(16.128_MHz_XTAL, 1024, 0, 640, 262, 0, 200);
- m_screen->set_screen_update(FUNC(fm7_state::screen_update_fm7));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(16.128_MHz_XTAL, 1024, 0, 640, 262, 0, 200)
+ MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
PALETTE(config, m_palette, palette_device::BRG_3BIT);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(fm7_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("fm7_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("fm7_cass")
MB8877(config, m_fdc, 8_MHz_XTAL / 8);
m_fdc->intrq_wr_callback().set(FUNC(fm7_state::fm7_fdc_intrq_w));
@@ -2123,28 +2122,26 @@ void fm7_state::fm8(machine_config &config)
FLOPPY_CONNECTOR(config, m_floppy0, fm7_floppies, "qd", floppy_image_device::default_floppy_formats);
FLOPPY_CONNECTOR(config, m_floppy1, fm7_floppies, "qd", floppy_image_device::default_floppy_formats);
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(fm7_state::write_centronics_busy));
- m_centronics->fault_handler().set(FUNC(fm7_state::write_centronics_fault));
- m_centronics->ack_handler().set(FUNC(fm7_state::write_centronics_ack));
- m_centronics->perror_handler().set(FUNC(fm7_state::write_centronics_perror));
+ MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, fm7_state, write_centronics_busy))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, fm7_state, write_centronics_fault))
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, fm7_state, write_centronics_ack))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, fm7_state, write_centronics_perror))
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
-}
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+MACHINE_CONFIG_END
-void fm7_state::fm77av(machine_config &config)
-{
+MACHINE_CONFIG_START(fm7_state::fm77av)
/* basic machine hardware */
- MC6809E(config, m_maincpu, 16.128_MHz_XTAL / 8);
- m_maincpu->set_addrmap(AS_PROGRAM, &fm7_state::fm77av_mem);
- m_maincpu->set_irq_acknowledge_callback(FUNC(fm7_state::fm7_irq_ack));
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_DEVICE_ADD("maincpu", MC6809E, 16.128_MHz_XTAL / 8)
+ MCFG_DEVICE_PROGRAM_MAP(fm77av_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_irq_ack)
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
- MC6809E(config, m_sub, 16.128_MHz_XTAL / 8);
- m_sub->set_addrmap(AS_PROGRAM, &fm7_state::fm77av_sub_mem);
- m_sub->set_irq_acknowledge_callback(FUNC(fm7_state::fm7_sub_irq_ack));
- config.m_perfect_cpu_quantum = subtag("sub");
+ MCFG_DEVICE_ADD("sub", MC6809E, 16.128_MHz_XTAL / 8)
+ MCFG_DEVICE_PROGRAM_MAP(fm77av_sub_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_sub_irq_ack)
+ MCFG_QUANTUM_PERFECT_CPU("sub")
SPEAKER(config, "mono").front_center();
YM2203(config, m_ym, 4.9152_MHz_XTAL / 4);
@@ -2153,7 +2150,7 @@ void fm7_state::fm77av(machine_config &config)
m_ym->port_b_read_callback().set(FUNC(fm7_state::fm77av_joy_2_r));
m_ym->add_route(ALL_OUTPUTS,"mono", 1.00);
BEEP(config, "beeper", 1200).add_route(ALL_OUTPUTS, "mono", 0.50);
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
MCFG_MACHINE_START_OVERRIDE(fm7_state,fm77av)
@@ -2163,19 +2160,19 @@ void fm7_state::fm77av(machine_config &config)
}
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(16.128_MHz_XTAL, 1024, 0, 640, 262, 0, 200);
- m_screen->set_screen_update(FUNC(fm7_state::screen_update_fm7));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(16.128_MHz_XTAL, 1024, 0, 640, 262, 0, 200)
+ MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
PALETTE(config, m_palette, palette_device::BRG_3BIT);
- PALETTE(config, m_av_palette).set_entries(4096);
+ MCFG_PALETTE_ADD("av_palette", 4096)
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(fm7_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("fm7_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("fm7_cass")
- SOFTWARE_LIST(config, "cass_list").set_compatible("fm7_cass");
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_list", "fm7_cass")
MB8877(config, m_fdc, 8_MHz_XTAL / 8);
m_fdc->intrq_wr_callback().set(FUNC(fm7_state::fm7_fdc_intrq_w));
@@ -2184,39 +2181,37 @@ void fm7_state::fm77av(machine_config &config)
FLOPPY_CONNECTOR(config, m_floppy0, fm7_floppies, "qd", floppy_image_device::default_floppy_formats);
FLOPPY_CONNECTOR(config, m_floppy1, fm7_floppies, "qd", floppy_image_device::default_floppy_formats);
- SOFTWARE_LIST(config, "av_flop_list").set_original("fm77av");
- SOFTWARE_LIST(config, "flop_list").set_compatible("fm7_disk");
+ MCFG_SOFTWARE_LIST_ADD("av_flop_list", "fm77av")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop_list", "fm7_disk")
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(fm7_state::write_centronics_busy));
- m_centronics->fault_handler().set(FUNC(fm7_state::write_centronics_fault));
- m_centronics->ack_handler().set(FUNC(fm7_state::write_centronics_ack));
- m_centronics->perror_handler().set(FUNC(fm7_state::write_centronics_perror));
+ MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, fm7_state, write_centronics_busy))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, fm7_state, write_centronics_fault))
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, fm7_state, write_centronics_ack))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, fm7_state, write_centronics_perror))
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
-}
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+MACHINE_CONFIG_END
-void fm7_state::fm11(machine_config &config)
-{
+MACHINE_CONFIG_START(fm7_state::fm11)
/* basic machine hardware */
- MC6809E(config, m_maincpu, 2000000); // 2MHz 68B09E
- m_maincpu->set_addrmap(AS_PROGRAM, &fm7_state::fm11_mem);
- m_maincpu->set_irq_acknowledge_callback(FUNC(fm7_state::fm7_irq_ack));
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_DEVICE_ADD("maincpu", MC6809E, 2000000) // 2MHz 68B09E
+ MCFG_DEVICE_PROGRAM_MAP(fm11_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_irq_ack)
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
- MC6809(config, m_sub, 8000000); // 2MHz 68B09
- m_sub->set_addrmap(AS_PROGRAM, &fm7_state::fm11_sub_mem);
- m_sub->set_irq_acknowledge_callback(FUNC(fm7_state::fm7_sub_irq_ack));
- config.m_perfect_cpu_quantum = subtag("sub");
+ MCFG_DEVICE_ADD("sub", MC6809, 8000000) // 2MHz 68B09
+ MCFG_DEVICE_PROGRAM_MAP(fm11_sub_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_sub_irq_ack)
+ MCFG_QUANTUM_PERFECT_CPU("sub")
- I8088(config, m_x86, 8000000); // 8MHz i8088
- m_x86->set_addrmap(AS_PROGRAM, &fm7_state::fm11_x86_mem);
- m_x86->set_addrmap(AS_IO, &fm7_state::fm11_x86_io);
+ MCFG_DEVICE_ADD("x86", I8088, 8000000) // 8MHz i8088
+ MCFG_DEVICE_PROGRAM_MAP(fm11_x86_mem)
+ MCFG_DEVICE_IO_MAP(fm11_x86_io)
SPEAKER(config, "mono").front_center();
BEEP(config, m_beeper, 1200).add_route(ALL_OUTPUTS, "mono", 0.50);
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
MCFG_MACHINE_START_OVERRIDE(fm7_state,fm11)
@@ -2226,16 +2221,16 @@ void fm7_state::fm11(machine_config &config)
}
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(16128000, 1024, 0, 640, 262, 0, 200);
- m_screen->set_screen_update(FUNC(fm7_state::screen_update_fm7));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(16128000, 1024, 0, 640, 262, 0, 200)
+ MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
PALETTE(config, m_palette, palette_device::BRG_3BIT);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(fm7_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("fm7_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("fm7_cass")
MB8877(config, m_fdc, 8_MHz_XTAL / 8);
m_fdc->intrq_wr_callback().set(FUNC(fm7_state::fm7_fdc_intrq_w));
@@ -2244,46 +2239,44 @@ void fm7_state::fm11(machine_config &config)
FLOPPY_CONNECTOR(config, m_floppy0, fm7_floppies, "qd", floppy_image_device::default_floppy_formats);
FLOPPY_CONNECTOR(config, m_floppy1, fm7_floppies, "qd", floppy_image_device::default_floppy_formats);
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(fm7_state::write_centronics_busy));
- m_centronics->fault_handler().set(FUNC(fm7_state::write_centronics_fault));
- m_centronics->ack_handler().set(FUNC(fm7_state::write_centronics_ack));
- m_centronics->perror_handler().set(FUNC(fm7_state::write_centronics_perror));
+ MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, fm7_state, write_centronics_busy))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, fm7_state, write_centronics_fault))
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, fm7_state, write_centronics_ack))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, fm7_state, write_centronics_perror))
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
-}
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+MACHINE_CONFIG_END
-void fm7_state::fm16beta(machine_config &config)
-{
+MACHINE_CONFIG_START(fm7_state::fm16beta)
/* basic machine hardware */
- I8086(config, m_maincpu, 8000000); // 8MHz i8086
- m_maincpu->set_addrmap(AS_PROGRAM, &fm7_state::fm16_mem);
- m_maincpu->set_addrmap(AS_IO, &fm7_state::fm16_io);
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_DEVICE_ADD("maincpu", I8086, 8000000) // 8MHz i8086
+ MCFG_DEVICE_PROGRAM_MAP(fm16_mem)
+ MCFG_DEVICE_IO_MAP(fm16_io)
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
- MC6809(config, m_sub, 8000000);
- m_sub->set_irq_acknowledge_callback(FUNC(fm7_state::fm7_sub_irq_ack));
- m_sub->set_addrmap(AS_PROGRAM, &fm7_state::fm16_sub_mem);
- config.m_perfect_cpu_quantum = subtag("sub");
+ MCFG_DEVICE_ADD("sub", MC6809, 8000000)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_sub_irq_ack)
+ MCFG_DEVICE_PROGRAM_MAP(fm16_sub_mem)
+ MCFG_QUANTUM_PERFECT_CPU("sub")
SPEAKER(config, "mono").front_center();
BEEP(config, m_beeper, 1200).add_route(ALL_OUTPUTS, "mono", 0.50);
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
MCFG_MACHINE_START_OVERRIDE(fm7_state,fm16)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(16128000, 1024, 0, 640, 262, 0, 200);
- m_screen->set_screen_update(FUNC(fm7_state::screen_update_fm7));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(16128000, 1024, 0, 640, 262, 0, 200)
+ MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
PALETTE(config, m_palette, palette_device::BRG_3BIT);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(fm7_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("fm7_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("fm7_cass")
MB8877(config, m_fdc, 8_MHz_XTAL / 8);
m_fdc->intrq_wr_callback().set(FUNC(fm7_state::fm7_fdc_intrq_w));
@@ -2292,15 +2285,14 @@ void fm7_state::fm16beta(machine_config &config)
FLOPPY_CONNECTOR(config, m_floppy0, fm7_floppies, "qd", floppy_image_device::default_floppy_formats);
FLOPPY_CONNECTOR(config, m_floppy1, fm7_floppies, "qd", floppy_image_device::default_floppy_formats);
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(fm7_state::write_centronics_busy));
- m_centronics->fault_handler().set(FUNC(fm7_state::write_centronics_fault));
- m_centronics->ack_handler().set(FUNC(fm7_state::write_centronics_ack));
- m_centronics->perror_handler().set(FUNC(fm7_state::write_centronics_perror));
+ MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, fm7_state, write_centronics_busy))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, fm7_state, write_centronics_fault))
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, fm7_state, write_centronics_ack))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, fm7_state, write_centronics_perror))
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
-}
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( fm8 )
diff --git a/src/mame/drivers/fontwriter.cpp b/src/mame/drivers/fontwriter.cpp
index 62289cdfb36..0663d015b89 100644
--- a/src/mame/drivers/fontwriter.cpp
+++ b/src/mame/drivers/fontwriter.cpp
@@ -112,37 +112,35 @@ void fontwriter_state::fw600_map(address_map &map)
static INPUT_PORTS_START( fontwriter )
INPUT_PORTS_END
-void fontwriter_state::fontwriter(machine_config &config)
-{
- M37720S1(config, m_maincpu, XTAL(16'000'000)); /* M37720S1 @ 16MHz - main CPU */
- m_maincpu->set_addrmap(AS_PROGRAM, &fontwriter_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &fontwriter_state::io_map);
-
- AT28C16(config, "at28c16", 0);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_screen_update(FUNC(fontwriter_state::screen_update));
- screen.set_size(640, 400);
- screen.set_visarea_full();
-}
-
-void fontwriter_state::fw600(machine_config &config)
-{
- M37720S1(config, m_maincpu, XTAL(16'000'000)); /* M37720S1 @ 16MHz - main CPU */
- m_maincpu->set_addrmap(AS_PROGRAM, &fontwriter_state::fw600_map);
- m_maincpu->set_addrmap(AS_IO, &fontwriter_state::io_map);
-
- AT28C16(config, "at28c16", 0);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_screen_update(FUNC(fontwriter_state::screen_update));
- screen.set_size(640, 400);
- screen.set_visarea_full();
-}
+MACHINE_CONFIG_START(fontwriter_state::fontwriter)
+ MCFG_DEVICE_ADD("maincpu", M37720S1, XTAL(16'000'000)) /* M37720S1 @ 16MHz - main CPU */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+
+ MCFG_DEVICE_ADD("at28c16", AT28C16, 0)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_UPDATE_DRIVER(fontwriter_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 400)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 399)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(fontwriter_state::fw600)
+ MCFG_DEVICE_ADD("maincpu", M37720S1, XTAL(16'000'000)) /* M37720S1 @ 16MHz - main CPU */
+ MCFG_DEVICE_PROGRAM_MAP(fw600_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+
+ MCFG_DEVICE_ADD("at28c16", AT28C16, 0)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_UPDATE_DRIVER(fontwriter_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 400)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 399)
+MACHINE_CONFIG_END
ROM_START(fw600)
ROM_REGION(0x200000, "maincpu", 0) /* M37720 program ROM */
diff --git a/src/mame/drivers/foodf.cpp b/src/mame/drivers/foodf.cpp
index d23a6b336bb..245a9f8c002 100644
--- a/src/mame/drivers/foodf.cpp
+++ b/src/mame/drivers/foodf.cpp
@@ -386,7 +386,7 @@ void foodf_state::foodf(machine_config &config)
pokey_device &pokey3(POKEY(config, "pokey3", MASTER_CLOCK/2/10));
pokey3.add_route(ALL_OUTPUTS, "mono", 0.33);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/force68k.cpp b/src/mame/drivers/force68k.cpp
index e3c94231600..cb7a66ad7d7 100644
--- a/src/mame/drivers/force68k.cpp
+++ b/src/mame/drivers/force68k.cpp
@@ -510,7 +510,7 @@ MACHINE_CONFIG_START(force68k_state::fccpu1_eprom_sockets)
MCFG_GENERIC_WIDTH(GENERIC_ROM16_WIDTH)
MCFG_GENERIC_ENDIAN(ENDIANNESS_BIG)
MCFG_GENERIC_LOAD(force68k_state, exp1_load)
-// SOFTWARE_LIST(config, "cart_list").set_original("fccpu1_cart");
+// MCFG_SOFTWARE_LIST_ADD("cart_list", "fccpu1_cart")
MACHINE_CONFIG_END
/***************************
@@ -543,16 +543,15 @@ static void fccpu1_vme_cards(device_slot_interface &device)
/*
* Machine configuration
*/
-void force68k_state::fccpu1(machine_config &config)
-{
+MACHINE_CONFIG_START(force68k_state::fccpu1)
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &force68k_state::force68k_mem);
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(force68k_mem)
/* P3/Host Port config
* LO command causes ROM monitor to expect S-records on HOST port by default
* Implementation through nullmodem currently does not support handshakes so
- * the ROM monitor is over-run while checking for checksums etc if used with
+ * the ROM momitor is over-run while checking for checksums etc if used with
* UI mount <file> feature.
*/
ACIA6850(config, m_aciahost, 0);
@@ -596,56 +595,49 @@ void force68k_state::fccpu1(machine_config &config)
m_pit->h2_out_callback().set(m_centronics, FUNC(centronics_device::write_strobe));
// Centronics
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(FUNC(force68k_state::centronics_ack_w));
- m_centronics->busy_handler().set(FUNC(force68k_state::centronics_busy_w));
- m_centronics->perror_handler().set(FUNC(force68k_state::centronics_perror_w));
- m_centronics->select_handler().set(FUNC(force68k_state::centronics_select_w));
-
- output_latch_device &latch(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(latch);
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE (*this, force68k_state, centronics_ack_w))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE (*this, force68k_state, centronics_busy_w))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE (*this, force68k_state, centronics_perror_w))
+ MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE (*this, force68k_state, centronics_select_w))
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
// EPROM sockets
fccpu1_eprom_sockets(config);
// VME interface
- VME(config, "vme", 0);
- VME_SLOT(config, "slot1", fccpu1_vme_cards, nullptr, 1, "vme");
-}
+ MCFG_VME_DEVICE_ADD("vme")
+ MCFG_VME_SLOT_ADD("vme", 1, fccpu1_vme_cards, nullptr)
+MACHINE_CONFIG_END
#if 0 /*
* CPU-6 family is device and adressmap compatible with CPU-1 but with additions
* such as an optional 68881 FPU
*/
-void force68k_state::fccpu6(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(8'000'000)); /* Jumper B10 Mode B */
- m_maincpu->set_addrmap(AS_PROGRAM, &force68k_state::force68k_mem);
-}
+MACHINE_CONFIG_START (force68k_state::fccpu6)
+ MCFG_DEVICE_ADD ("maincpu", M68000, XTAL(8'000'000)) /* Jumper B10 Mode B */
+ MCFG_DEVICE_PROGRAM_MAP (force68k_mem)
+MACHINE_CONFIG_END
-void force68k_state::fccpu6a(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(12'500'000)); /* Jumper B10 Mode A */
- m_maincpu->set_addrmap(AS_PROGRAM, &force68k_state::force68k_mem);
-}
+MACHINE_CONFIG_START (force68k_state::fccpu6a)
+ MCFG_DEVICE_ADD ("maincpu", M68000, XTAL(12'500'000)) /* Jumper B10 Mode A */
+ MCFG_DEVICE_PROGRAM_MAP (force68k_mem)
+MACHINE_CONFIG_END
-void force68k_state::fccpu6v(machine_config &config)
-{
- M68010(config, m_maincpu, XTAL(8'000'000)); /* Jumper B10 Mode B */
- m_maincpu->set_addrmap(AS_PROGRAM, &force68k_state::force68k_mem);
-}
+MACHINE_CONFIG_START (force68k_state::fccpu6v)
+ MCFG_DEVICE_ADD ("maincpu", M68010, XTAL(8'000'000)) /* Jumper B10 Mode B */
+ MCFG_DEVICE_PROGRAM_MAP (force68k_mem)
+MACHINE_CONFIG_END
-void force68k_state::fccpu6va(machine_config &config)
-{
- M68010(config, m_maincpu, XTAL(12'500'000)); /* Jumper B10 Mode A */
- m_maincpu->set_addrmap(AS_PROGRAM, &force68k_state::force68k_mem);
-}
+MACHINE_CONFIG_START (force68k_state::fccpu6va)
+ MCFG_DEVICE_ADD ("maincpu", M68010, XTAL(12'500'000)) /* Jumper B10 Mode A */
+ MCFG_DEVICE_PROGRAM_MAP (force68k_mem)
+MACHINE_CONFIG_END
-void force68k_state::fccpu6vb(machine_config &config)
-{
- M68010(config, m_maincpu, XTAL(12'500'000)); /* Jumper B10 Mode A */
- m_maincpu->set_addrmap(AS_PROGRAM, &force68k_state::force68k_mem);
-}
+MACHINE_CONFIG_START (force68k_state::fccpu6vb)
+ MCFG_DEVICE_ADD ("maincpu", M68010, XTAL(12'500'000)) /* Jumper B10 Mode A */
+ MCFG_DEVICE_PROGRAM_MAP (force68k_mem)
+MACHINE_CONFIG_END
#endif
/* ROM definitions */
diff --git a/src/mame/drivers/forte2.cpp b/src/mame/drivers/forte2.cpp
index 68a74089f7a..c2327fcedd4 100644
--- a/src/mame/drivers/forte2.cpp
+++ b/src/mame/drivers/forte2.cpp
@@ -81,7 +81,8 @@ void forte2_state::io_mem(address_map &map)
{
map.unmap_value_high();
map.global_mask(0xff);
- map(0x98, 0x99).rw("tms9928a", FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
+ map(0x98, 0x98).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0x99, 0x99).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
map(0xa0, 0xa1).w("aysnd", FUNC(ay8910_device::address_data_w));
map(0xa2, 0xa2).r("aysnd", FUNC(ay8910_device::data_r));
// AM_RANGE(0xa8, 0xa8) AM_RAM // Ports a8-ab are originally for communicating with the i8255 PPI on MSX.
diff --git a/src/mame/drivers/fortecar.cpp b/src/mame/drivers/fortecar.cpp
index 38b45db6503..c6efb77ede0 100644
--- a/src/mame/drivers/fortecar.cpp
+++ b/src/mame/drivers/fortecar.cpp
@@ -441,18 +441,18 @@ R = 82 Ohms Pull Down.
bit0 = BIT(color_prom[i], 0);
bit1 = BIT(color_prom[i], 1);
bit2 = BIT(color_prom[i], 2);
- int const r = combine_weights(weights_r, bit0, bit1, bit2);
+ int const r = combine_3_weights(weights_r, bit0, bit1, bit2);
// green component
bit0 = BIT(color_prom[i], 3);
bit1 = BIT(color_prom[i], 4);
bit2 = BIT(color_prom[i], 5);
- int const g = combine_weights(weights_g, bit0, bit1, bit2);
+ int const g = combine_3_weights(weights_g, bit0, bit1, bit2);
// blue component
bit0 = BIT(color_prom[i], 6);
bit1 = BIT(color_prom[i], 7);
- int const b = combine_weights(weights_b, bit0, bit1);
+ int const b = combine_2_weights(weights_b, bit0, bit1);
palette.set_pen_color(i, rgb_t(r, g, b));
}
@@ -682,25 +682,24 @@ void fortecar_state::machine_reset()
* Machine Drivers *
***********************************/
-void fortecar_state::fortecar(machine_config &config)
-{
+MACHINE_CONFIG_START(fortecar_state::fortecar)
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK); /* 3 MHz, measured */
- m_maincpu->set_addrmap(AS_PROGRAM, &fortecar_state::fortecar_map);
- m_maincpu->set_addrmap(AS_IO, &fortecar_state::fortecar_ports);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK) /* 3 MHz, measured */
+ MCFG_DEVICE_PROGRAM_MAP(fortecar_map)
+ MCFG_DEVICE_IO_MAP(fortecar_ports)
WATCHDOG_TIMER(config, m_watchdog).set_time(attotime::from_msec(200)); /* guess */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(640, 256);
- screen.set_visarea(0, 600-1, 0, 240-1); /* driven by CRTC */
- screen.set_screen_update(FUNC(fortecar_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(640, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 600-1, 0, 240-1) /* driven by CRTC */
+ MCFG_SCREEN_UPDATE_DRIVER(fortecar_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
EEPROM_93C56_16BIT(config, "eeprom").default_value(0);
@@ -729,7 +728,7 @@ void fortecar_state::fortecar(machine_config &config)
aysnd.port_a_write_callback().set(FUNC(fortecar_state::ayporta_w));
aysnd.port_b_write_callback().set(FUNC(fortecar_state::ayportb_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/*******************************
diff --git a/src/mame/drivers/fp1100.cpp b/src/mame/drivers/fp1100.cpp
index a6dd5521607..cfa68976a50 100644
--- a/src/mame/drivers/fp1100.cpp
+++ b/src/mame/drivers/fp1100.cpp
@@ -638,13 +638,12 @@ void fp1100_state::init_fp1100()
membank("bankw0")->configure_entry(0, &wram[0x0000]);
}
-void fp1100_state::fp1100(machine_config &config)
-{
+MACHINE_CONFIG_START(fp1100_state::fp1100)
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLOCK/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &fp1100_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &fp1100_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(fp1100_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", fp1100_state, vblank_irq)
upd7801_device &sub(UPD7801(config, m_subcpu, MAIN_CLOCK/4));
sub.set_addrmap(AS_PROGRAM, &fp1100_state::sub_map);
@@ -656,14 +655,14 @@ void fp1100_state::fp1100(machine_config &config)
sub.txd_func().set(FUNC(fp1100_state::cass_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 480);
- screen.set_visarea_full();
- screen.set_screen_update("crtc", FUNC(h46505_device::screen_update));
- PALETTE(config, m_palette).set_entries(8);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_fp1100);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", h46505_device, screen_update)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_fp1100)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -678,17 +677,15 @@ void fp1100_state::fp1100(machine_config &config)
m_crtc->set_update_row_callback(FUNC(fp1100_state::crtc_update_row), this);
/* Printer */
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(fp1100_state::centronics_busy_w));
-
- output_latch_device &latch(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(latch);
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, fp1100_state, centronics_busy_w))
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
/* Cassette */
- CASSETTE(config, m_cass);
- m_cass->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- TIMER(config, "timer_c").configure_periodic(FUNC(fp1100_state::timer_c), attotime::from_hz(4800)); // cass write
-}
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_c", fp1100_state, timer_c, attotime::from_hz(4800)) // cass write
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( fp1100 )
diff --git a/src/mame/drivers/fp6000.cpp b/src/mame/drivers/fp6000.cpp
index ef42b50c823..a819645df5f 100644
--- a/src/mame/drivers/fp6000.cpp
+++ b/src/mame/drivers/fp6000.cpp
@@ -170,13 +170,13 @@ WRITE8_MEMBER(fp6000_state::fp6000_pcg_w)
WRITE8_MEMBER(fp6000_state::fp6000_6845_address_w)
{
m_crtc_index = data;
- m_crtc->address_w(data);
+ m_crtc->address_w(space, offset, data);
}
WRITE8_MEMBER(fp6000_state::fp6000_6845_data_w)
{
m_crtc_vreg[m_crtc_index] = data;
- m_crtc->register_w(data);
+ m_crtc->register_w(space, offset, data);
}
void fp6000_state::fp6000_map(address_map &map)
@@ -297,31 +297,31 @@ void fp6000_state::machine_reset()
{
}
-void fp6000_state::fp6000(machine_config &config)
-{
+MACHINE_CONFIG_START(fp6000_state::fp6000)
/* basic machine hardware */
- I8086(config, m_maincpu, 16000000/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &fp6000_state::fp6000_map);
- m_maincpu->set_addrmap(AS_IO, &fp6000_state::fp6000_io);
+ MCFG_DEVICE_ADD("maincpu", I8086, 16000000/2)
+ MCFG_DEVICE_PROGRAM_MAP(fp6000_map)
+ MCFG_DEVICE_IO_MAP(fp6000_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 480);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(fp6000_state::screen_update_fp6000));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(fp6000_state, screen_update_fp6000)
+ MCFG_SCREEN_PALETTE("palette")
H46505(config, m_crtc, 16000000/5); /* unknown clock, hand tuned to get ~60 fps */
m_crtc->set_screen("screen");
m_crtc->set_show_border_area(false);
m_crtc->set_char_width(8);
- PALETTE(config, m_palette).set_entries(8);
+ MCFG_PALETTE_ADD("palette", 8)
+// MCFG_PALETTE_INIT(black_and_white)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_fp6000)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_fp6000);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( fp6000 )
diff --git a/src/mame/drivers/freekick.cpp b/src/mame/drivers/freekick.cpp
index e39596ebe03..3d891327045 100644
--- a/src/mame/drivers/freekick.cpp
+++ b/src/mame/drivers/freekick.cpp
@@ -42,68 +42,6 @@ TODO:
To enter Test Mode - press Button1 durning RESET (code at $79d)
-****************************************************************************
-
- Perfect Billiard/Gigas Omega
- ---------------------- -----
-
- GND A1 B1 GND GND 1A 1B GND
- GND A2 B2 GND GND 2A 2B GND
- +5V A3 B3 +5V +5V 3A 3B GND
- +5V A4 B4 +5V +5V 4A 4B GND
- +12V A5 B5 +12V +12V 5A 5B GND
- SPEAKER(+) A6 B6 SPEAKER(-) SPEAKER(+) 6A 6B SPEAKER(-)
- COIN METER 1 A7 B7 COIN METER 2 COIN A 7A 7B COUNTER B
- COIN SW1 A8 B8 COIN SW2 COUNTER A 8A 8B COIN B
- 1P START A9 B9 2P START 1P START 9A 9B 2P START
- 1P UP A10 B10 2P UP COIN EMPTY SW 10A 10B
- 1P DOWN A11 B11 2P DOWN 11A 11B
- 1P LEFT A12 B12 2P LEFT 12A 12B
- 1P RIGHT A13 B13 2P RIGHT 13A 13B
- 1P SHOOT A14 B14 2P SHOOT 1P SHOOT 14A 14B 2P SHOOT
- A15 B15 15A 15B
- RED A16 B16 BLUE RED 16A 16B BLUE
- GREEN A17 B17 SYNC GREEN 17A 17B SYNC
- GND A18 B18 GND GND 18A 18B GND
- 1P L 19A 19B 2P L
- 1P R 20A 20B 2P R
- +5V 21A 21B GND
- AC IN 22A 22B AC OUT
-
- Counter Run/Free Kick
- ---------------------
-
- GND 1B 1A GND
- GND 2B 2A GND
- +5V 3B 3A +5V
- +5V 4B 4A +5V
- 5B 5A
- +12V 6B 6A +12V
- INPUT PREVENTION KEY 7B 7A INPUT PREVENTION KEY
- COUNTER B 8B 8A COUNTER A
- 9B 9A
- SPEAKER(-) 10B 10A SPEAKER(+)
- 11B 11A
- GREEN 12B 12A RED
- SYNC 13B 13A BLUE
- 14B 14A GND
- 15B 15A
- COIN B(SERVICE) 16B 16A COIN A
- 2P START 17B 17A 1P START
- 2P UP 18B 18A 1P UP
- 2P DOWN 19B 19A 1P DOWN
- 2P LEFT 20B 20A 1P LEFT
- 2P RIGHT 21B 21A 1P RIGHT
- 2P PUSH 1 22B 22A 1P PUSH 1
- 2P PUSH 2 23B 23A 1P PUSH 2
- 24B 24A
- 2PL (Sensor Dial) 25B 25A 1PL (Sensor Dial)
- 2PR (Sensor Dial) 26B 26A 1PR (Sensor Dial)
- GND 27B 27A GND
- GND 28B 28A GND
-
-****************************************************************************
-
*/
#include "emu.h"
@@ -268,10 +206,10 @@ void freekick_state::omega_map(address_map &map)
map(0xe800, 0xe800).portr("IN1");
map(0xf000, 0xf000).portr("DSW1").nopw(); //bankswitch ?
map(0xf800, 0xf800).portr("DSW2");
- map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::write));
- map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::write));
- map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::write));
- map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::write));
+ map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::command_w));
+ map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::command_w));
+ map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::command_w));
+ map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::command_w));
}
void freekick_state::pbillrd_map(address_map &map)
@@ -287,10 +225,10 @@ void freekick_state::pbillrd_map(address_map &map)
map(0xe800, 0xe800).portr("IN1");
map(0xf000, 0xf000).portr("DSW1").w(FUNC(freekick_state::pbillrd_bankswitch_w));
map(0xf800, 0xf800).portr("DSW2");
- map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::write));
- map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::write));
- map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::write));
- map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::write));
+ map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::command_w));
+ map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::command_w));
+ map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::command_w));
+ map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::command_w));
}
void freekick_state::decrypted_opcodes_map(address_map &map)
@@ -312,10 +250,10 @@ void freekick_state::freekick_map(address_map &map)
map(0xf802, 0xf802).nopr(); //MUST return bit 0 = 0, otherwise game resets
map(0xf803, 0xf803).r(FUNC(freekick_state::spinner_r));
map(0xf800, 0xf807).w(m_outlatch, FUNC(ls259_device::write_d0));
- map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::write));
- map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::write));
- map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::write));
- map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::write));
+ map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::command_w));
+ map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::command_w));
+ map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::command_w));
+ map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::command_w));
}
void freekick_state::gigas_map(address_map &map)
@@ -330,10 +268,10 @@ void freekick_state::gigas_map(address_map &map)
map(0xe800, 0xe800).portr("IN1");
map(0xf000, 0xf000).portr("DSW1").nopw(); //bankswitch ?
map(0xf800, 0xf800).portr("DSW2");
- map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::write));
- map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::write));
- map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::write));
- map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::write));
+ map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::command_w));
+ map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::command_w));
+ map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::command_w));
+ map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::command_w));
}
void freekick_state::omega_io_map(address_map &map)
@@ -792,13 +730,12 @@ MACHINE_RESET_MEMBER(freekick_state,oigas)
m_cnt = 0;
}
-void freekick_state::omega(machine_config &config)
-{
- MC8123(config, m_maincpu, XTAL(18'432'000)/6); // unknown divisor
- m_maincpu->set_addrmap(AS_PROGRAM, &freekick_state::omega_map);
- m_maincpu->set_addrmap(AS_IO, &freekick_state::omega_io_map);
- m_maincpu->set_addrmap(AS_OPCODES, &freekick_state::decrypted_opcodes_map);
- m_maincpu->set_periodic_int(FUNC(freekick_state::irq0_line_hold), attotime::from_hz(120)); // measured on PCB
+MACHINE_CONFIG_START(freekick_state::omega)
+ MCFG_DEVICE_ADD("maincpu", MC8123, XTAL(18'432'000)/6) // unknown divisor
+ MCFG_DEVICE_PROGRAM_MAP(omega_map)
+ MCFG_DEVICE_IO_MAP(omega_io_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(freekick_state, irq0_line_hold, 120) // measured on PCB
LS259(config, m_outlatch); // 3M
m_outlatch->q_out_cb<0>().set(FUNC(freekick_state::flipscreen_w));
@@ -808,33 +745,37 @@ void freekick_state::omega(machine_config &config)
m_outlatch->q_out_cb<5>().set_nop(); // ???
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(18'432'000)/3, 768/2, 0, 512/2, 263, 0+16, 224+16); // unknown divisor
- screen.set_screen_update(FUNC(freekick_state::screen_update_gigas));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(freekick_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(18'432'000)/3, 768/2, 0, 512/2, 263, 0+16, 224+16) // unknown divisor
+ MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_gigas)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, freekick_state, vblank_irq))
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_freekick);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_freekick)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 0x200);
// sound hardware
SPEAKER(config, "mono").front_center();
- SN76489A(config, "sn1", XTAL(18'432'000)/6).add_route(ALL_OUTPUTS, "mono", 0.50); // unknown divisor
+ MCFG_DEVICE_ADD("sn1", SN76489A, XTAL(18'432'000)/6) // unknown divisor
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- SN76489A(config, "sn2", XTAL(18'432'000)/6).add_route(ALL_OUTPUTS, "mono", 0.50); // unknown divisor
+ MCFG_DEVICE_ADD("sn2", SN76489A, XTAL(18'432'000)/6) // unknown divisor
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- SN76489A(config, "sn3", XTAL(18'432'000)/6).add_route(ALL_OUTPUTS, "mono", 0.50); // unknown divisor
+ MCFG_DEVICE_ADD("sn3", SN76489A, XTAL(18'432'000)/6) // unknown divisor
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- SN76489A(config, "sn4", XTAL(18'432'000)/6).add_route(ALL_OUTPUTS, "mono", 0.50); // unknown divisor
-}
+ MCFG_DEVICE_ADD("sn4", SN76489A, XTAL(18'432'000)/6) // unknown divisor
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(freekick_state::base)
-void freekick_state::base(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &freekick_state::pbillrd_map);
- m_maincpu->set_periodic_int(FUNC(freekick_state::irq0_line_hold), attotime::from_hz(120)); // measured on PCB
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(pbillrd_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(freekick_state, irq0_line_hold, 120) // measured on PCB
LS259(config, m_outlatch);
m_outlatch->q_out_cb<2>().set(FUNC(freekick_state::coin1_w));
@@ -842,26 +783,30 @@ void freekick_state::base(machine_config &config)
m_outlatch->q_out_cb<4>().set(FUNC(freekick_state::nmi_enable_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(12'000'000)/2, 768/2, 0, 512/2, 263, 0+16, 224+16);
- screen.set_screen_update(FUNC(freekick_state::screen_update_pbillrd));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(freekick_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(12'000'000)/2, 768/2, 0, 512/2, 263, 0+16, 224+16)
+ MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_pbillrd)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, freekick_state, vblank_irq))
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_freekick);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_freekick)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 0x200);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489A(config, "sn1", XTAL(12'000'000)/4).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("sn1", SN76489A, XTAL(12'000'000)/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- SN76489A(config, "sn2", XTAL(12'000'000)/4).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("sn2", SN76489A, XTAL(12'000'000)/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- SN76489A(config, "sn3", XTAL(12'000'000)/4).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("sn3", SN76489A, XTAL(12'000'000)/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- SN76489A(config, "sn4", XTAL(12'000'000)/4).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("sn4", SN76489A, XTAL(12'000'000)/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
void freekick_state::pbillrd(machine_config &config)
{
@@ -876,22 +821,21 @@ void freekick_state::pbillrd(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(freekick_state,freekick)
}
-void freekick_state::pbillrdm(machine_config &config)
-{
+MACHINE_CONFIG_START(freekick_state::pbillrdm)
pbillrd(config);
- MC8123(config.replace(), m_maincpu, XTAL(12'000'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &freekick_state::pbillrd_map);
- m_maincpu->set_addrmap(AS_OPCODES, &freekick_state::decrypted_opcodes_map);
- m_maincpu->set_periodic_int(FUNC(freekick_state::irq0_line_hold), attotime::from_hz(120)); // measured on PCB
-}
+ MCFG_DEVICE_REPLACE("maincpu", MC8123, XTAL(12'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(pbillrd_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(freekick_state, irq0_line_hold, 120) // measured on PCB
+MACHINE_CONFIG_END
-void freekick_state::freekick(machine_config &config)
-{
+MACHINE_CONFIG_START(freekick_state::freekick)
base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &freekick_state::freekick_map);
- m_maincpu->set_addrmap(AS_IO, &freekick_state::freekick_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(freekick_map)
+ MCFG_DEVICE_IO_MAP(freekick_io_map)
// 5C
m_outlatch->q_out_cb<0>().set(FUNC(freekick_state::flipscreen_w));
@@ -911,17 +855,18 @@ void freekick_state::freekick(machine_config &config)
ppi1.in_pc_callback().set_ioport("DSW3");
/* video hardware */
- subdevice<screen_device>("screen")->set_screen_update(FUNC(freekick_state::screen_update_freekick));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_freekick)
+MACHINE_CONFIG_END
-void freekick_state::gigas(machine_config &config)
-{
+MACHINE_CONFIG_START(freekick_state::gigas)
base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &freekick_state::gigas_map);
- m_maincpu->set_addrmap(AS_IO, &freekick_state::gigas_io_map);
- m_maincpu->set_addrmap(AS_OPCODES, &freekick_state::decrypted_opcodes_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(gigas_map)
+ MCFG_DEVICE_IO_MAP(gigas_io_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
m_outlatch->q_out_cb<0>().set(FUNC(freekick_state::flipscreen_w));
m_outlatch->q_out_cb<5>().set_nop(); // ???
@@ -930,19 +875,19 @@ void freekick_state::gigas(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(freekick_state,freekick)
/* video hardware */
- subdevice<screen_device>("screen")->set_screen_update(FUNC(freekick_state::screen_update_gigas));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_gigas)
+MACHINE_CONFIG_END
-void freekick_state::gigasm(machine_config &config)
-{
+MACHINE_CONFIG_START(freekick_state::gigasm)
base(config);
/* basic machine hardware */
- MC8123(config.replace(), m_maincpu, XTAL(12'000'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &freekick_state::gigas_map);
- m_maincpu->set_addrmap(AS_IO, &freekick_state::gigas_io_map);
- m_maincpu->set_addrmap(AS_OPCODES, &freekick_state::decrypted_opcodes_map);
- m_maincpu->set_periodic_int(FUNC(freekick_state::irq0_line_hold), attotime::from_hz(120)); // measured on PCB
+ MCFG_DEVICE_REPLACE("maincpu", MC8123, XTAL(12'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(gigas_map)
+ MCFG_DEVICE_IO_MAP(gigas_io_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(freekick_state, irq0_line_hold, 120) // measured on PCB
m_outlatch->q_out_cb<0>().set(FUNC(freekick_state::flipscreen_w));
m_outlatch->q_out_cb<5>().set_nop(); // ???
@@ -951,19 +896,20 @@ void freekick_state::gigasm(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(freekick_state,freekick)
/* video hardware */
- subdevice<screen_device>("screen")->set_screen_update(FUNC(freekick_state::screen_update_gigas));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_gigas)
+MACHINE_CONFIG_END
-void freekick_state::oigas(machine_config &config)
-{
+MACHINE_CONFIG_START(freekick_state::oigas)
gigas(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &freekick_state::oigas_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(oigas_io_map)
MCFG_MACHINE_START_OVERRIDE(freekick_state,oigas)
MCFG_MACHINE_RESET_OVERRIDE(freekick_state,oigas)
-}
+MACHINE_CONFIG_END
@@ -1342,20 +1288,20 @@ Note: MCU dump (in oigas?) has fixed bits, but read is good. If not correct, it'
*/
ROM_START( gigasb )
ROM_REGION( 2*0xc000, "maincpu", 0 )
- ROM_LOAD( "g-7.r8", 0x0c000, 0x4000, CRC(daf4e88d) SHA1(391dff914ce8e9b7975fc8827c066d7db16c4171) )
- ROM_CONTINUE( 0x00000, 0x4000 )
- ROM_LOAD( "g-8.t8", 0x10000, 0x8000, CRC(4ab4c1f1) SHA1(63d8f489c7a8271e99a66d97e6eb0eb252cb2b67) )
- ROM_CONTINUE( 0x04000, 0x8000 )
+ ROM_LOAD( "g-7", 0x0c000, 0x4000, CRC(daf4e88d) SHA1(391dff914ce8e9b7975fc8827c066d7db16c4171) )
+ ROM_CONTINUE( 0x00000, 0x4000 )
+ ROM_LOAD( "g-8", 0x10000, 0x8000, CRC(4ab4c1f1) SHA1(63d8f489c7a8271e99a66d97e6eb0eb252cb2b67) )
+ ROM_CONTINUE( 0x04000, 0x8000 )
ROM_REGION( 0xc000, "gfx1", 0 ) /* GFX */
- ROM_LOAD( "g-4.3l", 0x00000, 0x04000, CRC(8ed78981) SHA1(1f2c0584fcc6d04b042638c7b9a7e21fc560ca3d) )
- ROM_LOAD( "g-5.3k", 0x04000, 0x04000, CRC(0645ec2d) SHA1(ecf8b1ce98f845b5b32e7fc959cea7679a149d74) )
- ROM_LOAD( "g-6.3fh", 0x08000, 0x04000, CRC(99e9cb27) SHA1(d141d6caa077e3cd182eb64cf803613ac17e7d09) )
+ ROM_LOAD( "g-4", 0x00000, 0x04000, CRC(8ed78981) SHA1(1f2c0584fcc6d04b042638c7b9a7e21fc560ca3d) )
+ ROM_LOAD( "g-5", 0x04000, 0x04000, CRC(0645ec2d) SHA1(ecf8b1ce98f845b5b32e7fc959cea7679a149d74) )
+ ROM_LOAD( "g-6", 0x08000, 0x04000, CRC(99e9cb27) SHA1(d141d6caa077e3cd182eb64cf803613ac17e7d09) )
ROM_REGION( 0xc000, "gfx2", 0 ) /* GFX */
- ROM_LOAD( "g-1.3t", 0x00000, 0x04000, CRC(d78fae6e) SHA1(a7bf3b213f2a3a51b964959bd45003351670575a) )
- ROM_LOAD( "g-3.3p", 0x04000, 0x04000, CRC(37df4a4c) SHA1(ab996db636d89845474529ba2573307046fb96ee) )
- ROM_LOAD( "g-2.3r", 0x08000, 0x04000, CRC(3a46e354) SHA1(ebd6a5db4c9cdfc6fabe6b412a704aaf03c32d7c) )
+ ROM_LOAD( "g-1", 0x00000, 0x04000, CRC(d78fae6e) SHA1(a7bf3b213f2a3a51b964959bd45003351670575a) )
+ ROM_LOAD( "g-3", 0x04000, 0x04000, CRC(37df4a4c) SHA1(ab996db636d89845474529ba2573307046fb96ee) )
+ ROM_LOAD( "g-2", 0x08000, 0x04000, CRC(3a46e354) SHA1(ebd6a5db4c9cdfc6fabe6b412a704aaf03c32d7c) )
ROM_REGION( 0x0600, "proms", 0 )
ROM_LOAD( "1.pr", 0x0000, 0x0100, CRC(a784e71f) SHA1(1741ce98d719bad6cc5ea42337ef897f2435bbab) ) /* 24S10N, 82S129 or compatible? */
@@ -1457,63 +1403,31 @@ ROM_END
// Omega code/gfx looks to be based on gigas mk2, given the "MarkII" graphic in the gfx roms and gigas MarkII style continue numbers etc
// PCB is marked "K.K NS6102-A" and seems to be somewhere between gigas hardware and freekick hardware (3x dipswitch arrays)
// Supposedly an extremely limited release with ~10 PCBs produced.
-// A second PCB found with the CPU (under a metal cap) to be a NEC MC-8123 317-5002 - same as Gigas & Gigas Mark II, however
-// neither Omega set will work with the 317-5002 key in MAME, so maybe the CPU was factory reprogrammed?
-// A single byte difference at 0x1120 in 17.M10 (when decoded) looks like a legit bug fix as it changes a branch
-// which incorrectly jumps over a bit of initialization code
-
-ROM_START( omega ) // ROM at M10 labeled "17" to indicate a later Bug fix version
- ROM_REGION(0xc000, "maincpu", 0) // encrypted
- ROM_LOAD( "17.m10", 0x0000, 0x4000, CRC(c7de0993) SHA1(35ecd464935faba1dc7d0dbf48e1b17153626bfd) ) // 27128
- ROM_LOAD( "8.n10", 0x4000, 0x8000, CRC(9bb61910) SHA1(f8a1210dbf93e901e246e6adf4cd905acc3ef376) ) // 27256
-
- ROM_REGION(0x2000, "maincpu:key", 0) // MC8123 key
- ROM_LOAD( "omega.key", 0x0000, 0x2000, CRC(0a63943f) SHA1(9e581ea0c5bf6c0ed5d402d3bab053766b8e44c2) )
-
- ROM_REGION(0xc000, "gfx1", 0)
- ROM_LOAD( "4.f10", 0x00000, 0x04000, CRC(bf780a8e) SHA1(53bfabf74f1a7782c6c1803498a24da0bf8db995) ) // 27128
- ROM_LOAD( "5.h10", 0x04000, 0x04000, CRC(b491647f) SHA1(88017033a781ecc49a83241bc49e2077a480ac2b) ) // 27128
- ROM_LOAD( "6.j10", 0x08000, 0x04000, CRC(65beba5b) SHA1(e6d61dc52dcbb30570b48d7b1d7807dd0be41400) ) // 27128
-
- ROM_REGION(0xc000, "gfx2", 0)
- ROM_LOAD( "3.d10", 0x00000, 0x04000, CRC(c678b202) SHA1(ee93385e11158ccaf51a22d813bd7020c04cfdad) ) // 27128
- ROM_LOAD( "1.a10", 0x04000, 0x04000, CRC(e0aeada9) SHA1(ed00f6dca4f9701ff89390922d39341b179597c7) ) // 27128
- ROM_LOAD( "2.c10", 0x08000, 0x04000, CRC(dbc0a47f) SHA1(b617c5a10c655e7befaeaecd9ce736e972285e6b) ) // 27128
-
- ROM_REGION(0x600, "proms", 0)
- ROM_LOAD( "tbp24s10n.3f", 0x0000, 0x100, CRC(75ec7472) SHA1(868811e838c570a0f576a0ece249cab2d4274d65) ) /* Or compatible type prom like the 82S129 */
- ROM_LOAD( "tbp24s10n.4f", 0x0100, 0x100, CRC(5113a114) SHA1(3a5ab68c93d1f2c05ceb0311e12a54fd124d8435) )
- ROM_LOAD( "tbp24s10n.3g", 0x0200, 0x100, CRC(b6b5d4a0) SHA1(2b7ba59a6c185326e11ce8ccd96b3c8cfd652fdf) )
- ROM_LOAD( "tbp24s10n.4g", 0x0300, 0x100, CRC(931bc299) SHA1(f116f1d6a4324b86b0aae0a5a040236b3a4fd12d) )
- ROM_LOAD( "tbp24s10n.3e", 0x0400, 0x100, CRC(899e089d) SHA1(5a485d3ef7d2102451ff76452cac106061cc5cd6) )
- ROM_LOAD( "tbp24s10n.4e", 0x0500, 0x100, CRC(28321dd8) SHA1(4ba0f6c381ef929a476d4d7aa71b1397c48a644e) )
-ROM_END
-
-ROM_START( omegaa ) // ROM at M10 labeled "7" to indicate the original version skipping some initialization code
+ROM_START( omega )
ROM_REGION(0xc000, "maincpu", 0) // encrypted
- ROM_LOAD(" 7.m10", 0x0000, 0x4000, CRC(6e7d77e1) SHA1(7675cea41391595cd7a3e1893478185989f4c319) ) // 27128
- ROM_LOAD(" 8.n10", 0x4000, 0x8000, CRC(9bb61910) SHA1(f8a1210dbf93e901e246e6adf4cd905acc3ef376) ) // 27256
+ ROM_LOAD("17.m10", 0x0000, 0x4000, CRC(c7de0993) SHA1(35ecd464935faba1dc7d0dbf48e1b17153626bfd)) // 27128
+ ROM_LOAD("8.n10", 0x4000, 0x8000, CRC(9bb61910) SHA1(f8a1210dbf93e901e246e6adf4cd905acc3ef376)) // 27256
ROM_REGION(0x2000, "maincpu:key", 0) // MC8123 key
- ROM_LOAD( "omega.key", 0x0000, 0x2000, CRC(0a63943f) SHA1(9e581ea0c5bf6c0ed5d402d3bab053766b8e44c2) )
+ ROM_LOAD("omega.key", 0x0000, 0x2000, CRC(0a63943f) SHA1(9e581ea0c5bf6c0ed5d402d3bab053766b8e44c2))
ROM_REGION(0xc000, "gfx1", 0)
- ROM_LOAD( "4.f10", 0x00000, 0x04000, CRC(bf780a8e) SHA1(53bfabf74f1a7782c6c1803498a24da0bf8db995) ) // 27128
- ROM_LOAD( "5.h10", 0x04000, 0x04000, CRC(b491647f) SHA1(88017033a781ecc49a83241bc49e2077a480ac2b) ) // 27128
- ROM_LOAD( "6.j10", 0x08000, 0x04000, CRC(65beba5b) SHA1(e6d61dc52dcbb30570b48d7b1d7807dd0be41400) ) // 27128
+ ROM_LOAD("4.f10", 0x00000, 0x04000, CRC(bf780a8e) SHA1(53bfabf74f1a7782c6c1803498a24da0bf8db995)) // 27128
+ ROM_LOAD("5.h10", 0x04000, 0x04000, CRC(b491647f) SHA1(88017033a781ecc49a83241bc49e2077a480ac2b)) // 27128
+ ROM_LOAD("6.j10", 0x08000, 0x04000, CRC(65beba5b) SHA1(e6d61dc52dcbb30570b48d7b1d7807dd0be41400)) // 27128
ROM_REGION(0xc000, "gfx2", 0)
- ROM_LOAD( "3.d10", 0x00000, 0x04000, CRC(c678b202) SHA1(ee93385e11158ccaf51a22d813bd7020c04cfdad) ) // 27128
- ROM_LOAD( "1.a10", 0x04000, 0x04000, CRC(e0aeada9) SHA1(ed00f6dca4f9701ff89390922d39341b179597c7) ) // 27128
- ROM_LOAD( "2.c10", 0x08000, 0x04000, CRC(dbc0a47f) SHA1(b617c5a10c655e7befaeaecd9ce736e972285e6b) ) // 27128
+ ROM_LOAD("3.d10", 0x00000, 0x04000, CRC(c678b202) SHA1(ee93385e11158ccaf51a22d813bd7020c04cfdad)) // 27128
+ ROM_LOAD("1.a10", 0x04000, 0x04000, CRC(e0aeada9) SHA1(ed00f6dca4f9701ff89390922d39341b179597c7)) // 27128
+ ROM_LOAD("2.c10", 0x08000, 0x04000, CRC(dbc0a47f) SHA1(b617c5a10c655e7befaeaecd9ce736e972285e6b)) // 27128
ROM_REGION(0x600, "proms", 0)
- ROM_LOAD( "tbp24s10n.3f", 0x0000, 0x100, CRC(75ec7472) SHA1(868811e838c570a0f576a0ece249cab2d4274d65) ) /* Or compatible type prom like the 82S129 */
- ROM_LOAD( "tbp24s10n.4f", 0x0100, 0x100, CRC(5113a114) SHA1(3a5ab68c93d1f2c05ceb0311e12a54fd124d8435) )
- ROM_LOAD( "tbp24s10n.3g", 0x0200, 0x100, CRC(b6b5d4a0) SHA1(2b7ba59a6c185326e11ce8ccd96b3c8cfd652fdf) )
- ROM_LOAD( "tbp24s10n.4g", 0x0300, 0x100, CRC(931bc299) SHA1(f116f1d6a4324b86b0aae0a5a040236b3a4fd12d) )
- ROM_LOAD( "tbp24s10n.3e", 0x0400, 0x100, CRC(899e089d) SHA1(5a485d3ef7d2102451ff76452cac106061cc5cd6) )
- ROM_LOAD( "tbp24s10n.4e", 0x0500, 0x100, CRC(28321dd8) SHA1(4ba0f6c381ef929a476d4d7aa71b1397c48a644e) )
+ ROM_LOAD("tbp24s10n.3f", 0x0000, 0x100, CRC(75ec7472) SHA1(868811e838c570a0f576a0ece249cab2d4274d65) ) /* Or compatible type prom like the 82S129 */
+ ROM_LOAD("tbp24s10n.4f", 0x0100, 0x100, CRC(5113a114) SHA1(3a5ab68c93d1f2c05ceb0311e12a54fd124d8435) )
+ ROM_LOAD("tbp24s10n.3g", 0x0200, 0x100, CRC(b6b5d4a0) SHA1(2b7ba59a6c185326e11ce8ccd96b3c8cfd652fdf) )
+ ROM_LOAD("tbp24s10n.4g", 0x0300, 0x100, CRC(931bc299) SHA1(f116f1d6a4324b86b0aae0a5a040236b3a4fd12d) )
+ ROM_LOAD("tbp24s10n.3e", 0x0400, 0x100, CRC(899e089d) SHA1(5a485d3ef7d2102451ff76452cac106061cc5cd6) )
+ ROM_LOAD("tbp24s10n.4e", 0x0500, 0x100, CRC(28321dd8) SHA1(4ba0f6c381ef929a476d4d7aa71b1397c48a644e) )
ROM_END
@@ -1559,8 +1473,7 @@ GAME( 1986, gigasb, gigas, gigas, gigas, freekick_state, init_gigas
GAME( 1986, oigas, gigas , oigas, gigas, freekick_state, init_gigasb, ROT270, "bootleg", "Oigas (bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, gigasm2, 0, gigasm, gigasm2, freekick_state, init_gigas, ROT270, "Sega", "Gigas Mark II (MC-8123, 317-5002)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, gigasm2b, gigasm2, gigas, gigasm2, freekick_state, init_gigasb, ROT270, "bootleg", "Gigas Mark II (bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, omega, 0, omega, omega, freekick_state, init_gigas, ROT270, "Nihon System", "Omega", MACHINE_SUPPORTS_SAVE ) // Bug fix version
-GAME( 1986, omegaa, omega, omega, omega, freekick_state, init_gigas, ROT270, "Nihon System", "Omega (earlier)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, omega, 0, omega, omega, freekick_state, init_gigas, ROT270, "Nihon System", "Omega", MACHINE_SUPPORTS_SAVE )
GAME( 1987, pbillrd, 0, pbillrd, pbillrd, freekick_state, empty_init, ROT0, "Nihon System", "Perfect Billiard", MACHINE_SUPPORTS_SAVE )
GAME( 1987, pbillrds, pbillrd, pbillrdm, pbillrd, freekick_state, init_pbillrds, ROT0, "Nihon System", "Perfect Billiard (MC-8123, 317-0030)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, pbillrdsa, pbillrd, pbillrdm, pbillrd, freekick_state, init_pbillrds, ROT0, "Nihon System", "Perfect Billiard (MC-8123, 317-5008)", MACHINE_SUPPORTS_SAVE ) // sticker on CPU module different (wrong?) functionality the same
diff --git a/src/mame/drivers/freeway.cpp b/src/mame/drivers/freeway.cpp
deleted file mode 100644
index 38db5cdcc93..00000000000
--- a/src/mame/drivers/freeway.cpp
+++ /dev/null
@@ -1,191 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:AJR
-/*********************************************************************
-
- FreeWay (c) 1999 NVC Electronica Ltd.
-
- Skeleton driver.
-
-*********************************************************************/
-
-#include "emu.h"
-#include "bus/rs232/rs232.h"
-#include "cpu/i86/i86.h"
-#include "machine/ins8250.h"
-#include "machine/pit8253.h"
-#include "machine/pic8259.h"
-#include "machine/timekpr.h"
-#include "video/mc6845.h"
-#include "emupal.h"
-#include "screen.h"
-
-class freeway_state : public driver_device
-{
-public:
- freeway_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_pic(*this, "pic")
- , m_charram(*this, "charram")
- , m_colorram(*this, "colorram")
- , m_lamps(*this, "lamp%u", 1U)
- {
- }
-
- void freeway(machine_config &config);
-
- DECLARE_WRITE_LINE_MEMBER(nmi_w);
-
-protected:
- virtual void machine_start() override;
-
-private:
- MC6845_UPDATE_ROW(update_row);
-
- void lamps_w(u8 data);
-
- void mem_map(address_map &map);
- void io_map(address_map &map);
-
- required_device<cpu_device> m_maincpu;
- required_device<pic8259_device> m_pic;
-
- required_shared_ptr<u8> m_charram;
- required_shared_ptr<u8> m_colorram;
-
- output_finder<3> m_lamps;
-};
-
-void freeway_state::machine_start()
-{
- m_lamps.resolve();
-}
-
-MC6845_UPDATE_ROW(freeway_state::update_row)
-{
-}
-
-void freeway_state::lamps_w(u8 data)
-{
- for (int n = 0; n < 3; n++)
- m_lamps[n] = BIT(data, n);
-}
-
-WRITE_LINE_MEMBER(freeway_state::nmi_w)
-{
- m_maincpu->set_input_line(INPUT_LINE_NMI, state);
-}
-
-void freeway_state::mem_map(address_map &map)
-{
- map(0x00000, 0x07fff).ram();
- map(0x08000, 0x09fff).rw("timekpr", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write));
- map(0xa0000, 0xa0fff).ram().share("charram");
- map(0xa4000, 0xa4fff).ram().share("colorram");
- map(0xf0000, 0xfffff).rom().region("program", 0);
-}
-
-void freeway_state::io_map(address_map &map)
-{
- map(0x0020, 0x0021).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
- map(0x0030, 0x0033).w("pit", FUNC(pit8254_device::write));
- map(0x0040, 0x0047).rw("uart", FUNC(ns16450_device::ins8250_r), FUNC(ns16450_device::ins8250_w));
- map(0x00a3, 0x00a3).w(FUNC(freeway_state::lamps_w));
- map(0x00d0, 0x00d0).portr("CONFIG");
- map(0x03d0, 0x03d0).w("crtc", FUNC(mc6845_device::address_w));
- map(0x03d1, 0x03d1).w("crtc", FUNC(mc6845_device::register_w));
-}
-
-static INPUT_PORTS_START(freeway)
- PORT_START("CONFIG")
- PORT_DIPNAME(0x01, 0x00, "Screen Format")
- PORT_DIPSETTING(0x00, "PAL")
- PORT_DIPSETTING(0x01, "NTSC?") // 268 lines total, 58.3 Hz refresh
- PORT_BIT(0x08, 0x08, IPT_UNKNOWN)
- PORT_BIT(0xf6, 0xf6, IPT_UNKNOWN) // probably unused
-
- PORT_START("RESET")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_MEMORY_RESET) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, freeway_state, nmi_w)
-INPUT_PORTS_END
-
-static const gfx_layout char_layout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8,
-};
-
-static GFXDECODE_START(gfx_freeway)
- GFXDECODE_ENTRY("gfx", 0, char_layout, 0x0, 1)
-GFXDECODE_END
-
-void freeway_state::freeway(machine_config &config)
-{
- I8088(config, m_maincpu, 10_MHz_XTAL / 2); // divider unknown
- m_maincpu->set_addrmap(AS_PROGRAM, &freeway_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &freeway_state::io_map);
- m_maincpu->set_irq_acknowledge_callback("pic", FUNC(pic8259_device::inta_cb));
-
- PIC8259(config, m_pic);
- m_pic->out_int_callback().set_inputline(m_maincpu, 0);
-
- pit8254_device &pit(PIT8254(config, "pit"));
- pit.out_handler<0>().set(m_pic, FUNC(pic8259_device::ir0_w));
-
- M48T58(config, "timekpr");
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(10_MHz_XTAL / 2, 320, 0, 256, 312, 0, 256);
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
-
- PALETTE(config, "palette").set_entries(0x10);
- GFXDECODE(config, "gfxdecode", "palette", gfx_freeway);
-
- mc6845_device &crtc(MC6845(config, "crtc", 10_MHz_XTAL / 16));
- crtc.set_char_width(8);
- crtc.set_show_border_area(false);
- crtc.set_screen("screen");
- crtc.set_update_row_callback(FUNC(freeway_state::update_row), this);
- crtc.out_hsync_callback().set("pit", FUNC(pit8254_device::write_clk0)); // guess
-
- ns16450_device &uart(NS16450(config, "uart", 10_MHz_XTAL / 8)); // type unknown
- uart.out_int_callback().set(m_pic, FUNC(pic8259_device::ir2_w));
- uart.out_tx_callback().set("rs232", FUNC(rs232_port_device::write_txd));
- uart.out_rts_callback().set("rs232", FUNC(rs232_port_device::write_rts));
- uart.out_dtr_callback().set("rs232", FUNC(rs232_port_device::write_dtr));
-
- rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr));
- rs232.rxd_handler().set("uart", FUNC(ns16450_device::rx_w));
- rs232.cts_handler().set("uart", FUNC(ns16450_device::cts_w));
- rs232.dsr_handler().set("uart", FUNC(ns16450_device::dsr_w));
- rs232.dcd_handler().set("uart", FUNC(ns16450_device::dcd_w));
-}
-
-// 8088 CPU
-// Intel 8254 Programmable Interval Timer
-// Intel 8259
-// 2x 8k SRAM
-// 1x 32k SRAM
-// 6845 video chip
-// 5 roms
-// Oscillator 10 MHz
-
-ROM_START(freeway)
- ROM_REGION(0x10000, "program", 0)
- ROM_LOAD("vip88.bin", 0x00000, 0x10000, CRC(aeba6d5e) SHA1(bb84f7040bf1b6976cb2c50b1ffdc59ae88df223))
-
- ROM_REGION(0x18000, "gfx", 0)
- ROM_LOAD("sb_51.bin", 0x00000, 0x8000, CRC(d25bd328) SHA1(b8c692298f6dc5fd5ae2f9e7701e14b0436a95bb)) // xxx0xxxxxxxxxxx = 0xFF
- ROM_LOAD("sb_52.bin", 0x08000, 0x8000, CRC(f2b33acd) SHA1(e4786b4f00871d771aadacd9d6ec767691f4d939))
- ROM_LOAD("sb_53.bin", 0x10000, 0x8000, CRC(50407ae6) SHA1(2c6c4803905bed5f27c6783f99a24f8dee62c19b))
-
- ROM_REGION(0x8000, "cor", 0)
- ROM_LOAD("sb_cor.bin", 0x0000, 0x8000, CRC(5f86a160) SHA1(f21b7e0e6a407371c252d6fde6fcb32a2682824c)) // all 0xFF fill until 0x7C00; valid data is only 4 bits wide
-ROM_END
-
-
-GAME(1999, freeway, 0, freeway, freeway, freeway_state, empty_init, ROT0, "NVC Electronica", "FreeWay (V5.12)", MACHINE_IS_SKELETON)
diff --git a/src/mame/drivers/fresh.cpp b/src/mame/drivers/fresh.cpp
index d097612ba12..7201533c326 100644
--- a/src/mame/drivers/fresh.cpp
+++ b/src/mame/drivers/fresh.cpp
@@ -597,21 +597,21 @@ TIMER_DEVICE_CALLBACK_MEMBER(fresh_state::fake_scanline)
}
-void fresh_state::fresh(machine_config &config)
-{
+MACHINE_CONFIG_START(fresh_state::fresh)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 24000000/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &fresh_state::fresh_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(fresh_state::fake_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M68000, 24000000/2 )
+ MCFG_DEVICE_PROGRAM_MAP(fresh_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", fresh_state, fake_scanline, "screen", 0, 1)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(fresh_state::screen_update_fresh));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(fresh_state, screen_update_fresh)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 0x1000); // or 0xc00
GFXDECODE(config, m_gfxdecode, m_palette, gfx_fresh);
@@ -619,8 +619,9 @@ void fresh_state::fresh(machine_config &config)
/* sound hw? */
SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", 4000000).add_route(ALL_OUTPUTS, "mono", 1.0); // actual clock and type unknown
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2413, 4000000) // actual clock and type unknown
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( fresh )
diff --git a/src/mame/drivers/fromance.cpp b/src/mame/drivers/fromance.cpp
index 184a0416983..61ea744dabd 100644
--- a/src/mame/drivers/fromance.cpp
+++ b/src/mame/drivers/fromance.cpp
@@ -900,16 +900,16 @@ MACHINE_RESET_MEMBER(fromance_state,fromance)
m_flipscreen = 0;
}
-void fromance_state::nekkyoku(machine_config &config)
-{
+MACHINE_CONFIG_START(fromance_state::nekkyoku)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 12000000/2); /* 6.00 Mhz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &fromance_state::nekkyoku_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(fromance_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6.00 Mhz ? */
+ MCFG_DEVICE_PROGRAM_MAP(nekkyoku_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", fromance_state, irq0_line_hold)
- Z80(config, m_subcpu, 12000000/2); /* 6.00 Mhz ? */
- m_subcpu->set_addrmap(AS_PROGRAM, &fromance_state::nekkyoku_sub_map);
- m_subcpu->set_addrmap(AS_IO, &fromance_state::nekkyoku_sub_io_map);
+ MCFG_DEVICE_ADD("sub", Z80,12000000/2) /* 6.00 Mhz ? */
+ MCFG_DEVICE_PROGRAM_MAP(nekkyoku_sub_map)
+ MCFG_DEVICE_IO_MAP(nekkyoku_sub_io_map)
GENERIC_LATCH_8(config, m_sublatch);
m_sublatch->set_separate_acknowledge(true);
@@ -918,15 +918,15 @@ void fromance_state::nekkyoku(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(fromance_state,fromance)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 352-1, 0, 240-1);
- m_screen->set_screen_update(FUNC(fromance_state::screen_update_fromance));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(fromance_state, screen_update_fromance)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_fromance);
- PALETTE(config, m_palette).set_entries(1024);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_fromance)
+ MCFG_PALETTE_ADD("palette", 1024)
VSYSTEM_GGA(config, m_gga, 14318181 / 2); // clock not verified
m_gga->write_cb().set(FUNC(fromance_state::fromance_gga_data_w));
@@ -938,22 +938,23 @@ void fromance_state::nekkyoku(machine_config &config)
AY8910(config, "aysnd", 12000000/6).add_route(ALL_OUTPUTS, "mono", 0.15); // type not verified
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(fromance_state::fromance_adpcm_int)); /* IRQ handler */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, fromance_state, fromance_adpcm_int)) /* IRQ handler */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_START(fromance_state::idolmj)
-void fromance_state::idolmj(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000) / 2); /* 6.00 Mhz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &fromance_state::fromance_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(fromance_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000) / 2) /* 6.00 Mhz ? */
+ MCFG_DEVICE_PROGRAM_MAP(fromance_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", fromance_state, irq0_line_hold)
- Z80(config, m_subcpu, XTAL(12'000'000) / 2); /* 6.00 Mhz ? */
- m_subcpu->set_addrmap(AS_PROGRAM, &fromance_state::fromance_sub_map);
- m_subcpu->set_addrmap(AS_IO, &fromance_state::idolmj_sub_io_map);
+ MCFG_DEVICE_ADD("sub", Z80, XTAL(12'000'000) / 2) /* 6.00 Mhz ? */
+ MCFG_DEVICE_PROGRAM_MAP(fromance_sub_map)
+ MCFG_DEVICE_IO_MAP(idolmj_sub_io_map)
GENERIC_LATCH_8(config, m_sublatch);
m_sublatch->set_separate_acknowledge(true);
@@ -962,15 +963,15 @@ void fromance_state::idolmj(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(fromance_state,fromance)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 352-1, 0, 240-1);
- m_screen->set_screen_update(FUNC(fromance_state::screen_update_fromance));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(fromance_state, screen_update_fromance)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_fromance);
- PALETTE(config, m_palette).set_entries(2048);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_fromance)
+ MCFG_PALETTE_ADD("palette", 2048)
VSYSTEM_GGA(config, m_gga, XTAL(14'318'181) / 2); // divider not verified
m_gga->write_cb().set(FUNC(fromance_state::fromance_gga_data_w));
@@ -982,23 +983,23 @@ void fromance_state::idolmj(machine_config &config)
YM2149(config, "aysnd", 12000000/6).add_route(ALL_OUTPUTS, "mono", 0.15);
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(fromance_state::fromance_adpcm_int)); /* IRQ handler */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, fromance_state, fromance_adpcm_int)) /* IRQ handler */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
-void fromance_state::fromance(machine_config &config)
-{
+MACHINE_CONFIG_START(fromance_state::fromance)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000) / 2); /* 6.00 Mhz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &fromance_state::fromance_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(fromance_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000) / 2) /* 6.00 Mhz ? */
+ MCFG_DEVICE_PROGRAM_MAP(fromance_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", fromance_state, irq0_line_hold)
- Z80(config, m_subcpu, XTAL(12'000'000) / 2); /* 6.00 Mhz ? */
- m_subcpu->set_addrmap(AS_PROGRAM, &fromance_state::fromance_sub_map);
- m_subcpu->set_addrmap(AS_IO, &fromance_state::fromance_sub_io_map);
+ MCFG_DEVICE_ADD("sub", Z80, XTAL(12'000'000) / 2) /* 6.00 Mhz ? */
+ MCFG_DEVICE_PROGRAM_MAP(fromance_sub_map)
+ MCFG_DEVICE_IO_MAP(fromance_sub_io_map)
GENERIC_LATCH_8(config, m_sublatch);
m_sublatch->set_separate_acknowledge(true);
@@ -1007,15 +1008,15 @@ void fromance_state::fromance(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(fromance_state,fromance)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 352-1, 0, 240-1);
- m_screen->set_screen_update(FUNC(fromance_state::screen_update_fromance));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(fromance_state, screen_update_fromance)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_fromance);
- PALETTE(config, m_palette).set_entries(2048);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_fromance)
+ MCFG_PALETTE_ADD("palette", 2048)
VSYSTEM_GGA(config, m_gga, XTAL(14'318'181) / 2); // divider not verified
m_gga->write_cb().set(FUNC(fromance_state::fromance_gga_data_w));
@@ -1025,13 +1026,14 @@ void fromance_state::fromance(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", 3579545).add_route(ALL_OUTPUTS, "mono", 0.90);
+ MCFG_DEVICE_ADD("ymsnd", YM2413, 3579545)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90)
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(fromance_state::fromance_adpcm_int)); /* IRQ handler */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.10);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, fromance_state, fromance_adpcm_int)) /* IRQ handler */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/fruitpc.cpp b/src/mame/drivers/fruitpc.cpp
index 096292da98b..111c91e26fa 100644
--- a/src/mame/drivers/fruitpc.cpp
+++ b/src/mame/drivers/fruitpc.cpp
@@ -115,12 +115,11 @@ void fruitpc_state::fruitpc_sb_conf(device_t *device)
MCFG_DEVICE_SLOT_INTERFACE(pc_joysticks, nullptr, true) // remove joystick
}
-void fruitpc_state::fruitpc(machine_config &config)
-{
- I486(config, m_maincpu, 66000000); // ST STPCD0166BTC3 66 MHz 486 CPU
- m_maincpu->set_addrmap(AS_PROGRAM, &fruitpc_state::fruitpc_map);
- m_maincpu->set_addrmap(AS_IO, &fruitpc_state::fruitpc_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(fruitpc_state::fruitpc)
+ MCFG_DEVICE_ADD("maincpu", I486, 66000000) // ST STPCD0166BTC3 66 MHz 486 CPU
+ MCFG_DEVICE_PROGRAM_MAP(fruitpc_map)
+ MCFG_DEVICE_IO_MAP(fruitpc_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
pcat_common(config);
@@ -133,8 +132,7 @@ void fruitpc_state::fruitpc(machine_config &config)
m_dma8237_1->out_iow_callback<1>().set(FUNC(fruitpc_state::dma8237_1_dack_w));
ISA8(config, m_isabus, 0);
- m_isabus->set_memspace("maincpu", AS_PROGRAM);
- m_isabus->set_iospace("maincpu", AS_IO);
+ m_isabus->set_cputag("maincpu");
m_isabus->irq2_callback().set("pic8259_2", FUNC(pic8259_device::ir2_w));
m_isabus->irq3_callback().set("pic8259_1", FUNC(pic8259_device::ir3_w));
m_isabus->irq4_callback().set("pic8259_1", FUNC(pic8259_device::ir4_w));
@@ -146,10 +144,10 @@ void fruitpc_state::fruitpc(machine_config &config)
m_isabus->drq3_callback().set("dma8237_1", FUNC(am9517a_device::dreq3_w));
// FIXME: determine ISA bus clock
- isa8_slot_device &isa1(ISA8_SLOT(config, "isa1", 0, "isa", fruitpc_isa8_cards, "sb15", true));
- isa1.set_option_device_input_defaults("sb15", DEVICE_INPUT_DEFAULTS_NAME(fruitpc_sb_def));
- isa1.set_option_machine_config("sb15", fruitpc_sb_conf);
-}
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "isa", fruitpc_isa8_cards, "sb15", true)
+ MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("sb15", fruitpc_sb_def)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("sb15", fruitpc_sb_conf)
+MACHINE_CONFIG_END
ROM_START( fruitpc )
ROM_REGION( 0x20000, "bios", 0 )
diff --git a/src/mame/drivers/fs3216.cpp b/src/mame/drivers/fs3216.cpp
index cbe6aa178df..1f7587af9a3 100644
--- a/src/mame/drivers/fs3216.cpp
+++ b/src/mame/drivers/fs3216.cpp
@@ -12,7 +12,7 @@
//#include "bus/rs232/rs232.h"
#include "cpu/m68000/m68000.h"
#include "cpu/8x300/8x300.h"
-#include "imagedev/floppy.h"
+//#include "imagedev/floppy.h"
#include "machine/bankdev.h"
//#include "machine/com8116.h"
#include "machine/upd765.h"
@@ -32,9 +32,7 @@ public:
, m_clb(*this, "clb")
, m_ctc(*this, "ctc")
, m_fdc(*this, "fdc")
- , m_floppy(*this, "fdc:%u", 0U)
, m_earom(*this, "earom")
- , m_vecprom(*this, "vecprom")
, m_videoram(*this, "videoram")
, m_chargen(*this, "chargen")
{
@@ -49,32 +47,20 @@ protected:
private:
MC6845_UPDATE_ROW(crt_update_row);
- void mmu_reg_w(offs_t offset, u16 data);
- u16 mmu_read(offs_t offset, u16 mem_mask);
- void mmu_write(offs_t offset, u16 data, u16 mem_mask);
+ DECLARE_READ16_MEMBER(mmu_read);
+ DECLARE_WRITE16_MEMBER(mmu_write);
DECLARE_WRITE_LINE_MEMBER(mmu_reset_w);
void mmu_init_w(u16 data);
- u16 irq_r();
- IRQ_CALLBACK_MEMBER(intack);
-
DECLARE_READ8_MEMBER(ctc_r);
DECLARE_WRITE8_MEMBER(ctc_w);
- u16 earom_recall_r();
- u16 earom_store_r();
-
- DECLARE_WRITE_LINE_MEMBER(fdc_int_w);
- DECLARE_WRITE_LINE_MEMBER(fdc_drq_w);
- DECLARE_WRITE_LINE_MEMBER(fdc_hdl_w);
- DECLARE_WRITE_LINE_MEMBER(floppy_idx_w);
- void fdc_us_w(u8 data);
- u16 floppy_select_r(offs_t offset);
- void floppy_select_w(offs_t offset, u16 data);
- void floppy_control_w(u8 data);
+ void floppy_select_w(u8 data);
u8 floppy_status_r();
- TIMER_CALLBACK_MEMBER(fdc_dma);
+ void fdc_reset_w(u16 data);
u8 fdc_ram_r(offs_t offset);
void fdc_ram_w(offs_t offset, u8 data);
+ u16 earom_recall_r();
+ u16 earom_store_r();
void main_map(address_map &map);
void clb_map(address_map &map);
@@ -85,59 +71,34 @@ private:
required_device<address_map_bank_device> m_clb;
required_device<z80ctc_device> m_ctc;
required_device<upd765a_device> m_fdc;
- required_device_array<floppy_connector, 4> m_floppy;
required_device<x2212_device> m_earom;
- required_region_ptr<u8> m_vecprom;
required_shared_ptr<u16> m_videoram;
required_region_ptr<u8> m_chargen;
- u32 m_mmu_reg[4];
- bool m_from_reset;
-
- u8 m_floppy_status;
- u8 m_floppy_control;
- u8 m_floppy_select;
- u8 m_fdc_select;
- u16 m_fdc_dma_count;
- emu_timer *m_fdc_dma_timer;
std::unique_ptr<u8[]> m_fdc_ram;
+
+ bool m_in_reset;
+ bool m_mmu_init;
};
void fs3216_state::machine_start()
{
- m_fdc_ram = make_unique_clear<u8[]>(0x800);
- save_pointer(NAME(m_fdc_ram), 0x800);
-
- std::fill(std::begin(m_mmu_reg), std::end(m_mmu_reg), 0);
-
- m_floppy_status = 0x80;
- m_floppy_control = 0;
- m_floppy_select = 0;
- m_fdc_select = 0;
- m_fdc_dma_count = 0;
-
- m_fdc_dma_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(fs3216_state::fdc_dma), this));
-
- save_item(NAME(m_mmu_reg));
- save_item(NAME(m_from_reset));
- save_item(NAME(m_floppy_status));
- save_item(NAME(m_floppy_control));
- save_item(NAME(m_floppy_select));
- save_item(NAME(m_fdc_select));
- save_item(NAME(m_fdc_dma_count));
+ m_fdc_ram = make_unique_clear<u8[]>(0x400);
+ save_pointer(NAME(m_fdc_ram), 0x400);
+
+ save_item(NAME(m_in_reset));
+ save_item(NAME(m_mmu_init));
}
void fs3216_state::machine_reset()
{
- m_from_reset = true;
+ m_in_reset = true;
+ m_mmu_init = false;
// FIXME: fix the 68000 so that it doesn't read vectors during device_reset
m_maincpu->reset();
-
- floppy_control_w(0);
- floppy_select_w(0, 0);
}
@@ -148,82 +109,56 @@ MC6845_UPDATE_ROW(fs3216_state::crt_update_row)
for (int i = 0; i < x_count; i++)
{
u16 chr = m_videoram[(ma + i) & 0x7ff];
- rgb_t fg = BIT(chr, 13) ? rgb_t::white() : rgb_t(0xc0, 0xc0, 0xc0);
+ rgb_t fg = rgb_t::white();
rgb_t bg = rgb_t::black();
u16 dots = m_chargen[(chr & 0xff) << 4 | ra] << 1;
- if (ra == 9 && BIT(chr, 12))
- dots = 0x1ff;
-
for (int n = 9; n > 0; n--, dots <<= 1)
*px++ = BIT(dots, 8) ? fg : bg;
}
}
-void fs3216_state::mmu_reg_w(offs_t offset, u16 data)
+READ16_MEMBER(fs3216_state::mmu_read)
{
- // 3x SN74LS374N for each of the four spaces
- u32 &reg = m_mmu_reg[offset >> 1];
- if (BIT(offset, 0))
- reg = (reg & 0xff0000) | data;
- else
- reg = (reg & 0x00ffff) | (data & 0x00ff) << 16;
-}
-
-u16 fs3216_state::mmu_read(offs_t offset, u16 mem_mask)
-{
- const bool a23 = BIT(offset, 22);
- const bool mmu_disable = !a23 && BIT(m_maincpu->get_fc(), 2);
- const u32 mmu_reg = mmu_disable ? (m_from_reset ? 0xfffe00 : 0xfff000) : m_mmu_reg[(offset >> 20) & 3];
-
- if (!mmu_disable && !machine().side_effects_disabled())
+ if (m_in_reset)
{
- // TODO: do limit check and cause BERR on failure
+ if (m_mmu_init && !BIT(offset, 22) && !machine().side_effects_disabled())
+ m_in_reset = false;
+ else
+ offset = (offset & 0x03ffff) | 0x1c0000;
}
- offs_t clbaddr = offset + ((mmu_reg & 0x000fff) << 9);
- clbaddr = (clbaddr & 0x1fffff) | (clbaddr & 0x100000) << 1;
- return m_clb->read16(clbaddr, mem_mask);
+ // TODO: MMU segments
+ return m_clb->read16(space, offset & 0x1fffff, mem_mask);
}
-void fs3216_state::mmu_write(offs_t offset, u16 data, u16 mem_mask)
+WRITE16_MEMBER(fs3216_state::mmu_write)
{
- const bool a23 = BIT(offset, 22);
- const bool mmu_disable = !a23 && BIT(m_maincpu->get_fc(), 2);
- const u32 mmu_reg = mmu_disable ? (m_from_reset ? 0xfffe00 : 0xfff000) : m_mmu_reg[(offset >> 20) & 3];
-
- if (!mmu_disable && !machine().side_effects_disabled())
+ if (m_in_reset)
{
- // TODO: do limit/write protect check and cause BERR on failure
+ if (m_mmu_init && !BIT(offset, 22) && !machine().side_effects_disabled())
+ m_in_reset = false;
+ else
+ offset = (offset & 0x03ffff) | 0x1c0000;
}
- offs_t clbaddr = offset + ((mmu_reg & 0x000fff) << 9);
- clbaddr = (clbaddr & 0x1fffff) | (clbaddr & 0x100000) << 1;
- m_clb->write16(clbaddr, data, mem_mask);
+ // TODO: MMU segments
+ m_clb->write16(space, offset & 0x1fffff, data, mem_mask);
}
WRITE_LINE_MEMBER(fs3216_state::mmu_reset_w)
{
if (state)
- m_from_reset = true;
+ {
+ m_in_reset = true;
+ m_mmu_init = false;
+ }
}
void fs3216_state::mmu_init_w(u16 data)
{
- m_from_reset = BIT(data, 0);
-}
-
-u16 fs3216_state::irq_r()
-{
- // TODO
- return 0xfff8;
-}
-
-IRQ_CALLBACK_MEMBER(fs3216_state::intack)
-{
- // FIXME: not all levels are vectored this way
- return m_vecprom[irqline];
+ m_mmu_init = true;
}
READ8_MEMBER(fs3216_state::ctc_r)
@@ -256,155 +191,28 @@ u16 fs3216_state::earom_store_r()
return 0xffff;
}
-WRITE_LINE_MEMBER(fs3216_state::fdc_int_w)
-{
- if (state)
- m_floppy_status |= 0x02;
- else
- m_floppy_status &= 0xfd;
-}
-
-WRITE_LINE_MEMBER(fs3216_state::fdc_drq_w)
-{
- if (state)
- {
- m_floppy_status |= 0x01;
- if (BIT(m_floppy_control, 3) && !m_fdc_dma_timer->enabled())
- {
- m_fdc_dma_timer->adjust(attotime::from_hz(16_MHz_XTAL / 64));
- m_floppy_status |= 0x04;
- }
- }
- else
- {
- m_floppy_status &= 0xfa;
- m_fdc_dma_timer->adjust(attotime::never);
- }
-}
-
-WRITE_LINE_MEMBER(fs3216_state::fdc_hdl_w)
+void fs3216_state::floppy_select_w(u8 data)
{
- if (state)
- m_floppy_status |= 0x40;
- else
- m_floppy_status &= 0xbf;
-}
-
-WRITE_LINE_MEMBER(fs3216_state::floppy_idx_w)
-{
- if (state)
- m_floppy_status |= 0x20;
- else
- m_floppy_status &= 0xdf;
-
- if (BIT(m_floppy_select, 2))
- m_fdc->ready_w(state);
-}
-
-void fs3216_state::fdc_us_w(u8 data)
-{
- m_fdc_select = data;
- if (!BIT(m_floppy_select, 2))
- m_fdc->set_floppy(m_floppy[m_fdc_select]->get_device());
-}
-
-u16 fs3216_state::floppy_select_r(offs_t offset)
-{
- if (!machine().side_effects_disabled())
- floppy_select_w(offset, 0);
- return 0xffff;
-}
-
-void fs3216_state::floppy_select_w(offs_t offset, u16 data)
-{
- if (m_floppy_select == offset)
- return;
-
- m_floppy_select = offset;
- if (BIT(offset, 2))
- m_fdc->set_floppy(m_floppy[offset & 3]->get_device());
- else
- m_fdc->set_floppy(m_floppy[m_fdc_select]->get_device());
-}
-
-void fs3216_state::floppy_control_w(u8 data)
-{
- m_floppy_control = data;
-
- floppy_image_device *fd = m_floppy[BIT(m_floppy_select, 2) ? (m_floppy_select & 3) : m_fdc_select]->get_device();
- if (BIT(data, 5))
- {
- if (fd != nullptr)
- fd->mon_w(0);
- m_floppy_status |= 0x10;
- }
- else
- {
- if (fd != nullptr)
- fd->mon_w(1);
- m_floppy_status &= 0xef;
- }
-
- if (!BIT(data, 1))
- {
- m_fdc->soft_reset();
- m_fdc_dma_count = 0;
- m_fdc->tc_w(0);
- }
-
- if (BIT(data, 3) && BIT(m_floppy_status, 0))
- {
- if (!m_fdc_dma_timer->enabled())
- {
- m_fdc_dma_timer->adjust(attotime::from_hz(16_MHz_XTAL / 64));
- m_floppy_status |= 0x04;
- }
- }
- else
- {
- m_fdc_dma_timer->adjust(attotime::never);
- m_floppy_status &= 0xfb;
- }
-
- m_fdc->set_unscaled_clock(16_MHz_XTAL / (BIT(data, 0) ? 4 : 2));
}
u8 fs3216_state::floppy_status_r()
{
- return m_floppy_status;
+ return 0xff;
}
-TIMER_CALLBACK_MEMBER(fs3216_state::fdc_dma)
+void fs3216_state::fdc_reset_w(u16 data)
{
- if (BIT(m_floppy_control, 4))
- m_fdc_ram[m_fdc_dma_count & 0x7ff] = m_fdc->dma_r();
- else
- m_fdc->dma_w(m_fdc_ram[m_fdc_dma_count & 0x7ff]);
- m_floppy_status &= 0xfb;
-
- ++m_fdc_dma_count;
- if (BIT(m_fdc_dma_count, 11))
- m_fdc->tc_w(1);
+ m_fdc->soft_reset();
}
u8 fs3216_state::fdc_ram_r(offs_t offset)
{
- if (!machine().side_effects_disabled())
- {
- m_fdc_dma_count = offset;
- m_fdc->tc_w(BIT(offset, 11));
- }
- return m_fdc_ram[offset & 0x7ff];
+ return m_fdc_ram[offset];
}
void fs3216_state::fdc_ram_w(offs_t offset, u8 data)
{
- if (!machine().side_effects_disabled())
- {
- m_fdc_dma_count = offset;
- m_fdc->tc_w(BIT(offset, 11));
- }
- m_fdc_ram[offset & 0x7ff] = data;
+ m_fdc_ram[offset] = data;
}
@@ -416,36 +224,33 @@ void fs3216_state::main_map(address_map &map)
void fs3216_state::clb_map(address_map &map)
{
map(0x000000, 0x017fff).ram();
- map(0x780000, 0x783fff).rom().region("momrom", 0);
- map(0x792000, 0x792003).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff);
- map(0x792010, 0x79201f).rw(FUNC(fs3216_state::floppy_select_r), FUNC(fs3216_state::floppy_select_w));
- map(0x792041, 0x792041).w(FUNC(fs3216_state::floppy_control_w));
- map(0x792051, 0x792051).r(FUNC(fs3216_state::floppy_status_r));
- map(0x794680, 0x79468f).rw(FUNC(fs3216_state::ctc_r), FUNC(fs3216_state::ctc_w)).umask16(0x00ff);
- map(0x794701, 0x794701).rw("dart", FUNC(z80dart_device::da_r), FUNC(z80dart_device::da_w));
- map(0x794709, 0x794709).rw("dart", FUNC(z80dart_device::ca_r), FUNC(z80dart_device::ca_w));
- map(0x794711, 0x794711).rw("dart", FUNC(z80dart_device::db_r), FUNC(z80dart_device::db_w));
- map(0x794719, 0x794719).rw("dart", FUNC(z80dart_device::cb_r), FUNC(z80dart_device::cb_w));
- map(0x796000, 0x797fff).rw(FUNC(fs3216_state::fdc_ram_r), FUNC(fs3216_state::fdc_ram_w)).umask16(0x00ff);
- map(0x7a0000, 0x7a1fff).rom().region("video", 0);
- map(0x7a4001, 0x7a4001).w("crtc", FUNC(mc6845_device::address_w));
- map(0x7a4003, 0x7a4003).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
- map(0x7a8000, 0x7a8fff).ram().share("videoram"); // 2x M58725P
- map(0x7b0000, 0x7b1fff).rom().region("comm_a", 0);
- map(0x7c0000, 0x7c1fff).rom().region("comm_b", 0);
- //map(0x7e0000, 0x7e1fff).rom().region("wd1001_clb", 0);
- map(0x7f1000, 0x7f1001).r(FUNC(fs3216_state::irq_r));
- map(0x7f3000, 0x7f300f).w(FUNC(fs3216_state::mmu_reg_w));
- map(0x7f5000, 0x7f5001).w(FUNC(fs3216_state::mmu_init_w));
- map(0x7f6000, 0x7f6001).nopw();
- map(0x7f7000, 0x7f7001).r(FUNC(fs3216_state::earom_store_r));
- map(0x7f7200, 0x7f7201).r(FUNC(fs3216_state::earom_recall_r));
- map(0x7f7400, 0x7f75ff).rw(m_earom, FUNC(x2212_device::read), FUNC(x2212_device::write)).umask16(0x00ff);
+ map(0x380000, 0x383fff).rom().region("momrom", 0);
+ map(0x392000, 0x392003).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff);
+ map(0x392041, 0x392041).w(FUNC(fs3216_state::floppy_select_w));
+ map(0x392051, 0x392051).r(FUNC(fs3216_state::floppy_status_r));
+ map(0x394680, 0x39468f).rw(FUNC(fs3216_state::ctc_r), FUNC(fs3216_state::ctc_w)).umask16(0x00ff);
+ map(0x394701, 0x394701).rw("dart", FUNC(z80dart_device::da_r), FUNC(z80dart_device::da_w));
+ map(0x394709, 0x394709).rw("dart", FUNC(z80dart_device::ca_r), FUNC(z80dart_device::ca_w));
+ map(0x394711, 0x394711).rw("dart", FUNC(z80dart_device::db_r), FUNC(z80dart_device::db_w));
+ map(0x394719, 0x394719).rw("dart", FUNC(z80dart_device::cb_r), FUNC(z80dart_device::cb_w));
+ map(0x3a0000, 0x3a1fff).rom().region("video", 0);
+ map(0x3a4001, 0x3a4001).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x3a4003, 0x3a4003).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x3a8000, 0x3a8fff).ram().share("videoram"); // 2x M58725P
+ map(0x3b0000, 0x3b1fff).rom().region("comm_a", 0);
+ map(0x3c0000, 0x3c1fff).rom().region("comm_b", 0);
+ map(0x3e0000, 0x3e1fff).rom().region("wd1001_clb", 0);
+ map(0x3f5000, 0x3f5001).w(FUNC(fs3216_state::mmu_init_w));
+ map(0x3f6000, 0x3f6001).w(FUNC(fs3216_state::fdc_reset_w));
+ map(0x3f6800, 0x3f6fff).rw(FUNC(fs3216_state::fdc_ram_r), FUNC(fs3216_state::fdc_ram_w)).umask16(0x00ff);
+ map(0x3f7000, 0x3f7001).r(FUNC(fs3216_state::earom_store_r));
+ map(0x3f7200, 0x3f7201).r(FUNC(fs3216_state::earom_recall_r));
+ map(0x3f7400, 0x3f75ff).rw(m_earom, FUNC(x2212_device::read), FUNC(x2212_device::write)).umask16(0x00ff);
}
void fs3216_state::wdcpu_prog_map(address_map &map)
{
- map(0x0000, 0x03ff).rom().region("wdcpu", 0);
+ map(0x000, 0x7ff).rom().region("wdcpu", 0);
}
void fs3216_state::wdcpu_bank_map(address_map &map)
@@ -454,17 +259,11 @@ void fs3216_state::wdcpu_bank_map(address_map &map)
}
-static void fs3216_floppies(device_slot_interface &device)
-{
- device.option_add("525dd", FLOPPY_525_DD);
-}
-
void fs3216_state::fs3216(machine_config &config)
{
M68000(config, m_maincpu, 44.2368_MHz_XTAL / 8); // 5.5 MHz
m_maincpu->set_addrmap(AS_PROGRAM, &fs3216_state::main_map);
m_maincpu->set_reset_callback(write_line_delegate(FUNC(fs3216_state::mmu_reset_w), this));
- m_maincpu->set_irq_acknowledge_callback(FUNC(fs3216_state::intack));
ADDRESS_MAP_BANK(config, m_clb);
m_clb->set_addrmap(0, &fs3216_state::clb_map);
@@ -478,20 +277,10 @@ void fs3216_state::fs3216(machine_config &config)
m_ctc->zc_callback<0>().set("dart", FUNC(z80dart_device::rxca_w));
m_ctc->zc_callback<0>().append("dart", FUNC(z80dart_device::txca_w));
m_ctc->zc_callback<1>().set("dart", FUNC(z80dart_device::rxtxcb_w));
- m_ctc->zc_callback<1>().append(m_ctc, FUNC(z80ctc_device::trg2));
- m_ctc->zc_callback<2>().set(m_ctc, FUNC(z80ctc_device::trg3));
Z80DART(config, "dart", 44.2368_MHz_XTAL / 8); // Z8470BPS
- UPD765A(config, m_fdc, 16_MHz_XTAL / 2, false, false);
- m_fdc->intrq_wr_callback().set(FUNC(fs3216_state::fdc_int_w));
- m_fdc->drq_wr_callback().set(FUNC(fs3216_state::fdc_drq_w));
- m_fdc->hdl_wr_callback().set(FUNC(fs3216_state::fdc_hdl_w));
- m_fdc->idx_wr_callback().set(FUNC(fs3216_state::floppy_idx_w));
- m_fdc->us_wr_callback().set(FUNC(fs3216_state::fdc_us_w));
-
- for (int i = 0; i < 4; i++)
- FLOPPY_CONNECTOR(config, m_floppy[i], fs3216_floppies, i < 1 ? "525dd" : nullptr, floppy_image_device::default_floppy_formats);
+ UPD765A(config, m_fdc, 16_MHz_XTAL / 2, true, false);
X2212(config, m_earom);
@@ -501,11 +290,10 @@ void fs3216_state::fs3216(machine_config &config)
crtc.set_update_row_callback(FUNC(fs3216_state::crt_update_row), this);
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_color(rgb_t::green());
screen.set_raw(14.58_MHz_XTAL, 900, 0, 720, 270, 0, 250);
screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
- n8x305_cpu_device &wdcpu(N8X305(config, "wdcpu", 8_MHz_XTAL)); // N8X305I
+ n8x300_cpu_device &wdcpu(N8X300(config, "wdcpu", 20_MHz_XTAL / 2)); // N8X305I
wdcpu.set_addrmap(AS_PROGRAM, &fs3216_state::wdcpu_prog_map);
wdcpu.set_addrmap(AS_IO, &fs3216_state::wdcpu_bank_map);
}
@@ -519,7 +307,7 @@ INPUT_PORTS_END
// XTALs on Comm A board (1000014-01 2 Port / 1000171-01 4 Port Rev. 7; 10000065-01 Rev. 3): two K1135CM Dual Baud Rate Generators (7D, 8D)
// XTALs on Comm B board (1001651-01 Rev. G): none
// XTALs on Video Controller board (1000443-1 Rev. I): 14.580 MHz (1H)
-// XTALs on WD-1001 CLB Disk Controller board (1473-008): 20.000 (Y1), 8.000 (Y2)
+// XTALs on WD-1001 CLB Disk Controller board (1473-008): 20.000 (Y1), 8.00? [somewhat defaced] (Y2)
ROM_START(fs3216)
ROM_REGION16_BE(0x4000, "momrom", 0)
ROM_LOAD16_BYTE("17k_1260-02_h.bin", 0x0000, 0x2000, CRC(75ed6de8) SHA1(0360548493b778995ae436da475b6356945e1872))
@@ -528,9 +316,6 @@ ROM_START(fs3216)
ROM_REGION(0x100, "earom", 0)
ROM_LOAD("sn1000044-08_x2212.bin", 0x000, 0x100, CRC(2bf1fec8) SHA1(e1bdda558364415131e68443013c608bb9c01451))
- ROM_REGION(0x20, "vecprom", 0)
- ROM_LOAD("12j_74s288.bin", 0x00, 0x20, CRC(8f7bf087) SHA1(de785f7ab79f0e58e411ec5cbc42991d1d8486b1))
-
ROM_REGION16_BE(0x2000, "comm_a", 0)
ROM_LOAD16_BYTE("1896-01_c90c3cb92588a2b4bb28bcf4bb8e2023.bin", 0x0000, 0x1000, CRC(ac4cdbd2) SHA1(e448a01a9809cccfb526ac1d4e97d9be3af1e5eb))
ROM_LOAD16_BYTE("1895-01_fb20aa682a17028cdae2687fc47daef1.bin", 0x0001, 0x1000, CRC(82ebffb5) SHA1(3888b7ba07d0b25bfb9e0444215d4fa9ecd66273))
diff --git a/src/mame/drivers/fungames.cpp b/src/mame/drivers/fungames.cpp
index 88ed2745748..481c3ba604d 100644
--- a/src/mame/drivers/fungames.cpp
+++ b/src/mame/drivers/fungames.cpp
@@ -88,21 +88,20 @@ void fungames_state::video_start()
{
}
-void fungames_state::fungames(machine_config &config)
-{
+MACHINE_CONFIG_START(fungames_state::fungames)
+
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_fungames);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(fungames)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL);
- m_video->set_vert_params(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.30);
-}
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/funkball.cpp b/src/mame/drivers/funkball.cpp
index 7fc0c1f59f1..a44fae46407 100644
--- a/src/mame/drivers/funkball.cpp
+++ b/src/mame/drivers/funkball.cpp
@@ -764,10 +764,10 @@ static DEVICE_INPUT_DEFAULTS_START( terminal )
DEVICE_INPUT_DEFAULTS_END
MACHINE_CONFIG_START(funkball_state::funkball)
- MEDIAGX(config, m_maincpu, 66666666*3.5); // 66,6 MHz x 3.5
- m_maincpu->set_addrmap(AS_PROGRAM, &funkball_state::funkball_map);
- m_maincpu->set_addrmap(AS_IO, &funkball_state::funkball_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", MEDIAGX, 66666666*3.5) // 66,6 MHz x 3.5
+ MCFG_DEVICE_PROGRAM_MAP(funkball_map)
+ MCFG_DEVICE_IO_MAP(funkball_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
pcat_common(config);
@@ -781,18 +781,18 @@ MACHINE_CONFIG_START(funkball_state::funkball)
ADDRESS_MAP_BANK(config, "flashbank").set_map(&funkball_state::flashbank_map).set_options(ENDIANNESS_LITTLE, 32, 32, 0x10000);
/* video hardware */
- VOODOO_1(config, m_voodoo, STD_VOODOO_1_CLOCK);
- m_voodoo->set_fbmem(2);
- m_voodoo->set_tmumem(4, 0);
- m_voodoo->set_screen_tag("screen");
- m_voodoo->set_cpu_tag(m_maincpu);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_screen_update(FUNC(funkball_state::screen_update));
- screen.set_size(1024, 1024);
- screen.set_visarea(0, 511, 16, 447);
+ MCFG_DEVICE_ADD("voodoo_0", VOODOO_1, STD_VOODOO_1_CLOCK)
+ MCFG_VOODOO_FBMEM(2)
+ MCFG_VOODOO_TMUMEM(4,0)
+ MCFG_VOODOO_SCREEN_TAG("screen")
+ MCFG_VOODOO_CPU_TAG("maincpu")
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_UPDATE_DRIVER(funkball_state, screen_update)
+ MCFG_SCREEN_SIZE(1024, 1024)
+ MCFG_SCREEN_VISIBLE_AREA(0, 511, 16, 447)
ns16550_device &uart(NS16550(config, "uart", 1843200)); // exact type unknown
uart.out_tx_callback().set("rs232", FUNC(rs232_port_device::write_txd));
diff --git a/src/mame/drivers/funkybee.cpp b/src/mame/drivers/funkybee.cpp
index f87c6932220..654adcbd71e 100644
--- a/src/mame/drivers/funkybee.cpp
+++ b/src/mame/drivers/funkybee.cpp
@@ -285,13 +285,13 @@ void funkybee_state::machine_start()
m_gfx_bank = 0;
}
-void funkybee_state::funkybee(machine_config &config)
-{
+MACHINE_CONFIG_START(funkybee_state::funkybee)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 3072000); /* 3.072 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &funkybee_state::funkybee_map);
- m_maincpu->set_addrmap(AS_IO, &funkybee_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(funkybee_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 3072000) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(funkybee_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", funkybee_state, irq0_line_hold)
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set(FUNC(funkybee_state::flipscreen_w));
@@ -302,13 +302,13 @@ void funkybee_state::funkybee(machine_config &config)
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(12, 32*8-8-1, 0*8, 28*8-1);
- screen.set_screen_update(FUNC(funkybee_state::screen_update_funkybee));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(12, 32*8-8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(funkybee_state, screen_update_funkybee)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_funkybee);
PALETTE(config, m_palette, FUNC(funkybee_state::funkybee_palette), 32);
@@ -319,7 +319,7 @@ void funkybee_state::funkybee(machine_config &config)
ay8912_device &ay8912(AY8912(config, "aysnd", 1500000)); // AY-3-8912 verified for Sky Lancer
ay8912.port_a_read_callback().set_ioport("DSW");
ay8912.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/funkyjet.cpp b/src/mame/drivers/funkyjet.cpp
index 2c2b8f0cef0..00cda7b6019 100644
--- a/src/mame/drivers/funkyjet.cpp
+++ b/src/mame/drivers/funkyjet.cpp
@@ -302,12 +302,12 @@ GFXDECODE_END
/******************************************************************************/
-void funkyjet_state::funkyjet(machine_config &config)
-{
+MACHINE_CONFIG_START(funkyjet_state::funkyjet)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(28'000'000)/2); /* 28 MHz crystal */
- m_maincpu->set_addrmap(AS_PROGRAM, &funkyjet_state::funkyjet_map);
- m_maincpu->set_vblank_int("screen", FUNC(funkyjet_state::irq6_line_hold));
+ MCFG_DEVICE_ADD(m_maincpu, M68000, XTAL(28'000'000)/2) /* 28 MHz crystal */
+ MCFG_DEVICE_PROGRAM_MAP(funkyjet_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", funkyjet_state, irq6_line_hold)
H6280(config, m_audiocpu, XTAL(32'220'000)/4); /* Custom chip 45, Audio section crystal is 32.220 MHz */
m_audiocpu->set_addrmap(AS_PROGRAM, &funkyjet_state::sound_map);
@@ -315,13 +315,13 @@ void funkyjet_state::funkyjet(machine_config &config)
m_audiocpu->add_route(ALL_OUTPUTS, "rspeaker", 0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(529));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(funkyjet_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(funkyjet_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
DECO146PROT(config, m_deco146, 0);
m_deco146->port_a_cb().set_ioport("INPUTS");
@@ -330,7 +330,7 @@ void funkyjet_state::funkyjet(machine_config &config)
m_deco146->soundlatch_irq_cb().set_inputline(m_audiocpu, 0);
m_deco146->set_interface_scramble_interleave();
- GFXDECODE(config, "gfxdecode", "palette", gfx_funkyjet);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_funkyjet)
PALETTE(config, "palette").set_format(palette_device::xBGR_444, 1024);
DECO16IC(config, m_deco_tilegen, 0);
@@ -360,10 +360,10 @@ void funkyjet_state::funkyjet(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.45);
ymsnd.add_route(1, "rspeaker", 0.45);
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(28'000'000)/28, okim6295_device::PIN7_HIGH));
- oki.add_route(ALL_OUTPUTS, "lspeaker", 0.50);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 0.50);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(28'000'000)/28, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
+MACHINE_CONFIG_END
/******************************************************************************/
diff --git a/src/mame/drivers/funtech.cpp b/src/mame/drivers/funtech.cpp
index 47e48e8ac9e..32e8d9949e7 100644
--- a/src/mame/drivers/funtech.cpp
+++ b/src/mame/drivers/funtech.cpp
@@ -487,35 +487,35 @@ void fun_tech_corp_state::machine_start()
}
-void fun_tech_corp_state::funtech(machine_config &config)
-{
+MACHINE_CONFIG_START(fun_tech_corp_state::funtech)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &fun_tech_corp_state::funtech_map);
- m_maincpu->set_addrmap(AS_IO, &fun_tech_corp_state::funtech_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(fun_tech_corp_state::vblank_interrupt));
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(funtech_map)
+ MCFG_DEVICE_IO_MAP(funtech_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", fun_tech_corp_state, vblank_interrupt)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 8, 256-8-1);
- screen.set_screen_update(FUNC(fun_tech_corp_state::screen_update));
- screen.set_palette("palette");
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_funtech);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 8, 256-8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(fun_tech_corp_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, "palette", gfx_funtech)
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 0x200);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
/* sound hardware */
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd", 1500000).add_route(ALL_OUTPUTS, "mono", 1.00); /* M5255, ? MHz */
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/funworld.cpp b/src/mame/drivers/funworld.cpp
index e1a7a37afcd..ea489963e5f 100644
--- a/src/mame/drivers/funworld.cpp
+++ b/src/mame/drivers/funworld.cpp
@@ -3067,11 +3067,10 @@ void lunapark_state::machine_reset()
* Machine Drivers *
**************************/
-void funworld_state::fw1stpal(machine_config &config)
-{
+MACHINE_CONFIG_START(funworld_state::fw1stpal)
/* basic machine hardware */
- M65SC02(config, m_maincpu, CPU_CLOCK); /* 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &funworld_state::funworld_map);
+ MCFG_DEVICE_ADD("maincpu", M65SC02, CPU_CLOCK) /* 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(funworld_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -3086,16 +3085,17 @@ void funworld_state::fw1stpal(machine_config &config)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size((124+1)*4, (30+1)*8); /* Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1) */
- screen.set_visarea(0*4, 96*4-1, 0*8, 29*8-1); /* Taken from MC6845 init, registers 01 & 06 */
- screen.set_screen_update(FUNC(funworld_state::screen_update_funworld));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE((124+1)*4, (30+1)*8) /* Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1) */
+ MCFG_SCREEN_VISIBLE_AREA(0*4, 96*4-1, 0*8, 29*8-1) /* Taken from MC6845 init, registers 01 & 06 */
+ MCFG_SCREEN_UPDATE_DRIVER(funworld_state, screen_update_funworld)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_fw1stpal)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_fw1stpal);
- PALETTE(config, m_palette, FUNC(funworld_state::funworld_palette), 0x200);
+ PALETTE(config, "palette", FUNC(funworld_state::funworld_palette), 0x200);
mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK)); /* 2MHz, verified on jollycrd & royalcrd */
crtc.set_screen("screen");
@@ -3110,36 +3110,33 @@ void funworld_state::fw1stpal(machine_config &config)
ay8910.port_a_write_callback().set(FUNC(funworld_state::funworld_lamp_a_w));
ay8910.port_b_write_callback().set(FUNC(funworld_state::funworld_lamp_b_w));
ay8910.add_route(ALL_OUTPUTS, "mono", 2.5); /* analyzed to avoid clips */
-}
+MACHINE_CONFIG_END
-void funworld_state::fw2ndpal(machine_config &config)
-{
+MACHINE_CONFIG_START(funworld_state::fw2ndpal)
fw1stpal(config);
- R65C02(config.replace(), m_maincpu, CPU_CLOCK); /* 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &funworld_state::funworld_map);
- m_gfxdecode->set_info(gfx_fw2ndpal);
-}
+ MCFG_DEVICE_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(funworld_map)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_fw2ndpal)
+MACHINE_CONFIG_END
-void funworld_state::funquiz(machine_config &config)
-{
+MACHINE_CONFIG_START(funworld_state::funquiz)
fw1stpal(config);
// fw2ndpal(config);
- R65C02(config.replace(), m_maincpu, CPU_CLOCK); /* 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &funworld_state::funquiz_map);
+ MCFG_DEVICE_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(funquiz_map)
subdevice<ay8910_device>("ay8910")->port_a_read_callback().set(FUNC(funworld_state::funquiz_ay8910_a_r));
subdevice<ay8910_device>("ay8910")->port_b_read_callback().set(FUNC(funworld_state::funquiz_ay8910_b_r));
-}
+MACHINE_CONFIG_END
-void magicrd2_state::magicrd2(machine_config &config)
-{
+MACHINE_CONFIG_START(magicrd2_state::magicrd2)
fw1stpal(config);
- R65C02(config.replace(), m_maincpu, CPU_CLOCK); /* 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &magicrd2_state::magicrd2_map);
+ MCFG_DEVICE_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(magicrd2_map)
subdevice<mc6845_device>("crtc")->set_visarea_adjust(0, -56, 0, 0);
@@ -3147,97 +3144,86 @@ void magicrd2_state::magicrd2(machine_config &config)
ay8910.port_a_write_callback().set(FUNC(magicrd2_state::funworld_lamp_a_w));
ay8910.port_b_write_callback().set(FUNC(magicrd2_state::funworld_lamp_b_w));
ay8910.add_route(ALL_OUTPUTS, "mono", 1.5); /* analyzed to avoid clips */
-}
+MACHINE_CONFIG_END
-void funworld_state::royalcd1(machine_config &config)
-{
+MACHINE_CONFIG_START(funworld_state::royalcd1)
fw1stpal(config);
- R65C02(config.replace(), m_maincpu, CPU_CLOCK); /* (G65SC02P in pro version) 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &funworld_state::magicrd2_map);
-}
+ MCFG_DEVICE_REPLACE("maincpu", R65C02, CPU_CLOCK) /* (G65SC02P in pro version) 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(magicrd2_map)
+MACHINE_CONFIG_END
-void funworld_state::royalcd2(machine_config &config)
-{
+MACHINE_CONFIG_START(funworld_state::royalcd2)
fw2ndpal(config);
- R65C02(config.replace(), m_maincpu, CPU_CLOCK); /* 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &funworld_state::magicrd2_map);
-}
+ MCFG_DEVICE_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(magicrd2_map)
+MACHINE_CONFIG_END
-void funworld_state::cuoreuno(machine_config &config)
-{
+MACHINE_CONFIG_START(funworld_state::cuoreuno)
fw1stpal(config);
- R65C02(config.replace(), m_maincpu, CPU_CLOCK); /* 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &funworld_state::cuoreuno_map);
-}
+ MCFG_DEVICE_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(cuoreuno_map)
+MACHINE_CONFIG_END
-void funworld_state::saloon(machine_config &config)
-{
+MACHINE_CONFIG_START(funworld_state::saloon)
fw1stpal(config);
- R65C02(config.replace(), m_maincpu, CPU_CLOCK); /* 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &funworld_state::saloon_map);
-}
+ MCFG_DEVICE_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(saloon_map)
+MACHINE_CONFIG_END
-void funworld_state::witchryl(machine_config &config)
-{
+MACHINE_CONFIG_START(funworld_state::witchryl)
fw1stpal(config);
- R65C02(config.replace(), m_maincpu, CPU_CLOCK); /* 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &funworld_state::witchryl_map);
-}
+ MCFG_DEVICE_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(witchryl_map)
+MACHINE_CONFIG_END
-void lunapark_state::lunapark(machine_config &config)
-{
+MACHINE_CONFIG_START(lunapark_state::lunapark)
fw1stpal(config);
- R65C02(config.replace(), m_maincpu, CPU_CLOCK); /* 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &lunapark_state::lunapark_map); // mirrored video RAM (4000/5000 to 6000/7000).
-}
+ MCFG_DEVICE_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(lunapark_map) // mirrored video RAM (4000/5000 to 6000/7000).
+MACHINE_CONFIG_END
-void chinatow_state::chinatow(machine_config &config)
-{
+MACHINE_CONFIG_START(chinatow_state::chinatow)
fw2ndpal(config);
- R65C02(config.replace(), m_maincpu, CPU_CLOCK); /* 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &chinatow_state::chinatow_map);
-}
+ MCFG_DEVICE_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(chinatow_map)
+MACHINE_CONFIG_END
-void chinatow_state::rcdino4(machine_config &config)
-{
+MACHINE_CONFIG_START(chinatow_state::rcdino4)
fw1stpal(config);
- R65C02(config.replace(), m_maincpu, CPU_CLOCK); /* 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &chinatow_state::chinatow_map);
-}
+ MCFG_DEVICE_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(chinatow_map)
+MACHINE_CONFIG_END
-void funworld_state::intrgmes(machine_config &config)
-{
+MACHINE_CONFIG_START(funworld_state::intrgmes)
fw1stpal(config);
- R65C02(config.replace(), m_maincpu, CPU_CLOCK); /* 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &funworld_state::intergames_map);
- m_gfxdecode->set_info(gfx_fw2ndpal);
-}
+ MCFG_DEVICE_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(intergames_map)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_fw2ndpal)
+MACHINE_CONFIG_END
-void funworld_state::fw_brick_1(machine_config &config)
-{
+MACHINE_CONFIG_START(funworld_state::fw_brick_1)
fw1stpal(config);
- R65C02(config.replace(), m_maincpu, CPU_CLOCK); /* 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &funworld_state::fw_a7_11_map);
-// m_gfxdecode->set_info(gfx_fw2ndpal);
-}
+ MCFG_DEVICE_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(fw_a7_11_map)
+// MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_fw2ndpal)
+MACHINE_CONFIG_END
-void funworld_state::fw_brick_2(machine_config &config)
-{
+MACHINE_CONFIG_START(funworld_state::fw_brick_2)
fw2ndpal(config);
- R65C02(config.replace(), m_maincpu, CPU_CLOCK); /* 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &funworld_state::fw_a7_11_map);
-// m_gfxdecode->set_info(gfx_fw2ndpal);
-}
+ MCFG_DEVICE_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(fw_a7_11_map)
+// MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_fw2ndpal)
+MACHINE_CONFIG_END
// TO-DO: clean up and relocate, when convenient, all the opcode-encryption stuff
@@ -7764,7 +7750,7 @@ GAME( 199?, mongolnw, 0, royalcd1, royalcrd, funworld_state, init_mong
GAME( 199?, soccernw, 0, royalcd1, royalcrd, funworld_state, init_soccernw, ROT0, "<unknown>", "Soccer New (Italian)", MACHINE_UNEMULATED_PROTECTION )
// Other games...
-GAME( 198?, funquiz, 0, funquiz, funquiz, funworld_state, empty_init, ROT0, "Fun World", "Fun World Quiz (Austrian)", 0 )
+GAME( 198?, funquiz, 0, funquiz, funquiz, funworld_state, empty_init, ROT0, "Fun World / Oehlinger", "Fun World Quiz (Austrian)", 0 )
GAMEL( 1986, novoplay, 0, fw2ndpal, novoplay, funworld_state, empty_init, ROT0, "Admiral/Novomatic","Novo Play Multi Card / Club Card", 0, layout_novoplay )
GAME( 1991, intrgmes, 0, intrgmes, funworld, funworld_state, empty_init, ROT0, "Inter Games", "unknown Inter Games poker", MACHINE_NOT_WORKING )
GAMEL( 1985, fw_a7_11, 0, fw_brick_2, funworld, funworld_state, empty_init, ROT0, "Fun World", "unknown Fun World A7-11 game 1", MACHINE_NOT_WORKING, layout_jollycrd )
diff --git a/src/mame/drivers/funybubl.cpp b/src/mame/drivers/funybubl.cpp
index 61d0199f67e..b244d949740 100644
--- a/src/mame/drivers/funybubl.cpp
+++ b/src/mame/drivers/funybubl.cpp
@@ -217,28 +217,28 @@ void funybubl_state::machine_start()
}
-void funybubl_state::funybubl(machine_config &config)
-{
+MACHINE_CONFIG_START(funybubl_state::funybubl)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 12000000/2); /* 6 MHz?? */
- m_maincpu->set_addrmap(AS_PROGRAM, &funybubl_state::funybubl_map);
- m_maincpu->set_addrmap(AS_IO, &funybubl_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(funybubl_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6 MHz?? */
+ MCFG_DEVICE_PROGRAM_MAP(funybubl_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", funybubl_state, irq0_line_hold)
- Z80(config, m_audiocpu, 8000000/2); /* 4 MHz?? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &funybubl_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80,8000000/2) /* 4 MHz?? */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
ADDRESS_MAP_BANK(config, m_vrambank).set_map(&funybubl_state::vrambank_map).set_options(ENDIANNESS_LITTLE, 8, 13, 0x1000);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(12*8, 512-12*8-1, 16, 256-16-1);
-// screen.set_visarea(0*8, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(funybubl_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(12*8, 512-12*8-1, 16, 256-16-1)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(funybubl_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_funybubl);
PALETTE(config, m_palette).set_format(4, &funybubl_state::funybubl_R6B6G6, 0xc00/4);
@@ -249,10 +249,10 @@ void funybubl_state::funybubl(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
- OKIM6295(config, m_oki, 8000000/8, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
- m_oki->set_addrmap(0, &funybubl_state::oki_map);
- m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 8000000/8, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/fuukifg2.cpp b/src/mame/drivers/fuukifg2.cpp
index c30d173c010..eb94eda7e41 100644
--- a/src/mame/drivers/fuukifg2.cpp
+++ b/src/mame/drivers/fuukifg2.cpp
@@ -448,10 +448,10 @@ void fuuki16_state::machine_reset()
void fuuki16_state::fuuki16(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(32'000'000) / 2); /* 16 MHz */
+ M68000(config, m_maincpu, XTAL(32'000'000) / 2); /* 16 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &fuuki16_state::fuuki16_map);
- Z80(config, m_audiocpu, XTAL(12'000'000) / 2); /* 6 MHz */
+ Z80(config, m_audiocpu, XTAL(12'000'000) / 2); /* 6 MHz */
m_audiocpu->set_addrmap(AS_PROGRAM, &fuuki16_state::fuuki16_sound_map);
m_audiocpu->set_addrmap(AS_IO, &fuuki16_state::fuuki16_sound_io_map);
diff --git a/src/mame/drivers/g627.cpp b/src/mame/drivers/g627.cpp
index fafee6d0a15..b4a999530d8 100644
--- a/src/mame/drivers/g627.cpp
+++ b/src/mame/drivers/g627.cpp
@@ -296,12 +296,11 @@ WRITE8_MEMBER( g627_state::lamp_w )
}
}
-void g627_state::g627(machine_config &config)
-{
+MACHINE_CONFIG_START(g627_state::g627)
/* basic machine hardware */
- Z80(config, m_maincpu, 14138000/8);
- m_maincpu->set_addrmap(AS_PROGRAM, &g627_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &g627_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 14138000/8)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
i8156_device &i8156(I8156(config, "i8156", 14138000/8));
i8156.in_pa_callback().set(FUNC(g627_state::porta_r));
@@ -314,11 +313,12 @@ void g627_state::g627(machine_config &config)
/* Sound */
genpin_audio(config);
SPEAKER(config, "mono").front_center();
- ASTROCADE_IO(config, "astrocade", 14138000/8).add_route(ALL_OUTPUTS, "mono", 1.0); // 0066-117XX audio chip
+ MCFG_DEVICE_ADD("astrocade", ASTROCADE_IO, 14138000/8) // 0066-117XX audio chip
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
/* Video */
config.set_default_layout(layout_g627);
-}
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
/ Rotation VIII (09/1978)
diff --git a/src/mame/drivers/gaelco.cpp b/src/mame/drivers/gaelco.cpp
index dd67f05b271..e7a2407fd3c 100644
--- a/src/mame/drivers/gaelco.cpp
+++ b/src/mame/drivers/gaelco.cpp
@@ -644,17 +644,17 @@ void gaelco_state::machine_start()
m_okibank->configure_entries(0, 16, memregion("oki")->base(), 0x10000);
}
-void gaelco_state::bigkarnk(machine_config &config)
-{
+MACHINE_CONFIG_START(gaelco_state::bigkarnk)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 10000000); /* MC68000P10, 10 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &gaelco_state::bigkarnk_map);
- m_maincpu->set_vblank_int("screen", FUNC(gaelco_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 10000000) /* MC68000P10, 10 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(bigkarnk_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gaelco_state, irq6_line_hold)
- MC6809E(config, m_audiocpu, 8867000/4); /* 68B09EP, 2.21675 MHz? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &gaelco_state::bigkarnk_snd_map);
+ MCFG_DEVICE_ADD("audiocpu", MC6809E, 8867000/4) /* 68B09EP, 2.21675 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(bigkarnk_snd_map)
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
LS259(config, m_outlatch);
m_outlatch->q_out_cb<0>().set(FUNC(gaelco_state::coin1_lockout_w)).invert();
@@ -663,13 +663,13 @@ void gaelco_state::bigkarnk(machine_config &config)
m_outlatch->q_out_cb<3>().set(FUNC(gaelco_state::coin2_counter_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*16, 32*16);
- screen.set_visarea(0, 320-1, 16, 256-1);
- screen.set_screen_update(FUNC(gaelco_state::screen_update_bigkarnk));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*16, 32*16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco_state, screen_update_bigkarnk)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_gaelco);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 1024);
@@ -682,26 +682,28 @@ void gaelco_state::bigkarnk(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, M6809_FIRQ_LINE);
- YM3812(config, "ymsnd", 3580000).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("ymsnd", YM3812, 3580000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(gaelco_state::maniacsq)
-void gaelco_state::maniacsq(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &gaelco_state::maniacsq_map);
- m_maincpu->set_vblank_int("screen", FUNC(gaelco_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2 ) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(maniacsq_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gaelco_state, irq6_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*16, 32*16);
- screen.set_visarea(0, 320-1, 16, 256-1);
- screen.set_screen_update(FUNC(gaelco_state::screen_update_maniacsq));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*16, 32*16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco_state, screen_update_maniacsq)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_gaelco);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 1024);
@@ -711,19 +713,19 @@ void gaelco_state::maniacsq(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(1'000'000), okim6295_device::PIN7_HIGH)); // pin 7 not verified
- oki.set_addrmap(0, &gaelco_state::oki_map);
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(1'000'000), okim6295_device::PIN7_HIGH) // pin 7 not verified
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(gaelco_state::squash)
-void gaelco_state::squash(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(20'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &gaelco_state::squash_map);
- m_maincpu->set_vblank_int("screen", FUNC(gaelco_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(20'000'000)/2 ) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(squash_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gaelco_state, irq6_line_hold)
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
LS259(config, m_outlatch); // B8
m_outlatch->q_out_cb<0>().set(FUNC(gaelco_state::coin1_lockout_w)).invert();
@@ -733,13 +735,13 @@ void gaelco_state::squash(machine_config &config)
m_outlatch->q_out_cb<4>().set_nop(); // used
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*16, 32*16);
- screen.set_visarea(0, 320-1, 16, 256-1);
- screen.set_screen_update(FUNC(gaelco_state::screen_update_maniacsq));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*16, 32*16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco_state, screen_update_maniacsq)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_gaelco);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 1024);
@@ -749,19 +751,19 @@ void gaelco_state::squash(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(1'000'000), okim6295_device::PIN7_HIGH)); /* verified on pcb */
- oki.set_addrmap(0, &gaelco_state::oki_map);
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(1'000'000), okim6295_device::PIN7_HIGH) /* verified on pcb */
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(gaelco_state::thoop)
-void gaelco_state::thoop(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &gaelco_state::thoop_map);
- m_maincpu->set_vblank_int("screen", FUNC(gaelco_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2 ) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(thoop_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gaelco_state, irq6_line_hold)
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
LS259(config, m_outlatch); // B8
m_outlatch->q_out_cb<0>().set(FUNC(gaelco_state::coin1_lockout_w)); // not inverted
@@ -771,13 +773,13 @@ void gaelco_state::thoop(machine_config &config)
m_outlatch->q_out_cb<4>().set_nop(); // used
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*16, 32*16);
- screen.set_visarea(0, 320-1, 16, 256-1);
- screen.set_screen_update(FUNC(gaelco_state::screen_update_maniacsq));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*16, 32*16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco_state, screen_update_maniacsq)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_gaelco);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 1024);
@@ -787,10 +789,10 @@ void gaelco_state::thoop(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(1'000'000), okim6295_device::PIN7_HIGH)); // pin 7 not verified
- oki.set_addrmap(0, &gaelco_state::oki_map);
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(1'000'000), okim6295_device::PIN7_HIGH) // pin 7 not verified
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/gaelco2.cpp b/src/mame/drivers/gaelco2.cpp
index 5faa1cf89aa..8bd5a577435 100644
--- a/src/mame/drivers/gaelco2.cpp
+++ b/src/mame/drivers/gaelco2.cpp
@@ -85,18 +85,18 @@ void gaelco2_state::mcu_hostmem_map(address_map &map)
void gaelco2_state::maniacsq_map(address_map &map)
{
- map(0x000000, 0x03ffff).rom(); /* ROM */
- map(0x200000, 0x20ffff).ram().w(FUNC(gaelco2_state::vram_w)).share("spriteram"); /* Video RAM */
+ map(0x000000, 0x03ffff).rom(); /* ROM */
+ map(0x200000, 0x20ffff).ram().w(FUNC(gaelco2_state::gaelco2_vram_w)).share("spriteram"); /* Video RAM */
map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_gae1_device::gaelcosnd_r), FUNC(gaelco_gae1_device::gaelcosnd_w)); /* Sound Registers */
- map(0x210000, 0x211fff).ram().w(FUNC(gaelco2_state::palette_w)).share("paletteram"); /* Palette */
- map(0x218004, 0x218009).ram().w(FUNC(gaelco2_state::vregs_w)).share("vregs"); /* Video Registers */
- map(0x300000, 0x300001).portr("IN0"); /* DSW #1 + Input 1P */
- map(0x300002, 0x300003).portr("IN1"); /* DSW #2 + Input 2P */
- map(0x30004a, 0x30004b).nopw(); /* Sound muting? */
- map(0x320000, 0x320001).portr("COIN"); /* COINSW + SERVICESW */
- map(0x500000, 0x500001).w(FUNC(gaelco2_state::alighunt_coin_w)); /* Coin lockout + counters */
- map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */
- map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM */
+ map(0x210000, 0x211fff).ram().w(FUNC(gaelco2_state::gaelco2_palette_w)).share("paletteram"); /* Palette */
+ map(0x218004, 0x218009).ram().share("vregs"); /* Video Registers */
+ map(0x300000, 0x300001).portr("IN0"); /* DSW #1 + Input 1P */
+ map(0x300002, 0x300003).portr("IN1"); /* DSW #2 + Input 2P */
+ map(0x30004a, 0x30004b).nopw(); /* Sound muting? */
+ map(0x320000, 0x320001).portr("COIN"); /* COINSW + SERVICESW */
+ map(0x500000, 0x500001).w(FUNC(gaelco2_state::alighunt_coin_w)); /* Coin lockout + counters */
+ map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */
+ map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM */
}
@@ -193,7 +193,7 @@ void gaelco2_state::maniacsq(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
screen.set_size(64*16, 32*16);
screen.set_visarea(0, 320-1, 16, 256-1);
- screen.set_screen_update(FUNC(gaelco2_state::screen_update));
+ screen.set_screen_update(FUNC(gaelco2_state::screen_update_gaelco2));
screen.screen_vblank().set("spriteram", FUNC(buffered_spriteram16_device::vblank_copy_rising));
screen.set_palette(m_palette);
@@ -449,10 +449,10 @@ INPUT_PORTS_END
void gaelco2_state::saltcrdi_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
- map(0x200000, 0x20ffff).ram().w(FUNC(gaelco2_state::vram_w)).share("spriteram");
+ map(0x200000, 0x20ffff).ram().w(FUNC(gaelco2_state::gaelco2_vram_w)).share("spriteram");
map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_gae1_device::gaelcosnd_r), FUNC(gaelco_gae1_device::gaelcosnd_w));
- map(0x210000, 0x211fff).ram().w(FUNC(gaelco2_state::palette_w)).share("paletteram");
- map(0x218004, 0x218009).ram().w(FUNC(gaelco2_state::vregs_w)).share("vregs");
+ map(0x210000, 0x211fff).ram().w(FUNC(gaelco2_state::gaelco2_palette_w)).share("paletteram");
+ map(0x218004, 0x218009).ram().share("vregs");
map(0x300000, 0x300001).portr("IN0");
map(0x310000, 0x310001).portr("DSW");
map(0x320000, 0x320001).portr("COIN");
@@ -476,7 +476,7 @@ void gaelco2_state::saltcrdi(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
screen.set_size(64*16, 32*16);
screen.set_visarea(0, 384-1, 16, 256-1);
- screen.set_screen_update(FUNC(gaelco2_state::screen_update));
+ screen.set_screen_update(FUNC(gaelco2_state::screen_update_gaelco2));
screen.screen_vblank().set("spriteram", FUNC(buffered_spriteram16_device::vblank_copy_rising));
screen.set_palette(m_palette);
@@ -513,11 +513,11 @@ ROM_START( saltcrdi ) // REF 970410
ROM_LOAD( "bi-41-bank1-27c1001.u41", 0x01a0000, 0x0020000, CRC(c4d24254) SHA1(e6ff7624e628dc6ace11a50b6ff89812844b52c5) )
ROM_FILL( 0x0220000, 0x0020000, 0x00 ) /* to decode GFX as 5bpp */
- ROM_REGION( 0x0800, "iomcu", 0 ) // on IO board
- ROM_LOAD( "st62t15c6", 0x0000, 0x0800, NO_DUMP ) // 2KBytes internal ROM
+ ROM_REGION( 0x1000, "iomcu", 0 ) // on IO board
+ ROM_LOAD( "st62t15c6", 0x0000, 0x1000, NO_DUMP ) // size?
- ROM_REGION( 0x0104, "pals", 0 )
- ROM_LOAD( "6.pal16l8.u12", 0x0000, 0x0104, NO_DUMP )
+ ROM_REGION( 0x100, "pals", 0 )
+ ROM_LOAD( "6.pal16l8.u12", 0x0000, 0x100, NO_DUMP ) // size?
ROM_END
@@ -554,94 +554,100 @@ Note 1x 28x2 edge connector
1x trimmer (volume)
1x battery 3V (bt1)
+see
+http://web.archive.org/web/20001206204300/http://luckysunshine.com/products/gameboards/play2000.html
+
*/
-void gaelco2_state::play2000_map(address_map &map)
+
+READ16_MEMBER(gaelco2_state::play2000_shareram_68k_r)
{
- map(0x000000, 0x03ffff).rom(); /* ROM */
- map(0x100000, 0x100001).portr("IN0"); /* Coins + other buttons? */
- map(0x110000, 0x110001).portr("IN1");
- map(0x200000, 0x20ffff).ram().w(FUNC(gaelco2_state::vram_w)).share("spriteram"); /* Video RAM */
- map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_gae1_device::gaelcosnd_r), FUNC(gaelco_gae1_device::gaelcosnd_w)); /* Sound Registers */
- map(0x214000, 0x214fff).ram().w(FUNC(gaelco2_state::palette_w)).share("paletteram"); /* Palette */
- map(0x215000, 0x217fff).ram(); /* Written to, but unused? */
- map(0x218000, 0x218003).ram(); /* Written to, but unused? */
- map(0x218004, 0x218009).ram().w(FUNC(gaelco2_state::vregs_w)).share("vregs"); /* Video Registers */
- map(0x21800a, 0x218fff).ram(); /* Written to, but unused? */
- // AM_RANGE(0x843100, 0x84315e) ?
- map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */
- map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM */
+ int pc = m_maincpu->pc();
+ uint16_t ret = m_shareram[offset];
+
+ // checks at 0x00814, 0x23504, 0x2340a after writing command?
+ if (offset * 2 == 0x4020)
+ {
+ if (pc == 0x00814) return 0x0900;
+ else return 0x0000;
+ }
+
+ // checks at 0x23310, 0x2334a
+ if (offset * 2 == 0x4008)
+ {
+ return 0x0000;
+ }
+
+ if (offset * 2 < 0x1000)
+ {
+ // It seems one of the commands puts a 0x1000 worth of data at the start of shared RAM
+ // the game checks various values in it before booting. It's possible the game is primarily
+ // using the DS5002FP for the SRAM capabilities rather than protection.
+ if (offset * 2 == 0x42c) return 0x0000;
+ if (offset * 2 == 0x42e) return 0x00f0;
+ if (offset * 2 == 0xc04) return 0x7171;
+ // return 0x0000;
+ }
+
+ logerror("%04x read from shareram %04x %04x %04x\n", pc, offset * 2, mem_mask, ret & mem_mask);
+ return ret;
}
-static INPUT_PORTS_START( play2000 )
- PORT_START("IN0")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) // Coin1
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) // NoteA
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) // cycles through games in attract?
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) // shows odds if coins are present?
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
+WRITE16_MEMBER(gaelco2_state::play2000_shareram_68k_w)
+{
+ int pc = m_maincpu->pc();
- PORT_START("IN1")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN3 ) // NoteB
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN4 ) // NoteC
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN5 ) // NoteD
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Incassa") PORT_CODE(KEYCODE_H) // what standard button would this be?
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) // "Play"
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START1 )
- PORT_SERVICE_NO_TOGGLE( 0x0040, IP_ACTIVE_LOW )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Collect") PORT_CODE(KEYCODE_G) // what standard button would this be?
- PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
-INPUT_PORTS_END
+ COMBINE_DATA(&m_shareram[offset]);
+ if (pc == 0x00552) return; // initial RAM check
+ if (pc == 0x232f4) return; // 'updating board'
-void gaelco2_state::init_play2000()
-{
- m_global_spritexoff = 1; // aligns flashing sprites with backgrounds
+ logerror("%04x write to shareram %04x %04x %04x\n", pc, offset * 2, mem_mask, data & mem_mask);
}
-ROM_START( play2000 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
- ROM_LOAD16_BYTE( "tms27c010a.2", 0x000000, 0x020000, CRC(598102f9) SHA1(66fb6d321c886099b99d048d1f9f13cf016b9c43) )
- ROM_LOAD16_BYTE( "tms27c010a.1", 0x000001, 0x020000, CRC(e2b5d79a) SHA1(f004352ddb9bc92aab126627689b45b2ef8583b1) )
-
- ROM_REGION( 0x8000, "gaelco_ds5002fp:sram", 0 ) /* DS5002FP code - had 7.0 sticker on too */
- // This has only been dumped from a single MCU, so there is potential for bad bits as there is risk in the dumping process. The majority of the ROM is data and thus difficult to verify.
- ROM_LOAD( "ds5002fp_70i.mcu", 0x00000, 0x8000, BAD_DUMP CRC(b51ad3da) SHA1(4a730238b4b875c74dd2e4df6e7880d03659b7d5) )
-
- ROM_REGION( 0x100, "gaelco_ds5002fp:mcu:internal", ROMREGION_ERASE00 )
- DS5002FP_SET_MON( 0x79 )
- DS5002FP_SET_RPCTL( 0x00 )
- DS5002FP_SET_CRCR( 0x80 )
- ROM_REGION( 0x0a00000, "gfx1", 0 ) /* GFX + Sound */
- ROM_LOAD( "6.u51", 0x0000000, 0x0100000, CRC(6dafc11c) SHA1(2aa3d6318418578433b3060bda6e27adf794dea4) ) /* GFX + Sound*/
- ROM_LOAD( "4.u53", 0x0200000, 0x0080000, CRC(94dc37a7) SHA1(28f9832b61541b292682a6e2d2264abccd138a2e) ) /* GFX only */
- ROM_LOAD( "7.u50", 0x0400000, 0x0080000, CRC(e80c6d39) SHA1(b3ae5d66c48c2ba6665a181e311b0c834384258a) ) /* GFX only */
- ROM_LOAD( "5.u52", 0x0600000, 0x0080000, CRC(19b939f4) SHA1(7281709aa3ab1decb84bf7ab10492fb6ec197c80) ) /* GFX only */
- ROM_LOAD( "3.u54", 0x0800000, 0x0080000, CRC(085008ed) SHA1(06eb4f972d79eab13b1b3b6829ef280e079abdb6) ) /* GFX only */
-
- ROM_REGION( 0x0600, "plds", 0 )
- ROM_LOAD( "palce16v8h.u29", 0x0000, 0x0117, BAD_DUMP CRC(4a0a6f39) SHA1(57351e471649391c9abf110828fe2f128fe84eee) )
-ROM_END
+void gaelco2_state::play2000_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); /* ROM */
+ map(0x100000, 0x100001).portr("IN0"); /* Coins + other buttons? */
+ // AM_RANGE(0x110000, 0x110001) ?
+ map(0x200000, 0x20ffff).ram().w(FUNC(gaelco2_state::gaelco2_vram_w)).share("spriteram"); /* Video RAM */
+ map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_gae1_device::gaelcosnd_r), FUNC(gaelco_gae1_device::gaelcosnd_w)); /* Sound Registers */
+ map(0x214000, 0x214fff).ram().w(FUNC(gaelco2_state::gaelco2_palette_w)).share("paletteram"); /* Palette */
+ map(0x215000, 0x217fff).ram(); /* Written to, but unused? */
+ map(0x218000, 0x218003).ram(); /* Written to, but unused? */
+ map(0x218004, 0x218009).ram().share("vregs"); /* Video Registers */
+ map(0x21800a, 0x218fff).ram(); /* Written to, but unused? */
+ // AM_RANGE(0x843100, 0x84315e) ?
+ map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */
+ map(0xfe8000, 0xfeffff).rw(FUNC(gaelco2_state::play2000_shareram_68k_r), FUNC(gaelco2_state::play2000_shareram_68k_w)).share("shareram"); /* Work RAM */
+}
+static INPUT_PORTS_START( play2000 )
+ PORT_START("IN0")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) // cycles through games in attract?
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON3 ) // shows odds if coins are present?
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON4 )
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON5 )
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON6 )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON7 )
+ PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+INPUT_PORTS_END
-ROM_START( play2000_40i ) /* there are version 4.0 and version 1.0 strings in this, go with the higher one */
+ROM_START( play2000 ) /* there are version 4.0 and version 1.0 strings in this, go with the higher one */
ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_BYTE( "2.u39_v4", 0x000000, 0x020000, CRC(fff16141) SHA1(8493c3e58a231c03b152b336f43422a9a2d2618c) )
ROM_LOAD16_BYTE( "1.u40_v4", 0x000001, 0x020000, CRC(39f9d58e) SHA1(1cbdae2adc570f2a2e10a707075312ef717e2643) )
ROM_REGION( 0x8000, "gaelco_ds5002fp:sram", 0 ) /* DS5002FP code */
- // this is the same dump as from the play7000 MCU but with valid default data for this set
- ROM_LOAD( "ds5002fp_40i.mcu", 0x00000, 0x8000, BAD_DUMP CRC(7c45cdf2) SHA1(64aee4d77e0715342634e6eadb83dae4a2db9dfd) )
+ ROM_LOAD( "ds5002fp.bin", 0x00000, 0x8000, NO_DUMP )
ROM_REGION( 0x100, "gaelco_ds5002fp:mcu:internal", ROMREGION_ERASE00 )
- DS5002FP_SET_MON( 0x79 )
- DS5002FP_SET_RPCTL( 0x00 )
- DS5002FP_SET_CRCR( 0x80 )
+ //DS5002FP_SET_MON( x )
+ //DS5002FP_SET_RPCTL( x )
+ //DS5002FP_SET_CRCR( x )
ROM_REGION( 0x0a00000, "gfx1", 0 ) /* GFX + Sound */
ROM_LOAD( "6.u51", 0x0000000, 0x0100000, CRC(6dafc11c) SHA1(2aa3d6318418578433b3060bda6e27adf794dea4) ) /* GFX + Sound*/
@@ -689,20 +695,19 @@ REF: 990315
| |------------| |
-----------------------------------------------------------------------------|
*/
-ROM_START( play2000_50i )
+ROM_START( play2000a )
/*at least 1.u40 is bad, on every 0x40 bytes the first four are always 0xff.*/
ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_BYTE( "2.u39", 0x000000, 0x020000, BAD_DUMP CRC(9939299e) SHA1(55303a2adf199f4b5a60f57be7480b0e119f8624) )
ROM_LOAD16_BYTE( "1.u40", 0x000001, 0x020000, BAD_DUMP CRC(311c2f94) SHA1(963d6b5f479598145146fcb8b7c6ce77fbc92b07) )
ROM_REGION( 0x8000, "gaelco_ds5002fp:sram", 0 ) /* DS5002FP code */
- // can't create an initialized default for this one as the main program is bad
- ROM_LOAD( "ds5002fp_50i.mcu", 0x00000, 0x8000, NO_DUMP )
+ ROM_LOAD( "ds5002fp.bin", 0x00000, 0x8000, NO_DUMP )
ROM_REGION( 0x100, "gaelco_ds5002fp:mcu:internal", ROMREGION_ERASE00 )
- DS5002FP_SET_MON( 0x79 )
- DS5002FP_SET_RPCTL( 0x00 )
- DS5002FP_SET_CRCR( 0x80 )
+ //DS5002FP_SET_MON( x )
+ //DS5002FP_SET_RPCTL( x )
+ //DS5002FP_SET_CRCR( x )
ROM_REGION( 0x0a00000, "gfx1", 0 ) /* GFX + Sound */
ROM_LOAD( "6.u51", 0x0000000, 0x0100000, CRC(6dafc11c) SHA1(2aa3d6318418578433b3060bda6e27adf794dea4) ) /* GFX + Sound*/
@@ -722,7 +727,8 @@ void gaelco2_state::play2000(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &gaelco2_state::play2000_map);
m_maincpu->set_vblank_int("screen", FUNC(gaelco2_state::irq6_line_hold));
- GAELCO_DS5002FP(config, "gaelco_ds5002fp", XTAL(32'000'000) / 2).set_addrmap(0, &gaelco2_state::mcu_hostmem_map); /* 16 MHz */
+ // MCFG_DEVICE_ADD("gaelco_ds5002fp", GAELCO_DS5002FP, XTAL(11'059'200)) /* 11.0592MHz */
+ // MCFG_DEVICE_ADDRESS_MAP(0, mcu_hostmem_map)
/* video hardware */
BUFFERED_SPRITERAM16(config, m_spriteram);
@@ -732,7 +738,7 @@ void gaelco2_state::play2000(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
screen.set_size(64*16, 32*16);
screen.set_visarea(0, 384-1, 16, 256-1);
- screen.set_screen_update(FUNC(gaelco2_state::screen_update));
+ screen.set_screen_update(FUNC(gaelco2_state::screen_update_gaelco2));
screen.screen_vblank().set("spriteram", FUNC(buffered_spriteram16_device::vblank_copy_rising));
screen.set_palette(m_palette);
@@ -745,9 +751,9 @@ void gaelco2_state::play2000(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- gaelco_gae1_device &gaelco(GAELCO_GAE1(config, "gaelco"));
+ gaelco_gae1_device &gaelco(GAELCO_GAE1(config, "gaelco")); /* unused? ROMs contain no sound data */
gaelco.set_snd_data_tag("gfx1");
- gaelco.set_bank_offsets(0 * 0x080000, 0 * 0x080000, 0 * 0x080000, 0 * 0x080000);
+ gaelco.set_bank_offsets(1 * 0x0080000, 1 * 0x0080000, 1 * 0x0080000, 1 * 0x0080000); // ?
gaelco.add_route(0, "lspeaker", 1.0);
gaelco.add_route(1, "rspeaker", 1.0);
}
@@ -757,30 +763,30 @@ void gaelco2_state::play2000(machine_config &config)
BANG
============================================================================*/
-u16 bang_state::p1_gun_x(){return (m_light0_x->read() * 320 / 0x100) + 1;}
-u16 bang_state::p1_gun_y(){return (m_light0_y->read() * 240 / 0x100) - 4;}
-u16 bang_state::p2_gun_x(){return (m_light1_x->read() * 320 / 0x100) + 1;}
-u16 bang_state::p2_gun_y(){return (m_light1_y->read() * 240 / 0x100) - 4;}
+READ16_MEMBER(bang_state::p1_gun_x){return (m_light0_x->read() * 320 / 0x100) + 1;}
+READ16_MEMBER(bang_state::p1_gun_y){return (m_light0_y->read() * 240 / 0x100) - 4;}
+READ16_MEMBER(bang_state::p2_gun_x){return (m_light1_x->read() * 320 / 0x100) + 1;}
+READ16_MEMBER(bang_state::p2_gun_y){return (m_light1_y->read() * 240 / 0x100) - 4;}
void bang_state::bang_map(address_map &map)
{
- map(0x000000, 0x0fffff).rom(); /* ROM */
- map(0x200000, 0x20ffff).ram().w(FUNC(bang_state::vram_w)).share("spriteram"); /* Video RAM */
+ map(0x000000, 0x0fffff).rom(); /* ROM */
+ map(0x200000, 0x20ffff).ram().w(FUNC(bang_state::gaelco2_vram_w)).share("spriteram"); /* Video RAM */
map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_cg1v_device::gaelcosnd_r), FUNC(gaelco_cg1v_device::gaelcosnd_w)); /* Sound Registers */
- map(0x210000, 0x211fff).ram().w(FUNC(bang_state::palette_w)).share("paletteram"); /* Palette */
- map(0x218004, 0x218009).readonly(); /* Video Registers */
- map(0x218004, 0x218007).w(FUNC(bang_state::vregs_w)).share("vregs"); /* Video Registers */
- map(0x218008, 0x218009).nopw(); /* CLR INT Video */
+ map(0x210000, 0x211fff).ram().w(FUNC(bang_state::gaelco2_palette_w)).share("paletteram"); /* Palette */
+ map(0x218004, 0x218009).readonly(); /* Video Registers */
+ map(0x218004, 0x218007).writeonly().share("vregs"); /* Video Registers */
+ map(0x218008, 0x218009).nopw(); /* CLR INT Video */
map(0x300000, 0x300001).portr("P1");
- map(0x300002, 0x300003).nopr(); /* Random number generator? */
- map(0x300000, 0x30000f).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff); /* Coin Counters & serial EEPROM */
+ map(0x300002, 0x300003).nopr(); /* Random number generator? */
+ map(0x300000, 0x30000f).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff); /* Coin Counters & serial EEPROM */
map(0x300010, 0x300011).portr("P2");
map(0x300020, 0x300021).portr("COIN");
- map(0x310000, 0x310001).r(FUNC(bang_state::p1_gun_x)).w(FUNC(bang_state::bang_clr_gun_int_w)); /* Gun 1P X */ /* CLR INT Gun */
- map(0x310002, 0x310003).r(FUNC(bang_state::p2_gun_x)); /* Gun 2P X */
- map(0x310004, 0x310005).r(FUNC(bang_state::p1_gun_y)); /* Gun 1P Y */
- map(0x310006, 0x310007).r(FUNC(bang_state::p2_gun_y)); /* Gun 2P Y */
- map(0xfe0000, 0xfeffff).ram(); /* Work RAM */
+ map(0x310000, 0x310001).r(FUNC(bang_state::p1_gun_x)).w(FUNC(bang_state::bang_clr_gun_int_w)); /* Gun 1P X */ /* CLR INT Gun */
+ map(0x310002, 0x310003).r(FUNC(bang_state::p2_gun_x)); /* Gun 2P X */
+ map(0x310004, 0x310005).r(FUNC(bang_state::p1_gun_y)); /* Gun 1P Y */
+ map(0x310006, 0x310007).r(FUNC(bang_state::p2_gun_y)); /* Gun 2P Y */
+ map(0xfe0000, 0xfeffff).ram(); /* Work RAM */
}
@@ -838,7 +844,7 @@ void bang_state::bang(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
screen.set_size(64*16, 32*16);
screen.set_visarea(0, 320-1, 16, 256-1);
- screen.set_screen_update(FUNC(gaelco2_state::screen_update));
+ screen.set_screen_update(FUNC(gaelco2_state::screen_update_gaelco2));
screen.screen_vblank().set("spriteram", FUNC(buffered_spriteram16_device::vblank_copy_rising));
screen.set_palette(m_palette);
@@ -970,18 +976,18 @@ ROM_END
void gaelco2_state::alighunt_map(address_map &map)
{
- map(0x000000, 0x0fffff).rom(); /* ROM */
- map(0x200000, 0x20ffff).ram().w(FUNC(gaelco2_state::vram_w)).share("spriteram"); /* Video RAM */
- map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_gae1_device::gaelcosnd_r), FUNC(gaelco_gae1_device::gaelcosnd_w)); /* Sound Registers */
- map(0x210000, 0x211fff).ram().w(FUNC(gaelco2_state::palette_w)).share("paletteram"); /* Palette */
- map(0x218004, 0x218009).ram().w(FUNC(gaelco2_state::vregs_w)).share("vregs"); /* Video Registers */
- map(0x300000, 0x300001).portr("IN0"); /* DSW #1 + Input 1P */
- map(0x300002, 0x300003).portr("IN1"); /* DSW #2 + Input 2P */
- map(0x320000, 0x320001).portr("COIN"); /* COINSW + SERVICESW */
- map(0x500000, 0x500001).w(FUNC(gaelco2_state::alighunt_coin_w)); /* Coin lockout + counters */
- map(0x500006, 0x500007).nopw(); /* ??? */
- map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */
- map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM (shared with D5002FP) */
+ map(0x000000, 0x0fffff).rom(); /* ROM */
+ map(0x200000, 0x20ffff).ram().w(FUNC(gaelco2_state::gaelco2_vram_w)).share("spriteram"); /* Video RAM */
+ map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_gae1_device::gaelcosnd_r), FUNC(gaelco_gae1_device::gaelcosnd_w)); /* Sound Registers */
+ map(0x210000, 0x211fff).ram().w(FUNC(gaelco2_state::gaelco2_palette_w)).share("paletteram"); /* Palette */
+ map(0x218004, 0x218009).ram().share("vregs"); /* Video Registers */
+ map(0x300000, 0x300001).portr("IN0"); /* DSW #1 + Input 1P */
+ map(0x300002, 0x300003).portr("IN1"); /* DSW #2 + Input 2P */
+ map(0x320000, 0x320001).portr("COIN"); /* COINSW + SERVICESW */
+ map(0x500000, 0x500001).w(FUNC(gaelco2_state::alighunt_coin_w)); /* Coin lockout + counters */
+ map(0x500006, 0x500007).nopw(); /* ??? */
+ map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */
+ map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM (shared with D5002FP) */
}
@@ -1077,7 +1083,7 @@ void gaelco2_state::alighunt(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
screen.set_size(64*16, 32*16);
screen.set_visarea(0, 320-1, 16, 256-1);
- screen.set_screen_update(FUNC(gaelco2_state::screen_update));
+ screen.set_screen_update(FUNC(gaelco2_state::screen_update_gaelco2));
screen.screen_vblank().set("spriteram", FUNC(buffered_spriteram16_device::vblank_copy_rising));
screen.set_palette(m_palette);
@@ -1240,18 +1246,18 @@ ROM_END
void gaelco2_state::touchgo_map(address_map &map)
{
- map(0x000000, 0x0fffff).rom(); /* ROM */
- map(0x200000, 0x20ffff).ram().w(FUNC(gaelco2_state::vram_w)).share("spriteram"); /* Video RAM */
- map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_gae1_device::gaelcosnd_r), FUNC(gaelco_gae1_device::gaelcosnd_w)); /* Sound Registers */
- map(0x210000, 0x211fff).ram().w(FUNC(gaelco2_state::palette_w)).share("paletteram"); /* Palette */
- map(0x218004, 0x218009).ram().w(FUNC(gaelco2_state::vregs_w)).share("vregs"); /* Video Registers */
- map(0x300000, 0x300001).portr("IN0"); /* DSW #1 + Input 1P */
- map(0x300002, 0x300003).portr("IN1"); /* DSW #2 + Input 2P */
- map(0x300004, 0x300005).portr("IN2"); /* COINSW + Input 3P */
- map(0x300006, 0x300007).portr("IN3"); /* SERVICESW + Input 4P */
- map(0x500000, 0x500001).select(0x0038).w(FUNC(gaelco2_state::wrally2_latch_w)); /* Coin counters */
- map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */
- map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM (shared with D5002FP) */
+ map(0x000000, 0x0fffff).rom(); /* ROM */
+ map(0x200000, 0x20ffff).ram().w(FUNC(gaelco2_state::gaelco2_vram_w)).share("spriteram"); /* Video RAM */
+ map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_gae1_device::gaelcosnd_r), FUNC(gaelco_gae1_device::gaelcosnd_w)); /* Sound Registers */
+ map(0x210000, 0x211fff).ram().w(FUNC(gaelco2_state::gaelco2_palette_w)).share("paletteram"); /* Palette */
+ map(0x218004, 0x218009).ram().share("vregs"); /* Video Registers */
+ map(0x300000, 0x300001).portr("IN0"); /* DSW #1 + Input 1P */
+ map(0x300002, 0x300003).portr("IN1"); /* DSW #2 + Input 2P */
+ map(0x300004, 0x300005).portr("IN2"); /* COINSW + Input 3P */
+ map(0x300006, 0x300007).portr("IN3"); /* SERVICESW + Input 4P */
+ map(0x500000, 0x500001).select(0x0038).w(FUNC(gaelco2_state::wrally2_latch_w)); /* Coin counters */
+ map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */
+ map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM (shared with D5002FP) */
}
@@ -1386,7 +1392,7 @@ void gaelco2_state::touchgo(machine_config &config)
lscreen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
lscreen.set_size(64*16, 32*16);
lscreen.set_visarea(0, 480-1, 16, 256-1);
- lscreen.set_screen_update(FUNC(gaelco2_state::screen_update_left));
+ lscreen.set_screen_update(FUNC(gaelco2_state::screen_update_gaelco2_left));
lscreen.set_palette(m_palette);
screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER));
@@ -1394,7 +1400,7 @@ void gaelco2_state::touchgo(machine_config &config)
rscreen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
rscreen.set_size(64*16, 32*16);
rscreen.set_visarea(0, 480-1, 16, 256-1);
- rscreen.set_screen_update(FUNC(gaelco2_state::screen_update_right));
+ rscreen.set_screen_update(FUNC(gaelco2_state::screen_update_gaelco2_right));
rscreen.screen_vblank().set("spriteram", FUNC(buffered_spriteram16_device::vblank_copy_rising));
rscreen.set_palette(m_palette);
@@ -1620,18 +1626,18 @@ ROM_END
void gaelco2_state::snowboar_map(address_map &map)
{
- map(0x000000, 0x0fffff).rom(); /* ROM */
- map(0x200000, 0x20ffff).ram().w(FUNC(gaelco2_state::vram_w)).share("spriteram"); /* Video RAM */
- map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_cg1v_device::gaelcosnd_r), FUNC(gaelco_cg1v_device::gaelcosnd_w)); /* Sound Registers */
- map(0x210000, 0x211fff).ram().w(FUNC(gaelco2_state::palette_w)).share("paletteram"); /* Palette */
- map(0x212000, 0x213fff).ram(); /* Extra RAM */
- map(0x218004, 0x218009).ram().w(FUNC(gaelco2_state::vregs_w)).share("vregs"); /* Video Registers */
+ map(0x000000, 0x0fffff).rom(); /* ROM */
+ map(0x200000, 0x20ffff).ram().w(FUNC(gaelco2_state::gaelco2_vram_w)).share("spriteram"); /* Video RAM */
+ map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_cg1v_device::gaelcosnd_r), FUNC(gaelco_cg1v_device::gaelcosnd_w)); /* Sound Registers */
+ map(0x210000, 0x211fff).ram().w(FUNC(gaelco2_state::gaelco2_palette_w)).share("paletteram"); /* Palette */
+ map(0x212000, 0x213fff).ram(); /* Extra RAM */
+ map(0x218004, 0x218009).ram().share("vregs"); /* Video Registers */
map(0x300000, 0x300001).portr("P1");
- map(0x300000, 0x30000f).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff); /* Coin Counters & serial EEPROM */
+ map(0x300000, 0x30000f).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff); /* Coin Counters & serial EEPROM */
map(0x300010, 0x300011).portr("P2");
map(0x300020, 0x300021).portr("COIN");
map(0x310000, 0x31ffff).rw(FUNC(gaelco2_state::snowboar_protection_r), FUNC(gaelco2_state::snowboar_protection_w)).share("snowboar_prot"); /* Protection */
- map(0xfe0000, 0xfeffff).ram(); /* Work RAM */
+ map(0xfe0000, 0xfeffff).ram(); /* Work RAM */
}
@@ -1691,7 +1697,7 @@ void gaelco2_state::snowboar(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
screen.set_size(64*16, 32*16);
screen.set_visarea(0, 384-1, 16, 256-1);
- screen.set_screen_update(FUNC(gaelco2_state::screen_update));
+ screen.set_screen_update(FUNC(gaelco2_state::screen_update_gaelco2));
screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
screen.set_palette(m_palette);
@@ -1735,7 +1741,7 @@ void gaelco2_state::maniacsqs(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
screen.set_size(64*16, 32*16);
screen.set_visarea(0, 320-1, 16, 256-1);
- screen.set_screen_update(FUNC(gaelco2_state::screen_update));
+ screen.set_screen_update(FUNC(gaelco2_state::screen_update_gaelco2));
screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
screen.set_palette(m_palette);
@@ -1853,19 +1859,19 @@ ROM_END
void wrally2_state::wrally2_map(address_map &map)
{
- map(0x000000, 0x0fffff).rom(); /* ROM */
- map(0x200000, 0x20ffff).ram().w(FUNC(wrally2_state::vram_w)).share("spriteram"); /* Video RAM */
+ map(0x000000, 0x0fffff).rom(); /* ROM */
+ map(0x200000, 0x20ffff).ram().w(FUNC(wrally2_state::gaelco2_vram_w)).share("spriteram"); /* Video RAM */
map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_gae1_device::gaelcosnd_r), FUNC(gaelco_gae1_device::gaelcosnd_w)); /* Sound Registers */
- map(0x210000, 0x211fff).ram().w(FUNC(wrally2_state::palette_w)).share("paletteram"); /* Palette */
- map(0x212000, 0x213fff).ram(); /* Extra RAM */
- map(0x218004, 0x218009).ram().w(FUNC(wrally2_state::vregs_w)).share("vregs"); /* Video Registers */
- map(0x300000, 0x300001).portr("IN0"); /* DIPSW #2 + Inputs 1P */
- map(0x300002, 0x300003).portr("IN1"); /* DIPSW #1 */
- map(0x300004, 0x300005).portr("IN2"); /* Inputs 2P + COINSW */
- map(0x300006, 0x300007).portr("IN3"); /* SERVICESW */
- map(0x400000, 0x400001).select(0x0038).w(FUNC(wrally2_state::wrally2_latch_w)); /* Coin counters, etc. */
- map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */
- map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM (shared with D5002FP) */
+ map(0x210000, 0x211fff).ram().w(FUNC(wrally2_state::gaelco2_palette_w)).share("paletteram"); /* Palette */
+ map(0x212000, 0x213fff).ram(); /* Extra RAM */
+ map(0x218004, 0x218009).ram().share("vregs"); /* Video Registers */
+ map(0x300000, 0x300001).portr("IN0"); /* DIPSW #2 + Inputs 1P */
+ map(0x300002, 0x300003).portr("IN1"); /* DIPSW #1 */
+ map(0x300004, 0x300005).portr("IN2"); /* Inputs 2P + COINSW */
+ map(0x300006, 0x300007).portr("IN3"); /* SERVICESW */
+ map(0x400000, 0x400001).select(0x0038).w(FUNC(wrally2_state::wrally2_latch_w)); /* Coin counters, etc. */
+ map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */
+ map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM (shared with D5002FP) */
}
@@ -1984,7 +1990,7 @@ void wrally2_state::wrally2(machine_config &config)
lscreen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
lscreen.set_size(384, 32*16);
lscreen.set_visarea(0, 384-1, 16, 256-1);
- lscreen.set_screen_update(FUNC(gaelco2_state::screen_update_left));
+ lscreen.set_screen_update(FUNC(gaelco2_state::screen_update_gaelco2_left));
lscreen.set_palette(m_palette);
screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER));
@@ -1992,7 +1998,7 @@ void wrally2_state::wrally2(machine_config &config)
rscreen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
rscreen.set_size(384, 32*16);
rscreen.set_visarea(0, 384-1, 16, 256-1);
- rscreen.set_screen_update(FUNC(gaelco2_state::screen_update_right));
+ rscreen.set_screen_update(FUNC(gaelco2_state::screen_update_gaelco2_right));
rscreen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
rscreen.set_palette(m_palette);
@@ -2298,36 +2304,34 @@ ROM_END
-GAME( 1994, aligator, 0, alighunt_d5002fp, alighunt, gaelco2_state, init_alighunt, ROT0, "Gaelco", "Alligator Hunt (World, protected)", 0 )
-GAME( 1994, aligators, aligator, alighunt_d5002fp, alighunt, gaelco2_state, init_alighunt, ROT0, "Gaelco", "Alligator Hunt (Spain, protected)", 0 )
-GAME( 1994, aligatorun, aligator, alighunt, alighunt, gaelco2_state, init_alighunt, ROT0, "Gaelco", "Alligator Hunt (unprotected, set 1)", 0 )
-GAME( 1994, aligatoruna, aligator, alighunt, alighunt, gaelco2_state, init_alighunt, ROT0, "Gaelco", "Alligator Hunt (unprotected, set 2)", 0 ) // strange version, starts on space stages, but clearly a recompile not a trivial hack of the above, show version maybe?
+GAME( 1994, aligator, 0, alighunt_d5002fp, alighunt, gaelco2_state, init_alighunt, ROT0, "Gaelco", "Alligator Hunt (World, protected)", 0 )
+GAME( 1994, aligators, aligator, alighunt_d5002fp, alighunt, gaelco2_state, init_alighunt, ROT0, "Gaelco", "Alligator Hunt (Spain, protected)", 0 )
+GAME( 1994, aligatorun, aligator, alighunt, alighunt, gaelco2_state, init_alighunt, ROT0, "Gaelco", "Alligator Hunt (unprotected, set 1)", 0 )
+GAME( 1994, aligatoruna, aligator, alighunt, alighunt, gaelco2_state, init_alighunt, ROT0, "Gaelco", "Alligator Hunt (unprotected, set 2)", 0 ) // strange version, starts on space stages, but clearly a recompile not a trivial hack of the above, show version maybe?
-GAME( 1995, touchgo, 0, touchgo_d5002fp, touchgo, gaelco2_state, init_touchgo, ROT0, "Gaelco", "Touch & Go (World)", MACHINE_IMPERFECT_SOUND )
-GAME( 1995, touchgon, touchgo, touchgo_d5002fp, touchgo, gaelco2_state, init_touchgo, ROT0, "Gaelco", "Touch & Go (Non North America)", MACHINE_IMPERFECT_SOUND )
-GAME( 1995, touchgoe, touchgo, touchgo_d5002fp, touchgo, gaelco2_state, init_touchgo, ROT0, "Gaelco", "Touch & Go (earlier revision)", MACHINE_IMPERFECT_SOUND )
-GAME( 1995, touchgok, touchgo, touchgo, touchgo, gaelco2_state, init_touchgo, ROT0, "Gaelco", "Touch & Go (Korea, unprotected)", MACHINE_IMPERFECT_SOUND ) // doesn't say 'Korea' but was sourced there, shows 2 copyright lines like the 'earlier revision'
+GAME( 1995, touchgo, 0, touchgo_d5002fp, touchgo, gaelco2_state, init_touchgo, ROT0, "Gaelco", "Touch & Go (World)", MACHINE_IMPERFECT_SOUND )
+GAME( 1995, touchgon, touchgo, touchgo_d5002fp, touchgo, gaelco2_state, init_touchgo, ROT0, "Gaelco", "Touch & Go (Non North America)", MACHINE_IMPERFECT_SOUND )
+GAME( 1995, touchgoe, touchgo, touchgo_d5002fp, touchgo, gaelco2_state, init_touchgo, ROT0, "Gaelco", "Touch & Go (earlier revision)", MACHINE_IMPERFECT_SOUND )
+GAME( 1995, touchgok, touchgo, touchgo, touchgo, gaelco2_state, init_touchgo, ROT0, "Gaelco", "Touch & Go (Korea, unprotected)", MACHINE_IMPERFECT_SOUND ) // doesn't say 'Korea' but was sourced there, shows 2 copyright lines like the 'earlier revision'
-GAME( 1995, wrally2, 0, wrally2, wrally2, wrally2_state, init_wrally2, ROT0, "Gaelco", "World Rally 2: Twin Racing (mask ROM version)", 0 )
-GAME( 1995, wrally2a, wrally2, wrally2, wrally2, wrally2_state, empty_init, ROT0, "Gaelco", "World Rally 2: Twin Racing (EPROM version)", 0 )
+GAME( 1995, wrally2, 0, wrally2, wrally2, wrally2_state, init_wrally2, ROT0, "Gaelco", "World Rally 2: Twin Racing (mask ROM version)", 0 )
+GAME( 1995, wrally2a, wrally2, wrally2, wrally2, wrally2_state, empty_init, ROT0, "Gaelco", "World Rally 2: Twin Racing (EPROM version)", 0 )
// All sets identify as Version 1.0, but are clearly different revisions
-GAME( 1996, maniacsq, 0, maniacsq_d5002fp, maniacsq, gaelco2_state, empty_init, ROT0, "Gaelco", "Maniac Square (protected, Version 1.0, Checksum DEEE)", 0 )
-GAME( 1996, maniacsqa, maniacsq, maniacsq_d5002fp, maniacsq, gaelco2_state, empty_init, ROT0, "Gaelco", "Maniac Square (protected, Version 1.0, Checksum CF2D)", 0 )
-GAME( 1996, maniacsqu, maniacsq, maniacsq, maniacsq, gaelco2_state, empty_init, ROT0, "Gaelco", "Maniac Square (unprotected, Version 1.0, Checksum BB73)", 0 )
-GAME( 1996, maniacsqs, maniacsq, maniacsqs, snowboar, gaelco2_state, empty_init, ROT0, "Gaelco", "Maniac Square (unprotected, Version 1.0, Checksum 66B1, 960419/1 PCB)", 0 ) // Official version on Snow Board Championship PCB, doesn't use the protection
+GAME( 1996, maniacsq, 0, maniacsq_d5002fp, maniacsq, gaelco2_state, empty_init, ROT0, "Gaelco", "Maniac Square (protected, Version 1.0, Checksum DEEE)", 0 )
+GAME( 1996, maniacsqa, maniacsq, maniacsq_d5002fp, maniacsq, gaelco2_state, empty_init, ROT0, "Gaelco", "Maniac Square (protected, Version 1.0, Checksum CF2D)", 0 )
+GAME( 1996, maniacsqu, maniacsq, maniacsq, maniacsq, gaelco2_state, empty_init, ROT0, "Gaelco", "Maniac Square (unprotected, Version 1.0, Checksum BB73)", 0 )
+GAME( 1996, maniacsqs, maniacsq, maniacsqs, snowboar, gaelco2_state, empty_init, ROT0, "Gaelco", "Maniac Square (unprotected, Version 1.0, Checksum 66B1, 960419/1 PCB)", 0 ) // Official version on Snow Board Championship PCB, doesn't use the protection
-GAME( 1996, snowboar, 0, snowboar, snowboar, gaelco2_state, init_snowboar, ROT0, "Gaelco", "Snow Board Championship (Version 2.1)", 0 )
-GAME( 1996, snowboara, snowboar, snowboar, snowboar, gaelco2_state, init_snowboara, ROT0, "Gaelco", "Snow Board Championship (Version 2.0)", 0 )
+GAME( 1996, snowboar, 0, snowboar, snowboar, gaelco2_state, empty_init, ROT0, "Gaelco", "Snow Board Championship (Version 2.1)", 0 )
+GAME( 1996, snowboara, snowboar, snowboar, snowboar, gaelco2_state, init_snowboar, ROT0, "Gaelco", "Snow Board Championship (Version 2.0)", 0 )
-GAME( 1998, bang, 0, bang, bang, bang_state, init_bang, ROT0, "Gaelco", "Bang!", 0 )
-GAME( 1998, bangj, bang, bang, bang, bang_state, init_bang, ROT0, "Gaelco", "Gun Gabacho (Japan)", 0 )
+GAME( 1998, bang, 0, bang, bang, bang_state, init_bang, ROT0, "Gaelco", "Bang!", 0 )
+GAME( 1998, bangj, bang, bang, bang, bang_state, init_bang, ROT0, "Gaelco", "Gun Gabacho (Japan)", 0 )
// 2-in-1 gambling game, appears to be cloned Gaelco hardware complete with DS5002FP, or possibly manufactured by Gaelco for Nova Desitec but without any Gaelco branding.
-// these are Italian versions, English versions also exist
-GAME( 1999, play2000, 0, play2000, play2000, gaelco2_state, init_play2000, ROT0, "Nova Desitec", "Play 2000 (Super Slot & Gran Tesoro) (v7.0i) (Italy)", 0 )
-GAME( 1999, play2000_50i,play2000, play2000, play2000, gaelco2_state, empty_init, ROT0, "Nova Desitec", "Play 2000 (Super Slot & Gran Tesoro) (v5.0i) (Italy)", MACHINE_NOT_WORKING ) // bad dump
-GAME( 1999, play2000_40i,play2000, play2000, play2000, gaelco2_state, init_play2000, ROT0, "Nova Desitec", "Play 2000 (Super Slot & Gran Tesoro) (v4.0i) (Italy)", 0 )
+GAME( 1999, play2000, 0, play2000, play2000, gaelco2_state, empty_init, ROT0, "Nova Desitec", "Play 2000 (Super Slot & Gran Tesoro) (v4.0) (Italy)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1999, play2000a, play2000, play2000, play2000, gaelco2_state, empty_init, ROT0, "Nova Desitec", "Play 2000 (Super Slot & Gran Tesoro) (v5.01) (Italy)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // bad dump
// Gym exercise bike
-GAME( 1997, saltcrdi, 0, saltcrdi, saltcrdi, gaelco2_state, empty_init, ROT0, "Salter Fitness / Gaelco", "Pro Tele Cardioline (Salter Fitness Bike V.1.0, Checksum 02AB)", MACHINE_NOT_WORKING ) // there are other machines in the Cardioline series, without TV displays
+GAME( 1997, saltcrdi, 0, saltcrdi, saltcrdi, gaelco2_state, empty_init, ROT0, "Salter Fitness / Gaelco", "Pro Tele Cardioline (Salter Fitness Bike V.1.0, Checksum 02AB)", MACHINE_NOT_WORKING ) // there are other machines in the Cardioline series, without TV displays
diff --git a/src/mame/drivers/gaelcopc.cpp b/src/mame/drivers/gaelcopc.cpp
index b3762621ec1..600feb982a9 100644
--- a/src/mame/drivers/gaelcopc.cpp
+++ b/src/mame/drivers/gaelcopc.cpp
@@ -71,23 +71,22 @@ static INPUT_PORTS_START( gaelcopc )
INPUT_PORTS_END
-void gaelcopc_state::gaelcopc(machine_config &config)
-{
+MACHINE_CONFIG_START(gaelcopc_state::gaelcopc)
/* basic machine hardware */
- PENTIUM(config, m_maincpu, 2000000000); /* Pentium4? */
- m_maincpu->set_addrmap(AS_PROGRAM, &gaelcopc_state::gaelcopc_map);
+ MCFG_DEVICE_ADD("maincpu", PENTIUM, 2000000000) /* Pentium4? */
+ MCFG_DEVICE_PROGRAM_MAP(gaelcopc_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(gaelcopc_state::screen_update));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 0*8, 32*8-1);
- screen.set_palette("palette");
-
- PALETTE(config, "palette").set_entries(0x100);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelcopc_state, screen_update)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 0x100)
+MACHINE_CONFIG_END
ROM_START(tokyocop)
diff --git a/src/mame/drivers/gaiden.cpp b/src/mame/drivers/gaiden.cpp
index c730fb3d311..1e487fed8b8 100644
--- a/src/mame/drivers/gaiden.cpp
+++ b/src/mame/drivers/gaiden.cpp
@@ -758,7 +758,7 @@ void gaiden_state::shadoww(machine_config &config)
m_maincpu->set_vblank_int("screen", FUNC(gaiden_state::irq5_line_assert));
Z80(config, m_audiocpu, 4000000); /* 4 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &gaiden_state::sound_map); /* IRQs are triggered by the YM2203 */
+ m_audiocpu->set_addrmap(AS_PROGRAM, &gaiden_state::sound_map); /* IRQs are triggered by the YM2203 */
WATCHDOG_TIMER(config, "watchdog");
diff --git a/src/mame/drivers/gal3.cpp b/src/mame/drivers/gal3.cpp
index 45ed3935b97..5843b92e73f 100644
--- a/src/mame/drivers/gal3.cpp
+++ b/src/mame/drivers/gal3.cpp
@@ -610,45 +610,44 @@ static GFXDECODE_START( gfx_gal3_r )
GFXDECODE_ENTRY( "obj_board2", 0x000000, tile_layout, 0x000, 0x20 )
GFXDECODE_END
-void gal3_state::gal3(machine_config &config)
-{
- m68020_device &maincpu(M68020(config, "maincpu", 49152000/2));
- maincpu.set_addrmap(AS_PROGRAM, &gal3_state::cpu_mst_map);
- maincpu.set_vblank_int("lscreen", FUNC(gal3_state::irq1_line_hold));
+MACHINE_CONFIG_START(gal3_state::gal3)
+ MCFG_DEVICE_ADD("maincpu", M68020, 49152000/2)
+ MCFG_DEVICE_PROGRAM_MAP(cpu_mst_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("lscreen", gal3_state, irq1_line_hold)
- m68020_device &cpusly(M68020(config, "cpuslv", 49152000/2));
- cpusly.set_addrmap(AS_PROGRAM, &gal3_state::cpu_slv_map);
- cpusly.set_vblank_int("lscreen", FUNC(gal3_state::irq1_line_hold));
+ MCFG_DEVICE_ADD("cpuslv", M68020, 49152000/2)
+ MCFG_DEVICE_PROGRAM_MAP(cpu_slv_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("lscreen", gal3_state, irq1_line_hold)
- m68000_device &rs_cpu(M68000(config, "rs_cpu", 49152000/4));
- rs_cpu.set_addrmap(AS_PROGRAM, &gal3_state::rs_cpu_map);
- rs_cpu.set_vblank_int("lscreen", FUNC(gal3_state::irq5_line_hold)); /// programmable via 148 IC
+ MCFG_DEVICE_ADD("rs_cpu", M68000, 49152000/4)
+ MCFG_DEVICE_PROGRAM_MAP(rs_cpu_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("lscreen", gal3_state, irq5_line_hold) /// programmable via 148 IC
- m68000_device &sound_cpu(M68000(config, "sound_cpu", 12000000)); // ??
- sound_cpu.set_addrmap(AS_PROGRAM, &gal3_state::sound_cpu_map);
+ MCFG_DEVICE_ADD("sound_cpu", M68000, 12000000) // ??
+ MCFG_DEVICE_PROGRAM_MAP(sound_cpu_map)
- m68000_device &psn_b1_cpu(M68000(config, "psn_b1_cpu", 12000000)); // ??
- psn_b1_cpu.set_addrmap(AS_PROGRAM, &gal3_state::psn_b1_cpu_map);
+ MCFG_DEVICE_ADD("psn_b1_cpu", M68000, 12000000) // ??
+ MCFG_DEVICE_PROGRAM_MAP(psn_b1_cpu_map)
/*
- m68000_device &psn_b2_cpu(M68000(config, "psn_b2_cpu", 12000000)); // ??
- psn_b2_cpu.set_addrmap(AS_PROGRAM, &gal3_state::psn_b1_cpu_map);
+ MCFG_DEVICE_ADD("psn_b2_cpu", M68000, 12000000) // ??
+ MCFG_DEVICE_PROGRAM_MAP(psn_b1_cpu_map,0)
- m68000_device &psn_b3_cpu(M68000(config, "psn_b3_cpu", 12000000)); // ??
- psn_b3_cpu.set_addrmap(AS_PROGRAM, &gal3_state::psn_b1_cpu_map);
+ MCFG_DEVICE_ADD("psn_b3_cpu", M68000, 12000000) // ??
+ MCFG_DEVICE_PROGRAM_MAP(psn_b1_cpu_map,0)
*/
- config.m_minimum_quantum = attotime::from_hz(60*8000); /* 8000 CPU slices per frame */
+ MCFG_QUANTUM_TIME(attotime::from_hz(60*8000)) /* 8000 CPU slices per frame */
NVRAM(config, "nvmem", nvram_device::DEFAULT_ALL_0);
// video chain 1
- screen_device &lscreen(SCREEN(config, "lscreen", SCREEN_TYPE_RASTER));
- lscreen.set_refresh_hz(60);
- lscreen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- lscreen.set_size(64*8, 64*8);
- lscreen.set_visarea(0*8, 512-1, 0*8, 512-1);
- lscreen.set_screen_update(FUNC(gal3_state::screen_update_left));
- lscreen.set_palette(m_palette[0]);
+ MCFG_SCREEN_ADD("lscreen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 512-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gal3_state, screen_update_left)
+ MCFG_SCREEN_PALETTE("palette_1")
GFXDECODE(config, "gfxdecode_1", m_palette[0], gfx_gal3_l);
PALETTE(config, m_palette[0]).set_format(palette_device::xBRG_888, NAMCOS21_NUM_COLORS);
@@ -672,13 +671,13 @@ void gal3_state::gal3(machine_config &config)
// video chain 2
- screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER));
- rscreen.set_refresh_hz(60);
- rscreen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- rscreen.set_size(64*8, 64*8);
- rscreen.set_visarea(0*8, 512-1, 0*8, 512-1);
- rscreen.set_screen_update(FUNC(gal3_state::screen_update_right));
- rscreen.set_palette(m_palette[1]);
+ MCFG_SCREEN_ADD("rscreen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 512-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gal3_state, screen_update_right)
+ MCFG_SCREEN_PALETTE("palette_2")
GFXDECODE(config, "gfxdecode_2", m_palette[1], gfx_gal3_r);
PALETTE(config, m_palette[1]).set_format(palette_device::xBRG_888, NAMCOS21_NUM_COLORS);
@@ -713,7 +712,7 @@ void gal3_state::gal3(machine_config &config)
m_c140_16a->set_bank_type(c140_device::C140_TYPE::SYSTEM21);
m_c140_16a->add_route(0, "lspeaker", 0.50);
m_c140_16a->add_route(1, "rspeaker", 0.50);
-}
+MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/galaga.cpp b/src/mame/drivers/galaga.cpp
index 649b386f8d1..bcad96fa4c7 100644
--- a/src/mame/drivers/galaga.cpp
+++ b/src/mame/drivers/galaga.cpp
@@ -1651,7 +1651,7 @@ void bosco_state::bosco(machine_config &config)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
- config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - a high value to ensure proper synchronization of the CPUs */
+ config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs */
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
@@ -1721,7 +1721,7 @@ void galaga_state::galaga(machine_config &config)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
- config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - a high value to ensure proper synchronization of the CPUs */
+ config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs */
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
@@ -1823,7 +1823,7 @@ void xevious_state::xevious(machine_config &config)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
- config.m_minimum_quantum = attotime::from_hz(60000); /* 1000 CPU slices per frame - a high value to ensure proper synchronization of the CPUs */
+ config.m_minimum_quantum = attotime::from_hz(60000); /* 1000 CPU slices per frame - an high value to ensure proper synchronization of the CPUs */
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
@@ -1931,7 +1931,7 @@ void digdug_state::digdug(machine_config &config)
m_videolatch->q_out_cb<3>().set(FUNC(digdug_state::bg_disable_w));
m_videolatch->q_out_cb<7>().set(FUNC(digdug_state::flip_screen_w));
- config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - a high value to ensure proper synchronization of the CPUs */
+ config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs */
ER2055(config, m_earom);
diff --git a/src/mame/drivers/galastrm.cpp b/src/mame/drivers/galastrm.cpp
index 2e4e8ce4380..f6c6357fae4 100644
--- a/src/mame/drivers/galastrm.cpp
+++ b/src/mame/drivers/galastrm.cpp
@@ -38,6 +38,7 @@ $300.b debugmode
$305.b invincibility
TODO:
+- convert to use device implementation of TC0110PCR
- device-ify TC0610? (no other known users)
*/
@@ -60,13 +61,28 @@ INTERRUPT_GEN_MEMBER(galastrm_state::interrupt)
device.execute().set_input_line(5, HOLD_LINE);
}
-template<int Chip>
-WRITE16_MEMBER(galastrm_state::tc0610_w)
+WRITE32_MEMBER(galastrm_state::palette_w)
{
- if (offset == 0)
- m_tc0610_addr[Chip] = data;
- else if (m_tc0610_addr[Chip] < 8)
- m_tc0610_ctrl_reg[Chip][m_tc0610_addr[Chip]] = data;
+ if (ACCESSING_BITS_16_31)
+ m_tc0110pcr_addr = data >> 16;
+ if ((ACCESSING_BITS_0_15) && (m_tc0110pcr_addr < 4096))
+ m_palette->set_pen_color(m_tc0110pcr_addr, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
+}
+
+WRITE32_MEMBER(galastrm_state::tc0610_0_w)
+{
+ if (ACCESSING_BITS_16_31)
+ m_tc0610_0_addr = data >> 16;
+ if ((ACCESSING_BITS_0_15) && (m_tc0610_0_addr < 8))
+ m_tc0610_ctrl_reg[0][m_tc0610_0_addr] = data;
+}
+
+WRITE32_MEMBER(galastrm_state::tc0610_1_w)
+{
+ if (ACCESSING_BITS_16_31)
+ m_tc0610_1_addr = data >> 16;
+ if ((ACCESSING_BITS_0_15) && (m_tc0610_1_addr < 8))
+ m_tc0610_ctrl_reg[1][m_tc0610_1_addr] = data;
}
@@ -91,7 +107,7 @@ WRITE8_MEMBER(galastrm_state::coin_word_w)
void galastrm_state::main_map(address_map &map)
{
map(0x000000, 0x0fffff).rom();
- map(0x200000, 0x21ffff).ram(); /* main CPU ram */
+ map(0x200000, 0x21ffff).ram().share("ram"); /* main CPUA ram */
map(0x300000, 0x303fff).ram().share("spriteram");
map(0x400000, 0x400007).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write));
map(0x40fff0, 0x40fff3).nopw();
@@ -99,9 +115,9 @@ void galastrm_state::main_map(address_map &map)
map(0x600000, 0x6007ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); /* Sound shared ram */
map(0x800000, 0x80ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::long_r), FUNC(tc0480scp_device::long_w)); /* tilemaps */
map(0x830000, 0x83002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_long_r), FUNC(tc0480scp_device::ctrl_long_w));
- map(0x900000, 0x900003).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_rbswap_word_w)); /* TC0110PCR */
- map(0xb00000, 0xb00003).w(FUNC(galastrm_state::tc0610_w<0>)); /* TC0610 */
- map(0xc00000, 0xc00003).w(FUNC(galastrm_state::tc0610_w<1>));
+ map(0x900000, 0x900003).w(FUNC(galastrm_state::palette_w)); /* TC0110PCR */
+ map(0xb00000, 0xb00003).w(FUNC(galastrm_state::tc0610_0_w)); /* TC0610 */
+ map(0xc00000, 0xc00003).w(FUNC(galastrm_state::tc0610_1_w));
map(0xd00000, 0xd0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::long_r), FUNC(tc0100scn_device::long_w)); /* piv tilemaps */
map(0xd20000, 0xd2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_long_r), FUNC(tc0100scn_device::ctrl_long_w));
}
@@ -236,8 +252,6 @@ void galastrm_state::galastrm(machine_config &config)
m_tc0480scp->set_offsets(-40, -3);
m_tc0480scp->set_gfxdecode_tag(m_gfxdecode);
- TC0110PCR(config, m_tc0110pcr, 0, m_palette);
-
/* sound hardware */
TAITO_EN(config, "taito_en", 0);
}
@@ -265,7 +279,7 @@ ROM_START( galastrm )
ROM_LOAD32_BYTE( "c99-04.ic66", 0x000002, 0x100000, CRC(a681760f) SHA1(23d4fc7eb778c8a25c4bc7cee1d0c8cdd828a996) )
ROM_LOAD32_BYTE( "c99-03.ic67", 0x000003, 0x100000, CRC(a2807a27) SHA1(977e395ea2ab2fb82807d3cf5fe5f1dbbde99da0) )
- ROM_REGION16_LE( 0x80000, "sprmaprom", 0 )
+ ROM_REGION16_LE( 0x80000, "user1", 0 )
ROM_LOAD16_WORD( "c99-11.ic90", 0x00000, 0x80000, CRC(26a6926c) SHA1(918860e2829131e9ecfe983b2ae3e49e1c9ecd72) ) /* STY, spritemap */
ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00 )
diff --git a/src/mame/drivers/galaxi.cpp b/src/mame/drivers/galaxi.cpp
index 7eafa021b35..805810875e4 100644
--- a/src/mame/drivers/galaxi.cpp
+++ b/src/mame/drivers/galaxi.cpp
@@ -463,23 +463,23 @@ void galaxi_state::machine_reset()
Machine Drivers
***************************************************************************/
-void galaxi_state::galaxi(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxi_state::galaxi)
+
/* basic machine hardware */
- M68000(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxi_state::galaxi_map);
- m_maincpu->set_vblank_int("screen", FUNC(galaxi_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(galaxi_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", galaxi_state, irq4_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(16*5, 512-16*2-1, 16*1, 256-1);
- m_screen->set_screen_update(FUNC(galaxi_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(16*5, 512-16*2-1, 16*1, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxi_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_galaxi);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x400);
@@ -487,29 +487,30 @@ void galaxi_state::galaxi(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", SND_CLOCK, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 1.0); // ?
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, SND_CLOCK, okim6295_device::PIN7_LOW) // ?
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void galaxi_state::magjoker(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxi_state::magjoker)
galaxi(config);
/* sound hardware */
+ MCFG_DEVICE_MODIFY("oki")
/* ADPCM samples are recorded with extremely low volume */
- subdevice<okim6295_device>("oki")->reset_routes();
- subdevice<okim6295_device>("oki")->add_route(ALL_OUTPUTS, "mono", 4.0);
-}
+ MCFG_SOUND_ROUTES_RESET()
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 4.0)
+MACHINE_CONFIG_END
-void galaxi_state::lastfour(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxi_state::lastfour)
galaxi(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxi_state::lastfour_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(lastfour_map)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp
index 1cbe080ddcf..e942ef73940 100644
--- a/src/mame/drivers/galaxian.cpp
+++ b/src/mame/drivers/galaxian.cpp
@@ -681,15 +681,17 @@ WRITE_LINE_MEMBER(galaxian_state::vblank_interrupt_w)
m_maincpu->set_input_line(m_irq_line, ASSERT_LINE);
}
-INPUT_CHANGED_MEMBER(galaxian_state::tenspot_fake)
+WRITE_LINE_MEMBER(galaxian_state::tenspot_interrupt_w)
{
- if (newval)
+ vblank_interrupt_w(state);
+
+ if (m_fake_select.read_safe(0x00))
{
m_tenspot_current_game++;
m_tenspot_current_game%=10;
tenspot_set_game_bank(m_tenspot_current_game, 1);
+ m_maincpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
}
- m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
}
WRITE8_MEMBER(galaxian_state::irq_enable_w)
@@ -746,8 +748,8 @@ READ8_MEMBER(galaxian_state::konami_ay8910_r)
{
/* the decoding here is very simplistic, and you can address both simultaneously */
uint8_t result = 0xff;
- if (offset & 0x20) result &= m_ay8910[1]->data_r();
- if (offset & 0x80) result &= m_ay8910[0]->data_r();
+ if (offset & 0x20) result &= m_ay8910[1]->data_r(space, 0);
+ if (offset & 0x80) result &= m_ay8910[0]->data_r(space, 0);
return result;
}
@@ -757,14 +759,14 @@ WRITE8_MEMBER(galaxian_state::konami_ay8910_w)
/* AV 4,5 ==> AY8910 #2 */
/* the decoding here is very simplistic, and you can address two simultaneously */
if (offset & 0x10)
- m_ay8910[1]->address_w(data);
+ m_ay8910[1]->address_w(space, 0, data);
else if (offset & 0x20)
- m_ay8910[1]->data_w(data);
+ m_ay8910[1]->data_w(space, 0, data);
/* AV6,7 ==> AY8910 #1 */
if (offset & 0x40)
- m_ay8910[0]->address_w(data);
+ m_ay8910[0]->address_w(space, 0, data);
else if (offset & 0x80)
- m_ay8910[0]->data_w(data);
+ m_ay8910[0]->data_w(space, 0, data);
}
@@ -1080,7 +1082,7 @@ READ8_MEMBER(galaxian_state::frogger_ay8910_r)
{
/* the decoding here is very simplistic */
uint8_t result = 0xff;
- if (offset & 0x40) result &= m_ay8910[0]->data_r();
+ if (offset & 0x40) result &= m_ay8910[0]->data_r(space, 0);
return result;
}
@@ -1090,9 +1092,9 @@ WRITE8_MEMBER(galaxian_state::frogger_ay8910_w)
/* the decoding here is very simplistic */
/* AV6,7 ==> AY8910 #1 */
if (offset & 0x40)
- m_ay8910[0]->data_w(data);
+ m_ay8910[0]->data_w(space, 0, data);
else if (offset & 0x80)
- m_ay8910[0]->address_w(data);
+ m_ay8910[0]->address_w(space, 0, data);
}
@@ -1165,9 +1167,9 @@ READ8_MEMBER(galaxian_state::scorpion_ay8910_r)
{
/* the decoding here is very simplistic, and you can address both simultaneously */
uint8_t result = 0xff;
- if (offset & 0x08) result &= m_ay8910[2]->data_r();
- if (offset & 0x20) result &= m_ay8910[1]->data_r();
- if (offset & 0x80) result &= m_ay8910[0]->data_r();
+ if (offset & 0x08) result &= m_ay8910[2]->data_r(space, 0);
+ if (offset & 0x20) result &= m_ay8910[1]->data_r(space, 0);
+ if (offset & 0x80) result &= m_ay8910[0]->data_r(space, 0);
return result;
}
@@ -1175,12 +1177,12 @@ READ8_MEMBER(galaxian_state::scorpion_ay8910_r)
WRITE8_MEMBER(galaxian_state::scorpion_ay8910_w)
{
/* the decoding here is very simplistic, and you can address all six simultaneously */
- if (offset & 0x04) m_ay8910[2]->address_w(data);
- if (offset & 0x08) m_ay8910[2]->data_w(data);
- if (offset & 0x10) m_ay8910[1]->address_w(data);
- if (offset & 0x20) m_ay8910[1]->data_w(data);
- if (offset & 0x40) m_ay8910[0]->address_w(data);
- if (offset & 0x80) m_ay8910[0]->data_w(data);
+ if (offset & 0x04) m_ay8910[2]->address_w(space, 0, data);
+ if (offset & 0x08) m_ay8910[2]->data_w(space, 0, data);
+ if (offset & 0x10) m_ay8910[1]->address_w(space, 0, data);
+ if (offset & 0x20) m_ay8910[1]->data_w(space, 0, data);
+ if (offset & 0x40) m_ay8910[0]->address_w(space, 0, data);
+ if (offset & 0x80) m_ay8910[0]->data_w(space, 0, data);
}
@@ -1283,7 +1285,7 @@ WRITE8_MEMBER(galaxian_state::zigzag_ay8910_w)
/* bit 0 = WRITE */
/* bit 1 = C/D */
if ((offset & 1) != 0)
- m_ay8910[0]->data_address_w(offset >> 1, m_zigzag_ay8910_latch);
+ m_ay8910[0]->data_address_w(space, offset >> 1, m_zigzag_ay8910_latch);
break;
case 0x100:
@@ -1375,21 +1377,21 @@ WRITE8_MEMBER(galaxian_state::mshuttle_ay8910_cs_w)
WRITE8_MEMBER(galaxian_state::mshuttle_ay8910_control_w)
{
if (!m_mshuttle_ay8910_cs)
- m_ay8910_cclimber->address_w(data);
+ m_ay8910_cclimber->address_w(space, offset, data);
}
WRITE8_MEMBER(galaxian_state::mshuttle_ay8910_data_w)
{
if (!m_mshuttle_ay8910_cs)
- m_ay8910_cclimber->data_w(data);
+ m_ay8910_cclimber->data_w(space, offset, data);
}
READ8_MEMBER(galaxian_state::mshuttle_ay8910_data_r)
{
if (!m_mshuttle_ay8910_cs)
- return m_ay8910_cclimber->data_r();
+ return m_ay8910_cclimber->data_r(space, offset);
return 0xff;
}
@@ -3252,7 +3254,7 @@ static INPUT_PORTS_START( tenspot )
PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START("FAKE_SELECT") /* fake button to move onto next game - until select rom is understood! */
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Next Game (Fake)") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, galaxian_state, tenspot_fake, nullptr)
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Next Game (Fake)") PORT_IMPULSE(1)
PORT_MODIFY("IN0")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY
@@ -5986,40 +5988,42 @@ DISCRETE_SOUND_END
*
*************************************/
-void galaxian_state::galaxian_base(machine_config &config)
-{
- // basic machine hardware
- Z80(config, m_maincpu, GALAXIAN_PIXEL_CLOCK/3/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::galaxian_map);
+MACHINE_CONFIG_START(galaxian_state::galaxian_base)
+
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", Z80, GALAXIAN_PIXEL_CLOCK/3/2)
+ MCFG_DEVICE_PROGRAM_MAP(galaxian_map)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
- // video hardware
+ /* video hardware */
GFXDECODE(config, m_gfxdecode, m_palette, gfx_galaxian);
PALETTE(config, m_palette, FUNC(galaxian_state::galaxian_palette), 32);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(GALAXIAN_PIXEL_CLOCK, GALAXIAN_HTOTAL, GALAXIAN_HBEND, GALAXIAN_HBSTART, GALAXIAN_VTOTAL, GALAXIAN_VBEND, GALAXIAN_VBSTART);
- m_screen->set_screen_update(FUNC(galaxian_state::screen_update_galaxian));
- m_screen->screen_vblank().set(FUNC(galaxian_state::vblank_interrupt_w));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(GALAXIAN_PIXEL_CLOCK, GALAXIAN_HTOTAL, GALAXIAN_HBEND, GALAXIAN_HBSTART, GALAXIAN_VTOTAL, GALAXIAN_VBEND, GALAXIAN_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxian_state, screen_update_galaxian)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, galaxian_state, vblank_interrupt_w))
- // sound hardware
+ /* sound hardware */
SPEAKER(config, "speaker").front_center();
-}
+MACHINE_CONFIG_END
-void galaxian_state::sidam_bootleg_base(machine_config &config)
-{
+
+MACHINE_CONFIG_START(galaxian_state::sidam_bootleg_base)
galaxian_base(config);
/* basic machine hardware */
- m_maincpu->set_clock(12_MHz_XTAL / 2 / 2);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(12_MHz_XTAL / 2 / 2)
/* video hardware */
- m_gfxdecode->set_info(gfx_sidam);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_sidam)
- m_screen->set_raw(12_MHz_XTAL, SIDAM_HTOTAL, SIDAM_HBEND, SIDAM_HBSTART, GALAXIAN_VTOTAL, GALAXIAN_VBEND, GALAXIAN_VBSTART);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_RAW_PARAMS(12_MHz_XTAL, SIDAM_HTOTAL, SIDAM_HBEND, SIDAM_HBSTART, GALAXIAN_VTOTAL, GALAXIAN_VBEND, GALAXIAN_VBSTART)
+MACHINE_CONFIG_END
void galaxian_state::konami_base(machine_config &config)
@@ -6040,12 +6044,12 @@ void galaxian_state::konami_base(machine_config &config)
}
-void galaxian_state::konami_sound_1x_ay8910(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::konami_sound_1x_ay8910)
+
/* 2nd CPU to drive sound */
- Z80(config, m_audiocpu, KONAMI_SOUND_CLOCK/8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::frogger_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::frogger_sound_portmap);
+ MCFG_DEVICE_ADD("audiocpu", Z80, KONAMI_SOUND_CLOCK/8)
+ MCFG_DEVICE_PROGRAM_MAP(frogger_sound_map)
+ MCFG_DEVICE_IO_MAP(frogger_sound_portmap)
GENERIC_LATCH_8(config, m_soundlatch);
@@ -6059,16 +6063,17 @@ void galaxian_state::konami_sound_1x_ay8910(machine_config &config)
m_ay8910[0]->add_route(1, "konami", 1.0, 1);
m_ay8910[0]->add_route(2, "konami", 1.0, 2);
- DISCRETE(config, m_discrete, konami_sound_discrete).add_route(ALL_OUTPUTS, "speaker", 0.75);
-}
+ MCFG_DEVICE_ADD("konami", DISCRETE, konami_sound_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75)
+MACHINE_CONFIG_END
-void galaxian_state::konami_sound_2x_ay8910(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::konami_sound_2x_ay8910)
+
/* 2nd CPU to drive sound */
- Z80(config, m_audiocpu, KONAMI_SOUND_CLOCK/8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::konami_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::konami_sound_portmap);
+ MCFG_DEVICE_ADD("audiocpu", Z80, KONAMI_SOUND_CLOCK/8)
+ MCFG_DEVICE_PROGRAM_MAP(konami_sound_map)
+ MCFG_DEVICE_IO_MAP(konami_sound_portmap)
GENERIC_LATCH_8(config, m_soundlatch);
@@ -6089,18 +6094,18 @@ void galaxian_state::konami_sound_2x_ay8910(machine_config &config)
m_ay8910[1]->add_route(1, "konami", 1.0, 4);
m_ay8910[1]->add_route(2, "konami", 1.0, 5);
- DISCRETE(config, m_discrete, konami_sound_discrete).add_route(ALL_OUTPUTS, "speaker", 0.5);
-}
+ MCFG_DEVICE_ADD("konami", DISCRETE, konami_sound_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+MACHINE_CONFIG_END
-void galaxian_state::scramble_base(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::scramble_base)
konami_base(config);
konami_sound_2x_ay8910(config);
/* blinking frequency is determined by 555 counter with Ra=100k, Rb=10k, C=10uF */
- TIMER(config, "stars").configure_periodic(FUNC(galaxian_state::scramble_stars_blink_timer), PERIOD_OF_555_ASTABLE(100000, 10000, 0.00001));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("stars", galaxian_state, scramble_stars_blink_timer, PERIOD_OF_555_ASTABLE(100000, 10000, 0.00001))
+MACHINE_CONFIG_END
@@ -6110,148 +6115,147 @@ void galaxian_state::scramble_base(machine_config &config)
*
*************************************/
-void galaxian_state::galaxian(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::galaxian)
galaxian_base(config);
- GALAXIAN(config, "cust", 0).add_route(ALL_OUTPUTS, "speaker", 0.4);
+ MCFG_DEVICE_ADD("cust", GALAXIAN, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4)
- DISCRETE(config, GAL_AUDIO, galaxian_discrete).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_ADD(GAL_AUDIO, DISCRETE, galaxian_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
-void galaxian_state::victoryc(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::victoryc)
galaxian(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::victoryc_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(victoryc_map)
+MACHINE_CONFIG_END
-void galaxian_state::spactrai(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::spactrai)
galaxian(config);
- // strange memory map with RAM in the middle of ROM, there's a large block on the ROM board
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::spactrai_map);
-}
+ /* strange memory map with RAM in the middle of ROM, there's a large block on the ROM board */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(spactrai_map)
+MACHINE_CONFIG_END
-void galaxian_state::frogg(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::frogg)
galaxian(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::frogg_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(frogg_map)
+MACHINE_CONFIG_END
-void galaxian_state::mandingarf(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::mandingarf)
galaxian(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::mandingarf_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mandingarf_map)
+MACHINE_CONFIG_END
-void galaxian_state::pacmanbl(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::pacmanbl)
galaxian(config);
/* separate tile/sprite ROMs */
- m_gfxdecode->set_info(gfx_pacmanbl);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_pacmanbl)
+MACHINE_CONFIG_END
-void galaxian_state::tenspot(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::tenspot)
galaxian(config);
/* basic machine hardware */
- z80_device &selectcpu(Z80(config, "selectcpu", GALAXIAN_PIXEL_CLOCK/3/2)); // ?? mhz
- selectcpu.set_addrmap(AS_PROGRAM, &galaxian_state::tenspot_select_map);
- //selectcpu.set_vblank_int("screen", FUNC(galaxian_state::nmi_line_pulse));
+ MCFG_DEVICE_ADD("selectcpu", Z80, GALAXIAN_PIXEL_CLOCK/3/2) // ?? mhz
+ MCFG_DEVICE_PROGRAM_MAP(tenspot_select_map)
+ //MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse)
/* separate tile/sprite ROMs */
- m_gfxdecode->set_info(gfx_tenspot);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_tenspot)
+ // MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse)
-void galaxian_state::zigzag(machine_config &config)
-{
+ /* video hardware */
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, galaxian_state, tenspot_interrupt_w))
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(galaxian_state::zigzag)
galaxian_base(config);
/* separate tile/sprite ROMs */
- m_gfxdecode->set_info(gfx_pacmanbl);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_pacmanbl)
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::zigzag_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(zigzag_map)
/* sound hardware */
AY8910(config, m_ay8910[0], GALAXIAN_PIXEL_CLOCK/3/2).add_route(ALL_OUTPUTS, "speaker", 0.5); /* matches PCB video - unconfirmed */
-}
+MACHINE_CONFIG_END
-void galaxian_state::gmgalax(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::gmgalax)
galaxian(config);
/* banked video hardware */
- m_gfxdecode->set_info(gfx_gmgalax);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_gmgalax)
m_palette->set_entries(64);
m_palette->set_init(FUNC(galaxian_state::galaxian_palette));
-}
+MACHINE_CONFIG_END
-void galaxian_state::mooncrst(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::mooncrst)
galaxian_base(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::mooncrst_map);
-
- GALAXIAN(config, "cust", 0).add_route(ALL_OUTPUTS, "speaker", 0.4);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mooncrst_map)
- DISCRETE(config, GAL_AUDIO, mooncrst_discrete).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_ADD("cust", GALAXIAN, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4)
-void galaxian_state::eagle(machine_config &config)
-{
- mooncrst(config);
- m_palette->set_init(FUNC(galaxian_state::eagle_palette));
-}
+ MCFG_DEVICE_ADD(GAL_AUDIO, DISCRETE, mooncrst_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
-void galaxian_state::moonqsr(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::moonqsr)
mooncrst(config);
- m_maincpu->set_addrmap(AS_OPCODES, &galaxian_state::moonqsr_decrypted_opcodes_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_OPCODES_MAP(moonqsr_decrypted_opcodes_map)
+MACHINE_CONFIG_END
-void galaxian_state::thepitm(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::thepitm)
mooncrst(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::thepitm_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(thepitm_map)
+MACHINE_CONFIG_END
-void galaxian_state::skybase(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::skybase)
mooncrst(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::skybase_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(skybase_map)
+MACHINE_CONFIG_END
-void galaxian_state::kong(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::kong)
mooncrst(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::kong_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(kong_map)
+MACHINE_CONFIG_END
-void galaxian_state::scorpnmc(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::scorpnmc)
mooncrst(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::scorpnmc_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scorpnmc_map)
+MACHINE_CONFIG_END
-void galaxian_state::fantastc(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::fantastc)
galaxian_base(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::fantastc_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(fantastc_map)
- // sound hardware
+ /* sound hardware */
AY8910(config, m_ay8910[0], GALAXIAN_PIXEL_CLOCK/3/2).add_route(ALL_OUTPUTS, "speaker", 0.25); // 3.072MHz
AY8910(config, m_ay8910[1], GALAXIAN_PIXEL_CLOCK/3/2).add_route(ALL_OUTPUTS, "speaker", 0.25); // 3.072MHz
-}
+MACHINE_CONFIG_END
TIMER_DEVICE_CALLBACK_MEMBER(galaxian_state::timefgtr_scanline)
@@ -6267,219 +6271,216 @@ TIMER_DEVICE_CALLBACK_MEMBER(galaxian_state::timefgtr_scanline)
}
}
-void galaxian_state::timefgtr(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::timefgtr)
fantastc(config);
- TIMER(config, "scantimer").configure_scanline(FUNC(galaxian_state::timefgtr_scanline), "screen", 0, 1);
-}
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", galaxian_state, timefgtr_scanline, "screen", 0, 1)
+MACHINE_CONFIG_END
-void galaxian_state::jumpbug(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::jumpbug)
galaxian_base(config);
- config.device_remove("watchdog");
+ MCFG_DEVICE_REMOVE("watchdog")
- // basic machine hardware
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::jumpbug_map);
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(jumpbug_map)
- // sound hardware
- AY8910(config, m_ay8910[0], GALAXIAN_PIXEL_CLOCK/3/2/2).add_route(ALL_OUTPUTS, "speaker", 0.5); // matches PCB video - unconfirmed
-}
+ /* sound hardware */
+ AY8910(config, m_ay8910[0], GALAXIAN_PIXEL_CLOCK/3/2/2).add_route(ALL_OUTPUTS, "speaker", 0.5); /* matches PCB video - unconfirmed */
+MACHINE_CONFIG_END
-void galaxian_state::checkman(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::checkman)
mooncrst(config);
/* basic machine hardware */
- Z80(config, m_audiocpu, 1620000); /* 1.62 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::checkman_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::checkman_sound_portmap);
- m_audiocpu->set_vblank_int("screen", FUNC(galaxian_state::irq0_line_hold)); /* NMIs are triggered by the main CPU */
+ MCFG_DEVICE_ADD("audiocpu", Z80, 1620000) /* 1.62 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(checkman_sound_map)
+ MCFG_DEVICE_IO_MAP(checkman_sound_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", galaxian_state, irq0_line_hold) /* NMIs are triggered by the main CPU */
GENERIC_LATCH_8(config, m_soundlatch);
/* sound hardware */
AY8910(config, m_ay8910[0], 1789750).add_route(ALL_OUTPUTS, "speaker", 0.5);
-}
+MACHINE_CONFIG_END
-void galaxian_state::checkmaj(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::checkmaj)
galaxian_base(config);
- // basic machine hardware
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::galaxian_map_base); // no discrete sound
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(galaxian_map_base) /* no discrete sound */
- Z80(config, m_audiocpu, 1620000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::checkmaj_sound_map);
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("audiocpu", Z80, 1620000)
+ MCFG_DEVICE_PROGRAM_MAP(checkmaj_sound_map)
- TIMER(config, "irq0").configure_scanline(FUNC(galaxian_state::checkmaj_irq0_gen), "screen", 0, 8);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("irq0", galaxian_state, checkmaj_irq0_gen, "screen", 0, 8)
GENERIC_LATCH_8(config, m_soundlatch);
- // sound hardware
+ /* sound hardware */
AY8910(config, m_ay8910[0], 1620000);
m_ay8910[0]->port_a_read_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read));
m_ay8910[0]->add_route(ALL_OUTPUTS, "speaker", 2);
-}
+MACHINE_CONFIG_END
-void galaxian_state::mshuttle(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::mshuttle)
galaxian_base(config);
- // basic machine hardware
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::mshuttle_map);
- m_maincpu->set_addrmap(AS_OPCODES, &galaxian_state::mshuttle_decrypted_opcodes_map);
- m_maincpu->set_addrmap(AS_IO, &galaxian_state::mshuttle_portmap);
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mshuttle_map)
+ MCFG_DEVICE_OPCODES_MAP(mshuttle_decrypted_opcodes_map)
+ MCFG_DEVICE_IO_MAP(mshuttle_portmap)
- // sound hardware
- CCLIMBER_AUDIO(config, "cclimber_audio", 0);
-}
+ /* sound hardware */
+ MCFG_DEVICE_ADD("cclimber_audio", CCLIMBER_AUDIO, 0)
+MACHINE_CONFIG_END
-void galaxian_state::kingball(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::kingball)
mooncrst(config);
/* basic machine hardware */
- Z80(config, m_audiocpu, 5000000/2);
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::kingball_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::kingball_sound_portmap);
+ MCFG_DEVICE_ADD("audiocpu", Z80,5000000/2)
+ MCFG_DEVICE_PROGRAM_MAP(kingball_sound_map)
+ MCFG_DEVICE_IO_MAP(kingball_sound_portmap)
GENERIC_LATCH_8(config, m_soundlatch);
/* sound hardware */
- DAC_4BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.53); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.53) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void galaxian_state::frogger(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::frogger)
konami_base(config);
konami_sound_1x_ay8910(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::frogger_map);
-}
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(frogger_map)
+MACHINE_CONFIG_END
-void galaxian_state::froggermc(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::froggermc)
galaxian_base(config);
konami_sound_1x_ay8910(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::froggermc_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(froggermc_map)
- m_audiocpu->set_irq_acknowledge_callback(FUNC(galaxian_state::froggermc_audiocpu_irq_ack));
-}
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(DEVICE_SELF, galaxian_state, froggermc_audiocpu_irq_ack)
+MACHINE_CONFIG_END
-void galaxian_state::froggers(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::froggers)
konami_base(config);
konami_sound_1x_ay8910(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::theend_map);
-}
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(theend_map)
+MACHINE_CONFIG_END
-void galaxian_state::froggervd(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::froggervd)
konami_base(config);
konami_sound_1x_ay8910(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::froggervd_map);
-}
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(froggervd_map)
+MACHINE_CONFIG_END
-void galaxian_state::frogf(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::frogf)
konami_base(config);
konami_sound_1x_ay8910(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::frogf_map);
-}
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(frogf_map)
+MACHINE_CONFIG_END
-void galaxian_state::turtles(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::turtles)
konami_base(config);
konami_sound_2x_ay8910(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::turtles_map);
-}
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(turtles_map)
+MACHINE_CONFIG_END
-void galaxian_state::theend(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::theend)
konami_base(config);
konami_sound_2x_ay8910(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::theend_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(theend_map)
m_ppi8255[0]->out_pc_callback().set(FUNC(galaxian_state::theend_coin_counter_w));
m_ppi8255[1]->in_pc_callback().set(FUNC(galaxian_state::theend_protection_r));
m_ppi8255[1]->out_pc_callback().set(FUNC(galaxian_state::theend_protection_w));
-}
+MACHINE_CONFIG_END
-// TODO: should be derived from theend, re-sort machine configs later
-void galaxian_state::scramble(machine_config &config)
-{
+/* TODO: should be derived from theend, resort machine configs later */
+MACHINE_CONFIG_START(galaxian_state::scramble)
scramble_base(config);
-
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::theend_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(theend_map)
m_ppi8255[1]->in_pc_callback().set(FUNC(galaxian_state::theend_protection_r));
m_ppi8255[1]->out_pc_callback().set(FUNC(galaxian_state::theend_protection_w));
-}
+MACHINE_CONFIG_END
-void galaxian_state::jungsub(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::jungsub)
galaxian_base(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::jungsub_map);
- m_maincpu->set_addrmap(AS_IO, &galaxian_state::jungsub_io_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(jungsub_map)
+ MCFG_DEVICE_IO_MAP(jungsub_io_map)
- Z80(config, m_audiocpu, GALAXIAN_PIXEL_CLOCK / 3 / 2); // clock not verified
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::checkman_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::checkman_sound_portmap);
- m_audiocpu->set_vblank_int("screen", FUNC(galaxian_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("audiocpu", Z80, GALAXIAN_PIXEL_CLOCK / 3 / 2) // clock not verified
+ MCFG_DEVICE_PROGRAM_MAP(checkman_sound_map)
+ MCFG_DEVICE_IO_MAP(checkman_sound_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", galaxian_state, irq0_line_hold)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
/* sound hardware */
AY8910(config, m_ay8910[0], GALAXIAN_PIXEL_CLOCK / 3 / 2 / 2).add_route(ALL_OUTPUTS, "speaker", 0.5); // clock not verified
-}
+MACHINE_CONFIG_END
-void galaxian_state::explorer(machine_config &config) // Sidam 10800
-{
+MACHINE_CONFIG_START(galaxian_state::explorer) // Sidam 10800
sidam_bootleg_base(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::explorer_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(explorer_map)
/* 2nd CPU to drive sound */
- Z80(config, m_audiocpu, 12_MHz_XTAL / 2 / 2 / 2); /* clock not verified */
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::konami_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::konami_sound_portmap);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 12_MHz_XTAL / 2 / 2 / 2) /* clock not verified */
+ MCFG_DEVICE_PROGRAM_MAP(konami_sound_map)
+ MCFG_DEVICE_IO_MAP(konami_sound_portmap)
GENERIC_LATCH_8(config, m_soundlatch);
@@ -6491,15 +6492,15 @@ void galaxian_state::explorer(machine_config &config) // Sidam 10800
AY8912(config, m_ay8910[1], 12_MHz_XTAL / 2 / 2 / 2); /* matches PCB, needs verification */
m_ay8910[0]->port_a_read_callback().set(FUNC(galaxian_state::konami_sound_timer_r));
m_ay8910[0]->add_route(ALL_OUTPUTS, "speaker", 0.25);
-}
+MACHINE_CONFIG_END
-void galaxian_state::takeoff(machine_config &config) // Sidam 10900, with 1 x AY-3-8912
-{
+MACHINE_CONFIG_START(galaxian_state::takeoff) // Sidam 10900, with 1 x AY-3-8912
explorer(config);
/* 2nd CPU to drive sound */
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::takeoff_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::takeoff_sound_portmap);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(takeoff_sound_map)
+ MCFG_DEVICE_IO_MAP(takeoff_sound_portmap)
/* sound hardware */
config.device_remove("8910.0");
@@ -6508,20 +6509,19 @@ void galaxian_state::takeoff(machine_config &config) // Sidam 10900, with 1 x AY
ay8912_device &ay8912(AY8912(config, "8912", XTAL(12'000'000) / 8));
ay8912.port_a_read_callback().set(FUNC(galaxian_state::explorer_sound_latch_r));
ay8912.add_route(ALL_OUTPUTS, "speaker", 0.25);
-}
+MACHINE_CONFIG_END
-void galaxian_state::amigo2(machine_config &config) // marked "AMI", but similar to above
-{
+MACHINE_CONFIG_START(galaxian_state::amigo2) // marked "AMI", but similar to above
sidam_bootleg_base(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::amigo2_map);
-
- // 2nd CPU to drive sound
- Z80(config, m_audiocpu, 12_MHz_XTAL / 2 / 2 / 2); // clock not verified
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::konami_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::konami_sound_portmap);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(amigo2_map)
+ /* 2nd CPU to drive sound */
+ MCFG_DEVICE_ADD("audiocpu", Z80, 12_MHz_XTAL / 2 / 2 / 2) /* clock not verified */
+ MCFG_DEVICE_PROGRAM_MAP(konami_sound_map)
+ MCFG_DEVICE_IO_MAP(konami_sound_portmap)
GENERIC_LATCH_8(config, m_soundlatch);
/* sound hardware */
@@ -6531,17 +6531,17 @@ void galaxian_state::amigo2(machine_config &config) // marked "AMI", but similar
m_ay8910[0]->add_route(ALL_OUTPUTS, "speaker", 0.25);
AY8910(config, m_ay8910[1], 12_MHz_XTAL / 2 / 2 / 2).add_route(ALL_OUTPUTS, "speaker", 0.25); /* matches PCB, needs verification */
-}
+MACHINE_CONFIG_END
-void galaxian_state::scorpion(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::scorpion)
scramble_base(config);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scorpion_map)
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::scorpion_map);
-
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::scorpion_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::scorpion_sound_portmap);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(scorpion_sound_map)
+ MCFG_DEVICE_IO_MAP(scorpion_sound_portmap)
m_ppi8255[1]->in_pc_callback().set(FUNC(galaxian_state::scorpion_protection_r));
m_ppi8255[1]->out_pc_callback().set(FUNC(galaxian_state::scorpion_protection_w));
@@ -6553,22 +6553,21 @@ void galaxian_state::scorpion(machine_config &config)
m_ay8910[2]->add_route(ALL_OUTPUTS, "speaker", 0.25);
DIGITALKER(config, m_digitalker, 4_MHz_XTAL).add_route(ALL_OUTPUTS, "speaker", 0.16);
-}
+MACHINE_CONFIG_END
-void galaxian_state::sfx(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::sfx)
scramble_base(config);
+ MCFG_DEVICE_REMOVE("watchdog")
- config.device_remove("watchdog");
-
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::sfx_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sfx_map)
/* 3rd CPU for the sample player */
- Z80(config, m_audio2, KONAMI_SOUND_CLOCK/8);
- m_audio2->set_addrmap(AS_PROGRAM, &galaxian_state::sfx_sample_map);
- m_audio2->set_addrmap(AS_IO, &galaxian_state::sfx_sample_portmap);
+ MCFG_DEVICE_ADD("audio2", Z80, KONAMI_SOUND_CLOCK/8)
+ MCFG_DEVICE_PROGRAM_MAP(sfx_sample_map)
+ MCFG_DEVICE_IO_MAP(sfx_sample_portmap)
I8255A(config, m_ppi8255[2]);
m_ppi8255[2]->in_pa_callback().set("soundlatch2", FUNC(generic_latch_8_device::read));
@@ -6580,43 +6579,43 @@ void galaxian_state::sfx(machine_config &config)
m_ay8910[1]->port_b_write_callback().set(FUNC(galaxian_state::sfx_sample_control_w));
/* DAC for the sample player */
- DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // 16-pin IC (not identified by schematics)
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // 16-pin IC (not identified by schematics)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void galaxian_state::monsterz(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::monsterz)
sfx(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::monsterz_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(monsterz_map)
+ MCFG_DEVICE_MODIFY("ppi8255_1")
m_ppi8255[1]->out_pa_callback().set(FUNC(galaxian_state::monsterz_porta_1_w));
m_ppi8255[1]->out_pb_callback().set(FUNC(galaxian_state::monsterz_portb_1_w));
m_ppi8255[1]->out_pc_callback().set(FUNC(galaxian_state::monsterz_portc_1_w));
- // there are likely other differences too, but those can wait until after protection is sorted out
-}
+ /* there are likely other differences too, but those can wait until after protection is sorted out */
+MACHINE_CONFIG_END
-void galaxian_state::scobra(machine_config &config)
-{
- scramble_base(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::scobra_map);
-}
+MACHINE_CONFIG_START(galaxian_state::scobra)
+ scramble_base(config);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scobra_map)
+MACHINE_CONFIG_END
-void galaxian_state::anteatergg(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::anteatergg)
galaxian(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::anteatergg_map);
-}
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(anteatergg_map)
+MACHINE_CONFIG_END
/*
@@ -6666,97 +6665,96 @@ Silkscreened label: "10041"
*/
-void galaxian_state::quaak(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::quaak)
konami_base(config);
konami_sound_2x_ay8910(config);
m_ay8910[0]->port_b_read_callback().set(FUNC(galaxian_state::frogger_sound_timer_r));
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::scobra_map);
-}
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scobra_map)
+MACHINE_CONFIG_END
-void galaxian_state::froggeram(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::froggeram)
quaak(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::froggeram_map);
-}
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(froggeram_map)
+MACHINE_CONFIG_END
-void galaxian_state::turpins(machine_config &config) // the ROMs came from a blister, so there aren't PCB infos available. Chip types and clocks are guessed.
-{
+MACHINE_CONFIG_START(galaxian_state::turpins) // the ROMs came from a blister, so there aren't PCB infos available. Chip types and clocks are guessed.
scobra(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::turpins_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(turpins_map)
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::turpins_sound_map);
-}
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(turpins_sound_map)
+MACHINE_CONFIG_END
-void galaxian_state::anteater(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::anteater)
scobra(config);
/* quiet down the sounds */
- m_discrete->reset_routes();
- m_discrete->add_route(ALL_OUTPUTS, "speaker", 0.25);
-}
+ MCFG_DEVICE_MODIFY("konami")
+ MCFG_SOUND_ROUTES_RESET()
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+MACHINE_CONFIG_END
-void galaxian_state::anteateruk(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::anteateruk)
anteater(config);
- // strange memory map, maybe a kind of protection
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::anteateruk_map);
-}
+ /* strange memory map, maybe a kind of protection */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(anteateruk_map)
+MACHINE_CONFIG_END
-void galaxian_state::anteaterg(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::anteaterg)
anteater(config);
- // strange memory map, maybe a kind of protection
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::anteaterg_map);
-}
+ /* strange memory map, maybe a kind of protection */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(anteaterg_map)
+MACHINE_CONFIG_END
-void galaxian_state::moonwar(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::moonwar)
scobra(config);
m_ppi8255[0]->out_pc_callback().set(FUNC(galaxian_state::moonwar_port_select_w));
m_palette->set_init(FUNC(galaxian_state::moonwar_palette)); // bullets are less yellow
-}
+MACHINE_CONFIG_END
-void galaxian_state::fourplay(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::fourplay)
galaxian(config);
-
- // basic machine hardware
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::fourplay_map);
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(fourplay_map)
/* video hardware */
- m_gfxdecode->set_info(gfx_gmgalax);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_gmgalax)
m_palette->set_entries(64);
-}
+MACHINE_CONFIG_END
-void galaxian_state::videight(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::videight)
galaxian(config);
- // basic machine hardware
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::videight_map);
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(videight_map)
/* video hardware */
- m_gfxdecode->set_info(gfx_videight);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_videight)
m_palette->set_entries(8 * 32);
-}
+MACHINE_CONFIG_END
/*************************************
@@ -7035,12 +7033,6 @@ void galaxian_state::init_nolock()
space.unmap_write(0x6002, 0x6002, 0x7f8);
}
-// The first rom loads at 0800, then 1800, 2800?, 3800 and 4800.
-// Unfortunately the 3rd rom appears to be total garbage.
-// Each block of 256 bytes is in reverse order. Some code
-// is missing: 00xx, 4Axx, 10xx, 11xx at least. The game
-// uses 0200-05FF as RAM. It also accesses 6000, 6800, 700x, 7800.
-// Perhaps the missing code was stored in battery-backed RAM?
void galaxian_state::init_warofbugg()
{
uint8_t* romdata = memregion("maincpu")->base();
@@ -7048,10 +7040,9 @@ void galaxian_state::init_warofbugg()
uint8_t buf[0x4000];
memcpy(buf, romdata, 0x4000);
- // unscramble each block
- for (int i = 0; i < 0x40; i++)
- for (int j = 0; j < 0x100; j++)
- romdata[i*256+j] = buf[i*256+(j^0xff)];
+ // the rom data is at the very least, backwards, but there still seems to be missing code
+ for (int i = 0; i < 0x4000; i++)
+ romdata[i] = buf[i^0x7ff];
init_nolock();
@@ -8467,11 +8458,11 @@ ROM_END
ROM_START( warofbugg )
ROM_REGION( 0x4000, "maincpu", 0 )
- ROM_LOAD( "wotbg-u-1.bin", 0x0000, 0x0800, CRC(f43ff0a8) SHA1(b87abeb8af9105fa8fba78f9a68363bd89066e7f) ) // -> 0800
- ROM_LOAD( "wotbg-v-2.bin", 0x0800, 0x0800, CRC(eb7a028b) SHA1(8c822ae11d3cc04f749a7cd639d15b9fc830ab35) ) // -> 1800
- ROM_LOAD( "wotbg-w-3.bin", 0x1000, 0x0800, CRC(693e0e50) SHA1(00b19969cee0f95bfb8251c2df133ff2c9ae3b00) ) // -> ???? garbage
- ROM_LOAD( "wotbg-y-4.bin", 0x1800, 0x0800, CRC(885d4982) SHA1(4aeaf514a9413a9cb9a971fd258c6cf46ca66fc4) ) // -> 3800
- ROM_LOAD( "wotbg-z-5.bin", 0x2000, 0x0800, CRC(60041ef2) SHA1(cced5837a037ac5cd8fa6260d69d8e33de5ecd48) ) // -> 4800
+ ROM_LOAD( "wotbg-u-1.bin", 0x0000, 0x0800, CRC(f43ff0a8) SHA1(b87abeb8af9105fa8fba78f9a68363bd89066e7f) )
+ ROM_LOAD( "wotbg-v-2.bin", 0x0800, 0x0800, CRC(eb7a028b) SHA1(8c822ae11d3cc04f749a7cd639d15b9fc830ab35) )
+ ROM_LOAD( "wotbg-w-3.bin", 0x1000, 0x0800, CRC(693e0e50) SHA1(00b19969cee0f95bfb8251c2df133ff2c9ae3b00) )
+ ROM_LOAD( "wotbg-y-4.bin", 0x1800, 0x0800, CRC(885d4982) SHA1(4aeaf514a9413a9cb9a971fd258c6cf46ca66fc4) )
+ ROM_LOAD( "wotbg-z-5.bin", 0x2000, 0x0800, CRC(60041ef2) SHA1(cced5837a037ac5cd8fa6260d69d8e33de5ecd48) )
ROM_REGION( 0x1000, "gfx1", 0 )
ROM_LOAD( "warofbug.1k", 0x0000, 0x0800, CRC(8100fa85) SHA1(06641c431cace36dec98b87555f62e72f3e53a31) )
@@ -11626,31 +11617,6 @@ ROM_START( scramblebb ) // no PCB, just eproms...
ROM_LOAD( "c01s.6e", 0x0000, 0x0020, BAD_DUMP CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) // need proper dump
ROM_END
-// Two PCBs, labeled MU-1A and MU-2A
-ROM_START( kamikazesp )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "4-b.2c", 0x0000, 0x0800, CRC(ab0eef23) SHA1(53ebb2011969c3eb8d60ce30f118e6627201d2a0) ) // 2716
- ROM_LOAD( "5-b.2e", 0x0800, 0x0800, CRC(43cb40a4) SHA1(4e500f63a06865a5fd9a7d920eb866ea610a4d92) ) // 2716
- ROM_LOAD( "6-b.2f", 0x1000, 0x0800, CRC(eec265ee) SHA1(29b6cf6b93220414eb58cddeba591dc8813c4935) ) // 2716
- ROM_LOAD( "7-b.2h", 0x1800, 0x0800, CRC(dd380a22) SHA1(125e713a58cc5f2c1e38f67dad29f8c985ce5a8b) ) // 2716
- ROM_LOAD( "8-b.2j", 0x2000, 0x0800, CRC(92980e72) SHA1(7e0605b461ace534f8f91028bb82968ecd907ca1) ) // 2716
- ROM_LOAD( "9-b.2l", 0x2800, 0x0800, CRC(9fd96374) SHA1(c8456dd8a012353a023a2d3fa5d508e49c36ace8) ) // 2716
- ROM_LOAD( "10-b.2m", 0x3000, 0x0800, CRC(88ac07a0) SHA1(c57061db5984b472039356bf84a050b5b66e3813) ) // 2716
- ROM_LOAD( "11-b.2p", 0x3800, 0x0800, CRC(75232e09) SHA1(b0da201bf05c63031cdbe9f7059e3c710557f33d) ) // 2716
-
- ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "1-a.5c", 0x0000, 0x0800, CRC(be037cf6) SHA1(f28e5ead496e70beaada24775aa58bd5d75f2d25) ) // 2716
- ROM_LOAD( "2-a.5d", 0x0800, 0x0800, CRC(31bb79e4) SHA1(9f5370f7b1911c6a9f2c82ef2bab3f14cb0e9657) ) // 2716
- ROM_LOAD( "3-a.5e", 0x1000, 0x0800, CRC(ba2fa933) SHA1(1f976d8595706730e29f93027e7ab4620075c078) ) // 2716
-
- ROM_REGION( 0x1000, "gfx1", 0 )
- ROM_LOAD( "12-b.5f", 0x0000, 0x0800, CRC(4708845b) SHA1(a8b1ad19a95a9d35050a2ab7194cc96fc5afcdc9) ) // MB8516, dumped as 2716
- ROM_LOAD( "13-b.5h", 0x0800, 0x0800, CRC(11fd2887) SHA1(69844e48bb4d372cac7ae83c953df573c7ecbb7f) ) // 2716
-
- ROM_REGION( 0x0020, "proms", 0 )
- ROM_LOAD( "prom.6e", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) // MB7051, dumped as 82S123
-ROM_END
-
ROM_START( strfbomb )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "1.2c", 0x0000, 0x0800, CRC(b102aaa0) SHA1(00560da7a2ded6afcdc1d46e12cc3c795654639a) )
@@ -12130,30 +12096,6 @@ ROM_START( scobrag )
ROM_END
-// Super Cobra bootleg (Cocamatic). PCB by "GGI Corp."
-ROM_START( scobraggi )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "2c_b.bin", 0x0000, 0x1000, CRC(04ffab61) SHA1(302ae8b224d98c405aadd363623eddf88bdc3f0e) ) // 2732
- ROM_LOAD( "2e_b.bin", 0x1000, 0x1000, CRC(4e29d35f) SHA1(f48358f30e886c65b0e38220a44d3c2d09a31fee) ) // 2732
- ROM_LOAD( "2f_b.bin", 0x2000, 0x1000, CRC(9dee81cc) SHA1(e842ad873cd5370f2c5d23334a320ebc448bfcdc) ) // 2732
- ROM_LOAD( "2h_b.bin", 0x3000, 0x1000, CRC(99dee0c6) SHA1(1f026a40f59fe33cb2ac54a7712d6d259db3ecc8) ) // 2732
- ROM_LOAD( "2j_b.bin", 0x4000, 0x1000, CRC(db7fb865) SHA1(94f1382dae4f3c12d177fd74b3493e91989b4654) ) // 2732
- ROM_LOAD( "2l_b.bin", 0x5000, 0x1000, CRC(5825d73b) SHA1(482128d723986fdf586f9ac53a0139b687cb0b58) ) // 2732
-
- ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "1_13_a.bin", 0x0000, 0x0800, CRC(d4346959) SHA1(5eab4505beb69a5bdd88b23db60e1193371250cf) ) // MB8516 readed as 2716
- ROM_LOAD( "2_13_a.bin", 0x0800, 0x0800, CRC(cc025d95) SHA1(2b0784c4d05c466e0b7648f16e14f34393d792c3) ) // 2716
- ROM_LOAD( "3_13_a.bin", 0x1000, 0x0800, CRC(1628c53f) SHA1(ec79a73e4a2d7373454b227dd7eff255f1cc60cc) ) // MB8516 readed as 2716
-
- ROM_REGION( 0x1000, "gfx1", 0 )
- ROM_LOAD( "5h_b.bin", 0x0000, 0x0800, CRC(64d113b4) SHA1(7b439bb74d5ecc792e0ca8964bcca8c6b7a51262) ) // 2716
- ROM_LOAD( "5f_b.bin", 0x0800, 0x0800, CRC(a96316d3) SHA1(9de0e94932e91dc34aea7c81880bde6a486d103b) ) // 2716
-
- ROM_REGION( 0x0020, "proms", 0 )
- ROM_LOAD( "6e_b.bin", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) // MB7051 readed as N82S123
-ROM_END
-
-
ROM_START( suprheli )
/* this is a bootleg of Super Cobra */
ROM_REGION( 0x10000, "maincpu", 0 )
@@ -12592,7 +12534,7 @@ GAME( 1980, galaxrcgg, galaxian, galaxian, galaxrf, galaxian_state, init_
GAME( 1979, moonaln, galaxian, galaxian, superg, galaxian_state, init_galaxian, ROT90, "Namco / Nichibutsu (Karateco license?)", "Moon Alien", MACHINE_SUPPORTS_SAVE ) // or bootleg?
GAME( 1979, galapx, galaxian, galaxian, superg, galaxian_state, init_galaxian, ROT90, "hack", "Galaxian Part X (moonaln hack)", MACHINE_SUPPORTS_SAVE )
// like above but does have the energy bar, also GFX changed to planes.
-GAME( 1979, kamikazp, galaxian, galaxian, kamikazp, galaxian_state, init_galaxian, ROT90, "bootleg (Potomac Games)", "Kamikaze (Potomac Games, bootleg of Galaxian)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, kamikazp, galaxian, galaxian, kamikazp, galaxian_state, init_galaxian, ROT90, "bootleg (Potomac Games)", "Kamikaze (Potomac Games)", MACHINE_SUPPORTS_SAVE )
// this has the tiles to display the energy bar, but use the flag gfx for the 'linescroll effect' title screen, also doesn't work due to bad rom.
GAME( 1980, supergx, galaxian, galaxian, superg, galaxian_state, init_galaxian, ROT90, "Namco / Nichibutsu", "Super GX", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
// these have the energy bar, and the tiles needed to display a less corrupt 'linescroll effect' title, but don't display one
@@ -12696,9 +12638,9 @@ GAME( 1980, mooncrstu, mooncrst, mooncrst, mooncrst, galaxian_state, init_
GAME( 1980, mooncrsto, mooncrst, mooncrst, mooncrsa, galaxian_state, init_mooncrst, ROT90, "Nichibutsu", "Moon Cresta (Nichibutsu, old rev)", MACHINE_SUPPORTS_SAVE )
GAME( 1980, mooncrstg, mooncrst, mooncrst, mooncrsg, galaxian_state, init_mooncrsu, ROT90, "Nichibutsu (Gremlin license)", "Moon Cresta (Gremlin)", MACHINE_SUPPORTS_SAVE )
/* straight Moon Cresta ripoffs on basic mooncrst hardware */
-GAME( 1980, eagle, mooncrst, eagle, mooncrsa, galaxian_state, init_mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 1)", MACHINE_SUPPORTS_SAVE ) // or bootleg?
-GAME( 1980, eagle2, mooncrst, eagle, eagle2, galaxian_state, init_mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 2)", MACHINE_SUPPORTS_SAVE ) // "
-GAME( 1980, eagle3, mooncrst, eagle, mooncrsa, galaxian_state, init_mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 3)", MACHINE_SUPPORTS_SAVE ) // "
+GAME( 1980, eagle, mooncrst, mooncrst, mooncrsa, galaxian_state, init_mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 1)", MACHINE_SUPPORTS_SAVE ) // or bootleg?
+GAME( 1980, eagle2, mooncrst, mooncrst, eagle2, galaxian_state, init_mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 2)", MACHINE_SUPPORTS_SAVE ) // "
+GAME( 1980, eagle3, mooncrst, mooncrst, mooncrsa, galaxian_state, init_mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 3)", MACHINE_SUPPORTS_SAVE ) // "
GAME( 1980, mooncrsb, mooncrst, mooncrst, mooncrsa, galaxian_state, init_mooncrsu, ROT90, "bootleg", "Moon Cresta (bootleg set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1980, mooncrs2, mooncrst, mooncrst, mooncrsa, galaxian_state, init_mooncrsu, ROT90, "bootleg", "Moon Cresta (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1980, mooncrs3, mooncrst, mooncrst, mooncrst, galaxian_state, init_mooncrsu, ROT90, "bootleg (Jeutel)", "Moon Cresta (bootleg set 3)", MACHINE_SUPPORTS_SAVE ) /* Jeutel bootleg, similar to bootleg set 2 */
@@ -12786,9 +12728,12 @@ GAME( 1981, quaak, frogger, quaak, frogger, galaxian_state, init_
GAME( 1981, froggeram, frogger, froggeram, froggeram, galaxian_state, init_quaak, ROT90, "bootleg", "Frogger (bootleg on Amigo? hardware)", MACHINE_SUPPORTS_SAVE ) // meant to be Amigo hardware, but maybe a different bootleg than the one we have?
-// Turtles based hardware
-// CPU/Video Board: KT-4108-2
-// Sound Board: KT-4108-1
+/*
+ Turtles based hardware
+
+ CPU/Video Board: KT-4108-2
+ Sound Board: KT-4108-1
+*/
GAME( 1981, turtles, 0, turtles, turtles, galaxian_state, init_turtles, ROT90, "Konami (Stern Electronics license)", "Turtles", MACHINE_SUPPORTS_SAVE )
GAME( 1981, turpin, turtles, turtles, turpin, galaxian_state, init_turtles, ROT90, "Konami (Sega license)", "Turpin", MACHINE_SUPPORTS_SAVE )
GAME( 1981, 600, turtles, turtles, turtles, galaxian_state, init_turtles, ROT90, "Konami", "600", MACHINE_SUPPORTS_SAVE )
@@ -12812,22 +12757,21 @@ GAME( 1980, theend, 0, theend, theend, galaxian_state, init_
GAME( 1980, theends, theend, theend, theend, galaxian_state, init_theend, ROT90, "Konami (Stern Electronics license)", "The End (Stern Electronics)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, takeoff, theend, takeoff, explorer, galaxian_state, init_explorer, ROT90, "bootleg (Sidam)", "Take Off (bootleg of The End)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // colors likely need bitswap<8> somewhere; needs different sound timer. reference: https://www.youtube.com/watch?v=iPYX3yJORTE
-GAME( 1981, scramble, 0, scramble, scramble, galaxian_state, init_scramble, ROT90, "Konami", "Scramble", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, scrambles, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "Konami (Stern Electronics license)", "Scramble (Stern Electronics set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, scrambles2, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "Konami (Stern Electronics license)", "Scramble (Stern Electronics set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, strfbomb, scramble, scramble, strfbomb, galaxian_state, init_scramble, ROT90, "bootleg (Omni)", "Strafe Bomb (bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, explorer, scramble, explorer, explorer, galaxian_state, init_explorer, ROT90, "bootleg (Sidam)", "Explorer (bootleg of Scramble)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // needs different sound timer
-GAME( 1981, scramblebf, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Karateco)", "Scramble (Karateco, French bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, scrambp, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Billport S.A.)", "Impacto (Billport S.A., Spanish bootleg of Scramble)", MACHINE_SUPPORTS_SAVE ) // similar to the Karateco set above
-GAME( 1981, scramce, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Centromatic S.A.)", "Scramble (Centromatic S.A., Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) // similar to above
-GAME( 1981, scrampt, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Petaco S.A.)", "Scramble (Petaco S.A., Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) // ^^
-GAME( 1981, scramrf, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Recreativos Franco)", "Scramble (Recreativos Franco, Spanish bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, offensiv, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Video Dens)", "Offensive (Spanish bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, ncentury, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Petaco S.A.)", "New Century (Spanish bootleg of Scramble)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // irq isn't enabled correctly
-GAME( 1981, scrammr, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Model Racing)", "Scramble (Model Racing, Italian bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // irq isn't enabled correctly
-GAME( 1981, scramblebb, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg?", "Scramble (bootleg?)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, kamikazesp, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Euromatic S.A.)", "Kamikaze (Euromatic S.A., Spanish bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
-GAME( 198?, bomber, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Alca)", "Bomber (bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scramble, 0, scramble, scramble, galaxian_state, init_scramble, ROT90, "Konami", "Scramble", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scrambles, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "Konami (Stern Electronics license)", "Scramble (Stern Electronics set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scrambles2, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "Konami (Stern Electronics license)", "Scramble (Stern Electronics set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, strfbomb, scramble, scramble, strfbomb, galaxian_state, init_scramble, ROT90, "bootleg (Omni)", "Strafe Bomb (bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, explorer, scramble, explorer, explorer, galaxian_state, init_explorer, ROT90, "bootleg (Sidam)", "Explorer (bootleg of Scramble)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // needs different sound timer
+GAME( 1981, scramblebf, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Karateco)", "Scramble (Karateco, French bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scrambp, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Billport S.A.)", "Impacto (Billport S.A., Spanish bootleg of Scramble)", MACHINE_SUPPORTS_SAVE ) // similar to the Karateco set above
+GAME( 1981, scramce, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Centromatic S.A.)", "Scramble (Centromatic S.A., Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) // similar to above
+GAME( 1981, scrampt, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Petaco S.A.)", "Scramble (Petaco S.A., Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) // ^^
+GAME( 1981, scramrf, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Recreativos Franco)", "Scramble (Recreativos Franco, Spanish bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, offensiv, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Video Dens)", "Offensive (Spanish bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, ncentury, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Petaco S.A.)", "New Century (Spanish bootleg of Scramble)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // irq isn't enabled correctly
+GAME( 1981, scrammr, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Model Racing)", "Scramble (Model Racing, Italian bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // irq isn't enabled correctly
+GAME( 1981, scramblebb, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg?", "Scramble (bootleg?)", MACHINE_SUPPORTS_SAVE )
+GAME( 198?, bomber, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Alca)", "Bomber (bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, atlantis, 0, theend, atlantis, galaxian_state, init_atlantis, ROT90, "Comsoft", "Battle of Atlantis (set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, atlantis2, atlantis, theend, atlantis, galaxian_state, init_atlantis, ROT90, "Comsoft", "Battle of Atlantis (set 2)", MACHINE_SUPPORTS_SAVE )
@@ -12854,14 +12798,13 @@ GAME( 1982, monsterz, 0, monsterz, sfx, galaxian_state, init_
CPU/Video Board: A969
Sound Board: A970
*/
-GAME( 1981, scobra, 0, scobra, scobra, galaxian_state, init_scobra, ROT90, "Konami", "Super Cobra", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, scobrase, scobra, scobra, scobra, galaxian_state, init_scobra, ROT90, "Konami (Sega license)", "Super Cobra (Sega)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, scobras, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "Konami (Stern Electronics license)", "Super Cobra (Stern Electronics)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scobra, 0, scobra, scobra, galaxian_state, init_scobra, ROT90, "Konami", "Super Cobra", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scobrase, scobra, scobra, scobra, galaxian_state, init_scobra, ROT90, "Konami (Sega license)", "Super Cobra (Sega)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scobras, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "Konami (Stern Electronics license)", "Super Cobra (Stern Electronics)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, scobrae, scobra, scobra, scobras, galaxian_state, init_scobrae, ROT90, "Konami (Stern Electronics license)", "Super Cobra (Stern Electronics) (encrypted, KONATEC XC-103SS CPU)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, scobrab, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "bootleg (Karateco)", "Super Cobra (bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, scobrag, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "bootleg (A.V.G. by Zaccaria)", "Super Cobra (bootleg, set 2)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // uses the scramble color PROM
-GAME( 1981, scobraggi, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "bootleg (Cocamatic)", "Super Cobra (bootleg, set 3)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // uses the scramble color PROM
-GAME( 1981, suprheli, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "bootleg", "Super Heli (Super Cobra bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scobrab, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "bootleg (Karateco)", "Super Cobra (bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scobrag, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "bootleg (A.V.G. by Zaccaria)", "Super Cobra (bootleg, set 2)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // uses the scramble color PROM
+GAME( 1981, suprheli, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "bootleg", "Super Heli (Super Cobra bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, moonwar, 0, moonwar, moonwar, galaxian_state, init_moonwar, ROT90, "Stern Electronics", "Moonwar", MACHINE_SUPPORTS_SAVE )
GAME( 1981, moonwara, moonwar, moonwar, moonwara, galaxian_state, init_moonwar, ROT90, "Stern Electronics", "Moonwar (older)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/galaxold.cpp b/src/mame/drivers/galaxold.cpp
index 45ed0e73615..7679ae3cdbc 100644
--- a/src/mame/drivers/galaxold.cpp
+++ b/src/mame/drivers/galaxold.cpp
@@ -588,7 +588,7 @@ void galaxold_state::dkongjrmc_map(address_map &map)
}
-void galaxold_state::tazzmang_map(address_map &map)
+void galaxold_state::tazzmang(address_map &map)
{
map(0x0000, 0x5fff).rom();
map(0x7000, 0x7000).portr("DSW0"); /* mirror */
@@ -614,7 +614,7 @@ void galaxold_state::tazzmang_map(address_map &map)
}
-void galaxold_state::bongo_map(address_map &map)
+void galaxold_state::bongo(address_map &map)
{
map(0x0000, 0x5fff).rom();
map(0x8000, 0x83ff).ram();
@@ -668,7 +668,7 @@ void galaxold_state::ozon1_io_map(address_map &map)
}
-void galaxold_state::hunchbkg_map(address_map &map)
+void galaxold_state::hunchbkg(address_map &map)
{
map(0x0000, 0x0fff).rom();
map(0x1480, 0x14bf).mirror(0x6000).ram().w(FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
@@ -694,7 +694,7 @@ void galaxold_state::hunchbkg_map(address_map &map)
}
/* hunchbkg style */
-void galaxold_state::spcwarp_map(address_map &map)
+void galaxold_state::spcwarp(address_map &map)
{
map(0x0000, 0x0fff).rom();
map(0x1480, 0x14bf).mirror(0x6000).ram().w(FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
@@ -780,7 +780,7 @@ void galaxold_state::racknrol_map(address_map &map)
void galaxold_state::racknrol_io(address_map &map)
{
- map(0x1d, 0x1d).w("snsnd", FUNC(sn76489a_device::write));
+ map(0x1d, 0x1d).w("snsnd", FUNC(sn76489a_device::command_w));
// AM_RANGE(0x1e, 0x1e) AM_WRITENOP
// AM_RANGE(0x1f, 0x1f) AM_WRITENOP
map(0x20, 0x3f).w(FUNC(galaxold_state::racknrol_tiles_bank_w)).share("racknrol_tbank");
@@ -808,7 +808,7 @@ void galaxold_state::hexpoola_io(address_map &map)
void galaxold_state::hexpoola_data(address_map &map)
{
- map(S2650_DATA_PORT, S2650_DATA_PORT).r(FUNC(galaxold_state::hexpoola_data_port_r)).w("snsnd", FUNC(sn76496_device::write));
+ map(S2650_DATA_PORT, S2650_DATA_PORT).r(FUNC(galaxold_state::hexpoola_data_port_r)).w("snsnd", FUNC(sn76496_device::command_w));
}
READ8_MEMBER(galaxold_state::bullsdrtg_data_port_r)
@@ -834,7 +834,7 @@ READ8_MEMBER(galaxold_state::bullsdrtg_data_port_r)
void galaxold_state::bullsdrtg_data_map(address_map &map)
{
- map(S2650_DATA_PORT, S2650_DATA_PORT).r(FUNC(galaxold_state::bullsdrtg_data_port_r)).w("snsnd", FUNC(sn76496_device::write));
+ map(S2650_DATA_PORT, S2650_DATA_PORT).r(FUNC(galaxold_state::bullsdrtg_data_port_r)).w("snsnd", FUNC(sn76496_device::command_w));
}
/* Lives Dips are spread across two input ports */
@@ -2253,11 +2253,11 @@ static GFXDECODE_START( gfx_4in1 )
GFXDECODE_END
-void galaxold_state::galaxold_base(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::galaxold_base)
+
/* basic machine hardware */
- Z80(config, m_maincpu, PIXEL_CLOCK/2); /* 3.072 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::galaxold_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, PIXEL_CLOCK/2) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(galaxold_map)
MCFG_MACHINE_RESET_OVERRIDE(galaxold_state,galaxold)
@@ -2267,7 +2267,7 @@ void galaxold_state::galaxold_base(machine_config &config)
TTL7474(config, m_7474_9m_2, 0);
m_7474_9m_2->comp_output_cb().set(FUNC(galaxold_state::galaxold_7474_9m_2_q_callback));
- TIMER(config, "int_timer").configure_generic(FUNC(galaxold_state::galaxold_interrupt_timer));
+ MCFG_TIMER_DRIVER_ADD("int_timer", galaxold_state, galaxold_interrupt_timer)
WATCHDOG_TIMER(config, "watchdog");
@@ -2275,56 +2275,58 @@ void galaxold_state::galaxold_base(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_galaxian);
PALETTE(config, m_palette, FUNC(galaxold_state::galaxold_palette), 32+2+64); // 32 for the characters, 2 for the bullets, 64 for the stars
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(galaxold_state::screen_update_galaxold));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxold_state, screen_update_galaxold)
+ MCFG_SCREEN_PALETTE(m_palette)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,galaxold)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
-}
+MACHINE_CONFIG_END
-void galaxold_state::galaxian_audio(machine_config &config)
-{
- GALAXIAN(config, "cust", 0).add_route(ALL_OUTPUTS, "speaker", 0.4);
+MACHINE_CONFIG_START(galaxold_state::galaxian_audio)
+ MCFG_DEVICE_ADD("cust", GALAXIAN, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4)
- DISCRETE(config, GAL_AUDIO, galaxian_discrete).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_ADD(GAL_AUDIO, DISCRETE, galaxian_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
-void galaxold_state::mooncrst_audio(machine_config &config)
-{
- GALAXIAN(config, "cust", 0).add_route(ALL_OUTPUTS, "speaker", 0.4);
+MACHINE_CONFIG_START(galaxold_state::mooncrst_audio)
+ MCFG_DEVICE_ADD("cust", GALAXIAN, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4)
- DISCRETE(config, GAL_AUDIO, mooncrst_discrete).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_ADD(GAL_AUDIO, DISCRETE, mooncrst_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
-void galaxold_state::galaxian(machine_config &config)
-{
+
+MACHINE_CONFIG_START(galaxold_state::galaxian)
galaxold_base(config);
/* basic machine hardware */
/* sound hardware */
galaxian_audio(config);
-}
+MACHINE_CONFIG_END
-void galaxold_state::mooncrst(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::mooncrst)
galaxold_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::mooncrst_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mooncrst_map)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(galaxold_state,mooncrst)
/* sound hardware */
mooncrst_audio(config);
-}
+MACHINE_CONFIG_END
// 'Videotron'
// this is a 'cartridge' based system, taking plug-in game boards.
@@ -2332,85 +2334,84 @@ void galaxold_state::mooncrst(machine_config &config)
// but neither of the games we have (froggerv and hustlerb3) make use of either. There are a number
// of unpopulated positions on the game board which presumably can be populated with code for the
// 2nd Z80.
-void galaxold_state::videotron(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::videotron)
galaxian(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::hustlerb3_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hustlerb3_map)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(galaxold_state,mooncrst)
-}
+MACHINE_CONFIG_END
-void galaxold_state::porter(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::porter)
mooncrst(config);
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(galaxold_state, pisces)
-}
+MACHINE_CONFIG_END
-void galaxold_state::scramblb(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::scramblb)
galaxian(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::scramblb_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scramblb_map)
/* video hardware */
m_palette->set_entries(32+2+64+1); // 32 for the characters, 2 for the bullets, 64 for the stars, 1 for background
m_palette->set_init(FUNC(galaxold_state::scrambold_palette));
MCFG_VIDEO_START_OVERRIDE(galaxold_state,scrambold)
-}
+MACHINE_CONFIG_END
-void galaxold_state::scramb2(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::scramb2)
galaxian(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::scramb2_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scramb2_map)
/* video hardware */
m_palette->set_entries(32+2+64+1); // 32 for the characters, 2 for the bullets, 64 for the stars, 1 for background
m_palette->set_init(FUNC(galaxold_state::scrambold_palette));
MCFG_VIDEO_START_OVERRIDE(galaxold_state,scrambold)
-}
+MACHINE_CONFIG_END
-void galaxold_state::scramb3(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::scramb3)
scramb2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::scramb3_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scramb3_map)
+MACHINE_CONFIG_END
-void galaxold_state::scrambler(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::scrambler)
galaxian(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::scrambler_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scrambler_map)
/* video hardware */
m_palette->set_entries(32+2+64+1); // 32 for the characters, 2 for the bullets, 64 for the stars, 1 for background
m_palette->set_init(FUNC(galaxold_state::scrambold_palette));
MCFG_VIDEO_START_OVERRIDE(galaxold_state,scrambold)
-}
+MACHINE_CONFIG_END
-void galaxold_state::guttang(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::guttang)
galaxian(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::guttang_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(guttang_map)
/* video hardware */
m_palette->set_entries(32+2+64+1); // 32 for the characters, 2 for the bullets, 64 for the stars, 1 for background
@@ -2418,83 +2419,84 @@ void galaxold_state::guttang(machine_config &config)
// m_palette->set_init(FUNC(galaxold_state::scrambold_palette));
MCFG_VIDEO_START_OVERRIDE(galaxold_state,mooncrst)
-}
+MACHINE_CONFIG_END
-void galaxold_state::_4in1(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::_4in1)
galaxian(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::_4in1_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(_4in1_map)
/* video hardware */
- m_gfxdecode->set_info(gfx_4in1);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_4in1)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,pisces)
-}
+MACHINE_CONFIG_END
-void galaxold_state::bagmanmc(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::bagmanmc)
mooncrst(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::bagmanmc_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(bagmanmc_map)
MCFG_MACHINE_RESET_OVERRIDE(galaxold_state, devilfsg )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(galaxold_state, bagmanmc)
-}
+MACHINE_CONFIG_END
-void galaxold_state::dkongjrm(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::dkongjrm)
mooncrst(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::dkongjrm_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dkongjrm_map)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(galaxold_state,dkongjrm)
-}
+MACHINE_CONFIG_END
-void galaxold_state::dkongjrmc(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::dkongjrmc)
mooncrst(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::dkongjrmc_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dkongjrmc_map)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,dkongjrmc)
-}
+MACHINE_CONFIG_END
-void galaxold_state::rockclim(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::rockclim)
mooncrst(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::rockclim_map);
- m_gfxdecode->set_info(gfx_rockclim);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(rockclim_map)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_rockclim)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(galaxold_state,rockclim)
m_palette->set_entries(64+64+2); // 64 colors only, but still uses bullets so we need to keep the palette big
m_palette->set_init(FUNC(galaxold_state::rockclim_palette));
- m_screen->set_size(64*8, 32*8);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+MACHINE_CONFIG_END
-void galaxold_state::ozon1(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::ozon1)
galaxold_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::ozon1_map);
- m_maincpu->set_addrmap(AS_IO, &galaxold_state::ozon1_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(galaxold_state::nmi_line_pulse));
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ozon1_map)
+ MCFG_DEVICE_IO_MAP(ozon1_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", galaxold_state, nmi_line_pulse)
MCFG_MACHINE_RESET_REMOVE()
@@ -2504,11 +2506,11 @@ void galaxold_state::ozon1(machine_config &config)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,ozon1)
AY8910(config, "aysnd", PIXEL_CLOCK/4).add_route(ALL_OUTPUTS, "speaker", 0.5);
-}
+MACHINE_CONFIG_END
-void galaxold_state::drivfrcg(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::drivfrcg)
+
/* basic machine hardware */
s2650_device &maincpu(S2650(config, m_maincpu, MASTER_CLOCK/6));
maincpu.set_addrmap(AS_PROGRAM, &galaxold_state::drivfrcg_program);
@@ -2517,13 +2519,13 @@ void galaxold_state::drivfrcg(machine_config &config)
maincpu.sense_handler().set("screen", FUNC(screen_device::vblank));
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(16000.0/132/2);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(galaxold_state::screen_update_galaxold));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(16000.0/132/2)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxold_state, screen_update_galaxold)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(galaxold_state::rockclim_palette), 64);
@@ -2535,38 +2537,38 @@ void galaxold_state::drivfrcg(machine_config &config)
SPEAKER(config, "speaker").front_center();
galaxian_audio(config);
-}
+MACHINE_CONFIG_END
-void galaxold_state::bongo(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::bongo)
galaxold_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::bongo_map);
- m_maincpu->set_addrmap(AS_IO, &galaxold_state::bongo_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(bongo)
+ MCFG_DEVICE_IO_MAP(bongo_io)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(galaxold_state,bongo)
-
- m_screen->set_screen_update(FUNC(galaxold_state::screen_update_galaxold));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(galaxold_state, screen_update_galaxold)
/* sound hardware */
ay8910_device &aysnd(AY8910(config, "aysnd", PIXEL_CLOCK/4));
aysnd.port_a_read_callback().set_ioport("DSW1");
aysnd.add_route(ALL_OUTPUTS, "speaker", 0.5);
-}
+MACHINE_CONFIG_END
-void galaxold_state::hunchbkg(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::hunchbkg)
galaxold_base(config);
/* basic machine hardware */
- S2650(config.replace(), m_maincpu, PIXEL_CLOCK / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::hunchbkg_map);
- m_maincpu->set_addrmap(AS_DATA, &galaxold_state::hunchbkg_data);
- m_maincpu->set_irq_acknowledge_callback(FUNC(galaxold_state::hunchbkg_irq_callback));
+ MCFG_DEVICE_REPLACE("maincpu", S2650, PIXEL_CLOCK / 4)
+
+ MCFG_DEVICE_PROGRAM_MAP(hunchbkg)
+ MCFG_DEVICE_DATA_MAP(hunchbkg_data)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(galaxold_state,hunchbkg_irq_callback)
/* the nmi line seems to be inverted on the cpu plugin board */
m_7474_9m_1->comp_output_cb().set_inputline("maincpu", S2650_SENSE_LINE);
@@ -2574,113 +2576,115 @@ void galaxold_state::hunchbkg(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(galaxold_state,hunchbkg)
galaxian_audio(config);
-}
+MACHINE_CONFIG_END
-void galaxold_state::spcwarp(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::spcwarp)
hunchbkg(config);
/* hunchbkg, but with a different memory map */
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::spcwarp_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(spcwarp)
+MACHINE_CONFIG_END
-void galaxold_state::tazzmang(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::tazzmang)
galaxian(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::tazzmang_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tazzmang)
+MACHINE_CONFIG_END
-void galaxold_state::racknrol(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::racknrol)
+
/* basic machine hardware */
s2650_device &maincpu(S2650(config, m_maincpu, PIXEL_CLOCK/2));
maincpu.set_addrmap(AS_PROGRAM, &galaxold_state::racknrol_map);
maincpu.set_addrmap(AS_IO, &galaxold_state::racknrol_io);
maincpu.sense_handler().set(m_screen, FUNC(screen_device::vblank)).invert(); // ???
- // FIXME: kill the following line - convert to a screen vblank callback
- maincpu.set_vblank_int("screen", FUNC(galaxold_state::hunchbks_vh_interrupt));
+ device = &maincpu; // FIXME: kill the following line - convert to a screen vblank callback
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", galaxold_state, hunchbks_vh_interrupt)
/* video hardware */
GFXDECODE(config, m_gfxdecode, m_palette, gfx_galaxian);
PALETTE(config, m_palette, FUNC(galaxold_state::rockclim_palette), 32);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(galaxold_state::screen_update_galaxold));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxold_state, screen_update_galaxold)
+ MCFG_SCREEN_PALETTE(m_palette)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,racknrol)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- SN76489A(config, "snsnd", PIXEL_CLOCK/2).add_route(ALL_OUTPUTS, "speaker", 1.0); // SN76489AN
-}
+ MCFG_DEVICE_ADD("snsnd", SN76489A, PIXEL_CLOCK/2) // SN76489AN
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
-void galaxold_state::hexpoola(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::hexpoola)
+
/* basic machine hardware */
s2650_device &maincpu(S2650(config, m_maincpu, PIXEL_CLOCK/2));
maincpu.set_addrmap(AS_PROGRAM, &galaxold_state::racknrol_map);
maincpu.set_addrmap(AS_IO, &galaxold_state::hexpoola_io);
maincpu.set_addrmap(AS_DATA, &galaxold_state::hexpoola_data);
maincpu.sense_handler().set(m_screen, FUNC(screen_device::vblank)).invert(); // ???
- // FIXME: kill the following line - convert to a screen vblank callback
- maincpu.set_vblank_int("screen", FUNC(galaxold_state::hunchbks_vh_interrupt));
+ device = &maincpu; // FIXME: kill the following line - convert to a screen vblank callback
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", galaxold_state, hunchbks_vh_interrupt)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_galaxian);
PALETTE(config, m_palette, FUNC(galaxold_state::rockclim_palette), 32);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(galaxold_state::screen_update_galaxold));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxold_state, screen_update_galaxold)
+ MCFG_SCREEN_PALETTE(m_palette)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,racknrol)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- SN76496(config, "snsnd", PIXEL_CLOCK/2).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_ADD("snsnd", SN76496, PIXEL_CLOCK/2)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
-void galaxold_state::ckongg(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::ckongg)
galaxian(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::ckongg_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ckongg_map)
- m_gfxdecode->set_info(gfx_gmgalax);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_gmgalax)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,ckongs)
-}
+MACHINE_CONFIG_END
-void galaxold_state::ckongmc(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::ckongmc)
mooncrst(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::ckongmc_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ckongmc_map)
- m_gfxdecode->set_info(gfx_gmgalax);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_gmgalax)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,ckongs)
-}
+MACHINE_CONFIG_END
-void galaxold_state::bullsdrtg(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxold_state::bullsdrtg)
hexpoola(config);
- m_maincpu->set_addrmap(AS_DATA, &galaxold_state::bullsdrtg_data_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_DATA_MAP(bullsdrtg_data_map)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/galaxy.cpp b/src/mame/drivers/galaxy.cpp
index 22cf4cd0f99..1c81aed7705 100644
--- a/src/mame/drivers/galaxy.cpp
+++ b/src/mame/drivers/galaxy.cpp
@@ -178,36 +178,37 @@ GFXDECODE_END
MACHINE_CONFIG_START(galaxy_state::galaxy)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxy_state::galaxy_mem);
- m_maincpu->set_vblank_int("screen", FUNC(galaxy_state::galaxy_interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(galaxy_state::galaxy_irq_callback));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(galaxy_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", galaxy_state, galaxy_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(galaxy_state,galaxy_irq_callback)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_PALETTE("palette")
MCFG_MACHINE_RESET_OVERRIDE(galaxy_state, galaxy )
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(50);
- m_screen->set_palette("palette");
- m_screen->set_size(384, 212);
- m_screen->set_visarea(0, 384-1, 0, 208-1);
- m_screen->set_screen_update(FUNC(galaxy_state::screen_update_galaxy));
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_galaxy);
+ MCFG_SCREEN_SIZE(384, 212)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 208-1)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxy_state, screen_update_galaxy)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_galaxy)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* snapshot */
- MCFG_SNAPSHOT_ADD("snapshot", galaxy_state, galaxy, "gal")
+ MCFG_SNAPSHOT_ADD("snapshot", galaxy_state, galaxy, "gal", 0)
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(gtp_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
- m_cassette->set_interface("galaxy_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(gtp_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
+ MCFG_CASSETTE_INTERFACE("galaxy_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("galaxy");
+ MCFG_SOFTWARE_LIST_ADD("cass_list","galaxy")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("6K").set_extra_options("2K,22K,38K,54K");
@@ -215,39 +216,40 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(galaxy_state::galaxyp)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxy_state::galaxyp_mem);
- m_maincpu->set_addrmap(AS_IO, &galaxy_state::galaxyp_io);
- m_maincpu->set_vblank_int("screen", FUNC(galaxy_state::galaxy_interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(galaxy_state::galaxy_irq_callback));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(galaxyp_mem)
+ MCFG_DEVICE_IO_MAP(galaxyp_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", galaxy_state, galaxy_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(galaxy_state,galaxy_irq_callback)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_PALETTE("palette")
MCFG_MACHINE_RESET_OVERRIDE(galaxy_state, galaxyp )
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(50);
- m_screen->set_palette("palette");
- m_screen->set_size(384, 208);
- m_screen->set_visarea(0, 384-1, 0, 208-1);
- m_screen->set_screen_update(FUNC(galaxy_state::screen_update_galaxy));
+ MCFG_SCREEN_SIZE(384, 208)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 208-1)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxy_state, screen_update_galaxy)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* snapshot */
- MCFG_SNAPSHOT_ADD("snapshot", galaxy_state, galaxy, "gal")
+ MCFG_SNAPSHOT_ADD("snapshot", galaxy_state, galaxy, "gal", 0)
/* sound hardware */
SPEAKER(config, "mono").front_center();
AY8910(config, "ay8910", XTAL/4); // FIXME: really no output routes for this AY?
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(gtp_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
- m_cassette->set_interface("galaxy_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(gtp_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
+ MCFG_CASSETTE_INTERFACE("galaxy_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("galaxy");
+ MCFG_SOFTWARE_LIST_ADD("cass_list","galaxy")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("38K");
diff --git a/src/mame/drivers/galeb.cpp b/src/mame/drivers/galeb.cpp
index 7073a7f9860..cc7cd4cf938 100644
--- a/src/mame/drivers/galeb.cpp
+++ b/src/mame/drivers/galeb.cpp
@@ -164,31 +164,31 @@ static INPUT_PORTS_START( galeb )
INPUT_PORTS_END
/* Machine driver */
-void galeb_state::galeb(machine_config &config)
-{
+MACHINE_CONFIG_START(galeb_state::galeb)
/* basic machine hardware */
- M6502(config, m_maincpu, 1000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &galeb_state::galeb_mem);
+ MCFG_DEVICE_ADD("maincpu", M6502, 1000000)
+ MCFG_DEVICE_PROGRAM_MAP(galeb_mem)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(48*8, 16*8);
- screen.set_visarea(0, 48*8-1, 0, 16*8-1);
- screen.set_screen_update(FUNC(galeb_state::screen_update_galeb));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(48*8, 16*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 48*8-1, 0, 16*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(galeb_state, screen_update_galeb)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_galeb);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_galeb )
PALETTE(config, m_palette, palette_device::MONOCHROME);
+
/* audio hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.0625); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.0625) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( galeb )
diff --git a/src/mame/drivers/galgames.cpp b/src/mame/drivers/galgames.cpp
index f584bc10fe7..58b8c7f7aaf 100644
--- a/src/mame/drivers/galgames.cpp
+++ b/src/mame/drivers/galgames.cpp
@@ -67,16 +67,13 @@ class galgames_cart_device : public device_t, public device_rom_interface
{
public:
// construction/destruction
-
- galgames_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint8_t cart)
- : galgames_cart_device(mconfig, GALGAMES_CART, tag, owner, (uint32_t)0)
- {
- set_cart(cart);
- }
+ galgames_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ galgames_cart_device(mconfig, GALGAMES_CART, tag, owner, clock)
+ { }
// static configuration
- void set_cart(uint8_t cart) { m_cart = cart; }
- void set_pic_bits(int clk, int in, int out, int dis);
+ static void static_set_cart(device_t &device, uint8_t cart) { downcast<galgames_cart_device &>(device).m_cart = cart; }
+ static void static_set_pic_bits(device_t &device, int clk, int in, int out, int dis) { downcast<galgames_cart_device &>(device).set_pic_bits(clk, in, out, dis); }
// ROM
DECLARE_READ16_MEMBER(rom_r) { return read_word(offset*2); }
@@ -125,6 +122,7 @@ protected:
uint8_t m_pic_iobits, m_pic_data, m_pic_data_rdy, m_pic_data_bit, m_pic_data_clk;
uint8_t m_pic_clk_mask, m_pic_in_mask, m_pic_out_mask, m_pic_dis_mask;
+ void set_pic_bits(int clk, int in, int out, int dis);
void log_cart_comm(const char *text, uint8_t data);
void pic_comm_reset();
};
@@ -132,6 +130,17 @@ protected:
// device type definition
DEFINE_DEVICE_TYPE(GALGAMES_CART, galgames_cart_device, "starpak_cart", "Galaxy Games StarPak Cartridge")
+#define MCFG_GALGAMES_CART_INDEX(_cart) \
+ galgames_cart_device::static_set_cart(*device, _cart);
+
+#define MCFG_GALGAMES_PIC_BITS(_clk, _in, _out, _dis) \
+ galgames_cart_device::static_set_pic_bits(*device, _clk, _in, _out, _dis);
+
+#define MCFG_GALGAMES_EMPTY_CART_ADD(_tag, _cart) \
+ MCFG_DEVICE_ADD(_tag, GALGAMES_CART, 0) \
+ MCFG_GALGAMES_CART_INDEX(_cart)
+
+
// BIOS "cart"
@@ -139,12 +148,9 @@ class galgames_bios_cart_device : public galgames_cart_device
{
public:
// construction/destruction
- galgames_bios_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint8_t cart)
- : galgames_cart_device(mconfig, GALGAMES_BIOS_CART, tag, owner, (uint32_t)0)
- {
- set_cart(cart);
- }
-
+ galgames_bios_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ galgames_cart_device(mconfig, GALGAMES_BIOS_CART, tag, owner, clock)
+ { }
protected:
// device-level overrides
virtual void device_add_mconfig(machine_config &config) override;
@@ -157,6 +163,11 @@ void galgames_bios_cart_device::device_add_mconfig(machine_config &config)
EEPROM_93C76_8BIT(config, "eeprom");
}
+#define MCFG_GALGAMES_BIOS_CART_ADD(_tag, _cart) \
+ MCFG_DEVICE_ADD(_tag, GALGAMES_BIOS_CART, 0) \
+ MCFG_GALGAMES_CART_INDEX(_cart)
+
+
// STARPAK2 cart
@@ -164,13 +175,9 @@ class galgames_starpak2_cart_device : public galgames_cart_device
{
public:
// construction/destruction
- galgames_starpak2_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint8_t cart)
- : galgames_cart_device(mconfig, GALGAMES_STARPAK2_CART, tag, owner, (uint32_t)0)
- {
- set_cart(cart);
- set_pic_bits(5, 4, 2, 1);
- }
-
+ galgames_starpak2_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ galgames_cart_device(mconfig, GALGAMES_STARPAK2_CART, tag, owner, clock)
+ { }
protected:
// device-level overrides
virtual void device_add_mconfig(machine_config &config) override;
@@ -187,6 +194,12 @@ void galgames_starpak2_cart_device::device_add_mconfig(machine_config &config)
EEPROM_93C76_8BIT(config, "eeprom");
}
+#define MCFG_GALGAMES_STARPAK2_CART_ADD(_tag, _cart) \
+ MCFG_DEVICE_ADD(_tag, GALGAMES_STARPAK2_CART, 0) \
+ MCFG_GALGAMES_CART_INDEX(_cart) \
+ MCFG_GALGAMES_PIC_BITS(5, 4, 2, 1)
+
+
// STARPAK3 cart
@@ -194,13 +207,9 @@ class galgames_starpak3_cart_device : public galgames_cart_device
{
public:
// construction/destruction
- galgames_starpak3_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint8_t cart)
- : galgames_cart_device(mconfig, GALGAMES_STARPAK3_CART, tag, owner, (uint32_t)0)
- {
- set_cart(cart);
- set_pic_bits(0, 2, 3, 4);
- }
-
+ galgames_starpak3_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ galgames_cart_device(mconfig, GALGAMES_STARPAK3_CART, tag, owner, clock)
+ { }
protected:
// device-level overrides
virtual void device_add_mconfig(machine_config &config) override;
@@ -218,6 +227,12 @@ void galgames_starpak3_cart_device::device_add_mconfig(machine_config &config)
EEPROM_93C76_8BIT(config, "eeprom");
}
+#define MCFG_GALGAMES_STARPAK3_CART_ADD(_tag, _cart) \
+ MCFG_DEVICE_ADD(_tag, GALGAMES_STARPAK3_CART, 0) \
+ MCFG_GALGAMES_CART_INDEX(_cart) \
+ MCFG_GALGAMES_PIC_BITS(0, 2, 3, 4)
+
+
/***************************************************************************
@@ -300,6 +315,9 @@ device_memory_interface::space_config_vector galgames_slot_device::memory_space_
// device type definition
DEFINE_DEVICE_TYPE(GALGAMES_SLOT, galgames_slot_device, "starpak_slot", "Galaxy Games Slot")
+#define MCFG_GALGAMES_SLOT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, GALGAMES_SLOT, 0)
+
// CART implementation
galgames_cart_device::galgames_cart_device(
@@ -963,63 +981,60 @@ int galgames_compute_addr(uint16_t reg_low, uint16_t reg_mid, uint16_t reg_high)
return reg_low | (reg_mid << 16);
}
-void galgames_state::galgames_base(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(24'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &galgames_state::galgames_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(galgames_state::scanline_interrupt), "screen", 0, 1);
+MACHINE_CONFIG_START(galgames_state::galgames_base)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(galgames_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", galgames_state, scanline_interrupt, "screen", 0, 1)
WATCHDOG_TIMER(config, "watchdog");
- GALGAMES_SLOT(config, m_slot, 0);
- GALGAMES_BIOS_CART(config, "cart0", 0);
+ MCFG_GALGAMES_SLOT_ADD("slot")
+ MCFG_GALGAMES_BIOS_CART_ADD( "cart0", 0)
// video hardware
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(400, 256);
- m_screen->set_visarea(0, 400-1, 0, 256-1);
- m_screen->set_screen_update(FUNC(galgames_state::screen_update));
- m_screen->set_palette(m_palette);
-
- CESBLIT(config, m_blitter, XTAL(24'000'000), m_screen);
- m_blitter->set_addrmap(AS_PROGRAM, &galgames_state::blitter_map);
- m_blitter->set_compute_addr(galgames_compute_addr);
- m_blitter->irq_callback().set(FUNC(galgames_state::blitter_irq_callback));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(400, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(galgames_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_CESBLIT_ADD("blitter", "screen", XTAL(24'000'000))
+ MCFG_CESBLIT_MAP(blitter_map)
+ MCFG_CESBLIT_COMPUTE_ADDR(galgames_compute_addr)
+ MCFG_CESBLIT_IRQ_CB(WRITELINE(*this, galgames_state, blitter_irq_callback))
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x1000); // only 0x100 used
// sound hardware
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(24'000'000) / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 not verified (voices in galgame4 seem ok)
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(24'000'000) / 16, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified (voices in galgame4 seem ok)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void galgames_state::galgbios(machine_config &config)
-{
+MACHINE_CONFIG_START(galgames_state::galgbios)
galgames_base(config);
- GALGAMES_CART(config, "cart1", 1);
- GALGAMES_CART(config, "cart2", 2);
- GALGAMES_CART(config, "cart3", 3);
- GALGAMES_CART(config, "cart4", 4);
-}
+ MCFG_GALGAMES_EMPTY_CART_ADD("cart1", 1)
+ MCFG_GALGAMES_EMPTY_CART_ADD("cart2", 2)
+ MCFG_GALGAMES_EMPTY_CART_ADD("cart3", 3)
+ MCFG_GALGAMES_EMPTY_CART_ADD("cart4", 4)
+MACHINE_CONFIG_END
-void galgames_state::galgame2(machine_config &config)
-{
+MACHINE_CONFIG_START(galgames_state::galgame2)
galgames_base(config);
- GALGAMES_STARPAK2_CART(config, "cart1", 1);
- GALGAMES_CART(config, "cart2", 2);
- GALGAMES_CART(config, "cart3", 3);
- GALGAMES_CART(config, "cart4", 4);
-}
+ MCFG_GALGAMES_STARPAK2_CART_ADD("cart1", 1)
+ MCFG_GALGAMES_EMPTY_CART_ADD("cart2", 2)
+ MCFG_GALGAMES_EMPTY_CART_ADD("cart3", 3)
+ MCFG_GALGAMES_EMPTY_CART_ADD("cart4", 4)
+MACHINE_CONFIG_END
-void galgames_state::galgame3(machine_config &config)
-{
+MACHINE_CONFIG_START(galgames_state::galgame3)
galgames_base(config);
- GALGAMES_STARPAK3_CART(config, "cart1", 1);
- GALGAMES_CART(config, "cart2", 2);
- GALGAMES_CART(config, "cart3", 3);
- GALGAMES_CART(config, "cart4", 4);
-}
+ MCFG_GALGAMES_STARPAK3_CART_ADD("cart1", 1)
+ MCFG_GALGAMES_EMPTY_CART_ADD("cart2", 2)
+ MCFG_GALGAMES_EMPTY_CART_ADD("cart3", 3)
+ MCFG_GALGAMES_EMPTY_CART_ADD("cart4", 4)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/galivan.cpp b/src/mame/drivers/galivan.cpp
index 1bcf2709313..75a20127ed5 100644
--- a/src/mame/drivers/galivan.cpp
+++ b/src/mame/drivers/galivan.cpp
@@ -429,33 +429,33 @@ MACHINE_RESET_MEMBER(galivan_state,ninjemak)
m_ninjemak_dispdisable = 0;
}
-void galivan_state::galivan(machine_config &config)
-{
+MACHINE_CONFIG_START(galivan_state::galivan)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/2); /* 6 MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &galivan_state::galivan_map);
- m_maincpu->set_addrmap(AS_IO, &galivan_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(galivan_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* 6 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(galivan_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", galivan_state, irq0_line_hold)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(8'000'000)/2)); /* 4 MHz? */
- audiocpu.set_addrmap(AS_PROGRAM, &galivan_state::sound_map);
- audiocpu.set_addrmap(AS_IO, &galivan_state::sound_io_map);
- audiocpu.set_periodic_int(FUNC(galivan_state::irq0_line_hold), attotime::from_hz(XTAL(8'000'000)/2/512)); // ?
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(8'000'000)/2) /* 4 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(galivan_state, irq0_line_hold, XTAL(8'000'000)/2/512) // ?
MCFG_MACHINE_START_OVERRIDE(galivan_state,galivan)
MCFG_MACHINE_RESET_OVERRIDE(galivan_state,galivan)
/* video hardware */
- BUFFERED_SPRITERAM8(config, m_spriteram);
+ MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(galivan_state::screen_update_galivan));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(galivan_state, screen_update_galivan)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_galivan);
PALETTE(config, m_palette, FUNC(galivan_state::galivan_palette), 8*16+16*16+256*16, 256);
@@ -467,52 +467,53 @@ void galivan_state::galivan(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- YM3526(config, "ymsnd", XTAL(8'000'000)/2).add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD("ymsnd", YM3526, XTAL(8'000'000)/2)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
- DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void dangarj_state::dangarj(machine_config &config)
-{
+MACHINE_CONFIG_START(dangarj_state::dangarj)
galivan(config);
- m_maincpu->set_addrmap(AS_IO, &dangarj_state::dangarj_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(dangarj_io_map)
NB1412M2(config, m_prot, XTAL(8'000'000)); // divided by 2 maybe
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(galivan_state::ninjemak)
-void galivan_state::ninjemak(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/2); /* 6 MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &galivan_state::ninjemak_map);
- m_maincpu->set_addrmap(AS_IO, &galivan_state::ninjemak_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(galivan_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* 6 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(ninjemak_map)
+ MCFG_DEVICE_IO_MAP(ninjemak_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", galivan_state, irq0_line_hold)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(8'000'000)/2)); /* 4 MHz? */
- audiocpu.set_addrmap(AS_PROGRAM, &galivan_state::sound_map);
- audiocpu.set_addrmap(AS_IO, &galivan_state::sound_io_map);
- audiocpu.set_periodic_int(FUNC(galivan_state::irq0_line_hold), attotime::from_hz(XTAL(8'000'000)/2/512)); // ?
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(8'000'000)/2) /* 4 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(galivan_state, irq0_line_hold, XTAL(8'000'000)/2/512) // ?
MCFG_MACHINE_START_OVERRIDE(galivan_state,ninjemak)
MCFG_MACHINE_RESET_OVERRIDE(galivan_state,ninjemak)
- NB1414M4(config, m_nb1414m4, 0);
+ MCFG_DEVICE_ADD("nb1414m4", NB1414M4, 0)
/* video hardware */
- BUFFERED_SPRITERAM8(config, m_spriteram);
+ MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(galivan_state::screen_update_ninjemak));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(galivan_state, screen_update_ninjemak)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_galivan);
PALETTE(config, m_palette, FUNC(galivan_state::galivan_palette), 8*16+16*16+256*16, 256);
@@ -524,22 +525,22 @@ void galivan_state::ninjemak(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- YM3526(config, "ymsnd", XTAL(8'000'000)/2).add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD("ymsnd", YM3526, XTAL(8'000'000)/2)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
- DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void galivan_state::youmab(machine_config &config)
-{
+MACHINE_CONFIG_START(galivan_state::youmab)
ninjemak(config);
- config.device_remove("nb1414m4");
-}
+ MCFG_DEVICE_REMOVE("nb1414m4")
+MACHINE_CONFIG_END
/***************************************************************************
Game driver(s)
diff --git a/src/mame/drivers/galpani2.cpp b/src/mame/drivers/galpani2.cpp
index 2f35d25cde9..dde79ee7b85 100644
--- a/src/mame/drivers/galpani2.cpp
+++ b/src/mame/drivers/galpani2.cpp
@@ -622,27 +622,27 @@ TIMER_DEVICE_CALLBACK_MEMBER(galpani2_state::galpani2_interrupt2)
m_subcpu->set_input_line(3, HOLD_LINE);
}
-void galpani2_state::galpani2(machine_config &config)
-{
+MACHINE_CONFIG_START(galpani2_state::galpani2)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(27'000'000)/2); /* Confirmed on galpani2i PCB */
- m_maincpu->set_addrmap(AS_PROGRAM, &galpani2_state::galpani2_mem1);
- TIMER(config, "m_scantimer").configure_scanline(FUNC(galpani2_state::galpani2_interrupt1), "screen", 0, 1);
- //config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(27'000'000)/2) /* Confirmed on galpani2i PCB */
+ MCFG_DEVICE_PROGRAM_MAP(galpani2_mem1)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("m_scantimer", galpani2_state, galpani2_interrupt1, "screen", 0, 1)
+ //MCFG_QUANTUM_PERFECT_CPU("maincpu")
- M68000(config, m_subcpu, XTAL(27'000'000)/2); /* Confirmed on galpani2i PCB */
- m_subcpu->set_addrmap(AS_PROGRAM, &galpani2_state::galpani2_mem2);
- TIMER(config, "s_scantimer").configure_scanline(FUNC(galpani2_state::galpani2_interrupt2), "screen", 0, 1);
+ MCFG_DEVICE_ADD("sub", M68000, XTAL(27'000'000)/2) /* Confirmed on galpani2i PCB */
+ MCFG_DEVICE_PROGRAM_MAP(galpani2_mem2)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("s_scantimer", galpani2_state, galpani2_interrupt2, "screen", 0, 1)
EEPROM_93C46_16BIT(config, "eeprom");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(320, 256);
- screen.set_visarea(0, 320-1, 0, 256-1-16);
- screen.set_screen_update(FUNC(galpani2_state::screen_update_galpani2));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(320, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1-16)
+ MCFG_SCREEN_UPDATE_DRIVER(galpani2_state, screen_update_galpani2)
GFXDECODE(config, "gfxdecode", m_palette, gfx_galpani2);
PALETTE(config, m_palette).set_format(palette_device::xGRB_555, 0x4000); // sprites
@@ -657,10 +657,12 @@ void galpani2_state::galpani2(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- OKIM6295(config, "oki1", XTAL(20'000'000)/10, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "lspeaker", 1.0); /* Confirmed on galpani2i PCB */
+ MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(20'000'000)/10, okim6295_device::PIN7_HIGH) /* Confirmed on galpani2i PCB */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- OKIM6295(config, m_oki2, XTAL(20'000'000)/10, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "rspeaker", 1.0); /* Confirmed on galpani2i PCB */
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(20'000'000)/10, okim6295_device::PIN7_HIGH) /* Confirmed on galpani2i PCB */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/galpani3.cpp b/src/mame/drivers/galpani3.cpp
index aa1d2cc619f..8e04a9e25f5 100644
--- a/src/mame/drivers/galpani3.cpp
+++ b/src/mame/drivers/galpani3.cpp
@@ -450,43 +450,45 @@ void galpani3_state::galpani3_map(address_map &map)
}
-void galpani3_state::galpani3(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(28'636'363)/2); // Confirmed from PCB
- m_maincpu->set_addrmap(AS_PROGRAM, &galpani3_state::galpani3_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(galpani3_state::galpani3_vblank), "screen", 0, 1);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 40*8-1, 0*8, 30*8-1);
- //screen.set_visarea(0*8, 64*8-1, 0*8, 64*8-1);
- screen.set_screen_update(FUNC(galpani3_state::screen_update_galpani3));
+MACHINE_CONFIG_START(galpani3_state::galpani3)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(28'636'363)/2) // Confirmed from PCB
+ MCFG_DEVICE_PROGRAM_MAP(galpani3_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", galpani3_state, galpani3_vblank, "screen", 0, 1)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
+ //MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 64*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(galpani3_state, screen_update_galpani3)
EEPROM_93C46_16BIT(config, "eeprom");
WATCHDOG_TIMER(config, "watchdog");
- KANEKO_TOYBOX(config, "toybox", "eeprom", "DSW1", "mcuram", "mcudata");
+ MCFG_DEVICE_ADD("toybox", KANEKO_TOYBOX, "eeprom", "DSW1", "mcuram", "mcudata")
PALETTE(config, m_palette).set_format(palette_device::xGRB_555, 0x4000);
- SKNS_SPRITE(config, m_spritegen, 0);
+ MCFG_DEVICE_ADD("spritegen", SKNS_SPRITE, 0)
- KANEKO_GRAP2(config, m_grap2[0], 0).set_device_rom_tag("rlebg");
+ MCFG_DEVICE_ADD("grap2_0", KANEKO_GRAP2, 0)
+ MCFG_DEVICE_ROM("rlebg")
- KANEKO_GRAP2(config, m_grap2[1], 0).set_device_rom_tag("rlebg");
+ MCFG_DEVICE_ADD("grap2_1", KANEKO_GRAP2, 0)
+ MCFG_DEVICE_ROM("rlebg")
- KANEKO_GRAP2(config, m_grap2[2], 0).set_device_rom_tag("rlebg");
+ MCFG_DEVICE_ADD("grap2_2", KANEKO_GRAP2, 0)
+ MCFG_DEVICE_ROM("rlebg")
/* sound hardware */
SPEAKER(config, "mono").front_center();
- ymz280b_device &ymz(YMZ280B(config, "ymz", XTAL(33'333'000) / 2)); // Confirmed from PCB
- ymz.add_route(0, "mono", 1.0);
- ymz.add_route(1, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, XTAL(33'333'000) / 2) // Confirmed from PCB
+ MCFG_SOUND_ROUTE(0, "mono", 1.0)
+ MCFG_SOUND_ROUTE(1, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( galpani3 ) /* All game text in English */
diff --git a/src/mame/drivers/galpanic.cpp b/src/mame/drivers/galpanic.cpp
index b4a5aee7345..382c04155dd 100644
--- a/src/mame/drivers/galpanic.cpp
+++ b/src/mame/drivers/galpanic.cpp
@@ -232,24 +232,24 @@ static GFXDECODE_START( gfx_galpanic )
GFXDECODE_END
-void galpanic_state::galpanic(machine_config &config)
-{
+MACHINE_CONFIG_START(galpanic_state::galpanic)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(12'000'000)); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &galpanic_state::galpanic_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(galpanic_state::scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(12'000'000)) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(galpanic_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", galpanic_state, scanline, "screen", 0, 1)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */);
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 256-1, 0, 224-1);
- m_screen->set_screen_update(FUNC(galpanic_state::screen_update));
- m_screen->screen_vblank().set(FUNC(galpanic_state::screen_vblank));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 224-1)
+ MCFG_SCREEN_UPDATE_DRIVER(galpanic_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, galpanic_state, screen_vblank))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_galpanic);
// fg palette RAM, bit 0 seems to be a transparency flag for the front bitmap
@@ -262,23 +262,23 @@ void galpanic_state::galpanic(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(12'000'000)/6, okim6295_device::PIN7_LOW)); /* verified on pcb */
- oki.set_addrmap(0, &galpanic_state::galpanic_oki_map);
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(12'000'000)/6, okim6295_device::PIN7_LOW) /* verified on pcb */
+ MCFG_DEVICE_ADDRESS_MAP(0, galpanic_oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void galpanic_state::galpanica(machine_config &config)
-{
+MACHINE_CONFIG_START(galpanic_state::galpanica)
galpanic(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &galpanic_state::galpanica_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(galpanica_map)
/* basic machine hardware */
KANEKO_HIT(config, "calc1_mcu").set_type(0);
/* arm watchdog */
subdevice<watchdog_timer_device>("watchdog")->set_time(attotime::from_seconds(3)); /* a guess, and certainly wrong */
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/galspnbl.cpp b/src/mame/drivers/galspnbl.cpp
index 266975edcf0..5fda8a45d87 100644
--- a/src/mame/drivers/galspnbl.cpp
+++ b/src/mame/drivers/galspnbl.cpp
@@ -217,12 +217,12 @@ void galspnbl_state::machine_start()
void galspnbl_state::galspnbl(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(12'000'000)); /* 12 MHz ??? - Use value from Tecmo's Super Pinball Action - NEEDS VERIFICATION!! */
+ M68000(config, m_maincpu, XTAL(12'000'000)); /* 12 MHz ??? - Use value from Tecmo's Super Pinball Action - NEEDS VERIFICATION!! */
m_maincpu->set_addrmap(AS_PROGRAM, &galspnbl_state::main_map);
m_maincpu->set_vblank_int("screen", FUNC(galspnbl_state::irq3_line_hold)); /* also has vector for 6, but it does nothing */
- Z80(config, m_audiocpu, XTAL(4'000'000)); /* 4 MHz ??? - Use value from Tecmo's Super Pinball Action - NEEDS VERIFICATION!! */
- m_audiocpu->set_addrmap(AS_PROGRAM, &galspnbl_state::audio_map); /* NMI is caused by the main CPU */
+ Z80(config, m_audiocpu, XTAL(4'000'000)); /* 4 MHz ??? - Use value from Tecmo's Super Pinball Action - NEEDS VERIFICATION!! */
+ m_audiocpu->set_addrmap(AS_PROGRAM, &galspnbl_state::audio_map); /* NMI is caused by the main CPU */
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
diff --git a/src/mame/drivers/gamate.cpp b/src/mame/drivers/gamate.cpp
index ece663eb042..b94b5160c3d 100644
--- a/src/mame/drivers/gamate.cpp
+++ b/src/mame/drivers/gamate.cpp
@@ -94,14 +94,14 @@ READ8_MEMBER( gamate_state::gamate_nmi_r )
READ8_MEMBER(gamate_state::sound_r)
{
- m_ay->address_w(offset);
- return m_ay->data_r();
+ m_ay->address_w(space, 0, offset);
+ return m_ay->data_r(space, 0);
}
WRITE8_MEMBER(gamate_state::sound_w)
{
- m_ay->address_w(offset);
- m_ay->data_w(data);
+ m_ay->address_w(space, 0, offset);
+ m_ay->data_w(space, 0, data);
}
WRITE8_MEMBER(gamate_state::write_cart)
@@ -176,10 +176,9 @@ TIMER_CALLBACK_MEMBER(gamate_state::gamate_timer2)
timer2->reset(m_maincpu->cycles_to_attotime(32768/2));
}
-void gamate_state::gamate(machine_config &config)
-{
- M6502(config, m_maincpu, 4433000/2); // NCR 65CX02
- m_maincpu->set_addrmap(AS_PROGRAM, &gamate_state::gamate_mem);
+MACHINE_CONFIG_START(gamate_state::gamate)
+ MCFG_DEVICE_ADD("maincpu", M6502, 4433000/2) // NCR 65CX02
+ MCFG_DEVICE_PROGRAM_MAP(gamate_mem)
GAMATE_VIDEO(config, "video", 0);
@@ -192,10 +191,10 @@ void gamate_state::gamate(machine_config &config)
m_ay->add_route(2, "lspeaker", 0.25);
m_ay->add_route(2, "rspeaker", 0.25);
- GAMATE_CART_SLOT(config, m_cartslot, gamate_cart, nullptr);
+ MCFG_GAMATE_CARTRIDGE_ADD("cartslot", gamate_cart, nullptr)
- SOFTWARE_LIST(config, "cart_list").set_original("gamate");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list","gamate")
+MACHINE_CONFIG_END
/* ROM notes:
diff --git a/src/mame/drivers/gambl186.cpp b/src/mame/drivers/gambl186.cpp
index 96c7bd1b3fa..fb24cd27511 100644
--- a/src/mame/drivers/gambl186.cpp
+++ b/src/mame/drivers/gambl186.cpp
@@ -472,25 +472,26 @@ INPUT_PORTS_END
-void gambl186_state::gambl186(machine_config &config)
-{
- I80186(config, m_maincpu, XTAL(40'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &gambl186_state::gambl186_map);
- m_maincpu->set_addrmap(AS_IO, &gambl186_state::gambl186_io);
+MACHINE_CONFIG_START(gambl186_state::gambl186)
+ MCFG_DEVICE_ADD("maincpu", I80186, XTAL(40'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(gambl186_map)
+ MCFG_DEVICE_IO_MAP(gambl186_io)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(25'174'800),900,0,640,526,0,480);
- screen.set_screen_update("vga", FUNC(cirrus_gd5428_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480)
+ MCFG_SCREEN_UPDATE_DEVICE("vga", cirrus_gd5428_device, screen_update)
- CIRRUS_GD5428(config, "vga", 0).set_screen("screen");
+ MCFG_DEVICE_ADD("vga", CIRRUS_GD5428, 0)
+ MCFG_VIDEO_SET_SCREEN("screen")
/* sound hardware */
SPEAKER(config, "mono").front_center();
- UPD7759(config, m_upd7759);
- m_upd7759->add_route(ALL_OUTPUTS, "mono", 0.75);
-}
+ MCFG_DEVICE_ADD("7759", UPD7759)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/gamecom.cpp b/src/mame/drivers/gamecom.cpp
index 480840cd550..e0747c767d4 100644
--- a/src/mame/drivers/gamecom.cpp
+++ b/src/mame/drivers/gamecom.cpp
@@ -263,18 +263,18 @@ MACHINE_CONFIG_START(gamecom_state::gamecom)
m_maincpu->timer_cb().set(FUNC(gamecom_state::gamecom_update_timers));
m_maincpu->set_vblank_int("screen", FUNC(gamecom_state::gamecom_interrupt));
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
//NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_LCD);
- m_screen->set_refresh_hz(59.732155);
- m_screen->set_vblank_time(500);
- m_screen->set_screen_update(FUNC(gamecom_state::screen_update));
- m_screen->set_size(200, 160);
- m_screen->set_visarea_full();
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE( 59.732155 )
+ MCFG_SCREEN_VBLANK_TIME(500)
+ MCFG_SCREEN_UPDATE_DRIVER(gamecom_state, screen_update)
+ MCFG_SCREEN_SIZE( 200, 160 )
+ MCFG_SCREEN_VISIBLE_AREA( 0, 199, 0, 159 )
+ MCFG_SCREEN_PALETTE("palette")
config.set_default_layout(layout_gamecom);
PALETTE(config, "palette", FUNC(gamecom_state::gamecom_palette), 5);
@@ -282,13 +282,13 @@ MACHINE_CONFIG_START(gamecom_state::gamecom)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
/* TODO: much more complex than this */
- DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC (Digital audio)
- DAC_4BIT_R2R(config, m_dac0, 0).add_route(ALL_OUTPUTS, "speaker", 0.05); // unknown DAC (Frequency modulation)
- DAC_4BIT_R2R(config, m_dac1, 0).add_route(ALL_OUTPUTS, "speaker", 0.05); // unknown DAC (Frequency modulation)
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac0", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac0", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC (Digital audio)
+ MCFG_DEVICE_ADD("dac0", DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.05) // unknown DAC (Frequency modulation)
+ MCFG_DEVICE_ADD("dac1", DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.05) // unknown DAC (Frequency modulation)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac0", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac0", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
/* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cartslot1", generic_linear_slot, "gamecom_cart")
@@ -299,7 +299,7 @@ MACHINE_CONFIG_START(gamecom_state::gamecom)
MCFG_GENERIC_EXTENSIONS("bin,tgc")
MCFG_GENERIC_LOAD(gamecom_state, gamecom_cart2)
- SOFTWARE_LIST(config, "cart_list").set_original("gamecom");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","gamecom")
MACHINE_CONFIG_END
ROM_START( gamecom )
@@ -311,4 +311,4 @@ ROM_START( gamecom )
ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-CONS( 1997, gamecom, 0, 0, gamecom, gamecom, gamecom_state, init_gamecom, "Tiger", "Game.com", MACHINE_IMPERFECT_SOUND)
+CONS( 1997, gamecom, 0, 0, gamecom, gamecom, gamecom_state, init_gamecom, "Tiger", "Game.com", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
diff --git a/src/mame/drivers/gamecstl.cpp b/src/mame/drivers/gamecstl.cpp
index 4e9c30d33f5..45a9ffbc1da 100644
--- a/src/mame/drivers/gamecstl.cpp
+++ b/src/mame/drivers/gamecstl.cpp
@@ -446,10 +446,10 @@ void gamecstl_state::machine_reset()
MACHINE_CONFIG_START(gamecstl_state::gamecstl)
/* basic machine hardware */
- PENTIUM3(config, m_maincpu, 200000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &gamecstl_state::gamecstl_map);
- m_maincpu->set_addrmap(AS_IO, &gamecstl_state::gamecstl_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", PENTIUM3, 200000000)
+ MCFG_DEVICE_PROGRAM_MAP(gamecstl_map)
+ MCFG_DEVICE_IO_MAP(gamecstl_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
pcat_common(config);
@@ -461,16 +461,18 @@ MACHINE_CONFIG_START(gamecstl_state::gamecstl)
ide.irq_handler().set("pic8259_2", FUNC(pic8259_device::ir6_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(640, 480);
- screen.set_visarea(0, 639, 0, 199);
- screen.set_screen_update(FUNC(gamecstl_state::screen_update_gamecstl));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cga);
- PALETTE(config, m_palette).set_entries(16);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 199)
+ MCFG_SCREEN_UPDATE_DRIVER(gamecstl_state, screen_update_gamecstl)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cga)
+ MCFG_PALETTE_ADD("palette", 16)
+
+
MACHINE_CONFIG_END
void gamecstl_state::init_gamecstl()
diff --git a/src/mame/drivers/gamecube.cpp b/src/mame/drivers/gamecube.cpp
index 3917e09d375..cf6884285c9 100644
--- a/src/mame/drivers/gamecube.cpp
+++ b/src/mame/drivers/gamecube.cpp
@@ -142,11 +142,10 @@ void gamecube_state::machine_reset()
// MACHINE DEFINITIONS
//**************************************************************************
-void gamecube_state::gc(machine_config &config)
-{
- PPC603(config, m_cpu, 485000000 / 100); // 485 MHz IBM "Gekko" (750CXe/750FX based)
- m_cpu->set_addrmap(AS_PROGRAM, &gamecube_state::ppc_mem);
-}
+MACHINE_CONFIG_START(gamecube_state::gc)
+ MCFG_DEVICE_ADD("maincpu", PPC603, 485000000 / 100) // 485 MHz IBM "Gekko" (750CXe/750FX based)
+ MCFG_DEVICE_PROGRAM_MAP(ppc_mem)
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/gameking.cpp b/src/mame/drivers/gameking.cpp
index 86dbffe3875..5870b1130ff 100644
--- a/src/mame/drivers/gameking.cpp
+++ b/src/mame/drivers/gameking.cpp
@@ -288,17 +288,17 @@ INTERRUPT_GEN_MEMBER(gameking_state::gameking_frame_int) // guess to get over bi
MACHINE_CONFIG_START(gameking_state::gameking)
/* basic machine hardware */
- R65C02(config, m_maincpu, 6000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &gameking_state::gameking_mem);
- m_maincpu->set_vblank_int("screen", FUNC(gameking_state::gameking_frame_int));
+ MCFG_DEVICE_ADD("maincpu", R65C02, 6000000)
+ MCFG_DEVICE_PROGRAM_MAP(gameking_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gameking_state, gameking_frame_int)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(60);
- screen.set_size(48, 32);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(gameking_state::screen_update_gameking));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(48, 32)
+ MCFG_SCREEN_VISIBLE_AREA(0, 48-1, 0, 32-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gameking_state, screen_update_gameking)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(gameking_state::gameking_palette), ARRAY_LENGTH(gameking_pens));
@@ -308,18 +308,16 @@ MACHINE_CONFIG_START(gameking_state::gameking)
MCFG_GENERIC_LOAD(gameking_state, gameking_cart)
MACHINE_CONFIG_END
-void gameking_state::gameking1(machine_config &config)
-{
+MACHINE_CONFIG_START(gameking_state::gameking1)
gameking(config);
- SOFTWARE_LIST(config, "cart_list").set_original("gameking");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "gameking")
+MACHINE_CONFIG_END
-void gameking_state::gameking3(machine_config &config)
-{
+MACHINE_CONFIG_START(gameking_state::gameking3)
gameking(config);
- SOFTWARE_LIST(config, "cart_list").set_original("gameking");
- SOFTWARE_LIST(config, "cart_list_3").set_original("gameking3");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "gameking")
+ MCFG_SOFTWARE_LIST_ADD("cart_list_3", "gameking3")
+MACHINE_CONFIG_END
ROM_START(gameking)
diff --git a/src/mame/drivers/gamemachine.cpp b/src/mame/drivers/gamemachine.cpp
deleted file mode 100644
index 7f4ae26cdd9..00000000000
--- a/src/mame/drivers/gamemachine.cpp
+++ /dev/null
@@ -1,419 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:Sean Riddle, Couriersud
-/******************************************************************************
-
-Waddingtons 2001: The Game Machine
-
-It's a tabletop electronic game machine + calculator.
-It was possibly created by VTech, but they didn't distribute it by themselves
-until later in 1980 as the Computer Game System. There's also a handheld version
-"Mini Game Machine". VTech later made a sequel "Game Machine 2" with 5 games.
-
-hardware notes:
-- Mostek MK3870 MCU, 2KB internal ROM
-- 12 digits 7seg VFD panel
-- MC1455P(555 timer) + bunch of discrete components for sound
-
-TODO:
-- MCU frequency was measured approx 2.1MHz on its XTL2 pin, but considering that
- the MK3870 has an internal /2 divider, this is way too slow when compared to
- video references of the game
-
-*******************************************************************************
-
-After boot, press a number to start a game:
-0: 4 Function Calculator (not a game)
-1: Shooting Gallery
-2: Black Jack
-3: Code Hunter
-4: Grand Prix
-
-Screen and keypad overlays were provided for each game, though the default keypad
-labels already show the alternate functions.
-
-keypad reference (mapped to PC keyboard A-row and Z-row by default)
-
-Calculator:
- [RET] [MS ] [MR ] [+/-] [. ] [+= ] [-= ] [x ] [/ ] [CL ]
- [0 ] [1 ] [2 ] [3 ] [4 ] [5 ] [6 ] [7 ] [8 ] [9 ]
-
-Shooting Gallery:
- [RET] [Cyc] [Zig] [Rnd] [ ] [ ] [ ] [ ] [ ] [ ] * Cyclic, Zigzag, Random
- [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] * + any of 20 buttons for shooting target
-
-Black Jack:
- [RET] [Dl ] [ ] [ ] [ ] [ ] [ ] [ ] [Hit] [Stn] * Deal, Hit, Stand
- [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
-
-Code Hunter:
- [RET] [Sta] [Dis] [ ] [ ] [Ent] [ ] [Crs] [R< ] [R> ] * Start, Display, Enter, Cursor key, Review back, Review ahead
- [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
-
-Grand Prix:
- [RET] [Go ] [ ] [ ] [ ] [ ] [ ] [Up ] [Up ] [Up ]
- [Brk] [Gas] [ ] [ ] [ ] [ ] [ ] [Dwn] [Dwn] [Dwn]
-
-******************************************************************************/
-
-#include "emu.h"
-#include "cpu/f8/f8.h"
-#include "machine/f3853.h"
-#include "machine/timer.h"
-#include "speaker.h"
-#include "machine/netlist.h"
-#include "netlist/devices/net_lib.h"
-#include "tgm.lh"
-
-/*
- * Netlist below provided under Creative Commons CC0
- */
-
-static NETLIST_START(nl_gamemachine)
-
- /* Standard stuff */
-
- SOLVER(Solver, 48000)
- PARAM(Solver.ACCURACY, 1e-7)
- ANALOG_INPUT(V5, 5)
-
- /* Schematics: http://seanriddle.com/gamemachineaudio.JPG
- *
- * 3870 datasheet: http://nice.kaze.com/MK3870.pdf
- *
- * The 3870 has mask-programmable outputs (page VIII-7 in datasheet).
- *
- * Given the schematics, in this case the OPENDRAIN configuration is the
- * most probable.
- *
- */
-
- NET_MODEL("OPENDRAIN FAMILY(OVL=0.0 OVH=0.0 ORL=1.0 ORH=1e12)")
- NET_MODEL("TYPE6K FAMILY(OVL=0.05 OVH=0.05 ORL=1.0 ORH=6000)")
- NET_MODEL("DIRECTDRIVE FAMILY(OVL=0.05 OVH=0.05 ORL=1.0 ORH=1000)")
-
- LOGIC_INPUT(P08, 1, "OPENDRAIN")
- LOGIC_INPUT(P09, 1, "OPENDRAIN")
- LOGIC_INPUT(P10, 1, "OPENDRAIN")
- LOGIC_INPUT(P11, 1, "OPENDRAIN")
- LOGIC_INPUT(P12, 1, "OPENDRAIN")
- LOGIC_INPUT(P13, 1, "OPENDRAIN")
- LOGIC_INPUT(P14, 1, "OPENDRAIN")
- LOGIC_INPUT(P15, 1, "OPENDRAIN")
-
- RES(R1, RES_K(2.4))
- RES(R2, RES_K(10))
- RES(R3, RES_K(4.3))
- RES(R4, RES_K(150))
- RES(R5, RES_K(240))
- RES(R6, RES_K(2.4))
- RES(SPK1, 8)
-
- CAP(C1, CAP_P(50))
- CAP(C2, CAP_U(0.001))
- CAP(C3, CAP_U(0.002)) // Schematics state this as 2pF, doesn't make sense, this looks like a ladder layout
- CAP(C4, CAP_U(0.005))
- CAP(C5, CAP_U(0.010))
-
- CAP(C6, CAP_P(50))
- CAP(C7, CAP_U(0.01))
- CAP(C8, CAP_U(470))
-
- QBJT_EB(Q1, "9013")
-
- MC1455P_DIP(IC1)
-
- NET_C(P08.Q, R2.2, IC1.4)
- NET_C(P09.Q, C8.2)
- NET_C(P15.Q, R1.2)
-
- NET_C(C1.1, P10.Q)
- NET_C(C2.1, P11.Q)
- NET_C(C3.1, P12.Q)
- NET_C(C4.1, P13.Q)
- NET_C(C5.1, P14.Q)
-
- NET_C(C1.2, C2.2, C3.2, C4.2, C5.2, C6.2, IC1.2, IC1.6, R5.2)
- NET_C(GND, C6.1, IC1.1, Q1.E)
- NET_C(R5.1, R4.2, IC1.7)
- NET_C(V5, R4.1, R2.1, IC1.8, SPK1.1, R3.1)
-
- NET_C(C7.1, R6.1, IC1.3)
-
- NET_C(C7.2, R6.2, Q1.B)
- NET_C(Q1.C, SPK1.2)
-
- NET_C(C8.1, R1.1, R3.2, IC1.5)
-
-NETLIST_END()
-
-
-namespace {
-
-class tgm_state : public driver_device
-{
-public:
- tgm_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_audio_pin(*this, "snd_nl:p%02u", 8U),
- m_keypad(*this, "IN.%u", 0),
- m_delay_display(*this, "delay_display_%u", 0),
- m_out_digit(*this, "digit%u", 0U),
- m_inp_mux(0),
- m_digit_select(0),
- m_digit_data(0)
- { }
-
- void tgm(machine_config &config);
-
-protected:
- virtual void machine_start() override;
-
-private:
- // devices/pointers
- required_device<cpu_device> m_maincpu;
- required_device_array<netlist_mame_logic_input_device, 8> m_audio_pin;
- required_ioport_array<10> m_keypad;
- required_device_array<timer_device, 12> m_delay_display;
- output_finder<12> m_out_digit;
-
- void main_map(address_map &map);
- void main_io(address_map &map);
-
- TIMER_DEVICE_CALLBACK_MEMBER(delay_display);
-
- void update_display(u16 edge);
- DECLARE_WRITE8_MEMBER(mux1_w);
- DECLARE_WRITE8_MEMBER(mux2_w);
- DECLARE_WRITE8_MEMBER(digit_w);
- DECLARE_READ8_MEMBER(input_r);
- DECLARE_WRITE8_MEMBER(sound_w);
-
- u16 m_inp_mux;
- u16 m_digit_select;
- u8 m_digit_data;
-};
-
-void tgm_state::machine_start()
-{
- // resolve handlers
- m_out_digit.resolve();
-
- // register for savestates
- save_item(NAME(m_inp_mux));
- save_item(NAME(m_digit_select));
- save_item(NAME(m_digit_data));
-}
-
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// display handling
-
-TIMER_DEVICE_CALLBACK_MEMBER(tgm_state::delay_display)
-{
- // clear VFD outputs
- if (!BIT(m_digit_select, param))
- m_out_digit[param] = 0;
-}
-
-void tgm_state::update_display(u16 edge)
-{
- for (int i = 0; i < 12; i++)
- {
- // output VFD digit data
- if (BIT(m_digit_select, i))
- m_out_digit[i] = m_digit_data;
-
- // they're strobed, so on falling edge, delay them going off to prevent flicker or stuck display
- // BTANB: some digit segments get stuck after crashing in the GP game, it's not due to the simulated delay here
- else if (BIT(edge, i))
- m_delay_display[i]->adjust(attotime::from_msec(20), i);
- }
-}
-
-
-// MK3870 ports
-
-WRITE8_MEMBER(tgm_state::mux1_w)
-{
- // P00-P06: input mux part
- m_inp_mux = (m_inp_mux & 7) | (data << 3 & 0x3f8);
-
- // P00-P07: digit select part
- u16 prev = m_digit_select;
- m_digit_select = (m_digit_select & 0xf) | (data << 4);
- update_display(m_digit_select ^ prev);
-}
-
-WRITE8_MEMBER(tgm_state::mux2_w)
-{
- // P15-P17: input mux part
- m_inp_mux = (m_inp_mux & 0x3f8) | (data >> 5 & 7);
-
- // P14-P17: digit select part
- u16 prev = m_digit_select;
- m_digit_select = (m_digit_select & 0xff0) | (data >> 4 & 0xf);
- update_display(m_digit_select ^ prev);
-}
-
-WRITE8_MEMBER(tgm_state::digit_w)
-{
- // P50-P57: digit 7seg data
- m_digit_data = bitswap<8>(data,0,1,2,3,4,5,6,7);
- update_display(0);
-}
-
-READ8_MEMBER(tgm_state::input_r)
-{
- u8 data = 0;
-
- // P12,P13: multiplexed inputs
- for (int i = 0; i < 10; i++)
- if (m_inp_mux >> i & 1)
- data |= m_keypad[i]->read();
-
- return data << 2;
-}
-
-WRITE8_MEMBER(tgm_state::sound_w)
-{
- // P40-P47: 555 to speaker (see netlist above)
- for (int i = 0; i < 8; i++)
- m_audio_pin[i]->write_line(BIT(~data, i));
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void tgm_state::main_map(address_map &map)
-{
- map.global_mask(0x07ff);
- map(0x0000, 0x07ff).rom();
-}
-
-void tgm_state::main_io(address_map &map)
-{
- map(0x00, 0x00).w(FUNC(tgm_state::mux1_w));
- map(0x01, 0x01).rw(FUNC(tgm_state::input_r), FUNC(tgm_state::mux2_w));
- map(0x04, 0x07).rw("psu", FUNC(f38t56_device::read), FUNC(f38t56_device::write));
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( tgm )
- PORT_START("IN.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_COLON) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("CL")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SLASH) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9")
-
- PORT_START("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CODE(KEYCODE_LEFT) PORT_NAME(UTF8_DIVIDE)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8")
-
- PORT_START("IN.2")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_K) PORT_CODE(KEYCODE_ASTERISK) PORT_CODE(KEYCODE_UP) PORT_NAME(UTF8_MULTIPLY)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_COMMA) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_DOWN) PORT_NAME("7")
-
- PORT_START("IN.3")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_J) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("-=")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6")
-
- PORT_START("IN.4")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("+=")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5")
-
- PORT_START("IN.5")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4")
-
- PORT_START("IN.6")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3")
-
- PORT_START("IN.7")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_END) PORT_NAME("MR")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2")
-
- PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_CODE(KEYCODE_HOME) PORT_NAME("MS")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_X) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
-
- PORT_START("IN.9")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_R) PORT_NAME("Return")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Z) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0")
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Configs
-******************************************************************************/
-
-void tgm_state::tgm(machine_config &config)
-{
- /* basic machine hardware */
- F8(config, m_maincpu, 4000000/2); // MK3870, frequency is approximate
- m_maincpu->set_addrmap(AS_PROGRAM, &tgm_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &tgm_state::main_io);
-
- f38t56_device &psu(F38T56(config, "psu", 4000000/2));
- psu.write_a().set(FUNC(tgm_state::sound_w));
- psu.write_b().set(FUNC(tgm_state::digit_w));
-
- /* video hardware */
- for (int i = 0; i < 12; i++)
- TIMER(config, m_delay_display[i]).configure_generic(FUNC(tgm_state::delay_display));
-
- config.set_default_layout(layout_tgm);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- netlist_mame_sound_device &snd_nl(NETLIST_SOUND(config, "snd_nl", 48000));
-
- snd_nl.set_constructor(netlist_nl_gamemachine);
- snd_nl.add_route(ALL_OUTPUTS, "speaker", 1.0);
-
- NETLIST_STREAM_OUTPUT(config, "snd_nl:cout0", 0, "SPK1.2").set_mult_offset(-10000.0, 10000.0 * 3.75);
-
- NETLIST_LOGIC_INPUT(config, "snd_nl:p08", "P08.IN", 0);
- NETLIST_LOGIC_INPUT(config, "snd_nl:p09", "P09.IN", 0);
- NETLIST_LOGIC_INPUT(config, "snd_nl:p10", "P10.IN", 0);
- NETLIST_LOGIC_INPUT(config, "snd_nl:p11", "P11.IN", 0);
- NETLIST_LOGIC_INPUT(config, "snd_nl:p12", "P12.IN", 0);
- NETLIST_LOGIC_INPUT(config, "snd_nl:p13", "P13.IN", 0);
- NETLIST_LOGIC_INPUT(config, "snd_nl:p14", "P14.IN", 0);
- NETLIST_LOGIC_INPUT(config, "snd_nl:p15", "P15.IN", 0);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( 2001tgm )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD("mk14154n_2001", 0x0000, 0x0800, CRC(6d524c32) SHA1(73d84e59952b751c76dff8bf259b98e1f9136b41) )
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
-COMP( 1978, 2001tgm, 0, 0, tgm, tgm, tgm_state, empty_init, "Waddingtons", "2001: The Game Machine", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/gamepock.cpp b/src/mame/drivers/gamepock.cpp
index 1b31660c55d..098b1bb1f98 100644
--- a/src/mame/drivers/gamepock.cpp
+++ b/src/mame/drivers/gamepock.cpp
@@ -42,8 +42,7 @@ static INPUT_PORTS_START( gamepock )
INPUT_PORTS_END
-void gamepock_state::gamepock(machine_config &config)
-{
+MACHINE_CONFIG_START(gamepock_state::gamepock)
upd78c06_device &upd(UPD78C06(config, m_maincpu, 6_MHz_XTAL)); // uPD78C06AG
upd.set_addrmap(AS_PROGRAM, &gamepock_state::gamepock_mem);
upd.pa_out_cb().set(FUNC(gamepock_state::port_a_w));
@@ -66,11 +65,11 @@ void gamepock_state::gamepock(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
/* cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "gamepock_cart");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "gamepock_cart")
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("gamepock");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list","gamepock")
+MACHINE_CONFIG_END
ROM_START( gamepock )
diff --git a/src/mame/drivers/gammagic.cpp b/src/mame/drivers/gammagic.cpp
index 55e1477f347..da8ff25b76d 100644
--- a/src/mame/drivers/gammagic.cpp
+++ b/src/mame/drivers/gammagic.cpp
@@ -131,20 +131,21 @@ void gammagic_state::machine_start()
}
MACHINE_CONFIG_START(gammagic_state::gammagic)
- PENTIUM(config, m_maincpu, 133000000); // Intel Pentium 133
- m_maincpu->set_addrmap(AS_PROGRAM, &gammagic_state::gammagic_map);
- m_maincpu->set_addrmap(AS_IO, &gammagic_state::gammagic_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", PENTIUM, 133000000) // Intel Pentium 133
+ MCFG_DEVICE_PROGRAM_MAP(gammagic_map)
+ MCFG_DEVICE_IO_MAP(gammagic_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
pcat_common(config);
// I82371SB(config, "i82371sb", 0);
// MCFG_I82439TX_ADD("i82439tx", "maincpu", "user")
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
-// MCFG_PCI_BUS_LEGACY_DEVICE(0, "i82439tx", i82439tx_pci_read, i82439tx_pci_write)
-// MCFG_PCI_BUS_LEGACY_DEVICE(1, "i82371sb", i82371sb_pci_read, i82371sb_pci_write)
+// MCFG_PCI_BUS_DEVICE(0, "i82439tx", i82439tx_pci_read, i82439tx_pci_write)
+// MCFG_PCI_BUS_DEVICE(1, "i82371sb", i82371sb_pci_read, i82371sb_pci_write)
/* video hardware */
pcvideo_vga(config);
+
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/gamtor.cpp b/src/mame/drivers/gamtor.cpp
index 02800959be0..0e756f2d3f3 100644
--- a/src/mame/drivers/gamtor.cpp
+++ b/src/mame/drivers/gamtor.cpp
@@ -85,23 +85,23 @@ INPUT_PORTS_END
-void gaminator_state::gaminator(machine_config &config)
-{
- MCF5206E(config, m_maincpu, 40000000); /* definitely Coldfire, model / clock uncertain */
- m_maincpu->set_addrmap(AS_PROGRAM, &gaminator_state::gaminator_map);
- m_maincpu->set_vblank_int("screen", FUNC(gaminator_state::irq6_line_hold)); // irq6 seems to be needed to get past the ROM checking
- MCF5206E_PERIPHERAL(config, "maincpu_onboard", 0);
+MACHINE_CONFIG_START(gaminator_state::gaminator)
+ MCFG_DEVICE_ADD("maincpu", MCF5206E, 40000000) /* definitely Coldfire, model / clock uncertain */
+ MCFG_DEVICE_PROGRAM_MAP(gaminator_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gaminator_state, irq6_line_hold) // irq6 seems to be needed to get past the ROM checking
+ MCFG_MCF5206E_PERIPHERAL_ADD("maincpu_onboard")
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(25'174'800),900,0,640,526,0,480);
- screen.set_screen_update("vga", FUNC(gamtor_vga_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480)
+ MCFG_SCREEN_UPDATE_DEVICE("vga", gamtor_vga_device, screen_update)
- GAMTOR_VGA(config, "vga", 0).set_screen("screen");
+ MCFG_DEVICE_ADD("vga", GAMTOR_VGA, 0)
+ MCFG_VIDEO_SET_SCREEN("screen")
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
/* unknown sound */
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/gatron.cpp b/src/mame/drivers/gatron.cpp
index 78c4691b1c3..69ba8132478 100644
--- a/src/mame/drivers/gatron.cpp
+++ b/src/mame/drivers/gatron.cpp
@@ -450,7 +450,7 @@ void gatron_state::gat_map(address_map &map)
map(0x0000, 0x5fff).rom();
map(0x6000, 0x63ff).ram().w(FUNC(gatron_state::videoram_w)).share("videoram");
map(0x8000, 0x87ff).ram().share("nvram"); /* battery backed RAM */
- map(0xa000, 0xa000).w("snsnd", FUNC(sn76489_device::write)); /* PSG */
+ map(0xa000, 0xa000).w("snsnd", FUNC(sn76489_device::command_w)); /* PSG */
map(0xe000, 0xe000).w(FUNC(gatron_state::output_port_0_w)); /* lamps */
}
@@ -563,12 +563,12 @@ GFXDECODE_END
* Machine Drivers *
*************************/
-void gatron_state::gat(machine_config &config)
-{
+MACHINE_CONFIG_START(gatron_state::gat)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &gatron_state::gat_map);
- m_maincpu->set_addrmap(AS_IO, &gatron_state::gat_portmap);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(gat_map)
+ MCFG_DEVICE_IO_MAP(gat_portmap)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -578,22 +578,23 @@ void gatron_state::gat(machine_config &config)
ppi.out_pc_callback().set(FUNC(gatron_state::output_port_1_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(48*8, 16*16);
- screen.set_visarea(0*8, 48*8-1, 0*8, 16*16-1);
- screen.set_screen_update(FUNC(gatron_state::screen_update));
- screen.set_palette("palette");
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_gat);
- PALETTE(config, "palette").set_entries(8);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(48*8, 16*16)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 16*16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gatron_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_gat)
+ MCFG_PALETTE_ADD("palette", 8)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489(config, "snsnd", MASTER_CLOCK/8).add_route(ALL_OUTPUTS, "mono", 2.00); // Present in Bingo PCB. Clock need to be verified.
-}
+ MCFG_DEVICE_ADD("snsnd", SN76489, MASTER_CLOCK/8 ) // Present in Bingo PCB. Clock need to be verified.
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.00)
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/gauntlet.cpp b/src/mame/drivers/gauntlet.cpp
index 7f3f1b05ac5..f4ef4cec567 100644
--- a/src/mame/drivers/gauntlet.cpp
+++ b/src/mame/drivers/gauntlet.cpp
@@ -488,42 +488,42 @@ GFXDECODE_END
*
*************************************/
-void gauntlet_state::gauntlet_base(machine_config &config)
-{
+MACHINE_CONFIG_START(gauntlet_state::gauntlet_base)
+
/* basic machine hardware */
- M68010(config, m_maincpu, ATARI_CLOCK_14MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &gauntlet_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68010, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- M6502(config, m_audiocpu, ATARI_CLOCK_14MHz/8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &gauntlet_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
EEPROM_2804(config, "eeprom").lock_after_write(true);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- GFXDECODE(config, m_gfxdecode, "palette", gfx_gauntlet);
+ GFXDECODE(config, "gfxdecode", "palette", gfx_gauntlet);
PALETTE(config, "palette").set_format(palette_device::IRGB_4444, 1024);
- TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_COLS, 64,64).set_info_callback(FUNC(gauntlet_state::get_playfield_tile_info));
- TILEMAP(config, m_alpha_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64,32, 0).set_info_callback(FUNC(gauntlet_state::get_alpha_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 2, gauntlet_state, get_playfield_tile_info, 8,8, SCAN_COLS, 64,64)
+ MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", "gfxdecode", 2, gauntlet_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, gauntlet_state::s_mob_config);
m_mob->set_gfxdecode(m_gfxdecode);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses a SYNGEN chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(gauntlet_state::screen_update_gauntlet));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set(FUNC(gauntlet_state::video_int_write_line));
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(gauntlet_state, screen_update_gauntlet)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, gauntlet_state, video_int_write_line))
/* sound hardware */
- ATARI_SOUND_COMM(config, m_soundcomm, m_audiocpu)
- .int_callback().set_inputline(m_maincpu, M68K_IRQ_6);
+ ATARI_SOUND_COMM(config, "soundcomm", "audiocpu")
+ .int_callback().set_inputline("maincpu", M68K_IRQ_6);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
@@ -531,22 +531,22 @@ void gauntlet_state::gauntlet_base(machine_config &config)
m_ym2151->add_route(1, "lspeaker", 0.48);
m_ym2151->add_route(0, "rspeaker", 0.48);
- POKEY(config, m_pokey, ATARI_CLOCK_14MHz/8);
- m_pokey->add_route(ALL_OUTPUTS, "lspeaker", 0.32);
- m_pokey->add_route(ALL_OUTPUTS, "rspeaker", 0.32);
+ MCFG_DEVICE_ADD("pokey", POKEY, ATARI_CLOCK_14MHz/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.32)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.32)
- TMS5220C(config, m_tms5220, ATARI_CLOCK_14MHz/2/11); /* potentially ATARI_CLOCK_14MHz/2/9 as well */
- m_tms5220->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
- m_tms5220->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
+ MCFG_DEVICE_ADD("tms", TMS5220C, ATARI_CLOCK_14MHz/2/11) /* potentially ATARI_CLOCK_14MHz/2/9 as well */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
LS259(config, m_soundctl); // 16T/U
- m_soundctl->q_out_cb<0>().set(m_ym2151, FUNC(ym2151_device::reset_w)); // music reset, low reset
- m_soundctl->q_out_cb<1>().set(m_tms5220, FUNC(tms5220_device::wsq_w)); // speech write, active low
- m_soundctl->q_out_cb<2>().set(m_tms5220, FUNC(tms5220_device::rsq_w)); // speech reset, active low
+ m_soundctl->q_out_cb<0>().set("ymsnd", FUNC(ym2151_device::reset_w)); // music reset, low reset
+ m_soundctl->q_out_cb<1>().set("tms", FUNC(tms5220_device::wsq_w)); // speech write, active low
+ m_soundctl->q_out_cb<2>().set("tms", FUNC(tms5220_device::rsq_w)); // speech reset, active low
m_soundctl->q_out_cb<3>().set(FUNC(gauntlet_state::speech_squeak_w)); // speech squeak, low = 650 Hz
m_soundctl->q_out_cb<4>().set(FUNC(gauntlet_state::coin_counter_right_w));
m_soundctl->q_out_cb<5>().set(FUNC(gauntlet_state::coin_counter_left_w));
-}
+MACHINE_CONFIG_END
void gauntlet_state::gauntlet(machine_config & config)
@@ -1259,7 +1259,7 @@ ROM_START( gaunt2 )
ROM_LOAD( "136043-1119.16s", 0x008000, 0x008000, CRC(dc3591e7) SHA1(6d0d8493609974bd5a63be858b045fe4db35d8df) )
ROM_REGION( 0x04000, "gfx1", 0 )
- ROM_LOAD( "136043-1104.6p", 0x000000, 0x004000, CRC(bddc3dfc) SHA1(2e1279041ed62fb28ac8a8909e8fedab2556f39e) ) // second half 0x00
+ ROM_LOAD( "136043-1104.6p", 0x000000, 0x002000, CRC(1343cf6f) SHA1(4a9542bc8ede305e7e8f860eb4b47ca2f3017275) )
ROM_REGION( 0x60000, "gfx2", ROMREGION_INVERT )
ROM_LOAD( "136043-1111.1a", 0x000000, 0x008000, CRC(09df6e23) SHA1(726984275c6a338c12ec0c4cc449f92f4a7a138c) )
@@ -1280,9 +1280,9 @@ ROM_START( gaunt2 )
ROM_RELOAD( 0x05c000, 0x004000 )
ROM_REGION( 0x500, "proms", 0 )
- ROM_LOAD( "74s472-136037-101.7u", 0x000, 0x200, CRC(2964f76f) SHA1(da966c35557ec1b95e1c39cd950c38a19bce2d67) ) /* MO timing */
- ROM_LOAD( "74s472-136037-102.5l", 0x200, 0x200, CRC(4d4fec6c) SHA1(3541b5c6405ad5742a3121dfd6acb227933de25a) ) /* MO flip control */
- ROM_LOAD( "82s129-136043-1103.4r", 0x400, 0x100, CRC(32ae1fa9) SHA1(09eb56a0798456d73015909973ce2ba9660c1164) ) /* MO position/size */
+ ROM_LOAD( "74s472-136037-101.7u", 0x000, 0x200, CRC(2964f76f) SHA1(da966c35557ec1b95e1c39cd950c38a19bce2d67) ) /* MO timing */
+ ROM_LOAD( "74s472-136037-102.5l", 0x200, 0x200, CRC(4d4fec6c) SHA1(3541b5c6405ad5742a3121dfd6acb227933de25a) ) /* MO flip control */
+ ROM_LOAD( "74s287-136037-103.4r", 0x400, 0x100, CRC(6c5ccf08) SHA1(ff5dbadd85aa2e07b383a302fa399e875db8f84f) ) /* MO position/size */
ROM_END
@@ -1302,7 +1302,7 @@ ROM_START( gaunt2g )
ROM_LOAD( "136043-1119.16s", 0x008000, 0x008000, CRC(dc3591e7) SHA1(6d0d8493609974bd5a63be858b045fe4db35d8df) )
ROM_REGION( 0x04000, "gfx1", 0 )
- ROM_LOAD( "136043-1104.6p", 0x000000, 0x004000, CRC(bddc3dfc) SHA1(2e1279041ed62fb28ac8a8909e8fedab2556f39e) ) // second half 0x00
+ ROM_LOAD( "136043-1104.6p", 0x000000, 0x002000, CRC(1343cf6f) SHA1(4a9542bc8ede305e7e8f860eb4b47ca2f3017275) )
ROM_REGION( 0x60000, "gfx2", ROMREGION_INVERT )
ROM_LOAD( "136043-1111.1a", 0x000000, 0x008000, CRC(09df6e23) SHA1(726984275c6a338c12ec0c4cc449f92f4a7a138c) )
@@ -1323,9 +1323,9 @@ ROM_START( gaunt2g )
ROM_RELOAD( 0x05c000, 0x004000 )
ROM_REGION( 0x500, "proms", 0 )
- ROM_LOAD( "74s472-136037-101.7u", 0x000, 0x200, CRC(2964f76f) SHA1(da966c35557ec1b95e1c39cd950c38a19bce2d67) ) /* MO timing */
- ROM_LOAD( "74s472-136037-102.5l", 0x200, 0x200, CRC(4d4fec6c) SHA1(3541b5c6405ad5742a3121dfd6acb227933de25a) ) /* MO flip control */
- ROM_LOAD( "82s129-136043-1103.4r", 0x400, 0x100, CRC(32ae1fa9) SHA1(09eb56a0798456d73015909973ce2ba9660c1164) ) /* MO position/size */
+ ROM_LOAD( "74s472-136037-101.7u", 0x000, 0x200, CRC(2964f76f) SHA1(da966c35557ec1b95e1c39cd950c38a19bce2d67) ) /* MO timing */
+ ROM_LOAD( "74s472-136037-102.5l", 0x200, 0x200, CRC(4d4fec6c) SHA1(3541b5c6405ad5742a3121dfd6acb227933de25a) ) /* MO flip control */
+ ROM_LOAD( "74s287-136037-103.4r", 0x400, 0x100, CRC(6c5ccf08) SHA1(ff5dbadd85aa2e07b383a302fa399e875db8f84f) ) /* MO position/size */
ROM_END
@@ -1345,7 +1345,7 @@ ROM_START( gaunt22p )
ROM_LOAD( "136043-1119.16s", 0x008000, 0x008000, CRC(dc3591e7) SHA1(6d0d8493609974bd5a63be858b045fe4db35d8df) )
ROM_REGION( 0x04000, "gfx1", 0 )
- ROM_LOAD( "136043-1104.6p", 0x000000, 0x004000, CRC(bddc3dfc) SHA1(2e1279041ed62fb28ac8a8909e8fedab2556f39e) ) // second half 0x00
+ ROM_LOAD( "136043-1104.6p", 0x000000, 0x002000, CRC(1343cf6f) SHA1(4a9542bc8ede305e7e8f860eb4b47ca2f3017275) )
ROM_REGION( 0x60000, "gfx2", ROMREGION_INVERT )
ROM_LOAD( "136043-1111.1a", 0x000000, 0x008000, CRC(09df6e23) SHA1(726984275c6a338c12ec0c4cc449f92f4a7a138c) )
@@ -1366,9 +1366,9 @@ ROM_START( gaunt22p )
ROM_RELOAD( 0x05c000, 0x004000 )
ROM_REGION( 0x500, "proms", 0 )
- ROM_LOAD( "74s472-136037-101.7u", 0x000, 0x200, CRC(2964f76f) SHA1(da966c35557ec1b95e1c39cd950c38a19bce2d67) ) /* MO timing */
- ROM_LOAD( "74s472-136037-102.5l", 0x200, 0x200, CRC(4d4fec6c) SHA1(3541b5c6405ad5742a3121dfd6acb227933de25a) ) /* MO flip control */
- ROM_LOAD( "82s129-136043-1103.4r", 0x400, 0x100, CRC(32ae1fa9) SHA1(09eb56a0798456d73015909973ce2ba9660c1164) ) /* MO position/size */
+ ROM_LOAD( "74s472-136037-101.7u", 0x000, 0x200, CRC(2964f76f) SHA1(da966c35557ec1b95e1c39cd950c38a19bce2d67) ) /* MO timing */
+ ROM_LOAD( "74s472-136037-102.5l", 0x200, 0x200, CRC(4d4fec6c) SHA1(3541b5c6405ad5742a3121dfd6acb227933de25a) ) /* MO flip control */
+ ROM_LOAD( "74s287-136037-103.4r", 0x400, 0x100, CRC(6c5ccf08) SHA1(ff5dbadd85aa2e07b383a302fa399e875db8f84f) ) /* MO position/size */
ROM_END
@@ -1388,7 +1388,7 @@ ROM_START( gaunt22p1 )
ROM_LOAD( "136043-1119.16s", 0x008000, 0x008000, CRC(dc3591e7) SHA1(6d0d8493609974bd5a63be858b045fe4db35d8df) )
ROM_REGION( 0x04000, "gfx1", 0 )
- ROM_LOAD( "136043-1104.6p", 0x000000, 0x004000, CRC(bddc3dfc) SHA1(2e1279041ed62fb28ac8a8909e8fedab2556f39e) ) // second half 0x00
+ ROM_LOAD( "136043-1104.6p", 0x000000, 0x002000, CRC(1343cf6f) SHA1(4a9542bc8ede305e7e8f860eb4b47ca2f3017275) )
ROM_REGION( 0x60000, "gfx2", ROMREGION_INVERT )
ROM_LOAD( "136043-1111.1a", 0x000000, 0x008000, CRC(09df6e23) SHA1(726984275c6a338c12ec0c4cc449f92f4a7a138c) )
@@ -1409,9 +1409,9 @@ ROM_START( gaunt22p1 )
ROM_RELOAD( 0x05c000, 0x004000 )
ROM_REGION( 0x500, "proms", 0 )
- ROM_LOAD( "74s472-136037-101.7u", 0x000, 0x200, CRC(2964f76f) SHA1(da966c35557ec1b95e1c39cd950c38a19bce2d67) ) /* MO timing */
- ROM_LOAD( "74s472-136037-102.5l", 0x200, 0x200, CRC(4d4fec6c) SHA1(3541b5c6405ad5742a3121dfd6acb227933de25a) ) /* MO flip control */
- ROM_LOAD( "82s129-136043-1103.4r", 0x400, 0x100, CRC(32ae1fa9) SHA1(09eb56a0798456d73015909973ce2ba9660c1164) ) /* MO position/size */
+ ROM_LOAD( "74s472-136037-101.7u", 0x000, 0x200, CRC(2964f76f) SHA1(da966c35557ec1b95e1c39cd950c38a19bce2d67) ) /* MO timing */
+ ROM_LOAD( "74s472-136037-102.5l", 0x200, 0x200, CRC(4d4fec6c) SHA1(3541b5c6405ad5742a3121dfd6acb227933de25a) ) /* MO flip control */
+ ROM_LOAD( "74s287-136037-103.4r", 0x400, 0x100, CRC(6c5ccf08) SHA1(ff5dbadd85aa2e07b383a302fa399e875db8f84f) ) /* MO position/size */
ROM_END
@@ -1431,7 +1431,7 @@ ROM_START( gaunt22pg )
ROM_LOAD( "136043-1119.16s", 0x008000, 0x008000, CRC(dc3591e7) SHA1(6d0d8493609974bd5a63be858b045fe4db35d8df) )
ROM_REGION( 0x04000, "gfx1", 0 )
- ROM_LOAD( "136043-1104.6p", 0x000000, 0x004000, CRC(bddc3dfc) SHA1(2e1279041ed62fb28ac8a8909e8fedab2556f39e) ) // second half 0x00
+ ROM_LOAD( "136043-1104.6p", 0x000000, 0x002000, CRC(1343cf6f) SHA1(4a9542bc8ede305e7e8f860eb4b47ca2f3017275) )
ROM_REGION( 0x60000, "gfx2", ROMREGION_INVERT )
ROM_LOAD( "136043-1111.1a", 0x000000, 0x008000, CRC(09df6e23) SHA1(726984275c6a338c12ec0c4cc449f92f4a7a138c) )
@@ -1452,9 +1452,9 @@ ROM_START( gaunt22pg )
ROM_RELOAD( 0x05c000, 0x004000 )
ROM_REGION( 0x500, "proms", 0 )
- ROM_LOAD( "74s472-136037-101.7u", 0x000, 0x200, CRC(2964f76f) SHA1(da966c35557ec1b95e1c39cd950c38a19bce2d67) ) /* MO timing */
- ROM_LOAD( "74s472-136037-102.5l", 0x200, 0x200, CRC(4d4fec6c) SHA1(3541b5c6405ad5742a3121dfd6acb227933de25a) ) /* MO flip control */
- ROM_LOAD( "82s129-136043-1103.4r", 0x400, 0x100, CRC(32ae1fa9) SHA1(09eb56a0798456d73015909973ce2ba9660c1164) ) /* MO position/size */
+ ROM_LOAD( "74s472-136037-101.7u", 0x000, 0x200, CRC(2964f76f) SHA1(da966c35557ec1b95e1c39cd950c38a19bce2d67) ) /* MO timing */
+ ROM_LOAD( "74s472-136037-102.5l", 0x200, 0x200, CRC(4d4fec6c) SHA1(3541b5c6405ad5742a3121dfd6acb227933de25a) ) /* MO flip control */
+ ROM_LOAD( "74s287-136037-103.4r", 0x400, 0x100, CRC(6c5ccf08) SHA1(ff5dbadd85aa2e07b383a302fa399e875db8f84f) ) /* MO position/size */
ROM_END
diff --git a/src/mame/drivers/gb.cpp b/src/mame/drivers/gb.cpp
index ec88044b7e9..b7219a8633b 100644
--- a/src/mame/drivers/gb.cpp
+++ b/src/mame/drivers/gb.cpp
@@ -289,7 +289,7 @@ space. This mapper uses 32KB sized banks.
READ8_MEMBER(gb_state::gb_cart_r)
{
if (m_bios_disable && m_cartslot)
- return m_cartslot->read_rom(offset);
+ return m_cartslot->read_rom(space, offset);
else
{
if (offset < 0x100)
@@ -309,7 +309,7 @@ READ8_MEMBER(gb_state::gb_cart_r)
}
else if (m_cartslot)
{
- return m_cartslot->read_rom(offset);
+ return m_cartslot->read_rom(space, offset);
}
else
return 0xff;
@@ -319,7 +319,7 @@ READ8_MEMBER(gb_state::gb_cart_r)
READ8_MEMBER(gb_state::gbc_cart_r)
{
if (m_bios_disable && m_cartslot)
- return m_cartslot->read_rom(offset);
+ return m_cartslot->read_rom(space, offset);
else
{
if (offset < 0x100)
@@ -344,7 +344,7 @@ READ8_MEMBER(gb_state::gbc_cart_r)
}
else if (m_cartslot)
{
- return m_cartslot->read_rom(offset);
+ return m_cartslot->read_rom(space, offset);
}
else
return 0xff;
@@ -354,13 +354,13 @@ READ8_MEMBER(gb_state::gbc_cart_r)
WRITE8_MEMBER(gb_state::gb_bank_w)
{
if (m_cartslot)
- m_cartslot->write_bank(offset, data);
+ m_cartslot->write_bank(space, offset, data);
}
READ8_MEMBER(gb_state::gb_ram_r)
{
if (m_cartslot)
- return m_cartslot->read_ram(offset);
+ return m_cartslot->read_ram(space, offset);
else
return 0xff;
}
@@ -368,7 +368,7 @@ READ8_MEMBER(gb_state::gb_ram_r)
WRITE8_MEMBER(gb_state::gb_ram_w)
{
if (m_cartslot)
- m_cartslot->write_ram(offset, data);
+ m_cartslot->write_ram(space, offset, data);
}
READ8_MEMBER(gb_state::gb_echo_r)
@@ -384,7 +384,7 @@ WRITE8_MEMBER(gb_state::gb_echo_w)
READ8_MEMBER(megaduck_state::cart_r)
{
if (m_cartslot)
- return m_cartslot->read_rom(offset);
+ return m_cartslot->read_rom(space, offset);
else
return 0xff;
}
@@ -392,13 +392,13 @@ READ8_MEMBER(megaduck_state::cart_r)
WRITE8_MEMBER(megaduck_state::bank1_w)
{
if (m_cartslot)
- m_cartslot->write_bank(offset, data);
+ m_cartslot->write_bank(space, offset, data);
}
WRITE8_MEMBER(megaduck_state::bank2_w)
{
if (m_cartslot)
- m_cartslot->write_ram(offset, data); /* used for bankswitch, but we re-use GB name */
+ m_cartslot->write_ram(space, offset, data); /* used for bankswitch, but we re-use GB name */
}
diff --git a/src/mame/drivers/gba.cpp b/src/mame/drivers/gba.cpp
index fa351f8e558..e1cfdf6f537 100644
--- a/src/mame/drivers/gba.cpp
+++ b/src/mame/drivers/gba.cpp
@@ -1430,37 +1430,37 @@ static void gba_cart(device_slot_interface &device)
}
-void gba_state::gbadv(machine_config &config)
-{
- ARM7(config, m_maincpu, XTAL(16'777'216));
- m_maincpu->set_addrmap(AS_PROGRAM, &gba_state::gba_map);
+MACHINE_CONFIG_START(gba_state::gbadv)
+
+ MCFG_DEVICE_ADD("maincpu", ARM7, XTAL(16'777'216))
+ MCFG_DEVICE_PROGRAM_MAP(gba_map)
- gba_lcd_device &lcd(GBA_LCD(config, "lcd", 0));
- lcd.int_hblank_callback().set(FUNC(gba_state::int_hblank_callback));
- lcd.int_vblank_callback().set(FUNC(gba_state::int_vblank_callback));
- lcd.int_vcount_callback().set(FUNC(gba_state::int_vcount_callback));
- lcd.dma_hblank_callback().set(FUNC(gba_state::dma_hblank_callback));
- lcd.dma_vblank_callback().set(FUNC(gba_state::dma_vblank_callback));
+ MCFG_GBA_LCD_ADD("lcd")
+ MCFG_GBA_LCD_INT_HBLANK(WRITELINE(*this, gba_state, int_hblank_callback))
+ MCFG_GBA_LCD_INT_VBLANK(WRITELINE(*this, gba_state, int_vblank_callback))
+ MCFG_GBA_LCD_INT_VCOUNT(WRITELINE(*this, gba_state, int_vcount_callback))
+ MCFG_GBA_LCD_DMA_HBLANK(WRITELINE(*this, gba_state, dma_hblank_callback))
+ MCFG_GBA_LCD_DMA_VBLANK(WRITELINE(*this, gba_state, dma_vblank_callback))
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- CGB04_APU(config, m_gbsound, XTAL(16'777'216)/4);
- m_gbsound->add_route(0, "lspeaker", 0.5);
- m_gbsound->add_route(1, "rspeaker", 0.5);
-
- DAC_8BIT_R2R_TWOS_COMPLEMENT(config, m_ldaca, 0).add_route(ALL_OUTPUTS, "lspeaker", 0.5); // unknown DAC
- DAC_8BIT_R2R_TWOS_COMPLEMENT(config, m_rdaca, 0).add_route(ALL_OUTPUTS, "rspeaker", 0.5); // unknown DAC
- DAC_8BIT_R2R_TWOS_COMPLEMENT(config, m_ldacb, 0).add_route(ALL_OUTPUTS, "lspeaker", 0.5); // unknown DAC
- DAC_8BIT_R2R_TWOS_COMPLEMENT(config, m_rdacb, 0).add_route(ALL_OUTPUTS, "rspeaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "ldaca", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "ldaca", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "rdaca", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "rdaca", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "ldacb", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "ldacb", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "rdacb", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "rdacb", -1.0, DAC_VREF_NEG_INPUT);
-
- GBA_CART_SLOT(config, m_cart, gba_cart, nullptr);
- SOFTWARE_LIST(config, "cart_list").set_original("gba");
-}
+ MCFG_DEVICE_ADD("custom", CGB04_APU, XTAL(16'777'216)/4)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.5)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.5)
+
+ MCFG_DEVICE_ADD("ldaca", DAC_8BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("rdaca", DAC_8BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("ldacb", DAC_8BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("rdacb", DAC_8BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "ldaca", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldaca", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdaca", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdaca", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "ldacb", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldacb", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdacb", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdacb", -1.0, DAC_VREF_NEG_INPUT)
+
+ MCFG_GBA_CARTRIDGE_ADD("cartslot", gba_cart, nullptr)
+ MCFG_SOFTWARE_LIST_ADD("cart_list","gba")
+MACHINE_CONFIG_END
ROM_START( gba )
diff --git a/src/mame/drivers/gberet.cpp b/src/mame/drivers/gberet.cpp
index c361e9e33af..51f1e7048bb 100644
--- a/src/mame/drivers/gberet.cpp
+++ b/src/mame/drivers/gberet.cpp
@@ -227,7 +227,7 @@ void gberet_state::gberetb_map(address_map &map)
map(0xe900, 0xe9ff).ram().share("spriteram");
map(0xf000, 0xf000).nopw(); // coin counter not supported
map(0xf200, 0xf200).portr("DSW2");
- map(0xf400, 0xf400).w(m_sn, FUNC(sn76489a_device::write));
+ map(0xf400, 0xf400).w(m_sn, FUNC(sn76489a_device::command_w));
map(0xf600, 0xf600).portr("P2");
map(0xf601, 0xf601).portr("DSW1");
map(0xf602, 0xf602).portr("P1");
@@ -408,25 +408,25 @@ MACHINE_RESET_MEMBER(gberet_state,gberet)
m_spritebank = 0;
}
-void gberet_state::gberet(machine_config &config)
-{
+MACHINE_CONFIG_START(gberet_state::gberet)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'432'000)/6); // X1S (generated by a custom IC)
- m_maincpu->set_addrmap(AS_PROGRAM, &gberet_state::gberet_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(gberet_state::gberet_interrupt_tick), "screen", 0, 16);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'432'000)/6) // X1S (generated by a custom IC)
+ MCFG_DEVICE_PROGRAM_MAP(gberet_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", gberet_state, gberet_interrupt_tick, "screen", 0, 16)
WATCHDOG_TIMER(config, "watchdog");
MCFG_MACHINE_START_OVERRIDE(gberet_state,gberet)
MCFG_MACHINE_RESET_OVERRIDE(gberet_state,gberet)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60.60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(1*8, 31*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(gberet_state::screen_update_gberet));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60.60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gberet_state, screen_update_gberet)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_gberet);
PALETTE(config, m_palette, FUNC(gberet_state::gberet_palette), 2*16*16, 32);
@@ -435,36 +435,37 @@ void gberet_state::gberet(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489A(config, m_sn, XTAL(18'432'000)/12).add_route(ALL_OUTPUTS, "mono", 1.0); /* type verified on real and bootleg pcb */
-}
+ MCFG_DEVICE_ADD("snsnd", SN76489A, XTAL(18'432'000)/12) /* type verified on real and bootleg pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void gberet_state::mrgoemon(machine_config &config)
-{
+MACHINE_CONFIG_START(gberet_state::mrgoemon)
gberet(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &gberet_state::mrgoemon_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mrgoemon_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(gberet_state::gberetb)
-void gberet_state::gberetb(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(20'000'000)/4); // divider guessed
- m_maincpu->set_addrmap(AS_PROGRAM, &gberet_state::gberetb_map);
- m_maincpu->set_vblank_int("screen", FUNC(gberet_state::irq0_line_assert));
- m_maincpu->set_periodic_int(FUNC(gberet_state::nmi_line_assert), attotime::from_hz(XTAL(20'000'000)/0x8000)); // divider guessed
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(20'000'000)/4) // divider guessed
+ MCFG_DEVICE_PROGRAM_MAP(gberetb_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gberet_state, irq0_line_assert)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(gberet_state, nmi_line_assert, XTAL(20'000'000)/0x8000) // divider guessed
MCFG_MACHINE_START_OVERRIDE(gberet_state,gberet)
MCFG_MACHINE_RESET_OVERRIDE(gberet_state,gberet)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(1*8, 31*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(gberet_state::screen_update_gberetb));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gberet_state, screen_update_gberetb)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_gberetb);
PALETTE(config, m_palette, FUNC(gberet_state::gberet_palette), 2*16*16, 32);
@@ -473,8 +474,9 @@ void gberet_state::gberetb(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489A(config, m_sn, XTAL(20'000'000)/12).add_route(ALL_OUTPUTS, "mono", 1.0); // divider guessed
-}
+ MCFG_DEVICE_ADD("snsnd", SN76489A, XTAL(20'000'000)/12) // divider guessed
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/gcpinbal.cpp b/src/mame/drivers/gcpinbal.cpp
index 72ca5c21482..9b02f4a3d76 100644
--- a/src/mame/drivers/gcpinbal.cpp
+++ b/src/mame/drivers/gcpinbal.cpp
@@ -352,26 +352,26 @@ void gcpinbal_state::machine_reset()
m_msm_bank = 0;
}
-void gcpinbal_state::gcpinbal(machine_config &config)
-{
+MACHINE_CONFIG_START(gcpinbal_state::gcpinbal)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 32_MHz_XTAL/2); /* 16 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &gcpinbal_state::gcpinbal_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, 32_MHz_XTAL/2) /* 16 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(gcpinbal_map)
- TIMER(config, "scantimer").configure_scanline(FUNC(gcpinbal_state::scanline_cb), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", gcpinbal_state, scanline_cb, "screen", 0, 1)
EEPROM_93C46_16BIT(config, "eeprom");
- MB3773(config, m_watchdog, 0);
+ MCFG_DEVICE_ADD("watchdog", MB3773, 0)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */);
- m_screen->set_size(40*8, 32*8);
- m_screen->set_visarea(0*8, 40*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(gcpinbal_state::screen_update_gcpinbal));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gcpinbal_state, screen_update_gcpinbal)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_gcpinbal);
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 4096);
@@ -381,7 +381,8 @@ void gcpinbal_state::gcpinbal(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30);
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
ES8712(config, m_essnd, 0);
m_essnd->reset_handler().set_inputline("maincpu", 3);
@@ -392,7 +393,7 @@ void gcpinbal_state::gcpinbal(machine_config &config)
msm.vck_legacy_callback().set("essnd", FUNC(es8712_device::msm_int));
msm.set_prescaler_selector(msm6585_device::S40); /* 16 kHz */
msm.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/gei.cpp b/src/mame/drivers/gei.cpp
index f6726c18c9d..38935e17f2c 100644
--- a/src/mame/drivers/gei.cpp
+++ b/src/mame/drivers/gei.cpp
@@ -978,20 +978,19 @@ INTERRUPT_GEN_MEMBER(gei_state::vblank_irq)
}
-void gei_state::getrivia(machine_config &config)
-{
- Z80(config, m_maincpu, 4000000); /* 4 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &gei_state::getrivia_map);
- m_maincpu->set_vblank_int("screen", FUNC(gei_state::vblank_irq));
+MACHINE_CONFIG_START(gei_state::getrivia)
+ MCFG_DEVICE_ADD("maincpu",Z80,4000000) /* 4 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(getrivia_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gei_state, vblank_irq)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_screen_update(FUNC(gei_state::screen_update));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(48, 511-48, 16, 255-16);
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_UPDATE_DRIVER(gei_state, screen_update)
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(48, 511-48, 16, 255-16)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::GBR_3BIT);
@@ -1007,99 +1006,99 @@ void gei_state::getrivia(machine_config &config)
m_ppi[1]->out_pb_callback().set(FUNC(gei_state::lamps_w));
m_ppi[1]->out_pc_callback().set(FUNC(gei_state::lamps2_w));
- TICKET_DISPENSER(config, m_ticket, attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.99);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.99)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
-void gei_state::findout(machine_config &config)
-{
+MACHINE_CONFIG_START(gei_state::findout)
getrivia(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &gei_state::findout_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(findout_map)
m_ppi[1]->in_pc_callback().set(FUNC(gei_state::portC_r));
m_ppi[1]->out_pc_callback().set_nop();
-}
+MACHINE_CONFIG_END
-void gei_state::quizvid(machine_config &config)
-{
+MACHINE_CONFIG_START(gei_state::quizvid)
findout(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &gei_state::quizvid_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(quizvid_map)
PALETTE(config.replace(), "palette", palette_device::GRB_3BIT);
-}
+MACHINE_CONFIG_END
-void gei_state::gselect(machine_config &config)
-{
+MACHINE_CONFIG_START(gei_state::gselect)
getrivia(config);
/* basic machine hardware */
- config.device_remove("ticket");
+ MCFG_DEVICE_REMOVE("ticket")
- m_maincpu->set_addrmap(AS_PROGRAM, &gei_state::gselect_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(gselect_map)
m_ppi[0]->out_pc_callback().set(FUNC(gei_state::sound2_w));
m_ppi[1]->in_pc_callback().set_ioport("IN2");
m_ppi[1]->out_pc_callback().set(FUNC(gei_state::nmi_w));
-}
+MACHINE_CONFIG_END
-void gei_state::jokpokera(machine_config &config)
-{
+MACHINE_CONFIG_START(gei_state::jokpokera)
getrivia(config);
/* basic machine hardware */
- config.device_remove("ticket");
+ MCFG_DEVICE_REMOVE("ticket")
- m_maincpu->set_addrmap(AS_PROGRAM, &gei_state::gselect_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(gselect_map)
+MACHINE_CONFIG_END
-void gei_state::amuse(machine_config &config)
-{
+MACHINE_CONFIG_START(gei_state::amuse)
getrivia(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &gei_state::amuse_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(amuse_map)
+MACHINE_CONFIG_END
-void gei_state::gepoker(machine_config &config)
-{
+MACHINE_CONFIG_START(gei_state::gepoker)
getrivia(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &gei_state::gepoker_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(gepoker_map)
+MACHINE_CONFIG_END
-void gei_state::amuse1(machine_config &config)
-{
+MACHINE_CONFIG_START(gei_state::amuse1)
getrivia(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &gei_state::amuse1_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(amuse1_map)
+MACHINE_CONFIG_END
-void gei_state::suprpokr(machine_config &config)
-{
+MACHINE_CONFIG_START(gei_state::suprpokr)
getrivia(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &gei_state::suprpokr_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(suprpokr_map)
+MACHINE_CONFIG_END
-void gei_state::sprtauth(machine_config &config)
-{
+MACHINE_CONFIG_START(gei_state::sprtauth)
getrivia(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &gei_state::sprtauth_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sprtauth_map)
+MACHINE_CONFIG_END
/***************************************************
diff --git a/src/mame/drivers/geneve.cpp b/src/mame/drivers/geneve.cpp
index dac68a00d45..d0849d802be 100644
--- a/src/mame/drivers/geneve.cpp
+++ b/src/mame/drivers/geneve.cpp
@@ -230,11 +230,11 @@ public:
private:
// CRU (Communication Register Unit) handling
- uint8_t cruread(offs_t offset);
- void cruwrite(offs_t offset, uint8_t data);
+ DECLARE_READ8_MEMBER(cruread);
+ DECLARE_WRITE8_MEMBER(cruwrite);
// Connections with the system interface TMS9901
- uint8_t read_by_9901(offs_t offset);
+ DECLARE_READ8_MEMBER(read_by_9901);
DECLARE_WRITE_LINE_MEMBER(peripheral_bus_reset);
DECLARE_WRITE_LINE_MEMBER(VDP_reset);
DECLARE_WRITE_LINE_MEMBER(joystick_select);
@@ -244,9 +244,9 @@ private:
DECLARE_WRITE_LINE_MEMBER(clock_out);
DECLARE_WRITE_LINE_MEMBER(dbin_line);
- void external_operation(offs_t offset, uint8_t data);
+ DECLARE_WRITE8_MEMBER(external_operation);
- void tms9901_interrupt(offs_t offset, uint8_t data);
+ DECLARE_WRITE8_MEMBER(tms9901_interrupt);
DECLARE_WRITE_LINE_MEMBER( keyboard_interrupt );
@@ -306,8 +306,11 @@ void geneve_state::memmap_setoffset(address_map &map)
*/
void geneve_state::crumap(address_map &map)
{
- map(0x0000, 0xffff).rw(FUNC(geneve_state::cruread), FUNC(geneve_state::cruwrite));
- map(0x0000, 0x003f).rw(m_tms9901, FUNC(tms9901_device::read), FUNC(tms9901_device::write));
+ map(0x0000, 0x0fff).r(FUNC(geneve_state::cruread));
+ map(0x0000, 0x0003).r(m_tms9901, FUNC(tms9901_device::read));
+
+ map(0x0000, 0x7fff).w(FUNC(geneve_state::cruwrite));
+ map(0x0000, 0x001f).w(m_tms9901, FUNC(tms9901_device::write));
}
static INPUT_PORTS_START(geneve_common)
@@ -357,7 +360,7 @@ INPUT_PORTS_END
#define CRU_CONTROL_BASE 0x1ee0
#define CRU_SSTEP_BASE 0x13c0
-void geneve_state::cruwrite(offs_t offset, uint8_t data)
+WRITE8_MEMBER ( geneve_state::cruwrite )
{
int addroff = offset << 1;
@@ -424,14 +427,14 @@ void geneve_state::cruwrite(offs_t offset, uint8_t data)
}
else
{
- m_peribox->cruwrite(addroff, data);
+ m_peribox->cruwrite(space, addroff, data);
}
}
-uint8_t geneve_state::cruread(offs_t offset)
+READ8_MEMBER( geneve_state::cruread )
{
uint8_t value = 0;
- uint16_t addroff = offset << 1;
+ int addroff = offset << 4;
// Single step
// 13c0 - 13fe: 0001 0011 11xx xxx0
@@ -446,7 +449,7 @@ uint8_t geneve_state::cruread(offs_t offset)
// so we just don't arrive here
// Propagate the CRU access to external devices
- m_peribox->crureadz(addroff, &value);
+ m_peribox->crureadz(space, addroff, &value);
return value;
}
@@ -454,7 +457,7 @@ uint8_t geneve_state::cruread(offs_t offset)
CRU callbacks
***********************************************************************/
-uint8_t geneve_state::read_by_9901(offs_t offset)
+READ8_MEMBER( geneve_state::read_by_9901 )
{
int answer = 0;
@@ -562,7 +565,7 @@ WRITE_LINE_MEMBER( geneve_state::video_wait_states )
but again it is ignored. Anyway, the TMS9995 has only two external inputs
(INT1 and INT4).
*/
-void geneve_state::tms9901_interrupt(offs_t offset, uint8_t data)
+WRITE8_MEMBER( geneve_state::tms9901_interrupt )
{
/* INTREQ is connected to INT1. */
m_cpu->set_input_line(INT_9995_INT1, data);
@@ -632,7 +635,7 @@ WRITE_LINE_MEMBER( geneve_state::keyboard_interrupt )
m_tms9901->set_single_int(8, state);
}
-void geneve_state::external_operation(offs_t offset, uint8_t data)
+WRITE8_MEMBER( geneve_state::external_operation )
{
static char const *const extop[8] = { "inv1", "inv2", "IDLE", "RSET", "inv3", "CKON", "CKOF", "LREX" };
if (offset != IDLE_OP)
@@ -644,7 +647,6 @@ void geneve_state::external_operation(offs_t offset, uint8_t data)
*/
WRITE_LINE_MEMBER( geneve_state::clock_out )
{
- m_tms9901->phi_line(state);
m_mapper->clock_in(state);
}
@@ -692,8 +694,7 @@ void geneve_state::machine_reset()
m_joyport->write_port(0x01); // select Joystick 1
}
-void geneve_state::geneve(machine_config &config)
-{
+MACHINE_CONFIG_START(geneve_state::geneve)
geneve_common(config);
// Mapper
@@ -705,10 +706,9 @@ void geneve_state::geneve(machine_config &config)
m_peribox->inta_cb().set(FUNC(geneve_state::inta));
m_peribox->intb_cb().set(FUNC(geneve_state::intb));
m_peribox->ready_cb().set(FUNC(geneve_state::ext_ready));
-}
+MACHINE_CONFIG_END
-void geneve_state::genmod(machine_config &config)
-{
+MACHINE_CONFIG_START(geneve_state::genmod)
geneve_common(config);
// Mapper
@@ -720,10 +720,9 @@ void geneve_state::genmod(machine_config &config)
m_peribox->inta_cb().set(FUNC(geneve_state::inta));
m_peribox->intb_cb().set(FUNC(geneve_state::intb));
m_peribox->ready_cb().set(FUNC(geneve_state::ext_ready));
-}
+MACHINE_CONFIG_END
-void geneve_state::geneve_common(machine_config &config)
-{
+MACHINE_CONFIG_START(geneve_state::geneve_common)
// basic machine hardware
// TMS9995 CPU @ 12.0 MHz
TMS9995(config, m_cpu, 12000000);
@@ -750,7 +749,7 @@ void geneve_state::geneve_common(machine_config &config)
screen.set_screen_update(TI_VDP_TAG, FUNC(v99x8_device::screen_update));
// Main board components
- TMS9901(config, m_tms9901, 0);
+ TMS9901(config, m_tms9901, 3000000);
m_tms9901->read_cb().set(FUNC(geneve_state::read_by_9901));
m_tms9901->p_out_cb(0).set(FUNC(geneve_state::peripheral_bus_reset));
m_tms9901->p_out_cb(1).set(FUNC(geneve_state::VDP_reset));
@@ -786,7 +785,7 @@ void geneve_state::geneve_common(machine_config &config)
// SRAM 384K (max; stock Geneve: 32K, but later MDOS releases require 64K)
RAM(config, GENEVE_SRAM_TAG).set_default_size("384K").set_default_value(0);
-}
+MACHINE_CONFIG_END
/*
ROM loading
diff --git a/src/mame/drivers/geniusiq.cpp b/src/mame/drivers/geniusiq.cpp
index ea3d83e356b..fc916f4daf7 100644
--- a/src/mame/drivers/geniusiq.cpp
+++ b/src/mame/drivers/geniusiq.cpp
@@ -700,18 +700,18 @@ DEVICE_IMAGE_UNLOAD_MEMBER(geniusiq_state,iq128_cart)
MACHINE_CONFIG_START(geniusiq_state::iq128)
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(32'000'000)/2); // The main crystal is at 32MHz, not sure whats the CPU freq
- m_maincpu->set_addrmap(AS_PROGRAM, &geniusiq_state::geniusiq_mem);
- m_maincpu->set_periodic_int(FUNC(geniusiq_state::irq6_line_hold), attotime::from_hz(125)); // the internal clock is increased by 1 sec every 125 interrupts
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(32'000'000)/2) // The main crystal is at 32MHz, not sure whats the CPU freq
+ MCFG_DEVICE_PROGRAM_MAP(geniusiq_mem)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(geniusiq_state, irq6_line_hold, 125) // the internal clock is increased by 1 sec every 125 interrupts
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(512, 256);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(geniusiq_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER( geniusiq_state, screen_update )
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(geniusiq_state::geniusiq_palette), 16);
@@ -724,7 +724,7 @@ MACHINE_CONFIG_START(geniusiq_state::iq128)
MCFG_GENERIC_UNLOAD(geniusiq_state, iq128_cart)
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("iq128");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "iq128")
MACHINE_CONFIG_END
void geniusiq_state::iqtv512(machine_config &config)
diff --git a/src/mame/drivers/genpc.cpp b/src/mame/drivers/genpc.cpp
index da5d14d25b9..e6fc7c16bc0 100644
--- a/src/mame/drivers/genpc.cpp
+++ b/src/mame/drivers/genpc.cpp
@@ -54,62 +54,63 @@ static DEVICE_INPUT_DEFAULTS_START(vga)
DEVICE_INPUT_DEFAULTS("DSW0",0x30, 0x00)
DEVICE_INPUT_DEFAULTS_END
-void genpc_state::pcmda(machine_config &config)
-{
+MACHINE_CONFIG_START(genpc_state::pcmda)
/* basic machine hardware */
- I8088(config, m_maincpu, 4772720);
- m_maincpu->set_addrmap(AS_PROGRAM, &genpc_state::pc8_map);
- m_maincpu->set_addrmap(AS_IO, &genpc_state::pc8_io);
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I8088, 4772720)
+ MCFG_DEVICE_PROGRAM_MAP(pc8_map)
+ MCFG_DEVICE_IO_MAP(pc8_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
- IBM5160_MOTHERBOARD(config, "mb", 0).set_cputag(m_maincpu);
+ MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu")
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "mda", false); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, "com", false);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, "fdc_xt", false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "hdc", false);
- ISA8_SLOT(config, "isa5", 0, "mb:isa", pc_isa8_cards, "adlib", false);
- ISA8_SLOT(config, "isa6", 0, "mb:isa", pc_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "mda", false) // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "hdc", false)
+ MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "adlib", false)
+ MCFG_DEVICE_ADD("isa6", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
/* keyboard */
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
+ MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
/* software lists */
- SOFTWARE_LIST(config, "disk_list").set_original("ibm5150");
-}
+ MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
+MACHINE_CONFIG_END
-void genpc_state::pcherc(machine_config &config)
-{
+MACHINE_CONFIG_START(genpc_state::pcherc)
pcmda(config);
- subdevice<isa8_slot_device>("isa1")->set_default_option("hercules");
-}
+ MCFG_DEVICE_MODIFY("isa1")
+ MCFG_DEVICE_SLOT_INTERFACE(pc_isa8_cards, "hercules", false)
+MACHINE_CONFIG_END
-void genpc_state::pccga(machine_config &config)
-{
+MACHINE_CONFIG_START(genpc_state::pccga)
pcmda(config);
- subdevice<ibm5160_mb_device>("mb")->set_input_default(DEVICE_INPUT_DEFAULTS_NAME(cga));
- subdevice<isa8_slot_device>("isa1")->set_default_option("cga");
-}
+ MCFG_DEVICE_MODIFY("mb")
+ MCFG_DEVICE_INPUT_DEFAULTS(cga)
+ MCFG_DEVICE_MODIFY("isa1")
+ MCFG_DEVICE_SLOT_INTERFACE(pc_isa8_cards, "cga", false)
+MACHINE_CONFIG_END
-void genpc_state::pcega(machine_config &config)
-{
+MACHINE_CONFIG_START(genpc_state::pcega)
pccga(config);
- subdevice<isa8_slot_device>("isa1")->set_default_option("ega");
- subdevice<ibm5160_mb_device>("mb")->set_input_default(DEVICE_INPUT_DEFAULTS_NAME(vga));
-}
+ MCFG_DEVICE_MODIFY("isa1")
+ MCFG_DEVICE_SLOT_INTERFACE(pc_isa8_cards, "ega", false)
+ MCFG_DEVICE_MODIFY("mb")
+ MCFG_DEVICE_INPUT_DEFAULTS(vga)
+MACHINE_CONFIG_END
-void genpc_state::pcvga(machine_config &config)
-{
+MACHINE_CONFIG_START(genpc_state::pcvga)
pcega(config);
- subdevice<isa8_slot_device>("isa1")->set_default_option("vga");
-}
+ MCFG_DEVICE_MODIFY("isa1")
+ MCFG_DEVICE_SLOT_INTERFACE(pc_isa8_cards, "vga", false)
+MACHINE_CONFIG_END
ROM_START(pc)
ROM_REGION(0x02000, "bios", 0)
diff --git a/src/mame/drivers/ggconnie.cpp b/src/mame/drivers/ggconnie.cpp
index 0bb0e881fda..4507667f359 100644
--- a/src/mame/drivers/ggconnie.cpp
+++ b/src/mame/drivers/ggconnie.cpp
@@ -37,33 +37,20 @@ public:
: pce_common_state(mconfig, type, tag)
, m_rtc(*this, "rtc")
, m_oki(*this, "oki")
- , m_okibank(*this, "okibank")
{ }
void ggconnie(machine_config &config);
-protected:
- virtual void machine_start() override;
-
private:
DECLARE_WRITE8_MEMBER(lamp_w);
DECLARE_WRITE8_MEMBER(output_w);
DECLARE_WRITE8_MEMBER(oki_bank_w);
void sgx_io(address_map &map);
void sgx_mem(address_map &map);
- void oki_map(address_map &map);
-
required_device <msm6242_device> m_rtc;
required_device <okim6295_device> m_oki;
- required_memory_bank m_okibank;
};
-
-void ggconnie_state::machine_start()
-{
- m_okibank->configure_entries(0, 8, memregion("oki")->base(), 0x10000);
-}
-
WRITE8_MEMBER(ggconnie_state::lamp_w)
{
output().set_value("lamp", !BIT(data,0));
@@ -74,11 +61,10 @@ WRITE8_MEMBER(ggconnie_state::output_w)
// written in "Output Test" in test mode
}
-// TODO: banking not understood for ggconnie (writes to 0x01f7400-03 range, while smf only to 00). Is the ROM dumped correctly btw?
+/* TODO: banking not understood (is the ROM dumped correctly btw?) */
WRITE8_MEMBER(ggconnie_state::oki_bank_w)
{
- m_okibank->set_entry(data & 0x07);
- // popmessage("offset: %02x, bank: %02x\n", offset, data);
+ m_oki->set_rom_bank(data != 0);
}
@@ -92,7 +78,7 @@ void ggconnie_state::sgx_mem(address_map &map)
map(0x1f7100, 0x1f7100).portr("SWB");
map(0x1f7200, 0x1f7200).portr("SWC");
map(0x1f7300, 0x1f7300).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- map(0x1f7400, 0x1f7403).w(FUNC(ggconnie_state::oki_bank_w));
+ map(0x1f7400, 0x1f74ff).w(FUNC(ggconnie_state::oki_bank_w));
map(0x1f7500, 0x1f750f).rw(m_rtc, FUNC(msm6242_device::read), FUNC(msm6242_device::write));
map(0x1f7700, 0x1f7700).portr("IN1");
map(0x1f7800, 0x1f7800).w(FUNC(ggconnie_state::output_w));
@@ -107,11 +93,6 @@ void ggconnie_state::sgx_io(address_map &map)
map(0x00, 0x03).rw("huc6202", FUNC(huc6202_device::io_read), FUNC(huc6202_device::io_write));
}
-void ggconnie_state::oki_map(address_map &map)
-{
- map(0x00000, 0x0ffff).bankr(m_okibank);
- map(0x10000, 0x3ffff).rom().region("oki", 0);
-}
static INPUT_PORTS_START(ggconnie)
PORT_START("IN0")
@@ -281,8 +262,7 @@ static INPUT_PORTS_START(smf)
INPUT_PORTS_END
-void ggconnie_state::ggconnie(machine_config &config)
-{
+MACHINE_CONFIG_START(ggconnie_state::ggconnie)
/* basic machine hardware */
H6280(config, m_maincpu, PCE_MAIN_CLOCK/3);
m_maincpu->set_addrmap(AS_PROGRAM, &ggconnie_state::sgx_mem);
@@ -293,49 +273,45 @@ void ggconnie_state::ggconnie(machine_config &config)
m_maincpu->add_route(1, "rspeaker", 1.00);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(PCE_MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242);
- screen.set_screen_update(FUNC(ggconnie_state::screen_update));
- screen.set_palette(m_huc6260);
-
- HUC6260(config, m_huc6260, PCE_MAIN_CLOCK);
- m_huc6260->next_pixel_data().set("huc6202", FUNC(huc6202_device::next_pixel));
- m_huc6260->time_til_next_event().set("huc6202", FUNC(huc6202_device::time_until_next_event));
- m_huc6260->vsync_changed().set("huc6202", FUNC(huc6202_device::vsync_changed));
- m_huc6260->hsync_changed().set("huc6202", FUNC(huc6202_device::hsync_changed));
-
- huc6270_device &huc6270_0(HUC6270(config, "huc6270_0", 0));
- huc6270_0.set_vram_size(0x10000);
- huc6270_0.irq().set_inputline(m_maincpu, 0);
-
- huc6270_device &huc6270_1(HUC6270(config, "huc6270_1", 0));
- huc6270_1.set_vram_size(0x10000);
- huc6270_1.irq().set_inputline(m_maincpu, 0);
-
- huc6202_device &huc6202(HUC6202(config, "huc6202", 0 ));
- huc6202.next_pixel_0_callback().set("huc6270_0", FUNC(huc6270_device::next_pixel));
- huc6202.time_til_next_event_0_callback().set("huc6270_0", FUNC(huc6270_device::time_until_next_event));
- huc6202.vsync_changed_0_callback().set("huc6270_0", FUNC(huc6270_device::vsync_changed));
- huc6202.hsync_changed_0_callback().set("huc6270_0", FUNC(huc6270_device::hsync_changed));
- huc6202.read_0_callback().set("huc6270_0", FUNC(huc6270_device::read));
- huc6202.write_0_callback().set("huc6270_0", FUNC(huc6270_device::write));
- huc6202.next_pixel_1_callback().set("huc6270_1", FUNC(huc6270_device::next_pixel));
- huc6202.time_til_next_event_1_callback().set("huc6270_1", FUNC(huc6270_device::time_until_next_event));
- huc6202.vsync_changed_1_callback().set("huc6270_1", FUNC(huc6270_device::vsync_changed));
- huc6202.hsync_changed_1_callback().set("huc6270_1", FUNC(huc6270_device::hsync_changed));
- huc6202.read_1_callback().set("huc6270_1", FUNC(huc6270_device::read));
- huc6202.write_1_callback().set("huc6270_1", FUNC(huc6270_device::write));
-
- MSM6242(config, m_rtc, XTAL(32'768));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK/3, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242)
+ MCFG_SCREEN_UPDATE_DRIVER( ggconnie_state, screen_update )
+ MCFG_SCREEN_PALETTE("huc6260")
+
+ MCFG_DEVICE_ADD("huc6260", HUC6260, PCE_MAIN_CLOCK/3)
+ MCFG_HUC6260_NEXT_PIXEL_DATA_CB(READ16("huc6202", huc6202_device, next_pixel))
+ MCFG_HUC6260_TIME_TIL_NEXT_EVENT_CB(READ16("huc6202", huc6202_device, time_until_next_event))
+ MCFG_HUC6260_VSYNC_CHANGED_CB(WRITELINE("huc6202", huc6202_device, vsync_changed))
+ MCFG_HUC6260_HSYNC_CHANGED_CB(WRITELINE("huc6202", huc6202_device, hsync_changed))
+ MCFG_DEVICE_ADD( "huc6270_0", HUC6270, 0 )
+ MCFG_HUC6270_VRAM_SIZE(0x10000)
+ MCFG_HUC6270_IRQ_CHANGED_CB(INPUTLINE("maincpu", 0))
+ MCFG_DEVICE_ADD( "huc6270_1", HUC6270, 0 )
+ MCFG_HUC6270_VRAM_SIZE(0x10000)
+ MCFG_HUC6270_IRQ_CHANGED_CB(INPUTLINE("maincpu", 0))
+ MCFG_DEVICE_ADD( "huc6202", HUC6202, 0 )
+ MCFG_HUC6202_NEXT_PIXEL_0_CB(READ16("huc6270_0", huc6270_device, next_pixel))
+ MCFG_HUC6202_TIME_TIL_NEXT_EVENT_0_CB(READ16("huc6270_0", huc6270_device, time_until_next_event))
+ MCFG_HUC6202_VSYNC_CHANGED_0_CB(WRITELINE("huc6270_0", huc6270_device, vsync_changed))
+ MCFG_HUC6202_HSYNC_CHANGED_0_CB(WRITELINE("huc6270_0", huc6270_device, hsync_changed))
+ MCFG_HUC6202_READ_0_CB(READ8("huc6270_0", huc6270_device, read))
+ MCFG_HUC6202_WRITE_0_CB(WRITE8("huc6270_0", huc6270_device, write))
+ MCFG_HUC6202_NEXT_PIXEL_1_CB(READ16("huc6270_1", huc6270_device, next_pixel))
+ MCFG_HUC6202_TIME_TIL_NEXT_EVENT_1_CB(READ16("huc6270_1", huc6270_device, time_until_next_event))
+ MCFG_HUC6202_VSYNC_CHANGED_1_CB(WRITELINE("huc6270_1", huc6270_device, vsync_changed))
+ MCFG_HUC6202_HSYNC_CHANGED_1_CB(WRITELINE("huc6270_1", huc6270_device, hsync_changed))
+ MCFG_HUC6202_READ_1_CB(READ8("huc6270_1", huc6270_device, read))
+ MCFG_HUC6202_WRITE_1_CB(WRITE8("huc6270_1", huc6270_device, write))
+
+ MCFG_DEVICE_ADD("rtc", MSM6242, XTAL(32'768))
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- OKIM6295(config, m_oki, PCE_MAIN_CLOCK/12, okim6295_device::PIN7_HIGH); /* unknown clock / pin 7 */
- m_oki->set_addrmap(0, &ggconnie_state::oki_map);
- m_oki->add_route(ALL_OUTPUTS, "lspeaker", 1.00);
- m_oki->add_route(ALL_OUTPUTS, "rspeaker", 1.00);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, PCE_MAIN_CLOCK/12, okim6295_device::PIN7_HIGH) /* unknown clock / pin 7 */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00)
+MACHINE_CONFIG_END
ROM_START(ggconnie)
ROM_REGION( 0x180000, "maincpu", 0 )
@@ -347,7 +323,7 @@ ROM_START(ggconnie)
ROM_LOAD( "adpcm_u31.bin", 0x00000, 0x80000, CRC(de514c2b) SHA1(da73aa825d73646f556f6d4dbb46f43acf7c3357) )
ROM_END
-// TODO: verify OKI banking, hopper, lamps
+// TODO: runs too slow (seems to run ok removing the /3 divider), OKI banking, hopper, lamps
ROM_START(smf)
ROM_REGION( 0x180000, "maincpu", 0 )
ROM_LOAD( "smf03.u3", 0x000000, 0x80000, CRC(2435ff3d) SHA1(4de1c5c2ed4ce2be5f3bb3fd31e176c8e24c7155) ) // 27c040
diff --git a/src/mame/drivers/ghosteo.cpp b/src/mame/drivers/ghosteo.cpp
index 2ef6214f5f8..f893214d78c 100644
--- a/src/mame/drivers/ghosteo.cpp
+++ b/src/mame/drivers/ghosteo.cpp
@@ -93,7 +93,6 @@ public:
, m_maincpu(*this, "maincpu")
, m_i2cmem(*this, "i2cmem")
, m_s3c2410(*this, "s3c2410")
- , m_qs1000(*this, "qs1000")
, m_soundlatch(*this, "soundlatch")
, m_system_memory(*this, "systememory")
, m_flash(*this, "flash")
@@ -111,7 +110,6 @@ private:
required_device<cpu_device> m_maincpu;
required_device<i2cmem_device> m_i2cmem;
required_device<s3c2410_device> m_s3c2410;
- required_device<qs1000_device> m_qs1000;
required_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<uint32_t> m_system_memory;
required_region_ptr<uint8_t> m_flash;
@@ -594,7 +592,7 @@ READ32_MEMBER(ghosteo_state::bballoon_speedup_r)
void ghosteo_state::machine_start()
{
// Set up the QS1000 program ROM banking, taking care not to overlap the internal RAM
- m_qs1000->cpu().space(AS_IO).install_read_bank(0x0100, 0xffff, "bank");
+ machine().device("qs1000:cpu")->memory().space(AS_IO).install_read_bank(0x0100, 0xffff, "bank");
membank("qs1000:bank")->configure_entries(0, 8, memregion("qs1000:cpu")->base()+0x100, 0x10000);
}
@@ -642,17 +640,17 @@ void ghosteo_state::ghosteo(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
GENERIC_LATCH_8(config, m_soundlatch);
- m_soundlatch->data_pending_callback().set(m_qs1000, FUNC(qs1000_device::set_irq));
+ m_soundlatch->data_pending_callback().set("qs1000", FUNC(qs1000_device::set_irq));
m_soundlatch->set_separate_acknowledge(true);
- QS1000(config, m_qs1000, XTAL(24'000'000));
- m_qs1000->set_external_rom(true);
- m_qs1000->p1_in().set("soundlatch", FUNC(generic_latch_8_device::read));
- m_qs1000->p1_out().set(FUNC(ghosteo_state::qs1000_p1_w));
- m_qs1000->p2_out().set(FUNC(ghosteo_state::qs1000_p2_w));
- m_qs1000->p3_out().set(FUNC(ghosteo_state::qs1000_p3_w));
- m_qs1000->add_route(0, "lspeaker", 1.0);
- m_qs1000->add_route(1, "rspeaker", 1.0);
+ qs1000_device &qs1000(QS1000(config, "qs1000", XTAL(24'000'000)));
+ qs1000.set_external_rom(true);
+ qs1000.p1_in().set("soundlatch", FUNC(generic_latch_8_device::read));
+ qs1000.p1_out().set(FUNC(ghosteo_state::qs1000_p1_w));
+ qs1000.p2_out().set(FUNC(ghosteo_state::qs1000_p2_w));
+ qs1000.p3_out().set(FUNC(ghosteo_state::qs1000_p3_w));
+ qs1000.add_route(0, "lspeaker", 1.0);
+ qs1000.add_route(1, "rspeaker", 1.0);
}
void ghosteo_state::bballoon(machine_config &config)
diff --git a/src/mame/drivers/giclassic.cpp b/src/mame/drivers/giclassic.cpp
index 7e0c2a7377e..0e06edbaa0b 100644
--- a/src/mame/drivers/giclassic.cpp
+++ b/src/mame/drivers/giclassic.cpp
@@ -295,21 +295,21 @@ void giclassicsvr_state::machine_reset()
{
}
-void giclassic_state::giclassic(machine_config &config)
-{
+MACHINE_CONFIG_START(giclassic_state::giclassic)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(20'000'000) / 2); // PCB is marked "68000 12 MHz", but only visible osc is 20 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &giclassic_state::satellite_main);
- m_maincpu->set_vblank_int("screen", FUNC(giclassic_state::giclassic_interrupt));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(20'000'000) / 2) // PCB is marked "68000 12 MHz", but only visible osc is 20 MHz
+ MCFG_DEVICE_PROGRAM_MAP(satellite_main)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", giclassic_state, giclassic_interrupt)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.62);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(600, 384);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(giclassic_state::screen_update_giclassic));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.62)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(600, 384)
+ MCFG_SCREEN_VISIBLE_AREA(0, 599, 0, 383)
+ MCFG_SCREEN_UPDATE_DRIVER(giclassic_state, screen_update_giclassic)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 256);
m_palette->enable_shadows();
@@ -318,22 +318,23 @@ void giclassic_state::giclassic(machine_config &config)
m_k056832->set_tile_callback(FUNC(giclassic_state::tile_callback), this);
m_k056832->set_config("gfx1", K056832_BPP_4PIRATESH, 1, 0);
m_k056832->set_palette(m_palette);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(giclassicsvr_state::giclassvr)
-void giclassicsvr_state::giclassvr(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000)); // unknown speed
- m_maincpu->set_addrmap(AS_PROGRAM, &giclassicsvr_state::server_main);
- m_maincpu->set_vblank_int("screen", FUNC(giclassicsvr_state::giclassicsvr_interrupt));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)) // unknown speed
+ MCFG_DEVICE_PROGRAM_MAP(server_main)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", giclassicsvr_state, giclassicsvr_interrupt)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.62);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(giclassicsvr_state::screen_update_giclassicsvr));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.62)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(600, 384)
+ MCFG_SCREEN_VISIBLE_AREA(0, 599, 0, 383)
+ MCFG_SCREEN_UPDATE_DRIVER(giclassicsvr_state, screen_update_giclassicsvr)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 16384);
m_palette->enable_shadows();
@@ -350,7 +351,7 @@ void giclassicsvr_state::giclassvr(machine_config &config)
K053252(config, "k053252a", XTAL(32'000'000)/4).set_offsets(40, 16); // TODO
K053252(config, "k053252b", XTAL(32'000'000)/4).set_offsets(40, 16); // TODO
-}
+MACHINE_CONFIG_END
ROM_START( giclasex )
ROM_REGION( 0x80000, "maincpu", 0 ) /* main program */
diff --git a/src/mame/drivers/gimix.cpp b/src/mame/drivers/gimix.cpp
index 172067f6c6a..9bb836521ca 100644
--- a/src/mame/drivers/gimix.cpp
+++ b/src/mame/drivers/gimix.cpp
@@ -481,15 +481,14 @@ static void gimix_floppies(device_slot_interface &device)
device.option_add("8dd", FLOPPY_8_DSDD);
}
-void gimix_state::gimix(machine_config &config)
-{
+MACHINE_CONFIG_START(gimix_state::gimix)
// basic machine hardware
- MC6809(config, m_maincpu, 8_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &gimix_state::gimix_mem);
+ MCFG_DEVICE_ADD("maincpu", MC6809, 8_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(gimix_mem)
/* rtc */
- mm58167_device &rtc(MM58167(config, "rtc", 32.768_kHz_XTAL));
- rtc.irq().set(FUNC(gimix_state::irq_w));
+ MCFG_DEVICE_ADD("rtc", MM58167, 32.768_kHz_XTAL)
+ MCFG_MM58167_IRQ_CALLBACK(WRITELINE(*this, gimix_state,irq_w))
/* timer */
ptm6840_device &ptm(PTM6840(config, "timer", 2'000'000)); // clock is a guess
@@ -500,8 +499,8 @@ void gimix_state::gimix(machine_config &config)
m_fdc->intrq_wr_callback().set(FUNC(gimix_state::fdc_irq_w));
m_fdc->drq_wr_callback().set(FUNC(gimix_state::fdc_drq_w));
m_fdc->set_force_ready(true);
- FLOPPY_CONNECTOR(config, "fdc:0", gimix_floppies, "525hd", gimix_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", gimix_floppies, "525hd", gimix_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", gimix_floppies, "525hd", gimix_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", gimix_floppies, "525hd", gimix_state::floppy_formats)
/* parallel ports */
pia6821_device &pia1(PIA6821(config, "pia1", 2'000'000));
@@ -560,12 +559,12 @@ void gimix_state::gimix(machine_config &config)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("128K").set_extra_options("56K,256K,512K");
- SOFTWARE_LIST(config, "flop_list").set_original("gimix");
+ MCFG_SOFTWARE_LIST_ADD("flop_list","gimix")
// uncomment this timer to use a hack that generates a regular IRQ, this will get OS-9 to boot
// for some unknown reason, OS-9 does not touch the 6840, and only clears/disables IRQs on the RTC
- //TIMER(config, "test_timer").configure_periodic(FUNC(gimix_state::test_timer_w), attotime::from_msec(100));
-}
+ //MCFG_TIMER_DRIVER_ADD_PERIODIC("test_timer",gimix_state,test_timer_w,attotime::from_msec(100))
+MACHINE_CONFIG_END
ROM_START( gimix )
ROM_REGION( 0x10000, "roms", 0)
diff --git a/src/mame/drivers/ginganin.cpp b/src/mame/drivers/ginganin.cpp
index 6e41e76af36..e8953a789e4 100644
--- a/src/mame/drivers/ginganin.cpp
+++ b/src/mame/drivers/ginganin.cpp
@@ -245,15 +245,15 @@ WRITE_LINE_MEMBER(ginganin_state::ptm_irq)
}
-void ginganin_state::ginganin(machine_config &config)
-{
+MACHINE_CONFIG_START(ginganin_state::ginganin)
+
/* basic machine hardware */
- M68000(config, m_maincpu, MAIN_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &ginganin_state::ginganin_map);
- m_maincpu->set_vblank_int("screen", FUNC(ginganin_state::irq1_line_hold)); /* ? (vectors 1-7 contain the same address) */
+ MCFG_DEVICE_ADD("maincpu", M68000, MAIN_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(ginganin_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ginganin_state, irq1_line_hold) /* ? (vectors 1-7 cointain the same address) */
- MC6809(config, m_audiocpu, SOUND_CLOCK); // MBL68B09?
- m_audiocpu->set_addrmap(AS_PROGRAM, &ginganin_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", MC6809, SOUND_CLOCK) // MBL68B09?
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
ptm6840_device &ptm(PTM6840(config, "6840ptm", SOUND_CLOCK/2));
@@ -261,15 +261,15 @@ void ginganin_state::ginganin(machine_config &config)
ptm.o1_callback().set(FUNC(ginganin_state::ptm_irq));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 255, 0 + 16 , 255 - 16);
- screen.set_screen_update(FUNC(ginganin_state::screen_update_ginganin));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_ginganin);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 0 + 16 , 255 - 16)
+ MCFG_SCREEN_UPDATE_DRIVER(ginganin_state, screen_update_ginganin)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_ginganin)
PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024);
/* sound hardware */
@@ -279,8 +279,9 @@ void ginganin_state::ginganin(machine_config &config)
YM2149(config, "psg", SOUND_CLOCK / 2).add_route(ALL_OUTPUTS, "mono", 0.10);
- Y8950(config, "ymsnd", SOUND_CLOCK).add_route(ALL_OUTPUTS, "mono", 1.0); /* The Y8950 is basically a YM3526 with ADPCM built in */
-}
+ MCFG_DEVICE_ADD("ymsnd", Y8950, SOUND_CLOCK) /* The Y8950 is basically a YM3526 with ADPCM built in */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/gizmondo.cpp b/src/mame/drivers/gizmondo.cpp
index 4a2d253795c..744d9f54e1e 100644
--- a/src/mame/drivers/gizmondo.cpp
+++ b/src/mame/drivers/gizmondo.cpp
@@ -189,19 +189,18 @@ void gizmondo_state::init_gizmondo()
// do nothing
}
-void gizmondo_state::gizmondo(machine_config &config)
-{
- ARM9(config, m_maincpu, 40000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &gizmondo_state::gizmondo_map);
+MACHINE_CONFIG_START(gizmondo_state::gizmondo)
+ MCFG_DEVICE_ADD("maincpu", ARM9, 40000000)
+ MCFG_DEVICE_PROGRAM_MAP(gizmondo_map)
- PALETTE(config, "palette").set_entries(32768);
+ MCFG_PALETTE_ADD("palette", 32768)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(320, 240);
- screen.set_visarea_full();
- screen.set_screen_update("gf4500", FUNC(gf4500_device::screen_update));
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(320, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320 - 1, 0, 240 - 1)
+ MCFG_SCREEN_UPDATE_DEVICE("gf4500", gf4500_device, screen_update)
GF4500(config, m_gf4500, 0);
@@ -216,7 +215,7 @@ void gizmondo_state::gizmondo(machine_config &config)
#if 0
MCFG_QUICKLOAD_ADD("quickload", gizmondo_state, wince, "bin", 0)
#endif
-}
+MACHINE_CONFIG_END
static INPUT_PORTS_START( gizmondo )
PORT_START( "PORTF-01" )
diff --git a/src/mame/drivers/gkigt.cpp b/src/mame/drivers/gkigt.cpp
index 4d5a4c41046..93f59f3fa01 100644
--- a/src/mame/drivers/gkigt.cpp
+++ b/src/mame/drivers/gkigt.cpp
@@ -86,7 +86,7 @@ PCB board that connects to 044 boards via J6 & J7
or 039 EPROM + SIMM software
More chips (from eBay auction):
- 2x Philips / NXT 28C94 quad UART (8 serial channels total)
+ 2x Phillips / NXT 28C94 quad UART (8 serial channels total)
ADV476 256 color RAMDAC
*/
@@ -607,35 +607,35 @@ static DEVICE_INPUT_DEFAULTS_START( terminal )
DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 )
DEVICE_INPUT_DEFAULTS_END
-void igt_gameking_state::igt_gameking(machine_config &config)
-{
+MACHINE_CONFIG_START(igt_gameking_state::igt_gameking)
+
/* basic machine hardware */
- I960(config, m_maincpu, XTAL(24'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &igt_gameking_state::igt_gameking_map);
+ MCFG_DEVICE_ADD("maincpu", I960, XTAL(24'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(igt_gameking_map)
- SC28C94(config, m_quart1, XTAL(24'000'000) / 6);
- m_quart1->d_tx_cb().set("diag", FUNC(rs232_port_device::write_txd));
+ MCFG_DEVICE_ADD("quart1", SC28C94, XTAL(24'000'000) / 6)
+ MCFG_SC28C94_D_TX_CALLBACK(WRITELINE("diag", rs232_port_device, write_txd))
- sc28c94_device &quart2(SC28C94(config, "quart2", XTAL(24'000'000) / 6));
- quart2.irq_cb().set_inputline(m_maincpu, I960_IRQ0);
+ MCFG_DEVICE_ADD("quart2", SC28C94, XTAL(24'000'000) / 6)
+ MCFG_MC68681_IRQ_CALLBACK(INPUTLINE("maincpu", I960_IRQ0))
rs232_port_device &diag(RS232_PORT(config, "diag", default_rs232_devices, nullptr));
diag.rxd_handler().set("quart1", FUNC(sc28c94_device::rx_d_w));
diag.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
- GFXDECODE(config, "gfxdecode", m_palette, gfx_igt_gameking);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_igt_gameking)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(1024, 512);
- m_screen->set_visarea(0, 640-1, 0, 480-1);
- m_screen->set_screen_update(FUNC(igt_gameking_state::screen_update_igt_gameking));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(igt_gameking_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(1024, 512)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igt_gameking_state, screen_update_igt_gameking)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, igt_gameking_state, vblank_irq))
// Xilinx used as video chip XTAL(26'666'666) on board
- PALETTE(config, m_palette).set_entries(0x100);
+ MCFG_PALETTE_ADD("palette", 0x100)
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette));
ramdac.set_addrmap(0, &igt_gameking_state::ramdac_map);
@@ -643,16 +643,17 @@ void igt_gameking_state::igt_gameking(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YMZ280B(config, "ymz", XTAL(16'934'400)).add_route(ALL_OUTPUTS, "mono", 1.0); // enhanced sound on optional Media-Lite sub board
+ MCFG_DEVICE_ADD("ymz", YMZ280B, XTAL(16'934'400)) // enhanced sound on optional Media-Lite sub board
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
-}
+MACHINE_CONFIG_END
-void igt_gameking_state::igt_ms72c(machine_config &config)
-{
+MACHINE_CONFIG_START(igt_gameking_state::igt_ms72c)
igt_gameking(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &igt_gameking_state::igt_ms72c_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(igt_ms72c_map)
+MACHINE_CONFIG_END
ROM_START( ms3 )
ROM_REGION( 0x80000, "maincpu", 0 )
diff --git a/src/mame/drivers/gladiatr.cpp b/src/mame/drivers/gladiatr.cpp
index a641ea11a38..fcf1e61e9f4 100644
--- a/src/mame/drivers/gladiatr.cpp
+++ b/src/mame/drivers/gladiatr.cpp
@@ -938,23 +938,23 @@ GFXDECODE_END
-void ppking_state::ppking(machine_config &config)
-{
+MACHINE_CONFIG_START(ppking_state::ppking)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 12_MHz_XTAL/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &ppking_state::ppking_cpu1_map);
- m_maincpu->set_addrmap(AS_IO, &ppking_state::ppking_cpu1_io);
- m_maincpu->set_vblank_int("screen", FUNC(ppking_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 12_MHz_XTAL/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(ppking_cpu1_map)
+ MCFG_DEVICE_IO_MAP(ppking_cpu1_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ppking_state, irq0_line_hold)
- Z80(config, m_subcpu, 12_MHz_XTAL/4); /* verified on pcb */
- m_subcpu->set_addrmap(AS_PROGRAM, &ppking_state::cpu2_map);
- m_subcpu->set_addrmap(AS_IO, &ppking_state::ppking_cpu2_io);
- m_subcpu->set_periodic_int(FUNC(ppking_state::irq0_line_assert), attotime::from_hz(60));
+ MCFG_DEVICE_ADD("sub", Z80, 12_MHz_XTAL/4) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(cpu2_map)
+ MCFG_DEVICE_IO_MAP(ppking_cpu2_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(ppking_state, irq0_line_assert, 60)
- MC6809(config, m_audiocpu, 12_MHz_XTAL/4); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &ppking_state::ppking_cpu3_map);
+ MCFG_DEVICE_ADD("audiocpu", MC6809, 12_MHz_XTAL/4) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(ppking_cpu3_map)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
MCFG_MACHINE_RESET_OVERRIDE(ppking_state, ppking)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -969,17 +969,17 @@ void ppking_state::ppking(machine_config &config)
mainlatch.q_out_cb<7>().set(FUNC(ppking_state::flipscreen_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
-// screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
-// screen.set_size(32*8, 32*8);
-// screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_raw(12_MHz_XTAL/2,384,0,256,264,16,240); // assume same as Arkanoid
- screen.set_screen_update(FUNC(ppking_state::screen_update_ppking));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_ppking);
- PALETTE(config, m_palette).set_entries(1024);
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+// MCFG_SCREEN_SIZE(32*8, 32*8)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_RAW_PARAMS(12_MHz_XTAL/2,384,0,256,264,16,240) // assume same as Arkanoid
+ MCFG_SCREEN_UPDATE_DRIVER(ppking_state, screen_update_ppking)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ppking)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_VIDEO_START_OVERRIDE(ppking_state, ppking)
@@ -998,25 +998,25 @@ void ppking_state::ppking(machine_config &config)
ymsnd.add_route(2, "mono", 0.60);
ymsnd.add_route(3, "mono", 0.50);
- MSM5205(config, m_msm, 455_kHz_XTAL); /* verified on pcb */
- m_msm->set_prescaler_selector(msm5205_device::SEX_4B); /* vclk input mode */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.60);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 455_kHz_XTAL) /* verified on pcb */
+ MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* vclk input mode */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(gladiatr_state::gladiatr)
-void gladiatr_state::gladiatr(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 12_MHz_XTAL/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &gladiatr_state::gladiatr_cpu1_map);
- m_maincpu->set_addrmap(AS_IO, &gladiatr_state::gladiatr_cpu1_io);
- m_maincpu->set_vblank_int("screen", FUNC(gladiatr_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 12_MHz_XTAL/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(gladiatr_cpu1_map)
+ MCFG_DEVICE_IO_MAP(gladiatr_cpu1_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gladiatr_state, irq0_line_hold)
- Z80(config, m_subcpu, 12_MHz_XTAL/4); /* verified on pcb */
- m_subcpu->set_addrmap(AS_PROGRAM, &gladiatr_state::cpu2_map);
- m_subcpu->set_addrmap(AS_IO, &gladiatr_state::gladiatr_cpu2_io);
+ MCFG_DEVICE_ADD("sub", Z80, 12_MHz_XTAL/4) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(cpu2_map)
+ MCFG_DEVICE_IO_MAP(gladiatr_cpu2_io)
- MC6809(config, m_audiocpu, 12_MHz_XTAL/4); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &gladiatr_state::gladiatr_cpu3_map);
+ MCFG_DEVICE_ADD("audiocpu", MC6809, 12_MHz_XTAL/4) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(gladiatr_cpu3_map)
MCFG_MACHINE_RESET_OVERRIDE(gladiatr_state,gladiator)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // NEC uPD449 CMOS SRAM
@@ -1056,22 +1056,22 @@ void gladiatr_state::gladiatr(machine_config &config)
m_csnd->t1_in_cb().set(FUNC(gladiatr_state::csnd_t1_r));
/* lazy way to make polled serial between MCUs work */
- config.m_perfect_cpu_quantum = subtag("ucpu");
+ MCFG_QUANTUM_PERFECT_CPU("ucpu")
- CLOCK(config, "tclk", 12_MHz_XTAL/8/128/2) /* verified on pcb */
- .signal_handler().set(FUNC(gladiatr_state::tclk_w));
+ MCFG_CLOCK_ADD("tclk", 12_MHz_XTAL/8/128/2) /* verified on pcb */
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, gladiatr_state, tclk_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(gladiatr_state::screen_update_gladiatr));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gladiatr_state, screen_update_gladiatr)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_gladiatr);
- PALETTE(config, m_palette).set_entries(1024);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_gladiatr)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_VIDEO_START_OVERRIDE(gladiatr_state,gladiatr)
@@ -1089,12 +1089,12 @@ void gladiatr_state::gladiatr(machine_config &config)
ymsnd.add_route(2, "mono", 0.60);
ymsnd.add_route(3, "mono", 0.50);
- MSM5205(config, m_msm, 455_kHz_XTAL); /* verified on pcb */
- m_msm->set_prescaler_selector(msm5205_device::SEX_4B); /* vclk input mode */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.60);
+ MCFG_DEVICE_ADD("msm", MSM5205, 455_kHz_XTAL) /* verified on pcb */
+ MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* vclk input mode */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
- LS259(config, "filtlatch", 0); // 9R - filters on sound output
-}
+ MCFG_DEVICE_ADD("filtlatch", LS259, 0) // 9R - filters on sound output
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/glasgow.cpp b/src/mame/drivers/glasgow.cpp
index a8ff923dd62..b11fcb4368a 100644
--- a/src/mame/drivers/glasgow.cpp
+++ b/src/mame/drivers/glasgow.cpp
@@ -311,11 +311,10 @@ static INPUT_PORTS_START( old_keyboard ) //Glasgow,Dallas
INPUT_PORTS_END
-void glasgow_state::glasgow(machine_config &config)
-{
+MACHINE_CONFIG_START(glasgow_state::glasgow)
/* basic machine hardware */
- M68000(config, m_maincpu, 12_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &glasgow_state::glasgow_mem);
+ MCFG_DEVICE_ADD("maincpu", M68000, 12_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(glasgow_mem)
MEPHISTO_SENSORS_BOARD(config, m_board, 0);
@@ -323,30 +322,30 @@ void glasgow_state::glasgow(machine_config &config)
config.set_default_layout(layout_glasgow);
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beep, 44).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("beeper", BEEP, 44)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- TIMER(config, "nmi_timer").configure_periodic(FUNC(glasgow_state::update_nmi), attotime::from_hz(50));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", glasgow_state, update_nmi, attotime::from_hz(50))
+MACHINE_CONFIG_END
-void amsterd_state::amsterd(machine_config &config)
-{
+MACHINE_CONFIG_START(amsterd_state::amsterd)
glasgow(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &amsterd_state::amsterd_mem);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(amsterd_mem)
+MACHINE_CONFIG_END
-void amsterd_state::dallas32(machine_config &config)
-{
+MACHINE_CONFIG_START(amsterd_state::dallas32)
glasgow(config);
/* basic machine hardware */
- M68020(config.replace(), m_maincpu, 14_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &amsterd_state::dallas32_mem);
+ MCFG_DEVICE_REPLACE("maincpu", M68020, 14_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(dallas32_mem)
- config.device_remove("nmi_timer");
- TIMER(config, "nmi_timer").configure_periodic(FUNC(amsterd_state::update_nmi32), attotime::from_hz(50));
-}
+ MCFG_DEVICE_REMOVE("nmi_timer")
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", amsterd_state, update_nmi32, attotime::from_hz(50))
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/glass.cpp b/src/mame/drivers/glass.cpp
index 1c4b85ea17f..89244939895 100644
--- a/src/mame/drivers/glass.cpp
+++ b/src/mame/drivers/glass.cpp
@@ -220,12 +220,12 @@ void glass_state::machine_reset()
m_blitter_command = 0;
}
-void glass_state::glass(machine_config &config)
-{
+MACHINE_CONFIG_START(glass_state::glass)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000)/2); /* 12 MHz verified on PCB */
- m_maincpu->set_addrmap(AS_PROGRAM, &glass_state::glass_map);
- m_maincpu->set_vblank_int("screen", FUNC(glass_state::interrupt));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) /* 12 MHz verified on PCB */
+ MCFG_DEVICE_PROGRAM_MAP(glass_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", glass_state, interrupt)
LS259(config, m_outlatch);
m_outlatch->q_out_cb<0>().set(FUNC(glass_state::coin1_lockout_w));
@@ -235,31 +235,30 @@ void glass_state::glass(machine_config &config)
m_outlatch->q_out_cb<4>().set_nop(); // Sound Muting (if bit 0 == 1, sound output stream = 0)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*16, 32*16);
- screen.set_visarea(0, 368-1, 16, 256-1);
- screen.set_screen_update(FUNC(glass_state::screen_update));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_glass);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*16, 32*16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 368-1, 16, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(glass_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_glass)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 1024);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(1'000'000), okim6295_device::PIN7_HIGH)); /* 1MHz Resonator & pin 7 high verified on PCB */
- oki.set_addrmap(0, &glass_state::oki_map);
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(1'000'000), okim6295_device::PIN7_HIGH) /* 1MHz Resonator & pin 7 high verified on PCB */
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void glass_state::glass_ds5002fp(machine_config &config)
-{
+MACHINE_CONFIG_START(glass_state::glass_ds5002fp)
glass(config);
- gaelco_ds5002fp_device &ds5002fp(GAELCO_DS5002FP(config, "gaelco_ds5002fp", XTAL(24'000'000) / 2)); /* verified on pcb */
- ds5002fp.set_addrmap(0, &glass_state::mcu_hostmem_map);
-}
+ MCFG_DEVICE_ADD("gaelco_ds5002fp", GAELCO_DS5002FP, XTAL(24'000'000) / 2) /* verified on pcb */
+ MCFG_DEVICE_ADDRESS_MAP(0, mcu_hostmem_map)
+MACHINE_CONFIG_END
ROM_START( glass ) /* Version 1.1 */
ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
diff --git a/src/mame/drivers/globalvr.cpp b/src/mame/drivers/globalvr.cpp
index 0e969bcd8b5..a85b4201d3f 100644
--- a/src/mame/drivers/globalvr.cpp
+++ b/src/mame/drivers/globalvr.cpp
@@ -87,12 +87,11 @@ static INPUT_PORTS_START( globalvr )
INPUT_PORTS_END
-void globalvr_state::globalvr(machine_config &config)
-{
+MACHINE_CONFIG_START(globalvr_state::globalvr)
/* basic machine hardware */
- PENTIUM(config, m_maincpu, 100000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &globalvr_state::globalvr_map);
-}
+ MCFG_DEVICE_ADD("maincpu", PENTIUM, 100000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(globalvr_map)
+MACHINE_CONFIG_END
ROM_START( hyperv2 )
diff --git a/src/mame/drivers/gluck2.cpp b/src/mame/drivers/gluck2.cpp
index f595c168bd8..66cec436edf 100644
--- a/src/mame/drivers/gluck2.cpp
+++ b/src/mame/drivers/gluck2.cpp
@@ -484,28 +484,28 @@ GFXDECODE_END
* Machine Drivers *
*********************************************/
-void gluck2_state::gluck2(machine_config &config)
-{
+MACHINE_CONFIG_START(gluck2_state::gluck2)
+
/* basic machine hardware */
- M6502(config, m_maincpu, MASTER_CLOCK/16); /* guess */
- m_maincpu->set_addrmap(AS_PROGRAM, &gluck2_state::gluck2_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, MASTER_CLOCK/16) /* guess */
+ MCFG_DEVICE_PROGRAM_MAP(gluck2_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
/* CRTC Register: 00 01 02 03 04 05 06
CRTC Value : 0x27 0x20 0x23 0x03 0x26 0x00 0x20
*/
- screen.set_size((39+1)*8, (38+1)*8); /* from MC6845 init, registers 00 & 04. (value - 1) */
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1); /* from MC6845 init, registers 01 & 06. */
- screen.set_screen_update(FUNC(gluck2_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_SIZE((39+1)*8, (38+1)*8) /* from MC6845 init, registers 00 & 04. (value - 1) */
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) /* from MC6845 init, registers 01 & 06. */
+ MCFG_SCREEN_UPDATE_DRIVER(gluck2_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, "palette", gfx_gluck2);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_gluck2)
PALETTE(config, "palette", palette_device::RGB_444_PROMS, "proms", 256);
mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK/16)); /* guess */
@@ -525,8 +525,10 @@ void gluck2_state::gluck2(machine_config &config)
*/
ay8910.add_route(ALL_OUTPUTS, "mono", 1.0);
- YM2413(config, "ymsnd", SND_CLOCK).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2413, SND_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+
+MACHINE_CONFIG_END
/*********************************************
diff --git a/src/mame/drivers/gmaster.cpp b/src/mame/drivers/gmaster.cpp
index f379b2bd0fd..9c9104b9b8c 100644
--- a/src/mame/drivers/gmaster.cpp
+++ b/src/mame/drivers/gmaster.cpp
@@ -313,7 +313,7 @@ uint32_t gmaster_state::screen_update_gmaster(screen_device &screen, bitmap_ind1
void gmaster_state::machine_start()
{
if (m_cart->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xfeff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xfeff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
save_item(NAME(m_video.data));
save_item(NAME(m_video.index));
@@ -327,8 +327,7 @@ void gmaster_state::machine_start()
}
-void gmaster_state::gmaster(machine_config &config)
-{
+MACHINE_CONFIG_START(gmaster_state::gmaster)
upd7810_device &upd(UPD7810(config, m_maincpu, 12_MHz_XTAL/2/*?*/)); // µPD78C11 in the unit
upd.set_addrmap(AS_PROGRAM, &gmaster_state::gmaster_mem);
upd.pa_in_cb().set_ioport("JOY");
@@ -354,11 +353,11 @@ void gmaster_state::gmaster(machine_config &config)
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(0, "mono", 0.50);
- GENERIC_CARTSLOT(config, m_cart, generic_linear_slot, "gmaster_cart").set_must_be_loaded(true);
-
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_linear_slot, "gmaster_cart")
+ MCFG_GENERIC_MANDATORY
- SOFTWARE_LIST(config, "cart_list").set_original("gmaster");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list","gmaster")
+MACHINE_CONFIG_END
ROM_START(gmaster)
diff --git a/src/mame/drivers/gng.cpp b/src/mame/drivers/gng.cpp
index 7c013a48f85..11b6df45206 100644
--- a/src/mame/drivers/gng.cpp
+++ b/src/mame/drivers/gng.cpp
@@ -378,16 +378,16 @@ void gng_state::machine_reset()
}
}
-void gng_state::gng(machine_config &config)
-{
+MACHINE_CONFIG_START(gng_state::gng)
+
/* basic machine hardware */
- MC6809(config, m_maincpu, XTAL(12'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &gng_state::gng_map);
- m_maincpu->set_vblank_int("screen", FUNC(gng_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(12'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(gng_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gng_state, irq0_line_hold)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(12'000'000)/4)); /* verified on pcb */
- audiocpu.set_addrmap(AS_PROGRAM, &gng_state::sound_map);
- audiocpu.set_periodic_int(FUNC(gng_state::irq0_line_hold), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(12'000'000)/4) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(gng_state, irq0_line_hold, 4*60)
ls259_device &mainlatch(LS259(config, "mainlatch")); // 9B on A board
mainlatch.q_out_cb<0>().set(FUNC(gng_state::flipscreen_w));
@@ -397,18 +397,18 @@ void gng_state::gng(machine_config &config)
mainlatch.q_out_cb<3>().set([this] (int state) { machine().bookkeeping().coin_counter_w(1, state); });
/* video hardware */
- BUFFERED_SPRITERAM8(config, m_spriteram);
+ MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.59); /* verified on pcb */
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(gng_state::screen_update_gng));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.59) /* verified on pcb */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gng_state, screen_update_gng)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_gng);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_gng)
PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 256);
@@ -417,26 +417,26 @@ void gng_state::gng(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- YM2203(config, m_ym[0], XTAL(12'000'000)/8); /* verified on pcb */
- m_ym[0]->add_route(0, "mono", 0.40);
- m_ym[0]->add_route(1, "mono", 0.40);
- m_ym[0]->add_route(2, "mono", 0.40);
- m_ym[0]->add_route(3, "mono", 0.20);
-
- YM2203(config, m_ym[1], XTAL(12'000'000)/8); /* verified on pcb */
- m_ym[1]->add_route(0, "mono", 0.40);
- m_ym[1]->add_route(1, "mono", 0.40);
- m_ym[1]->add_route(2, "mono", 0.40);
- m_ym[1]->add_route(3, "mono", 0.20);
-}
+ MCFG_DEVICE_ADD("ym1", YM2203, XTAL(12'000'000)/8) /* verified on pcb */
+ MCFG_SOUND_ROUTE(0, "mono", 0.40)
+ MCFG_SOUND_ROUTE(1, "mono", 0.40)
+ MCFG_SOUND_ROUTE(2, "mono", 0.40)
+ MCFG_SOUND_ROUTE(3, "mono", 0.20)
-void gng_state::diamond(machine_config &config)
-{
+ MCFG_DEVICE_ADD("ym2", YM2203, XTAL(12'000'000)/8) /* verified on pcb */
+ MCFG_SOUND_ROUTE(0, "mono", 0.40)
+ MCFG_SOUND_ROUTE(1, "mono", 0.40)
+ MCFG_SOUND_ROUTE(2, "mono", 0.40)
+ MCFG_SOUND_ROUTE(3, "mono", 0.20)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(gng_state::diamond)
gng(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &gng_state::diamond_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(diamond_map)
- config.device_remove("mainlatch");
-}
+ MCFG_DEVICE_REMOVE("mainlatch")
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/go2000.cpp b/src/mame/drivers/go2000.cpp
index a841c6a9f03..4d41829dfbd 100644
--- a/src/mame/drivers/go2000.cpp
+++ b/src/mame/drivers/go2000.cpp
@@ -344,26 +344,26 @@ void go2000_state::machine_start()
}
-void go2000_state::go2000(machine_config &config)
-{
- M68000(config, m_maincpu, 10000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &go2000_state::go2000_map);
- m_maincpu->set_vblank_int("screen", FUNC(go2000_state::irq1_line_hold));
+MACHINE_CONFIG_START(go2000_state::go2000)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
+ MCFG_DEVICE_PROGRAM_MAP(go2000_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", go2000_state, irq1_line_hold)
- Z80(config, m_soundcpu, 4000000);
- m_soundcpu->set_addrmap(AS_PROGRAM, &go2000_state::go2000_sound_map);
- m_soundcpu->set_addrmap(AS_IO, &go2000_state::go2000_sound_io);
+ MCFG_DEVICE_ADD("soundcpu", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(go2000_sound_map)
+ MCFG_DEVICE_IO_MAP(go2000_sound_io)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_go2000);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(0*8, 48*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(go2000_state::screen_update_go2000));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(go2000_state, screen_update_go2000)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x800);
@@ -371,11 +371,10 @@ void go2000_state::go2000(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
SPEAKER(config, "speaker").front_center();
- DAC_8BIT_R2R(config, "dac", 0).add_route(0, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(0, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
ROM_START( go2000 )
ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 Code */
diff --git a/src/mame/drivers/goal92.cpp b/src/mame/drivers/goal92.cpp
index 11828b83cf4..3d1477d42d7 100644
--- a/src/mame/drivers/goal92.cpp
+++ b/src/mame/drivers/goal92.cpp
@@ -304,7 +304,7 @@ void goal92_state::goal92(machine_config &config)
m_maincpu->set_vblank_int("screen", FUNC(goal92_state::irq6_line_hold)); /* VBL */
Z80(config, m_audiocpu, 2500000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &goal92_state::sound_cpu); /* IRQs are triggered by the main CPU */
+ m_audiocpu->set_addrmap(AS_PROGRAM, &goal92_state::sound_cpu); /* IRQs are triggered by the main CPU */
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
diff --git a/src/mame/drivers/goindol.cpp b/src/mame/drivers/goindol.cpp
index 0e80a2e447f..80ad3052be6 100644
--- a/src/mame/drivers/goindol.cpp
+++ b/src/mame/drivers/goindol.cpp
@@ -235,27 +235,28 @@ void goindol_state::machine_reset()
m_prot_toggle = 0;
}
-void goindol_state::goindol(machine_config &config)
-{
+MACHINE_CONFIG_START(goindol_state::goindol)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/2); /* XTAL confirmed, divisor is not */
- m_maincpu->set_addrmap(AS_PROGRAM, &goindol_state::goindol_map);
- m_maincpu->set_vblank_int("screen", FUNC(goindol_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* XTAL confirmed, divisor is not */
+ MCFG_DEVICE_PROGRAM_MAP(goindol_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", goindol_state, irq0_line_hold)
+
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(12'000'000)/2) /* XTAL confirmed, divisor is not */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(goindol_state, irq0_line_hold, 4*60)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(12'000'000)/2)); /* XTAL confirmed, divisor is not */
- audiocpu.set_addrmap(AS_PROGRAM, &goindol_state::sound_map);
- audiocpu.set_periodic_int(FUNC(goindol_state::irq0_line_hold), attotime::from_hz(4*60));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(goindol_state::screen_update_goindol));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_goindol);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goindol_state, screen_update_goindol)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_goindol)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
/* sound hardware */
@@ -263,8 +264,9 @@ void goindol_state::goindol(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- YM2203(config, "ymsnd", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.25); /* Confirmed pitch from recording */
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2203, XTAL(12'000'000)/8) /* Confirmed pitch from recording */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
@@ -324,7 +326,7 @@ ROM_START( goindolu )
ROM_LOAD( "am27s21.pr3", 0x0200, 0x0100, CRC(8534cfb5) SHA1(337b6d5e9ceb2116aea73a7a4ac7e70716460323) ) /* palette blue bits */
ROM_END
-ROM_START( goindolj )
+ROM_START( goindolk )
ROM_REGION( 0x20000, "maincpu", 0 )
ROM_LOAD( "r1j", 0x00000, 0x8000, CRC(dde33ad3) SHA1(23cdb3494f5eeaeae2657a0101d5827aa32c526d) ) /* Code 0000-7fff */
ROM_LOAD( "r2", 0x10000, 0x8000, CRC(1ff6e3a2) SHA1(321d32b5236f8fadc55b00412081cd17fbdb42bf) ) /* Paged data */
@@ -409,5 +411,5 @@ void goindol_state::init_goindol()
GAME( 1987, goindol, 0, goindol, goindol, goindol_state, init_goindol, ROT90, "SunA", "Goindol (World)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
GAME( 1987, goindolu, goindol, goindol, goindol, goindol_state, init_goindol, ROT90, "SunA", "Goindol (US)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
-GAME( 1987, goindolj, goindol, goindol, goindol, goindol_state, init_goindol, ROT90, "SunA", "Goindol (Japan)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, goindolk, goindol, goindol, goindol, goindol_state, init_goindol, ROT90, "SunA", "Goindol (Korea)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
GAME( 1987, homo, goindol, goindol, homo, goindol_state, empty_init, ROT90, "bootleg", "Homo", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/gokidetor.cpp b/src/mame/drivers/gokidetor.cpp
index a1683cda21c..2ed9b01c8a9 100644
--- a/src/mame/drivers/gokidetor.cpp
+++ b/src/mame/drivers/gokidetor.cpp
@@ -121,10 +121,9 @@ void gokidetor_state::sound_map(address_map &map)
}
-void gokidetor_state::gokidetor(machine_config &config)
-{
- Z80(config, m_maincpu, XTAL(16'000'000) / 4); // divider not verified
- m_maincpu->set_addrmap(AS_PROGRAM, &gokidetor_state::main_map);
+MACHINE_CONFIG_START(gokidetor_state::gokidetor)
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(16'000'000) / 4) // divider not verified
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
// IRQ from ???
// NMI related to E002 input and TE7750 port 7
@@ -141,8 +140,8 @@ void gokidetor_state::gokidetor(machine_config &config)
te7750.out_port8_cb().set(FUNC(gokidetor_state::out8_w));
te7750.out_port9_cb().set(FUNC(gokidetor_state::out9_w));
- z80_device &soundcpu(Z80(config, "soundcpu", 4000000));
- soundcpu.set_addrmap(AS_PROGRAM, &gokidetor_state::sound_map);
+ MCFG_DEVICE_ADD("soundcpu", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
pc060ha_device &ciu(PC060HA(config, "ciu", 0));
ciu.set_master_tag(m_maincpu);
@@ -158,8 +157,9 @@ void gokidetor_state::gokidetor(machine_config &config)
ymsnd.add_route(2, "mono", 0.25);
ymsnd.add_route(3, "mono", 0.80);
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.50); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
INPUT_PORTS_START( gokidetor )
PORT_START("IN1")
diff --git a/src/mame/drivers/goldnpkr.cpp b/src/mame/drivers/goldnpkr.cpp
index 2c1cf7f9dcd..ea4c97d9cde 100644
--- a/src/mame/drivers/goldnpkr.cpp
+++ b/src/mame/drivers/goldnpkr.cpp
@@ -1303,9 +1303,9 @@ public:
m_pia(*this, "pia%u", 0U),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
- m_discrete(*this, "discrete"),
m_videoram(*this, "videoram"),
m_colorram(*this, "colorram"),
+ m_discrete(*this, "discrete"),
m_ay8910(*this, "ay8910"),
m_lamps(*this, "lamp%u", 0U)
{ }
@@ -1366,7 +1366,6 @@ protected:
required_device_array<pia6821_device, 2> m_pia;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
- optional_device<discrete_device> m_discrete;
private:
DECLARE_READ8_MEMBER(goldnpkr_mux_port_r);
@@ -1404,6 +1403,7 @@ private:
required_shared_ptr<uint8_t> m_videoram;
required_shared_ptr<uint8_t> m_colorram;
+ optional_device<discrete_device> m_discrete;
optional_device<ay8910_device> m_ay8910;
output_finder<5> m_lamps;
@@ -1696,11 +1696,11 @@ WRITE8_MEMBER(goldnpkr_state::wcfalcon_snd_w)
{
if (wcfalcon_flag == 0)
{
- m_ay8910->data_address_w(0, data);
+ m_ay8910->data_address_w(space, 0, data);
}
else
{
- m_ay8910->data_address_w(1, data);
+ m_ay8910->data_address_w(space, 1, data);
}
wcfalcon_flag = wcfalcon_flag ^ 1;
@@ -4403,7 +4403,7 @@ void goldnpkr_state::wildcard(machine_config &config)
m_pia[0]->writepa_handler().set(FUNC(goldnpkr_state::mux_port_w));
/* video hardware */
-// m_gfxdecode->set_info(gfx_wildcard);
+// MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_wildcard)
m_palette->set_init(FUNC(goldnpkr_state::witchcrd_palette));
// MCFG_VIDEO_START_OVERRIDE(goldnpkr_state,wildcard)
@@ -4447,7 +4447,7 @@ void goldnpkr_state::wildcrdb(machine_config &config)
m_pia[1]->writepa_handler().set(FUNC(goldnpkr_state::wcfalcon_snd_w));
/* video hardware */
-// m_gfxdecode->set_info(gfx_wildcard);
+// MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_wildcard)
m_palette->set_init(FUNC(goldnpkr_state::witchcrd_palette));
// MCFG_VIDEO_START_OVERRIDE(goldnpkr_state,wildcard)
@@ -4653,11 +4653,11 @@ static INPUT_PORTS_START( megadpkr )
INPUT_PORTS_END
-void blitz_state::megadpkr(machine_config &config)
-{
+MACHINE_CONFIG_START(blitz_state::megadpkr)
+
/* basic machine hardware */
- M6502(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &blitz_state::megadpkr_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(megadpkr_map)
ADDRESS_MAP_BANK(config, "bankdev").set_map(&blitz_state::megadpkr_banked_map).set_data_width(8).set_addr_width(16).set_stride(0x4000);
@@ -4677,13 +4677,13 @@ void blitz_state::megadpkr(machine_config &config)
m_pia[1]->writepb_handler().set(FUNC(goldnpkr_state::mux_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size((32)*8, (32)*8);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(goldnpkr_state::screen_update_goldnpkr));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE((32)*8, (32)*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldnpkr_state, screen_update_goldnpkr)
+ MCFG_SCREEN_PALETTE(m_palette)
mc6845_device &crtc(MC6845(config, "crtc", CPU_CLOCK));
crtc.set_screen("screen");
@@ -4696,8 +4696,9 @@ void blitz_state::megadpkr(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- DISCRETE(config, m_discrete, goldnpkr_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, goldnpkr_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/*********************************************
diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp
index 199eb02f203..e540c466f71 100644
--- a/src/mame/drivers/goldstar.cpp
+++ b/src/mame/drivers/goldstar.cpp
@@ -628,7 +628,7 @@ void cb3_state::ncb3_map(address_map &map)
map(0xf840, 0xf840).w("aysnd", FUNC(ay8910_device::address_w));
map(0xf850, 0xf850).w(FUNC(cb3_state::p1_lamps_w)); /* Control Set 1 lamps */
map(0xf860, 0xf860).w(FUNC(cb3_state::p2_lamps_w)); /* Control Set 2 lamps */
- map(0xf870, 0xf870).w("snsnd", FUNC(sn76489_device::write)); /* guess... device is initialized, but doesn't seems to be used.*/
+ map(0xf870, 0xf870).w("snsnd", FUNC(sn76489_device::command_w)); /* guess... device is initialized, but doesn't seems to be used.*/
}
void goldstar_state::ncb3_readwriteport(address_map &map)
@@ -700,7 +700,7 @@ void goldstar_state::wcherry_map(address_map &map)
map(0xf640, 0xf640).w("aysnd", FUNC(ay8910_device::address_w));
map(0xf650, 0xf650).nopw(); // AM_WRITE(output_w) // unknown register: 0x3e
map(0xf660, 0xf660).nopw(); // AM_WRITE(output_w) // unknown register: 0x3e
- map(0xf670, 0xf670).w("snsnd", FUNC(sn76489_device::write)); /* guess... device is initialized, but doesn't seems to be used.*/
+ map(0xf670, 0xf670).w("snsnd", FUNC(sn76489_device::command_w)); /* guess... device is initialized, but doesn't seems to be used.*/
map(0xf800, 0xffff).ram();
}
@@ -900,7 +900,7 @@ void goldstar_state::lucky8_map(address_map &map)
map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
map(0xb850, 0xb850).w(FUNC(goldstar_state::p1_lamps_w));
map(0xb860, 0xb860).w(FUNC(goldstar_state::p2_lamps_w));
- map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::command_w)); /* sound */
map(0xc000, 0xf7ff).rom(); // could be used by some sets like super972.
map(0xf800, 0xffff).ram();
}
@@ -933,7 +933,7 @@ void goldstar_state::flaming7_map(address_map &map)
map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
map(0xb850, 0xb850).w(FUNC(goldstar_state::p1_lamps_w));
map(0xb860, 0xb860).w(FUNC(goldstar_state::p2_lamps_w));
- map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::command_w)); /* sound */
// AM_RANGE(0xc000, 0xd3ff) AM_RAM
map(0xf800, 0xffff).ram();
}
@@ -985,7 +985,7 @@ void goldstar_state::mbstar_map(address_map &map)
map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
map(0xb850, 0xb850).w(FUNC(goldstar_state::p1_lamps_w));
map(0xb860, 0xb860).w(FUNC(goldstar_state::p2_lamps_w));
- map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::command_w)); /* sound */
map(0xc000, 0xf7ff).rom();
map(0xf800, 0xffff).ram();
}
@@ -1038,7 +1038,7 @@ void wingco_state::magodds_map(address_map &map)
map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
map(0xb850, 0xb850).w(FUNC(wingco_state::magodds_outb850_w)); /* lamps */
map(0xb860, 0xb860).w(FUNC(wingco_state::magodds_outb860_w)); /* watchdog */
- map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::command_w)); /* sound */
map(0xc000, 0xffff).rom().region("maincpu", 0xc000);
}
@@ -1061,7 +1061,7 @@ void goldstar_state::kkotnoli_map(address_map &map)
map(0xb830, 0xb830).nopw(); /* no ay8910 */
map(0xb840, 0xb840).nopw(); /* no ay8910 */
map(0xb850, 0xb850).w(FUNC(goldstar_state::p1_lamps_w));
- map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::command_w)); /* sound */
map(0xf800, 0xffff).ram();
}
@@ -1100,7 +1100,7 @@ void goldstar_state::ladylinr_map(address_map &map)
map(0xb830, 0xb830).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... unused? */
map(0xb840, 0xb840).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
map(0xb850, 0xb850).nopw(); /* just turn off the lamps, if exist */
- map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::command_w)); /* sound */
map(0xf800, 0xffff).ram();
}
@@ -1123,7 +1123,7 @@ void goldstar_state::wcat3_map(address_map &map)
map(0xb830, 0xb830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
map(0xb850, 0xb850).w(FUNC(goldstar_state::p1_lamps_w));
- map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::command_w)); /* sound */
// AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write) /* Other PPI initialized? */
map(0xd000, 0xefff).rom();
map(0xf000, 0xffff).ram();
@@ -1273,9 +1273,9 @@ void unkch_state::megaline_map(address_map &map)
void goldstar_state::megaline_portmap(address_map &map)
{
map.global_mask(0xff);
- map(0xa0, 0xa0).w("sn1", FUNC(sn76489_device::write)); /* SN76489 #1 */
- map(0xc0, 0xc0).w("sn2", FUNC(sn76489_device::write)); /* SN76489 #2 */
- map(0xe0, 0xe0).w("sn3", FUNC(sn76489_device::write)); /* SN76489 #3 */
+ map(0xa0, 0xa0).w("sn1", FUNC(sn76489_device::command_w)); /* SN76489 #1 */
+ map(0xc0, 0xc0).w("sn2", FUNC(sn76489_device::command_w)); /* SN76489 #2 */
+ map(0xe0, 0xe0).w("sn3", FUNC(sn76489_device::command_w)); /* SN76489 #3 */
map(0x60, 0x60).w("aysnd", FUNC(ay8910_device::address_w)); /* AY8910 control? */
map(0x80, 0x80).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); /* AY8910 Input? */
// AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r)
@@ -1330,10 +1330,10 @@ void goldstar_state::bonusch_portmap(address_map &map)
map.global_mask(0xff);
map(0x10, 0x10).portr("IN0");
map(0x20, 0x20).portr("IN1");
- map(0x50, 0x50).w("sn1", FUNC(sn76489_device::write)); /* SN76489 #1 */
- map(0x51, 0x51).w("sn2", FUNC(sn76489_device::write)); /* SN76489 #2 */
- map(0x52, 0x52).w("sn3", FUNC(sn76489_device::write)); /* SN76489 #3 */
- map(0x53, 0x53).w("sn4", FUNC(sn76489_device::write)); /* SN76489 #4 */
+ map(0x50, 0x50).w("sn1", FUNC(sn76489_device::command_w)); /* SN76489 #1 */
+ map(0x51, 0x51).w("sn2", FUNC(sn76489_device::command_w)); /* SN76489 #2 */
+ map(0x52, 0x52).w("sn3", FUNC(sn76489_device::command_w)); /* SN76489 #3 */
+ map(0x53, 0x53).w("sn4", FUNC(sn76489_device::command_w)); /* SN76489 #4 */
map(0x60, 0x60).portr("IN3");
}
@@ -1369,9 +1369,9 @@ void goldstar_state::feverch_portmap(address_map &map)
map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0x08, 0x0b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0x10, 0x13).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
- map(0x20, 0x20).w("sn1", FUNC(sn76489_device::write));
- map(0x28, 0x28).w("sn2", FUNC(sn76489_device::write));
- map(0x30, 0x30).w("sn3", FUNC(sn76489_device::write));
+ map(0x20, 0x20).w("sn1", FUNC(sn76489_device::command_w));
+ map(0x28, 0x28).w("sn2", FUNC(sn76489_device::command_w));
+ map(0x30, 0x30).w("sn3", FUNC(sn76489_device::command_w));
//map(0x38, 0x3b)
}
@@ -8443,22 +8443,22 @@ WRITE8_MEMBER(goldstar_state::ay8910_outputb_w)
}
-void goldstar_state::goldstar(machine_config &config)
-{
+MACHINE_CONFIG_START(goldstar_state::goldstar)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &goldstar_state::goldstar_map);
- m_maincpu->set_addrmap(AS_IO, &goldstar_state::goldstar_readport);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(goldstar_map)
+ MCFG_DEVICE_IO_MAP(goldstar_readport)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(goldstar_state::screen_update_goldstar));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_goldstar);
PALETTE(config, m_palette).set_format(palette_device::BGR_233, 256);
@@ -8473,26 +8473,28 @@ void goldstar_state::goldstar(machine_config &config)
aysnd.port_b_read_callback().set_ioport("DSW3");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
- OKIM6295(config, "oki", OKI_CLOCK, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, OKI_CLOCK, okim6295_device::PIN7_HIGH) /* clock frequency & pin 7 not verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_START(goldstar_state::goldstbl)
-void goldstar_state::goldstbl(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &goldstar_state::goldstar_map);
- m_maincpu->set_addrmap(AS_IO, &goldstar_state::goldstar_readport);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(goldstar_map)
+ MCFG_DEVICE_IO_MAP(goldstar_readport)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(goldstar_state::screen_update_goldstar));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_bl);
PALETTE(config, m_palette).set_format(palette_device::BGR_233, 256);
@@ -8507,38 +8509,37 @@ void goldstar_state::goldstbl(machine_config &config)
aysnd.port_b_read_callback().set_ioport("DSW3");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
- OKIM6295(config, "oki", OKI_CLOCK, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, OKI_CLOCK, okim6295_device::PIN7_HIGH) /* clock frequency & pin 7 not verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void goldstar_state::moonlght(machine_config &config)
-{
+MACHINE_CONFIG_START(goldstar_state::moonlght)
goldstbl(config);
- m_gfxdecode->set_info(gfx_ml);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_ml)
+MACHINE_CONFIG_END
-void goldstar_state::goldfrui(machine_config &config)
-{
+MACHINE_CONFIG_START(goldstar_state::goldfrui)
goldstbl(config);
- m_gfxdecode->set_info(gfx_goldfrui);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_goldfrui)
+MACHINE_CONFIG_END
-void sanghopm_state::star100(machine_config &config)
-{
+MACHINE_CONFIG_START(sanghopm_state::star100)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &sanghopm_state::star100_map);
- m_maincpu->set_addrmap(AS_IO, &sanghopm_state::star100_readport);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(star100_map)
+ MCFG_DEVICE_IO_MAP(star100_readport)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(sanghopm_state::screen_update_sangho));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sanghopm_state, screen_update_sangho)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0))
PALETTE(config, m_palette).set_entries(0x100);
RAMDAC(config, "ramdac", 0, "palette").set_addrmap(0, &sanghopm_state::ramdac_map);
@@ -8556,28 +8557,30 @@ void sanghopm_state::star100(machine_config &config)
aysnd.port_b_read_callback().set_ioport("DSW6");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
- OKIM6295(config, "oki", OKI_CLOCK, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, OKI_CLOCK, okim6295_device::PIN7_HIGH) /* clock frequency & pin 7 not verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_START(goldstar_state::super9)
-void goldstar_state::super9(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &goldstar_state::goldstar_map);
-// m_maincpu->set_addrmap(AS_PROGRAM, &goldstar_state::nfm_map);
- m_maincpu->set_addrmap(AS_IO, &goldstar_state::goldstar_readport);
-// m_maincpu->set_addrmap(AS_IO, &goldstar_state::unkch_portmap);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(goldstar_map)
+// MCFG_DEVICE_PROGRAM_MAP(nfm_map)
+ MCFG_DEVICE_IO_MAP(goldstar_readport)
+// MCFG_DEVICE_IO_MAP(unkch_portmap)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(goldstar_state::screen_update_goldstar));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_super9);
PALETTE(config, m_palette).set_format(palette_device::BGR_233, 256);
@@ -8592,8 +8595,9 @@ void goldstar_state::super9(machine_config &config)
aysnd.port_b_read_callback().set_ioport("DSW3");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
- OKIM6295(config, "oki", OKI_CLOCK, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, OKI_CLOCK, okim6295_device::PIN7_HIGH) /* clock frequency & pin 7 not verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
void goldstar_state::cm_palette(palette_device &palette) const
@@ -8641,12 +8645,12 @@ void goldstar_state::lucky8_palette(palette_device &palette) const
}
-void cb3_state::ncb3(machine_config &config)
-{
+MACHINE_CONFIG_START(cb3_state::ncb3)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &cb3_state::ncb3_map);
- m_maincpu->set_addrmap(AS_IO, &cb3_state::ncb3_readwriteport);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(ncb3_map)
+ MCFG_DEVICE_IO_MAP(ncb3_readwriteport)
I8255A(config, m_ppi[0]);
m_ppi[0]->in_pa_callback().set_ioport("IN0");
@@ -8661,14 +8665,14 @@ void cb3_state::ncb3(machine_config &config)
m_ppi[2]->in_pa_callback().set_ioport("DSW2");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(goldstar_state::screen_update_goldstar));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ncb3);
PALETTE(config, m_palette, FUNC(goldstar_state::cm_palette), 256);
@@ -8680,51 +8684,47 @@ void cb3_state::ncb3(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489(config, "snsnd", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("snsnd", SN76489, PSG_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
ay8910_device &aysnd(AY8910(config, "aysnd", AY_CLOCK));
aysnd.port_a_read_callback().set_ioport("DSW4");
aysnd.port_b_read_callback().set_ioport("DSW3");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
-void cb3_state::cb3c(machine_config &config)
-{
+MACHINE_CONFIG_START(cb3_state::cb3c)
ncb3(config);
- m_gfxdecode->set_info(gfx_cb3c);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_cb3c)
+MACHINE_CONFIG_END
-void cb3_state::cb3e(machine_config &config)
-{
+MACHINE_CONFIG_START(cb3_state::cb3e)
ncb3(config);
- m_gfxdecode->set_info(gfx_cb3e);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_cb3e)
+MACHINE_CONFIG_END
-void cb3_state::chrygld(machine_config &config)
-{
+MACHINE_CONFIG_START(cb3_state::chrygld)
ncb3(config);
- m_gfxdecode->set_info(gfx_chry10);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_chry10)
+MACHINE_CONFIG_END
-void cb3_state::cherrys(machine_config &config)
-{
+MACHINE_CONFIG_START(cb3_state::cherrys)
ncb3(config);
- m_gfxdecode->set_info(gfx_cherrys);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_cherrys)
+MACHINE_CONFIG_END
-void cb3_state::cm97(machine_config &config)
-{
+MACHINE_CONFIG_START(cb3_state::cm97)
ncb3(config);
- m_gfxdecode->set_info(gfx_cm97);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_cm97)
+MACHINE_CONFIG_END
-void goldstar_state::wcherry(machine_config &config)
-{
+MACHINE_CONFIG_START(goldstar_state::wcherry)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &goldstar_state::wcherry_map);
- m_maincpu->set_addrmap(AS_IO, &goldstar_state::wcherry_readwriteport);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(wcherry_map)
+ MCFG_DEVICE_IO_MAP(wcherry_readwriteport)
I8255A(config, m_ppi[0]);
m_ppi[0]->in_pa_callback().set_ioport("IN0");
@@ -8739,14 +8739,14 @@ void goldstar_state::wcherry(machine_config &config)
m_ppi[2]->in_pa_callback().set_ioport("DSW2");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(goldstar_state::screen_update_goldstar));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cb3e);
PALETTE(config, m_palette, FUNC(goldstar_state::cm_palette), 256);
@@ -8757,21 +8757,22 @@ void goldstar_state::wcherry(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489(config, "snsnd", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("snsnd", SN76489, PSG_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
ay8910_device &aysnd(AY8910(config, "aysnd", AY_CLOCK));
aysnd.port_a_read_callback().set_ioport("DSW4");
aysnd.port_b_read_callback().set_ioport("DSW3");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
-void cmaster_state::cm(machine_config &config)
-{
+MACHINE_CONFIG_START(cmaster_state::cm)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &cmaster_state::cm_map);
- m_maincpu->set_addrmap(AS_IO, &cmaster_state::cm_portmap);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(cm_map)
+ MCFG_DEVICE_IO_MAP(cm_portmap)
I8255A(config, m_ppi[0]);
m_ppi[0]->in_pa_callback().set_ioport("IN0");
@@ -8784,14 +8785,14 @@ void cmaster_state::cm(machine_config &config)
m_ppi[1]->in_pc_callback().set_ioport("DSW3");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(goldstar_state::screen_update_goldstar));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cmbitmap);
PALETTE(config, m_palette, FUNC(goldstar_state::cm_palette), 256);
@@ -8805,21 +8806,20 @@ void cmaster_state::cm(machine_config &config)
aysnd.port_a_read_callback().set_ioport("DSW4");
aysnd.port_b_read_callback().set_ioport("DSW5");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
-void cmaster_state::cmasterc(machine_config &config)
-{
+MACHINE_CONFIG_START(cmaster_state::cmasterc)
cm(config);
- m_gfxdecode->set_info(gfx_cmasterc);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_cmasterc)
+MACHINE_CONFIG_END
-void goldstar_state::cmast91(machine_config &config)
-{
+MACHINE_CONFIG_START(goldstar_state::cmast91)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &goldstar_state::cm_map);
- m_maincpu->set_addrmap(AS_IO, &goldstar_state::cmast91_portmap);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(cm_map)
+ MCFG_DEVICE_IO_MAP(cmast91_portmap)
I8255A(config, m_ppi[0]);
m_ppi[0]->in_pa_callback().set_ioport("IN0");
@@ -8832,14 +8832,14 @@ void goldstar_state::cmast91(machine_config &config)
m_ppi[1]->in_pc_callback().set_ioport("DSW3");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(goldstar_state::screen_update_cmast91));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_cmast91)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cmast91);
PALETTE(config, m_palette, FUNC(goldstar_state::cmast91_palette), 256);
@@ -8853,7 +8853,7 @@ void goldstar_state::cmast91(machine_config &config)
aysnd.port_a_read_callback().set_ioport("DSW4");
aysnd.port_b_read_callback().set_ioport("DSW5");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
@@ -8863,12 +8863,12 @@ WRITE_LINE_MEMBER(wingco_state::masked_irq)
m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
-void wingco_state::lucky8(machine_config &config)
-{
+MACHINE_CONFIG_START(wingco_state::lucky8)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &wingco_state::lucky8_map);
- //->m_maincpu->set_addrmap(AS_IO, &wingco_state::goldstar_readport);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(lucky8_map)
+ //MCFG_DEVICE_IO_MAP(goldstar_readport)
I8255A(config, m_ppi[0]);
m_ppi[0]->in_pa_callback().set_ioport("IN0");
@@ -8887,14 +8887,14 @@ void wingco_state::lucky8(machine_config &config)
m_ppi[2]->out_pc_callback().set(FUNC(wingco_state::system_outputc_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(goldstar_state::screen_update_goldstar));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(wingco_state::masked_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, wingco_state, masked_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ncb3);
PALETTE(config, m_palette, FUNC(goldstar_state::lucky8_palette)).set_format(palette_device::BGR_233, 256);
@@ -8905,7 +8905,8 @@ void wingco_state::lucky8(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489(config, "snsnd", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("snsnd", SN76489, PSG_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
ym2149_device &aysnd(YM2149(config, "aysnd", AY_CLOCK));
aysnd.port_a_read_callback().set_ioport("DSW3");
@@ -8913,14 +8914,14 @@ void wingco_state::lucky8(machine_config &config)
aysnd.port_a_write_callback().set(FUNC(goldstar_state::ay8910_outputa_w));
aysnd.port_b_write_callback().set(FUNC(goldstar_state::ay8910_outputb_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(wingco_state::bingowng)
-void wingco_state::bingowng(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &wingco_state::lucky8_map);
- //m_maincpu->set_addrmap(AS_IO, &wingco_state::goldstar_readport);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(lucky8_map)
+ //MCFG_DEVICE_IO_MAP(goldstar_readport)
I8255A(config, m_ppi[0]);
m_ppi[0]->in_pa_callback().set_ioport("IN0");
@@ -8939,14 +8940,14 @@ void wingco_state::bingowng(machine_config &config)
m_ppi[2]->out_pc_callback().set(FUNC(wingco_state::system_outputc_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(wingco_state::screen_update_bingowng));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(wingco_state::masked_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(wingco_state, screen_update_bingowng)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, wingco_state, masked_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ncb3);
PALETTE(config, m_palette, FUNC(goldstar_state::lucky8_palette), 256);
@@ -8957,7 +8958,8 @@ void wingco_state::bingowng(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489(config, "snsnd", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("snsnd", SN76489, PSG_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
ay8910_device &aysnd(AY8910(config, "aysnd", AY_CLOCK));
aysnd.port_a_read_callback().set_ioport("DSW3");
@@ -8965,62 +8967,62 @@ void wingco_state::bingowng(machine_config &config)
aysnd.port_a_write_callback().set(FUNC(goldstar_state::ay8910_outputa_w));
aysnd.port_b_write_callback().set(FUNC(goldstar_state::ay8910_outputb_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
-void wingco_state::bingownga(machine_config &config)
-{
+MACHINE_CONFIG_START(wingco_state::bingownga)
bingowng(config);
- m_gfxdecode->set_info(gfx_bingownga);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_bingownga)
+MACHINE_CONFIG_END
-void wingco_state::flam7_w4(machine_config &config)
-{
+MACHINE_CONFIG_START(wingco_state::flam7_w4)
lucky8(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &wingco_state::flaming7_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(flaming7_map)
m_ppi[0]->out_pc_callback().set(FUNC(wingco_state::fl7w4_outc802_w));
- DS2401(config, m_fl7w4_id);
-}
+ MCFG_DEVICE_ADD(m_fl7w4_id, DS2401)
+MACHINE_CONFIG_END
-void wingco_state::flaming7(machine_config &config)
-{
+MACHINE_CONFIG_START(wingco_state::flaming7)
lucky8(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &wingco_state::flaming7_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(flaming7_map)
- m_gfxdecode->set_info(gfx_flaming7);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_flaming7)
// to do serial protection.
m_ppi[0]->out_pc_callback().set(FUNC(wingco_state::fl7w4_outc802_w));
- DS2401(config, m_fl7w4_id);
-}
+ MCFG_DEVICE_ADD(m_fl7w4_id, DS2401)
+MACHINE_CONFIG_END
-void wingco_state::flam7_tw(machine_config &config)
-{
+MACHINE_CONFIG_START(wingco_state::flam7_tw)
lucky8(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &wingco_state::flaming7_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(flaming7_map)
- m_gfxdecode->set_info(gfx_flam7_tw);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_flam7_tw)
// to do serial protection.
m_ppi[0]->out_pc_callback().set(FUNC(wingco_state::fl7w4_outc802_w));
- DS2401(config, m_fl7w4_id);
-}
+ MCFG_DEVICE_ADD(m_fl7w4_id, DS2401)
+MACHINE_CONFIG_END
-void wingco_state::mbstar(machine_config &config)
-{
+MACHINE_CONFIG_START(wingco_state::mbstar)
lucky8(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &wingco_state::mbstar_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mbstar_map)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(wingco_state::screen_update_mbstar));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(wingco_state, screen_update_mbstar)
+MACHINE_CONFIG_END
@@ -9037,12 +9039,12 @@ void wingco_state::magodds_palette(palette_device &palette) const
}
}
-void wingco_state::magodds(machine_config &config)
-{
+MACHINE_CONFIG_START(wingco_state::magodds)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &wingco_state::magodds_map);
- //m_maincpu->set_addrmap(AS_IO, &wingco_state::goldstar_readport);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(magodds_map)
+ //MCFG_DEVICE_IO_MAP(goldstar_readport)
I8255A(config, m_ppi[0]);
m_ppi[0]->in_pa_callback().set_ioport("IN0");
@@ -9061,14 +9063,14 @@ void wingco_state::magodds(machine_config &config)
m_ppi[2]->out_pc_callback().set(FUNC(wingco_state::system_outputc_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(wingco_state::screen_update_magical));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(wingco_state::masked_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(wingco_state, screen_update_magical)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, wingco_state, masked_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_magodds);
PALETTE(config, m_palette, FUNC(wingco_state::magodds_palette), 256);
@@ -9079,7 +9081,8 @@ void wingco_state::magodds(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489(config, "snsnd", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.00); // shut up annoying whine
+ MCFG_DEVICE_ADD("snsnd", SN76489, PSG_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.00) // shut up annoying whine
ay8910_device &aysnd(AY8910(config, "aysnd", AY_CLOCK));
aysnd.port_a_read_callback().set_ioport("DSW3");
@@ -9087,15 +9090,15 @@ void wingco_state::magodds(machine_config &config)
aysnd.port_a_write_callback().set(FUNC(goldstar_state::ay8910_outputa_w));
aysnd.port_b_write_callback().set(FUNC(goldstar_state::ay8910_outputb_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+MACHINE_CONFIG_END
-void goldstar_state::kkotnoli(machine_config &config)
-{
+MACHINE_CONFIG_START(goldstar_state::kkotnoli)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &goldstar_state::kkotnoli_map);
- //m_maincpu->set_addrmap(AS_IO, &goldstar_state::goldstar_readport);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(kkotnoli_map)
+ //MCFG_DEVICE_IO_MAP(goldstar_readport)
I8255A(config, m_ppi[0]);
m_ppi[0]->in_pa_callback().set_ioport("IN0");
@@ -9110,14 +9113,14 @@ void goldstar_state::kkotnoli(machine_config &config)
m_ppi[2]->in_pa_callback().set_ioport("DSW1");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(goldstar_state::screen_update_goldstar));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ncb3);
PALETTE(config, m_palette, FUNC(goldstar_state::lucky8_palette), 256);
@@ -9127,16 +9130,18 @@ void goldstar_state::kkotnoli(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489(config, "snsnd", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+ MCFG_DEVICE_ADD("snsnd", SN76489, PSG_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_START(goldstar_state::ladylinr)
-void goldstar_state::ladylinr(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &goldstar_state::ladylinr_map);
- //m_maincpu->set_addrmap(AS_IO, &goldstar_state::goldstar_readport);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(ladylinr_map)
+ //MCFG_DEVICE_IO_MAP(goldstar_readport)
I8255A(config, m_ppi[0]);
m_ppi[0]->in_pa_callback().set_ioport("IN0");
@@ -9147,14 +9152,14 @@ void goldstar_state::ladylinr(machine_config &config)
m_ppi[1]->in_pa_callback().set_ioport("DSW1");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(goldstar_state::screen_update_goldstar));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ncb3);
PALETTE(config, m_palette, FUNC(goldstar_state::lucky8_palette), 256);
@@ -9165,18 +9170,19 @@ void goldstar_state::ladylinr(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489(config, "snsnd", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("snsnd", SN76489, PSG_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
AY8930(config, "aysnd", AY_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.50); // unused?
-}
+MACHINE_CONFIG_END
-void wingco_state::wcat3(machine_config &config)
-{
+MACHINE_CONFIG_START(wingco_state::wcat3)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &wingco_state::wcat3_map);
- //m_maincpu->set_addrmap(AS_IO, &wingco_state::goldstar_readport);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(wcat3_map)
+ //MCFG_DEVICE_IO_MAP(goldstar_readport)
I8255A(config, m_ppi[0]);
m_ppi[0]->in_pa_callback().set_ioport("IN0");
@@ -9195,14 +9201,14 @@ void wingco_state::wcat3(machine_config &config)
m_ppi[2]->out_pc_callback().set(FUNC(wingco_state::system_outputc_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(goldstar_state::screen_update_goldstar));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ncb3);
PALETTE(config, m_palette, FUNC(goldstar_state::lucky8_palette), 256);
@@ -9213,7 +9219,8 @@ void wingco_state::wcat3(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489(config, "snsnd", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("snsnd", SN76489, PSG_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
ay8910_device &aysnd(AY8910(config, "aysnd", AY_CLOCK));
aysnd.port_a_read_callback().set_ioport("DSW3");
@@ -9221,16 +9228,17 @@ void wingco_state::wcat3(machine_config &config)
aysnd.port_a_write_callback().set(FUNC(goldstar_state::ay8910_outputa_w));
aysnd.port_b_write_callback().set(FUNC(goldstar_state::ay8910_outputb_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+
+MACHINE_CONFIG_END
/* diff with cm machine driver: gfxdecode, OKI & portmap */
-void cmaster_state::amcoe1(machine_config &config)
-{
+MACHINE_CONFIG_START(cmaster_state::amcoe1)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &cmaster_state::cm_map);
- m_maincpu->set_addrmap(AS_IO, &cmaster_state::amcoe1_portmap);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(cm_map)
+ MCFG_DEVICE_IO_MAP(amcoe1_portmap)
I8255A(config, m_ppi[0]);
m_ppi[0]->in_pa_callback().set_ioport("IN0");
@@ -9243,14 +9251,14 @@ void cmaster_state::amcoe1(machine_config &config)
m_ppi[1]->in_pc_callback().set_ioport("DSW3");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(goldstar_state::screen_update_goldstar));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cm);
PALETTE(config, m_palette, FUNC(goldstar_state::cm_palette), 256);
@@ -9265,27 +9273,28 @@ void cmaster_state::amcoe1(machine_config &config)
aysnd.port_b_read_callback().set_ioport("DSW5");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
- OKIM6295(config, "oki", OKI_CLOCK, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, OKI_CLOCK, okim6295_device::PIN7_HIGH) /* clock frequency & pin 7 not verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/* diff with cm machine driver: gfxdecode, OKI, portmap & tilemaps rect size/position */
-void cmaster_state::amcoe1a(machine_config &config)
-{
+MACHINE_CONFIG_START(cmaster_state::amcoe1a)
amcoe1(config);
/* video hardware */
- subdevice<screen_device>("screen")->set_screen_update(FUNC(cmaster_state::screen_update_amcoe1a));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(cmaster_state, screen_update_amcoe1a)
+MACHINE_CONFIG_END
/* diff with cm machine driver: gfxdecode, AY8910 volume & portmap */
-void cmaster_state::amcoe2(machine_config &config)
-{
+MACHINE_CONFIG_START(cmaster_state::amcoe2)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &cmaster_state::cm_map);
- m_maincpu->set_addrmap(AS_IO, &cmaster_state::amcoe2_portmap);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(cm_map)
+ MCFG_DEVICE_IO_MAP(amcoe2_portmap)
I8255A(config, m_ppi[0]);
m_ppi[0]->in_pa_callback().set_ioport("IN0");
@@ -9298,14 +9307,14 @@ void cmaster_state::amcoe2(machine_config &config)
m_ppi[1]->in_pc_callback().set_ioport("DSW3");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(goldstar_state::screen_update_goldstar));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cm);
PALETTE(config, m_palette, FUNC(goldstar_state::cm_palette), 256);
@@ -9319,17 +9328,17 @@ void cmaster_state::amcoe2(machine_config &config)
aysnd.port_a_read_callback().set_ioport("DSW4");
aysnd.port_b_read_callback().set_ioport("DSW5");
aysnd.add_route(ALL_OUTPUTS, "mono", 2.00); /* analyzed for clips */
-}
+MACHINE_CONFIG_END
-void cmaster_state::nfm(machine_config &config)
-{
+MACHINE_CONFIG_START(cmaster_state::nfm)
amcoe2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &cmaster_state::nfm_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(nfm_map)
- m_gfxdecode->set_info(gfx_nfm);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_nfm)
+MACHINE_CONFIG_END
WRITE_LINE_MEMBER(unkch_state::vblank_irq)
@@ -9338,24 +9347,24 @@ WRITE_LINE_MEMBER(unkch_state::vblank_irq)
m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
-void unkch_state::unkch(machine_config &config)
-{
+MACHINE_CONFIG_START(unkch_state::unkch)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &unkch_state::unkch_map);
- m_maincpu->set_addrmap(AS_IO, &unkch_state::unkch_portmap);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(unkch_map)
+ MCFG_DEVICE_IO_MAP(unkch_portmap)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(unkch_state::screen_update_unkch));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(unkch_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(unkch_state, screen_update_unkch)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, unkch_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_unkch);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 512);
@@ -9370,28 +9379,28 @@ void unkch_state::unkch(machine_config &config)
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
/* payout hardware */
- TICKET_DISPENSER(config, m_ticket_dispenser, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
-}
+ MCFG_TICKET_DISPENSER_ADD("tickets", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
+MACHINE_CONFIG_END
// hw unknown - should be somewhat similar to cm
-void goldstar_state::pkrmast(machine_config &config)
-{
+MACHINE_CONFIG_START(goldstar_state::pkrmast)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &goldstar_state::cm_map);
- m_maincpu->set_addrmap(AS_IO, &goldstar_state::pkrmast_portmap);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(cm_map)
+ MCFG_DEVICE_IO_MAP(pkrmast_portmap)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(goldstar_state::screen_update_goldstar));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, 0, HOLD_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pkrmast);
PALETTE(config, m_palette, FUNC(goldstar_state::cm_palette), 256);
@@ -9405,29 +9414,29 @@ void goldstar_state::pkrmast(machine_config &config)
aysnd.port_a_read_callback().set_ioport("DSW4");
aysnd.port_b_read_callback().set_ioport("DSW5");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
-void unkch_state::megaline(machine_config &config)
-{
+MACHINE_CONFIG_START(unkch_state::megaline)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &unkch_state::megaline_map);
- m_maincpu->set_addrmap(AS_IO, &unkch_state::megaline_portmap);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(megaline_map)
+ MCFG_DEVICE_IO_MAP(megaline_portmap)
- //I8255A(config, m_ppi[0], 0);
- //I8255A(config, m_ppi[1], 0);
- //I8255A(config, m_ppi[2], 0);
+ //MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0)
+ //MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0)
+ //MCFG_DEVICE_ADD("ppi8255_2", I8255A, 0)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(goldstar_state::screen_update_goldstar));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_megaline);
PALETTE(config, m_palette, FUNC(goldstar_state::lucky8_palette), 256);
@@ -9438,11 +9447,14 @@ void unkch_state::megaline(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489(config, "sn1", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("sn1", SN76489, PSG_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
- SN76489(config, "sn2", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("sn2", SN76489, PSG_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
- SN76489(config, "sn3", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("sn3", SN76489, PSG_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
ay8910_device &aysnd(AY8910(config, "aysnd", AY_CLOCK));
aysnd.port_a_read_callback().set_ioport("DSW3");
@@ -9450,26 +9462,28 @@ void unkch_state::megaline(machine_config &config)
aysnd.port_a_write_callback().set(FUNC(goldstar_state::ay8910_outputa_w));
aysnd.port_b_write_callback().set(FUNC(goldstar_state::ay8910_outputb_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_START(unkch_state::bonusch)
-void unkch_state::bonusch(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 12_MHz_XTAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &unkch_state::bonusch_map);
- m_maincpu->set_addrmap(AS_IO, &unkch_state::bonusch_portmap);
+ MCFG_DEVICE_ADD("maincpu", Z80, 12_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(bonusch_map)
+ MCFG_DEVICE_IO_MAP(bonusch_portmap)
- I80C51(config, "mcu", 12_MHz_XTAL).set_disable();
+ MCFG_DEVICE_ADD("mcu", I80C51, 12_MHz_XTAL)
+ MCFG_DEVICE_DISABLE()
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(goldstar_state::screen_update_goldstar));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_megaline);
PALETTE(config, m_palette, FUNC(goldstar_state::lucky8_palette), 256);
@@ -9479,20 +9493,25 @@ void unkch_state::bonusch(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489(config, "sn1", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("sn1", SN76489, PSG_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
- SN76489(config, "sn2", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("sn2", SN76489, PSG_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
- SN76489(config, "sn3", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("sn3", SN76489, PSG_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
- SN76489(config, "sn4", PSG_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+ MCFG_DEVICE_ADD("sn4", SN76489, PSG_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
-void unkch_state::feverch(machine_config &config)
-{
- Z80(config, m_maincpu, 12'000'000 / 2); // clock not verified
- m_maincpu->set_addrmap(AS_PROGRAM, &unkch_state::feverch_map);
- m_maincpu->set_addrmap(AS_IO, &unkch_state::feverch_portmap);
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(unkch_state::feverch)
+
+ MCFG_DEVICE_ADD("maincpu", Z80, 12'000'000 / 2) // clock not verified
+ MCFG_DEVICE_PROGRAM_MAP(feverch_map)
+ MCFG_DEVICE_IO_MAP(feverch_portmap)
I8255A(config, m_ppi[0]);
m_ppi[0]->in_pa_callback().set_ioport("IN0");
@@ -9509,13 +9528,13 @@ void unkch_state::feverch(machine_config &config)
m_ppi[2]->in_pb_callback().set_ioport("DSW2");
m_ppi[2]->in_pc_callback().set_ioport("DSW3");
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(unkch_state::screen_update_unkch));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(unkch_state, screen_update_unkch)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ncb3);
PALETTE(config, m_palette, FUNC(goldstar_state::lucky8_palette)).set_format(palette_device::BGR_233, 256);
@@ -9524,12 +9543,15 @@ void unkch_state::feverch(machine_config &config)
SPEAKER(config, "mono").front_center();
- SN76489A(config, "sn1", 12'000'000 / 12).add_route(ALL_OUTPUTS, "mono", 0.80); // actually SN76489AN, clock not verified
+ MCFG_DEVICE_ADD("sn1", SN76489A, 12'000'000 / 12) // actually SN76489AN, clock not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
- SN76489A(config, "sn2", 12'000'000 / 12).add_route(ALL_OUTPUTS, "mono", 0.80); // actually SN76489AN, clock not verified
+ MCFG_DEVICE_ADD("sn2", SN76489A, 12'000'000 / 12) // actually SN76489AN, clock not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
- SN76489A(config, "sn3", 12'000'000 / 12).add_route(ALL_OUTPUTS, "mono", 0.80); // actually SN76489AN, clock not verified
-}
+ MCFG_DEVICE_ADD("sn3", SN76489A, 12'000'000 / 12) // actually SN76489AN, clock not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
/***************************************************************************
@@ -14045,49 +14067,6 @@ ROM_START( nfb96seb )
ROM_LOAD( "chu1920.bin", 0x0000, 0x0100, CRC(71b0e11d) SHA1(1d2a2a31d8571f580c0cb7f4833823841072b31f) )
ROM_END
-ROM_START( nfb96sec )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "u34",0x00000, 0x1000, CRC(65e7a70d) SHA1(77b8b7e16e842d6debf9bb13d83dbf4289ab0bd4) )
- ROM_CONTINUE(0x4000, 0x1000)
- ROM_CONTINUE(0x3000, 0x1000)
- ROM_CONTINUE(0x7000, 0x1000)
- ROM_CONTINUE(0x1000, 0x1000)
- ROM_CONTINUE(0x6000, 0x1000)
- ROM_CONTINUE(0x2000, 0x1000)
- ROM_CONTINUE(0x5000, 0x1000)
- ROM_CONTINUE(0x8000, 0x1000)
- ROM_CONTINUE(0x9000, 0x1000)
- ROM_CONTINUE(0xa000, 0x1000)
- ROM_CONTINUE(0xb000, 0x1000)
- ROM_CONTINUE(0xc000, 0x1000)
- ROM_CONTINUE(0xd000, 0x1000)
- ROM_CONTINUE(0xe000, 0x1000)
- ROM_CONTINUE(0xf000, 0x1000)
-
- ROM_REGION( 0x10000, "user1", ROMREGION_ERASEFF )
-
- ROM_REGION( 0x18000, "gfx1", 0 ) // Same data as other sets, arranged differently
- ROM_LOAD( "u2", 0x00000, 0x08000, CRC(7d245ff8) SHA1(eebc3c0700aaa5e8d0be22d411f097607e179d5e) )
- ROM_CONTINUE( 0x10000, 0x08000 )
- ROM_CONTINUE( 0x08000, 0x08000 )
- ROM_CONTINUE( 0x00000, 0x08000 )
-
- ROM_REGION( 0x10000, "gfx2", 0 ) // Same data as other sets, arranged differently
- ROM_LOAD( "u35", 0x0000, 0x4000, CRC(ddd6b7cb) SHA1(ff5161d7d25b216fd507a43f9102cde1e1518593) ) // 0xxxxxxxxxxxxxx = 0xFF
- ROM_CONTINUE( 0x2000, 0x2000 )
- ROM_CONTINUE( 0x0000, 0x2000 )
- ROM_LOAD( "u1", 0x4000, 0x4000, CRC(fdbb5896) SHA1(edfcfcfbf6306ff40c517eeeb05f91b869ba40d2) ) // 0xxxxxxxxxxxxxx = 0xFF
- ROM_CONTINUE( 0x6000, 0x2000 )
- ROM_CONTINUE( 0x4000, 0x2000 )
-
- // taken from new fruit bonus '96, might be wrong
- ROM_REGION( 0x200, "proms", 0 ) // palette
- ROM_LOAD( "chu19.bin", 0x0000, 0x0100, CRC(fafc43ad) SHA1(e94592b83f19e5f9b6205473c1e06b36405ebfc2) )
- ROM_LOAD( "chu20.bin", 0x0100, 0x0100, CRC(05224f73) SHA1(051c3ee9c63f5436e4f6c355fc308f37910a88ef) )
-
- ROM_REGION( 0x100, "proms2", 0 ) // colours again?
- ROM_LOAD( "chu1920.bin", 0x0000, 0x0100, CRC(71b0e11d) SHA1(1d2a2a31d8571f580c0cb7f4833823841072b31f) )
-ROM_END
// this contains elephants etc. instead of the usual symbols, maybe
// it's meant to work with the above program roms?
@@ -16877,7 +16856,6 @@ GAME( 1996, roypok96c, roypok96, amcoe2, roypok96a, cmaster_state, init_rp96
GAME( 1996, nfb96se, nfb96, amcoe2, nfb96bl, cmaster_state, empty_init, ROT0, "bootleg", "New Fruit Bonus '96 Special Edition (bootleg set 1, v97-3.3c Portuguese)", 0 )
GAME( 1996, nfb96sea, nfb96, amcoe2, nfb96bl, cmaster_state, init_nfb96sea, ROT0, "bootleg", "New Fruit Bonus '96 Special Edition (bootleg set 2, v97-3.3c English)", MACHINE_WRONG_COLORS ) // encrypted program
GAME( 1996, nfb96seb, nfb96, amcoe2, nfb96bl, cmaster_state, empty_init, ROT0, "bootleg", "New Fruit Bonus '96 Special Edition (bootleg set 3, v97-3.3c Portuguese)", MACHINE_WRONG_COLORS )
-GAME( 1996, nfb96sec, nfb96, amcoe2, nfb96bl, cmaster_state, empty_init, ROT0, "bootleg", "New Fruit Bonus '96 Special Edition (bootleg set 4, v97-3.3c English)", MACHINE_WRONG_COLORS )
GAME( 2002, carb2002, nfb96, amcoe2, nfb96bl, cmaster_state, empty_init, ROT0, "bootleg", "Carriage Bonus 2002 (bootleg)", MACHINE_WRONG_COLORS )
GAME( 2003, carb2003, nfb96, amcoe2, nfb96bl, cmaster_state, empty_init, ROT0, "bootleg", "Carriage Bonus 2003 (bootleg)", MACHINE_WRONG_COLORS )
diff --git a/src/mame/drivers/gomoku.cpp b/src/mame/drivers/gomoku.cpp
index cccd0fedd64..43ef834bdfc 100644
--- a/src/mame/drivers/gomoku.cpp
+++ b/src/mame/drivers/gomoku.cpp
@@ -122,12 +122,11 @@ static GFXDECODE_START( gfx_gomoku )
GFXDECODE_END
-void gomoku_state::gomoku(machine_config &config)
-{
+MACHINE_CONFIG_START(gomoku_state::gomoku)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'432'000)/12); /* 1.536 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &gomoku_state::gomoku_map);
- m_maincpu->set_vblank_int("screen", FUNC(gomoku_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'432'000)/12) /* 1.536 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(gomoku_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gomoku_state, irq0_line_hold)
ls259_device &latch(LS259(config, "latch")); // 7J
latch.q_out_cb<1>().set(FUNC(gomoku_state::flipscreen_w));
@@ -135,13 +134,13 @@ void gomoku_state::gomoku(machine_config &config)
latch.q_out_cb<7>().set_nop(); // start LED?
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 256-1, 16, 256-16-1);
- m_screen->set_screen_update(FUNC(gomoku_state::screen_update_gomoku));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gomoku_state, screen_update_gomoku)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_gomoku);
PALETTE(config, "palette", FUNC(gomoku_state::gomoku_palette), 64);
@@ -149,8 +148,9 @@ void gomoku_state::gomoku(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- GOMOKU_SOUND(config, "gomoku").add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("gomoku", GOMOKU_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( gomoku )
diff --git a/src/mame/drivers/good.cpp b/src/mame/drivers/good.cpp
index 3de57828b26..0c34bc2de21 100644
--- a/src/mame/drivers/good.cpp
+++ b/src/mame/drivers/good.cpp
@@ -291,31 +291,31 @@ static GFXDECODE_START( gfx_good )
GFXDECODE_END
-void good_state::good(machine_config &config)
-{
- M68000(config, m_maincpu, 16000000 /2);
- m_maincpu->set_addrmap(AS_PROGRAM, &good_state::good_map);
- m_maincpu->set_vblank_int("screen", FUNC(good_state::irq2_line_hold));
+MACHINE_CONFIG_START(good_state::good)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 16000000 /2)
+ MCFG_DEVICE_PROGRAM_MAP(good_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", good_state, irq2_line_hold)
GFXDECODE(config, m_gfxdecode, "palette", gfx_good);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*16, 32*16);
- screen.set_visarea(1*16, 23*16-1, 0*16, 14*16-1);
- screen.set_screen_update(FUNC(good_state::screen_update_good));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*16, 32*16)
+ MCFG_SCREEN_VISIBLE_AREA(1*16, 23*16-1, 0*16, 14*16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(good_state, screen_update_good)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x400);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- okim6295_device &oki(OKIM6295(config, "oki", 1000000, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
- oki.add_route(ALL_OUTPUTS, "lspeaker", 0.47);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 0.47);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47)
+MACHINE_CONFIG_END
ROM_START( good )
diff --git a/src/mame/drivers/gotcha.cpp b/src/mame/drivers/gotcha.cpp
index 5c53762d266..d910eb2fff4 100644
--- a/src/mame/drivers/gotcha.cpp
+++ b/src/mame/drivers/gotcha.cpp
@@ -260,14 +260,14 @@ void gotcha_state::machine_reset()
m_banksel = 0;
}
-void gotcha_state::gotcha(machine_config &config)
-{
+MACHINE_CONFIG_START(gotcha_state::gotcha)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 14.318181_MHz_XTAL); /* 14.31818 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &gotcha_state::gotcha_map);
+ MCFG_DEVICE_ADD("maincpu", M68000,14318180) /* 14.31818 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(gotcha_map)
- Z80(config, m_audiocpu, 6_MHz_XTAL); /* 6 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &gotcha_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80,6000000) /* 6 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -294,13 +294,14 @@ void gotcha_state::gotcha(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- ym2151_device &ymsnd(YM2151(config, "ymsnd", 14.318181_MHz_XTAL / 4));
+ ym2151_device &ymsnd(YM2151(config, "ymsnd", 14318180/4));
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
ymsnd.add_route(0, "mono", 0.80);
ymsnd.add_route(1, "mono", 0.80);
- OKIM6295(config, m_oki, 1_MHz_XTAL, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+MACHINE_CONFIG_END
@@ -382,42 +383,5 @@ ROM_START( ppchamp )
ROM_LOAD( "uz11", 0x00000, 0x80000, CRC(3d96274c) SHA1(c7a670af86194c370bf8fb30afbe027ab78a0227) )
ROM_END
-ROM_START( ppchampa )
- ROM_REGION( 0x80000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "d8-d15.u8", 0x00000, 0x40000, CRC(e7f8b97a) SHA1(85216fc64d3482a1108bd1bf7792db441be5e999) )
- ROM_LOAD16_BYTE( "d0-d7.u2", 0x00001, 0x40000, CRC(35ee8ad7) SHA1(ce721899b627935703c5b2fc4fa4d107192d3814) )
-
- ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "uz02", 0x00000, 0x10000, CRC(f4f6e16b) SHA1(a360c571bee7391c66e98e5e111e78ac9732390e) )
-
- ROM_REGION( 0x200000, "gfx1", 0 )
- ROM_LOAD( "u42a", 0x000000, 0x20000, CRC(f0b521d1) SHA1(fe44bfa13818eee08d112c2f75e14bfd67bbefbf) )
- ROM_CONTINUE( 0x100000, 0x20000 )
- ROM_CONTINUE( 0x020000, 0x20000 )
- ROM_CONTINUE( 0x120000, 0x20000 )
- ROM_LOAD( "u42b", 0x040000, 0x20000, CRC(1107918e) SHA1(bb508da36814f2954d6a9996b777d095f6e9c243) )
- ROM_CONTINUE( 0x140000, 0x20000 )
- ROM_CONTINUE( 0x060000, 0x20000 )
- ROM_CONTINUE( 0x160000, 0x20000 )
- ROM_LOAD( "u41a", 0x080000, 0x20000, CRC(3f567d33) SHA1(77122c1cdea663922fe570e005bfbb4c779f30da) )
- ROM_CONTINUE( 0x180000, 0x20000 )
- ROM_CONTINUE( 0x0a0000, 0x20000 )
- ROM_CONTINUE( 0x1a0000, 0x20000 )
- ROM_LOAD( "u41b", 0x0c0000, 0x20000, CRC(18a3497e) SHA1(7938f4e723bf4d29de6c9eda807c37d86b7ac78c) )
- ROM_CONTINUE( 0x1c0000, 0x20000 )
- ROM_CONTINUE( 0x0e0000, 0x20000 )
- ROM_CONTINUE( 0x1e0000, 0x20000 )
-
- ROM_REGION( 0x200000, "gfx2", 0 )
- ROM_LOAD( "u56", 0x000000, 0x80000, CRC(160e46b3) SHA1(e2bec3388d41afb9f1025d66c15fcc6ca4d40703) )
- ROM_LOAD( "u55", 0x080000, 0x80000, CRC(7351b61c) SHA1(2ef3011a7a1ff253f45186e46cfdce5f4ef17322) )
- ROM_LOAD( "u54", 0x100000, 0x80000, CRC(a3d8c5ef) SHA1(f59874844934f3ce76a49e4a9618510537378387) )
- ROM_LOAD( "u53", 0x180000, 0x80000, CRC(10ca65c4) SHA1(66ba3c6e1bda18c5668a609adc60bfe547205e53) )
-
- ROM_REGION( 0x80000, "oki", 0 )
- ROM_LOAD( "uz11", 0x00000, 0x80000, CRC(3d96274c) SHA1(c7a670af86194c370bf8fb30afbe027ab78a0227) )
-ROM_END
-
-GAMEL( 1997, gotcha, 0, gotcha, gotcha, gotcha_state, empty_init, ROT0, "Dongsung / Para", "Got-cha Mini Game Festival", MACHINE_SUPPORTS_SAVE, layout_gotcha )
-GAMEL( 1997, ppchamp, gotcha, gotcha, gotcha, gotcha_state, empty_init, ROT0, "Dongsung / Para", "Pasha Pasha Champ Mini Game Festival (Korea, set 1)", MACHINE_SUPPORTS_SAVE, layout_gotcha )
-GAMEL( 1997, ppchampa, gotcha, gotcha, gotcha, gotcha_state, empty_init, ROT0, "Dongsung / Para", "Pasha Pasha Champ Mini Game Festival (Korea, set 2)", MACHINE_SUPPORTS_SAVE, layout_gotcha )
+GAMEL( 1997, gotcha, 0, gotcha, gotcha, gotcha_state, empty_init, ROT0, "Dongsung / Para", "Got-cha Mini Game Festival", MACHINE_SUPPORTS_SAVE, layout_gotcha )
+GAMEL( 1997, ppchamp, gotcha, gotcha, gotcha, gotcha_state, empty_init, ROT0, "Dongsung / Para", "Pasha Pasha Champ Mini Game Festival (Korea)", MACHINE_SUPPORTS_SAVE, layout_gotcha )
diff --git a/src/mame/drivers/gottlieb.cpp b/src/mame/drivers/gottlieb.cpp
index 974fefb172e..624e1756c34 100644
--- a/src/mame/drivers/gottlieb.cpp
+++ b/src/mame/drivers/gottlieb.cpp
@@ -1892,14 +1892,14 @@ void gottlieb_state::cobram3(machine_config &config)
ROM_START( reactor )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "gv_100_rom7.rom7.c9-10", 0x8000, 0x1000, CRC(a62d86fd) SHA1(9ffce668c6f0155568ccb62a6f12a9513f3c513f) )
- ROM_LOAD( "gv_100_rom6.rom6.c10-11", 0x9000, 0x1000, CRC(6ed841f3) SHA1(b94272457e6a2d0ec46b510d71d69b4ab92a44aa) )
- ROM_LOAD( "gv_100_rom5.rom5.c11-12", 0xa000, 0x1000, CRC(d90576a3) SHA1(52af7164dc59b9f7d8a1b3ef9d4c1fc81496899f) )
- ROM_LOAD( "gv_100_rom4.rom4.c12-13", 0xb000, 0x1000, CRC(0155daae) SHA1(3a94952c2830c7bea126cf39b84108936d96dc0e) )
- ROM_LOAD( "gv_100_rom3.rom3.c13-14", 0xc000, 0x1000, CRC(f8881385) SHA1(baa7ef7309aab9b382442b25ede5d7ecd6e2c370) )
- ROM_LOAD( "gv_100_rom2.rom2.c14-15", 0xd000, 0x1000, CRC(3caba35b) SHA1(4d3b894821a2cff0ef55cec2b1f62f2e33009b4d) )
- ROM_LOAD( "gv_100_rom1.rom1.c16", 0xe000, 0x1000, CRC(944e1ddf) SHA1(6b487f1cb405e2ba9345190e8ab6022c790882c1) )
- ROM_LOAD( "gv_100_rom0.rom0.c17", 0xf000, 0x1000, CRC(55930aed) SHA1(37ed60386935741e8cc0b8750bfcdf6f54c1bf9e) )
+ ROM_LOAD( "rom7", 0x8000, 0x1000, CRC(a62d86fd) SHA1(9ffce668c6f0155568ccb62a6f12a9513f3c513f) )
+ ROM_LOAD( "rom6", 0x9000, 0x1000, CRC(6ed841f3) SHA1(b94272457e6a2d0ec46b510d71d69b4ab92a44aa) )
+ ROM_LOAD( "rom5", 0xa000, 0x1000, CRC(d90576a3) SHA1(52af7164dc59b9f7d8a1b3ef9d4c1fc81496899f) )
+ ROM_LOAD( "rom4", 0xb000, 0x1000, CRC(0155daae) SHA1(3a94952c2830c7bea126cf39b84108936d96dc0e) )
+ ROM_LOAD( "rom3", 0xc000, 0x1000, CRC(f8881385) SHA1(baa7ef7309aab9b382442b25ede5d7ecd6e2c370) )
+ ROM_LOAD( "rom2", 0xd000, 0x1000, CRC(3caba35b) SHA1(4d3b894821a2cff0ef55cec2b1f62f2e33009b4d) )
+ ROM_LOAD( "rom1", 0xe000, 0x1000, CRC(944e1ddf) SHA1(6b487f1cb405e2ba9345190e8ab6022c790882c1) )
+ ROM_LOAD( "rom0", 0xf000, 0x1000, CRC(55930aed) SHA1(37ed60386935741e8cc0b8750bfcdf6f54c1bf9e) )
ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
ROM_LOAD( "snd1", 0x7000, 0x800, CRC(d958a0fd) SHA1(3c383076c68a929f96d844e89b09f3075f331906) )
@@ -1909,10 +1909,10 @@ ROM_START( reactor )
/* no ROMs; RAM is used instead */
ROM_REGION( 0x8000, "sprites", 0 )
- ROM_LOAD( "gv_100_fg_3.fg3.k7-8", 0x1000, 0x1000, CRC(8416ad53) SHA1(f868259b97675e58b6a7f1dc3c2a4ecf6aa0570e) )
- ROM_LOAD( "gv_100_fg_2.fg2.k6-7", 0x3000, 0x1000, CRC(5489605a) SHA1(f4bbaaa8cd881dc164b118d1e516edeeea54c1d8) )
- ROM_LOAD( "gv_100_fg_1.fg1.k5-6", 0x5000, 0x1000, CRC(18396c57) SHA1(39d90a842a03091414ed58d4128b524ecc20c9f1) )
- ROM_LOAD( "gv_100_fg_0.fg0.k4-5", 0x7000, 0x1000, CRC(d1f20e15) SHA1(dba9aa0fec8b720a33d78b3dd1d7f74040048f7e) )
+ ROM_LOAD( "fg3", 0x1000, 0x1000, CRC(8416ad53) SHA1(f868259b97675e58b6a7f1dc3c2a4ecf6aa0570e) )
+ ROM_LOAD( "fg2", 0x3000, 0x1000, CRC(5489605a) SHA1(f4bbaaa8cd881dc164b118d1e516edeeea54c1d8) )
+ ROM_LOAD( "fg1", 0x5000, 0x1000, CRC(18396c57) SHA1(39d90a842a03091414ed58d4128b524ecc20c9f1) )
+ ROM_LOAD( "fg0", 0x7000, 0x1000, CRC(d1f20e15) SHA1(dba9aa0fec8b720a33d78b3dd1d7f74040048f7e) )
ROM_END
diff --git a/src/mame/drivers/gp2x.cpp b/src/mame/drivers/gp2x.cpp
index 5e9c92722ad..d92c64215f7 100644
--- a/src/mame/drivers/gp2x.cpp
+++ b/src/mame/drivers/gp2x.cpp
@@ -362,23 +362,22 @@ void gp2x_state::gp2x_map(address_map &map)
static INPUT_PORTS_START( gp2x )
INPUT_PORTS_END
-void gp2x_state::gp2x(machine_config &config)
-{
- ARM9(config, m_maincpu, 80000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &gp2x_state::gp2x_map);
+MACHINE_CONFIG_START(gp2x_state::gp2x)
+ MCFG_DEVICE_ADD("maincpu", ARM9, 80000000)
+ MCFG_DEVICE_PROGRAM_MAP(gp2x_map)
- PALETTE(config, "palette").set_entries(32768);
+ MCFG_PALETTE_ADD("palette", 32768)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(320, 240);
- screen.set_visarea(0, 319, 0, 239);
- screen.set_screen_update(FUNC(gp2x_state::screen_update_gp2x));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(320, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
+ MCFG_SCREEN_UPDATE_DRIVER(gp2x_state, screen_update_gp2x)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
-}
+MACHINE_CONFIG_END
ROM_START(gp2x)
ROM_REGION( 0x600000, "maincpu", 0 ) // contents of NAND flash
diff --git a/src/mame/drivers/gp32.cpp b/src/mame/drivers/gp32.cpp
index 9dcca0f150b..37cd654af55 100644
--- a/src/mame/drivers/gp32.cpp
+++ b/src/mame/drivers/gp32.cpp
@@ -2,7 +2,7 @@
// copyright-holders:Tim Schuerewegen
/**************************************************************************
*
- * gp32.cpp - Game Park GP32
+ * gp32.c - Game Park GP32
* Driver by Tim Schuerewegen
*
* CPU: Samsung S3C2400X01 SoC
@@ -1609,7 +1609,7 @@ void gp32_state::s3c240x_machine_start()
m_s3c240x_iic_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(gp32_state::s3c240x_iic_timer_exp),this), (void *)(uintptr_t)0);
m_s3c240x_iis_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(gp32_state::s3c240x_iis_timer_exp),this), (void *)(uintptr_t)0);
m_s3c240x_lcd_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(gp32_state::s3c240x_lcd_timer_exp),this), (void *)(uintptr_t)0);
- m_eeprom_data = std::make_unique<uint8_t[]>(0x2000); // a dump of the EEPROM (S524AB0X91) resulted to be 0x1000
+ m_eeprom_data = std::make_unique<uint8_t[]>(0x2000);
m_nvram->set_base(m_eeprom_data.get(), 0x2000);
smc_init();
i2s_init();
@@ -1673,34 +1673,33 @@ void gp32_state::machine_reset()
s3c240x_machine_reset();
}
-void gp32_state::gp32(machine_config &config)
-{
- ARM9(config, m_maincpu, 40000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &gp32_state::gp32_map);
+MACHINE_CONFIG_START(gp32_state::gp32)
+ MCFG_DEVICE_ADD("maincpu", ARM9, 40000000)
+ MCFG_DEVICE_PROGRAM_MAP(gp32_map)
- PALETTE(config, m_palette).set_entries(32768);
+ MCFG_PALETTE_ADD("palette", 32768)
- SCREEN(config, m_screen, SCREEN_TYPE_LCD);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(240, 320);
- m_screen->set_visarea(0, 239, 0, 319);
- m_screen->set_screen_update(FUNC(gp32_state::screen_update_gp32));
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(240, 320)
+ MCFG_SCREEN_VISIBLE_AREA(0, 239, 0, 319)
+ MCFG_SCREEN_UPDATE_DRIVER(gp32_state, screen_update_gp32)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_ldac, 0).add_route(ALL_OUTPUTS, "lspeaker", 1.0); // unknown DAC
- DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_rdac, 0).add_route(ALL_OUTPUTS, "rspeaker", 1.0); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("ldac", DAC_16BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) // unknown DAC
+ MCFG_DEVICE_ADD("rdac", DAC_16BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
SMARTMEDIA(config, m_smartmedia, 0);
- SOFTWARE_LIST(config, "memc_list").set_original("gp32");
-}
+ MCFG_SOFTWARE_LIST_ADD("memc_list","gp32")
+MACHINE_CONFIG_END
ROM_START( gp32 )
ROM_REGION( 0x80000, "maincpu", 0 )
@@ -1718,9 +1717,6 @@ ROM_START( gp32 )
ROM_SYSTEM_BIOS( 5, "test", "test" )
ROMX_LOAD( "test.bin", 0x000000, 0x080000, CRC(00000000) SHA1(0000000000000000000000000000000000000000), ROM_BIOS(5) )
#endif
-
- ROM_REGION( 0x4000, "plds", ROMREGION_ERASEFF )
- ROM_LOAD( "x2c32.jed", 0, 0x3bbb, CRC(eeec10d8) SHA1(34c4b1b865511517a5de1fa352228d95cda387c5) ) // JEDEC format for the time being. X2C32: 32 Macrocell CoolRunner-II CPLD
ROM_END
CONS(2001, gp32, 0, 0, gp32, gp32, gp32_state, empty_init, "Game Park Holdings", "GP32", ROT270|MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/gp_2.cpp b/src/mame/drivers/gp_2.cpp
index 394f44f5405..6056960d33a 100644
--- a/src/mame/drivers/gp_2.cpp
+++ b/src/mame/drivers/gp_2.cpp
@@ -582,8 +582,7 @@ static const z80_daisy_config daisy_chain[] =
{ nullptr }
};
-void gp_2_state::gp_2(machine_config &config)
-{
+MACHINE_CONFIG_START(gp_2_state::gp_2)
/* basic machine hardware */
Z80(config, m_maincpu, 2457600);
m_maincpu->set_addrmap(AS_PROGRAM, &gp_2_state::gp_2_map);
@@ -606,8 +605,8 @@ void gp_2_state::gp_2(machine_config &config)
Z80CTC(config, m_ctc, 2457600);
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); // Todo: absence of ints will cause a watchdog reset
- TIMER(config, "gp1").configure_periodic(FUNC(gp_2_state::zero_timer), attotime::from_hz(120)); // mains freq*2
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("gp1", gp_2_state, zero_timer, attotime::from_hz(120)) // mains freq*2
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
/ Agents 777 (November 1984) - Model #770
diff --git a/src/mame/drivers/gpworld.cpp b/src/mame/drivers/gpworld.cpp
index c1aa1838129..3a659c2f8ec 100644
--- a/src/mame/drivers/gpworld.cpp
+++ b/src/mame/drivers/gpworld.cpp
@@ -500,27 +500,29 @@ GFXDECODE_END
MACHINE_CONFIG_START(gpworld_state::gpworld)
/* main cpu */
- Z80(config, m_maincpu, GUESSED_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &gpworld_state::mainmem);
- m_maincpu->set_addrmap(AS_IO, &gpworld_state::mainport);
- m_maincpu->set_vblank_int("screen", FUNC(gpworld_state::vblank_callback));
+ MCFG_DEVICE_ADD("maincpu", Z80, GUESSED_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(mainmem)
+ MCFG_DEVICE_IO_MAP(mainport)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gpworld_state, vblank_callback)
- PIONEER_LDV1000(config, m_laserdisc, 0);
- m_laserdisc->set_overlay(512, 256, FUNC(gpworld_state::screen_update));
- m_laserdisc->set_overlay_palette(m_palette);
- m_laserdisc->add_route(0, "lspeaker", 1.0);
- m_laserdisc->add_route(1, "rspeaker", 1.0);
+ MCFG_LASERDISC_LDV1000_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY_DRIVER(512, 256, gpworld_state, screen_update)
+ MCFG_LASERDISC_OVERLAY_PALETTE("palette")
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_gpworld);
- PALETTE(config, m_palette).set_entries(1024);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_gpworld)
+ MCFG_PALETTE_ADD("palette", 1024)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
+
+ MCFG_DEVICE_MODIFY("laserdisc")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/grchamp.cpp b/src/mame/drivers/grchamp.cpp
index f81460c0491..76df4032055 100644
--- a/src/mame/drivers/grchamp.cpp
+++ b/src/mame/drivers/grchamp.cpp
@@ -735,37 +735,37 @@ INPUT_PORTS_END
*
*************************************/
-void grchamp_state::grchamp(machine_config &config)
-{
+MACHINE_CONFIG_START(grchamp_state::grchamp)
+
/* basic machine hardware */
/* CPU BOARD */
- Z80(config, m_maincpu, PIXEL_CLOCK/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &grchamp_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &grchamp_state::main_portmap);
- m_maincpu->set_vblank_int("screen", FUNC(grchamp_state::cpu0_interrupt));
+ MCFG_DEVICE_ADD("maincpu", Z80, PIXEL_CLOCK/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", grchamp_state, cpu0_interrupt)
/* GAME BOARD */
- Z80(config, m_subcpu, PIXEL_CLOCK/2);
- m_subcpu->set_addrmap(AS_PROGRAM, &grchamp_state::sub_map);
- m_subcpu->set_addrmap(AS_IO, &grchamp_state::sub_portmap);
- m_subcpu->set_vblank_int("screen", FUNC(grchamp_state::cpu1_interrupt));
+ MCFG_DEVICE_ADD("sub", Z80, PIXEL_CLOCK/2)
+ MCFG_DEVICE_PROGRAM_MAP(sub_map)
+ MCFG_DEVICE_IO_MAP(sub_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", grchamp_state, cpu1_interrupt)
/* SOUND BOARD */
- Z80(config, m_audiocpu, SOUND_CLOCK/2);
- m_audiocpu->set_addrmap(AS_PROGRAM, &grchamp_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(grchamp_state::irq0_line_hold), attotime::from_hz((double)SOUND_CLOCK/4/16/16/10/16));
+ MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CLOCK/2)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(grchamp_state, irq0_line_hold, (double)SOUND_CLOCK/4/16/16/10/16)
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 8);
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
GFXDECODE(config, m_gfxdecode, m_palette, gfx_grchamp);
PALETTE(config, m_palette, FUNC(grchamp_state::grchamp_palette), 32);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(grchamp_state::screen_update));
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(grchamp_state, screen_update)
/* sound hardware */
@@ -785,8 +785,9 @@ void grchamp_state::grchamp(machine_config &config)
ay3.port_b_write_callback().set(FUNC(grchamp_state::portB_2_w));
ay3.add_route(ALL_OUTPUTS, "mono", 0.2);
- DISCRETE(config, m_discrete, grchamp_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, grchamp_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/grfd2301.cpp b/src/mame/drivers/grfd2301.cpp
index ac6b2e442bf..2e0dc245288 100644
--- a/src/mame/drivers/grfd2301.cpp
+++ b/src/mame/drivers/grfd2301.cpp
@@ -116,24 +116,23 @@ uint32_t grfd2301_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
return 0;
}
-void grfd2301_state::grfd2301(machine_config &config)
-{
+MACHINE_CONFIG_START(grfd2301_state::grfd2301)
// basic machine hardware
- Z80(config, m_maincpu, 4000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &grfd2301_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &grfd2301_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(grfd2301_state::screen_update));
- screen.set_size(640, 240);
- screen.set_visarea_full();
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(grfd2301_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
-}
+MACHINE_CONFIG_END
ROM_START( grfd2301 )
ROM_REGION( 0x1000, "maincpu", 0 )
diff --git a/src/mame/drivers/gridcomp.cpp b/src/mame/drivers/gridcomp.cpp
index fca86b46762..6b3c59c609e 100644
--- a/src/mame/drivers/gridcomp.cpp
+++ b/src/mame/drivers/gridcomp.cpp
@@ -82,16 +82,17 @@
#include "speaker.h"
-//#define LOG_GENERAL (1U << 0) //defined in logmacro.h already
-#define LOG_KEYBOARD (1U << 1)
-#define LOG_DEBUG (1U << 2)
+#define VERBOSE_DBG 1
-//#define VERBOSE (LOG_DEBUG)
-//#define LOG_OUTPUT_FUNC printf
-#include "logmacro.h"
-
-#define LOGKBD(...) LOGMASKED(LOG_KEYBOARD, __VA_ARGS__)
-#define LOGDBG(...) LOGMASKED(LOG_DEBUG, __VA_ARGS__)
+#define DBG_LOG(N,M,A) \
+ do { \
+ if(VERBOSE_DBG>=N) \
+ { \
+ if( M ) \
+ logerror("%11.6f at %s: %-10s",machine().time().as_double(),machine().describe_context(),(char*)M ); \
+ logerror A; \
+ } \
+ } while (0)
#define I80130_TAG "osp"
@@ -165,7 +166,7 @@ READ16_MEMBER(gridcomp_state::grid_9ff0_r)
break;
}
- LOGDBG("9FF0: %02x == %02x\n", 0x9ff00 + (offset << 1), data);
+ DBG_LOG(1, "9FF0", ("%02x == %02x\n", 0x9ff00 + (offset << 1), data));
return data;
}
@@ -188,14 +189,14 @@ READ16_MEMBER(gridcomp_state::grid_keyb_r)
break;
}
- LOGKBD("%02x == %02x\n", 0xdffc0 + (offset << 1), data);
+ DBG_LOG(1, "Keyb", ("%02x == %02x\n", 0xdffc0 + (offset << 1), data));
return data;
}
WRITE16_MEMBER(gridcomp_state::grid_keyb_w)
{
- LOGKBD("%02x <- %02x\n", 0xdffc0 + (offset << 1), data);
+ DBG_LOG(1, "Keyb", ("%02x <- %02x\n", 0xdffc0 + (offset << 1), data));
}
void gridcomp_state::kbd_put(u16 data)
@@ -223,7 +224,7 @@ READ16_MEMBER(gridcomp_state::grid_gpib_r)
break;
}
- LOG("GPIB %02x == %02x\n", 0xdff80 + (offset << 1), data);
+ DBG_LOG(1, "GPIB", ("%02x == %02x\n", 0xdff80 + (offset << 1), data));
return data;
}
@@ -237,7 +238,7 @@ WRITE16_MEMBER(gridcomp_state::grid_gpib_w)
break;
}
- LOG("GPIB %02x <- %02x\n", 0xdff80 + (offset << 1), data);
+ DBG_LOG(1, "GPIB", ("%02x <- %02x\n", 0xdff80 + (offset << 1), data));
}
@@ -291,12 +292,15 @@ uint32_t gridcomp_state::screen_update_113x(screen_device &screen, bitmap_ind16
void gridcomp_state::init_gridcomp()
{
+ DBG_LOG(0, "init", ("driver_init()\n"));
}
MACHINE_START_MEMBER(gridcomp_state, gridcomp)
{
address_space &program = m_maincpu->space(AS_PROGRAM);
+ DBG_LOG(0, "init", ("machine_start()\n"));
+
program.install_readwrite_bank(0, m_ram->size() - 1, "bank10");
membank("bank10")->set_base(m_ram->pointer());
@@ -305,6 +309,8 @@ MACHINE_START_MEMBER(gridcomp_state, gridcomp)
MACHINE_RESET_MEMBER(gridcomp_state, gridcomp)
{
+ DBG_LOG(0, "init", ("machine_reset()\n"));
+
m_kbd_ready = false;
}
@@ -321,7 +327,7 @@ void gridcomp_state::grid1101_map(address_map &map)
map(0xdfea0, 0xdfeaf).unmaprw(); // ??
map(0xdfec0, 0xdfecf).rw(m_modem, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); // incl. DTMF generator
map(0xdff40, 0xdff5f).noprw(); // ?? machine ID EAROM, RTC
- map(0xdff80, 0xdff8f).rw("hpib", FUNC(tms9914_device::read), FUNC(tms9914_device::write)).umask16(0x00ff);
+ map(0xdff80, 0xdff8f).rw("hpib", FUNC(tms9914_device::reg8_r), FUNC(tms9914_device::reg8_w)).umask16(0x00ff);
map(0xdffc0, 0xdffcf).rw(FUNC(gridcomp_state::grid_keyb_r), FUNC(gridcomp_state::grid_keyb_w)); // Intel 8741 MCU
map(0xfc000, 0xfffff).rom().region("user1", 0);
}
@@ -338,7 +344,7 @@ void gridcomp_state::grid1121_map(address_map &map)
map(0xdfea0, 0xdfeaf).unmaprw(); // ??
map(0xdfec0, 0xdfecf).rw(m_modem, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); // incl. DTMF generator
map(0xdff40, 0xdff5f).noprw(); // ?? machine ID EAROM, RTC
- map(0xdff80, 0xdff8f).rw("hpib", FUNC(tms9914_device::read), FUNC(tms9914_device::write)).umask16(0x00ff);
+ map(0xdff80, 0xdff8f).rw("hpib", FUNC(tms9914_device::reg8_r), FUNC(tms9914_device::reg8_w)).umask16(0x00ff);
map(0xdffc0, 0xdffcf).rw(FUNC(gridcomp_state::grid_keyb_r), FUNC(gridcomp_state::grid_keyb_w)); // Intel 8741 MCU
map(0xfc000, 0xfffff).rom().region("user1", 0);
}
@@ -361,12 +367,11 @@ INPUT_PORTS_END
* IRQ6 8087
* IRQ7 ring
*/
-void gridcomp_state::grid1101(machine_config &config)
-{
- I8086(config, m_maincpu, XTAL(15'000'000) / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &gridcomp_state::grid1101_map);
- m_maincpu->set_addrmap(AS_IO, &gridcomp_state::grid1101_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(gridcomp_state::irq_callback));
+MACHINE_CONFIG_START(gridcomp_state::grid1101)
+ MCFG_DEVICE_ADD("maincpu", I8086, XTAL(15'000'000) / 3)
+ MCFG_DEVICE_PROGRAM_MAP(grid1101_map)
+ MCFG_DEVICE_IO_MAP(grid1101_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(gridcomp_state, irq_callback)
MCFG_MACHINE_START_OVERRIDE(gridcomp_state, gridcomp)
MCFG_MACHINE_RESET_OVERRIDE(gridcomp_state, gridcomp)
@@ -375,14 +380,14 @@ void gridcomp_state::grid1101(machine_config &config)
m_osp->irq().set_inputline("maincpu", 0);
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); // actually a kind of EL display
- screen.set_color(rgb_t::amber());
- screen.set_screen_update(FUNC(gridcomp_state::screen_update_110x));
- screen.set_raw(XTAL(15'000'000)/2, 424, 0, 320, 262, 0, 240); // XXX 66 Hz refresh
- screen.screen_vblank().set(m_osp, FUNC(i80130_device::ir3_w));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD_MONOCHROME("screen", LCD, rgb_t::amber()) // actually a kind of EL display
+ MCFG_SCREEN_UPDATE_DRIVER(gridcomp_state, screen_update_110x)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(15'000'000)/2, 424, 0, 320, 262, 0, 240) // XXX 66 Hz refresh
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(I80130_TAG, i80130_device, ir3_w))
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -406,24 +411,23 @@ void gridcomp_state::grid1101(machine_config &config)
hpib.srq_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_srq_w));
hpib.atn_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_atn_w));
hpib.ren_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ren_w));
-
- ieee488_device &ieee(IEEE488(config, IEEE488_TAG));
- ieee.eoi_callback().set("hpib", FUNC(tms9914_device::eoi_w));
- ieee.dav_callback().set("hpib", FUNC(tms9914_device::dav_w));
- ieee.nrfd_callback().set("hpib", FUNC(tms9914_device::nrfd_w));
- ieee.ndac_callback().set("hpib", FUNC(tms9914_device::ndac_w));
- ieee.ifc_callback().set("hpib", FUNC(tms9914_device::ifc_w));
- ieee.srq_callback().set("hpib", FUNC(tms9914_device::srq_w));
- ieee.atn_callback().set("hpib", FUNC(tms9914_device::atn_w));
- ieee.ren_callback().set("hpib", FUNC(tms9914_device::ren_w));
- IEEE488_SLOT(config, "ieee_rem", 0, remote488_devices, nullptr);
+ MCFG_IEEE488_BUS_ADD()
+ MCFG_IEEE488_EOI_CALLBACK(WRITELINE("hpib", tms9914_device, eoi_w))
+ MCFG_IEEE488_DAV_CALLBACK(WRITELINE("hpib", tms9914_device, dav_w))
+ MCFG_IEEE488_NRFD_CALLBACK(WRITELINE("hpib", tms9914_device, nrfd_w))
+ MCFG_IEEE488_NDAC_CALLBACK(WRITELINE("hpib", tms9914_device, ndac_w))
+ MCFG_IEEE488_IFC_CALLBACK(WRITELINE("hpib", tms9914_device, ifc_w))
+ MCFG_IEEE488_SRQ_CALLBACK(WRITELINE("hpib", tms9914_device, srq_w))
+ MCFG_IEEE488_ATN_CALLBACK(WRITELINE("hpib", tms9914_device, atn_w))
+ MCFG_IEEE488_REN_CALLBACK(WRITELINE("hpib", tms9914_device, ren_w))
+ MCFG_IEEE488_SLOT_ADD("ieee_rem", 0, remote488_devices, nullptr)
I8274_NEW(config, m_uart8274, XTAL(4'032'000));
- I8255(config, "modem", 0);
+ MCFG_DEVICE_ADD("modem", I8255, 0)
RAM(config, m_ram).set_default_size("256K").set_default_value(0);
-}
+MACHINE_CONFIG_END
void gridcomp_state::grid1109(machine_config &config)
{
@@ -431,12 +435,12 @@ void gridcomp_state::grid1109(machine_config &config)
m_ram->set_default_size("512K");
}
-void gridcomp_state::grid1121(machine_config &config)
-{
+MACHINE_CONFIG_START(gridcomp_state::grid1121)
grid1101(config);
- m_maincpu->set_clock(XTAL(24'000'000) / 3); // XXX
- m_maincpu->set_addrmap(AS_PROGRAM, &gridcomp_state::grid1121_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(XTAL(24'000'000) / 3) // XXX
+ MCFG_DEVICE_PROGRAM_MAP(grid1121_map)
+MACHINE_CONFIG_END
void gridcomp_state::grid1129(machine_config &config)
{
@@ -444,12 +448,12 @@ void gridcomp_state::grid1129(machine_config &config)
m_ram->set_default_size("512K");
}
-void gridcomp_state::grid1131(machine_config &config)
-{
+MACHINE_CONFIG_START(gridcomp_state::grid1131)
grid1121(config);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(gridcomp_state::screen_update_113x));
- subdevice<screen_device>("screen")->set_raw(XTAL(15'000'000)/2, 720, 0, 512, 262, 0, 240); // XXX
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(gridcomp_state, screen_update_113x)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(15'000'000)/2, 720, 0, 512, 262, 0, 240) // XXX
+MACHINE_CONFIG_END
void gridcomp_state::grid1139(machine_config &config)
{
diff --git a/src/mame/drivers/groundfx.cpp b/src/mame/drivers/groundfx.cpp
index 42dac3e78bc..145378de015 100644
--- a/src/mame/drivers/groundfx.cpp
+++ b/src/mame/drivers/groundfx.cpp
@@ -235,12 +235,12 @@ INTERRUPT_GEN_MEMBER(groundfx_state::interrupt)
device.execute().set_input_line(4, HOLD_LINE);
}
-void groundfx_state::groundfx(machine_config &config)
-{
+MACHINE_CONFIG_START(groundfx_state::groundfx)
+
/* basic machine hardware */
- M68EC020(config, m_maincpu, XTAL(40'000'000)/2); /* 20MHz - verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &groundfx_state::groundfx_map);
- m_maincpu->set_vblank_int("screen", FUNC(groundfx_state::interrupt));
+ MCFG_DEVICE_ADD("maincpu", M68EC020, XTAL(40'000'000)/2) /* 20MHz - verified */
+ MCFG_DEVICE_PROGRAM_MAP(groundfx_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", groundfx_state, interrupt)
EEPROM_93C46_16BIT(config, "eeprom");
@@ -262,13 +262,13 @@ void groundfx_state::groundfx(machine_config &config)
tc0510nio.read_7_callback().set_ioport("SYSTEM");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0, 40*8-1, 3*8, 32*8-1);
- screen.set_screen_update(FUNC(groundfx_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 3*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(groundfx_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_groundfx);
PALETTE(config, m_palette).set_format(palette_device::xRGB_888, 16384);
@@ -289,7 +289,7 @@ void groundfx_state::groundfx(machine_config &config)
/* sound hardware */
TAITO_EN(config, "taito_en", 0);
-}
+MACHINE_CONFIG_END
/***************************************************************************
DRIVERS
diff --git a/src/mame/drivers/gstream.cpp b/src/mame/drivers/gstream.cpp
index 42cc5dc63ad..e24cc45e37b 100644
--- a/src/mame/drivers/gstream.cpp
+++ b/src/mame/drivers/gstream.cpp
@@ -828,23 +828,23 @@ void gstream_state::machine_reset()
m_oki_bank[0] = m_oki_bank[1] = 0;
}
-void gstream_state::gstream(machine_config &config)
-{
+MACHINE_CONFIG_START(gstream_state::gstream)
+
/* basic machine hardware */
- E132XT(config, m_maincpu, 16000000*4); /* 4x internal multiplier */
- m_maincpu->set_addrmap(AS_PROGRAM, &gstream_state::gstream_32bit_map);
- m_maincpu->set_addrmap(AS_IO, &gstream_state::gstream_io);
- m_maincpu->set_vblank_int("screen", FUNC(gstream_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", E132XT, 16000000*4) /* 4x internal multiplier */
+ MCFG_DEVICE_PROGRAM_MAP(gstream_32bit_map)
+ MCFG_DEVICE_IO_MAP(gstream_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gstream_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(320, 240);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(gstream_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(320, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
+ MCFG_SCREEN_UPDATE_DRIVER(gstream_state, screen_update)
PALETTE(config, m_palette).set_format(palette_device::BGR_565, 0x1000 + 0x400 + 0x400 + 0x400); // sprites + 3 bg layers
@@ -852,28 +852,30 @@ void gstream_state::gstream(machine_config &config)
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki[0], 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.00); /* 1 Mhz? */
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) /* 1 Mhz? */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
- OKIM6295(config, m_oki[1], 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.00); /* 1 Mhz? */
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) /* 1 Mhz? */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(gstream_state::x2222)
-void gstream_state::x2222(machine_config &config)
-{
/* basic machine hardware */
- E132XT(config, m_maincpu, 16000000*4); /* 4x internal multiplier */
- m_maincpu->set_addrmap(AS_PROGRAM, &gstream_state::x2222_32bit_map);
- m_maincpu->set_addrmap(AS_IO, &gstream_state::x2222_io);
- m_maincpu->set_vblank_int("screen", FUNC(gstream_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", E132XT, 16000000*4) /* 4x internal multiplier */
+ MCFG_DEVICE_PROGRAM_MAP(x2222_32bit_map)
+ MCFG_DEVICE_IO_MAP(x2222_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gstream_state, irq0_line_hold)
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(320, 240);
- screen.set_visarea_full();
- screen.set_screen_update(FUNC(gstream_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(320, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
+ MCFG_SCREEN_UPDATE_DRIVER(gstream_state, screen_update)
PALETTE(config, m_palette, palette_device::BGR_565);
@@ -883,8 +885,9 @@ void gstream_state::x2222(machine_config &config)
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki[0], 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.00); /* 1 Mhz? */
-}
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) /* 1 Mhz? */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
ROM_START( gstream )
diff --git a/src/mame/drivers/gsword.cpp b/src/mame/drivers/gsword.cpp
index 43ef1af09de..ee65e641dcd 100644
--- a/src/mame/drivers/gsword.cpp
+++ b/src/mame/drivers/gsword.cpp
@@ -318,12 +318,12 @@ void gsword_state_base::machine_reset()
WRITE8_MEMBER(gsword_state_base::ay8910_control_port_0_w)
{
- m_ay0->address_w(data);
+ m_ay0->address_w(space,offset,data);
m_fake8910_0 = data;
}
WRITE8_MEMBER(gsword_state_base::ay8910_control_port_1_w)
{
- m_ay1->address_w(data);
+ m_ay1->address_w(space,offset,data);
m_fake8910_1 = data;
}
@@ -914,21 +914,21 @@ static GFXDECODE_START( gfx_gsword )
GFXDECODE_END
-void gsword_state::gsword(machine_config &config)
-{
+MACHINE_CONFIG_START(gsword_state::gsword)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'000'000)/6); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &gsword_state::cpu1_map);
- m_maincpu->set_addrmap(AS_IO, &gsword_state::cpu1_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(gsword_state::irq0_line_hold));
+ MCFG_DEVICE_ADD(m_maincpu, Z80, XTAL(18'000'000)/6) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(cpu1_map)
+ MCFG_DEVICE_IO_MAP(cpu1_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gsword_state, irq0_line_hold)
- Z80(config, m_subcpu, XTAL(18'000'000)/6); /* verified on pcb */
- m_subcpu->set_addrmap(AS_PROGRAM, &gsword_state::cpu2_map);
- m_subcpu->set_addrmap(AS_IO, &gsword_state::cpu2_io_map);
- m_subcpu->set_periodic_int(FUNC(gsword_state::sound_interrupt), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD(m_subcpu, Z80, XTAL(18'000'000)/6) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(cpu2_map)
+ MCFG_DEVICE_IO_MAP(cpu2_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(gsword_state, sound_interrupt, 4*60)
- Z80(config, m_audiocpu, XTAL(18'000'000)/6); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &gsword_state::cpu3_map);
+ MCFG_DEVICE_ADD(m_audiocpu, Z80, XTAL(18'000'000)/6) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(cpu3_map)
upi41_cpu_device &mcu1(I8041(config, "mcu1", 12'000'000/2)); // clock unknown, using value from gladiatr
mcu1.p1_in_cb().set([this] () { return ioport("MCU1.P1")->read() | BIT(m_mcu2_p1, 0); });
@@ -955,16 +955,16 @@ void gsword_state::gsword(machine_config &config)
CLOCK(config, "tclk", 12'000'000/8/128/2).signal_handler().set([this] (int state) { m_tclk_val = state != 0; });
// lazy way to ensure communication works
- config.m_perfect_cpu_quantum = subtag("mcu1");
+ MCFG_QUANTUM_PERFECT_CPU("mcu1")
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(gsword_state::screen_update_gsword));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gsword_state, screen_update_gsword)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_gsword);
PALETTE(config, m_palette, FUNC(gsword_state::gsword_palette), 64*4 + 64*4, 256);
@@ -980,23 +980,23 @@ void gsword_state::gsword(machine_config &config)
m_ay1->port_a_write_callback().set(FUNC(gsword_state::nmi_set_w));
m_ay1->add_route(ALL_OUTPUTS, "mono", 0.30);
- msm5205_device &msm(MSM5205(config, "msm", XTAL(400'000))); /* verified on pcb */
- msm.set_prescaler_selector(msm5205_device::SEX_4B); /* vclk input mode */
- msm.add_route(ALL_OUTPUTS, "mono", 0.60);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, XTAL(400'000)) /* verified on pcb */
+ MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* vclk input mode */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(josvolly_state::josvolly)
-void josvolly_state::josvolly(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 18000000/4); /* ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &josvolly_state::cpu1_map);
- m_maincpu->set_addrmap(AS_IO, &josvolly_state::josvolly_cpu1_io_map);
- m_maincpu->set_periodic_int(FUNC(josvolly_state::irq0_line_hold), attotime::from_hz(2*60));
+ MCFG_DEVICE_ADD("maincpu", Z80, 18000000/4) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(cpu1_map)
+ MCFG_DEVICE_IO_MAP(josvolly_cpu1_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(josvolly_state, irq0_line_hold, 2*60)
- Z80(config, m_audiocpu, 12000000/4); /* ? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &josvolly_state::josvolly_cpu2_map);
- m_audiocpu->set_addrmap(AS_IO, &josvolly_state::josvolly_cpu2_io_map);
- m_audiocpu->set_vblank_int("screen", FUNC(josvolly_state::irq0_line_assert));
+ MCFG_DEVICE_ADD("audiocpu", Z80, 12000000/4) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(josvolly_cpu2_map)
+ MCFG_DEVICE_IO_MAP(josvolly_cpu2_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", josvolly_state, irq0_line_assert)
upi41_cpu_device &mcu1(I8741(config, "mcu1", 18000000/2)); /* ? */
mcu1.p1_in_cb().set(FUNC(josvolly_state::mcu1_p1_r));
@@ -1019,16 +1019,17 @@ void josvolly_state::josvolly(machine_config &config)
ppi.in_pc_callback().set_ioport("IN0"); // START
// the second MCU polls the first MCU's outputs, so it needs tight sync
- config.m_perfect_cpu_quantum = subtag("mcu2");
+ MCFG_QUANTUM_PERFECT_CPU("mcu2")
+
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(josvolly_state::screen_update_gsword));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(josvolly_state, screen_update_gsword)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_gsword);
PALETTE(config, m_palette, FUNC(josvolly_state::josvolly_palette), 64*4 + 64*4, 256);
@@ -1037,12 +1038,14 @@ void josvolly_state::josvolly(machine_config &config)
SPEAKER(config, "mono").front_center();
AY8910(config, m_ay0, 1500000).add_route(ALL_OUTPUTS, "mono", 0.30);
+
AY8910(config, m_ay1, 1500000).add_route(ALL_OUTPUTS, "mono", 0.30);
#if 0
- MSM5205(config, "msm", 384000).add_route(ALL_OUTPUTS, "mono", 0.60);
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
#endif
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/gts80a.cpp b/src/mame/drivers/gts80a.cpp
index 7d150b8e492..68fb7a4ff29 100644
--- a/src/mame/drivers/gts80a.cpp
+++ b/src/mame/drivers/gts80a.cpp
@@ -463,25 +463,25 @@ void caveman_state::video_io_map(address_map &map)
}
-void caveman_state::caveman(machine_config &config)
-{
+MACHINE_CONFIG_START(caveman_state::caveman)
gts80a_ss(config);
- I8088(config, m_videocpu, 5000000);
- m_videocpu->set_addrmap(AS_PROGRAM, &caveman_state::video_map);
- m_videocpu->set_addrmap(AS_IO, &caveman_state::video_io_map);
+ MCFG_DEVICE_ADD("video_cpu", I8088, 5000000)
+ MCFG_DEVICE_PROGRAM_MAP(video_map)
+ MCFG_DEVICE_IO_MAP(video_io_map)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 0, 248-1);
- screen.set_screen_update(FUNC(caveman_state::screen_update_caveman));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 248-1)
+ MCFG_SCREEN_UPDATE_DRIVER(caveman_state, screen_update_caveman)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, "palette").set_entries(16);
+ MCFG_PALETTE_ADD("palette", 16)
config.set_default_layout(layout_gts80a_caveman);
-}
+
+MACHINE_CONFIG_END
static INPUT_PORTS_START( caveman )
PORT_INCLUDE(gts80a)
diff --git a/src/mame/drivers/guab.cpp b/src/mame/drivers/guab.cpp
index 7a59cc87bfd..abda91a6d4b 100644
--- a/src/mame/drivers/guab.cpp
+++ b/src/mame/drivers/guab.cpp
@@ -241,10 +241,10 @@ WRITE16_MEMBER( guab_state::tms34061_w )
col = offset <<= 1;
if (ACCESSING_BITS_8_15)
- m_tms34061->write(col, row, func, data >> 8);
+ m_tms34061->write(space, col, row, func, data >> 8);
if (ACCESSING_BITS_0_7)
- m_tms34061->write(col | 1, row, func, data & 0xff);
+ m_tms34061->write(space, col | 1, row, func, data & 0xff);
}
READ16_MEMBER( guab_state::tms34061_r )
@@ -260,10 +260,10 @@ READ16_MEMBER( guab_state::tms34061_r )
col = offset <<= 1;
if (ACCESSING_BITS_8_15)
- data |= m_tms34061->read(col, row, func) << 8;
+ data |= m_tms34061->read(space, col, row, func) << 8;
if (ACCESSING_BITS_0_7)
- data |= m_tms34061->read(col | 1, row, func);
+ data |= m_tms34061->read(space, col | 1, row, func);
return data;
}
diff --git a/src/mame/drivers/gumbo.cpp b/src/mame/drivers/gumbo.cpp
index cd845259328..6810d612ef8 100644
--- a/src/mame/drivers/gumbo.cpp
+++ b/src/mame/drivers/gumbo.cpp
@@ -237,45 +237,45 @@ static GFXDECODE_START( gfx_gumbo )
GFXDECODE_END
-void gumbo_state::gumbo(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(14'318'181)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &gumbo_state::gumbo_map);
- m_maincpu->set_vblank_int("screen", FUNC(gumbo_state::irq1_line_hold)); // all the same
+MACHINE_CONFIG_START(gumbo_state::gumbo)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(14'318'181)/2)
+ MCFG_DEVICE_PROGRAM_MAP(gumbo_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gumbo_state, irq1_line_hold) // all the same
GFXDECODE(config, m_gfxdecode, "palette", gfx_gumbo);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, 48*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(gumbo_state::screen_update_gumbo));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gumbo_state, screen_update_gumbo)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x200);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(14'318'181)/16, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
- oki.add_route(ALL_OUTPUTS, "lspeaker", 0.47);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 0.47);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(14'318'181)/16, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47)
+MACHINE_CONFIG_END
-void gumbo_state::mspuzzle(machine_config &config)
-{
+MACHINE_CONFIG_START(gumbo_state::mspuzzle)
gumbo(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &gumbo_state::mspuzzle_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mspuzzle_map)
+MACHINE_CONFIG_END
-void gumbo_state::dblpoint(machine_config &config)
-{
+MACHINE_CONFIG_START(gumbo_state::dblpoint)
gumbo(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &gumbo_state::dblpoint_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dblpoint_map)
+MACHINE_CONFIG_END
ROM_START( gumbo )
ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 Code */
diff --git a/src/mame/drivers/gunbustr.cpp b/src/mame/drivers/gunbustr.cpp
index ce6c04deccd..99efa095775 100644
--- a/src/mame/drivers/gunbustr.cpp
+++ b/src/mame/drivers/gunbustr.cpp
@@ -230,12 +230,12 @@ GFXDECODE_END
MACHINE DRIVERS
***********************************************************/
-void gunbustr_state::gunbustr(machine_config &config)
-{
+MACHINE_CONFIG_START(gunbustr_state::gunbustr)
+
/* basic machine hardware */
- M68EC020(config, m_maincpu, XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &gunbustr_state::gunbustr_map);
- m_maincpu->set_vblank_int("screen", FUNC(gunbustr_state::gunbustr_interrupt)); /* VBL */
+ MCFG_DEVICE_ADD("maincpu", M68EC020, XTAL(16'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(gunbustr_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gunbustr_state, gunbustr_interrupt) /* VBL */
EEPROM_93C46_16BIT(config, "eeprom");
@@ -250,13 +250,13 @@ void gunbustr_state::gunbustr(machine_config &config)
tc0510nio.read_7_callback().set_ioport("SYSTEM");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0, 40*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(gunbustr_state::screen_update_gunbustr));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gunbustr_state, screen_update_gunbustr)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_gunbustr);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 4096);
@@ -271,7 +271,7 @@ void gunbustr_state::gunbustr(machine_config &config)
/* sound hardware */
TAITO_EN(config, "taito_en", 0);
-}
+MACHINE_CONFIG_END
/***************************************************************************/
diff --git a/src/mame/drivers/gundealr.cpp b/src/mame/drivers/gundealr.cpp
index 86e0ca88beb..e1feee5a3f4 100644
--- a/src/mame/drivers/gundealr.cpp
+++ b/src/mame/drivers/gundealr.cpp
@@ -438,31 +438,32 @@ TIMER_DEVICE_CALLBACK_MEMBER(gundealr_state::scanline)
m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0xcf); /* RST 10h */
}
-void gundealr_state::gundealr(machine_config &config)
-{
+MACHINE_CONFIG_START(gundealr_state::gundealr)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/2); /* 6 MHz verified for Yam! Yam!? */
- m_maincpu->set_addrmap(AS_PROGRAM, &gundealr_state::gundealr_main_map);
- m_maincpu->set_addrmap(AS_IO, &gundealr_state::main_portmap);
- TIMER(config, "scantimer").configure_scanline(FUNC(gundealr_state::scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* 6 MHz verified for Yam! Yam!? */
+ MCFG_DEVICE_PROGRAM_MAP(gundealr_main_map)
+ MCFG_DEVICE_IO_MAP(main_portmap)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", gundealr_state, scanline, "screen", 0, 1)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(gundealr_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gundealr_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_gundealr);
- PALETTE(config, m_palette).set_entries(512);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_gundealr)
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM2203(config, "ymsnd", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.25); /* 1.5Mhz verified for Yam! Yam!? */
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2203, XTAL(12'000'000)/8) /* 1.5Mhz verified for Yam! Yam!? */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
TIMER_DEVICE_CALLBACK_MEMBER(gundealr_state::yamyam_mcu_sim)
{
@@ -528,19 +529,18 @@ TIMER_DEVICE_CALLBACK_MEMBER(gundealr_state::yamyam_mcu_sim)
m_rambase[0x006] = m_port_in[0]->read();
}
-void gundealr_state::yamyam(machine_config &config)
-{
+MACHINE_CONFIG_START(gundealr_state::yamyam)
gundealr(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &gundealr_state::yamyam_main_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(yamyam_main_map)
- TIMER(config, "mcusim").configure_periodic(FUNC(gundealr_state::yamyam_mcu_sim), attotime::from_hz(6000000/60)); /* 6mhz confirmed */
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("mcusim", gundealr_state, yamyam_mcu_sim, attotime::from_hz(6000000/60)) /* 6mhz confirmed */
+MACHINE_CONFIG_END
-void gundealr_state::gundealrbl(machine_config &config)
-{
+MACHINE_CONFIG_START(gundealr_state::gundealrbl)
yamyam(config);
- config.device_remove("mcusim");
-}
+ MCFG_DEVICE_REMOVE("mcusim")
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/gunpey.cpp b/src/mame/drivers/gunpey.cpp
index c90cdc9dd0b..edeb8d227db 100644
--- a/src/mame/drivers/gunpey.cpp
+++ b/src/mame/drivers/gunpey.cpp
@@ -1217,33 +1217,33 @@ TIMER_DEVICE_CALLBACK_MEMBER(gunpey_state::scanline)
}
/***************************************************************************************/
-void gunpey_state::gunpey(machine_config &config)
-{
+MACHINE_CONFIG_START(gunpey_state::gunpey)
+
/* basic machine hardware */
- V30(config, m_maincpu, 57242400 / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &gunpey_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &gunpey_state::io_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(gunpey_state::scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", V30, 57242400 / 4)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", gunpey_state, scanline, "screen", 0, 1)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(57242400/8, 442, 0, 320, 264, 0, 240); /* just to get ~60 Hz */
- screen.set_screen_update(FUNC(gunpey_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(57242400/8, 442, 0, 320, 264, 0, 240) /* just to get ~60 Hz */
+ MCFG_SCREEN_UPDATE_DRIVER(gunpey_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, palette_device::RGB_555);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- OKIM6295(config, m_oki, XTAL(16'934'400) / 8, okim6295_device::PIN7_LOW);
- m_oki->add_route(ALL_OUTPUTS, "lspeaker", 0.25);
- m_oki->add_route(ALL_OUTPUTS, "rspeaker", 0.25);
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'934'400) / 8, okim6295_device::PIN7_LOW)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25)
- ymz280b_device &ymz(YMZ280B(config, "ymz", XTAL(16'934'400)));
- ymz.add_route(0, "lspeaker", 0.25);
- ymz.add_route(1, "rspeaker", 0.25);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, XTAL(16'934'400))
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.25)
+MACHINE_CONFIG_END
/***************************************************************************************/
diff --git a/src/mame/drivers/gunsmoke.cpp b/src/mame/drivers/gunsmoke.cpp
index c813db9703a..0c9f31fb998 100644
--- a/src/mame/drivers/gunsmoke.cpp
+++ b/src/mame/drivers/gunsmoke.cpp
@@ -301,29 +301,29 @@ void gunsmoke_state::machine_reset()
m_sprite3bank = 0;
}
-void gunsmoke_state::gunsmoke(machine_config &config)
-{
+MACHINE_CONFIG_START(gunsmoke_state::gunsmoke)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); // 4 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &gunsmoke_state::gunsmoke_map);
- m_maincpu->set_vblank_int("screen", FUNC(gunsmoke_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) // 4 MHz
+ MCFG_DEVICE_PROGRAM_MAP(gunsmoke_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gunsmoke_state, irq0_line_hold)
- z80_device &audiocpu(Z80(config, "audiocpu", 3000000)); // 3 MHz
- audiocpu.set_addrmap(AS_PROGRAM, &gunsmoke_state::sound_map);
- audiocpu.set_periodic_int(FUNC(gunsmoke_state::irq0_line_hold), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("audiocpu", Z80, 3000000) // 3 MHz
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(gunsmoke_state, irq0_line_hold, 4*60)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(gunsmoke_state::screen_update_gunsmoke));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(gunsmoke_state, screen_update_gunsmoke)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_gunsmoke);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_gunsmoke)
PALETTE(config, m_palette, FUNC(gunsmoke_state::gunsmoke_palette), 32*4 + 16*16 + 16*16, 256);
@@ -332,18 +332,18 @@ void gunsmoke_state::gunsmoke(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- ym2203_device &ym1(YM2203(config, "ym1", 1500000));
- ym1.add_route(0, "mono", 0.22);
- ym1.add_route(1, "mono", 0.22);
- ym1.add_route(2, "mono", 0.22);
- ym1.add_route(3, "mono", 0.14);
-
- ym2203_device &ym2(YM2203(config, "ym2", 1500000));
- ym2.add_route(0, "mono", 0.22);
- ym2.add_route(1, "mono", 0.22);
- ym2.add_route(2, "mono", 0.22);
- ym2.add_route(3, "mono", 0.14);
-}
+ MCFG_DEVICE_ADD("ym1", YM2203, 1500000)
+ MCFG_SOUND_ROUTE(0, "mono", 0.22)
+ MCFG_SOUND_ROUTE(1, "mono", 0.22)
+ MCFG_SOUND_ROUTE(2, "mono", 0.22)
+ MCFG_SOUND_ROUTE(3, "mono", 0.14)
+
+ MCFG_DEVICE_ADD("ym2", YM2203, 1500000)
+ MCFG_SOUND_ROUTE(0, "mono", 0.22)
+ MCFG_SOUND_ROUTE(1, "mono", 0.22)
+ MCFG_SOUND_ROUTE(2, "mono", 0.22)
+ MCFG_SOUND_ROUTE(3, "mono", 0.14)
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/gyruss.cpp b/src/mame/drivers/gyruss.cpp
index f6cfa52b263..e597b5ae677 100644
--- a/src/mame/drivers/gyruss.cpp
+++ b/src/mame/drivers/gyruss.cpp
@@ -473,18 +473,18 @@ WRITE_LINE_MEMBER(gyruss_state::vblank_irq)
m_subcpu->set_input_line(0, ASSERT_LINE);
}
-void gyruss_state::gyruss(machine_config &config)
-{
+MACHINE_CONFIG_START(gyruss_state::gyruss)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/6); /* 3.072 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &gyruss_state::main_cpu1_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(main_cpu1_map)
- KONAMI1(config, m_subcpu, MASTER_CLOCK/12); /* 1.536 MHz */
- m_subcpu->set_addrmap(AS_PROGRAM, &gyruss_state::main_cpu2_map);
+ MCFG_DEVICE_ADD("sub", KONAMI1, MASTER_CLOCK/12) /* 1.536 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(main_cpu2_map)
- Z80(config, m_audiocpu, SOUND_CLOCK/4); /* 3.579545 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &gyruss_state::audio_cpu1_map);
- m_audiocpu->set_addrmap(AS_IO, &gyruss_state::audio_cpu1_io_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CLOCK/4) /* 3.579545 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(audio_cpu1_map)
+ MCFG_DEVICE_IO_MAP(audio_cpu1_io_map)
I8039(config, m_audiocpu_2, XTAL(8'000'000));
m_audiocpu_2->set_addrmap(AS_PROGRAM, &gyruss_state::audio_cpu2_map);
@@ -492,7 +492,7 @@ void gyruss_state::gyruss(machine_config &config)
m_audiocpu_2->p1_out_cb().set(FUNC(gyruss_state::gyruss_dac_w));
m_audiocpu_2->p2_out_cb().set(FUNC(gyruss_state::gyruss_irq_clear_w));
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
ls259_device &mainlatch(LS259(config, "mainlatch")); // 3C
mainlatch.q_out_cb<0>().set(FUNC(gyruss_state::master_nmi_mask_w));
@@ -501,11 +501,11 @@ void gyruss_state::gyruss(machine_config &config)
mainlatch.q_out_cb<5>().set(FUNC(gyruss_state::flipscreen_w));
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(gyruss_state::screen_update_gyruss));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(gyruss_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(gyruss_state, screen_update_gyruss)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, gyruss_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_gyruss);
PALETTE(config, m_palette, FUNC(gyruss_state::gyruss_palette), 16*4+16*16, 32);
@@ -555,10 +555,10 @@ void gyruss_state::gyruss(machine_config &config)
ay5.add_route(1, "discrete", 1.0, 13);
ay5.add_route(2, "discrete", 1.0, 14);
- DISCRETE(config, m_discrete, gyruss_sound_discrete);
- m_discrete->add_route(0, "rspeaker", 1.0);
- m_discrete->add_route(1, "lspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, gyruss_sound_discrete)
+ MCFG_SOUND_ROUTE(0, "rspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "lspeaker", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/h19.cpp b/src/mame/drivers/h19.cpp
index d445b869756..35ad51af112 100644
--- a/src/mame/drivers/h19.cpp
+++ b/src/mame/drivers/h19.cpp
@@ -520,23 +520,22 @@ static GFXDECODE_START( gfx_h19 )
GFXDECODE_ENTRY( "chargen", 0x0000, h19_charlayout, 0, 1 )
GFXDECODE_END
-void h19_state::h19(machine_config &config)
-{
+MACHINE_CONFIG_START(h19_state::h19)
/* basic machine hardware */
- Z80(config, m_maincpu, H19_CLOCK); // From schematics
- m_maincpu->set_addrmap(AS_PROGRAM, &h19_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &h19_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, H19_CLOCK) // From schematics
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/* video hardware */
// TODO: make configurable, Heath offered 3 different CRTs - White, Green, Amber.
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(60); // TODO- this is adjustable by dipswitch.
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
- screen.set_size(640, 250);
- screen.set_visarea(0, 640 - 1, 0, 250 - 1);
-
- GFXDECODE(config, "gfxdecode", m_palette, gfx_h19);
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(60) // TODO- this is adjustable by dipswitch.
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
+
+ MCFG_SCREEN_SIZE(640, 250)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640 - 1, 0, 250 - 1)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_h19)
PALETTE(config, "palette", palette_device::MONOCHROME);
MC6845(config, m_crtc, MC6845_CLOCK);
@@ -549,24 +548,25 @@ void h19_state::h19(machine_config &config)
ins8250_device &uart(INS8250(config, "ins8250", INS8250_CLOCK));
uart.out_int_callback().set_inputline("maincpu", INPUT_LINE_IRQ0);
- MM5740(config, m_mm5740, MM5740_CLOCK);
- m_mm5740->x_cb<0>().set_ioport("X1");
- m_mm5740->x_cb<1>().set_ioport("X2");
- m_mm5740->x_cb<2>().set_ioport("X3");
- m_mm5740->x_cb<3>().set_ioport("X4");
- m_mm5740->x_cb<4>().set_ioport("X5");
- m_mm5740->x_cb<5>().set_ioport("X6");
- m_mm5740->x_cb<6>().set_ioport("X7");
- m_mm5740->x_cb<7>().set_ioport("X8");
- m_mm5740->x_cb<8>().set_ioport("X9");
- m_mm5740->shift_cb().set(FUNC(h19_state::mm5740_shift_r));
- m_mm5740->control_cb().set(FUNC(h19_state::mm5740_control_r));
- m_mm5740->data_ready_cb().set(FUNC(h19_state::mm5740_data_ready_w));
+ MCFG_DEVICE_ADD(KBDC_TAG, MM5740, MM5740_CLOCK)
+ MCFG_MM5740_MATRIX_X1(IOPORT("X1"))
+ MCFG_MM5740_MATRIX_X2(IOPORT("X2"))
+ MCFG_MM5740_MATRIX_X3(IOPORT("X3"))
+ MCFG_MM5740_MATRIX_X4(IOPORT("X4"))
+ MCFG_MM5740_MATRIX_X5(IOPORT("X5"))
+ MCFG_MM5740_MATRIX_X6(IOPORT("X6"))
+ MCFG_MM5740_MATRIX_X7(IOPORT("X7"))
+ MCFG_MM5740_MATRIX_X8(IOPORT("X8"))
+ MCFG_MM5740_MATRIX_X9(IOPORT("X9"))
+ MCFG_MM5740_SHIFT_CB(READLINE(*this, h19_state, mm5740_shift_r))
+ MCFG_MM5740_CONTROL_CB(READLINE(*this, h19_state, mm5740_control_r))
+ MCFG_MM5740_DATA_READY_CB(WRITELINE(*this, h19_state, mm5740_data_ready_w))
/* sound hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beep, H19_BEEP_FRQ).add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+ MCFG_DEVICE_ADD("beeper", BEEP, H19_BEEP_FRQ)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( h19 )
diff --git a/src/mame/drivers/halleys.cpp b/src/mame/drivers/halleys.cpp
index c4278cadb6f..f000894af47 100644
--- a/src/mame/drivers/halleys.cpp
+++ b/src/mame/drivers/halleys.cpp
@@ -1930,26 +1930,25 @@ void halleys_state::machine_reset()
}
-void halleys_state::halleys(machine_config &config)
-{
- MC6809E(config, m_maincpu, XTAL(19'968'000)/12); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &halleys_state::halleys_map);
-
- TIMER(config, "scantimer").configure_scanline(FUNC(halleys_state::halleys_scanline), "screen", 0, 1);
+MACHINE_CONFIG_START(halleys_state::halleys)
+ MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(19'968'000)/12) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(halleys_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", halleys_state, halleys_scanline, "screen", 0, 1)
- Z80(config, m_audiocpu, XTAL(6'000'000)/2); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &halleys_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(halleys_state::irq0_line_hold), attotime::from_hz((double)6000000/(4*16*16*10*16)));
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(6'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(halleys_state, irq0_line_hold, (double)6000000/(4*16*16*10*16))
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.50); /* verified on PCB */
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(SCREEN_WIDTH, SCREEN_HEIGHT);
- screen.set_visarea(VIS_MINX, VIS_MAXX, VIS_MINY, VIS_MAXY);
- screen.set_screen_update(FUNC(halleys_state::screen_update_halleys));
- screen.set_palette(m_palette);
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.50) /* verified on PCB */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(SCREEN_WIDTH, SCREEN_HEIGHT)
+ MCFG_SCREEN_VISIBLE_AREA(VIS_MINX, VIS_MAXX, VIS_MINY, VIS_MAXY)
+ MCFG_SCREEN_UPDATE_DRIVER(halleys_state, screen_update_halleys)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(halleys_state::halleys_palette), PALETTE_SIZE);
@@ -1967,19 +1966,19 @@ void halleys_state::halleys(machine_config &config)
ym2149_device &ay4(YM2149(config, "ay4", XTAL(6'000'000)/4)); /* verified on pcb */
ay4.port_b_write_callback().set(FUNC(halleys_state::sndnmi_msk_w));
ay4.add_route(ALL_OUTPUTS, "mono", 0.15);
-}
+MACHINE_CONFIG_END
-void halleys_state::benberob(machine_config &config)
-{
+MACHINE_CONFIG_START(halleys_state::benberob)
halleys(config);
-
- m_maincpu->set_clock(XTAL(19'968'000)/12); /* not verified but pcb identical to halley's comet */
-
- subdevice<timer_device>("scantimer")->set_callback(FUNC(halleys_state::benberob_scanline));
-
- subdevice<screen_device>("screen")->set_screen_update(FUNC(halleys_state::screen_update_benberob));
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(XTAL(19'968'000)/12) /* not verified but pcb identical to halley's comet */
+ MCFG_TIMER_MODIFY("scantimer")
+ MCFG_TIMER_DRIVER_CALLBACK(halleys_state, benberob_scanline)
+
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(halleys_state, screen_update_benberob)
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/hanaawas.cpp b/src/mame/drivers/hanaawas.cpp
index 30dc91670bb..1b015188f85 100644
--- a/src/mame/drivers/hanaawas.cpp
+++ b/src/mame/drivers/hanaawas.cpp
@@ -215,23 +215,23 @@ void hanaawas_state::machine_reset()
m_mux = 0;
}
-void hanaawas_state::hanaawas(machine_config &config)
-{
+MACHINE_CONFIG_START(hanaawas_state::hanaawas)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 18432000/6); /* 3.072 MHz ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &hanaawas_state::hanaawas_map);
- m_maincpu->set_addrmap(AS_IO, &hanaawas_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(hanaawas_state::irq0_line_assert));
+ MCFG_DEVICE_ADD("maincpu", Z80,18432000/6) /* 3.072 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(hanaawas_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", hanaawas_state, irq0_line_assert)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(hanaawas_state::screen_update_hanaawas));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(hanaawas_state, screen_update_hanaawas)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_hanaawas);
PALETTE(config, "palette", FUNC(hanaawas_state::hanaawas_palette), 32 * 8, 16);
@@ -243,7 +243,7 @@ void hanaawas_state::hanaawas(machine_config &config)
aysnd.port_a_read_callback().set_ioport("DSW");
aysnd.port_b_write_callback().set(FUNC(hanaawas_state::hanaawas_portB_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/hankin.cpp b/src/mame/drivers/hankin.cpp
index d20282fff41..28746abb8cb 100644
--- a/src/mame/drivers/hankin.cpp
+++ b/src/mame/drivers/hankin.cpp
@@ -472,14 +472,13 @@ WRITE_LINE_MEMBER( hankin_state::ic2_cb2_w )
m_ic2_cb2 = state;
}
-void hankin_state::hankin(machine_config &config)
-{
+MACHINE_CONFIG_START(hankin_state::hankin)
/* basic machine hardware */
- M6802(config, m_maincpu, 3276800);
- m_maincpu->set_addrmap(AS_PROGRAM, &hankin_state::hankin_map);
+ MCFG_DEVICE_ADD("maincpu", M6802, 3276800)
+ MCFG_DEVICE_PROGRAM_MAP(hankin_map)
- M6802(config, m_audiocpu, 3276800); // guess, xtal value not shown
- m_audiocpu->set_addrmap(AS_PROGRAM, &hankin_state::hankin_sub_map);
+ MCFG_DEVICE_ADD("audiocpu", M6802, 3276800) // guess, xtal value not shown
+ MCFG_DEVICE_PROGRAM_MAP(hankin_sub_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -490,10 +489,9 @@ void hankin_state::hankin(machine_config &config)
genpin_audio(config);
SPEAKER(config, "speaker").front_center();
- DAC_4BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
/* Devices */
PIA6821(config, m_ic10, 0);
@@ -526,9 +524,9 @@ void hankin_state::hankin(machine_config &config)
m_ic2->irqa_handler().set_inputline("audiocpu", M6802_IRQ_LINE);
m_ic2->irqb_handler().set_inputline("audiocpu", M6802_IRQ_LINE);
- TIMER(config, "timer_x").configure_periodic(FUNC(hankin_state::timer_x), attotime::from_hz(120)); // mains freq*2
- TIMER(config, "timer_s").configure_periodic(FUNC(hankin_state::timer_s), attotime::from_hz(94000)); // 555 on sound board*2
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x", hankin_state, timer_x, attotime::from_hz(120)) // mains freq*2
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_s", hankin_state, timer_s, attotime::from_hz(94000)) // 555 on sound board*2
+MACHINE_CONFIG_END
/*--------------------------------
/ FJ Holden
diff --git a/src/mame/drivers/hapyfish.cpp b/src/mame/drivers/hapyfish.cpp
index 8681e2723af..541e7c9c3ec 100644
--- a/src/mame/drivers/hapyfish.cpp
+++ b/src/mame/drivers/hapyfish.cpp
@@ -241,27 +241,27 @@ void hapyfish_state::init_mini2440()
// do nothing
}
-void hapyfish_state::hapyfish(machine_config &config)
-{
- ARM920T(config, m_maincpu, 100000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &hapyfish_state::hapyfish_map);
+MACHINE_CONFIG_START(hapyfish_state::hapyfish)
+ MCFG_DEVICE_ADD("maincpu", ARM920T, 100000000)
+ MCFG_DEVICE_PROGRAM_MAP(hapyfish_map)
+
+ MCFG_PALETTE_ADD("palette", 32768)
- PALETTE(config, "palette").set_entries(32768);
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(1024, 768)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(1024, 768);
- screen.set_visarea(0, 639, 0, 479);
- screen.set_screen_update("s3c2440", FUNC(s3c2440_device::screen_update));
+ MCFG_SCREEN_UPDATE_DEVICE("s3c2440", s3c2440_device, screen_update)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- UDA1341TS(config, m_ldac, 0).add_route(ALL_OUTPUTS, "lspeaker", 1.0); // uda1341ts.u12
- UDA1341TS(config, m_rdac, 0).add_route(ALL_OUTPUTS, "rspeaker", 1.0); // uda1341ts.u12
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("ldac", UDA1341TS, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) // uda1341ts.u12
+ MCFG_DEVICE_ADD("rdac", UDA1341TS, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) // uda1341ts.u12
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
S3C2440(config, m_s3c2440, 12000000);
m_s3c2440->set_palette_tag("palette");
@@ -283,7 +283,7 @@ void hapyfish_state::hapyfish(machine_config &config)
NAND(config, m_nand2, 0);
m_nand2->set_nand_type(nand_device::chip::K9LAG08U0M);
m_nand2->rnb_wr_callback().set(m_s3c2440, FUNC(s3c2440_device::frnb_w));
-}
+MACHINE_CONFIG_END
static INPUT_PORTS_START( hapyfish )
INPUT_PORTS_END
diff --git a/src/mame/drivers/harddriv.cpp b/src/mame/drivers/harddriv.cpp
index 721fbdde113..15fcf4bb041 100644
--- a/src/mame/drivers/harddriv.cpp
+++ b/src/mame/drivers/harddriv.cpp
@@ -565,6 +565,7 @@ void harddriv_state::driver_gsp_map(address_map &map)
map.unmap_value_high();
map(0x00000000, 0x0000200f).noprw(); /* hit during self-test */
map(0x02000000, 0x0207ffff).rw(FUNC(harddriv_state::hdgsp_vram_2bpp_r), FUNC(harddriv_state::hdgsp_vram_1bpp_w));
+ map(0xc0000000, 0xc00001ff).rw("gsp", FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xf4000000, 0xf40000ff).rw(FUNC(harddriv_state::hdgsp_control_lo_r), FUNC(harddriv_state::hdgsp_control_lo_w)).share("gsp_control_lo");
map(0xf4800000, 0xf48000ff).rw(FUNC(harddriv_state::hdgsp_control_hi_r), FUNC(harddriv_state::hdgsp_control_hi_w)).share("gsp_control_hi");
map(0xf5000000, 0xf5000fff).rw(FUNC(harddriv_state::hdgsp_paletteram_lo_r), FUNC(harddriv_state::hdgsp_paletteram_lo_w)).share("gsp_palram_lo");
@@ -578,6 +579,7 @@ void harddriv_state::driver_msp_map(address_map &map)
map.unmap_value_high();
map(0x00000000, 0x000fffff).ram().share("msp_ram");
map(0x00700000, 0x007fffff).ram().share("msp_ram");
+ map(0xc0000000, 0xc00001ff).rw("msp", FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xfff00000, 0xffffffff).ram().share("msp_ram");
}
@@ -614,6 +616,7 @@ void harddriv_state::multisync_gsp_map(address_map &map)
map.unmap_value_high();
map(0x00000000, 0x0000200f).noprw(); /* hit during self-test */
map(0x02000000, 0x020fffff).rw(FUNC(harddriv_state::hdgsp_vram_2bpp_r), FUNC(harddriv_state::hdgsp_vram_2bpp_w));
+ map(0xc0000000, 0xc00001ff).r("gsp", FUNC(tms34010_device::io_register_r)).w(FUNC(harddriv_state::hdgsp_io_w));
map(0xf4000000, 0xf40000ff).rw(FUNC(harddriv_state::hdgsp_control_lo_r), FUNC(harddriv_state::hdgsp_control_lo_w)).share("gsp_control_lo");
map(0xf4800000, 0xf48000ff).rw(FUNC(harddriv_state::hdgsp_control_hi_r), FUNC(harddriv_state::hdgsp_control_hi_w)).share("gsp_control_hi");
map(0xf5000000, 0xf5000fff).rw(FUNC(harddriv_state::hdgsp_paletteram_lo_r), FUNC(harddriv_state::hdgsp_paletteram_lo_w)).share("gsp_palram_lo");
@@ -655,6 +658,7 @@ void harddriv_state::multisync2_gsp_map(address_map &map)
map.unmap_value_high();
map(0x00000000, 0x0000200f).noprw(); /* hit during self-test */
map(0x02000000, 0x020fffff).rw(FUNC(harddriv_state::hdgsp_vram_2bpp_r), FUNC(harddriv_state::hdgsp_vram_2bpp_w));
+ map(0xc0000000, 0xc00001ff).r("gsp", FUNC(tms34010_device::io_register_r)).w(FUNC(harddriv_state::hdgsp_io_w));
map(0xf4000000, 0xf40000ff).rw(FUNC(harddriv_state::hdgsp_control_lo_r), FUNC(harddriv_state::hdgsp_control_lo_w)).share("gsp_control_lo");
map(0xf4800000, 0xf48000ff).rw(FUNC(harddriv_state::hdgsp_control_hi_r), FUNC(harddriv_state::hdgsp_control_hi_w)).share("gsp_control_hi");
map(0xf5000000, 0xf5000fff).rw(FUNC(harddriv_state::hdgsp_paletteram_lo_r), FUNC(harddriv_state::hdgsp_paletteram_lo_w)).share("gsp_palram_lo");
@@ -1536,7 +1540,6 @@ void harddriv_state::multisync_nomsp(machine_config &config)
m_gsp->set_addrmap(AS_PROGRAM, &harddriv_state::multisync_gsp_map);
m_gsp->set_pixel_clock(6000000);
m_gsp->set_pixels_per_clock(2);
- m_gsp->ioreg_pre_write().set(FUNC(harddriv_state::hdgsp_io_w));
m_gsp->set_scanline_ind16_callback(FUNC(harddriv_state::scanline_multisync));
/* video hardware */
@@ -1624,6 +1627,7 @@ void harddriv_state::ds3(machine_config &config)
DAC_16BIT_R2R(config, m_ldac, 0).add_route(ALL_OUTPUTS, "lspeaker", 1.0); // unknown DAC
DAC_16BIT_R2R(config, m_rdac, 0).add_route(ALL_OUTPUTS, "rspeaker", 1.0); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT);
@@ -2089,14 +2093,14 @@ void harddriv_new_state::racedriv_panorama_machine(machine_config &config)
RACEDRIVC_PANORAMA_SIDE_BOARD(config, "leftpcb", 0);
RACEDRIVC_PANORAMA_SIDE_BOARD(config, "rightpcb", 0);
-// config.m_minimum_quantum = attotime::from_hz(100000);
+// MCFG_QUANTUM_TIME(attotime::from_hz(100000))
subdevice<mc68681_device>("mainpcb:duartn68681")->a_tx_cb().set(FUNC(harddriv_new_state::tx_a));
// boots with 'PROGRAM OK' when using standard Hard Drivin' board type (needs 137412-115 slapstic)
subdevice<atari_slapstic_device>("mainpcb:slapstic")->set_chipnum(115);
TIMER(config, "hack_timer").configure_periodic(FUNC(harddriv_new_state::hack_timer), attotime::from_hz(60));
-// config.m_minimum_quantum = attotime::from_hz(60000);
+// MCFG_QUANTUM_TIME(attotime::from_hz(60000))
}
// this is an ugly hack, otherwise MAME's core can't seem to handle partial updates if you have multiple screens with different update frequencies.
diff --git a/src/mame/drivers/hazeltin.cpp b/src/mame/drivers/hazeltin.cpp
index df405e038b0..5fc7cf60776 100644
--- a/src/mame/drivers/hazeltin.cpp
+++ b/src/mame/drivers/hazeltin.cpp
@@ -695,25 +695,26 @@ GFXDECODE_END
MACHINE_CONFIG_START(hazl1500_state::hazl1500)
/* basic machine hardware */
- I8080(config, m_maincpu, XTAL(18'000'000)/9); // 18MHz crystal on schematics, using an i8224 clock gen/driver IC
- m_maincpu->set_addrmap(AS_PROGRAM, &hazl1500_state::hazl1500_mem);
- m_maincpu->set_addrmap(AS_IO, &hazl1500_state::hazl1500_io);
- config.m_perfect_cpu_quantum = subtag(CPU_TAG);
+ MCFG_DEVICE_ADD(CPU_TAG, I8080, XTAL(18'000'000)/9) // 18MHz crystal on schematics, using an i8224 clock gen/driver IC
+ MCFG_DEVICE_PROGRAM_MAP(hazl1500_mem)
+ MCFG_DEVICE_IO_MAP(hazl1500_io)
+ MCFG_QUANTUM_PERFECT_CPU(CPU_TAG)
- INPUT_MERGER_ANY_HIGH(config, "mainint").output_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+ MCFG_INPUT_MERGER_ANY_HIGH("mainint")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE(CPU_TAG, INPUT_LINE_IRQ0))
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_screen_update(FUNC(hazl1500_state::screen_update_hazl1500));
- //m_screen->set_raw(XTAL(33'264'000) / 2,
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(hazl1500_state, screen_update_hazl1500)
+ //MCFG_SCREEN_RAW_PARAMS(XTAL(33'264'000) / 2,
// SCREEN_HTOTAL, SCREEN_HSTART, SCREEN_HSTART + SCREEN_HDISP,
// SCREEN_VTOTAL, SCREEN_VSTART, SCREEN_VSTART + SCREEN_VDISP); // TODO: Figure out exact visibility
- m_screen->set_raw(XTAL(33'264'000) / 2,
+ MCFG_SCREEN_RAW_PARAMS(XTAL(33'264'000) / 2,
SCREEN_HTOTAL, 0, SCREEN_HTOTAL,
SCREEN_VTOTAL, 0, SCREEN_VTOTAL);
PALETTE(config, "palette", palette_device::MONOCHROME);
- GFXDECODE(config, "gfxdecode", "palette", gfx_hazl1500);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_hazl1500)
com8116_device &baudgen(COM8116(config, BAUDGEN_TAG, XTAL(5'068'800)));
baudgen.fr_handler().set(m_uart, FUNC(ay51013_device::write_tcp));
diff --git a/src/mame/drivers/headonb.cpp b/src/mame/drivers/headonb.cpp
index f4577a1056e..c63694bf47b 100644
--- a/src/mame/drivers/headonb.cpp
+++ b/src/mame/drivers/headonb.cpp
@@ -166,29 +166,29 @@ static GFXDECODE_START( gfx_headonb )
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1 )
GFXDECODE_END
-void headonb_state::headonb(machine_config &config)
-{
+MACHINE_CONFIG_START(headonb_state::headonb)
+
/* basic machine hardware */
- I8080A(config, m_maincpu, XTAL(20'000'000) / 10); // divider guessed
- m_maincpu->set_addrmap(AS_PROGRAM, &headonb_state::headonb_map);
- m_maincpu->set_addrmap(AS_IO, &headonb_state::headonb_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(headonb_state::irq0_line_hold)); // where is irqack?
+ MCFG_DEVICE_ADD("maincpu", I8080A, XTAL(20'000'000) / 10) // divider guessed
+ MCFG_DEVICE_PROGRAM_MAP(headonb_map)
+ MCFG_DEVICE_IO_MAP(headonb_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", headonb_state, irq0_line_hold) // where is irqack?
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
- screen.set_screen_update(FUNC(headonb_state::screen_update));
- screen.set_palette("palette");
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_headonb);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(headonb_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_headonb)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */
// TODO
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/hec2hrp.cpp b/src/mame/drivers/hec2hrp.cpp
index d1697dd1984..bfa41800e1f 100644
--- a/src/mame/drivers/hec2hrp.cpp
+++ b/src/mame/drivers/hec2hrp.cpp
@@ -110,7 +110,7 @@ void hec2hrp_state::hecdisc2_io(address_map &map)
map(0x050, 0x05f).rw(FUNC(hec2hrp_state::disc2_io50_port_r), FUNC(hec2hrp_state::disc2_io50_port_w));
// uPD765 link
map(0x060, 0x061).m(m_upd_fdc, FUNC(upd765a_device::map));
- map(0x070, 0x070).mirror(0x00f).rw(m_upd_fdc, FUNC(upd765a_device::dma_r), FUNC(upd765a_device::dma_w));
+ map(0x070, 0x07f).rw(m_upd_fdc, FUNC(upd765a_device::mdma_r), FUNC(upd765a_device::mdma_w));
}
void hec2hrp_state::hec2hrp_mem(address_map &map)
@@ -394,229 +394,212 @@ static void minidisc_floppies(device_slot_interface &device)
}
-void hec2hrp_state::hec2hr(machine_config &config)
-{
- Z80(config, m_maincpu, 5_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &hec2hrp_state::hec2hrp_mem);
- m_maincpu->set_addrmap(AS_IO, &hec2hrp_state::hec2hrp_io);
- m_maincpu->set_periodic_int(FUNC(hec2hrp_state::irq0_line_hold), attotime::from_hz(50)); /* put on the Z80 irq in Hz*/
-
+MACHINE_CONFIG_START(hec2hrp_state::hec2hr)
+ MCFG_DEVICE_ADD("maincpu", Z80, 5_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(hec2hrp_mem)
+ MCFG_DEVICE_IO_MAP(hec2hrp_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(hec2hrp_state, irq0_line_hold, 50) /* put on the Z80 irq in Hz*/
MCFG_MACHINE_RESET_OVERRIDE(hec2hrp_state,hec2hrp)
MCFG_MACHINE_START_OVERRIDE(hec2hrp_state,hec2hrp)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(400)); /* 2500 not accurate */
- screen.set_size(512, 230);
- screen.set_visarea(0, 243, 0, 227);
- screen.set_screen_update(FUNC(hec2hrp_state::screen_update_hec2hrp));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(400)) /* 2500 not accurate */
+ MCFG_SCREEN_SIZE(512, 230)
+ MCFG_SCREEN_VISIBLE_AREA(0, 243, 0, 227)
+ MCFG_SCREEN_UPDATE_DRIVER(hec2hrp_state, screen_update_hec2hrp)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(16);
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_VIDEO_START_OVERRIDE(hec2hrp_state,hec2hrp)
hector_audio(config);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(hector_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
-
- PRINTER(config, m_printer, 0);
-}
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(hector_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
-void hec2hrp_state::hec2hrp(machine_config &config)
-{
- Z80(config, m_maincpu, 5_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &hec2hrp_state::hec2hrp_mem);
- m_maincpu->set_addrmap(AS_IO, &hec2hrp_state::hec2hrp_io);
- m_maincpu->set_periodic_int(FUNC(hec2hrp_state::irq0_line_hold), attotime::from_hz(50)); /* put on the Z80 irq in Hz*/
+ MCFG_DEVICE_ADD("printer", PRINTER, 0)
+MACHINE_CONFIG_END
+MACHINE_CONFIG_START(hec2hrp_state::hec2hrp)
+ MCFG_DEVICE_ADD("maincpu", Z80, 5_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(hec2hrp_mem)
+ MCFG_DEVICE_IO_MAP(hec2hrp_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(hec2hrp_state, irq0_line_hold, 50) /* put on the Z80 irq in Hz*/
MCFG_MACHINE_RESET_OVERRIDE(hec2hrp_state,hec2hrp)
MCFG_MACHINE_START_OVERRIDE(hec2hrp_state,hec2hrp)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(400)); /* 2500 not accurate */
- screen.set_size(512, 230);
- screen.set_visarea(0, 243, 0, 227);
- screen.set_screen_update(FUNC(hec2hrp_state::screen_update_hec2hrp));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(400)) /* 2500 not accurate */
+ MCFG_SCREEN_SIZE(512, 230)
+ MCFG_SCREEN_VISIBLE_AREA(0, 243, 0, 227)
+ MCFG_SCREEN_UPDATE_DRIVER(hec2hrp_state, screen_update_hec2hrp)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(16);
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_VIDEO_START_OVERRIDE(hec2hrp_state,hec2hrp)
hector_audio(config);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(hector_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(hector_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
- PRINTER(config, m_printer, 0);
-}
+ MCFG_DEVICE_ADD("printer", PRINTER, 0)
+MACHINE_CONFIG_END
static void hector_floppies(device_slot_interface &device)
{
device.option_add("525hd", FLOPPY_525_HD);
}
-void hec2hrp_state::hec2mx40(machine_config &config)
-{
- Z80(config, m_maincpu, 5_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &hec2hrp_state::hec2hrx_mem);
- m_maincpu->set_addrmap(AS_IO, &hec2hrp_state::hec2mx40_io);
- m_maincpu->set_periodic_int(FUNC(hec2hrp_state::irq0_line_hold), attotime::from_hz(50)); /* put on the Z80 irq in Hz*/
-
- Z80(config, m_disc2cpu, 4_MHz_XTAL);
- m_disc2cpu->set_addrmap(AS_PROGRAM, &hec2hrp_state::hecdisc2_mem);
- m_disc2cpu->set_addrmap(AS_IO, &hec2hrp_state::hecdisc2_io);
+MACHINE_CONFIG_START(hec2hrp_state::hec2mx40)
+ MCFG_DEVICE_ADD("maincpu", Z80, 5_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(hec2hrx_mem)
+ MCFG_DEVICE_IO_MAP(hec2mx40_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(hec2hrp_state, irq0_line_hold, 50) // put on the Z80 irq in Hz
+ MCFG_DEVICE_ADD("disc2cpu", Z80, 4_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(hecdisc2_mem)
+ MCFG_DEVICE_IO_MAP(hecdisc2_io)
UPD765A(config, m_upd_fdc, 8'000'000, false, true);
m_upd_fdc->intrq_wr_callback().set(FUNC(hec2hrp_state::disc2_fdc_interrupt));
m_upd_fdc->drq_wr_callback().set(FUNC(hec2hrp_state::disc2_fdc_dma_irq));
-
- FLOPPY_CONNECTOR(config, m_upd_connector[0], hector_floppies, "525hd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, m_upd_connector[1], hector_floppies, "525hd", floppy_image_device::default_floppy_formats);
-
+ MCFG_FLOPPY_DRIVE_ADD(m_upd_connector[0], hector_floppies, "525hd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(m_upd_connector[1], hector_floppies, "525hd", floppy_image_device::default_floppy_formats)
MCFG_MACHINE_RESET_OVERRIDE(hec2hrp_state,hec2hrx)
MCFG_MACHINE_START_OVERRIDE(hec2hrp_state,hec2hrx)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(400)); /* 2500 not accurate */
- screen.set_size(512, 230);
- screen.set_visarea(0, 243, 0, 227);
- screen.set_screen_update(FUNC(hec2hrp_state::screen_update_hec2hrp));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(400)) /* 2500 not accurate */
+ MCFG_SCREEN_SIZE(512, 230)
+ MCFG_SCREEN_VISIBLE_AREA(0, 243, 0, 227)
+ MCFG_SCREEN_UPDATE_DRIVER(hec2hrp_state, screen_update_hec2hrp)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(16);
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_VIDEO_START_OVERRIDE(hec2hrp_state,hec2hrp)
hector_audio(config);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(hector_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(hector_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
- PRINTER(config, m_printer, 0);
-}
+ MCFG_DEVICE_ADD("printer", PRINTER, 0)
+MACHINE_CONFIG_END
-void hec2hrp_state::hec2hrx(machine_config &config)
-{
- Z80(config, m_maincpu, 5_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &hec2hrp_state::hec2hrx_mem);
- m_maincpu->set_addrmap(AS_IO, &hec2hrp_state::hec2hrx_io);
- m_maincpu->set_periodic_int(FUNC(hec2hrp_state::irq0_line_hold), attotime::from_hz(50)); /* put on the Z80 irq in Hz*/
-
+MACHINE_CONFIG_START(hec2hrp_state::hec2hrx)
+ MCFG_DEVICE_ADD("maincpu", Z80, 5_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(hec2hrx_mem)
+ MCFG_DEVICE_IO_MAP(hec2hrx_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(hec2hrp_state, irq0_line_hold, 50) // put on the Z80 irq in Hz
MCFG_MACHINE_RESET_OVERRIDE(hec2hrp_state,hec2hrx)
MCFG_MACHINE_START_OVERRIDE(hec2hrp_state,hec2hrx)
- Z80(config, m_disc2cpu, 4_MHz_XTAL);
- m_disc2cpu->set_addrmap(AS_PROGRAM, &hec2hrp_state::hecdisc2_mem);
- m_disc2cpu->set_addrmap(AS_IO, &hec2hrp_state::hecdisc2_io);
-
+ MCFG_DEVICE_ADD("disc2cpu", Z80, 4_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(hecdisc2_mem)
+ MCFG_DEVICE_IO_MAP(hecdisc2_io)
UPD765A(config, m_upd_fdc, 8'000'000, false, true);
m_upd_fdc->intrq_wr_callback().set(FUNC(hec2hrp_state::disc2_fdc_interrupt));
m_upd_fdc->drq_wr_callback().set(FUNC(hec2hrp_state::disc2_fdc_dma_irq));
-
- FLOPPY_CONNECTOR(config, m_upd_connector[0], hector_floppies, "525hd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, m_upd_connector[1], hector_floppies, "525hd", floppy_image_device::default_floppy_formats);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(400)); /* 2500 not accurate */
- screen.set_size(512, 230);
- screen.set_visarea(0, 243, 0, 227);
- screen.set_screen_update(FUNC(hec2hrp_state::screen_update_hec2hrp));
- screen.set_palette(m_palette);
-
- PALETTE(config, m_palette).set_entries(16);
+ MCFG_FLOPPY_DRIVE_ADD(m_upd_connector[0], hector_floppies, "525hd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(m_upd_connector[1], hector_floppies, "525hd", floppy_image_device::default_floppy_formats)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(400)) /* 2500 not accurate */
+ MCFG_SCREEN_SIZE(512, 230)
+ MCFG_SCREEN_VISIBLE_AREA(0, 243, 0, 227)
+ MCFG_SCREEN_UPDATE_DRIVER(hec2hrp_state, screen_update_hec2hrp)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_VIDEO_START_OVERRIDE(hec2hrp_state,hec2hrp)
hector_audio(config);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(hector_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(hector_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
- PRINTER(config, m_printer, 0);
-}
-
-void hec2hrp_state::hec2mdhrx(machine_config &config)
-{
- Z80(config, m_maincpu, 5_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &hec2hrp_state::hec2hrx_mem);
- m_maincpu->set_addrmap(AS_IO, &hec2hrp_state::hec2mdhrx_io);
- m_maincpu->set_periodic_int(FUNC(hec2hrp_state::irq0_line_hold), attotime::from_hz(50)); /* put on the Z80 irq in Hz*/
+ MCFG_DEVICE_ADD("printer", PRINTER, 0)
+MACHINE_CONFIG_END
+MACHINE_CONFIG_START(hec2hrp_state::hec2mdhrx)
+ MCFG_DEVICE_ADD("maincpu", Z80, 5_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(hec2hrx_mem)
+ MCFG_DEVICE_IO_MAP(hec2mdhrx_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(hec2hrp_state, irq0_line_hold, 50) // put on the Z80 irq in Hz
MCFG_MACHINE_RESET_OVERRIDE(hec2hrp_state,hec2mdhrx)
MCFG_MACHINE_START_OVERRIDE(hec2hrp_state,hec2mdhrx)
/* 3.5" ("mini") disc */
FD1793(config, m_minidisc_fdc, 1_MHz_XTAL);
- FLOPPY_CONNECTOR(config, "wd179x:0", minidisc_floppies, "dd", hec2hrp_state::minidisc_formats);
+ MCFG_FLOPPY_DRIVE_ADD("wd179x:0", minidisc_floppies, "dd", hec2hrp_state::minidisc_formats)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(400)); /* 2500 not accurate */
- screen.set_size(512, 230);
- screen.set_visarea(0, 243, 0, 227);
- screen.set_screen_update(FUNC(hec2hrp_state::screen_update_hec2hrp));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(400)) /* 2500 not accurate */
+ MCFG_SCREEN_SIZE(512, 230)
+ MCFG_SCREEN_VISIBLE_AREA(0, 243, 0, 227)
+ MCFG_SCREEN_UPDATE_DRIVER(hec2hrp_state, screen_update_hec2hrp)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(16);
+ MCFG_VIDEO_START_OVERRIDE(hec2hrp_state,hec2hrp)
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_VIDEO_START_OVERRIDE(hec2hrp_state,hec2hrp)
hector_audio(config);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(hector_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
-
- PRINTER(config, m_printer, 0);
-}
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(hector_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_DEVICE_ADD("printer", PRINTER, 0)
+MACHINE_CONFIG_END
-void hec2hrp_state::hec2mx80(machine_config &config)
-{
- Z80(config, m_maincpu, 5_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &hec2hrp_state::hec2hrx_mem);
- m_maincpu->set_addrmap(AS_IO, &hec2hrp_state::hec2mx80_io);
- m_maincpu->set_periodic_int(FUNC(hec2hrp_state::irq0_line_hold), attotime::from_hz(50)); /* put on the Z80 irq in Hz*/
+MACHINE_CONFIG_START(hec2hrp_state::hec2mx80)
+ MCFG_DEVICE_ADD("maincpu", Z80, 5_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(hec2hrx_mem)
+ MCFG_DEVICE_IO_MAP(hec2mx80_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(hec2hrp_state, irq0_line_hold, 50) // put on the Z80 irq in Hz
MCFG_MACHINE_RESET_OVERRIDE(hec2hrp_state,hec2hrx)
MCFG_MACHINE_START_OVERRIDE(hec2hrp_state,hec2hrx)
- Z80(config, m_disc2cpu, 4_MHz_XTAL);
- m_disc2cpu->set_addrmap(AS_PROGRAM, &hec2hrp_state::hecdisc2_mem);
- m_disc2cpu->set_addrmap(AS_IO, &hec2hrp_state::hecdisc2_io);
-
+ MCFG_DEVICE_ADD("disc2cpu", Z80, 4_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(hecdisc2_mem)
+ MCFG_DEVICE_IO_MAP(hecdisc2_io)
UPD765A(config, m_upd_fdc, 8'000'000, false, true);
m_upd_fdc->intrq_wr_callback().set(FUNC(hec2hrp_state::disc2_fdc_interrupt));
m_upd_fdc->drq_wr_callback().set(FUNC(hec2hrp_state::disc2_fdc_dma_irq));
-
- FLOPPY_CONNECTOR(config, m_upd_connector[0], hector_floppies, "525hd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, m_upd_connector[1], hector_floppies, "525hd", floppy_image_device::default_floppy_formats);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(400)); /* 2500 not accurate */
- screen.set_size(512, 230);
- screen.set_visarea(0, 243, 0, 227);
- screen.set_screen_update(FUNC(hec2hrp_state::screen_update_hec2hrp));
- screen.set_palette(m_palette);
-
- PALETTE(config, m_palette).set_entries(16);
+ MCFG_FLOPPY_DRIVE_ADD(m_upd_connector[0], hector_floppies, "525hd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(m_upd_connector[1], hector_floppies, "525hd", floppy_image_device::default_floppy_formats)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(400)) /* 2500 not accurate */
+ MCFG_SCREEN_SIZE(512, 230)
+ MCFG_SCREEN_VISIBLE_AREA(0, 243, 0, 227)
+ MCFG_SCREEN_UPDATE_DRIVER(hec2hrp_state, screen_update_hec2hrp)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_VIDEO_START_OVERRIDE(hec2hrp_state,hec2hrp)
hector_audio(config);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(hector_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(hector_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
- PRINTER(config, m_printer, 0);
-}
+ MCFG_DEVICE_ADD("printer", PRINTER, 0)
+MACHINE_CONFIG_END
ROM_START( hec2hr )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
diff --git a/src/mame/drivers/hh_amis2k.cpp b/src/mame/drivers/hh_amis2k.cpp
index 5f97f5eb631..f0d4b354c68 100644
--- a/src/mame/drivers/hh_amis2k.cpp
+++ b/src/mame/drivers/hh_amis2k.cpp
@@ -2,396 +2,352 @@
// copyright-holders:hap
/***************************************************************************
- AMI S2000 series handhelds or other simple devices.
+ Parker Brothers Wildfire, by Bob and Holly Doyle (prototype), and Garry Kitchen
+ * AMI S2150, labeled C10641
+
+ This is an electronic handheld pinball game. It has dozens of small leds
+ to create the illusion of a moving ball, and even the flippers are leds.
+ A drawing of a pinball table is added as overlay.
+
+ NOTE!: MAME external artwork is required
+
TODO:
- - were any other handhelds with this MCU released?
- - wildfire sound can be improved, volume decay should be more steep at the start,
- and the pitch sounds wrong too (latter is an MCU emulation problem)
- - leds are sometimes strobed faster/longer to appear at a different brightness,
- eg. wildfire bumpers
+ - driver needs a cleanup when another AMI S2000 handheld gets dumped/added
+
+ - sound emulation could still be improved
+ - when the game strobes a led faster, it should appear brighter, for example when
+ the ball hits one of the bumpers
+ - 7seg decoder is guessed
+ - MCU clock is unknown
***************************************************************************/
#include "emu.h"
-
#include "cpu/amis2000/amis2000.h"
#include "machine/timer.h"
#include "sound/spkrdev.h"
#include "speaker.h"
-// internal artwork
-#include "wildfire.lh"
+#include "wildfire.lh" // this is a test layout, use external artwork
-//#include "hh_amis2k_test.lh" // common test-layout - use external artwork
+// master clock is a single stage RC oscillator: R=?K, C=?pf,
+// S2000 default frequency is 850kHz
+#define MASTER_CLOCK (850000)
-class hh_amis2k_state : public driver_device
+class wildfire_state : public driver_device
{
public:
- hh_amis2k_state(const machine_config &mconfig, device_type type, const char *tag) :
+ wildfire_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
- m_inp_matrix(*this, "IN.%u", 0),
- m_out_x(*this, "%u.%u", 0U, 0U),
- m_out_a(*this, "%u.a", 0U),
- m_out_digit(*this, "digit%u", 0U),
m_speaker(*this, "speaker"),
- m_display_wait(33),
- m_display_maxy(1),
- m_display_maxx(0)
+ m_a12_decay_timer(*this, "a12_decay"),
+ m_digits(*this, "digit%u", 0U),
+ m_lamps(*this, "lamp%u", 0U)
{ }
- // devices
- required_device<amis2000_base_device> m_maincpu;
- optional_ioport_array<4> m_inp_matrix; // max 4
- output_finder<0x20, 0x20> m_out_x;
- output_finder<0x20> m_out_a;
- output_finder<0x20> m_out_digit;
- optional_device<speaker_sound_device> m_speaker;
-
- // misc common
- u16 m_a; // MCU address bus
- u8 m_d; // MCU data bus
- int m_f; // MCU F_out pin
- u16 m_inp_mux; // multiplexed inputs mask
-
- u8 read_inputs(int columns);
-
- // display common
- int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
- int m_display_maxy; // display matrix number of rows
- int m_display_maxx; // display matrix number of columns (max 31 for now)
-
- u32 m_display_state[0x20]; // display matrix rows data (last bit is used for always-on)
- u16 m_display_segmask[0x20]; // if not 0, display matrix row is a digit, mask indicates connected segments
- u8 m_display_decay[0x20][0x20]; // (internal use)
-
- TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
- void display_update();
- void set_display_size(int maxx, int maxy);
- void set_display_segmask(u32 digits, u32 mask);
- void display_matrix(int maxx, int maxy, u32 setx, u32 sety, bool update = true);
+ void wildfire(machine_config &config);
-protected:
+private:
virtual void machine_start() override;
- virtual void machine_reset() override;
-};
+ DECLARE_WRITE8_MEMBER(write_d);
+ DECLARE_WRITE16_MEMBER(write_a);
+ DECLARE_WRITE_LINE_MEMBER(write_f);
-// machine start/reset
+ TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
-void hh_amis2k_state::machine_start()
-{
- // resolve handlers
- m_out_x.resolve();
- m_out_a.resolve();
- m_out_digit.resolve();
+ bool index_is_7segled(int index);
+ void display_update();
- // zerofill
- memset(m_display_state, 0, sizeof(m_display_state));
- memset(m_display_decay, 0, sizeof(m_display_decay));
- memset(m_display_segmask, 0, sizeof(m_display_segmask));
+ TIMER_DEVICE_CALLBACK_MEMBER(reset_q2);
+ void write_a12(int state);
+ void sound_update();
- m_a = 0;
- m_d = 0;
- m_f = 0;
- m_inp_mux = 0;
+ required_device<amis2152_cpu_device> m_maincpu;
+ required_device<speaker_sound_device> m_speaker;
+ required_device<timer_device> m_a12_decay_timer;
- // register for savestates
- save_item(NAME(m_display_maxy));
- save_item(NAME(m_display_maxx));
- save_item(NAME(m_display_wait));
+ output_finder<3> m_digits;
+ output_finder<16 * 10> m_lamps; // only ones ending in 0-7 are used, 8-9 are unused
- save_item(NAME(m_display_state));
- save_item(NAME(m_display_decay));
- save_item(NAME(m_display_segmask));
-
- save_item(NAME(m_a));
- save_item(NAME(m_d));
- save_item(NAME(m_f));
- save_item(NAME(m_inp_mux));
-}
+ u8 m_d;
+ u16 m_a;
+ u8 m_q2;
+ u8 m_q3;
-void hh_amis2k_state::machine_reset()
-{
-}
+ u16 m_display_state[0x10];
+ u8 m_display_decay[0x100];
+};
/***************************************************************************
- Helper Functions
+ LED Display
***************************************************************************/
-// The device may strobe the outputs very fast, it is unnoticeable to the user.
+// The device strobes the outputs very fast, it is unnoticeable to the user.
// To prevent flickering here, we need to simulate a decay.
-void hh_amis2k_state::display_update()
+// decay time, in steps of 1ms
+#define DISPLAY_DECAY_TIME 40
+
+inline bool wildfire_state::index_is_7segled(int index)
+{
+ // first 3 A are 7segleds
+ return (index < 3);
+}
+
+// lamp translation table: Lzz from patent US4334679 FIG.4 = MAME lampxxy,
+// where xx is led column and y is led row, eg. lamp103 is output A10 D3
+// (note: 2 mistakes in the patent: the L19 between L12 and L14 should be L13, and L84 should of course be L48)
+/*
+ L0 = - L10 = lamp60 L20 = lamp41 L30 = lamp53 L40 = lamp57 L50 = lamp110
+ L1 = lamp107 L11 = lamp50 L21 = lamp42 L31 = lamp43 L41 = lamp66 L51 = lamp111
+ L2 = lamp106 L12 = lamp61 L22 = lamp52 L32 = lamp54 L42 = lamp76 L52 = lamp112
+ L3 = lamp105 L13 = lamp71 L23 = lamp63 L33 = lamp55 L43 = lamp86 L53 = lamp113
+ L4 = lamp104 L14 = lamp81 L24 = lamp73 L34 = lamp117 L44 = lamp96 L60 = lamp30
+ L5 = lamp103 L15 = lamp92 L25 = lamp115 L35 = lamp75 L45 = lamp67 L61 = lamp30(!)
+ L6 = lamp102 L16 = lamp82 L26 = lamp93 L36 = lamp95 L46 = lamp77 L62 = lamp31
+ L7 = lamp101 L17 = lamp72 L27 = lamp94 L37 = lamp56 L47 = lamp87 L63 = lamp31(!)
+ L8 = lamp80 L18 = lamp114 L28 = lamp84 L38 = lamp65 L48 = lamp97 L70 = lamp33
+ L9 = lamp70 L19 = lamp51 L29 = lamp116 L39 = lamp85 L49 = -
+*/
+
+void wildfire_state::display_update()
{
- for (int y = 0; y < m_display_maxy; y++)
+ u16 active_state[0x10];
+
+ for (int i = 0; i < 0x10; i++)
{
- u32 active_state = 0;
+ // update current state
+ m_display_state[i] = (m_a >> i & 1) ? m_d : 0;
+
+ active_state[i] = 0;
- for (int x = 0; x <= m_display_maxx; x++)
+ for (int j = 0; j < 0x10; j++)
{
+ int di = j << 4 | i;
+
// turn on powered segments
- if (m_display_state[y] >> x & 1)
- m_display_decay[y][x] = m_display_wait;
+ if (m_display_state[i] >> j & 1)
+ m_display_decay[di] = DISPLAY_DECAY_TIME;
// determine active state
- u32 ds = (m_display_decay[y][x] != 0) ? 1 : 0;
- active_state |= (ds << x);
-
- // output to y.x, or y.a when always-on
- if (x != m_display_maxx)
- m_out_x[y][x] = ds;
- else
- m_out_a[y] = ds;
+ int ds = (m_display_decay[di] != 0) ? 1 : 0;
+ active_state[i] |= (ds << j);
}
+ }
- // output to digity
- if (m_display_segmask[y] != 0)
- m_out_digit[y] = active_state & m_display_segmask[y];
+ // on difference, send to output
+ for (int i = 0; i < 0x10; i++)
+ {
+ if (index_is_7segled(i))
+ m_digits[i] = bitswap<7>(active_state[i],0,1,2,3,4,5,6);
+
+ for (int j = 0; j < 8; j++)
+ m_lamps[(i * 10) + j] = BIT(active_state[i], j);
}
}
-TIMER_DEVICE_CALLBACK_MEMBER(hh_amis2k_state::display_decay_tick)
+TIMER_DEVICE_CALLBACK_MEMBER(wildfire_state::display_decay_tick)
{
// slowly turn off unpowered segments
- for (int y = 0; y < m_display_maxy; y++)
- for (int x = 0; x <= m_display_maxx; x++)
- if (m_display_decay[y][x] != 0)
- m_display_decay[y][x]--;
+ for (int i = 0; i < 0x100; i++)
+ if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
+ m_display_decay[i]--;
display_update();
}
-void hh_amis2k_state::set_display_size(int maxx, int maxy)
-{
- m_display_maxx = maxx;
- m_display_maxy = maxy;
-}
-void hh_amis2k_state::set_display_segmask(u32 digits, u32 mask)
-{
- // set a segment mask per selected digit, but leave unselected ones alone
- for (int i = 0; i < 0x20; i++)
- {
- if (digits & 1)
- m_display_segmask[i] = mask;
- digits >>= 1;
- }
-}
-void hh_amis2k_state::display_matrix(int maxx, int maxy, u32 setx, u32 sety, bool update)
-{
- set_display_size(maxx, maxy);
+/***************************************************************************
- // update current state
- u32 mask = (1 << maxx) - 1;
- for (int y = 0; y < maxy; y++)
- m_display_state[y] = (sety >> y & 1) ? ((setx & mask) | (1 << maxx)) : 0;
+ Sound
- if (update)
- display_update();
-}
+***************************************************************************/
+// Sound output is via a speaker between transistors Q2(from A12) and Q3(from F_out)
+// A12 to Q2 has a little electronic circuit going, causing a slight delay.
+// (see patent US4334679 FIG.5, the 2 resistors are 10K and the cap is a 4.7uF electrolytic)
-// generic input handlers
+// decay time, in steps of 1ms
+#define A12_DECAY_TIME 5 /* a complete guess */
-u8 hh_amis2k_state::read_inputs(int columns)
+void wildfire_state::sound_update()
{
- u8 ret = 0;
+ m_speaker->level_w(m_q2 & m_q3);
+}
- // read selected input rows
- for (int i = 0; i < columns; i++)
- if (m_inp_mux >> i & 1)
- ret |= m_inp_matrix[i]->read();
+WRITE_LINE_MEMBER(wildfire_state::write_f)
+{
+ // F_out pin: speaker out
+ m_q3 = (state) ? 1 : 0;
+ sound_update();
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(wildfire_state::reset_q2)
+{
+ m_q2 = 0;
+ sound_update();
+}
- return ret;
+void wildfire_state::write_a12(int state)
+{
+ if (state)
+ {
+ m_a12_decay_timer->adjust(attotime::never);
+ m_q2 = state;
+ sound_update();
+ }
+ else if (m_a >> 12 & 1)
+ {
+ // falling edge
+ m_a12_decay_timer->adjust(attotime::from_msec(A12_DECAY_TIME));
+ }
}
/***************************************************************************
- Minidrivers (subclass, I/O, Inputs, Machine Config, ROM Defs)
+ I/O
***************************************************************************/
-namespace {
-
-/***************************************************************************
-
- Parker Brothers Wildfire, by Bob and Holly Doyle (prototype), and Garry Kitchen
- * AMI S2150, labeled C10641
- * RC circuit for speaker volume decay (see patent US4334679 FIG.5,
- the 2 resistors at A12 are 10K and the cap is 4.7uF)
+WRITE8_MEMBER(wildfire_state::write_d)
+{
+ // D0-D7: leds out
+ m_d = data;
+ display_update();
+}
- This is an electronic handheld pinball game. It has dozens of small leds
- to create the illusion of a moving ball, and even the flippers are leds.
- A drawing of a pinball table is added as overlay.
+WRITE16_MEMBER(wildfire_state::write_a)
+{
+ data ^= 0x1fff; // active-low
- led translation table: led Lzz from patent US4334679 FIG.4* = MAME y.x:
- *note: 2 mistakes in it: L19 between L12 and L14 should be L13, and L84 should of course be L48
+ // A12: enable speaker
+ write_a12(data >> 12 & 1);
- 0 = - 10 = 6.6 20 = 4.5 30 = 5.3 40 = 5.7 50 = 11.6
- 1 = 10.7 11 = 5.6 21 = 4.4 31 = 4.3 41 = 6.0 51 = 11.5
- 2 = 10.0 12 = 6.5 22 = 5.4 32 = 5.2 42 = 7.0 52 = 11.4
- 3 = 10.1 13 = 7.5 23 = 6.3 33 = 5.1 43 = 8.0 53 = 11.3
- 4 = 10.2 14 = 8.5 24 = 7.3 34 = 11.7 44 = 9.0 60 = 3.6
- 5 = 10.3 15 = 9.4 25 = 11.1 35 = 7.1 45 = 6.7 61 = 3.6(!)
- 6 = 10.4 16 = 8.4 26 = 9.3 36 = 9.1 46 = 7.7 62 = 3.5
- 7 = 10.5 17 = 7.4 27 = 9.2 37 = 5.0 47 = 8.7 63 = 3.5(!)
- 8 = 8.6 18 = 11.2 28 = 8.2 38 = 6.1 48 = 9.7 70 = 3.3
- 9 = 7.6 19 = 5.5 29 = 11.0 39 = 8.1 49 = -
+ // A0-A2: select 7segleds
+ // A3-A11: select other leds
+ m_a = data;
+ display_update();
+}
- NOTE!: MAME external artwork is required
-***************************************************************************/
-class wildfire_state : public hh_amis2k_state
-{
-public:
- wildfire_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_amis2k_state(mconfig, type, tag)
- { }
+/***************************************************************************
- void prepare_display();
- DECLARE_WRITE8_MEMBER(write_d);
- DECLARE_WRITE16_MEMBER(write_a);
- DECLARE_WRITE_LINE_MEMBER(write_f);
+ Inputs
- void speaker_update();
- TIMER_DEVICE_CALLBACK_MEMBER(speaker_decay_sim);
- double m_speaker_volume;
- void wildfire(machine_config &config);
+***************************************************************************/
-protected:
- virtual void machine_start() override;
-};
+static INPUT_PORTS_START( wildfire )
+ PORT_START("IN1") // I
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Shooter Button")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Left Flipper")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Right Flipper")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+INPUT_PORTS_END
-void wildfire_state::machine_start()
-{
- hh_amis2k_state::machine_start();
- // zerofill/init
- m_speaker_volume = 0;
- save_item(NAME(m_speaker_volume));
-}
-// handlers
+/***************************************************************************
-void wildfire_state::speaker_update()
-{
- if (~m_a & 0x1000)
- m_speaker_volume = 1.0;
+ Machine Config
- m_speaker->level_w(m_f * 0x7fff * m_speaker_volume);
-}
+***************************************************************************/
-TIMER_DEVICE_CALLBACK_MEMBER(wildfire_state::speaker_decay_sim)
+void wildfire_state::machine_start()
{
- // volume decays when speaker is off (divisor and timer period determine duration)
- speaker_update();
- m_speaker_volume /= 1.0025;
-}
+ m_digits.resolve();
+ m_lamps.resolve();
-void wildfire_state::prepare_display()
-{
- // A0-A2 are 7segs
- set_display_segmask(7, 0x7f);
- display_matrix(8, 12, m_d, ~m_a);
-}
+ // zerofill
+ memset(m_display_state, 0, sizeof(m_display_state));
+ memset(m_display_decay, 0, sizeof(m_display_decay));
-WRITE8_MEMBER(wildfire_state::write_d)
-{
- // D0-D7: led/7seg data
- m_d = bitswap<8>(data,7,0,1,2,3,4,5,6);
- prepare_display();
-}
+ m_d = 0;
+ m_a = 0;
+ m_q2 = 0;
+ m_q3 = 0;
-WRITE16_MEMBER(wildfire_state::write_a)
-{
- // A0-A11: digit/led select
- m_a = data;
- prepare_display();
+ // register for savestates
+ save_item(NAME(m_display_state));
+ save_item(NAME(m_display_decay));
- // A12: speaker on
- speaker_update();
+ save_item(NAME(m_d));
+ save_item(NAME(m_a));
+ save_item(NAME(m_q2));
+ save_item(NAME(m_q3));
}
-WRITE_LINE_MEMBER(wildfire_state::write_f)
+// LED segments A-G
+enum
{
- // F: speaker out
- m_f = state;
- speaker_update();
-}
-
-// config
-
-static INPUT_PORTS_START( wildfire )
- PORT_START("IN.0") // I
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Shooter Button")
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Left Flipper")
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Right Flipper")
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
-INPUT_PORTS_END
+ lA = 0x40,
+ lB = 0x20,
+ lC = 0x10,
+ lD = 0x08,
+ lE = 0x04,
+ lF = 0x02,
+ lG = 0x01
+};
-// 7seg decoder table differs from default, this one is made by hand
static const u8 wildfire_7seg_table[0x10] =
{
- 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, // 0, 1, 2, 3, 4, 5, 6, 7
- 0x7f, 0x6f, 0x77, 0x73, 0x39, 0x38, 0x79, 0x40 // 8, 9, ?, P, ?, L, ?, -
+ 0x7e, 0x30, 0x6d, 0x79, 0x33, 0x5b, 0x5f, 0x70, 0x7f, 0x7b, // 0-9 unaltered
+ 0x77, // A -> unused?
+ lA+lB+lE+lF+lG, // b -> P
+ 0x4e, // C -> unused?
+ lD+lE+lF, // d -> L
+ 0x4f, // E -> unused?
+ lG // F -> -
};
-static s16 wildfire_speaker_levels[0x8000];
void wildfire_state::wildfire(machine_config &config)
{
/* basic machine hardware */
- AMI_S2152(config, m_maincpu, 850000); // approximation - RC osc. R=?, C=?
+ AMI_S2152(config, m_maincpu, MASTER_CLOCK);
m_maincpu->set_7seg_table(wildfire_7seg_table);
- m_maincpu->read_i().set_ioport("IN.0");
+ m_maincpu->read_i().set_ioport("IN1");
m_maincpu->write_d().set(FUNC(wildfire_state::write_d));
m_maincpu->write_a().set(FUNC(wildfire_state::write_a));
m_maincpu->write_f().set(FUNC(wildfire_state::write_f));
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_amis2k_state::display_decay_tick), attotime::from_msec(1));
+ TIMER(config, "display_decay").configure_periodic(FUNC(wildfire_state::display_decay_tick), attotime::from_msec(1));
+ TIMER(config, "a12_decay").configure_generic(FUNC(wildfire_state::reset_q2));
+
config.set_default_layout(layout_wildfire);
+ /* no video! */
+
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-
- TIMER(config, "speaker_decay").configure_periodic(FUNC(wildfire_state::speaker_decay_sim), attotime::from_usec(100));
-
- // set volume levels (set_output_gain is too slow for sub-frame intervals)
- for (int i = 0; i < 0x8000; i++)
- wildfire_speaker_levels[i] = i;
- m_speaker->set_levels(0x8000, wildfire_speaker_levels);
}
-// roms
-
-ROM_START( wildfire )
- ROM_REGION( 0x0800, "maincpu", ROMREGION_ERASE00 )
- // Typed in from patent US4334679, data should be correct(it included checksums). 1st half was also dumped/verfied with release version.
- ROM_LOAD( "us4341385", 0x0000, 0x0400, CRC(84ac0f1f) SHA1(1e00ddd402acfc2cc267c34eed4b89d863e2144f) )
- ROM_CONTINUE( 0x0600, 0x0200 )
-ROM_END
-
-} // anonymous namespace
-
/***************************************************************************
Game driver(s)
***************************************************************************/
+ROM_START( wildfire )
+ ROM_REGION( 0x0800, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "us4341385", 0x0000, 0x0400, CRC(84ac0f1f) SHA1(1e00ddd402acfc2cc267c34eed4b89d863e2144f) ) // from patent US4334679, data should be correct (it included checksums). 1st half was dumped/verfied too.
+ ROM_CONTINUE( 0x0600, 0x0200 )
+ROM_END
+
+
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
CONS( 1979, wildfire, 0, 0, wildfire, wildfire, wildfire_state, empty_init, "Parker Brothers", "Wildfire (patent)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) // note: pretty sure that it matches the commercial release
diff --git a/src/mame/drivers/hh_cop400.cpp b/src/mame/drivers/hh_cop400.cpp
index 66f827f7fbd..ac2871d1a2d 100644
--- a/src/mame/drivers/hh_cop400.cpp
+++ b/src/mame/drivers/hh_cop400.cpp
@@ -11,7 +11,7 @@
- vidchal: Add screen and gun cursor with brightness detection callback,
and softwarelist for the video tapes. We'd also need a VHS player device.
The emulated lightgun itself appears to be working fine(eg. add a 30hz
- timer to IN.3 to score +100)
+ timer to IN3 to score +100)
***************************************************************************/
@@ -22,6 +22,7 @@
#include "sound/spkrdev.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
+//#include "rendlay.h"
#include "screen.h"
#include "speaker.h"
@@ -47,8 +48,8 @@
class hh_cop400_state : public driver_device
{
public:
- hh_cop400_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
+ hh_cop400_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_inp_matrix(*this, "IN.%u", 0),
m_out_x(*this, "%u.%u", 0U, 0U),
@@ -77,7 +78,6 @@ public:
u16 m_inp_mux; // multiplexed inputs mask
u16 read_inputs(int columns, u16 colmask = ~0);
- virtual DECLARE_INPUT_CHANGED_MEMBER(reset_button);
// display common
int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
@@ -239,22 +239,14 @@ u16 hh_cop400_state::read_inputs(int columns, u16 colmask)
return ret;
}
-INPUT_CHANGED_MEMBER(hh_cop400_state::reset_button)
-{
- // when an input is directly wired to MCU reset pin
- m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
-}
-
/***************************************************************************
- Minidrivers (subclass, I/O, Inputs, Machine Config, ROM Defs)
+ Minidrivers (subclass, I/O, Inputs, Machine Config)
***************************************************************************/
-namespace {
-
/***************************************************************************
Castle Toy Einstein
@@ -269,8 +261,8 @@ namespace {
class ctstein_state : public hh_cop400_state
{
public:
- ctstein_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_cop400_state(mconfig, type, tag)
+ ctstein_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_cop400_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(write_g);
@@ -339,13 +331,6 @@ void ctstein_state::ctstein(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ctstein )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "cop421-nez_n", 0x0000, 0x0400, CRC(16148e03) SHA1(b2b74891d36813d9a1eefd56a925054997c4b7f7) ) // 2nd half empty
-ROM_END
-
@@ -363,15 +348,14 @@ ROM_END
An earlier revision of this runs on TMS1000, see hh_tms1k.cpp driver. Model
numbers are the same. From the outside, an easy way to spot the difference is
the Start/Display button: TMS1000 version button label is D, COP420 one is a *.
- The COP420 version also plays much slower.
***************************************************************************/
class h2hbaskbc_state : public hh_cop400_state
{
public:
- h2hbaskbc_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_cop400_state(mconfig, type, tag)
+ h2hbaskbc_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_cop400_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(write_d);
@@ -473,8 +457,8 @@ INPUT_PORTS_END
void h2hbaskbc_state::h2hbaskbc(machine_config &config)
{
/* basic machine hardware */
- COP420(config, m_maincpu, 1000000); // approximation - RC osc. R=43K, C=101pF
- m_maincpu->set_config(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, false); // guessed
+ COP420(config, m_maincpu, 850000); // approximation - RC osc. R=43K, C=101pF
+ m_maincpu->set_config(COP400_CKI_DIVISOR_8, COP400_CKO_OSCILLATOR_OUTPUT, false); // guessed
m_maincpu->write_d().set(FUNC(h2hbaskbc_state::write_d));
m_maincpu->write_g().set(FUNC(h2hbaskbc_state::write_g));
m_maincpu->write_l().set(FUNC(h2hbaskbc_state::write_l));
@@ -501,16 +485,6 @@ void h2hbaskbc_state::h2hsoccerc(machine_config &config)
config.set_default_layout(layout_h2hsoccerc);
}
-// roms
-
-ROM_START( h2hbaskbc )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "cop420l-nmy", 0x0000, 0x0400, CRC(87152509) SHA1(acdb869b65d49b3b9855a557ed671cbbb0f61e2c) )
-ROM_END
-
-#define rom_h2hhockeyc rom_h2hbaskbc // dumped from Basketball
-#define rom_h2hsoccerc rom_h2hbaskbc // "
-
@@ -529,8 +503,8 @@ ROM_END
class einvaderc_state : public hh_cop400_state
{
public:
- einvaderc_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_cop400_state(mconfig, type, tag)
+ einvaderc_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_cop400_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -620,7 +594,7 @@ void einvaderc_state::einvaderc(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(913, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 913-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_cop400_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_einvaderc);
@@ -630,16 +604,6 @@ void einvaderc_state::einvaderc(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( einvaderc )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "copl444-hrz_n_inv_ii", 0x0000, 0x0800, CRC(76400f38) SHA1(0e92ab0517f7b7687293b189d30d57110df20fe0) )
-
- ROM_REGION( 80636, "svg", 0)
- ROM_LOAD( "einvaderc.svg", 0, 80636, CRC(a52d0166) SHA1(f69397ebcc518701f30a47b4d62e5a700825375a) )
-ROM_END
-
@@ -661,8 +625,8 @@ ROM_END
class unkeinv_state : public hh_cop400_state
{
public:
- unkeinv_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_cop400_state(mconfig, type, tag)
+ unkeinv_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_cop400_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -671,7 +635,7 @@ public:
DECLARE_WRITE8_MEMBER(write_l);
DECLARE_READ8_MEMBER(read_l);
- DECLARE_INPUT_CHANGED_MEMBER(position_changed) { prepare_display(); }
+ DECLARE_INPUT_CHANGED_MEMBER(position_changed);
void unkeinv(machine_config &config);
};
@@ -730,6 +694,11 @@ READ8_MEMBER(unkeinv_state::read_l)
// config
+INPUT_CHANGED_MEMBER(unkeinv_state::position_changed)
+{
+ prepare_display();
+}
+
static INPUT_PORTS_START( unkeinv )
PORT_START("IN.0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
@@ -758,13 +727,6 @@ void unkeinv_state::unkeinv(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( unkeinv )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "cop421_us4345764", 0x0000, 0x0400, CRC(0068c3a3) SHA1(4e5fd566a5a26c066cc14623a9bd01e109ebf797) ) // typed in from patent US4345764, good print quality
-ROM_END
-
@@ -787,8 +749,8 @@ ROM_END
class lchicken_state : public hh_cop400_state
{
public:
- lchicken_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_cop400_state(mconfig, type, tag)
+ lchicken_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_cop400_state(mconfig, type, tag)
{ }
u8 m_motor_pos;
@@ -807,22 +769,8 @@ protected:
virtual void machine_start() override;
};
-void lchicken_state::machine_start()
-{
- hh_cop400_state::machine_start();
-
- // zerofill, register for savestates
- m_motor_pos = 0;
- save_item(NAME(m_motor_pos));
-}
-
// handlers
-CUSTOM_INPUT_MEMBER(lchicken_state::motor_switch)
-{
- return m_motor_pos > 0xe8; // approximation
-}
-
TIMER_DEVICE_CALLBACK_MEMBER(lchicken_state::motor_sim_tick)
{
if (~m_inp_mux & 8)
@@ -900,6 +848,20 @@ static INPUT_PORTS_START( lchicken )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, lchicken_state, motor_switch, nullptr)
INPUT_PORTS_END
+CUSTOM_INPUT_MEMBER(lchicken_state::motor_switch)
+{
+ return m_motor_pos > 0xe8; // approximation
+}
+
+void lchicken_state::machine_start()
+{
+ hh_cop400_state::machine_start();
+
+ // zerofill, register for savestates
+ m_motor_pos = 0;
+ save_item(NAME(m_motor_pos));
+}
+
void lchicken_state::lchicken(machine_config &config)
{
/* basic machine hardware */
@@ -921,13 +883,6 @@ void lchicken_state::lchicken(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( lchicken )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "cop421-njc_n", 0x0000, 0x0400, CRC(319e7985) SHA1(9714327518f65ebefe38ac7911bed2b9b9c77307) )
-ROM_END
-
@@ -943,8 +898,8 @@ ROM_END
class funjacks_state : public hh_cop400_state
{
public:
- funjacks_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_cop400_state(mconfig, type, tag)
+ funjacks_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_cop400_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(write_d);
@@ -1035,13 +990,6 @@ void funjacks_state::funjacks(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( funjacks )
- ROM_REGION( 0x0200, "maincpu", 0 )
- ROM_LOAD( "cop410l_b_ngs", 0x0000, 0x0200, CRC(863368ea) SHA1(f116cc27ae721b3a3e178fa13765808bdc275663) )
-ROM_END
-
@@ -1061,13 +1009,15 @@ ROM_END
class funrlgl_state : public hh_cop400_state
{
public:
- funrlgl_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_cop400_state(mconfig, type, tag)
+ funrlgl_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_cop400_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(write_d);
DECLARE_WRITE8_MEMBER(write_l);
DECLARE_WRITE8_MEMBER(write_g);
+
+ DECLARE_INPUT_CHANGED_MEMBER(reset_button);
void funrlgl(machine_config &config);
};
@@ -1106,9 +1056,15 @@ static INPUT_PORTS_START( funrlgl )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("RESET")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_cop400_state, reset_button, nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, funrlgl_state, reset_button, nullptr)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(funrlgl_state::reset_button)
+{
+ // middle button is directly tied to MCU reset pin
+ m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
+}
+
void funrlgl_state::funrlgl(machine_config &config)
{
/* basic machine hardware */
@@ -1128,13 +1084,6 @@ void funrlgl_state::funrlgl(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( funrlgl )
- ROM_REGION( 0x0200, "maincpu", 0 )
- ROM_LOAD( "cop410l_b_nhz", 0x0000, 0x0200, CRC(4065c3ce) SHA1(f0bc8125d922949e0d7ab1ba89c805a836d20e09) )
-ROM_END
-
@@ -1152,8 +1101,8 @@ ROM_END
class mdallas_state : public hh_cop400_state
{
public:
- mdallas_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_cop400_state(mconfig, type, tag)
+ mdallas_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_cop400_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1270,13 +1219,6 @@ void mdallas_state::mdallas(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( mdallas )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "copl444l-hyn_n", 0x0000, 0x0800, CRC(7848b78c) SHA1(778d24512180892f58c49df3c72ca77b2618d63b) )
-ROM_END
-
@@ -1295,8 +1237,8 @@ ROM_END
class plus1_state : public hh_cop400_state
{
public:
- plus1_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_cop400_state(mconfig, type, tag)
+ plus1_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_cop400_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(write_d);
@@ -1358,13 +1300,6 @@ void plus1_state::plus1(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( plus1 )
- ROM_REGION( 0x0200, "maincpu", 0 )
- ROM_LOAD( "cop410l_b_nne", 0x0000, 0x0200, CRC(d861b80c) SHA1(4652f8ee0dd4c3c48b625285bb4f094d96434071) )
-ROM_END
-
@@ -1392,8 +1327,8 @@ ROM_END
class lightfgt_state : public hh_cop400_state
{
public:
- lightfgt_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_cop400_state(mconfig, type, tag)
+ lightfgt_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_cop400_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1494,13 +1429,6 @@ void lightfgt_state::lightfgt(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( lightfgt )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "cop421l-hla_n", 0x0000, 0x0400, CRC(aceb2d65) SHA1(2328cbb195faf93c575f3afa3a1fe0079180edd7) )
-ROM_END
-
@@ -1517,8 +1445,8 @@ ROM_END
class bship82_state : public hh_cop400_state
{
public:
- bship82_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_cop400_state(mconfig, type, tag)
+ bship82_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_cop400_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(write_d);
@@ -1652,19 +1580,13 @@ void bship82_state::bship82(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- DAC_4BIT_BINARY_WEIGHTED_SIGN_MAGNITUDE(config, "dac").add_route(ALL_OUTPUTS, "mono", 0.125); // see above
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
+ DAC_4BIT_BINARY_WEIGHTED_SIGN_MAGNITUDE(config, "dac", 0).add_route(ALL_OUTPUTS, "mono", 0.125); // see above
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
-// roms
-
-ROM_START( bship82 )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "cop420-jwe_n", 0x0000, 0x0400, CRC(5ea8111a) SHA1(34931463b806b48dce4f8ae2361512510bae0ebf) )
-ROM_END
-
@@ -1682,8 +1604,8 @@ ROM_END
class qkracer_state : public hh_cop400_state
{
public:
- qkracer_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_cop400_state(mconfig, type, tag)
+ qkracer_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_cop400_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1792,13 +1714,6 @@ void qkracer_state::qkracer(machine_config &config)
/* no sound! */
}
-// roms
-
-ROM_START( qkracer )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "cop420-npg_n", 0x0000, 0x0400, CRC(17f8e538) SHA1(23d1a1819e6ba552d8da83da2948af1cf5b13d5b) )
-ROM_END
-
@@ -1823,8 +1738,8 @@ ROM_END
class vidchal_state : public hh_cop400_state
{
public:
- vidchal_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_cop400_state(mconfig, type, tag)
+ vidchal_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_cop400_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1870,7 +1785,7 @@ static INPUT_PORTS_START( vidchal )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_F1) PORT_NAME("Light Sensor")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) // TODO: light sensor
INPUT_PORTS_END
void vidchal_state::vidchal(machine_config &config)
@@ -1889,33 +1804,119 @@ void vidchal_state::vidchal(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- DAC_4BIT_BINARY_WEIGHTED_SIGN_MAGNITUDE(config, "dac").add_route(ALL_OUTPUTS, "mono", 0.125); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
+ DAC_4BIT_BINARY_WEIGHTED_SIGN_MAGNITUDE(config, "dac", 0).add_route(ALL_OUTPUTS, "mono", 0.125); // unknown DAC
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
-// roms
-ROM_START( vidchal )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "cop420-tdx_n", 0x0000, 0x0400, CRC(c9bd041c) SHA1(ab0dcaf4741620fa4c28ab75337a23d646af7626) )
-ROM_END
-} // anonymous namespace
-
/***************************************************************************
Game driver(s)
***************************************************************************/
+ROM_START( ctstein )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "cop421-nez_n", 0x0000, 0x0400, CRC(16148e03) SHA1(b2b74891d36813d9a1eefd56a925054997c4b7f7) ) // 2nd half empty
+ROM_END
+
+
+ROM_START( h2hbaskbc )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "cop420l-nmy", 0x0000, 0x0400, CRC(87152509) SHA1(acdb869b65d49b3b9855a557ed671cbbb0f61e2c) )
+ROM_END
+
+ROM_START( h2hhockeyc ) // dumped from Basketball
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "cop420l-nmy", 0x0000, 0x0400, CRC(87152509) SHA1(acdb869b65d49b3b9855a557ed671cbbb0f61e2c) )
+ROM_END
+
+ROM_START( h2hsoccerc ) // dumped from Basketball
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "cop420l-nmy", 0x0000, 0x0400, CRC(87152509) SHA1(acdb869b65d49b3b9855a557ed671cbbb0f61e2c) )
+ROM_END
+
+
+ROM_START( einvaderc )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "copl444-hrz_n_inv_ii", 0x0000, 0x0800, CRC(76400f38) SHA1(0e92ab0517f7b7687293b189d30d57110df20fe0) )
+
+ ROM_REGION( 80636, "svg", 0)
+ ROM_LOAD( "einvaderc.svg", 0, 80636, CRC(a52d0166) SHA1(f69397ebcc518701f30a47b4d62e5a700825375a) )
+ROM_END
+
+
+ROM_START( unkeinv )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "cop421_us4345764", 0x0000, 0x0400, CRC(0068c3a3) SHA1(4e5fd566a5a26c066cc14623a9bd01e109ebf797) ) // typed in from patent US4345764, good print quality
+ROM_END
+
+
+ROM_START( lchicken )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "cop421-njc_n", 0x0000, 0x0400, CRC(319e7985) SHA1(9714327518f65ebefe38ac7911bed2b9b9c77307) )
+ROM_END
+
+
+ROM_START( funjacks )
+ ROM_REGION( 0x0200, "maincpu", 0 )
+ ROM_LOAD( "cop410l_b_ngs", 0x0000, 0x0200, CRC(863368ea) SHA1(f116cc27ae721b3a3e178fa13765808bdc275663) )
+ROM_END
+
+
+ROM_START( funrlgl )
+ ROM_REGION( 0x0200, "maincpu", 0 )
+ ROM_LOAD( "cop410l_b_nhz", 0x0000, 0x0200, CRC(4065c3ce) SHA1(f0bc8125d922949e0d7ab1ba89c805a836d20e09) )
+ROM_END
+
+
+ROM_START( mdallas )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "copl444l-hyn_n", 0x0000, 0x0800, CRC(7848b78c) SHA1(778d24512180892f58c49df3c72ca77b2618d63b) )
+ROM_END
+
+
+ROM_START( plus1 )
+ ROM_REGION( 0x0200, "maincpu", 0 )
+ ROM_LOAD( "cop410l_b_nne", 0x0000, 0x0200, CRC(d861b80c) SHA1(4652f8ee0dd4c3c48b625285bb4f094d96434071) )
+ROM_END
+
+
+ROM_START( lightfgt )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "cop421l-hla_n", 0x0000, 0x0400, CRC(aceb2d65) SHA1(2328cbb195faf93c575f3afa3a1fe0079180edd7) )
+ROM_END
+
+
+ROM_START( bship82 )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "cop420-jwe_n", 0x0000, 0x0400, CRC(5ea8111a) SHA1(34931463b806b48dce4f8ae2361512510bae0ebf) )
+ROM_END
+
+
+ROM_START( qkracer )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "cop420-npg_n", 0x0000, 0x0400, CRC(17f8e538) SHA1(23d1a1819e6ba552d8da83da2948af1cf5b13d5b) )
+ROM_END
+
+
+ROM_START( vidchal )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "cop420-tdx_n", 0x0000, 0x0400, CRC(c9bd041c) SHA1(ab0dcaf4741620fa4c28ab75337a23d646af7626) )
+ROM_END
+
+
+
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
CONS( 1979, ctstein, 0, 0, ctstein, ctstein, ctstein_state, empty_init, "Castle Toy", "Einstein (Castle Toy)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1980, h2hbaskbc, h2hbaskb, 0, h2hbaskbc, h2hbaskbc, h2hbaskbc_state, empty_init, "Coleco", "Head to Head: Electronic Basketball (COP420L version)", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, h2hbaskbc, 0, 0, h2hbaskbc, h2hbaskbc, h2hbaskbc_state, empty_init, "Coleco", "Head to Head: Electronic Basketball (COP420L version)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, h2hhockeyc, h2hhockey, 0, h2hhockeyc, h2hhockeyc, h2hbaskbc_state, empty_init, "Coleco", "Head to Head: Electronic Hockey (COP420L version)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, h2hsoccerc, 0, 0, h2hsoccerc, h2hsoccerc, h2hbaskbc_state, empty_init, "Coleco", "Head to Head: Electronic Soccer (COP420L version)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/hh_hmcs40.cpp b/src/mame/drivers/hh_hmcs40.cpp
index b1a48703efa..e473e124db4 100644
--- a/src/mame/drivers/hh_hmcs40.cpp
+++ b/src/mame/drivers/hh_hmcs40.cpp
@@ -25,7 +25,7 @@
*41 HD38800A 1982, Gakken Puck Monster
*51 HD38800A 1981, Actronics(Hanzawa) Twinvader (larger white version)
@70 HD38800A 1982, Coleco Galaxian
- @73 HD38800A 1982, Mattel Star Hawk (PT-317B)
+ @73 HD38800A 1982, Bandai(Mattel) Star Hawk (PT-317B)
@77 HD38800A 1982, Bandai Frisky Tom (PT-327A)
@88 HD38800A 1984, Tomy Tron (THN-02)
@@ -70,6 +70,7 @@
TODO:
+ - cdkong discrete sound (simple volume decay, simulated for now)
- cgalaxn discrete sound (alien attacking sound effect)
- gckong random lockups (tap the jump button repeatedly): mcu stack overflow,
works ok if stack levels is increased, 38800 B rev. has more stack levels?
@@ -97,17 +98,10 @@
#include "screen.h"
#include "speaker.h"
-// internal artwork (complete)
+// internal artwork
#include "pairmtch.lh"
#include "sag.lh"
-// internal artwork (bezel overlay)
-#include "bambball.lh"
-#include "gckong.lh"
-#include "mwcbaseb.lh"
-#include "msthawk.lh"
-#include "packmon.lh"
-
//#include "hh_hmcs40_test.lh" // common test-layout - no svg artwork(yet), use external artwork
@@ -340,12 +334,10 @@ INPUT_CHANGED_MEMBER(hh_hmcs40_state::single_interrupt_line)
/***************************************************************************
- Minidrivers (subclass, I/O, Inputs, Machine Config, ROM Defs)
+ Minidrivers (subclass, I/O, Inputs, Machine Config)
***************************************************************************/
-namespace {
-
/***************************************************************************
Bambino Dribble Away Basketball (manufactured in Japan)
@@ -358,8 +350,8 @@ namespace {
class bambball_state : public hh_hmcs40_state
{
public:
- bambball_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ bambball_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -446,27 +438,15 @@ void bambball_state::bambball(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 478);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1920-1, 0, 478-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_bambball);
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bambball )
- ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38750a08", 0x0000, 0x0800, CRC(907fef18) SHA1(73fe7ca7c6332268a3a9abc5ac88ada2991012fb) )
- ROM_CONTINUE( 0x0f00, 0x0080 )
-
- ROM_REGION( 281988, "svg", 0)
- ROM_LOAD( "bambball.svg", 0, 281988, CRC(63019194) SHA1(cbfb5b051d8f57f6b4d698796030850b3631ed56) )
-ROM_END
-
@@ -483,8 +463,8 @@ ROM_END
class bmboxing_state : public hh_hmcs40_state
{
public:
- bmboxing_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ bmboxing_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -595,8 +575,7 @@ void bmboxing_state::bmboxing(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 529);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 529-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -604,17 +583,6 @@ void bmboxing_state::bmboxing(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bmboxing )
- ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38750a07", 0x0000, 0x0800, CRC(7f33e259) SHA1(c5fcdd6bf060c96666354f09f0570c754f6ed4e0) )
- ROM_CONTINUE( 0x0f00, 0x0080 )
-
- ROM_REGION( 257144, "svg", 0)
- ROM_LOAD( "bmboxing.svg", 0, 257144, CRC(dab81477) SHA1(28b0c844a311e2023ffa71d754e799059b7d050f) )
-ROM_END
-
@@ -631,8 +599,8 @@ ROM_END
class bfriskyt_state : public hh_hmcs40_state
{
public:
- bfriskyt_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ bfriskyt_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -640,7 +608,7 @@ public:
DECLARE_WRITE16_MEMBER(grid_w);
void update_int1();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int1(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void bfriskyt(machine_config &config);
};
@@ -707,9 +675,14 @@ static INPUT_PORTS_START( bfriskyt )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bfriskyt_state, input_changed, nullptr)
PORT_START("IN.5") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(bfriskyt_state::input_changed)
+{
+ update_int1();
+}
+
void bfriskyt_state::bfriskyt(machine_config &config)
{
/* basic machine hardware */
@@ -725,8 +698,7 @@ void bfriskyt_state::bfriskyt(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 675);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 675-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -734,17 +706,6 @@ void bfriskyt_state::bfriskyt(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bfriskyt )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800a77", 0x0000, 0x1000, CRC(a2445c4f) SHA1(0aaccfec90b66d27dae194d4462d88e654c41578) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 413577, "svg", 0)
- ROM_LOAD( "bfriskyt.svg", 0, 413577, CRC(17090264) SHA1(4512a8a91a459f2ddc258641c6d38c2f48f4160f) )
-ROM_END
-
@@ -767,8 +728,8 @@ ROM_END
class packmon_state : public hh_hmcs40_state
{
public:
- packmon_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ packmon_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -846,27 +807,147 @@ void packmon_state::packmon(machine_config &config)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
- screen.set_size(1920, 680);
- screen.set_visarea_full();
-
+ screen.set_size(1920, 766);
+ screen.set_visarea(0, 1920-1, 0, 766-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_packmon);
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-ROM_START( packmon )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800a27", 0x0000, 0x1000, CRC(86e09e84) SHA1(ac7d3c43667d5720ca513f8ff51d146d9f2af124) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
- ROM_REGION( 224386, "svg", 0)
- ROM_LOAD( "packmon.svg", 0, 224386, CRC(b2ee5b6b) SHA1(e53b4d5a4118cc5fbec4656580c2aab76af8f8d7) )
-ROM_END
+
+
+/***************************************************************************
+
+ Bandai/Mattel Star Hawk (manufactured in Japan)
+ * PCB label Kaken, PT-317B
+ * Hitachi HD38800A73 MCU
+ * cyan/red VFD display Futaba DM-41ZK, with partial color overlay + bezel
+
+ Kaken was a subsidiary of Bandai. The original Japanese release is unknown,
+ was it canceled and only released in the USA?
+
+ known releases:
+ - Japan: ?
+ - USA: Star Hawk, published by Mattel
+
+***************************************************************************/
+
+class msthawk_state : public hh_hmcs40_state
+{
+public:
+ msthawk_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
+ { }
+
+ void prepare_display();
+ DECLARE_WRITE8_MEMBER(plate_w);
+ DECLARE_WRITE16_MEMBER(grid_w);
+
+ void update_int0();
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
+ void msthawk(machine_config &config);
+};
+
+// handlers
+
+void msthawk_state::prepare_display()
+{
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
+ u32 plate = bitswap<24>(m_plate,23,22,21,19,20,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0);
+ display_matrix(21, 10, plate, grid);
+}
+
+WRITE8_MEMBER(msthawk_state::plate_w)
+{
+ // R0x-R3x: vfd plate
+ int shift = offset * 4;
+ m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
+ prepare_display();
+}
+
+WRITE16_MEMBER(msthawk_state::grid_w)
+{
+ // D5: speaker out
+ m_speaker->level_w(data >> 5 & 1);
+
+ // D10-D15: input mux
+ u8 inp_mux = data >> 10 & 0x3f;
+ if (inp_mux != m_inp_mux)
+ {
+ m_inp_mux = inp_mux;
+ update_int0();
+ }
+
+ // D6-D15: vfd grid
+ m_grid = data >> 6 & 0x3ff;
+
+ // D0-D4: more plates
+ m_plate = (m_plate & 0x00ffff) | (data << 16 & 0x1f0000);
+ prepare_display();
+}
+
+void msthawk_state::update_int0()
+{
+ // INT0 on multiplexed inputs
+ set_interrupt(0, read_inputs(6));
+}
+
+// config
+
+static INPUT_PORTS_START( msthawk )
+ PORT_START("IN.0") // D10 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr) PORT_NAME("Score")
+
+ PORT_START("IN.1") // D11 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr) PORT_NAME("Land")
+
+ PORT_START("IN.2") // D12 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr)
+
+ PORT_START("IN.3") // D13 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr)
+
+ PORT_START("IN.4") // D14 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr)
+
+ PORT_START("IN.5") // D15 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr)
+
+ PORT_START("IN.6") // INT1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1) PORT_NAME("Fire")
+INPUT_PORTS_END
+
+INPUT_CHANGED_MEMBER(msthawk_state::input_changed)
+{
+ update_int0();
+}
+
+void msthawk_state::msthawk(machine_config &config)
+{
+ /* basic machine hardware */
+ HD38800(config, m_maincpu, 400000); // approximation
+ m_maincpu->write_r<0>().set(FUNC(msthawk_state::plate_w));
+ m_maincpu->write_r<1>().set(FUNC(msthawk_state::plate_w));
+ m_maincpu->write_r<2>().set(FUNC(msthawk_state::plate_w));
+ m_maincpu->write_r<3>().set(FUNC(msthawk_state::plate_w));
+ m_maincpu->write_d().set(FUNC(msthawk_state::grid_w));
+
+ /* video hardware */
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
+ screen.set_svg_region("svg");
+ screen.set_refresh_hz(50);
+ screen.set_size(1920, 696);
+ screen.set_visarea(0, 1920-1, 0, 696-1);
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
+
+ /* sound hardware */
+ SPEAKER(config, "mono").front_center();
+ SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
+}
@@ -885,15 +966,15 @@ ROM_END
class bzaxxon_state : public hh_hmcs40_state
{
public:
- bzaxxon_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ bzaxxon_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
void update_int1();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int1(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void bzaxxon(machine_config &config);
};
@@ -953,13 +1034,18 @@ static INPUT_PORTS_START( bzaxxon )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, bzaxxon_state, input_changed, nullptr)
PORT_START("IN.4") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.5") // port D
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_SELECT )
PORT_BIT( 0xfff7, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(bzaxxon_state::input_changed)
+{
+ update_int1();
+}
+
void bzaxxon_state::bzaxxon(machine_config &config)
{
/* basic machine hardware */
@@ -976,8 +1062,7 @@ void bzaxxon_state::bzaxxon(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(613, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 613-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -985,17 +1070,6 @@ void bzaxxon_state::bzaxxon(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bzaxxon )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800b19", 0x0000, 0x1000, CRC(4fecb80d) SHA1(7adf079480ffd3825ad5ae1eaa4d892eecbcc42d) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 521080, "svg", 0)
- ROM_LOAD( "bzaxxon.svg", 0, 521080, BAD_DUMP CRC(f4fbb2de) SHA1(83db400e67d91ae4bfee3e8568ae9df94ebede19) )
-ROM_END
-
@@ -1011,15 +1085,15 @@ ROM_END
class zackman_state : public hh_hmcs40_state
{
public:
- zackman_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ zackman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
void update_int0();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int0(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void zackman(machine_config &config);
};
@@ -1079,9 +1153,14 @@ static INPUT_PORTS_START( zackman )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, zackman_state, input_changed, nullptr)
PORT_START("IN.4") // INT1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 1)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(zackman_state::input_changed)
+{
+ update_int0();
+}
+
void zackman_state::zackman(machine_config &config)
{
/* basic machine hardware */
@@ -1100,8 +1179,7 @@ void zackman_state::zackman(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(487, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 487-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1109,17 +1187,6 @@ void zackman_state::zackman(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( zackman )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a49", 0x0000, 0x1000, CRC(b97f5ef6) SHA1(7fe20e8107361caf9ea657e504be1f8b10b8b03f) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 910689, "svg", 0)
- ROM_LOAD( "zackman.svg", 0, 910689, CRC(5f322820) SHA1(4210aff160e5de9a409aba8b915aaebff2a92647) )
-ROM_END
-
@@ -1136,8 +1203,8 @@ ROM_END
class bpengo_state : public hh_hmcs40_state
{
public:
- bpengo_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ bpengo_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1145,7 +1212,7 @@ public:
DECLARE_WRITE16_MEMBER(grid_w);
void update_int0();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int0(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void bpengo(machine_config &config);
};
@@ -1206,7 +1273,7 @@ static INPUT_PORTS_START( bpengo )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bpengo_state, input_changed, nullptr)
PORT_START("IN.4") // INT1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 1)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
PORT_START("IN.5") // port D
PORT_CONFNAME( 0x0800, 0x0000, "Factory Test" )
@@ -1215,6 +1282,11 @@ static INPUT_PORTS_START( bpengo )
PORT_BIT( 0xf7ff, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(bpengo_state::input_changed)
+{
+ update_int0();
+}
+
void bpengo_state::bpengo(machine_config &config)
{
/* basic machine hardware */
@@ -1234,8 +1306,7 @@ void bpengo_state::bpengo(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 759);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 759-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1243,17 +1314,6 @@ void bpengo_state::bpengo(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bpengo )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a63", 0x0000, 0x1000, CRC(ebd6bc64) SHA1(0a322c47b9553a2739a85908ce64b9650cf93d49) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 744461, "svg", 0)
- ROM_LOAD( "bpengo.svg", 0, 744461, BAD_DUMP CRC(2b9abaa5) SHA1(c70a6ac1fa757fdd3ababfe6e00573ef1410c1eb) )
-ROM_END
-
@@ -1270,8 +1330,8 @@ ROM_END
class bbtime_state : public hh_hmcs40_state
{
public:
- bbtime_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ bbtime_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1279,7 +1339,7 @@ public:
DECLARE_WRITE16_MEMBER(grid_w);
void update_int0();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int0(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void bbtime(machine_config &config);
};
@@ -1343,9 +1403,14 @@ static INPUT_PORTS_START( bbtime )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, bbtime_state, input_changed, nullptr)
PORT_START("IN.5") // INT1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 1)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(bbtime_state::input_changed)
+{
+ update_int0();
+}
+
void bbtime_state::bbtime(machine_config &config)
{
/* basic machine hardware */
@@ -1364,8 +1429,7 @@ void bbtime_state::bbtime(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(379, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 379-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1373,17 +1437,6 @@ void bbtime_state::bbtime(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bbtime )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a65", 0x0000, 0x1000, CRC(33611faf) SHA1(29b6a30ed543688d31ec2aa18f7938fa4eef30b0) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 461605, "svg", 0)
- ROM_LOAD( "bbtime.svg", 0, 461605, BAD_DUMP CRC(5b335271) SHA1(46c45b711358e8397ae707668aecead9e341ab8a) )
-ROM_END
-
@@ -1400,8 +1453,8 @@ ROM_END
class bdoramon_state : public hh_hmcs40_state
{
public:
- bdoramon_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ bdoramon_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -1439,10 +1492,10 @@ WRITE16_MEMBER(bdoramon_state::grid_w)
static INPUT_PORTS_START( bdoramon )
PORT_START("IN.0") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.1") // INT1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 1)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
PORT_START("IN.2") // port D
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
@@ -1474,8 +1527,7 @@ void bdoramon_state::bdoramon(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 668);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 668-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1483,17 +1535,6 @@ void bdoramon_state::bdoramon(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bdoramon )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800b43", 0x0000, 0x1000, CRC(9387ca42) SHA1(8937e208934b34bd9f49700aa50287dfc8bda76c) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 624751, "svg", 0)
- ROM_LOAD( "bdoramon.svg", 0, 624751, CRC(5dc4017c) SHA1(2091765de401969651b8eb22067572be72d12398) )
-ROM_END
-
@@ -1510,8 +1551,8 @@ ROM_END
class bultrman_state : public hh_hmcs40_state
{
public:
- bultrman_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ bultrman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -1550,7 +1591,7 @@ WRITE16_MEMBER(bultrman_state::grid_w)
static INPUT_PORTS_START( bultrman )
PORT_START("IN.0") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.1") // port D
PORT_CONFNAME( 0x0010, 0x0000, "Factory Test" )
@@ -1577,8 +1618,7 @@ void bultrman_state::bultrman(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 673);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 673-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1586,17 +1626,6 @@ void bultrman_state::bultrman(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bultrman )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800b52", 0x0000, 0x1000, CRC(88d372dc) SHA1(f2ac3b89be8afe6fb65914ccebe1a56316b9472a) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 405717, "svg", 0)
- ROM_LOAD( "bultrman.svg", 0, 405717, CRC(13367971) SHA1(f294898712d1e146ff267bb1e3cfd059f972b248) )
-ROM_END
-
@@ -1613,8 +1642,8 @@ ROM_END
class machiman_state : public hh_hmcs40_state
{
public:
- machiman_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ machiman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1653,7 +1682,7 @@ WRITE16_MEMBER(machiman_state::grid_w)
static INPUT_PORTS_START( machiman )
PORT_START("IN.0") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.1") // port D
PORT_BIT( 0x3fff, IP_ACTIVE_HIGH, IPT_UNUSED )
@@ -1678,8 +1707,7 @@ void machiman_state::machiman(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1534, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1534-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1687,17 +1715,6 @@ void machiman_state::machiman(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( machiman )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a85", 0x0000, 0x1000, CRC(894b4954) SHA1(cab49638a326b031aa548301beb16f818759ef62) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 374097, "svg", 0)
- ROM_LOAD( "machiman.svg", 0, 374097, CRC(78af02ac) SHA1(1b4bbea3e46e1bf33149727d9725bc9b18652b9c) )
-ROM_END
-
@@ -1719,8 +1736,8 @@ ROM_END
class pairmtch_state : public hh_hmcs40_state
{
public:
- pairmtch_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag),
+ pairmtch_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag),
m_audiocpu(*this, "audiocpu"),
m_soundlatch(*this, "soundlatch%u", 0)
{ }
@@ -1776,6 +1793,7 @@ WRITE8_MEMBER(pairmtch_state::sound_w)
m_soundlatch[0]->write(space, 0, bitswap<8>(data,7,6,5,4,0,1,2,3));
}
+
// handlers: audiocpu side
WRITE8_MEMBER(pairmtch_state::sound2_w)
@@ -1855,18 +1873,6 @@ void pairmtch_state::pairmtch(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch[1]);
}
-// roms
-
-ROM_START( pairmtch )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a88", 0x0000, 0x1000, CRC(ffa35730) SHA1(5a80b9025aaad2ac0ab0b1436a1355ae8cd3f868) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 0x2000, "audiocpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a89", 0x0000, 0x1000, CRC(3533ec56) SHA1(556d69e78a0ee1bf766fce16ed58992d7272d57f) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-ROM_END
-
@@ -1885,8 +1891,8 @@ ROM_END
class alnattck_state : public hh_hmcs40_state
{
public:
- alnattck_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ alnattck_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -1972,8 +1978,7 @@ void alnattck_state::alnattck(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 700);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 700-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1981,17 +1986,6 @@ void alnattck_state::alnattck(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( alnattck )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800a25", 0x0000, 0x1000, CRC(18b50869) SHA1(11e9d5f7b4ae818b077b0ee14a3b43190e20bff3) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 564271, "svg", 0)
- ROM_LOAD( "alnattck.svg", 0, 564271, CRC(5466d1d4) SHA1(3295272015969e58fddc53272769e1fc1bd4b355) )
-ROM_END
-
@@ -2009,15 +2003,15 @@ ROM_END
class cdkong_state : public hh_hmcs40_state
{
public:
- cdkong_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ cdkong_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
- void speaker_update();
+ void speaker_decay_reset();
TIMER_DEVICE_CALLBACK_MEMBER(speaker_decay_sim);
double m_speaker_volume;
void cdkong(machine_config &config);
@@ -2026,31 +2020,21 @@ protected:
virtual void machine_start() override;
};
-void cdkong_state::machine_start()
-{
- hh_hmcs40_state::machine_start();
-
- // zerofill/init
- m_speaker_volume = 0;
- save_item(NAME(m_speaker_volume));
-}
-
// handlers
-void cdkong_state::speaker_update()
+void cdkong_state::speaker_decay_reset()
{
if (m_r[1] & 8)
m_speaker_volume = 1.0;
- int level = (m_d & 8) ? 0x7fff : 0;
- m_speaker->level_w(level * m_speaker_volume);
+ m_speaker->set_output_gain(0, m_speaker_volume);
}
TIMER_DEVICE_CALLBACK_MEMBER(cdkong_state::speaker_decay_sim)
{
// volume decays when speaker is off (divisor and timer period determine duration)
- speaker_update();
- m_speaker_volume /= 1.02;
+ speaker_decay_reset();
+ m_speaker_volume /= 1.015;
}
void cdkong_state::prepare_display()
@@ -2063,7 +2047,7 @@ WRITE8_MEMBER(cdkong_state::plate_w)
{
// R13: speaker on
m_r[offset] = data;
- speaker_update();
+ speaker_decay_reset();
// R0x-R6x: vfd plate
int shift = offset * 4;
@@ -2074,8 +2058,7 @@ WRITE8_MEMBER(cdkong_state::plate_w)
WRITE16_MEMBER(cdkong_state::grid_w)
{
// D3: speaker out
- m_d = data;
- speaker_update();
+ m_speaker->level_w(data >> 3 & 1);
// D4-D14: vfd grid
m_grid = data >> 4 & 0x7ff;
@@ -2086,7 +2069,7 @@ WRITE16_MEMBER(cdkong_state::grid_w)
static INPUT_PORTS_START( cdkong )
PORT_START("IN.0") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.1") // port D
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
@@ -2096,7 +2079,14 @@ static INPUT_PORTS_START( cdkong )
PORT_BIT( 0x7ff8, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
-static s16 cdkong_speaker_levels[0x8000];
+void cdkong_state::machine_start()
+{
+ hh_hmcs40_state::machine_start();
+
+ // zerofill/init
+ m_speaker_volume = 0;
+ save_item(NAME(m_speaker_volume));
+}
void cdkong_state::cdkong(machine_config &config)
{
@@ -2117,33 +2107,15 @@ void cdkong_state::cdkong(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(605, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 605-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-
TIMER(config, "speaker_decay").configure_periodic(FUNC(cdkong_state::speaker_decay_sim), attotime::from_msec(1));
-
- // set volume levels (set_output_gain is too slow for sub-frame intervals)
- for (int i = 0; i < 0x8000; i++)
- cdkong_speaker_levels[i] = i;
- m_speaker->set_levels(0x8000, cdkong_speaker_levels);
}
-// roms
-
-ROM_START( cdkong )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a45", 0x0000, 0x1000, CRC(196b8070) SHA1(da85d1eb4b048b77f3168630662ab94ec9baa262) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 359199, "svg", 0)
- ROM_LOAD( "cdkong.svg", 0, 359199, CRC(ba159fd5) SHA1(3188e2ed3234f39ac9ee93a485a7e73314bc3457) )
-ROM_END
-
@@ -2167,8 +2139,8 @@ ROM_END
class cgalaxn_state : public hh_hmcs40_state
{
public:
- cgalaxn_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ cgalaxn_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -2189,13 +2161,6 @@ void cgalaxn_state::prepare_display()
display_matrix(15, 12, plate, grid);
}
-INPUT_CHANGED_MEMBER(cgalaxn_state::player_switch)
-{
- // 2-player switch directly enables plate 14
- m_plate = (m_plate & 0x3fff) | (newval ? 0 : 0x4000);
- prepare_display();
-}
-
WRITE8_MEMBER(cgalaxn_state::grid_w)
{
// R10,R11: input mux
@@ -2242,12 +2207,19 @@ static INPUT_PORTS_START( cgalaxn )
PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.2") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.3") // INT1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 1)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(cgalaxn_state::player_switch)
+{
+ // 2-player switch directly enables plate 14
+ m_plate = (m_plate & 0x3fff) | (newval ? 0 : 0x4000);
+ prepare_display();
+}
+
void cgalaxn_state::cgalaxn(machine_config &config)
{
/* basic machine hardware */
@@ -2263,8 +2235,7 @@ void cgalaxn_state::cgalaxn(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(526, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 526-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -2272,17 +2243,6 @@ void cgalaxn_state::cgalaxn(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( cgalaxn )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800a70", 0x0000, 0x1000, CRC(a4c5ed1d) SHA1(0f647cb78437d7e62411febf7c9ce3c5b6753a80) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 712204, "svg", 0)
- ROM_LOAD( "cgalaxn.svg", 0, 712204, CRC(67ec57bf) SHA1(195c9867b321da9768ce287d1060ceae50345dd4) )
-ROM_END
-
@@ -2311,8 +2271,8 @@ ROM_END
class cpacman_state : public hh_hmcs40_state
{
public:
- cpacman_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ cpacman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -2396,8 +2356,7 @@ void cpacman_state::cpacman(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(484, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 484-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -2405,26 +2364,6 @@ void cpacman_state::cpacman(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( cpacman )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a29", 0x0000, 0x1000, CRC(1082d577) SHA1(0ef73132bd41f6ca1e4c001ae19f7f7c97eaa8d1) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 359765, "svg", 0)
- ROM_LOAD( "cpacman.svg", 0, 359765, CRC(e3810a46) SHA1(d0994edd71a6adc8f238c71e360a8606ce397a14) )
-ROM_END
-
-ROM_START( cpacmanr1 )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a28", 0x0000, 0x1000, CRC(d2ed57e5) SHA1(f56f1341485ac28ea9e6cc4d162fab18d8a4c977) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 359765, "svg", 0)
- ROM_LOAD( "cpacman.svg", 0, 359765, CRC(e3810a46) SHA1(d0994edd71a6adc8f238c71e360a8606ce397a14) )
-ROM_END
-
@@ -2448,8 +2387,8 @@ ROM_END
class cmspacmn_state : public hh_hmcs40_state
{
public:
- cmspacmn_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ cmspacmn_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -2533,8 +2472,7 @@ void cmspacmn_state::cmspacmn(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(481, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 481-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -2542,17 +2480,6 @@ void cmspacmn_state::cmspacmn(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( cmspacmn )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a61", 0x0000, 0x1000, CRC(76276318) SHA1(9d6ff3f49b4cdaee5c9e238c1ed638bfb9b99aa7) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 849327, "svg", 0)
- ROM_LOAD( "cmspacmn.svg", 0, 849327, CRC(4110ad07) SHA1(76113a2ce0fb1c6dab4e26fd59a13dc89d950d75) )
-ROM_END
-
@@ -2573,8 +2500,8 @@ ROM_END
class sag_state : public hh_hmcs40_state
{
public:
- sag_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ sag_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -2692,26 +2619,6 @@ void sag_state::sag(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( sag_si2 )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "inv2_hd38800a31", 0x0000, 0x1000, BAD_DUMP CRC(29c8c100) SHA1(41cd413065659c6d7d5b2408de2ca6d51c49629a) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-ROM_END
-
-ROM_START( sag_bb4 )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "b-b5_hd38800a37", 0x0000, 0x1000, CRC(64852bd5) SHA1(fb1c24ca43934ceb6fc35ac7c35b71e6e843dbc5) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-ROM_END
-
-ROM_START( sag_pb )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "pinb_hd38800a38", 0x0000, 0x1000, CRC(6e53a56b) SHA1(13f057eab2e4cfbb3ef1247a041abff15ae727c9) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-ROM_END
-
@@ -2728,8 +2635,8 @@ ROM_END
class egalaxn2_state : public hh_hmcs40_state
{
public:
- egalaxn2_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ egalaxn2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -2825,8 +2732,7 @@ void egalaxn2_state::egalaxn2(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(505, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 505-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -2834,17 +2740,6 @@ void egalaxn2_state::egalaxn2(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( egalaxn2 )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a13", 0x0000, 0x1000, CRC(112b721b) SHA1(4a185bc57ea03fe64f61f7db4da37b16eeb0cb54) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 507945, "svg", 0)
- ROM_LOAD( "egalaxn2.svg", 0, 507945, CRC(b72a8721) SHA1(2d90fca6ce962710525b631e5bc8f75d79332b9d) )
-ROM_END
-
@@ -2863,8 +2758,8 @@ ROM_END
class epacman2_state : public egalaxn2_state
{
public:
- epacman2_state(const machine_config &mconfig, device_type type, const char *tag) :
- egalaxn2_state(mconfig, type, tag)
+ epacman2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : egalaxn2_state(mconfig, type, tag)
{ }
void epacman2(machine_config &config);
@@ -2909,31 +2804,10 @@ void epacman2_state::epacman2(machine_config &config)
egalaxn2(config);
/* video hardware */
- screen_device *screen = subdevice<screen_device>("screen");
- screen->set_size(505, 1080);
- screen->set_visarea_full();
+ subdevice<screen_device>("screen")->set_size(505, 1080);
+ subdevice<screen_device>("screen")->set_visarea(0, 505-1, 0, 1080-1);
}
-// roms
-
-ROM_START( epacman2 )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a23", 0x0000, 0x1000, CRC(6eab640f) SHA1(509bdd02be915089e13769f22a08e03509f03af4) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 262480, "svg", 0)
- ROM_LOAD( "epacman2.svg", 0, 262480, CRC(73bd9671) SHA1(a3ac754c0e060da50b65f3d0f9630d9c3d871650) )
-ROM_END
-
-ROM_START( epacman2r )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a23", 0x0000, 0x1000, CRC(6eab640f) SHA1(509bdd02be915089e13769f22a08e03509f03af4) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 262483, "svg", 0)
- ROM_LOAD( "epacman2r.svg", 0, 262483, CRC(279b629a) SHA1(4c499fb143aadf4f6722b994a22a0d0d3c5150b6) )
-ROM_END
-
@@ -2951,8 +2825,8 @@ ROM_END
class eturtles_state : public hh_hmcs40_state
{
public:
- eturtles_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag),
+ eturtles_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag),
m_audiocpu(*this, "audiocpu"),
m_cop_irq(0)
{ }
@@ -2970,21 +2844,13 @@ public:
DECLARE_READ8_MEMBER(cop_ack_r);
void update_int();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void eturtles(machine_config &config);
protected:
virtual void machine_start() override;
};
-void eturtles_state::machine_start()
-{
- hh_hmcs40_state::machine_start();
-
- // register for savestates
- save_item(NAME(m_cop_irq));
-}
-
// handlers: maincpu side
void eturtles_state::prepare_display()
@@ -3029,6 +2895,7 @@ void eturtles_state::update_int()
set_interrupt(1, inp & 2);
}
+
// handlers: COP side
WRITE_LINE_MEMBER(eturtles_state::speaker_w)
@@ -3088,6 +2955,19 @@ static INPUT_PORTS_START( eturtles )
PORT_CONFSETTING( 0x01, "2" )
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(eturtles_state::input_changed)
+{
+ update_int();
+}
+
+void eturtles_state::machine_start()
+{
+ hh_hmcs40_state::machine_start();
+
+ // register for savestates
+ save_item(NAME(m_cop_irq));
+}
+
void eturtles_state::eturtles(machine_config &config)
{
/* basic machine hardware */
@@ -3115,8 +2995,7 @@ void eturtles_state::eturtles(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(484, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 484-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -3124,20 +3003,6 @@ void eturtles_state::eturtles(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( eturtles )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a43", 0x0000, 0x1000, CRC(446aa4e2) SHA1(d1c0fb14ea7081def53b1174964b39eed1e5d5e6) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 0x0200, "audiocpu", 0 )
- ROM_LOAD( "cop411l-ked_n", 0x0000, 0x0200, CRC(503d26e9) SHA1(a53d24d62195bfbceff2e4a43199846e0950aef6) )
-
- ROM_REGION( 1027626, "svg", 0)
- ROM_LOAD( "eturtles.svg", 0, 1027626, CRC(b4f7abff) SHA1(e9b065a3a3fef3c71495002945724a86c2a68eb4) )
-ROM_END
-
@@ -3155,8 +3020,8 @@ ROM_END
class estargte_state : public eturtles_state
{
public:
- estargte_state(const machine_config &mconfig, device_type type, const char *tag) :
- eturtles_state(mconfig, type, tag)
+ estargte_state(const machine_config &mconfig, device_type type, const char *tag)
+ : eturtles_state(mconfig, type, tag)
{ }
virtual void prepare_display() override;
@@ -3238,8 +3103,7 @@ void estargte_state::estargte(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 854);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 854-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -3247,20 +3111,6 @@ void estargte_state::estargte(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( estargte )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a42", 0x0000, 0x1000, CRC(5f6d55a6) SHA1(0da32149790fa5f16097338fc80536b462169e0c) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 0x0200, "audiocpu", 0 )
- ROM_LOAD( "cop411l-kec_n", 0x0000, 0x0200, CRC(fbd3c2d3) SHA1(65b8b24d38678c3fa970bfd639e9449a75a28927) )
-
- ROM_REGION( 462214, "svg", 0)
- ROM_LOAD( "estargte.svg", 0, 462214, CRC(282cc090) SHA1(b0f3c21e9a529e5f1e33b90ca25ce3a097fb75a0) )
-ROM_END
-
@@ -3280,8 +3130,8 @@ ROM_END
class ghalien_state : public hh_hmcs40_state
{
public:
- ghalien_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ ghalien_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -3368,8 +3218,7 @@ void ghalien_state::ghalien(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 699);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 699-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -3377,17 +3226,6 @@ void ghalien_state::ghalien(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ghalien )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800a04", 0x0000, 0x1000, CRC(019c3328) SHA1(9f1029c5c479f78350952c4f18747341ba5ea7a0) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 462749, "svg", 0)
- ROM_LOAD( "ghalien.svg", 0, 462749, CRC(1acbb1e8) SHA1(7bdeb840bc9080792e24812eba923bf84f7865a6) )
-ROM_END
-
@@ -3408,15 +3246,15 @@ ROM_END
class gckong_state : public hh_hmcs40_state
{
public:
- gckong_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ gckong_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
void update_int1();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int1(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void gckong(machine_config &config);
};
@@ -3476,7 +3314,7 @@ static INPUT_PORTS_START( gckong )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, gckong_state, input_changed, nullptr)
PORT_START("IN.4") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.5") // port D
PORT_CONFNAME( 0x0010, 0x0000, DEF_STR( Difficulty ) )
@@ -3485,6 +3323,11 @@ static INPUT_PORTS_START( gckong )
PORT_BIT( 0xffef, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(gckong_state::input_changed)
+{
+ update_int1();
+}
+
void gckong_state::gckong(machine_config &config)
{
/* basic machine hardware */
@@ -3500,28 +3343,15 @@ void gckong_state::gckong(machine_config &config)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
- screen.set_size(479, 1080);
- screen.set_visarea_full();
-
+ screen.set_size(506, 1080);
+ screen.set_visarea(0, 506-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_gckong);
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gckong )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800b01", 0x0000, 0x1000, CRC(d5a2cca3) SHA1(37bb5784383daab672ed1e0e2362c7a40d8d9b3f) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 346588, "svg", 0)
- ROM_LOAD( "gckong.svg", 0, 346588, CRC(317af984) SHA1(ff6323526d1f5e46eccf8fa8d979175895be75de) )
-ROM_END
-
@@ -3538,15 +3368,15 @@ ROM_END
class gdigdug_state : public hh_hmcs40_state
{
public:
- gdigdug_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ gdigdug_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
void update_int1();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int1(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void gdigdug(machine_config &config);
};
@@ -3608,9 +3438,14 @@ static INPUT_PORTS_START( gdigdug )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, gdigdug_state, input_changed, nullptr)
PORT_START("IN.5") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(gdigdug_state::input_changed)
+{
+ update_int1();
+}
+
void gdigdug_state::gdigdug(machine_config &config)
{
/* basic machine hardware */
@@ -3629,8 +3464,7 @@ void gdigdug_state::gdigdug(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(476, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 476-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -3638,17 +3472,6 @@ void gdigdug_state::gdigdug(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gdigdug )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a69", 0x0000, 0x1000, CRC(501165a9) SHA1(8a15d00c4aa66e870cadde33148426463560d2e6) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 807990, "svg", 0)
- ROM_LOAD( "gdigdug.svg", 0, 807990, CRC(a5b8392d) SHA1(3503829bb1a626a9e70115fb60b656dff8908144) )
-ROM_END
-
@@ -3669,8 +3492,8 @@ ROM_END
class mwcbaseb_state : public hh_hmcs40_state
{
public:
- mwcbaseb_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ mwcbaseb_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -3801,10 +3624,8 @@ void mwcbaseb_state::mwcbaseb(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 478);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 478-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_mwcbaseb);
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -3812,156 +3633,6 @@ void mwcbaseb_state::mwcbaseb(machine_config &config)
m_speaker->set_levels(8, mwcbaseb_speaker_levels);
}
-// roms
-
-ROM_START( mwcbaseb )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a09", 0x0000, 0x1000, CRC(25ba7dc0) SHA1(69e0a867fdcf07b454b1faf835e576ae782432c0) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 178441, "svg", 0)
- ROM_LOAD( "mwcbaseb.svg", 0, 178441, CRC(0f631190) SHA1(74a10ad0630af5516f76d5bf5628483d21f6b7be) )
-ROM_END
-
-
-
-
-
-/***************************************************************************
-
- Mattel Star Hawk (manufactured in Japan)
- * PCB label Kaken, PT-317B
- * Hitachi HD38800A73 MCU
- * cyan/red VFD display Futaba DM-41ZK, with partial color overlay + bezel
-
- Before release, it was advertised as "Space Battle"(a Mattel Intellivision game).
- Kaken was a subsidiary of Bandai. Star Hawk shell design is the same as Bandai's
- games from the same era. It's likely that this was made under contract exclusively
- for Mattel. There is no indication that this game was released in Japan by Bandai.
-
-***************************************************************************/
-
-class msthawk_state : public hh_hmcs40_state
-{
-public:
- msthawk_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
- { }
-
- void prepare_display();
- DECLARE_WRITE8_MEMBER(plate_w);
- DECLARE_WRITE16_MEMBER(grid_w);
-
- void update_int0();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int0(); }
- void msthawk(machine_config &config);
-};
-
-// handlers
-
-void msthawk_state::prepare_display()
-{
- u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
- u32 plate = bitswap<24>(m_plate,23,22,21,19,20,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0);
- display_matrix(21, 10, plate, grid);
-}
-
-WRITE8_MEMBER(msthawk_state::plate_w)
-{
- // R0x-R3x: vfd plate
- int shift = offset * 4;
- m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
- prepare_display();
-}
-
-WRITE16_MEMBER(msthawk_state::grid_w)
-{
- // D5: speaker out
- m_speaker->level_w(data >> 5 & 1);
-
- // D10-D15: input mux
- u8 inp_mux = data >> 10 & 0x3f;
- if (inp_mux != m_inp_mux)
- {
- m_inp_mux = inp_mux;
- update_int0();
- }
-
- // D6-D15: vfd grid
- m_grid = data >> 6 & 0x3ff;
-
- // D0-D4: more plates
- m_plate = (m_plate & 0x00ffff) | (data << 16 & 0x1f0000);
- prepare_display();
-}
-
-void msthawk_state::update_int0()
-{
- // INT0 on multiplexed inputs
- set_interrupt(0, read_inputs(6));
-}
-
-// config
-
-static INPUT_PORTS_START( msthawk )
- PORT_START("IN.0") // D10 INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr) PORT_NAME("Score")
-
- PORT_START("IN.1") // D11 INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr) PORT_NAME("Land")
-
- PORT_START("IN.2") // D12 INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr)
-
- PORT_START("IN.3") // D13 INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr)
-
- PORT_START("IN.4") // D14 INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr)
-
- PORT_START("IN.5") // D15 INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr)
-
- PORT_START("IN.6") // INT1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 1) PORT_NAME("Fire")
-INPUT_PORTS_END
-
-void msthawk_state::msthawk(machine_config &config)
-{
- /* basic machine hardware */
- HD38800(config, m_maincpu, 400000); // approximation
- m_maincpu->write_r<0>().set(FUNC(msthawk_state::plate_w));
- m_maincpu->write_r<1>().set(FUNC(msthawk_state::plate_w));
- m_maincpu->write_r<2>().set(FUNC(msthawk_state::plate_w));
- m_maincpu->write_r<3>().set(FUNC(msthawk_state::plate_w));
- m_maincpu->write_d().set(FUNC(msthawk_state::grid_w));
-
- /* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
- screen.set_svg_region("svg");
- screen.set_refresh_hz(50);
- screen.set_size(1920, 696);
- screen.set_visarea_full();
-
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_msthawk);
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-// roms
-
-ROM_START( msthawk )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800a73", 0x0000, 0x1000, CRC(a4f9a523) SHA1(465f06b02e2e7d2277218fd447830725790a816c) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 191888, "svg", 0)
- ROM_LOAD( "msthawk.svg", 0, 191888, CRC(a607fc0f) SHA1(282a412f6462128e09ee8bd18d682dda01297611) )
-ROM_END
-
@@ -3978,8 +3649,8 @@ ROM_END
class pbqbert_state : public hh_hmcs40_state
{
public:
- pbqbert_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ pbqbert_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -4042,8 +3713,7 @@ void pbqbert_state::pbqbert(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(603, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 603-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -4051,17 +3721,6 @@ void pbqbert_state::pbqbert(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( pbqbert )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a70", 0x0000, 0x1000, CRC(be7c80b4) SHA1(0617a80ef7fe188ea221de32e760d45fd4318c67) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 456567, "svg", 0)
- ROM_LOAD( "pbqbert.svg", 0, 456567, CRC(49853a62) SHA1(869377109fb7163e5ef5efadb26ce3955231f6ca) )
-ROM_END
-
@@ -4078,8 +3737,8 @@ ROM_END
class kingman_state : public hh_hmcs40_state
{
public:
- kingman_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ kingman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -4087,7 +3746,7 @@ public:
DECLARE_WRITE16_MEMBER(grid_w);
void update_int0();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int0(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void kingman(machine_config &config);
};
@@ -4151,9 +3810,14 @@ static INPUT_PORTS_START( kingman )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, kingman_state, input_changed, nullptr)
PORT_START("IN.4") // INT1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 1)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(kingman_state::input_changed)
+{
+ update_int0();
+}
+
void kingman_state::kingman(machine_config &config)
{
/* basic machine hardware */
@@ -4169,8 +3833,7 @@ void kingman_state::kingman(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(374, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 374-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -4178,17 +3841,6 @@ void kingman_state::kingman(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( kingman )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800b23", 0x0000, 0x1000, CRC(f8dfe14f) SHA1(660610d92ae7e5f92bddf5a3bcc2296b2ec3946b) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 396320, "svg", 0)
- ROM_LOAD( "kingman.svg", 0, 396320, CRC(3f52d2a9) SHA1(9291f1a1da3d19c3d6dedb995de0a5feba75b442) )
-ROM_END
-
@@ -4205,8 +3857,8 @@ ROM_END
class tmtron_state : public hh_hmcs40_state
{
public:
- tmtron_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ tmtron_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -4214,7 +3866,7 @@ public:
DECLARE_WRITE16_MEMBER(grid_w);
void update_int1();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int1(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void tmtron(machine_config &config);
};
@@ -4278,9 +3930,14 @@ static INPUT_PORTS_START( tmtron )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY PORT_CHANGED_MEMBER(DEVICE_SELF, tmtron_state, input_changed, nullptr)
PORT_START("IN.4") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(tmtron_state::input_changed)
+{
+ update_int1();
+}
+
void tmtron_state::tmtron(machine_config &config)
{
/* basic machine hardware */
@@ -4296,8 +3953,7 @@ void tmtron_state::tmtron(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 662);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 662-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -4305,17 +3961,6 @@ void tmtron_state::tmtron(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tmtron )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800a88", 0x0000, 0x1000, CRC(33db9670) SHA1(d6f747a59356526698784047bcfdbb59e79b9a23) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 384174, "svg", 0)
- ROM_LOAD( "tmtron.svg", 0, 384174, CRC(06bd9e63) SHA1(fb93013ec42dc05f7029ef3c3073c84867f0d077) )
-ROM_END
-
@@ -4336,8 +3981,8 @@ ROM_END
class vinvader_state : public hh_hmcs40_state
{
public:
- vinvader_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ vinvader_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -4402,8 +4047,7 @@ void vinvader_state::vinvader(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(233, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 233-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -4411,26 +4055,362 @@ void vinvader_state::vinvader(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-ROM_START( vinvader )
+
+
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+ROM_START( bambball )
ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38750a45", 0x0000, 0x0800, CRC(32de6056) SHA1(70238c6c40c3d513f8eced1cb81bdd4dbe12f16c) )
+ ROM_LOAD( "hd38750a08", 0x0000, 0x0800, CRC(907fef18) SHA1(73fe7ca7c6332268a3a9abc5ac88ada2991012fb) )
ROM_CONTINUE( 0x0f00, 0x0080 )
- ROM_REGION( 166379, "svg", 0)
- ROM_LOAD( "vinvader.svg", 0, 166379, CRC(b75c448e) SHA1(40d546f9fbdb446883e3ab0e3f678f1be8105159) )
+ ROM_REGION( 281988, "svg", 0)
+ ROM_LOAD( "bambball.svg", 0, 281988, CRC(63019194) SHA1(cbfb5b051d8f57f6b4d698796030850b3631ed56) )
ROM_END
+ROM_START( bmboxing )
+ ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38750a07", 0x0000, 0x0800, CRC(7f33e259) SHA1(c5fcdd6bf060c96666354f09f0570c754f6ed4e0) )
+ ROM_CONTINUE( 0x0f00, 0x0080 )
-} // anonymous namespace
+ ROM_REGION( 257144, "svg", 0)
+ ROM_LOAD( "bmboxing.svg", 0, 257144, CRC(dab81477) SHA1(28b0c844a311e2023ffa71d754e799059b7d050f) )
+ROM_END
-/***************************************************************************
- Game driver(s)
+ROM_START( bfriskyt )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800a77", 0x0000, 0x1000, CRC(a2445c4f) SHA1(0aaccfec90b66d27dae194d4462d88e654c41578) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 413577, "svg", 0)
+ ROM_LOAD( "bfriskyt.svg", 0, 413577, CRC(17090264) SHA1(4512a8a91a459f2ddc258641c6d38c2f48f4160f) )
+ROM_END
+
+
+ROM_START( packmon )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800a27", 0x0000, 0x1000, CRC(86e09e84) SHA1(ac7d3c43667d5720ca513f8ff51d146d9f2af124) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 246356, "svg", 0)
+ ROM_LOAD( "packmon.svg", 0, 246356, CRC(991eea96) SHA1(bf42765aea838e9c26453642b01a962399b3e74c) )
+ROM_END
+
+
+ROM_START( msthawk )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800a73", 0x0000, 0x1000, CRC(a4f9a523) SHA1(465f06b02e2e7d2277218fd447830725790a816c) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 197907, "svg", 0)
+ ROM_LOAD( "msthawk.svg", 0, 197907, CRC(b54efcb9) SHA1(76db2ca156d556bf578995196eca1170b39988bb) )
+ROM_END
+
+
+ROM_START( bzaxxon )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800b19", 0x0000, 0x1000, CRC(4fecb80d) SHA1(7adf079480ffd3825ad5ae1eaa4d892eecbcc42d) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 521080, "svg", 0)
+ ROM_LOAD( "bzaxxon.svg", 0, 521080, BAD_DUMP CRC(f4fbb2de) SHA1(83db400e67d91ae4bfee3e8568ae9df94ebede19) )
+ROM_END
+
+
+ROM_START( zackman )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a49", 0x0000, 0x1000, CRC(b97f5ef6) SHA1(7fe20e8107361caf9ea657e504be1f8b10b8b03f) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 910689, "svg", 0)
+ ROM_LOAD( "zackman.svg", 0, 910689, CRC(5f322820) SHA1(4210aff160e5de9a409aba8b915aaebff2a92647) )
+ROM_END
+
+
+ROM_START( bpengo )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a63", 0x0000, 0x1000, CRC(ebd6bc64) SHA1(0a322c47b9553a2739a85908ce64b9650cf93d49) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 744461, "svg", 0)
+ ROM_LOAD( "bpengo.svg", 0, 744461, BAD_DUMP CRC(2b9abaa5) SHA1(c70a6ac1fa757fdd3ababfe6e00573ef1410c1eb) )
+ROM_END
+
+
+ROM_START( bbtime )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a65", 0x0000, 0x1000, CRC(33611faf) SHA1(29b6a30ed543688d31ec2aa18f7938fa4eef30b0) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 461605, "svg", 0)
+ ROM_LOAD( "bbtime.svg", 0, 461605, BAD_DUMP CRC(5b335271) SHA1(46c45b711358e8397ae707668aecead9e341ab8a) )
+ROM_END
+
+
+ROM_START( bdoramon )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800b43", 0x0000, 0x1000, CRC(9387ca42) SHA1(8937e208934b34bd9f49700aa50287dfc8bda76c) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 624751, "svg", 0)
+ ROM_LOAD( "bdoramon.svg", 0, 624751, CRC(5dc4017c) SHA1(2091765de401969651b8eb22067572be72d12398) )
+ROM_END
+
+
+ROM_START( bultrman )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800b52", 0x0000, 0x1000, CRC(88d372dc) SHA1(f2ac3b89be8afe6fb65914ccebe1a56316b9472a) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 405717, "svg", 0)
+ ROM_LOAD( "bultrman.svg", 0, 405717, CRC(13367971) SHA1(f294898712d1e146ff267bb1e3cfd059f972b248) )
+ROM_END
+
+
+ROM_START( machiman )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a85", 0x0000, 0x1000, CRC(894b4954) SHA1(cab49638a326b031aa548301beb16f818759ef62) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 374097, "svg", 0)
+ ROM_LOAD( "machiman.svg", 0, 374097, CRC(78af02ac) SHA1(1b4bbea3e46e1bf33149727d9725bc9b18652b9c) )
+ROM_END
+
+
+ROM_START( pairmtch )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a88", 0x0000, 0x1000, CRC(ffa35730) SHA1(5a80b9025aaad2ac0ab0b1436a1355ae8cd3f868) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 0x2000, "audiocpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a89", 0x0000, 0x1000, CRC(3533ec56) SHA1(556d69e78a0ee1bf766fce16ed58992d7272d57f) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+ROM_END
+
+
+ROM_START( alnattck )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800a25", 0x0000, 0x1000, CRC(18b50869) SHA1(11e9d5f7b4ae818b077b0ee14a3b43190e20bff3) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 564271, "svg", 0)
+ ROM_LOAD( "alnattck.svg", 0, 564271, CRC(5466d1d4) SHA1(3295272015969e58fddc53272769e1fc1bd4b355) )
+ROM_END
+
+
+ROM_START( cdkong )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a45", 0x0000, 0x1000, CRC(196b8070) SHA1(da85d1eb4b048b77f3168630662ab94ec9baa262) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 359199, "svg", 0)
+ ROM_LOAD( "cdkong.svg", 0, 359199, CRC(ba159fd5) SHA1(3188e2ed3234f39ac9ee93a485a7e73314bc3457) )
+ROM_END
+
+
+ROM_START( cgalaxn )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800a70", 0x0000, 0x1000, CRC(a4c5ed1d) SHA1(0f647cb78437d7e62411febf7c9ce3c5b6753a80) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 712204, "svg", 0)
+ ROM_LOAD( "cgalaxn.svg", 0, 712204, CRC(67ec57bf) SHA1(195c9867b321da9768ce287d1060ceae50345dd4) )
+ROM_END
+
+
+ROM_START( cpacman )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a29", 0x0000, 0x1000, CRC(1082d577) SHA1(0ef73132bd41f6ca1e4c001ae19f7f7c97eaa8d1) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 359765, "svg", 0)
+ ROM_LOAD( "cpacman.svg", 0, 359765, CRC(e3810a46) SHA1(d0994edd71a6adc8f238c71e360a8606ce397a14) )
+ROM_END
+
+ROM_START( cpacmanr1 )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a28", 0x0000, 0x1000, CRC(d2ed57e5) SHA1(f56f1341485ac28ea9e6cc4d162fab18d8a4c977) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 359765, "svg", 0)
+ ROM_LOAD( "cpacman.svg", 0, 359765, CRC(e3810a46) SHA1(d0994edd71a6adc8f238c71e360a8606ce397a14) )
+ROM_END
+
+
+ROM_START( cmspacmn )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a61", 0x0000, 0x1000, CRC(76276318) SHA1(9d6ff3f49b4cdaee5c9e238c1ed638bfb9b99aa7) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 849327, "svg", 0)
+ ROM_LOAD( "cmspacmn.svg", 0, 849327, CRC(4110ad07) SHA1(76113a2ce0fb1c6dab4e26fd59a13dc89d950d75) )
+ROM_END
+
+
+ROM_START( sag_si2 )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "inv2_hd38800a31", 0x0000, 0x1000, BAD_DUMP CRC(29c8c100) SHA1(41cd413065659c6d7d5b2408de2ca6d51c49629a) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+ROM_END
+
+
+ROM_START( sag_bb4 )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "b-b5_hd38800a37", 0x0000, 0x1000, CRC(64852bd5) SHA1(fb1c24ca43934ceb6fc35ac7c35b71e6e843dbc5) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+ROM_END
+
+
+ROM_START( sag_pb )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "pinb_hd38800a38", 0x0000, 0x1000, CRC(6e53a56b) SHA1(13f057eab2e4cfbb3ef1247a041abff15ae727c9) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+ROM_END
+
+
+ROM_START( egalaxn2 )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a13", 0x0000, 0x1000, CRC(112b721b) SHA1(4a185bc57ea03fe64f61f7db4da37b16eeb0cb54) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 507945, "svg", 0)
+ ROM_LOAD( "egalaxn2.svg", 0, 507945, CRC(b72a8721) SHA1(2d90fca6ce962710525b631e5bc8f75d79332b9d) )
+ROM_END
+
+
+ROM_START( epacman2 )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a23", 0x0000, 0x1000, CRC(6eab640f) SHA1(509bdd02be915089e13769f22a08e03509f03af4) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 262480, "svg", 0)
+ ROM_LOAD( "epacman2.svg", 0, 262480, CRC(73bd9671) SHA1(a3ac754c0e060da50b65f3d0f9630d9c3d871650) )
+ROM_END
+
+ROM_START( epacman2r )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a23", 0x0000, 0x1000, CRC(6eab640f) SHA1(509bdd02be915089e13769f22a08e03509f03af4) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 262483, "svg", 0)
+ ROM_LOAD( "epacman2r.svg", 0, 262483, CRC(279b629a) SHA1(4c499fb143aadf4f6722b994a22a0d0d3c5150b6) )
+ROM_END
+
+
+ROM_START( estargte )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a42", 0x0000, 0x1000, CRC(5f6d55a6) SHA1(0da32149790fa5f16097338fc80536b462169e0c) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 0x0200, "audiocpu", 0 )
+ ROM_LOAD( "cop411l-kec_n", 0x0000, 0x0200, CRC(fbd3c2d3) SHA1(65b8b24d38678c3fa970bfd639e9449a75a28927) )
+
+ ROM_REGION( 462214, "svg", 0)
+ ROM_LOAD( "estargte.svg", 0, 462214, CRC(282cc090) SHA1(b0f3c21e9a529e5f1e33b90ca25ce3a097fb75a0) )
+ROM_END
+
+
+ROM_START( eturtles )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a43", 0x0000, 0x1000, CRC(446aa4e2) SHA1(d1c0fb14ea7081def53b1174964b39eed1e5d5e6) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 0x0200, "audiocpu", 0 )
+ ROM_LOAD( "cop411l-ked_n", 0x0000, 0x0200, CRC(503d26e9) SHA1(a53d24d62195bfbceff2e4a43199846e0950aef6) )
+
+ ROM_REGION( 1027626, "svg", 0)
+ ROM_LOAD( "eturtles.svg", 0, 1027626, CRC(b4f7abff) SHA1(e9b065a3a3fef3c71495002945724a86c2a68eb4) )
+ROM_END
+
+
+ROM_START( ghalien )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800a04", 0x0000, 0x1000, CRC(019c3328) SHA1(9f1029c5c479f78350952c4f18747341ba5ea7a0) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 462749, "svg", 0)
+ ROM_LOAD( "ghalien.svg", 0, 462749, CRC(1acbb1e8) SHA1(7bdeb840bc9080792e24812eba923bf84f7865a6) )
+ROM_END
+
+
+ROM_START( gckong )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800b01", 0x0000, 0x1000, CRC(d5a2cca3) SHA1(37bb5784383daab672ed1e0e2362c7a40d8d9b3f) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 356769, "svg", 0)
+ ROM_LOAD( "gckong.svg", 0, 356769, CRC(e2559b53) SHA1(519309c3a88b5d7f4c0ac5ae05dcdc1153377765) )
+ROM_END
+
+
+ROM_START( gdigdug )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a69", 0x0000, 0x1000, CRC(501165a9) SHA1(8a15d00c4aa66e870cadde33148426463560d2e6) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 807990, "svg", 0)
+ ROM_LOAD( "gdigdug.svg", 0, 807990, CRC(a5b8392d) SHA1(3503829bb1a626a9e70115fb60b656dff8908144) )
+ROM_END
+
+
+ROM_START( mwcbaseb )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a09", 0x0000, 0x1000, CRC(25ba7dc0) SHA1(69e0a867fdcf07b454b1faf835e576ae782432c0) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 178441, "svg", 0)
+ ROM_LOAD( "mwcbaseb.svg", 0, 178441, CRC(0f631190) SHA1(74a10ad0630af5516f76d5bf5628483d21f6b7be) )
+ROM_END
+
+
+ROM_START( pbqbert )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a70", 0x0000, 0x1000, CRC(be7c80b4) SHA1(0617a80ef7fe188ea221de32e760d45fd4318c67) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 456567, "svg", 0)
+ ROM_LOAD( "pbqbert.svg", 0, 456567, CRC(49853a62) SHA1(869377109fb7163e5ef5efadb26ce3955231f6ca) )
+ROM_END
+
+
+ROM_START( kingman )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800b23", 0x0000, 0x1000, CRC(f8dfe14f) SHA1(660610d92ae7e5f92bddf5a3bcc2296b2ec3946b) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 396320, "svg", 0)
+ ROM_LOAD( "kingman.svg", 0, 396320, CRC(3f52d2a9) SHA1(9291f1a1da3d19c3d6dedb995de0a5feba75b442) )
+ROM_END
+
+
+ROM_START( tmtron )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800a88", 0x0000, 0x1000, CRC(33db9670) SHA1(d6f747a59356526698784047bcfdbb59e79b9a23) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 384174, "svg", 0)
+ ROM_LOAD( "tmtron.svg", 0, 384174, CRC(06bd9e63) SHA1(fb93013ec42dc05f7029ef3c3073c84867f0d077) )
+ROM_END
+
+
+ROM_START( vinvader )
+ ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38750a45", 0x0000, 0x0800, CRC(32de6056) SHA1(70238c6c40c3d513f8eced1cb81bdd4dbe12f16c) )
+ ROM_CONTINUE( 0x0f00, 0x0080 )
+
+ ROM_REGION( 166379, "svg", 0)
+ ROM_LOAD( "vinvader.svg", 0, 166379, CRC(b75c448e) SHA1(40d546f9fbdb446883e3ab0e3f678f1be8105159) )
+ROM_END
+
-***************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
CONS( 1979, bambball, 0, 0, bambball, bambball, bambball_state, empty_init, "Bambino", "Dribble Away Basketball", MACHINE_SUPPORTS_SAVE )
@@ -4438,6 +4418,7 @@ CONS( 1979, bmboxing, 0, 0, bmboxing, bmboxing, bmboxing_state, empty_in
CONS( 1982, bfriskyt, 0, 0, bfriskyt, bfriskyt, bfriskyt_state, empty_init, "Bandai", "Frisky Tom (Bandai)", MACHINE_SUPPORTS_SAVE )
CONS( 1981, packmon, 0, 0, packmon, packmon, packmon_state, empty_init, "Bandai", "Packri Monster", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, msthawk, 0, 0, msthawk, msthawk, msthawk_state, empty_init, "Bandai (Mattel license)", "Star Hawk (Mattel)", MACHINE_SUPPORTS_SAVE )
CONS( 1982, bzaxxon, 0, 0, bzaxxon, bzaxxon, bzaxxon_state, empty_init, "Bandai", "Zaxxon (Bandai)", MACHINE_SUPPORTS_SAVE )
CONS( 1983, zackman, 0, 0, zackman, zackman, zackman_state, empty_init, "Bandai", "Zackman", MACHINE_SUPPORTS_SAVE )
CONS( 1983, bpengo, 0, 0, bpengo, bpengo, bpengo_state, empty_init, "Bandai", "Pengo (Bandai)", MACHINE_SUPPORTS_SAVE )
@@ -4448,7 +4429,7 @@ CONS( 1984, machiman, 0, 0, machiman, machiman, machiman_state, empty_in
CONS( 1984, pairmtch, 0, 0, pairmtch, pairmtch, pairmtch_state, empty_init, "Bandai", "Pair Match", MACHINE_SUPPORTS_SAVE )
CONS( 1981, alnattck, 0, 0, alnattck, alnattck, alnattck_state, empty_init, "Coleco", "Alien Attack", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, cdkong, 0, 0, cdkong, cdkong, cdkong_state, empty_init, "Coleco", "Donkey Kong (Coleco)", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, cdkong, 0, 0, cdkong, cdkong, cdkong_state, empty_init, "Coleco", "Donkey Kong (Coleco)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
CONS( 1982, cgalaxn, 0, 0, cgalaxn, cgalaxn, cgalaxn_state, empty_init, "Coleco", "Galaxian (Coleco)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
CONS( 1981, cpacman, 0, 0, cpacman, cpacman, cpacman_state, empty_init, "Coleco", "Pac-Man (Coleco, Rev. 29)", MACHINE_SUPPORTS_SAVE )
CONS( 1981, cpacmanr1, cpacman, 0, cpacman, cpacman, cpacman_state, empty_init, "Coleco", "Pac-Man (Coleco, Rev. 28)", MACHINE_SUPPORTS_SAVE )
@@ -4460,15 +4441,14 @@ CONS( 1981, sag_pb, 0, 0, sag, sag, sag_state, empty_in
CONS( 1981, egalaxn2, 0, 0, egalaxn2, egalaxn2, egalaxn2_state, empty_init, "Entex", "Galaxian 2 (Entex)", MACHINE_SUPPORTS_SAVE )
CONS( 1981, epacman2, 0, 0, epacman2, epacman2, epacman2_state, empty_init, "Entex", "Pac Man 2 (Entex, cyan Pacman)", MACHINE_SUPPORTS_SAVE )
CONS( 1981, epacman2r, epacman2, 0, epacman2, epacman2, epacman2_state, empty_init, "Entex", "Pac Man 2 (Entex, red Pacman)", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, eturtles, 0, 0, eturtles, eturtles, eturtles_state, empty_init, "Entex", "Turtles (Entex)", MACHINE_SUPPORTS_SAVE )
CONS( 1982, estargte, 0, 0, estargte, estargte, estargte_state, empty_init, "Entex", "Stargate (Entex)", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, eturtles, 0, 0, eturtles, eturtles, eturtles_state, empty_init, "Entex", "Turtles (Entex)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, ghalien, 0, 0, ghalien, ghalien, ghalien_state, empty_init, "Gakken", "Heiankyo Alien (Gakken)", MACHINE_SUPPORTS_SAVE )
CONS( 1982, gckong, 0, 0, gckong, gckong, gckong_state, empty_init, "Gakken", "Crazy Kong (Gakken)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
CONS( 1983, gdigdug, 0, 0, gdigdug, gdigdug, gdigdug_state, empty_init, "Gakken", "Dig Dug (Gakken)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, mwcbaseb, 0, 0, mwcbaseb, mwcbaseb, mwcbaseb_state, empty_init, "Mattel", "World Championship Baseball", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, msthawk, 0, 0, msthawk, msthawk, msthawk_state, empty_init, "Mattel", "Star Hawk (Mattel)", MACHINE_SUPPORTS_SAVE )
CONS( 1983, pbqbert, 0, 0, pbqbert, pbqbert, pbqbert_state, empty_init, "Parker Brothers", "Q*Bert (Parker Brothers)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/hh_melps4.cpp b/src/mame/drivers/hh_melps4.cpp
index 7d294433781..6b9f0e4f129 100644
--- a/src/mame/drivers/hh_melps4.cpp
+++ b/src/mame/drivers/hh_melps4.cpp
@@ -47,7 +47,7 @@ public:
u16 m_inp_mux; // multiplexed inputs mask
u8 read_inputs(int columns);
- virtual DECLARE_INPUT_CHANGED_MEMBER(reset_button);
+ DECLARE_INPUT_CHANGED_MEMBER(reset_button);
// display common
int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
@@ -203,12 +203,10 @@ INPUT_CHANGED_MEMBER(hh_melps4_state::reset_button)
/***************************************************************************
- Minidrivers (subclass, I/O, Inputs, Machine Config, ROM Defs)
+ Minidrivers (subclass, I/O, Inputs, Machine Config)
***************************************************************************/
-namespace {
-
/***************************************************************************
Coleco Frogger (manufactured in Japan, licensed from Sega)
@@ -221,8 +219,8 @@ namespace {
class cfrogger_state : public hh_melps4_state
{
public:
- cfrogger_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_melps4_state(mconfig, type, tag)
+ cfrogger_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_melps4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -292,12 +290,12 @@ static INPUT_PORTS_START( cfrogger )
PORT_CONFSETTING( 0x00, "1" )
PORT_CONFSETTING( 0x08, "2" )
- PORT_START("RESET")
+ PORT_START("IN.3") // fake
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_melps4_state, reset_button, nullptr)
INPUT_PORTS_END
-void cfrogger_state::cfrogger(machine_config &config)
-{
+MACHINE_CONFIG_START(cfrogger_state::cfrogger)
+
/* basic machine hardware */
M58846(config, m_maincpu, 600_kHz_XTAL);
m_maincpu->read_k().set(FUNC(cfrogger_state::input_r));
@@ -308,27 +306,17 @@ void cfrogger_state::cfrogger(machine_config &config)
m_maincpu->write_t().set(FUNC(cfrogger_state::speaker_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", "svg"));
- screen.set_refresh_hz(50);
- screen.set_size(500, 1080);
- screen.set_visarea_full();
-
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_melps4_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(500, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 500-1, 0, 1080-1)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_melps4_state, display_decay_tick, attotime::from_msec(1))
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-// roms
-
-ROM_START( cfrogger )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "m58846-701p", 0x0000, 0x1000, CRC(ba52a242) SHA1(7fa53b617f4bb54be32eb209e9b88131e11cb518) )
-
- ROM_REGION( 786255, "svg", 0)
- ROM_LOAD( "cfrogger.svg", 0, 786255, CRC(d8d6e2b6) SHA1(bc9a0260b211ed07021dfe1cc19a993569f4c544) )
-ROM_END
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
@@ -346,8 +334,8 @@ ROM_END
class gjungler_state : public hh_melps4_state
{
public:
- gjungler_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_melps4_state(mconfig, type, tag)
+ gjungler_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_melps4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -417,12 +405,12 @@ static INPUT_PORTS_START( gjungler )
PORT_CONFSETTING( 0x00, "A" )
PORT_CONFSETTING( 0x08, "B" )
- PORT_START("RESET")
+ PORT_START("IN.3") // fake
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_melps4_state, reset_button, nullptr)
INPUT_PORTS_END
-void gjungler_state::gjungler(machine_config &config)
-{
+MACHINE_CONFIG_START(gjungler_state::gjungler)
+
/* basic machine hardware */
M58846(config, m_maincpu, 600_kHz_XTAL);
m_maincpu->read_k().set(FUNC(gjungler_state::input_r));
@@ -434,19 +422,36 @@ void gjungler_state::gjungler(machine_config &config)
m_maincpu->write_t().set(FUNC(gjungler_state::speaker_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", "svg"));
- screen.set_refresh_hz(50);
- screen.set_size(481, 1080);
- screen.set_visarea_full();
-
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_melps4_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(481, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 481-1, 0, 1080-1)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_melps4_state, display_decay_tick, attotime::from_msec(1))
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+ROM_START( cfrogger )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "m58846-701p", 0x0000, 0x1000, CRC(ba52a242) SHA1(7fa53b617f4bb54be32eb209e9b88131e11cb518) )
+
+ ROM_REGION( 786255, "svg", 0)
+ ROM_LOAD( "cfrogger.svg", 0, 786255, CRC(d8d6e2b6) SHA1(bc9a0260b211ed07021dfe1cc19a993569f4c544) )
+ROM_END
-// roms
ROM_START( gjungler )
ROM_REGION( 0x1000, "maincpu", 0 )
@@ -458,14 +463,6 @@ ROM_END
-} // anonymous namespace
-
-/***************************************************************************
-
- Game driver(s)
-
-***************************************************************************/
-
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
CONS( 1981, cfrogger, 0, 0, cfrogger, cfrogger, cfrogger_state, empty_init, "Coleco", "Frogger (Coleco)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/hh_pic16.cpp b/src/mame/drivers/hh_pic16.cpp
index 0301dea356b..7fcc64da664 100644
--- a/src/mame/drivers/hh_pic16.cpp
+++ b/src/mame/drivers/hh_pic16.cpp
@@ -9,7 +9,6 @@
serial device etc.
-----------------------------------------------------------
*020 1650 19??, GI Economega IV TV PPL Tuning System Control
- *021 1650 1978, GI AY-3-8910 demo board
@024 1655 1979, Toytronic? Football
@033 1655A 1979, Toytronic Football (newer)
@036 1655A 1979, Ideal Maniac
@@ -40,6 +39,7 @@
- tweak MCU frequency for games when video/audio recording surfaces(YouTube etc.)
- some of the games rely on the fact that faster/longer strobed leds appear brighter,
eg. hccbaskb(player led), ..
+ - leboom discrete sound for volume decay (simulated for now)
- ttfball: discrete sound part, for volume gating?
- what's the relation between hccbaskb and tbaskb? Is one the bootleg
of the other? Or are they both made by the same subcontractor?
@@ -70,8 +70,8 @@
class hh_pic16_state : public driver_device
{
public:
- hh_pic16_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
+ hh_pic16_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_inp_matrix(*this, "IN.%u", 0),
m_out_x(*this, "%u.%u", 0U, 0U),
@@ -100,7 +100,6 @@ public:
u16 read_inputs(int columns, u16 colmask = ~0);
u8 read_rotated_inputs(int columns, u8 rowmask = ~0);
- virtual DECLARE_INPUT_CHANGED_MEMBER(reset_button);
// display common
int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
@@ -274,22 +273,14 @@ u8 hh_pic16_state::read_rotated_inputs(int columns, u8 rowmask)
return ~ret & rowmask;
}
-INPUT_CHANGED_MEMBER(hh_pic16_state::reset_button)
-{
- // when an input is directly wired to MCU MCLR pin
- m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
-}
-
/***************************************************************************
- Minidrivers (subclass, I/O, Inputs, Machine Config, ROM Defs)
+ Minidrivers (subclass, I/O, Inputs, Machine Config)
***************************************************************************/
-namespace {
-
/***************************************************************************
Atari Touch Me
@@ -307,8 +298,8 @@ namespace {
class touchme_state : public hh_pic16_state
{
public:
- touchme_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_pic16_state(mconfig, type, tag)
+ touchme_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_pic16_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -409,13 +400,6 @@ void touchme_state::touchme(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( touchme )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "pic_1655a-053", 0x0000, 0x0400, CRC(f0858f0a) SHA1(53ffe111d43db1c110847590350ef62f02ed5e0e) )
-ROM_END
-
@@ -431,13 +415,15 @@ ROM_END
class pabball_state : public hh_pic16_state
{
public:
- pabball_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_pic16_state(mconfig, type, tag)
+ pabball_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_pic16_state(mconfig, type, tag)
{ }
void prepare_display();
DECLARE_WRITE8_MEMBER(write_b);
DECLARE_WRITE8_MEMBER(write_c);
+
+ DECLARE_INPUT_CHANGED_MEMBER(reset_button);
void pabball(machine_config &config);
};
@@ -492,9 +478,15 @@ static INPUT_PORTS_START( pabball )
PORT_CONFSETTING( 0x20, "2" )
PORT_START("RESET")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Reset") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_pic16_state, reset_button, nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Reset") PORT_CHANGED_MEMBER(DEVICE_SELF, pabball_state, reset_button, nullptr)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(pabball_state::reset_button)
+{
+ // reset button is directly tied to MCLR pin
+ m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
+}
+
void pabball_state::pabball(machine_config &config)
{
/* basic machine hardware */
@@ -512,13 +504,6 @@ void pabball_state::pabball(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( pabball )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "pic_1655a-043", 0x0000, 0x0400, CRC(43c9b765) SHA1(888a431bab9bcb241c14f33f70863fa2ad89c96b) )
-ROM_END
-
@@ -537,8 +522,8 @@ ROM_END
class melodym_state : public hh_pic16_state
{
public:
- melodym_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_pic16_state(mconfig, type, tag)
+ melodym_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_pic16_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(write_b);
@@ -633,13 +618,6 @@ void melodym_state::melodym(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( melodym )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "pic_1655a-094", 0x0000, 0x0400, CRC(6d35bd7b) SHA1(20e326085878f69a9d4ef1651ef4443f27188567) )
-ROM_END
-
@@ -662,8 +640,8 @@ ROM_END
class maniac_state : public hh_pic16_state
{
public:
- maniac_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_pic16_state(mconfig, type, tag)
+ maniac_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_pic16_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -740,13 +718,6 @@ void maniac_state::maniac(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( maniac )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "pic_1655a-036", 0x0000, 0x0400, CRC(a96f7011) SHA1(e97ae44d3c1e74c7e1024bb0bdab03eecdc9f827) )
-ROM_END
-
@@ -770,8 +741,8 @@ ROM_END
class matchme_state : public hh_pic16_state
{
public:
- matchme_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_pic16_state(mconfig, type, tag)
+ matchme_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_pic16_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(write_b);
@@ -779,28 +750,15 @@ public:
DECLARE_READ8_MEMBER(read_c);
void set_clock();
- DECLARE_INPUT_CHANGED_MEMBER(speed_switch) { set_clock(); }
+ DECLARE_INPUT_CHANGED_MEMBER(speed_switch);
void matchme(machine_config &config);
protected:
virtual void machine_reset() override;
};
-void matchme_state::machine_reset()
-{
- hh_pic16_state::machine_reset();
- set_clock();
-}
-
// handlers
-void matchme_state::set_clock()
-{
- // MCU clock is ~1.2MHz by default (R=18K, C=15pF), high speed setting adds a
- // 10pF cap to speed it up by about 7.5%.
- m_maincpu->set_unscaled_clock((m_inp_matrix[4]->read() & 1) ? 1300000 : 1200000);
-}
-
WRITE8_MEMBER(matchme_state::write_b)
{
// B0-B7: lamps
@@ -873,6 +831,24 @@ static INPUT_PORTS_START( matchme )
PORT_CONFSETTING( 0x00, "Auto" )
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(matchme_state::speed_switch)
+{
+ set_clock();
+}
+
+void matchme_state::set_clock()
+{
+ // MCU clock is ~1.2MHz by default (R=18K, C=15pF), high speed setting adds a
+ // 10pF cap to speed it up by about 7.5%.
+ m_maincpu->set_unscaled_clock((m_inp_matrix[4]->read() & 1) ? 1300000 : 1200000);
+}
+
+void matchme_state::machine_reset()
+{
+ hh_pic16_state::machine_reset();
+ set_clock();
+}
+
void matchme_state::matchme(machine_config &config)
{
/* basic machine hardware */
@@ -890,13 +866,6 @@ void matchme_state::matchme(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( matchme )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "pic_1655a-049", 0x0000, 0x0400, CRC(fa3f4805) SHA1(57cbac18baa201927e99cd69cc2ffda4d2e642bb) )
-ROM_END
-
@@ -927,8 +896,8 @@ ROM_END
class leboom_state : public hh_pic16_state
{
public:
- leboom_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_pic16_state(mconfig, type, tag)
+ leboom_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_pic16_state(mconfig, type, tag)
{ }
DECLARE_READ8_MEMBER(read_a);
@@ -944,15 +913,6 @@ protected:
virtual void machine_start() override;
};
-void leboom_state::machine_start()
-{
- hh_pic16_state::machine_start();
-
- // zerofill/init
- m_speaker_volume = 0;
- save_item(NAME(m_speaker_volume));
-}
-
// handlers
void leboom_state::speaker_decay_reset()
@@ -1035,6 +995,15 @@ static INPUT_PORTS_START( leboom )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_N) PORT_NAME("Blue Button 8")
INPUT_PORTS_END
+void leboom_state::machine_start()
+{
+ hh_pic16_state::machine_start();
+
+ // zerofill/init
+ m_speaker_volume = 0;
+ save_item(NAME(m_speaker_volume));
+}
+
void leboom_state::leboom(machine_config &config)
{
/* basic machine hardware */
@@ -1053,13 +1022,6 @@ void leboom_state::leboom(machine_config &config)
TIMER(config, "speaker_decay").configure_periodic(FUNC(leboom_state::speaker_decay_sim), attotime::from_msec(25));
}
-// roms
-
-ROM_START( leboom )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "pic_1655a-061", 0x0000, 0x0400, CRC(5880eea1) SHA1(e3795b347fd5df9de084da36e33f6b70fbc0b0ae) )
-ROM_END
-
@@ -1078,8 +1040,8 @@ ROM_END
class tbaskb_state : public hh_pic16_state
{
public:
- tbaskb_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_pic16_state(mconfig, type, tag)
+ tbaskb_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_pic16_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1168,13 +1130,6 @@ void tbaskb_state::tbaskb(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tbaskb )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "pic_1655a-051", 0x0000, 0x0400, CRC(92534b40) SHA1(7055e32846c913e68f7d35f279cd537f6325f4f2) )
-ROM_END
-
@@ -1195,8 +1150,8 @@ ROM_END
class rockpin_state : public hh_pic16_state
{
public:
- rockpin_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_pic16_state(mconfig, type, tag)
+ rockpin_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_pic16_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1292,13 +1247,6 @@ void rockpin_state::rockpin(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( rockpin )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "pic_1650a-110_69-11397", 0x0000, 0x0400, CRC(d5396e77) SHA1(952feaff70fde53a9eda84c54704520d50749e78) )
-ROM_END
-
@@ -1318,8 +1266,8 @@ ROM_END
class hccbaskb_state : public hh_pic16_state
{
public:
- hccbaskb_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_pic16_state(mconfig, type, tag)
+ hccbaskb_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_pic16_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1408,13 +1356,6 @@ void hccbaskb_state::hccbaskb(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( hccbaskb )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "69-11557", 0x0000, 0x0400, CRC(56e81079) SHA1(1933f87f82c4c53f953534dba7757c9afc52d5bc) )
-ROM_END
-
@@ -1438,8 +1379,8 @@ ROM_END
class ttfball_state : public hh_pic16_state
{
public:
- ttfball_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_pic16_state(mconfig, type, tag)
+ ttfball_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_pic16_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1566,18 +1507,6 @@ void ttfball_state::ttfball(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ttfball )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "pic_1655a-033", 0x0000, 0x0400, CRC(2b500501) SHA1(f7fe464663c56e2181a31a1dc5f1f5239df57bed) )
-ROM_END
-
-ROM_START( ttfballa )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "pic_1655-024", 0x0000, 0x0400, CRC(9091102f) SHA1(ef72759f20b5a99e0366863caad1e26be114263f) )
-ROM_END
-
@@ -1597,8 +1526,8 @@ ROM_END
class uspbball_state : public hh_pic16_state
{
public:
- uspbball_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_pic16_state(mconfig, type, tag)
+ uspbball_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_pic16_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1688,13 +1617,6 @@ void uspbball_state::uspbball(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( uspbball )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "pic_1650a-133", 0x0000, 0x0400, CRC(479e98be) SHA1(67437177b059dfa6e01940da26daf997cec96ead) )
-ROM_END
-
@@ -1714,8 +1636,8 @@ ROM_END
class us2pfball_state : public hh_pic16_state
{
public:
- us2pfball_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_pic16_state(mconfig, type, tag)
+ us2pfball_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_pic16_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1829,23 +1751,94 @@ void us2pfball_state::us2pfball(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-ROM_START( us2pfball )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "pic_1650a-144", 0x0000, 0x0400, CRC(ef3677c9) SHA1(33f89c79e7e090710681dffe09eddaf66b5cb794) )
-ROM_END
-} // anonymous namespace
-
/***************************************************************************
Game driver(s)
***************************************************************************/
+ROM_START( touchme )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "pic_1655a-053", 0x0000, 0x0400, CRC(f0858f0a) SHA1(53ffe111d43db1c110847590350ef62f02ed5e0e) )
+ROM_END
+
+
+ROM_START( pabball )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "pic_1655a-043", 0x0000, 0x0400, CRC(43c9b765) SHA1(888a431bab9bcb241c14f33f70863fa2ad89c96b) )
+ROM_END
+
+
+ROM_START( melodym )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "pic_1655a-094", 0x0000, 0x0400, CRC(6d35bd7b) SHA1(20e326085878f69a9d4ef1651ef4443f27188567) )
+ROM_END
+
+
+ROM_START( maniac )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "pic_1655a-036", 0x0000, 0x0400, CRC(a96f7011) SHA1(e97ae44d3c1e74c7e1024bb0bdab03eecdc9f827) )
+ROM_END
+
+
+ROM_START( matchme )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "pic_1655a-049", 0x0000, 0x0400, CRC(fa3f4805) SHA1(57cbac18baa201927e99cd69cc2ffda4d2e642bb) )
+ROM_END
+
+
+ROM_START( leboom )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "pic_1655a-061", 0x0000, 0x0400, CRC(5880eea1) SHA1(e3795b347fd5df9de084da36e33f6b70fbc0b0ae) )
+ROM_END
+
+
+ROM_START( tbaskb )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "pic_1655a-051", 0x0000, 0x0400, CRC(92534b40) SHA1(7055e32846c913e68f7d35f279cd537f6325f4f2) )
+ROM_END
+
+
+ROM_START( rockpin )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "pic_1650a-110_69-11397", 0x0000, 0x0400, CRC(d5396e77) SHA1(952feaff70fde53a9eda84c54704520d50749e78) )
+ROM_END
+
+
+ROM_START( hccbaskb )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "69-11557", 0x0000, 0x0400, CRC(56e81079) SHA1(1933f87f82c4c53f953534dba7757c9afc52d5bc) )
+ROM_END
+
+
+ROM_START( ttfball )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "pic_1655a-033", 0x0000, 0x0400, CRC(2b500501) SHA1(f7fe464663c56e2181a31a1dc5f1f5239df57bed) )
+ROM_END
+
+ROM_START( ttfballa )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "pic_1655-024", 0x0000, 0x0400, CRC(9091102f) SHA1(ef72759f20b5a99e0366863caad1e26be114263f) )
+ROM_END
+
+
+ROM_START( uspbball )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "pic_1650a-133", 0x0000, 0x0400, CRC(479e98be) SHA1(67437177b059dfa6e01940da26daf997cec96ead) )
+ROM_END
+
+
+ROM_START( us2pfball )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "pic_1650a-144", 0x0000, 0x0400, CRC(ef3677c9) SHA1(33f89c79e7e090710681dffe09eddaf66b5cb794) )
+ROM_END
+
+
+
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
CONS( 1979, touchme, 0, 0, touchme, touchme, touchme_state, empty_init, "Atari", "Touch Me (handheld, Rev 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
@@ -1857,7 +1850,7 @@ CONS( 1979, maniac, 0, 0, maniac, maniac, maniac_state, empty_
CONS( 1980, matchme, 0, 0, matchme, matchme, matchme_state, empty_init, "Kingsford", "Match Me", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1980, leboom, 0, 0, leboom, leboom, leboom_state, empty_init, "Lakeside", "Le Boom", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1980, leboom, 0, 0, leboom, leboom, leboom_state, empty_init, "Lakeside", "Le Boom", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK )
CONS( 1979, tbaskb, 0, 0, tbaskb, tbaskb, tbaskb_state, empty_init, "Tandy Radio Shack", "Electronic Basketball (Tandy)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/hh_sm510.cpp b/src/mame/drivers/hh_sm510.cpp
index a6d6e80b39d..14f55c1aa53 100644
--- a/src/mame/drivers/hh_sm510.cpp
+++ b/src/mame/drivers/hh_sm510.cpp
@@ -3,101 +3,17 @@
// thanks-to:Igor, ChoccyHobNob, RColtrane
/***************************************************************************
-Sharp SM5xx family handhelds.
-List of child drivers:
-- rzone: Tiger R-Zone
-
-The LCD screen graphics are provided internally with an SVG file.
-MAME external artwork is recommended for the backgrounds inlays.
-
-TODO:
-- improve/redo SVGs of: gnw_mmouse, gnw_egg, exospace
-- confirm gnw_mmouse/gnw_egg rom (dumped from Soviet clone, but pretty
- confident that it's same)
-- Currently there is no accurate way to dump the SM511/SM511 melody ROM
- electronically. For the ones that weren't decapped, they were read by
- playing back all melody data and reconstructing it to ROM. Visual(decap)
- verification is wanted for: gnw_bfight, gnw_bjack, gnw_climber
-- identify lcd segments for tgaiden
-
-****************************************************************************
-
-Misc Nintendo Game & Watch notes:
-
-Trivia: Most of the Nintendo G&W have built-in cheats, likely kept in by
-Nintendo to test the game. These were not accessible to users of course,
-but for the sake of fun they're (usually) available on MAME.
-
-BTANB: On some of the earlier G&W games, eg. gnw_mmouse, gnw_pchute, gnw_fire,
-the controls still work after game over, this happens on the real thing too.
-
-Game list (* denotes not emulated yet)
-
-Serial Series MCU Title
----------------------------------------------
-AC-01* s ? Ball (aka Toss-Up)
-FL-02* s ? Flagman
-MT-03* s ? Vermin (aka The Exterminator)
-RC-04* s ? Fire (aka Fireman Fireman)
-IP-05* g ? Judge
-MN-06* g ? Manhole
-CN-07* g ? Helmet (aka Headache)
-LN-08* g ? Lion
-PR-21 ws SM5A Parachute
-OC-22 ws SM5A Octopus
-PP-23* ws SM5A? Popeye
-FP-24* ws SM5A Chef
-MC-25 ws SM5A Mickey Mouse
-EG-26 ws SM5A Egg (near-certainly same ROM as MC-25, but LCD differs)
-FR-27 ws SM5A Fire
-TL-28 ws SM510 Turtle Bridge
-ID-29 ws SM510 Fire Attack
-SP-30 ws SM510 Snoopy Tennis
-OP-51 ms SM510 Oil Panic
-DK-52 ms SM510 Donkey Kong
-DM-53 ms SM510 Mickey & Donald
-GH-54 ms SM510 Green House
-JR-55 ms SM510 Donkey Kong II
-MW-56 ms SM510 Mario
-LP-57 ms SM510 Rain Shower
-TC-58 ms SM510 Life Boat
-PB-59* ms SM511? Pinball
-BJ-60 ms SM512 Black Jack
-MG-61 ms SM510 Squish
-BD-62* ms SM512 Bomb Sweeper
-JB-63* ms SM511? Safe Buster
-MV-64* ms SM511? Gold Cliff
-ZL-65* ms SM511? Zelda
-CJ-71* tt SM511? Donkey Kong Jr.
-CM-72* tt SM511? Mario's Cement Factory
-SM-73* tt SM511? Snoopy
-PG-74* tt SM511? Popeye
-SM-91* p SM511? Snoopy (assume same ROM & LCD as tabletop version)
-PG-92* p SM511? Popeye "
-CJ-93* p SM511? Donkey Kong Jr. "
-PB-94* p SM511? Mario's Bombs Away
-DC-95* p SM511? Mickey Mouse
-MK-96* p SM511? Donkey Kong Circus (same ROM as DC-95? LCD is different)
-DJ-101 nws SM510 Donkey Kong Jr.
-ML-102 nws SM510 Mario's Cement Factory
-NH-103 nws SM510 Manhole
-TF-104 nws SM510 Tropical Fish
-YM-105 nws SM511 Super Mario Bros.
-DR-106 nws SM511 Climber
-BF-107 nws SM511 Balloon Fight
-MJ-108* nws SM511? Mario The Juggler
-BU-201 sc SM510? Spitball Sparky
-UD-202* sc SM510? Crab Grab
-BX-301 mvs SM511 Boxing (aka Punch Out)
-AK-302* mvs SM511? Donkey Kong 3
-HK-303* mvs SM511? Donkey Kong Hockey
-YM-801* cs SM511 Super Mario Bros. (assume same ROM as nws version)
-DR-802* cs SM511 Climber "
-BF-803* cs SM511 Balloon Fight "
-YM-901-S* x SM511 Super Mario Bros. "
-
-RGW-001 (2010 Ball remake) is on different hardware, ATmega169PV MCU.
-The "Mini Classics" keychains are by Nelsonic, not Nintendo.
+ Sharp SM5xx family handhelds.
+ List of child drivers:
+ - rzone: Tiger R-Zone
+
+ The LCD screen graphics are provided internally with an SVG file.
+ MAME external artwork is recommended for the backgrounds inlays.
+
+ TODO:
+ - improve/redo SVGs of: gnw_mmouse, gnw_egg, exospace
+ - confirm gnw_mmouse/gnw_egg rom (dumped from Soviet clone, but pretty confident that it's same)
+ - identify lcd segments for tgaiden
***************************************************************************/
@@ -105,13 +21,13 @@ The "Mini Classics" keychains are by Nelsonic, not Nintendo.
#include "includes/hh_sm510.h"
#include "cpu/sm510/sm500.h"
+#include "rendlay.h"
#include "screen.h"
#include "speaker.h"
// internal artwork
#include "gnw_dualv.lh"
#include "gnw_dualh.lh"
-
//#include "hh_sm510_test.lh" // common test-layout - use external artwork
//#include "hh_sm500_test.lh" // "
@@ -123,21 +39,10 @@ void hh_sm510_state::machine_start()
// resolve handlers
m_out_x.resolve();
- // determine number of input lines (set it in the subclass constructor if different)
- if (m_inp_lines == 0 && m_inp_fixed < 0)
- {
- for (; m_inp_matrix[m_inp_lines] != nullptr; m_inp_lines++) { ; }
-
- // when last input line is fixed(GND)
- if (m_inp_fixed == -2)
- {
- m_inp_lines--;
- m_inp_fixed = m_inp_lines;
- }
- }
-
// zerofill
m_inp_mux = 0;
+ /* m_inp_lines = 0; */ // not here
+ /* m_inp_fixed = -1; */ // not here
m_speaker_data = 0;
m_s = 0;
m_r = 0;
@@ -318,14 +223,14 @@ WRITE8_MEMBER(hh_sm510_state::piezo2bit_input_w)
+
+
/***************************************************************************
- Minidrivers (subclass, I/O, Inputs, Machine Config, ROM Defs)
+ Minidrivers (subclass, I/O, Inputs, Machine Config)
***************************************************************************/
-namespace {
-
/***************************************************************************
Konami Double Dribble
@@ -342,9 +247,11 @@ namespace {
class kdribble_state : public hh_sm510_state
{
public:
- kdribble_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ kdribble_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 3;
+ }
void kdribble(machine_config &config);
};
@@ -387,7 +294,7 @@ void kdribble_state::kdribble(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1524, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1524-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -396,16 +303,6 @@ void kdribble_state::kdribble(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( kdribble )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "584", 0x0000, 0x1000, CRC(1d9022c8) SHA1(64567f9f161e830a0634d5c89917ab866c26c0f8) )
-
- ROM_REGION( 450339, "svg", 0)
- ROM_LOAD( "kdribble.svg", 0, 450339, CRC(86c3ecc4) SHA1(8dfaeb0f3b35d4b680daaa9f478a6f3decf6ea0a) )
-ROM_END
-
@@ -422,9 +319,11 @@ ROM_END
class ktopgun_state : public hh_sm510_state
{
public:
- ktopgun_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ ktopgun_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 3;
+ }
void ktopgun(machine_config &config);
};
@@ -467,7 +366,7 @@ void ktopgun_state::ktopgun(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1515, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1515-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -477,16 +376,6 @@ void ktopgun_state::ktopgun(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ktopgun ) // except for filler/unused bytes, ROM listing in patent US5137277 "BH003 Top Gun" is same
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "598", 0x0000, 0x1000, CRC(50870b35) SHA1(cda1260c2e1c180995eced04b7d7ff51616dcef5) )
-
- ROM_REGION( 425832, "svg", 0)
- ROM_LOAD( "ktopgun.svg", 0, 425832, CRC(dc488ac0) SHA1(5a47e5639cb1e61dad3f2169efb99efe3d75896f) )
-ROM_END
-
@@ -505,9 +394,11 @@ ROM_END
class kcontra_state : public hh_sm510_state
{
public:
- kcontra_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ kcontra_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 3;
+ }
void kcontra(machine_config &config);
};
@@ -549,7 +440,7 @@ void kcontra_state::kcontra(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1505, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1505-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -559,19 +450,6 @@ void kcontra_state::kcontra(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( kcontra ) // except for filler/unused bytes, ROM listing in patent US5120057 "BH002 C (Contra)" program/melody is same
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "773.program", 0x0000, 0x1000, CRC(bf834877) SHA1(055dd56ec16d63afba61ab866481fd9c029fb54d) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "773.melody", 0x000, 0x100, CRC(23d02b99) SHA1(703938e496db0eeacd14fe7605d4b5c39e0a5bc8) )
-
- ROM_REGION( 721005, "svg", 0)
- ROM_LOAD( "kcontra.svg", 0, 721005, CRC(b5370d0f) SHA1(2f401222d24fa32a4659ef2b64ddac8ac3973c69) )
-ROM_END
-
@@ -588,9 +466,11 @@ ROM_END
class ktmnt_state : public hh_sm510_state
{
public:
- ktmnt_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ ktmnt_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 3;
+ }
void ktmnt(machine_config &config);
};
@@ -633,7 +513,7 @@ void ktmnt_state::ktmnt(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1505, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1505-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -643,19 +523,6 @@ void ktmnt_state::ktmnt(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ktmnt ) // except for filler/unused bytes, ROM listing in patent US5150899 "BH005 TMNT" program/melody is same
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "774.program", 0x0000, 0x1000, CRC(a1064f87) SHA1(92156c35fbbb414007ee6804fe635128a741d5f1) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "774.melody", 0x000, 0x100, CRC(8270d626) SHA1(bd91ca1d5cd7e2a62eef05c0033b19dcdbe441ca) )
-
- ROM_REGION( 610270, "svg", 0)
- ROM_LOAD( "ktmnt.svg", 0, 610270, CRC(ad9412ed) SHA1(154ee44efcd340dafa1cb84c37a9c3cd42cb42ab) )
-ROM_END
-
@@ -674,9 +541,11 @@ ROM_END
class kgradius_state : public hh_sm510_state
{
public:
- kgradius_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ kgradius_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 2;
+ }
void kgradius(machine_config &config);
};
@@ -714,7 +583,7 @@ void kgradius_state::kgradius(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1420, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1420-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -724,19 +593,6 @@ void kgradius_state::kgradius(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( kgradius )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "771.program", 0x0000, 0x1000, CRC(830c2afc) SHA1(bb9ebd4e52831cc02cd92dd4b37675f34cf37b8c) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "771.melody", 0x000, 0x100, CRC(4c586b73) SHA1(14c5ab2898013a577f678970a648c374749cc66d) )
-
- ROM_REGION( 638097, "svg", 0)
- ROM_LOAD( "kgradius.svg", 0, 638097, CRC(3adbc0f1) SHA1(fe426bf2335ce30395ea14ecab6399a93c67816a) )
-ROM_END
-
@@ -753,9 +609,11 @@ ROM_END
class kloneran_state : public hh_sm510_state
{
public:
- kloneran_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ kloneran_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 2;
+ }
void kloneran(machine_config &config);
};
@@ -793,7 +651,7 @@ void kloneran_state::kloneran(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1497, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1497-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -803,19 +661,6 @@ void kloneran_state::kloneran(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( kloneran )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "781.program", 0x0000, 0x1000, CRC(52b9735f) SHA1(06c5ef6e7e781b1176d4c1f2445f765ccf18b3f7) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "781.melody", 0x000, 0x100, CRC(a393de36) SHA1(55089f04833ccb318524ab2b584c4817505f4019) )
-
- ROM_REGION( 633120, "svg", 0)
- ROM_LOAD( "kloneran.svg", 0, 633120, CRC(f55e5292) SHA1(d0a91b5cd8a1894e7abc9c505fff4a8e1d3bec7a) )
-ROM_END
-
@@ -832,9 +677,11 @@ ROM_END
class kblades_state : public hh_sm510_state
{
public:
- kblades_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ kblades_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 3;
+ }
void kblades(machine_config &config);
};
@@ -876,8 +723,7 @@ void kblades_state::kblades(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1516, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1516-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -886,19 +732,6 @@ void kblades_state::kblades(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( kblades )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "782.program", 0x0000, 0x1000, CRC(3351a35d) SHA1(84c64b65d3cabfa20c18f4649c9ede2578b82523) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "782.melody", 0x000, 0x100, CRC(e8bf48ba) SHA1(3852c014dc9136566322b4f9e2aab0e3ec3a7387) )
-
- ROM_REGION( 455113, "svg", 0)
- ROM_LOAD( "kblades.svg", 0, 455113, CRC(e22f44c8) SHA1(ac95a837e20f87f3afc6c234f7407cbfcc438011) )
-ROM_END
-
@@ -917,9 +750,11 @@ ROM_END
class knfl_state : public hh_sm510_state
{
public:
- knfl_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ knfl_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 3;
+ }
void knfl(machine_config &config);
};
@@ -961,8 +796,7 @@ void knfl_state::knfl(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1449, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1449-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -971,19 +805,6 @@ void knfl_state::knfl(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( knfl )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "786.program", 0x0000, 0x1000, CRC(0535c565) SHA1(44cdcd284713ff0b194b24beff9f1b94c8bc63b2) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "786.melody", 0x000, 0x100, CRC(6c80263b) SHA1(d3c21e2f8491fef101907b8e0871b1e1c1ed58f5) )
-
- ROM_REGION( 571134, "svg", 0)
- ROM_LOAD( "knfl.svg", 0, 571134, CRC(f2c63235) SHA1(70b9232700f5498d3c63c63dd5904c0e19482cc2) )
-ROM_END
-
@@ -999,9 +820,11 @@ ROM_END
class kbilly_state : public hh_sm510_state
{
public:
- kbilly_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ kbilly_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 3;
+ }
void kbilly(machine_config &config);
};
@@ -1045,8 +868,7 @@ void kbilly_state::kbilly(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1490, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1490-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1055,19 +877,6 @@ void kbilly_state::kbilly(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( kbilly )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "788.program", 0x0000, 0x1000, CRC(b8b1f734) SHA1(619dd527187b43276d081cdb1b13e0a9a81f2c6a) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "788.melody", 0x000, 0x100, CRC(cd488bea) SHA1(8fc60081f46e392978d6950c74711fb7ebd154de) )
-
- ROM_REGION( 598276, "svg", 0)
- ROM_LOAD( "kbilly.svg", 0, 598276, CRC(2969319e) SHA1(5cd1b0a6eee3168142c1d24f167b9ef38ad88402) )
-ROM_END
-
@@ -1083,9 +892,11 @@ ROM_END
class kbucky_state : public hh_sm510_state
{
public:
- kbucky_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ kbucky_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 2;
+ }
void kbucky(machine_config &config);
};
@@ -1123,8 +934,7 @@ void kbucky_state::kbucky(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1490, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1490-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1133,19 +943,6 @@ void kbucky_state::kbucky(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( kbucky )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "n58.program", 0x0000, 0x1000, CRC(7c36a0c4) SHA1(1b55ac64a71af746fd0a0f44266fcc92cca77482) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "n58.melody", 0x000, 0x100, CRC(7e99e469) SHA1(3e9a3843c6ab392f5989f3366df87a2d26cb8620) )
-
- ROM_REGION( 727841, "svg", 0)
- ROM_LOAD( "kbucky.svg", 0, 727841, CRC(c1d78488) SHA1(9ba4fdbce977455b8f1ad4bd2b01faa44bd05bc7) )
-ROM_END
-
@@ -1161,9 +958,11 @@ ROM_END
class kgarfld_state : public hh_sm510_state
{
public:
- kgarfld_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ kgarfld_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 3;
+ }
void kgarfld(machine_config &config);
};
@@ -1205,187 +1004,7 @@ void kgarfld_state::kgarfld(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1500, 1080);
- screen.set_visarea_full();
-
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker);
- m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-// roms
-
-ROM_START( kgarfld )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "n62.program", 0x0000, 0x1000, CRC(5a762049) SHA1(26d4d891160d254dfd752734e1047126243f88dd) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "n62.melody", 0x000, 0x100, CRC(232b7d55) SHA1(76f6a19e8182ee3f00c9f4ef007b5dde75a9c00d) )
-
- ROM_REGION( 581107, "svg", 0)
- ROM_LOAD( "kgarfld.svg", 0, 581107, CRC(bf09a170) SHA1(075cb95535873018409eb15675183490c61b29b9) )
-ROM_END
-
-
-
-
-
-/***************************************************************************
-
- Nintendo Game & Watch: Parachute (model PR-21)
- * PCB label PR-21Y
- * Sharp SM5A label PR-21 52XC (no decap)
- * lcd screen with custom segments, 1-bit sound
-
-***************************************************************************/
-
-class gnw_pchute_state : public hh_sm510_state
-{
-public:
- gnw_pchute_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
-
- void gnw_pchute(machine_config &config);
-};
-
-// config
-
-static INPUT_PORTS_START( gnw_pchute )
- PORT_START("IN.0") // R2
- PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("IN.1") // R3
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) // * Infinite lives cheat here, but configuring it is weird:
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) // * One of the R3 inputs needs to be held down, followed
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) // * by pressing ACL, then release.
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) // alarm test?
-
- PORT_START("IN.2") // R4
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Time")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game B")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game A")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm")
-
- PORT_START("BA")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
-
- PORT_START("B")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
-
- PORT_START("ACL")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
-INPUT_PORTS_END
-
-void gnw_pchute_state::gnw_pchute(machine_config &config)
-{
- /* basic machine hardware */
- SM5A(config, m_maincpu);
- m_maincpu->set_r_mask_option(sm510_base_device::RMASK_DIRECT); // confirmed
- m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm500_lcd_segment_w));
- m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r));
- m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_input_w));
- m_maincpu->read_ba().set_ioport("BA");
- m_maincpu->read_b().set_ioport("B");
-
- /* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
- screen.set_svg_region("svg");
- screen.set_refresh_hz(50);
- screen.set_size(1602, 1080);
- screen.set_visarea_full();
-
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker);
- m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-// roms
-
-ROM_START( gnw_pchute )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "pr-21", 0x0000, 0x0740, CRC(392b545e) SHA1(e71940cd4cee07ba1e62c1c7d9e9b19410e7232d) )
-
- ROM_REGION( 169486, "svg", 0)
- ROM_LOAD( "gnw_pchute.svg", 0, 169486, CRC(bf86e0f9) SHA1(d2fba49453afc4bd1f16613f833a8748b6a36764) )
-ROM_END
-
-
-
-
-
-/***************************************************************************
-
- Nintendo Game & Watch: Octopus (model OC-22)
- * PCB label OC-22Y A
- * Sharp SM5A label OC-22 204A (no decap)
- * lcd screen with custom segments, 1-bit sound
-
-***************************************************************************/
-
-class gnw_octopus_state : public hh_sm510_state
-{
-public:
- gnw_octopus_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
-
- void gnw_octopus(machine_config &config);
-};
-
-// config
-
-static INPUT_PORTS_START( gnw_octopus )
- PORT_START("IN.0") // R2
- PORT_CONFNAME( 0x01, 0x00, "Invincibility (Cheat)")
- PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
- PORT_CONFSETTING( 0x01, DEF_STR( On ) )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) // same as 0x01?
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) // "
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) // "
-
- PORT_START("IN.1") // R3
- PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNUSED ) // alarm test?
-
- PORT_START("IN.2") // R4
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Time")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game B")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game A")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm")
-
- PORT_START("BA")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
-
- PORT_START("B")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
-
- PORT_START("ACL")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
-INPUT_PORTS_END
-
-void gnw_octopus_state::gnw_octopus(machine_config &config)
-{
- /* basic machine hardware */
- SM5A(config, m_maincpu);
- m_maincpu->set_r_mask_option(sm510_base_device::RMASK_DIRECT); // confirmed
- m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm500_lcd_segment_w));
- m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r));
- m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_input_w));
- m_maincpu->read_ba().set_ioport("BA");
- m_maincpu->read_b().set_ioport("B");
-
- /* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
- screen.set_svg_region("svg");
- screen.set_refresh_hz(50);
- screen.set_size(1586, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1500-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1394,16 +1013,6 @@ void gnw_octopus_state::gnw_octopus(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gnw_octopus )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "oc-22", 0x0000, 0x0740, CRC(bd27781d) SHA1(07b4feb9265c83b159f96c7e8ee1c61a2cc17dc5) )
-
- ROM_REGION( 119681, "svg", 0)
- ROM_LOAD( "gnw_octopus.svg", 0, 119681, CRC(39900430) SHA1(61b71c475365966257f5479eab992538ec235c11) )
-ROM_END
-
@@ -1428,9 +1037,11 @@ ROM_END
class gnw_mmouse_state : public hh_sm510_state
{
public:
- gnw_mmouse_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ gnw_mmouse_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 3;
+ }
void exospace(machine_config &config);
void nupogodi(machine_config &config);
@@ -1487,7 +1098,7 @@ void gnw_mmouse_state::gnw_mmouse(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1711, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1711-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -1502,9 +1113,8 @@ void gnw_mmouse_state::gnw_egg(machine_config &config)
gnw_mmouse(config);
/* video hardware */
- screen_device *screen = subdevice<screen_device>("screen");
- screen->set_size(1694, 1080);
- screen->set_visarea_full();
+ subdevice<screen_device>("screen")->set_size(1694, 1080);
+ subdevice<screen_device>("screen")->set_visarea(0, 1694-1, 0, 1080-1);
}
void gnw_mmouse_state::nupogodi(machine_config &config)
@@ -1520,9 +1130,8 @@ void gnw_mmouse_state::nupogodi(machine_config &config)
m_maincpu->read_ba().set_ioport("BA");
/* video hardware */
- screen_device *screen = subdevice<screen_device>("screen");
- screen->set_size(1715, 1080);
- screen->set_visarea_full();
+ subdevice<screen_device>("screen")->set_size(1715, 1080);
+ subdevice<screen_device>("screen")->set_visarea(0, 1715-1, 0, 1080-1);
}
void gnw_mmouse_state::exospace(machine_config &config)
@@ -1530,404 +1139,10 @@ void gnw_mmouse_state::exospace(machine_config &config)
nupogodi(config);
/* video hardware */
- screen_device *screen = subdevice<screen_device>("screen");
- screen->set_size(1756, 1080);
- screen->set_visarea_full();
-}
-
-// roms
-
-ROM_START( gnw_mmouse )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mc-25", 0x0000, 0x0740, BAD_DUMP CRC(cb820c32) SHA1(7e94fc255f32db725d5aa9e196088e490c1a1443) ) // dumped from Soviet clone
-
- ROM_REGION( 102453, "svg", 0)
- ROM_LOAD( "gnw_mmouse.svg", 0, 102453, BAD_DUMP CRC(88cc7c49) SHA1(c000d51d1b99750116b97f9bafc0314ea506366d) )
-ROM_END
-
-ROM_START( gnw_egg )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "eg-26", 0x0000, 0x0740, BAD_DUMP CRC(cb820c32) SHA1(7e94fc255f32db725d5aa9e196088e490c1a1443) ) // dumped from Soviet clone
-
- ROM_REGION( 102848, "svg", 0)
- ROM_LOAD( "gnw_egg.svg", 0, 102848, BAD_DUMP CRC(742c2605) SHA1(984d430ad2ff47ad7a3f9b25b7d3f3d51b10cca5) )
-ROM_END
-
-ROM_START( nupogodi )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "nupogodi.bin", 0x0000, 0x0740, CRC(cb820c32) SHA1(7e94fc255f32db725d5aa9e196088e490c1a1443) )
-
- ROM_REGION( 156974, "svg", 0)
- ROM_LOAD( "nupogodi.svg", 0, 156974, CRC(8d522ec6) SHA1(67afeca5eebd16449353ea43070a6b919f7ba408) )
-ROM_END
-
-ROM_START( exospace )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "exospace.bin", 0x0000, 0x0740, CRC(553e2b09) SHA1(2b74f8437b881fbb62b61f25435a5bfc66872a9a) )
-
- ROM_REGION( 66790, "svg", 0)
- ROM_LOAD( "exospace.svg", 0, 66790, BAD_DUMP CRC(df31043a) SHA1(2d8caf42894df699e469652e5f448beaebbcc1ae) )
-ROM_END
-
-
-
-
-
-/***************************************************************************
-
- Nintendo Game & Watch: Fire (model FR-27)
- * PCB label FR-27
- * Sharp SM5A label FR-27 523B (no decap)
- * lcd screen with custom segments, 1-bit sound
-
- This is the wide screen version, there's also a silver version.
- Also copied by Elektronika as "Space Bridge", with different LCD.
-
-***************************************************************************/
-
-class gnw_fire_state : public hh_sm510_state
-{
-public:
- gnw_fire_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
-
- void gnw_fire(machine_config &config);
-};
-
-// config
-
-static INPUT_PORTS_START( gnw_fire )
- PORT_START("IN.0") // R2
- PORT_CONFNAME( 0x01, 0x00, "Infinite Lives (Cheat)")
- PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
- PORT_CONFSETTING( 0x01, DEF_STR( On ) )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) // same as 0x01?
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) // reset?
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) // alarm test?
-
- PORT_START("IN.1") // R3
- PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNUSED ) // lcd test?
-
- PORT_START("IN.2") // R4
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Time")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game B")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game A")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm")
-
- PORT_START("BA")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
-
- PORT_START("B")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
-
- PORT_START("ACL")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
-INPUT_PORTS_END
-
-void gnw_fire_state::gnw_fire(machine_config &config)
-{
- /* basic machine hardware */
- SM5A(config, m_maincpu);
- m_maincpu->set_r_mask_option(sm510_base_device::RMASK_DIRECT); // confirmed
- m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm500_lcd_segment_w));
- m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r));
- m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_input_w));
- m_maincpu->read_ba().set_ioport("BA");
- m_maincpu->read_b().set_ioport("B");
-
- /* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
- screen.set_svg_region("svg");
- screen.set_refresh_hz(50);
- screen.set_size(1624, 1080);
- screen.set_visarea_full();
-
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker);
- m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-// roms
-
-ROM_START( gnw_fire )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "fr-27", 0x0000, 0x0740, CRC(f4c53ef0) SHA1(6b57120a0f9d2fd4dcd65ad57a5f32def71d905f) )
-
- ROM_REGION( 163753, "svg", 0)
- ROM_LOAD( "gnw_fire.svg", 0, 163753, CRC(d546fa42) SHA1(492c785aa0ed33ff1ac8c84066e5b6d7cb7d1566) )
-ROM_END
-
-
-
-
-
-/***************************************************************************
-
- Nintendo Game & Watch: Turtle Bridge (model TL-28)
- * PCB label TL-28
- * Sharp SM510 label TL-28 523C (no decap)
- * lcd screen with custom segments, 1-bit sound
-
-***************************************************************************/
-
-class gnw_tbridge_state : public hh_sm510_state
-{
-public:
- gnw_tbridge_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
-
- void gnw_tbridge(machine_config &config);
-};
-
-// config
-
-static INPUT_PORTS_START( gnw_tbridge )
- PORT_START("IN.0") // S1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
-
- PORT_START("IN.1") // S2
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Time")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game B")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game A")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm")
-
- PORT_START("ACL")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
-
- PORT_START("BA") // MCU BA(alpha) pin pulled to GND
- PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)")
- PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
- PORT_CONFSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("B") // MCU B(beta) pin pulled to GND
- PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)")
- PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
- PORT_CONFSETTING( 0x00, DEF_STR( On ) )
-INPUT_PORTS_END
-
-void gnw_tbridge_state::gnw_tbridge(machine_config &config)
-{
- /* basic machine hardware */
- SM510(config, m_maincpu);
- m_maincpu->set_r_mask_option(2); // confirmed
- m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w));
- m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r));
- m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w));
- m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w));
- m_maincpu->read_ba().set_ioport("BA");
- m_maincpu->read_b().set_ioport("B");
-
- /* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
- screen.set_svg_region("svg");
- screen.set_refresh_hz(50);
- screen.set_size(1587, 1080);
- screen.set_visarea_full();
-
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker);
- m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-// roms
-
-ROM_START( gnw_tbridge )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "tl-28", 0x0000, 0x1000, CRC(284e7224) SHA1(b50d7f3a527ffe50771ef55fdf8214929bfa2253) )
-
- ROM_REGION( 242781, "svg", 0)
- ROM_LOAD( "gnw_tbridge.svg", 0, 242781, CRC(c0473e53) SHA1(bb43f12f517a3b657b5b35b50baf176e01ce041d) )
-ROM_END
-
-
-
-
-
-/***************************************************************************
-
- Nintendo Game & Watch: Fire Attack (model ID-29)
- * PCB label ID-29
- * Sharp SM510 label ID-29 524B (no decap)
- * lcd screen with custom segments, 1-bit sound
-
-***************************************************************************/
-
-class gnw_fireatk_state : public hh_sm510_state
-{
-public:
- gnw_fireatk_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
-
- void gnw_fireatk(machine_config &config);
-};
-
-// config
-
-static INPUT_PORTS_START( gnw_fireatk )
- PORT_START("IN.0") // S1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
-
- PORT_START("IN.1") // S2
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Time")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game B")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game A")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm")
-
- PORT_START("ACL")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
-
- PORT_START("BA") // MCU BA(alpha) pin pulled to GND
- PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)")
- PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
- PORT_CONFSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("B") // MCU B(beta) pin pulled to GND
- PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)")
- PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
- PORT_CONFSETTING( 0x00, DEF_STR( On ) )
-INPUT_PORTS_END
-
-void gnw_fireatk_state::gnw_fireatk(machine_config &config)
-{
- /* basic machine hardware */
- SM510(config, m_maincpu);
- m_maincpu->set_r_mask_option(2); // confirmed
- m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w));
- m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r));
- m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w));
- m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w));
- m_maincpu->read_ba().set_ioport("BA");
- m_maincpu->read_b().set_ioport("B");
-
- /* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
- screen.set_svg_region("svg");
- screen.set_refresh_hz(50);
- screen.set_size(1655, 1080);
- screen.set_visarea_full();
-
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker);
- m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-// roms
-
-ROM_START( gnw_fireatk )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "id-29", 0x0000, 0x1000, CRC(5f6e8042) SHA1(63afc3acd8a2a996095fa8ba2dfccd48e5214478) )
-
- ROM_REGION( 267755, "svg", 0)
- ROM_LOAD( "gnw_fireatk.svg", 0, 267755, CRC(b13ee452) SHA1(4d1e7e10fd2352bdd805c25de8c0e16bcd8b2220) )
-ROM_END
-
-
-
-
-
-/***************************************************************************
-
- Nintendo Game & Watch: Snoopy Tennis (model SP-30)
- * PCB label SP-30
- * Sharp SM510 label SP-30 525B (no decap)
- * lcd screen with custom segments, 1-bit sound
-
-***************************************************************************/
-
-class gnw_stennis_state : public hh_sm510_state
-{
-public:
- gnw_stennis_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
-
- void gnw_stennis(machine_config &config);
-};
-
-// config
-
-static INPUT_PORTS_START( gnw_stennis )
- PORT_START("IN.0") // S1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // Hit
-
- PORT_START("IN.1") // S2
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Time")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game B")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game A")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm")
-
- PORT_START("ACL")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
-
- PORT_START("BA") // MCU BA(alpha) pin pulled to GND
- PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)")
- PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
- PORT_CONFSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("B") // MCU B(beta) pin pulled to GND
- PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)")
- PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
- PORT_CONFSETTING( 0x00, DEF_STR( On ) )
-INPUT_PORTS_END
-
-void gnw_stennis_state::gnw_stennis(machine_config &config)
-{
- /* basic machine hardware */
- SM510(config, m_maincpu);
- m_maincpu->set_r_mask_option(2); // confirmed
- m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w));
- m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r));
- m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w));
- m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w));
- m_maincpu->read_ba().set_ioport("BA");
- m_maincpu->read_b().set_ioport("B");
-
- /* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
- screen.set_svg_region("svg");
- screen.set_refresh_hz(50);
- screen.set_size(1581, 1080);
- screen.set_visarea_full();
-
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker);
- m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
+ subdevice<screen_device>("screen")->set_size(1756, 1080);
+ subdevice<screen_device>("screen")->set_visarea(0, 1756-1, 0, 1080-1);
}
-// roms
-
-ROM_START( gnw_stennis )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "sp-30", 0x0000, 0x1000, CRC(ba1d9504) SHA1(ff601765d88564b1570a59f5b1a4005c7b0fd66c) )
-
- ROM_REGION( 227964, "svg", 0)
- ROM_LOAD( "gnw_stennis.svg", 0, 227964, CRC(1bb5f99a) SHA1(2e999c75598448e3502e7bab16e987d80d6a301f) )
-ROM_END
-
@@ -1944,9 +1159,11 @@ ROM_END
class gnw_opanic_state : public hh_sm510_state
{
public:
- gnw_opanic_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ gnw_opanic_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 2;
+ }
void gnw_opanic(machine_config &config);
};
@@ -1997,13 +1214,13 @@ void gnw_opanic_state::gnw_opanic(machine_config &config)
screen_top.set_svg_region("svg_top");
screen_top.set_refresh_hz(50);
screen_top.set_size(1920/2, 1292/2);
- screen_top.set_visarea_full();
+ screen_top.set_visarea(0, 1920/2-1, 0, 1292/2-1);
screen_device &screen_bottom(SCREEN(config, "screen_bottom", SCREEN_TYPE_SVG));
screen_bottom.set_svg_region("svg_bottom");
screen_bottom.set_refresh_hz(50);
screen_bottom.set_size(1920/2, 1230/2);
- screen_bottom.set_visarea_full();
+ screen_bottom.set_visarea(0, 1920/2-1, 0, 1230/2-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_gnw_dualv);
@@ -2014,19 +1231,6 @@ void gnw_opanic_state::gnw_opanic(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gnw_opanic )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "op-51", 0x0000, 0x1000, CRC(31c288c9) SHA1(4bfd0fba94a9927cefc925db8196b063c5dd9b19) )
-
- ROM_REGION( 79616, "svg_top", 0)
- ROM_LOAD( "gnw_opanic_top.svg", 0, 79616, CRC(208dccc5) SHA1(b3cd3dcc8a00ba3b1b8d93d902f756fe579e4dfc) )
-
- ROM_REGION( 112809, "svg_bottom", 0)
- ROM_LOAD( "gnw_opanic_bottom.svg", 0, 112809, CRC(919b9649) SHA1(f3d3c8ca3fed81782a1fcb5a7aff07faea86db07) )
-ROM_END
-
@@ -2043,9 +1247,11 @@ ROM_END
class gnw_dkong_state : public hh_sm510_state
{
public:
- gnw_dkong_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ gnw_dkong_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 3;
+ }
void gnw_dkong(machine_config &config);
};
@@ -2094,13 +1300,13 @@ void gnw_dkong_state::gnw_dkong(machine_config &config)
screen_top.set_svg_region("svg_top");
screen_top.set_refresh_hz(50);
screen_top.set_size(1920/2, 1266/2);
- screen_top.set_visarea_full();
+ screen_top.set_visarea(0, 1920/2-1, 0, 1266/2-1);
screen_device &screen_bottom(SCREEN(config, "screen_bottom", SCREEN_TYPE_SVG));
screen_bottom.set_svg_region("svg_bottom");
screen_bottom.set_refresh_hz(50);
screen_bottom.set_size(1920/2, 1266/2);
- screen_bottom.set_visarea_full();
+ screen_bottom.set_visarea(0, 1920/2-1, 0, 1266/2-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_gnw_dualv);
@@ -2111,19 +1317,6 @@ void gnw_dkong_state::gnw_dkong(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gnw_dkong )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "dk-52", 0x0000, 0x1000, CRC(5180cbf8) SHA1(5174570a8d6a601226f51e972bac6735535fe11d) )
-
- ROM_REGION( 176706, "svg_top", 0)
- ROM_LOAD( "gnw_dkong_top.svg", 0, 176706, CRC(db041556) SHA1(fb0f979dea3ecd25288d341fa80e35b5fd0a8349) )
-
- ROM_REGION( 145397, "svg_bottom", 0)
- ROM_LOAD( "gnw_dkong_bottom.svg", 0, 145397, CRC(2c8c9d08) SHA1(658fd0bbccaabb0645b02e5cb81709c4b2a4250e) )
-ROM_END
-
@@ -2140,9 +1333,11 @@ ROM_END
class gnw_mickdon_state : public hh_sm510_state
{
public:
- gnw_mickdon_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ gnw_mickdon_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 2;
+ }
void gnw_mickdon(machine_config &config);
};
@@ -2187,13 +1382,13 @@ void gnw_mickdon_state::gnw_mickdon(machine_config &config)
screen_top.set_svg_region("svg_top");
screen_top.set_refresh_hz(50);
screen_top.set_size(1920/2, 1281/2);
- screen_top.set_visarea_full();
+ screen_top.set_visarea(0, 1920/2-1, 0, 1281/2-1);
screen_device &screen_bottom(SCREEN(config, "screen_bottom", SCREEN_TYPE_SVG));
screen_bottom.set_svg_region("svg_bottom");
screen_bottom.set_refresh_hz(50);
screen_bottom.set_size(1920/2, 1236/2);
- screen_bottom.set_visarea_full();
+ screen_bottom.set_visarea(0, 1920/2-1, 0, 1236/2-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_gnw_dualv);
@@ -2204,19 +1399,6 @@ void gnw_mickdon_state::gnw_mickdon(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gnw_mickdon )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "dm-53_565", 0x0000, 0x1000, CRC(e21fc0f5) SHA1(3b65ccf9f98813319410414e11a3231b787cdee6) )
-
- ROM_REGION( 126434, "svg_top", 0)
- ROM_LOAD( "gnw_mickdon_top.svg", 0, 126434, CRC(ff05f489) SHA1(2a533c7b5d7249d79f8d7795a0d57fd3e32d3d32) )
-
- ROM_REGION( 122870, "svg_bottom", 0)
- ROM_LOAD( "gnw_mickdon_bottom.svg", 0, 122870, CRC(8f06ddf1) SHA1(69d4b785781600abcdfc01b3902df1d0ae3608cf) )
-ROM_END
-
@@ -2233,9 +1415,11 @@ ROM_END
class gnw_ghouse_state : public hh_sm510_state
{
public:
- gnw_ghouse_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ gnw_ghouse_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 3;
+ }
void gnw_ghouse(machine_config &config);
};
@@ -2290,13 +1474,13 @@ void gnw_ghouse_state::gnw_ghouse(machine_config &config)
screen_top.set_svg_region("svg_top");
screen_top.set_refresh_hz(50);
screen_top.set_size(1920/2, 1303/2);
- screen_top.set_visarea_full();
+ screen_top.set_visarea(0, 1920/2-1, 0, 1303/2-1);
screen_device &screen_bottom(SCREEN(config, "screen_bottom", SCREEN_TYPE_SVG));
screen_bottom.set_svg_region("svg_bottom");
screen_bottom.set_refresh_hz(50);
screen_bottom.set_size(1920/2, 1274/2);
- screen_bottom.set_visarea_full();
+ screen_bottom.set_visarea(0, 1920/2-1, 0, 1274/2-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_gnw_dualv);
@@ -2307,19 +1491,6 @@ void gnw_ghouse_state::gnw_ghouse(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gnw_ghouse )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "gh-54", 0x0000, 0x1000, CRC(4df12b4d) SHA1(708be5fef8dbd9337f5ab35baaca5bdf21e1f36c) )
-
- ROM_REGION( 159098, "svg_top", 0)
- ROM_LOAD( "gnw_ghouse_top.svg", 0, 159098, CRC(96bc58d9) SHA1(eda6a0abde739fb71af3e150751a519e59ef021d) )
-
- ROM_REGION( 149757, "svg_bottom", 0)
- ROM_LOAD( "gnw_ghouse_bottom.svg", 0, 149757, CRC(d66ee72c) SHA1(dcbe1c81ee0c7ddb9692858749ce6934f4dd7f30) )
-ROM_END
-
@@ -2336,9 +1507,11 @@ ROM_END
class gnw_dkong2_state : public hh_sm510_state
{
public:
- gnw_dkong2_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ gnw_dkong2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 3;
+ }
void gnw_dkong2(machine_config &config);
};
@@ -2387,13 +1560,13 @@ void gnw_dkong2_state::gnw_dkong2(machine_config &config)
screen_top.set_svg_region("svg_top");
screen_top.set_refresh_hz(50);
screen_top.set_size(1920/2, 1241/2);
- screen_top.set_visarea_full();
+ screen_top.set_visarea(0, 1920/2-1, 0, 1241/2-1);
screen_device &screen_bottom(SCREEN(config, "screen_bottom", SCREEN_TYPE_SVG));
- screen_bottom.set_svg_region("svg_bottom");
+ screen_bottom.set_svg_region("svg_top");
screen_bottom.set_refresh_hz(50);
screen_bottom.set_size(1920/2, 1237/2);
- screen_bottom.set_visarea_full();
+ screen_bottom.set_visarea(0, 1920/2-1, 0, 1237/2-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_gnw_dualv);
@@ -2404,19 +1577,6 @@ void gnw_dkong2_state::gnw_dkong2(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gnw_dkong2 )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "jr-55_560", 0x0000, 0x1000, CRC(46aed0ae) SHA1(72f75ccbd84aea094148c872fc7cc1683619a18a) )
-
- ROM_REGION( 267443, "svg_top", 0)
- ROM_LOAD( "gnw_dkong2_top.svg", 0, 267443, CRC(33b26edb) SHA1(600afdf22ff4ac4a4af2de9159287cc6e53dfe3a) )
-
- ROM_REGION( 390558, "svg_bottom", 0)
- ROM_LOAD( "gnw_dkong2_bottom.svg", 0, 390558, CRC(92d68958) SHA1(aba829bf89b93bf3a4e425c9a8f6eec9e5869bc4) )
-ROM_END
-
@@ -2433,9 +1593,11 @@ ROM_END
class gnw_mario_state : public hh_sm510_state
{
public:
- gnw_mario_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ gnw_mario_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 2;
+ }
void gnw_mario(machine_config &config);
};
@@ -2486,217 +1648,13 @@ void gnw_mario_state::gnw_mario(machine_config &config)
screen_left.set_svg_region("svg_left");
screen_left.set_refresh_hz(50);
screen_left.set_size(2258/2, 1440/2);
- screen_left.set_visarea_full();
+ screen_left.set_visarea(0, 2258/2-1, 0, 1440/2-1);
screen_device &screen_right(SCREEN(config, "screen_right", SCREEN_TYPE_SVG));
screen_right.set_svg_region("svg_right");
screen_right.set_refresh_hz(50);
screen_right.set_size(2261/2, 1440/2);
- screen_right.set_visarea_full();
-
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_gnw_dualh);
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker);
- m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-// roms
-
-ROM_START( gnw_mario )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mw-56", 0x0000, 0x1000, CRC(385e59da) SHA1(2f79281bdf2f2afca2fb5bd7b9a3beeffc9c4eb7) )
-
- ROM_REGION( 154874, "svg_left", 0)
- ROM_LOAD( "gnw_mario_left.svg", 0, 154874, CRC(73ba4f4a) SHA1(d5df39808a1af8e8ad5e397b4a50313221ab6e3b) )
-
- ROM_REGION( 202863, "svg_right", 0)
- ROM_LOAD( "gnw_mario_right.svg", 0, 202863, CRC(dd2473c9) SHA1(51aca37abf8e4959b84c441aa2d114e16c7d6010) )
-ROM_END
-
-
-
-
-
-/***************************************************************************
-
- Nintendo Game & Watch: Rain Shower (model LP-57)
- * PCB labels: LP-57-M-I (left), LP-57-S (right)
- * Sharp SM510 label LP-57 538A (no decap)
- * horizontal dual lcd screens with custom segments, 1-bit sound
-
-***************************************************************************/
-
-class gnw_rshower_state : public hh_sm510_state
-{
-public:
- gnw_rshower_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
-
- void gnw_rshower(machine_config &config);
-};
-
-// config
-
-static INPUT_PORTS_START( gnw_rshower )
- PORT_START("IN.0") // S1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Time")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // L/R
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("IN.1") // S2
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game B")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game A")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm")
-
- PORT_START("IN.2") // S3
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
-
- PORT_START("ACL")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
-
- PORT_START("BA") // MCU BA(alpha) pin pulled to GND
- PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)")
- PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
- PORT_CONFSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("B") // MCU B(beta) pin pulled to GND
- PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)")
- PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
- PORT_CONFSETTING( 0x00, DEF_STR( On ) )
-INPUT_PORTS_END
-
-void gnw_rshower_state::gnw_rshower(machine_config &config)
-{
- /* basic machine hardware */
- SM510(config, m_maincpu);
- m_maincpu->set_r_mask_option(2); // confirmed
- m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w));
- m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r));
- m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w));
- m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w));
- m_maincpu->read_ba().set_ioport("BA");
- m_maincpu->read_b().set_ioport("B");
-
- /* video hardware */
- screen_device &screen_left(SCREEN(config, "screen_left", SCREEN_TYPE_SVG));
- screen_left.set_svg_region("svg_left");
- screen_left.set_refresh_hz(50);
- screen_left.set_size(2126/2, 1440/2);
- screen_left.set_visarea_full();
-
- screen_device &screen_right(SCREEN(config, "screen_right", SCREEN_TYPE_SVG));
- screen_right.set_svg_region("svg_right");
- screen_right.set_refresh_hz(50);
- screen_right.set_size(2146/2, 1440/2);
- screen_right.set_visarea_full();
-
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_gnw_dualh);
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker);
- m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-// roms
-
-ROM_START( gnw_rshower )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "lp-57", 0x0000, 0x1000, CRC(51a2c5c4) SHA1(d60542e6785ba7b6a44153a66c739787cf670816) )
-
- ROM_REGION( 135698, "svg_left", 0)
- ROM_LOAD( "gnw_rshower_left.svg", 0, 135698, CRC(f0b36d70) SHA1(252e5cc110112a874265477be11ab3adf8108726) )
-
- ROM_REGION( 140280, "svg_right", 0)
- ROM_LOAD( "gnw_rshower_right.svg", 0, 140280, CRC(0ce4d049) SHA1(7e1afa1fdbdf658a12a28192ba2d29e5fca807cb) )
-ROM_END
-
-
-
-
-
-/***************************************************************************
-
- Nintendo Game & Watch: Lifeboat (model TC-58)
- * PCB labels: TC-58-M (left), TC-58-S (right)
- * Sharp SM510 label TC-58 281D (no decap)
- * horizontal dual lcd screens with custom segments, 1-bit sound
-
-***************************************************************************/
-
-class gnw_lboat_state : public hh_sm510_state
-{
-public:
- gnw_lboat_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
-
- void gnw_lboat(machine_config &config);
-};
-
-// config
-
-static INPUT_PORTS_START( gnw_lboat )
- PORT_START("IN.0") // S1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("IN.1") // S2
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Time")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game B")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game A")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm")
-
- PORT_START("ACL")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
-
- PORT_START("BA") // MCU BA(alpha) pin pulled to GND
- PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)")
- PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
- PORT_CONFSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("B") // MCU B(beta) pin pulled to GND
- PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)")
- PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
- PORT_CONFSETTING( 0x00, DEF_STR( On ) )
-INPUT_PORTS_END
-
-void gnw_lboat_state::gnw_lboat(machine_config &config)
-{
- /* basic machine hardware */
- SM510(config, m_maincpu);
- m_maincpu->set_r_mask_option(2); // confirmed
- m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w));
- m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r));
- m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w));
- m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w));
- m_maincpu->read_ba().set_ioport("BA");
- m_maincpu->read_b().set_ioport("B");
-
- /* video hardware */
- screen_device &screen_left(SCREEN(config, "screen_left", SCREEN_TYPE_SVG));
- screen_left.set_svg_region("svg_left");
- screen_left.set_refresh_hz(50);
- screen_left.set_size(2116/2, 1440/2);
- screen_left.set_visarea_full();
-
- screen_device &screen_right(SCREEN(config, "screen_right", SCREEN_TYPE_SVG));
- screen_right.set_svg_region("svg_right");
- screen_right.set_refresh_hz(50);
- screen_right.set_size(2057/2, 1440/2);
- screen_right.set_visarea_full();
+ screen_right.set_visarea(0, 2261/2-1, 0, 1440/2-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_gnw_dualh);
@@ -2707,19 +1665,6 @@ void gnw_lboat_state::gnw_lboat(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gnw_lboat )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "tc-58", 0x0000, 0x1000, CRC(1f88f6a2) SHA1(22fd62127dda43a0ada2fe89b0518eec8cbe2a25) )
-
- ROM_REGION( 156272, "svg_left", 0)
- ROM_LOAD( "gnw_lboat_left.svg", 0, 156272, CRC(1f0c18bd) SHA1(ca11c83b4b4d6a91ecb0300cff392e010064ba25) )
-
- ROM_REGION( 155093, "svg_right", 0)
- ROM_LOAD( "gnw_lboat_right.svg", 0, 155093, CRC(6f68780a) SHA1(63488693fbb1a8ad4d59da9e4e003eef709926f9) )
-ROM_END
-
@@ -2736,9 +1681,11 @@ ROM_END
class gnw_bjack_state : public hh_sm510_state
{
public:
- gnw_bjack_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ gnw_bjack_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 2;
+ }
void gnw_bjack(machine_config &config);
};
@@ -2776,13 +1723,13 @@ void gnw_bjack_state::gnw_bjack(machine_config &config)
screen_top.set_svg_region("svg_top");
screen_top.set_refresh_hz(50);
screen_top.set_size(1920/2, 1290/2);
- screen_top.set_visarea_full();
+ screen_top.set_visarea(0, 1920/2-1, 0, 1290/2-1);
screen_device &screen_bottom(SCREEN(config, "screen_bottom", SCREEN_TYPE_SVG));
screen_bottom.set_svg_region("svg_bottom");
screen_bottom.set_refresh_hz(50);
screen_bottom.set_size(1920/2, 1297/2);
- screen_bottom.set_visarea_full();
+ screen_bottom.set_visarea(0, 1920/2-1, 0, 1297/2-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_gnw_dualv);
@@ -2793,22 +1740,6 @@ void gnw_bjack_state::gnw_bjack(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gnw_bjack )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "bj-60.program", 0x0000, 0x1000, CRC(8e74f633) SHA1(54b0f65ee716d2820a9ed9c743755d2a2d99ce4d) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "bj-60.melody", 0x000, 0x100, BAD_DUMP CRC(2619224e) SHA1(b65dc590b6eb1de793e980af236ccf8360b3cfee) ) // decap needed for verification
-
- ROM_REGION( 75217, "svg_top", 0)
- ROM_LOAD( "gnw_bjack_top.svg", 0, 75205, CRC(5eb0956e) SHA1(f7acd148e5478d4c2ddf06cff23c5e40faee2c24) )
-
- ROM_REGION( 112450, "svg_bottom", 0)
- ROM_LOAD( "gnw_bjack_bottom.svg", 0, 112438, CRC(9d985b1d) SHA1(cf8af6ce18994f687a5e6fbdda62af4d07a07cf8) )
-ROM_END
-
@@ -2825,9 +1756,11 @@ ROM_END
class gnw_squish_state : public hh_sm510_state
{
public:
- gnw_squish_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ gnw_squish_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 2;
+ }
void gnw_squish(machine_config &config);
};
@@ -2878,13 +1811,13 @@ void gnw_squish_state::gnw_squish(machine_config &config)
screen_top.set_svg_region("svg_top");
screen_top.set_refresh_hz(50);
screen_top.set_size(1920/2, 1285/2);
- screen_top.set_visarea_full();
+ screen_top.set_visarea(0, 1920/2-1, 0, 1285/2-1);
screen_device &screen_bottom(SCREEN(config, "screen_bottom", SCREEN_TYPE_SVG));
screen_bottom.set_svg_region("svg_bottom");
screen_bottom.set_refresh_hz(50);
screen_bottom.set_size(1920/2, 1287/2);
- screen_bottom.set_visarea_full();
+ screen_bottom.set_visarea(0, 1920/2-1, 0, 1287/2-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_gnw_dualv);
@@ -2895,19 +1828,6 @@ void gnw_squish_state::gnw_squish(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gnw_squish )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mg-61", 0x0000, 0x1000, CRC(79cd509c) SHA1(969e5425984ba9e5183c68b38b3588f53d1e8e5d) )
-
- ROM_REGION( 70300, "svg_top", 0)
- ROM_LOAD( "gnw_squish_top.svg", 0, 70300, CRC(f1358ba9) SHA1(414d29db64b83a50b20f31b857e4c3a77d19d3c8) )
-
- ROM_REGION( 279606, "svg_bottom", 0)
- ROM_LOAD( "gnw_squish_bottom.svg", 0, 279606, CRC(1d4ac23f) SHA1(d6eb78bae5ca18cc5fe5d8a300902766dd9601aa) )
-ROM_END
-
@@ -2926,9 +1846,11 @@ ROM_END
class gnw_dkjr_state : public hh_sm510_state
{
public:
- gnw_dkjr_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ gnw_dkjr_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 3;
+ }
void gnw_dkjr(machine_config &config);
};
@@ -2983,7 +1905,7 @@ void gnw_dkjr_state::gnw_dkjr(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1647, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1647-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -2993,16 +1915,6 @@ void gnw_dkjr_state::gnw_dkjr(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gnw_dkjr )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "dj-101", 0x0000, 0x1000, CRC(8dcfb5d1) SHA1(e0ef578e9362eb9a3cab631376df3cf55978f2de) )
-
- ROM_REGION( 281161, "svg", 0)
- ROM_LOAD( "gnw_dkjr.svg", 0, 281161, CRC(346b025c) SHA1(dad3f3f73d6c2ff4efb43ffd76e97ba0d5f0da73) )
-ROM_END
-
@@ -3020,9 +1932,11 @@ ROM_END
class gnw_mariocm_state : public hh_sm510_state
{
public:
- gnw_mariocm_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ gnw_mariocm_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 2;
+ }
void gnw_mariocm(machine_config &config);
};
@@ -3073,7 +1987,7 @@ void gnw_mariocm_state::gnw_mariocm(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1647, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1647-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -3083,107 +1997,6 @@ void gnw_mariocm_state::gnw_mariocm(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gnw_mariocm )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "ml-102_577", 0x0000, 0x1000, CRC(c1128dea) SHA1(8647e36f43a0e37756a3c7b6a3f08d4c8243f1cc) )
-
- ROM_REGION( 302931, "svg", 0)
- ROM_LOAD( "gnw_mariocm.svg", 0, 302931, CRC(5517ae80) SHA1(1902e36d0470ee5548addeb087ea3e7d2c2520a2) )
-ROM_END
-
-
-
-
-
-/***************************************************************************
-
- Nintendo Game & Watch: Manhole (model NH-103)
- * PCB label NH-103
- * Sharp SM510 label NH-103 538A (no decap)
- * lcd screen with custom segments, 1-bit sound
-
- This is the new wide screen version, there's also a Gold Series version (MH-06)
-
-***************************************************************************/
-
-class gnw_manhole_state : public hh_sm510_state
-{
-public:
- gnw_manhole_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
-
- void gnw_manhole(machine_config &config);
-};
-
-// config
-
-static INPUT_PORTS_START( gnw_manhole )
- PORT_START("IN.0") // S1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY
-
- PORT_START("IN.1") // S2
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Time")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game B")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game A")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm")
-
- PORT_START("ACL")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
-
- PORT_START("BA") // MCU BA(alpha) pin pulled to GND
- PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)")
- PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
- PORT_CONFSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("B") // MCU B(beta) pin pulled to GND
- PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)")
- PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
- PORT_CONFSETTING( 0x00, DEF_STR( On ) )
-INPUT_PORTS_END
-
-void gnw_manhole_state::gnw_manhole(machine_config &config)
-{
- /* basic machine hardware */
- SM510(config, m_maincpu);
- m_maincpu->set_r_mask_option(2); // confirmed
- m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w));
- m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r));
- m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w));
- m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w));
- m_maincpu->read_ba().set_ioport("BA");
- m_maincpu->read_b().set_ioport("B");
-
- /* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
- screen.set_svg_region("svg");
- screen.set_refresh_hz(50);
- screen.set_size(1560, 1080);
- screen.set_visarea_full();
-
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker);
- m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-// roms
-
-ROM_START( gnw_manhole )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "nh-103", 0x0000, 0x1000, CRC(ec03acf7) SHA1(b74ae672d8f8a155b2ea4ecee9afbaed95ec0ceb) )
-
- ROM_REGION( 223244, "svg", 0)
- ROM_LOAD( "gnw_manhole.svg", 0, 223244, CRC(41848e77) SHA1(d7238d1a3f95d8d274f5ff767ebf783bb50e64eb) )
-ROM_END
-
@@ -3200,9 +2013,11 @@ ROM_END
class gnw_tfish_state : public hh_sm510_state
{
public:
- gnw_tfish_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ gnw_tfish_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 2;
+ }
void gnw_tfish(machine_config &config);
};
@@ -3247,7 +2062,7 @@ void gnw_tfish_state::gnw_tfish(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1572, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1572-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -3257,16 +2072,6 @@ void gnw_tfish_state::gnw_tfish(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gnw_tfish )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "tf-104", 0x0000, 0x1000, CRC(53cde918) SHA1(bc1e1b8f8b282bb886bb076c1c7ce35d00eca6fc) )
-
- ROM_REGION( 257278, "svg", 0)
- ROM_LOAD( "gnw_tfish.svg", 0, 257278, CRC(fc970f4a) SHA1(a73f5ee35b60842707f13edc5d58869fb2ec98cf) )
-ROM_END
-
@@ -3274,7 +2079,6 @@ ROM_END
/***************************************************************************
Nintendo Game & Watch: Super Mario Bros. (model: see below)
- * PCB label YM-105
* Sharp SM511 label YM-105 9024B (new wide screen version) (die label ?)
* lcd screen with custom segments, 1-bit sound
@@ -3289,9 +2093,11 @@ ROM_END
class gnw_smb_state : public hh_sm510_state
{
public:
- gnw_smb_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ gnw_smb_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 3;
+ }
void gnw_smb(machine_config &config);
};
@@ -3339,7 +2145,7 @@ void gnw_smb_state::gnw_smb(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1677, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1677-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -3349,19 +2155,6 @@ void gnw_smb_state::gnw_smb(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gnw_smb )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "ym-105.program", 0x0000, 0x1000, CRC(0dff3b12) SHA1(3fa83f88e49ea9d7080fe935ec90ce69acbe8850) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "ym-105.melody", 0x000, 0x100, CRC(b48c6d90) SHA1(a1ce1e52627767752974ab0d49bec48ead36663e) )
-
- ROM_REGION( 648209, "svg", 0)
- ROM_LOAD( "gnw_smb.svg", 0, 648209, CRC(4a6fdb28) SHA1(0a0bc48d82d5b8bf8ef96ef9ce2f87ba6ea850c1) )
-ROM_END
-
@@ -3369,7 +2162,6 @@ ROM_END
/***************************************************************************
Nintendo Game & Watch: Climber (model: see below)
- * PCB label DR-106
* Sharp SM511 label DR-106 9038B (new wide screen version) (no decap)
* lcd screen with custom segments, 1-bit sound
@@ -3383,9 +2175,11 @@ ROM_END
class gnw_climber_state : public hh_sm510_state
{
public:
- gnw_climber_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ gnw_climber_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 3;
+ }
void gnw_climber(machine_config &config);
};
@@ -3433,7 +2227,7 @@ void gnw_climber_state::gnw_climber(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1677, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1677-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -3443,113 +2237,6 @@ void gnw_climber_state::gnw_climber(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gnw_climber )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "dr-106.program", 0x0000, 0x1000, CRC(2adcbd6d) SHA1(110dc08c65120ab2c76ee647e89aa2726e24ac1a) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "dr-106.melody", 0x000, 0x100, BAD_DUMP CRC(c99d7998) SHA1(4f8cf35b13f8b7654e7186bfd67d197d9053e949) ) // decap needed for verification
-
- ROM_REGION( 542332, "svg", 0)
- ROM_LOAD( "gnw_climber.svg", 0, 542332, CRC(d7e84c21) SHA1(a5b5b68c8cdb3a09966bfb91b281791bef311248) )
-ROM_END
-
-
-
-
-
-/***************************************************************************
-
- Nintendo Game & Watch: Balloon Fight (model: see below)
- * PCB label DR-106 (same PCB as in Climber (new wide screen version))
- * Sharp SM511 label BF-107 9031B (new wide screen version) (no decap)
- * lcd screen with custom segments, 1-bit sound
-
- First released in 1986 on Crystal Screen (model BF-803), rereleased on
- New Wide Screen in 1988 (model BF-107). The graphic LCD elements look the same
- in both versions but the graphical background is slightly different.
- Until further proof, it's assumed that the ROM is the same for both models.
-
-***************************************************************************/
-
-class gnw_bfight_state : public hh_sm510_state
-{
-public:
- gnw_bfight_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
-
- void gnw_bfight(machine_config &config);
-};
-
-// config
-
-static INPUT_PORTS_START( gnw_bfight )
- PORT_START("IN.0") // S1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Time")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("IN.1") // S2
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
-
- PORT_START("IN.2") // S3
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // Eject
- PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("ACL")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
-
- PORT_START("B") // MCU B(beta) pin pulled to GND
- PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)")
- PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
- PORT_CONFSETTING( 0x00, DEF_STR( On ) )
-INPUT_PORTS_END
-
-void gnw_bfight_state::gnw_bfight(machine_config &config)
-{
- /* basic machine hardware */
- SM511(config, m_maincpu);
- m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w));
- m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r));
- m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w));
- m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w));
- m_maincpu->read_b().set_ioport("B");
-
- /* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
- screen.set_svg_region("svg");
- screen.set_refresh_hz(50);
- screen.set_size(1549, 1080);
- screen.set_visarea_full();
-
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker);
- m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-// roms
-
-ROM_START( gnw_bfight )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "bf-107.program", 0x0000, 0x1000, CRC(4c8d07ed) SHA1(a8974dff85d5f3bacaadb71b86e9b30994b6d129) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "bf-107.melody", 0x000, 0x100, BAD_DUMP CRC(aadc22a1) SHA1(f6e5572232eb9e83f6833073e1e1e99776245c50) ) // decap needed for verification
-
- ROM_REGION( 558341, "svg", 0)
- ROM_LOAD( "gnw_bfight.svg", 0, 558341, CRC(f0d61fe8) SHA1(b0b56224a967e4b26836c0f7e3015d13b42ae5cc) )
-ROM_END
-
@@ -3567,9 +2254,11 @@ ROM_END
class gnw_boxing_state : public hh_sm510_state
{
public:
- gnw_boxing_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ gnw_boxing_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 7;
+ }
void gnw_boxing(machine_config &config);
};
@@ -3641,7 +2330,7 @@ void gnw_boxing_state::gnw_boxing(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 524);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1920-1, 0, 524-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -3651,19 +2340,6 @@ void gnw_boxing_state::gnw_boxing(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gnw_boxing )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "bx-301_744.program", 0x0000, 0x1000, CRC(0fdf0303) SHA1(0b791c9d4874e9534d0a9b7a8968ce02fe4bee96) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "bx-301_744.melody", 0x000, 0x100, CRC(439d943d) SHA1(52880df15ec7513f96482f455ef3d9778aa24750) )
-
- ROM_REGION( 265174, "svg", 0)
- ROM_LOAD( "gnw_boxing.svg", 0, 265174, CRC(e8a3ab25) SHA1(53e32542b582dcdf4ddd051f182738eee6c732c9) )
-ROM_END
-
@@ -3686,10 +2362,11 @@ ROM_END
class tgaunt_state : public hh_sm510_state
{
public:
- tgaunt_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tgaunt_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void trobhood(machine_config &config);
@@ -3764,7 +2441,7 @@ void tgaunt_state::tgaunt(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1425, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1425-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -3779,29 +2456,10 @@ void tgaunt_state::trobhood(machine_config &config)
tgaunt(config);
/* video hardware */
- screen_device *screen = subdevice<screen_device>("screen");
- screen->set_size(1468, 1080);
- screen->set_visarea_full();
+ subdevice<screen_device>("screen")->set_size(1468, 1080);
+ subdevice<screen_device>("screen")->set_visarea(0, 1468-1, 0, 1080-1);
}
-// roms
-
-ROM_START( tgaunt )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "583", 0x0000, 0x1000, CRC(598d8156) SHA1(9f776e8b9b4321e8118481e6b1304f8a38f9932e) )
-
- ROM_REGION( 713020, "svg", 0)
- ROM_LOAD( "tgaunt.svg", 0, 713020, CRC(1f65ae21) SHA1(57ca33d073d1096a7fc17f2bdac940868d1ae651) )
-ROM_END
-
-ROM_START( trobhood )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "583", 0x0000, 0x1000, CRC(598d8156) SHA1(9f776e8b9b4321e8118481e6b1304f8a38f9932e) )
-
- ROM_REGION( 704892, "svg", 0)
- ROM_LOAD( "trobhood.svg", 0, 704892, CRC(291fd8db) SHA1(1de6bd0e203f16c44f7d661e44863a1a919f3da9) )
-ROM_END
-
@@ -3820,10 +2478,11 @@ ROM_END
class tddragon_state : public hh_sm510_state
{
public:
- tddragon_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tddragon_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
}
void tddragon(machine_config &config);
@@ -3885,7 +2544,7 @@ void tddragon_state::tddragon(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1467, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1467-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -3895,16 +2554,6 @@ void tddragon_state::tddragon(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tddragon )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "593", 0x0000, 0x1000, CRC(2642f778) SHA1(fee77acf93e057a8b4627389dfd481c6d9cbd02b) )
-
- ROM_REGION( 511434, "svg", 0)
- ROM_LOAD( "tddragon.svg", 0, 511434, CRC(641e7ceb) SHA1(bbfc37cc085e00921422f65d9aac9949f871e7b7) )
-ROM_END
-
@@ -3920,10 +2569,11 @@ ROM_END
class tkarnov_state : public hh_sm510_state
{
public:
- tkarnov_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tkarnov_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tkarnov(machine_config &config);
@@ -3989,7 +2639,7 @@ void tkarnov_state::tkarnov(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1477, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1477-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -3999,16 +2649,6 @@ void tkarnov_state::tkarnov(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tkarnov )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "582", 0x0000, 0x1000, CRC(cee85bdd) SHA1(143e39524f1dea523e0575f327ed189343cc87f5) )
-
- ROM_REGION( 527377, "svg", 0)
- ROM_LOAD( "tkarnov.svg", 0, 527377, CRC(971840fc) SHA1(48db7139fa875e60b44340fb475b6d1081ef5c10) )
-ROM_END
-
@@ -4024,10 +2664,11 @@ ROM_END
class tvindictr_state : public hh_sm510_state
{
public:
- tvindictr_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tvindictr_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tvindictr(machine_config &config);
@@ -4092,7 +2733,7 @@ void tvindictr_state::tvindictr(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1459, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1459-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -4102,16 +2743,6 @@ void tvindictr_state::tvindictr(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tvindictr )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "595", 0x0000, 0x1000, CRC(b574d16f) SHA1(d2cb0f2e21ca2defe49a4b45f4c8e169ae9979ab) )
-
- ROM_REGION( 314165, "svg", 0)
- ROM_LOAD( "tvindictr.svg", 0, 314165, CRC(2241992c) SHA1(efd44879d1c0d5befd7ea07089418406fc101315) )
-ROM_END
-
@@ -4127,11 +2758,12 @@ ROM_END
class tgaiden_state : public hh_sm510_state
{
public:
- tgaiden_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag),
+ tgaiden_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag),
m_led_out(*this, "led")
{
- inp_fixed_last();
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
}
output_finder<> m_led_out;
@@ -4143,14 +2775,6 @@ protected:
virtual void machine_start() override;
};
-void tgaiden_state::machine_start()
-{
- hh_sm510_state::machine_start();
-
- // resolve handlers
- m_led_out.resolve();
-}
-
// handlers
WRITE8_MEMBER(tgaiden_state::write_r)
@@ -4201,6 +2825,14 @@ static INPUT_PORTS_START( tgaiden )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
INPUT_PORTS_END
+void tgaiden_state::machine_start()
+{
+ hh_sm510_state::machine_start();
+
+ // resolve handlers
+ m_led_out.resolve();
+}
+
void tgaiden_state::tgaiden(machine_config &config)
{
/* basic machine hardware */
@@ -4218,7 +2850,7 @@ void tgaiden_state::tgaiden(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1920-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -4228,16 +2860,6 @@ void tgaiden_state::tgaiden(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tgaiden )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "m82", 0x0000, 0x1000, CRC(278eafb0) SHA1(14396a0010bade0fde705969151200ed432321e7) )
-
- ROM_REGION( 100000, "svg", 0)
- ROM_LOAD( "tgaiden.svg", 0, 100000, NO_DUMP )
-ROM_END
-
@@ -4253,10 +2875,11 @@ ROM_END
class tbatman_state : public hh_sm510_state
{
public:
- tbatman_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tbatman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
}
void tbatman(machine_config &config);
@@ -4317,7 +2940,7 @@ void tbatman_state::tbatman(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1442, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1442-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -4327,16 +2950,6 @@ void tbatman_state::tbatman(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tbatman )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "597", 0x0000, 0x1000, CRC(8b7acc97) SHA1(fe811675dc5c5ef9f6f969685c933926c8b9e868) )
-
- ROM_REGION( 551890, "svg", 0)
- ROM_LOAD( "tbatman.svg", 0, 551890, CRC(65809ee3) SHA1(5fc38bdb2108d45dc99bce3379253423ea88e0fc) )
-ROM_END
-
@@ -4356,10 +2969,11 @@ ROM_END
class tsharr2_state : public hh_sm510_state
{
public:
- tsharr2_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tsharr2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
}
void tsharr2(machine_config &config);
@@ -4420,7 +3034,7 @@ void tsharr2_state::tsharr2(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1493, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1493-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -4430,16 +3044,6 @@ void tsharr2_state::tsharr2(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tsharr2 )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "m91", 0x0000, 0x1000, CRC(b207ac79) SHA1(9889dfec26089313ba2bdac845a75a26742d09e1) )
-
- ROM_REGION( 555126, "svg", 0)
- ROM_LOAD( "tsharr2.svg", 0, 555126, CRC(ff43e29b) SHA1(0af02e65a1dcf95958296a292343430670b67ae5) )
-ROM_END
-
@@ -4455,10 +3059,11 @@ ROM_END
class tstrider_state : public hh_sm510_state
{
public:
- tstrider_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tstrider_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
}
void tstrider(machine_config &config);
@@ -4520,7 +3125,7 @@ void tstrider_state::tstrider(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1479, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1479-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -4530,16 +3135,6 @@ void tstrider_state::tstrider(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tstrider )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "m92", 0x0000, 0x1000, CRC(4b488e8f) SHA1(b037c220c4a456f0dac67d759736f202a7609ee5) )
-
- ROM_REGION( 554817, "svg", 0)
- ROM_LOAD( "tstrider.svg", 0, 554817, CRC(be5de6bd) SHA1(cde0a3fe21af24d7d22d2ce0aec9c308f8696c7e) )
-ROM_END
-
@@ -4555,10 +3150,11 @@ ROM_END
class tgoldnaxe_state : public hh_sm510_state
{
public:
- tgoldnaxe_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tgoldnaxe_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tgoldnaxe(machine_config &config);
@@ -4624,7 +3220,7 @@ void tgoldnaxe_state::tgoldnaxe(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1456, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1456-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -4634,16 +3230,6 @@ void tgoldnaxe_state::tgoldnaxe(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tgoldnaxe )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "m94", 0x0000, 0x1000, CRC(af183fbf) SHA1(23716e2a7c4bb4842b2af1a43fe88db44e18dc17) )
-
- ROM_REGION( 605483, "svg", 0)
- ROM_LOAD( "tgoldnaxe.svg", 0, 605483, CRC(533bea14) SHA1(08d419bd7af5de7216654dc7f978beed95192c2d) )
-ROM_END
-
@@ -4661,10 +3247,11 @@ ROM_END
class trobocop2_state : public hh_sm510_state
{
public:
- trobocop2_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ trobocop2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void trobocop2(machine_config &config);
@@ -4745,7 +3332,7 @@ void trobocop2_state::trobocop2(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1487, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1487-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -4760,29 +3347,10 @@ void trobocop2_state::trockteer(machine_config &config)
trobocop2(config);
/* video hardware */
- screen_device *screen = subdevice<screen_device>("screen");
- screen->set_size(1463, 1080);
- screen->set_visarea_full();
+ subdevice<screen_device>("screen")->set_size(1463, 1080);
+ subdevice<screen_device>("screen")->set_visarea(0, 1463-1, 0, 1080-1);
}
-// roms
-
-ROM_START( trobocop2 )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "m96", 0x0000, 0x1000, CRC(3704b60c) SHA1(04275833e1a79fd33226faf060890b66ae54e1d3) )
-
- ROM_REGION( 463532, "svg", 0)
- ROM_LOAD( "trobocop2.svg", 0, 463532, CRC(c2b92868) SHA1(87912f02bea967c10ba1d8f7c810e3c44b0e3cff) )
-ROM_END
-
-ROM_START( trockteer )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "m96", 0x0000, 0x1000, CRC(3704b60c) SHA1(04275833e1a79fd33226faf060890b66ae54e1d3) )
-
- ROM_REGION( 558086, "svg", 0)
- ROM_LOAD( "trockteer.svg", 0, 558086, CRC(8afe0f88) SHA1(702127a4ff72be492f72b24bd8917ae0e15f247d) )
-ROM_END
-
@@ -4802,10 +3370,11 @@ ROM_END
class taltbeast_state : public hh_sm510_state
{
public:
- taltbeast_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ taltbeast_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void taltbeast(machine_config &config);
@@ -4871,7 +3440,7 @@ void taltbeast_state::taltbeast(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1455, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1455-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -4881,16 +3450,6 @@ void taltbeast_state::taltbeast(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( taltbeast )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "m88", 0x0000, 0x1000, CRC(1b3d15e7) SHA1(78371230dff872d6c07eefdbc4856c2a3336eb61) )
-
- ROM_REGION( 667887, "svg", 0)
- ROM_LOAD( "taltbeast.svg", 0, 667887, CRC(1ca9bbf1) SHA1(be844dddee4a95f70ea2adf875d3ee6cda2a6633) )
-ROM_END
-
@@ -4906,10 +3465,11 @@ ROM_END
class tsf2010_state : public hh_sm510_state
{
public:
- tsf2010_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tsf2010_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tsf2010(machine_config &config);
@@ -4975,7 +3535,7 @@ void tsf2010_state::tsf2010(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1465, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1465-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -4985,16 +3545,6 @@ void tsf2010_state::tsf2010(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tsf2010 )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "ma2", 0x0000, 0x1000, CRC(764b3757) SHA1(c5f90b860128658576bb837e9cabbb3045ad2756) )
-
- ROM_REGION( 595149, "svg", 0)
- ROM_LOAD( "tsf2010.svg", 0, 595149, CRC(b873856b) SHA1(1d070d4d9578bbc322d1edead208bbd44340b71a) )
-ROM_END
-
@@ -5010,10 +3560,11 @@ ROM_END
class tswampt_state : public hh_sm510_state
{
public:
- tswampt_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tswampt_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
}
void tswampt(machine_config &config);
@@ -5075,7 +3626,7 @@ void tswampt_state::tswampt(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1450, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1450-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -5085,16 +3636,6 @@ void tswampt_state::tswampt(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tswampt )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mb0", 0x0000, 0x1000, CRC(8433530c) SHA1(60716d3bba92dc8ac3f1ee29c5734c9e894a1aff) )
-
- ROM_REGION( 578505, "svg", 0)
- ROM_LOAD( "tswampt.svg", 0, 578505, CRC(98ff2fbb) SHA1(a5a4e9934b86f69176549f99246b40f323441945) )
-ROM_END
-
@@ -5110,10 +3651,11 @@ ROM_END
class tspidman_state : public hh_sm510_state
{
public:
- tspidman_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tspidman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tspidman(machine_config &config);
@@ -5179,7 +3721,7 @@ void tspidman_state::tspidman(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1440, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1440-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -5189,16 +3731,6 @@ void tspidman_state::tspidman(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tspidman )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "ma5", 0x0000, 0x1000, CRC(2624daed) SHA1(7c10434ae899637264de706045d48e3fce1d30a7) )
-
- ROM_REGION( 605332, "svg", 0)
- ROM_LOAD( "tspidman.svg", 0, 605332, CRC(6e687727) SHA1(c1a2ee450509e05d1db61e02f6a911207d2830c4) )
-ROM_END
-
@@ -5214,10 +3746,11 @@ ROM_END
class txmen_state : public hh_sm510_state
{
public:
- txmen_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ txmen_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void txmen(machine_config &config);
@@ -5283,7 +3816,7 @@ void txmen_state::txmen(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1467, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1467-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -5293,16 +3826,6 @@ void txmen_state::txmen(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( txmen )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "ma7", 0x0000, 0x1000, CRC(6f3ff34f) SHA1(aa24fbc3a4117ea51ebf951ee343a36c77692b72) )
-
- ROM_REGION( 543232, "svg", 0)
- ROM_LOAD( "txmen.svg", 0, 543232, CRC(51daf7f9) SHA1(b59ecbd83e05478f4b2654a019291c7e06893112) )
-ROM_END
-
@@ -5318,10 +3841,11 @@ ROM_END
class tddragon3_state : public hh_sm510_state
{
public:
- tddragon3_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tddragon3_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tddragon3(machine_config &config);
@@ -5387,7 +3911,7 @@ void tddragon3_state::tddragon3(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1514, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1514-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -5397,16 +3921,6 @@ void tddragon3_state::tddragon3(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tddragon3 )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "ma6", 0x0000, 0x1000, CRC(8e2da0d9) SHA1(54dd05124b4c605975b0cb1eadd7456ff4a94d68) )
-
- ROM_REGION( 615684, "svg", 0)
- ROM_LOAD( "tddragon3.svg", 0, 615684, CRC(3f5df090) SHA1(c9248fbf3a4dec0ce3b32b10fb67f133595cc54d) )
-ROM_END
-
@@ -5422,10 +3936,11 @@ ROM_END
class tflash_state : public hh_sm510_state
{
public:
- tflash_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tflash_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 7;
+ m_inp_fixed = 7;
}
void tflash(machine_config &config);
@@ -5491,7 +4006,7 @@ void tflash_state::tflash(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1444, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1444-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -5501,16 +4016,6 @@ void tflash_state::tflash(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tflash )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mb5", 0x0000, 0x1000, CRC(f7f1d082) SHA1(49a7a931450cf27fe69076c4e15ffb34814e25d4) )
-
- ROM_REGION( 587820, "svg", 0)
- ROM_LOAD( "tflash.svg", 0, 587820, CRC(aa1ad063) SHA1(aec6b15569d3d58ff9a4f7db779cda4a1c8efc35) )
-ROM_END
-
@@ -5526,10 +4031,11 @@ ROM_END
class tmchammer_state : public hh_sm510_state
{
public:
- tmchammer_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tmchammer_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tmchammer(machine_config &config);
@@ -5595,7 +4101,7 @@ void tmchammer_state::tmchammer(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1471, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1471-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -5605,19 +4111,6 @@ void tmchammer_state::tmchammer(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tmchammer )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "n63.program", 0x0000, 0x1000, CRC(303aa6f7) SHA1(296689be1ee05238e52e9882812868b2ea96202c) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "n63.melody", 0x000, 0x100, CRC(77c1a5a3) SHA1(c00ae3b7c64dd9db96eab520fe674a40571fc15f) )
-
- ROM_REGION( 456446, "svg", 0)
- ROM_LOAD( "tmchammer.svg", 0, 456446, CRC(79d6d45d) SHA1(bf6b8c6fdccad657377ad9f721dd22408f6ae775) )
-ROM_END
-
@@ -5633,10 +4126,11 @@ ROM_END
class tbtoads_state : public hh_sm510_state
{
public:
- tbtoads_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tbtoads_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tbtoads(machine_config &config);
@@ -5702,7 +4196,7 @@ void tbtoads_state::tbtoads(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1454, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1454-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -5712,16 +4206,6 @@ void tbtoads_state::tbtoads(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tbtoads )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mb3", 0x0000, 0x1000, CRC(8fa4c55a) SHA1(2be97e63dfed51313e180d7388dd431058db5a51) )
-
- ROM_REGION( 694365, "svg", 0)
- ROM_LOAD( "tbtoads.svg", 0, 694365, CRC(3af488e9) SHA1(d0e9ec61fac23bb22e508da4fa8bf2a7b8f186cf) )
-ROM_END
-
@@ -5737,10 +4221,11 @@ ROM_END
class thook_state : public hh_sm510_state
{
public:
- thook_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ thook_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void thook(machine_config &config);
@@ -5806,7 +4291,7 @@ void thook_state::thook(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1489, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1489-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -5816,16 +4301,6 @@ void thook_state::thook(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( thook )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mb7", 0x0000, 0x1000, CRC(7eb1a6e2) SHA1(f4a09ab95c968b0ddbe56cd7bb2667881c145731) )
-
- ROM_REGION( 680503, "svg", 0)
- ROM_LOAD( "thook.svg", 0, 680503, CRC(28bd6da2) SHA1(e97b1dda219a766ffcca15d1b3279f5cee5e2fed) )
-ROM_END
-
@@ -5844,10 +4319,11 @@ ROM_END
class tbttf_state : public hh_sm510_state
{
public:
- tbttf_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tbttf_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
}
void tbttf(machine_config &config);
@@ -5909,7 +4385,7 @@ void tbttf_state::tbttf(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1466, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1466-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -5919,16 +4395,6 @@ void tbttf_state::tbttf(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tbttf )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mc3", 0x0000, 0x1000, CRC(9c37a23c) SHA1(c09fa5caac8b574f8460265b98c0bea1d5e78c6a) )
-
- ROM_REGION( 667700, "svg", 0)
- ROM_LOAD( "tbttf.svg", 0, 667700, CRC(d1d19ec5) SHA1(7361943ccf1f4072bba6fd4e6acae3e2f3d7a0ea) )
-ROM_END
-
@@ -5946,10 +4412,11 @@ ROM_END
class taddams_state : public hh_sm510_state
{
public:
- taddams_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ taddams_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void taddams(machine_config &config);
@@ -6015,7 +4482,7 @@ void taddams_state::taddams(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1464, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1464-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -6025,16 +4492,6 @@ void taddams_state::taddams(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( taddams )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mc2", 0x0000, 0x1000, CRC(af33d432) SHA1(676ada238c389d1dd02dcb29731d69624f60b342) )
-
- ROM_REGION( 554649, "svg", 0)
- ROM_LOAD( "taddams.svg", 0, 554649, CRC(0b916c6d) SHA1(5a2456b4a0f31db94a78373baab46f3ff9732b92) )
-ROM_END
-
@@ -6050,10 +4507,11 @@ ROM_END
class thalone_state : public hh_sm510_state
{
public:
- thalone_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ thalone_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void thalone(machine_config &config);
@@ -6119,7 +4577,7 @@ void thalone_state::thalone(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1448, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1448-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -6129,16 +4587,6 @@ void thalone_state::thalone(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( thalone )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mc7", 0x0000, 0x1000, CRC(eceda335) SHA1(20c9ffcf914db61aba03716fe146bac42873ac82) )
-
- ROM_REGION( 494235, "svg", 0)
- ROM_LOAD( "thalone.svg", 0, 494235, CRC(0e32df1d) SHA1(1fff1d37a5fe66d4f59d12af3ce67665c0049800) )
-ROM_END
-
@@ -6154,10 +4602,11 @@ ROM_END
class txmenpx_state : public hh_sm510_state
{
public:
- txmenpx_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ txmenpx_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
}
void txmenpx(machine_config &config);
@@ -6219,7 +4668,7 @@ void txmenpx_state::txmenpx(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1464, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1464-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -6229,16 +4678,6 @@ void txmenpx_state::txmenpx(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( txmenpx )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "md3", 0x0000, 0x1000, CRC(11c2b09a) SHA1(f94b1e3e60f002398b39c98946469dd1a6aa8e77) )
-
- ROM_REGION( 572538, "svg", 0)
- ROM_LOAD( "txmenpx.svg", 0, 572538, CRC(9a89c753) SHA1(e3828a8c10c77ee5634128d0e9239e8cda19f988) )
-ROM_END
-
@@ -6254,10 +4693,11 @@ ROM_END
class thalone2_state : public hh_sm510_state
{
public:
- thalone2_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ thalone2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void thalone2(machine_config &config);
@@ -6323,7 +4763,7 @@ void thalone2_state::thalone2(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1454, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1454-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -6333,16 +4773,6 @@ void thalone2_state::thalone2(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( thalone2 )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "md7", 0x0000, 0x1000, CRC(ac8a21e9) SHA1(9024f74e34056f90b7dbf439300797183f74eb00) )
-
- ROM_REGION( 748886, "svg", 0)
- ROM_LOAD( "thalone2.svg", 0, 748886, CRC(a5d8898e) SHA1(de8fae0169a3797a46b5c81d9b556df636a5674e) )
-ROM_END
-
@@ -6358,10 +4788,11 @@ ROM_END
class tsonic_state : public hh_sm510_state
{
public:
- tsonic_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tsonic_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
}
void tsonic(machine_config &config);
@@ -6421,8 +4852,7 @@ void tsonic_state::tsonic(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1517, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1517-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -6432,19 +4862,6 @@ void tsonic_state::tsonic(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tsonic )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "n71.program", 0x0000, 0x1000, CRC(44cafd68) SHA1(bf8d0ab88d153fabc688ffec19959209ca79c3db) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "n71.melody", 0x000, 0x100, CRC(bae258c8) SHA1(81cb75d73fab4479cd92fcb13d9cb03cec2afdd5) )
-
- ROM_REGION( 541450, "svg", 0)
- ROM_LOAD( "tsonic.svg", 0, 541450, CRC(f01835e3) SHA1(25f924af55ffadd2aebf50a89f75571d788d5ac1) )
-ROM_END
-
@@ -6460,10 +4877,11 @@ ROM_END
class trobocop3_state : public hh_sm510_state
{
public:
- trobocop3_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ trobocop3_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void trobocop3(machine_config &config);
@@ -6529,7 +4947,7 @@ void trobocop3_state::trobocop3(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1464, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1464-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -6539,16 +4957,6 @@ void trobocop3_state::trobocop3(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( trobocop3 )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mc6", 0x0000, 0x1000, CRC(07b44e4c) SHA1(3165c85e16c062d2d9d0c0f1b1f6bd6079b4de15) )
-
- ROM_REGION( 612103, "svg", 0)
- ROM_LOAD( "trobocop3.svg", 0, 612103, CRC(9a162642) SHA1(b775f64e4616c4fc8d2c139938f148c9666e646a) )
-ROM_END
-
@@ -6564,10 +4972,11 @@ ROM_END
class tdummies_state : public hh_sm510_state
{
public:
- tdummies_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tdummies_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
}
void tdummies(machine_config &config);
@@ -6629,7 +5038,7 @@ void tdummies_state::tdummies(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1441, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1441-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -6639,16 +5048,6 @@ void tdummies_state::tdummies(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tdummies )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "me0", 0x0000, 0x1000, CRC(29efae4a) SHA1(0b26913a3fd2fde2b39549f0f7cbc3daaa41eb50) )
-
- ROM_REGION( 525493, "svg", 0)
- ROM_LOAD( "tdummies.svg", 0, 525493, CRC(a18a5216) SHA1(1238e8c489445e715d4fc53e597820845b386233) )
-ROM_END
-
@@ -6664,10 +5063,11 @@ ROM_END
class tsfight2_state : public hh_sm510_state
{
public:
- tsfight2_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tsfight2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tsfight2(machine_config &config);
@@ -6733,7 +5133,7 @@ void tsfight2_state::tsfight2(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1444, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1444-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -6743,16 +5143,6 @@ void tsfight2_state::tsfight2(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tsfight2 )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "me1", 0x0000, 0x1000, CRC(73384e94) SHA1(350417d101ce034b3974b4a1d2e04bcb3bf70605) )
-
- ROM_REGION( 630403, "svg", 0)
- ROM_LOAD( "tsfight2.svg", 0, 630403, CRC(eadc2c81) SHA1(20b2a797f6b9a008c1994eaee7b87e3fe828e837) )
-ROM_END
-
@@ -6768,10 +5158,11 @@ ROM_END
class twworld_state : public hh_sm510_state
{
public:
- twworld_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ twworld_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void twworld(machine_config &config);
@@ -6837,7 +5228,7 @@ void twworld_state::twworld(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1429, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1429-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -6847,16 +5238,6 @@ void twworld_state::twworld(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( twworld )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "me7", 0x0000, 0x1000, CRC(dcb16d98) SHA1(539989e12bbc4a719818546c5edcfda02b98210e) )
-
- ROM_REGION( 527859, "svg", 0)
- ROM_LOAD( "twworld.svg", 0, 527859, CRC(0a2cffce) SHA1(d8c3f2fef60357e47ce0b44d588d0bb39112c8b9) )
-ROM_END
-
@@ -6872,10 +5253,11 @@ ROM_END
class tjpark_state : public hh_sm510_state
{
public:
- tjpark_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tjpark_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
}
void tjpark(machine_config &config);
@@ -6937,7 +5319,7 @@ void tjpark_state::tjpark(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1454, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1454-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -6947,16 +5329,6 @@ void tjpark_state::tjpark(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tjpark )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mf4", 0x0000, 0x1000, CRC(f66faf73) SHA1(4cfa743dcd6e44a3c1f56206d5824fddba16df01) )
-
- ROM_REGION( 812575, "svg", 0)
- ROM_LOAD( "tjpark.svg", 0, 812575, CRC(539c9b9c) SHA1(bf9a95586438df677d753deb17abc97f8837cbe3) )
-ROM_END
-
@@ -6972,10 +5344,11 @@ ROM_END
class tsonic2_state : public hh_sm510_state
{
public:
- tsonic2_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tsonic2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
}
void tsonic2(machine_config &config);
@@ -7035,8 +5408,7 @@ void tsonic2_state::tsonic2(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1475, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1475-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -7046,19 +5418,6 @@ void tsonic2_state::tsonic2(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tsonic2 )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "n86.program", 0x0000, 0x1000, CRC(782874c5) SHA1(b7eb1f56cbc781ba0b90f6b4b5b51944120733cc) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "n86.melody", 0x000, 0x100, CRC(c16fa2b2) SHA1(222772d311fd3b3b05d80cfd539c2c862bed0be5) )
-
- ROM_REGION( 667887, "svg", 0)
- ROM_LOAD( "tsonic2.svg", 0, 667887, CRC(ef82d40e) SHA1(f22efba565adb32634d8b46c31459ec833b13d98) )
-ROM_END
-
@@ -7078,10 +5437,11 @@ ROM_END
class tsddragon_state : public hh_sm510_state
{
public:
- tsddragon_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tsddragon_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tsddragon(machine_config &config);
@@ -7148,7 +5508,7 @@ void tsddragon_state::tsddragon(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1503, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1503-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -7158,16 +5518,6 @@ void tsddragon_state::tsddragon(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tsddragon )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mf5", 0x0000, 0x1000, CRC(264c8e82) SHA1(470eb2f09a58ef05eb0b7c8e11380ad1d8ce4e1a) )
-
- ROM_REGION( 753533, "svg", 0)
- ROM_LOAD( "tsddragon.svg", 0, 753533, CRC(fb526049) SHA1(552fe005a6e23e083867b7d1c10d20daa8913a14) )
-ROM_END
-
@@ -7183,10 +5533,11 @@ ROM_END
class tdennis_state : public hh_sm510_state
{
public:
- tdennis_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tdennis_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tdennis(machine_config &config);
@@ -7253,7 +5604,7 @@ void tdennis_state::tdennis(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1467, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1467-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -7263,16 +5614,6 @@ void tdennis_state::tdennis(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tdennis )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mf9", 0x0000, 0x1000, CRC(d95f54d5) SHA1(1b3a170f32deec98e54ad09c04b404f5ae03dcea) )
-
- ROM_REGION( 754842, "svg", 0)
- ROM_LOAD( "tdennis.svg", 0, 754842, CRC(3b1ed476) SHA1(adc94919daa9a6c42f1acd8ef5113b61859338b7) )
-ROM_END
-
@@ -7288,10 +5629,11 @@ ROM_END
class tnmarebc_state : public hh_sm510_state
{
public:
- tnmarebc_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tnmarebc_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
}
virtual DECLARE_WRITE8_MEMBER(input_w) override;
@@ -7361,7 +5703,7 @@ void tnmarebc_state::tnmarebc(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1456, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1456-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -7371,16 +5713,6 @@ void tnmarebc_state::tnmarebc(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tnmarebc )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mg0", 0x0000, 0x1000, CRC(5ef21421) SHA1(8fd458575111b89d7c33c969e76703bde5ad2c36) )
-
- ROM_REGION( 631310, "svg", 0)
- ROM_LOAD( "tnmarebc.svg", 0, 631310, CRC(f9c96205) SHA1(1947d358efd94ae3257ed959172a819798d2c9a1) )
-ROM_END
-
@@ -7396,10 +5728,11 @@ ROM_END
class ttransf2_state : public hh_sm510_state
{
public:
- ttransf2_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ ttransf2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void ttransf2(machine_config &config);
@@ -7465,7 +5798,7 @@ void ttransf2_state::ttransf2(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1476, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1476-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -7475,16 +5808,6 @@ void ttransf2_state::ttransf2(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ttransf2 )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mg2", 0x0000, 0x1000, CRC(65c0f456) SHA1(b1bc3887c5088b3fe359585658e5c5236c09af9e) )
-
- ROM_REGION( 727662, "svg", 0)
- ROM_LOAD( "ttransf2.svg", 0, 727662, CRC(52fd5ea1) SHA1(35ae9fe2cea14ee4c591df0458fed478c9feb044) )
-ROM_END
-
@@ -7500,10 +5823,11 @@ ROM_END
class topaliens_state : public hh_sm510_state
{
public:
- topaliens_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ topaliens_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
}
void topaliens(machine_config &config);
@@ -7565,7 +5889,7 @@ void topaliens_state::topaliens(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1450, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1450-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -7575,16 +5899,6 @@ void topaliens_state::topaliens(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( topaliens )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mj1", 0x0000, 0x1000, CRC(ccc196cf) SHA1(f18f7cf842cddecf90d05ab0f90257bb76514f54) )
-
- ROM_REGION( 1214876, "svg", 0)
- ROM_LOAD( "topaliens.svg", 0, 1214876, CRC(683c70aa) SHA1(0fac5ba8ab5f9b73a3cbbff046be60550fa5f98a) )
-ROM_END
-
@@ -7600,10 +5914,11 @@ ROM_END
class tmkombat_state : public hh_sm510_state
{
public:
- tmkombat_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tmkombat_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tmkombat(machine_config &config);
@@ -7670,7 +5985,7 @@ void tmkombat_state::tmkombat(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1468, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1468-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -7680,16 +5995,6 @@ void tmkombat_state::tmkombat(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tmkombat )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mg6", 0x0000, 0x1000, CRC(f6375dc7) SHA1(a711199c2623979f19c11067ebfff9355256c2c3) )
-
- ROM_REGION( 841829, "svg", 0)
- ROM_LOAD( "tmkombat.svg", 0, 841829, CRC(9dc4f58c) SHA1(9c9b080d7f3b777407445c22195990c55c6352ca) )
-ROM_END
-
@@ -7705,10 +6010,11 @@ ROM_END
class tshadow_state : public hh_sm510_state
{
public:
- tshadow_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tshadow_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tshadow(machine_config &config);
@@ -7774,7 +6080,7 @@ void tshadow_state::tshadow(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1484, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1484-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -7784,16 +6090,6 @@ void tshadow_state::tshadow(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tshadow )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mj5", 0x0000, 0x1000, CRC(09822d73) SHA1(30cae8b783a4f388193aee248fa18c6c1042e0ec) )
-
- ROM_REGION( 946450, "svg", 0)
- ROM_LOAD( "tshadow.svg", 0, 946450, CRC(5cab680a) SHA1(8f8f660c08fc56287362b11c183655047fbd91ca) )
-ROM_END
-
@@ -7809,10 +6105,11 @@ ROM_END
class tskelwarr_state : public hh_sm510_state
{
public:
- tskelwarr_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tskelwarr_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tskelwarr(machine_config &);
@@ -7878,7 +6175,7 @@ void tskelwarr_state::tskelwarr(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1444, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1444-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -7888,16 +6185,6 @@ void tskelwarr_state::tskelwarr(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tskelwarr )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mk0", 0x0000, 0x1000, CRC(dc7827a1) SHA1(74ff143605684df0c70db604a5f22dbf512044d7) )
-
- ROM_REGION( 1125002, "svg", 0)
- ROM_LOAD( "tskelwarr.svg", 0, 1125002, CRC(49c6ca24) SHA1(71f4ed98ab558deeb86820b7fbf7534a7b7d6b01) )
-ROM_END
-
@@ -7913,10 +6200,11 @@ ROM_END
class tbatfor_state : public hh_sm510_state
{
public:
- tbatfor_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tbatfor_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tbatfor(machine_config &config);
@@ -7983,7 +6271,7 @@ void tbatfor_state::tbatfor(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1493, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1493-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -7993,16 +6281,6 @@ void tbatfor_state::tbatfor(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tbatfor )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mk3", 0x0000, 0x1000, CRC(9993c382) SHA1(0c89e21024315ce7c086af5390c60f5766028c4f) )
-
- ROM_REGION( 902364, "svg", 0)
- ROM_LOAD( "tbatfor.svg", 0, 902364, CRC(56889c05) SHA1(dda393ca99196de38ad2e989ec6c292adc36ec5e) )
-ROM_END
-
@@ -8018,10 +6296,11 @@ ROM_END
class tjdredd_state : public hh_sm510_state
{
public:
- tjdredd_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tjdredd_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tjdredd(machine_config &config);
@@ -8088,7 +6367,7 @@ void tjdredd_state::tjdredd(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1444, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1444-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -8098,16 +6377,6 @@ void tjdredd_state::tjdredd(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tjdredd )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mk5", 0x0000, 0x1000, CRC(7beee5a7) SHA1(9a190197c5751b43a9ab2dc8c536934dc5fc5e83) )
-
- ROM_REGION( 1051586, "svg", 0)
- ROM_LOAD( "tjdredd.svg", 0, 1051586, CRC(4fcdca0a) SHA1(d4b019fec94890ba6600baf2b2096dbcf3295180) )
-ROM_END
-
@@ -8123,10 +6392,11 @@ ROM_END
class tapollo13_state : public hh_sm510_state
{
public:
- tapollo13_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tapollo13_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tapollo13(machine_config &config);
@@ -8193,7 +6463,7 @@ void tapollo13_state::tapollo13(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1467, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1467-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -8203,16 +6473,6 @@ void tapollo13_state::tapollo13(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tapollo13 )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "10_07", 0x0000, 0x1000, CRC(63d0deaa) SHA1(d5de99d5e0ee08ec2ebeef7189ebac1c008d2e7d) )
-
- ROM_REGION( 643176, "svg", 0)
- ROM_LOAD( "tapollo13.svg", 0, 643176, CRC(e2dac162) SHA1(4089fa485579d2b87ac49b1cf33d6c2c085ea4c5) )
-ROM_END
-
@@ -8228,10 +6488,11 @@ ROM_END
class tgoldeye_state : public hh_sm510_state
{
public:
- tgoldeye_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tgoldeye_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tgoldeye(machine_config &config);
@@ -8298,7 +6559,7 @@ void tgoldeye_state::tgoldeye(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1461, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1461-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -8308,46 +6569,38 @@ void tgoldeye_state::tgoldeye(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tgoldeye )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "10_06", 0x0000, 0x1000, CRC(fe053efb) SHA1(3c90c0fa43e6e5e1f76b306e402f902d19175c96) )
-
- ROM_REGION( 938916, "svg", 0)
- ROM_LOAD( "tgoldeye.svg", 0, 938916, CRC(6dddf962) SHA1(1ced43b4225b86eca415f9af7db5fb5e80040186) )
-ROM_END
-
/***************************************************************************
- Tiger Space Jam (model 78-621)
- * Sharp SM510 under epoxy (die label KMS10, 23)
+ Tiger Independence Day (model 78-???)
+ * Sharp SM510 under epoxy (die label 10 16)
* lcd screen with custom segments, 1-bit sound
***************************************************************************/
-class tsjam_state : public hh_sm510_state
+class tinday_state : public hh_sm510_state
{
public:
- tsjam_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tinday_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
}
- void tsjam(machine_config &config);
+ void tinday(machine_config &config);
};
// config
-static INPUT_PORTS_START( tsjam )
+static INPUT_PORTS_START( tinday )
PORT_START("IN.0") // S1
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
- PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Shield")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Fire")
+ PORT_BIT( 0x0a, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.1") // S2
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
@@ -8355,13 +6608,12 @@ static INPUT_PORTS_START( tsjam )
PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.2") // S3
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alert")
PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.3") // S4
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Shoot/Block")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Tune/Steal")
- PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Velocity")
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.4") // S5
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Pause")
@@ -8381,10 +6633,10 @@ static INPUT_PORTS_START( tsjam )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
INPUT_PORTS_END
-void tsjam_state::tsjam(machine_config &config)
+void tinday_state::tinday(machine_config &config)
{
/* basic machine hardware */
- SM510(config, m_maincpu); // no external XTAL
+ SM510(config, m_maincpu);
m_maincpu->set_r_mask_option(sm510_base_device::RMASK_DIRECT);
m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w));
m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r));
@@ -8397,8 +6649,8 @@ void tsjam_state::tsjam(machine_config &config)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
- screen.set_size(1421, 1080);
- screen.set_visarea_full();
+ screen.set_size(1463, 1080);
+ screen.set_visarea(0, 1463-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -8408,47 +6660,37 @@ void tsjam_state::tsjam(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tsjam )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "10_23", 0x0000, 0x1000, CRC(6eaabfbd) SHA1(f0ecbd6f65fe72ce2d8a452685be2e77a63fc9f0) )
-
- ROM_REGION( 1046147, "svg", 0)
- ROM_LOAD( "tsjam.svg", 0, 1046147, CRC(6d24e1c9) SHA1(ddbfbd85f70ec964c68f982a8ee8070e3786a85e) )
-ROM_END
-
/***************************************************************************
- Tiger Independence Day (model 78-624)
- * Sharp SM510 under epoxy (die label 10 16)
+ Tiger Space Jam (model 78-621)
+ * Sharp SM510 under epoxy (die label KMS10, 23)
* lcd screen with custom segments, 1-bit sound
***************************************************************************/
-class tinday_state : public hh_sm510_state
+class tsjam_state : public hh_sm510_state
{
public:
- tinday_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tsjam_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
}
- void tinday(machine_config &config);
+ void tsjam(machine_config &config);
};
// config
-static INPUT_PORTS_START( tinday )
+static INPUT_PORTS_START( tsjam )
PORT_START("IN.0") // S1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Shield")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Fire")
- PORT_BIT( 0x0a, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.1") // S2
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
@@ -8456,12 +6698,13 @@ static INPUT_PORTS_START( tinday )
PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.2") // S3
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alert")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.3") // S4
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Velocity")
- PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Shoot/Block")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Tune/Steal")
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.4") // S5
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Pause")
@@ -8481,10 +6724,10 @@ static INPUT_PORTS_START( tinday )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
INPUT_PORTS_END
-void tinday_state::tinday(machine_config &config)
+void tsjam_state::tsjam(machine_config &config)
{
/* basic machine hardware */
- SM510(config, m_maincpu);
+ SM510(config, m_maincpu); // no external XTAL
m_maincpu->set_r_mask_option(sm510_base_device::RMASK_DIRECT);
m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w));
m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r));
@@ -8497,8 +6740,8 @@ void tinday_state::tinday(machine_config &config)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
- screen.set_size(1463, 1080);
- screen.set_visarea_full();
+ screen.set_size(1421, 1080);
+ screen.set_visarea(0, 1421-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -8508,16 +6751,6 @@ void tinday_state::tinday(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tinday )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "10_16", 0x0000, 0x1000, CRC(77c2c2f7) SHA1(06326b26d0f6757180724ba0bdeb4110cc7e29d6) )
-
- ROM_REGION( 1162672, "svg", 0)
- ROM_LOAD( "tinday.svg", 0, 1162672, CRC(9b9a8047) SHA1(2aeaa71a54cf897d2a5d91133c733613ca229aae) )
-ROM_END
-
@@ -8533,10 +6766,11 @@ ROM_END
class tbatmana_state : public hh_sm510_state
{
public:
- tbatmana_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
+ tbatmana_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
{
- inp_fixed_last();
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
void tbatmana(machine_config &config);
@@ -8597,8 +6831,7 @@ void tbatmana_state::tbatmana(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1478, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1478-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -8608,19 +6841,6 @@ void tbatmana_state::tbatmana(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tbatmana )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "n81.program", 0x0000, 0x1000, CRC(efb3f122) SHA1(d55c2fb92fb9bd41d6001f42143691b84f3f389a) )
-
- ROM_REGION( 0x100, "maincpu:melody", 0 )
- ROM_LOAD( "n81.melody", 0x000, 0x100, CRC(56ba8fe5) SHA1(5c286ae1bfc943bbe8c8f4cdc9c8b73d9b3c186e) )
-
- ROM_REGION( 618831, "svg", 0)
- ROM_LOAD( "tbatmana.svg", 0, 618831, CRC(fc38cb9d) SHA1(1b6c10dcd33bfcfef43d61f97fa8e530011c1e61) )
-ROM_END
-
@@ -8636,9 +6856,11 @@ ROM_END
class tigarden_state : public hh_sm510_state
{
public:
- tigarden_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ tigarden_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 8;
+ }
void tigarden(machine_config &config);
};
@@ -8712,7 +6934,7 @@ void tigarden_state::tigarden(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1515, 1080);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1515-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -8722,16 +6944,6 @@ void tigarden_state::tigarden(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tigarden )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "0019_238e", 0x0000, 0x1000, CRC(8bd0eadd) SHA1(7bb5eb30d569901dce52d777bc01c0979e4afa06) )
-
- ROM_REGION( 409084, "svg", 0)
- ROM_LOAD( "tigarden.svg", 0, 409084, CRC(cfda5138) SHA1(1bc4ed65ae0cdca3e1e9458d68ca4d6e0fc0e901) )
-ROM_END
-
@@ -8747,9 +6959,11 @@ ROM_END
class nummunch_state : public hh_sm510_state
{
public:
- nummunch_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag)
- { }
+ nummunch_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 8;
+ }
void nummunch(machine_config &config);
};
@@ -8820,7 +7034,7 @@ void nummunch_state::nummunch(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 875);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1920-1, 0, 875-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
@@ -8830,7 +7044,791 @@ void nummunch_state::nummunch(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
+
+
+
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+ROM_START( kdribble )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "584", 0x0000, 0x1000, CRC(1d9022c8) SHA1(64567f9f161e830a0634d5c89917ab866c26c0f8) )
+
+ ROM_REGION( 450339, "svg", 0)
+ ROM_LOAD( "kdribble.svg", 0, 450339, CRC(86c3ecc4) SHA1(8dfaeb0f3b35d4b680daaa9f478a6f3decf6ea0a) )
+ROM_END
+
+
+ROM_START( ktopgun ) // except for filler/unused bytes, ROM listing in patent US5137277 "BH003 Top Gun" is same
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "598", 0x0000, 0x1000, CRC(50870b35) SHA1(cda1260c2e1c180995eced04b7d7ff51616dcef5) )
+
+ ROM_REGION( 425832, "svg", 0)
+ ROM_LOAD( "ktopgun.svg", 0, 425832, CRC(dc488ac0) SHA1(5a47e5639cb1e61dad3f2169efb99efe3d75896f) )
+ROM_END
+
+
+ROM_START( kcontra ) // except for filler/unused bytes, ROM listing in patent US5120057 "BH002 C (Contra)" program/melody is same
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "773.program", 0x0000, 0x1000, CRC(bf834877) SHA1(055dd56ec16d63afba61ab866481fd9c029fb54d) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "773.melody", 0x000, 0x100, CRC(23d02b99) SHA1(703938e496db0eeacd14fe7605d4b5c39e0a5bc8) )
+
+ ROM_REGION( 721005, "svg", 0)
+ ROM_LOAD( "kcontra.svg", 0, 721005, CRC(b5370d0f) SHA1(2f401222d24fa32a4659ef2b64ddac8ac3973c69) )
+ROM_END
+
+
+ROM_START( ktmnt ) // except for filler/unused bytes, ROM listing in patent US5150899 "BH005 TMNT" program/melody is same
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "774.program", 0x0000, 0x1000, CRC(a1064f87) SHA1(92156c35fbbb414007ee6804fe635128a741d5f1) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "774.melody", 0x000, 0x100, CRC(8270d626) SHA1(bd91ca1d5cd7e2a62eef05c0033b19dcdbe441ca) )
+
+ ROM_REGION( 610270, "svg", 0)
+ ROM_LOAD( "ktmnt.svg", 0, 610270, CRC(ad9412ed) SHA1(154ee44efcd340dafa1cb84c37a9c3cd42cb42ab) )
+ROM_END
+
+
+ROM_START( kgradius )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "771.program", 0x0000, 0x1000, CRC(830c2afc) SHA1(bb9ebd4e52831cc02cd92dd4b37675f34cf37b8c) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "771.melody", 0x000, 0x100, CRC(4c586b73) SHA1(14c5ab2898013a577f678970a648c374749cc66d) )
+
+ ROM_REGION( 638097, "svg", 0)
+ ROM_LOAD( "kgradius.svg", 0, 638097, CRC(3adbc0f1) SHA1(fe426bf2335ce30395ea14ecab6399a93c67816a) )
+ROM_END
+
+
+ROM_START( kloneran )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "781.program", 0x0000, 0x1000, CRC(52b9735f) SHA1(06c5ef6e7e781b1176d4c1f2445f765ccf18b3f7) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "781.melody", 0x000, 0x100, CRC(a393de36) SHA1(55089f04833ccb318524ab2b584c4817505f4019) )
+
+ ROM_REGION( 633120, "svg", 0)
+ ROM_LOAD( "kloneran.svg", 0, 633120, CRC(f55e5292) SHA1(d0a91b5cd8a1894e7abc9c505fff4a8e1d3bec7a) )
+ROM_END
+
+
+ROM_START( kblades )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "782.program", 0x0000, 0x1000, CRC(3351a35d) SHA1(84c64b65d3cabfa20c18f4649c9ede2578b82523) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "782.melody", 0x000, 0x100, CRC(e8bf48ba) SHA1(3852c014dc9136566322b4f9e2aab0e3ec3a7387) )
+
+ ROM_REGION( 455113, "svg", 0)
+ ROM_LOAD( "kblades.svg", 0, 455113, CRC(e22f44c8) SHA1(ac95a837e20f87f3afc6c234f7407cbfcc438011) )
+ROM_END
+
+
+ROM_START( knfl )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "786.program", 0x0000, 0x1000, CRC(0535c565) SHA1(44cdcd284713ff0b194b24beff9f1b94c8bc63b2) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "786.melody", 0x000, 0x100, CRC(6c80263b) SHA1(d3c21e2f8491fef101907b8e0871b1e1c1ed58f5) )
+
+ ROM_REGION( 571134, "svg", 0)
+ ROM_LOAD( "knfl.svg", 0, 571134, CRC(f2c63235) SHA1(70b9232700f5498d3c63c63dd5904c0e19482cc2) )
+ROM_END
+
+
+ROM_START( kbilly )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "788.program", 0x0000, 0x1000, CRC(b8b1f734) SHA1(619dd527187b43276d081cdb1b13e0a9a81f2c6a) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "788.melody", 0x000, 0x100, CRC(cd488bea) SHA1(8fc60081f46e392978d6950c74711fb7ebd154de) )
+
+ ROM_REGION( 598276, "svg", 0)
+ ROM_LOAD( "kbilly.svg", 0, 598276, CRC(2969319e) SHA1(5cd1b0a6eee3168142c1d24f167b9ef38ad88402) )
+ROM_END
+
+
+ROM_START( kbucky )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "n58.program", 0x0000, 0x1000, CRC(7c36a0c4) SHA1(1b55ac64a71af746fd0a0f44266fcc92cca77482) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "n58.melody", 0x000, 0x100, CRC(7e99e469) SHA1(3e9a3843c6ab392f5989f3366df87a2d26cb8620) )
+
+ ROM_REGION( 727841, "svg", 0)
+ ROM_LOAD( "kbucky.svg", 0, 727841, CRC(c1d78488) SHA1(9ba4fdbce977455b8f1ad4bd2b01faa44bd05bc7) )
+ROM_END
+
+
+ROM_START( kgarfld )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "n62.program", 0x0000, 0x1000, CRC(5a762049) SHA1(26d4d891160d254dfd752734e1047126243f88dd) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "n62.melody", 0x000, 0x100, CRC(232b7d55) SHA1(76f6a19e8182ee3f00c9f4ef007b5dde75a9c00d) )
+
+ ROM_REGION( 581107, "svg", 0)
+ ROM_LOAD( "kgarfld.svg", 0, 581107, CRC(bf09a170) SHA1(075cb95535873018409eb15675183490c61b29b9) )
+ROM_END
+
+
+ROM_START( gnw_mmouse )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mc-25", 0x0000, 0x0740, BAD_DUMP CRC(cb820c32) SHA1(7e94fc255f32db725d5aa9e196088e490c1a1443) ) // dumped from Soviet clone
+
+ ROM_REGION( 102453, "svg", 0)
+ ROM_LOAD( "gnw_mmouse.svg", 0, 102453, BAD_DUMP CRC(88cc7c49) SHA1(c000d51d1b99750116b97f9bafc0314ea506366d) )
+ROM_END
+
+ROM_START( gnw_egg )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "eg-26", 0x0000, 0x0740, BAD_DUMP CRC(cb820c32) SHA1(7e94fc255f32db725d5aa9e196088e490c1a1443) ) // dumped from Soviet clone
+
+ ROM_REGION( 102848, "svg", 0)
+ ROM_LOAD( "gnw_egg.svg", 0, 102848, BAD_DUMP CRC(742c2605) SHA1(984d430ad2ff47ad7a3f9b25b7d3f3d51b10cca5) )
+ROM_END
+
+ROM_START( nupogodi )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "nupogodi.bin", 0x0000, 0x0740, CRC(cb820c32) SHA1(7e94fc255f32db725d5aa9e196088e490c1a1443) )
+
+ ROM_REGION( 156974, "svg", 0)
+ ROM_LOAD( "nupogodi.svg", 0, 156974, CRC(8d522ec6) SHA1(67afeca5eebd16449353ea43070a6b919f7ba408) )
+ROM_END
+
+ROM_START( exospace )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "exospace.bin", 0x0000, 0x0740, CRC(553e2b09) SHA1(2b74f8437b881fbb62b61f25435a5bfc66872a9a) )
+
+ ROM_REGION( 66790, "svg", 0)
+ ROM_LOAD( "exospace.svg", 0, 66790, BAD_DUMP CRC(df31043a) SHA1(2d8caf42894df699e469652e5f448beaebbcc1ae) )
+ROM_END
+
+ROM_START( gnw_opanic )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "op-51", 0x0000, 0x1000, CRC(31c288c9) SHA1(4bfd0fba94a9927cefc925db8196b063c5dd9b19) )
+
+ ROM_REGION( 79616, "svg_top", 0)
+ ROM_LOAD( "gnw_opanic_top.svg", 0, 79616, CRC(208dccc5) SHA1(b3cd3dcc8a00ba3b1b8d93d902f756fe579e4dfc) )
+
+ ROM_REGION( 112809, "svg_bottom", 0)
+ ROM_LOAD( "gnw_opanic_bottom.svg", 0, 112809, CRC(919b9649) SHA1(f3d3c8ca3fed81782a1fcb5a7aff07faea86db07) )
+ROM_END
+
+ROM_START( gnw_dkong )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "dk-52", 0x0000, 0x1000, CRC(5180cbf8) SHA1(5174570a8d6a601226f51e972bac6735535fe11d) )
+
+ ROM_REGION( 176706, "svg_top", 0)
+ ROM_LOAD( "gnw_dkong_top.svg", 0, 176706, CRC(db041556) SHA1(fb0f979dea3ecd25288d341fa80e35b5fd0a8349) )
+
+ ROM_REGION( 145397, "svg_bottom", 0)
+ ROM_LOAD( "gnw_dkong_bottom.svg", 0, 145397, CRC(2c8c9d08) SHA1(658fd0bbccaabb0645b02e5cb81709c4b2a4250e) )
+ROM_END
+
+ROM_START( gnw_mickdon )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "dm-53_565", 0x0000, 0x1000, CRC(e21fc0f5) SHA1(3b65ccf9f98813319410414e11a3231b787cdee6) )
+
+ ROM_REGION( 126434, "svg_top", 0)
+ ROM_LOAD( "gnw_mickdon_top.svg", 0, 126434, CRC(ff05f489) SHA1(2a533c7b5d7249d79f8d7795a0d57fd3e32d3d32) )
+
+ ROM_REGION( 122870, "svg_bottom", 0)
+ ROM_LOAD( "gnw_mickdon_bottom.svg", 0, 122870, CRC(8f06ddf1) SHA1(69d4b785781600abcdfc01b3902df1d0ae3608cf) )
+ROM_END
+
+ROM_START( gnw_ghouse )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "gh-54", 0x0000, 0x1000, CRC(4df12b4d) SHA1(708be5fef8dbd9337f5ab35baaca5bdf21e1f36c) )
+
+ ROM_REGION( 159098, "svg_top", 0)
+ ROM_LOAD( "gnw_ghouse_top.svg", 0, 159098, CRC(96bc58d9) SHA1(eda6a0abde739fb71af3e150751a519e59ef021d) )
+
+ ROM_REGION( 149757, "svg_bottom", 0)
+ ROM_LOAD( "gnw_ghouse_bottom.svg", 0, 149757, CRC(d66ee72c) SHA1(dcbe1c81ee0c7ddb9692858749ce6934f4dd7f30) )
+ROM_END
+
+ROM_START( gnw_dkong2 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "jr-55_560", 0x0000, 0x1000, CRC(46aed0ae) SHA1(72f75ccbd84aea094148c872fc7cc1683619a18a) )
+
+ ROM_REGION( 267443, "svg_top", 0)
+ ROM_LOAD( "gnw_dkong2_top.svg", 0, 267443, CRC(33b26edb) SHA1(600afdf22ff4ac4a4af2de9159287cc6e53dfe3a) )
+
+ ROM_REGION( 390558, "svg_bottom", 0)
+ ROM_LOAD( "gnw_dkong2_bottom.svg", 0, 390558, CRC(92d68958) SHA1(aba829bf89b93bf3a4e425c9a8f6eec9e5869bc4) )
+ROM_END
+
+
+ROM_START( gnw_mario )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mw-56", 0x0000, 0x1000, CRC(385e59da) SHA1(2f79281bdf2f2afca2fb5bd7b9a3beeffc9c4eb7) )
+
+ ROM_REGION( 154874, "svg_left", 0)
+ ROM_LOAD( "gnw_mario_left.svg", 0, 154874, CRC(73ba4f4a) SHA1(d5df39808a1af8e8ad5e397b4a50313221ab6e3b) )
+
+ ROM_REGION( 202863, "svg_right", 0)
+ ROM_LOAD( "gnw_mario_right.svg", 0, 202863, CRC(dd2473c9) SHA1(51aca37abf8e4959b84c441aa2d114e16c7d6010) )
+ROM_END
+
+
+ROM_START( gnw_bjack )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "bj-60.program", 0x0000, 0x1000, CRC(8e74f633) SHA1(54b0f65ee716d2820a9ed9c743755d2a2d99ce4d) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "bj-60.melody", 0x000, 0x100, BAD_DUMP CRC(2619224e) SHA1(b65dc590b6eb1de793e980af236ccf8360b3cfee) ) // dumped electronically, decap needed to verify accuracy
+
+ ROM_REGION( 75217, "svg_top", 0)
+ ROM_LOAD( "gnw_bjack_top.svg", 0, 75205, CRC(5eb0956e) SHA1(f7acd148e5478d4c2ddf06cff23c5e40faee2c24) )
+
+ ROM_REGION( 112450, "svg_bottom", 0)
+ ROM_LOAD( "gnw_bjack_bottom.svg", 0, 112438, CRC(9d985b1d) SHA1(cf8af6ce18994f687a5e6fbdda62af4d07a07cf8) )
+ROM_END
+
+
+ROM_START( gnw_squish )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mg-61", 0x0000, 0x1000, CRC(79cd509c) SHA1(969e5425984ba9e5183c68b38b3588f53d1e8e5d) )
+
+ ROM_REGION( 70300, "svg_top", 0)
+ ROM_LOAD( "gnw_squish_top.svg", 0, 70300, CRC(f1358ba9) SHA1(414d29db64b83a50b20f31b857e4c3a77d19d3c8) )
+
+ ROM_REGION( 279606, "svg_bottom", 0)
+ ROM_LOAD( "gnw_squish_bottom.svg", 0, 279606, CRC(1d4ac23f) SHA1(d6eb78bae5ca18cc5fe5d8a300902766dd9601aa) )
+ROM_END
+
+
+ROM_START( gnw_dkjr )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "dj-101", 0x0000, 0x1000, CRC(8dcfb5d1) SHA1(e0ef578e9362eb9a3cab631376df3cf55978f2de) )
+
+ ROM_REGION( 281161, "svg", 0)
+ ROM_LOAD( "gnw_dkjr.svg", 0, 281161, CRC(346b025c) SHA1(dad3f3f73d6c2ff4efb43ffd76e97ba0d5f0da73) )
+ROM_END
+
+
+ROM_START( gnw_mariocm )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "ml-102_577", 0x0000, 0x1000, CRC(c1128dea) SHA1(8647e36f43a0e37756a3c7b6a3f08d4c8243f1cc) )
+
+ ROM_REGION( 302931, "svg", 0)
+ ROM_LOAD( "gnw_mariocm.svg", 0, 302931, CRC(5517ae80) SHA1(1902e36d0470ee5548addeb087ea3e7d2c2520a2) )
+ROM_END
+
+
+ROM_START( gnw_tfish )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "tf-104", 0x0000, 0x1000, CRC(53cde918) SHA1(bc1e1b8f8b282bb886bb076c1c7ce35d00eca6fc) )
+
+ ROM_REGION( 257278, "svg", 0)
+ ROM_LOAD( "gnw_tfish.svg", 0, 257278, CRC(fc970f4a) SHA1(a73f5ee35b60842707f13edc5d58869fb2ec98cf) )
+ROM_END
+
+
+ROM_START( gnw_smb )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "ym-105.program", 0x0000, 0x1000, CRC(0dff3b12) SHA1(3fa83f88e49ea9d7080fe935ec90ce69acbe8850) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "ym-105.melody", 0x000, 0x100, CRC(b48c6d90) SHA1(a1ce1e52627767752974ab0d49bec48ead36663e) )
+
+ ROM_REGION( 648209, "svg", 0)
+ ROM_LOAD( "gnw_smb.svg", 0, 648209, CRC(4a6fdb28) SHA1(0a0bc48d82d5b8bf8ef96ef9ce2f87ba6ea850c1) )
+ROM_END
+
+
+ROM_START( gnw_climber )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "dr-106.program", 0x0000, 0x1000, CRC(2adcbd6d) SHA1(110dc08c65120ab2c76ee647e89aa2726e24ac1a) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "dr-106.melody", 0x000, 0x100, BAD_DUMP CRC(c99d7998) SHA1(4f8cf35b13f8b7654e7186bfd67d197d9053e949) ) // dumped electronically, decap needed to verify accuracy
+
+ ROM_REGION( 542332, "svg", 0)
+ ROM_LOAD( "gnw_climber.svg", 0, 542332, CRC(d7e84c21) SHA1(a5b5b68c8cdb3a09966bfb91b281791bef311248) )
+ROM_END
+
+
+ROM_START( gnw_boxing )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "bx-301_744.program", 0x0000, 0x1000, CRC(0fdf0303) SHA1(0b791c9d4874e9534d0a9b7a8968ce02fe4bee96) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "bx-301_744.melody", 0x000, 0x100, CRC(439d943d) SHA1(52880df15ec7513f96482f455ef3d9778aa24750) )
+
+ ROM_REGION( 265174, "svg", 0)
+ ROM_LOAD( "gnw_boxing.svg", 0, 265174, CRC(e8a3ab25) SHA1(53e32542b582dcdf4ddd051f182738eee6c732c9) )
+ROM_END
+
+
+ROM_START( tgaunt )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "583", 0x0000, 0x1000, CRC(598d8156) SHA1(9f776e8b9b4321e8118481e6b1304f8a38f9932e) )
+
+ ROM_REGION( 713020, "svg", 0)
+ ROM_LOAD( "tgaunt.svg", 0, 713020, CRC(1f65ae21) SHA1(57ca33d073d1096a7fc17f2bdac940868d1ae651) )
+ROM_END
+
+ROM_START( trobhood )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "583", 0x0000, 0x1000, CRC(598d8156) SHA1(9f776e8b9b4321e8118481e6b1304f8a38f9932e) )
+
+ ROM_REGION( 704892, "svg", 0)
+ ROM_LOAD( "trobhood.svg", 0, 704892, CRC(291fd8db) SHA1(1de6bd0e203f16c44f7d661e44863a1a919f3da9) )
+ROM_END
+
+
+ROM_START( tddragon )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "593", 0x0000, 0x1000, CRC(2642f778) SHA1(fee77acf93e057a8b4627389dfd481c6d9cbd02b) )
+
+ ROM_REGION( 511434, "svg", 0)
+ ROM_LOAD( "tddragon.svg", 0, 511434, CRC(641e7ceb) SHA1(bbfc37cc085e00921422f65d9aac9949f871e7b7) )
+ROM_END
+
+
+ROM_START( tkarnov )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "582", 0x0000, 0x1000, CRC(cee85bdd) SHA1(143e39524f1dea523e0575f327ed189343cc87f5) )
+
+ ROM_REGION( 527377, "svg", 0)
+ ROM_LOAD( "tkarnov.svg", 0, 527377, CRC(971840fc) SHA1(48db7139fa875e60b44340fb475b6d1081ef5c10) )
+ROM_END
+
+
+ROM_START( tvindictr )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "595", 0x0000, 0x1000, CRC(b574d16f) SHA1(d2cb0f2e21ca2defe49a4b45f4c8e169ae9979ab) )
+
+ ROM_REGION( 314165, "svg", 0)
+ ROM_LOAD( "tvindictr.svg", 0, 314165, CRC(2241992c) SHA1(efd44879d1c0d5befd7ea07089418406fc101315) )
+ROM_END
+
+
+ROM_START( tgaiden )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "m82", 0x0000, 0x1000, CRC(278eafb0) SHA1(14396a0010bade0fde705969151200ed432321e7) )
+
+ ROM_REGION( 100000, "svg", 0)
+ ROM_LOAD( "tgaiden.svg", 0, 100000, NO_DUMP )
+ROM_END
+
+
+ROM_START( tbatman )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "597", 0x0000, 0x1000, CRC(8b7acc97) SHA1(fe811675dc5c5ef9f6f969685c933926c8b9e868) )
+
+ ROM_REGION( 551890, "svg", 0)
+ ROM_LOAD( "tbatman.svg", 0, 551890, CRC(65809ee3) SHA1(5fc38bdb2108d45dc99bce3379253423ea88e0fc) )
+ROM_END
+
+
+ROM_START( tsharr2 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "m91", 0x0000, 0x1000, CRC(b207ac79) SHA1(9889dfec26089313ba2bdac845a75a26742d09e1) )
+
+ ROM_REGION( 555126, "svg", 0)
+ ROM_LOAD( "tsharr2.svg", 0, 555126, CRC(ff43e29b) SHA1(0af02e65a1dcf95958296a292343430670b67ae5) )
+ROM_END
+
+
+ROM_START( tstrider )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "m92", 0x0000, 0x1000, CRC(4b488e8f) SHA1(b037c220c4a456f0dac67d759736f202a7609ee5) )
+
+ ROM_REGION( 554817, "svg", 0)
+ ROM_LOAD( "tstrider.svg", 0, 554817, CRC(be5de6bd) SHA1(cde0a3fe21af24d7d22d2ce0aec9c308f8696c7e) )
+ROM_END
+
+
+ROM_START( tgoldnaxe )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "m94", 0x0000, 0x1000, CRC(af183fbf) SHA1(23716e2a7c4bb4842b2af1a43fe88db44e18dc17) )
+
+ ROM_REGION( 605483, "svg", 0)
+ ROM_LOAD( "tgoldnaxe.svg", 0, 605483, CRC(533bea14) SHA1(08d419bd7af5de7216654dc7f978beed95192c2d) )
+ROM_END
+
+
+ROM_START( trobocop2 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "m96", 0x0000, 0x1000, CRC(3704b60c) SHA1(04275833e1a79fd33226faf060890b66ae54e1d3) )
+
+ ROM_REGION( 463532, "svg", 0)
+ ROM_LOAD( "trobocop2.svg", 0, 463532, CRC(c2b92868) SHA1(87912f02bea967c10ba1d8f7c810e3c44b0e3cff) )
+ROM_END
+
+ROM_START( trockteer )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "m96", 0x0000, 0x1000, CRC(3704b60c) SHA1(04275833e1a79fd33226faf060890b66ae54e1d3) )
+
+ ROM_REGION( 558086, "svg", 0)
+ ROM_LOAD( "trockteer.svg", 0, 558086, CRC(8afe0f88) SHA1(702127a4ff72be492f72b24bd8917ae0e15f247d) )
+ROM_END
+
+
+ROM_START( taltbeast )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "m88", 0x0000, 0x1000, CRC(1b3d15e7) SHA1(78371230dff872d6c07eefdbc4856c2a3336eb61) )
+
+ ROM_REGION( 667887, "svg", 0)
+ ROM_LOAD( "taltbeast.svg", 0, 667887, CRC(1ca9bbf1) SHA1(be844dddee4a95f70ea2adf875d3ee6cda2a6633) )
+ROM_END
+
+
+ROM_START( tsf2010 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "ma2", 0x0000, 0x1000, CRC(764b3757) SHA1(c5f90b860128658576bb837e9cabbb3045ad2756) )
+
+ ROM_REGION( 595149, "svg", 0)
+ ROM_LOAD( "tsf2010.svg", 0, 595149, CRC(b873856b) SHA1(1d070d4d9578bbc322d1edead208bbd44340b71a) )
+ROM_END
+
+
+ROM_START( tswampt )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mb0", 0x0000, 0x1000, CRC(8433530c) SHA1(60716d3bba92dc8ac3f1ee29c5734c9e894a1aff) )
+
+ ROM_REGION( 578505, "svg", 0)
+ ROM_LOAD( "tswampt.svg", 0, 578505, CRC(98ff2fbb) SHA1(a5a4e9934b86f69176549f99246b40f323441945) )
+ROM_END
+
+
+ROM_START( tspidman )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "ma5", 0x0000, 0x1000, CRC(2624daed) SHA1(7c10434ae899637264de706045d48e3fce1d30a7) )
+
+ ROM_REGION( 605332, "svg", 0)
+ ROM_LOAD( "tspidman.svg", 0, 605332, CRC(6e687727) SHA1(c1a2ee450509e05d1db61e02f6a911207d2830c4) )
+ROM_END
+
+
+ROM_START( txmen )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "ma7", 0x0000, 0x1000, CRC(6f3ff34f) SHA1(aa24fbc3a4117ea51ebf951ee343a36c77692b72) )
+
+ ROM_REGION( 543232, "svg", 0)
+ ROM_LOAD( "txmen.svg", 0, 543232, CRC(51daf7f9) SHA1(b59ecbd83e05478f4b2654a019291c7e06893112) )
+ROM_END
+
+
+ROM_START( tddragon3 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "ma6", 0x0000, 0x1000, CRC(8e2da0d9) SHA1(54dd05124b4c605975b0cb1eadd7456ff4a94d68) )
+
+ ROM_REGION( 615684, "svg", 0)
+ ROM_LOAD( "tddragon3.svg", 0, 615684, CRC(3f5df090) SHA1(c9248fbf3a4dec0ce3b32b10fb67f133595cc54d) )
+ROM_END
+
+
+ROM_START( tflash )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mb5", 0x0000, 0x1000, CRC(f7f1d082) SHA1(49a7a931450cf27fe69076c4e15ffb34814e25d4) )
+
+ ROM_REGION( 587820, "svg", 0)
+ ROM_LOAD( "tflash.svg", 0, 587820, CRC(aa1ad063) SHA1(aec6b15569d3d58ff9a4f7db779cda4a1c8efc35) )
+ROM_END
+
+
+ROM_START( tmchammer )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "n63.program", 0x0000, 0x1000, CRC(303aa6f7) SHA1(296689be1ee05238e52e9882812868b2ea96202c) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "n63.melody", 0x000, 0x100, CRC(77c1a5a3) SHA1(c00ae3b7c64dd9db96eab520fe674a40571fc15f) )
+
+ ROM_REGION( 456446, "svg", 0)
+ ROM_LOAD( "tmchammer.svg", 0, 456446, CRC(79d6d45d) SHA1(bf6b8c6fdccad657377ad9f721dd22408f6ae775) )
+ROM_END
+
+
+ROM_START( tbtoads )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mb3", 0x0000, 0x1000, CRC(8fa4c55a) SHA1(2be97e63dfed51313e180d7388dd431058db5a51) )
+
+ ROM_REGION( 694365, "svg", 0)
+ ROM_LOAD( "tbtoads.svg", 0, 694365, CRC(3af488e9) SHA1(d0e9ec61fac23bb22e508da4fa8bf2a7b8f186cf) )
+ROM_END
+
+
+ROM_START( thook )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mb7", 0x0000, 0x1000, CRC(7eb1a6e2) SHA1(f4a09ab95c968b0ddbe56cd7bb2667881c145731) )
+
+ ROM_REGION( 680503, "svg", 0)
+ ROM_LOAD( "thook.svg", 0, 680503, CRC(28bd6da2) SHA1(e97b1dda219a766ffcca15d1b3279f5cee5e2fed) )
+ROM_END
+
+
+ROM_START( tbttf )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mc3", 0x0000, 0x1000, CRC(9c37a23c) SHA1(c09fa5caac8b574f8460265b98c0bea1d5e78c6a) )
+
+ ROM_REGION( 667700, "svg", 0)
+ ROM_LOAD( "tbttf.svg", 0, 667700, CRC(d1d19ec5) SHA1(7361943ccf1f4072bba6fd4e6acae3e2f3d7a0ea) )
+ROM_END
+
+
+ROM_START( taddams )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mc2", 0x0000, 0x1000, CRC(af33d432) SHA1(676ada238c389d1dd02dcb29731d69624f60b342) )
+
+ ROM_REGION( 554649, "svg", 0)
+ ROM_LOAD( "taddams.svg", 0, 554649, CRC(0b916c6d) SHA1(5a2456b4a0f31db94a78373baab46f3ff9732b92) )
+ROM_END
+
+
+ROM_START( thalone )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mc7", 0x0000, 0x1000, CRC(eceda335) SHA1(20c9ffcf914db61aba03716fe146bac42873ac82) )
+
+ ROM_REGION( 494235, "svg", 0)
+ ROM_LOAD( "thalone.svg", 0, 494235, CRC(0e32df1d) SHA1(1fff1d37a5fe66d4f59d12af3ce67665c0049800) )
+ROM_END
+
+
+ROM_START( txmenpx )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "md3", 0x0000, 0x1000, CRC(11c2b09a) SHA1(f94b1e3e60f002398b39c98946469dd1a6aa8e77) )
+
+ ROM_REGION( 572538, "svg", 0)
+ ROM_LOAD( "txmenpx.svg", 0, 572538, CRC(9a89c753) SHA1(e3828a8c10c77ee5634128d0e9239e8cda19f988) )
+ROM_END
+
+
+ROM_START( thalone2 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "md7", 0x0000, 0x1000, CRC(ac8a21e9) SHA1(9024f74e34056f90b7dbf439300797183f74eb00) )
+
+ ROM_REGION( 748886, "svg", 0)
+ ROM_LOAD( "thalone2.svg", 0, 748886, CRC(a5d8898e) SHA1(de8fae0169a3797a46b5c81d9b556df636a5674e) )
+ROM_END
+
+
+ROM_START( tsonic )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "n71.program", 0x0000, 0x1000, CRC(44cafd68) SHA1(bf8d0ab88d153fabc688ffec19959209ca79c3db) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "n71.melody", 0x000, 0x100, CRC(bae258c8) SHA1(81cb75d73fab4479cd92fcb13d9cb03cec2afdd5) )
+
+ ROM_REGION( 541450, "svg", 0)
+ ROM_LOAD( "tsonic.svg", 0, 541450, CRC(f01835e3) SHA1(25f924af55ffadd2aebf50a89f75571d788d5ac1) )
+ROM_END
+
+
+ROM_START( trobocop3 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mc6", 0x0000, 0x1000, CRC(07b44e4c) SHA1(3165c85e16c062d2d9d0c0f1b1f6bd6079b4de15) )
+
+ ROM_REGION( 612103, "svg", 0)
+ ROM_LOAD( "trobocop3.svg", 0, 612103, CRC(9a162642) SHA1(b775f64e4616c4fc8d2c139938f148c9666e646a) )
+ROM_END
+
+
+ROM_START( tdummies )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "me0", 0x0000, 0x1000, CRC(29efae4a) SHA1(0b26913a3fd2fde2b39549f0f7cbc3daaa41eb50) )
+
+ ROM_REGION( 525493, "svg", 0)
+ ROM_LOAD( "tdummies.svg", 0, 525493, CRC(a18a5216) SHA1(1238e8c489445e715d4fc53e597820845b386233) )
+ROM_END
+
+
+ROM_START( tsfight2 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "me1", 0x0000, 0x1000, CRC(73384e94) SHA1(350417d101ce034b3974b4a1d2e04bcb3bf70605) )
+
+ ROM_REGION( 630403, "svg", 0)
+ ROM_LOAD( "tsfight2.svg", 0, 630403, CRC(eadc2c81) SHA1(20b2a797f6b9a008c1994eaee7b87e3fe828e837) )
+ROM_END
+
+
+ROM_START( twworld )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "me7", 0x0000, 0x1000, CRC(dcb16d98) SHA1(539989e12bbc4a719818546c5edcfda02b98210e) )
+
+ ROM_REGION( 527859, "svg", 0)
+ ROM_LOAD( "twworld.svg", 0, 527859, CRC(0a2cffce) SHA1(d8c3f2fef60357e47ce0b44d588d0bb39112c8b9) )
+ROM_END
+
+
+ROM_START( tjpark )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mf4", 0x0000, 0x1000, CRC(f66faf73) SHA1(4cfa743dcd6e44a3c1f56206d5824fddba16df01) )
+
+ ROM_REGION( 812575, "svg", 0)
+ ROM_LOAD( "tjpark.svg", 0, 812575, CRC(539c9b9c) SHA1(bf9a95586438df677d753deb17abc97f8837cbe3) )
+ROM_END
+
+
+ROM_START( tsonic2 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "n86.program", 0x0000, 0x1000, CRC(782874c5) SHA1(b7eb1f56cbc781ba0b90f6b4b5b51944120733cc) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "n86.melody", 0x000, 0x100, CRC(c16fa2b2) SHA1(222772d311fd3b3b05d80cfd539c2c862bed0be5) )
+
+ ROM_REGION( 667887, "svg", 0)
+ ROM_LOAD( "tsonic2.svg", 0, 667887, CRC(ef82d40e) SHA1(f22efba565adb32634d8b46c31459ec833b13d98) )
+ROM_END
+
+
+ROM_START( tdennis )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mf9", 0x0000, 0x1000, CRC(d95f54d5) SHA1(1b3a170f32deec98e54ad09c04b404f5ae03dcea) )
+
+ ROM_REGION( 754842, "svg", 0)
+ ROM_LOAD( "tdennis.svg", 0, 754842, CRC(3b1ed476) SHA1(adc94919daa9a6c42f1acd8ef5113b61859338b7) )
+ROM_END
+
+
+ROM_START( tsddragon )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mf5", 0x0000, 0x1000, CRC(264c8e82) SHA1(470eb2f09a58ef05eb0b7c8e11380ad1d8ce4e1a) )
+
+ ROM_REGION( 753533, "svg", 0)
+ ROM_LOAD( "tsddragon.svg", 0, 753533, CRC(fb526049) SHA1(552fe005a6e23e083867b7d1c10d20daa8913a14) )
+ROM_END
+
+
+ROM_START( tnmarebc )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mg0", 0x0000, 0x1000, CRC(5ef21421) SHA1(8fd458575111b89d7c33c969e76703bde5ad2c36) )
+
+ ROM_REGION( 631310, "svg", 0)
+ ROM_LOAD( "tnmarebc.svg", 0, 631310, CRC(f9c96205) SHA1(1947d358efd94ae3257ed959172a819798d2c9a1) )
+ROM_END
+
+
+ROM_START( ttransf2 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mg2", 0x0000, 0x1000, CRC(65c0f456) SHA1(b1bc3887c5088b3fe359585658e5c5236c09af9e) )
+
+ ROM_REGION( 727662, "svg", 0)
+ ROM_LOAD( "ttransf2.svg", 0, 727662, CRC(52fd5ea1) SHA1(35ae9fe2cea14ee4c591df0458fed478c9feb044) )
+ROM_END
+
+
+ROM_START( topaliens )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mj1", 0x0000, 0x1000, CRC(ccc196cf) SHA1(f18f7cf842cddecf90d05ab0f90257bb76514f54) )
+
+ ROM_REGION( 1214876, "svg", 0)
+ ROM_LOAD( "topaliens.svg", 0, 1214876, CRC(683c70aa) SHA1(0fac5ba8ab5f9b73a3cbbff046be60550fa5f98a) )
+ROM_END
+
+
+ROM_START( tmkombat )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mg6", 0x0000, 0x1000, CRC(f6375dc7) SHA1(a711199c2623979f19c11067ebfff9355256c2c3) )
+
+ ROM_REGION( 841829, "svg", 0)
+ ROM_LOAD( "tmkombat.svg", 0, 841829, CRC(9dc4f58c) SHA1(9c9b080d7f3b777407445c22195990c55c6352ca) )
+ROM_END
+
+
+ROM_START( tshadow )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mj5", 0x0000, 0x1000, CRC(09822d73) SHA1(30cae8b783a4f388193aee248fa18c6c1042e0ec) )
+
+ ROM_REGION( 946450, "svg", 0)
+ ROM_LOAD( "tshadow.svg", 0, 946450, CRC(5cab680a) SHA1(8f8f660c08fc56287362b11c183655047fbd91ca) )
+ROM_END
+
+
+ROM_START( tskelwarr )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mk0", 0x0000, 0x1000, CRC(dc7827a1) SHA1(74ff143605684df0c70db604a5f22dbf512044d7) )
+
+ ROM_REGION( 1125002, "svg", 0)
+ ROM_LOAD( "tskelwarr.svg", 0, 1125002, CRC(49c6ca24) SHA1(71f4ed98ab558deeb86820b7fbf7534a7b7d6b01) )
+ROM_END
+
+
+ROM_START( tbatfor )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mk3", 0x0000, 0x1000, CRC(9993c382) SHA1(0c89e21024315ce7c086af5390c60f5766028c4f) )
+
+ ROM_REGION( 902364, "svg", 0)
+ ROM_LOAD( "tbatfor.svg", 0, 902364, CRC(56889c05) SHA1(dda393ca99196de38ad2e989ec6c292adc36ec5e) )
+ROM_END
+
+
+ROM_START( tjdredd )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mk5", 0x0000, 0x1000, CRC(7beee5a7) SHA1(9a190197c5751b43a9ab2dc8c536934dc5fc5e83) )
+
+ ROM_REGION( 1051586, "svg", 0)
+ ROM_LOAD( "tjdredd.svg", 0, 1051586, CRC(4fcdca0a) SHA1(d4b019fec94890ba6600baf2b2096dbcf3295180) )
+ROM_END
+
+
+ROM_START( tapollo13 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "10_07", 0x0000, 0x1000, CRC(63d0deaa) SHA1(d5de99d5e0ee08ec2ebeef7189ebac1c008d2e7d) )
+
+ ROM_REGION( 643176, "svg", 0)
+ ROM_LOAD( "tapollo13.svg", 0, 643176, CRC(e2dac162) SHA1(4089fa485579d2b87ac49b1cf33d6c2c085ea4c5) )
+ROM_END
+
+
+ROM_START( tgoldeye )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "10_06", 0x0000, 0x1000, CRC(fe053efb) SHA1(3c90c0fa43e6e5e1f76b306e402f902d19175c96) )
+
+ ROM_REGION( 938916, "svg", 0)
+ ROM_LOAD( "tgoldeye.svg", 0, 938916, CRC(6dddf962) SHA1(1ced43b4225b86eca415f9af7db5fb5e80040186) )
+ROM_END
+
+
+ROM_START( tinday )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "10_16", 0x0000, 0x1000, CRC(77c2c2f7) SHA1(06326b26d0f6757180724ba0bdeb4110cc7e29d6) )
+
+ ROM_REGION( 1162672, "svg", 0)
+ ROM_LOAD( "tinday.svg", 0, 1162672, CRC(9b9a8047) SHA1(2aeaa71a54cf897d2a5d91133c733613ca229aae) )
+ROM_END
+
+
+ROM_START( tsjam )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "10_23", 0x0000, 0x1000, CRC(6eaabfbd) SHA1(f0ecbd6f65fe72ce2d8a452685be2e77a63fc9f0) )
+
+ ROM_REGION( 1046147, "svg", 0)
+ ROM_LOAD( "tsjam.svg", 0, 1046147, CRC(6d24e1c9) SHA1(ddbfbd85f70ec964c68f982a8ee8070e3786a85e) )
+ROM_END
+
+
+ROM_START( tbatmana )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "n81.program", 0x0000, 0x1000, CRC(efb3f122) SHA1(d55c2fb92fb9bd41d6001f42143691b84f3f389a) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "n81.melody", 0x000, 0x100, CRC(56ba8fe5) SHA1(5c286ae1bfc943bbe8c8f4cdc9c8b73d9b3c186e) )
+
+ ROM_REGION( 618831, "svg", 0)
+ ROM_LOAD( "tbatmana.svg", 0, 618831, CRC(fc38cb9d) SHA1(1b6c10dcd33bfcfef43d61f97fa8e530011c1e61) )
+ROM_END
+
+
+ROM_START( tigarden )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "0019_238e", 0x0000, 0x1000, CRC(8bd0eadd) SHA1(7bb5eb30d569901dce52d777bc01c0979e4afa06) )
+
+ ROM_REGION( 409084, "svg", 0)
+ ROM_LOAD( "tigarden.svg", 0, 409084, CRC(cfda5138) SHA1(1bc4ed65ae0cdca3e1e9458d68ca4d6e0fc0e901) )
+ROM_END
+
ROM_START( nummunch )
ROM_REGION( 0x1000, "maincpu", 0 )
@@ -8845,14 +7843,6 @@ ROM_END
-} // anonymous namespace
-
-/***************************************************************************
-
- Game driver(s)
-
-***************************************************************************/
-
// YEAR NAME PARENT COMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
// Konami
CONS( 1989, kdribble, 0, 0, kdribble, kdribble, kdribble_state, empty_init, "Konami", "Double Dribble (handheld)", MACHINE_SUPPORTS_SAVE )
@@ -8868,16 +7858,10 @@ CONS( 1991, kbucky, 0, 0, kbucky, kbucky, kbucky_state,
CONS( 1991, kgarfld, 0, 0, kgarfld, kgarfld, kgarfld_state, empty_init, "Konami", "Garfield (handheld)", MACHINE_SUPPORTS_SAVE )
// Nintendo G&W: wide screen
-CONS( 1981, gnw_pchute, 0, 0, gnw_pchute, gnw_pchute, gnw_pchute_state, empty_init, "Nintendo", "Game & Watch: Parachute", MACHINE_SUPPORTS_SAVE )
-CONS( 1981, gnw_octopus, 0, 0, gnw_octopus, gnw_octopus, gnw_octopus_state, empty_init, "Nintendo", "Game & Watch: Octopus", MACHINE_SUPPORTS_SAVE )
CONS( 1981, gnw_mmouse, 0, 0, gnw_mmouse, gnw_mmouse, gnw_mmouse_state, empty_init, "Nintendo", "Game & Watch: Mickey Mouse", MACHINE_SUPPORTS_SAVE )
CONS( 1981, gnw_egg, gnw_mmouse, 0, gnw_egg, gnw_mmouse, gnw_mmouse_state, empty_init, "Nintendo", "Game & Watch: Egg", MACHINE_SUPPORTS_SAVE )
CONS( 1984, nupogodi, gnw_mmouse, 0, nupogodi, gnw_mmouse, gnw_mmouse_state, empty_init, "Elektronika", "Nu, pogodi!", MACHINE_SUPPORTS_SAVE )
CONS( 1989, exospace, gnw_mmouse, 0, exospace, exospace, gnw_mmouse_state, empty_init, "Elektronika", "Explorers of Space", MACHINE_SUPPORTS_SAVE )
-CONS( 1981, gnw_fire, 0, 0, gnw_fire, gnw_fire, gnw_fire_state, empty_init, "Nintendo", "Game & Watch: Fire (wide screen)", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, gnw_tbridge, 0, 0, gnw_tbridge, gnw_tbridge, gnw_tbridge_state, empty_init, "Nintendo", "Game & Watch: Turtle Bridge", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, gnw_fireatk, 0, 0, gnw_fireatk, gnw_fireatk, gnw_fireatk_state, empty_init, "Nintendo", "Game & Watch: Fire Attack", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, gnw_stennis, 0, 0, gnw_stennis, gnw_stennis, gnw_stennis_state, empty_init, "Nintendo", "Game & Watch: Snoopy Tennis", MACHINE_SUPPORTS_SAVE )
// Nintendo G&W: multi screen
CONS( 1982, gnw_opanic, 0, 0, gnw_opanic, gnw_opanic, gnw_opanic_state, empty_init, "Nintendo", "Game & Watch: Oil Panic", MACHINE_SUPPORTS_SAVE)
@@ -8886,19 +7870,15 @@ CONS( 1982, gnw_mickdon, 0, 0, gnw_mickdon, gnw_mickdon, gnw_mickdon_st
CONS( 1982, gnw_ghouse, 0, 0, gnw_ghouse, gnw_ghouse, gnw_ghouse_state, empty_init, "Nintendo", "Game & Watch: Green House", MACHINE_SUPPORTS_SAVE )
CONS( 1983, gnw_dkong2, 0, 0, gnw_dkong2, gnw_dkong2, gnw_dkong2_state, empty_init, "Nintendo", "Game & Watch: Donkey Kong II", MACHINE_SUPPORTS_SAVE )
CONS( 1983, gnw_mario, 0, 0, gnw_mario, gnw_mario, gnw_mario_state, empty_init, "Nintendo", "Game & Watch: Mario Bros.", MACHINE_SUPPORTS_SAVE )
-CONS( 1983, gnw_rshower, 0, 0, gnw_rshower, gnw_rshower, gnw_rshower_state, empty_init, "Nintendo", "Game & Watch: Rain Shower", MACHINE_SUPPORTS_SAVE)
-CONS( 1983, gnw_lboat, 0, 0, gnw_lboat, gnw_lboat, gnw_lboat_state, empty_init, "Nintendo", "Game & Watch: Lifeboat", MACHINE_SUPPORTS_SAVE)
CONS( 1985, gnw_bjack, 0, 0, gnw_bjack, gnw_bjack, gnw_bjack_state, empty_init, "Nintendo", "Game & Watch: Black Jack", MACHINE_SUPPORTS_SAVE)
CONS( 1986, gnw_squish, 0, 0, gnw_squish, gnw_squish, gnw_squish_state, empty_init, "Nintendo", "Game & Watch: Squish", MACHINE_SUPPORTS_SAVE )
// Nintendo G&W: new wide screen
CONS( 1982, gnw_dkjr, 0, 0, gnw_dkjr, gnw_dkjr, gnw_dkjr_state, empty_init, "Nintendo", "Game & Watch: Donkey Kong Jr. (new wide screen)", MACHINE_SUPPORTS_SAVE )
CONS( 1983, gnw_mariocm, 0, 0, gnw_mariocm, gnw_mariocm, gnw_mariocm_state, empty_init, "Nintendo", "Game & Watch: Mario's Cement Factory (new wide screen)", MACHINE_SUPPORTS_SAVE )
-CONS( 1983, gnw_manhole, 0, 0, gnw_manhole, gnw_manhole, gnw_manhole_state, empty_init, "Nintendo", "Game & Watch: Manhole (new wide screen)", MACHINE_SUPPORTS_SAVE )
CONS( 1985, gnw_tfish, 0, 0, gnw_tfish, gnw_tfish, gnw_tfish_state, empty_init, "Nintendo", "Game & Watch: Tropical Fish", MACHINE_SUPPORTS_SAVE )
CONS( 1988, gnw_smb, 0, 0, gnw_smb, gnw_smb, gnw_smb_state, empty_init, "Nintendo", "Game & Watch: Super Mario Bros. (new wide screen)", MACHINE_SUPPORTS_SAVE )
CONS( 1988, gnw_climber, 0, 0, gnw_climber, gnw_climber, gnw_climber_state, empty_init, "Nintendo", "Game & Watch: Climber (new wide screen)", MACHINE_SUPPORTS_SAVE )
-CONS( 1988, gnw_bfight, 0, 0, gnw_bfight, gnw_bfight, gnw_bfight_state, empty_init, "Nintendo", "Game & Watch: Balloon Fight (new wide screen)", MACHINE_SUPPORTS_SAVE )
// Nintendo G&W: micro vs. system (actually, no official Game & Watch logo anywhere)
CONS( 1984, gnw_boxing, 0, 0, gnw_boxing, gnw_boxing, gnw_boxing_state, empty_init, "Nintendo", "Micro Vs. System: Boxing", MACHINE_SUPPORTS_SAVE )
@@ -8950,8 +7930,8 @@ CONS( 1995, tbatfor, 0, 0, tbatfor, tbatfor, tbatfor_state,
CONS( 1995, tjdredd, 0, 0, tjdredd, tjdredd, tjdredd_state, empty_init, "Tiger Electronics", "Judge Dredd (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1995, tapollo13, 0, 0, tapollo13, tapollo13, tapollo13_state, empty_init, "Tiger Electronics", "Apollo 13 (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1995, tgoldeye, 0, 0, tgoldeye, tgoldeye, tgoldeye_state, empty_init, "Tiger Electronics", "007: GoldenEye (handheld)", MACHINE_SUPPORTS_SAVE )
-CONS( 1996, tsjam, 0, 0, tsjam, tsjam, tsjam_state, empty_init, "Tiger Electronics", "Space Jam (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1996, tinday, 0, 0, tinday, tinday, tinday_state, empty_init, "Tiger Electronics", "Independence Day (handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1996, tsjam, 0, 0, tsjam, tsjam, tsjam_state, empty_init, "Tiger Electronics", "Space Jam (handheld)", MACHINE_SUPPORTS_SAVE )
// Tiger 72-xxx models
CONS( 1992, tbatmana, 0, 0, tbatmana, tbatmana, tbatmana_state, empty_init, "Tiger Electronics", "Batman: The Animated Series (handheld)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp
index 3a650e9cd06..710ae7de841 100644
--- a/src/mame/drivers/hh_tms1k.cpp
+++ b/src/mame/drivers/hh_tms1k.cpp
@@ -69,7 +69,7 @@
*MP3232 TMS1000 1979, Fonas 2-Player Baseball (no "MP" on chip label)
@MP3300 TMS1000 1979, Milton Bradley Simon (Rev F)
@MP3301A TMS1000 1979, Milton Bradley Big Trak
- @MP3320A TMS1000 1979, Coleco Head to Head: Electronic Basketball
+ *MP3320A TMS1000 1979, Coleco Head to Head: Electronic Basketball
@MP3321A TMS1000 1979, Coleco Head to Head: Electronic Hockey
*MP3352 TMS1200 1979, Tiger Sub Wars (model 7-490)
@M32001 TMS1000 1981, Coleco Quiz Wiz Challenger (note: MP3398, MP3399, M3200x?)
@@ -143,6 +143,7 @@
- finish bshipb SN76477 sound
- improve elecbowl driver
- is alphie(patent) the same as the final version?
+ - h2hhockey R9 timing is wrong: passing seems too slow, and in-game clock too fast
***************************************************************************/
@@ -198,7 +199,6 @@
#include "gjackpot.lh"
#include "gpoker.lh"
#include "h2hbaseb.lh"
-#include "h2hbaskb.lh"
#include "h2hboxing.lh"
#include "h2hfootb.lh"
#include "h2hhockey.lh"
@@ -211,7 +211,6 @@
#include "merlin.lh" // clickable
#include "mmerlin.lh" // clickable
#include "monkeysee.lh"
-#include "phpball.lh"
#include "quizwizc.lh"
#include "raisedvl.lh"
#include "simon.lh" // clickable
@@ -228,9 +227,9 @@
#include "tcfballa.lh"
#include "timaze.lh"
#include "xl25.lh" // clickable
-#include "zodiac.lh" // clickable
+#include "zodiac.lh"
-//#include "hh_tms1k_test.lh" // common test-layout - use external artwork
+#include "hh_tms1k_test.lh" // common test-layout - use external artwork
// machine_start/reset
@@ -394,23 +393,6 @@ u8 hh_tms1k_state::read_rotated_inputs(int columns, u8 rowmask)
return ret;
}
-void hh_tms1k_state::switch_change(int sel, u32 mask, bool next)
-{
- // config switches (for direct control)
- ioport_field *inp = m_inp_matrix[sel]->field(mask);
-
- if (next && inp->has_next_setting())
- inp->select_next_setting();
- else if (!next && inp->has_previous_setting())
- inp->select_previous_setting();
-}
-
-INPUT_CHANGED_MEMBER(hh_tms1k_state::reset_button)
-{
- // when an input is directly wired to MCU INIT pin
- m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
-}
-
INPUT_CHANGED_MEMBER(hh_tms1k_state::power_button)
{
m_power_on = (bool)(uintptr_t)param;
@@ -434,12 +416,10 @@ void hh_tms1k_state::power_off()
/***************************************************************************
- Minidrivers (subclass, I/O, Inputs, Machine Config, ROM Defs)
+ Minidrivers (subclass, I/O, Inputs, Machine Config)
***************************************************************************/
-namespace {
-
/***************************************************************************
A-One LSI Match Number
@@ -460,8 +440,8 @@ namespace {
class matchnum_state : public hh_tms1k_state
{
public:
- matchnum_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ matchnum_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -567,18 +547,6 @@ void matchnum_state::matchnum(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( matchnum )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp0163", 0x0000, 0x0400, CRC(37507600) SHA1(b1d4d8ea563e97ef378b42c44cb3ea4eb6abe0d2) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_matchnum_output.pla", 0, 365, CRC(da29670c) SHA1(bcec28bf25dc8c81d08851ad8a3f4e89f413017a) )
-ROM_END
-
@@ -601,8 +569,8 @@ ROM_END
class arrball_state : public hh_tms1k_state
{
public:
- arrball_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ arrball_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -679,18 +647,6 @@ void arrball_state::arrball(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( arrball )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp0166", 0x0000, 0x0400, CRC(a78694db) SHA1(362aa6e356288e8df7da610246bd01fe72985d57) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_arrball_output.pla", 0, 365, CRC(ffc206fb) SHA1(339be3f066fb2f075211c554e81260b49cd83d15) )
-ROM_END
-
@@ -721,8 +677,8 @@ ROM_END
class mathmagi_state : public hh_tms1k_state
{
public:
- mathmagi_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ mathmagi_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -816,13 +772,41 @@ static INPUT_PORTS_START( mathmagi )
PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
-// output PLA is not decapped, this was made by hand
+// output PLA is not decapped
static const u16 mathmagi_output_pla[0x20] =
{
- 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, // 0, 1, 2, 3, 4, 5, 6, 7
- 0x7f, 0x6f, 0x53, 0x50, 0x08, 0x79, 0x40, 0x00, // 8, 9, questionmark, r, underscore?, E, -(negative), empty
- 0x00, 0x40, 0x08, 0x7c, 0x02, 0x42, 0x06, 0x6e, // empty, led4/-, led3, b, led2, +, ×, y
- 0x01, 0x41, 0x09, 0, 0, 0x5c, 0, 0x3d // led1, ÷, =, ?, ?, o, ?, G
+ lA+lB+lC+lD+lE+lF, // 0
+ lB+lC, // 1
+ lA+lB+lG+lE+lD, // 2
+ lA+lB+lG+lC+lD, // 3
+ lF+lB+lG+lC, // 4
+ lA+lF+lG+lC+lD, // 5
+ lA+lF+lG+lC+lD+lE, // 6
+ lA+lB+lC, // 7
+ lA+lB+lC+lD+lE+lF+lG, // 8
+ lA+lB+lG+lF+lC+lD, // 9
+ lA+lB+lG+lE, // question mark
+ lE+lG, // r
+ lD, // underscore?
+ lA+lF+lG+lE+lD, // E
+ lG, // -
+ 0, // empty
+ 0, // empty
+ lG, // lamp 4 or MATH -
+ lD, // lamp 3
+ lF+lE+lD+lC+lG, // b
+ lB, // lamp 2
+ lB+lG, // MATH +
+ lB+lC, // MATH mul
+ lF+lG+lB+lC+lD, // y
+ lA, // lamp 1
+ lA+lG, // MATH div
+ lA+lD, // EQUALS
+ 0, // ?
+ 0, // ?
+ lE+lD+lC+lG, // o
+ 0, // ?
+ lA+lF+lE+lD+lC // G
};
void mathmagi_state::mathmagi(machine_config &config)
@@ -840,18 +824,6 @@ void mathmagi_state::mathmagi(machine_config &config)
/* no sound! */
}
-// roms
-
-ROM_START( mathmagi )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp1030", 0x0000, 0x0800, CRC(a81d7ccb) SHA1(4756ce42f1ea28ce5fe6498312f8306f10370969) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_mathmagi_output.pla", 0, 365, NO_DUMP )
-ROM_END
-
@@ -877,8 +849,8 @@ ROM_END
class bcheetah_state : public hh_tms1k_state
{
public:
- bcheetah_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ bcheetah_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
@@ -956,18 +928,6 @@ void bcheetah_state::bcheetah(machine_config &config)
/* no sound! */
}
-// roms
-
-ROM_START( bcheetah )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp0915", 0x0000, 0x0400, CRC(2968c81e) SHA1(d1e6691952600e88ccf626cb3d683419a1e8468c) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_bcheetah_output.pla", 0, 365, CRC(cc6d1ecd) SHA1(b0635a841d8850c36c1f414abe0571b81884b972) )
-ROM_END
-
@@ -987,8 +947,8 @@ ROM_END
class amaztron_state : public hh_tms1k_state
{
public:
- amaztron_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ amaztron_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1099,18 +1059,6 @@ void amaztron_state::amaztron(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( amaztron )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp3405", 0x0000, 0x0800, CRC(9cbc0009) SHA1(17772681271b59280687492f37fa0859998f041d) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_amaztron_output.pla", 0, 365, CRC(f3875384) SHA1(3c256a3db4f0aa9d93cf78124db39f4cbdc57e4a) )
-ROM_END
-
@@ -1129,8 +1077,8 @@ ROM_END
class zodiac_state : public hh_tms1k_state
{
public:
- zodiac_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ zodiac_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1165,7 +1113,7 @@ WRITE16_MEMBER(zodiac_state::write_r)
WRITE16_MEMBER(zodiac_state::write_o)
{
// O0-O7: digit segment/led data
- m_o = bitswap<8>(data,0,7,6,5,4,3,2,1);
+ m_o = data;
prepare_display();
}
@@ -1224,7 +1172,7 @@ static INPUT_PORTS_START( zodiac )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter") PORT_CHAR(13)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("Clear") PORT_CHAR(8)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("Clear") PORT_CHAR(8)
PORT_START("IN.5") // R8
PORT_CONFNAME( 0x03, 0x01, "Mode")
@@ -1234,11 +1182,41 @@ static INPUT_PORTS_START( zodiac )
PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
-// output PLA is not decapped, dumped electronically
+// output PLA is not decapped
static const u16 zodiac_output_pla[0x20] =
{
- 0x01, 0x08, 0xa0, 0xa8, 0x40, 0x48, 0xe0, 0xe8, 0x06, 0x10, 0xa6, 0xb0, 0x46, 0x50, 0xe6, 0xf0,
- 0x7e, 0x0c, 0xb6, 0x9e, 0xcc, 0xda, 0xfa, 0x0e, 0xfe, 0xce, 0xee, 0xbc, 0xf2, 0x3c, 0x70, 0x7c
+ 0x80, // empty/led 1/7
+ lC, // i/led 2/8
+ lE+lG, // r/led 3/9
+ lC+lE+lG, // n
+ lF, // seg F/led 4/10
+ 0, // ?
+ 0, // ?
+ lC+lE+lF+lG, // h
+ lB, // seg B/led 5/11
+ lD, // seg D/led 6/12
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ lA+lB+lE+lF+lG, // P
+ 0, // ?
+ lA+lB+lC+lD+lE+lF, // 0
+ lB+lC, // 1
+ lA+lB+lD+lE+lG, // 2
+ lA+lB+lC+lD+lG, // 3
+ lB+lC+lF+lG, // 4
+ lA+lC+lD+lF+lG, // 5
+ lA+lC+lD+lE+lF+lG, // 6
+ lA+lB+lC, // 7
+ lA+lB+lC+lD+lE+lF+lG, // 8
+ lA+lB+lC+lD+lF+lG, // 9
+ lA+lB+lC+lE+lF+lG, // A
+ lB+lC+lD+lE+lG, // d
+ lA+lD+lE+lF+lG, // E
+ lB+lC+lD+lE, // J
+ lD+lE+lF, // L
+ lB+lC+lD+lE+lF // U
};
void zodiac_state::zodiac(machine_config &config)
@@ -1259,18 +1237,6 @@ void zodiac_state::zodiac(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( zodiac )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp3435", 0x0000, 0x0800, CRC(ecdc3160) SHA1(a7e82d66314a039fcffeddf99919d9f9ad42d61d) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, BAD_DUMP CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) // not verified
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_zodiac_output.pla", 0, 365, NO_DUMP )
-ROM_END
-
@@ -1290,8 +1256,8 @@ ROM_END
class cqback_state : public hh_tms1k_state
{
public:
- cqback_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ cqback_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1386,18 +1352,6 @@ void cqback_state::cqback(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( cqback )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp3415.u4", 0x0000, 0x0800, CRC(65ebdabf) SHA1(9b5cf5adaf9132ced87f611ae8c3148b9b62ba89) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_cqback_output.pla", 0, 365, CRC(c6dcbfd0) SHA1(593b6b7de981a28d1b4a33336b39df92d02ed4f4) )
-ROM_END
-
@@ -1420,8 +1374,8 @@ ROM_END
class h2hfootb_state : public hh_tms1k_state
{
public:
- h2hfootb_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ h2hfootb_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1516,81 +1470,51 @@ void h2hfootb_state::h2hfootb(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( h2hfootb )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp3460.u3", 0x0000, 0x0800, CRC(3a4e53a8) SHA1(5052e706f992c6c4bada1fa7769589eec3df6471) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_h2hfootb_output.pla", 0, 365, CRC(c8d85873) SHA1(16bd6fc8e3cd16d5f8fd32d0c74e67de77f5487e) )
-ROM_END
-
/***************************************************************************
- Coleco Head to Head: Electronic Basketball (model 2150)
- * TMS1000NLL MP3320A (die label 1000E MP3320A)
- * 2-digit 7seg LED display, LED grid display, 1-bit sound
-
Coleco Head to Head: Electronic Hockey (model 2160)
* TMS1000NLL E MP3321A (die label 1000E MP3321A)
- * same PCB/hardware as above
+ * 2-digit 7seg LED display, LED grid display, 1-bit sound
Unlike the COP420 version(see hh_cop400.cpp driver), each game has its own MCU.
***************************************************************************/
-class h2hbaskb_state : public hh_tms1k_state
+class h2hhockey_state : public hh_tms1k_state
{
public:
- h2hbaskb_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag),
+ h2hhockey_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag),
m_cap_empty_timer(*this, "cap_empty")
{ }
required_device<timer_device> m_cap_empty_timer;
TIMER_DEVICE_CALLBACK_MEMBER(cap_empty_callback);
- bool m_cap_state;
- attotime m_cap_charge;
+ bool m_cap;
void prepare_display();
DECLARE_WRITE16_MEMBER(write_r);
DECLARE_WRITE16_MEMBER(write_o);
DECLARE_READ8_MEMBER(read_k);
- void h2hbaskb(machine_config &config);
void h2hhockey(machine_config &config);
protected:
virtual void machine_start() override;
};
-void h2hbaskb_state::machine_start()
-{
- hh_tms1k_state::machine_start();
-
- // zerofill/register for savestates
- m_cap_state = false;
- m_cap_charge = attotime::zero;
-
- save_item(NAME(m_cap_state));
- save_item(NAME(m_cap_charge));
-}
-
// handlers
-TIMER_DEVICE_CALLBACK_MEMBER(h2hbaskb_state::cap_empty_callback)
+TIMER_DEVICE_CALLBACK_MEMBER(h2hhockey_state::cap_empty_callback)
{
if (~m_r & 0x200)
- m_cap_state = false;
+ m_cap = false;
}
-void h2hbaskb_state::prepare_display()
+void h2hhockey_state::prepare_display()
{
// R6,R7 are commons for R0-R5
u16 sel = 0;
@@ -1601,7 +1525,7 @@ void h2hbaskb_state::prepare_display()
display_matrix(7, 6+6, m_o, sel);
}
-WRITE16_MEMBER(h2hbaskb_state::write_r)
+WRITE16_MEMBER(h2hhockey_state::write_r)
{
// R0-R3: input mux
m_inp_mux = (data & 0xf);
@@ -1610,46 +1534,32 @@ WRITE16_MEMBER(h2hbaskb_state::write_r)
m_speaker->level_w(data >> 8 & 1);
// R9: K8 and 15uF cap to V- (used as timer)
- // rising edge, remember the time
- if (data & ~m_r & 0x200)
- {
- m_cap_state = true;
- m_cap_charge = machine().time();
- }
- // falling edge, determine how long K8 should stay up
- if (~data & m_r & 0x200)
- {
- const attotime full = attotime::from_usec(1300); // approx. charge time
- const int factor = 27; // approx. factor for charge/discharge to logic 0
-
- attotime charge = machine().time() - m_cap_charge;
- if (charge > full)
- charge = full;
-
- m_cap_empty_timer->adjust(charge * factor);
- }
+ if (data & 0x200)
+ m_cap = true;
+ else if (m_r & 0x200) // falling edge
+ m_cap_empty_timer->adjust(attotime::from_msec(28)); // not accurate
// R0-R7: led select
m_r = data;
prepare_display();
}
-WRITE16_MEMBER(h2hbaskb_state::write_o)
+WRITE16_MEMBER(h2hhockey_state::write_o)
{
// O1-O7: led data
m_o = data >> 1 & 0x7f;
prepare_display();
}
-READ8_MEMBER(h2hbaskb_state::read_k)
+READ8_MEMBER(h2hhockey_state::read_k)
{
// K1-K4: multiplexed inputs, K8: R9 and capacitor
- return (read_inputs(4) & 7) | (m_cap_state ? 8 : 0);
+ return (read_inputs(4) & 7) | (m_cap ? 8 : 0);
}
// config
-static INPUT_PORTS_START( h2hbaskb )
+static INPUT_PORTS_START( h2hhockey )
PORT_START("IN.0") // R0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY PORT_NAME("P1 Pass CW") // clockwise
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY PORT_NAME("P1 Pass CCW") // counter-clockwise
@@ -1670,31 +1580,32 @@ static INPUT_PORTS_START( h2hbaskb )
PORT_CONFSETTING( 0x04, "2" )
PORT_START("IN.3") // R3
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Goalie Right")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Goalie Left")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
-static INPUT_PORTS_START( h2hhockey )
- PORT_INCLUDE( h2hbaskb )
+void h2hhockey_state::machine_start()
+{
+ hh_tms1k_state::machine_start();
- PORT_MODIFY("IN.3") // R3
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Goalie Right")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Goalie Left")
-INPUT_PORTS_END
+ // zerofill/register for savestates
+ m_cap = false;
+ save_item(NAME(m_cap));
+}
-void h2hbaskb_state::h2hbaskb(machine_config &config)
+void h2hhockey_state::h2hhockey(machine_config &config)
{
/* basic machine hardware */
TMS1000(config, m_maincpu, 375000); // approximation - RC osc. R=43K, C=100pF
- m_maincpu->k().set(FUNC(h2hbaskb_state::read_k));
- m_maincpu->r().set(FUNC(h2hbaskb_state::write_r));
- m_maincpu->o().set(FUNC(h2hbaskb_state::write_o));
+ m_maincpu->k().set(FUNC(h2hhockey_state::read_k));
+ m_maincpu->r().set(FUNC(h2hhockey_state::write_r));
+ m_maincpu->o().set(FUNC(h2hhockey_state::write_o));
- TIMER(config, "cap_empty").configure_generic(FUNC(h2hbaskb_state::cap_empty_callback));
+ TIMER(config, "cap_empty").configure_generic(FUNC(h2hhockey_state::cap_empty_callback));
TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_h2hbaskb);
+ config.set_default_layout(layout_h2hhockey);
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -1702,34 +1613,6 @@ void h2hbaskb_state::h2hbaskb(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-void h2hbaskb_state::h2hhockey(machine_config &config)
-{
- h2hbaskb(config);
- config.set_default_layout(layout_h2hhockey);
-}
-
-// roms
-
-ROM_START( h2hbaskb )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp3320a", 0x0000, 0x0400, CRC(39a63f43) SHA1(14a765e42a39f8d3a465c990e09dd651e595a1c5) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_h2hbaskb_output.pla", 0, 365, CRC(9d1a91e1) SHA1(96303eb22375129b0dfbfcd823c8ca5b919511bc) )
-ROM_END
-
-ROM_START( h2hhockey )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp3321a", 0x0000, 0x0400, CRC(e974e604) SHA1(ed740c98ce96ad70ee5237eccae1f54a75ad8100) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_h2hhockey_output.pla", 0, 365, CRC(9d1a91e1) SHA1(96303eb22375129b0dfbfcd823c8ca5b919511bc) )
-ROM_END
-
@@ -1750,8 +1633,8 @@ ROM_END
class h2hbaseb_state : public hh_tms1k_state
{
public:
- h2hbaseb_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ h2hbaseb_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1760,28 +1643,15 @@ public:
DECLARE_READ8_MEMBER(read_k);
void set_clock();
- DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); }
+ DECLARE_INPUT_CHANGED_MEMBER(skill_switch);
void h2hbaseb(machine_config &config);
protected:
virtual void machine_reset() override;
};
-void h2hbaseb_state::machine_reset()
-{
- hh_tms1k_state::machine_reset();
- set_clock();
-}
-
// handlers
-void h2hbaseb_state::set_clock()
-{
- // MCU clock is from an RC circuit with C=47pF, and R value is depending on
- // skill switch: R=51K(1) or 43K(2)
- m_maincpu->set_unscaled_clock((m_inp_matrix[5]->read() & 1) ? 400000 : 350000);
-}
-
void h2hbaseb_state::prepare_display()
{
set_display_segmask(0x1ff, 0x7f);
@@ -1847,6 +1717,24 @@ static INPUT_PORTS_START( h2hbaseb )
PORT_CONFSETTING( 0x01, "2" )
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(h2hbaseb_state::skill_switch)
+{
+ set_clock();
+}
+
+void h2hbaseb_state::set_clock()
+{
+ // MCU clock is from an RC circuit with C=47pF, and R value is depending on
+ // skill switch: R=51K(1) or 43K(2)
+ m_maincpu->set_unscaled_clock((m_inp_matrix[5]->read() & 1) ? 400000 : 350000);
+}
+
+void h2hbaseb_state::machine_reset()
+{
+ hh_tms1k_state::machine_reset();
+ set_clock();
+}
+
void h2hbaseb_state::h2hbaseb(machine_config &config)
{
/* basic machine hardware */
@@ -1864,18 +1752,6 @@ void h2hbaseb_state::h2hbaseb(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( h2hbaseb )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp1525", 0x0000, 0x0800, CRC(b5d6bf9b) SHA1(2cc9f35f077c1209c46d16ec853af87e4725c2fd) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_h2hbaseb_output.pla", 0, 365, CRC(cb3d7e38) SHA1(6ab4a7c52e6010b7c7158463cb499973e52ff556) )
-ROM_END
-
@@ -1893,8 +1769,8 @@ ROM_END
class h2hboxing_state : public hh_tms1k_state
{
public:
- h2hboxing_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ h2hboxing_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1988,18 +1864,6 @@ void h2hboxing_state::h2hboxing(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( h2hboxing )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "m34018", 0x0000, 0x0800, CRC(e26a11a3) SHA1(aa2735088d709fa8d9188c4fb7982a53e3a8c1bc) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_h2hboxing_output.pla", 0, 365, CRC(ffb0e63d) SHA1(31ee3f779270a23f05f9ad508283d2569ef069f1) )
-ROM_END
-
@@ -2032,8 +1896,8 @@ ROM_END
class quizwizc_state : public hh_tms1k_state
{
public:
- quizwizc_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag),
+ quizwizc_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag),
m_pinout(0)
{ }
@@ -2050,14 +1914,6 @@ protected:
virtual void machine_start() override;
};
-void quizwizc_state::machine_start()
-{
- hh_tms1k_state::machine_start();
-
- // register for savestates
- save_item(NAME(m_pinout));
-}
-
// handlers
DEVICE_IMAGE_LOAD_MEMBER(quizwizc_state, cartridge)
@@ -2154,6 +2010,14 @@ static INPUT_PORTS_START( quizwizc )
PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
+void quizwizc_state::machine_start()
+{
+ hh_tms1k_state::machine_start();
+
+ // register for savestates
+ save_item(NAME(m_pinout));
+}
+
void quizwizc_state::quizwizc(machine_config &config)
{
/* basic machine hardware */
@@ -2177,18 +2041,6 @@ void quizwizc_state::quizwizc(machine_config &config)
SOFTWARE_LIST(config, "cart_list").set_original("quizwiz");
}
-// roms
-
-ROM_START( quizwizc )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "m32001", 0x0000, 0x0400, CRC(053657eb) SHA1(38c84f7416f79aa679f434a3d35df54cd9aa528a) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common3_micro.pla", 0, 867, CRC(80912d0a) SHA1(7ae5293ed4d93f5b7a64d43fe30c3639f39fbe5a) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_quizwizc_output.pla", 0, 365, CRC(475b7053) SHA1(8f61bf736eb41d7029a6b165cc0a184ba0a70a2a) )
-ROM_END
-
@@ -2221,8 +2073,8 @@ ROM_END
class tc4_state : public hh_tms1k_state
{
public:
- tc4_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag),
+ tc4_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag),
m_pinout(0)
{ }
@@ -2239,14 +2091,6 @@ protected:
virtual void machine_start() override;
};
-void tc4_state::machine_start()
-{
- hh_tms1k_state::machine_start();
-
- // register for savestates
- save_item(NAME(m_pinout));
-}
-
// handlers
DEVICE_IMAGE_LOAD_MEMBER(tc4_state, cartridge)
@@ -2342,6 +2186,14 @@ static INPUT_PORTS_START( tc4 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 D/K Button")
INPUT_PORTS_END
+void tc4_state::machine_start()
+{
+ hh_tms1k_state::machine_start();
+
+ // register for savestates
+ save_item(NAME(m_pinout));
+}
+
void tc4_state::tc4(machine_config &config)
{
/* basic machine hardware */
@@ -2366,18 +2218,6 @@ void tc4_state::tc4(machine_config &config)
SOFTWARE_LIST(config, "cart_list").set_original("tc4");
}
-// roms
-
-ROM_START( tc4 )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mp7334", 0x0000, 0x1000, CRC(923f3821) SHA1(a9ae342d7ff8dae1dedcd1e4984bcfae68586581) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
- ROM_REGION( 557, "maincpu:opla", 0 )
- ROM_LOAD( "tms1400_tc4_output.pla", 0, 557, CRC(3b908725) SHA1(f83bf5faa5b3cb51f87adc1639b00d6f9a71ad19) )
-ROM_END
-
@@ -2401,8 +2241,8 @@ ROM_END
class cnbaskb_state : public hh_tms1k_state
{
public:
- cnbaskb_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ cnbaskb_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -2487,18 +2327,6 @@ void cnbaskb_state::cnbaskb(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( cnbaskb )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp0907", 0x0000, 0x0400, CRC(35f84f0f) SHA1(744ca60bb853a2785184042e747530a9e02488f8) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_cnbaskb_output.pla", 0, 365, CRC(b4e28956) SHA1(8356112da71b351420a88d7e394e7d03e429368c) )
-ROM_END
-
@@ -2524,8 +2352,8 @@ ROM_END
class cmsport_state : public hh_tms1k_state
{
public:
- cmsport_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ cmsport_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -2612,18 +2440,6 @@ void cmsport_state::cmsport(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( cmsport )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp0168.u1", 0x0000, 0x0400, CRC(0712a268) SHA1(bd4e23e5c17b28c52e7e769e44773cc9c8839bed) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_cmsport_output.pla", 0, 365, CRC(7defa140) SHA1(477e3cb55e79938d6acaa911e410f6dcb974c218) )
-ROM_END
-
@@ -2651,8 +2467,8 @@ ROM_END
class cnfball_state : public hh_tms1k_state
{
public:
- cnfball_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ cnfball_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -2751,18 +2567,6 @@ void cnfball_state::cnfball(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( cnfball )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp0170", 0x0000, 0x0400, CRC(50e8a44f) SHA1(fea6ae03c4ef329d825f8688e6854df15023d47e) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_cnfball_output.pla", 0, 365, CRC(0af52f64) SHA1(b4cf450e4d895eddb67448aa69e4f18a5a84e033) )
-ROM_END
-
@@ -2784,8 +2588,8 @@ ROM_END
class cnfball2_state : public hh_tms1k_state
{
public:
- cnfball2_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ cnfball2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -2866,7 +2670,7 @@ static const u16 cnfball2_output_pla[0x20] =
// first half was dumped electronically
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x40, 0x01, 0x08, 0x02, 0x04, 0x00,
- // rest is unused, game only outputs with status bit clear
+ // rest is unknown
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
};
@@ -2889,18 +2693,6 @@ void cnfball2_state::cnfball2(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( cnfball2 )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp1181", 0x0000, 0x0800, CRC(4553a840) SHA1(2e1132c9bc51641f77ba7f2430b5a3b2766b3a3d) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_cnfball2_output.pla", 0, 365, NO_DUMP )
-ROM_END
-
@@ -2924,14 +2716,16 @@ ROM_END
class eleciq_state : public hh_tms1k_state
{
public:
- eleciq_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ eleciq_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
DECLARE_WRITE16_MEMBER(write_r);
DECLARE_WRITE16_MEMBER(write_o);
DECLARE_READ8_MEMBER(read_k);
+
+ DECLARE_INPUT_CHANGED_MEMBER(reset_button);
void eleciq(machine_config &config);
};
@@ -3014,9 +2808,15 @@ static INPUT_PORTS_START( eleciq )
PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("RESET")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("Reset") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, reset_button, nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("Reset") PORT_CHANGED_MEMBER(DEVICE_SELF, eleciq_state, reset_button, nullptr)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(eleciq_state::reset_button)
+{
+ // reset button is directly wired to TMS1000 INIT pin
+ m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
+}
+
void eleciq_state::eleciq(machine_config &config)
{
/* basic machine hardware */
@@ -3034,18 +2834,6 @@ void eleciq_state::eleciq(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( eleciq )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp0908", 0x0000, 0x0400, CRC(db59b82c) SHA1(c9a6bcba208969560495ad9f8775f53de16a69c3) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_eleciq_output.pla", 0, 365, CRC(b8e04232) SHA1(22eed6d9b1fb1e5c9974ea3df16cda71a39aad57) )
-ROM_END
-
@@ -3065,8 +2853,8 @@ ROM_END
class esoccer_state : public hh_tms1k_state
{
public:
- esoccer_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ esoccer_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -3151,18 +2939,6 @@ void esoccer_state::esoccer(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( esoccer )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp0158.ic1", 0x0000, 0x0400, CRC(ae4581ea) SHA1(5f6881f8247094abf8cffb17f6e6586e94cff38c) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_esoccer_output.pla", 0, 365, CRC(c6eeabbd) SHA1(99d07902126b5a1c1abf43340f30d3390da5fa92) )
-ROM_END
-
@@ -3201,8 +2977,8 @@ ROM_END
class ebball_state : public hh_tms1k_state
{
public:
- ebball_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ ebball_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -3297,18 +3073,6 @@ void ebball_state::ebball(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ebball )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp0914", 0x0000, 0x0400, CRC(3c6fb05b) SHA1(b2fe4b3ca72d6b4c9bfa84d67f64afdc215e7178) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_ebball_output.pla", 0, 365, CRC(062bf5bb) SHA1(8d73ee35444299595961225528b153e3a5fe66bf) )
-ROM_END
-
@@ -3343,8 +3107,8 @@ ROM_END
class ebball2_state : public hh_tms1k_state
{
public:
- ebball2_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ ebball2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -3432,18 +3196,6 @@ void ebball2_state::ebball2(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ebball2 )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp0923", 0x0000, 0x0400, CRC(077acfe2) SHA1(a294ce7614b2cdb01c754a7a50d60d807e3f0939) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_ebball2_output.pla", 0, 365, CRC(adcd73d1) SHA1(d69e590d288ef99293d86716498f3971528e30de) )
-ROM_END
-
@@ -3483,8 +3235,8 @@ ROM_END
class ebball3_state : public hh_tms1k_state
{
public:
- ebball3_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ ebball3_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -3493,29 +3245,15 @@ public:
DECLARE_READ8_MEMBER(read_k);
void set_clock();
- DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); }
+ DECLARE_INPUT_CHANGED_MEMBER(skill_switch);
void ebball3(machine_config &config);
protected:
virtual void machine_reset() override;
};
-void ebball3_state::machine_reset()
-{
- hh_tms1k_state::machine_reset();
- set_clock();
-}
-
// handlers
-void ebball3_state::set_clock()
-{
- // MCU clock is from an RC circuit(R=47K, C=33pF) oscillating by default at ~340kHz,
- // but on PRO, the difficulty switch adds an extra 150K resistor to Vdd to speed
- // it up to around ~440kHz.
- m_maincpu->set_unscaled_clock((m_inp_matrix[3]->read() & 1) ? 440000 : 340000);
-}
-
void ebball3_state::prepare_display()
{
// update current state
@@ -3602,6 +3340,25 @@ static INPUT_PORTS_START( ebball3 )
PORT_CONFSETTING( 0x01, "Professional" )
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(ebball3_state::skill_switch)
+{
+ set_clock();
+}
+
+void ebball3_state::set_clock()
+{
+ // MCU clock is from an RC circuit(R=47K, C=33pF) oscillating by default at ~340kHz,
+ // but on PRO, the difficulty switch adds an extra 150K resistor to Vdd to speed
+ // it up to around ~440kHz.
+ m_maincpu->set_unscaled_clock((m_inp_matrix[3]->read() & 1) ? 440000 : 340000);
+}
+
+void ebball3_state::machine_reset()
+{
+ hh_tms1k_state::machine_reset();
+ set_clock();
+}
+
void ebball3_state::ebball3(machine_config &config)
{
/* basic machine hardware */
@@ -3619,18 +3376,6 @@ void ebball3_state::ebball3(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ebball3 )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "6007_mp1204", 0x0000, 0x0800, CRC(987a29ba) SHA1(9481ae244152187d85349d1a08e439e798182938) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_ebball3_output.pla", 0, 365, CRC(00db663b) SHA1(6eae12503364cfb1f863df0e57970d3e766ec165) )
-ROM_END
-
@@ -3661,8 +3406,8 @@ ROM_END
class esbattle_state : public hh_tms1k_state
{
public:
- esbattle_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ esbattle_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -3742,18 +3487,6 @@ void esbattle_state::esbattle(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( esbattle )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "en-6004_mp0920", 0x0000, 0x0400, CRC(7460c179) SHA1(be855054b4a98b05b34fd931d5c247c5c0f9b036) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_esbattle_output.pla", 0, 365, CRC(861b45a2) SHA1(a5a9dc9bef8adb761845ad548058b55e970517d3) )
-ROM_END
-
@@ -3773,8 +3506,8 @@ ROM_END
class einvader_state : public hh_tms1k_state
{
public:
- einvader_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ einvader_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -3782,29 +3515,15 @@ public:
DECLARE_WRITE16_MEMBER(write_o);
void set_clock();
- DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); }
+ DECLARE_INPUT_CHANGED_MEMBER(skill_switch);
void einvader(machine_config &config);
protected:
virtual void machine_reset() override;
};
-void einvader_state::machine_reset()
-{
- hh_tms1k_state::machine_reset();
- set_clock();
-}
-
// handlers
-void einvader_state::set_clock()
-{
- // MCU clock is from an RC circuit(R=47K, C=56pF) oscillating by default at ~320kHz,
- // but on PRO, the difficulty switch adds an extra 180K resistor to Vdd to speed
- // it up to around ~400kHz.
- m_maincpu->set_unscaled_clock((m_inp_matrix[0]->read() & 8) ? 400000 : 320000);
-}
-
void einvader_state::prepare_display()
{
// R7-R9 are 7segs
@@ -3841,6 +3560,25 @@ static INPUT_PORTS_START( einvader )
PORT_CONFSETTING( 0x08, "Professional" )
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(einvader_state::skill_switch)
+{
+ set_clock();
+}
+
+void einvader_state::set_clock()
+{
+ // MCU clock is from an RC circuit(R=47K, C=56pF) oscillating by default at ~320kHz,
+ // but on PRO, the difficulty switch adds an extra 180K resistor to Vdd to speed
+ // it up to around ~400kHz.
+ m_maincpu->set_unscaled_clock((m_inp_matrix[0]->read() & 8) ? 400000 : 320000);
+}
+
+void einvader_state::machine_reset()
+{
+ hh_tms1k_state::machine_reset();
+ set_clock();
+}
+
void einvader_state::einvader(machine_config &config)
{
/* basic machine hardware */
@@ -3854,8 +3592,7 @@ void einvader_state::einvader(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(939, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 939-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_einvader);
@@ -3865,21 +3602,6 @@ void einvader_state::einvader(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( einvader )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp1211", 0x0000, 0x0800, CRC(b6efbe8e) SHA1(d7d54921dab22bb0c2956c896a5d5b56b6f64969) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_einvader_output.pla", 0, 365, CRC(490158e1) SHA1(61cace1eb09244663de98d8fb04d9459b19668fd) )
-
- ROM_REGION( 44398, "svg", 0)
- ROM_LOAD( "einvader.svg", 0, 44398, CRC(48de88fd) SHA1(56a2b9c997a447277b45902ab542eda54e7d5a2f) )
-ROM_END
-
@@ -3895,8 +3617,8 @@ ROM_END
class efootb4_state : public hh_tms1k_state
{
public:
- efootb4_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ efootb4_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -3995,18 +3717,6 @@ void efootb4_state::efootb4(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( efootb4 )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "6009_mp7551", 0x0000, 0x1000, CRC(54fa7244) SHA1(4d16bd825c4a2db76ca8a263c373ade15c20e270) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
- ROM_REGION( 557, "maincpu:opla", 0 )
- ROM_LOAD( "tms1400_efootb4_output.pla", 0, 557, CRC(5c87c753) SHA1(bde9d4aa1e57a718affd969475c0a1edcf60f444) )
-ROM_END
-
@@ -4034,8 +3744,8 @@ ROM_END
class ebaskb2_state : public hh_tms1k_state
{
public:
- ebaskb2_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ ebaskb2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -4128,18 +3838,6 @@ void ebaskb2_state::ebaskb2(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ebaskb2 )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "6010_mp1218", 0x0000, 0x0800, CRC(0089ede8) SHA1(c8a79d5aca7e37b637a4d152150acba9f41aad96) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_ebaskb2_output.pla", 0, 365, CRC(c18103ae) SHA1(5a9bb8e1d95a9f6919b05ff9471fa0a8014b8b81) )
-ROM_END
-
@@ -4170,8 +3868,8 @@ ROM_END
class raisedvl_state : public hh_tms1k_state
{
public:
- raisedvl_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ raisedvl_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -4180,32 +3878,15 @@ public:
DECLARE_READ8_MEMBER(read_k);
void set_clock();
- DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); }
+ DECLARE_INPUT_CHANGED_MEMBER(skill_switch);
void raisedvl(machine_config &config);
protected:
virtual void machine_reset() override;
};
-void raisedvl_state::machine_reset()
-{
- hh_tms1k_state::machine_reset();
- set_clock();
-}
-
// handlers
-void raisedvl_state::set_clock()
-{
- // MCU clock is from an RC circuit with C=47pF, R=47K by default. Skills
- // 2 and 3 add a 150K resistor in parallel, and skill 4 adds a 100K one.
- // 0: R=47K -> ~350kHz
- // 2,3: R=35K8 -> ~425kHz (combined)
- // 4: R=32K -> ~465kHz (combined)
- u8 inp = m_inp_matrix[1]->read();
- m_maincpu->set_unscaled_clock((inp & 0x20) ? 465000 : ((inp & 0x10) ? 425000 : 350000));
-}
-
void raisedvl_state::prepare_display()
{
// R0-R2 are 7segs
@@ -4257,6 +3938,28 @@ static INPUT_PORTS_START( raisedvl )
PORT_CONFSETTING( 0x21, "4" )
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(raisedvl_state::skill_switch)
+{
+ set_clock();
+}
+
+void raisedvl_state::set_clock()
+{
+ // MCU clock is from an RC circuit with C=47pF, R=47K by default. Skills
+ // 2 and 3 add a 150K resistor in parallel, and skill 4 adds a 100K one.
+ // 0: R=47K -> ~350kHz
+ // 2,3: R=35K8 -> ~425kHz (combined)
+ // 4: R=32K -> ~465kHz (combined)
+ u8 inp = m_inp_matrix[1]->read();
+ m_maincpu->set_unscaled_clock((inp & 0x20) ? 465000 : ((inp & 0x10) ? 425000 : 350000));
+}
+
+void raisedvl_state::machine_reset()
+{
+ hh_tms1k_state::machine_reset();
+ set_clock();
+}
+
void raisedvl_state::raisedvl(machine_config &config)
{
/* basic machine hardware */
@@ -4274,18 +3977,6 @@ void raisedvl_state::raisedvl(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( raisedvl )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp1221", 0x0000, 0x0800, CRC(782791cc) SHA1(214249406fcaf44efc6350022bd534e59ec69c88) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_raisedvl_output.pla", 0, 365, CRC(00db663b) SHA1(6eae12503364cfb1f863df0e57970d3e766ec165) )
-ROM_END
-
@@ -4319,14 +4010,16 @@ ROM_END
class f2pbball_state : public hh_tms1k_state
{
public:
- f2pbball_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ f2pbball_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
DECLARE_WRITE16_MEMBER(write_r);
DECLARE_WRITE16_MEMBER(write_o);
DECLARE_READ8_MEMBER(read_k);
+
+ DECLARE_INPUT_CHANGED_MEMBER(reset_button);
void f2pbball(machine_config &config);
};
@@ -4389,9 +4082,15 @@ static INPUT_PORTS_START( f2pbball )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_COCKTAIL PORT_NAME("P2 Fast")
PORT_START("RESET")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P1 Reset") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, reset_button, nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P1 Reset") PORT_CHANGED_MEMBER(DEVICE_SELF, f2pbball_state, reset_button, nullptr)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(f2pbball_state::reset_button)
+{
+ // reset button is directly wired to TMS1000 INIT pin
+ m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
+}
+
void f2pbball_state::f2pbball(machine_config &config)
{
/* basic machine hardware */
@@ -4409,18 +4108,6 @@ void f2pbball_state::f2pbball(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( f2pbball )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp0154", 0x0000, 0x0400, CRC(c5b45ace) SHA1(b2de32e83ab447b22d6828f0081843f364040b01) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_f2pbball_output.pla", 0, 365, CRC(30c2f28f) SHA1(db969b22475f37f083c3594f5e4f5759048377b8) )
-ROM_END
-
@@ -4440,8 +4127,8 @@ ROM_END
class f3in1_state : public hh_tms1k_state
{
public:
- f3in1_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ f3in1_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -4450,27 +4137,15 @@ public:
DECLARE_READ8_MEMBER(read_k);
void set_clock();
- DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); }
+ DECLARE_INPUT_CHANGED_MEMBER(skill_switch);
void f3in1(machine_config &config);
protected:
virtual void machine_reset() override;
};
-void f3in1_state::machine_reset()
-{
- hh_tms1k_state::machine_reset();
- set_clock();
-}
-
// handlers
-void f3in1_state::set_clock()
-{
- // MCU clock is from an RC circuit where C=47pF, R=39K(PROF) or 56K(REG)
- m_maincpu->set_unscaled_clock((m_inp_matrix[4]->read() & 1) ? 400000 : 300000);
-}
-
void f3in1_state::prepare_display()
{
// R6-R9 are 7segs
@@ -4536,6 +4211,23 @@ static INPUT_PORTS_START( f3in1 )
PORT_CONFSETTING( 0x01, "Professional" ) // PROF
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(f3in1_state::skill_switch)
+{
+ set_clock();
+}
+
+void f3in1_state::set_clock()
+{
+ // MCU clock is from an RC circuit where C=47pF, R=39K(PROF) or 56K(REG)
+ m_maincpu->set_unscaled_clock((m_inp_matrix[4]->read() & 1) ? 400000 : 300000);
+}
+
+void f3in1_state::machine_reset()
+{
+ hh_tms1k_state::machine_reset();
+ set_clock();
+}
+
void f3in1_state::f3in1(machine_config &config)
{
/* basic machine hardware */
@@ -4553,18 +4245,6 @@ void f3in1_state::f3in1(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( f3in1 )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp1185", 0x0000, 0x0800, CRC(53f7b28d) SHA1(2249890e3a259095193b4331ca88c29ccd81eefe) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_f3in1_output.pla", 0, 365, CRC(51d947bc) SHA1(f766397d84f038be96e83d40989195c98ddcb1d9) )
-ROM_END
-
@@ -4585,8 +4265,8 @@ ROM_END
class gpoker_state : public hh_tms1k_state
{
public:
- gpoker_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag),
+ gpoker_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag),
m_beeper(*this, "beeper")
{ }
@@ -4602,12 +4282,6 @@ protected:
virtual void machine_reset() override;
};
-void gpoker_state::machine_reset()
-{
- hh_tms1k_state::machine_reset();
- m_beeper->set_state(0);
-}
-
// handlers
void gpoker_state::prepare_display()
@@ -4673,7 +4347,7 @@ static INPUT_PORTS_START( gpoker )
PORT_START("IN.3") // R3
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3")
- PORT_BIT( 0x02, 0x02, IPT_CUSTOM ) PORT_CONDITION("FAKE", 0x03, NOTEQUALS, 0x00) // 9/DL
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_D) PORT_NAME("9/Deal") // DL, shares pad with 9
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Clear Entry") // CE
@@ -4691,12 +4365,14 @@ static INPUT_PORTS_START( gpoker )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("Total") // T
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("Bet") // BT
-
- PORT_START("FAKE") // 9/DL are electronically the same button
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("Deal") // DL
INPUT_PORTS_END
+void gpoker_state::machine_reset()
+{
+ hh_tms1k_state::machine_reset();
+ m_beeper->set_state(0);
+}
+
void gpoker_state::gpoker(machine_config &config)
{
/* basic machine hardware */
@@ -4714,18 +4390,6 @@ void gpoker_state::gpoker(machine_config &config)
m_beeper->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gpoker )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp2105", 0x0000, 0x0800, CRC(95a8f5b4) SHA1(d14f00ba9f57e437264d972baa14a14a28ff8719) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_gpoker_output.pla", 0, 365, CRC(f7e2d812) SHA1(cc3abd89afb1d2145dc47636553ccd0ba7de70d9) )
-ROM_END
-
@@ -4746,8 +4410,8 @@ ROM_END
class gjackpot_state : public gpoker_state
{
public:
- gjackpot_state(const machine_config &mconfig, device_type type, const char *tag) :
- gpoker_state(mconfig, type, tag)
+ gjackpot_state(const machine_config &mconfig, device_type type, const char *tag)
+ : gpoker_state(mconfig, type, tag)
{ }
virtual DECLARE_WRITE16_MEMBER(write_r) override;
@@ -4776,7 +4440,7 @@ WRITE16_MEMBER(gjackpot_state::write_r)
DB] SP]
[1] [2] [3] [DS] [DR]
BT] HT]
- [10/0] [T] [MD [CH [AC]
+ [10/1] [T] [MD [CH [AC]
GO] ST]
*/
@@ -4839,18 +4503,6 @@ void gjackpot_state::gjackpot(machine_config &config)
m_beeper->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gjackpot )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mpf553", 0x0000, 0x1000, CRC(f45fd008) SHA1(8d5d6407a8a031a833ceedfb931f5c9d2725ecd0) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
- ROM_REGION( 557, "maincpu:opla", 0 )
- ROM_LOAD( "tms1400_gjackpot_output.pla", 0, 557, CRC(50e471a7) SHA1(9d862cb9f51a563882b62662c5bfe61b52e3df00) )
-ROM_END
-
@@ -4872,8 +4524,8 @@ ROM_END
class ginv1000_state : public hh_tms1k_state
{
public:
- ginv1000_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ ginv1000_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -4952,8 +4604,7 @@ void ginv1000_state::ginv1000(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(226, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 226-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -4962,21 +4613,6 @@ void ginv1000_state::ginv1000(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ginv1000 )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp2139", 0x0000, 0x0800, CRC(036eab37) SHA1(0795878ad89296f7a6a0314c6e4db23c1cc3673e) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_ginv1000_output.pla", 0, 365, CRC(b0a5dc41) SHA1(d94746ec48661998173e7f60ccc7c96e56b3484e) )
-
- ROM_REGION( 226185, "svg", 0)
- ROM_LOAD( "ginv1000.svg", 0, 226185, CRC(1e1bafd1) SHA1(15868ef0c9dadbf537fed0e2d846451ba99fab7b) )
-ROM_END
-
@@ -4998,8 +4634,8 @@ ROM_END
class ginv2000_state : public hh_tms1k_state
{
public:
- ginv2000_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag),
+ ginv2000_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag),
m_expander(*this, "expander")
{ }
@@ -5016,12 +4652,6 @@ protected:
virtual void machine_reset() override;
};
-void ginv2000_state::machine_reset()
-{
- hh_tms1k_state::machine_reset();
- m_expander->write_ms(1); // Vss
-}
-
// handlers
void ginv2000_state::prepare_display()
@@ -5085,6 +4715,12 @@ static INPUT_PORTS_START( ginv2000 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
INPUT_PORTS_END
+void ginv2000_state::machine_reset()
+{
+ hh_tms1k_state::machine_reset();
+ m_expander->write_ms(1); // Vss
+}
+
void ginv2000_state::ginv2000(machine_config &config)
{
/* basic machine hardware */
@@ -5104,8 +4740,7 @@ void ginv2000_state::ginv2000(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(364, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 364-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -5114,21 +4749,6 @@ void ginv2000_state::ginv2000(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ginv2000 )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp1604", 0x0000, 0x0800, CRC(f1646d0b) SHA1(65601931d81e3eef7bf22a08de5a146910ce8137) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_ginv2000_output.pla", 0, 365, CRC(520bb003) SHA1(1640ae54f8dcc257e0ad0cbe0281b38fcbd8da35) )
-
- ROM_REGION( 374443, "svg", 0)
- ROM_LOAD( "ginv2000.svg", 0, 374443, CRC(a4ce1e6d) SHA1(57d9ff05d634a8d495b9d544a2a959790cd10b6b) )
-ROM_END
-
@@ -5154,8 +4774,8 @@ ROM_END
class fxmcr165_state : public hh_tms1k_state
{
public:
- fxmcr165_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ fxmcr165_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -5267,18 +4887,6 @@ void fxmcr165_state::fxmcr165(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( fxmcr165 )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp1312", 0x0000, 0x0800, CRC(6efc8bcc) SHA1(ced8a02b472a3178073691d3dccc0f19f57428fd) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_fxmcr165_output.pla", 0, 365, CRC(ce656866) SHA1(40e1614f5afcc7572fda596e1be453d54e95af0c) )
-ROM_END
-
@@ -5301,8 +4909,8 @@ ROM_END
class elecdet_state : public hh_tms1k_state
{
public:
- elecdet_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ elecdet_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
@@ -5381,11 +4989,11 @@ static INPUT_PORTS_START( elecdet )
// note: even though power buttons are on the matrix, they are not CPU-controlled
PORT_START("IN.4") // Vss!
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("End Turn")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, false)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
INPUT_PORTS_END
static const s16 elecdet_speaker_levels[4] = { 0, 0x3fff, 0x3fff, 0x7fff };
@@ -5409,22 +5017,6 @@ void elecdet_state::elecdet(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( elecdet )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mp6100a", 0x0000, 0x1000, CRC(9522fb2d) SHA1(240bdb44b7d67d3b13ebf75851635ac4b4ca2bfd) )
-
- ROM_REGION( 1246, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
- ROM_REGION( 1982, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
- ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_elecdet_output.pla", 0, 352, CRC(5d12c24a) SHA1(e486802151a704c6273d4a8682c9c374d27d1e6d) )
- ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
-ROM_END
-
@@ -5444,8 +5036,8 @@ ROM_END
class starwbc_state : public hh_tms1k_state
{
public:
- starwbc_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ starwbc_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -5551,28 +5143,6 @@ void starwbc_state::starwbc(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( starwbc )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp3438a", 0x0000, 0x0800, CRC(c12b7069) SHA1(d1f39c69a543c128023ba11cc6228bacdfab04de) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_starwbc_output.pla", 0, 365, CRC(d358a76d) SHA1(06b60b207540e9b726439141acadea9aba718013) )
-ROM_END
-
-ROM_START( starwbcp )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "us4270755", 0x0000, 0x0800, BAD_DUMP CRC(fb3332f2) SHA1(a79ac81e239983cd699b7cfcc55f89b203b2c9ec) ) // from patent US4270755, may have errors
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_starwbc_output.pla", 0, 365, CRC(d358a76d) SHA1(06b60b207540e9b726439141acadea9aba718013) )
-ROM_END
-
@@ -5591,8 +5161,8 @@ ROM_END
class astro_state : public hh_tms1k_state
{
public:
- astro_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ astro_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -5697,18 +5267,6 @@ void astro_state::astro(machine_config &config)
/* no sound! */
}
-// roms
-
-ROM_START( astro )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mp1133", 0x0000, 0x1000, CRC(bc21109c) SHA1(05a433cce587d5c0c2d28b5fda5f0853ea6726bf) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
- ROM_REGION( 557, "maincpu:opla", 0 )
- ROM_LOAD( "tms1400_astro_output.pla", 0, 557, CRC(eb08957e) SHA1(62ae0d13a1eaafb34f1b27d7df51441b400ccd56) )
-ROM_END
-
@@ -5742,8 +5300,8 @@ ROM_END
class elecbowl_state : public hh_tms1k_state
{
public:
- elecbowl_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ elecbowl_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -5841,13 +5399,23 @@ static INPUT_PORTS_START( elecbowl )
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) // 2 players sw?
INPUT_PORTS_END
-// output PLA is not decapped, this was made by hand
+// output PLA is not decapped
static const u16 elecbowl_output_pla[0x20] =
{
- 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, // 0-9
- 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, // ?
- 0, 1, 2, 3, 4, 5, 6, 7, // lamp muxes select
- 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f // ?
+ lA+lB+lC+lD+lE+lF, // 0
+ lB+lC, // 1
+ lA+lB+lG+lE+lD, // 2
+ lA+lB+lG+lC+lD, // 3
+ lF+lB+lG+lC, // 4
+ lA+lF+lG+lC+lD, // 5
+ lA+lF+lG+lC+lD+lE, // 6
+ lA+lB+lC, // 7
+ lA+lB+lC+lD+lE+lF+lG, // 8
+ lA+lB+lG+lF+lC+lD, // 9
+
+ 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0,1,2,3,4,5,6,7, // lamp muxes select
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f
};
void elecbowl_state::elecbowl(machine_config &config)
@@ -5868,18 +5436,6 @@ void elecbowl_state::elecbowl(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( elecbowl )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp3403.u9", 0x0000, 0x0800, CRC(9eabaa7d) SHA1(b1f54587ed7f2bbf3a5d49075c807296384c2b06) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, BAD_DUMP CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) // not verified
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_elecbowl_output.pla", 0, 365, NO_DUMP )
-ROM_END
-
@@ -5904,8 +5460,8 @@ ROM_END
class horseran_state : public hh_tms1k_state
{
public:
- horseran_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag),
+ horseran_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag),
m_lcd(*this, "lcd")
{ }
@@ -5942,9 +5498,9 @@ WRITE16_MEMBER(horseran_state::write_r)
// R0: HLCD0569 clock
// R1: HLCD0569 data in
// R2: HLCD0569 _CS
- m_lcd->cs_w(data >> 2 & 1);
- m_lcd->data_w(data >> 1 & 1);
- m_lcd->clock_w(data & 1);
+ m_lcd->write_cs(data >> 2 & 1);
+ m_lcd->write_data(data >> 1 & 1);
+ m_lcd->write_clock(data & 1);
// R3-R10: input mux
m_inp_mux = data >> 3 & 0xff;
@@ -6035,18 +5591,6 @@ void horseran_state::horseran(machine_config &config)
/* no sound! */
}
-// roms
-
-ROM_START( horseran )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp3491", 0x0000, 0x0800, CRC(a0081671) SHA1(a5a07b502c69d429e5bcd1d313e86b6ee057cda6) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
- ROM_REGION( 365, "maincpu:opla", 0 ) // unused
- ROM_LOAD( "tms1100_horseran_output.pla", 0, 365, CRC(0fea09b0) SHA1(27a56fcf2b490e9a7dbbc6ad48cc8aaca4cada94) )
-ROM_END
-
@@ -6065,8 +5609,8 @@ ROM_END
class mdndclab_state : public hh_tms1k_state
{
public:
- mdndclab_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ mdndclab_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
@@ -6227,18 +5771,6 @@ void mdndclab_state::mdndclab(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( mdndclab )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "m34012", 0x0000, 0x0800, CRC(e851fccd) SHA1(158362c2821678a51554e02dbb2f9ef5aaf5f59f) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_mdndclab_output.pla", 0, 365, CRC(592b40ba) SHA1(63a2531278a665ace54c541101e052eb84413511) )
-ROM_END
-
@@ -6264,8 +5796,8 @@ ROM_END
class comp4_state : public hh_tms1k_state
{
public:
- comp4_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ comp4_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
@@ -6340,22 +5872,6 @@ void comp4_state::comp4(machine_config &config)
/* no sound! */
}
-// roms
-
-ROM_START( comp4 )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "tmc0904nl_cp0904a", 0x0000, 0x0400, CRC(6233ee1b) SHA1(738e109b38c97804b4ec52bed80b00a8634ad453) )
-
- ROM_REGION( 782, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0970_common2_instr.pla", 0, 782, CRC(e038fc44) SHA1(dfc280f6d0a5828d1bb14fcd59ac29caf2c2d981) )
- ROM_REGION( 860, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0970_comp4_micro.pla", 0, 860, CRC(ee9d7d9e) SHA1(25484e18f6a07f7cdb21a07220e2f2a82fadfe7b) )
- ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_comp4_output.pla", 0, 352, CRC(144ce2d5) SHA1(459b92ad62421932df61b7e3965f1821f9636a2c) )
- ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0980_comp4_segment.pla", 0, 157, CRC(73426b07) SHA1(311be3f95a97936b6d1a4dcfa7746da26318ce54) )
-ROM_END
-
@@ -6384,8 +5900,8 @@ ROM_END
class bship_state : public hh_tms1k_state
{
public:
- bship_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ bship_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
@@ -6507,18 +6023,6 @@ void bship_state::bship(machine_config &config)
// TODO
}
-// roms
-
-ROM_START( bship )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp3201", 0x0000, 0x0400, CRC(bf6104a6) SHA1(8d28b43a2aa39dcbbe71f669cdafc518715812c9) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_bship_output.pla", 0, 365, CRC(ea0570b0) SHA1(6eb803b40717486d7b24939985f245327ac8a7e9) )
-ROM_END
-
@@ -6538,8 +6042,8 @@ ROM_END
class bshipb_state : public hh_tms1k_state
{
public:
- bshipb_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag),
+ bshipb_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag),
m_sn(*this, "sn76477")
{ }
@@ -6637,18 +6141,6 @@ void bshipb_state::bshipb(machine_config &config)
m_sn->add_route(ALL_OUTPUTS, "mono", 0.35);
}
-// roms
-
-ROM_START( bshipb )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp3208", 0x0000, 0x0400, CRC(982fa720) SHA1(1c6dbbe7b9e55d62a510225a88cd2de55fe9b181) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_bshipb_output.pla", 0, 365, BAD_DUMP CRC(74a9a244) SHA1(479c1f1e37cf8f75352e10226b20322906bee813) ) // part of decap photo was obscured
-ROM_END
-
@@ -6672,8 +6164,8 @@ ROM_END
class simon_state : public hh_tms1k_state
{
public:
- simon_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ simon_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
@@ -6735,12 +6227,6 @@ static INPUT_PORTS_START( simon )
PORT_CONFSETTING( 0x04, "2" )
PORT_CONFSETTING( 0x08, "3" )
PORT_CONFSETTING( 0x01, "4" )
-
- PORT_START("SWITCH") // fake
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<0>, 0x07)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<0>, 0x07)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<3>, 0x0f)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<3>, 0x0f)
INPUT_PORTS_END
void simon_state::simon(machine_config &config)
@@ -6759,28 +6245,6 @@ void simon_state::simon(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( simon )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "tms1000.u1", 0x0000, 0x0400, CRC(9961719d) SHA1(35dddb018a8a2b31f377ab49c1f0cb76951b81c0) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_simon_micro.pla", 0, 867, CRC(52f7c1f1) SHA1(dbc2634dcb98eac173ad0209df487cad413d08a5) )
- ROM_REGION( 365, "maincpu:opla", 0 ) // unused
- ROM_LOAD( "tms1000_simon_output.pla", 0, 365, CRC(2943c71b) SHA1(bd5bb55c57e7ba27e49c645937ec1d4e67506601) )
-ROM_END
-
-ROM_START( simonf )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp3300", 0x0000, 0x0400, CRC(b9fcf93a) SHA1(45960e4242a08495f2a99fc5d44728eabd93cd9f) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_simon_micro.pla", 0, 867, CRC(52f7c1f1) SHA1(dbc2634dcb98eac173ad0209df487cad413d08a5) )
- ROM_REGION( 365, "maincpu:opla", 0 ) // unused
- ROM_LOAD( "tms1000_simon_output.pla", 0, 365, CRC(2943c71b) SHA1(bd5bb55c57e7ba27e49c645937ec1d4e67506601) )
-ROM_END
-
@@ -6799,39 +6263,23 @@ ROM_END
class ssimon_state : public hh_tms1k_state
{
public:
- ssimon_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ ssimon_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
DECLARE_READ8_MEMBER(read_k);
void set_clock();
- DECLARE_INPUT_CHANGED_MEMBER(speed_switch) { set_clock(); }
+ DECLARE_INPUT_CHANGED_MEMBER(speed_switch);
void ssimon(machine_config &config);
protected:
virtual void machine_reset() override;
};
-void ssimon_state::machine_reset()
-{
- hh_tms1k_state::machine_reset();
- set_clock();
-}
-
// handlers
-void ssimon_state::set_clock()
-{
- // MCU clock is from an RC circuit with C=100pF, R=x depending on speed switch:
- // 0 Simple: R=51K -> ~200kHz
- // 1 Normal: R=37K -> ~275kHz
- // 2 Super: R=22K -> ~400kHz
- u8 inp = m_inp_matrix[6]->read();
- m_maincpu->set_unscaled_clock((inp & 2) ? 400000 : ((inp & 1) ? 275000 : 200000));
-}
-
WRITE16_MEMBER(ssimon_state::write_r)
{
// R0-R3,R9,R10: input mux
@@ -6899,16 +6347,29 @@ static INPUT_PORTS_START( ssimon )
PORT_CONFSETTING( 0x00, "Simple" )
PORT_CONFSETTING( 0x01, "Normal" )
PORT_CONFSETTING( 0x02, "Super" )
-
- PORT_START("SWITCH") // fake
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<0>, 0x0f)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<0>, 0x0f)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<4>, 0x0f)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<4>, 0x0f)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<6>, 0x03)
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<6>, 0x03)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(ssimon_state::speed_switch)
+{
+ set_clock();
+}
+
+void ssimon_state::set_clock()
+{
+ // MCU clock is from an RC circuit with C=100pF, R=x depending on speed switch:
+ // 0 Simple: R=51K -> ~200kHz
+ // 1 Normal: R=37K -> ~275kHz
+ // 2 Super: R=22K -> ~400kHz
+ u8 inp = m_inp_matrix[6]->read();
+ m_maincpu->set_unscaled_clock((inp & 2) ? 400000 : ((inp & 1) ? 275000 : 200000));
+}
+
+void ssimon_state::machine_reset()
+{
+ hh_tms1k_state::machine_reset();
+ set_clock();
+}
+
void ssimon_state::ssimon(machine_config &config)
{
/* basic machine hardware */
@@ -6925,18 +6386,6 @@ void ssimon_state::ssimon(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ssimon )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp3476", 0x0000, 0x0800, CRC(98200571) SHA1(cbd0bcfc11a534aa0be5d011584cdcac58ff437a) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
- ROM_REGION( 365, "maincpu:opla", 0 ) // unused
- ROM_LOAD( "tms1100_ssimon_output.pla", 0, 365, CRC(0fea09b0) SHA1(27a56fcf2b490e9a7dbbc6ad48cc8aaca4cada94) )
-ROM_END
-
@@ -6961,8 +6410,8 @@ ROM_END
class bigtrak_state : public hh_tms1k_state
{
public:
- bigtrak_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ bigtrak_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
@@ -6978,15 +6427,6 @@ protected:
virtual void machine_start() override;
};
-void bigtrak_state::machine_start()
-{
- hh_tms1k_state::machine_start();
-
- // zerofill/register for savestates
- m_gearbox_pos = 0;
- save_item(NAME(m_gearbox_pos));
-}
-
// handlers
TIMER_DEVICE_CALLBACK_MEMBER(bigtrak_state::gearbox_sim_tick)
@@ -7099,6 +6539,15 @@ static INPUT_PORTS_START( bigtrak )
PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
+void bigtrak_state::machine_start()
+{
+ hh_tms1k_state::machine_start();
+
+ // zerofill/register for savestates
+ m_gearbox_pos = 0;
+ save_item(NAME(m_gearbox_pos));
+}
+
static const s16 bigtrak_speaker_levels[8] = { 0, 0x7fff/3, 0x7fff/3, 0x7fff/3*2, 0x7fff/3, 0x7fff/3*2, 0x7fff/3*2, 0x7fff };
void bigtrak_state::bigtrak(machine_config &config)
@@ -7120,18 +6569,6 @@ void bigtrak_state::bigtrak(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bigtrak )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp3301a", 0x0000, 0x0400, CRC(1351bcdd) SHA1(68865389c25b541c09a742be61f8fb6488134d4e) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common3_micro.pla", 0, 867, CRC(80912d0a) SHA1(7ae5293ed4d93f5b7a64d43fe30c3639f39fbe5a) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_bigtrak_output.pla", 0, 365, CRC(63be45f6) SHA1(918e38a223152db883c1a6f7acf56e87d7074734) )
-ROM_END
-
@@ -7158,8 +6595,8 @@ ROM_END
class mbdtower_state : public hh_tms1k_state
{
public:
- mbdtower_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ mbdtower_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -7182,25 +6619,6 @@ protected:
virtual void machine_start() override;
};
-void mbdtower_state::machine_start()
-{
- hh_tms1k_state::machine_start();
-
- // zerofill
- m_motor_pos = 0;
- m_motor_pos_prev = -1;
- m_motor_decay = 0;
- m_motor_on = false;
- m_sensor_blind = false;
-
- // register for savestates
- save_item(NAME(m_motor_pos));
- /* save_item(NAME(m_motor_pos_prev)); */ // don't save!
- save_item(NAME(m_motor_decay));
- save_item(NAME(m_motor_on));
- save_item(NAME(m_sensor_blind));
-}
-
// handlers
TIMER_DEVICE_CALLBACK_MEMBER(mbdtower_state::motor_sim_tick)
@@ -7346,6 +6764,25 @@ static INPUT_PORTS_START( mbdtower )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("Tomb/Ruin")
INPUT_PORTS_END
+void mbdtower_state::machine_start()
+{
+ hh_tms1k_state::machine_start();
+
+ // zerofill
+ m_motor_pos = 0;
+ m_motor_pos_prev = -1;
+ m_motor_decay = 0;
+ m_motor_on = false;
+ m_sensor_blind = false;
+
+ // register for savestates
+ save_item(NAME(m_motor_pos));
+ /* save_item(NAME(m_motor_pos_prev)); */ // don't save!
+ save_item(NAME(m_motor_decay));
+ save_item(NAME(m_motor_on));
+ save_item(NAME(m_sensor_blind));
+}
+
void mbdtower_state::mbdtower(machine_config &config)
{
/* basic machine hardware */
@@ -7364,18 +6801,6 @@ void mbdtower_state::mbdtower(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( mbdtower )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mp7332", 0x0000, 0x1000, CRC(ebeab91a) SHA1(7edbff437da371390fa8f28b3d183f833eaa9be9) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
- ROM_REGION( 557, "maincpu:opla", 0 )
- ROM_LOAD( "tms1400_mbdtower_output.pla", 0, 557, CRC(64c84697) SHA1(72ce6d24cedf9c606f1742cd5620f75907246e87) )
-ROM_END
-
@@ -7394,8 +6819,8 @@ ROM_END
class arcmania_state : public hh_tms1k_state
{
public:
- arcmania_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ arcmania_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
@@ -7461,9 +6886,9 @@ static INPUT_PORTS_START( arcmania )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.2") // O6 (also O5 to power)
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_NAME("Orange Button 1") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_NAME("Orange Button 2") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_NAME("Orange Button 3") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_NAME("Orange Button 1") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_NAME("Orange Button 2") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_NAME("Orange Button 3") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
@@ -7487,18 +6912,6 @@ void arcmania_state::arcmania(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( arcmania )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "m34078a", 0x0000, 0x0800, CRC(90ea0087) SHA1(9780c9c1ba89300b1bbe72c47e5fec68d8bb6a77) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_arcmania_output.pla", 0, 365, CRC(a1517b15) SHA1(72eedd7fd41de9c9102219f325fe8668a7c02663) )
-ROM_END
-
@@ -7518,8 +6931,8 @@ ROM_END
class cnsector_state : public hh_tms1k_state
{
public:
- cnsector_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ cnsector_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
@@ -7614,22 +7027,6 @@ void cnsector_state::cnsector(machine_config &config)
/* no sound! */
}
-// roms
-
-ROM_START( cnsector )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp0905bnl_za0379", 0x0000, 0x0400, CRC(201036e9) SHA1(b37fef86bb2bceaf0ac8bb3745b4702d17366914) )
-
- ROM_REGION( 782, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0970_common2_instr.pla", 0, 782, CRC(e038fc44) SHA1(dfc280f6d0a5828d1bb14fcd59ac29caf2c2d981) )
- ROM_REGION( 860, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0970_cnsector_micro.pla", 0, 860, CRC(059f5bb4) SHA1(2653766f9fd74d41d44013bb6f54c0973a6080c9) )
- ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_cnsector_output.pla", 0, 352, CRC(c8bfb9d2) SHA1(30c3c73cec194debdcb1dd01b4adfefaeddf9516) )
- ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
-ROM_END
-
@@ -7659,8 +7056,8 @@ ROM_END
class merlin_state : public hh_tms1k_state
{
public:
- merlin_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ merlin_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
virtual DECLARE_WRITE16_MEMBER(write_r);
@@ -7748,18 +7145,6 @@ void merlin_state::merlin(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( merlin )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp3404", 0x0000, 0x0800, CRC(7515a75d) SHA1(76ca3605d3fde1df62f79b9bb1f534c2a2ae0229) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_merlin_output.pla", 0, 365, CRC(3921b074) SHA1(12bd58e4d6676eb8c7059ef53598279e4f1a32ea) )
-ROM_END
-
@@ -7789,8 +7174,8 @@ ROM_END
class mmerlin_state : public merlin_state
{
public:
- mmerlin_state(const machine_config &mconfig, device_type type, const char *tag) :
- merlin_state(mconfig, type, tag)
+ mmerlin_state(const machine_config &mconfig, device_type type, const char *tag)
+ : merlin_state(mconfig, type, tag)
{ }
void mmerlin(machine_config &config);
@@ -7825,18 +7210,6 @@ void mmerlin_state::mmerlin(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( mmerlin )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mp7351", 0x0000, 0x1000, CRC(0f7a4c83) SHA1(242c1278ddfe92c28fd7cd87300e48e7a4827831) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
- ROM_REGION( 557, "maincpu:opla", 0 )
- ROM_LOAD( "tms1400_mmerlin_output.pla", 0, 557, CRC(fd3dcd93) SHA1(f2afc52df700daa0eb7356c7876af9b2966f971b) )
-ROM_END
-
@@ -7857,8 +7230,8 @@ ROM_END
class stopthief_state : public hh_tms1k_state
{
public:
- stopthief_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ stopthief_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
@@ -7926,11 +7299,11 @@ static INPUT_PORTS_START( stopthief )
// note: even though power buttons are on the matrix, they are not CPU-controlled
PORT_START("IN.2") // Vss!
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("Tip")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("Arrest")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("Clue")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, false)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
INPUT_PORTS_END
static const s16 stopthief_speaker_levels[7] = { 0, 0x7fff/6, 0x7fff/5, 0x7fff/4, 0x7fff/3, 0x7fff/2, 0x7fff };
@@ -7954,36 +7327,6 @@ void stopthief_state::stopthief(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( stopthief )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mp6101b", 0x0000, 0x1000, CRC(b9c9d64a) SHA1(481f8653064c142fe5d9314b750bcd73797b92b2) )
-
- ROM_REGION( 1246, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
- ROM_REGION( 1982, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
- ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_stopthief_output.pla", 0, 352, CRC(680ca1c1) SHA1(dea6365f2e6b50a52f1a8f1d8417176b905d2bc9) )
- ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
-ROM_END
-
-ROM_START( stopthiefp )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD16_WORD( "us4341385", 0x0000, 0x1000, CRC(07aec38a) SHA1(0a3d0956495c0d6d9ea771feae6c14a473a800dc) ) // from patent US4341385, data should be correct (it included checksums)
-
- ROM_REGION( 1246, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
- ROM_REGION( 1982, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
- ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_stopthief_output.pla", 0, 352, CRC(680ca1c1) SHA1(dea6365f2e6b50a52f1a8f1d8417176b905d2bc9) )
- ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
-ROM_END
-
@@ -8007,8 +7350,8 @@ ROM_END
class bankshot_state : public hh_tms1k_state
{
public:
- bankshot_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ bankshot_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -8096,18 +7439,6 @@ void bankshot_state::bankshot(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bankshot )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mp7313", 0x0000, 0x1000, CRC(7a5016a9) SHA1(a8730dc8a282ffaa3d89e675f371d43eb39f39b4) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
- ROM_REGION( 557, "maincpu:opla", 0 )
- ROM_LOAD( "tms1400_bankshot_output.pla", 0, 557, CRC(7539283b) SHA1(f791fa98259fc10c393ff1961d4c93040f1a2932) )
-ROM_END
-
@@ -8147,8 +7478,8 @@ ROM_END
class splitsec_state : public hh_tms1k_state
{
public:
- splitsec_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ splitsec_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -8225,18 +7556,6 @@ void splitsec_state::splitsec(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( splitsec )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mp7314", 0x0000, 0x1000, CRC(e94b2098) SHA1(f0fc1f56a829252185592a2508740354c50bedf8) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
- ROM_REGION( 557, "maincpu:opla", 0 )
- ROM_LOAD( "tms1400_splitsec_output.pla", 0, 557, CRC(7539283b) SHA1(f791fa98259fc10c393ff1961d4c93040f1a2932) )
-ROM_END
-
@@ -8255,8 +7574,8 @@ ROM_END
class lostreas_state : public hh_tms1k_state
{
public:
- lostreas_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ lostreas_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
@@ -8356,18 +7675,6 @@ void lostreas_state::lostreas(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( lostreas )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "m34038", 0x0000, 0x0800, CRC(4c996f63) SHA1(ebbaa8b2f909f4300887aa2dbdb7185eedc75d3f) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_lostreas_output.pla", 0, 365, CRC(c62d850f) SHA1(d25974e6901eb10c52cdda12e6d4a13e26745e6f) )
-ROM_END
-
@@ -8394,10 +7701,12 @@ ROM_END
class alphie_state : public hh_tms1k_state
{
public:
- alphie_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ alphie_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
+ TIMER_DEVICE_CALLBACK_MEMBER(show_arm_position);
+
DECLARE_WRITE16_MEMBER(write_r);
DECLARE_WRITE16_MEMBER(write_o);
DECLARE_READ8_MEMBER(read_k);
@@ -8406,6 +7715,13 @@ public:
// handlers
+TIMER_DEVICE_CALLBACK_MEMBER(alphie_state::show_arm_position)
+{
+ // arm position 1(up) to 5(down)
+ output().set_value("q_pos", 32 - count_leading_zeros(m_inp_matrix[1]->read()));
+ output().set_value("a_pos", 32 - count_leading_zeros(m_inp_matrix[2]->read()));
+}
+
WRITE16_MEMBER(alphie_state::write_r)
{
// R1-R5, input mux (using d5 for Vss)
@@ -8435,25 +7751,17 @@ READ8_MEMBER(alphie_state::read_k)
// config
+static const ioport_value alphie_armpos_table[5] = { 0x01, 0x02, 0x04, 0x08, 0x10 };
+
static INPUT_PORTS_START( alphie )
PORT_START("IN.0") // K1
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
PORT_START("IN.1") // K2
- PORT_CONFNAME( 0x1f, 0x01, "Question" )
- PORT_CONFSETTING( 0x01, "1" )
- PORT_CONFSETTING( 0x02, "2" )
- PORT_CONFSETTING( 0x04, "3" )
- PORT_CONFSETTING( 0x08, "4" )
- PORT_CONFSETTING( 0x10, "5" )
+ PORT_BIT( 0x1f, 0x00, IPT_POSITIONAL_V ) PORT_PLAYER(2) PORT_POSITIONS(5) PORT_REMAP_TABLE(alphie_armpos_table) PORT_SENSITIVITY(10) PORT_KEYDELTA(1) PORT_CENTERDELTA(0) PORT_NAME("Question Arm")
PORT_START("IN.2") // K4
- PORT_CONFNAME( 0x1f, 0x01, "Answer" )
- PORT_CONFSETTING( 0x01, "1" )
- PORT_CONFSETTING( 0x02, "2" )
- PORT_CONFSETTING( 0x04, "3" )
- PORT_CONFSETTING( 0x08, "4" )
- PORT_CONFSETTING( 0x10, "5" )
+ PORT_BIT( 0x1f, 0x00, IPT_POSITIONAL_V ) PORT_POSITIONS(5) PORT_REMAP_TABLE(alphie_armpos_table) PORT_SENSITIVITY(10) PORT_KEYDELTA(1) PORT_CENTERDELTA(0) PORT_NAME("Answer Arm")
PORT_START("IN.3") // K8
PORT_CONFNAME( 0x0f, 0x01, "Activity" )
@@ -8461,14 +7769,6 @@ static INPUT_PORTS_START( alphie )
PORT_CONFSETTING( 0x02, "Lunar Landing" )
PORT_CONFSETTING( 0x04, "Robot Land" )
PORT_CONFSETTING( 0x08, "Tunes" )
-
- PORT_START("SWITCH") // fake
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<1>, 0x1f) PORT_NAME("Question Arm Up")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<1>, 0x1f) PORT_NAME("Question Arm Down")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<2>, 0x1f) PORT_NAME("Answer Arm Up")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<2>, 0x1f) PORT_NAME("Answer Arm Down")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<3>, 0x0f) PORT_NAME("Activity Selector Left")
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<3>, 0x0f) PORT_NAME("Activity Selector Right")
INPUT_PORTS_END
// output PLA is guessed
@@ -8487,6 +7787,7 @@ void alphie_state::alphie(machine_config &config)
m_maincpu->r().set(FUNC(alphie_state::write_r));
m_maincpu->o().set(FUNC(alphie_state::write_o));
+ TIMER(config, "arm_position").configure_periodic(FUNC(alphie_state::show_arm_position), attotime::from_msec(50));
TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_alphie);
@@ -8496,18 +7797,6 @@ void alphie_state::alphie(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( alphie )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "us4280809", 0x0000, 0x0400, CRC(f8f14013) SHA1(bf31b929fcbcb189bbe4623104e1da0a639b5954) ) // from patent US4280809, should be good
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, BAD_DUMP CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) // not in patent description
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_alphie_output.pla", 0, 365, NO_DUMP ) // "
-ROM_END
-
@@ -8527,8 +7816,8 @@ ROM_END
class tcfball_state : public hh_tms1k_state
{
public:
- tcfball_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ tcfball_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -8617,18 +7906,6 @@ void tcfball_state::tcfball(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tcfball )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp1193", 0x0000, 0x0800, CRC(7d9f446f) SHA1(bb6af47b42d989494f21475a73f072cddf58c99f) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_tcfball_output.pla", 0, 365, CRC(26b2996e) SHA1(df0e706c552bf74123aa65e71b0c9b4d33cddb2b) )
-ROM_END
-
@@ -8651,8 +7928,8 @@ ROM_END
class tcfballa_state : public tcfball_state
{
public:
- tcfballa_state(const machine_config &mconfig, device_type type, const char *tag) :
- tcfball_state(mconfig, type, tag)
+ tcfballa_state(const machine_config &mconfig, device_type type, const char *tag)
+ : tcfball_state(mconfig, type, tag)
{ }
void tcfballa(machine_config &config);
@@ -8695,18 +7972,6 @@ void tcfballa_state::tcfballa(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tcfballa )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp1183", 0x0000, 0x0800, CRC(2a4db1d5) SHA1(5df15d1115bb425578ad522d607a582dd478f35c) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_tcfballa_output.pla", 0, 365, NO_DUMP )
-ROM_END
-
@@ -8741,8 +8006,8 @@ ROM_END
class tandy12_state : public hh_tms1k_state
{
public:
- tandy12_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ tandy12_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -8840,7 +8105,7 @@ static INPUT_PORTS_START( tandy12 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Button 5")
INPUT_PORTS_END
-// output PLA is not decapped, this was made by hand
+// output PLA is not decapped
static const u16 tandy12_output_pla[0x20] =
{
// these are certain
@@ -8871,18 +8136,6 @@ void tandy12_state::tandy12(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tandy12 )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "cd7282sl", 0x0000, 0x0800, CRC(a10013dd) SHA1(42ebd3de3449f371b99937f9df39c240d15ac686) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, BAD_DUMP CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) // not verified
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_tandy12_output.pla", 0, 365, NO_DUMP )
-ROM_END
-
@@ -8906,8 +8159,8 @@ ROM_END
class monkeysee_state : public hh_tms1k_state
{
public:
- monkeysee_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ monkeysee_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
@@ -8991,18 +8244,6 @@ void monkeysee_state::monkeysee(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( monkeysee )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp0271", 0x0000, 0x0400, CRC(acab0f05) SHA1(226f7688caf4a94a88241d3b61ddc4254e4a918c) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_monkeysee_micro.pla", 0, 867, CRC(368d878f) SHA1(956e700a04f453c1610cfdb974fce898ba4cf01f) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_monkeysee_output.pla", 0, 365, CRC(8a010e89) SHA1(3ffbabc5d6c9b34cc06d290817d15b2be42d8b17) )
-ROM_END
-
@@ -9023,8 +8264,8 @@ ROM_END
class speechp_state : public hh_tms1k_state
{
public:
- speechp_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag),
+ speechp_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag),
m_speech(*this, "speech")
{ }
@@ -9152,21 +8393,6 @@ void speechp_state::speechp(machine_config &config)
m_speech->add_route(ALL_OUTPUTS, "mono", 0.75);
}
-// roms
-
-ROM_START( speechp )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "tms1007nl", 0x0000, 0x0400, CRC(c2669d5c) SHA1(7943d6f39508a9a82bc21e4fe34a5b9f86e3add2) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_speechp_output.pla", 0, 365, CRC(e1b4197f) SHA1(258f4276a9f15c9bfbfa58df2f7202aed1542fdc) )
-
- ROM_REGION( 0x0800, "speech", 0 )
- ROM_LOAD("s14007-a", 0x0000, 0x0800, CRC(543b46d4) SHA1(99daf7fe3354c378b4bd883840c9bbd22b22ebe7) )
-ROM_END
-
@@ -9191,8 +8417,8 @@ ROM_END
class timaze_state : public hh_tms1k_state
{
public:
- timaze_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ timaze_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
@@ -9246,18 +8472,6 @@ void timaze_state::timaze(machine_config &config)
/* no sound! */
}
-// roms
-
-ROM_START( timaze )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "gb2040172a", 0x0000, 0x0400, CRC(0bab4dc6) SHA1(c9d40649fbb27a8b7cf7460d66c7e217b63376f0) ) // from patent GB2040172A, verified with source code
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, BAD_DUMP CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) // not in patent, use default one
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_timaze_output.pla", 0, 365, BAD_DUMP CRC(f0f36970) SHA1(a6ad1f5e804ac98e5e1a1d07466b3db3a8d6c256) ) // described in patent, but unsure about pin order
-ROM_END
-
@@ -9279,8 +8493,8 @@ ROM_END
class copycat_state : public hh_tms1k_state
{
public:
- copycat_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ copycat_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
@@ -9364,18 +8578,6 @@ void copycat_state::copycat(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( copycat )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp0919", 0x0000, 0x0400, CRC(92a21299) SHA1(16daadb8dbf53aaab8a71833017b4a578d035d6d) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_copycat_output.pla", 0, 365, CRC(b1d0c96d) SHA1(ac1a003eab3f69e09e9050cb24ea17211e0523fe) )
-ROM_END
-
@@ -9401,8 +8603,8 @@ ROM_END
class copycatm2_state : public hh_tms1k_state
{
public:
- copycatm2_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ copycatm2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
@@ -9452,18 +8654,6 @@ void copycatm2_state::copycatm2(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( copycatm2 )
- ROM_REGION( 0x0200, "maincpu", 0 )
- ROM_LOAD( "mp3005n", 0x0000, 0x0200, CRC(a87649cb) SHA1(14ef7967a80578885f0b905772c3bb417b5b3255) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_copycatm2_micro.pla", 0, 867, CRC(2710d8ef) SHA1(cb7a13bfabedad43790de753844707fe829baed0) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_copycatm2_output.pla", 0, 365, CRC(d1999aaf) SHA1(0c27789b349e491d5230f9c75c4741e621f5a14e) )
-ROM_END
-
@@ -9484,8 +8674,8 @@ ROM_END
class ditto_state : public hh_tms1k_state
{
public:
- ditto_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ ditto_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_r);
@@ -9535,18 +8725,6 @@ void ditto_state::ditto(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ditto )
- ROM_REGION( 0x0200, "maincpu", 0 )
- ROM_LOAD( "mp1801", 0x0000, 0x0200, CRC(cee6043b) SHA1(4ec334be6835688413637ff9d9d7a5f0d61eba27) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_ditto_micro.pla", 0, 867, CRC(2710d8ef) SHA1(cb7a13bfabedad43790de753844707fe829baed0) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_ditto_output.pla", 0, 365, CRC(2b708a27) SHA1(e95415e51ffbe5da3bde1484fcd20467dde9f09a) )
-ROM_END
-
@@ -9570,8 +8748,8 @@ ROM_END
class ss7in1_state : public hh_tms1k_state
{
public:
- ss7in1_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ ss7in1_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -9662,18 +8840,6 @@ void ss7in1_state::ss7in1(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( 7in1ss )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mp7304", 0x0000, 0x1000, CRC(2a1c8390) SHA1(fa10e60686af6828a61f05046abc3854ab49af95) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
- ROM_REGION( 557, "maincpu:opla", 0 )
- ROM_LOAD( "tms1400_7in1ss_output.pla", 0, 557, CRC(6b7660f7) SHA1(bb7d58fa04e7606ccdf5b209e1b089948bdd1e7c) )
-ROM_END
-
@@ -9716,8 +8882,8 @@ ROM_END
class tbreakup_state : public hh_tms1k_state
{
public:
- tbreakup_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag),
+ tbreakup_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag),
m_expander(*this, "expander")
{ }
@@ -9731,7 +8897,7 @@ public:
DECLARE_READ8_MEMBER(read_k);
void set_clock();
- DECLARE_INPUT_CHANGED_MEMBER(skill_switch) { set_clock(); }
+ DECLARE_INPUT_CHANGED_MEMBER(skill_switch);
void tbreakup(machine_config &config);
protected:
@@ -9739,30 +8905,8 @@ protected:
virtual void machine_start() override;
};
-void tbreakup_state::machine_start()
-{
- hh_tms1k_state::machine_start();
-
- // zerofill/register for savestates
- memset(m_exp_port, 0, sizeof(m_exp_port));
- save_item(NAME(m_exp_port));
-}
-
-void tbreakup_state::machine_reset()
-{
- hh_tms1k_state::machine_reset();
- set_clock();
- m_expander->write_ms(1); // Vss
-}
-
// handlers
-void tbreakup_state::set_clock()
-{
- // MCU clock is from an analog circuit with resistor of 73K, PRO2 adds 100K
- m_maincpu->set_unscaled_clock((m_inp_matrix[3]->read() & 1) ? 500000 : 325000);
-}
-
void tbreakup_state::prepare_display()
{
// 7seg leds from R0,R1 and O0-O6
@@ -9845,6 +8989,33 @@ static INPUT_PORTS_START( tbreakup )
PORT_CONFSETTING( 0x01, "Pro 2" )
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(tbreakup_state::skill_switch)
+{
+ set_clock();
+}
+
+void tbreakup_state::set_clock()
+{
+ // MCU clock is from an analog circuit with resistor of 73K, PRO2 adds 100K
+ m_maincpu->set_unscaled_clock((m_inp_matrix[3]->read() & 1) ? 500000 : 325000);
+}
+
+void tbreakup_state::machine_reset()
+{
+ hh_tms1k_state::machine_reset();
+ set_clock();
+ m_expander->write_ms(1); // Vss
+}
+
+void tbreakup_state::machine_start()
+{
+ hh_tms1k_state::machine_start();
+
+ // zerofill/register for savestates
+ memset(m_exp_port, 0, sizeof(m_exp_port));
+ save_item(NAME(m_exp_port));
+}
+
void tbreakup_state::tbreakup(machine_config &config)
{
/* basic machine hardware */
@@ -9871,18 +9042,6 @@ void tbreakup_state::tbreakup(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tbreakup )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "mp2726a", 0x0000, 0x0400, CRC(1f7c28e2) SHA1(164cda4eb3f0b1d20955212a197c9aadf8d18a06) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_tbreakup_output.pla", 0, 365, CRC(a1ea035e) SHA1(fcf0b57ed90b41441a8974223a697f530daac0ab) )
-ROM_END
-
@@ -9919,8 +9078,8 @@ ROM_END
class phpball_state : public hh_tms1k_state
{
public:
- phpball_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ phpball_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -9928,7 +9087,7 @@ public:
DECLARE_WRITE16_MEMBER(write_o);
DECLARE_READ8_MEMBER(read_k);
- DECLARE_INPUT_CHANGED_MEMBER(flipper_button) { prepare_display(); }
+ DECLARE_INPUT_CHANGED_MEMBER(flipper_button);
void phpball(machine_config &config);
};
@@ -9985,6 +9144,11 @@ static INPUT_PORTS_START( phpball )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Left Flipper") PORT_CHANGED_MEMBER(DEVICE_SELF, phpball_state, flipper_button, nullptr)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(phpball_state::flipper_button)
+{
+ prepare_display();
+}
+
void phpball_state::phpball(machine_config &config)
{
/* basic machine hardware */
@@ -9994,7 +9158,7 @@ void phpball_state::phpball(machine_config &config)
m_maincpu->o().set(FUNC(phpball_state::write_o));
TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_phpball);
+ config.set_default_layout(layout_hh_tms1k_test);
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -10002,18 +9166,6 @@ void phpball_state::phpball(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( phpball )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp1180", 0x0000, 0x0800, CRC(2163b92d) SHA1(bc53d1911e88b4e89d951c6f769703105c13389c) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_phpball_output.pla", 0, 365, CRC(87e67aaf) SHA1(ebc7bae1352f39173f1bf0dc10cdc6f635dedab4) )
-ROM_END
-
@@ -10034,8 +9186,8 @@ ROM_END
class ssports4_state : public hh_tms1k_state
{
public:
- ssports4_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ ssports4_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -10150,18 +9302,6 @@ void ssports4_state::ssports4(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ssports4 )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "mp1219", 0x0000, 0x0800, CRC(865c06d6) SHA1(12a625a13bdb57b82b35c42b175d38756a1e2e04) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_ssports4_output.pla", 0, 365, NO_DUMP )
-ROM_END
-
@@ -10180,12 +9320,12 @@ ROM_END
class xl25_state : public hh_tms1k_state
{
public:
- xl25_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ xl25_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
void update_halt();
- DECLARE_INPUT_CHANGED_MEMBER(k4_button) { update_halt(); }
+ DECLARE_INPUT_CHANGED_MEMBER(k4_button);
void prepare_display();
DECLARE_WRITE16_MEMBER(write_r);
@@ -10197,19 +9337,13 @@ protected:
virtual void machine_reset() override;
};
-void xl25_state::machine_reset()
-{
- hh_tms1k_state::machine_reset();
- update_halt();
-}
-
// handlers
void xl25_state::update_halt()
{
// O5+K4 go to HALT pin (used when pressing store/recall button)
bool halt = !((m_o & 0x20) || (read_k(machine().dummy_space(), 0) & 4));
- m_maincpu->set_input_line(INPUT_LINE_HALT, halt ? ASSERT_LINE : CLEAR_LINE);
+ m_maincpu->set_input_line(TMS1XXX_INPUT_LINE_HALT, halt ? ASSERT_LINE : CLEAR_LINE);
}
void xl25_state::prepare_display()
@@ -10309,6 +9443,17 @@ static INPUT_PORTS_START( xl25 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(xl25_state::k4_button)
+{
+ update_halt();
+}
+
+void xl25_state::machine_reset()
+{
+ hh_tms1k_state::machine_reset();
+ update_halt();
+}
+
void xl25_state::xl25(machine_config &config)
{
/* basic machine hardware */
@@ -10326,7 +9471,833 @@ void xl25_state::xl25(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
+
+
+
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+ROM_START( matchnum )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0163", 0x0000, 0x0400, CRC(37507600) SHA1(b1d4d8ea563e97ef378b42c44cb3ea4eb6abe0d2) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_matchnum_output.pla", 0, 365, CRC(da29670c) SHA1(bcec28bf25dc8c81d08851ad8a3f4e89f413017a) )
+ROM_END
+
+
+ROM_START( arrball )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0166", 0x0000, 0x0400, CRC(a78694db) SHA1(362aa6e356288e8df7da610246bd01fe72985d57) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_arrball_output.pla", 0, 365, CRC(ffc206fb) SHA1(339be3f066fb2f075211c554e81260b49cd83d15) )
+ROM_END
+
+
+ROM_START( mathmagi )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1030", 0x0000, 0x0800, CRC(a81d7ccb) SHA1(4756ce42f1ea28ce5fe6498312f8306f10370969) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_mathmagi_output.pla", 0, 365, NO_DUMP )
+ROM_END
+
+
+ROM_START( bcheetah )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0915", 0x0000, 0x0400, CRC(2968c81e) SHA1(d1e6691952600e88ccf626cb3d683419a1e8468c) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_bcheetah_output.pla", 0, 365, CRC(cc6d1ecd) SHA1(b0635a841d8850c36c1f414abe0571b81884b972) )
+ROM_END
+
+
+ROM_START( amaztron )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp3405", 0x0000, 0x0800, CRC(9cbc0009) SHA1(17772681271b59280687492f37fa0859998f041d) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_amaztron_output.pla", 0, 365, CRC(f3875384) SHA1(3c256a3db4f0aa9d93cf78124db39f4cbdc57e4a) )
+ROM_END
+
+
+ROM_START( zodiac )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp3435", 0x0000, 0x0800, CRC(ecdc3160) SHA1(a7e82d66314a039fcffeddf99919d9f9ad42d61d) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, BAD_DUMP CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) // not verified
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_zodiac_output.pla", 0, 365, NO_DUMP )
+ROM_END
+
+
+ROM_START( cqback )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp3415.u4", 0x0000, 0x0800, CRC(65ebdabf) SHA1(9b5cf5adaf9132ced87f611ae8c3148b9b62ba89) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_cqback_output.pla", 0, 365, CRC(c6dcbfd0) SHA1(593b6b7de981a28d1b4a33336b39df92d02ed4f4) )
+ROM_END
+
+
+ROM_START( h2hfootb )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp3460.u3", 0x0000, 0x0800, CRC(3a4e53a8) SHA1(5052e706f992c6c4bada1fa7769589eec3df6471) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_h2hfootb_output.pla", 0, 365, CRC(c8d85873) SHA1(16bd6fc8e3cd16d5f8fd32d0c74e67de77f5487e) )
+ROM_END
+
+
+ROM_START( h2hhockey )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp3321a", 0x0000, 0x0400, CRC(e974e604) SHA1(ed740c98ce96ad70ee5237eccae1f54a75ad8100) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_h2hhockey_output.pla", 0, 365, CRC(9d1a91e1) SHA1(96303eb22375129b0dfbfcd823c8ca5b919511bc) )
+ROM_END
+
+
+ROM_START( h2hbaseb )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1525", 0x0000, 0x0800, CRC(b5d6bf9b) SHA1(2cc9f35f077c1209c46d16ec853af87e4725c2fd) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_h2hbaseb_output.pla", 0, 365, CRC(cb3d7e38) SHA1(6ab4a7c52e6010b7c7158463cb499973e52ff556) )
+ROM_END
+
+
+ROM_START( h2hboxing )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "m34018", 0x0000, 0x0800, CRC(e26a11a3) SHA1(aa2735088d709fa8d9188c4fb7982a53e3a8c1bc) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_h2hboxing_output.pla", 0, 365, CRC(ffb0e63d) SHA1(31ee3f779270a23f05f9ad508283d2569ef069f1) )
+ROM_END
+
+
+ROM_START( quizwizc )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "m32001", 0x0000, 0x0400, CRC(053657eb) SHA1(38c84f7416f79aa679f434a3d35df54cd9aa528a) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common3_micro.pla", 0, 867, CRC(80912d0a) SHA1(7ae5293ed4d93f5b7a64d43fe30c3639f39fbe5a) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_quizwizc_output.pla", 0, 365, CRC(475b7053) SHA1(8f61bf736eb41d7029a6b165cc0a184ba0a70a2a) )
+ROM_END
+
+
+ROM_START( tc4 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mp7334", 0x0000, 0x1000, CRC(923f3821) SHA1(a9ae342d7ff8dae1dedcd1e4984bcfae68586581) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 557, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1400_tc4_output.pla", 0, 557, CRC(3b908725) SHA1(f83bf5faa5b3cb51f87adc1639b00d6f9a71ad19) )
+ROM_END
+
+
+ROM_START( cnbaskb )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0907", 0x0000, 0x0400, CRC(35f84f0f) SHA1(744ca60bb853a2785184042e747530a9e02488f8) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_cnbaskb_output.pla", 0, 365, CRC(b4e28956) SHA1(8356112da71b351420a88d7e394e7d03e429368c) )
+ROM_END
+
+
+ROM_START( cmsport )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0168.u1", 0x0000, 0x0400, CRC(0712a268) SHA1(bd4e23e5c17b28c52e7e769e44773cc9c8839bed) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_cmsport_output.pla", 0, 365, CRC(7defa140) SHA1(477e3cb55e79938d6acaa911e410f6dcb974c218) )
+ROM_END
+
+
+ROM_START( cnfball )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0170", 0x0000, 0x0400, CRC(50e8a44f) SHA1(fea6ae03c4ef329d825f8688e6854df15023d47e) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_cnfball_output.pla", 0, 365, CRC(0af52f64) SHA1(b4cf450e4d895eddb67448aa69e4f18a5a84e033) )
+ROM_END
+
+
+ROM_START( cnfball2 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1181", 0x0000, 0x0800, CRC(4553a840) SHA1(2e1132c9bc51641f77ba7f2430b5a3b2766b3a3d) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_cnfball2_output.pla", 0, 365, NO_DUMP )
+ROM_END
+
+
+ROM_START( eleciq )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0908", 0x0000, 0x0400, CRC(db59b82c) SHA1(c9a6bcba208969560495ad9f8775f53de16a69c3) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_eleciq_output.pla", 0, 365, CRC(b8e04232) SHA1(22eed6d9b1fb1e5c9974ea3df16cda71a39aad57) )
+ROM_END
+
+
+ROM_START( esoccer )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0158.ic1", 0x0000, 0x0400, CRC(ae4581ea) SHA1(5f6881f8247094abf8cffb17f6e6586e94cff38c) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_esoccer_output.pla", 0, 365, CRC(c6eeabbd) SHA1(99d07902126b5a1c1abf43340f30d3390da5fa92) )
+ROM_END
+
+
+ROM_START( ebball )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0914", 0x0000, 0x0400, CRC(3c6fb05b) SHA1(b2fe4b3ca72d6b4c9bfa84d67f64afdc215e7178) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_ebball_output.pla", 0, 365, CRC(062bf5bb) SHA1(8d73ee35444299595961225528b153e3a5fe66bf) )
+ROM_END
+
+
+ROM_START( ebball2 )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0923", 0x0000, 0x0400, CRC(077acfe2) SHA1(a294ce7614b2cdb01c754a7a50d60d807e3f0939) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_ebball2_output.pla", 0, 365, CRC(adcd73d1) SHA1(d69e590d288ef99293d86716498f3971528e30de) )
+ROM_END
+
+
+ROM_START( ebball3 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "6007_mp1204", 0x0000, 0x0800, CRC(987a29ba) SHA1(9481ae244152187d85349d1a08e439e798182938) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_ebball3_output.pla", 0, 365, CRC(00db663b) SHA1(6eae12503364cfb1f863df0e57970d3e766ec165) )
+ROM_END
+
+
+ROM_START( esbattle )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "en-6004_mp0920", 0x0000, 0x0400, CRC(7460c179) SHA1(be855054b4a98b05b34fd931d5c247c5c0f9b036) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_esbattle_output.pla", 0, 365, CRC(861b45a2) SHA1(a5a9dc9bef8adb761845ad548058b55e970517d3) )
+ROM_END
+
+
+ROM_START( einvader )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1211", 0x0000, 0x0800, CRC(b6efbe8e) SHA1(d7d54921dab22bb0c2956c896a5d5b56b6f64969) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_einvader_output.pla", 0, 365, CRC(490158e1) SHA1(61cace1eb09244663de98d8fb04d9459b19668fd) )
+
+ ROM_REGION( 44398, "svg", 0)
+ ROM_LOAD( "einvader.svg", 0, 44398, CRC(48de88fd) SHA1(56a2b9c997a447277b45902ab542eda54e7d5a2f) )
+ROM_END
+
+
+ROM_START( efootb4 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "6009_mp7551", 0x0000, 0x1000, CRC(54fa7244) SHA1(4d16bd825c4a2db76ca8a263c373ade15c20e270) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 557, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1400_efootb4_output.pla", 0, 557, CRC(5c87c753) SHA1(bde9d4aa1e57a718affd969475c0a1edcf60f444) )
+ROM_END
+
+
+ROM_START( ebaskb2 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "6010_mp1218", 0x0000, 0x0800, CRC(0089ede8) SHA1(c8a79d5aca7e37b637a4d152150acba9f41aad96) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_ebaskb2_output.pla", 0, 365, CRC(c18103ae) SHA1(5a9bb8e1d95a9f6919b05ff9471fa0a8014b8b81) )
+ROM_END
+
+
+ROM_START( raisedvl )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1221", 0x0000, 0x0800, CRC(782791cc) SHA1(214249406fcaf44efc6350022bd534e59ec69c88) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_raisedvl_output.pla", 0, 365, CRC(00db663b) SHA1(6eae12503364cfb1f863df0e57970d3e766ec165) )
+ROM_END
+
+
+ROM_START( f2pbball )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0154", 0x0000, 0x0400, CRC(c5b45ace) SHA1(b2de32e83ab447b22d6828f0081843f364040b01) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_f2pbball_output.pla", 0, 365, CRC(30c2f28f) SHA1(db969b22475f37f083c3594f5e4f5759048377b8) )
+ROM_END
+
+
+ROM_START( f3in1 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1185", 0x0000, 0x0800, CRC(53f7b28d) SHA1(2249890e3a259095193b4331ca88c29ccd81eefe) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_f3in1_output.pla", 0, 365, CRC(51d947bc) SHA1(f766397d84f038be96e83d40989195c98ddcb1d9) )
+ROM_END
+
+
+ROM_START( gpoker )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp2105", 0x0000, 0x0800, CRC(95a8f5b4) SHA1(d14f00ba9f57e437264d972baa14a14a28ff8719) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_gpoker_output.pla", 0, 365, CRC(f7e2d812) SHA1(cc3abd89afb1d2145dc47636553ccd0ba7de70d9) )
+ROM_END
+
+
+ROM_START( gjackpot )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mpf553", 0x0000, 0x1000, CRC(f45fd008) SHA1(8d5d6407a8a031a833ceedfb931f5c9d2725ecd0) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 557, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1400_gjackpot_output.pla", 0, 557, CRC(50e471a7) SHA1(9d862cb9f51a563882b62662c5bfe61b52e3df00) )
+ROM_END
+
+
+ROM_START( ginv1000 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp2139", 0x0000, 0x0800, CRC(036eab37) SHA1(0795878ad89296f7a6a0314c6e4db23c1cc3673e) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_ginv1000_output.pla", 0, 365, CRC(b0a5dc41) SHA1(d94746ec48661998173e7f60ccc7c96e56b3484e) )
+
+ ROM_REGION( 226185, "svg", 0)
+ ROM_LOAD( "ginv1000.svg", 0, 226185, CRC(1e1bafd1) SHA1(15868ef0c9dadbf537fed0e2d846451ba99fab7b) )
+ROM_END
+
+
+ROM_START( ginv2000 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1604", 0x0000, 0x0800, CRC(f1646d0b) SHA1(65601931d81e3eef7bf22a08de5a146910ce8137) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_ginv2000_output.pla", 0, 365, CRC(520bb003) SHA1(1640ae54f8dcc257e0ad0cbe0281b38fcbd8da35) )
+
+ ROM_REGION( 374443, "svg", 0)
+ ROM_LOAD( "ginv2000.svg", 0, 374443, CRC(a4ce1e6d) SHA1(57d9ff05d634a8d495b9d544a2a959790cd10b6b) )
+ROM_END
+
+
+ROM_START( fxmcr165 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1312", 0x0000, 0x0800, CRC(6efc8bcc) SHA1(ced8a02b472a3178073691d3dccc0f19f57428fd) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_fxmcr165_output.pla", 0, 365, CRC(ce656866) SHA1(40e1614f5afcc7572fda596e1be453d54e95af0c) )
+ROM_END
+
+
+ROM_START( elecdet )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mp6100a", 0x0000, 0x1000, CRC(9522fb2d) SHA1(240bdb44b7d67d3b13ebf75851635ac4b4ca2bfd) )
+
+ ROM_REGION( 1246, "maincpu:ipla", 0 )
+ ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
+ ROM_REGION( 1982, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
+ ROM_REGION( 352, "maincpu:opla", 0 )
+ ROM_LOAD( "tms0980_elecdet_output.pla", 0, 352, CRC(5d12c24a) SHA1(e486802151a704c6273d4a8682c9c374d27d1e6d) )
+ ROM_REGION( 157, "maincpu:spla", 0 )
+ ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
+ROM_END
+
+
+ROM_START( starwbc )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp3438a", 0x0000, 0x0800, CRC(c12b7069) SHA1(d1f39c69a543c128023ba11cc6228bacdfab04de) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_starwbc_output.pla", 0, 365, CRC(d358a76d) SHA1(06b60b207540e9b726439141acadea9aba718013) )
+ROM_END
+
+ROM_START( starwbcp )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "us4270755", 0x0000, 0x0800, BAD_DUMP CRC(fb3332f2) SHA1(a79ac81e239983cd699b7cfcc55f89b203b2c9ec) ) // from patent US4270755, may have errors
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_starwbc_output.pla", 0, 365, CRC(d358a76d) SHA1(06b60b207540e9b726439141acadea9aba718013) )
+ROM_END
+
+
+ROM_START( astro )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mp1133", 0x0000, 0x1000, CRC(bc21109c) SHA1(05a433cce587d5c0c2d28b5fda5f0853ea6726bf) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 557, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1400_astro_output.pla", 0, 557, CRC(eb08957e) SHA1(62ae0d13a1eaafb34f1b27d7df51441b400ccd56) )
+ROM_END
+
+
+ROM_START( elecbowl )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp3403.u9", 0x0000, 0x0800, CRC(9eabaa7d) SHA1(b1f54587ed7f2bbf3a5d49075c807296384c2b06) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, BAD_DUMP CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) // not verified
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_elecbowl_output.pla", 0, 365, NO_DUMP )
+ROM_END
+
+
+ROM_START( horseran )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp3491", 0x0000, 0x0800, CRC(a0081671) SHA1(a5a07b502c69d429e5bcd1d313e86b6ee057cda6) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 365, "maincpu:opla", 0 ) // unused
+ ROM_LOAD( "tms1100_horseran_output.pla", 0, 365, CRC(0fea09b0) SHA1(27a56fcf2b490e9a7dbbc6ad48cc8aaca4cada94) )
+ROM_END
+
+
+ROM_START( mdndclab )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "m34012", 0x0000, 0x0800, CRC(e851fccd) SHA1(158362c2821678a51554e02dbb2f9ef5aaf5f59f) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_mdndclab_output.pla", 0, 365, CRC(592b40ba) SHA1(63a2531278a665ace54c541101e052eb84413511) )
+ROM_END
+
+
+ROM_START( comp4 )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "tmc0904nl_cp0904a", 0x0000, 0x0400, CRC(6233ee1b) SHA1(738e109b38c97804b4ec52bed80b00a8634ad453) )
+
+ ROM_REGION( 782, "maincpu:ipla", 0 )
+ ROM_LOAD( "tms0970_common2_instr.pla", 0, 782, CRC(e038fc44) SHA1(dfc280f6d0a5828d1bb14fcd59ac29caf2c2d981) )
+ ROM_REGION( 860, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0970_comp4_micro.pla", 0, 860, CRC(ee9d7d9e) SHA1(25484e18f6a07f7cdb21a07220e2f2a82fadfe7b) )
+ ROM_REGION( 352, "maincpu:opla", 0 )
+ ROM_LOAD( "tms0980_comp4_output.pla", 0, 352, CRC(144ce2d5) SHA1(459b92ad62421932df61b7e3965f1821f9636a2c) )
+ ROM_REGION( 157, "maincpu:spla", 0 )
+ ROM_LOAD( "tms0980_comp4_segment.pla", 0, 157, CRC(73426b07) SHA1(311be3f95a97936b6d1a4dcfa7746da26318ce54) )
+ROM_END
+
+
+ROM_START( bship )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp3201", 0x0000, 0x0400, CRC(bf6104a6) SHA1(8d28b43a2aa39dcbbe71f669cdafc518715812c9) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_bship_output.pla", 0, 365, CRC(ea0570b0) SHA1(6eb803b40717486d7b24939985f245327ac8a7e9) )
+ROM_END
+
+ROM_START( bshipb )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp3208", 0x0000, 0x0400, CRC(982fa720) SHA1(1c6dbbe7b9e55d62a510225a88cd2de55fe9b181) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_bshipb_output.pla", 0, 365, BAD_DUMP CRC(74a9a244) SHA1(479c1f1e37cf8f75352e10226b20322906bee813) ) // part of decap photo was obscured
+ROM_END
+
+
+ROM_START( simon )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "tms1000.u1", 0x0000, 0x0400, CRC(9961719d) SHA1(35dddb018a8a2b31f377ab49c1f0cb76951b81c0) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_simon_micro.pla", 0, 867, CRC(52f7c1f1) SHA1(dbc2634dcb98eac173ad0209df487cad413d08a5) )
+ ROM_REGION( 365, "maincpu:opla", 0 ) // unused
+ ROM_LOAD( "tms1000_simon_output.pla", 0, 365, CRC(2943c71b) SHA1(bd5bb55c57e7ba27e49c645937ec1d4e67506601) )
+ROM_END
+
+ROM_START( simonf )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp3300", 0x0000, 0x0400, CRC(b9fcf93a) SHA1(45960e4242a08495f2a99fc5d44728eabd93cd9f) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_simon_micro.pla", 0, 867, CRC(52f7c1f1) SHA1(dbc2634dcb98eac173ad0209df487cad413d08a5) )
+ ROM_REGION( 365, "maincpu:opla", 0 ) // unused
+ ROM_LOAD( "tms1000_simon_output.pla", 0, 365, CRC(2943c71b) SHA1(bd5bb55c57e7ba27e49c645937ec1d4e67506601) )
+ROM_END
+
+
+ROM_START( ssimon )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp3476", 0x0000, 0x0800, CRC(98200571) SHA1(cbd0bcfc11a534aa0be5d011584cdcac58ff437a) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 365, "maincpu:opla", 0 ) // unused
+ ROM_LOAD( "tms1100_ssimon_output.pla", 0, 365, CRC(0fea09b0) SHA1(27a56fcf2b490e9a7dbbc6ad48cc8aaca4cada94) )
+ROM_END
+
+
+ROM_START( bigtrak )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp3301a", 0x0000, 0x0400, CRC(1351bcdd) SHA1(68865389c25b541c09a742be61f8fb6488134d4e) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common3_micro.pla", 0, 867, CRC(80912d0a) SHA1(7ae5293ed4d93f5b7a64d43fe30c3639f39fbe5a) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_bigtrak_output.pla", 0, 365, CRC(63be45f6) SHA1(918e38a223152db883c1a6f7acf56e87d7074734) )
+ROM_END
+
+
+ROM_START( mbdtower )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mp7332", 0x0000, 0x1000, CRC(ebeab91a) SHA1(7edbff437da371390fa8f28b3d183f833eaa9be9) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 557, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1400_mbdtower_output.pla", 0, 557, CRC(64c84697) SHA1(72ce6d24cedf9c606f1742cd5620f75907246e87) )
+ROM_END
+
+
+ROM_START( arcmania )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "m34078a", 0x0000, 0x0800, CRC(90ea0087) SHA1(9780c9c1ba89300b1bbe72c47e5fec68d8bb6a77) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_arcmania_output.pla", 0, 365, CRC(a1517b15) SHA1(72eedd7fd41de9c9102219f325fe8668a7c02663) )
+ROM_END
+
+
+ROM_START( cnsector )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0905bnl_za0379", 0x0000, 0x0400, CRC(201036e9) SHA1(b37fef86bb2bceaf0ac8bb3745b4702d17366914) )
+
+ ROM_REGION( 782, "maincpu:ipla", 0 )
+ ROM_LOAD( "tms0970_common2_instr.pla", 0, 782, CRC(e038fc44) SHA1(dfc280f6d0a5828d1bb14fcd59ac29caf2c2d981) )
+ ROM_REGION( 860, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0970_cnsector_micro.pla", 0, 860, CRC(059f5bb4) SHA1(2653766f9fd74d41d44013bb6f54c0973a6080c9) )
+ ROM_REGION( 352, "maincpu:opla", 0 )
+ ROM_LOAD( "tms0980_cnsector_output.pla", 0, 352, CRC(c8bfb9d2) SHA1(30c3c73cec194debdcb1dd01b4adfefaeddf9516) )
+ ROM_REGION( 157, "maincpu:spla", 0 )
+ ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
+ROM_END
+
+
+ROM_START( merlin )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp3404", 0x0000, 0x0800, CRC(7515a75d) SHA1(76ca3605d3fde1df62f79b9bb1f534c2a2ae0229) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_merlin_output.pla", 0, 365, CRC(3921b074) SHA1(12bd58e4d6676eb8c7059ef53598279e4f1a32ea) )
+ROM_END
+
+
+ROM_START( mmerlin )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mp7351", 0x0000, 0x1000, CRC(0f7a4c83) SHA1(242c1278ddfe92c28fd7cd87300e48e7a4827831) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 557, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1400_mmerlin_output.pla", 0, 557, CRC(fd3dcd93) SHA1(f2afc52df700daa0eb7356c7876af9b2966f971b) )
+ROM_END
+
+
+ROM_START( stopthief )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mp6101b", 0x0000, 0x1000, CRC(b9c9d64a) SHA1(481f8653064c142fe5d9314b750bcd73797b92b2) )
+
+ ROM_REGION( 1246, "maincpu:ipla", 0 )
+ ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
+ ROM_REGION( 1982, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
+ ROM_REGION( 352, "maincpu:opla", 0 )
+ ROM_LOAD( "tms0980_stopthief_output.pla", 0, 352, CRC(680ca1c1) SHA1(dea6365f2e6b50a52f1a8f1d8417176b905d2bc9) )
+ ROM_REGION( 157, "maincpu:spla", 0 )
+ ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
+ROM_END
+
+ROM_START( stopthiefp )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD16_WORD( "us4341385", 0x0000, 0x1000, CRC(07aec38a) SHA1(0a3d0956495c0d6d9ea771feae6c14a473a800dc) ) // from patent US4341385, data should be correct (it included checksums)
+
+ ROM_REGION( 1246, "maincpu:ipla", 0 )
+ ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
+ ROM_REGION( 1982, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
+ ROM_REGION( 352, "maincpu:opla", 0 )
+ ROM_LOAD( "tms0980_stopthief_output.pla", 0, 352, CRC(680ca1c1) SHA1(dea6365f2e6b50a52f1a8f1d8417176b905d2bc9) )
+ ROM_REGION( 157, "maincpu:spla", 0 )
+ ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
+ROM_END
+
+
+ROM_START( bankshot )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mp7313", 0x0000, 0x1000, CRC(7a5016a9) SHA1(a8730dc8a282ffaa3d89e675f371d43eb39f39b4) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 557, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1400_bankshot_output.pla", 0, 557, CRC(7539283b) SHA1(f791fa98259fc10c393ff1961d4c93040f1a2932) )
+ROM_END
+
+
+ROM_START( splitsec )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mp7314", 0x0000, 0x1000, CRC(e94b2098) SHA1(f0fc1f56a829252185592a2508740354c50bedf8) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 557, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1400_splitsec_output.pla", 0, 557, CRC(7539283b) SHA1(f791fa98259fc10c393ff1961d4c93040f1a2932) )
+ROM_END
+
+
+ROM_START( lostreas )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "m34038", 0x0000, 0x0800, CRC(4c996f63) SHA1(ebbaa8b2f909f4300887aa2dbdb7185eedc75d3f) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_lostreas_output.pla", 0, 365, CRC(c62d850f) SHA1(d25974e6901eb10c52cdda12e6d4a13e26745e6f) )
+ROM_END
+
+
+ROM_START( alphie )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "us4280809", 0x0000, 0x0400, CRC(f8f14013) SHA1(bf31b929fcbcb189bbe4623104e1da0a639b5954) ) // from patent US4280809, should be good
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, BAD_DUMP CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) // not in patent description
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_alphie_output.pla", 0, 365, NO_DUMP ) // "
+ROM_END
+
+
+ROM_START( tcfball )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1193", 0x0000, 0x0800, CRC(7d9f446f) SHA1(bb6af47b42d989494f21475a73f072cddf58c99f) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_tcfball_output.pla", 0, 365, CRC(26b2996e) SHA1(df0e706c552bf74123aa65e71b0c9b4d33cddb2b) )
+ROM_END
+
+ROM_START( tcfballa )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1183", 0x0000, 0x0800, CRC(2a4db1d5) SHA1(5df15d1115bb425578ad522d607a582dd478f35c) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_tcfballa_output.pla", 0, 365, NO_DUMP )
+ROM_END
+
+
+ROM_START( tandy12 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "cd7282sl", 0x0000, 0x0800, CRC(a10013dd) SHA1(42ebd3de3449f371b99937f9df39c240d15ac686) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, BAD_DUMP CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) // not verified
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_tandy12_output.pla", 0, 365, NO_DUMP )
+ROM_END
+
+
+ROM_START( monkeysee )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0271", 0x0000, 0x0400, CRC(acab0f05) SHA1(226f7688caf4a94a88241d3b61ddc4254e4a918c) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_monkeysee_micro.pla", 0, 867, CRC(368d878f) SHA1(956e700a04f453c1610cfdb974fce898ba4cf01f) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_monkeysee_output.pla", 0, 365, CRC(8a010e89) SHA1(3ffbabc5d6c9b34cc06d290817d15b2be42d8b17) )
+ROM_END
+
+
+ROM_START( speechp )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "tms1007nl", 0x0000, 0x0400, CRC(c2669d5c) SHA1(7943d6f39508a9a82bc21e4fe34a5b9f86e3add2) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_speechp_output.pla", 0, 365, CRC(e1b4197f) SHA1(258f4276a9f15c9bfbfa58df2f7202aed1542fdc) )
+
+ ROM_REGION( 0x0800, "speech", 0 )
+ ROM_LOAD("s14007-a", 0x0000, 0x0800, CRC(543b46d4) SHA1(99daf7fe3354c378b4bd883840c9bbd22b22ebe7) )
+ROM_END
+
+
+ROM_START( timaze )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "gb2040172a", 0x0000, 0x0400, CRC(0bab4dc6) SHA1(c9d40649fbb27a8b7cf7460d66c7e217b63376f0) ) // from patent GB2040172A, verified with source code
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, BAD_DUMP CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) // not in patent, use default one
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_timaze_output.pla", 0, 365, BAD_DUMP CRC(f0f36970) SHA1(a6ad1f5e804ac98e5e1a1d07466b3db3a8d6c256) ) // described in patent, but unsure about pin order
+ROM_END
+
+
+ROM_START( copycat )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0919", 0x0000, 0x0400, CRC(92a21299) SHA1(16daadb8dbf53aaab8a71833017b4a578d035d6d) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_copycat_output.pla", 0, 365, CRC(b1d0c96d) SHA1(ac1a003eab3f69e09e9050cb24ea17211e0523fe) )
+ROM_END
+
+ROM_START( copycatm2 )
+ ROM_REGION( 0x0200, "maincpu", 0 )
+ ROM_LOAD( "mp3005n", 0x0000, 0x0200, CRC(a87649cb) SHA1(14ef7967a80578885f0b905772c3bb417b5b3255) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_copycatm2_micro.pla", 0, 867, CRC(2710d8ef) SHA1(cb7a13bfabedad43790de753844707fe829baed0) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_copycatm2_output.pla", 0, 365, CRC(d1999aaf) SHA1(0c27789b349e491d5230f9c75c4741e621f5a14e) )
+ROM_END
+
+
+ROM_START( ditto )
+ ROM_REGION( 0x0200, "maincpu", 0 )
+ ROM_LOAD( "mp1801", 0x0000, 0x0200, CRC(cee6043b) SHA1(4ec334be6835688413637ff9d9d7a5f0d61eba27) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_ditto_micro.pla", 0, 867, CRC(2710d8ef) SHA1(cb7a13bfabedad43790de753844707fe829baed0) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_ditto_output.pla", 0, 365, CRC(2b708a27) SHA1(e95415e51ffbe5da3bde1484fcd20467dde9f09a) )
+ROM_END
+
+
+ROM_START( 7in1ss )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mp7304", 0x0000, 0x1000, CRC(2a1c8390) SHA1(fa10e60686af6828a61f05046abc3854ab49af95) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 557, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1400_7in1ss_output.pla", 0, 557, CRC(6b7660f7) SHA1(bb7d58fa04e7606ccdf5b209e1b089948bdd1e7c) )
+ROM_END
+
+
+ROM_START( tbreakup )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp2726a", 0x0000, 0x0400, CRC(1f7c28e2) SHA1(164cda4eb3f0b1d20955212a197c9aadf8d18a06) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_tbreakup_output.pla", 0, 365, CRC(a1ea035e) SHA1(fcf0b57ed90b41441a8974223a697f530daac0ab) )
+ROM_END
+
+
+ROM_START( phpball )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1180", 0x0000, 0x0800, CRC(2163b92d) SHA1(bc53d1911e88b4e89d951c6f769703105c13389c) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_phpball_output.pla", 0, 365, CRC(87e67aaf) SHA1(ebc7bae1352f39173f1bf0dc10cdc6f635dedab4) )
+ROM_END
+
+
+ROM_START( ssports4 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1219", 0x0000, 0x0800, CRC(865c06d6) SHA1(12a625a13bdb57b82b35c42b175d38756a1e2e04) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_ssports4_output.pla", 0, 365, NO_DUMP )
+ROM_END
+
ROM_START( xl25 )
ROM_REGION( 0x0400, "maincpu", 0 )
@@ -10340,14 +10311,6 @@ ROM_END
-} // anonymous namespace
-
-/***************************************************************************
-
- Game driver(s)
-
-***************************************************************************/
-
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
CONS( 1979, matchnum, 0, 0, matchnum, matchnum, matchnum_state, empty_init, "A-One LSI", "Match Number", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1980, arrball, 0, 0, arrball, arrball, arrball_state, empty_init, "A-One LSI", "Arrange Ball", MACHINE_SUPPORTS_SAVE )
@@ -10357,11 +10320,10 @@ COMP( 1980, mathmagi, 0, 0, mathmagi, mathmagi, mathmagi_state, emp
CONS( 1979, bcheetah, 0, 0, bcheetah, bcheetah, bcheetah_state, empty_init, "Bandai", "System Control Car: Cheetah", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_MECHANICAL ) // ***
CONS( 1978, amaztron, 0, 0, amaztron, amaztron, amaztron_state, empty_init, "Coleco", "Amaze-A-Tron", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS ) // ***
-COMP( 1979, zodiac, 0, 0, zodiac, zodiac, zodiac_state, empty_init, "Coleco", "Zodiac - The Astrology Computer", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+COMP( 1979, zodiac, 0, 0, zodiac, zodiac, zodiac_state, empty_init, "Coleco", "Zodiac - The Astrology Computer", MACHINE_SUPPORTS_SAVE )
CONS( 1978, cqback, 0, 0, cqback, cqback, cqback_state, empty_init, "Coleco", "Electronic Quarterback", MACHINE_SUPPORTS_SAVE )
CONS( 1979, h2hfootb, 0, 0, h2hfootb, h2hfootb, h2hfootb_state, empty_init, "Coleco", "Head to Head: Electronic Football", MACHINE_SUPPORTS_SAVE )
-CONS( 1979, h2hbaskb, 0, 0, h2hbaskb, h2hbaskb, h2hbaskb_state, empty_init, "Coleco", "Head to Head: Electronic Basketball (TMS1000 version)", MACHINE_SUPPORTS_SAVE )
-CONS( 1979, h2hhockey, 0, 0, h2hhockey, h2hhockey, h2hbaskb_state, empty_init, "Coleco", "Head to Head: Electronic Hockey (TMS1000 version)", MACHINE_SUPPORTS_SAVE )
+CONS( 1979, h2hhockey, 0, 0, h2hhockey, h2hhockey, h2hhockey_state, empty_init, "Coleco", "Head to Head: Electronic Hockey (TMS1000 version)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, h2hbaseb, 0, 0, h2hbaseb, h2hbaseb, h2hbaseb_state, empty_init, "Coleco", "Head to Head: Electronic Baseball", MACHINE_SUPPORTS_SAVE )
CONS( 1981, h2hboxing, 0, 0, h2hboxing, h2hboxing, h2hboxing_state, empty_init, "Coleco", "Head to Head: Electronic Boxing", MACHINE_SUPPORTS_SAVE )
CONS( 1981, quizwizc, 0, 0, quizwizc, quizwizc, quizwizc_state, empty_init, "Coleco", "Quiz Wiz Challenger", MACHINE_SUPPORTS_SAVE ) // ***
diff --git a/src/mame/drivers/hh_ucom4.cpp b/src/mame/drivers/hh_ucom4.cpp
index 448090a126c..cff4c17c542 100644
--- a/src/mame/drivers/hh_ucom4.cpp
+++ b/src/mame/drivers/hh_ucom4.cpp
@@ -35,19 +35,17 @@
@054 uPD552C 1980, Epoch Invader From Space
@031 uPD553C 1979, Bambino Superstar Football (ET-03)
- @049 uPD553C 1979, Mego Mini-Vid: Break Free
+ @049 uPD553C 1979, Mego Mini-Vid Break Free
@055 uPD553C 1980, Bambino Space Laser Fight (ET-12)
*073 uPD553C 1980, Sony ST-J75 FM Stereo Tuner
@080 uPD553C 1980, Epoch Electronic Football
*102 uPD553C 1981, Bandai Block Out
@153 uPD553C 1981, Epoch Galaxy II
@160 uPD553C 1982, Tomy Pac Man (TN-08)
- *167 uPD553C 1982, Sony SL models (betamax) (have dump)
@170 uPD553C 1982, Bandai Crazy Climber
@192 uPD553C 1982, Tomy Scramble (TN-10)
@202 uPD553C 1982, Epoch Astro Command
@206 uPD553C 1982, Epoch Dracula
- *207 uPD553C 1982, Sony SL-J30 (tape/cd deck)
@209 uPD553C 1982, Tomy Caveman (TN-12)
@258 uPD553C 1984, Tomy Alien Chase (TN-16)
*296 uPD553C 1984, Epoch Computer Beam Gun Professional
@@ -78,16 +76,13 @@ TODO:
#include "screen.h"
#include "speaker.h"
-// internal artwork (complete)
+// internal artwork
#include "efball.lh"
#include "grobot9.lh" // clickable
#include "mcompgin.lh"
#include "mvbfree.lh"
#include "tactix.lh" // clickable
-// internal artwork (bezel overlay)
-#include "tmtennis.lh"
-
//#include "hh_ucom4_test.lh" // common test-layout - no svg artwork(yet), use external artwork
@@ -246,12 +241,10 @@ INPUT_CHANGED_MEMBER(hh_ucom4_state::single_interrupt_line)
/***************************************************************************
- Minidrivers (subclass, I/O, Inputs, Machine Config, ROM Defs)
+ Minidrivers (subclass, I/O, Inputs, Machine Config)
***************************************************************************/
-namespace {
-
/***************************************************************************
Bambino UFO Master-Blaster Station (manufactured in Japan)
@@ -274,8 +267,8 @@ namespace {
class ufombs_state : public hh_ucom4_state
{
public:
- ufombs_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ ufombs_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -354,8 +347,7 @@ void ufombs_state::ufombs(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(243, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 243-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -365,16 +357,6 @@ void ufombs_state::ufombs(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ufombs )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "d552c-017", 0x0000, 0x0400, CRC(0e208cb3) SHA1(57db6566916c94325e2b67ccb94b4ea3b233487d) )
-
- ROM_REGION( 222395, "svg", 0)
- ROM_LOAD( "ufombs.svg", 0, 222395, CRC(ae9fb93f) SHA1(165ea78eee93c503dbd277a56c41e3c63c534e38) )
-ROM_END
-
@@ -398,8 +380,8 @@ ROM_END
class ssfball_state : public hh_ucom4_state
{
public:
- ssfball_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ ssfball_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -512,8 +494,7 @@ void ssfball_state::ssfball(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 482);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 482-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -523,24 +504,6 @@ void ssfball_state::ssfball(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ssfball )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d553c-031", 0x0000, 0x0800, CRC(ff5d91d0) SHA1(9b2c0ae45f1e3535108ee5fef8a9010e00c8d5c3) )
-
- ROM_REGION( 331352, "svg", 0)
- ROM_LOAD( "ssfball.svg", 0, 331352, CRC(10cffb85) SHA1(c875f73a323d976088ffa1bc19f7bc865d4aac62) )
-ROM_END
-
-ROM_START( bmcfball )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d553c-031", 0x0000, 0x0800, CRC(ff5d91d0) SHA1(9b2c0ae45f1e3535108ee5fef8a9010e00c8d5c3) )
-
- ROM_REGION( 331352, "svg", 0)
- ROM_LOAD( "bmcfball.svg", 0, 331352, CRC(43fbed1e) SHA1(28160e14b0879cd4dd9dab770c52c98f316ab653) )
-ROM_END
-
@@ -561,8 +524,8 @@ ROM_END
class bmsoccer_state : public hh_ucom4_state
{
public:
- bmsoccer_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ bmsoccer_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -659,8 +622,7 @@ void bmsoccer_state::bmsoccer(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(271, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 271-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -669,16 +631,6 @@ void bmsoccer_state::bmsoccer(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bmsoccer )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "d552c-043", 0x0000, 0x0400, CRC(10c2a4ea) SHA1(6ebca7d406e22ff7a8cd529579b55a700da487b4) )
-
- ROM_REGION( 273796, "svg", 0)
- ROM_LOAD( "bmsoccer.svg", 0, 273796, CRC(4c88d9f8) SHA1(b4b82f26a09f54cd0b6a9d1c1a46796fbfcb578a) )
-ROM_END
-
@@ -695,8 +647,8 @@ ROM_END
class bmsafari_state : public hh_ucom4_state
{
public:
- bmsafari_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ bmsafari_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -777,8 +729,7 @@ void bmsafari_state::bmsafari(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(248, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 248-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -787,16 +738,6 @@ void bmsafari_state::bmsafari(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bmsafari )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "d552c-049", 0x0000, 0x0400, CRC(82fa3cbe) SHA1(019e7ec784e977eba09997fc46af253054fb222c) )
-
- ROM_REGION( 275386, "svg", 0)
- ROM_LOAD( "bmsafari.svg", 0, 275386, CRC(c24badbc) SHA1(b191f34155d6d4e834e7c6fe715d4bb76198ad72) )
-ROM_END
-
@@ -816,8 +757,8 @@ ROM_END
class splasfgt_state : public hh_ucom4_state
{
public:
- splasfgt_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ splasfgt_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -939,8 +880,7 @@ void splasfgt_state::splasfgt(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 476);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 476-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -950,16 +890,6 @@ void splasfgt_state::splasfgt(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( splasfgt )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d553c-055", 0x0000, 0x0800, CRC(eb471fbd) SHA1(f06cfe567bf6f9ed4dcdc88acdcfad50cd370a02) )
-
- ROM_REGION( 246609, "svg", 0)
- ROM_LOAD( "splasfgt.svg", 0, 246609, CRC(365fae43) SHA1(344c120c2efa92ada9171047affac801a06cf303) )
-ROM_END
-
@@ -980,8 +910,8 @@ ROM_END
class bcclimbr_state : public hh_ucom4_state
{
public:
- bcclimbr_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ bcclimbr_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1054,8 +984,7 @@ void bcclimbr_state::bcclimbr(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(310, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 310-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1064,16 +993,6 @@ void bcclimbr_state::bcclimbr(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bcclimbr )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d553c-170", 0x0000, 0x0800, CRC(fc2eabdb) SHA1(0f5cc854be7fdf105d9bd2114659d40c65f9d782) )
-
- ROM_REGION( 219971, "svg", 0)
- ROM_LOAD( "bcclimbr.svg", 0, 219971, CRC(9c9102f4) SHA1(6a7e02fd1467a26c734b01724e23cef9e4917805) )
-ROM_END
-
@@ -1096,8 +1015,8 @@ ROM_END
class tactix_state : public hh_ucom4_state
{
public:
- tactix_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ tactix_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(leds_w);
@@ -1189,13 +1108,6 @@ void tactix_state::tactix(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tactix )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d557lc-512", 0x0000, 0x0800, CRC(1df738cb) SHA1(15a5de28a3c03e6894d29c56b5b424983569ccf2) )
-ROM_END
-
@@ -1216,8 +1128,8 @@ ROM_END
class invspace_state : public hh_ucom4_state
{
public:
- invspace_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ invspace_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1289,8 +1201,7 @@ void invspace_state::invspace(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(289, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 289-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1299,16 +1210,6 @@ void invspace_state::invspace(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( invspace )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "d552c-054", 0x0000, 0x0400, CRC(913d9c13) SHA1(f20edb5458e54d2f6d4e45e5d59efd87e05a6f3f) )
-
- ROM_REGION( 110899, "svg", 0)
- ROM_LOAD( "invspace.svg", 0, 110899, CRC(ae794333) SHA1(3552215389f02e4ef1d608f7dfc84f0499a78ee2) )
-ROM_END
-
@@ -1329,8 +1230,8 @@ ROM_END
class efball_state : public hh_ucom4_state
{
public:
- efball_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ efball_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1420,13 +1321,6 @@ void efball_state::efball(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( efball )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d553c-080", 0x0000, 0x0800, CRC(54c1027f) SHA1(6cc98074dae9361fa8c0ed6501b6a57ad325ccbd) )
-ROM_END
-
@@ -1449,8 +1343,8 @@ ROM_END
class galaxy2_state : public hh_ucom4_state
{
public:
- galaxy2_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ galaxy2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1523,8 +1417,7 @@ void galaxy2_state::galaxy2(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(304, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 304-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1538,29 +1431,10 @@ void galaxy2_state::galaxy2b(machine_config &config)
galaxy2(config);
/* video hardware */
- screen_device *screen = subdevice<screen_device>("screen");
- screen->set_size(306, 1080);
- screen->set_visarea_full();
+ subdevice<screen_device>("screen")->set_size(306, 1080);
+ subdevice<screen_device>("screen")->set_visarea(0, 306-1, 0, 1080-1);
}
-// roms
-
-ROM_START( galaxy2 )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d553c-153.s01", 0x0000, 0x0800, CRC(70d552b3) SHA1(72d50647701cb4bf85ea947a149a317aaec0f52c) )
-
- ROM_REGION( 325057, "svg", 0)
- ROM_LOAD( "galaxy2d.svg", 0, 325057, CRC(b2d27a0e) SHA1(502ec22c324903ffe8ff235b9a3b8898dce17a64) )
-ROM_END
-
-ROM_START( galaxy2b )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d553c-153.s01", 0x0000, 0x0800, CRC(70d552b3) SHA1(72d50647701cb4bf85ea947a149a317aaec0f52c) )
-
- ROM_REGION( 266377, "svg", 0)
- ROM_LOAD( "galaxy2b.svg", 0, 266377, CRC(8633cebb) SHA1(6c41f5e918e1522eb55ef24270900a1b2477722b) )
-ROM_END
-
@@ -1582,8 +1456,8 @@ ROM_END
class astrocmd_state : public hh_ucom4_state
{
public:
- astrocmd_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ astrocmd_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1662,8 +1536,7 @@ void astrocmd_state::astrocmd(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 525);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 525-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1672,16 +1545,6 @@ void astrocmd_state::astrocmd(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( astrocmd )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d553c-202.s01", 0x0000, 0x0800, CRC(b4b34883) SHA1(6246d561c2df1f2124575d2ca671ef85b1819edd) )
-
- ROM_REGION( 335362, "svg", 0)
- ROM_LOAD( "astrocmd.svg", 0, 335362, CRC(fe2cd30f) SHA1(898a3d9afc5dca6c63ae28aed2c8530716ad1c45) )
-ROM_END
-
@@ -1703,8 +1566,8 @@ ROM_END
class edracula_state : public hh_ucom4_state
{
public:
- edracula_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ edracula_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(grid_w);
@@ -1769,8 +1632,7 @@ void edracula_state::edracula(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 526);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 526-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1779,16 +1641,6 @@ void edracula_state::edracula(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( edracula )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d553c-206.s01", 0x0000, 0x0800, CRC(b524857b) SHA1(c1c89ed5dd4bb1e6e98462dc8fa5af2aa48d8ede) )
-
- ROM_REGION( 794532, "svg", 0)
- ROM_LOAD( "edracula.svg", 0, 794532, CRC(d20e018c) SHA1(7f70f1d373c034ec8c93e27b7e3371578ddaf61b) )
-ROM_END
-
@@ -1804,8 +1656,8 @@ ROM_END
class mcompgin_state : public hh_ucom4_state
{
public:
- mcompgin_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag),
+ mcompgin_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag),
m_lcd(*this, "lcd")
{ }
@@ -1829,9 +1681,9 @@ WRITE8_MEMBER(mcompgin_state::lcd_w)
// E0: HLCD0530 _CS
// E1: HLCD0530 clock
// E2: HLCD0530 data in
- m_lcd->cs_w(data & 1);
- m_lcd->data_w(data >> 2 & 1);
- m_lcd->clock_w(data >> 1 & 1);
+ m_lcd->write_cs(data & 1);
+ m_lcd->write_data(data >> 2 & 1);
+ m_lcd->write_clock(data >> 1 & 1);
}
// config
@@ -1866,20 +1718,13 @@ void mcompgin_state::mcompgin(machine_config &config)
/* no sound! */
}
-// roms
-
-ROM_START( mcompgin )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d650c-060", 0x0000, 0x0800, CRC(985e6da6) SHA1(ea4102a10a5741f06297c5426156e4b2f0d85a68) )
-ROM_END
-
/***************************************************************************
- Mego Mini-Vid: Break Free (manufactured in Japan)
+ Mego Mini-Vid Break Free (manufactured in Japan)
* PCB label Mego 79 rev F
* NEC uCOM-43 MCU, label D553C 049
* cyan VFD display Futaba DM-4.5 91
@@ -1889,8 +1734,8 @@ ROM_END
class mvbfree_state : public hh_ucom4_state
{
public:
- mvbfree_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ mvbfree_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1976,13 +1821,6 @@ void mvbfree_state::mvbfree(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( mvbfree )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d553c-049", 0x0000, 0x0800, CRC(d64a8399) SHA1(97887e486fa29b1fc4a5a40cacf3c960f67aacbf) )
-ROM_END
-
@@ -2007,8 +1845,8 @@ ROM_END
class grobot9_state : public hh_ucom4_state
{
public:
- grobot9_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ grobot9_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(lamps_w);
@@ -2098,13 +1936,6 @@ void grobot9_state::grobot9(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( grobot9 )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "ttgr-511", 0x0000, 0x0800, CRC(1f25b2bb) SHA1(55ae7e23f6dd46cc6e1a65839327726678410c3a) )
-ROM_END
-
@@ -2125,8 +1956,8 @@ ROM_END
class tccombat_state : public hh_ucom4_state
{
public:
- tccombat_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ tccombat_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -2194,8 +2025,7 @@ void tccombat_state::tccombat(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(300, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 300-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -2204,16 +2034,6 @@ void tccombat_state::tccombat(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tccombat )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "d552c-042", 0x0000, 0x0400, CRC(d7b5cfeb) SHA1(a267be8e43b7740758eb0881b655b1cc8aec43da) )
-
- ROM_REGION( 210960, "svg", 0)
- ROM_LOAD( "tccombat.svg", 0, 210960, CRC(03e9eba6) SHA1(d558d3063da42dc7cc02b769bca06a3732418837) )
-ROM_END
-
@@ -2236,8 +2056,8 @@ ROM_END
class tmtennis_state : public hh_ucom4_state
{
public:
- tmtennis_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ tmtennis_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(grid_w);
@@ -2246,29 +2066,15 @@ public:
DECLARE_READ8_MEMBER(input_r);
void set_clock();
- DECLARE_INPUT_CHANGED_MEMBER(difficulty_switch) { set_clock(); }
+ DECLARE_INPUT_CHANGED_MEMBER(difficulty_switch);
void tmtennis(machine_config &config);
protected:
virtual void machine_reset() override;
};
-void tmtennis_state::machine_reset()
-{
- hh_ucom4_state::machine_reset();
- set_clock();
-}
-
// handlers
-void tmtennis_state::set_clock()
-{
- // MCU clock is from an LC circuit oscillating by default at ~360kHz,
- // but on PRO1, the difficulty switch puts a capacitor across the LC circuit
- // to slow it down to ~260kHz.
- m_maincpu->set_unscaled_clock((m_inp_matrix[1]->read() & 0x100) ? 260000 : 360000);
-}
-
WRITE8_MEMBER(tmtennis_state::grid_w)
{
// G,H,I: vfd grid
@@ -2339,6 +2145,25 @@ static INPUT_PORTS_START( tmtennis )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("P2 Button 6")
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(tmtennis_state::difficulty_switch)
+{
+ set_clock();
+}
+
+void tmtennis_state::set_clock()
+{
+ // MCU clock is from an LC circuit oscillating by default at ~360kHz,
+ // but on PRO1, the difficulty switch puts a capacitor across the LC circuit
+ // to slow it down to ~260kHz.
+ m_maincpu->set_unscaled_clock((m_inp_matrix[1]->read() & 0x100) ? 260000 : 360000);
+}
+
+void tmtennis_state::machine_reset()
+{
+ hh_ucom4_state::machine_reset();
+ set_clock();
+}
+
void tmtennis_state::tmtennis(machine_config &config)
{
/* basic machine hardware */
@@ -2358,10 +2183,8 @@ void tmtennis_state::tmtennis(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 417);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 417-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_tmtennis);
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -2369,16 +2192,6 @@ void tmtennis_state::tmtennis(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tmtennis )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "d552c-048", 0x0000, 0x0400, CRC(78702003) SHA1(4d427d4dbeed901770c682338867f58c7b54eee3) )
-
- ROM_REGION( 204490, "svg", 0)
- ROM_LOAD( "tmtennis.svg", 0, 204490, CRC(ed0086e9) SHA1(26a5b2f0a9cd70401187146e1495aee80020658b) )
-ROM_END
-
@@ -2405,8 +2218,8 @@ ROM_END
class tmpacman_state : public hh_ucom4_state
{
public:
- tmpacman_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ tmpacman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -2479,8 +2292,7 @@ void tmpacman_state::tmpacman(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 508);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 508-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -2489,16 +2301,6 @@ void tmpacman_state::tmpacman(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tmpacman )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d553c-160", 0x0000, 0x0800, CRC(b21a8af7) SHA1(e3122be1873ce76a4067386bf250802776f0c2f9) )
-
- ROM_REGION( 230216, "svg", 0)
- ROM_LOAD( "tmpacman.svg", 0, 230216, CRC(2ab5c0f1) SHA1(b2b6482b03c28515dc76fd3d6034c8b7e6bf6efc) )
-ROM_END
-
@@ -2521,8 +2323,8 @@ ROM_END
class tmscramb_state : public hh_ucom4_state
{
public:
- tmscramb_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ tmscramb_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -2593,8 +2395,7 @@ void tmscramb_state::tmscramb(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 556);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 556-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -2603,16 +2404,6 @@ void tmscramb_state::tmscramb(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tmscramb )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d553c-192", 0x0000, 0x0800, CRC(00fcc501) SHA1(a7771e934bf8268c83f38c7ec0acc668836e0939) )
-
- ROM_REGION( 235601, "svg", 0)
- ROM_LOAD( "tmscramb.svg", 0, 235601, CRC(9e76219a) SHA1(275273b98d378c9313dd73a3b86cc661a824b7af) )
-ROM_END
-
@@ -2634,8 +2425,8 @@ ROM_END
class tcaveman_state : public hh_ucom4_state
{
public:
- tcaveman_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ tcaveman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -2703,8 +2494,7 @@ void tcaveman_state::tcaveman(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 559);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 559-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -2713,16 +2503,6 @@ void tcaveman_state::tcaveman(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tcaveman )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d553c-209", 0x0000, 0x0800, CRC(d230d4b7) SHA1(2fb12b60410f5567c5e3afab7b8f5aa855d283be) )
-
- ROM_REGION( 306952, "svg", 0)
- ROM_LOAD( "tcaveman.svg", 0, 306952, CRC(a0588b14) SHA1(f67edf579963fc19bc7f9d268329cbc0230712d8) )
-ROM_END
-
@@ -2745,8 +2525,8 @@ ROM_END
class alnchase_state : public hh_ucom4_state
{
public:
- alnchase_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ alnchase_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(output_w);
@@ -2847,8 +2627,7 @@ void alnchase_state::alnchase(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(365, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 365-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -2857,57 +2636,238 @@ void alnchase_state::alnchase(machine_config &config)
m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-ROM_START( alnchase )
+
+
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+ROM_START( ufombs )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "d552c-017", 0x0000, 0x0400, CRC(0e208cb3) SHA1(57db6566916c94325e2b67ccb94b4ea3b233487d) )
+
+ ROM_REGION( 222395, "svg", 0)
+ ROM_LOAD( "ufombs.svg", 0, 222395, CRC(ae9fb93f) SHA1(165ea78eee93c503dbd277a56c41e3c63c534e38) )
+ROM_END
+
+
+ROM_START( ssfball )
ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "d553c-258", 0x0000, 0x0800, CRC(c5284ff5) SHA1(6a20aaacc9748f0e0335958f3cea482e36153704) )
+ ROM_LOAD( "d553c-031", 0x0000, 0x0800, CRC(ff5d91d0) SHA1(9b2c0ae45f1e3535108ee5fef8a9010e00c8d5c3) )
- ROM_REGION( 576864, "svg", 0)
- ROM_LOAD( "alnchase.svg", 0, 576864, CRC(fe7c7078) SHA1(0d201eeaeb291ded14c0759d1d3d5b2491cf0792) )
+ ROM_REGION( 331352, "svg", 0)
+ ROM_LOAD( "ssfball.svg", 0, 331352, CRC(10cffb85) SHA1(c875f73a323d976088ffa1bc19f7bc865d4aac62) )
ROM_END
+ROM_START( bmcfball )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d553c-031", 0x0000, 0x0800, CRC(ff5d91d0) SHA1(9b2c0ae45f1e3535108ee5fef8a9010e00c8d5c3) )
+ ROM_REGION( 331352, "svg", 0)
+ ROM_LOAD( "bmcfball.svg", 0, 331352, CRC(43fbed1e) SHA1(28160e14b0879cd4dd9dab770c52c98f316ab653) )
+ROM_END
-} // anonymous namespace
-/***************************************************************************
+ROM_START( bmsoccer )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "d552c-043", 0x0000, 0x0400, CRC(10c2a4ea) SHA1(6ebca7d406e22ff7a8cd529579b55a700da487b4) )
+
+ ROM_REGION( 273796, "svg", 0)
+ ROM_LOAD( "bmsoccer.svg", 0, 273796, CRC(4c88d9f8) SHA1(b4b82f26a09f54cd0b6a9d1c1a46796fbfcb578a) )
+ROM_END
+
+
+ROM_START( bmsafari )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "d552c-049", 0x0000, 0x0400, CRC(82fa3cbe) SHA1(019e7ec784e977eba09997fc46af253054fb222c) )
+
+ ROM_REGION( 275386, "svg", 0)
+ ROM_LOAD( "bmsafari.svg", 0, 275386, CRC(c24badbc) SHA1(b191f34155d6d4e834e7c6fe715d4bb76198ad72) )
+ROM_END
+
+
+ROM_START( splasfgt )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d553c-055", 0x0000, 0x0800, CRC(eb471fbd) SHA1(f06cfe567bf6f9ed4dcdc88acdcfad50cd370a02) )
+
+ ROM_REGION( 246609, "svg", 0)
+ ROM_LOAD( "splasfgt.svg", 0, 246609, CRC(365fae43) SHA1(344c120c2efa92ada9171047affac801a06cf303) )
+ROM_END
+
+
+ROM_START( bcclimbr )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d553c-170", 0x0000, 0x0800, CRC(fc2eabdb) SHA1(0f5cc854be7fdf105d9bd2114659d40c65f9d782) )
+
+ ROM_REGION( 219971, "svg", 0)
+ ROM_LOAD( "bcclimbr.svg", 0, 219971, CRC(9c9102f4) SHA1(6a7e02fd1467a26c734b01724e23cef9e4917805) )
+ROM_END
+
+
+ROM_START( tactix )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d557lc-512", 0x0000, 0x0800, CRC(1df738cb) SHA1(15a5de28a3c03e6894d29c56b5b424983569ccf2) )
+ROM_END
+
+
+ROM_START( invspace )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "d552c-054", 0x0000, 0x0400, CRC(913d9c13) SHA1(f20edb5458e54d2f6d4e45e5d59efd87e05a6f3f) )
+
+ ROM_REGION( 110899, "svg", 0)
+ ROM_LOAD( "invspace.svg", 0, 110899, CRC(ae794333) SHA1(3552215389f02e4ef1d608f7dfc84f0499a78ee2) )
+ROM_END
+
+
+ROM_START( efball )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d553c-080", 0x0000, 0x0800, CRC(54c1027f) SHA1(6cc98074dae9361fa8c0ed6501b6a57ad325ccbd) )
+ROM_END
+
+
+ROM_START( galaxy2 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d553c-153.s01", 0x0000, 0x0800, CRC(70d552b3) SHA1(72d50647701cb4bf85ea947a149a317aaec0f52c) )
+
+ ROM_REGION( 325057, "svg", 0)
+ ROM_LOAD( "galaxy2d.svg", 0, 325057, CRC(b2d27a0e) SHA1(502ec22c324903ffe8ff235b9a3b8898dce17a64) )
+ROM_END
+
+ROM_START( galaxy2b )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d553c-153.s01", 0x0000, 0x0800, CRC(70d552b3) SHA1(72d50647701cb4bf85ea947a149a317aaec0f52c) )
+
+ ROM_REGION( 266377, "svg", 0)
+ ROM_LOAD( "galaxy2b.svg", 0, 266377, CRC(8633cebb) SHA1(6c41f5e918e1522eb55ef24270900a1b2477722b) )
+ROM_END
+
+
+ROM_START( astrocmd )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d553c-202.s01", 0x0000, 0x0800, CRC(b4b34883) SHA1(6246d561c2df1f2124575d2ca671ef85b1819edd) )
+
+ ROM_REGION( 335362, "svg", 0)
+ ROM_LOAD( "astrocmd.svg", 0, 335362, CRC(fe2cd30f) SHA1(898a3d9afc5dca6c63ae28aed2c8530716ad1c45) )
+ROM_END
+
+
+ROM_START( edracula )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d553c-206.s01", 0x0000, 0x0800, CRC(b524857b) SHA1(c1c89ed5dd4bb1e6e98462dc8fa5af2aa48d8ede) )
+
+ ROM_REGION( 794532, "svg", 0)
+ ROM_LOAD( "edracula.svg", 0, 794532, CRC(d20e018c) SHA1(7f70f1d373c034ec8c93e27b7e3371578ddaf61b) )
+ROM_END
+
+
+ROM_START( mcompgin )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d650c-060", 0x0000, 0x0800, CRC(985e6da6) SHA1(ea4102a10a5741f06297c5426156e4b2f0d85a68) )
+ROM_END
+
+
+ROM_START( mvbfree )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d553c-049", 0x0000, 0x0800, CRC(d64a8399) SHA1(97887e486fa29b1fc4a5a40cacf3c960f67aacbf) )
+ROM_END
+
+
+ROM_START( grobot9 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "ttgr-511", 0x0000, 0x0800, CRC(1f25b2bb) SHA1(55ae7e23f6dd46cc6e1a65839327726678410c3a) )
+ROM_END
+
+
+ROM_START( tccombat )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "d552c-042", 0x0000, 0x0400, CRC(d7b5cfeb) SHA1(a267be8e43b7740758eb0881b655b1cc8aec43da) )
+
+ ROM_REGION( 210960, "svg", 0)
+ ROM_LOAD( "tccombat.svg", 0, 210960, CRC(03e9eba6) SHA1(d558d3063da42dc7cc02b769bca06a3732418837) )
+ROM_END
+
+
+ROM_START( tmtennis )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "d552c-048", 0x0000, 0x0400, CRC(78702003) SHA1(4d427d4dbeed901770c682338867f58c7b54eee3) )
+
+ ROM_REGION( 204490, "svg", 0)
+ ROM_LOAD( "tmtennis.svg", 0, 204490, CRC(ed0086e9) SHA1(26a5b2f0a9cd70401187146e1495aee80020658b) )
+ROM_END
+
+
+ROM_START( tmpacman )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d553c-160", 0x0000, 0x0800, CRC(b21a8af7) SHA1(e3122be1873ce76a4067386bf250802776f0c2f9) )
+
+ ROM_REGION( 230216, "svg", 0)
+ ROM_LOAD( "tmpacman.svg", 0, 230216, CRC(2ab5c0f1) SHA1(b2b6482b03c28515dc76fd3d6034c8b7e6bf6efc) )
+ROM_END
+
+
+ROM_START( tmscramb )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d553c-192", 0x0000, 0x0800, CRC(00fcc501) SHA1(a7771e934bf8268c83f38c7ec0acc668836e0939) )
+
+ ROM_REGION( 235601, "svg", 0)
+ ROM_LOAD( "tmscramb.svg", 0, 235601, CRC(9e76219a) SHA1(275273b98d378c9313dd73a3b86cc661a824b7af) )
+ROM_END
+
+
+ROM_START( tcaveman )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d553c-209", 0x0000, 0x0800, CRC(d230d4b7) SHA1(2fb12b60410f5567c5e3afab7b8f5aa855d283be) )
+
+ ROM_REGION( 306952, "svg", 0)
+ ROM_LOAD( "tcaveman.svg", 0, 306952, CRC(a0588b14) SHA1(f67edf579963fc19bc7f9d268329cbc0230712d8) )
+ROM_END
+
+
+ROM_START( alnchase )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d553c-258", 0x0000, 0x0800, CRC(c5284ff5) SHA1(6a20aaacc9748f0e0335958f3cea482e36153704) )
+
+ ROM_REGION( 576864, "svg", 0)
+ ROM_LOAD( "alnchase.svg", 0, 576864, CRC(fe7c7078) SHA1(0d201eeaeb291ded14c0759d1d3d5b2491cf0792) )
+ROM_END
- Game driver(s)
-***************************************************************************/
-// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
-CONS( 1979, ufombs, 0, 0, ufombs, ufombs, ufombs_state, empty_init, "Bambino", "UFO Master-Blaster Station", MACHINE_SUPPORTS_SAVE )
-CONS( 1979, ssfball, 0, 0, ssfball, ssfball, ssfball_state, empty_init, "Bambino", "Superstar Football (Bambino)", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, bmcfball, ssfball, 0, ssfball, ssfball, ssfball_state, empty_init, "Bambino", "Classic Football (Bambino)", MACHINE_SUPPORTS_SAVE )
-CONS( 1979, bmsoccer, 0, 0, bmsoccer, bmsoccer, bmsoccer_state, empty_init, "Bambino", "Kick The Goal Soccer", MACHINE_SUPPORTS_SAVE )
-CONS( 1981, bmsafari, 0, 0, bmsafari, bmsafari, bmsafari_state, empty_init, "Bambino", "Safari (Bambino)", MACHINE_SUPPORTS_SAVE )
-CONS( 1980, splasfgt, 0, 0, splasfgt, splasfgt, splasfgt_state, empty_init, "Bambino", "Space Laser Fight", MACHINE_SUPPORTS_SAVE )
+// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
+CONS( 1979, ufombs, 0, 0, ufombs, ufombs, ufombs_state, empty_init, "Bambino", "UFO Master-Blaster Station", MACHINE_SUPPORTS_SAVE )
+CONS( 1979, ssfball, 0, 0, ssfball, ssfball, ssfball_state, empty_init, "Bambino", "Superstar Football (Bambino)", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, bmcfball, ssfball, 0, ssfball, ssfball, ssfball_state, empty_init, "Bambino", "Classic Football (Bambino)", MACHINE_SUPPORTS_SAVE )
+CONS( 1979, bmsoccer, 0, 0, bmsoccer, bmsoccer, bmsoccer_state, empty_init, "Bambino", "Kick The Goal Soccer", MACHINE_SUPPORTS_SAVE )
+CONS( 1981, bmsafari, 0, 0, bmsafari, bmsafari, bmsafari_state, empty_init, "Bambino", "Safari (Bambino)", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, splasfgt, 0, 0, splasfgt, splasfgt, splasfgt_state, empty_init, "Bambino", "Space Laser Fight", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, bcclimbr, 0, 0, bcclimbr, bcclimbr, bcclimbr_state, empty_init, "Bandai", "Crazy Climber (Bandai)", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, bcclimbr, 0, 0, bcclimbr, bcclimbr, bcclimbr_state, empty_init, "Bandai", "Crazy Climber (Bandai)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, tactix, 0, 0, tactix, tactix, tactix_state, empty_init, "Castle Toy", "Tactix (Castle Toy)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1980, invspace, 0, 0, invspace, invspace, invspace_state, empty_init, "Epoch", "Invader From Space", MACHINE_SUPPORTS_SAVE )
-CONS( 1980, efball, 0, 0, efball, efball, efball_state, empty_init, "Epoch", "Electronic Football (Epoch)", MACHINE_SUPPORTS_SAVE )
-CONS( 1981, galaxy2, 0, 0, galaxy2, galaxy2, galaxy2_state, empty_init, "Epoch", "Galaxy II (VFD Rev. D)", MACHINE_SUPPORTS_SAVE )
-CONS( 1981, galaxy2b, galaxy2, 0, galaxy2b, galaxy2, galaxy2_state, empty_init, "Epoch", "Galaxy II (VFD Rev. B)", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, astrocmd, 0, 0, astrocmd, astrocmd, astrocmd_state, empty_init, "Epoch", "Astro Command", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, edracula, 0, 0, edracula, edracula, edracula_state, empty_init, "Epoch", "Dracula (Epoch)", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, invspace, 0, 0, invspace, invspace, invspace_state, empty_init, "Epoch", "Invader From Space", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, efball, 0, 0, efball, efball, efball_state, empty_init, "Epoch", "Electronic Football (Epoch)", MACHINE_SUPPORTS_SAVE )
+CONS( 1981, galaxy2, 0, 0, galaxy2, galaxy2, galaxy2_state, empty_init, "Epoch", "Galaxy II (VFD Rev. D)", MACHINE_SUPPORTS_SAVE )
+CONS( 1981, galaxy2b, galaxy2, 0, galaxy2b, galaxy2, galaxy2_state, empty_init, "Epoch", "Galaxy II (VFD Rev. B)", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, astrocmd, 0, 0, astrocmd, astrocmd, astrocmd_state, empty_init, "Epoch", "Astro Command", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, edracula, 0, 0, edracula, edracula, edracula_state, empty_init, "Epoch", "Dracula (Epoch)", MACHINE_SUPPORTS_SAVE )
-CONS( 1979, mcompgin, 0, 0, mcompgin, mcompgin, mcompgin_state, empty_init, "Mattel", "Computer Gin", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+CONS( 1979, mcompgin, 0, 0, mcompgin, mcompgin, mcompgin_state, empty_init, "Mattel", "Computer Gin", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
-CONS( 1979, mvbfree, 0, 0, mvbfree, mvbfree, mvbfree_state, empty_init, "Mego", "Mini-Vid: Break Free", MACHINE_SUPPORTS_SAVE )
+CONS( 1979, mvbfree, 0, 0, mvbfree, mvbfree, mvbfree_state, empty_init, "Mego", "Mini-Vid Break Free", MACHINE_SUPPORTS_SAVE )
CONS( 1980, grobot9, 0, 0, grobot9, grobot9, grobot9_state, empty_init, "Takatoku Toys", "Game Robot 9", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // some of the minigames: ***
-CONS( 1980, tccombat, 0, 0, tccombat, tccombat, tccombat_state, empty_init, "Tomy", "Cosmic Combat", MACHINE_SUPPORTS_SAVE )
-CONS( 1980, tmtennis, 0, 0, tmtennis, tmtennis, tmtennis_state, empty_init, "Tomy", "Tennis (Tomy)", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, tmpacman, 0, 0, tmpacman, tmpacman, tmpacman_state, empty_init, "Tomy", "Pac Man (Tomy)", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, tmscramb, 0, 0, tmscramb, tmscramb, tmscramb_state, empty_init, "Tomy", "Scramble (Tomy)", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, tcaveman, 0, 0, tcaveman, tcaveman, tcaveman_state, empty_init, "Tomy", "Caveman (Tomy)", MACHINE_SUPPORTS_SAVE )
-CONS( 1984, alnchase, 0, 0, alnchase, alnchase, alnchase_state, empty_init, "Tomy", "Alien Chase", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, tccombat, 0, 0, tccombat, tccombat, tccombat_state, empty_init, "Tomy", "Cosmic Combat", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, tmtennis, 0, 0, tmtennis, tmtennis, tmtennis_state, empty_init, "Tomy", "Tennis (Tomy)", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, tmpacman, 0, 0, tmpacman, tmpacman, tmpacman_state, empty_init, "Tomy", "Pac Man (Tomy)", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, tmscramb, 0, 0, tmscramb, tmscramb, tmscramb_state, empty_init, "Tomy", "Scramble (Tomy)", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, tcaveman, 0, 0, tcaveman, tcaveman, tcaveman_state, empty_init, "Tomy", "Caveman (Tomy)", MACHINE_SUPPORTS_SAVE )
+CONS( 1984, alnchase, 0, 0, alnchase, alnchase, alnchase_state, empty_init, "Tomy", "Alien Chase", MACHINE_SUPPORTS_SAVE )
// ***: As far as MAME is concerned, the game is emulated fine. But for it to be playable, it requires interaction
// with other, unemulatable, things eg. game board/pieces, playing cards, pen & paper, etc.
diff --git a/src/mame/drivers/hideseek.cpp b/src/mame/drivers/hideseek.cpp
index 8703174c3c3..0f5280a1e14 100644
--- a/src/mame/drivers/hideseek.cpp
+++ b/src/mame/drivers/hideseek.cpp
@@ -2,7 +2,7 @@
// copyright-holders:Guru
/* Hide & Seek
-the AG-2 AX51201 should be the follow-up to the AG-1 AX51101 in gunpey.cpp
+the AG-2 AX51201 should be the follow-up to the AG-1 AX51101 in gunpey.c
AS:
Current ROM code barely contains some valid SH-2 opcodes but not enough for a HD64F7045F28. i.e. It doesn't contain VBR set-up, valid irq routines,
@@ -103,21 +103,21 @@ void hideseek_state::hideseek_palette(palette_device &palette) const
-void hideseek_state::hideseek(machine_config &config)
-{
+MACHINE_CONFIG_START(hideseek_state::hideseek)
+
/* basic machine hardware */
- SH2(config, m_maincpu, 7372800 * 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &hideseek_state::mem_map);
-// TIMER(config, "scantimer").configure_scanline(FUNC(hideseek_state::hideseek_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", SH2, 7372800 * 4 )
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+// MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hideseek_state, hideseek_scanline, "screen", 0, 1)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(hideseek_state::screen_update_hideseek));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(hideseek_state, screen_update_hideseek)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(hideseek_state::hideseek_palette), 0x10000);
GFXDECODE(config, "gfxdecode", "palette", gfx_hideseek);
@@ -126,7 +126,7 @@ void hideseek_state::hideseek(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
/* sound : M9810 */
-}
+MACHINE_CONFIG_END
ROM_START( hideseek )
diff --git a/src/mame/drivers/higemaru.cpp b/src/mame/drivers/higemaru.cpp
index 75c6cc4f052..22d52ab9337 100644
--- a/src/mame/drivers/higemaru.cpp
+++ b/src/mame/drivers/higemaru.cpp
@@ -163,23 +163,23 @@ static GFXDECODE_START( gfx_higemaru )
GFXDECODE_END
-void higemaru_state::higemaru(machine_config &config)
-{
+MACHINE_CONFIG_START(higemaru_state::higemaru)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/4); /* 3 MHz Sharp LH0080A Z80A-CPU-D */
- m_maincpu->set_addrmap(AS_PROGRAM, &higemaru_state::higemaru_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(higemaru_state::higemaru_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/4) /* 3 MHz Sharp LH0080A Z80A-CPU-D */
+ MCFG_DEVICE_PROGRAM_MAP(higemaru_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", higemaru_state, higemaru_scanline, "screen", 0, 1)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(higemaru_state::screen_update_higemaru));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(higemaru_state, screen_update_higemaru)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_higemaru);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_higemaru)
PALETTE(config, m_palette, FUNC(higemaru_state::higemaru_palette), 32*4+16*16, 32);
@@ -189,7 +189,7 @@ void higemaru_state::higemaru(machine_config &config)
AY8910(config, "ay1", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.25);
AY8910(config, "ay2", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/highvdeo.cpp b/src/mame/drivers/highvdeo.cpp
index ccce0c6d0c9..45dc366f227 100644
--- a/src/mame/drivers/highvdeo.cpp
+++ b/src/mame/drivers/highvdeo.cpp
@@ -170,6 +170,7 @@ private:
DECLARE_WRITE16_MEMBER(fashion_output_w);
DECLARE_WRITE16_MEMBER(tv_oki6376_w);
DECLARE_READ8_MEMBER(tv_oki6376_r);
+ DECLARE_WRITE16_MEMBER(tv_ncf_oki6376_w);
DECLARE_WRITE16_MEMBER(tv_ncf_oki6376_st_w);
DECLARE_READ8_MEMBER(nmi_clear_r);
DECLARE_WRITE8_MEMBER(nmi_clear_w);
@@ -298,7 +299,7 @@ WRITE16_MEMBER(highvdeo_state::tv_oki6376_w)
if (ACCESSING_BITS_0_7 && okidata != data)
{
okidata = data;
- m_okim6376->write(data & ~0x80);
+ m_okim6376->write(space, 0, data & ~0x80);
m_okim6376->st_w(data & 0x80);
}
}
@@ -379,6 +380,15 @@ READ16_MEMBER(highvdeo_state::tv_ncf_read1_r)
return (m_inputs[1]->read() & 0xbf) | resetpulse;
}
+WRITE16_MEMBER(highvdeo_state::tv_ncf_oki6376_w)
+{
+ static int okidata;
+ if (ACCESSING_BITS_0_7 && okidata != data) {
+ okidata = data;
+ m_okim6376->write( space, 0, data );
+ }
+}
+
WRITE16_MEMBER(highvdeo_state::tv_ncf_oki6376_st_w)
{
if (ACCESSING_BITS_0_7)
@@ -398,7 +408,7 @@ void highvdeo_state::tv_ncf_map(address_map &map)
void highvdeo_state::tv_ncf_io(address_map &map)
{
map(0x0000, 0x0001).w(FUNC(highvdeo_state::write1_w)); // lamps
- map(0x0008, 0x0008).w(m_okim6376, FUNC(okim6376_device::write));
+ map(0x0008, 0x0009).w(FUNC(highvdeo_state::tv_ncf_oki6376_w));
map(0x000a, 0x000b).w(FUNC(highvdeo_state::tv_ncf_oki6376_st_w));
map(0x000c, 0x000d).r(FUNC(highvdeo_state::read0_r));
map(0x0010, 0x0011).r(FUNC(highvdeo_state::tv_ncf_read1_r));
@@ -424,7 +434,7 @@ void highvdeo_state::nyjoker_io(address_map &map)
map(0x0002, 0x0003).nopw(); // alternate coin counter (bits 0 and 2)
map(0x0004, 0x0005).w(FUNC(highvdeo_state::nyj_write2_w)); // coin and note counter
// AM_RANGE(0x0006, 0x0007) AM_WRITENOP
- map(0x0008, 0x0008).w(m_okim6376, FUNC(okim6376_device::write));
+ map(0x0008, 0x0009).w(FUNC(highvdeo_state::tv_ncf_oki6376_w));
map(0x000a, 0x000b).w(FUNC(highvdeo_state::tv_ncf_oki6376_st_w));
map(0x000c, 0x000d).portr("IN0");
map(0x000e, 0x000f).portr("DSW");
@@ -1219,21 +1229,20 @@ void highvdeo_state::ramdac_map(address_map &map)
}
-void highvdeo_state::tv_vcf(machine_config &config)
-{
- V30(config, m_maincpu, XTAL(12'000'000)/2); // ?
- m_maincpu->set_addrmap(AS_PROGRAM, &highvdeo_state::tv_vcf_map);
- m_maincpu->set_addrmap(AS_IO, &highvdeo_state::tv_vcf_io);
+MACHINE_CONFIG_START(highvdeo_state::tv_vcf)
+ MCFG_DEVICE_ADD("maincpu", V30, XTAL(12'000'000)/2 ) // ?
+ MCFG_DEVICE_PROGRAM_MAP(tv_vcf_map)
+ MCFG_DEVICE_IO_MAP(tv_vcf_io)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(400, 300);
- screen.set_visarea(0, 320-1, 0, 200-1);
- screen.set_screen_update(FUNC(highvdeo_state::screen_update_tourvisn));
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI, ASSERT_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(400, 300)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
+ MCFG_SCREEN_UPDATE_DRIVER(highvdeo_state, screen_update_tourvisn)
+ MCFG_SCREEN_VBLANK_CALLBACK(ASSERTLINE("maincpu", INPUT_LINE_NMI))
PALETTE(config, m_palette).set_entries(0x100);
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette));
@@ -1243,141 +1252,144 @@ void highvdeo_state::tv_vcf(machine_config &config)
SPEAKER(config, "mono").front_center();
//OkiM6376
- OKIM6376(config, m_okim6376, XTAL(12'000'000)/2/2/20).add_route(ALL_OUTPUTS, "mono", 1.0); //Guess, gives approx. same sample rate as previous emulation
-}
+ MCFG_DEVICE_ADD("oki", OKIM6376, XTAL(12'000'000)/2/2/20)//Guess, gives approx. same sample rate as previous emulation
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void highvdeo_state::tv_ncf(machine_config &config)
-{
+MACHINE_CONFIG_START(highvdeo_state::tv_ncf)
tv_vcf(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &highvdeo_state::tv_ncf_map);
- m_maincpu->set_addrmap(AS_IO, &highvdeo_state::tv_ncf_io);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tv_ncf_map)
+ MCFG_DEVICE_IO_MAP(tv_ncf_io)
+MACHINE_CONFIG_END
-void highvdeo_state::nyjoker(machine_config &config)
-{
+MACHINE_CONFIG_START(highvdeo_state::nyjoker)
tv_vcf(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &highvdeo_state::nyjoker_map);
- m_maincpu->set_addrmap(AS_IO, &highvdeo_state::nyjoker_io);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(nyjoker_map)
+ MCFG_DEVICE_IO_MAP(nyjoker_io)
+MACHINE_CONFIG_END
-void highvdeo_state::tv_tcf(machine_config &config)
-{
+MACHINE_CONFIG_START(highvdeo_state::tv_tcf)
tv_vcf(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &highvdeo_state::tv_tcf_map);
- m_maincpu->set_addrmap(AS_IO, &highvdeo_state::tv_tcf_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tv_tcf_map)
+ MCFG_DEVICE_IO_MAP(tv_tcf_io)
- subdevice<screen_device>("screen")->set_visarea(0, 400-1, 0, 300-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 300-1)
m_palette->set_format(palette_device::RGB_565, 0x100);
-}
+MACHINE_CONFIG_END
-void highvdeo_state::newmcard(machine_config &config)
-{
+MACHINE_CONFIG_START(highvdeo_state::newmcard)
tv_tcf(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &highvdeo_state::newmcard_map);
- m_maincpu->set_addrmap(AS_IO, &highvdeo_state::newmcard_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(newmcard_map)
+ MCFG_DEVICE_IO_MAP(newmcard_io)
- subdevice<screen_device>("screen")->set_visarea(0, 320-1, 0, 200-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
+MACHINE_CONFIG_END
-void highvdeo_state::record(machine_config &config)
-{
+MACHINE_CONFIG_START(highvdeo_state::record)
newmcard(config);
- m_maincpu->set_addrmap(AS_IO, &highvdeo_state::record_io);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(record_io)
+MACHINE_CONFIG_END
-void highvdeo_state::ciclone(machine_config &config)
-{
+MACHINE_CONFIG_START(highvdeo_state::ciclone)
tv_tcf(config);
- I80186(config.replace(), m_maincpu, 20000000); // ?
- m_maincpu->set_addrmap(AS_PROGRAM, &highvdeo_state::tv_tcf_map);
- m_maincpu->set_addrmap(AS_IO, &highvdeo_state::ciclone_io);
-}
+ MCFG_DEVICE_REMOVE("maincpu")
-void highvdeo_state::brasil(machine_config &config)
-{
- I80186(config, m_maincpu, 20000000); // fashion doesn't like 20/2 Mhz
- m_maincpu->set_addrmap(AS_PROGRAM, &highvdeo_state::brasil_map);
- m_maincpu->set_addrmap(AS_IO, &highvdeo_state::brasil_io);
+ MCFG_DEVICE_ADD("maincpu", I80186, 20000000 ) // ?
+ MCFG_DEVICE_PROGRAM_MAP(tv_tcf_map)
+ MCFG_DEVICE_IO_MAP(ciclone_io)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(highvdeo_state::brasil)
+ MCFG_DEVICE_ADD("maincpu", I80186, 20000000 ) // fashion doesn't like 20/2 Mhz
+ MCFG_DEVICE_PROGRAM_MAP(brasil_map)
+ MCFG_DEVICE_IO_MAP(brasil_io)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(400, 300);
- screen.set_visarea(0, 400-1, 0, 300-1);
- screen.set_screen_update(FUNC(highvdeo_state::screen_update_brasil));
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI, ASSERT_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(400, 300)
+ MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 300-1)
+ MCFG_SCREEN_UPDATE_DRIVER(highvdeo_state, screen_update_brasil)
+ MCFG_SCREEN_VBLANK_CALLBACK(ASSERTLINE("maincpu", INPUT_LINE_NMI))
PALETTE(config, m_palette, palette_device::RGB_565);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6376(config, m_okim6376, XTAL(12'000'000)/2/2/20).add_route(ALL_OUTPUTS, "mono", 1.0); //Guess, gives same sample rate as previous emulation
-}
+ MCFG_DEVICE_ADD("oki", OKIM6376, XTAL(12'000'000)/2/2/20)//Guess, gives same sample rate as previous emulation
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void highvdeo_state::fashion(machine_config &config)
-{
+MACHINE_CONFIG_START(highvdeo_state::fashion)
brasil(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(fashion_io)
+MACHINE_CONFIG_END
- m_maincpu->set_addrmap(AS_IO, &highvdeo_state::fashion_io);
-}
-
-void highvdeo_state::grancapi(machine_config &config)
-{
- I80186(config, m_maincpu, 20000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &highvdeo_state::brasil_map);
- m_maincpu->set_addrmap(AS_IO, &highvdeo_state::grancapi_io);
+MACHINE_CONFIG_START(highvdeo_state::grancapi)
+ MCFG_DEVICE_ADD("maincpu", I80186, 20000000 )
+ MCFG_DEVICE_PROGRAM_MAP(brasil_map)
+ MCFG_DEVICE_IO_MAP(grancapi_io)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(400, 300);
- screen.set_visarea(0, 400-1, 0, 300-1);
- screen.set_screen_update(FUNC(highvdeo_state::screen_update_brasil));
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI, ASSERT_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(400, 300)
+ MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 300-1)
+ MCFG_SCREEN_UPDATE_DRIVER(highvdeo_state, screen_update_brasil)
+ MCFG_SCREEN_VBLANK_CALLBACK(ASSERTLINE("maincpu", INPUT_LINE_NMI))
PALETTE(config, m_palette, palette_device::RGB_565);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6376(config, m_okim6376, XTAL(12'000'000)/2/2/20).add_route(ALL_OUTPUTS, "mono", 1.0); //Guess, gives same sample rate as previous emulation
-}
+ MCFG_DEVICE_ADD("oki", OKIM6376, XTAL(12'000'000)/2/2/20)//Guess, gives same sample rate as previous emulation
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void highvdeo_state::magicbom(machine_config &config)
-{
- I80186(config, m_maincpu, 20000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &highvdeo_state::brasil_map);
- m_maincpu->set_addrmap(AS_IO, &highvdeo_state::magicbom_io);
+MACHINE_CONFIG_START(highvdeo_state::magicbom)
+ MCFG_DEVICE_ADD("maincpu", I80186, 20000000 )
+ MCFG_DEVICE_PROGRAM_MAP(brasil_map)
+ MCFG_DEVICE_IO_MAP(magicbom_io)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(400, 300);
- screen.set_visarea(0, 400-1, 0, 300-1);
- screen.set_screen_update(FUNC(highvdeo_state::screen_update_brasil));
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI, ASSERT_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(400, 300)
+ MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 300-1)
+ MCFG_SCREEN_UPDATE_DRIVER(highvdeo_state, screen_update_brasil)
+ MCFG_SCREEN_VBLANK_CALLBACK(ASSERTLINE("maincpu", INPUT_LINE_NMI))
PALETTE(config, m_palette, palette_device::RGB_565);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6376(config, m_okim6376, XTAL(12'000'000)/2/2/20).add_route(ALL_OUTPUTS, "mono", 1.0); //Guess, gives same sample rate as previous emulation
-}
+ MCFG_DEVICE_ADD("oki", OKIM6376, XTAL(12'000'000)/2/2/20)//Guess, gives same sample rate as previous emulation
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( tour4000 )
diff --git a/src/mame/drivers/hitme.cpp b/src/mame/drivers/hitme.cpp
index 85f00383a99..e80ee193270 100644
--- a/src/mame/drivers/hitme.cpp
+++ b/src/mame/drivers/hitme.cpp
@@ -314,30 +314,31 @@ void hitme_state::machine_reset()
m_timeout_time = attotime::zero;
}
-void hitme_state::hitme(machine_config &config)
-{
+MACHINE_CONFIG_START(hitme_state::hitme)
+
/* basic machine hardware */
- I8080(config, m_maincpu, MASTER_CLOCK/16);
- m_maincpu->set_addrmap(AS_PROGRAM, &hitme_state::hitme_map);
- m_maincpu->set_addrmap(AS_IO, &hitme_state::hitme_portmap);
+ MCFG_DEVICE_ADD("maincpu", I8080, MASTER_CLOCK/16)
+ MCFG_DEVICE_PROGRAM_MAP(hitme_map)
+ MCFG_DEVICE_IO_MAP(hitme_portmap)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(40*8, 19*10);
- m_screen->set_visarea(0*8, 40*8-1, 0*8, 19*10-1);
- m_screen->set_screen_update(FUNC(hitme_state::screen_update_hitme));
- m_screen->set_palette("palette");
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_hitme);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 19*10)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 19*10-1)
+ MCFG_SCREEN_UPDATE_DRIVER(hitme_state, screen_update_hitme)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_hitme)
+
PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "mono").front_center();
DISCRETE(config, m_discrete, hitme_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
@@ -348,19 +349,19 @@ void hitme_state::hitme(machine_config &config)
Barricade or is the resolution set by a dip switch?
*/
-void hitme_state::barricad(machine_config &config)
-{
+MACHINE_CONFIG_START(hitme_state::barricad)
hitme(config);
/* video hardware */
- m_screen->set_size(32*8, 24*8);
- m_screen->set_visarea(0*8, 32*8-1, 0*8, 24*8-1);
- m_screen->set_screen_update(FUNC(hitme_state::screen_update_barricad));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(32*8, 24*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 24*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(hitme_state, screen_update_barricad)
- m_gfxdecode->set_info(gfx_barricad);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_barricad)
MCFG_VIDEO_START_OVERRIDE(hitme_state,barricad)
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/hitpoker.cpp b/src/mame/drivers/hitpoker.cpp
index cafebdb5861..cdba067704c 100644
--- a/src/mame/drivers/hitpoker.cpp
+++ b/src/mame/drivers/hitpoker.cpp
@@ -462,8 +462,7 @@ static GFXDECODE_START( gfx_hitpoker )
GFXDECODE_ENTRY( "gfx1", 0, hitpoker_layout_8bpp, 0, 8 )
GFXDECODE_END
-void hitpoker_state::hitpoker(machine_config &config)
-{
+MACHINE_CONFIG_START(hitpoker_state::hitpoker)
MC68HC11(config, m_maincpu, 1000000);
m_maincpu->set_addrmap(AS_PROGRAM, &hitpoker_state::hitpoker_map);
m_maincpu->set_addrmap(AS_IO, &hitpoker_state::hitpoker_io);
diff --git a/src/mame/drivers/hk68v10.cpp b/src/mame/drivers/hk68v10.cpp
index 2f5598f22ae..935d25039c6 100644
--- a/src/mame/drivers/hk68v10.cpp
+++ b/src/mame/drivers/hk68v10.cpp
@@ -337,11 +337,10 @@ static void hk68_vme_cards(device_slot_interface &device)
/*
* Machine configuration
*/
-void hk68v10_state::hk68v10(machine_config &config)
-{
+MACHINE_CONFIG_START(hk68v10_state::hk68v10)
/* basic machine hardware */
- M68010(config, m_maincpu, 10_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &hk68v10_state::hk68v10_mem);
+ MCFG_DEVICE_ADD("maincpu", M68010, 10_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP (hk68v10_mem)
Z8536(config, "cio", SCC_CLOCK);
@@ -355,9 +354,9 @@ void hk68v10_state::hk68v10(machine_config &config)
rs232trm.rxd_handler().set(m_sccterm, FUNC(scc8530_device::rxa_w));
rs232trm.cts_handler().set(m_sccterm, FUNC(scc8530_device::ctsa_w));
- VME(config, "vme", 0);
- VME_SLOT(config, "slot1", hk68_vme_cards, nullptr, 1, "vme");
-}
+ MCFG_VME_DEVICE_ADD("vme")
+ MCFG_VME_SLOT_ADD("vme", 1, hk68_vme_cards, nullptr)
+MACHINE_CONFIG_END
/* ROM definitions */
ROM_START (hk68v10)
diff --git a/src/mame/drivers/hnayayoi.cpp b/src/mame/drivers/hnayayoi.cpp
index 6941b922ac0..e00cde62f19 100644
--- a/src/mame/drivers/hnayayoi.cpp
+++ b/src/mame/drivers/hnayayoi.cpp
@@ -542,14 +542,15 @@ void hnayayoi_state::machine_reset()
}
-void hnayayoi_state::hnayayoi(machine_config &config)
-{
+MACHINE_CONFIG_START(hnayayoi_state::hnayayoi)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 20000000/4); /* 5 MHz ???? */
- m_maincpu->set_addrmap(AS_PROGRAM, &hnayayoi_state::hnayayoi_map);
- m_maincpu->set_addrmap(AS_IO, &hnayayoi_state::hnayayoi_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 20000000/4 ) /* 5 MHz ???? */
+ MCFG_DEVICE_PROGRAM_MAP(hnayayoi_map)
+ MCFG_DEVICE_IO_MAP(hnayayoi_io_map)
- CLOCK(config, "nmiclock", 8000).signal_handler().set(FUNC(hnayayoi_state::nmi_clock_w));
+ MCFG_DEVICE_ADD("nmiclock", CLOCK, 8000)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, hnayayoi_state, nmi_clock_w))
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -560,9 +561,9 @@ void hnayayoi_state::hnayayoi(machine_config &config)
m_mainlatch->q_out_cb<4>().set(FUNC(hnayayoi_state::nmi_enable_w)).invert();
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(20_MHz_XTAL / 2, 632, 0, 512, 263, 0, 243);
- screen.set_screen_update("crtc", FUNC(hd6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(20_MHz_XTAL / 2, 632, 0, 512, 263, 0, 243)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", hd6845_device, screen_update)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
@@ -585,26 +586,26 @@ void hnayayoi_state::hnayayoi(machine_config &config)
ymsnd.add_route(2, "mono", 0.25);
ymsnd.add_route(3, "mono", 0.80);
- MSM5205(config, m_msm, 384000);
- m_msm->set_prescaler_selector(msm5205_device::SEX_4B);
- m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void hnayayoi_state::hnfubuki(machine_config &config)
-{
+MACHINE_CONFIG_START(hnayayoi_state::hnfubuki)
hnayayoi(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &hnayayoi_state::hnfubuki_map);
- m_maincpu->set_addrmap(AS_IO, address_map_constructor());
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hnfubuki_map)
+ MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_IO)
// D5
m_mainlatch->q_out_cb<4>().set(FUNC(hnayayoi_state::nmi_enable_w));
-}
+MACHINE_CONFIG_END
-void hnayayoi_state::untoucha(machine_config &config)
-{
+MACHINE_CONFIG_START(hnayayoi_state::untoucha)
hnayayoi(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &hnayayoi_state::untoucha_map);
- m_maincpu->set_addrmap(AS_IO, &hnayayoi_state::untoucha_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(untoucha_map)
+ MCFG_DEVICE_IO_MAP(untoucha_io_map)
m_mainlatch->q_out_cb<1>().set(m_msm, FUNC(msm5205_device::vclk_w));
m_mainlatch->q_out_cb<2>().set(FUNC(hnayayoi_state::nmi_enable_w));
@@ -614,7 +615,7 @@ void hnayayoi_state::untoucha(machine_config &config)
subdevice<hd6845_device>("crtc")->set_update_row_callback(FUNC(hnayayoi_state::untoucha_update_row), this);
MCFG_VIDEO_START_OVERRIDE(hnayayoi_state,untoucha)
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/hng64.cpp b/src/mame/drivers/hng64.cpp
index 359eeaf44e4..89688fe9561 100644
--- a/src/mame/drivers/hng64.cpp
+++ b/src/mame/drivers/hng64.cpp
@@ -699,7 +699,7 @@ READ8_MEMBER(hng64_state::hng64_dualport_r)
}
}
- return m_dt71321_dpram->right_r(offset);
+ return m_dt71321_dpram->right_r(space, offset);
}
/*
@@ -731,7 +731,7 @@ Beast Busters 2 outputs (all at offset == 0x1c):
WRITE8_MEMBER(hng64_state::hng64_dualport_w)
{
- m_dt71321_dpram->right_w(offset, data);
+ m_dt71321_dpram->right_w(space,offset, data);
LOG("%s: dualport WRITE %04x %02x\n", machine().describe_context(), offset, data);
}
@@ -2016,7 +2016,7 @@ WRITE8_MEMBER(hng64_state::ioport7_w)
READ8_MEMBER(hng64_state::ioport0_r)
{
uint16_t addr = (m_ex_ramaddr | (m_ex_ramaddr_upper<<9)) & 0x7ff;
- uint8_t ret = m_dt71321_dpram->left_r(addr);
+ uint8_t ret = m_dt71321_dpram->left_r(space, addr);
LOG("%s: ioport0_r %02x (from address %04x)\n", machine().describe_context(), ret, addr);
return ret;
@@ -2025,7 +2025,7 @@ READ8_MEMBER(hng64_state::ioport0_r)
WRITE8_MEMBER(hng64_state::ioport0_w)
{
uint16_t addr = (m_ex_ramaddr | (m_ex_ramaddr_upper<<9)) & 0x7ff;
- m_dt71321_dpram->left_w(addr, data);
+ m_dt71321_dpram->left_w(space, addr, data);
LOG("%s: ioport0_w %02x (to address %04x)\n", machine().describe_context(), data, addr);
}
@@ -2106,8 +2106,7 @@ void hng64_state::init_io()
m_ex_ramaddr_upper = 0;
}
-void hng64_state::hng64(machine_config &config)
-{
+MACHINE_CONFIG_START(hng64_state::hng64)
/* basic machine hardware */
VR4300BE(config, m_maincpu, HNG64_MASTER_CLOCK); // actually R4300
m_maincpu->set_icache_size(16384);
diff --git a/src/mame/drivers/holeland.cpp b/src/mame/drivers/holeland.cpp
index 1be272f5e98..36a44ff3566 100644
--- a/src/mame/drivers/holeland.cpp
+++ b/src/mame/drivers/holeland.cpp
@@ -274,13 +274,13 @@ static GFXDECODE_START( gfx_crzrally )
GFXDECODE_END
-void holeland_state::holeland(machine_config &config)
-{
+MACHINE_CONFIG_START(holeland_state::holeland)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 3355700); /* measured 298ns on PCB */
- m_maincpu->set_addrmap(AS_PROGRAM, &holeland_state::holeland_map);
- m_maincpu->set_addrmap(AS_IO, &holeland_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(holeland_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 3355700) /* measured 298ns on PCB */
+ MCFG_DEVICE_PROGRAM_MAP(holeland_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", holeland_state, irq0_line_hold)
LS259(config, m_latch); // 3J
m_latch->parallel_out_cb().set(FUNC(holeland_state::pal_offs_w)).mask(0x03);
@@ -291,15 +291,15 @@ void holeland_state::holeland(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*16, 32*16);
- screen.set_visarea(0*16, 32*16-1, 2*16, 30*16-1);
- screen.set_screen_update(FUNC(holeland_state::screen_update_holeland));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_holeland);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*16, 32*16)
+ MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 2*16, 30*16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(holeland_state, screen_update_holeland)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_holeland)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
MCFG_VIDEO_START_OVERRIDE(holeland_state,holeland)
@@ -319,7 +319,7 @@ void holeland_state::holeland(machine_config &config)
sp0256_device &speech(SP0256(config, "speech", 3355700)); /* measured 298ns on PCB */
speech.data_request_callback().set_inputline("maincpu", INPUT_LINE_NMI);
speech.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/*
@@ -355,13 +355,13 @@ Notes:
*/
-void holeland_state::crzrally(machine_config &config)
-{
+MACHINE_CONFIG_START(holeland_state::crzrally)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 20000000/4); /* 5 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &holeland_state::crzrally_map);
- m_maincpu->set_addrmap(AS_IO, &holeland_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(holeland_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 20000000/4) /* 5 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(crzrally_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", holeland_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
@@ -372,15 +372,15 @@ void holeland_state::crzrally(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(holeland_state::screen_update_crzrally));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_crzrally);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(holeland_state, screen_update_crzrally)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_crzrally)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
MCFG_VIDEO_START_OVERRIDE(holeland_state,crzrally)
@@ -396,7 +396,7 @@ void holeland_state::crzrally(machine_config &config)
ay2.port_a_read_callback().set_ioport("DSW1");
ay2.port_b_read_callback().set_ioport("DSW2");
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/homedata.cpp b/src/mame/drivers/homedata.cpp
index b43a51f46fa..de844e42ee8 100644
--- a/src/mame/drivers/homedata.cpp
+++ b/src/mame/drivers/homedata.cpp
@@ -301,12 +301,20 @@ WRITE8_MEMBER(homedata_state::mrokumei_keyboard_select_w)
}
+READ8_MEMBER(homedata_state::mrokumei_sound_io_r)
+{
+ if (m_sndbank & 4)
+ return(m_soundlatch->read(space, 0));
+ else
+ return memregion("audiocpu")->base()[0x10000 + offset + (m_sndbank & 1) * 0x10000];
+}
+
WRITE8_MEMBER(homedata_state::mrokumei_sound_bank_w)
{
/* bit 0 = ROM bank
bit 2 = ROM or soundlatch
*/
- m_mrokumei_soundbank->set_bank(data & 7);
+ m_sndbank = data;
}
WRITE8_MEMBER(homedata_state::mrokumei_sound_cmd_w)
@@ -348,15 +356,15 @@ WRITE8_MEMBER(homedata_state::reikaids_upd7807_portc_w)
*/
// logerror("%s: port C wr %02x (STATUS %d DATA %d)\n", machine().describe_context(), data, BIT(data, 2), BIT(data, 6));
- m_audiobank->set_entry(data & 0x03);
+ membank("bank2")->set_entry(data & 0x03);
machine().bookkeeping().coin_counter_w(0, ~data & 0x80);
if (BIT(m_upd7807_portc, 5) && !BIT(data, 5)) /* write clock 1->0 */
- m_ymsnd->write(BIT(data, 3), m_upd7807_porta);
+ m_ymsnd->write(space, BIT(data, 3), m_upd7807_porta);
if (BIT(m_upd7807_portc, 4) && !BIT(data, 4)) /* read clock 1->0 */
- m_upd7807_porta = m_ymsnd->read(BIT(data, 3));
+ m_upd7807_porta = m_ymsnd->read(space, BIT(data, 3));
m_upd7807_portc = data;
}
@@ -378,6 +386,18 @@ READ8_MEMBER(homedata_state::reikaids_io_r)
return res;
}
+READ8_MEMBER(homedata_state::reikaids_snd_command_r)
+{
+ //logerror("%s: sndmcd_r (%02x)\n", machine().describe_context(), m_snd_command);
+ return m_snd_command;
+}
+
+WRITE8_MEMBER(homedata_state::reikaids_snd_command_w)
+{
+ m_snd_command = data;
+ //logerror("%s: coprocessor_command_w %02x\n", machine().describe_context(), data);
+}
+
/********************************************************************************
@@ -387,6 +407,18 @@ READ8_MEMBER(homedata_state::reikaids_io_r)
********************************************************************************/
+WRITE8_MEMBER(homedata_state::pteacher_snd_command_w)
+{
+ //logerror("%s: snd_command_w %02x\n", machine().describe_context(), data);
+ m_from_cpu = data;
+}
+
+READ8_MEMBER(homedata_state::pteacher_snd_r)
+{
+ //logerror("%s: pteacher_snd_r %02x\n",machine().describe_context(),to_cpu);
+ return m_to_cpu;
+}
+
READ8_MEMBER(homedata_state::pteacher_io_r)
{
/* bit 6: !vblank
@@ -430,13 +462,19 @@ READ8_MEMBER(homedata_state::pteacher_keyboard_r)
READ8_MEMBER(homedata_state::pteacher_upd7807_porta_r)
{
if (!BIT(m_upd7807_portc, 6))
- m_upd7807_porta = m_soundlatch->read(space, 0);
+ m_upd7807_porta = m_from_cpu;
else
logerror("%s: read PA with PC *not* clear\n", machine().describe_context());
return m_upd7807_porta;
}
+WRITE8_MEMBER(homedata_state::pteacher_snd_answer_w)
+{
+ m_to_cpu = data;
+ //logerror("%s: to_cpu = %02x\n", machine().describe_context(), m_to_cpu);
+}
+
WRITE8_MEMBER(homedata_state::pteacher_upd7807_porta_w)
{
m_upd7807_porta = data;
@@ -457,7 +495,7 @@ WRITE8_MEMBER(homedata_state::pteacher_upd7807_portc_w)
// logerror("%s: port C wr %02x\n", machine().describe_context(), data);
- m_audiobank->set_entry((data & 0x0c) >> 2);
+ membank("bank2")->set_entry((data & 0x0c) >> 2);
machine().bookkeeping().coin_counter_w(0, ~data & 0x80);
@@ -476,9 +514,9 @@ WRITE8_MEMBER(homedata_state::bankswitch_w)
/* last bank is fixed and is #0 for us, other banks start from #1 (hence data+1 below)*/
if (data < last_bank)
- m_mainbank->set_entry(data + 1);
+ membank("bank1")->set_entry(data + 1);
else
- m_mainbank->set_entry(0);
+ membank("bank1")->set_entry(0);
}
@@ -501,7 +539,7 @@ void homedata_state::mrokumei_map(address_map &map)
map(0x8000, 0x8000).w(FUNC(homedata_state::mrokumei_blitter_start_w)); // in some games also ROM bank switch to access service ROM
map(0x8001, 0x8001).w(FUNC(homedata_state::mrokumei_keyboard_select_w));
map(0x8002, 0x8002).w(FUNC(homedata_state::mrokumei_sound_cmd_w));
- map(0x8003, 0x8003).w(m_sn, FUNC(sn76489a_device::write));
+ map(0x8003, 0x8003).w(m_sn, FUNC(sn76489a_device::command_w));
map(0x8006, 0x8006).w(FUNC(homedata_state::homedata_blitter_param_w));
map(0x8007, 0x8007).w(FUNC(homedata_state::mrokumei_blitter_bank_w));
map(0x8000, 0xffff).rom();
@@ -518,18 +556,12 @@ void homedata_state::mrokumei_sound_map(address_map &map)
void homedata_state::mrokumei_sound_io_map(address_map &map)
{
- map(0x0000, 0xffff).r(m_mrokumei_soundbank, FUNC(address_map_bank_device::read8)); /* read address is 16-bit */
+ map(0x0000, 0xffff).r(FUNC(homedata_state::mrokumei_sound_io_r)); /* read address is 16-bit */
map(0x0040, 0x0040).mirror(0xff00).w("dac", FUNC(dac_byte_interface::data_w)); /* write address is only 8-bit */
// hourouki mirror...
map(0x007f, 0x007f).mirror(0xff00).w("dac", FUNC(dac_byte_interface::data_w)); /* write address is only 8-bit */
}
-void homedata_state::mrokumei_sound_banked_map(address_map &map)
-{
- map(0x00000, 0x1ffff).mirror(0x20000).rom().region("audiocpu", 0);
- map(0x40000, 0x40000).mirror(0x3ffff).r(m_soundlatch, FUNC(generic_latch_8_device::read));
-}
-
/********************************************************************************/
void homedata_state::reikaids_map(address_map &map)
@@ -545,22 +577,22 @@ void homedata_state::reikaids_map(address_map &map)
map(0x7ffe, 0x7ffe).w(FUNC(homedata_state::reikaids_blitter_bank_w));
map(0x7fff, 0x7fff).w(FUNC(homedata_state::reikaids_blitter_start_w));
map(0x8000, 0x8000).w(FUNC(homedata_state::bankswitch_w));
- map(0x8002, 0x8002).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x8002, 0x8002).w(FUNC(homedata_state::reikaids_snd_command_w));
map(0x8005, 0x8005).w(FUNC(homedata_state::reikaids_gfx_bank_w));
map(0x8006, 0x8006).w(FUNC(homedata_state::homedata_blitter_param_w));
- map(0x8000, 0xbfff).bankr("mainbank");
+ map(0x8000, 0xbfff).bankr("bank1");
map(0xc000, 0xffff).rom();
}
void homedata_state::reikaids_upd7807_map(address_map &map)
{
- map(0x0000, 0xfeff).bankr("audiobank"); /* External ROM (Banked) */
+ map(0x0000, 0xfeff).bankr("bank2"); /* External ROM (Banked) */
}
/**************************************************************************/
-void homedata_state::pteacher_base_map(address_map &map)
+void homedata_state::pteacher_map(address_map &map)
{
map(0x0000, 0x3fff).ram().w(FUNC(homedata_state::mrokumei_videoram_w)).share("videoram");
map(0x4000, 0x5eff).ram();
@@ -568,55 +600,22 @@ void homedata_state::pteacher_base_map(address_map &map)
map(0x6000, 0x6fff).ram(); /* work ram */
map(0x7800, 0x7800).ram(); /* behaves as normal RAM */
map(0x7801, 0x7801).r(FUNC(homedata_state::pteacher_io_r)); // vblank, visible page
+ map(0x7ff2, 0x7ff2).r(FUNC(homedata_state::pteacher_snd_r));
map(0x7ff0, 0x7ffd).writeonly().share("vreg");
map(0x7fff, 0x7fff).w(FUNC(homedata_state::pteacher_blitter_start_w));
map(0x8000, 0x8000).w(FUNC(homedata_state::bankswitch_w));
- map(0x8002, 0x8002).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x8002, 0x8002).w(FUNC(homedata_state::pteacher_snd_command_w));
map(0x8005, 0x8005).w(FUNC(homedata_state::pteacher_blitter_bank_w));
map(0x8006, 0x8006).w(FUNC(homedata_state::homedata_blitter_param_w));
map(0x8007, 0x8007).w(FUNC(homedata_state::pteacher_gfx_bank_w));
- map(0x8000, 0xbfff).bankr("mainbank");
+ map(0x8000, 0xbfff).bankr("bank1");
map(0xc000, 0xffff).rom();
}
-void homedata_state::pteacher_map(address_map &map)
-{
- pteacher_base_map(map);
- map(0x7ff2, 0x7ff2).r(m_mainlatch, FUNC(generic_latch_8_device::read));
-}
-
void homedata_state::pteacher_upd7807_map(address_map &map)
{
- map(0x0000, 0x0000).w(m_mainlatch, FUNC(generic_latch_8_device::write));
- map(0x0000, 0xfeff).bankr("audiobank"); /* External ROM (Banked) */
-}
-
-/**************************************************************************/
-
-
- /* it seems that Mahjong Jogakuen runs on the same board as the others,
- but with just these two addresses swapped. Instead of creating a new
- MachineDriver, I just fix them here. */
-void homedata_state::jogakuen_map(address_map &map)
-{
- pteacher_map(map);
- map(0x8005, 0x8005).w(FUNC(homedata_state::pteacher_gfx_bank_w));
- map(0x8007, 0x8007).w(FUNC(homedata_state::pteacher_blitter_bank_w));
-}
-
-/**************************************************************************/
-
-
-void homedata_state::mjikaga_map(address_map &map)
-{
- pteacher_base_map(map);
- map(0x7802, 0x7802).r(m_mainlatch, FUNC(generic_latch_8_device::read));
-}
-
-void homedata_state::mjikaga_upd7807_map(address_map &map)
-{
- map(0x0123, 0x0123).w(m_mainlatch, FUNC(generic_latch_8_device::write));
- map(0x0000, 0xfeff).bankr("audiobank"); /* External ROM (Banked) */
+ map(0x0000, 0x0000).w(FUNC(homedata_state::pteacher_snd_answer_w));
+ map(0x0000, 0xfeff).bankr("bank2"); /* External ROM (Banked) */
}
/**************************************************************************/
@@ -1129,15 +1128,17 @@ MACHINE_START_MEMBER(homedata_state,homedata)
save_item(NAME(m_blitter_param_count));
save_item(NAME(m_blitter_param));
save_item(NAME(m_vblank));
+ save_item(NAME(m_sndbank));
save_item(NAME(m_keyb));
+ save_item(NAME(m_snd_command));
}
MACHINE_START_MEMBER(homedata_state,reikaids)
{
uint8_t *ROM = memregion("maincpu")->base();
- m_mainbank->configure_entries(0, 8, &ROM[0xc000], 0x4000);
- m_audiobank->configure_entries(0, 4, memregion("audiocpu")->base(), 0x10000);
+ membank("bank1")->configure_entries(0, 8, &ROM[0xc000], 0x4000);
+ membank("bank2")->configure_entries(0, 4, memregion("audiocpu")->base(), 0x10000);
MACHINE_START_CALL_MEMBER(homedata);
@@ -1152,8 +1153,8 @@ MACHINE_START_MEMBER(homedata_state,pteacher)
{
uint8_t *ROM = memregion("maincpu")->base();
- m_mainbank->configure_entries(0, 4, &ROM[0xc000], 0x4000);
- m_audiobank->configure_entries(0, 4, memregion("audiocpu")->base(), 0x10000);
+ membank("bank1")->configure_entries(0, 4, &ROM[0xc000], 0x4000);
+ membank("bank2")->configure_entries(0, 4, memregion("audiocpu")->base(), 0x10000);
MACHINE_START_CALL_MEMBER(homedata);
@@ -1161,6 +1162,8 @@ MACHINE_START_MEMBER(homedata_state,pteacher)
save_item(NAME(m_upd7807_portc));
save_item(NAME(m_gfx_bank));
+ save_item(NAME(m_to_cpu));
+ save_item(NAME(m_from_cpu));
}
MACHINE_RESET_MEMBER(homedata_state,homedata)
@@ -1174,13 +1177,9 @@ MACHINE_RESET_MEMBER(homedata_state,homedata)
m_blitter_param[2] = 0;
m_blitter_param[3] = 0;
m_vblank = 0;
+ m_sndbank = 0;
m_keyb = 0;
-}
-
-MACHINE_RESET_MEMBER(homedata_state,mrokumei)
-{
- MACHINE_RESET_CALL_MEMBER(homedata);
- m_mrokumei_soundbank->set_bank(0);
+ m_snd_command = 0;
}
MACHINE_RESET_MEMBER(homedata_state,pteacher)
@@ -1195,6 +1194,8 @@ MACHINE_RESET_MEMBER(homedata_state,pteacher)
m_upd7807_porta = 0;
m_gfx_bank[0] = 0;
m_gfx_bank[1] = 0;
+ m_to_cpu = 0;
+ m_from_cpu = 0;
}
MACHINE_RESET_MEMBER(homedata_state,reikaids)
@@ -1212,32 +1213,30 @@ MACHINE_RESET_MEMBER(homedata_state,reikaids)
m_gfx_bank[1] = 0; // this is not used by reikaids
}
-void homedata_state::mrokumei(machine_config &config)
-{
- /* basic machine hardware */
- MC6809E(config, m_maincpu, 16000000/4); /* 4MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::mrokumei_map);
- m_maincpu->set_vblank_int("screen", FUNC(homedata_state::homedata_irq)); /* also triggered by the blitter */
+MACHINE_CONFIG_START(homedata_state::mrokumei)
- Z80(config, m_audiocpu, 16000000/4); /* 4MHz ? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &homedata_state::mrokumei_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &homedata_state::mrokumei_sound_io_map);
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", MC6809E, 16000000/4) /* 4MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(mrokumei_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", homedata_state, homedata_irq) /* also triggered by the blitter */
- ADDRESS_MAP_BANK(config, m_mrokumei_soundbank).set_map(&homedata_state::mrokumei_sound_banked_map).set_options(ENDIANNESS_LITTLE, 8, 19, 0x10000);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 16000000/4) /* 4MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(mrokumei_sound_map)
+ MCFG_DEVICE_IO_MAP(mrokumei_sound_io_map)
MCFG_MACHINE_START_OVERRIDE(homedata_state,homedata)
- MCFG_MACHINE_RESET_OVERRIDE(homedata_state,mrokumei)
+ MCFG_MACHINE_RESET_OVERRIDE(homedata_state,homedata)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
// visible area can be changed at runtime
- screen.set_visarea(0*8, 54*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(homedata_state::screen_update_mrokumei));
- screen.screen_vblank().set(FUNC(homedata_state::screen_vblank));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 54*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(homedata_state, screen_update_mrokumei)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, homedata_state, screen_vblank_homedata))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mrokumei);
PALETTE(config, m_palette, FUNC(homedata_state::mrokumei_palette), 0x8000);
@@ -1249,34 +1248,33 @@ void homedata_state::mrokumei(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- SN76489A(config, m_sn, 16000000/4); // SN76489AN actually
- m_sn->add_route(ALL_OUTPUTS, "speaker", 0.5);
+ MCFG_DEVICE_ADD("snsnd", SN76489A, 16000000/4) // SN76489AN actually
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
/**************************************************************************/
-void homedata_state::reikaids(machine_config &config)
-{
+MACHINE_CONFIG_START(homedata_state::reikaids)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, 16000000/4); /* 4MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::reikaids_map);
- m_maincpu->set_vblank_int("screen", FUNC(homedata_state::homedata_irq)); /* also triggered by the blitter */
+ MCFG_DEVICE_ADD("maincpu", MC6809E, 16000000/4) /* 4MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(reikaids_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", homedata_state, homedata_irq) /* also triggered by the blitter */
- upd7807_device &audiocpu(UPD7807(config, m_audiocpu, 9000000)); /* 9MHz ? */
+ upd7807_device &audiocpu(UPD7807(config, m_audiocpu, 8000000)); /* ??? MHz (max speed for the 7807 is 12MHz) */
audiocpu.set_addrmap(AS_PROGRAM, &homedata_state::reikaids_upd7807_map);
audiocpu.pa_in_cb().set(FUNC(homedata_state::reikaids_upd7807_porta_r));
audiocpu.pa_out_cb().set(FUNC(homedata_state::reikaids_upd7807_porta_w));
audiocpu.pb_out_cb().set("dac", FUNC(dac_byte_interface::data_w));
audiocpu.pc_out_cb().set(FUNC(homedata_state::reikaids_upd7807_portc_w));
- audiocpu.pt_in_cb().set(m_soundlatch, FUNC(generic_latch_8_device::read));
+ audiocpu.pt_in_cb().set(FUNC(homedata_state::reikaids_snd_command_r));
- config.m_minimum_quantum = attotime::from_hz(30000); // very high interleave required to sync for startup tests
+ MCFG_QUANTUM_TIME(attotime::from_hz(30000)) // very high interleave required to sync for startup tests
MCFG_MACHINE_START_OVERRIDE(homedata_state,reikaids)
MCFG_MACHINE_RESET_OVERRIDE(homedata_state,reikaids)
@@ -1288,7 +1286,7 @@ void homedata_state::reikaids(machine_config &config)
screen.set_size(256, 256);
screen.set_visarea(0, 255, 16, 256-1-16);
screen.set_screen_update(FUNC(homedata_state::screen_update_reikaids));
- screen.screen_vblank().set(FUNC(homedata_state::screen_vblank));
+ screen.screen_vblank().set(FUNC(homedata_state::screen_vblank_homedata));
screen.screen_vblank().append([this] (int state) { if (state) m_audiocpu->pulse_input_line(UPD7810_INTF1, m_audiocpu->minimum_quantum_time()); });
screen.set_palette(m_palette);
@@ -1300,9 +1298,7 @@ void homedata_state::reikaids(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- GENERIC_LATCH_8(config, m_soundlatch);
-
- YM2203(config, m_ymsnd, 16000000/4); /* 4 MHz */
+ YM2203(config, m_ymsnd, 3000000);
m_ymsnd->port_a_read_callback().set_ioport("DSW1");
m_ymsnd->port_b_read_callback().set_ioport("DSW2");
m_ymsnd->add_route(0, "speaker", 0.25);
@@ -1310,21 +1306,20 @@ void homedata_state::reikaids(machine_config &config)
m_ymsnd->add_route(2, "speaker", 0.25);
m_ymsnd->add_route(3, "speaker", 1.0);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
/**************************************************************************/
-void homedata_state::pteacher(machine_config &config)
-{
+MACHINE_CONFIG_START(homedata_state::pteacher)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, 16000000/4); /* 4MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::pteacher_map);
- m_maincpu->set_vblank_int("screen", FUNC(homedata_state::homedata_irq)); /* also triggered by the blitter */
+ MCFG_DEVICE_ADD("maincpu", MC6809E, 16000000/4) /* 4MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(pteacher_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", homedata_state, homedata_irq) /* also triggered by the blitter */
upd7807_device &audiocpu(UPD7807(config, m_audiocpu, 9000000)); /* 9MHz ? */
audiocpu.set_addrmap(AS_PROGRAM, &homedata_state::pteacher_upd7807_map);
@@ -1335,7 +1330,7 @@ void homedata_state::pteacher(machine_config &config)
audiocpu.pc_out_cb().set(FUNC(homedata_state::pteacher_upd7807_portc_w));
audiocpu.pt_in_cb().set(FUNC(homedata_state::pteacher_keyboard_r));
- config.m_minimum_quantum = attotime::from_hz(6000); // should be enough
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) // should be enough
MCFG_MACHINE_START_OVERRIDE(homedata_state,pteacher)
MCFG_MACHINE_RESET_OVERRIDE(homedata_state,pteacher)
@@ -1348,7 +1343,7 @@ void homedata_state::pteacher(machine_config &config)
// visible area can be changed at runtime
screen.set_visarea(0*8, 54*8-1, 2*8, 30*8-1);
screen.set_screen_update(FUNC(homedata_state::screen_update_pteacher));
- screen.screen_vblank().set(FUNC(homedata_state::screen_vblank));
+ screen.screen_vblank().set(FUNC(homedata_state::screen_vblank_homedata));
screen.screen_vblank().append([this] (int state) { if (state) m_audiocpu->pulse_input_line(UPD7810_INTF1, m_audiocpu->minimum_quantum_time()); });
screen.set_palette(m_palette);
@@ -1360,50 +1355,29 @@ void homedata_state::pteacher(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- GENERIC_LATCH_8(config, m_soundlatch);
- GENERIC_LATCH_8(config, m_mainlatch);
-
- SN76489A(config, m_sn, 16000000/4); // SN76489AN actually
- m_sn->add_route(ALL_OUTPUTS, "speaker", 0.5);
+ MCFG_DEVICE_ADD("snsnd", SN76489A, 16000000/4) // SN76489AN actually
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void homedata_state::jogakuen(machine_config &config)
-{
+MACHINE_CONFIG_START(homedata_state::mjkinjas)
pteacher(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::jogakuen_map);
-}
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_CLOCK(11000000) /* 11MHz ? */
+MACHINE_CONFIG_END
-void homedata_state::mjkinjas(machine_config &config)
-{
- pteacher(config);
-
- m_audiocpu->set_clock(11000000); /* 11MHz ? */
-}
-
-void homedata_state::lemnangl(machine_config &config)
-{
+MACHINE_CONFIG_START(homedata_state::lemnangl)
pteacher(config);
/* video hardware */
- m_gfxdecode->set_info(gfx_lemnangl);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_lemnangl)
MCFG_VIDEO_START_OVERRIDE(homedata_state,lemnangl)
-}
-
-void homedata_state::mjikaga(machine_config &config)
-{
- lemnangl(config);
-
- /* Mahjong Ikagadesuka is different as well. */
- m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::mjikaga_map);
- m_audiocpu->set_addrmap(AS_PROGRAM, &homedata_state::mjikaga_upd7807_map);
-}
+MACHINE_CONFIG_END
static INPUT_PORTS_START( mirderby )
INPUT_PORTS_END
@@ -1471,11 +1445,11 @@ GFXDECODE_END
/* Miracle Derby - Ascot
- - has the same GX61A01 custom (blitter?) as homedata.cpp and a 'similar' CPU setup (this has more CPUs)
+ - has the same GX61A01 custom (blitter?) as homedata.c and a 'similar' CPU setup (this has more CPUs)
and similar board / rom numbering (X**-)
The drivers can probably be merged later, although the current per-game handling of the blitter in
- homedata.cpp should be looked at.
+ homedata.c should be looked at.
@@ -1513,31 +1487,33 @@ GFXDECODE_END
/* clocks are 16mhz and 9mhz */
-void homedata_state::mirderby(machine_config &config)
-{
+MACHINE_CONFIG_START(homedata_state::mirderby)
+
+ MCFG_DEVICE_ADD("maincpu", MC6809E, 16000000/8) /* 2 Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(cpu2_map)
+
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, 16000000/8); /* 2 Mhz */
- m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::cpu2_map);
+ MCFG_DEVICE_ADD("cpu0", Z80, 16000000/4) /* 4 Mhz */
+ MCFG_DEVICE_DISABLE()
+ MCFG_DEVICE_PROGRAM_MAP(cpu0_map)
- z80_device &cpu0(Z80(config, "cpu0", 16000000/4)); /* 4 Mhz */
- cpu0.set_disable();
- cpu0.set_addrmap(AS_PROGRAM, &homedata_state::cpu0_map);
+ MCFG_DEVICE_ADD("cpu1", MC6809E, 16000000/8) /* 2 Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(cpu1_map)
+ MCFG_DEVICE_DISABLE()
+ //MCFG_CPU_VBLANK_INT("screen", mirderby_irq)
- mc6809e_device &cpu1(MC6809E(config, "cpu1", 16000000/8)); /* 2 Mhz */
- cpu1.set_addrmap(AS_PROGRAM, &homedata_state::cpu1_map);
- cpu1.set_disable();
- //cpu1.set_vblank_int("screen", FUNC(homedata_state::mirderby_irq));
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 54*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(homedata_state::screen_update_mirderby));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 54*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(homedata_state, screen_update_mirderby)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mirderby);
PALETTE(config, m_palette, FUNC(homedata_state::mirderby_palette), 0x8000);
@@ -1552,7 +1528,7 @@ void homedata_state::mirderby(machine_config &config)
m_ymsnd->add_route(1, "speaker", 0.25);
m_ymsnd->add_route(2, "speaker", 0.25);
m_ymsnd->add_route(3, "speaker", 1.0);
-}
+MACHINE_CONFIG_END
/**************************************************************************/
@@ -1561,8 +1537,9 @@ ROM_START( hourouki )
ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */
ROM_LOAD( "x77f01.bin", 0x08000, 0x8000, CRC(cd3197b8) SHA1(7dad9ce57a83d675a8a9a4e06df360c22100fe4b) )
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code */
+ ROM_REGION( 0x30000, "audiocpu", 0 ) /* Z80 code */
ROM_LOAD( "x77a10.bin", 0x00000, 0x20000, CRC(dc1d616b) SHA1(93b8dfe1566556e9621c0d5f3998b31874f74a28) )
+ ROM_RELOAD( 0x10000, 0x20000 )
ROM_REGION( 0x20000, "gfx1", 0 )
ROM_LOAD( "x77a03.bin", 0, 0x20000, CRC(5960cde8) SHA1(857b56b304423102a5f1fc88ba4a2386d012bf4d) )
@@ -1575,7 +1552,7 @@ ROM_START( hourouki )
ROM_LOAD16_BYTE( "x77e06.bin", 0x00000, 0x8000, CRC(63607fe5) SHA1(50c756d741117bd0ea8a877bcb1f025e02cc6d29) )
ROM_LOAD16_BYTE( "x77e07.bin", 0x00001, 0x8000, CRC(79fcfc57) SHA1(4311a6bd8aa2dcad2b4fa5a9091c27dd74df62eb) )
- ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x20000, "user1", 0 ) /* blitter data */
ROM_LOAD( "x77a08.bin", 0x0000, 0x20000, CRC(22bde229) SHA1(8b44fa895f77b5c95d798172225a030fa0c04126) )
ROM_END
@@ -1583,8 +1560,9 @@ ROM_START( mhgaiden )
ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */
ROM_LOAD( "x72e01.bin", 0x08000, 0x8000, CRC(98cfa53e) SHA1(dd08f5f9ff9d4a9e01e531247fcb17a8407ca8b6) )
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code */
+ ROM_REGION( 0x30000, "audiocpu", 0 ) /* Z80 code */
ROM_LOAD( "x72b10.bin", 0x00000, 0x20000, CRC(00ebbc45) SHA1(9e7ade202bf37a86153a38d705ae26a72732d2bb) )
+ ROM_RELOAD( 0x10000, 0x20000 )
ROM_REGION( 0x20000, "gfx1", 0 )
ROM_LOAD( "x72b03.bin", 0, 0x20000, CRC(9019936f) SHA1(5b98ad1b4c0b141bc84fc17bea49784883c5775a) )
@@ -1597,7 +1575,7 @@ ROM_START( mhgaiden )
ROM_LOAD16_BYTE( "x72c06.bin", 0x00000, 0x8000, CRC(b57fb589) SHA1(21b2fc33b9045a4ffa9e4b0bd598fd3416c0adbf) )
ROM_LOAD16_BYTE( "x72c07.bin", 0x00001, 0x8000, CRC(2aadb285) SHA1(90af8541092fbb116b6d6eaf1511b49a2f9bceaf) )
- ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x20000, "user1", 0 ) /* blitter data */
ROM_LOAD( "x72b08.bin", 0x0000, 0x20000, CRC(be312d23) SHA1(f2c18d6372c2f819248976c67abe0ddcd5cc1de1) )
ROM_END
@@ -1605,8 +1583,9 @@ ROM_START( mjhokite )
ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */
ROM_LOAD( "a74_g01.6g", 0x08000, 0x8000, CRC(409cc501) SHA1(6e9ab81198a5a54489cca8b6dcafb67995351207) )
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code */
+ ROM_REGION( 0x30000, "audiocpu", 0 ) /* Z80 code */
ROM_LOAD( "a74_a10.11k", 0x00000, 0x20000, CRC(2252f3ec) SHA1(018aaad087354b05b120aa42db572ed13f690f88) )
+ ROM_RELOAD( 0x10000, 0x20000 )
ROM_REGION( 0x20000, "gfx1", 0 )
ROM_LOAD( "a74_a03.1g", 0, 0x20000, CRC(bf801b74) SHA1(fd9b7a4590fdeba90423a7ceccd8dfbb8826460b) )
@@ -1621,7 +1600,7 @@ ROM_START( mjhokite )
ROM_LOAD16_BYTE( "a74_a06.1l", 0x00000, 0x8000, CRC(df057dd3) SHA1(0afae441b43a87e04511b8e652d2b03f48d8f705) )
ROM_LOAD16_BYTE( "a74_a07.1m", 0x00001, 0x8000, CRC(3c230167) SHA1(5d57f614bf07baa8b5c96f1d14241ff7c66806c1) )
- ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x20000, "user1", 0 ) /* blitter data */
ROM_LOAD( "a74_a08.13a", 0x0000, 0x20000, CRC(dffdd855) SHA1(91469a997a6a9f74f1b84c127f30f5b0e2f974ac) )
ROM_END
@@ -1629,8 +1608,9 @@ ROM_START( mjclinic )
ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */
ROM_LOAD( "x80_g01.6g", 0x08000, 0x8000, CRC(787b4fb5) SHA1(d1708979d209113b604f6d0973fe14a0c4348351) )
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code */
+ ROM_REGION( 0x30000, "audiocpu", 0 ) /* Z80 code */
ROM_LOAD( "x80_a10.11k", 0x00000, 0x20000, CRC(afedbadf) SHA1(e2f101b59c0d23f9dc9b057c41d496fc3223cbb8) )
+ ROM_RELOAD( 0x10000, 0x20000 )
ROM_REGION( 0x20000, "gfx1", 0 )
ROM_LOAD( "x80_a03.1g", 0, 0x20000, CRC(34b63c89) SHA1(98383ce8e464ecc53677c060338cc03aa6238a0e) )
@@ -1645,7 +1625,7 @@ ROM_START( mjclinic )
ROM_LOAD16_BYTE( "x80_a06.1l", 0x00000, 0x8000, CRC(c1f9b2fb) SHA1(abe17e2b3b880f91564e32c246116c33e2884889) )
ROM_LOAD16_BYTE( "x80_a07.1m", 0x00001, 0x8000, CRC(e3120152) SHA1(b4a778a9b91e204e2c068dff9a40bd29eccf04a5) )
- ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x20000, "user1", 0 ) /* blitter data */
ROM_LOAD( "x80_a08.13a", 0x0000, 0x20000, CRC(174e8ec0) SHA1(a5075fe4bba9403ef9e0636d5f3f66aad8b2bc54) )
ROM_END
@@ -1653,8 +1633,9 @@ ROM_START( mjclinica )
ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */
ROM_LOAD( "x80_f01.6g", 0x08000, 0x8000, CRC(cd814ec0) SHA1(55b2c9519fc98f71a2731c3851ce56ee8e57bd66) ) // labeled f01 instead of g01. Earlier version?
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code */
+ ROM_REGION( 0x30000, "audiocpu", 0 ) /* Z80 code */
ROM_LOAD( "x80_a10.11k", 0x00000, 0x20000, CRC(afedbadf) SHA1(e2f101b59c0d23f9dc9b057c41d496fc3223cbb8) )
+ ROM_RELOAD( 0x10000, 0x20000 )
ROM_REGION( 0x20000, "gfx1", 0 )
ROM_LOAD( "x80_a03.1g", 0, 0x20000, CRC(34b63c89) SHA1(98383ce8e464ecc53677c060338cc03aa6238a0e) )
@@ -1669,7 +1650,7 @@ ROM_START( mjclinica )
ROM_LOAD16_BYTE( "x80_a06.1l", 0x00000, 0x8000, CRC(c1f9b2fb) SHA1(abe17e2b3b880f91564e32c246116c33e2884889) )
ROM_LOAD16_BYTE( "x80_a07.1m", 0x00001, 0x8000, CRC(e3120152) SHA1(b4a778a9b91e204e2c068dff9a40bd29eccf04a5) )
- ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x20000, "user1", 0 ) /* blitter data */
ROM_LOAD( "x80_a08.13a", 0x0000, 0x20000, CRC(174e8ec0) SHA1(a5075fe4bba9403ef9e0636d5f3f66aad8b2bc54) )
ROM_END
@@ -1677,8 +1658,9 @@ ROM_START( mrokumei )
ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */
ROM_LOAD( "m81d01.bin", 0x08000, 0x8000, CRC(6f81a78a) SHA1(5e16327b04b065ed4e39a147b18711902dba6384) )
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code */
+ ROM_REGION( 0x30000, "audiocpu", 0 ) /* Z80 code */
ROM_LOAD( "m81a10.bin", 0x00000, 0x20000, CRC(0866b2d3) SHA1(37a726830476e372db906382e1d0601c461c7c10) )
+ ROM_RELOAD( 0x10000, 0x20000 )
ROM_REGION( 0x20000, "gfx1", 0 )
ROM_LOAD( "m81a03.bin", 0, 0x20000, CRC(4f96e6d2) SHA1(9e6375ee543215691b28c914a8374c1d75c6681f) )
@@ -1693,44 +1675,44 @@ ROM_START( mrokumei )
ROM_LOAD16_BYTE( "m81b06.bin", 0x00000, 0x8000, CRC(96665d39) SHA1(9173791831555e69b8938d85340a08dd73012f8d) )
ROM_LOAD16_BYTE( "m81b07.bin", 0x00001, 0x8000, CRC(14f39690) SHA1(821f9de1b28b9d7844fc1b002c7ee3bbdda7f905) )
- ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x20000, "user1", 0 ) /* blitter data */
ROM_LOAD( "m81a08.bin", 0x0000, 0x20000, CRC(dba706b9) SHA1(467c8c3e12cd64002d2516dd117bc87d03448f49) )
ROM_END
ROM_START( reikaids )
ROM_REGION( 0x02c000, "maincpu", 0 ) /* 6809 Code */
- ROM_LOAD( "j82c01.j14", 0x010000, 0x01c000, CRC(50fcc451) SHA1(ad717b8300f0903ef136569cf933b8af0e67eb6b) )
- ROM_CONTINUE( 0x00c000, 0x004000)
+ ROM_LOAD( "j82c01.bin", 0x010000, 0x01c000, CRC(50fcc451) SHA1(ad717b8300f0903ef136569cf933b8af0e67eb6b) )
+ ROM_CONTINUE( 0x00c000, 0x004000 )
ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */
- ROM_LOAD( "x82a04.e20", 0x000000, 0x040000, CRC(52c9028a) SHA1(9d5e37b2f741d5c0e64ba3d674a72330058b96f2) )
+ ROM_LOAD( "x82a04.bin", 0x000000, 0x040000, CRC(52c9028a) SHA1(9d5e37b2f741d5c0e64ba3d674a72330058b96f2) )
ROM_REGION( 0x200000, "gfx1", 0 )
- ROM_LOAD( "x82a13.d2", 0x000000, 0x80000, CRC(954c8844) SHA1(94e09009d0ad40a62f2a92cd5bd500ffe2c4650a) )
- ROM_LOAD( "x82a14.d1", 0x080000, 0x80000, CRC(a748305e) SHA1(ee01025820a0915621d2c056d65e67a84a5f724c) )
- ROM_LOAD( "x82a15.f2", 0x100000, 0x80000, CRC(c50f7047) SHA1(13fcd1abaf88c759e747cf5f2c94a522276945c9) )
- ROM_LOAD( "x82a16.f1", 0x180000, 0x80000, CRC(b270094a) SHA1(edd4f7e3fd082c12758d82ea6eba2a060398b9ef) )
+ ROM_LOAD( "x82a13.bin", 0x000000, 0x80000, CRC(954c8844) SHA1(94e09009d0ad40a62f2a92cd5bd500ffe2c4650a) )
+ ROM_LOAD( "x82a14.bin", 0x080000, 0x80000, CRC(a748305e) SHA1(ee01025820a0915621d2c056d65e67a84a5f724c) )
+ ROM_LOAD( "x82a15.bin", 0x100000, 0x80000, CRC(c50f7047) SHA1(13fcd1abaf88c759e747cf5f2c94a522276945c9) )
+ ROM_LOAD( "x82a16.bin", 0x180000, 0x80000, CRC(b270094a) SHA1(edd4f7e3fd082c12758d82ea6eba2a060398b9ef) )
ROM_REGION( 0x100000, "gfx2", 0 )
- ROM_LOAD( "x82a09.d5", 0x000000, 0x80000, CRC(c496b187) SHA1(8ec4e09469c9f425681671f5ddb2d2d8768af42b) )
- ROM_LOAD( "x82a10.d4", 0x080000, 0x80000, CRC(4243fe28) SHA1(01260543a6f61f46ba56840c1b96ecedf637451c) )
+ ROM_LOAD( "x82a09.bin", 0x000000, 0x80000, CRC(c496b187) SHA1(8ec4e09469c9f425681671f5ddb2d2d8768af42b) )
+ ROM_LOAD( "x82a10.bin", 0x080000, 0x80000, CRC(4243fe28) SHA1(01260543a6f61f46ba56840c1b96ecedf637451c) )
ROM_REGION( 0x080000, "gfx3", 0 )
- ROM_LOAD( "x82a08.d6", 0x000000, 0x80000, CRC(51cfd790) SHA1(208f00b1ccf420fe891dd30684481bf871c1aa63) )
+ ROM_LOAD( "x82a08.bin", 0x000000, 0x80000, CRC(51cfd790) SHA1(208f00b1ccf420fe891dd30684481bf871c1aa63) )
ROM_REGION( 0x080000, "gfx4", 0 )
- ROM_LOAD( "x82a05.d8", 0x000000, 0x80000, CRC(fb65e0e0) SHA1(d560091cfad17af6539913db1279c62a680de4fc) )
+ ROM_LOAD( "x82a05.bin", 0x000000, 0x80000, CRC(fb65e0e0) SHA1(d560091cfad17af6539913db1279c62a680de4fc) )
ROM_REGION( 0x010000, "proms", 0 ) /* static palette */
- ROM_LOAD16_BYTE( "e82a18.e12", 0x00000, 0x8000, CRC(1f52a7aa) SHA1(55bbba5bfad1eee4872939d23ac643aa3074b3cf) )
- ROM_LOAD16_BYTE( "e82a17.e9", 0x00001, 0x8000, CRC(f91d77a1) SHA1(a650a68e7e75719819fd04dda86d7fc8849dfe7d) )
+ ROM_LOAD16_BYTE( "e82a18.bin", 0x00000, 0x8000, CRC(1f52a7aa) SHA1(55bbba5bfad1eee4872939d23ac643aa3074b3cf) )
+ ROM_LOAD16_BYTE( "e82a17.bin", 0x00001, 0x8000, CRC(f91d77a1) SHA1(a650a68e7e75719819fd04dda86d7fc8849dfe7d) )
- ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
- ROM_LOAD( "x82a02.e19", 0x00000, 0x040000, CRC(90fe700f) SHA1(bf7f9955a2cb1af43a272bf3366ff8c09ff6f7e6) )
+ ROM_REGION( 0x40000, "user1", 0 ) /* blitter data */
+ ROM_LOAD( "x82a02.bin", 0x00000, 0x040000, CRC(90fe700f) SHA1(bf7f9955a2cb1af43a272bf3366ff8c09ff6f7e6) )
ROM_REGION( 0x0100, "user2", 0 )
- ROM_LOAD( "x82a19.l4", 0x0000, 0x0100, CRC(7ed947b4) SHA1(40c74a17976fab5d7f9da367083764934bb87281) ) // N82S129AN - priority (not used)
+ ROM_LOAD( "x82a19.bin", 0x0000, 0x0100, CRC(7ed947b4) SHA1(40c74a17976fab5d7f9da367083764934bb87281) ) // priority (not used)
ROM_END
@@ -1762,7 +1744,7 @@ ROM_START( battlcry )
ROM_LOAD16_BYTE( "s88b18.f10", 0x00000, 0x8000, CRC(fa432edc) SHA1(55c01b6a1175539facdfdd0c3c49d878a59156a4) )
ROM_LOAD16_BYTE( "s88b17.f9", 0x00001, 0x8000, CRC(7c55568e) SHA1(1e599cd00abe7b67bcb0c8d3f0c467a99ef79658) )
- ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x40000, "user1", 0 ) /* blitter data */
ROM_LOAD( "s88b02.f19", 0x00000, 0x040000, CRC(7044a542) SHA1(8efaa512f62fe9a37d2474c435c549118c019d67) )
ROM_REGION( 0x0100, "user2", 0 )
@@ -1798,7 +1780,7 @@ ROM_START( battlcryc )
ROM_LOAD16_BYTE( "s88b18.f10", 0x00000, 0x8000, CRC(fa432edc) SHA1(55c01b6a1175539facdfdd0c3c49d878a59156a4) )
ROM_LOAD16_BYTE( "s88b17.f9", 0x00001, 0x8000, CRC(7c55568e) SHA1(1e599cd00abe7b67bcb0c8d3f0c467a99ef79658) )
- ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x40000, "user1", 0 ) /* blitter data */
ROM_LOAD( "s88b02.f19", 0x00000, 0x040000, CRC(7044a542) SHA1(8efaa512f62fe9a37d2474c435c549118c019d67) )
ROM_REGION( 0x0100, "user2", 0 )
@@ -1859,7 +1841,7 @@ ROM_START( battlcryp ) // prototype presented at AOU 1989
ROM_LOAD16_BYTE( "s88_b18", 0x00000, 0x8000, CRC(fa432edc) SHA1(55c01b6a1175539facdfdd0c3c49d878a59156a4) ) // 27c256
ROM_LOAD16_BYTE( "s88_b17", 0x00001, 0x8000, CRC(7c55568e) SHA1(1e599cd00abe7b67bcb0c8d3f0c467a99ef79658) ) // 27c256
- ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data, identical to the released game but split in 27C1000 ROMs */
+ ROM_REGION( 0x40000, "user1", 0 ) /* blitter data, identical to the released game but split in 27C1000 ROMs */
ROM_LOAD( "s88_b02_1.ic28", 0x00000, 0x020000, CRC(93d8c8ec) SHA1(bb1fcf4d32db6885d0c78416211c20decc48d266) )
ROM_LOAD( "s88_b02_2.ic27", 0x20000, 0x020000, CRC(8918327b) SHA1(445c0252ec8e71423e77c75190f9524a90f918a9) )
@@ -1892,7 +1874,7 @@ ROM_START( mjkojink )
ROM_LOAD16_BYTE( "x83a19.4k", 0x00000, 0x8000, CRC(d29c9ef0) SHA1(c4e2c0c3c9c7abee1a965d6842956cdf98a76ad4) )
ROM_LOAD16_BYTE( "x83a18.3k", 0x00001, 0x8000, CRC(c3351952) SHA1(036be91ca428c5df016dd777bd658cb00f44ee3c) )
- ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x40000, "user1", 0 ) /* blitter data */
ROM_LOAD( "x83b03.12e", 0x0000, 0x40000, CRC(4ba8b5ec) SHA1(cee77583f2f7b7fdba7e0f17e4d1244891488d36) )
ROM_END
@@ -1924,7 +1906,7 @@ ROM_START( mjjoship )
ROM_LOAD16_BYTE( "x73_c19.4k", 0x00000, 0x8000, CRC(f4bdce8a) SHA1(e3168d6aa6f8cd24b497706a117c77353d1c6ef3) )
ROM_LOAD16_BYTE( "x73_c18.3k", 0x00001, 0x8000, CRC(1ab265cc) SHA1(24dced438a28ea9eb2f06c8859c5c07f4d975bfd) )
- ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x20000, "user1", 0 ) /* blitter data */
ROM_LOAD( "x73a03.12e", 0x0000, 0x20000, CRC(fd32eb8c) SHA1(584afb1ed2da776a4ff9c0b9eb2906c914b28928) )
ROM_END
@@ -1953,7 +1935,7 @@ ROM_START( vitaminc )
ROM_LOAD16_BYTE( "x90b19.bin", 0x00000, 0x8000, CRC(d0022cfb) SHA1(f384964a09fe6c1f8a993f5da67d81a23df22879) )
ROM_LOAD16_BYTE( "x90b18.bin", 0x00001, 0x8000, CRC(fe1de95d) SHA1(e94282065b3c69de7c9ea214c752745c18c38cb7) )
- ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x40000, "user1", 0 ) /* blitter data */
ROM_LOAD( "x90a03.bin", 0x0000, 0x40000, CRC(35d5b4e6) SHA1(1ea4d03946aad33d33a817f83d20e7ad8faace6d) )
ROM_END
@@ -1981,7 +1963,7 @@ ROM_START( mjyougo )
ROM_LOAD16_BYTE( "x91a19.bin", 0x00000, 0x8000, CRC(f63493df) SHA1(0e436bffb03fa6218363ee205c4fe5f4e16a24cc) )
ROM_LOAD16_BYTE( "x91a18.bin", 0x00001, 0x8000, CRC(b3541265) SHA1(d8e79c2856bb81e9ad9b79c012d64663a8997bbd) )
- ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x40000, "user1", 0 ) /* blitter data */
ROM_LOAD( "x91a03.bin", 0x0000, 0x40000, CRC(4863caa2) SHA1(6ef511cb4d184d4705eb0fd3eb3d82daad49564a) )
ROM_END
@@ -2009,7 +1991,7 @@ ROM_START( mjkinjas )
ROM_LOAD16_BYTE( "x07a19.bin", 0x00000, 0x8000, CRC(7acabdf8) SHA1(90e39c1dd3e32c057ab8bfcd82d022231a06847c) )
ROM_LOAD16_BYTE( "x07a18.bin", 0x00001, 0x8000, CRC(d247bd5a) SHA1(298d62395ea7c687ed509863aaf3d8b758743cd8) )
- ROM_REGION( 0x80000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x80000, "user1", 0 ) /* blitter data */
ROM_LOAD( "x07a03.bin", 0x0000, 0x80000, CRC(f5ff3e72) SHA1(e3489a3b8988677866aadd41cb99f146217022ce) )
ROM_END
@@ -2037,7 +2019,7 @@ ROM_START( jogakuen )
ROM_LOAD16_BYTE( "a19.bin", 0x00000, 0x8000, CRC(9a3d9d5e) SHA1(1ab20fc5b7ab1c2508c76b0051923446c409e074) )
ROM_LOAD16_BYTE( "a18.bin", 0x00001, 0x8000, CRC(3289edd4) SHA1(7db4fbda8a22c64dc29ce6b4b63204cebd641351) )
- ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x40000, "user1", 0 ) /* blitter data */
ROM_LOAD( "a03.bin", 0x0000, 0x40000, CRC(bb1507ab) SHA1(465f45c9cae2d4e064b784cc5ba25b60839e4b5f) )
ROM_END
@@ -2066,7 +2048,7 @@ ROM_START( lemnangl )
ROM_LOAD16_BYTE( "x02_b19.5k", 0x00000, 0x8000, CRC(f75959bc) SHA1(59a1debc28263a7f5f9b775817232fffc6e63ac4) )
ROM_LOAD16_BYTE( "x02_b18.3k", 0x00001, 0x8000, CRC(3f1510b1) SHA1(a9892beb3d911ee91d7dd276d9c84d14ba3253d8) )
- ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x40000, "user1", 0 ) /* blitter data */
ROM_LOAD( "x02a03.12e", 0x0000, 0x40000, CRC(02ef0378) SHA1(6223a019fc7794872dd49151952c56892295a779) )
ROM_END
@@ -2094,7 +2076,7 @@ ROM_START( mjikaga )
ROM_LOAD16_BYTE( "m15a19.bin", 0x00000, 0x8000, CRC(2f247acf) SHA1(468fee5a16c98751524e21ad0f608fc85c95ab86) )
ROM_LOAD16_BYTE( "m15a18.bin", 0x00001, 0x8000, CRC(2648ca07) SHA1(e4f5ed62b014a6e397ce611c2c592f795d112219) )
- ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x40000, "user1", 0 ) /* blitter data */
ROM_LOAD( "m15a03.bin", 0x0000, 0x40000, CRC(07e2e8f8) SHA1(61eed47c4136733059c1d96e98cadb8ac9078f95) )
ROM_END
@@ -2122,7 +2104,7 @@ ROM_START( mjprivat )
ROM_LOAD16_BYTE( "311a19.4k", 0x00000, 0x8000, CRC(dbb5569a) SHA1(e23a32667adc8eade7555adbac18dac268f08d3e) )
ROM_LOAD16_BYTE( "311a18.3k", 0x00001, 0x8000, CRC(a5ca7723) SHA1(d074c5c09a50abdb2b0ffdeacfc077a91b9204bf) )
- ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
+ ROM_REGION( 0x40000, "user1", 0 ) /* blitter data */
ROM_LOAD( "311b03.12e", 0x0000, 0x40000, CRC(5722c341) SHA1(694e63261d91da48c0ed14a44fbc6c9c74b055d9) )
ROM_END
@@ -2151,6 +2133,22 @@ ROM_END
+void homedata_state::init_jogakuen()
+{
+ /* it seems that Mahjong Jogakuen runs on the same board as the others,
+ but with just these two addresses swapped. Instead of creating a new
+ MachineDriver, I just fix them here. */
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x8007, 0x8007, write8_delegate(FUNC(homedata_state::pteacher_blitter_bank_w),this));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x8005, 0x8005, write8_delegate(FUNC(homedata_state::pteacher_gfx_bank_w),this));
+}
+
+void homedata_state::init_mjikaga()
+{
+ /* Mahjong Ikagadesuka is different as well. */
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x7802, 0x7802, read8_delegate(FUNC(homedata_state::pteacher_snd_r),this));
+ m_audiocpu->space(AS_PROGRAM).install_write_handler(0x0123, 0x0123, write8_delegate(FUNC(homedata_state::pteacher_snd_answer_w),this));
+}
+
void homedata_state::init_reikaids()
{
m_priority = 0;
@@ -2182,11 +2180,11 @@ GAME( 1988, mjjoship, 0, pteacher, mjjoship, homedata_state, empty_init,
GAME( 1989, vitaminc, 0, pteacher, pteacher, homedata_state, empty_init, ROT0, "Home Data", "Mahjong Vitamin C (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, mjyougo, 0, pteacher, pteacher, homedata_state, empty_init, ROT0, "Home Data", "Mahjong-yougo no Kisotairyoku (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, mjkinjas, 0, mjkinjas, pteacher, homedata_state, empty_init, ROT0, "Home Data", "Mahjong Kinjirareta Asobi (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992?,jogakuen, 0, jogakuen, jogakuen, homedata_state, empty_init, ROT0, "Windom", "Mahjong Jogakuen (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992?,jogakuen, 0, pteacher, jogakuen, homedata_state, init_jogakuen, ROT0, "Windom", "Mahjong Jogakuen (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1990, lemnangl, 0, lemnangl, pteacher, homedata_state, empty_init, ROT0, "Home Data", "Mahjong Lemon Angel (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, mjprivat, 0, lemnangl, pteacher, homedata_state, empty_init, ROT0, "Matoba", "Mahjong Private (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991?,mjikaga, 0, mjikaga, mjikaga, homedata_state, empty_init, ROT0, "Mitchell", "Mahjong Ikaga Desu ka (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1991?,mjikaga, 0, lemnangl, mjikaga, homedata_state, init_mjikaga, ROT0, "Mitchell", "Mahjong Ikaga Desu ka (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1988, mirderby, 0, mirderby, mirderby, homedata_state, init_mirderby, ROT0, "Home Data?", "Miracle Derby - Ascot", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/homelab.cpp b/src/mame/drivers/homelab.cpp
index 9e2165554f0..04ff0e7ac75 100644
--- a/src/mame/drivers/homelab.cpp
+++ b/src/mame/drivers/homelab.cpp
@@ -752,102 +752,100 @@ QUICKLOAD_LOAD_MEMBER( homelab_state,homelab)
/* Machine driver */
MACHINE_CONFIG_START(homelab_state::homelab)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(8'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &homelab_state::homelab2_mem);
- m_maincpu->set_vblank_int("screen", FUNC(homelab_state::homelab_frame));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(8'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(homelab2_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", homelab_state, homelab_frame)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(40*8, 25*8);
- screen.set_visarea(0, 40*8-1, 0, 25*8-1);
- screen.set_screen_update(FUNC(homelab_state::screen_update_homelab2));
- screen.set_palette("palette");
-
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(40*8, 25*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 25*8-1)
MCFG_VIDEO_START_OVERRIDE(homelab_state,homelab2)
+ MCFG_SCREEN_UPDATE_DRIVER(homelab_state, screen_update_homelab2)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, "gfxdecode", "palette", gfx_homelab);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_homelab)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
- WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.25);
- CASSETTE(config, m_cass);
- MCFG_QUICKLOAD_ADD("quickload", homelab_state, homelab, "htp", attotime::from_seconds(2))
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_QUICKLOAD_ADD("quickload", homelab_state, homelab, "htp", 2)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(homelab_state::homelab3)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000) / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &homelab_state::homelab3_mem);
- m_maincpu->set_addrmap(AS_IO, &homelab_state::homelab3_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(homelab3_mem)
+ MCFG_DEVICE_IO_MAP(homelab3_io)
MCFG_MACHINE_RESET_OVERRIDE(homelab_state,homelab3)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0, 64*8-1, 0, 32*8-1);
- screen.set_screen_update(FUNC(homelab_state::screen_update_homelab3));
- screen.set_palette("palette");
-
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
MCFG_VIDEO_START_OVERRIDE(homelab_state,homelab3)
+ MCFG_SCREEN_UPDATE_DRIVER(homelab_state, screen_update_homelab3)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, "gfxdecode", "palette", gfx_homelab);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_homelab)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
- WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.25);
- CASSETTE(config, m_cass);
- MCFG_QUICKLOAD_ADD("quickload", homelab_state, homelab, "htp", attotime::from_seconds(2))
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_QUICKLOAD_ADD("quickload", homelab_state, homelab, "htp", 2)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(homelab_state::brailab4)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000) / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &homelab_state::brailab4_mem);
- m_maincpu->set_addrmap(AS_IO, &homelab_state::brailab4_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(brailab4_mem)
+ MCFG_DEVICE_IO_MAP(brailab4_io)
MCFG_MACHINE_RESET_OVERRIDE(homelab_state,brailab4)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0, 64*8-1, 0, 32*8-1);
- screen.set_screen_update(FUNC(homelab_state::screen_update_homelab3));
- screen.set_palette("palette");
-
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
MCFG_VIDEO_START_OVERRIDE(homelab_state,brailab4)
+ MCFG_SCREEN_UPDATE_DRIVER(homelab_state, screen_update_homelab3)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, "gfxdecode", "palette", gfx_homelab);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_homelab)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
- WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.25);
- MEA8000(config, "mea8000", 3840000).add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD("mea8000", MEA8000, 3840000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
- CASSETTE(config, m_cass);
- MCFG_QUICKLOAD_ADD("quickload", homelab_state, homelab, "htp", attotime::from_seconds(18))
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_QUICKLOAD_ADD("quickload", homelab_state, homelab, "htp", 18)
MACHINE_CONFIG_END
void homelab_state::init_brailab4()
diff --git a/src/mame/drivers/homerun.cpp b/src/mame/drivers/homerun.cpp
index 9ced0870472..83128368eaa 100644
--- a/src/mame/drivers/homerun.cpp
+++ b/src/mame/drivers/homerun.cpp
@@ -66,7 +66,7 @@ Notes:
***************************************************************************/
-void homerun_state::control_w(u8 data)
+WRITE8_MEMBER(homerun_state::homerun_control_w)
{
// d0, d1: somehow related to port $40?
@@ -95,7 +95,7 @@ void homerun_state::control_w(u8 data)
m_control = data;
}
-void homerun_state::d7756_sample_w(u8 data)
+WRITE8_MEMBER(homerun_state::homerun_d7756_sample_w)
{
m_sample = data;
@@ -103,21 +103,21 @@ void homerun_state::d7756_sample_w(u8 data)
m_d7756->port_w(data);
}
-void homerun_state::mem_map(address_map &map)
+void homerun_state::homerun_memmap(address_map &map)
{
map(0x0000, 0x3fff).rom();
- map(0x4000, 0x7fff).bankr("mainbank");
- map(0x8000, 0x9fff).ram().w(FUNC(homerun_state::videoram_w)).share("videoram");
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0x9fff).ram().w(FUNC(homerun_state::homerun_videoram_w)).share("videoram");
map(0xa000, 0xa0ff).ram().share("spriteram");
- map(0xb000, 0xb03f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xb000, 0xb03f).ram().w(FUNC(homerun_state::homerun_color_w)).share("colorram");
map(0xc000, 0xdfff).ram();
}
-void homerun_state::io_map(address_map &map)
+void homerun_state::homerun_iomap(address_map &map)
{
map.global_mask(0xff);
- map(0x10, 0x10).w(FUNC(homerun_state::d7756_sample_w));
- map(0x20, 0x20).w(FUNC(homerun_state::control_w));
+ map(0x10, 0x10).w(FUNC(homerun_state::homerun_d7756_sample_w));
+ map(0x20, 0x20).w(FUNC(homerun_state::homerun_control_w));
map(0x30, 0x33).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0x40, 0x40).portr("IN0");
map(0x50, 0x50).portr("IN2");
@@ -152,7 +152,7 @@ CUSTOM_INPUT_MEMBER(homerun_state::ganjaja_hopper_status_r)
static INPUT_PORTS_START( homerun )
PORT_START("IN0")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, homerun_state, sprite0_r, nullptr)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, homerun_state, homerun_sprite0_r, nullptr)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, homerun_state, homerun_d7756_busy_r, nullptr)
PORT_BIT( 0x37, IP_ACTIVE_HIGH, IPT_UNKNOWN )
@@ -189,7 +189,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( dynashot )
PORT_START("IN0")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, homerun_state, sprite0_r, nullptr)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, homerun_state, homerun_sprite0_r, nullptr)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) // doesn't have d7756
PORT_BIT( 0x37, IP_ACTIVE_HIGH, IPT_UNKNOWN )
@@ -227,7 +227,7 @@ static INPUT_PORTS_START( ganjaja )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // ?
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, homerun_state, sprite0_r, nullptr)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, homerun_state, homerun_sprite0_r, nullptr)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, homerun_state, ganjaja_d7756_busy_r, nullptr)
PORT_BIT( 0x36, IP_ACTIVE_HIGH, IPT_UNKNOWN )
@@ -301,8 +301,8 @@ static const gfx_layout gfxlayout =
RGN_FRAC(1,1),
2,
{ 8*8,0},
- { STEP8(0,1) },
- { STEP8(0,8) },
+ { 0, 1, 2, 3, 4, 5, 6, 7},
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8},
8*8*2
};
@@ -311,15 +311,15 @@ static const gfx_layout spritelayout =
16,16,
RGN_FRAC(1,1),
2,
- { 8*8,0 },
- { STEP8(0,1), STEP8(8*8*2,1) },
- { STEP8(0,8), STEP8(8*8*2*2,8) },
+ { 8*8,0},
+ { 0, 1, 2, 3, 4, 5, 6, 7,0+8*8*2,1+8*8*2,2+8*8*2,3+8*8*2,4+8*8*2,5+8*8*2,6+8*8*2,7+8*8*2},
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 0*8+2*8*8*2,1*8+2*8*8*2,2*8+2*8*8*2,3*8+2*8*8*2,4*8+2*8*8*2,5*8+2*8*8*2,6*8+2*8*8*2,7*8+2*8*8*2},
8*8*2*4
};
static GFXDECODE_START( gfx_homerun )
- GFXDECODE_ENTRY( "gfx1", 0, gfxlayout, 0, 16 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfxlayout, 0, 16 )
+ GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 16 )
GFXDECODE_END
@@ -327,19 +327,23 @@ GFXDECODE_END
void homerun_state::machine_start()
{
- u8 *ROM = memregion("maincpu")->base();
+ uint8_t *ROM = memregion("maincpu")->base();
- m_mainbank->configure_entries(0, 8, &ROM[0x00000], 0x4000);
+ membank("bank1")->configure_entry(0, &ROM[0x00000]);
+ membank("bank1")->configure_entries(1, 7, &ROM[0x10000], 0x4000);
save_item(NAME(m_control));
save_item(NAME(m_sample));
+ save_item(NAME(m_gfx_ctrl));
+ save_item(NAME(m_scrolly));
+ save_item(NAME(m_scrollx));
}
void homerun_state::machine_reset()
{
- control_w(0);
- d7756_sample_w(0);
- banking_w(0);
+ m_control = 0;
+ m_sample = 0;
+ m_gfx_ctrl = 0;
m_scrolly = 0;
m_scrollx = 0;
}
@@ -350,30 +354,30 @@ void homerun_state::dynashot(machine_config &config)
{
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(20'000'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &homerun_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &homerun_state::io_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &homerun_state::homerun_memmap);
+ m_maincpu->set_addrmap(AS_IO, &homerun_state::homerun_iomap);
m_maincpu->set_vblank_int("screen", FUNC(homerun_state::irq0_line_hold));
i8255_device &ppi(I8255A(config, "ppi8255"));
- ppi.out_pa_callback().set(FUNC(homerun_state::scrollhi_w));
- ppi.out_pb_callback().set(FUNC(homerun_state::scrolly_w));
- ppi.out_pc_callback().set(FUNC(homerun_state::scrollx_w));
+ ppi.out_pa_callback().set(FUNC(homerun_state::homerun_scrollhi_w));
+ ppi.out_pb_callback().set(FUNC(homerun_state::homerun_scrolly_w));
+ ppi.out_pc_callback().set(FUNC(homerun_state::homerun_scrollx_w));
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(XTAL(20'000'000)/4,328,0,256,253,0,240);
- m_screen->set_screen_update(FUNC(homerun_state::screen_update));
+ m_screen->set_screen_update(FUNC(homerun_state::screen_update_homerun));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_homerun);
- PALETTE(config, m_palette).set_format(1, &homerun_state::homerun_RGB332, 16*4);
+ PALETTE(config, m_palette).set_entries(16*4);
/* sound hardware */
SPEAKER(config, "mono").front_center();
ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(20'000'000)/8));
ymsnd.port_a_read_callback().set_ioport("DSW");
- ymsnd.port_b_write_callback().set(FUNC(homerun_state::banking_w));
+ ymsnd.port_b_write_callback().set(FUNC(homerun_state::homerun_banking_w));
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.50);
}
@@ -408,8 +412,9 @@ void homerun_state::ganjaja(machine_config &config)
/**************************************************************************/
ROM_START( homerun )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD( "homerun.ic43", 0x00000, 0x20000, CRC(e759e476) SHA1(ad4f356ff26209033320a3e6353e4d4d9beb59c1) )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "homerun.ic43", 0x00000, 0x04000, CRC(e759e476) SHA1(ad4f356ff26209033320a3e6353e4d4d9beb59c1) )
+ ROM_CONTINUE( 0x10000, 0x1c000)
ROM_REGION( 0x10000, "gfx1", 0 )
ROM_LOAD( "homerun.ic60", 0x00000, 0x10000, CRC(69a720d1) SHA1(0f0a4877578f358e9e829ece8c31e23f01adcf83) )
@@ -422,8 +427,9 @@ ROM_START( homerun )
ROM_END
ROM_START( nhomerun )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD( "1.ic43", 0x00000, 0x20000, CRC(aed96d6d) SHA1(5cb3932f4cfa3f6c0134ac20a1747c562db31a65) )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "1.ic43", 0x00000, 0x04000, CRC(aed96d6d) SHA1(5cb3932f4cfa3f6c0134ac20a1747c562db31a65) )
+ ROM_CONTINUE( 0x10000, 0x1c000)
ROM_REGION( 0x10000, "gfx1", 0 )
ROM_LOAD( "3.ic60", 0x00000, 0x10000, CRC(69a720d1) SHA1(0f0a4877578f358e9e829ece8c31e23f01adcf83) )
@@ -436,8 +442,9 @@ ROM_START( nhomerun )
ROM_END
ROM_START( dynashot )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD( "1.ic43", 0x00000, 0x20000, CRC(bf3c9586) SHA1(439effbda305f5fa265e5897c81dc1447e5d867d) )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "1.ic43", 0x00000, 0x04000, CRC(bf3c9586) SHA1(439effbda305f5fa265e5897c81dc1447e5d867d) )
+ ROM_CONTINUE( 0x10000, 0x1c000)
ROM_REGION( 0x10000, "gfx1", 0 )
ROM_LOAD( "3.ic60", 0x00000, 0x10000, CRC(77d6a608) SHA1(a31ff343a5d4d6f20301c030ecc2e252149bcf9d) )
@@ -448,8 +455,9 @@ ROM_END
ROM_START( ganjaja )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD( "1.ic43", 0x00000, 0x20000, CRC(dad57543) SHA1(dbd8b5cee33756ee5e3c41bf84c0f7141d3466dc) )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "1.ic43", 0x00000, 0x04000, CRC(dad57543) SHA1(dbd8b5cee33756ee5e3c41bf84c0f7141d3466dc) )
+ ROM_CONTINUE( 0x10000, 0x1c000)
ROM_REGION( 0x10000, "gfx1", 0 )
ROM_LOAD( "ic60", 0x00000, 0x10000, CRC(855f6b28) SHA1(386411e88cf9bed54fe2073f0828d579cb1d04ee) )
diff --git a/src/mame/drivers/homez80.cpp b/src/mame/drivers/homez80.cpp
index afe9586e22d..b5dfb30b1dd 100644
--- a/src/mame/drivers/homez80.cpp
+++ b/src/mame/drivers/homez80.cpp
@@ -287,26 +287,25 @@ INTERRUPT_GEN_MEMBER(homez80_state::homez80_interrupt)
m_irq ^= 1;
}
-void homez80_state::homez80(machine_config &config)
-{
+MACHINE_CONFIG_START(homez80_state::homez80)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(8'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &homez80_state::homez80_mem);
- m_maincpu->set_addrmap(AS_IO, &homez80_state::homez80_io);
- m_maincpu->set_periodic_int(FUNC(homez80_state::homez80_interrupt), attotime::from_hz(50));
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(8'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(homez80_mem)
+ MCFG_DEVICE_IO_MAP(homez80_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(homez80_state, homez80_interrupt, 50)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(homez80_state::screen_update));
- screen.set_size(344, 32*8);
- screen.set_visarea(0, 344-1, 0, 32*8-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(homez80_state, screen_update)
+ MCFG_SCREEN_SIZE(344, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 344-1, 0, 32*8-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
- GFXDECODE(config, "gfxdecode", "palette", gfx_homez80);
-}
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_homez80)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( homez80 )
diff --git a/src/mame/drivers/horizon.cpp b/src/mame/drivers/horizon.cpp
index b34eabc09a6..80dd8fd3967 100644
--- a/src/mame/drivers/horizon.cpp
+++ b/src/mame/drivers/horizon.cpp
@@ -48,7 +48,6 @@ involves replacing the XTAL and reconnecting one jumper.
#define I8251_R_TAG "4a"
#define RS232_A_TAG "rs232a"
#define RS232_B_TAG "rs232b"
-#define S100_TAG "s100"
class horizon_state : public driver_device
{
@@ -58,7 +57,6 @@ public:
, m_maincpu(*this, Z80_TAG)
, m_usart_l(*this, I8251_L_TAG)
, m_usart_r(*this, I8251_R_TAG)
- , m_s100(*this, S100_TAG)
{ }
void horizon(machine_config &config);
@@ -74,7 +72,6 @@ private:
required_device<cpu_device> m_maincpu;
required_device<i8251_device> m_usart_l;
required_device<i8251_device> m_usart_r;
- required_device<s100_bus_device> m_s100;
};
@@ -179,15 +176,14 @@ static void horizon_s100_cards(device_slot_interface &device)
//**************************************************************************
//-------------------------------------------------
-// machine_config( horizon )
+// MACHINE_CONFIG( horizon )
//-------------------------------------------------
-void horizon_state::horizon(machine_config &config)
-{
+MACHINE_CONFIG_START(horizon_state::horizon)
// basic machine hardware
- Z80(config, m_maincpu, XTAL(8'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &horizon_state::horizon_mem);
- m_maincpu->set_addrmap(AS_IO, &horizon_state::horizon_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(8'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(horizon_mem)
+ MCFG_DEVICE_IO_MAP(horizon_io)
// devices
I8251(config, m_usart_l, 0);
@@ -210,31 +206,33 @@ void horizon_state::horizon(machine_config &config)
rs232b.dsr_handler().set(m_usart_r, FUNC(i8251_device::write_dsr));
// S-100
- S100_BUS(config, m_s100, XTAL(8'000'000) / 4);
- m_s100->rdy().set_inputline(m_maincpu, Z80_INPUT_LINE_BOGUSWAIT);
- //S100_SLOT(config, S100_TAG":1", horizon_s100_cards, nullptr, nullptr); // CPU
- S100_SLOT(config, "s100:2", horizon_s100_cards, nullptr); // RAM
- S100_SLOT(config, "s100:3", horizon_s100_cards, "mdsad"); // MDS
- S100_SLOT(config, "s100:4", horizon_s100_cards, nullptr); // FPB
- S100_SLOT(config, "s100:5", horizon_s100_cards, nullptr);
- S100_SLOT(config, "s100:6", horizon_s100_cards, nullptr);
- S100_SLOT(config, "s100:7", horizon_s100_cards, nullptr);
- S100_SLOT(config, "s100:8", horizon_s100_cards, nullptr);
- S100_SLOT(config, "s100:9", horizon_s100_cards, nullptr);
- S100_SLOT(config, "s100:10", horizon_s100_cards, nullptr);
- S100_SLOT(config, "s100:11", horizon_s100_cards, nullptr);
- S100_SLOT(config, "s100:12", horizon_s100_cards, nullptr);
+ MCFG_DEVICE_ADD("s100", S100_BUS, XTAL(8'000'000) / 4)
+ MCFG_S100_RDY_CALLBACK(INPUTLINE(Z80_TAG, Z80_INPUT_LINE_BOGUSWAIT))
+ //MCFG_S100_SLOT_ADD("s100:1", horizon_s100_cards, nullptr, nullptr) // CPU
+ MCFG_S100_SLOT_ADD("s100:2", horizon_s100_cards, nullptr) // RAM
+ MCFG_S100_SLOT_ADD("s100:3", horizon_s100_cards, "mdsad") // MDS
+ MCFG_S100_SLOT_ADD("s100:4", horizon_s100_cards, nullptr) // FPB
+ MCFG_S100_SLOT_ADD("s100:5", horizon_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD("s100:6", horizon_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD("s100:7", horizon_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD("s100:8", horizon_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD("s100:9", horizon_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD("s100:10", horizon_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD("s100:11", horizon_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD("s100:12", horizon_s100_cards, nullptr)
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("horizon");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "horizon")
+MACHINE_CONFIG_END
-void horizon_state::horizon2mhz(machine_config &config)
-{
+MACHINE_CONFIG_START(horizon_state::horizon2mhz)
horizon(config);
- m_maincpu->set_clock(XTAL(4'000'000) / 2);
- m_s100->set_clock(XTAL(4'000'000) / 2);
-}
+ MCFG_DEVICE_MODIFY("z80")
+ MCFG_DEVICE_CLOCK(XTAL(4'000'000) / 2)
+
+ MCFG_DEVICE_MODIFY("s100")
+ MCFG_DEVICE_CLOCK(XTAL(4'000'000) / 2)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/hornet.cpp b/src/mame/drivers/hornet.cpp
index 9416abc126b..115a1b4a689 100644
--- a/src/mame/drivers/hornet.cpp
+++ b/src/mame/drivers/hornet.cpp
@@ -1064,8 +1064,8 @@ double hornet_state::adc12138_input_callback(uint8_t input)
return (double)(value) / 2047.0;
}
-void hornet_state::hornet(machine_config &config)
-{
+MACHINE_CONFIG_START(hornet_state::hornet)
+
/* basic machine hardware */
PPC403GA(config, m_maincpu, XTAL(64'000'000) / 2); /* PowerPC 403GA 32MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &hornet_state::hornet_map);
@@ -1125,10 +1125,9 @@ void hornet_state::hornet(machine_config &config)
KONPPC(config, m_konppc, 0);
m_konppc->set_num_boards(1);
m_konppc->set_cbboard_type(konppc_device::CGBOARD_TYPE_HORNET);
-}
+MACHINE_CONFIG_END
-void hornet_state::hornet_2board(machine_config &config)
-{
+MACHINE_CONFIG_START(hornet_state::hornet_2board)
hornet(config);
ADSP21062(config, m_dsp2, XTAL(36'000'000));
@@ -1171,18 +1170,16 @@ void hornet_state::hornet_2board(machine_config &config)
rscreen.set_screen_update(FUNC(hornet_state::screen_update_rscreen));
m_konppc->set_num_boards(2);
-}
+MACHINE_CONFIG_END
-void hornet_state::terabrst(machine_config &config)
-{
+MACHINE_CONFIG_START(hornet_state::terabrst)
hornet(config);
M68000(config, m_gn680, XTAL(32'000'000) / 2); /* 16MHz */
m_gn680->set_addrmap(AS_PROGRAM, &hornet_state::gn680_memmap);
-}
+MACHINE_CONFIG_END
-void hornet_state::hornet_2board_v2(machine_config &config)
-{
+MACHINE_CONFIG_START(hornet_state::hornet_2board_v2)
hornet_2board(config);
VOODOO_2(config.replace(), m_voodoo[0], STD_VOODOO_2_CLOCK);
@@ -1198,7 +1195,7 @@ void hornet_state::hornet_2board_v2(machine_config &config)
m_voodoo[1]->set_screen_tag("rscreen");
m_voodoo[1]->set_cpu_tag("dsp2"); // ??
m_voodoo[1]->vblank_callback().set(FUNC(hornet_state::voodoo_vblank_1));
-}
+MACHINE_CONFIG_END
void hornet_state::sscope2(machine_config &config)
{
diff --git a/src/mame/drivers/hotblock.cpp b/src/mame/drivers/hotblock.cpp
index c053f266313..7c63d22dc6b 100644
--- a/src/mame/drivers/hotblock.cpp
+++ b/src/mame/drivers/hotblock.cpp
@@ -207,21 +207,21 @@ static INPUT_PORTS_START( hotblock )
INPUT_PORTS_END
-void hotblock_state::hotblock(machine_config &config)
-{
+MACHINE_CONFIG_START(hotblock_state::hotblock)
+
/* basic machine hardware */
- I8088(config, m_maincpu, 24_MHz_XTAL / 3); // Unknown clock
- m_maincpu->set_addrmap(AS_PROGRAM, &hotblock_state::hotblock_map);
- m_maincpu->set_addrmap(AS_IO, &hotblock_state::hotblock_io);
+ MCFG_DEVICE_ADD("maincpu", I8088, 24_MHz_XTAL / 3) // Unknown clock
+ MCFG_DEVICE_PROGRAM_MAP(hotblock_map)
+ MCFG_DEVICE_IO_MAP(hotblock_io)
// I2CMEM(config, m_i2cmem, 0).set_page_size(16).set_data_size(0x200); // 24C04
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(24_MHz_XTAL / 3, 512, 0, 320, 312, 0, 200); // 15.625 kHz horizontal???
- screen.set_screen_update(FUNC(hotblock_state::screen_update));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI); // right?
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(24_MHz_XTAL / 3, 512, 0, 320, 312, 0, 200) // 15.625 kHz horizontal???
+ MCFG_SCREEN_UPDATE_DRIVER(hotblock_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) // right?
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x200/2);
@@ -232,7 +232,7 @@ void hotblock_state::hotblock(machine_config &config)
aysnd.port_a_read_callback().set_ioport("P1");
aysnd.port_b_read_callback().set_ioport("P2");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
ROM_START( hotblock )
ROM_REGION( 0x100000, "maincpu", 0 )
diff --git a/src/mame/drivers/hotstuff.cpp b/src/mame/drivers/hotstuff.cpp
index 2bcec1734c5..6bde0ec44ac 100644
--- a/src/mame/drivers/hotstuff.cpp
+++ b/src/mame/drivers/hotstuff.cpp
@@ -88,11 +88,11 @@ void hotstuff_state::hotstuff_map(address_map &map)
map(0x600000, 0x600003).rw("scc1", FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w));
map(0x620000, 0x620003).rw("scc2", FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w));
map(0x680000, 0x680001).lrw8("rtc_rw",
- [this](offs_t offset) {
- return m_rtc->read(offset^1);
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_rtc->read(space, offset^1, mem_mask);
},
- [this](offs_t offset, u8 data) {
- m_rtc->write(offset^1, data);
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_rtc->write(space, offset^1, data, mem_mask);
});
map(0x980000, 0x9bffff).ram().share("bitmapram");
@@ -101,19 +101,19 @@ void hotstuff_state::hotstuff_map(address_map &map)
static INPUT_PORTS_START( hotstuff )
INPUT_PORTS_END
-void hotstuff_state::hotstuff(machine_config &config)
-{
- M68000(config, m_maincpu, 16000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &hotstuff_state::hotstuff_map);
+MACHINE_CONFIG_START(hotstuff_state::hotstuff)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 16000000)
+ MCFG_DEVICE_PROGRAM_MAP(hotstuff_map)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(128*8, 64*8);
- screen.set_visarea((0x10*4)+8, 101*8-1, 0*8, 33*8-1);
- screen.set_screen_update(FUNC(hotstuff_state::screen_update_hotstuff));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(128*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA((0x10*4)+8, 101*8-1, 0*8, 33*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(hotstuff_state, screen_update_hotstuff)
- PALETTE(config, "palette").set_entries(0x200);
+ MCFG_PALETTE_ADD("palette", 0x200)
scc8530_device& scc1(SCC8530N(config, "scc1", 4915200));
scc1.out_int_callback().set_inputline(m_maincpu, M68K_IRQ_4);
@@ -123,7 +123,7 @@ void hotstuff_state::hotstuff(machine_config &config)
MC146818(config, m_rtc, XTAL(32'768));
m_rtc->irq().set_inputline("maincpu", M68K_IRQ_1);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/hp16500.cpp b/src/mame/drivers/hp16500.cpp
index 4ed4e5bd469..f3bc942d289 100644
--- a/src/mame/drivers/hp16500.cpp
+++ b/src/mame/drivers/hp16500.cpp
@@ -413,15 +413,14 @@ uint32_t hp16500_state::screen_update_hp16500(screen_device &screen, bitmap_rgb3
return 0;
}
-void hp16500_state::hp1650(machine_config &config)
-{
+MACHINE_CONFIG_START(hp16500_state::hp1650)
/* basic machine hardware */
- M68000(config, m_maincpu, 10000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &hp16500_state::hp1650_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
+ MCFG_DEVICE_PROGRAM_MAP(hp1650_map)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(25000000, 0x330, 0, 0x250, 0x198, 0, 0x180);
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(25000000, 0x330, 0, 0x250, 0x198, 0, 0x180 )
+ MCFG_SCREEN_UPDATE_DEVICE( "crtc", mc6845_device, screen_update )
mc6845_device &crtc(MC6845(config, "crtc", 25000000/9));
crtc.set_screen("screen");
@@ -430,21 +429,20 @@ void hp16500_state::hp1650(machine_config &config)
crtc.set_update_row_callback(FUNC(hp16500_state::crtc_update_row_1650), this);
crtc.out_vsync_callback().set(FUNC(hp16500_state::vsync_changed));
- MC2661(config, "epci", 5000000);
+ MCFG_DEVICE_ADD("epci", MC2661, 5000000)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
-}
+MACHINE_CONFIG_END
-void hp16500_state::hp1651(machine_config &config)
-{
+MACHINE_CONFIG_START(hp16500_state::hp1651)
/* basic machine hardware */
- M68000(config, m_maincpu, 10000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &hp16500_state::hp1651_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
+ MCFG_DEVICE_PROGRAM_MAP(hp1651_map)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(25000000, 0x330, 0, 0x250, 0x198, 0, 0x180);
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(25000000, 0x330, 0, 0x250, 0x198, 0, 0x180 )
+ MCFG_SCREEN_UPDATE_DEVICE( "crtc", mc6845_device, screen_update )
mc6845_device &crtc(MC6845(config, "crtc", 25000000/9));
crtc.set_screen("screen");
@@ -453,21 +451,20 @@ void hp16500_state::hp1651(machine_config &config)
crtc.set_update_row_callback(FUNC(hp16500_state::crtc_update_row_1650), this);
crtc.out_vsync_callback().set(FUNC(hp16500_state::vsync_changed));
- MC2661(config, "epci", 5000000);
+ MCFG_DEVICE_ADD("epci", MC2661, 5000000)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
-}
+MACHINE_CONFIG_END
-void hp16500_state::hp16500a(machine_config &config)
-{
+MACHINE_CONFIG_START(hp16500_state::hp16500a)
/* basic machine hardware */
- M68000(config, m_maincpu, 10000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &hp16500_state::hp16500a_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
+ MCFG_DEVICE_PROGRAM_MAP(hp16500a_map)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(25000000, 0x320, 0, 0x240, 0x19c, 0, 0x170);
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(25000000, 0x320, 0, 0x240, 0x19c, 0, 0x170 )
+ MCFG_SCREEN_UPDATE_DEVICE( "crtc", mc6845_device, screen_update )
mc6845_device &crtc(MC6845(config, "crtc", 25000000/9));
crtc.set_screen("screen");
@@ -478,7 +475,7 @@ void hp16500_state::hp16500a(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
-}
+MACHINE_CONFIG_END
void hp16500_state::hp16500b(machine_config &config)
{
diff --git a/src/mame/drivers/hp2100.cpp b/src/mame/drivers/hp2100.cpp
index 2ea6920c822..4a4457f187e 100644
--- a/src/mame/drivers/hp2100.cpp
+++ b/src/mame/drivers/hp2100.cpp
@@ -249,9 +249,8 @@ private:
static INPUT_PORTS_START( hp2100 )
INPUT_PORTS_END
-void hp2100_state::hp2100(machine_config &config)
-{
-}
+MACHINE_CONFIG_START(hp2100_state::hp2100)
+MACHINE_CONFIG_END
ROM_START( hp2100 )
ROM_REGION( 0x0400, "maincpu", 0 )
diff --git a/src/mame/drivers/hp2640.cpp b/src/mame/drivers/hp2640.cpp
index ef357b12e3e..adf45587cff 100644
--- a/src/mame/drivers/hp2640.cpp
+++ b/src/mame/drivers/hp2640.cpp
@@ -62,7 +62,6 @@
#include "machine/timer.h"
#include "bus/rs232/rs232.h"
#include "machine/ay31015.h"
-#include "machine/clock.h"
#include "sound/beep.h"
#include "emupal.h"
#include "speaker.h"
@@ -171,7 +170,6 @@ private:
required_device<timer_device> m_timer_cursor_blink_inh;
required_device<rs232_port_device> m_rs232;
required_device<ay51013_device> m_uart;
- required_device<clock_device> m_uart_clock;
required_device<beep_device> m_beep;
required_device<timer_device> m_timer_beep;
@@ -233,7 +231,6 @@ hp2645_state::hp2645_state(const machine_config &mconfig, device_type type, cons
m_timer_cursor_blink_inh(*this , "timer_cursor_blink_inh"),
m_rs232(*this , "rs232"),
m_uart(*this , "uart"),
- m_uart_clock(*this , "uart_clock"),
m_beep(*this , "beep"),
m_timer_beep(*this , "timer_beep"),
m_chargen(*this , "chargen%u" , 0)
@@ -265,7 +262,8 @@ void hp2645_state::machine_reset()
m_uart->write_cs(1);
m_uart->write_nb2(1);
m_async_control = 0;
- m_uart_clock->set_unscaled_clock(0);
+ m_uart->set_receiver_clock(0);
+ m_uart->set_transmitter_clock(0);
update_async_control(0x00);
m_rs232->write_dtr(0);
async_txd_w(0);
@@ -701,7 +699,8 @@ void hp2645_state::update_async_control(uint8_t new_control)
} else {
rxc_txc_freq = SYS_CLOCK.dvalue() / baud_rate_divisors[ new_rate_idx ];
}
- m_uart_clock->set_unscaled_clock(rxc_txc_freq);
+ m_uart->set_receiver_clock(rxc_txc_freq);
+ m_uart->set_transmitter_clock(rxc_txc_freq);
m_uart->write_tsb(new_rate_idx == 1);
LOG("ASYNC freq=%f\n" , rxc_txc_freq);
}
@@ -966,25 +965,24 @@ void hp2645_state::cpu_io_map(address_map &map)
map(0x00, 0xff).w(FUNC(hp2645_state::mode_byte_w));
}
-void hp2645_state::hp2645(machine_config &config)
-{
- I8080A(config, m_cpu, SYS_CLOCK / 2);
- m_cpu->set_addrmap(AS_PROGRAM, &hp2645_state::cpu_mem_map);
- m_cpu->set_addrmap(AS_IO, &hp2645_state::cpu_io_map);
- m_cpu->set_irq_acknowledge_callback(FUNC(hp2645_state::irq_callback));
+MACHINE_CONFIG_START(hp2645_state::hp2645)
+ MCFG_DEVICE_ADD("cpu" , I8080A , SYS_CLOCK / 2)
+ MCFG_DEVICE_PROGRAM_MAP(cpu_mem_map)
+ MCFG_DEVICE_IO_MAP(cpu_io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(hp2645_state , irq_callback)
- TIMER(config, m_timer_10ms).configure_generic(FUNC(hp2645_state::timer_10ms_exp));
- TIMER(config, m_timer_cursor_blink_inh).configure_generic(FUNC(hp2645_state::timer_cursor_blink_inh));
+ MCFG_TIMER_DRIVER_ADD("timer_10ms" , hp2645_state , timer_10ms_exp)
+ MCFG_TIMER_DRIVER_ADD("timer_cursor_blink_inh" , hp2645_state , timer_cursor_blink_inh)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER, rgb_t::white());
+ MCFG_SCREEN_ADD_MONOCHROME("screen" , RASTER , rgb_t::white())
// Actual pixel clock is half this value: 21.06 MHz
// We use the doubled value to be able to emulate the half-pixel shifting of the real hw
// Each real-world half pixel is a whole MAME pixel
- m_screen->set_raw(VIDEO_DOT_CLOCK * 2 ,
+ MCFG_SCREEN_RAW_PARAMS(VIDEO_DOT_CLOCK * 2 ,
VIDEO_TOT_COLS * VIDEO_CHAR_WIDTH * 2 , 0 , VIDEO_VIS_COLS * VIDEO_CHAR_WIDTH * 2 ,
- VIDEO_TOT_ROWS * VIDEO_CHAR_HEIGHT , 0 , VIDEO_VIS_ROWS * VIDEO_CHAR_HEIGHT);
- m_screen->set_screen_update(FUNC(hp2645_state::screen_update));
- TIMER(config, "scantimer").configure_scanline(FUNC(hp2645_state::scanline_timer), "screen", 0, 1);
+ VIDEO_TOT_ROWS * VIDEO_CHAR_HEIGHT , 0 , VIDEO_VIS_ROWS * VIDEO_CHAR_HEIGHT)
+ MCFG_SCREEN_UPDATE_DRIVER(hp2645_state , screen_update)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hp2645_state, scanline_timer, "screen", 0, 1)
PALETTE(config, m_palette, palette_device::MONOCHROME_HIGHLIGHT);
config.set_default_layout(layout_hp2640);
@@ -998,15 +996,12 @@ void hp2645_state::hp2645(machine_config &config)
m_uart->write_dav_callback().set(FUNC(hp2645_state::async_dav_w));
m_uart->set_auto_rdav(true);
- CLOCK(config, m_uart_clock, 19200 * 16);
- m_uart_clock->signal_handler().set(m_uart, FUNC(ay51013_device::write_rcp));
- m_uart_clock->signal_handler().append(m_uart, FUNC(ay51013_device::write_tcp));
-
// Beep
SPEAKER(config, "mono").front_center();
BEEP(config, m_beep, BEEP_FREQUENCY).add_route(ALL_OUTPUTS, "mono", 1.00);
- TIMER(config, m_timer_beep).configure_generic(FUNC(hp2645_state::timer_beep_exp));
-}
+ MCFG_TIMER_DRIVER_ADD("timer_beep" , hp2645_state , timer_beep_exp)
+
+MACHINE_CONFIG_END
ROM_START(hp2645)
ROM_REGION(0x5800 , "cpu" , 0)
diff --git a/src/mame/drivers/hp48.cpp b/src/mame/drivers/hp48.cpp
index da3f184b779..5288b93b638 100644
--- a/src/mame/drivers/hp48.cpp
+++ b/src/mame/drivers/hp48.cpp
@@ -1171,6 +1171,7 @@ void hp48_state::hp48_common(machine_config &config)
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}
diff --git a/src/mame/drivers/hp49gp.cpp b/src/mame/drivers/hp49gp.cpp
index 934a7f2a724..bd88261dcf0 100644
--- a/src/mame/drivers/hp49gp.cpp
+++ b/src/mame/drivers/hp49gp.cpp
@@ -283,19 +283,18 @@ void hp49gp_state::init_hp49gp()
lcd_spi_init();
}
-void hp49gp_state::hp49gp(machine_config &config)
-{
- ARM9(config, m_maincpu, 400000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &hp49gp_state::hp49gp_map);
+MACHINE_CONFIG_START(hp49gp_state::hp49gp)
+ MCFG_DEVICE_ADD("maincpu", ARM9, 400000000)
+ MCFG_DEVICE_PROGRAM_MAP(hp49gp_map)
- PALETTE(config, "palette").set_entries(32768);
+ MCFG_PALETTE_ADD("palette", 32768)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(160, 85);
- screen.set_visarea(0, 131 - 1, 0, 80 - 1);
- screen.set_screen_update("s3c2410", FUNC(s3c2410_device::screen_update));
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(160, 85)
+ MCFG_SCREEN_VISIBLE_AREA(0, 131 - 1, 0, 80 - 1)
+ MCFG_SCREEN_UPDATE_DEVICE("s3c2410", s3c2410_device, screen_update)
S3C2410(config, m_s3c2410, 12000000);
m_s3c2410->set_palette_tag("palette");
@@ -303,7 +302,7 @@ void hp49gp_state::hp49gp(machine_config &config)
m_s3c2410->gpio_port_r_callback().set(FUNC(hp49gp_state::s3c2410_gpio_port_r));
m_s3c2410->gpio_port_w_callback().set(FUNC(hp49gp_state::s3c2410_gpio_port_w));
m_s3c2410->set_lcd_flags(S3C24XX_INTERFACE_LCD_REVERSE);
-}
+MACHINE_CONFIG_END
static INPUT_PORTS_START( hp49gp )
PORT_START("ROW1")
diff --git a/src/mame/drivers/hp64k.cpp b/src/mame/drivers/hp64k.cpp
index 7dd4ce3f03a..f7ea1209530 100644
--- a/src/mame/drivers/hp64k.cpp
+++ b/src/mame/drivers/hp64k.cpp
@@ -430,7 +430,7 @@ void hp64k_state::machine_reset()
m_floppy0_wpt = false;
m_floppy1_wpt = false;
m_beeper->set_state(0);
- m_baud_rate->str_w((m_s5_sw->read() >> 1) & 0xf);
+ m_baud_rate->write_str((m_s5_sw->read() >> 1) & 0xf);
m_16x_clk = (m_rs232_sw->read() & 0x02) != 0;
m_loopback = false;
m_txd_state = true;
@@ -1372,46 +1372,46 @@ INPUT_PORTS_END
static void hp64k_floppies(device_slot_interface &device)
{
- device.option_add("525dd", FLOPPY_525_DD);
+ device.option_add("525dd" , FLOPPY_525_DD);
}
-void hp64k_state::hp64k(machine_config &config)
-{
- HP_5061_3011(config, m_cpu, 6250000);
+MACHINE_CONFIG_START(hp64k_state::hp64k)
+ HP_5061_3011(config , m_cpu , 6250000);
m_cpu->set_rw_cycles(6 , 6);
m_cpu->set_relative_mode(true);
- m_cpu->set_addrmap(AS_PROGRAM, &hp64k_state::cpu_mem_map);
- m_cpu->set_addrmap(AS_IO, &hp64k_state::cpu_io_map);
+ m_cpu->set_addrmap(AS_PROGRAM , &hp64k_state::cpu_mem_map);
+ m_cpu->set_addrmap(AS_IO , &hp64k_state::cpu_io_map);
m_cpu->set_irq_acknowledge_callback(FUNC(hp64k_state::hp64k_irq_callback));
// Actual keyboard refresh rate should be between 1 and 2 kHz
- TIMER(config, "kb_timer").configure_periodic(FUNC(hp64k_state::hp64k_kb_scan), attotime::from_hz(100));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("kb_timer", hp64k_state, hp64k_kb_scan, attotime::from_hz(100))
// Line sync timer. A line frequency of 50 Hz is assumed.
- TIMER(config, "linesync_timer").configure_periodic(FUNC(hp64k_state::hp64k_line_sync), attotime::from_hz(50));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("linesync_timer", hp64k_state, hp64k_line_sync, attotime::from_hz(50))
// Clock = 25 MHz / 9 * (112/114)
- I8275(config, m_crtc, 2729045);
- m_crtc->set_screen("screen");
- m_crtc->set_character_width(9);
- m_crtc->set_display_callback(FUNC(hp64k_state::crtc_display_pixels), this);
- m_crtc->drq_wr_callback().set(FUNC(hp64k_state::hp64k_crtc_drq_w));
- m_crtc->vrtc_wr_callback().set(FUNC(hp64k_state::hp64k_crtc_vrtc_w));
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_color(rgb_t::green());
- screen.set_screen_update("crtc", FUNC(i8275_device::screen_update));
- screen.set_refresh_hz(60);
- screen.set_size(720, 390);
- screen.set_visarea(0, 720-1, 0, 390-1);
+ MCFG_DEVICE_ADD("crtc", I8275, 2729045)
+ MCFG_VIDEO_SET_SCREEN("screen")
+ MCFG_I8275_CHARACTER_WIDTH(9)
+ MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(hp64k_state, crtc_display_pixels)
+ MCFG_I8275_DRQ_CALLBACK(WRITELINE(*this, hp64k_state, hp64k_crtc_drq_w))
+ MCFG_I8275_VRTC_CALLBACK(WRITELINE(*this, hp64k_state, hp64k_crtc_vrtc_w))
+
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", i8275_device, screen_update)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(720, 390)
+ MCFG_SCREEN_VISIBLE_AREA(0, 720-1, 0, 390-1)
PALETTE(config, m_palette, palette_device::MONOCHROME_HIGHLIGHT);
FD1791(config, m_fdc, 4_MHz_XTAL / 4);
m_fdc->set_force_ready(true); // should be able to get rid of this when fdc issue is fixed
m_fdc->intrq_wr_callback().set(FUNC(hp64k_state::hp64k_flp_intrq_w));
m_fdc->drq_wr_callback().set(FUNC(hp64k_state::hp64k_flp_drq_w));
- FLOPPY_CONNECTOR(config, "fdc:0", hp64k_floppies, "525dd", floppy_image_device::default_floppy_formats, true);
- FLOPPY_CONNECTOR(config, "fdc:1", hp64k_floppies, "525dd", floppy_image_device::default_floppy_formats, true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", hp64k_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_SLOT_FIXED(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", hp64k_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_SLOT_FIXED(true)
TTL74123(config, m_ss0, 0);
m_ss0->set_connection_type(TTL74123_NOT_GROUNDED_NO_DIODE);
@@ -1433,7 +1433,7 @@ void hp64k_state::hp64k(machine_config &config)
SPEAKER(config, "mono").front_center();
BEEP(config, m_beeper, 2500).add_route(ALL_OUTPUTS, "mono", 1.00);
- TIMER(config, m_beep_timer).configure_generic(FUNC(hp64k_state::hp64k_beeper_off));
+ MCFG_TIMER_DRIVER_ADD("beep_timer", hp64k_state, hp64k_beeper_off);
COM8116(config, m_baud_rate, 5.0688_MHz_XTAL);
m_baud_rate->fr_handler().set(FUNC(hp64k_state::hp64k_baud_clk_w));
@@ -1465,21 +1465,21 @@ void hp64k_state::hp64k(machine_config &config)
m_phi->signal_write_cb<phi_device::PHI_488_ATN>().set(IEEE488_TAG, FUNC(ieee488_device::host_atn_w));
m_phi->signal_write_cb<phi_device::PHI_488_REN>().set(IEEE488_TAG, FUNC(ieee488_device::host_ren_w));
- ieee488_device &ieee(IEEE488(config, IEEE488_TAG));
- ieee.eoi_callback().set(m_phi, FUNC(phi_device::eoi_w));
- ieee.dav_callback().set(m_phi, FUNC(phi_device::dav_w));
- ieee.nrfd_callback().set(m_phi, FUNC(phi_device::nrfd_w));
- ieee.ndac_callback().set(m_phi, FUNC(phi_device::ndac_w));
- ieee.ifc_callback().set(m_phi, FUNC(phi_device::ifc_w));
- ieee.srq_callback().set(m_phi, FUNC(phi_device::srq_w));
- ieee.atn_callback().set(m_phi, FUNC(phi_device::atn_w));
- ieee.ren_callback().set(m_phi, FUNC(phi_device::ren_w));
- ieee.dio_callback().set(m_phi, FUNC(phi_device::bus_dio_w));
- IEEE488_SLOT(config, "ieee_rem", 0, remote488_devices, nullptr);
-}
+ MCFG_IEEE488_BUS_ADD()
+ MCFG_IEEE488_EOI_CALLBACK(WRITELINE(m_phi, phi_device, eoi_w))
+ MCFG_IEEE488_DAV_CALLBACK(WRITELINE(m_phi, phi_device, dav_w))
+ MCFG_IEEE488_NRFD_CALLBACK(WRITELINE(m_phi, phi_device, nrfd_w))
+ MCFG_IEEE488_NDAC_CALLBACK(WRITELINE(m_phi, phi_device, ndac_w))
+ MCFG_IEEE488_IFC_CALLBACK(WRITELINE(m_phi, phi_device, ifc_w))
+ MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(m_phi, phi_device, srq_w))
+ MCFG_IEEE488_ATN_CALLBACK(WRITELINE(m_phi, phi_device, atn_w))
+ MCFG_IEEE488_REN_CALLBACK(WRITELINE(m_phi, phi_device, ren_w))
+ MCFG_IEEE488_DIO_CALLBACK(WRITE8(m_phi, phi_device , bus_dio_w))
+ MCFG_IEEE488_SLOT_ADD("ieee_rem" , 0 , remote488_devices , nullptr)
+MACHINE_CONFIG_END
ROM_START(hp64k)
- ROM_REGION(0x8000, "cpu" , ROMREGION_16BIT | ROMREGION_BE | ROMREGION_INVERT)
+ ROM_REGION(0x8000 , "cpu" , ROMREGION_16BIT | ROMREGION_BE | ROMREGION_INVERT)
ROM_LOAD16_BYTE("64100_80022.bin" , 0x0000 , 0x1000 , CRC(38b2aae5) SHA1(bfd0f126bfaf3724dc501979ad2d46afc41913aa))
ROM_LOAD16_BYTE("64100_80020.bin" , 0x0001 , 0x1000 , CRC(ac01b436) SHA1(be1e827ea1393a95abb02a52ab5cc35dc2cd96e4))
ROM_LOAD16_BYTE("64100_80023.bin" , 0x2000 , 0x1000 , CRC(6b4bc2ce) SHA1(00e6c58ccae9640dc81cb3e92db90a8c69b02a93))
diff --git a/src/mame/drivers/hp80.cpp b/src/mame/drivers/hp80.cpp
index af69dc4c11b..7f7dfb6ab54 100644
--- a/src/mame/drivers/hp80.cpp
+++ b/src/mame/drivers/hp80.cpp
@@ -1331,67 +1331,75 @@ void hp85_state::rombank_mem_map(address_map &map)
map(0x0000, 0x1fff).rom();
}
-void hp85_state::hp85(machine_config &config)
-{
- HP_CAPRICORN(config, m_cpu, MASTER_CLOCK / 16);
- m_cpu->set_addrmap(AS_PROGRAM, &hp85_state::cpu_mem_map);
- m_cpu->set_irq_acknowledge_callback(FUNC(hp85_state::irq_callback));
+MACHINE_CONFIG_START(hp85_state::hp85)
+ MCFG_DEVICE_ADD("cpu" , HP_CAPRICORN , MASTER_CLOCK / 16)
+ MCFG_DEVICE_PROGRAM_MAP(cpu_mem_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(hp85_state , irq_callback)
ADDRESS_MAP_BANK(config, "rombank").set_map(&hp85_state::rombank_mem_map).set_options(ENDIANNESS_LITTLE, 8, 21, HP80_OPTROM_SIZE);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MASTER_CLOCK / 2 , 312 , 0 , 256 , 256 , 0 , 192);
- m_screen->set_screen_update(FUNC(hp85_state::screen_update));
- m_screen->screen_vblank().set(FUNC(hp85_state::vblank_w));
+ MCFG_SCREEN_ADD("screen" , RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK / 2 , 312 , 0 , 256 , 256 , 0 , 192)
+ MCFG_SCREEN_UPDATE_DRIVER(hp85_state , screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, hp85_state, vblank_w))
PALETTE(config, m_palette, palette_device::MONOCHROME);
- TIMER(config, m_vm_timer).configure_generic(FUNC(hp85_state::vm_timer));
+ MCFG_TIMER_DRIVER_ADD("vm_timer", hp85_state, vm_timer)
// No idea at all about the actual keyboard scan frequency
- TIMER(config, "kb_timer").configure_periodic(FUNC(hp85_state::kb_scan), attotime::from_hz(100));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("kb_timer" , hp85_state , kb_scan , attotime::from_hz(100))
// Hw timers are updated at 1 kHz rate
- TIMER(config, "hw_timer").configure_periodic(FUNC(hp85_state::timer_update), attotime::from_hz(1000));
- TIMER(config, m_clk_busy_timer).configure_generic(FUNC(hp85_state::clk_busy_timer));
- TIMER(config, m_prt_busy_timer).configure_generic(FUNC(hp85_state::prt_busy_timer));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("hw_timer" , hp85_state , timer_update , attotime::from_hz(1000))
+ MCFG_TIMER_DRIVER_ADD("clk_busy_timer", hp85_state, clk_busy_timer)
+ MCFG_TIMER_DRIVER_ADD("prt_busy_timer", hp85_state, prt_busy_timer)
// Beeper
SPEAKER(config, "mono").front_center();
- DAC_1BIT(config, m_dac , 0).add_route(ALL_OUTPUTS, "mono", 0.5, AUTO_ALLOC_INPUT, 0);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- BEEP(config, m_beep, MASTER_CLOCK / 8192).add_route(ALL_OUTPUTS, "mono", 0.5, AUTO_ALLOC_INPUT, 0);
+ MCFG_DEVICE_ADD("dac" , DAC_1BIT , 0)
+ MCFG_MIXER_ROUTE(ALL_OUTPUTS , "mono" , 0.5 , 0)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0)
+ MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+ MCFG_DEVICE_ADD("beeper" , BEEP , MASTER_CLOCK / 8192)
+ MCFG_MIXER_ROUTE(ALL_OUTPUTS , "mono" , 0.5 , 0)
// Tape drive
- HP_1MA6(config, "tape", 0);
+ MCFG_DEVICE_ADD("tape" , HP_1MA6 , 0)
// Optional ROMs
- HP80_OPTROM_SLOT(config, m_rom_drawers[0]);
- HP80_OPTROM_SLOT(config, m_rom_drawers[1]);
- HP80_OPTROM_SLOT(config, m_rom_drawers[2]);
- HP80_OPTROM_SLOT(config, m_rom_drawers[3]);
- HP80_OPTROM_SLOT(config, m_rom_drawers[4]);
- HP80_OPTROM_SLOT(config, m_rom_drawers[5]);
+ MCFG_DEVICE_ADD("drawer1", HP80_OPTROM_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(hp80_optrom_slot_devices, NULL, false)
+ MCFG_DEVICE_ADD("drawer2", HP80_OPTROM_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(hp80_optrom_slot_devices, NULL, false)
+ MCFG_DEVICE_ADD("drawer3", HP80_OPTROM_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(hp80_optrom_slot_devices, NULL, false)
+ MCFG_DEVICE_ADD("drawer4", HP80_OPTROM_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(hp80_optrom_slot_devices, NULL, false)
+ MCFG_DEVICE_ADD("drawer5", HP80_OPTROM_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(hp80_optrom_slot_devices, NULL, false)
+ MCFG_DEVICE_ADD("drawer6", HP80_OPTROM_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(hp80_optrom_slot_devices, NULL, false)
// I/O slots
- HP80_IO_SLOT(config, m_io_slots[0]).set_slot_no(0);
- m_io_slots[0]->irl_cb().set(FUNC(hp85_state::irl_w));
- m_io_slots[0]->halt_cb().set(FUNC(hp85_state::halt_w));
- HP80_IO_SLOT(config, m_io_slots[1]).set_slot_no(1);
- m_io_slots[1]->irl_cb().set(FUNC(hp85_state::irl_w));
- m_io_slots[1]->halt_cb().set(FUNC(hp85_state::halt_w));
- HP80_IO_SLOT(config, m_io_slots[2]).set_slot_no(2);
- m_io_slots[2]->irl_cb().set(FUNC(hp85_state::irl_w));
- m_io_slots[2]->halt_cb().set(FUNC(hp85_state::halt_w));
- HP80_IO_SLOT(config, m_io_slots[3]).set_slot_no(3);
- m_io_slots[3]->irl_cb().set(FUNC(hp85_state::irl_w));
- m_io_slots[3]->halt_cb().set(FUNC(hp85_state::halt_w));
+ MCFG_HP80_IO_SLOT_ADD("slot1" , 0)
+ MCFG_HP80_IO_IRL_CB(WRITE8(*this, hp85_state , irl_w))
+ MCFG_HP80_IO_HALT_CB(WRITE8(*this, hp85_state , halt_w))
+ MCFG_HP80_IO_SLOT_ADD("slot2" , 1)
+ MCFG_HP80_IO_IRL_CB(WRITE8(*this, hp85_state , irl_w))
+ MCFG_HP80_IO_HALT_CB(WRITE8(*this, hp85_state , halt_w))
+ MCFG_HP80_IO_SLOT_ADD("slot3" , 2)
+ MCFG_HP80_IO_IRL_CB(WRITE8(*this, hp85_state , irl_w))
+ MCFG_HP80_IO_HALT_CB(WRITE8(*this, hp85_state , halt_w))
+ MCFG_HP80_IO_SLOT_ADD("slot4" , 3)
+ MCFG_HP80_IO_IRL_CB(WRITE8(*this, hp85_state , irl_w))
+ MCFG_HP80_IO_HALT_CB(WRITE8(*this, hp85_state , halt_w))
// Printer output
- BITBANGER(config, m_prt_graph_out, 0);
- BITBANGER(config, m_prt_alpha_out, 0);
+ MCFG_DEVICE_ADD("prt_graphic", BITBANGER, 0)
+ MCFG_DEVICE_ADD("prt_alpha", BITBANGER, 0)
- SOFTWARE_LIST(config, "optrom_list").set_original("hp85_rom");
-}
+ MCFG_SOFTWARE_LIST_ADD("optrom_list" , "hp85_rom")
+MACHINE_CONFIG_END
ROM_START(hp85)
ROM_REGION(0x6000 , "cpu" , 0)
diff --git a/src/mame/drivers/hp95lx.cpp b/src/mame/drivers/hp95lx.cpp
index 701f8b9c63d..ce39999461c 100644
--- a/src/mame/drivers/hp95lx.cpp
+++ b/src/mame/drivers/hp95lx.cpp
@@ -709,12 +709,11 @@ void hp95lx_state::hp95lx_io(address_map &map)
}
-void hp95lx_state::hp95lx(machine_config &config)
-{
- V20(config, m_maincpu, XTAL(5'370'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &hp95lx_state::hp95lx_map);
- m_maincpu->set_addrmap(AS_IO, &hp95lx_state::hp95lx_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(hp95lx_state::hp95lx)
+ MCFG_DEVICE_ADD("maincpu", V20, XTAL(5'370'000))
+ MCFG_DEVICE_PROGRAM_MAP(hp95lx_map)
+ MCFG_DEVICE_IO_MAP(hp95lx_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
ADDRESS_MAP_BANK(config, "bankdev_c000").set_map(&hp95lx_state::hp95lx_romdos).set_options(ENDIANNESS_LITTLE, 8, 32, 0x10000);
ADDRESS_MAP_BANK(config, "bankdev_d000").set_map(&hp95lx_state::hp95lx_romdos).set_options(ENDIANNESS_LITTLE, 8, 32, 0x10000);
@@ -733,30 +732,29 @@ void hp95lx_state::hp95lx(machine_config &config)
m_pic8259->out_int_callback().set_inputline(m_maincpu, 0);
ISA8(config, m_isabus, 0);
- m_isabus->set_memspace("maincpu", AS_PROGRAM);
- m_isabus->set_iospace("maincpu", AS_IO);
+ m_isabus->set_cputag("maincpu");
- ISA8_SLOT(config, "board0", 0, "isa", pc_isa8_cards, "com", true);
+ MCFG_DEVICE_ADD("board0", ISA8_SLOT, 0, "isa", pc_isa8_cards, "com", true)
- pc_kbdc_device &pc_kbdc(PC_KBDC(config, KBDC_TAG, 0));
- pc_kbdc.out_clock_cb().set(FUNC(hp95lx_state::keyboard_clock_w));
- pc_kbdc.out_data_cb().set(FUNC(hp95lx_state::keyboard_data_w));
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270).set_pc_kbdc_slot(&pc_kbdc);
+ MCFG_DEVICE_ADD(KBDC_TAG, PC_KBDC, 0)
+ MCFG_PC_KBDC_OUT_CLOCK_CB(WRITELINE(*this, hp95lx_state, keyboard_clock_w))
+ MCFG_PC_KBDC_OUT_DATA_CB(WRITELINE(*this, hp95lx_state, keyboard_data_w))
+ MCFG_PC_KBDC_SLOT_ADD(KBDC_TAG, "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270)
NVRAM(config, "nvram2", nvram_device::DEFAULT_ALL_0); // RAM
NVRAM(config, "nvram3", nvram_device::DEFAULT_ALL_0); // card slot
// XXX When the AC adapter is plugged in, the LCD refresh rate is 73.14 Hz.
// XXX When the AC adapter is not plugged in (ie, running off of batteries) the refresh rate is 56.8 Hz.
- SCREEN(config, m_screen, SCREEN_TYPE_LCD, rgb_t::white());
- m_screen->set_screen_update(FUNC(hp95lx_state::screen_update));
- m_screen->set_raw(XTAL(5'370'000) / 2, 300, 0, 240, 180, 0, 128);
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD_MONOCHROME("screen", LCD, rgb_t::white())
+ MCFG_SCREEN_UPDATE_DRIVER(hp95lx_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(5'370'000) / 2, 300, 0, 240, 180, 0, 128)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(hp95lx_state::hp95lx_palette), 2);
RAM(config, RAM_TAG).set_default_size("512K");
-}
+MACHINE_CONFIG_END
ROM_START( hp95lx )
diff --git a/src/mame/drivers/hp9825.cpp b/src/mame/drivers/hp9825.cpp
index 39c92bbe7cc..063387c8426 100644
--- a/src/mame/drivers/hp9825.cpp
+++ b/src/mame/drivers/hp9825.cpp
@@ -8,8 +8,8 @@
// **** Temporary header, will hopefully evolve into proper doc ****
//
// What's in:
-// - Emulation of 9825B and 9825T systems
-// - 12 kw (9825B) or 31kw (9825T) of RAM
+// - Emulation of 9825B system
+// - 12 kw of RAMs
// - 12 kw of system ROM
// - Keyboard (SHIFT LOCK & RESET not implemented)
// - Display & run light
@@ -17,23 +17,12 @@
// - Printer
// - Beeper
// - Internal expansion ROMs
-// - I/O expansion slots: 98032, 98034 & 98035 modules can be connected
-// - For 9825T: the so-called SKOAL mechanism that transparently overlays RAM & ROM
-// in the same address space
// What's not yet in:
// - External expansion ROMs
// - Configurable RAM size
+// - I/O expansion slots: 98034 & 98035 modules from hp9845 emulation can be used here, too
//
-// Thanks to Dyke Shaffer for publishing (on https://groups.io/g/VintHPcom)
-// the source code of 98217 mass memory ROM. The 98217.bin image was reconstructed
-// by re-assembling the source code (this is the reason why it's marked as
-// a BAD_DUMP). And thanks to Ansgar Kueckes for adapting his assembler to
-// handle HP9825 source files.
-// For what regards the 9825T, I'd like to thank again Dyke Shaffer for
-// publishing a lot of internal HP docs about the SKOAL card. I recovered the
-// content of SKOAL ROM from its printed & scanned dump.
-//
-// 9825A can also be emulated. At the moment I haven't all the necessary
+// 9825A & 9825T can also be emulated. At the moment I haven't all the necessary
// ROM dumps, though.
#include "emu.h"
@@ -47,10 +36,6 @@
#include "sound/beep.h"
#include "hp9825.lh"
-// Debugging
-#define VERBOSE 0
-#include "logmacro.h"
-
// CPU clock (generated by a trimmered RC oscillator)
constexpr unsigned MAIN_CLOCK = 6000000;
@@ -90,9 +75,6 @@ namespace {
}
}
-// +--------------+
-// | hp9825_state |
-// +--------------+
class hp9825_state : public driver_device
{
public:
@@ -115,16 +97,15 @@ public:
{
}
- void hp9825_base(machine_config &config);
+ void hp9825b(machine_config &config);
protected:
virtual void machine_start() override;
virtual void device_reset() override;
virtual void machine_reset() override;
- required_device<hp_09825_67907_cpu_device> m_cpu;
-
private:
+ required_device<hp_09825_67907_cpu_device> m_cpu;
required_device<hp98x5_io_sys_device> m_io_sys;
required_device<timer_device> m_cursor_timer;
required_device<hp9825_tape_device> m_tape;
@@ -157,6 +138,7 @@ private:
int m_slot_sc[ 3 ];
void cpu_io_map(address_map &map);
+ void cpu_mem_map(address_map &map);
DECLARE_READ16_MEMBER(kb_scancode_r);
DECLARE_WRITE16_MEMBER(disp_w);
@@ -240,6 +222,15 @@ void hp9825_state::cpu_io_map(address_map &map)
// TODO:
}
+void hp9825_state::cpu_mem_map(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000 , 0x2fff).rom();
+ map(0x3400 , 0x3bff).rom();
+ map(0x4000 , 0x4fff).rom();
+ map(0x5000 , 0x7fff).ram();
+}
+
READ16_MEMBER(hp9825_state::kb_scancode_r)
{
uint8_t res = m_scancode;
@@ -622,18 +613,18 @@ void hp9825_state::set_dmar_slot(unsigned slot , int state)
m_io_sys->set_dmar(uint8_t(sc) , state);
}
-void hp9825_state::hp9825_base(machine_config &config)
-{
+MACHINE_CONFIG_START(hp9825_state::hp9825b)
HP_09825_67907(config , m_cpu , MAIN_CLOCK);
// Just guessing... settings borrowed from hp9845
m_cpu->set_rw_cycles(6 , 6);
m_cpu->set_relative_mode(false);
+ m_cpu->set_addrmap(AS_PROGRAM , &hp9825_state::cpu_mem_map);
m_cpu->set_addrmap(AS_IO , &hp9825_state::cpu_io_map);
m_cpu->set_irq_acknowledge_callback("io_sys" , FUNC(hp98x5_io_sys_device::irq_callback));
m_cpu->pa_changed_cb().set(m_io_sys , FUNC(hp98x5_io_sys_device::pa_w));
// Needed when 98035 RTC module is connected or time advances at about 1/4 the correct speed (NP misses a lot of 1kHz interrupts)
- config.m_minimum_quantum = attotime::from_hz(5000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(5000));
HP98X5_IO_SYS(config , m_io_sys , 0);
m_io_sys->irl().set_inputline(m_cpu, HPHYBRID_IRL);
@@ -674,7 +665,7 @@ void hp9825_state::hp9825_base(machine_config &config)
}
config.set_default_layout(layout_hp9825);
-}
+MACHINE_CONFIG_END
#define IOP_MASK(x) BIT_MASK<ioport_value>((x))
@@ -828,283 +819,17 @@ static INPUT_PORTS_START(hp9825)
PORT_BIT(IOP_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) // Shift
INPUT_PORTS_END
-// +---------------+
-// | hp9825b_state |
-// +---------------+
-class hp9825b_state : public hp9825_state
-{
-public:
- hp9825b_state(const machine_config &mconfig, device_type type, const char *tag)
- : hp9825_state(mconfig , type , tag)
- {
- }
-
- void hp9825b(machine_config &config);
-
-private:
- void cpu_mem_map(address_map &map);
-};
-
-void hp9825b_state::hp9825b(machine_config &config)
-{
- hp9825_base(config);
- m_cpu->set_addrmap(AS_PROGRAM , &hp9825b_state::cpu_mem_map);
-}
-
-void hp9825b_state::cpu_mem_map(address_map &map)
-{
- map.unmap_value_low();
- map(0x0000 , 0x3bff).rom();
- map(0x4000 , 0x4fff).rom();
- map(0x5000 , 0x7fff).ram();
-}
-
-// +---------------+
-// | hp9825t_state |
-// +---------------+
-class hp9825t_state : public hp9825_state
-{
-public:
- hp9825t_state(const machine_config &mconfig, device_type type, const char *tag)
- : hp9825_state(mconfig , type , tag)
- , m_rom_region(*this , "rom")
- , m_skoalrom(*this , "skoalrom")
- {
- }
-
- void hp9825t(machine_config &config);
-
-protected:
- virtual void machine_start() override;
- virtual void device_reset() override;
-
-private:
- required_memory_region m_rom_region;
- required_memory_region m_skoalrom;
- std::unique_ptr<uint16_t[]> m_ram;
-
- uint8_t m_cycle_type;
-
- // SKOAL state
- bool m_skoalbit; // U53
- bool m_second_access; // U57-3
- bool m_mref; // U57-4
- bool m_ifetch_4400; // U57-5
- uint8_t m_special_opt; // U42
- uint16_t m_fetch_addr;
-
- void cpu_mem_map(address_map &map);
- DECLARE_READ16_MEMBER(cpu_mem_r);
- DECLARE_WRITE16_MEMBER(cpu_mem_w);
- void stm(uint8_t cycle_type);
- void on_cycle_end();
- void opcode_fetch(uint16_t opcode);
- uint8_t get_skoalrom(uint16_t addr);
- bool is_rom(uint16_t addr , uint8_t cycle_type) const;
-};
-
-void hp9825t_state::hp9825t(machine_config &config)
-{
- hp9825_base(config);
- m_cpu->set_addrmap(AS_PROGRAM , &hp9825t_state::cpu_mem_map);
- m_cpu->stm_cb().set(FUNC(hp9825t_state::stm));
- m_cpu->opcode_cb().set(FUNC(hp9825t_state::opcode_fetch));
-}
-
-void hp9825t_state::machine_start()
-{
- hp9825_state::machine_start();
-
- // 32kw of RAM (the 1st kw is not accessible in normal operation)
- m_ram = std::make_unique<uint16_t[]>(32768);
- save_pointer(NAME(m_ram) , 32768);
-}
-
-void hp9825t_state::device_reset()
-{
- hp9825_state::device_reset();
-
- // This has to be done before CPU reset or first instruction won't be fetched correctly
- m_cycle_type = 0;
- m_special_opt = 0xf;
-}
-
-void hp9825t_state::cpu_mem_map(address_map &map)
-{
- map.unmap_value_low();
- map(0x0000 , 0x7fff).rw(FUNC(hp9825t_state::cpu_mem_r) , FUNC(hp9825t_state::cpu_mem_w));
-}
-
-READ16_MEMBER(hp9825t_state::cpu_mem_r)
-{
- bool from_rom;
-
- if (m_cycle_type & hp_hybrid_cpu_device::CYCLE_RD_MASK) {
- if (m_cycle_type & hp_hybrid_cpu_device::CYCLE_IFETCH_MASK) {
- m_fetch_addr = offset;
- }
- from_rom = is_rom(offset , m_cycle_type);
- LOG("rd @%04x CYC=%x %d%d%d%d ROM=%d\n" , offset , m_cycle_type , m_skoalbit , m_second_access , m_mref , m_ifetch_4400 , from_rom);
- if (!(m_cycle_type & (hp_hybrid_cpu_device::CYCLE_IFETCH_MASK | hp_hybrid_cpu_device::CYCLE_DMA_MASK))) {
- on_cycle_end();
- }
- m_cycle_type = 0;
- // TODO: diagnostic read
- } else {
- // Read coming from debugger and not from CPU: fake an ifetch
- from_rom = is_rom(offset , hp_hybrid_cpu_device::CYCLE_IFETCH_MASK);
- }
-
- return from_rom ? m_rom_region->as_u16(offset) : m_ram[ offset ];
-}
-
-WRITE16_MEMBER(hp9825t_state::cpu_mem_w)
-{
- if (m_cycle_type & hp_hybrid_cpu_device::CYCLE_WR_MASK) {
- if (!(m_cycle_type & hp_hybrid_cpu_device::CYCLE_DMA_MASK)) {
- on_cycle_end();
- }
- m_cycle_type = 0;
- }
- // All write cycles go to RAM
- m_ram[ offset ] = (m_ram[ offset ] & ~mem_mask) | (data & mem_mask);
-}
-
-void hp9825t_state::stm(uint8_t cycle_type)
-{
- LOG("stm %x\n" , cycle_type);
- m_cycle_type = cycle_type;
- if (m_cycle_type & hp_hybrid_cpu_device::CYCLE_IFETCH_MASK) {
- m_second_access = false;
- m_mref = false;
- m_ifetch_4400 = false;
- // In case of ifetch from register area this is kept at 0 (because cpu_mem_r is not called)
- // In case of ifetch from RAM/ROM this is set by cpu_mem_r to the fetch address
- m_fetch_addr = 0;
- } else if (m_cycle_type & hp_hybrid_cpu_device::CYCLE_RAL_MASK) {
- if (!(m_cycle_type & hp_hybrid_cpu_device::CYCLE_DMA_MASK)) {
- on_cycle_end();
- }
- m_cycle_type = 0;
- }
-}
-
-void hp9825t_state::on_cycle_end()
-{
- m_second_access = false;
-}
-
-void hp9825t_state::opcode_fetch(uint16_t opcode)
-{
- LOG("oc %04x\n" , opcode);
- m_cycle_type = 0;
- // memory referencing instructions
- m_mref = (opcode & 0x7000) != 0x7000;
- m_second_access = true;
- m_ifetch_4400 = (m_fetch_addr & 0x7f00) == 0x0900;
- if (BIT(m_special_opt , 3) && BIT(m_special_opt , 2)) {
- // Set SKOAL bit
- if (m_fetch_addr < 0x20) {
- // Fetch from registers -> SKOAL bit = 0
- m_skoalbit = false;
- } else if ((m_fetch_addr & 0x6000) == 0x6000) {
- // Fetch in [6000..7fff] range -> SKOAL bit = 0
- m_skoalbit = false;
- } else {
- uint8_t tmp = get_skoalrom(m_fetch_addr);
- m_skoalbit = (tmp >> ((~m_fetch_addr >> 12) & 7)) & 1;
- }
- }
- // Decode SKOAL instructions. They are ignored by the hybrid processor
- // as they are not recognized.
- if ((opcode & 0xffc0) == 0x7040) {
- m_special_opt = opcode & 0xf;
- if (!BIT(m_special_opt , 3)) {
- // RAM/ == 0
- m_skoalbit = false;
- } else if (!BIT(m_special_opt , 2)) {
- // ROM/ == 0
- m_skoalbit = true;
- }
- }
-}
-
-uint8_t hp9825t_state::get_skoalrom(uint16_t addr)
-{
- return m_skoalrom->as_u8(~addr & 0x0fff);
-}
-
-bool hp9825t_state::is_rom(uint16_t addr , uint8_t cycle_type) const
-{
- if ((addr & 0x6000) == 0x6000) {
- // [6000..7fff] -> always RAM
- return false;
- } else if ((cycle_type & hp_hybrid_cpu_device::CYCLE_DMA_MASK) != 0 ||
- !BIT(m_special_opt , 1)) {
- // DMA cycle or BIT/ == 0 -> RAM
- return false;
- } else if (addr >= 0x400 && !BIT(m_special_opt , 0)) {
- // [0400..5fff] and BIN/ == 0 -> RAM
- return false;
- } else {
- bool addr_0800_7fff = (addr & 0x7800) != 0;
- bool addr_0400_07ff = !addr_0800_7fff && BIT(addr , 10);
- bool addr_0000_03ff = !addr_0800_7fff && !BIT(addr , 10);
-
- // U58-6
- bool force_rom;
-
- // ROM when one or more of these is true:
- // - addr in [0000..03ff]
- // - Ifetch cycle and addr in [0800..5fff]
- // - 2nd access of a memory-referencing instruction not in [0400..07ff] range
- // - skoalbit = 1 and instruction fetched in [0900..09ff] range
- force_rom =
- addr_0000_03ff ||
- ((cycle_type & hp_hybrid_cpu_device::CYCLE_IFETCH_MASK) != 0 && addr_0800_7fff) ||
- (m_second_access && m_mref && (!BIT(m_special_opt , 2) || !addr_0400_07ff)) ||
- (m_skoalbit && m_ifetch_4400);
-
- if (force_rom) {
- return true;
- } else if (addr_0400_07ff && BIT(m_special_opt , 2)) {
- return false;
- } else {
- return m_skoalbit;
- }
- }
-}
-
ROM_START(hp9825b)
ROM_REGION(0xa000 , "cpu" , ROMREGION_16BIT | ROMREGION_BE)
ROM_LOAD("sysrom1.bin" , 0x0000 , 0x2000 , CRC(fe429268) SHA1(f2fe7c5abca92bd13f81b4385fc4fce0cafb0da0))
ROM_LOAD("sysrom2.bin" , 0x2000 , 0x2000 , CRC(96093b5d) SHA1(c6ec4cafd019887df0fa849b3c7070bb74faee54))
ROM_LOAD("sysrom3.bin" , 0x4000 , 0x2000 , CRC(f9470f67) SHA1(b80cb4a366d93bd7acc3508ce987bb11c5986b2a))
- ROM_LOAD("98217.bin" , 0x6000 , 0x0800 , BAD_DUMP CRC(ea1fcf63) SHA1(e535c82897210a1c67c1ca16f44f936d4c470463))
- ROM_LOAD("genio_t.bin" , 0x6800 , 0x0800 , CRC(ade1d1ed) SHA1(9af74a65b29ef1885f74164238ecf8d16ac995d6))
- ROM_LOAD("plot72.bin" , 0x7000 , 0x0800 , CRC(0a9cb8db) SHA1(d0d126fca108f2715e1e408cb31b09ba69385ac4))
- ROM_LOAD("advpgm_t.bin", 0x8000 , 0x0800 , CRC(965b5e5a) SHA1(ff44dd15f8fa4ca03dfd970ed8b200e8a071ec13))
- ROM_LOAD("extio_t.bin" , 0x8800 , 0x1000 , CRC(a708b978) SHA1(baf53c8a2b24d059f95252baf1452188eaf6e4be))
- ROM_LOAD("strings_t.bin",0x9800 , 0x0800 , CRC(b5ca5da5) SHA1(af13abb3c15836c566863c656e1659f7e6f96d04))
-ROM_END
-
-ROM_START(hp9825t)
- ROM_REGION(0xc000 , "rom" , ROMREGION_16BIT | ROMREGION_BE | ROMREGION_ERASE | ROMREGION_ERASE00)
- ROM_LOAD("sysrom1.bin" , 0x0000 , 0x2000 , CRC(fe429268) SHA1(f2fe7c5abca92bd13f81b4385fc4fce0cafb0da0))
- ROM_LOAD("sysrom2.bin" , 0x2000 , 0x2000 , CRC(96093b5d) SHA1(c6ec4cafd019887df0fa849b3c7070bb74faee54))
- ROM_LOAD("sysrom3.bin" , 0x4000 , 0x2000 , CRC(f9470f67) SHA1(b80cb4a366d93bd7acc3508ce987bb11c5986b2a))
- ROM_LOAD("98217.bin" , 0x6000 , 0x0800 , BAD_DUMP CRC(ea1fcf63) SHA1(e535c82897210a1c67c1ca16f44f936d4c470463))
ROM_LOAD("genio_t.bin" , 0x6800 , 0x0800 , CRC(ade1d1ed) SHA1(9af74a65b29ef1885f74164238ecf8d16ac995d6))
ROM_LOAD("plot72.bin" , 0x7000 , 0x0800 , CRC(0a9cb8db) SHA1(d0d126fca108f2715e1e408cb31b09ba69385ac4))
ROM_LOAD("advpgm_t.bin", 0x8000 , 0x0800 , CRC(965b5e5a) SHA1(ff44dd15f8fa4ca03dfd970ed8b200e8a071ec13))
ROM_LOAD("extio_t.bin" , 0x8800 , 0x1000 , CRC(a708b978) SHA1(baf53c8a2b24d059f95252baf1452188eaf6e4be))
ROM_LOAD("strings_t.bin",0x9800 , 0x0800 , CRC(b5ca5da5) SHA1(af13abb3c15836c566863c656e1659f7e6f96d04))
- ROM_LOAD("syspgm.bin" , 0xa000 , 0x0800 , CRC(8915588f) SHA1(037f497b5ecc3216fb6b8356767cc361fb0b2945))
-
- ROM_REGION(0x1000 , "skoalrom" , 0)
- ROM_LOAD("skoalrom.bin" , 0 , 0x1000 , CRC(5e8124d5) SHA1(dedf7f8a10c62b444f04213956083089e97bf219))
ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP(1980, hp9825b, 0, 0, hp9825b, hp9825, hp9825b_state,empty_init, "Hewlett-Packard", "HP 9825B", 0)
-COMP(1980, hp9825t, 0, 0, hp9825t, hp9825, hp9825t_state,empty_init, "Hewlett-Packard", "HP 9825T", 0)
+COMP(1980, hp9825b, 0, 0, hp9825b, hp9825, hp9825_state, empty_init, "Hewlett-Packard", "HP 9825B", 0)
diff --git a/src/mame/drivers/hp9845.cpp b/src/mame/drivers/hp9845.cpp
index d4f64f10393..283ff3e6c90 100644
--- a/src/mame/drivers/hp9845.cpp
+++ b/src/mame/drivers/hp9845.cpp
@@ -3532,37 +3532,35 @@ const uint8_t hp9845t_state::m_back_arrow_shape[] = {
0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00
};
-void hp9845_state::hp9845a(machine_config &config)
-{
- //HP_5061_3010(config, m_lpu, XTAL(11'400'000));
- //HP_5061_3011(config, m_ppu, XTAL(11'400'000));
+MACHINE_CONFIG_START(hp9845_state::hp9845a)
+ //MCFG_DEVICE_ADD("lpu", HP_5061_3010, XTAL(11'400'000))
+ //MCFG_DEVICE_ADD("ppu", HP_5061_3011, XTAL(11'400'000))
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(hp9845_state::screen_update));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(560, 455);
- screen.set_visarea(0, 560-1, 0, 455-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(hp9845_state, screen_update)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(560, 455)
+ MCFG_SCREEN_VISIBLE_AREA(0, 560-1, 0, 455-1)
- SOFTWARE_LIST(config, "optrom_list").set_original("hp9845a_rom");
-}
+ MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9845a_rom")
+MACHINE_CONFIG_END
-void hp9845_state::hp9835a(machine_config &config)
-{
- //HP_5061_3001(config, m_lpu, XTAL(11'400'000));
- //HP_5061_301(1config, m_ppu, XTAL(11'400'000));
+MACHINE_CONFIG_START(hp9845_state::hp9835a)
+ //MCFG_DEVICE_ADD("lpu", HP_5061_3001, XTAL(11'400'000))
+ //MCFG_DEVICE_ADD("ppu", HP_5061_3001, XTAL(11'400'000))
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(hp9845_state::screen_update));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(560, 455);
- screen.set_visarea(0, 560-1, 0, 455-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(hp9845_state, screen_update)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(560, 455)
+ MCFG_SCREEN_VISIBLE_AREA(0, 560-1, 0, 455-1)
- SOFTWARE_LIST(config, "optrom_list").set_original("hp9835a_rom");
-}
+ MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9835a_rom")
+MACHINE_CONFIG_END
/*
Global memory map in blocks of 32 kwords / 64 kbytes each:
@@ -3625,8 +3623,7 @@ void hp9845_base_state::ppu_io_map(address_map &map)
map(HP_MAKE_IOADDR(T15_PA, 0), HP_MAKE_IOADDR(T15_PA, 3)).rw(m_t15, FUNC(hp_taco_device::reg_r), FUNC(hp_taco_device::reg_w));
}
-void hp9845_base_state::hp9845_base(machine_config &config)
-{
+MACHINE_CONFIG_START(hp9845_base_state::hp9845_base)
HP_5061_3001(config , m_lpu , 5700000);
m_lpu->set_addrmap(AS_PROGRAM , &hp9845_base_state::global_mem_map);
m_lpu->set_9845_boot_mode(true);
@@ -3649,18 +3646,19 @@ void hp9845_base_state::hp9845_base(machine_config &config)
m_io_sys->dmar().set(m_ppu , FUNC(hp_5061_3001_cpu_device::dmar_w));
// video hardware
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ MCFG_SCREEN_ADD("screen", RASTER)
- TIMER(config, m_gv_timer).configure_generic(FUNC(hp9845_base_state::gv_timer));
+ MCFG_TIMER_DRIVER_ADD("gv_timer", hp9845_base_state, gv_timer)
// Actual keyboard refresh rate should be KEY_SCAN_OSCILLATOR / 128 (2560 Hz)
- TIMER(config, "kb_timer").configure_periodic(FUNC(hp9845_base_state::kb_scan), attotime::from_hz(100));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("kb_timer" , hp9845_base_state , kb_scan , attotime::from_hz(100))
// Beeper
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beeper , KEY_SCAN_OSCILLATOR / 512).add_route(ALL_OUTPUTS , "mono" , 0.50);
+ MCFG_DEVICE_ADD("beeper" , BEEP , KEY_SCAN_OSCILLATOR / 512)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS , "mono" , 0.50)
- TIMER(config, m_beep_timer).configure_generic(FUNC(hp9845_base_state::beeper_off));
+ MCFG_TIMER_DRIVER_ADD("beep_timer" , hp9845_base_state , beeper_off);
// Tape drives
HP_TACO(config , m_t15 , 4000000);
@@ -3676,14 +3674,22 @@ void hp9845_base_state::hp9845_base(machine_config &config)
// right-hand side and left-hand side drawers, respectively.
// Here we do away with the distinction between LPU & PPU ROMs: in the end they
// are visible to both CPUs at the same addresses.
- HP_OPTROM_SLOT(config, "drawer1", 0);
- HP_OPTROM_SLOT(config, "drawer2", 0);
- HP_OPTROM_SLOT(config, "drawer3", 0);
- HP_OPTROM_SLOT(config, "drawer4", 0);
- HP_OPTROM_SLOT(config, "drawer5", 0);
- HP_OPTROM_SLOT(config, "drawer6", 0);
- HP_OPTROM_SLOT(config, "drawer7", 0);
- HP_OPTROM_SLOT(config, "drawer8", 0);
+ MCFG_DEVICE_ADD("drawer1", HP_OPTROM_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(hp_optrom_slot_devices, NULL, false)
+ MCFG_DEVICE_ADD("drawer2", HP_OPTROM_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(hp_optrom_slot_devices, NULL, false)
+ MCFG_DEVICE_ADD("drawer3", HP_OPTROM_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(hp_optrom_slot_devices, NULL, false)
+ MCFG_DEVICE_ADD("drawer4", HP_OPTROM_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(hp_optrom_slot_devices, NULL, false)
+ MCFG_DEVICE_ADD("drawer5", HP_OPTROM_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(hp_optrom_slot_devices, NULL, false)
+ MCFG_DEVICE_ADD("drawer6", HP_OPTROM_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(hp_optrom_slot_devices, NULL, false)
+ MCFG_DEVICE_ADD("drawer7", HP_OPTROM_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(hp_optrom_slot_devices, NULL, false)
+ MCFG_DEVICE_ADD("drawer8", HP_OPTROM_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(hp_optrom_slot_devices, NULL, false)
// I/O slots
for (unsigned slot = 0; slot < 4; slot++) {
@@ -3703,51 +3709,54 @@ void hp9845_base_state::hp9845_base(machine_config &config)
prt.irq().set(FUNC(hp9845_base_state::prt_irl_w));
prt.flg().set([this](int state) { m_io_sys->set_flg(PRINTER_PA , state); });
prt.sts().set([this](int state) { m_io_sys->set_sts(PRINTER_PA , state); });
-}
+MACHINE_CONFIG_END
-void hp9845b_state::hp9845b(machine_config &config)
-{
+MACHINE_CONFIG_START(hp9845b_state::hp9845b)
hp9845_base(config);
// video hardware
- m_screen->set_screen_update(FUNC(hp9845b_state::screen_update));
- m_screen->screen_vblank().set(FUNC(hp9845b_state::vblank_w));
- m_screen->set_color(rgb_t::green());
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(hp9845b_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, hp9845b_state, vblank_w))
+ MCFG_SCREEN_COLOR(rgb_t::green())
// These parameters are for alpha video
- m_screen->set_raw(VIDEO_PIXEL_CLOCK , VIDEO_HTOTAL , 0 , VIDEO_HBSTART , VIDEO_VTOTAL , 0 , VIDEO_ACTIVE_SCANLINES);
- PALETTE(config, m_palette).set_entries(4);
- TIMER(config, "scantimer").configure_scanline(FUNC(hp9845b_state::scanline_timer), "screen", 0, 1);
+ MCFG_SCREEN_RAW_PARAMS(VIDEO_PIXEL_CLOCK , VIDEO_HTOTAL , 0 , VIDEO_HBSTART , VIDEO_VTOTAL , 0 , VIDEO_ACTIVE_SCANLINES)
+ MCFG_PALETTE_ADD("palette", 4)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hp9845b_state, scanline_timer, "screen", 0, 1)
config.set_default_layout(layout_hp9845b);
- SOFTWARE_LIST(config, "optrom_list").set_original("hp9845b_rom");
-}
+ MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9845b_rom")
-void hp9845c_state::hp9845c(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(hp9845c_state::hp9845c)
hp9845_base(config);
// video hardware
- m_screen->set_screen_update(FUNC(hp9845c_state::screen_update));
- m_screen->screen_vblank().set(FUNC(hp9845c_state::vblank_w));
- m_screen->set_raw(VIDEO_770_PIXEL_CLOCK , VIDEO_770_HTOTAL , VIDEO_770_HBEND , VIDEO_770_HBSTART , VIDEO_770_VTOTAL , VIDEO_770_VBEND , VIDEO_770_VBSTART);
- PALETTE(config, m_palette).set_entries(24);
- TIMER(config, "scantimer").configure_scanline(FUNC(hp9845c_state::scanline_timer), "screen", 0, 1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(hp9845c_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, hp9845c_state, vblank_w))
+ MCFG_SCREEN_RAW_PARAMS(VIDEO_770_PIXEL_CLOCK , VIDEO_770_HTOTAL , VIDEO_770_HBEND , VIDEO_770_HBSTART , VIDEO_770_VTOTAL , VIDEO_770_VBEND , VIDEO_770_VBSTART)
+ MCFG_PALETTE_ADD("palette", 24)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hp9845c_state, scanline_timer, "screen", 0, 1)
- SOFTWARE_LIST(config, "optrom_list").set_original("hp9845b_rom");
-}
+ MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9845b_rom")
-void hp9845t_state::hp9845t(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(hp9845t_state::hp9845t)
hp9845_base(config);
// video hardware
- m_screen->set_screen_update(FUNC(hp9845t_state::screen_update));
- m_screen->screen_vblank().set(FUNC(hp9845t_state::vblank_w));
- m_screen->set_color(rgb_t::green());
- m_screen->set_raw(VIDEO_780_PIXEL_CLOCK , VIDEO_780_HTOTAL , VIDEO_780_HBEND , VIDEO_780_HBSTART , VIDEO_780_VTOTAL , VIDEO_780_VBEND , VIDEO_780_VBSTART);
- PALETTE(config, m_palette).set_entries(5);
- TIMER(config, "scantimer").configure_scanline(FUNC(hp9845t_state::scanline_timer), "screen", 0, 1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(hp9845t_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, hp9845t_state, vblank_w))
+ MCFG_SCREEN_COLOR(rgb_t::green())
+ MCFG_SCREEN_RAW_PARAMS(VIDEO_780_PIXEL_CLOCK , VIDEO_780_HTOTAL , VIDEO_780_HBEND , VIDEO_780_HBSTART , VIDEO_780_VTOTAL , VIDEO_780_VBEND , VIDEO_780_VBSTART)
+ MCFG_PALETTE_ADD("palette", 5)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hp9845t_state, scanline_timer, "screen", 0, 1)
- SOFTWARE_LIST(config, "optrom_list").set_original("hp9845b_rom");
-}
+ MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9845b_rom")
+
+MACHINE_CONFIG_END
ROM_START( hp9845a )
ROM_REGION( 0200000, "lpu", ROMREGION_16BIT | ROMREGION_BE )
diff --git a/src/mame/drivers/hp9k.cpp b/src/mame/drivers/hp9k.cpp
index c10eed0913b..aaa24e2c14b 100644
--- a/src/mame/drivers/hp9k.cpp
+++ b/src/mame/drivers/hp9k.cpp
@@ -239,7 +239,7 @@ READ16_MEMBER( hp9k_state::hp9k_videoram_r )
if (offset==0x0001)
{
//printf("m6845 read at [%x] mem_mask [%x]\n",offset,mem_mask);
- return m_6845->register_r();
+ return m_6845->register_r(space,0);
}
else
{
@@ -262,13 +262,13 @@ WRITE16_MEMBER( hp9k_state::hp9k_videoram_w )
{
//printf("6845 address write [%x] at [%x] mask [%x]\n",data,offset,mem_mask);
data&=0x1f;
- m_6845->address_w(data);
+ m_6845->address_w( space, 0, data );
crtc_curreg=data;
}
else if (offset==0x0001)
{
//printf("6845 register write [%x] at [%x] mask [%x]\n",data,offset,mem_mask);
- m_6845->register_w(data);
+ m_6845->register_w( space, 0, data );
if (crtc_curreg==0x0c) crtc_addrStartHi=data;
if (crtc_curreg==0x0d) crtc_addrStartLow=data;
}
@@ -394,30 +394,29 @@ WRITE8_MEMBER( hp9k_state::kbd_put )
}
-void hp9k_state::hp9k(machine_config &config)
-{
+MACHINE_CONFIG_START(hp9k_state::hp9k)
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(8'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &hp9k_state::hp9k_mem);
+ MCFG_DEVICE_ADD("maincpu",M68000, XTAL(8'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(hp9k_mem)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(HP9816_ROWX*HP9816_CHDIMX, HP9816_ROWY*HP9816_CHDIMY);
- screen.set_visarea(0, (HP9816_ROWX*HP9816_CHDIMX)-1, 0, (HP9816_ROWY*HP9816_CHDIMY)-1);
- screen.set_screen_update(FUNC(hp9k_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(HP9816_ROWX*HP9816_CHDIMX, HP9816_ROWY*HP9816_CHDIMY)
+ MCFG_SCREEN_VISIBLE_AREA(0, (HP9816_ROWX*HP9816_CHDIMX)-1, 0, (HP9816_ROWY*HP9816_CHDIMY)-1)
+ MCFG_SCREEN_UPDATE_DRIVER(hp9k_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, "palette", gfx_hp9k);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_hp9k)
PALETTE(config, "palette", palette_device::MONOCHROME);
MC6845(config, m_6845, XTAL(16'000'000) / 16);
m_6845->set_screen("screen");
m_6845->set_show_border_area(false);
m_6845->set_char_width(8);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( hp9816 )
diff --git a/src/mame/drivers/hp9k_3xx.cpp b/src/mame/drivers/hp9k_3xx.cpp
index 5a0d69e4311..056817f7e36 100644
--- a/src/mame/drivers/hp9k_3xx.cpp
+++ b/src/mame/drivers/hp9k_3xx.cpp
@@ -258,7 +258,7 @@ WRITE16_MEMBER(hp9k3xx_state::led_w)
void hp9k3xx_state::add_dio16_bus(machine_config &config)
{
bus::hp_dio::dio16_device &dio16(DIO16(config, "diobus", 0));
- dio16.set_program_space(m_maincpu, AS_PROGRAM);
+ dio16.set_cputag(m_maincpu);
dio16.irq1_out_cb().set(FUNC(hp9k3xx_state::dio_irq1_w));
dio16.irq2_out_cb().set(FUNC(hp9k3xx_state::dio_irq2_w));
@@ -272,7 +272,7 @@ void hp9k3xx_state::add_dio16_bus(machine_config &config)
void hp9k3xx_state::add_dio32_bus(machine_config &config)
{
bus::hp_dio::dio32_device &dio32(DIO32(config, "diobus", 0));
- dio32.set_program_space(m_maincpu, AS_PROGRAM);
+ dio32.set_cputag(m_maincpu);
dio32.irq1_out_cb().set(FUNC(hp9k3xx_state::dio_irq1_w));
dio32.irq2_out_cb().set(FUNC(hp9k3xx_state::dio_irq2_w));
@@ -323,23 +323,22 @@ WRITE32_MEMBER(hp9k3xx_state::buserror_w)
set_bus_error(offset << 2, false, mem_mask);
}
-void hp9k3xx_state::hp9k300(machine_config &config)
-{
+MACHINE_CONFIG_START(hp9k3xx_state::hp9k300)
ptm6840_device &ptm(PTM6840(config, PTM6840_TAG, 250000)); // from oscillator module next to the 6840
ptm.set_external_clocks(250000.0f, 0.0f, 250000.0f);
ptm.o3_callback().set(PTM6840_TAG, FUNC(ptm6840_device::set_c2));
ptm.irq_callback().set_inputline("maincpu", M68K_IRQ_6);
- SOFTWARE_LIST(config, "flop_list").set_original("hp9k3xx_flop");
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "hp9k3xx_flop")
config.set_default_layout(layout_hp9k_3xx);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(hp9k3xx_state::hp9k310)
-void hp9k3xx_state::hp9k310(machine_config &config)
-{
hp9k300(config);
- M68010(config, m_maincpu, 10000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &hp9k3xx_state::hp9k310_map);
+ MCFG_DEVICE_ADD(m_maincpu, M68010, 10000000)
+ MCFG_DEVICE_PROGRAM_MAP(hp9k310_map)
add_dio16_bus(config);
@@ -349,12 +348,12 @@ void hp9k3xx_state::hp9k310(machine_config &config)
DIO32_SLOT(config, "sl3", 0, "diobus", dio32_cards, "98643", false);
DIO16_SLOT(config, "sl4", 0, "diobus", dio16_cards, "98644", false);
DIO16_SLOT(config, "sl5", 0, "diobus", dio16_cards, nullptr, false);
-}
-void hp9k3xx_state::hp9k320(machine_config &config)
-{
- M68020FPU(config, m_maincpu, 16670000);
- m_maincpu->set_addrmap(AS_PROGRAM, &hp9k3xx_state::hp9k320_map);
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(hp9k3xx_state::hp9k320)
+ MCFG_DEVICE_ADD(m_maincpu, M68020FPU, 16670000)
+ MCFG_DEVICE_PROGRAM_MAP(hp9k320_map)
hp9k300(config);
add_dio32_bus(config);
@@ -366,12 +365,11 @@ void hp9k3xx_state::hp9k320(machine_config &config)
DIO32_SLOT(config, "sl4", 0, "diobus", dio32_cards, "98620", false);
DIO32_SLOT(config, "sl5", 0, "diobus", dio32_cards, "98265a", false);
DIO32_SLOT(config, "sl7", 0, "diobus", dio32_cards, nullptr, false);
-}
+MACHINE_CONFIG_END
-void hp9k3xx_state::hp9k330(machine_config &config)
-{
- M68020PMMU(config, m_maincpu, 16670000);
- m_maincpu->set_addrmap(AS_PROGRAM, &hp9k3xx_state::hp9k330_map);
+MACHINE_CONFIG_START(hp9k3xx_state::hp9k330)
+ MCFG_DEVICE_ADD(m_maincpu, M68020PMMU, 16670000)
+ MCFG_DEVICE_PROGRAM_MAP(hp9k330_map)
hp9k300(config);
add_dio32_bus(config);
@@ -381,12 +379,11 @@ void hp9k3xx_state::hp9k330(machine_config &config)
DIO32_SLOT(config, "sl2", 0, "diobus", dio16_cards, "98603b", false);
DIO32_SLOT(config, "sl3", 0, "diobus", dio16_cards, "98644", false);
DIO32_SLOT(config, "sl4", 0, "diobus", dio16_cards, nullptr, false);
-}
+MACHINE_CONFIG_END
-void hp9k3xx_state::hp9k332(machine_config &config)
-{
- M68020PMMU(config, m_maincpu, 16670000);
- m_maincpu->set_addrmap(AS_PROGRAM, &hp9k3xx_state::hp9k332_map);
+MACHINE_CONFIG_START(hp9k3xx_state::hp9k332)
+ MCFG_DEVICE_ADD(m_maincpu, M68020PMMU, 16670000)
+ MCFG_DEVICE_PROGRAM_MAP(hp9k332_map)
hp9k300(config);
add_dio16_bus(config);
@@ -396,22 +393,22 @@ void hp9k3xx_state::hp9k332(machine_config &config)
DIO16_SLOT(config, "sl2", 0, "diobus", dio16_cards, "98644", false);
DIO16_SLOT(config, "sl3", 0, "diobus", dio16_cards, "98543", false);
DIO16_SLOT(config, "sl4", 0, "diobus", dio16_cards, nullptr, false);
-}
-void hp9k3xx_state::hp9k340(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(hp9k3xx_state::hp9k340)
hp9k320(config);
- M68030(config.replace(), m_maincpu, 16670000);
- m_maincpu->set_addrmap(AS_PROGRAM, &hp9k3xx_state::hp9k330_map);
-}
+ MCFG_DEVICE_REPLACE(m_maincpu, M68030, 16670000)
+ MCFG_DEVICE_PROGRAM_MAP(hp9k330_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(hp9k3xx_state::hp9k360)
-void hp9k3xx_state::hp9k360(machine_config &config)
-{
hp9k300(config);
- M68030(config, m_maincpu, 25000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &hp9k3xx_state::hp9k360_map);
+ MCFG_DEVICE_ADD(m_maincpu, M68030, 25000000)
+ MCFG_DEVICE_PROGRAM_MAP(hp9k360_map)
add_dio32_bus(config);
@@ -421,32 +418,30 @@ void hp9k3xx_state::hp9k360(machine_config &config)
DIO32_SLOT(config, "sl3", 0, "diobus", dio32_cards, "98620", false);
DIO32_SLOT(config, "sl4", 0, "diobus", dio32_cards, "98265a", false);
DIO32_SLOT(config, "sl5", 0, "diobus", dio32_cards, nullptr, false);
-}
+MACHINE_CONFIG_END
-void hp9k3xx_state::hp9k370(machine_config &config)
-{
+
+MACHINE_CONFIG_START(hp9k3xx_state::hp9k370)
hp9k360(config);
- M68030(config.replace(), m_maincpu, 33000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &hp9k3xx_state::hp9k370_map);
-}
+ MCFG_DEVICE_REPLACE(m_maincpu, M68030, 33000000)
+ MCFG_DEVICE_PROGRAM_MAP(hp9k370_map)
+MACHINE_CONFIG_END
-void hp9k3xx_state::hp9k380(machine_config &config)
-{
+MACHINE_CONFIG_START(hp9k3xx_state::hp9k380)
hp9k360(config);
- M68040(config.replace(), m_maincpu, 25000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &hp9k3xx_state::hp9k380_map);
-}
+ MCFG_DEVICE_REPLACE(m_maincpu, M68040, 25000000)
+ MCFG_DEVICE_PROGRAM_MAP(hp9k380_map)
+MACHINE_CONFIG_END
-void hp9k3xx_state::hp9k382(machine_config &config)
-{
+MACHINE_CONFIG_START(hp9k3xx_state::hp9k382)
hp9k360(config);
- M68040(config.replace(), m_maincpu, 25000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &hp9k3xx_state::hp9k382_map);
-}
+ MCFG_DEVICE_REPLACE(m_maincpu, M68040, 25000000)
+ MCFG_DEVICE_PROGRAM_MAP(hp9k382_map)
+MACHINE_CONFIG_END
ROM_START( hp9k310 )
ROM_REGION( 0x20000, MAINCPU_TAG, 0 )
diff --git a/src/mame/drivers/hp_ipc.cpp b/src/mame/drivers/hp_ipc.cpp
index db082fe1357..d040abb82ef 100644
--- a/src/mame/drivers/hp_ipc.cpp
+++ b/src/mame/drivers/hp_ipc.cpp
@@ -400,17 +400,17 @@ private:
virtual void machine_start() override;
virtual void machine_reset() override;
- uint16_t mem_r(offs_t offset, uint16_t mem_mask);
- void mem_w(offs_t offset, uint16_t data, uint16_t mem_mask);
- uint16_t mmu_r(offs_t offset);
- void mmu_w(offs_t offset, uint16_t data);
- uint16_t ram_r(offs_t offset, uint16_t mem_mask);
- void ram_w(offs_t offset, uint16_t data, uint16_t mem_mask);
- uint16_t trap_r(offs_t offset, uint16_t mem_mask);
- void trap_w(offs_t offset, uint16_t data, uint16_t mem_mask);
-
- uint8_t floppy_id_r();
- void floppy_id_w(uint8_t data);
+ DECLARE_READ16_MEMBER(mem_r);
+ DECLARE_WRITE16_MEMBER(mem_w);
+ DECLARE_READ16_MEMBER(mmu_r);
+ DECLARE_WRITE16_MEMBER(mmu_w);
+ DECLARE_READ16_MEMBER(ram_r);
+ DECLARE_WRITE16_MEMBER(ram_w);
+ DECLARE_READ16_MEMBER(trap_r);
+ DECLARE_WRITE16_MEMBER(trap_w);
+
+ DECLARE_READ8_MEMBER(floppy_id_r);
+ DECLARE_WRITE8_MEMBER(floppy_id_w);
DECLARE_FLOPPY_FORMATS(floppy_formats);
DECLARE_WRITE_LINE_MEMBER(irq_1);
@@ -499,7 +499,7 @@ void hp_ipc_state::hp_ipc_mem_inner_base(address_map &map)
map(0x0610000, 0x0610007).rw(FUNC(hp_ipc_state::floppy_id_r), FUNC(hp_ipc_state::floppy_id_w)).umask16(0x00ff);
map(0x0610008, 0x061000F).rw(m_fdc, FUNC(wd2797_device::read), FUNC(wd2797_device::write)).umask16(0x00ff);
map(0x0620000, 0x0620007).rw(m_gpu, FUNC(hp1ll3_device::read), FUNC(hp1ll3_device::write)).umask16(0x00ff);
- map(0x0630000, 0x063FFFF).mask(0xf).rw("hpib" , FUNC(tms9914_device::read) , FUNC(tms9914_device::write)).umask16(0x00ff);
+ map(0x0630000, 0x063FFFF).mask(0xf).rw("hpib" , FUNC(tms9914_device::reg8_r) , FUNC(tms9914_device::reg8_w)).umask16(0x00ff);
map(0x0640000, 0x064002F).rw("rtc", FUNC(mm58167_device::read), FUNC(mm58167_device::write)).umask16(0x00ff);
map(0x0660000, 0x06600FF).rw("mlc", FUNC(hp_hil_mlc_device::read), FUNC(hp_hil_mlc_device::write)).umask16(0x00ff); // 'caravan', scrn/caravan.h
map(0x0670000, 0x067FFFF).noprw(); // Speaker (NatSemi COP 452)
@@ -523,19 +523,19 @@ static INPUT_PORTS_START(hp_ipc)
INPUT_PORTS_END
-uint16_t hp_ipc_state::mmu_r(offs_t offset)
+READ16_MEMBER(hp_ipc_state::mmu_r)
{
uint16_t data = (m_mmu[offset & 3] >> 10);
return data;
}
-void hp_ipc_state::mmu_w(offs_t offset, uint16_t data)
+WRITE16_MEMBER(hp_ipc_state::mmu_w)
{
m_mmu[offset & 3] = (data & 0xFFF) << 10;
}
-uint16_t hp_ipc_state::mem_r(offs_t offset, uint16_t mem_mask)
+READ16_MEMBER(hp_ipc_state::mem_r)
{
int fc = m_maincpu->get_fc() & 4;
@@ -545,10 +545,10 @@ uint16_t hp_ipc_state::mem_r(offs_t offset, uint16_t mem_mask)
m_bankdev->set_bank(m_fc ? 0 : 1);
}
- return m_bankdev->read16(offset, mem_mask);
+ return m_bankdev->read16(space, offset, mem_mask);
}
-void hp_ipc_state::mem_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+WRITE16_MEMBER(hp_ipc_state::mem_w)
{
int fc = m_maincpu->get_fc() & 4;
@@ -558,23 +558,23 @@ void hp_ipc_state::mem_w(offs_t offset, uint16_t data, uint16_t mem_mask)
m_bankdev->set_bank(m_fc ? 0 : 1);
}
- m_bankdev->write16(offset, data, mem_mask);
+ m_bankdev->write16(space, offset, data, mem_mask);
}
-uint16_t hp_ipc_state::trap_r(offs_t offset, uint16_t mem_mask)
+READ16_MEMBER(hp_ipc_state::trap_r)
{
if (!machine().side_effects_disabled()) set_bus_error((offset << 1) & 0xFFFFFF, true, mem_mask);
return 0xffff;
}
-void hp_ipc_state::trap_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+WRITE16_MEMBER(hp_ipc_state::trap_w)
{
if (!machine().side_effects_disabled()) set_bus_error((offset << 1) & 0xFFFFFF, false, mem_mask);
}
-uint16_t hp_ipc_state::ram_r(offs_t offset, uint16_t mem_mask)
+READ16_MEMBER(hp_ipc_state::ram_r)
{
uint32_t ram_address = get_ram_address(offset);
uint16_t data = 0xffff;
@@ -592,7 +592,7 @@ uint16_t hp_ipc_state::ram_r(offs_t offset, uint16_t mem_mask)
return data;
}
-void hp_ipc_state::ram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+WRITE16_MEMBER(hp_ipc_state::ram_w)
{
uint32_t ram_address = get_ram_address(offset);
@@ -613,7 +613,7 @@ void hp_ipc_state::ram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
* bit 1 -- disk changed (from drive)
* bit 0 -- write protect (from drive)
*/
-uint8_t hp_ipc_state::floppy_id_r()
+READ8_MEMBER(hp_ipc_state::floppy_id_r)
{
uint8_t data = 0;
@@ -634,7 +634,7 @@ uint8_t hp_ipc_state::floppy_id_r()
* bit 1 -- 1: drive select (via inverter to drive's /DRIVE SEL 1)
* bit 0 -- 1: reset disc_changed (via inverter to drive's /DSKRST)
*/
-void hp_ipc_state::floppy_id_w(uint8_t data)
+WRITE8_MEMBER(hp_ipc_state::floppy_id_w)
{
floppy_image_device *floppy0 = m_fdc->subdevice<floppy_connector>("0")->get_device();
@@ -737,10 +737,9 @@ static void hp_ipc_floppies(device_slot_interface &device)
* 2 HP-HIL devices (keyboard, mouse)
* 1 Real-time clock
*/
-void hp_ipc_state::hp_ipc_base(machine_config &config)
-{
- M68000(config, m_maincpu, 15.92_MHz_XTAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &hp_ipc_state::hp_ipc_mem_outer);
+MACHINE_CONFIG_START(hp_ipc_state::hp_ipc_base)
+ MCFG_DEVICE_ADD("maincpu", M68000, 15.92_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(hp_ipc_mem_outer)
HP1LL3(config , m_gpu , 24_MHz_XTAL / 8).set_screen("screen");
@@ -748,13 +747,13 @@ void hp_ipc_state::hp_ipc_base(machine_config &config)
// XXX when floppy code correctly handles 600 rpm drives.
WD2797(config, m_fdc, 2_MHz_XTAL);
m_fdc->intrq_wr_callback().set(FUNC(hp_ipc_state::irq_5));
- FLOPPY_CONNECTOR(config, "fdc:0", hp_ipc_floppies, "35dd", hp_ipc_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", hp_ipc_floppies, "35dd", hp_ipc_state::floppy_formats)
- SOFTWARE_LIST(config, "flop_list").set_original("hp_ipc");
+ MCFG_SOFTWARE_LIST_ADD("flop_list","hp_ipc")
- mm58167_device &rtc(MM58167(config, "rtc", 32.768_kHz_XTAL));
- rtc.irq().set(FUNC(hp_ipc_state::irq_1));
-// rtc.standby_irq().set(FUNC(hp_ipc_state::irq_6));
+ MCFG_DEVICE_ADD("rtc", MM58167, 32.768_kHz_XTAL)
+ MCFG_MM58167_IRQ_CALLBACK(WRITELINE(*this, hp_ipc_state, irq_1))
+// MCFG_MM58167_STANDBY_IRQ_CALLBACK(WRITELINE(*this, hp_ipc_state, irq_6))
hp_hil_mlc_device &mlc(HP_HIL_MLC(config, "mlc", XTAL(15'920'000)/2));
mlc.int_callback().set(FUNC(hp_ipc_state::irq_2));
@@ -775,23 +774,21 @@ void hp_ipc_state::hp_ipc_base(machine_config &config)
hpib.srq_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_srq_w));
hpib.atn_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_atn_w));
hpib.ren_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ren_w));
-
- ieee488_device &ieee(IEEE488(config, IEEE488_TAG));
- ieee.eoi_callback().set("hpib" , FUNC(tms9914_device::eoi_w));
- ieee.dav_callback().set("hpib" , FUNC(tms9914_device::dav_w));
- ieee.nrfd_callback().set("hpib" , FUNC(tms9914_device::nrfd_w));
- ieee.ndac_callback().set("hpib" , FUNC(tms9914_device::ndac_w));
- ieee.ifc_callback().set("hpib" , FUNC(tms9914_device::ifc_w));
- ieee.srq_callback().set("hpib" , FUNC(tms9914_device::srq_w));
- ieee.atn_callback().set("hpib" , FUNC(tms9914_device::atn_w));
- ieee.ren_callback().set("hpib" , FUNC(tms9914_device::ren_w));
- IEEE488_SLOT(config , "ieee_rem" , 0 , remote488_devices , nullptr);
+ MCFG_IEEE488_BUS_ADD()
+ MCFG_IEEE488_EOI_CALLBACK(WRITELINE("hpib" , tms9914_device , eoi_w))
+ MCFG_IEEE488_DAV_CALLBACK(WRITELINE("hpib" , tms9914_device , dav_w))
+ MCFG_IEEE488_NRFD_CALLBACK(WRITELINE("hpib" , tms9914_device , nrfd_w))
+ MCFG_IEEE488_NDAC_CALLBACK(WRITELINE("hpib" , tms9914_device , ndac_w))
+ MCFG_IEEE488_IFC_CALLBACK(WRITELINE("hpib" , tms9914_device , ifc_w))
+ MCFG_IEEE488_SRQ_CALLBACK(WRITELINE("hpib" , tms9914_device , srq_w))
+ MCFG_IEEE488_ATN_CALLBACK(WRITELINE("hpib" , tms9914_device , atn_w))
+ MCFG_IEEE488_REN_CALLBACK(WRITELINE("hpib" , tms9914_device , ren_w))
+ MCFG_IEEE488_SLOT_ADD("ieee_rem" , 0 , remote488_devices , nullptr)
RAM(config, RAM_TAG).set_default_size("512K").set_extra_options("768K,1M,1576K,2M,3M,4M,5M,6M,7M,7680K");
-}
+MACHINE_CONFIG_END
-void hp_ipc_state::hp_ipc(machine_config &config)
-{
+MACHINE_CONFIG_START(hp_ipc_state::hp_ipc)
hp_ipc_base(config);
ADDRESS_MAP_BANK(config, "bankdev").set_map(&hp_ipc_state::hp_ipc_mem_inner_9807a).set_options(ENDIANNESS_BIG, 16, 25, 0x1000000);
@@ -810,10 +807,9 @@ void hp_ipc_state::hp_ipc(machine_config &config)
m_screen->set_palette("palette");
PALETTE(config, "palette", palette_device::MONOCHROME);
-}
+MACHINE_CONFIG_END
-void hp_ipc_state::hp9808a(machine_config &config)
-{
+MACHINE_CONFIG_START(hp_ipc_state::hp9808a)
hp_ipc_base(config);
ADDRESS_MAP_BANK(config, "bankdev").set_map(&hp_ipc_state::hp_ipc_mem_inner_9808a).set_options(ENDIANNESS_BIG, 16, 25, 0x1000000);
@@ -829,7 +825,7 @@ void hp_ipc_state::hp9808a(machine_config &config)
m_screen->set_palette("palette");
PALETTE(config, "palette", palette_device::MONOCHROME);
-}
+MACHINE_CONFIG_END
ROM_START(hp_ipc)
diff --git a/src/mame/drivers/hprot1.cpp b/src/mame/drivers/hprot1.cpp
index 2a30193de12..1e3891954a6 100644
--- a/src/mame/drivers/hprot1.cpp
+++ b/src/mame/drivers/hprot1.cpp
@@ -245,8 +245,7 @@ HD44780_PIXEL_UPDATE(hprot1_state::hprot1_pixel_update)
}
}
-void hprot1_state::hprot1(machine_config &config)
-{
+MACHINE_CONFIG_START(hprot1_state::hprot1)
/* basic machine hardware */
I80C31(config, m_maincpu, XTAL(10'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &hprot1_state::i80c31_prg);
@@ -256,58 +255,58 @@ void hprot1_state::hprot1(machine_config &config)
m_maincpu->port_out_cb<3>().set(FUNC(hprot1_state::henry_p3_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
- screen.set_size(6*16, 9*2);
- screen.set_visarea(0, 6*16-1, 0, 9*2-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
+ MCFG_SCREEN_SIZE(6*16, 9*2)
+ MCFG_SCREEN_VISIBLE_AREA(0, 6*16-1, 0, 9*2-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(hprot1_state::hprot1_palette), 2);
GFXDECODE(config, "gfxdecode", "palette", gfx_hprot1);
- HD44780(config, m_lcdc, 0);
- m_lcdc->set_lcd_size(2, 16);
- m_lcdc->set_pixel_update_cb(FUNC(hprot1_state::hprot1_pixel_update), this);
+ MCFG_HD44780_ADD("hd44780")
+ MCFG_HD44780_LCD_SIZE(2, 16)
+ MCFG_HD44780_PIXEL_UPDATE_CB(hprot1_state,hprot1_pixel_update)
/* TODO: figure out which RTC chip is in use. */
/* TODO: emulate the ADM695AN chip (watchdog/brownout reset)*/
-}
+MACHINE_CONFIG_END
-void hprot1_state::hprotr8a(machine_config &config)
-{
+MACHINE_CONFIG_START(hprot1_state::hprotr8a)
hprot1(config);
- I80C31(config.replace(), m_maincpu, 11059200); // value of X1 crystal on the PCB
- m_maincpu->set_addrmap(AS_PROGRAM, &hprot1_state::i80c31_prg);
- m_maincpu->set_addrmap(AS_IO, &hprot1_state::i80c31_io);
+ MCFG_DEVICE_REPLACE("maincpu", I80C31, 11059200) // value of X1 cristal on the PCB
+ MCFG_DEVICE_PROGRAM_MAP(i80c31_prg)
+ MCFG_DEVICE_IO_MAP(i80c31_io)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* TODO: add an RS232 interface (emulate MAX232N chip)
(the board has GND/VCC/RX/TX pins available in a connector) */
/* TODO: add an I2C interface (the board has GND/VCC/SDA/SCL pins available in a connector) */
-}
+MACHINE_CONFIG_END
-void hprot1_state::hprot2r6(machine_config &config)
-{
+MACHINE_CONFIG_START(hprot1_state::hprot2r6)
hprot1(config);
- I80C31(config.replace(), m_maincpu, 11059200); // value of X1 crystal on the PCB
- m_maincpu->set_addrmap(AS_PROGRAM, &hprot1_state::i80c31_prg);
- m_maincpu->set_addrmap(AS_IO, &hprot1_state::i80c31_io);
+ MCFG_DEVICE_REPLACE("maincpu", I80C31, 11059200) // value of X1 cristal on the PCB
+ MCFG_DEVICE_PROGRAM_MAP(i80c31_prg)
+ MCFG_DEVICE_IO_MAP(i80c31_io)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* TODO: add an RS232 interface (emulate MAX232N chip) */
-}
+MACHINE_CONFIG_END
ROM_START( hprot1 )
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/hpz80unk.cpp b/src/mame/drivers/hpz80unk.cpp
index 20993cd1c09..46e2f9eef9e 100644
--- a/src/mame/drivers/hpz80unk.cpp
+++ b/src/mame/drivers/hpz80unk.cpp
@@ -44,7 +44,6 @@ Z nothing
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/ay31015.h"
-#include "machine/clock.h"
#include "bus/rs232/rs232.h"
@@ -170,31 +169,30 @@ void hpz80unk_state::hpz80unk(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &hpz80unk_state::hpz80unk_mem);
m_maincpu->set_addrmap(AS_IO, &hpz80unk_state::hpz80unk_io);
+ /* video hardware */
AY51013(config, m_uart[0]); // COM2502
+ m_uart[0]->set_tx_clock(153600);
+ m_uart[0]->set_rx_clock(153600);
m_uart[0]->read_si_callback().set("rs232a", FUNC(rs232_port_device::rxd_r));
m_uart[0]->write_so_callback().set("rs232a", FUNC(rs232_port_device::write_txd));
m_uart[0]->set_auto_rdav(true);
RS232_PORT(config, "rs232a", default_rs232_devices, "terminal");
AY51013(config, m_uart[1]); // COM2502
+ m_uart[1]->set_tx_clock(153600);
+ m_uart[1]->set_rx_clock(153600);
m_uart[1]->read_si_callback().set("rs232b", FUNC(rs232_port_device::rxd_r));
m_uart[1]->write_so_callback().set("rs232b", FUNC(rs232_port_device::write_txd));
m_uart[1]->set_auto_rdav(true);
RS232_PORT(config, "rs232b", default_rs232_devices, nullptr);
AY51013(config, m_uart[2]); // COM2502
+ m_uart[2]->set_tx_clock(153600);
+ m_uart[2]->set_rx_clock(153600);
m_uart[2]->read_si_callback().set("rs232c", FUNC(rs232_port_device::rxd_r));
m_uart[2]->write_so_callback().set("rs232c", FUNC(rs232_port_device::write_txd));
m_uart[2]->set_auto_rdav(true);
RS232_PORT(config, "rs232c", default_rs232_devices, nullptr);
-
- clock_device &uart_clock(CLOCK(config, "uart_clock", 153600));
- uart_clock.signal_handler().set(m_uart[0], FUNC(ay51013_device::write_tcp));
- uart_clock.signal_handler().append(m_uart[0], FUNC(ay51013_device::write_rcp));
- uart_clock.signal_handler().append(m_uart[1], FUNC(ay51013_device::write_tcp));
- uart_clock.signal_handler().append(m_uart[1], FUNC(ay51013_device::write_rcp));
- uart_clock.signal_handler().append(m_uart[2], FUNC(ay51013_device::write_tcp));
- uart_clock.signal_handler().append(m_uart[2], FUNC(ay51013_device::write_rcp));
}
/* ROM definition */
diff --git a/src/mame/drivers/hshavoc.cpp b/src/mame/drivers/hshavoc.cpp
index ba31eb3e063..1a47aa2e568 100644
--- a/src/mame/drivers/hshavoc.cpp
+++ b/src/mame/drivers/hshavoc.cpp
@@ -98,7 +98,7 @@ INPUT_PORTS_END
ROM_START( hshavoc )
- ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD16_BYTE( "d-25.11a", 0x000000, 0x080000, CRC(6a155060) SHA1(ecb47bd428786e50e300a062b5038f943419a389) )
ROM_LOAD16_BYTE( "d-26.9a", 0x000001, 0x080000, CRC(1afa84fe) SHA1(041296e0360b7747aedc2d948c39e06ba03a7d08) )
diff --git a/src/mame/drivers/ht68k.cpp b/src/mame/drivers/ht68k.cpp
index 05c91f9eace..6f5a8f64a8b 100644
--- a/src/mame/drivers/ht68k.cpp
+++ b/src/mame/drivers/ht68k.cpp
@@ -130,32 +130,31 @@ static void ht68k_floppies(device_slot_interface &device)
}
-void ht68k_state::ht68k(machine_config &config)
-{
+MACHINE_CONFIG_START(ht68k_state::ht68k)
/* basic machine hardware */
- M68000(config, m_maincpu, 8_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &ht68k_state::ht68k_mem);
+ MCFG_DEVICE_ADD("maincpu", M68000, 8_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(ht68k_mem)
/* video hardware */
- MC68681(config, m_duart, 8_MHz_XTAL / 2);
- m_duart->set_clocks(500000, 500000, 1000000, 1000000);
- m_duart->irq_cb().set(FUNC(ht68k_state::duart_irq_handler));
- m_duart->a_tx_cb().set("rs232", FUNC(rs232_port_device::write_txd));
- m_duart->b_tx_cb().set(FUNC(ht68k_state::duart_txb));
- m_duart->outport_cb().set(FUNC(ht68k_state::duart_output));
+ MCFG_DEVICE_ADD("duart68681", MC68681, 8_MHz_XTAL / 2)
+ MCFG_MC68681_SET_EXTERNAL_CLOCKS(500000, 500000, 1000000, 1000000)
+ MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, ht68k_state, duart_irq_handler))
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE("rs232", rs232_port_device, write_txd))
+ MCFG_MC68681_B_TX_CALLBACK(WRITELINE(*this, ht68k_state, duart_txb))
+ MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, ht68k_state, duart_output))
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
rs232.rxd_handler().set(m_duart, FUNC(mc68681_device::rx_a_w));
WD1770(config, m_fdc, 8_MHz_XTAL);
- FLOPPY_CONNECTOR(config, "wd1770:0", ht68k_floppies, "525dd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "wd1770:1", ht68k_floppies, "525dd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "wd1770:2", ht68k_floppies, "525dd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "wd1770:3", ht68k_floppies, "525dd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("wd1770:0", ht68k_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1770:1", ht68k_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1770:2", ht68k_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1770:3", ht68k_floppies, "525dd", floppy_image_device::default_floppy_formats)
- SOFTWARE_LIST(config, "flop525_list").set_original("ht68k");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop525_list", "ht68k")
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( ht68k )
diff --git a/src/mame/drivers/huebler.cpp b/src/mame/drivers/huebler.cpp
index f8ce25a5d03..ff273669060 100644
--- a/src/mame/drivers/huebler.cpp
+++ b/src/mame/drivers/huebler.cpp
@@ -311,22 +311,21 @@ static GFXDECODE_START( gfx_amu880 )
GFXDECODE_END
-void amu880_state::amu880(machine_config &config)
-{
+MACHINE_CONFIG_START(amu880_state::amu880)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(10'000'000)/4); // U880D
m_maincpu->set_addrmap(AS_PROGRAM, &amu880_state::amu880_mem);
m_maincpu->set_addrmap(AS_IO, &amu880_state::amu880_io);
m_maincpu->set_daisy_config(amu880_daisy_chain);
- TIMER(config, "keyboard").configure_periodic(FUNC(amu880_state::keyboard_tick), attotime::from_hz(1500));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", amu880_state, keyboard_tick, attotime::from_hz(1500))
/* video hardware */
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(amu880_state::screen_update));
- screen.set_raw(9000000, 576, 0*6, 64*6, 320, 0*10, 24*10);
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(amu880_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(9000000, 576, 0*6, 64*6, 320, 0*10, 24*10)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_amu880);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_amu880)
PALETTE(config, m_palette, palette_device::MONOCHROME);
/* devices */
@@ -346,14 +345,14 @@ void amu880_state::amu880(machine_config &config)
m_z80sio->out_txda_callback().set(FUNC(amu880_state::cassette_w));
m_z80sio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
- TIMER(config, "tape").configure_periodic(FUNC(amu880_state::tape_tick), attotime::from_hz(44100));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", amu880_state, tape_tick, attotime::from_hz(44100))
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K");
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/hunter2.cpp b/src/mame/drivers/hunter2.cpp
index 5271e19bd86..713f03d4914 100644
--- a/src/mame/drivers/hunter2.cpp
+++ b/src/mame/drivers/hunter2.cpp
@@ -378,42 +378,42 @@ WRITE_LINE_MEMBER(hunter2_state::rxd_w)
m_maincpu->set_input_line(NSC800_RSTB, ASSERT_LINE);
}
-void hunter2_state::hunter2(machine_config &config)
-{
+MACHINE_CONFIG_START(hunter2_state::hunter2)
/* basic machine hardware */
- NSC800(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &hunter2_state::hunter2_mem);
- m_maincpu->set_addrmap(AS_IO, &hunter2_state::hunter2_io);
+ MCFG_DEVICE_ADD("maincpu", NSC800, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(hunter2_mem)
+ MCFG_DEVICE_IO_MAP(hunter2_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(80);
- screen.set_screen_update("lcdc", FUNC(hd61830_device::screen_update));
- screen.set_size(240, 128);
- screen.set_visarea(0, 239, 0, 63);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(80)
+ MCFG_SCREEN_UPDATE_DEVICE("lcdc", hd61830_device, screen_update)
+ MCFG_SCREEN_SIZE(240, 128)
+ MCFG_SCREEN_VISIBLE_AREA(0, 239, 0, 63)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(hunter2_state::hunter2_palette), 2);
- hd61830_device &hd61830(HD61830(config, "lcdc", XTAL(4'915'200)/2/2)); // unknown clock
- hd61830.set_screen("screen");
+ MCFG_DEVICE_ADD("lcdc", HD61830, XTAL(4'915'200)/2/2) // unknown clock
+ MCFG_VIDEO_SET_SCREEN("screen")
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
- mm58274c_device &rtc(MM58274C(config, "rtc", 0));
- // this is all guess
- rtc.set_mode24(0); // 12 hour
- rtc.set_day1(1); // monday
-
- nsc810_device &iotimer(NSC810(config, "iotimer", 0, XTAL(4'000'000), XTAL(4'000'000)));
- iotimer.portA_read_callback().set(FUNC(hunter2_state::keyboard_r));
- iotimer.portB_read_callback().set(FUNC(hunter2_state::serial_dsr_r));
- iotimer.portB_write_callback().set(FUNC(hunter2_state::keyboard_w));
- iotimer.portC_read_callback().set(FUNC(hunter2_state::serial_rx_r));
- iotimer.timer0_callback().set(FUNC(hunter2_state::timer0_out));
- iotimer.timer1_callback().set(FUNC(hunter2_state::timer1_out));
+ MCFG_DEVICE_ADD("rtc", MM58274C, 0)
+ // this is all a guess
+ MCFG_MM58274C_MODE24(0) // 12 hour
+ MCFG_MM58274C_DAY1(1) // monday
+
+ MCFG_NSC810_ADD("iotimer",XTAL(4'000'000),XTAL(4'000'000))
+ MCFG_NSC810_PORTA_READ(READ8(*this, hunter2_state,keyboard_r))
+ MCFG_NSC810_PORTB_READ(READ8(*this, hunter2_state,serial_dsr_r))
+ MCFG_NSC810_PORTB_WRITE(WRITE8(*this, hunter2_state,keyboard_w))
+ MCFG_NSC810_PORTC_READ(READ8(*this, hunter2_state,serial_rx_r))
+ MCFG_NSC810_TIMER0_OUT(WRITELINE(*this, hunter2_state,timer0_out))
+ MCFG_NSC810_TIMER1_OUT(WRITELINE(*this, hunter2_state,timer1_out))
RS232_PORT(config, m_rs232, default_rs232_devices, nullptr);
m_rs232->cts_handler().set(FUNC(hunter2_state::cts_w));
@@ -425,7 +425,7 @@ void hunter2_state::hunter2(machine_config &config)
ADDRESS_MAP_BANK(config, "bank2").set_map(&hunter2_state::hunter2_banked_mem).set_endianness(ENDIANNESS_LITTLE).set_data_width(8).set_stride(0x4000);
ADDRESS_MAP_BANK(config, "bank3").set_map(&hunter2_state::hunter2_banked_mem).set_endianness(ENDIANNESS_LITTLE).set_data_width(8).set_stride(0x4000);
ADDRESS_MAP_BANK(config, "bank4").set_map(&hunter2_state::hunter2_banked_mem).set_endianness(ENDIANNESS_LITTLE).set_data_width(8).set_stride(0x4000);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( hunter2 )
diff --git a/src/mame/drivers/hvyunit.cpp b/src/mame/drivers/hvyunit.cpp
index 8290f0d6837..1f4b11a2dc7 100644
--- a/src/mame/drivers/hvyunit.cpp
+++ b/src/mame/drivers/hvyunit.cpp
@@ -618,22 +618,22 @@ TIMER_DEVICE_CALLBACK_MEMBER(hvyunit_state::scanline)
*
*************************************/
-void hvyunit_state::hvyunit(machine_config &config)
-{
- Z80(config, m_mastercpu, XTAL(12'000'000)/2); /* 6MHz verified on PCB */
- m_mastercpu->set_addrmap(AS_PROGRAM, &hvyunit_state::master_memory);
- m_mastercpu->set_addrmap(AS_IO, &hvyunit_state::master_io);
- TIMER(config, "scantimer").configure_scanline(FUNC(hvyunit_state::scanline), "screen", 0, 1);
+MACHINE_CONFIG_START(hvyunit_state::hvyunit)
+
+ MCFG_DEVICE_ADD("master", Z80, XTAL(12'000'000)/2) /* 6MHz verified on PCB */
+ MCFG_DEVICE_PROGRAM_MAP(master_memory)
+ MCFG_DEVICE_IO_MAP(master_io)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hvyunit_state, scanline, "screen", 0, 1)
- Z80(config, m_slavecpu, XTAL(12'000'000)/2); /* 6MHz verified on PCB */
- m_slavecpu->set_addrmap(AS_PROGRAM, &hvyunit_state::slave_memory);
- m_slavecpu->set_addrmap(AS_IO, &hvyunit_state::slave_io);
- m_slavecpu->set_vblank_int("screen", FUNC(hvyunit_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("slave", Z80, XTAL(12'000'000)/2) /* 6MHz verified on PCB */
+ MCFG_DEVICE_PROGRAM_MAP(slave_memory)
+ MCFG_DEVICE_IO_MAP(slave_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", hvyunit_state, irq0_line_hold)
- Z80(config, m_soundcpu, XTAL(12'000'000)/2); /* 6MHz verified on PCB */
- m_soundcpu->set_addrmap(AS_PROGRAM, &hvyunit_state::sound_memory);
- m_soundcpu->set_addrmap(AS_IO, &hvyunit_state::sound_io);
- m_soundcpu->set_vblank_int("screen", FUNC(hvyunit_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/2) /* 6MHz verified on PCB */
+ MCFG_DEVICE_PROGRAM_MAP(sound_memory)
+ MCFG_DEVICE_IO_MAP(sound_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", hvyunit_state, irq0_line_hold)
I80C51(config, m_mermaid, XTAL(12'000'000)/2); /* 6MHz verified on PCB */
m_mermaid->port_in_cb<0>().set(FUNC(hvyunit_state::mermaid_p0_r));
@@ -650,16 +650,16 @@ void hvyunit_state::hvyunit(machine_config &config)
GENERIC_LATCH_8(config, m_slavelatch);
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 16, 240-1);
- screen.set_screen_update(FUNC(hvyunit_state::screen_update));
- screen.screen_vblank().set(FUNC(hvyunit_state::screen_vblank));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(hvyunit_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, hvyunit_state, screen_vblank))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_hvyunit);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 0x800);
@@ -673,8 +673,9 @@ void hvyunit_state::hvyunit(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI);
- YM2203(config, "ymsnd", XTAL(12'000'000)/4).add_route(ALL_OUTPUTS, "mono", 0.80); /* 3MHz verified on PCB */
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2203, XTAL(12'000'000)/4) /* 3MHz verified on PCB */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/hx20.cpp b/src/mame/drivers/hx20.cpp
index cd2dd29ff86..d54e917b70d 100644
--- a/src/mame/drivers/hx20.cpp
+++ b/src/mame/drivers/hx20.cpp
@@ -19,7 +19,7 @@
TODO:
- - m6800.cpp rewrite
+ - m6800.c rewrite
- keyboard interrupt
- LCD controller
- serial
@@ -801,7 +801,7 @@ DEVICE_IMAGE_LOAD_MEMBER(hx20_state, optrom_load)
READ8_MEMBER(hx20_state::optrom_r)
{
if (m_optrom->exists())
- return m_optrom->read_rom(offset);
+ return m_optrom->read_rom(space, offset);
else
return 0;
}
@@ -833,7 +833,7 @@ void hx20_state::machine_start()
//**************************************************************************
//-------------------------------------------------
-// machine_config( hx20 )
+// MACHINE_CONFIG( hx20 )
//-------------------------------------------------
MACHINE_CONFIG_START(hx20_state::hx20)
@@ -859,13 +859,13 @@ MACHINE_CONFIG_START(hx20_state::hx20)
m_subcpu->out_p4_cb().set(FUNC(hx20_state::slave_p4_w));
// video hardware
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(120, 32);
- screen.set_visarea(0, 120-1, 0, 32-1);
- screen.set_screen_update(FUNC(hx20_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD(SCREEN_TAG, LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(120, 32)
+ MCFG_SCREEN_VISIBLE_AREA(0, 120-1, 0, 32-1)
+ MCFG_SCREEN_UPDATE_DRIVER(hx20_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(hx20_state::hx20_palette), 2);
@@ -882,11 +882,10 @@ MACHINE_CONFIG_START(hx20_state::hx20)
m_rtc->irq().set(FUNC(hx20_state::rtc_irq_w));
RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr);
- CASSETTE(config, m_cassette);
-
- EPSON_SIO(config, m_sio, "tf20");
- m_sio->rx_callback().set(FUNC(hx20_state::sio_rx_w));
- m_sio->pin_callback().set(FUNC(hx20_state::sio_pin_w));
+ MCFG_CASSETTE_ADD(CASSETTE_TAG)
+ MCFG_EPSON_SIO_ADD("sio", "tf20")
+ MCFG_EPSON_SIO_RX(WRITELINE(*this, hx20_state, sio_rx_w))
+ MCFG_EPSON_SIO_PIN(WRITELINE(*this, hx20_state, sio_pin_w))
// internal ram
RAM(config, RAM_TAG).set_default_size("16K").set_extra_options("32K");
@@ -897,28 +896,27 @@ MACHINE_CONFIG_START(hx20_state::hx20)
MCFG_GENERIC_LOAD(hx20_state, optrom_load)
// software lists
- SOFTWARE_LIST(config, "hx20_opt_list").set_original("hx20_rom");
- SOFTWARE_LIST(config, "epson_cpm_list").set_original("epson_cpm");
+ MCFG_SOFTWARE_LIST_ADD("hx20_opt_list", "hx20_rom")
+ MCFG_SOFTWARE_LIST_ADD("epson_cpm_list", "epson_cpm")
MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( hx20 )
+// MACHINE_CONFIG( hx20 )
//-------------------------------------------------
-void hx20_state::cm6000(machine_config &config)
-{
+MACHINE_CONFIG_START(hx20_state::cm6000)
hx20(config);
// basic machine hardware
m_maincpu->set_addrmap(AS_PROGRAM, &hx20_state::cm6000_mem);
// optional rom
- config.device_remove("optrom");
+ MCFG_DEVICE_REMOVE("optrom")
// software lists
- config.device_remove("epson_cpm_list");
- config.device_remove("hx20_opt_list");
-}
+ MCFG_SOFTWARE_LIST_REMOVE("epson_cpm_list")
+ MCFG_SOFTWARE_LIST_REMOVE("hx20_opt_list")
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/hyhoo.cpp b/src/mame/drivers/hyhoo.cpp
index c8a739f01f9..7e207e19d47 100644
--- a/src/mame/drivers/hyhoo.cpp
+++ b/src/mame/drivers/hyhoo.cpp
@@ -226,23 +226,23 @@ static INPUT_PORTS_START( hyhoo2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
-void hyhoo_state::hyhoo(machine_config &config)
-{
+MACHINE_CONFIG_START(hyhoo_state::hyhoo)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 5000000); /* 5.00 MHz ?? */
- m_maincpu->set_addrmap(AS_PROGRAM, &hyhoo_state::hyhoo_map);
- m_maincpu->set_addrmap(AS_IO, &hyhoo_state::hyhoo_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(hyhoo_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 5000000) /* 5.00 MHz ?? */
+ MCFG_DEVICE_PROGRAM_MAP(hyhoo_map)
+ MCFG_DEVICE_IO_MAP(hyhoo_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", hyhoo_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 16, 240-1);
- m_screen->set_screen_update(FUNC(hyhoo_state::screen_update_hyhoo));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(hyhoo_state, screen_update_hyhoo)
NB1413M3(config, m_nb1413m3, 0, NB1413M3_HYHOO);
@@ -254,11 +254,10 @@ void hyhoo_state::hyhoo(machine_config &config)
aysnd.port_b_read_callback().set_ioport("DSWB");
aysnd.add_route(ALL_OUTPUTS, "speaker", 0.35);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
void hyhoo_state::hyhoo2(machine_config &config)
diff --git a/src/mame/drivers/hyperscan.cpp b/src/mame/drivers/hyperscan.cpp
index 99ff480f937..926c1d1ed55 100644
--- a/src/mame/drivers/hyperscan.cpp
+++ b/src/mame/drivers/hyperscan.cpp
@@ -621,23 +621,22 @@ void hyperscan_state::machine_reset()
}
-void hyperscan_state::hyperscan(machine_config &config)
-{
+MACHINE_CONFIG_START(hyperscan_state::hyperscan)
/* basic machine hardware */
- SCORE7(config, m_maincpu, XTAL(27'000'000) * 4); // 108MHz S+core 7
- m_maincpu->set_addrmap(AS_PROGRAM, &hyperscan_state::spg290_mem);
+ MCFG_DEVICE_ADD("maincpu", SCORE7, XTAL(27'000'000) * 4) // 108MHz S+core 7
+ MCFG_DEVICE_PROGRAM_MAP(spg290_mem)
- SOFTWARE_LIST(config, "cd_list").set_original("hyperscan");
+ MCFG_SOFTWARE_LIST_ADD("cd_list","hyperscan")
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(hyperscan_state::spg290_screen_update));
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.screen_vblank().set(FUNC(hyperscan_state::spg290_vblank_irq));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(hyperscan_state, spg290_screen_update)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, hyperscan_state, spg290_vblank_irq))
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/hyperspt.cpp b/src/mame/drivers/hyperspt.cpp
index ee31d9e5393..6fcec542d85 100644
--- a/src/mame/drivers/hyperspt.cpp
+++ b/src/mame/drivers/hyperspt.cpp
@@ -292,14 +292,14 @@ WRITE_LINE_MEMBER(hyperspt_state::vblank_irq)
m_maincpu->set_input_line(0, ASSERT_LINE);
}
-void hyperspt_state::hyperspt(machine_config &config)
-{
+MACHINE_CONFIG_START(hyperspt_state::hyperspt)
+
/* basic machine hardware */
- KONAMI1(config, m_maincpu, XTAL(18'432'000)/12); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &hyperspt_state::hyperspt_map);
+ MCFG_DEVICE_ADD(m_maincpu, KONAMI1, XTAL(18'432'000)/12) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(hyperspt_map)
- Z80(config, m_audiocpu, XTAL(14'318'181)/4); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &hyperspt_state::hyperspt_sound_map);
+ MCFG_DEVICE_ADD(m_audiocpu, Z80,XTAL(14'318'181)/4) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(hyperspt_sound_map)
ls259_device &mainlatch(LS259(config, "mainlatch")); // F2
mainlatch.q_out_cb<0>().set(FUNC(hyperspt_state::flipscreen_w));
@@ -315,14 +315,14 @@ void hyperspt_state::hyperspt(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(hyperspt_state::screen_update));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(hyperspt_state::vblank_irq));
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(hyperspt_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, hyperspt_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_hyperspt);
PALETTE(config, m_palette, FUNC(hyperspt_state::hyperspt_palette), 16*16+16*16, 32);
@@ -332,19 +332,18 @@ void hyperspt_state::hyperspt(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- TRACKFLD_AUDIO(config, m_soundbrd, 0, m_audiocpu, m_vlm);
+ MCFG_DEVICE_ADD(m_soundbrd, TRACKFLD_AUDIO, 0, m_audiocpu, m_vlm)
- DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD(m_dac, DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
- SN76496(config, m_sn, XTAL(14'318'181)/8); /* verified on pcb */
- m_sn->add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD(m_sn, SN76496, XTAL(14'318'181)/8) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
- VLM5030(config, m_vlm, XTAL(3'579'545)); /* verified on pcb */
- m_vlm->add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_ADD(m_vlm, VLM5030, XTAL(3'579'545)) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
void hyperspt_state::hyprolyb_adpcm_map(address_map &map)
{
@@ -369,28 +368,28 @@ void hyperspt_state::hyprolyb_adpcm_map(address_map &map)
map(0x8000, 0xffff).rom();
}
-void hyperspt_state::hypersptb(machine_config &config)
-{
+
+MACHINE_CONFIG_START(hyperspt_state::hypersptb)
hyperspt(config);
- config.device_remove("vlm");
+ MCFG_DEVICE_REMOVE("vlm")
m_audiocpu->set_addrmap(AS_PROGRAM, address_map_constructor(&std::remove_pointer_t<decltype(this)>::soundb_map, tag(), this));
- M6802(config, "adpcm", XTAL(14'318'181)/8) /* unknown clock */
- .set_addrmap(AS_PROGRAM, &hyperspt_state::hyprolyb_adpcm_map);
+ MCFG_DEVICE_ADD("adpcm", M6802, XTAL(14'318'181)/8) /* unknown clock */
+ MCFG_DEVICE_PROGRAM_MAP(hyprolyb_adpcm_map)
GENERIC_LATCH_8(config, "soundlatch2");
- HYPROLYB_ADPCM(config, "hyprolyb_adpcm", 0);
+ MCFG_DEVICE_ADD("hyprolyb_adpcm", HYPROLYB_ADPCM, 0)
- msm5205_device &msm(MSM5205(config, "msm", 384000));
- msm.vck_legacy_callback().set("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::vck_callback)); /* VCK function */
- msm.set_prescaler_selector(msm5205_device::S96_4B); /* 4 kHz */
- msm.add_route(ALL_OUTPUTS, "speaker", 0.5);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE("hyprolyb_adpcm", hyprolyb_adpcm_device, vck_callback)) /* VCK function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4 kHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+MACHINE_CONFIG_END
-void hyperspt_state::roadf(machine_config &config)
-{
+
+MACHINE_CONFIG_START(hyperspt_state::roadf)
hyperspt(config);
m_maincpu->set_addrmap(AS_PROGRAM, address_map_constructor(&std::remove_pointer_t<decltype(this)>::roadf_map, tag(), this));
@@ -399,8 +398,8 @@ void hyperspt_state::roadf(machine_config &config)
MCFG_VIDEO_START_OVERRIDE(hyperspt_state,roadf)
- config.device_remove("vlm");
-}
+ MCFG_DEVICE_REMOVE("vlm")
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/hyprduel.cpp b/src/mame/drivers/hyprduel.cpp
index 0f31f12ce74..c956983534a 100644
--- a/src/mame/drivers/hyprduel.cpp
+++ b/src/mame/drivers/hyprduel.cpp
@@ -432,32 +432,30 @@ MACHINE_START_MEMBER(hyprduel_state,hyprduel)
m_vblank_end_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(hyprduel_state::vblank_end_callback), this));
}
-void hyprduel_state::i4220_config(machine_config &config)
-{
+MACHINE_CONFIG_START(hyprduel_state::i4220_config)
I4220(config, m_vdp, XTAL(26'666'000));
m_vdp->blit_irq_cb().set(FUNC(hyprduel_state::vdp_blit_end_w));
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_video_attributes(VIDEO_UPDATE_SCANLINE);
- screen.set_refresh_hz(60); // Unknown/Unverified
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(320, 224);
- screen.set_visarea(0, 320-1, FIRST_VISIBLE_LINE, LAST_VISIBLE_LINE);
- screen.set_screen_update("vdp", FUNC(imagetek_i4100_device::screen_update));
- screen.screen_vblank().set("vdp", FUNC(imagetek_i4100_device::screen_eof));
- screen.set_palette(":vdp:palette");
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE)
+ MCFG_SCREEN_REFRESH_RATE(60) // Unknown/Unverified
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(320, 224)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, FIRST_VISIBLE_LINE, LAST_VISIBLE_LINE)
+ MCFG_SCREEN_UPDATE_DEVICE("vdp", imagetek_i4100_device, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("vdp", imagetek_i4100_device, screen_eof))
+ MCFG_SCREEN_PALETTE(":vdp:palette")
+MACHINE_CONFIG_END
-void hyprduel_state::hyprduel(machine_config &config)
-{
- /* basic machine hardware */
- M68000(config, m_maincpu, 20000000/2); /* 10MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &hyprduel_state::hyprduel_map);
+MACHINE_CONFIG_START(hyprduel_state::hyprduel)
- TIMER(config, "scantimer").configure_scanline(FUNC(hyprduel_state::interrupt), "screen", 0, 1);
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", M68000,20000000/2) /* 10MHz */
+ MCFG_DEVICE_PROGRAM_MAP(hyprduel_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hyprduel_state, interrupt, "screen", 0, 1)
- M68000(config, m_subcpu, 20000000/2); /* 10MHz */
- m_subcpu->set_addrmap(AS_PROGRAM, &hyprduel_state::hyprduel_map2);
+ MCFG_DEVICE_ADD("sub", M68000,20000000/2) /* 10MHz */
+ MCFG_DEVICE_PROGRAM_MAP(hyprduel_map2)
MCFG_MACHINE_START_OVERRIDE(hyprduel_state,hyprduel)
@@ -471,21 +469,21 @@ void hyprduel_state::hyprduel(machine_config &config)
ymsnd.irq_handler().set_inputline(m_subcpu, 1);
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.80);
- OKIM6295(config, "oki", 4000000/16/16*132, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.57); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 4000000/16/16*132, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.57)
+MACHINE_CONFIG_END
-void hyprduel_state::magerror(machine_config &config)
-{
- /* basic machine hardware */
- M68000(config, m_maincpu, 20000000/2); /* 10MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &hyprduel_state::magerror_map);
+MACHINE_CONFIG_START(hyprduel_state::magerror)
- TIMER(config, "scantimer").configure_scanline(FUNC(hyprduel_state::interrupt), "screen", 0, 1);
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", M68000,20000000/2) /* 10MHz */
+ MCFG_DEVICE_PROGRAM_MAP(magerror_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hyprduel_state, interrupt, "screen", 0, 1)
- M68000(config, m_subcpu, 20000000/2); /* 10MHz */
- m_subcpu->set_addrmap(AS_PROGRAM, &hyprduel_state::magerror_map2);
- m_subcpu->set_periodic_int(FUNC(hyprduel_state::irq1_line_hold), attotime::from_hz(968)); /* tempo? */
+ MCFG_DEVICE_ADD("sub", M68000,20000000/2) /* 10MHz */
+ MCFG_DEVICE_PROGRAM_MAP(magerror_map2)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(hyprduel_state, irq1_line_hold, 968) /* tempo? */
MCFG_MACHINE_START_OVERRIDE(hyprduel_state,hyprduel)
@@ -495,10 +493,12 @@ void hyprduel_state::magerror(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", 3579545).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("ymsnd", YM2413, 3579545)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
- OKIM6295(config, "oki", 4000000/16/16*132, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.57); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 4000000/16/16*132, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.57)
+MACHINE_CONFIG_END
/***************************************************************************
ROMs Loading
diff --git a/src/mame/drivers/i7000.cpp b/src/mame/drivers/i7000.cpp
index e97a8d0e4e9..916505868d4 100644
--- a/src/mame/drivers/i7000.cpp
+++ b/src/mame/drivers/i7000.cpp
@@ -237,7 +237,7 @@ void i7000_state::machine_start()
if (m_card->exists())
{
// 0x4000 - 0xbfff 32KB ROM
- program.install_read_handler(0x4000, 0xbfff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_card));
+ program.install_read_handler(0x4000, 0xbfff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_card));
}
}
@@ -344,17 +344,18 @@ MC6845_ON_UPDATE_ADDR_CHANGED(i7000_state::crtc_addr)
MACHINE_CONFIG_START(i7000_state::i7000)
/* basic machine hardware */
- NSC800(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &i7000_state::i7000_mem);
- m_maincpu->set_addrmap(AS_IO, &i7000_state::i7000_io);
+ MCFG_DEVICE_ADD("maincpu", NSC800, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(i7000_mem)
+ MCFG_DEVICE_IO_MAP(i7000_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(320, 200); /* 40x25 8x8 chars */
- screen.set_visarea(0, 320-1, 0, 200-1);
- screen.set_screen_update(FUNC(i7000_state::screen_update_i7000));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(320, 200) /* 40x25 8x8 chars */
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
+
+ MCFG_SCREEN_UPDATE_DRIVER(i7000_state, screen_update_i7000)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_i7000);
PALETTE(config, "palette", FUNC(i7000_state::i7000_palette), 2);
@@ -391,7 +392,7 @@ MACHINE_CONFIG_START(i7000_state::i7000)
MCFG_GENERIC_LOAD(i7000_state, i7000_card)
/* Software lists */
- SOFTWARE_LIST(config, "card_list").set_original("i7000_card");
+ MCFG_SOFTWARE_LIST_ADD("card_list", "i7000_card")
MACHINE_CONFIG_END
ROM_START( i7000 )
diff --git a/src/mame/drivers/ibm3153.cpp b/src/mame/drivers/ibm3153.cpp
index fb0406395d3..5312285d329 100644
--- a/src/mame/drivers/ibm3153.cpp
+++ b/src/mame/drivers/ibm3153.cpp
@@ -103,24 +103,23 @@ void ibm3153_state::machine_reset()
{
}
-void ibm3153_state::ibm3153(machine_config &config)
-{
+MACHINE_CONFIG_START(ibm3153_state::ibm3153)
/* basic machine hardware */
- I80C32(config, m_maincpu, XTAL(16'000'000)); // no idea of clock
- m_maincpu->set_addrmap(AS_PROGRAM, &ibm3153_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &ibm3153_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", I80C32, XTAL(16'000'000)) // no idea of clock
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(ibm3153_state::screen_update));
- screen.set_size(640, 240);
- screen.set_visarea(0, 639, 0, 239);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(ibm3153_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(ibm3153_state::ibm3153_palette), 3);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( ibm3153 )
diff --git a/src/mame/drivers/ibm6580.cpp b/src/mame/drivers/ibm6580.cpp
index 8f2639c47b9..f83be36c8d2 100644
--- a/src/mame/drivers/ibm6580.cpp
+++ b/src/mame/drivers/ibm6580.cpp
@@ -109,19 +109,20 @@ Displaywriter System Manual S544-2023-0 (?) -- mentioned in US patents 4648071 a
#define UPD765_TAG "upd765"
-//#define LOG_GENERAL (1U << 0) //defined in logmacro.h already
-#define LOG_KEYBOARD (1U << 1)
-#define LOG_DEBUG (1U << 2)
+#define VERBOSE_DBG 2 /* general debug messages */
-//#define VERBOSE (LOG_DEBUG)
-//#define LOG_OUTPUT_FUNC printf
-#include "logmacro.h"
+#define DBG_LOG(N,M,A) \
+ do { \
+ if(VERBOSE_DBG>=N) \
+ { \
+ if( M ) \
+ logerror("%11.6f at %s: %-10s",machine().time().as_double(),machine().describe_context(),(char*)M ); \
+ logerror A; \
+ } \
+ } while (0)
-#define LOGKBD(...) LOGMASKED(LOG_KEYBOARD, __VA_ARGS__)
-#define LOGDBG(...) LOGMASKED(LOG_DEBUG, __VA_ARGS__)
-
-const uint8_t gfx_expand[16] = {
+uint8_t gfx_expand[16] = {
0x00, 0x03, 0x0c, 0x0f,
0x30, 0x33, 0x3c, 0x3f,
0xc0, 0xc3, 0xcc, 0xcf,
@@ -224,7 +225,7 @@ private:
WRITE8_MEMBER(ibm6580_state::p40_w)
{
- LOG("___ %02x <- %02x\n", 0x40 + (offset << 1), data);
+ DBG_LOG(2,"___", ("%02x <- %02x\n", 0x40 + (offset << 1), data));
switch (offset)
{
@@ -280,14 +281,14 @@ READ8_MEMBER(ibm6580_state::p40_r)
break;
}
- LOGDBG("___ %02x == %02x\n", 0x40 + (offset << 1), data);
+ DBG_LOG(3,"___", ("%02x == %02x\n", 0x40 + (offset << 1), data));
return data;
}
WRITE8_MEMBER(ibm6580_state::video_w)
{
- LOG("Video %02x <- %02x\n", 0xe000 + (offset << 1), data);
+ DBG_LOG(2,"Video", ("%02x <- %02x\n", 0xe000 + (offset << 1), data));
switch (offset)
{
@@ -319,7 +320,7 @@ READ8_MEMBER(ibm6580_state::video_r)
}
if (offset != 8)
- LOG("Video %02x == %02x\n", 0xe000 + (offset << 1), data);
+ DBG_LOG(2,"Video", ("%02x == %02x\n", 0xe000 + (offset << 1), data));
return data;
}
@@ -335,7 +336,7 @@ WRITE_LINE_MEMBER(ibm6580_state::vblank_w)
WRITE16_MEMBER(ibm6580_state::pic_latch_w)
{
- LOG("PIC latch <- %02x\n", data);
+ DBG_LOG(2,"PIC", ("latch <- %02x\n", data));
if (data)
m_p40 |= 8;
@@ -352,7 +353,7 @@ WRITE16_MEMBER(ibm6580_state::pic_latch_w)
WRITE16_MEMBER(ibm6580_state::unk_latch_w)
{
- LOG("UNK latch <- %02x\n", data);
+ DBG_LOG(2,"UNK", ("latch <- %02x\n", data));
m_p40 |= 0x10;
}
@@ -421,7 +422,7 @@ WRITE8_MEMBER(ibm6580_state::led_w)
WRITE8_MEMBER(ibm6580_state::ppi_c_w)
{
- LOG("PPI Port C <- %02x\n", data);
+ DBG_LOG(2,"PPI", ("Port C <- %02x\n", data));
// bit 5 -- acknowledge
// bit 6 -- reset
@@ -441,7 +442,7 @@ READ8_MEMBER(ibm6580_state::ppi_c_r)
data |= (m_kb_strobe << 3);
- LOGDBG("PPI Port C == %02x\n", data);
+ DBG_LOG(3,"PPI", ("Port C == %02x\n", data));
return data;
}
@@ -450,7 +451,7 @@ READ8_MEMBER(ibm6580_state::ppi_a_r)
{
uint8_t data = m_kb_fifo.dequeue();
- LOG("PPI Port A == %02x (fifo full: %d)\n", data, m_kb_fifo.full());
+ DBG_LOG(2,"PPI", ("Port A == %02x (fifo full: %d)\n", data, m_kb_fifo.full()));
return data;
}
@@ -471,7 +472,7 @@ WRITE_LINE_MEMBER(ibm6580_state::kb_strobe_w)
m_kb_strobe = !state;
if (!state && BIT(m_ppi_c, 0)) {
m_kb_fifo.enqueue(m_kb_data);
- LOGKBD("Kbd enqueue %02x (fifo full: %d, m_ppi_c %02x)\n", m_kb_data, m_kb_fifo.full(), m_ppi_c);
+ DBG_LOG(1,"Kbd", ("enqueue %02x (fifo full: %d, m_ppi_c %02x)\n", m_kb_data, m_kb_fifo.full(), m_ppi_c));
}
}
@@ -518,7 +519,7 @@ uint8_t ibm6580_state::floppy_mcu_command()
{
uint8_t data = 0, command = m_floppy_mcu_cr.dequeue(), i;
- LOG("Floppy mcu_command %02x\n", command);
+ DBG_LOG(2,"Floppy", ("mcu_command %02x\n", command));
m_floppy_mcu_sr.clear();
m_floppy_idle = true;
@@ -603,7 +604,7 @@ uint8_t ibm6580_state::floppy_mcu_command()
WRITE8_MEMBER(ibm6580_state::floppy_w)
{
- LOG("Floppy %02x <- %02x\n", 0x8150 + (offset << 1), data);
+ DBG_LOG(2,"Floppy", ("%02x <- %02x\n", 0x8150 + (offset << 1), data));
switch (offset)
{
@@ -617,7 +618,7 @@ WRITE8_MEMBER(ibm6580_state::floppy_w)
break;
case 5: // 815A
- m_fdc->fifo_w(data);
+ m_fdc->fifo_w(space, offset, data);
if (m_floppy_idle)
m_floppy_idle = false;
break;
@@ -646,11 +647,11 @@ READ8_MEMBER(ibm6580_state::floppy_r)
break;
case 4: // 8158
- data = m_fdc->msr_r();
+ data = m_fdc->msr_r(space, offset);
break;
case 5: // 815a
- data = m_fdc->fifo_r();
+ data = m_fdc->fifo_r(space, offset);
break;
case 6: // 815c
@@ -660,20 +661,22 @@ READ8_MEMBER(ibm6580_state::floppy_r)
}
if (offset)
- LOG("Floppy %02x == %02x\n", 0x8150 + (offset << 1), data);
+ DBG_LOG(2,"Floppy", ("%02x == %02x\n", 0x8150 + (offset << 1), data));
else {
floppy_image_device *f = m_flop0->get_device();
if (f)
- LOG("Floppy %02x == %02x (empty %d hdl %d + idle %d irq %d drq %d + dskchg %d idx %d cyl %d)\n",
- 0x8150 + (offset << 1), data,
- m_floppy_mcu_sr.empty(), m_floppy_hdl,
- m_floppy_idle, m_fdc->get_irq(), m_fdc->get_drq(),
- f->dskchg_r(), f->idx_r(), f->get_cyl());
+ DBG_LOG(2,"Floppy", ("%02x == %02x (empty %d hdl %d + idle %d irq %d drq %d + dskchg %d idx %d cyl %d)\n",
+ 0x8150 + (offset << 1), data,
+ m_floppy_mcu_sr.empty(), m_floppy_hdl,
+ m_floppy_idle, m_fdc->get_irq(), m_fdc->get_drq(),
+ f->dskchg_r(), f->idx_r(), f->get_cyl()
+ ));
else
- LOG("Floppy %02x == %02x (idle %d irq %d drq %d)\n",
- 0x8150 + (offset << 1), data,
- m_floppy_idle, m_fdc->get_irq(), m_fdc->get_drq());
+ DBG_LOG(2,"Floppy", ("%02x == %02x (idle %d irq %d drq %d)\n",
+ 0x8150 + (offset << 1), data,
+ m_floppy_idle, m_fdc->get_irq(), m_fdc->get_drq()
+ ));
}
return data;
@@ -878,21 +881,19 @@ static void dw_floppies(device_slot_interface &device)
device.option_add("8sssd", IBM_6360);
}
-void ibm6580_state::ibm6580(machine_config &config)
-{
- I8086(config, m_maincpu, 14.7456_MHz_XTAL / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &ibm6580_state::ibm6580_mem);
- m_maincpu->set_addrmap(AS_IO, &ibm6580_state::ibm6580_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(ibm6580_state::ibm6580)
+ MCFG_DEVICE_ADD("maincpu", I8086, 14.7456_MHz_XTAL / 3)
+ MCFG_DEVICE_PROGRAM_MAP(ibm6580_mem)
+ MCFG_DEVICE_IO_MAP(ibm6580_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
RAM(config, RAM_TAG).set_default_size("128K").set_extra_options("160K,192K,224K,256K,320K,384K");
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(25_MHz_XTAL / 2, 833, 0, 640, 428, 0, 400);
- m_screen->set_screen_update(FUNC(ibm6580_state::screen_update));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set(FUNC(ibm6580_state::vblank_w));
-
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(25_MHz_XTAL / 2, 833, 0, 640, 428, 0, 400)
+ MCFG_SCREEN_UPDATE_DRIVER(ibm6580_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, ibm6580_state, vblank_w))
config.set_default_layout(layout_ibm6580);
PALETTE(config, "palette", FUNC(ibm6580_state::ibm6580_palette), 3);
@@ -906,7 +907,7 @@ void ibm6580_state::ibm6580(machine_config &config)
ppi.out_pc_callback().set(FUNC(ibm6580_state::ppi_c_w));
ppi.in_pc_callback().set(FUNC(ibm6580_state::ppi_c_r));
- PIT8253(config, m_pit8253, 0);
+ MCFG_DEVICE_ADD("pit8253", PIT8253, 0)
DW_KEYBOARD(config, m_kbd, 0);
m_kbd->out_data_handler().set(FUNC(ibm6580_state::kb_data_w));
@@ -919,15 +920,15 @@ void ibm6580_state::ibm6580(machine_config &config)
m_dma8257->out_tc_cb().set(m_fdc, FUNC(upd765a_device::tc_line_w));
m_dma8257->in_memr_cb().set(FUNC(ibm6580_state::memory_read_byte));
m_dma8257->out_memw_cb().set(FUNC(ibm6580_state::memory_write_byte));
- m_dma8257->in_ior_cb<0>().set(m_fdc, FUNC(upd765a_device::dma_r));
- m_dma8257->out_iow_cb<0>().set(m_fdc, FUNC(upd765a_device::dma_w));
+ m_dma8257->in_ior_cb<0>().set(m_fdc, FUNC(upd765a_device::mdma_r));
+ m_dma8257->out_iow_cb<0>().set(m_fdc, FUNC(upd765a_device::mdma_w));
UPD765A(config, m_fdc, 24_MHz_XTAL / 3, false, false);
m_fdc->intrq_wr_callback().set(FUNC(ibm6580_state::floppy_intrq));
// m_fdc->intrq_wr_callback().append(m_pic8259, FUNC(pic8259_device::ir4_w));
m_fdc->drq_wr_callback().set(m_dma8257, FUNC(i8257_device::dreq0_w));
- FLOPPY_CONNECTOR(config, UPD765_TAG ":0", dw_floppies, "8sssd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, UPD765_TAG ":1", dw_floppies, "8sssd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", dw_floppies, "8sssd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", dw_floppies, "8sssd", floppy_image_device::default_floppy_formats)
i8251_device &upd8251a(I8251(config, "upd8251a", 0));
upd8251a.txd_handler().set("rs232a", FUNC(rs232_port_device::write_txd));
@@ -953,8 +954,8 @@ void ibm6580_state::ibm6580(machine_config &config)
rs232b.dsr_handler().set("upd8251b", FUNC(i8251_device::write_dsr));
rs232b.cts_handler().set("upd8251b", FUNC(i8251_device::write_cts));
- SOFTWARE_LIST(config, "flop_list").set_original("ibm6580");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "ibm6580")
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( ibm6580 )
diff --git a/src/mame/drivers/ibmpc.cpp b/src/mame/drivers/ibmpc.cpp
index e9e5e3c330c..17252e45276 100644
--- a/src/mame/drivers/ibmpc.cpp
+++ b/src/mame/drivers/ibmpc.cpp
@@ -295,74 +295,70 @@ static DEVICE_INPUT_DEFAULTS_START(cga)
DEVICE_INPUT_DEFAULTS("DSW0",0x30, 0x20)
DEVICE_INPUT_DEFAULTS_END
-void ibmpc_state::ibm5150(machine_config &config)
-{
+MACHINE_CONFIG_START(ibmpc_state::ibm5150)
/* basic machine hardware */
- I8088(config, m_maincpu, XTAL(14'318'181)/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &ibmpc_state::pc8_map);
- m_maincpu->set_addrmap(AS_IO, &ibmpc_state::pc8_io);
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I8088, XTAL(14'318'181)/3)
+ MCFG_DEVICE_PROGRAM_MAP(pc8_map)
+ MCFG_DEVICE_IO_MAP(pc8_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
- ibm5150_mb_device &mb(IBM5150_MOTHERBOARD(config, "mb", 0));
- mb.set_cputag(m_maincpu);
- mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(cga));
+ MCFG_IBM5150_MOTHERBOARD_ADD("mb","maincpu")
+ MCFG_DEVICE_INPUT_DEFAULTS(cga)
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "cga", false); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, "com", false);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, "fdc_xt", false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "hdc", false);
- ISA8_SLOT(config, "isa5", 0, "mb:isa", pc_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "cga", false) // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "hdc", false)
+ MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
/* keyboard */
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
+ MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
/* software lists */
- SOFTWARE_LIST(config, "disk_list").set_original("ibm5150");
- SOFTWARE_LIST(config, "cass_list").set_original("ibm5150_cass");
-}
+ MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
+ MCFG_SOFTWARE_LIST_ADD("cass_list","ibm5150_cass")
+MACHINE_CONFIG_END
-void ibmpc_state::ibm5140(machine_config &config)
-{
+MACHINE_CONFIG_START(ibmpc_state::ibm5140)
ibm5150(config);
/* software lists */
- SOFTWARE_LIST(config.replace(), "disk_list").set_original("ibm5140");
-}
+ MCFG_DEVICE_REMOVE( "disk_list" )
+ MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5140")
+MACHINE_CONFIG_END
-void ibmpc_state::ibm5160(machine_config &config)
-{
+MACHINE_CONFIG_START(ibmpc_state::ibm5160)
/* basic machine hardware */
- I8088(config, m_maincpu, XTAL(14'318'181)/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &ibmpc_state::pc8_map);
- m_maincpu->set_addrmap(AS_IO, &ibmpc_state::pc8_io);
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
-
- ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
- mb.set_cputag(m_maincpu);
- mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(cga));
-
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "cga", false); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, "com", false);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, "fdc_xt", false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "hdc", false);
- ISA8_SLOT(config, "isa5", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa6", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa7", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa8", 0, "mb:isa", pc_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("maincpu", I8088, XTAL(14'318'181)/3)
+ MCFG_DEVICE_PROGRAM_MAP(pc8_map)
+ MCFG_DEVICE_IO_MAP(pc8_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
+
+ MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu")
+ MCFG_DEVICE_INPUT_DEFAULTS(cga)
+
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "cga", false) // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "hdc", false)
+ MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa6", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa7", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa8", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
/* keyboard */
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
+ MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
/* software lists */
- SOFTWARE_LIST(config, "pc_disk_list").set_original("ibm5150");
-}
+ MCFG_SOFTWARE_LIST_ADD("pc_disk_list","ibm5150")
+MACHINE_CONFIG_END
ROM_START( ibm5150 )
diff --git a/src/mame/drivers/ibmpcjr.cpp b/src/mame/drivers/ibmpcjr.cpp
index caeaea3ba4b..fbb9e3aa502 100644
--- a/src/mame/drivers/ibmpcjr.cpp
+++ b/src/mame/drivers/ibmpcjr.cpp
@@ -571,7 +571,7 @@ void pcjr_state::ibmpcjr_io(address_map &map)
map(0x0040, 0x0043).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
map(0x0060, 0x0063).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0x00a0, 0x00a0).rw(FUNC(pcjr_state::pcjr_nmi_enable_r), FUNC(pcjr_state::pc_nmi_enable_w));
- map(0x00c0, 0x00c0).w("sn76496", FUNC(sn76496_device::write));
+ map(0x00c0, 0x00c0).w("sn76496", FUNC(sn76496_device::command_w));
map(0x00f2, 0x00f2).w(FUNC(pcjr_state::pcjr_fdc_dor_w));
map(0x00f4, 0x00f5).m(m_fdc, FUNC(upd765a_device::map));
map(0x0200, 0x0207).rw("pc_joy", FUNC(pc_joy_device::joy_port_r), FUNC(pc_joy_device::joy_port_w));
@@ -638,14 +638,17 @@ MACHINE_CONFIG_START(pcjr_state::ibmpcjr)
serport.cts_handler().set("ins8250", FUNC(ins8250_uart_device::cts_w));
/* video hardware */
- PCVIDEO_PCJR(config, "pcvideo_pcjr", 0).set_screen("pcvideo_pcjr:screen");
+ MCFG_DEVICE_ADD("pcvideo_pcjr", PCVIDEO_PCJR, 0)
+ MCFG_VIDEO_SET_SCREEN("pcvideo_pcjr:screen")
- GFXDECODE(config, "gfxdecode", "pcvideo_pcjr:palette", gfx_pcjr);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "pcvideo_pcjr:palette", gfx_pcjr)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.80);
- SN76496(config, "sn76496", XTAL(14'318'181)/4).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+ MCFG_DEVICE_ADD("sn76496", SN76496, XTAL(14'318'181)/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
/* printer */
pc_lpt_device &lpt0(PC_LPT(config, "lpt_0"));
@@ -654,15 +657,15 @@ MACHINE_CONFIG_START(pcjr_state::ibmpcjr)
PC_JOY(config, "pc_joy");
/* cassette */
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
UPD765A(config, m_fdc, 8'000'000, false, false);
- FLOPPY_CONNECTOR(config, "fdc:0", pcjr_floppies, "525dd", isa8_fdc_device::floppy_formats, true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", pcjr_floppies, "525dd", isa8_fdc_device::floppy_formats)
+ MCFG_SLOT_FIXED(true)
- PC_KEYB(config, m_keyboard);
- m_keyboard->keypress().set(FUNC(pcjr_state::keyb_interrupt));
+ MCFG_PC_KEYB_ADD("pc_keyboard", WRITELINE(*this, pcjr_state, keyb_interrupt))
/* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cartslot1", generic_plain_slot, "ibmpcjr_cart")
@@ -677,9 +680,9 @@ MACHINE_CONFIG_START(pcjr_state::ibmpcjr)
RAM(config, m_ram).set_default_size("640K").set_extra_options("128K, 256K, 512K");
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("ibmpcjr_cart");
- SOFTWARE_LIST(config, "flop_list").set_original("ibmpcjr_flop");
- SOFTWARE_LIST(config, "pc_list").set_compatible("ibm5150");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","ibmpcjr_cart")
+ MCFG_SOFTWARE_LIST_ADD("flop_list","ibmpcjr_flop")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("pc_list","ibm5150")
MACHINE_CONFIG_END
static GFXDECODE_START( gfx_ibmpcjx )
@@ -687,22 +690,22 @@ static GFXDECODE_START( gfx_ibmpcjx )
GFXDECODE_ENTRY( "kanji", 0x0000, kanji_layout, 3, 1 )
GFXDECODE_END
-void pcjr_state::ibmpcjx(machine_config &config)
-{
+MACHINE_CONFIG_START(pcjr_state::ibmpcjx)
ibmpcjr(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ibmpcjx_map)
+ MCFG_DEVICE_IO_MAP(ibmpcjx_io)
- m_maincpu->set_addrmap(AS_PROGRAM, &pcjr_state::ibmpcjx_map);
- m_maincpu->set_addrmap(AS_IO, &pcjr_state::ibmpcjx_io);
-
- config.device_remove("fdc:0");
- FLOPPY_CONNECTOR(config, "fdc:0", pcjr_floppies, "35dd", isa8_fdc_device::floppy_formats, true);
- FLOPPY_CONNECTOR(config, "fdc:1", pcjr_floppies, "35dd", isa8_fdc_device::floppy_formats, true);
-
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_ibmpcjx);
+ MCFG_DEVICE_REMOVE("fdc:0");
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", pcjr_floppies, "35dd", isa8_fdc_device::floppy_formats)
+ MCFG_SLOT_FIXED(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", pcjr_floppies, "35dd", isa8_fdc_device::floppy_formats)
+ MCFG_SLOT_FIXED(true)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_ibmpcjx)
/* internal ram */
m_ram->set_default_size("512K").set_extra_options(""); // only boots with 512k currently
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/icatel.cpp b/src/mame/drivers/icatel.cpp
index 52581ce4300..2c46896b84d 100644
--- a/src/mame/drivers/icatel.cpp
+++ b/src/mame/drivers/icatel.cpp
@@ -254,8 +254,7 @@ HD44780_PIXEL_UPDATE(icatel_state::icatel_pixel_update)
}
}
-void icatel_state::icatel(machine_config &config)
-{
+MACHINE_CONFIG_START(icatel_state::icatel)
/* basic machine hardware */
I80C31(config, m_maincpu, XTAL(2'097'152));
m_maincpu->set_addrmap(AS_PROGRAM, &icatel_state::i80c31_prg);
@@ -267,21 +266,21 @@ void icatel_state::icatel(machine_config &config)
m_maincpu->port_out_cb<3>().set(FUNC(icatel_state::i80c31_p3_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
- screen.set_size(6*16, 9*2);
- screen.set_visarea(0, 6*16-1, 0, 9*2-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
+ MCFG_SCREEN_SIZE(6*16, 9*2)
+ MCFG_SCREEN_VISIBLE_AREA(0, 6*16-1, 0, 9*2-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(icatel_state::icatel_palette), 2);
GFXDECODE(config, "gfxdecode", "palette", gfx_icatel);
- HD44780(config, m_lcdc, 0);
- m_lcdc->set_lcd_size(2, 16);
- m_lcdc->set_pixel_update_cb(FUNC(icatel_state::icatel_pixel_update), this);
-}
+ MCFG_HD44780_ADD("hd44780")
+ MCFG_HD44780_LCD_SIZE(2, 16)
+ MCFG_HD44780_PIXEL_UPDATE_CB(icatel_state, icatel_pixel_update)
+MACHINE_CONFIG_END
ROM_START( icatel )
ROM_REGION( 0x8000, "maincpu", 0 )
diff --git a/src/mame/drivers/ice_bozopail.cpp b/src/mame/drivers/ice_bozopail.cpp
index 94eba8818c4..fded5792af3 100644
--- a/src/mame/drivers/ice_bozopail.cpp
+++ b/src/mame/drivers/ice_bozopail.cpp
@@ -58,15 +58,15 @@ void ice_bozopail_state::machine_reset()
}
-void ice_bozopail_state::ice_bozo(machine_config &config)
-{
+MACHINE_CONFIG_START(ice_bozopail_state::ice_bozo)
+
/* basic machine hardware */
- MC68HC11(config, m_maincpu, 8000000); // unknown clock
- m_maincpu->set_addrmap(AS_PROGRAM, &ice_bozopail_state::ice_bozo_map);
+ MCFG_DEVICE_ADD("maincpu", MC68HC11, 8000000) // unknown clock
+ MCFG_DEVICE_PROGRAM_MAP(ice_bozo_map)
/* sound hardware */
SPEAKER(config, "mono").front_center();
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ice_tbd.cpp b/src/mame/drivers/ice_tbd.cpp
index 33922745ace..22955fde737 100644
--- a/src/mame/drivers/ice_tbd.cpp
+++ b/src/mame/drivers/ice_tbd.cpp
@@ -66,18 +66,18 @@ void ice_tbd_state::machine_reset()
{
}
-void ice_tbd_state::ice_tbd(machine_config &config)
-{
+MACHINE_CONFIG_START(ice_tbd_state::ice_tbd)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 8000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &ice_tbd_state::ice_tbd_map);
- m_maincpu->set_addrmap(AS_IO, &ice_tbd_state::ice_tbd_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80,8000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(ice_tbd_map)
+ MCFG_DEVICE_IO_MAP(ice_tbd_io_map)
i8255_device &ppi(I8255(config, "ppi"));
ppi.out_pa_callback().set_nop(); // ?
ppi.out_pb_callback().set_nop(); // ?
ppi.in_pc_callback().set_constant(0); // ?
-}
+MACHINE_CONFIG_END
ROM_START( ice_tbd )
diff --git a/src/mame/drivers/icebox.cpp b/src/mame/drivers/icebox.cpp
index 9c2a70ee9ea..6637f7233e8 100644
--- a/src/mame/drivers/icebox.cpp
+++ b/src/mame/drivers/icebox.cpp
@@ -251,8 +251,8 @@ INPUT_PORTS_END
void icebox_state::machine_reset()
{
u8 data = ioport("BAUD")->read();
- m_brg->str_w(data & 15); // Terminal
- m_brg->stt_w((data >> 4) & 15); // Printer
+ m_brg->write_str(data & 15); // Terminal
+ m_brg->write_stt((data >> 4) & 15); // Printer
m_maincpu->set_pc(0xf000);
m_f1 = 0;
}
@@ -307,12 +307,11 @@ static DEVICE_INPUT_DEFAULTS_START( terminal ) // we need to remove bit 7 which
DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_2 )
DEVICE_INPUT_DEFAULTS_END
-void icebox_state::icebox(machine_config &config)
-{
+MACHINE_CONFIG_START(icebox_state::icebox)
/* basic machine hardware */
- Z80(config, m_maincpu, 9'830'400 / 4); // unknown divisor
- m_maincpu->set_addrmap(AS_PROGRAM, &icebox_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &icebox_state::io_map);
+ MCFG_DEVICE_ADD("maincpu",Z80, 9'830'400 / 4) // unknown divisor
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
I8251(config, m_uart0, 0);
m_uart0->txd_handler().set("rs232a", FUNC(rs232_port_device::write_txd));
@@ -343,9 +342,11 @@ void icebox_state::icebox(machine_config &config)
FD1771(config, m_fdc, 4_MHz_XTAL / 2);
m_fdc->drq_wr_callback().set(FUNC(icebox_state::drq_w));
- FLOPPY_CONNECTOR(config, m_floppy0, floppies, "flop", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, m_floppy1, floppies, "flop", floppy_image_device::default_floppy_formats).enable_sound(true);
-}
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy0, floppies, "flop", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy1, floppies, "flop", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( icebox )
diff --git a/src/mame/drivers/icecold.cpp b/src/mame/drivers/icecold.cpp
index 055d81782eb..a273f44e262 100644
--- a/src/mame/drivers/icecold.cpp
+++ b/src/mame/drivers/icecold.cpp
@@ -265,9 +265,9 @@ READ8_MEMBER( icecold_state::kbd_r )
WRITE8_MEMBER( icecold_state::snd_ctrl_w )
{
if (m_ay_ctrl & ~data & 0x04)
- m_ay8910[0]->data_address_w(m_ay_ctrl & 0x01, m_sound_latch);
+ m_ay8910[0]->data_address_w(space, m_ay_ctrl & 0x01, m_sound_latch);
if (m_ay_ctrl & ~data & 0x20)
- m_ay8910[1]->data_address_w((m_ay_ctrl>>3) & 0x01, m_sound_latch);
+ m_ay8910[1]->data_address_w(space, (m_ay_ctrl>>3) & 0x01, m_sound_latch);
m_ay_ctrl = data;
}
@@ -280,9 +280,9 @@ WRITE8_MEMBER( icecold_state::ay_w )
READ8_MEMBER( icecold_state::ay_r )
{
if (m_ay_ctrl & 0x02)
- return m_ay8910[0]->data_r();
+ return m_ay8910[0]->data_r(space, 0);
if (m_ay_ctrl & 0x10)
- return m_ay8910[1]->data_r();
+ return m_ay8910[1]->data_r(space, 0);
return 0;
}
diff --git a/src/mame/drivers/ichiban.cpp b/src/mame/drivers/ichiban.cpp
index 82e1d83219d..5b2229756a1 100644
--- a/src/mame/drivers/ichiban.cpp
+++ b/src/mame/drivers/ichiban.cpp
@@ -5,6 +5,8 @@
Ichi Ban Jyan
Excel, 199?
+TODO: code is encrypted (data, not opcodes)
+
PCB Layout
----------
@@ -36,7 +38,6 @@ HSync - 15.510kHz
#include "emu.h"
#include "cpu/z80/z80.h"
-#include "machine/nvram.h"
#include "sound/ay8910.h"
#include "sound/ym2413.h"
#include "emupal.h"
@@ -66,9 +67,8 @@ private:
virtual void video_start() override;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void mem_map(address_map &map);
- void io_map(address_map &map);
- void opcodes_map(address_map &map);
+ void ichibanjyan_io(address_map &map);
+ void ichibanjyan_map(address_map &map);
};
void ichibanjyan_state::video_start()
@@ -81,24 +81,14 @@ uint32_t ichibanjyan_state::screen_update( screen_device &screen, bitmap_ind16 &
}
-void ichibanjyan_state::mem_map(address_map &map)
+void ichibanjyan_state::ichibanjyan_map(address_map &map)
{
- map(0x0000, 0x6fff).rom().region("code", 0x10000);
- map(0x7000, 0x7fff).ram().share("nvram");
- map(0x8000, 0xffff).ram();
+ map(0x0000, 0x7fff).bankr("bank1");
}
-void ichibanjyan_state::io_map(address_map &map)
+void ichibanjyan_state::ichibanjyan_io(address_map &map)
{
map.global_mask(0xff);
- map(0x01, 0x01).r("aysnd", FUNC(ym2149_device::data_r));
- map(0x02, 0x03).w("aysnd", FUNC(ym2149_device::data_address_w));
- map(0x16, 0x17).w("ymsnd", FUNC(ym2413_device::write));
-}
-
-void ichibanjyan_state::opcodes_map(address_map &map)
-{
- map(0x0000, 0x6fff).rom().region("code", 0);
}
static INPUT_PORTS_START( ichibanjyan )
@@ -123,6 +113,9 @@ GFXDECODE_END
void ichibanjyan_state::machine_start()
{
+ uint8_t *ROM = memregion("code")->base();
+
+ membank("bank1")->configure_entries(0, 4, ROM, 0x8000);
}
void ichibanjyan_state::machine_reset()
@@ -130,23 +123,23 @@ void ichibanjyan_state::machine_reset()
}
-void ichibanjyan_state::ichibanjyan(machine_config &config)
-{
- /* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLOCK/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &ichibanjyan_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &ichibanjyan_state::io_map);
- m_maincpu->set_addrmap(AS_OPCODES, &ichibanjyan_state::opcodes_map);
+MACHINE_CONFIG_START(ichibanjyan_state::ichibanjyan)
- NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu",Z80,MAIN_CLOCK/3)
+ MCFG_DEVICE_PROGRAM_MAP(ichibanjyan_map)
+ MCFG_DEVICE_IO_MAP(ichibanjyan_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(MAIN_CLOCK/3, 396, 0, 320, 256, 0, 224); // dimensions guessed
- screen.set_screen_update(FUNC(ichibanjyan_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_UPDATE_DRIVER(ichibanjyan_state, screen_update)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, "gfxdecode", "palette", gfx_ichibanjyan);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ichibanjyan)
PALETTE(config, "palette", palette_device::RGB_444_PROMS, "proms", 512);
@@ -154,8 +147,9 @@ void ichibanjyan_state::ichibanjyan(machine_config &config)
SPEAKER(config, "mono").front_center();
YM2149(config, "aysnd", MAIN_CLOCK/12).add_route(ALL_OUTPUTS, "mono", 0.30);
- YM2413(config, "ymsnd", MAIN_CLOCK/6).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2413, MAIN_CLOCK/6)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
/***************************************************************************
@@ -165,7 +159,7 @@ void ichibanjyan_state::ichibanjyan(machine_config &config)
***************************************************************************/
ROM_START( ichiban )
- ROM_REGION( 0x20000, "code", 0 ) // opcodes in first half are mixed with pseudo-random garbage
+ ROM_REGION( 0x20000, "code", 0 )
ROM_LOAD( "3.u15", 0, 0x20000, CRC(76240568) SHA1(cf055d1eaae25661a49ec4722a2c7caca862e66a) )
ROM_REGION( 0x20000, "gfx1", 0 )
diff --git a/src/mame/drivers/idsa.cpp b/src/mame/drivers/idsa.cpp
index 6598c92e068..dc570538a7b 100644
--- a/src/mame/drivers/idsa.cpp
+++ b/src/mame/drivers/idsa.cpp
@@ -332,18 +332,17 @@ void idsa_state::machine_reset()
m_irqcnt = 0;
}
-void idsa_state::idsa(machine_config &config)
-{
+MACHINE_CONFIG_START(idsa_state::idsa)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(8'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &idsa_state::maincpu_map);
- m_maincpu->set_addrmap(AS_IO, &idsa_state::maincpu_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(8'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(maincpu_map)
+ MCFG_DEVICE_IO_MAP(maincpu_io_map)
- clock_device &irqclock(CLOCK(config, "irqclock", XTAL(8'000'000) / 4));
- irqclock.signal_handler().set(FUNC(idsa_state::clock_w));
+ MCFG_DEVICE_ADD("irqclk", CLOCK, XTAL(8'000'000) / 4 )
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, idsa_state, clock_w))
/* video hardware */
- //config.set_default_layout()
+ //MCFG_DEFAULT_LAYOUT()
/* sound hardware */
genpin_audio(config);
@@ -361,7 +360,7 @@ void idsa_state::idsa(machine_config &config)
aysnd2.port_a_write_callback().set(FUNC(idsa_state::ay2_a_w));
aysnd2.port_b_write_callback().set(FUNC(idsa_state::ay2_b_w));
aysnd2.add_route(ALL_OUTPUTS, "rspeaker", 0.75);
-}
+MACHINE_CONFIG_END
void idsa_state::bsktbllp(machine_config &config)
{
diff --git a/src/mame/drivers/ie15.cpp b/src/mame/drivers/ie15.cpp
index 4a399674dcd..1af652ce245 100644
--- a/src/mame/drivers/ie15.cpp
+++ b/src/mame/drivers/ie15.cpp
@@ -32,10 +32,9 @@ private:
};
-void ie15_state::ie15(machine_config &config)
-{
- IE15(config, m_ie15, 0);
-}
+MACHINE_CONFIG_START(ie15_state::ie15)
+ MCFG_DEVICE_ADD("ie15", IE15, 0)
+MACHINE_CONFIG_END
ROM_START(ie15)
diff --git a/src/mame/drivers/if800.cpp b/src/mame/drivers/if800.cpp
index 48545ba6916..fe36af9d1e7 100644
--- a/src/mame/drivers/if800.cpp
+++ b/src/mame/drivers/if800.cpp
@@ -90,31 +90,31 @@ void if800_state::upd7220_map(address_map &map)
map(0x00000, 0x3ffff).ram().share("video_ram");
}
-void if800_state::if800(machine_config &config)
-{
+MACHINE_CONFIG_START(if800_state::if800)
/* basic machine hardware */
- I8086(config, m_maincpu, 8000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &if800_state::if800_map);
- m_maincpu->set_addrmap(AS_IO, &if800_state::if800_io);
+ MCFG_DEVICE_ADD("maincpu", I8086, 8000000)
+ MCFG_DEVICE_PROGRAM_MAP(if800_map)
+ MCFG_DEVICE_IO_MAP(if800_io)
// PIC8259(config, "pic8259", 0);
UPD7220(config, m_hgdc, 8000000/4);
m_hgdc->set_addrmap(0, &if800_state::upd7220_map);
- m_hgdc->set_display_pixels(FUNC(if800_state::hgdc_display_pixels));
+ m_hgdc->set_display_pixels_callback(FUNC(if800_state::hgdc_display_pixels), this);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_screen_update("upd7220", FUNC(upd7220_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DEVICE("upd7220", upd7220_device, screen_update)
- PALETTE(config, m_palette).set_entries(8);
+ MCFG_PALETTE_ADD("palette", 8)
+// MCFG_PALETTE_INIT(black_and_white)
// MCFG_VIDEO_START_OVERRIDE(if800_state,if800)
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( if800 )
diff --git a/src/mame/drivers/igs009.cpp b/src/mame/drivers/igs009.cpp
index 226392ab8cc..d2ab5786bb9 100644
--- a/src/mame/drivers/igs009.cpp
+++ b/src/mame/drivers/igs009.cpp
@@ -828,12 +828,11 @@ WRITE_LINE_MEMBER(igs009_state::vblank_irq)
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
-void igs009_state::jingbell(machine_config &config)
-{
+MACHINE_CONFIG_START(igs009_state::jingbell)
/* basic machine hardware */
- Z180(config, m_maincpu, XTAL(12'000'000) / 2); /* HD64180RP8, 8 MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &igs009_state::jingbell_map);
- m_maincpu->set_addrmap(AS_IO, &igs009_state::jingbell_portmap);
+ MCFG_DEVICE_ADD("maincpu", Z180, XTAL(12'000'000) / 2) /* HD64180RP8, 8 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(jingbell_map)
+ MCFG_DEVICE_IO_MAP(jingbell_portmap)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -848,36 +847,38 @@ void igs009_state::jingbell(machine_config &config)
ppi1.out_pc_callback().set(FUNC(igs009_state::leds_w));
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 256-16-1);
- m_screen->set_screen_update(FUNC(igs009_state::screen_update));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(igs009_state::vblank_irq));
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_jingbell);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igs009_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, igs009_state, vblank_irq))
+
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_jingbell)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x400);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- OKIM6295(config, "oki", XTAL(12'000'000) / 12, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(12'000'000) / 12, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void igs009_state::gp98(machine_config &config)
-{
+MACHINE_CONFIG_START(igs009_state::gp98)
jingbell(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &igs009_state::gp98_portmap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(gp98_portmap)
- m_gfxdecode->set_info(gfx_gp98);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_gp98)
MCFG_VIDEO_START_OVERRIDE(igs009_state,gp98)
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/igs011.cpp b/src/mame/drivers/igs011.cpp
index 432e8e12bcd..b19a09763c8 100644
--- a/src/mame/drivers/igs011.cpp
+++ b/src/mame/drivers/igs011.cpp
@@ -246,6 +246,8 @@ private:
DECLARE_WRITE16_MEMBER(vbowl_link_3_w);
uint16_t igs_dips_r(int NUM);
DECLARE_WRITE16_MEMBER(lhb_okibank_w);
+ DECLARE_READ16_MEMBER(ics2115_word_r);
+ DECLARE_WRITE16_MEMBER(ics2115_word_w);
DECLARE_WRITE_LINE_MEMBER(sound_irq);
TIMER_DEVICE_CALLBACK_MEMBER(lev5_timer_irq_cb);
TIMER_DEVICE_CALLBACK_MEMBER(lhb_timer_irq_cb);
@@ -2838,6 +2840,35 @@ void igs011_state::nkishusp_mem(address_map &map)
}
+
+/* trap15's note:
+ * TODO: change this horrible device-> chain to be proper.
+ */
+READ16_MEMBER(igs011_state::ics2115_word_r)
+{
+ switch(offset)
+ {
+ case 0: return m_ics->read(space, (offs_t)0);
+ case 1: return m_ics->read(space, (offs_t)1);
+ case 2: return (m_ics->read(space, (offs_t)3) << 8) | m_ics->read(space, (offs_t)2);
+ }
+ return 0xff;
+}
+
+WRITE16_MEMBER(igs011_state::ics2115_word_w)
+{
+ switch(offset)
+ {
+ case 1:
+ if (ACCESSING_BITS_0_7) m_ics->write(space, 1,data);
+ break;
+ case 2:
+ if (ACCESSING_BITS_0_7) m_ics->write(space, 2,data);
+ if (ACCESSING_BITS_8_15) m_ics->write(space, 3,data>>8);
+ break;
+ }
+}
+
READ16_MEMBER(igs011_state::vbowl_unk_r)
{
return 0xffff;
@@ -2906,7 +2937,7 @@ void igs011_state::vbowl_mem(address_map &map)
map(0x400000, 0x400fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
map(0x401000, 0x401fff).rw(m_palette, FUNC(palette_device::read8_ext), FUNC(palette_device::write8_ext)).umask16(0x00ff).share("palette_ext");
map(0x520000, 0x520001).portr("COIN");
- map(0x600000, 0x600007).rw(m_ics, FUNC(ics2115_device::word_r), FUNC(ics2115_device::word_w));
+ map(0x600000, 0x600007).rw(FUNC(igs011_state::ics2115_word_r), FUNC(igs011_state::ics2115_word_w));
map(0x700000, 0x700003).ram().share("vbowl_trackball");
map(0x700004, 0x700005).w(FUNC(igs011_state::vbowl_pen_hi_w));
map(0x800000, 0x800003).w(FUNC(igs011_state::vbowl_igs003_w));
@@ -4232,7 +4263,7 @@ void igs011_state::lhb2(machine_config &config)
m_maincpu->set_vblank_int("screen", FUNC(igs011_state::irq6_line_hold));
TIMER(config, "timer_irq").configure_periodic(FUNC(igs011_state::lev5_timer_irq_cb), attotime::from_hz(240)); // lev5 frequency drives the music tempo
-// GFXDECODE(config, "gfxdecode", m_palette, gfx_igs011_hi);
+// MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_igs011_hi)
YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 2.0);
}
@@ -4247,7 +4278,7 @@ void igs011_state::nkishusp(machine_config &config)
// VSync 60.0052Hz, HSync 15.620kHz
-// GFXDECODE(config, "gfxdecode", m_palette, gfx_igs011_hi);
+// MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_igs011_hi)
YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 2.0);
}
diff --git a/src/mame/drivers/igs017.cpp b/src/mame/drivers/igs017.cpp
index 55f846f3e4b..94d3949100b 100644
--- a/src/mame/drivers/igs017.cpp
+++ b/src/mame/drivers/igs017.cpp
@@ -596,12 +596,12 @@ private:
void decrypted_opcodes_map(address_map &map);
void iqblocka_io(address_map &map);
void iqblocka_map(address_map &map);
- void lhzb2_map(address_map &map);
- void lhzb2a_map(address_map &map);
- void mgcs_map(address_map &map);
+ void lhzb2(address_map &map);
+ void lhzb2a(address_map &map);
+ void mgcs(address_map &map);
void mgdha_map(address_map &map);
- void sdmg2_map(address_map &map);
- void slqz2_map(address_map &map);
+ void sdmg2(address_map &map);
+ void slqz2(address_map &map);
void spkrform_io(address_map &map);
void spkrform_map(address_map &map);
void tjsb_io(address_map &map);
@@ -1812,7 +1812,7 @@ READ8_MEMBER(igs017_state::mgcs_keys_r)
return 0xff;
}
-void igs017_state::mgcs_map(address_map &map)
+void igs017_state::mgcs(address_map &map)
{
map(0x000000, 0x07ffff).rom();
map(0x300000, 0x303fff).ram();
@@ -1895,7 +1895,7 @@ READ16_MEMBER(igs017_state::sdmg2_magic_r)
return 0xffff;
}
-void igs017_state::sdmg2_map(address_map &map)
+void igs017_state::sdmg2(address_map &map)
{
map(0x000000, 0x07ffff).rom();
map(0x1f0000, 0x1fffff).ram();
@@ -2202,7 +2202,7 @@ READ16_MEMBER(igs017_state::lhzb2_magic_r)
return 0xffff;
}
-void igs017_state::lhzb2_map(address_map &map)
+void igs017_state::lhzb2(address_map &map)
{
map(0x000000, 0x07ffff).rom();
map(0x500000, 0x503fff).ram();
@@ -2297,7 +2297,7 @@ WRITE16_MEMBER(igs017_state::lhzb2a_input_select_w)
}
}
-void igs017_state::lhzb2a_map(address_map &map)
+void igs017_state::lhzb2a(address_map &map)
{
map(0x000000, 0x07ffff).rom();
@@ -2368,7 +2368,7 @@ READ16_MEMBER(igs017_state::slqz2_magic_r)
return 0xffff;
}
-void igs017_state::slqz2_map(address_map &map)
+void igs017_state::slqz2(address_map &map)
{
map(0x000000, 0x07ffff).rom();
map(0x100000, 0x103fff).ram();
@@ -3516,12 +3516,11 @@ MACHINE_RESET_MEMBER(igs017_state,iqblocka)
m_input_select = 0;
}
-void igs017_state::iqblocka(machine_config &config)
-{
- Z180(config, m_maincpu, XTAL(16'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::iqblocka_map);
- m_maincpu->set_addrmap(AS_IO, &igs017_state::iqblocka_io);
- TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
+MACHINE_CONFIG_START(igs017_state::iqblocka)
+ MCFG_DEVICE_ADD("maincpu", Z180, XTAL(16'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(iqblocka_map)
+ MCFG_DEVICE_IO_MAP(iqblocka_io)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, iqblocka_interrupt, "screen", 0, 1)
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,iqblocka)
@@ -3547,13 +3546,13 @@ void igs017_state::iqblocka(machine_config &config)
IGS_INCDEC(config, m_igs_incdec, 0);
// video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 240-1);
- m_screen->set_screen_update(FUNC(igs017_state::screen_update_igs017));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x100*2);
@@ -3562,10 +3561,12 @@ void igs017_state::iqblocka(machine_config &config)
// sound
SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 0.5);
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
- OKIM6295(config, m_oki, XTAL(16'000'000) / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000) / 16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
void igs017_state::iqblockf(machine_config &config)
{
@@ -3586,11 +3587,11 @@ void igs017_state::genius6(machine_config &config)
m_igs_bitswap->set_m3_bits(3, 3, ~5, ~6, ~15);
}
-void igs017_state::starzan(machine_config &config)
-{
+MACHINE_CONFIG_START(igs017_state::starzan)
iqblocka(config);
- m_maincpu->set_addrmap(AS_OPCODES, &igs017_state::decrypted_opcodes_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+MACHINE_CONFIG_END
// mgcs
@@ -3614,11 +3615,10 @@ MACHINE_RESET_MEMBER(igs017_state,mgcs)
memset(m_igs_magic, 0, sizeof(m_igs_magic));
}
-void igs017_state::mgcs(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(22'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::mgcs_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
+MACHINE_CONFIG_START(igs017_state::mgcs)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(22'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(mgcs)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgcs_interrupt, "screen", 0, 1)
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,mgcs)
@@ -3627,16 +3627,16 @@ void igs017_state::mgcs(machine_config &config)
ppi.in_pa_callback().set_ioport("COINS");
ppi.in_pb_callback().set(FUNC(igs017_state::mgcs_keys_r));
- TICKET_DISPENSER(config, m_hopperdev, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW );
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW )
// video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 240-1);
- m_screen->set_screen_update(FUNC(igs017_state::screen_update_igs017));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x100*2);
@@ -3646,17 +3646,17 @@ void igs017_state::mgcs(machine_config &config)
// sound
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(8'000'000) / 8, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(8'000'000) / 8, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
// lhzb2
-void igs017_state::lhzb2(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(22'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::lhzb2_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
+MACHINE_CONFIG_START(igs017_state::lhzb2)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(22'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(lhzb2)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgcs_interrupt, "screen", 0, 1)
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,mgcs)
@@ -3673,13 +3673,13 @@ void igs017_state::lhzb2(machine_config &config)
IGS022(config, m_igs022, 0);
// video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 240-1);
- m_screen->set_screen_update(FUNC(igs017_state::screen_update_igs017));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x100*2);
@@ -3689,8 +3689,9 @@ void igs017_state::lhzb2(machine_config &config)
// sound
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(8'000'000) / 8, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(8'000'000) / 8, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
// lhzb2a
@@ -3701,11 +3702,10 @@ MACHINE_RESET_MEMBER(igs017_state,lhzb2a)
lhzb2a_remap_addr_w(m_maincpu->space(AS_PROGRAM), 0, 0xf0);
}
-void igs017_state::lhzb2a(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(22'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::lhzb2a_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
+MACHINE_CONFIG_START(igs017_state::lhzb2a)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(22'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(lhzb2a)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgcs_interrupt, "screen", 0, 1)
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,lhzb2a)
@@ -3724,13 +3724,13 @@ void igs017_state::lhzb2a(machine_config &config)
IGS_INCDEC(config, m_igs_incdec, 0);
// video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60); // VSync 60Hz, HSync 15.3kHz
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 256-16-1);
- m_screen->set_screen_update(FUNC(igs017_state::screen_update_igs017));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60) // VSync 60Hz, HSync 15.3kHz
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x100*2);
@@ -3740,17 +3740,17 @@ void igs017_state::lhzb2a(machine_config &config)
// sound
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(22'000'000) / 22, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(22'000'000) / 22, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
// slqz2
-void igs017_state::slqz2(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(22'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::slqz2_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
+MACHINE_CONFIG_START(igs017_state::slqz2)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(22'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(slqz2)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgcs_interrupt, "screen", 0, 1)
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,mgcs)
@@ -3767,13 +3767,13 @@ void igs017_state::slqz2(machine_config &config)
IGS022(config, m_igs022, 0);
// video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 240-1);
- m_screen->set_screen_update(FUNC(igs017_state::screen_update_igs017));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x100*2);
@@ -3783,17 +3783,17 @@ void igs017_state::slqz2(machine_config &config)
// sound
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(8'000'000) / 8, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(8'000'000) / 8, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
// sdmg2
-void igs017_state::sdmg2(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(22'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::sdmg2_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
+MACHINE_CONFIG_START(igs017_state::sdmg2)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(22'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(sdmg2)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgcs_interrupt, "screen", 0, 1)
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,mgcs)
@@ -3803,13 +3803,13 @@ void igs017_state::sdmg2(machine_config &config)
ppi.in_pb_callback().set_ioport("DSW2");
// video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60); // VSync 60Hz, HSync 15.3kHz
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 256-16-1);
- m_screen->set_screen_update(FUNC(igs017_state::screen_update_igs017));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60) // VSync 60Hz, HSync 15.3kHz
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x100*2);
@@ -3818,8 +3818,9 @@ void igs017_state::sdmg2(machine_config &config)
// sound
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(22'000'000) / 22, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(22'000'000) / 22, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
// mgdh
@@ -3835,11 +3836,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(igs017_state::mgdh_interrupt)
m_maincpu->set_input_line(3, HOLD_LINE); // lev 3 instead of 2
}
-void igs017_state::mgdha(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(22'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::mgdha_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgdh_interrupt), "screen", 0, 1);
+MACHINE_CONFIG_START(igs017_state::mgdha)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(22'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(mgdha_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgdh_interrupt, "screen", 0, 1)
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,mgcs)
@@ -3848,13 +3848,13 @@ void igs017_state::mgdha(machine_config &config)
ppi.in_pa_callback().set_ioport("DSW1");
// video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 256-16-1);
- m_screen->set_screen_update(FUNC(igs017_state::screen_update_igs017));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x100*2);
@@ -3863,18 +3863,18 @@ void igs017_state::mgdha(machine_config &config)
// sound
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(22'000'000) / 22, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(22'000'000) / 22, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
// tjsb
-void igs017_state::tjsb(machine_config &config)
-{
- Z180(config, m_maincpu, XTAL(16'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::tjsb_map);
- m_maincpu->set_addrmap(AS_IO, &igs017_state::tjsb_io);
- TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
+MACHINE_CONFIG_START(igs017_state::tjsb)
+ MCFG_DEVICE_ADD("maincpu", Z180, XTAL(16'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(tjsb_map)
+ MCFG_DEVICE_IO_MAP(tjsb_io)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, iqblocka_interrupt, "screen", 0, 1)
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,iqblocka)
@@ -3885,13 +3885,13 @@ void igs017_state::tjsb(machine_config &config)
ppi.in_pc_callback().set_ioport("DSW3");
// video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 240-1);
- m_screen->set_screen_update(FUNC(igs017_state::screen_update_igs017));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x100*2);
@@ -3901,20 +3901,21 @@ void igs017_state::tjsb(machine_config &config)
// sound
SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 0.5);
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
- OKIM6295(config, m_oki, XTAL(16'000'000) / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000) / 16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
// spkrform
-void igs017_state::spkrform(machine_config &config)
-{
- Z180(config, m_maincpu, XTAL(16'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::spkrform_map);
- m_maincpu->set_addrmap(AS_IO, &igs017_state::spkrform_io);
- TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
+MACHINE_CONFIG_START(igs017_state::spkrform)
+ MCFG_DEVICE_ADD("maincpu", Z180, XTAL(16'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(spkrform_map)
+ MCFG_DEVICE_IO_MAP(spkrform_io)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, iqblocka_interrupt, "screen", 0, 1)
MCFG_MACHINE_RESET_OVERRIDE(igs017_state,iqblocka)
@@ -3925,13 +3926,13 @@ void igs017_state::spkrform(machine_config &config)
ppi.in_pc_callback().set_ioport("DSW3");
// video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 240-1);
- m_screen->set_screen_update(FUNC(igs017_state::screen_update_igs017));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x100*2);
@@ -3940,10 +3941,12 @@ void igs017_state::spkrform(machine_config &config)
// sound
SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 0.5);
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
- OKIM6295(config, m_oki, XTAL(16'000'000) / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000) / 16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/igs_m027.cpp b/src/mame/drivers/igs_m027.cpp
index 9c770446710..7d27f2eceef 100644
--- a/src/mame/drivers/igs_m027.cpp
+++ b/src/mame/drivers/igs_m027.cpp
@@ -327,25 +327,24 @@ WRITE_LINE_MEMBER(igs_m027_state::vblank_irq)
}
-void igs_m027_state::igs_majhong(machine_config &config)
-{
- ARM7(config, m_maincpu, 20000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &igs_m027_state::igs_majhong_map);
+MACHINE_CONFIG_START(igs_m027_state::igs_majhong)
+ MCFG_DEVICE_ADD("maincpu", ARM7, 20000000)
+ MCFG_DEVICE_PROGRAM_MAP(igs_majhong_map)
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(igs_m027_state::screen_update_igs_majhong));
- screen.set_palette("palette");
- screen.screen_vblank().set(FUNC(igs_m027_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igs_m027_state, screen_update_igs_majhong)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, igs_m027_state, vblank_irq))
- PALETTE(config, "palette").set_entries(0x200);
-// .set_format(palette_device::xGRB_555, 0x200);
+ MCFG_PALETTE_ADD("palette", 0x200)
+// MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
IGS017_IGS031(config, m_igs017_igs031, 0);
m_igs017_igs031->set_text_reverse_bits();
@@ -355,27 +354,31 @@ void igs_m027_state::igs_majhong(machine_config &config)
/* sound hardware */
// OK6295
-}
+MACHINE_CONFIG_END
+
+
-void igs_m027_state::amazonia(machine_config &config)
-{
- ARM7(config, m_maincpu, 20000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &igs_m027_state::igs_majhong_map);
+
+MACHINE_CONFIG_START(igs_m027_state::amazonia)
+ MCFG_DEVICE_ADD("maincpu", ARM7, 20000000)
+ MCFG_DEVICE_PROGRAM_MAP(igs_majhong_map)
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(igs_m027_state::screen_update_igs_majhong));
- screen.set_palette("palette");
- screen.screen_vblank().set(FUNC(igs_m027_state::vblank_irq));
- PALETTE(config, "palette").set_entries(0x200);
-// .set_format(palette_device::xGRB_555, 0x200);
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igs_m027_state, screen_update_igs_majhong)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, igs_m027_state, vblank_irq))
+
+ MCFG_PALETTE_ADD("palette", 0x200)
+// MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
IGS017_IGS031(config, m_igs017_igs031, 0);
m_igs017_igs031->set_text_reverse_bits();
@@ -385,7 +388,8 @@ void igs_m027_state::amazonia(machine_config &config)
/* sound hardware */
// OK6295
-}
+
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/igs_m036.cpp b/src/mame/drivers/igs_m036.cpp
index 2a625636433..256e2273cb7 100644
--- a/src/mame/drivers/igs_m036.cpp
+++ b/src/mame/drivers/igs_m036.cpp
@@ -252,40 +252,42 @@ void igs_m036_state::pgm_create_dummy_internal_arm_region(void)
#define IGS036_CPU ARM7
-void igs_m036_state::igs_m036(machine_config &config)
-{
- IGS036_CPU(config, m_maincpu, 20000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &igs_m036_state::igs_m036_map);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(igs_m036_state::screen_update_igs_m036));
- screen.set_palette("palette");
-
- PALETTE(config, "palette").set_entries(0x200);
+MACHINE_CONFIG_START(igs_m036_state::igs_m036)
+ MCFG_DEVICE_ADD("maincpu",IGS036_CPU, 20000000)
+
+ MCFG_DEVICE_PROGRAM_MAP(igs_m036_map)
+
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igs_m036_state, screen_update_igs_m036)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 0x200)
/* sound hardware (OKI) */
-}
+MACHINE_CONFIG_END
-void igs_m036_state::igs_m036_tt(machine_config &config)
-{
- IGS036_CPU(config, m_maincpu, 20000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &igs_m036_state::igs_m036_map);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(igs_m036_state::screen_update_igs_m036));
- screen.set_palette("palette");
-
- PALETTE(config, "palette").set_entries(0x200);
+MACHINE_CONFIG_START(igs_m036_state::igs_m036_tt)
+ MCFG_DEVICE_ADD("maincpu",IGS036_CPU, 20000000)
+
+ MCFG_DEVICE_PROGRAM_MAP(igs_m036_map)
+
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igs_m036_state, screen_update_igs_m036)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 0x200)
/* sound hardware (TT5665) */
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/igspc.cpp b/src/mame/drivers/igspc.cpp
index 0384a918fa4..21aa054bafa 100644
--- a/src/mame/drivers/igspc.cpp
+++ b/src/mame/drivers/igspc.cpp
@@ -82,13 +82,12 @@ INPUT_PORTS_END
-void speeddrv_state::speeddrv(machine_config &config)
-{
+MACHINE_CONFIG_START(speeddrv_state::speeddrv)
/* basic machine hardware */
- I486(config, m_maincpu, 40000000); // ?? at least a pentium
- m_maincpu->set_addrmap(AS_PROGRAM, &speeddrv_state::speeddrv_map);
- m_maincpu->set_addrmap(AS_IO, &speeddrv_state::speeddrv_io);
-}
+ MCFG_DEVICE_ADD("maincpu", I486, 40000000 ) // ?? at least a pentium
+ MCFG_DEVICE_PROGRAM_MAP(speeddrv_map)
+ MCFG_DEVICE_IO_MAP(speeddrv_io)
+MACHINE_CONFIG_END
ROM_START( speeddrv )
diff --git a/src/mame/drivers/igspoker.cpp b/src/mame/drivers/igspoker.cpp
index 11c4a0cdf23..2e8ff33ac9a 100644
--- a/src/mame/drivers/igspoker.cpp
+++ b/src/mame/drivers/igspoker.cpp
@@ -1921,13 +1921,13 @@ static GFXDECODE_START( gfx_cpokerpk )
GFXDECODE_ENTRY( "gfx2", 0x00000, charlayout2, 0, 1 )
GFXDECODE_END
-void igspoker_state::igspoker(machine_config &config)
-{
+MACHINE_CONFIG_START(igspoker_state::igspoker)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 3579545);
- m_maincpu->set_addrmap(AS_PROGRAM, &igspoker_state::igspoker_prg_map);
- m_maincpu->set_addrmap(AS_IO, &igspoker_state::igspoker_io_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(igspoker_state::igs_interrupt), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu",Z80, 3579545)
+ MCFG_DEVICE_PROGRAM_MAP(igspoker_prg_map)
+ MCFG_DEVICE_IO_MAP(igspoker_io_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igspoker_state, igs_interrupt, "screen", 0, 1)
i8255_device &ppi(I8255A(config, "ppi"));
ppi.out_pa_callback().set(FUNC(igspoker_state::igs_nmi_and_coins_w));
@@ -1935,65 +1935,66 @@ void igspoker_state::igspoker(machine_config &config)
ppi.in_pc_callback().set_ioport("COINS");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(57);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 32*8); // TODO: wrong screen size!
- m_screen->set_visarea(0*8, 64*8-1, 0, 32*8-1);
- m_screen->set_screen_update(FUNC(igspoker_state::screen_update_igs_video));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_igspoker);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8) // TODO: wrong screen size!
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igspoker_state, screen_update_igs_video)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_igspoker)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 2048);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", 3579545).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2413, 3579545)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-void igspoker_state::csk227it(machine_config &config)
-{
- igspoker(config);
-}
+MACHINE_CONFIG_END
-void igspoker_state::csk234it(machine_config &config)
-{
+MACHINE_CONFIG_START(igspoker_state::csk227it)
igspoker(config);
-}
-void igspoker_state::igs_ncs(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(igspoker_state::csk234it)
igspoker(config);
-}
-void igspoker_state::number10(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(igspoker_state::igs_ncs)
igspoker(config);
- m_maincpu->set_addrmap(AS_IO, &igspoker_state::number10_io_map);
+MACHINE_CONFIG_END
- config.device_remove("ppi");
+MACHINE_CONFIG_START(igspoker_state::number10)
+ igspoker(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(number10_io_map)
- m_screen->set_screen_update(FUNC(igspoker_state::screen_update_cpokerpk));
+ MCFG_DEVICE_REMOVE("ppi")
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(igspoker_state, screen_update_cpokerpk)
MCFG_VIDEO_START_OVERRIDE(igspoker_state,cpokerpk)
- OKIM6295(config, "oki", XTAL(12'000'000) / 12, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(12'000'000) / 12, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void igspoker_state::cpokerpk(machine_config &config)
-{
+MACHINE_CONFIG_START(igspoker_state::cpokerpk)
number10(config);
-
- m_maincpu->set_addrmap(AS_IO, &igspoker_state::cpokerpk_io_map);
- m_gfxdecode->set_info(gfx_cpokerpk);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(cpokerpk_io_map)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_cpokerpk)
+MACHINE_CONFIG_END
-void igspoker_state::pktetris(machine_config &config)
-{
+MACHINE_CONFIG_START(igspoker_state::pktetris)
igspoker(config);
-}
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ikki.cpp b/src/mame/drivers/ikki.cpp
index 7a1ecbec6c1..8e160984c03 100644
--- a/src/mame/drivers/ikki.cpp
+++ b/src/mame/drivers/ikki.cpp
@@ -82,8 +82,8 @@ void ikki_state::ikki_cpu2(address_map &map)
map(0x0000, 0x1fff).rom();
map(0xc000, 0xc7ff).ram().share("spriteram");
map(0xc800, 0xcfff).ram().share("share1");
- map(0xd801, 0xd801).w("sn1", FUNC(sn76496_device::write));
- map(0xd802, 0xd802).w("sn2", FUNC(sn76496_device::write));
+ map(0xd801, 0xd801).w("sn1", FUNC(sn76496_device::command_w));
+ map(0xd802, 0xd802).w("sn2", FUNC(sn76496_device::command_w));
}
@@ -253,25 +253,25 @@ TIMER_DEVICE_CALLBACK_MEMBER(ikki_state::ikki_irq)
-void ikki_state::ikki(machine_config &config)
-{
+MACHINE_CONFIG_START(ikki_state::ikki)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK/2); /* 4.000MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &ikki_state::ikki_cpu1);
- TIMER(config, "scantimer").configure_scanline(FUNC(ikki_state::ikki_irq), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", Z80,CPU_CLOCK/2) /* 4.000MHz */
+ MCFG_DEVICE_PROGRAM_MAP(ikki_cpu1)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ikki_state, ikki_irq, "screen", 0, 1)
- Z80(config, m_subcpu, CPU_CLOCK/2); /* 4.000MHz */
- m_subcpu->set_addrmap(AS_PROGRAM, &ikki_state::ikki_cpu2);
- m_subcpu->set_periodic_int(FUNC(ikki_state::irq0_line_hold), attotime::from_hz(2*(PIXEL_CLOCK/HTOTAL/VTOTAL)));
+ MCFG_DEVICE_ADD("sub", Z80,CPU_CLOCK/2) /* 4.000MHz */
+ MCFG_DEVICE_PROGRAM_MAP(ikki_cpu2)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(ikki_state, irq0_line_hold, 2*(PIXEL_CLOCK/HTOTAL/VTOTAL))
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(ikki_state::screen_update_ikki));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(ikki_state, screen_update_ikki)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ikki);
PALETTE(config, m_palette, FUNC(ikki_state::ikki_palette), 1024, 256 + 1);
@@ -279,10 +279,12 @@ void ikki_state::ikki(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76496(config, "sn1", CPU_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 0.75);
+ MCFG_DEVICE_ADD("sn1", SN76496, CPU_CLOCK/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
- SN76496(config, "sn2", CPU_CLOCK/2).add_route(ALL_OUTPUTS, "mono", 0.75);
-}
+ MCFG_DEVICE_ADD("sn2", SN76496, CPU_CLOCK/2)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/imds2.cpp b/src/mame/drivers/imds2.cpp
index e56387de96c..f4ca5570f46 100644
--- a/src/mame/drivers/imds2.cpp
+++ b/src/mame/drivers/imds2.cpp
@@ -253,7 +253,7 @@ void imds2_state::imds2(machine_config &config)
m_ipccpu->set_addrmap(AS_PROGRAM, &imds2_state::ipc_mem_map);
m_ipccpu->set_addrmap(AS_IO, &imds2_state::ipc_io_map);
m_ipccpu->set_irq_acknowledge_callback("ipcsyspic", FUNC(pic8259_device::inta_cb));
- //config.m_minimum_quantum = attotime::from_hz(100);
+ //MCFG_QUANTUM_TIME(attotime::from_hz(100))
PIC8259(config, m_ipcsyspic, 0);
m_ipcsyspic->out_int_callback().set(FUNC(imds2_state::ipc_intr_w));
diff --git a/src/mame/drivers/imolagp.cpp b/src/mame/drivers/imolagp.cpp
index 459d5e223c8..082886e45a5 100644
--- a/src/mame/drivers/imolagp.cpp
+++ b/src/mame/drivers/imolagp.cpp
@@ -512,19 +512,19 @@ void imolagp_state::machine_reset()
}
-void imolagp_state::imolagp(machine_config &config)
-{
+MACHINE_CONFIG_START(imolagp_state::imolagp)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 3000000); // ? (assume slower than slave)
- m_maincpu->set_addrmap(AS_PROGRAM, &imolagp_state::imolagp_master_map);
- m_maincpu->set_addrmap(AS_IO, &imolagp_state::imolagp_master_io);
- TIMER(config, m_steer_pot_timer).configure_generic(FUNC(imolagp_state::imolagp_pot_callback)); // maincpu nmi
+ MCFG_DEVICE_ADD("maincpu", Z80, 3000000) // ? (assume slower than slave)
+ MCFG_DEVICE_PROGRAM_MAP(imolagp_master_map)
+ MCFG_DEVICE_IO_MAP(imolagp_master_io)
+ MCFG_TIMER_DRIVER_ADD("pot", imolagp_state, imolagp_pot_callback) // maincpu nmi
- Z80(config, m_slavecpu, 4000000); // ?
- m_slavecpu->set_addrmap(AS_PROGRAM, &imolagp_state::imolagp_slave_map);
- m_slavecpu->set_addrmap(AS_IO, &imolagp_state::imolagp_slave_io);
+ MCFG_DEVICE_ADD("slave", Z80, 4000000) // ?
+ MCFG_DEVICE_PROGRAM_MAP(imolagp_slave_map)
+ MCFG_DEVICE_IO_MAP(imolagp_slave_io)
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
i8255_device &ppi(I8255A(config, "ppi8255", 0));
// mode $91 - ports A & C-lower as input, ports B & C-upper as output
@@ -534,22 +534,22 @@ void imolagp_state::imolagp(machine_config &config)
ppi.in_pc_callback().set_ioport("IN1");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256,256);
- screen.set_visarea(0+48,255,0+16,255);
- screen.set_screen_update(FUNC(imolagp_state::screen_update_imolagp));
- screen.set_video_attributes(VIDEO_UPDATE_SCANLINE);
- screen.set_palette("palette");
- screen.screen_vblank().set(FUNC(imolagp_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256,256)
+ MCFG_SCREEN_VISIBLE_AREA(0+48,255,0+16,255)
+ MCFG_SCREEN_UPDATE_DRIVER(imolagp_state, screen_update_imolagp)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, imolagp_state, vblank_irq))
PALETTE(config, "palette", FUNC(imolagp_state::imolagp_palette), 0x20);
/* sound hardware */
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd", 2000000).add_route(ALL_OUTPUTS, "mono", 0.5); // ?
-}
+MACHINE_CONFIG_END
ROM_START( imolagp ) // same hardware, but larger video roms
diff --git a/src/mame/drivers/inder.cpp b/src/mame/drivers/inder.cpp
index 9cfa448e438..76811d220f9 100644
--- a/src/mame/drivers/inder.cpp
+++ b/src/mame/drivers/inder.cpp
@@ -1268,9 +1268,9 @@ WRITE8_MEMBER( inder_state::sndbank_w )
void inder_state::update_mus()
{
if ((m_sound_addr < 0x40000) && (m_sndbank != 0xff))
- m_13->ba_w(m_p_speech[m_sound_addr]);
+ m_13->write_ba(m_p_speech[m_sound_addr]);
else
- m_13->ba_w(0);
+ m_13->write_ba(0);
}
WRITE_LINE_MEMBER( inder_state::qc7a_w )
@@ -1357,12 +1357,11 @@ void inder_state::init_inder1()
m_game = 1;
}
-void inder_state::brvteam(machine_config &config)
-{
+MACHINE_CONFIG_START(inder_state::brvteam)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(5'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &inder_state::brvteam_map);
- m_maincpu->set_periodic_int(FUNC(inder_state::irq0_line_hold), attotime::from_hz(250)); // NE556
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(5'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(brvteam_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(inder_state, irq0_line_hold, 250) // NE556
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
@@ -1372,15 +1371,15 @@ void inder_state::brvteam(machine_config &config)
/* Sound */
genpin_audio(config);
SPEAKER(config, "snvol").front_center();
- SN76489(config, m_sn, XTAL(8'000'000) / 2).add_route(ALL_OUTPUTS, "snvol", 2.0); // jumper choice of 2 or 4 MHz
-}
+ MCFG_DEVICE_ADD("sn", SN76489, XTAL(8'000'000) / 2) // jumper choice of 2 or 4 MHz
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "snvol", 2.0)
+MACHINE_CONFIG_END
-void inder_state::canasta(machine_config &config)
-{
+MACHINE_CONFIG_START(inder_state::canasta)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(5'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &inder_state::canasta_map);
- m_maincpu->set_periodic_int(FUNC(inder_state::irq0_line_hold), attotime::from_hz(250)); // NE556
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(5'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(canasta_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(inder_state, irq0_line_hold, 250) // NE556
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
@@ -1391,18 +1390,16 @@ void inder_state::canasta(machine_config &config)
genpin_audio(config);
SPEAKER(config, "ayvol").front_center();
AY8910(config, "ay", XTAL(4'000'000) / 2).add_route(ALL_OUTPUTS, "ayvol", 1.0);
-}
+MACHINE_CONFIG_END
-void inder_state::lapbylap(machine_config &config)
-{
+MACHINE_CONFIG_START(inder_state::lapbylap)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(5'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &inder_state::lapbylap_map);
- m_maincpu->set_periodic_int(FUNC(inder_state::irq0_line_hold), attotime::from_hz(250)); // NE556
-
- Z80(config, m_audiocpu, XTAL(2'000'000));
- m_audiocpu->set_addrmap(AS_PROGRAM, &inder_state::lapbylap_sub_map);
- m_audiocpu->set_periodic_int(FUNC(inder_state::irq0_line_hold), attotime::from_hz(250)); // NE555
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(5'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(lapbylap_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(inder_state, irq0_line_hold, 250) // NE556
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(2'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(lapbylap_sub_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(inder_state, irq0_line_hold, 250) // NE555
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
@@ -1416,18 +1413,16 @@ void inder_state::lapbylap(machine_config &config)
ay8910_device &ay2(AY8910(config, "ay2", XTAL(2'000'000))); // same xtal that drives subcpu
ay2.port_a_read_callback().set(FUNC(inder_state::sndcmd_r));
ay2.add_route(ALL_OUTPUTS, "ayvol", 1.0);
-}
+MACHINE_CONFIG_END
-void inder_state::inder(machine_config &config)
-{
+MACHINE_CONFIG_START(inder_state::inder)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(5'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &inder_state::inder_map);
- m_maincpu->set_periodic_int(FUNC(inder_state::irq0_line_hold), attotime::from_hz(250)); // NE556
-
- Z80(config, m_audiocpu, XTAL(5'000'000) / 2);
- m_audiocpu->set_addrmap(AS_PROGRAM, &inder_state::inder_sub_map);
- m_audiocpu->set_periodic_int(FUNC(inder_state::irq0_line_hold), attotime::from_hz(250)); // NE555
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(5'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(inder_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(inder_state, irq0_line_hold, 250) // NE556
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(5'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(inder_sub_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(inder_state, irq0_line_hold, 250) // NE555
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
@@ -1473,7 +1468,7 @@ void inder_state::inder(machine_config &config)
HCT157(config, m_13, 0);
m_13->out_callback().set("msm", FUNC(msm5205_device::data_w));
-}
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
diff --git a/src/mame/drivers/inderp.cpp b/src/mame/drivers/inderp.cpp
index caa7b7b3f14..89128a2074f 100644
--- a/src/mame/drivers/inderp.cpp
+++ b/src/mame/drivers/inderp.cpp
@@ -197,22 +197,21 @@ WRITE_LINE_MEMBER( inderp_state::clock_tick )
m_maincpu->set_input_line(M6504_IRQ_LINE, ASSERT_LINE);
}
-void inderp_state::inderp(machine_config &config)
-{
+MACHINE_CONFIG_START(inderp_state::inderp)
/* basic machine hardware */
- M6504(config, m_maincpu, 434000); // possible calculation of frequency-derived time constant 100k res and 10pf cap
- m_maincpu->set_addrmap(AS_PROGRAM, &inderp_state::maincpu_map);
+ MCFG_DEVICE_ADD("maincpu", M6504, 434000) // possible calculation of frequency-derived time constant 100k res and 10pf cap
+ MCFG_DEVICE_PROGRAM_MAP(maincpu_map)
- clock_device &cpoint_clock(CLOCK(config, "cpoint_clock", 200)); // crosspoint detector
- cpoint_clock.signal_handler().set(FUNC(inderp_state::clock_tick));
+ MCFG_DEVICE_ADD("cpoint_clock", CLOCK, 200) // crosspoint detector
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, inderp_state, clock_tick))
/* video hardware */
- //config.set_default_layout()
+ //MCFG_DEFAULT_LAYOUT()
/* sound hardware */
//discrete ?
genpin_audio(config);
-}
+MACHINE_CONFIG_END
ROM_START(centauri)
diff --git a/src/mame/drivers/indiana.cpp b/src/mame/drivers/indiana.cpp
index 9e87da7198b..0bf09bd4e4a 100644
--- a/src/mame/drivers/indiana.cpp
+++ b/src/mame/drivers/indiana.cpp
@@ -94,20 +94,20 @@ static DEVICE_INPUT_DEFAULTS_START( keyboard )
DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 )
DEVICE_INPUT_DEFAULTS_END
-void indiana_state::indiana(machine_config &config)
-{
+MACHINE_CONFIG_START(indiana_state::indiana)
/* basic machine hardware */
- M68030(config, m_maincpu, XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &indiana_state::indiana_mem);
+ MCFG_DEVICE_ADD(M68K_TAG, M68030, XTAL(16'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(indiana_mem)
// FIXME: determine ISA bus clock
isa16_device &isa(ISA16(config, ISABUS_TAG, 0));
+ isa.set_cputag(M68K_TAG);
isa.set_custom_spaces();
- ISA16_SLOT(config, "isa1", 0, ISABUS_TAG, indiana_isa_cards, "vga", false);
- ISA16_SLOT(config, "isa2", 0, ISABUS_TAG, indiana_isa_cards, "fdc_at", false);
- ISA16_SLOT(config, "isa3", 0, ISABUS_TAG, indiana_isa_cards, "comat", false);
- ISA16_SLOT(config, "isa4", 0, ISABUS_TAG, indiana_isa_cards, "ide", false);
+ MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, ISABUS_TAG, indiana_isa_cards, "vga", false)
+ MCFG_DEVICE_ADD("isa2", ISA16_SLOT, 0, ISABUS_TAG, indiana_isa_cards, "fdc_at", false)
+ MCFG_DEVICE_ADD("isa3", ISA16_SLOT, 0, ISABUS_TAG, indiana_isa_cards, "comat", false)
+ MCFG_DEVICE_ADD("isa4", ISA16_SLOT, 0, ISABUS_TAG, indiana_isa_cards, "ide", false)
mc68901_device &mfp(MC68901(config, MFP_TAG, XTAL(16'000'000)/4));
mfp.set_timer_clock(XTAL(16'000'000)/4);
@@ -118,7 +118,7 @@ void indiana_state::indiana(machine_config &config)
rs232_port_device &keyboard(RS232_PORT(config, "keyboard", default_rs232_devices, "keyboard"));
keyboard.rxd_handler().set(MFP_TAG, FUNC(mc68901_device::write_rx));
keyboard.set_option_device_input_defaults("keyboard", DEVICE_INPUT_DEFAULTS_NAME(keyboard));
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( indiana )
diff --git a/src/mame/drivers/indigo.cpp b/src/mame/drivers/indigo.cpp
index f5ceae47718..e58056fce37 100644
--- a/src/mame/drivers/indigo.cpp
+++ b/src/mame/drivers/indigo.cpp
@@ -22,12 +22,17 @@
#include "machine/eepromser.h"
#include "machine/hpc1.h"
#include "machine/sgi.h"
-#include "video/light.h"
+#include "emupal.h"
+#include "screen.h"
+
+#define ENABLE_ENTRY_GFX (1)
#define LOG_UNKNOWN (1 << 0)
#define LOG_INT (1 << 1)
#define LOG_DSP (1 << 2)
-#define LOG_ALL (LOG_UNKNOWN | LOG_INT | LOG_DSP)
+#define LOG_GFX (1 << 3)
+#define LOG_GFX_CMD (1 << 4)
+#define LOG_ALL (LOG_UNKNOWN | LOG_INT | LOG_DSP | LOG_GFX | LOG_GFX_CMD)
#define VERBOSE (LOG_UNKNOWN)
#include "logmacro.h"
@@ -39,7 +44,7 @@ public:
: driver_device(mconfig, type, tag)
, m_hpc(*this, "hpc")
, m_eeprom(*this, "eeprom")
- , m_light(*this, "lg1")
+ , m_palette(*this, "palette")
{
}
@@ -53,14 +58,96 @@ protected:
DECLARE_WRITE32_MEMBER(int_w);
DECLARE_READ32_MEMBER(dsp_ram_r);
DECLARE_WRITE32_MEMBER(dsp_ram_w);
+ DECLARE_READ32_MEMBER(entry_r);
+ DECLARE_WRITE32_MEMBER(entry_w);
+
+ void do_rex_command();
void indigo_map(address_map &map);
+ uint32_t screen_update(screen_device &device, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+ enum
+ {
+ REX15_PAGE0_SET = 0x00000000,
+ REX15_PAGE0_GO = 0x00000800,
+ REX15_PAGE1_SET = 0x00004790,
+ REX15_PAGE1_GO = 0x00004f90,
+
+ REX15_P0REG_COMMAND = 0x00000000,
+ REX15_P0REG_XSTARTI = 0x0000000c,
+ REX15_P0REG_YSTARTI = 0x0000001c,
+ REX15_P0REG_XYMOVE = 0x00000034,
+ REX15_P0REG_COLORREDI = 0x00000038,
+ REX15_P0REG_COLORGREENI = 0x00000040,
+ REX15_P0REG_COLORBLUEI = 0x00000048,
+ REX15_P0REG_COLORBACK = 0x0000005c,
+ REX15_P0REG_ZPATTERN = 0x00000060,
+ REX15_P0REG_XENDI = 0x00000084,
+ REX15_P0REG_YENDI = 0x00000088,
+
+ REX15_P1REG_WCLOCKREV = 0x00000054,
+ REX15_P1REG_CFGDATA = 0x00000058,
+ REX15_P1REG_CFGSEL = 0x0000005c,
+ REX15_P1REG_VC1_ADDRDATA = 0x00000060,
+ REX15_P1REG_CFGMODE = 0x00000068,
+ REX15_P1REG_XYOFFSET = 0x0000006c,
+
+ REX15_OP_NOP = 0x00000000,
+ REX15_OP_DRAW = 0x00000001,
+
+ REX15_OP_FLAG_BLOCK = 0x00000008,
+ REX15_OP_FLAG_LENGTH32 = 0x00000010,
+ REX15_OP_FLAG_QUADMODE = 0x00000020,
+ REX15_OP_FLAG_XYCONTINUE = 0x00000080,
+ REX15_OP_FLAG_STOPONX = 0x00000100,
+ REX15_OP_FLAG_STOPONY = 0x00000200,
+ REX15_OP_FLAG_ENZPATTERN = 0x00000400,
+ REX15_OP_FLAG_LOGICSRC = 0x00080000,
+ REX15_OP_FLAG_ZOPAQUE = 0x00800000,
+ REX15_OP_FLAG_ZCONTINUE = 0x01000000,
+
+ REX15_WRITE_ADDR = 0x00,
+ REX15_PALETTE_RAM = 0x01,
+ REX15_PIXEL_READ_MASK = 0x02,
+ REX15_CONTROL = 0x06
+ };
+
+ struct lg1_t
+ {
+ uint32_t m_config_sel;
+ uint32_t m_write_addr;
+ uint32_t m_control;
+
+ uint32_t m_command;
+ uint32_t m_x_start_i;
+ uint32_t m_y_start_i;
+ uint32_t m_xy_move;
+ uint32_t m_color_red_i;
+ uint32_t m_color_green_i;
+ uint32_t m_color_blue_i;
+ uint32_t m_color_back;
+ uint32_t m_z_pattern;
+ uint32_t m_x_end_i;
+ uint32_t m_y_end_i;
+ uint32_t m_x_curr_i;
+ uint32_t m_y_curr_i;
+
+ uint8_t m_palette_idx;
+ uint8_t m_palette_channel;
+ uint8_t m_palette_entry[3];
+ uint8_t m_pix_read_mask[256];
+ };
+
required_device<hpc1_device> m_hpc;
required_device<eeprom_serial_93cxx_device> m_eeprom;
+ required_device<palette_device> m_palette;
std::unique_ptr<uint32_t[]> m_dsp_ram;
- required_device<light_video_device> m_light;
+
address_space *m_space;
+
+ lg1_t m_lg1;
+ std::unique_ptr<uint8_t[]> m_framebuffer;
};
class indigo3k_state : public indigo_state
@@ -108,11 +195,37 @@ protected:
void indigo_state::machine_start()
{
m_dsp_ram = std::make_unique<uint32_t[]>(0x8000);
+ m_framebuffer = std::make_unique<uint8_t[]>(1024*768);
+
+ save_item(NAME(m_lg1.m_config_sel));
+ save_item(NAME(m_lg1.m_write_addr));
+ save_item(NAME(m_lg1.m_control));
+ save_item(NAME(m_lg1.m_command));
+ save_item(NAME(m_lg1.m_x_start_i));
+ save_item(NAME(m_lg1.m_y_start_i));
+ save_item(NAME(m_lg1.m_xy_move));
+ save_item(NAME(m_lg1.m_color_red_i));
+ save_item(NAME(m_lg1.m_color_green_i));
+ save_item(NAME(m_lg1.m_color_blue_i));
+ save_item(NAME(m_lg1.m_color_back));
+ save_item(NAME(m_lg1.m_z_pattern));
+ save_item(NAME(m_lg1.m_x_end_i));
+ save_item(NAME(m_lg1.m_y_end_i));
+ save_item(NAME(m_lg1.m_x_curr_i));
+ save_item(NAME(m_lg1.m_y_curr_i));
+ save_item(NAME(m_lg1.m_palette_idx));
+ save_item(NAME(m_lg1.m_palette_channel));
+ save_item(NAME(m_lg1.m_palette_entry));
+ save_item(NAME(m_lg1.m_pix_read_mask));
+
save_pointer(NAME(&m_dsp_ram[0]), 0x8000);
+ save_pointer(NAME(&m_framebuffer[0]), 1024*768);
}
void indigo_state::machine_reset()
{
+ memset(&m_lg1, 0, sizeof(lg1_t));
+ memset(&m_framebuffer[0], 0, 1024*768);
}
void indigo4k_state::machine_reset()
@@ -146,10 +259,262 @@ WRITE32_MEMBER(indigo_state::dsp_ram_w)
m_dsp_ram[offset] = data;
}
+READ32_MEMBER(indigo_state::entry_r)
+{
+ uint32_t ret = 0;
+ switch (offset)
+ {
+ case REX15_PAGE0_GO/4:
+ LOGMASKED(LOG_GFX, "%s: LG1 Read: Status(?) (Go) %08x = %08x & %08x\n", machine().describe_context(), 0x1f3f0000 + offset*4, ret, mem_mask);
+ do_rex_command();
+ break;
+ case 0x0014/4:
+ ret = 0x033c0000;
+ LOGMASKED(LOG_GFX, "%s: LG1 Read: Presence Detect(?) %08x = %08x & %08x\n", machine().describe_context(), 0x1f3f0000 + offset*4, ret, mem_mask);
+ break;
+ default:
+ LOGMASKED(LOG_GFX, "%s: Unknown LG1 Read: %08x = %08x & %08x\n", machine().describe_context(), 0x1f3f0000 + offset*4, ret, mem_mask);
+ break;
+ }
+ return ret;
+}
+
+void indigo_state::do_rex_command()
+{
+ if (m_lg1.m_command == 0)
+ {
+ return;
+ }
+ if (m_lg1.m_command == 0x30080329)
+ {
+ bool xycontinue = (m_lg1.m_command & REX15_OP_FLAG_XYCONTINUE);
+ bool copy = (m_lg1.m_command & REX15_OP_FLAG_LOGICSRC);
+ const uint32_t start_x = xycontinue ? m_lg1.m_x_curr_i : m_lg1.m_x_start_i;
+ const uint32_t start_y = xycontinue ? m_lg1.m_y_curr_i : m_lg1.m_y_start_i;
+ const uint32_t end_x = m_lg1.m_x_end_i;
+ const uint32_t end_y = m_lg1.m_y_end_i;
+ const uint32_t src_start_x = start_x + (m_lg1.m_xy_move >> 16);
+ const uint32_t src_start_y = start_y + (uint16_t)m_lg1.m_xy_move;;
+
+ LOGMASKED(LOG_GFX, "LG1: Command %08x: Block copy from %d,%d-%d,%d inclusive.\n", m_lg1.m_command, start_x, start_y, end_x, end_y);
+ if (copy)
+ {
+ for (uint32_t y = start_y, src_y = src_start_y; y <= end_y; y++, src_y++)
+ for (uint32_t x = start_x, src_x = src_start_x; x <= end_x; x++, src_x++)
+ m_framebuffer[y*1024 + x] = m_framebuffer[src_y*1024 + src_x];
+ }
+ else
+ {
+ for (uint32_t y = start_y; y <= end_y; y++)
+ for (uint32_t x = start_x; x <= end_x; x++)
+ m_framebuffer[y*1024 + x] = m_lg1.m_color_red_i;
+ }
+ }
+ else if (m_lg1.m_command == 0x30000329)
+ {
+ bool xycontinue = (m_lg1.m_command & REX15_OP_FLAG_XYCONTINUE);
+ uint32_t start_x = xycontinue ? m_lg1.m_x_curr_i : m_lg1.m_x_start_i;
+ uint32_t start_y = xycontinue ? m_lg1.m_y_curr_i : m_lg1.m_y_start_i;
+ uint32_t end_x = m_lg1.m_x_end_i;
+ uint32_t end_y = m_lg1.m_y_end_i;
+
+ LOGMASKED(LOG_GFX, "LG1: Command %08x: Block draw from %d,%d-%d,%d inclusive.\n", m_lg1.m_command, start_x, start_y, end_x, end_y);
+ for (uint32_t y = start_y; y <= end_y; y++)
+ {
+ for (uint32_t x = start_x; x <= end_x; x++)
+ {
+ m_framebuffer[y*1024 + x] = m_lg1.m_color_red_i;
+ }
+ }
+ }
+ else if (m_lg1.m_command == 0x300005a1 ||
+ m_lg1.m_command == 0x300005a9 ||
+ m_lg1.m_command == 0x300005b9)
+ {
+ bool xycontinue = (m_lg1.m_command & REX15_OP_FLAG_XYCONTINUE);
+ uint32_t start_x = xycontinue ? m_lg1.m_x_curr_i : m_lg1.m_x_start_i;
+ uint32_t start_y = xycontinue ? m_lg1.m_y_curr_i : m_lg1.m_y_start_i;
+ uint32_t end_x = m_lg1.m_x_end_i;
+ LOGMASKED(LOG_GFX, "LG1: Command %08x: Pattern draw from %d-%d at %d\n", m_lg1.m_command, start_x, end_x, start_y);
+ for (uint32_t x = start_x; x <= end_x && x < (start_x + 32); x++)
+ {
+ if (BIT(m_lg1.m_z_pattern, 31 - (x - start_x)))
+ {
+ m_framebuffer[start_y*1024 + x] = m_lg1.m_color_red_i;
+ }
+ m_lg1.m_x_curr_i++;
+ }
+
+ if (m_lg1.m_command & REX15_OP_FLAG_BLOCK)
+ {
+ if (m_lg1.m_x_curr_i > m_lg1.m_x_end_i)
+ {
+ m_lg1.m_y_curr_i--;
+ m_lg1.m_x_curr_i = m_lg1.m_x_start_i;
+ }
+ }
+ }
+ else
+ {
+ LOGMASKED(LOG_GFX_CMD | LOG_UNKNOWN, "%s: Unknown LG1 command: %08x\n", machine().describe_context(), m_lg1.m_command);
+ }
+}
+
+WRITE32_MEMBER(indigo_state::entry_w)
+{
+ bool go = (offset >= REX15_PAGE1_GO/4) || (offset >= REX15_PAGE0_GO/4 && offset < REX15_PAGE1_SET/4);
+
+ switch (offset)
+ {
+ case (REX15_PAGE0_SET+REX15_P0REG_COMMAND)/4:
+ case (REX15_PAGE0_GO+REX15_P0REG_COMMAND)/4:
+ m_lg1.m_command = data;
+ LOGMASKED(LOG_GFX, "%s: LG1 REX1.5 Command Write (%s) = %08x\n", machine().describe_context(), (offset & 0x200) ? "Go" : "Set", data);
+ if (go)
+ do_rex_command();
+ break;
+ case (REX15_PAGE0_SET+REX15_P0REG_XSTARTI)/4:
+ case (REX15_PAGE0_GO+REX15_P0REG_XSTARTI)/4:
+ m_lg1.m_x_start_i = data;
+ m_lg1.m_x_curr_i = m_lg1.m_x_start_i;
+ LOGMASKED(LOG_GFX, "%s: LG1 REX1.5 XStartI Write (%s) = %08x\n", machine().describe_context(), (offset & 0x200) ? "Go" : "Set", data);
+ break;
+ case (REX15_PAGE0_SET+REX15_P0REG_YSTARTI)/4:
+ case (REX15_PAGE0_GO+REX15_P0REG_YSTARTI)/4:
+ m_lg1.m_y_start_i = data;
+ m_lg1.m_y_curr_i = m_lg1.m_y_start_i;
+ LOGMASKED(LOG_GFX, "%s: LG1 REX1.5 YStartI Write (%s) = %08x\n", machine().describe_context(), (offset & 0x200) ? "Go" : "Set", data);
+ break;
+ case (REX15_PAGE0_SET+REX15_P0REG_XYMOVE)/4:
+ case (REX15_PAGE0_GO+REX15_P0REG_XYMOVE)/4:
+ m_lg1.m_xy_move = data;
+ LOGMASKED(LOG_GFX, "%s: LG1 REX1.5 XYMove Write (%s) = %08x\n", machine().describe_context(), (offset & 0x200) ? "Go" : "Set", data);
+ if (go)
+ do_rex_command();
+ break;
+ case (REX15_PAGE0_SET+REX15_P0REG_COLORREDI)/4:
+ case (REX15_PAGE0_GO+REX15_P0REG_COLORREDI)/4:
+ m_lg1.m_color_red_i = data;
+ LOGMASKED(LOG_GFX, "%s: LG1 REX1.5 ColorRedI Write (%s) = %08x\n", machine().describe_context(), (offset & 0x200) ? "Go" : "Set", data);
+ break;
+ case (REX15_PAGE0_SET+REX15_P0REG_COLORGREENI)/4:
+ case (REX15_PAGE0_GO+REX15_P0REG_COLORGREENI)/4:
+ m_lg1.m_color_green_i = data;
+ LOGMASKED(LOG_GFX, "%s: LG1 REX1.5 ColorGreenI Write (%s) = %08x\n", machine().describe_context(), (offset & 0x200) ? "Go" : "Set", data);
+ break;
+ case (REX15_PAGE0_SET+REX15_P0REG_COLORBLUEI)/4:
+ case (REX15_PAGE0_GO+REX15_P0REG_COLORBLUEI)/4:
+ m_lg1.m_color_blue_i = data;
+ LOGMASKED(LOG_GFX, "%s: LG1 REX1.5 ColorBlueI Write (%s) = %08x\n", machine().describe_context(), (offset & 0x200) ? "Go" : "Set", data);
+ break;
+ case (REX15_PAGE0_SET+REX15_P0REG_COLORBACK)/4:
+ case (REX15_PAGE0_GO+REX15_P0REG_COLORBACK)/4:
+ m_lg1.m_color_back = data;
+ LOGMASKED(LOG_GFX, "%s: LG1 REX1.5 ColorBlueI Write (%s) = %08x\n", machine().describe_context(), (offset & 0x200) ? "Go" : "Set", data);
+ break;
+ case (REX15_PAGE0_SET+REX15_P0REG_ZPATTERN)/4:
+ case (REX15_PAGE0_GO+REX15_P0REG_ZPATTERN)/4:
+ m_lg1.m_z_pattern = data;
+ LOGMASKED(LOG_GFX, "%s: LG1 REX1.5 ZPattern Write (%s) = %08x\n", machine().describe_context(), (offset & 0x200) ? "Go" : "Set", data);
+ if (go)
+ do_rex_command();
+ break;
+ case (REX15_PAGE0_SET+REX15_P0REG_XENDI)/4:
+ case (REX15_PAGE0_GO+REX15_P0REG_XENDI)/4:
+ m_lg1.m_x_end_i = data;
+ LOGMASKED(LOG_GFX, "%s: LG1 REX1.5 XEndI Write (%s) = %08x\n", machine().describe_context(), (offset & 0x200) ? "Go" : "Set", data);
+ break;
+ case (REX15_PAGE0_SET+REX15_P0REG_YENDI)/4:
+ case (REX15_PAGE0_GO+REX15_P0REG_YENDI)/4:
+ m_lg1.m_y_end_i = data;
+ LOGMASKED(LOG_GFX, "%s: LG1 REX1.5 YEndI Write (%s) = %08x\n", machine().describe_context(), (offset & 0x200) ? "Go" : "Set", data);
+ break;
+
+ case (REX15_PAGE1_SET+REX15_P1REG_CFGSEL)/4:
+ case (REX15_PAGE1_GO+REX15_P1REG_CFGSEL)/4:
+ m_lg1.m_config_sel = data;
+ switch (data)
+ {
+ case REX15_WRITE_ADDR:
+ LOGMASKED(LOG_GFX, "%s: LG1 ConfigSel Write = %08x (Write Addr)\n", machine().describe_context(), data);
+ break;
+ case REX15_PALETTE_RAM:
+ LOGMASKED(LOG_GFX, "%s: LG1 ConfigSel Write = %08x (Palette RAM)\n", machine().describe_context(), data);
+ break;
+ case REX15_CONTROL:
+ LOGMASKED(LOG_GFX, "%s: LG1 ConfigSel Write = %08x (Control)\n", machine().describe_context(), data);
+ break;
+ case REX15_PIXEL_READ_MASK:
+ LOGMASKED(LOG_GFX, "%s: LG1 ConfigSel Write = %08x (Pixel Read Mask)\n", machine().describe_context(), data);
+ break;
+ default:
+ LOGMASKED(LOG_GFX, "%s: LG1 ConfigSel Write = %08x (Unknown)\n", machine().describe_context(), data);
+ break;
+ }
+ break;
+ case (REX15_PAGE1_SET+REX15_P1REG_CFGDATA)/4:
+ case (REX15_PAGE1_GO+REX15_P1REG_CFGDATA)/4:
+ if (go) // Ignore 'Go' writes for now, unsure what they do
+ break;
+ switch (m_lg1.m_config_sel)
+ {
+ case REX15_WRITE_ADDR:
+ LOGMASKED(LOG_GFX, "%s: LG1 ConfigSel Write: Setting WriteAddr to %08x\n", machine().describe_context(), data);
+ m_lg1.m_write_addr = data;
+ if (m_lg1.m_control == 0xf)
+ {
+ LOGMASKED(LOG_GFX, "%s: LG1 about to set palette entry %02x\n", machine().describe_context(), (uint8_t)data);
+ m_lg1.m_palette_idx = (uint8_t)data;
+ m_lg1.m_palette_channel = 0;
+ }
+ break;
+ case REX15_PALETTE_RAM:
+ LOGMASKED(LOG_GFX, "%s: LG1 ConfigSel Write: Setting Palette RAM %02x entry %d to %02x\n", machine().describe_context(),
+ m_lg1.m_palette_idx, m_lg1.m_palette_channel, (uint8_t)data);
+ m_lg1.m_palette_entry[m_lg1.m_palette_channel++] = (uint8_t)data;
+ if (m_lg1.m_palette_channel == 3)
+ {
+ m_palette->set_pen_color(m_lg1.m_palette_idx, m_lg1.m_palette_entry[0], m_lg1.m_palette_entry[1], m_lg1.m_palette_entry[2]);
+ }
+ break;
+ case REX15_CONTROL:
+ LOGMASKED(LOG_GFX, "%s: LG1 ConfigSel Write: Setting Control to %08x\n", machine().describe_context(), data);
+ m_lg1.m_control = data;
+ break;
+ case REX15_PIXEL_READ_MASK:
+ LOGMASKED(LOG_GFX, "%s: LG1 ConfigSel Write = %08x (Pixel Read Mask, entry %02x)\n", machine().describe_context(), data, m_lg1.m_palette_idx);
+ m_lg1.m_pix_read_mask[m_lg1.m_palette_idx] = (uint8_t)data;
+ break;
+ default:
+ LOGMASKED(LOG_GFX, "%s: LG1 Unknown ConfigData Write = %08x\n", machine().describe_context(), data);
+ break;
+ }
+ break;
+ default:
+ LOGMASKED(LOG_GFX, "%s: Unknown LG1 Write: %08x = %08x & %08x\n", machine().describe_context(), 0x1f3f0000 + offset*4, data, mem_mask);
+ break;
+ }
+}
+
+uint32_t indigo_state::screen_update(screen_device &device, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ const rgb_t *pens = m_palette->palette()->entry_list_raw();
+
+ for (int y = 0; y < 768; y++)
+ {
+ uint32_t *dst = &bitmap.pix32(y);
+ uint8_t *src = &m_framebuffer[y*1024];
+ for (int x = 0; x < 1024; x++)
+ {
+ *dst++ = pens[*src++];
+ }
+ }
+ return 0;
+}
void indigo_state::indigo_map(address_map &map)
{
- map(0x1f3f0000, 0x1f3fffff).rw(m_light, FUNC(light_video_device::entry_r), FUNC(light_video_device::entry_w));
+ map(0x1f3f0000, 0x1f3fffff).rw(FUNC(indigo_state::entry_r), FUNC(indigo_state::entry_w));
map(0x1fb80000, 0x1fb8ffff).rw(m_hpc, FUNC(hpc1_device::read), FUNC(hpc1_device::write));
map(0x1fbd9000, 0x1fbd903f).rw(FUNC(indigo_state::int_r), FUNC(indigo_state::int_w));
map(0x1fbe0000, 0x1fbfffff).rw(FUNC(indigo_state::dsp_ram_r), FUNC(indigo_state::dsp_ram_w));
@@ -194,7 +559,15 @@ INPUT_PORTS_END
void indigo_state::indigo_base(machine_config &config)
{
- LIGHT_VIDEO(config, m_light);
+ /* video hardware */
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ screen.set_size(1024, 768);
+ screen.set_visarea(0, 1024-1, 0, 768-1);
+ screen.set_screen_update(FUNC(indigo_state::screen_update));
+
+ PALETTE(config, m_palette).set_entries(256);
EEPROM_93C56_16BIT(config, m_eeprom);
}
diff --git a/src/mame/drivers/indy_indigo2.cpp b/src/mame/drivers/indy_indigo2.cpp
index 5d2e88a4de5..1c19fa6777e 100644
--- a/src/mame/drivers/indy_indigo2.cpp
+++ b/src/mame/drivers/indy_indigo2.cpp
@@ -7,7 +7,14 @@
* Known Issues:
* - The proper hookup for the MAC address is unknown, requiring
* a fake MAC to be set up before any IRIX installers will proceed.
+* - The IRIX 6.5.x installer kernel-panics on startup.
+* - The IRIX 5.3 installer hangs after loading.
* - The Gentoo Linux live CD hangs on starting the kernel.
+* - The disk formatting/partitioning utility for IRIX, fx, has
+* various issues, from the disk formatting too quickly to hanging
+* when exercising the disk.
+* - Disk accesses frequently result in a "SYNC negotiation error"
+* message.
*
* Memory map:
*
@@ -53,13 +60,13 @@
\*********************************************************************/
#include "emu.h"
+#include "bus/scsi/scsi.h"
+#include "bus/scsi/scsicd.h"
+#include "bus/scsi/scsihd.h"
-#include "cpu/mips/r4000.h"
+#include "cpu/mips/mips3.h"
#include "machine/hpc3.h"
-#include "machine/nscsi_bus.h"
-#include "machine/nscsi_cd.h"
-#include "machine/nscsi_hd.h"
#include "machine/sgi.h"
#include "sound/cdda.h"
@@ -77,7 +84,7 @@ public:
, m_maincpu(*this, "maincpu")
, m_mainram(*this, "mainram")
, m_mem_ctrl(*this, "memctrl")
- , m_scsi_ctrl(*this, "scsibus:0:wd33c93")
+ , m_scsi_ctrl(*this, "wd33c93")
, m_newport(*this, "newport")
, m_hpc3(*this, "hpc3")
{
@@ -96,14 +103,12 @@ protected:
void ip22_map(address_map &map);
- void wd33c93(device_t *device);
+ static void cdrom_config(device_t *device);
- static void scsi_devices(device_slot_interface &device);
-
- required_device<cpu_device> m_maincpu;
+ required_device<mips3_device> m_maincpu;
required_shared_ptr<uint64_t> m_mainram;
required_device<sgi_mc_device> m_mem_ctrl;
- required_device<wd33c93b_device> m_scsi_ctrl;
+ required_device<wd33c93_device> m_scsi_ctrl;
required_device<newport_video_device> m_newport;
required_device<hpc3_device> m_hpc3;
};
@@ -113,16 +118,14 @@ class ip24_state : public ip22_state
public:
ip24_state(const machine_config &mconfig, device_type type, const char *tag)
: ip22_state(mconfig, type, tag)
- , m_scsi_ctrl2(*this, "scsibus2:0:wd33c93")
+ , m_scsi_ctrl2(*this, "wd33c93_2")
{
}
void ip244415(machine_config &config);
private:
- void wd33c93_2(device_t *device);
-
- required_device<wd33c93b_device> m_scsi_ctrl2;
+ required_device<wd33c93_device> m_scsi_ctrl2;
};
READ32_MEMBER(ip22_state::eisa_io_r)
@@ -166,7 +169,7 @@ void ip22_state::machine_reset()
// set up low RAM mirror
membank("bank1")->set_base(m_mainram);
- //m_maincpu->mips3drc_set_options(MIPS3DRC_COMPATIBLE_OPTIONS | MIPS3DRC_CHECK_OVERFLOWS);
+ m_maincpu->mips3drc_set_options(MIPS3DRC_COMPATIBLE_OPTIONS | MIPS3DRC_CHECK_OVERFLOWS);
}
static INPUT_PORTS_START( ip225015 )
@@ -177,25 +180,11 @@ static INPUT_PORTS_START( ip225015 )
PORT_INCLUDE( at_keyboard ) /* IN4 - IN11 */
INPUT_PORTS_END
-//static void cdrom_config(device_t *device)
-//{
-// cdda_device *cdda = device->subdevice<cdda_device>("cdda");
-// cdda->add_route(0, ":hpc3:lspeaker", 1.0);
-// cdda->add_route(1, ":hpc3:rspeaker", 1.0);
-//}
-
-void ip22_state::wd33c93(device_t *device)
-{
- device->set_clock(10000000);
- downcast<wd33c93b_device *>(device)->irq_cb().set(m_hpc3, FUNC(hpc3_device::scsi0_irq));
- downcast<wd33c93b_device *>(device)->drq_cb().set(m_hpc3, FUNC(hpc3_device::scsi0_drq));
-}
-
-void ip22_state::scsi_devices(device_slot_interface &device)
+void ip22_state::cdrom_config(device_t *device)
{
- device.option_add("cdrom", NSCSI_CDROM_SGI);
- device.option_add("harddisk", NSCSI_HARDDISK);
- //device.set_option_machine_config("cdrom", cdrom_config);
+ cdda_device *cdda = device->subdevice<cdda_device>("cdda");
+ cdda->add_route(0, ":hpc3:lspeaker", 1.0);
+ cdda->add_route(1, ":hpc3:rspeaker", 1.0);
}
void ip22_state::ip22_base(machine_config &config)
@@ -213,27 +202,26 @@ void ip22_state::ip22_base(machine_config &config)
NEWPORT_VIDEO(config, m_newport, m_maincpu, m_hpc3);
- SGI_MC(config, m_mem_ctrl, m_maincpu, ":hpc3:eeprom", m_hpc3);
-
- NSCSI_BUS(config, "scsibus", 0);
- NSCSI_CONNECTOR(config, "scsibus:0").option_set("wd33c93", WD33C93B)
- .machine_config([this](device_t *device) { wd33c93(device); });
- NSCSI_CONNECTOR(config, "scsibus:1", scsi_devices, "harddisk", false);
- NSCSI_CONNECTOR(config, "scsibus:2", scsi_devices, nullptr, false);
- NSCSI_CONNECTOR(config, "scsibus:3", scsi_devices, nullptr, false);
- NSCSI_CONNECTOR(config, "scsibus:4", scsi_devices, nullptr, false);
- NSCSI_CONNECTOR(config, "scsibus:5", scsi_devices, nullptr, false);
- NSCSI_CONNECTOR(config, "scsibus:6", scsi_devices, "cdrom", false);
- NSCSI_CONNECTOR(config, "scsibus:7", scsi_devices, nullptr, false);
+ SGI_MC(config, m_mem_ctrl, m_maincpu, ":hpc3:eeprom");
+
+ scsi_port_device &scsi(SCSI_PORT(config, "scsi"));
+ scsi.set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_1));
+ scsi.set_slot_device(2, "cdrom", SCSICD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_4));
+ scsi.slot(2).set_option_machine_config("cdrom", cdrom_config);
+
+ WD33C93(config, m_scsi_ctrl);
+ m_scsi_ctrl->set_scsi_port("scsi");
+ m_scsi_ctrl->irq_cb().set(m_hpc3, FUNC(hpc3_device::scsi0_irq));
+ //m_scsi_ctrl->drq_cb().set(m_hpc3, FUNC(hpc3_device::scsi0_drq));
}
void ip22_state::ip225015(machine_config &config)
{
ip22_base(config);
- R4000(config, m_maincpu, 50000000*3);
- //m_maincpu->set_icache_size(32768);
- //m_maincpu->set_dcache_size(32768);
+ R5000BE(config, m_maincpu, 50000000*3);
+ m_maincpu->set_icache_size(32768);
+ m_maincpu->set_dcache_size(32768);
m_maincpu->set_addrmap(AS_PROGRAM, &ip22_state::ip22_map);
SGI_HPC3(config, m_hpc3, m_maincpu, m_scsi_ctrl);
@@ -243,40 +231,29 @@ void ip22_state::ip224613(machine_config &config)
{
ip22_base(config);
- R4600(config, m_maincpu, 33333333*4);
- //m_maincpu->set_icache_size(32768);
- //m_maincpu->set_dcache_size(32768);
+ R4600BE(config, m_maincpu, 33333333*4);
+ m_maincpu->set_icache_size(32768);
+ m_maincpu->set_dcache_size(32768);
m_maincpu->set_addrmap(AS_PROGRAM, &ip22_state::ip22_map);
SGI_HPC3(config, m_hpc3, m_maincpu, m_scsi_ctrl);
}
-void ip24_state::wd33c93_2(device_t *device)
-{
- device->set_clock(10000000);
- downcast<wd33c93b_device *>(device)->irq_cb().set(m_hpc3, FUNC(hpc3_device::scsi1_irq));
- downcast<wd33c93b_device *>(device)->drq_cb().set(m_hpc3, FUNC(hpc3_device::scsi1_drq));
-}
-
void ip24_state::ip244415(machine_config &config)
{
ip22_base(config);
- R4400(config, m_maincpu, 50000000*3);
- //m_maincpu->set_icache_size(32768);
- //m_maincpu->set_dcache_size(32768);
+ R4400BE(config, m_maincpu, 50000000*3);
+ m_maincpu->set_icache_size(32768);
+ m_maincpu->set_dcache_size(32768);
m_maincpu->set_addrmap(AS_PROGRAM, &ip24_state::ip22_map);
- NSCSI_BUS(config, "scsibus2", 0);
- NSCSI_CONNECTOR(config, "scsibus2:0").option_set("wd33c93", WD33C93B)
- .machine_config([this](device_t *device) { wd33c93_2(device); });
- NSCSI_CONNECTOR(config, "scsibus2:1", scsi_devices, nullptr, false);
- NSCSI_CONNECTOR(config, "scsibus2:2", scsi_devices, nullptr, false);
- NSCSI_CONNECTOR(config, "scsibus2:3", scsi_devices, nullptr, false);
- NSCSI_CONNECTOR(config, "scsibus2:4", scsi_devices, nullptr, false);
- NSCSI_CONNECTOR(config, "scsibus2:5", scsi_devices, nullptr, false);
- NSCSI_CONNECTOR(config, "scsibus2:6", scsi_devices, nullptr, false);
- NSCSI_CONNECTOR(config, "scsibus2:7", scsi_devices, nullptr, false);
+ SCSI_PORT(config, "scsi2");
+
+ WD33C93(config, m_scsi_ctrl2);
+ m_scsi_ctrl2->set_scsi_port("scsi2");
+ m_scsi_ctrl->irq_cb().set(m_hpc3, FUNC(hpc3_device::scsi1_irq));
+ //m_scsi_ctrl->drq_cb().set(m_hpc3, FUNC(hpc3_device::scsi1_drq));
SGI_HPC3(config, m_hpc3, m_maincpu, m_scsi_ctrl, m_scsi_ctrl2);
}
diff --git a/src/mame/drivers/instantm.cpp b/src/mame/drivers/instantm.cpp
index c2ebed3ca81..7f45523161f 100644
--- a/src/mame/drivers/instantm.cpp
+++ b/src/mame/drivers/instantm.cpp
@@ -126,26 +126,24 @@ void instantm_state::machine_reset()
// OSC1 = XTAL(3'579'545)
-void instantm_state::instantm(machine_config &config)
-{
+MACHINE_CONFIG_START(instantm_state::instantm)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(3'579'545));
- m_maincpu->set_addrmap(AS_PROGRAM, &instantm_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(3'579'545))
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- z80_device &subcpu(Z80(config, "subcpu", XTAL(3'579'545)));
- subcpu.set_addrmap(AS_PROGRAM, &instantm_state::sub_map);
- subcpu.set_addrmap(AS_IO, &instantm_state::sub_io);
+ MCFG_DEVICE_ADD("subcpu", Z80, XTAL(3'579'545))
+ MCFG_DEVICE_PROGRAM_MAP(sub_map)
+ MCFG_DEVICE_IO_MAP(sub_io)
// all guesswork
- clock_device &voice_clock(CLOCK(config, "voice_clock", 24000));
- voice_clock.signal_handler().set(FUNC(instantm_state::clock_w));
+ MCFG_DEVICE_ADD("voice_clock", CLOCK, 24000)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, instantm_state, clock_w))
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/instruct.cpp b/src/mame/drivers/instruct.cpp
index f283d632037..b6c9aff95d1 100644
--- a/src/mame/drivers/instruct.cpp
+++ b/src/mame/drivers/instruct.cpp
@@ -436,8 +436,8 @@ void instruct_state::instruct(machine_config &config)
config.set_default_layout(layout_instruct);
/* quickload */
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(instruct_state, instruct), this), "pgm", attotime::from_seconds(1));
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(instruct_state, instruct), this), "pgm", 1);
/* cassette */
CASSETTE(config, m_cass);
diff --git a/src/mame/drivers/inteladv.cpp b/src/mame/drivers/inteladv.cpp
index cd18f857685..57254101554 100644
--- a/src/mame/drivers/inteladv.cpp
+++ b/src/mame/drivers/inteladv.cpp
@@ -81,27 +81,26 @@ void inteladv_state::machine_reset()
{
}
-void inteladv_state::inteladv(machine_config &config)
-{
+MACHINE_CONFIG_START(inteladv_state::inteladv)
/* basic machine hardware */
- R65C02(config, m_maincpu, XTAL(1'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &inteladv_state::inteladv_main);
+ MCFG_DEVICE_ADD("maincpu", R65C02, XTAL(1'000'000) )
+ MCFG_DEVICE_PROGRAM_MAP(inteladv_main)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.62); /* verified on pcb */
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(40, 400-1, 16, 240-1);
- screen.set_screen_update(FUNC(inteladv_state::screen_update_inteladv));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.62) /* verified on pcb */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(40, 400-1, 16, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(inteladv_state, screen_update_inteladv)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xBGR_888, 256).enable_shadows();
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
-}
+MACHINE_CONFIG_END
ROM_START( inteladv )
ROM_REGION( 0x800000, "maincpu", 0 ) /* main program */
diff --git a/src/mame/drivers/intellect02.cpp b/src/mame/drivers/intellect02.cpp
deleted file mode 100644
index 98d43091362..00000000000
--- a/src/mame/drivers/intellect02.cpp
+++ /dev/null
@@ -1,321 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-/******************************************************************************
-
-Интеллект-02 (Intellect-02) driver
-
-This is a Soviet electronic board game console, a dozen or so cartridge games were
-made for it(can't say for certain how many released). PCB labels have prefix ДМП,
-it's assumed to have been designed by НИИ БРЭА (SRI BREA). First shown in 1983,
-produced during around 1985-1992.
-
-hardware notes:
-- КР580ВМ80А CPU (i8080A clone), speed unknown
-- КР580ИК55 (i8255 clone)
-- 1 KB RAM (8*КР565РУ2), cartridge port
-- 4-digit 7seg panel, 2 leds, 16 buttons, game board above it
-
-The chess/checkers board is detachable, with a board for Kalah underneath it.
-
-The hardware is very similar to Fidelity Chess Challenger 3. Actually, one of the
-first cartridges for this system, a Chess program, is a modified Chess Challenger 3 ROM.
-The chess engine was kept identical. (note: the "lose" LED is used for "check")
-
-Intellect-01 looks like it didn't get further than a prototype. It was a dedicated
-chess computer, probably a clone of CC3.
-
-keypad legend:
-
-СБ - сброс (reset)
-ВВ - ввод (input)
-ВИ - выбор игры (game select)
-СТ - стирание (erase)
-ПП - просмотр позиции (view position)
-УИ - уровень игры (game level)
-
-TODO:
-- identify ПП, УИ, 0, 9 buttons (only the chess program is dumped and it doesn't use them)
-- verify cpu speed
-
-******************************************************************************/
-
-#include "emu.h"
-
-#include "cpu/i8085/i8085.h"
-#include "machine/i8255.h"
-#include "machine/timer.h"
-#include "sound/dac.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-#include "bus/generic/slot.h"
-#include "bus/generic/carts.h"
-#include "softlist.h"
-
-// internal artwork
-#include "intellect02.lh" // clickable
-
-
-namespace {
-
-class intel02_state : public driver_device
-{
-public:
- intel02_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_ppi8255(*this, "ppi8255"),
- m_delay_display(*this, "delay_display_%u", 0),
- m_keypad(*this, "IN.%u", 0),
- m_dac(*this, "dac"),
- m_cart(*this, "cartslot"),
- m_out_digit(*this, "digit%u", 0U),
- m_out_led(*this, "led%u", 0U)
- { }
-
- // machine configs
- void intel02(machine_config &config);
-
- // assume that reset button is tied to RESET pin
- DECLARE_INPUT_CHANGED_MEMBER(reset_button) { m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE); }
-
-protected:
- virtual void machine_start() override;
-
-private:
- // devices/pointers
- required_device<cpu_device> m_maincpu;
- required_device<i8255_device> m_ppi8255;
- required_device_array<timer_device, 6> m_delay_display;
- required_ioport_array<2> m_keypad;
- required_device<dac_bit_interface> m_dac;
- required_device<generic_slot_device> m_cart;
- output_finder<4> m_out_digit;
- output_finder<2> m_out_led;
-
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cartridge);
-
- // display stuff
- void update_display();
- TIMER_DEVICE_CALLBACK_MEMBER(delay_display);
-
- u8 m_digit_data;
- u8 m_led_select;
- u8 m_led_active;
-
- // address maps
- void main_map(address_map &map);
- void main_io(address_map &map);
-
- // I/O handlers
- DECLARE_READ8_MEMBER(input_r);
- DECLARE_WRITE8_MEMBER(digit_w);
- DECLARE_WRITE8_MEMBER(control_w);
-};
-
-void intel02_state::machine_start()
-{
- // resolve handlers
- m_out_led.resolve();
- m_out_digit.resolve();
-
- // zerofill
- m_digit_data = 0;
- m_led_select = 0;
- m_led_active = 0;
-
- // register for savestates
- save_item(NAME(m_digit_data));
- save_item(NAME(m_led_select));
- save_item(NAME(m_led_active));
-}
-
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// cartridge
-
-DEVICE_IMAGE_LOAD_MEMBER(intel02_state, cartridge)
-{
- u32 size = m_cart->common_get_size("rom");
- m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
- m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
-
- return image_init_result::PASS;
-}
-
-
-// misc display handling
-
-void intel02_state::update_display()
-{
- // latch digits (low 4 bits of led select)
- for (int i = 0; i < 4; i++)
- {
- if (BIT(m_led_select, i))
- m_out_digit[i] = m_digit_data;
- else if (!BIT(m_led_active, i))
- m_out_digit[i] = 0;
- }
-
- // led select d4: lose led, d5: win led
- m_out_led[0] = BIT(m_led_active, 4);
- m_out_led[1] = BIT(m_led_active, 5);
-}
-
-TIMER_DEVICE_CALLBACK_MEMBER(intel02_state::delay_display)
-{
- u8 mask = 1 << param;
- m_led_active = (m_led_active & ~mask) | (m_led_select & mask);
- update_display();
-}
-
-
-// I8255 PPI
-
-READ8_MEMBER(intel02_state::input_r)
-{
- // d0-d3: buttons through a priority encoder
- // d4-d7: buttons (direct)
- return (count_leading_zeros(m_keypad[0]->read()) - 17) | (~m_keypad[1]->read() << 4 & 0xf0);
-}
-
-WRITE8_MEMBER(intel02_state::digit_w)
-{
- // d0-d7: digit segment data
- m_digit_data = bitswap<8>(data,7,0,1,2,3,4,5,6);
- update_display();
-}
-
-WRITE8_MEMBER(intel02_state::control_w)
-{
- // d0-d5: select digit/leds
- for (int i = 0; i < 6; i++)
- {
- if (BIT(data, i))
- m_led_active |= 1 << i;
-
- // they're strobed, so on falling edge, delay them going off to prevent flicker or stuck display
- else if (BIT(m_led_select, i))
- m_delay_display[i]->adjust(attotime::from_msec(10), i);
- }
-
- m_led_select = data;
- update_display();
-
- // d6: unused?
- // it's a timer trigger on Chess Challenger 3
-
- // d7: speaker out
- m_dac->write(BIT(data, 7));
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void intel02_state::main_map(address_map &map)
-{
- map(0x0000, 0x1fff).r("cartslot", FUNC(generic_slot_device::read_rom));
- map(0xf000, 0xf3ff).ram();
-}
-
-void intel02_state::main_io(address_map &map)
-{
- map.global_mask(0xff);
- map(0xf4, 0xf7).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( intel02 )
- PORT_START("IN.0")
- PORT_BIT(0x003f, IP_ACTIVE_HIGH, IPT_UNKNOWN)
- PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H)
- PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G)
- PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F)
- PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_E)
- PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D)
- PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C)
- PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B)
- PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_A)
- PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_UNKNOWN)
-
- PORT_START("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Input") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Game Select") PORT_CODE(KEYCODE_S)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Erase") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
-
- PORT_START("RESET")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Reset") PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, intel02_state, reset_button, nullptr)
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Configs
-******************************************************************************/
-
-void intel02_state::intel02(machine_config &config)
-{
- /* basic machine hardware */
- I8080A(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &intel02_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &intel02_state::main_io);
-
- I8255(config, m_ppi8255);
- m_ppi8255->in_pa_callback().set(FUNC(intel02_state::input_r));
- m_ppi8255->tri_pa_callback().set_constant(0);
- m_ppi8255->out_pb_callback().set(FUNC(intel02_state::digit_w));
- m_ppi8255->tri_pb_callback().set_constant(0);
- m_ppi8255->out_pc_callback().set(FUNC(intel02_state::control_w));
-
- /* video hardware */
- for (int i = 0; i < 6; i++)
- TIMER(config, m_delay_display[i]).configure_generic(FUNC(intel02_state::delay_display));
-
- config.set_default_layout(layout_intellect02);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-
- /* cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "intellect02", "bin");
- m_cart->set_device_load(device_image_load_delegate(&intel02_state::device_image_load_cartridge, this));
- m_cart->set_must_be_loaded(true);
-
- SOFTWARE_LIST(config, "cart_list").set_original("intellect02");
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( intel02 )
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
- // nothing here, it's on a cartridge
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1985, intel02, 0, 0, intel02, intel02, intel02_state, empty_init, "BREA Research Institute", "Intellect-02", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/interact.cpp b/src/mame/drivers/interact.cpp
index 7733f480b04..9a199c37d5d 100644
--- a/src/mame/drivers/interact.cpp
+++ b/src/mame/drivers/interact.cpp
@@ -127,75 +127,77 @@ uint32_t interact_state::screen_update_interact(screen_device &screen, bitmap_in
return 0;
}
-void interact_state::interact(machine_config &config)
-{
+MACHINE_CONFIG_START(interact_state::interact)
+
/* basic machine hardware */
- I8080(config, m_maincpu, XTAL(2'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &interact_state::interact_mem);
- m_maincpu->set_periodic_int(FUNC(interact_state::irq0_line_hold), attotime::from_hz(50)); /* put on the I8080 irq in Hz*/
+ MCFG_DEVICE_ADD("maincpu", I8080, XTAL(2'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(interact_mem)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(interact_state, irq0_line_hold, 50) /* put on the I8080 irq in Hz*/
MCFG_MACHINE_RESET_OVERRIDE(interact_state,interact)
MCFG_MACHINE_START_OVERRIDE(interact_state,interact)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(256, 79);
- screen.set_visarea(0, 112, 0, 77);
- screen.set_screen_update(FUNC(interact_state::screen_update_interact));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(256, 79)
+ MCFG_SCREEN_VISIBLE_AREA(0, 112, 0, 77)
+ MCFG_SCREEN_UPDATE_DRIVER(interact_state, screen_update_interact)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(16); /* 8 colours, but only 4 at a time*/
+ MCFG_PALETTE_ADD("palette", 16) /* 8 colours, but only 4 at a time*/
MCFG_VIDEO_START_OVERRIDE(interact_state,hec2hrp)
hector_audio(config);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(hector_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MASK_SPEAKER);
- m_cassette->set_interface("interact_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(hector_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MASK_SPEAKER)
+ MCFG_CASSETTE_INTERFACE("interact_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("interact");
+ MCFG_SOFTWARE_LIST_ADD("cass_list","interact")
/* printer */
- PRINTER(config, m_printer, 0);
-}
+ MCFG_DEVICE_ADD("printer", PRINTER, 0)
+
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(interact_state::hector1)
-void interact_state::hector1(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(1'750'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &interact_state::interact_mem);
- m_maincpu->set_periodic_int(FUNC(interact_state::irq0_line_hold), attotime::from_hz(50)); /* put on the I8080 irq in Hz*/
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(1'750'000))
+ MCFG_DEVICE_PROGRAM_MAP(interact_mem)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(interact_state, irq0_line_hold, 50) /* put on the I8080 irq in Hz*/
MCFG_MACHINE_RESET_OVERRIDE(interact_state,interact)
MCFG_MACHINE_START_OVERRIDE(interact_state,interact)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(256, 79);
- screen.set_visarea(0, 112, 0, 77);
- screen.set_screen_update(FUNC(interact_state::screen_update_interact));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(256, 79)
+ MCFG_SCREEN_VISIBLE_AREA(0, 112, 0, 77)
+ MCFG_SCREEN_UPDATE_DRIVER(interact_state, screen_update_interact)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(16); /* 8 colours, but only 4 at a time*/
+ MCFG_PALETTE_ADD("palette", 16) /* 8 colours, but only 4 at a time*/
MCFG_VIDEO_START_OVERRIDE(interact_state,hec2hrp)
hector_audio(config);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(hector_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MASK_SPEAKER);
- m_cassette->set_interface("interact_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(hector_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MASK_SPEAKER)
+ MCFG_CASSETTE_INTERFACE("interact_cass")
/* printer */
- PRINTER(config, m_printer, 0);
-}
+ MCFG_DEVICE_ADD("printer", PRINTER, 0)
+
+MACHINE_CONFIG_END
/* Input ports */
static INPUT_PORTS_START( interact )
diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp
index 9fe4fba37bd..3f8dfe1d4a1 100644
--- a/src/mame/drivers/interpro.cpp
+++ b/src/mame/drivers/interpro.cpp
@@ -532,11 +532,11 @@ void interpro_state::interpro_common_map(address_map &map)
map(0x7f000400, 0x7f00040f).rw(m_scc1, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0x000000ff);
map(0x7f000410, 0x7f00041f).rw(m_scc2, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0x000000ff);
map(0x7f000500, 0x7f000503).lrw8("rtc_rw",
- [this](offs_t offset) {
- return m_rtc->read(offset^1);
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_rtc->read(space, offset^1, mem_mask);
},
- [this](offs_t offset, u8 data) {
- m_rtc->write(offset^1, data);
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_rtc->write(space, offset^1, data, mem_mask);
}).umask32(0x000000ff);
map(0x7f000600, 0x7f000600).w(m_rtc, FUNC(mc146818_device::write));
@@ -778,10 +778,10 @@ void interpro_state::ioga(machine_config &config)
// ioga dma and serial dma channels
//m_ioga->dma_r_callback<0>().set(unknown); // plotter
- m_ioga->dma_r_callback<1>().set(INTERPRO_SCSI_DEVICE_TAG, FUNC(ncr53c90a_device::dma_r));
- m_ioga->dma_w_callback<1>().set(INTERPRO_SCSI_DEVICE_TAG, FUNC(ncr53c90a_device::dma_w));
- m_ioga->dma_r_callback<2>().set(m_fdc, FUNC(upd765_family_device::dma_r));
- m_ioga->dma_w_callback<2>().set(m_fdc, FUNC(upd765_family_device::dma_w));
+ m_ioga->dma_r_callback<1>().set(INTERPRO_SCSI_DEVICE_TAG, FUNC(ncr53c90a_device::mdma_r));
+ m_ioga->dma_w_callback<1>().set(INTERPRO_SCSI_DEVICE_TAG, FUNC(ncr53c90a_device::mdma_w));
+ m_ioga->dma_r_callback<2>().set(m_fdc, FUNC(upd765_family_device::mdma_r));
+ m_ioga->dma_w_callback<2>().set(m_fdc, FUNC(upd765_family_device::mdma_w));
m_ioga->serial_dma_r_callback<0>().set(m_scc2, FUNC(z80scc_device::db_r));
m_ioga->serial_dma_w_callback<0>().set(m_scc2, FUNC(z80scc_device::db_w));
m_ioga->serial_dma_r_callback<1>().set(m_scc1, FUNC(z80scc_device::da_r));
@@ -900,9 +900,7 @@ void emerald_state::emerald(machine_config &config)
ioga(config);
// srx bus
- SRX_BUS(config, m_bus, 0);
- m_bus->set_main_space(m_maincpu, 0);
- m_bus->set_io_space(m_maincpu, 1);
+ SRX_BUS(config, m_bus, 0, m_maincpu);
m_bus->out_irq0_cb().set(m_ioga, FUNC(interpro_ioga_device::ir3_w));
m_bus->out_irq1_cb().set(m_ioga, FUNC(interpro_ioga_device::ir4_w));
@@ -974,9 +972,7 @@ void turquoise_state::turquoise(machine_config &config)
ioga(config);
// cbus bus
- CBUS_BUS(config, m_bus, 0);
- m_bus->set_main_space(m_maincpu, 0);
- m_bus->set_io_space(m_maincpu, 1);
+ CBUS_BUS(config, m_bus, 0, m_maincpu);
m_bus->out_irq0_cb().set(m_ioga, FUNC(interpro_ioga_device::ir3_w));
m_bus->out_irq1_cb().set(m_ioga, FUNC(interpro_ioga_device::ir4_w));
@@ -1068,9 +1064,7 @@ void cbus_sapphire_state::cbus_sapphire(machine_config &config)
m_mse_port->state_func().set(m_ioga, FUNC(interpro_ioga_device::mouse_status_w));
// cbus bus
- CBUS_BUS(config, m_bus, 0);
- m_bus->set_main_space(m_maincpu, 0);
- m_bus->set_io_space(m_maincpu, 1);
+ CBUS_BUS(config, m_bus, 0, m_maincpu);
m_bus->out_irq0_cb().set(m_ioga, FUNC(interpro_ioga_device::ir3_w));
m_bus->out_irq1_cb().set(m_ioga, FUNC(interpro_ioga_device::ir4_w));
@@ -1083,9 +1077,7 @@ void srx_sapphire_state::srx_sapphire(machine_config &config)
sapphire(config);
// srx bus
- SRX_BUS(config, m_bus, 0);
- m_bus->set_main_space(m_maincpu, 0);
- m_bus->set_io_space(m_maincpu, 1);
+ SRX_BUS(config, m_bus, 0, m_maincpu);
m_bus->out_irq0_cb().set(m_ioga, FUNC(interpro_ioga_device::ir3_w));
m_bus->out_irq1_cb().set(m_ioga, FUNC(interpro_ioga_device::ir4_w));
diff --git a/src/mame/drivers/intrscti.cpp b/src/mame/drivers/intrscti.cpp
index d72516c95fb..3b6afd2a03c 100644
--- a/src/mame/drivers/intrscti.cpp
+++ b/src/mame/drivers/intrscti.cpp
@@ -189,30 +189,30 @@ static GFXDECODE_START( gfx_intrscti )
GFXDECODE_END
-void intrscti_state::intrscti(machine_config &config)
-{
+MACHINE_CONFIG_START(intrscti_state::intrscti)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &intrscti_state::intrscti_map);
- m_maincpu->set_addrmap(AS_IO, &intrscti_state::intrscti_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(intrscti_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(intrscti_map)
+ MCFG_DEVICE_IO_MAP(intrscti_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", intrscti_state, irq0_line_hold)
- Z80(config, m_subcpu, 4000000); /* ? MHz */
- m_subcpu->set_addrmap(AS_PROGRAM, &intrscti_state::intrscti_sub_map);
- m_subcpu->set_addrmap(AS_IO, &intrscti_state::intrscti_sub_io_map);
+ MCFG_DEVICE_ADD("subcpu", Z80, 4000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(intrscti_sub_map)
+ MCFG_DEVICE_IO_MAP(intrscti_sub_io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 0, 256-1);
- screen.set_screen_update(FUNC(intrscti_state::screen_update_intrscti));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_intrscti);
- PALETTE(config, m_palette).set_entries(0x100);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(intrscti_state, screen_update_intrscti)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_intrscti)
+ MCFG_PALETTE_ADD("palette", 0x100)
+MACHINE_CONFIG_END
ROM_START( intrscti )
diff --git a/src/mame/drivers/intv.cpp b/src/mame/drivers/intv.cpp
index 34fdf36526d..c878215b485 100644
--- a/src/mame/drivers/intv.cpp
+++ b/src/mame/drivers/intv.cpp
@@ -457,30 +457,29 @@ INTERRUPT_GEN_MEMBER(intv_state::intv_interrupt2)
timer_set(m_keyboard->cycles_to_attotime(100), TIMER_INTV_INTERRUPT2_COMPLETE);
}
-void intv_state::intv(machine_config &config)
-{
+MACHINE_CONFIG_START(intv_state::intv)
/* basic machine hardware */
- CP1610(config, m_maincpu, XTAL(3'579'545)/4); /* Colorburst/4 */
- m_maincpu->set_addrmap(AS_PROGRAM, &intv_state::intv_mem);
- m_maincpu->set_vblank_int("screen", FUNC(intv_state::intv_interrupt));
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD("maincpu", CP1610, XTAL(3'579'545)/4) /* Colorburst/4 */
+ MCFG_DEVICE_PROGRAM_MAP(intv_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", intv_state, intv_interrupt)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* video hardware */
- STIC(config, m_stic, XTAL(3'579'545));
- m_stic->set_screen("screen");
+ MCFG_DEVICE_ADD("stic", STIC, XTAL(3'579'545))
+ MCFG_VIDEO_SET_SCREEN("screen")
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.92);
- //screen.set_vblank_time(ATTOSECONDS_IN_USEC(2400)); /* not accurate */
- screen.set_screen_update(FUNC(intv_state::screen_update_intv));
- screen.set_size(stic_device::SCREEN_WIDTH*INTV_X_SCALE, stic_device::SCREEN_HEIGHT*INTV_Y_SCALE);
- screen.set_visarea(0, stic_device::SCREEN_WIDTH*INTV_X_SCALE-1, 0, stic_device::SCREEN_HEIGHT*INTV_Y_SCALE-1);
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.92)
+ //MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2400)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(intv_state, screen_update_intv)
+ MCFG_SCREEN_SIZE(stic_device::SCREEN_WIDTH*INTV_X_SCALE, stic_device::SCREEN_HEIGHT*INTV_Y_SCALE)
+ MCFG_SCREEN_VISIBLE_AREA(0, stic_device::SCREEN_WIDTH*INTV_X_SCALE-1, 0, stic_device::SCREEN_HEIGHT*INTV_Y_SCALE-1)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(intv_state::intv_palette), 0x400, 32);
- INTV_CONTROL_PORT(config, "iopt_right_ctrl", intv_control_port_devices, "handctrl");
- INTV_CONTROL_PORT(config, "iopt_left_ctrl", intv_control_port_devices, "handctrl");
+ MCFG_INTV_CONTROL_PORT_ADD("iopt_right_ctrl", intv_control_port_devices, "handctrl")
+ MCFG_INTV_CONTROL_PORT_ADD("iopt_left_ctrl", intv_control_port_devices, "handctrl")
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -490,62 +489,63 @@ void intv_state::intv(machine_config &config)
m_sound->add_route(ALL_OUTPUTS, "mono", 0.33);
/* cartridge */
- INTV_CART_SLOT(config, m_cart, intv_cart, nullptr);
+ MCFG_INTV_CARTRIDGE_ADD("cartslot", intv_cart, nullptr)
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("intv");
- SOFTWARE_LIST(config, "ecs_list").set_compatible("intvecs");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "intv")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("ecs_list", "intvecs")
+MACHINE_CONFIG_END
-void intv_state::intv2(machine_config &config)
-{
+MACHINE_CONFIG_START(intv_state::intv2)
intv(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &intv_state::intv2_mem);
-}
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(intv2_mem)
+MACHINE_CONFIG_END
-void intv_state::intvoice(machine_config &config)
-{
+MACHINE_CONFIG_START(intv_state::intvoice)
intv(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &intv_state::intvoice_mem);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(intvoice_mem)
- config.device_remove("cartslot");
- INTV_ROM_VOICE(config, "voice", 0);
-}
+ MCFG_DEVICE_REMOVE("cartslot")
+ MCFG_DEVICE_ADD("voice", INTV_ROM_VOICE, 0)
+MACHINE_CONFIG_END
-void intv_state::intvecs(machine_config &config)
-{
+MACHINE_CONFIG_START(intv_state::intvecs)
intv(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &intv_state::intvecs_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(intvecs_mem)
- config.device_remove("cartslot");
- INTV_ROM_ECS(config, "ecs", 0);
+ MCFG_DEVICE_REMOVE("cartslot")
+ MCFG_DEVICE_ADD("ecs", INTV_ROM_ECS, 0)
sp0256_device &speech(SP0256(config, "speech", 3120000));
/* The Intellivoice uses a speaker with its own volume control so the relative volumes to use are subjective */
speech.add_route(ALL_OUTPUTS, "mono", 1.00);
/* cassette */
- //CASSETTE(config, "cassette");
+ //MCFG_CASSETTE_ADD( "cassette" )
/* software lists */
- config.device_remove("ecs_list");
- SOFTWARE_LIST(config.replace(), "cart_list").set_original("intvecs");
- SOFTWARE_LIST(config, "intv_list").set_compatible("intv");
-}
+ MCFG_DEVICE_REMOVE("cart_list")
+ MCFG_DEVICE_REMOVE("ecs_list")
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "intvecs")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("intv_list", "intv")
+MACHINE_CONFIG_END
-void intv_state::intvkbd(machine_config &config)
-{
+MACHINE_CONFIG_START(intv_state::intvkbd)
intv(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &intv_state::intvkbd_mem);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(intvkbd_mem)
- M6502(config, m_keyboard, XTAL(7'159'090)/8);
- m_keyboard->set_addrmap(AS_PROGRAM, &intv_state::intvkbd2_mem);
- m_keyboard->set_vblank_int("screen", FUNC(intv_state::intv_interrupt2));
+ MCFG_DEVICE_ADD("keyboard", M6502, XTAL(7'159'090)/8)
+ MCFG_DEVICE_PROGRAM_MAP(intvkbd2_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", intv_state, intv_interrupt2)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_intvkbd);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_intvkbd)
/* crt controller */
TMS9927(config, m_crtc, XTAL(7'159'090)/8);
@@ -556,12 +556,13 @@ void intv_state::intvkbd(machine_config &config)
stic_device::OVERSCAN_TOP_HEIGHT*stic_device::Y_SCALE*INTVKBD_Y_SCALE,
stic_device::OVERSCAN_BOTTOM_HEIGHT*stic_device::Y_SCALE*INTVKBD_Y_SCALE);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(intv_state::screen_update_intvkbd));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(intv_state, screen_update_intvkbd)
/* I/O cartslots for BASIC */
- GENERIC_CARTSLOT(config, m_iocart1, generic_plain_slot, "intbasic_cart");
- GENERIC_CARTSLOT(config, m_iocart2, generic_plain_slot, "intbasic_cart");
-}
+ MCFG_GENERIC_CARTSLOT_ADD("ioslot1", generic_plain_slot, "intbasic_cart")
+ MCFG_GENERIC_CARTSLOT_ADD("ioslot2", generic_plain_slot, "intbasic_cart")
+MACHINE_CONFIG_END
ROM_START(intv) // the intv1 exec rom should be two roms: RO-3-9502-011.U5 and RO-3-9504-021.U6
ROM_REGION(0x10000<<1,"maincpu", ROMREGION_ERASEFF)
diff --git a/src/mame/drivers/invqix.cpp b/src/mame/drivers/invqix.cpp
index 536e7f6e8fc..c3476c39b4f 100644
--- a/src/mame/drivers/invqix.cpp
+++ b/src/mame/drivers/invqix.cpp
@@ -334,32 +334,31 @@ static INPUT_PORTS_START( invqix )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
-void invqix_state::invqix(machine_config &config)
-{
- H8S2394(config, m_maincpu, XTAL(20'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &invqix_state::invqix_prg_map);
- m_maincpu->set_addrmap(AS_IO, &invqix_state::invqix_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(invqix_state::irq1_line_hold));
- m_maincpu->set_periodic_int(FUNC(invqix_state::irq0_line_hold), attotime::from_hz(60));
+MACHINE_CONFIG_START(invqix_state::invqix)
+ MCFG_DEVICE_ADD("maincpu", H8S2394, XTAL(20'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(invqix_prg_map)
+ MCFG_DEVICE_IO_MAP(invqix_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", invqix_state, irq1_line_hold)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(invqix_state, irq0_line_hold, 60)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_screen_update(FUNC(invqix_state::screen_update));
- screen.set_size(640, 480);
- screen.set_visarea(0, 256, 0, 240);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_UPDATE_DRIVER(invqix_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256, 0, 240)
- PALETTE(config, "palette").set_entries(65536);
+ MCFG_PALETTE_ADD("palette", 65536)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- okim9810_device &oki(OKIM9810(config, "oki", XTAL(4'096'000)));
- oki.add_route(0, "lspeaker", 0.80);
- oki.add_route(1, "rspeaker", 0.80);
+ MCFG_DEVICE_ADD("oki", OKIM9810, XTAL(4'096'000))
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
EEPROM_93C46_16BIT(config, "eeprom").default_value(0);
-}
+MACHINE_CONFIG_END
ROM_START( invqix )
ROM_REGION(0x200000, "program", 0)
diff --git a/src/mame/drivers/ipds.cpp b/src/mame/drivers/ipds.cpp
index e6e9663d9f0..87c39b19d87 100644
--- a/src/mame/drivers/ipds.cpp
+++ b/src/mame/drivers/ipds.cpp
@@ -134,30 +134,29 @@ void ipds_state::kbd_put(u8 data)
m_term_data = data;
}
-void ipds_state::ipds(machine_config &config)
-{
+MACHINE_CONFIG_START(ipds_state::ipds)
/* basic machine hardware */
- I8085A(config, m_maincpu, XTAL(19'660'800) / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &ipds_state::ipds_mem);
- m_maincpu->set_addrmap(AS_IO, &ipds_state::ipds_io);
+ MCFG_DEVICE_ADD("maincpu",I8085A, XTAL(19'660'800) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(ipds_mem)
+ MCFG_DEVICE_IO_MAP(ipds_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_screen_update("i8275", FUNC(i8275_device::screen_update));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_ipds);
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_UPDATE_DEVICE("i8275", i8275_device, screen_update)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ipds)
PALETTE(config, m_palette, palette_device::MONOCHROME);
- I8275(config, m_crtc, XTAL(19'660'800) / 4);
- m_crtc->set_character_width(6);
- m_crtc->set_display_callback(FUNC(ipds_state::crtc_display_pixels), this);
+ MCFG_DEVICE_ADD("i8275", I8275, XTAL(19'660'800) / 4)
+ MCFG_I8275_CHARACTER_WIDTH(6)
+ MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(ipds_state, crtc_display_pixels)
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
keyboard.set_keyboard_callback(FUNC(ipds_state::kbd_put));
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( ipds )
diff --git a/src/mame/drivers/iphone2g.cpp b/src/mame/drivers/iphone2g.cpp
index 868f520884f..6b6cedf37df 100644
--- a/src/mame/drivers/iphone2g.cpp
+++ b/src/mame/drivers/iphone2g.cpp
@@ -77,16 +77,16 @@ void iphone2g_state::machine_reset()
{
}
-void iphone2g_state::iphone2g(machine_config &config)
-{
+MACHINE_CONFIG_START(iphone2g_state::iphone2g)
+
/* Basic machine hardware */
- ARM1176JZF_S(config, m_maincpu, XTAL(12'000'000) * 103 / 3); //412 MHz, downclocked from 600 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &iphone2g_state::mem_map);
+ MCFG_DEVICE_ADD(m_maincpu, ARM1176JZF_S, XTAL(12'000'000) * 103 / 3) //412 MHz, downclocked from 600 MHz
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(12'000'000), 320, 0, 320, 480, 0, 480); //Complete guess
- m_screen->set_screen_update(FUNC(iphone2g_state::screen_update));
-}
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(12'000'000), 320, 0, 320, 480, 0, 480) //Complete guess
+ MCFG_SCREEN_UPDATE_DRIVER(iphone2g_state, screen_update)
+MACHINE_CONFIG_END
ROM_START(iphone2g)
ROM_REGION32_LE(0x10000, "bios", 0)
diff --git a/src/mame/drivers/iq151.cpp b/src/mame/drivers/iq151.cpp
index da8a6eca3a1..7574b6fb4ec 100644
--- a/src/mame/drivers/iq151.cpp
+++ b/src/mame/drivers/iq151.cpp
@@ -388,8 +388,7 @@ static void iq151_cart(device_slot_interface &device)
device.option_add("amos3", IQ151_AMOS3); // AMOS cart 3
}
-void iq151_state::iq151(machine_config &config)
-{
+MACHINE_CONFIG_START(iq151_state::iq151)
/* basic machine hardware */
I8080(config, m_maincpu, XTAL(2'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &iq151_state::iq151_mem);
@@ -398,19 +397,20 @@ void iq151_state::iq151(machine_config &config)
m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(iq151_state::screen_update));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0, 32*8-1, 0, 32*8-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(iq151_state, screen_update)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 32*8-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
PIC8259(config, m_pic, 0);
m_pic->out_int_callback().set_inputline(m_maincpu, 0);
@@ -421,53 +421,58 @@ void iq151_state::iq151(machine_config &config)
ppi.in_pc_callback().set(FUNC(iq151_state::ppi_portc_r));
ppi.out_pc_callback().set(FUNC(iq151_state::ppi_portc_w));
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED);
- m_cassette->set_interface("iq151_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED)
+ MCFG_CASSETTE_INTERFACE("iq151_cass")
- TIMER(config, "cassette_timer").configure_periodic(FUNC(iq151_state::cassette_timer), attotime::from_hz(2000));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("cassette_timer", iq151_state, cassette_timer, attotime::from_hz(2000))
/* cartridge */
- IQ151CART_SLOT(config, m_carts[0], iq151_cart, nullptr);
- m_carts[0]->set_screen_tag("screen");
- m_carts[0]->out_irq0_callback().set(m_pic, FUNC(pic8259_device::ir0_w));
- m_carts[0]->out_irq1_callback().set(m_pic, FUNC(pic8259_device::ir1_w));
- m_carts[0]->out_irq2_callback().set(m_pic, FUNC(pic8259_device::ir2_w));
- m_carts[0]->out_irq3_callback().set(m_pic, FUNC(pic8259_device::ir3_w));
- m_carts[0]->out_irq4_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
- IQ151CART_SLOT(config, m_carts[1], iq151_cart, nullptr);
- m_carts[1]->set_screen_tag("screen");
- m_carts[1]->out_irq0_callback().set(m_pic, FUNC(pic8259_device::ir0_w));
- m_carts[1]->out_irq1_callback().set(m_pic, FUNC(pic8259_device::ir1_w));
- m_carts[1]->out_irq2_callback().set(m_pic, FUNC(pic8259_device::ir2_w));
- m_carts[1]->out_irq3_callback().set(m_pic, FUNC(pic8259_device::ir3_w));
- m_carts[1]->out_irq4_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
- IQ151CART_SLOT(config, m_carts[2], iq151_cart, nullptr);
- m_carts[2]->set_screen_tag("screen");
- m_carts[2]->out_irq0_callback().set(m_pic, FUNC(pic8259_device::ir0_w));
- m_carts[2]->out_irq1_callback().set(m_pic, FUNC(pic8259_device::ir1_w));
- m_carts[2]->out_irq2_callback().set(m_pic, FUNC(pic8259_device::ir2_w));
- m_carts[2]->out_irq3_callback().set(m_pic, FUNC(pic8259_device::ir3_w));
- m_carts[2]->out_irq4_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
- IQ151CART_SLOT(config, m_carts[3], iq151_cart, nullptr);
- m_carts[3]->set_screen_tag("screen");
- m_carts[3]->out_irq0_callback().set(m_pic, FUNC(pic8259_device::ir0_w));
- m_carts[3]->out_irq1_callback().set(m_pic, FUNC(pic8259_device::ir1_w));
- m_carts[3]->out_irq2_callback().set(m_pic, FUNC(pic8259_device::ir2_w));
- m_carts[3]->out_irq3_callback().set(m_pic, FUNC(pic8259_device::ir3_w));
- m_carts[3]->out_irq4_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
- IQ151CART_SLOT(config, m_carts[4], iq151_cart, "video32");
- m_carts[4]->set_screen_tag("screen");
- m_carts[4]->out_irq0_callback().set(m_pic, FUNC(pic8259_device::ir0_w));
- m_carts[4]->out_irq1_callback().set(m_pic, FUNC(pic8259_device::ir1_w));
- m_carts[4]->out_irq2_callback().set(m_pic, FUNC(pic8259_device::ir2_w));
- m_carts[4]->out_irq3_callback().set(m_pic, FUNC(pic8259_device::ir3_w));
- m_carts[4]->out_irq4_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
+ MCFG_DEVICE_ADD("slot1", IQ151CART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(iq151_cart, nullptr, false)
+ MCFG_IQ151CART_SLOT_SCREEN_TAG("screen")
+ MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(WRITELINE(m_pic, pic8259_device, ir0_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(WRITELINE(m_pic, pic8259_device, ir1_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(WRITELINE(m_pic, pic8259_device, ir2_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(WRITELINE(m_pic, pic8259_device, ir3_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(WRITELINE(m_pic, pic8259_device, ir4_w))
+ MCFG_DEVICE_ADD("slot2", IQ151CART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(iq151_cart, nullptr, false)
+ MCFG_IQ151CART_SLOT_SCREEN_TAG("screen")
+ MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(WRITELINE(m_pic, pic8259_device, ir0_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(WRITELINE(m_pic, pic8259_device, ir1_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(WRITELINE(m_pic, pic8259_device, ir2_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(WRITELINE(m_pic, pic8259_device, ir3_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(WRITELINE(m_pic, pic8259_device, ir4_w))
+ MCFG_DEVICE_ADD("slot3", IQ151CART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(iq151_cart, nullptr, false)
+ MCFG_IQ151CART_SLOT_SCREEN_TAG("screen")
+ MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(WRITELINE(m_pic, pic8259_device, ir0_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(WRITELINE(m_pic, pic8259_device, ir1_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(WRITELINE(m_pic, pic8259_device, ir2_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(WRITELINE(m_pic, pic8259_device, ir3_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(WRITELINE(m_pic, pic8259_device, ir4_w))
+ MCFG_DEVICE_ADD("slot4", IQ151CART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(iq151_cart, nullptr, false)
+ MCFG_IQ151CART_SLOT_SCREEN_TAG("screen")
+ MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(WRITELINE(m_pic, pic8259_device, ir0_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(WRITELINE(m_pic, pic8259_device, ir1_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(WRITELINE(m_pic, pic8259_device, ir2_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(WRITELINE(m_pic, pic8259_device, ir3_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(WRITELINE(m_pic, pic8259_device, ir4_w))
+ MCFG_DEVICE_ADD("slot5", IQ151CART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(iq151_cart, "video32", false)
+ MCFG_IQ151CART_SLOT_SCREEN_TAG("screen")
+ MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(WRITELINE(m_pic, pic8259_device, ir0_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(WRITELINE(m_pic, pic8259_device, ir1_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(WRITELINE(m_pic, pic8259_device, ir2_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(WRITELINE(m_pic, pic8259_device, ir3_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(WRITELINE(m_pic, pic8259_device, ir4_w))
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("iq151_cart");
- SOFTWARE_LIST(config, "flop_list").set_original("iq151_flop");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "iq151_cart")
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "iq151_flop")
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( iq151 )
diff --git a/src/mame/drivers/iqblock.cpp b/src/mame/drivers/iqblock.cpp
index 7224b670a60..a8f5fa8192a 100644
--- a/src/mame/drivers/iqblock.cpp
+++ b/src/mame/drivers/iqblock.cpp
@@ -340,13 +340,13 @@ GFXDECODE_END
-void iqblock_state::iqblock(machine_config &config)
-{
+MACHINE_CONFIG_START(iqblock_state::iqblock)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 12000000/2); /* 6 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &iqblock_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &iqblock_state::main_portmap);
- TIMER(config, "scantimer").configure_scanline(FUNC(iqblock_state::irq), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_portmap)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", iqblock_state, irq, "screen", 0, 1)
i8255_device &ppi(I8255A(config, "ppi8255"));
ppi.in_pa_callback().set_ioport("P1");
@@ -355,22 +355,22 @@ void iqblock_state::iqblock(machine_config &config)
ppi.out_pc_callback().set(FUNC(iqblock_state::port_C_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 0*8, 30*8-1);
- screen.set_screen_update(FUNC(iqblock_state::screen_update));
- screen.set_palette("palette");
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_iqblock);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(iqblock_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_iqblock)
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 1024);
/* sound hardware */
SPEAKER(config, "mono").front_center();
YM2413(config, "ymsnd", 3'579'545).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/iqunlim.cpp b/src/mame/drivers/iqunlim.cpp
index 25f76a2213a..6d784233e91 100644
--- a/src/mame/drivers/iqunlim.cpp
+++ b/src/mame/drivers/iqunlim.cpp
@@ -87,20 +87,19 @@ void iqunlim_state::iqunlim_mem(address_map &map)
static INPUT_PORTS_START( iqunlim )
INPUT_PORTS_END
-void iqunlim_state::iqunlim(machine_config &config)
-{
+MACHINE_CONFIG_START(iqunlim_state::iqunlim)
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(32'000'000)/2); // DragonBall EZ (MC68EZ328) (68k core) (is the xtal correct? this was from the other hardware)
- m_maincpu->set_addrmap(AS_PROGRAM, &iqunlim_state::iqunlim_mem);
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(32'000'000)/2) // DragonBall EZ (MC68EZ328) (68k core) (is the xtal correct? this was from the other hardware)
+ MCFG_DEVICE_PROGRAM_MAP(iqunlim_mem)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(iqunlim_state::screen_update));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER( iqunlim_state, screen_update )
+MACHINE_CONFIG_END
ROM_START( iqunlim )
ROM_REGION(0x200000, "maincpu", 0)
diff --git a/src/mame/drivers/iris3130.cpp b/src/mame/drivers/iris3130.cpp
index f3ee4409123..32b1f0ab43a 100644
--- a/src/mame/drivers/iris3130.cpp
+++ b/src/mame/drivers/iris3130.cpp
@@ -186,7 +186,7 @@ READ16_MEMBER(sgi_ip2_state::sgi_ip2_swtch_r)
READ8_MEMBER(sgi_ip2_state::sgi_ip2_clock_ctl_r)
{
- uint8_t ret = m_rtc->read(1);
+ uint8_t ret = m_rtc->read(space, 1);
verboselog(1, "sgi_ip2_clock_ctl_r: %02x\n", ret);
return ret;
}
@@ -194,12 +194,12 @@ READ8_MEMBER(sgi_ip2_state::sgi_ip2_clock_ctl_r)
WRITE8_MEMBER(sgi_ip2_state::sgi_ip2_clock_ctl_w)
{
verboselog(1, "sgi_ip2_clock_ctl_w: %02x\n", data);
- m_rtc->write(1, data);
+ m_rtc->write(space, 1, data);
}
READ8_MEMBER(sgi_ip2_state::sgi_ip2_clock_data_r)
{
- uint8_t ret = m_rtc->read(0);
+ uint8_t ret = m_rtc->read(space, 0);
verboselog(1, "sgi_ip2_clock_data_r: %02x\n", ret);
return ret;
}
@@ -207,7 +207,7 @@ READ8_MEMBER(sgi_ip2_state::sgi_ip2_clock_data_r)
WRITE8_MEMBER(sgi_ip2_state::sgi_ip2_clock_data_w)
{
verboselog(1, "sgi_ip2_clock_data_w: %02x\n", data);
- m_rtc->write(0, data);
+ m_rtc->write(space, 0, data);
}
diff --git a/src/mame/drivers/irisha.cpp b/src/mame/drivers/irisha.cpp
index 6fe59cd673c..44527d8f855 100644
--- a/src/mame/drivers/irisha.cpp
+++ b/src/mame/drivers/irisha.cpp
@@ -364,28 +364,28 @@ void irisha_state::machine_reset()
}
/* Machine driver */
-void irisha_state::irisha(machine_config &config)
-{
+MACHINE_CONFIG_START(irisha_state::irisha)
/* basic machine hardware */
- I8080(config, m_maincpu, XTAL(16'000'000) / 9);
- m_maincpu->set_addrmap(AS_PROGRAM, &irisha_state::irisha_mem);
- m_maincpu->set_addrmap(AS_IO, &irisha_state::irisha_io);
+ MCFG_DEVICE_ADD("maincpu", I8080, XTAL(16'000'000) / 9)
+ MCFG_DEVICE_PROGRAM_MAP(irisha_mem)
+ MCFG_DEVICE_IO_MAP(irisha_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(320, 200);
- screen.set_visarea(0, 320-1, 0, 200-1);
- screen.set_screen_update(FUNC(irisha_state::screen_update_irisha));
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_irisha);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(320, 200)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
+ MCFG_SCREEN_UPDATE_DRIVER(irisha_state, screen_update_irisha)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_irisha)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
I8251(config, "uart", 0);
@@ -408,7 +408,7 @@ void irisha_state::irisha(machine_config &config)
pic8259_device &pic8259(PIC8259(config, "pic8259", 0));
pic8259.out_int_callback().set_inputline(m_maincpu, 0);
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/irobot.cpp b/src/mame/drivers/irobot.cpp
index b52033b0518..99481b24fab 100644
--- a/src/mame/drivers/irobot.cpp
+++ b/src/mame/drivers/irobot.cpp
@@ -113,7 +113,7 @@ READ8_MEMBER(irobot_state::quad_pokeyn_r)
int control = (offset & 0x20) >> 2;
int pokey_reg = (offset % 8) | control;
- return m_pokey[pokey_num]->read(pokey_reg);
+ return m_pokey[pokey_num]->read(space, pokey_reg);
}
WRITE8_MEMBER(irobot_state::quad_pokeyn_w)
@@ -122,7 +122,7 @@ WRITE8_MEMBER(irobot_state::quad_pokeyn_w)
int control = (offset & 0x20) >> 2;
int pokey_reg = (offset % 8) | control;
- m_pokey[pokey_num]->write(pokey_reg, data);
+ m_pokey[pokey_num]->write(space, pokey_reg, data);
}
diff --git a/src/mame/drivers/ironhors.cpp b/src/mame/drivers/ironhors.cpp
index 421898ca5f9..3ff1379258e 100644
--- a/src/mame/drivers/ironhors.cpp
+++ b/src/mame/drivers/ironhors.cpp
@@ -378,27 +378,28 @@ Hsync is 15,56khz
These clocks make the emulation run too fast.
*/
-void ironhors_state::ironhors(machine_config &config)
-{
+MACHINE_CONFIG_START(ironhors_state::ironhors)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, 18432000/6); /* 3.072 MHz??? mod by Shingo Suzuki 1999/10/15 */
- m_maincpu->set_addrmap(AS_PROGRAM, &ironhors_state::master_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(ironhors_state::ironhors_scanline_tick), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, 18432000/6) /* 3.072 MHz??? mod by Shingo Suzuki 1999/10/15 */
+ MCFG_DEVICE_PROGRAM_MAP(master_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ironhors_state, ironhors_scanline_tick, "screen", 0, 1)
- Z80(config, m_soundcpu, 18432000/6); /* 3.072 MHz */
- m_soundcpu->set_addrmap(AS_PROGRAM, &ironhors_state::slave_map);
- m_soundcpu->set_addrmap(AS_IO, &ironhors_state::slave_io_map);
+ MCFG_DEVICE_ADD("soundcpu", Z80, 18432000/6) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(slave_map)
+ MCFG_DEVICE_IO_MAP(slave_io_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
-// m_screen->set_refresh_hz(61);
-// m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
-// m_screen->set_size(32*8, 32*8);
-// m_screen->set_visarea(1*8, 31*8-1, 2*8, 30*8-1);
- m_screen->set_raw(18432000/4,296,8,256-8,255,16,240); // pixel clock is a guesswork
- m_screen->set_screen_update(FUNC(ironhors_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_REFRESH_RATE(61)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+// MCFG_SCREEN_SIZE(32*8, 32*8)
+// MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_RAW_PARAMS(18432000/4,296,8,256-8,255,16,240) // pixel clock is a guesswork
+
+ MCFG_SCREEN_UPDATE_DRIVER(ironhors_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ironhors);
PALETTE(config, m_palette, FUNC(ironhors_state::ironhors_palette), 16*8*16+16*8*16, 256);
@@ -415,8 +416,10 @@ void ironhors_state::ironhors(machine_config &config)
ym2203.add_route(2, "disc_ih", 1.0, 2);
ym2203.add_route(3, "disc_ih", 1.0, 3);
- DISCRETE(config, m_disc_ih, ironhors_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("disc_ih", DISCRETE, ironhors_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+
+MACHINE_CONFIG_END
TIMER_DEVICE_CALLBACK_MEMBER(ironhors_state::farwest_scanline_tick)
{
@@ -439,23 +442,25 @@ READ8_MEMBER(ironhors_state::farwest_soundlatch_r)
return m_soundlatch->read(m_soundcpu->space(AS_PROGRAM), 0);
}
-void ironhors_state::farwest(machine_config &config)
-{
+MACHINE_CONFIG_START(ironhors_state::farwest)
ironhors(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &ironhors_state::farwest_master_map);
- subdevice<timer_device>("scantimer")->set_callback(FUNC(ironhors_state::farwest_scanline_tick));
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(farwest_master_map)
+ MCFG_DEVICE_MODIFY("scantimer")
+ MCFG_TIMER_DRIVER_CALLBACK(ironhors_state, farwest_scanline_tick)
- Z80(config.replace(), m_soundcpu, 18432000/6); /* 3.072 MHz */
- m_soundcpu->set_addrmap(AS_PROGRAM, &ironhors_state::farwest_slave_map);
+ MCFG_DEVICE_MODIFY("soundcpu")
+ MCFG_DEVICE_PROGRAM_MAP(farwest_slave_map)
+ MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_IO)
- m_gfxdecode->set_info(gfx_farwest);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_farwest)
MCFG_VIDEO_START_OVERRIDE(ironhors_state,farwest)
-
- m_screen->set_screen_update(FUNC(ironhors_state::screen_update_farwest));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(ironhors_state, screen_update_farwest)
subdevice<ym2203_device>("ym2203")->port_b_read_callback().set(FUNC(ironhors_state::farwest_soundlatch_r));
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/isbc8010.cpp b/src/mame/drivers/isbc8010.cpp
index d13e49b7fa4..a6c4b4017fa 100644
--- a/src/mame/drivers/isbc8010.cpp
+++ b/src/mame/drivers/isbc8010.cpp
@@ -171,12 +171,11 @@ static DEVICE_INPUT_DEFAULTS_START( terminal ) // set up terminal to default to
DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 )
DEVICE_INPUT_DEFAULTS_END
-void isbc8010_state::isbc8010(machine_config &config)
-{
+MACHINE_CONFIG_START(isbc8010_state::isbc8010)
/* basic machine hardware */
- I8080A(config, m_maincpu, XTAL(18'432'000)/9);
- m_maincpu->set_addrmap(AS_PROGRAM, &isbc8010_state::isbc8010_mem);
- m_maincpu->set_addrmap(AS_IO, &isbc8010_state::isbc8010_io);
+ MCFG_DEVICE_ADD("maincpu", I8080A, XTAL(18'432'000)/9)
+ MCFG_DEVICE_PROGRAM_MAP(isbc8010_mem)
+ MCFG_DEVICE_IO_MAP(isbc8010_io)
I8251(config, m_usart, 0);
m_usart->txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
@@ -192,41 +191,37 @@ void isbc8010_state::isbc8010(machine_config &config)
m_rs232->cts_handler().set(m_usart, FUNC(i8251_device::write_cts));
m_rs232->set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
- clock_device &usart_clock(CLOCK(config, "usart_clock", XTAL(18'432'000)/60));
- usart_clock.signal_handler().set(FUNC(isbc8010_state::usart_clock_tick));
+ MCFG_DEVICE_ADD("usart_clock", CLOCK, XTAL(18'432'000)/60)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, isbc8010_state, usart_clock_tick))
/* video hardware */
// 96364 crt controller
-// screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
-// screen.set_refresh_hz(60);
+// MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_REFRESH_RATE(60)
/* Video is blanked for 70 out of 262 scanlines per refresh cycle.
Each scanline is composed of 65 character times, 40 of which
are visible, and each character time is 7 dot times; a dot time
is 2 cycles of the fundamental 14.31818 MHz oscillator. The
total blanking time is about 4450 microseconds. */
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC((int) (70 * 65 * 7 * 2 / 14.31818)));
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC((int) (70 * 65 * 7 * 2 / 14.31818)))
/* It would be nice if we could implement some sort of display
overscan here. */
-// screen.set_size(40 * 7, 24 * 8);
-// screen.set_visarea(0, 40 * 7 - 1, 0, 24 * 8 - 1);
-// screen.set_screen_update(FUNC(sdk80_state::screen_update));
-// screen.set_palette("palette");
+// MCFG_SCREEN_SIZE(40 * 7, 24 * 8)
+// MCFG_SCREEN_VISIBLE_AREA(0, 40 * 7 - 1, 0, 24 * 8 - 1)
+// MCFG_SCREEN_UPDATE_DRIVER(sdk80_state, screen_update)
+// MCFG_SCREEN_PALETTE("palette")
-// GFXDECODE(config, "gfxdecode", "palette", gfx_sdk80);
+// MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sdk80)
-// PALETTE(config, "palette", palette_device::MONOCHROME);
+// MCFG_PALETTE_ADD_MONOCHROME("palette")
// Video board UART
-// ay31015_device &hd6402(AY31015(config, "hd6402", 0));
+// MCFG_DEVICE_ADD( "hd6402", AY31015, 0 )
// MCFG_AY31015_TX_CLOCK(( XTAL(16'000'000) / 16 ) / 256)
// MCFG_AY31015_RX_CLOCK(( XTAL(16'000'000) / 16 ) / 256)
-// hd6402.read_si_callback().set(FUNC(sdk80_state::nascom1_hd6402_si));
-// hd6402.write_so_callback().set(FUNC(sdk80_state::nascom1_hd6402_so));
-
-// clock_device &uart_clock(CLOCK(config, "uart_clock", (XTAL(16'000'000) / 16) / 256));
-// uart_clock.signal_handler().set("hd6402", FUNC(ay31015_device::write_tcp));
-// uart_clock.signal_handler().append("hd6402", FUNC(ay31015_device::write_rcp));
+// MCFG_AY51013_READ_SI_CB(READ8(*this, sdk80_state, nascom1_hd6402_si))
+// MCFG_AY51013_WRITE_SO_CB(WRITE8(*this, sdk80_state, nascom1_hd6402_so))
/* Devices */
// i8279_device &kbdc(I8279(config, "i8279", 3100000)); // based on divider
@@ -236,21 +231,22 @@ void isbc8010_state::isbc8010(machine_config &config)
// kbdc.in_rl_callback().set(FUNC(sdk80_state::kbd_r)); // kbd RL lines
// kbdc.in_shift_callback().set_constant(1); // Shift key
// kbdc.in_ctrl_callback().set_constant(1);
-}
-void isbc8010_state::isbc8010a(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(isbc8010_state::isbc8010a)
isbc8010(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &isbc8010_state::isbc8010a_mem);
-}
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(isbc8010a_mem)
+MACHINE_CONFIG_END
-void isbc8010_state::isbc8010b(machine_config &config)
-{
+MACHINE_CONFIG_START(isbc8010_state::isbc8010b)
isbc8010(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &isbc8010_state::isbc8010b_mem);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(isbc8010b_mem)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( isbc8010 )
diff --git a/src/mame/drivers/iskr103x.cpp b/src/mame/drivers/iskr103x.cpp
index f40083d9ba7..15e8c50f9ec 100644
--- a/src/mame/drivers/iskr103x.cpp
+++ b/src/mame/drivers/iskr103x.cpp
@@ -25,6 +25,7 @@
#include "machine/ram.h"
#include "softlist.h"
+#define DBG_LOG(a,b,c)
class iskr103x_state : public driver_device
{
@@ -67,37 +68,36 @@ static DEVICE_INPUT_DEFAULTS_START(iskr1031)
DEVICE_INPUT_DEFAULTS_END
// XXX
-void iskr103x_state::iskr1030m(machine_config &config)
-{
+MACHINE_CONFIG_START(iskr103x_state::iskr1030m)
/* basic machine hardware */
- I8086(config, m_maincpu, 4772720);
- m_maincpu->set_addrmap(AS_PROGRAM, &iskr103x_state::iskr1031_map);
- m_maincpu->set_addrmap(AS_IO, &iskr103x_state::iskr1031_io);
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I8086, 4772720)
+ MCFG_DEVICE_PROGRAM_MAP(iskr1031_map)
+ MCFG_DEVICE_IO_MAP(iskr1031_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
- ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
- mb.set_cputag(m_maincpu);
- mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(iskr1030m));
+ MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu")
+ MCFG_DEVICE_INPUT_DEFAULTS(iskr1030m)
- ISA8_SLOT(config, "isa1", 0, "mb:isa", iskr103x_isa8_cards, "cga_iskr1030m", false); // FIXME: determine IS bus clock
- ISA8_SLOT(config, "isa2", 0, "mb:isa", iskr103x_isa8_cards, "fdc_xt", false);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", iskr103x_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", iskr103x_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa5", 0, "mb:isa", iskr103x_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa6", 0, "mb:isa", iskr103x_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", iskr103x_isa8_cards, "cga_iskr1030m", false) // FIXME: determine IS bus clock
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", iskr103x_isa8_cards, "fdc_xt", false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", iskr103x_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", iskr103x_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, "mb:isa", iskr103x_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa6", ISA8_SLOT, 0, "mb:isa", iskr103x_isa8_cards, nullptr, false)
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_EC_1841).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
-// PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_ISKR_1030).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
+ MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_EC_1841)
+// MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_ISKR_1030)
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
-}
+MACHINE_CONFIG_END
-void iskr103x_state::iskr1031(machine_config &config)
-{
+MACHINE_CONFIG_START(iskr103x_state::iskr1031)
iskr1030m(config);
- subdevice<ibm5160_mb_device>("mb")->set_input_default(DEVICE_INPUT_DEFAULTS_NAME(iskr1031));
- subdevice<isa8_slot_device>("isa1")->set_default_option("cga_iskr1031");
-}
+ MCFG_DEVICE_MODIFY("mb")
+ MCFG_DEVICE_INPUT_DEFAULTS(iskr1031)
+ MCFG_DEVICE_MODIFY("isa1")
+ MCFG_DEVICE_SLOT_INTERFACE(iskr103x_isa8_cards, "cga_iskr1031", false)
+MACHINE_CONFIG_END
ROM_START( iskr1030m )
ROM_REGION16_LE(0x10000,"bios", 0)
diff --git a/src/mame/drivers/istellar.cpp b/src/mame/drivers/istellar.cpp
index ec60d2368ae..9b64b5a6777 100644
--- a/src/mame/drivers/istellar.cpp
+++ b/src/mame/drivers/istellar.cpp
@@ -275,19 +275,19 @@ WRITE_LINE_MEMBER(istellar_state::vblank_irq)
/* DRIVER */
MACHINE_CONFIG_START(istellar_state::istellar)
/* main cpu */
- Z80(config, m_maincpu, GUESSED_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &istellar_state::z80_0_mem);
- m_maincpu->set_addrmap(AS_IO, &istellar_state::z80_0_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, GUESSED_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(z80_0_mem)
+ MCFG_DEVICE_IO_MAP(z80_0_io)
/* sound cpu */
- z80_device &audiocpu(Z80(config, "audiocpu", GUESSED_CLOCK));
- audiocpu.set_addrmap(AS_PROGRAM, &istellar_state::z80_1_mem);
- audiocpu.set_addrmap(AS_IO, &istellar_state::z80_1_io);
+ MCFG_DEVICE_ADD("audiocpu", Z80, GUESSED_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(z80_1_mem)
+ MCFG_DEVICE_IO_MAP(z80_1_io)
/* ldp comm cpu */
- Z80(config, m_subcpu, GUESSED_CLOCK);
- m_subcpu->set_addrmap(AS_PROGRAM, &istellar_state::z80_2_mem);
- m_subcpu->set_addrmap(AS_IO, &istellar_state::z80_2_io);
+ MCFG_DEVICE_ADD("sub", Z80, GUESSED_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(z80_2_mem)
+ MCFG_DEVICE_IO_MAP(z80_2_io)
GENERIC_LATCH_8(config, "latch1");
@@ -295,11 +295,9 @@ MACHINE_CONFIG_START(istellar_state::istellar)
latch2.data_pending_callback().set_inputline(m_subcpu, INPUT_LINE_NMI);
latch2.set_separate_acknowledge(true);
- PIONEER_LDV1000(config, m_laserdisc, 0);
- m_laserdisc->set_overlay(256, 256, FUNC(istellar_state::screen_update_istellar));
- m_laserdisc->set_overlay_palette(m_palette);
- m_laserdisc->add_route(0, "lspeaker", 1.0);
- m_laserdisc->add_route(1, "rspeaker", 1.0);
+ MCFG_LASERDISC_LDV1000_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, istellar_state, screen_update_istellar)
+ MCFG_LASERDISC_OVERLAY_PALETTE(m_palette)
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
@@ -308,11 +306,15 @@ MACHINE_CONFIG_START(istellar_state::istellar)
// Daphne says "TODO: get the real interstellar resistor values"
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_istellar);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_istellar)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
+
+ MCFG_DEVICE_MODIFY("laserdisc")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/istrebiteli.cpp b/src/mame/drivers/istrebiteli.cpp
index 169711aab56..2c047cdb21e 100644
--- a/src/mame/drivers/istrebiteli.cpp
+++ b/src/mame/drivers/istrebiteli.cpp
@@ -584,12 +584,11 @@ static GFXDECODE_START( gfx_motogonki )
GFXDECODE_ENTRY( "sprite", 0x0000, moto_sprite_layout, 2, 2 )
GFXDECODE_END
-void istrebiteli_state::istreb(machine_config &config)
-{
+MACHINE_CONFIG_START(istrebiteli_state::istreb)
/* basic machine hardware */
- I8080(config, m_maincpu, XTAL(8'000'000) / 4); // KR580VM80A
- m_maincpu->set_addrmap(AS_PROGRAM, &istrebiteli_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &istrebiteli_state::io_map);
+ MCFG_DEVICE_ADD(m_maincpu, I8080, XTAL(8'000'000) / 4) // KR580VM80A
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
i8255_device &ppi0(I8255A(config, "ppi0"));
ppi0.in_pa_callback().set_ioport("IN1");
@@ -602,10 +601,10 @@ void istrebiteli_state::istreb(machine_config &config)
ppi1.in_pc_callback().set_ioport("IN2");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(8'000'000) / 2, 256, 64, 256, 312, 0, 256);
- screen.set_screen_update(FUNC(istrebiteli_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(8'000'000) / 2, 256, 64, 256, 312, 0, 256)
+ MCFG_SCREEN_UPDATE_DRIVER(istrebiteli_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_istrebiteli);
PALETTE(config, "palette", FUNC(istrebiteli_state::istrebiteli_palette), 4);
@@ -613,14 +612,13 @@ void istrebiteli_state::istreb(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
ISTREBITELI_SOUND(config, m_sound_dev, XTAL(8'000'000) / 2 / 256).add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+MACHINE_CONFIG_END
-void istrebiteli_state::motogonki(machine_config &config)
-{
+MACHINE_CONFIG_START(istrebiteli_state::motogonki)
/* basic machine hardware */
- I8080(config, m_maincpu, XTAL(15'700'000) / 9); // KR580VM80A
- m_maincpu->set_addrmap(AS_PROGRAM, &istrebiteli_state::moto_mem_map);
- m_maincpu->set_addrmap(AS_IO, &istrebiteli_state::moto_io_map);
+ MCFG_DEVICE_ADD(m_maincpu, I8080, XTAL(15'700'000) / 9) // KR580VM80A
+ MCFG_DEVICE_PROGRAM_MAP(moto_mem_map)
+ MCFG_DEVICE_IO_MAP(moto_io_map)
i8255_device &ppi0(I8255A(config, "ppi0"));
ppi0.out_pa_callback().set(FUNC(istrebiteli_state::spr0_ctrl_w));
@@ -632,10 +630,10 @@ void istrebiteli_state::motogonki(machine_config &config)
ppi1.in_pc_callback().set_ioport("IN1");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(8'000'000) / 2, 256, 64, 256, 312, 0, 256);
- screen.set_screen_update(FUNC(istrebiteli_state::moto_screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(8'000'000) / 2, 256, 64, 256, 312, 0, 256)
+ MCFG_SCREEN_UPDATE_DRIVER(istrebiteli_state, moto_screen_update)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_motogonki);
PALETTE(config, "palette", FUNC(istrebiteli_state::motogonki_palette), 4);
@@ -644,7 +642,7 @@ void istrebiteli_state::motogonki(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
ISTREBITELI_SOUND(config, m_sound_dev, XTAL(8'000'000) / 2 / 256).add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+MACHINE_CONFIG_END
ROM_START( istreb )
ROM_REGION( 0x1000, I8080_TAG, ROMREGION_ERASEFF )
diff --git a/src/mame/drivers/iteagle.cpp b/src/mame/drivers/iteagle.cpp
index 47d71274c40..eef52e1f4ed 100644
--- a/src/mame/drivers/iteagle.cpp
+++ b/src/mame/drivers/iteagle.cpp
@@ -165,8 +165,7 @@ void iteagle_state::machine_reset()
{
}
-void iteagle_state::iteagle(machine_config &config)
-{
+MACHINE_CONFIG_START(iteagle_state::iteagle)
/* basic machine hardware */
VR4310LE(config, m_maincpu, 166666666);
m_maincpu->set_icache_size(16384);
@@ -207,89 +206,77 @@ void iteagle_state::iteagle(machine_config &config)
screen.set_size(512, 384);
screen.set_visarea(0, 512 - 1, 0, 384 - 1);
screen.set_screen_update(PCI_ID_VIDEO, FUNC(voodoo_pci_device::screen_update));
-}
+MACHINE_CONFIG_END
-void iteagle_state::gtfore01(machine_config &config)
-{
+MACHINE_CONFIG_START(iteagle_state::gtfore01)
iteagle(config);
m_fpga->set_init_info(0x01000401, 0x0b0b0b);
m_eeprom->set_info(0x0401, 0x7);
-}
+MACHINE_CONFIG_END
-void iteagle_state::gtfore02(machine_config &config)
-{
+MACHINE_CONFIG_START(iteagle_state::gtfore02)
iteagle(config);
m_fpga->set_init_info(0x01000402, 0x020201);
m_eeprom->set_info(0x0402, 0x7);
-}
+MACHINE_CONFIG_END
-void iteagle_state::gtfore03(machine_config &config)
-{
+MACHINE_CONFIG_START(iteagle_state::gtfore03)
iteagle(config);
m_fpga->set_init_info(0x01000403, 0x0a0b0a);
m_eeprom->set_info(0x0403, 0x7);
-}
+MACHINE_CONFIG_END
-void iteagle_state::gtfore04(machine_config &config)
-{
+MACHINE_CONFIG_START(iteagle_state::gtfore04)
iteagle(config);
m_fpga->set_init_info(0x01000404, 0x0a020b);
m_eeprom->set_info(0x0404, 0x7);
-}
+MACHINE_CONFIG_END
-void iteagle_state::gtfore05(machine_config &config)
-{
+MACHINE_CONFIG_START(iteagle_state::gtfore05)
iteagle(config);
m_fpga->set_init_info(0x01000405, 0x0b0a0c);
m_eeprom->set_info(0x0405, 0x7);
-}
+MACHINE_CONFIG_END
-void iteagle_state::gtfore06(machine_config &config)
-{
+MACHINE_CONFIG_START(iteagle_state::gtfore06)
iteagle(config);
m_fpga->set_init_info(0x01000406, 0x0c0b0d);
m_eeprom->set_info(0x0406, 0x9);
-}
+MACHINE_CONFIG_END
-void iteagle_state::carnking(machine_config &config)
-{
+MACHINE_CONFIG_START(iteagle_state::carnking)
iteagle(config);
m_fpga->set_init_info(0x01000a01, 0x0e0a0a);
m_eeprom->set_info(0x0a01, 0x9);
-}
+MACHINE_CONFIG_END
-void iteagle_state::bbh(machine_config &config)
-{
+MACHINE_CONFIG_START(iteagle_state::bbh)
iteagle(config);
// 0xXX01XXXX = tournament board
m_fpga->set_init_info(0x02010600, 0x0b0a0a);
m_eeprom->set_info(0x0000, 0x7);
-}
+MACHINE_CONFIG_END
-void iteagle_state::bbhsc(machine_config &config)
-{
+MACHINE_CONFIG_START(iteagle_state::bbhsc)
iteagle(config);
// 0xXX01XXXX = tournament board
m_fpga->set_init_info(0x02010600, 0x0c0a0a);
m_eeprom->set_info(0x0000, 0x7);
-}
+MACHINE_CONFIG_END
-void iteagle_state::bbh2sp(machine_config &config)
-{
+MACHINE_CONFIG_START(iteagle_state::bbh2sp)
iteagle(config);
m_fpga->set_init_info(0x02010602, 0x0d0a0a);
m_eeprom->set_info(0x0000, 0x7);
-}
+MACHINE_CONFIG_END
-void iteagle_state::bbhcotw(machine_config &config)
-{
+MACHINE_CONFIG_START(iteagle_state::bbhcotw)
iteagle(config);
m_fpga->set_init_info(0x02010603, 0x080704);
m_eeprom->set_info(0x0603, 0x9);
-}
+MACHINE_CONFIG_END
-void iteagle_state::virtpool(machine_config &config)
-{
+MACHINE_CONFIG_START(iteagle_state::virtpool)
iteagle(config);
// Not sure what the actual value should be
// Setting a lower frequency helps delay the tutorial screen premature cut-out
@@ -302,7 +289,7 @@ void iteagle_state::virtpool(machine_config &config)
m_fpga->set_init_info(0x01000202, 0x080808);
m_eeprom->set_info(0x0202, 0x7);
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/itech32.cpp b/src/mame/drivers/itech32.cpp
index 6ae1439c9cc..c560827d403 100644
--- a/src/mame/drivers/itech32.cpp
+++ b/src/mame/drivers/itech32.cpp
@@ -15,7 +15,7 @@
* Pairs (4 sets)
* Pairs Redemption (Child's version of pairs)
* Driver's Edge (1 set)
- * World Class Bowling (14 sets)
+ * World Class Bowling (13 sets)
* Street Fighter: The Movie (5 sets)
* Shuffleshot (3 sets)
* Golden Tee 3D Golf (12 sets)
@@ -1668,7 +1668,7 @@ INPUT_PORTS_END
void itech32_state::base_devices(machine_config &config)
{
- MC6809E(config, m_soundcpu, SOUND_CLOCK/8); // EF68B09EP
+ MC6809(config, m_soundcpu, SOUND_CLOCK/2);
m_soundcpu->set_addrmap(AS_PROGRAM, &itech32_state::sound_map);
nvram_device &nvram(NVRAM(config, "nvram"));
@@ -2431,42 +2431,6 @@ ROM_START( wcbowl140 ) /* Version 1.40 Tournament (PCB P/N 1083 Rev 2) */
ROM_END
-ROM_START( wcbowl130 ) /* Version 1.30 Tournament (PCB P/N 1083 Rev 2) */
- ROM_REGION32_BE( CODE_SIZE, "user1", 0 )
- ROM_LOAD32_BYTE( "wcb_prom0_v1.30t.prom0", 0x00000, 0x20000, NO_DUMP ) /* found as 3 loose chips missing WCB PROM0 V1.30T ROM */
- ROM_LOAD32_BYTE( "wcb_prom1_v1.30t.prom1", 0x00001, 0x20000, CRC(f4b8e7c3) SHA1(29471a464e783e820d7cde356b49d26b9394f513) )
- ROM_LOAD32_BYTE( "wcb_prom2_v1.30t.prom2", 0x00002, 0x20000, CRC(f441afae) SHA1(31d619e63f951cfb08481474f08d278aeaa15c46) )
- ROM_LOAD32_BYTE( "wcb_prom3_v1.30t.prom3", 0x00003, 0x20000, CRC(47e26d4b) SHA1(44459daef1ffe19640b26adcf122dfcd4a327a68) )
-
- ROM_REGION( 0x28000, "soundcpu", 0 )
- ROM_LOAD( "wcbsnd_u88_4.01.u88", 0x10000, 0x18000, CRC(e97a6d28) SHA1(96d7b7856918abcc460083f2a46582ba2a689288) ) /* actually labeled as "WCBSND(U88)4.01" but may be labeled v4.0 */
- ROM_CONTINUE( 0x08000, 0x08000 )
-
- ROM_REGION( 0x880000, "gfx1", 0 )
- ROM_LOAD32_BYTE( "wcb_grom0_0_s.grm0_0", 0x000000, 0x080000, CRC(6fcb4246) SHA1(91fb5d18ea9494b08251d1e611c80414df3aad66) )
- ROM_LOAD32_BYTE( "wcb_grom0_1_s.grm0_1", 0x000001, 0x080000, CRC(2ae31f45) SHA1(85218aa9a7ca7c6870427ffbd08b78255813ff90) )
- ROM_LOAD32_BYTE( "wcb_grom0_2_s.grm0_2", 0x000002, 0x080000, CRC(bccc0f35) SHA1(2389662e881e86f8cdb36eb2a082923d976676c8) )
- ROM_LOAD32_BYTE( "wcb_grom0_3_s.grm0_3", 0x000003, 0x080000, CRC(ab1da462) SHA1(3f3a4a083483d2d95d5ef540eea077cad799fcb7) )
- ROM_LOAD32_BYTE( "wcb_grom1_0_s.grm1_0", 0x200000, 0x080000, CRC(bdfafd1f) SHA1(bc0e6fe83d3f8e88c2e55ba3a436875d5470de5b) )
- ROM_LOAD32_BYTE( "wcb_grom1_1_s.grm1_1", 0x200001, 0x080000, CRC(7d6baa2e) SHA1(c47854b064aa96d2581c23afe13cd05a36f9dae3) )
- ROM_LOAD32_BYTE( "wcb_grom1_2_s.grm1_2", 0x200002, 0x080000, CRC(7513d3de) SHA1(b17650ed5210860c3bde53647a30f8fce67aaa38) )
- ROM_LOAD32_BYTE( "wcb_grom1_3_s.grm1_3", 0x200003, 0x080000, CRC(e46877e6) SHA1(f50c904ec5b2b8cbc92f2b28641433c91ee17af5) )
- ROM_LOAD32_BYTE( "wcbf_grom2_0.grm2_0", 0x400000, 0x040000, CRC(3b4c5a5c) SHA1(152cbc5d1aa84012f49fa13d91fd89a10f874508) )
- ROM_LOAD32_BYTE( "wcbf_grom2_1.grm2_1", 0x400001, 0x040000, CRC(ed0b9b26) SHA1(5173e3936cae419255b3034e2b8a69f6bd136b93) )
- ROM_LOAD32_BYTE( "wcbf_grom2_2.grm2_2", 0x400002, 0x040000, CRC(4b9e345e) SHA1(6842a8a6690db8478bdbb8e8119d3eef5e77439b) )
- ROM_LOAD32_BYTE( "wcbf_grom2_3.grm2_3", 0x400003, 0x040000, CRC(4e13ee7a) SHA1(245ce87cd6839119a9a976b9a90cd1028aa3e291) )
- ROM_FILL( 0x500000, 0x380000, 0xff )
-
- ROM_REGION16_BE( 0x400000, "ensoniq.0", ROMREGION_ERASE00 )
- ROM_LOAD16_BYTE( "wcb_srom0_s.srom0", 0x000000, 0x080000, CRC(d42dd283) SHA1(8ef75c398d1c51d2d7d299ac309a2352179864d9) ) /* Newer sound sample ROMs */
- ROM_LOAD16_BYTE( "wcb_srom1_s.srom1", 0x200000, 0x080000, CRC(7a69ab54) SHA1(d1f9194446e235af69c6ff28af0dccc44ab9b5d3) ) /* Newer sound sample ROMs */
-
- ROM_REGION16_BE( 0x400000, "ensoniq.1", ROMREGION_ERASE00 )
- ROM_LOAD16_BYTE( "wcb_srom2_s.srom2", 0x000000, 0x080000, CRC(346530a2) SHA1(9951971ad6d368fb718027e18331d12f0a72970c) ) /* Newer sound sample ROMs */
- ROM_LOAD16_BYTE( "wcb_srom3_s.srom3", 0x200000, 0x040000, CRC(1dfe3a31) SHA1(94947f495692288fbf14fc7796a84c5548a2e8a8) ) /* Newer sound sample ROMs, ROM is a 27C020 in this set */
-ROM_END
-
-
ROM_START( wcbowl ) /* Version 1.66 (PCB P/N 1083 Rev 2) */
ROM_REGION32_BE( CODE_SIZE, "user1", 0 )
ROM_LOAD32_BYTE( "wcb_prom0_v1.66n.prom0", 0x00000, 0x20000, CRC(f6774112) SHA1(cb09bb3e40490b3cdc3a5f7d18168384b5b29d85) ) /* original labels also found without the "N" */
@@ -4559,7 +4523,7 @@ void itech32_state::init_wcbowln()
void itech32_state::install_timekeeper()
{
- m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x681000, 0x6817ff, read8sm_delegate(FUNC(timekeeper_device::read), &(*m_timekeeper)), write8sm_delegate(FUNC(timekeeper_device::write), &(*m_timekeeper)), 0xffffffff);
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x681000, 0x6817ff, read8_delegate(FUNC(timekeeper_device::read), &(*m_timekeeper)), write8_delegate(FUNC(timekeeper_device::write), &(*m_timekeeper)), 0xffffffff);
}
void itech32_state::init_wcbowlt()
@@ -4733,7 +4697,6 @@ GAME( 1995, sftmj112, sftm, sftm, sftm, itech32_state, init_sft
GAME( 1997, shufshot, 0, sftm, shufshot, itech32_state, init_shufshot, ROT0, "Strata/Incredible Technologies", "Shuffleshot (v1.40)" , MACHINE_SUPPORTS_SAVE ) /* PIC 16C54 labeled as ITSHF-1 */
GAME( 1997, shufshot139, shufshot, sftm, shufshot, itech32_state, init_shufshot, ROT0, "Strata/Incredible Technologies", "Shuffleshot (v1.39)" , MACHINE_SUPPORTS_SAVE ) /* PIC 16C54 labeled as ITSHF-1 */
GAME( 1997, shufshot137, shufshot, sftm, shufshto, itech32_state, init_shufshot, ROT0, "Strata/Incredible Technologies", "Shuffleshot (v1.37)" , MACHINE_SUPPORTS_SAVE ) /* PIC 16C54 labeled as ITSHF-1 */
-GAME( 1997, wcbowl130, wcbowldx, tourny, wcbowldx, itech32_state, init_wcbowlt, ROT0, "Incredible Technologies", "World Class Bowling Tournament (v1.30)" , MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) /* PIC 16C54 labeled as ITBWL-3 *** missing program ROM PROM0 */
GAME( 1997, wcbowl140, wcbowldx, tourny, wcbowldx, itech32_state, init_wcbowlt, ROT0, "Incredible Technologies", "World Class Bowling Tournament (v1.40)" , MACHINE_SUPPORTS_SAVE ) /* PIC 16C54 labeled as ITBWL-3 */
GAME( 1999, wcbowldx, 0, sftm, wcbowldx, itech32_state, init_shufshot, ROT0, "Incredible Technologies", "World Class Bowling Deluxe (v2.00)" , MACHINE_SUPPORTS_SAVE ) /* PIC 16C54 labeled as ITBWL-4 */
diff --git a/src/mame/drivers/itech8.cpp b/src/mame/drivers/itech8.cpp
index aa4b51c5d35..88d4fb7ba71 100644
--- a/src/mame/drivers/itech8.cpp
+++ b/src/mame/drivers/itech8.cpp
@@ -840,12 +840,12 @@ READ16_MEMBER(itech8_state::rom_constant_r)
READ8_MEMBER(itech8_state::ninclown_palette_r)
{
- return m_tlc34076->read(offset / 16);
+ return m_tlc34076->read(space, offset / 16);
}
WRITE8_MEMBER(itech8_state::ninclown_palette_w)
{
- m_tlc34076->write(offset / 16, data);
+ m_tlc34076->write(space, offset / 16, data);
}
diff --git a/src/mame/drivers/itgambl2.cpp b/src/mame/drivers/itgambl2.cpp
index 79ccaabe13e..14d69f83254 100644
--- a/src/mame/drivers/itgambl2.cpp
+++ b/src/mame/drivers/itgambl2.cpp
@@ -275,19 +275,19 @@ void itgambl2_state::itgambl2_palette(palette_device &palette) const
* Machine Drivers *
**************************/
-void itgambl2_state::itgambl2(machine_config &config)
-{
+MACHINE_CONFIG_START(itgambl2_state::itgambl2)
+
// basic machine hardware
- H83337(config, m_maincpu, MAIN_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &itgambl2_state::itgambl2_map);
+ MCFG_DEVICE_ADD("maincpu", H83337, MAIN_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(itgambl2_map)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(itgambl2_state::screen_update_itgambl2));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(itgambl2_state, screen_update_itgambl2)
GFXDECODE(config, "gfxdecode", m_palette, gfx_itgambl2);
PALETTE(config, m_palette, FUNC(itgambl2_state::itgambl2_palette), 0x200);
@@ -295,7 +295,7 @@ void itgambl2_state::itgambl2(machine_config &config)
// sound hardware
SPEAKER(config, "mono").front_center();
UPD7759(config, "upd").add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/itgambl3.cpp b/src/mame/drivers/itgambl3.cpp
index 894145657f8..3f6f25b4cde 100644
--- a/src/mame/drivers/itgambl3.cpp
+++ b/src/mame/drivers/itgambl3.cpp
@@ -266,27 +266,28 @@ void itgambl3_state::itgambl3_palette(palette_device &palette) const
* Machine Drivers *
**************************/
-void itgambl3_state::itgambl3(machine_config &config)
-{
+MACHINE_CONFIG_START(itgambl3_state::itgambl3)
+
// basic machine hardware
- H83044(config, m_maincpu, MAIN_CLOCK); // wrong CPU, but we have not a M16C core ATM
- m_maincpu->set_addrmap(AS_PROGRAM, &itgambl3_state::itgambl3_map);
+ MCFG_DEVICE_ADD("maincpu", H83044, MAIN_CLOCK) // wrong CPU, but we have not a M16C core ATM
+ MCFG_DEVICE_PROGRAM_MAP(itgambl3_map)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(itgambl3_state::screen_update_itgambl3));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(itgambl3_state, screen_update_itgambl3)
GFXDECODE(config, "gfxdecode", m_palette, gfx_itgambl3);
PALETTE(config, m_palette, FUNC(itgambl3_state::itgambl3_palette), 0x200);
// sound hardware
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", MAIN_CLOCK/16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // 1MHz
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, MAIN_CLOCK/16, okim6295_device::PIN7_HIGH) // 1MHz
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/itt3030.cpp b/src/mame/drivers/itt3030.cpp
index 82721cdf0f9..39cb7bb5e89 100644
--- a/src/mame/drivers/itt3030.cpp
+++ b/src/mame/drivers/itt3030.cpp
@@ -695,12 +695,12 @@ void itt3030_state::machine_reset()
m_curfloppy = nullptr;
}
-void itt3030_state::itt3030(machine_config &config)
-{
+MACHINE_CONFIG_START(itt3030_state::itt3030)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &itt3030_state::itt3030_map);
- m_maincpu->set_addrmap(AS_IO, &itt3030_state::itt3030_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, 4_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(itt3030_map)
+ MCFG_DEVICE_IO_MAP(itt3030_io)
// Schematics + i8278 datasheet says:
// Port 1 goes to the keyboard matrix.
@@ -714,13 +714,13 @@ void itt3030_state::itt3030(machine_config &config)
m_kbdmcu->p2_out_cb().set(FUNC(itt3030_state::kbd_port2_w));
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(250));
- m_screen->set_screen_update(FUNC(itt3030_state::screen_update));
- m_screen->set_size(80*8, 24*12);
- m_screen->set_visarea(0, 80*8-1, 0, 24*12-1);
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(250))
+ MCFG_SCREEN_UPDATE_DRIVER(itt3030_state, screen_update)
+ MCFG_SCREEN_SIZE(80*8, 24*12)
+ MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 24*12-1)
+ MCFG_SCREEN_PALETTE(m_palette)
/* devices */
ADDRESS_MAP_BANK(config, "lowerbank").set_map(&itt3030_state::lower48_map).set_options(ENDIANNESS_LITTLE, 8, 20, 0xc000);
@@ -731,9 +731,9 @@ void itt3030_state::itt3030(machine_config &config)
m_fdc->intrq_wr_callback().set(FUNC(itt3030_state::fdcirq_w));
m_fdc->drq_wr_callback().set(FUNC(itt3030_state::fdcdrq_w));
m_fdc->hld_wr_callback().set(FUNC(itt3030_state::fdchld_w));
- FLOPPY_CONNECTOR(config, "fdc:0", itt3030_floppies, "525qd", itt3030_state::itt3030_floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", itt3030_floppies, "525qd", itt3030_state::itt3030_floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:2", itt3030_floppies, "525qd", itt3030_state::itt3030_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", itt3030_floppies, "525qd", itt3030_state::itt3030_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", itt3030_floppies, "525qd", itt3030_state::itt3030_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:2", itt3030_floppies, "525qd", itt3030_state::itt3030_floppy_formats)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_itt3030);
@@ -745,7 +745,7 @@ void itt3030_state::itt3030(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
BEEP(config, m_beep, 3250).add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/jack.cpp b/src/mame/drivers/jack.cpp
index 8e88f0c8440..5aaa0d113ad 100644
--- a/src/mame/drivers/jack.cpp
+++ b/src/mame/drivers/jack.cpp
@@ -910,28 +910,29 @@ MACHINE_RESET_MEMBER(jack_state,joinem)
/***************************************************************/
-void jack_state::jack(machine_config &config)
-{
+MACHINE_CONFIG_START(jack_state::jack)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'000'000)/6);
- m_maincpu->set_addrmap(AS_PROGRAM, &jack_state::jack_map);
- m_maincpu->set_vblank_int("screen", FUNC(jack_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'000'000)/6)
+ MCFG_DEVICE_PROGRAM_MAP(jack_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", jack_state, irq0_line_hold)
- Z80(config, m_audiocpu, XTAL(18'000'000)/6);
- m_audiocpu->set_addrmap(AS_PROGRAM, &jack_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &jack_state::sound_io_map);
- m_audiocpu->set_irq_acknowledge_callback(FUNC(jack_state::jack_sh_irq_ack));
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(18'000'000)/6)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(jack_state, jack_sh_irq_ack)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(jack_state::screen_update_jack));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_jack);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(jack_state, screen_update_jack)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_jack)
+
PALETTE(config, m_palette).set_format(palette_device::BGR_233_inverted, 32);
/* sound hardware */
@@ -944,28 +945,29 @@ void jack_state::jack(machine_config &config)
aysnd.port_a_read_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read));
aysnd.port_b_read_callback().set(FUNC(jack_state::timer_r));
aysnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
-void jack_state::treahunt(machine_config &config)
-{
+MACHINE_CONFIG_START(jack_state::treahunt)
jack(config);
- m_maincpu->set_addrmap(AS_OPCODES, &jack_state::decrypted_opcodes_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+MACHINE_CONFIG_END
-void jack_state::striv(machine_config &config)
-{
+MACHINE_CONFIG_START(jack_state::striv)
jack(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &jack_state::striv_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(striv_map)
MCFG_MACHINE_START_OVERRIDE(jack_state,striv)
MCFG_MACHINE_RESET_OVERRIDE(jack_state,striv)
/* video hardware */
- subdevice<screen_device>("screen")->set_screen_update(FUNC(jack_state::screen_update_striv));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(jack_state, screen_update_striv)
+MACHINE_CONFIG_END
/***************************************************************/
@@ -976,41 +978,43 @@ INTERRUPT_GEN_MEMBER(jack_state::joinem_vblank_irq)
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
-void jack_state::joinem(machine_config &config)
-{
+MACHINE_CONFIG_START(jack_state::joinem)
jack(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &jack_state::joinem_map);
- m_maincpu->set_vblank_int("screen", FUNC(jack_state::joinem_vblank_irq));
- m_maincpu->set_periodic_int(FUNC(jack_state::irq0_line_hold), attotime::from_hz(250)); // ??? controls game speed
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(joinem_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", jack_state, joinem_vblank_irq)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(jack_state, irq0_line_hold, 250) // ??? controls game speed
MCFG_MACHINE_START_OVERRIDE(jack_state,joinem)
MCFG_MACHINE_RESET_OVERRIDE(jack_state,joinem)
/* video hardware */
- subdevice<screen_device>("screen")->set_screen_update(FUNC(jack_state::screen_update_joinem));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(jack_state, screen_update_joinem)
- m_gfxdecode->set_info(gfx_joinem);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_joinem)
PALETTE(config.replace(), m_palette, FUNC(jack_state::joinem_palette), 64);
MCFG_VIDEO_START_OVERRIDE(jack_state,joinem)
-}
+MACHINE_CONFIG_END
-void jack_state::unclepoo(machine_config &config)
-{
+MACHINE_CONFIG_START(jack_state::unclepoo)
joinem(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &jack_state::unclepoo_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(unclepoo_map)
/* video hardware */
- subdevice<screen_device>("screen")->set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
m_palette->set_entries(256);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jackal.cpp b/src/mame/drivers/jackal.cpp
index 7b1cbfb2ce1..0e8b8480cbc 100644
--- a/src/mame/drivers/jackal.cpp
+++ b/src/mame/drivers/jackal.cpp
@@ -357,28 +357,28 @@ void jackal_state::machine_reset()
m_irq_enable = 0;
}
-void jackal_state::jackal(machine_config &config)
-{
+MACHINE_CONFIG_START(jackal_state::jackal)
+
/* basic machine hardware */
- MC6809E(config, m_mastercpu, MASTER_CLOCK/12); // verified on pcb
- m_mastercpu->set_addrmap(AS_PROGRAM, &jackal_state::master_map);
+ MCFG_DEVICE_ADD("master", MC6809E, MASTER_CLOCK/12) // verified on pcb
+ MCFG_DEVICE_PROGRAM_MAP(master_map)
- MC6809E(config, m_slavecpu, MASTER_CLOCK/12); // verified on pcb
- m_slavecpu->set_addrmap(AS_PROGRAM, &jackal_state::slave_map);
+ MCFG_DEVICE_ADD("slave", MC6809E, MASTER_CLOCK/12) // verified on pcb
+ MCFG_DEVICE_PROGRAM_MAP(slave_map)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(1*8, 31*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(jackal_state::screen_update_jackal));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(jackal_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(jackal_state, screen_update_jackal)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, jackal_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_jackal);
PALETTE(config, m_palette, FUNC(jackal_state::jackal_palette));
@@ -390,7 +390,7 @@ void jackal_state::jackal(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
YM2151(config, "ymsnd", SOUND_CLOCK).add_route(0, "lspeaker", 0.50).add_route(1, "rspeaker", 0.50); // verified on pcb
-}
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/jackpool.cpp b/src/mame/drivers/jackpool.cpp
index 2946a84c8ab..4b8800b9a16 100644
--- a/src/mame/drivers/jackpool.cpp
+++ b/src/mame/drivers/jackpool.cpp
@@ -233,21 +233,20 @@ INTERRUPT_GEN_MEMBER(jackpool_state::jackpool_interrupt)
}
-void jackpool_state::jackpool(machine_config &config)
-{
- M68000(config, m_maincpu, 12000000); // ?
- m_maincpu->set_addrmap(AS_PROGRAM, &jackpool_state::jackpool_mem);
- m_maincpu->set_vblank_int("screen", FUNC(jackpool_state::jackpool_interrupt)); // ?
+MACHINE_CONFIG_START(jackpool_state::jackpool)
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000) // ?
+ MCFG_DEVICE_PROGRAM_MAP(jackpool_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", jackpool_state, jackpool_interrupt) // ?
GFXDECODE(config, m_gfxdecode, m_palette, gfx_jackpool);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 64*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(jackpool_state::screen_update_jackpool));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(jackpool_state, screen_update_jackpool)
+ MCFG_SCREEN_PALETTE("palette")
ls259_device &latch1(LS259(config, "latch1"));
latch1.q_out_cb<0>().set_nop(); // HOLD3 lamp
@@ -278,8 +277,9 @@ void jackpool_state::jackpool(machine_config &config)
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( jackpool )
diff --git a/src/mame/drivers/jaguar.cpp b/src/mame/drivers/jaguar.cpp
index b7d7a0473f5..802d1684d57 100644
--- a/src/mame/drivers/jaguar.cpp
+++ b/src/mame/drivers/jaguar.cpp
@@ -1855,6 +1855,7 @@ void jaguar_state::cojagr3k(machine_config &config)
DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_ldac, 0).add_route(ALL_OUTPUTS, "lspeaker", 1.0); // unknown DAC
DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_rdac, 0).add_route(ALL_OUTPUTS, "rspeaker", 1.0); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT);
@@ -1910,14 +1911,15 @@ void jaguar_state::jaguar(machine_config &config)
DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_ldac, 0).add_route(ALL_OUTPUTS, "lspeaker", 1.0); // unknown DAC
DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_rdac, 0).add_route(ALL_OUTPUTS, "rspeaker", 1.0); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
/* quickload */
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(jaguar_state, jaguar), this), "abs,bin,cof,jag,prg");
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(jaguar_state, jaguar), this), "abs,bin,cof,jag,prg", 0);
/* cartridge */
generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "jaguar_cart", "j64,rom,bin"));
diff --git a/src/mame/drivers/jailbrek.cpp b/src/mame/drivers/jailbrek.cpp
index 9f99ca04ff3..d4529239329 100644
--- a/src/mame/drivers/jailbrek.cpp
+++ b/src/mame/drivers/jailbrek.cpp
@@ -150,7 +150,7 @@ void jailbrek_state::jailbrek_map(address_map &map)
map(0x2043, 0x2043).nopw(); /* ??? */
map(0x2044, 0x2044).w(FUNC(jailbrek_state::ctrl_w)); /* irq, nmi enable, screen flip */
map(0x3000, 0x3000).w(FUNC(jailbrek_state::coin_w));
- map(0x3100, 0x3100).portr("DSW2").w("snsnd", FUNC(sn76489a_device::write));
+ map(0x3100, 0x3100).portr("DSW2").w("snsnd", FUNC(sn76489a_device::command_w));
map(0x3200, 0x3200).portr("DSW3").nopw(); /* mirror of the previous? */
map(0x3300, 0x3300).portr("SYSTEM").w("watchdog", FUNC(watchdog_timer_device::reset_w));
map(0x3301, 0x3301).portr("P1");
@@ -261,12 +261,12 @@ void jailbrek_state::machine_reset()
m_nmi_enable = 0;
}
-void jailbrek_state::jailbrek(machine_config &config)
-{
+MACHINE_CONFIG_START(jailbrek_state::jailbrek)
+
/* basic machine hardware */
- KONAMI1(config, m_maincpu, MASTER_CLOCK/12);
- m_maincpu->set_addrmap(AS_PROGRAM, &jailbrek_state::jailbrek_map);
- m_maincpu->set_periodic_int(FUNC(jailbrek_state::interrupt_nmi), attotime::from_hz(500)); /* ? */
+ MCFG_DEVICE_ADD("maincpu", KONAMI1, MASTER_CLOCK/12)
+ MCFG_DEVICE_PROGRAM_MAP(jailbrek_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(jailbrek_state, interrupt_nmi, 500) /* ? */
WATCHDOG_TIMER(config, "watchdog");
@@ -274,21 +274,22 @@ void jailbrek_state::jailbrek(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_jailbrek);
PALETTE(config, m_palette, FUNC(jailbrek_state::jailbrek_palette), 512, 32);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(MASTER_CLOCK/3, 396, 8, 248, 256, 16, 240);
- screen.set_screen_update(FUNC(jailbrek_state::screen_update));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(jailbrek_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 396, 8, 248, 256, 16, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(jailbrek_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, jailbrek_state, vblank_irq))
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489A(config, "snsnd", MASTER_CLOCK/12).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("snsnd", SN76489A, MASTER_CLOCK/12)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- VLM5030(config, m_vlm, VOICE_CLOCK);
- m_vlm->add_route(ALL_OUTPUTS, "mono", 1.0);
- m_vlm->set_addrmap(0, &jailbrek_state::vlm_map);
-}
+ MCFG_DEVICE_ADD("vlm", VLM5030, VOICE_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, vlm_map)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/jalmah.cpp b/src/mame/drivers/jalmah.cpp
index 02bad953018..64d63283345 100644
--- a/src/mame/drivers/jalmah.cpp
+++ b/src/mame/drivers/jalmah.cpp
@@ -123,10 +123,10 @@ class jalmah_state : public driver_device
public:
jalmah_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
m_palette(*this, "palette"),
m_tmap(*this, "scroll%u", 0),
m_sharedram(*this, "sharedram"),
+ m_maincpu(*this, "maincpu"),
m_prirom(*this, "prirom"),
m_p1_key_io(*this, "P1_KEY%u", 0U),
m_p2_key_io(*this, "P2_KEY%u", 0U),
@@ -170,7 +170,6 @@ protected:
virtual void machine_reset() override;
virtual void video_start() override;
- required_device<cpu_device> m_maincpu;
required_device<palette_device> m_palette;
optional_device_array<megasys1_tilemap_device, 4> m_tmap;
@@ -180,6 +179,7 @@ protected:
private:
required_shared_ptr<uint16_t> m_sharedram;
+ required_device<cpu_device> m_maincpu;
optional_region_ptr<uint8_t> m_prirom;
required_ioport_array<3> m_p1_key_io;
optional_ioport_array<3> m_p2_key_io;
@@ -1086,11 +1086,10 @@ void urashima_state::machine_reset()
mcu_check_test_mode();
}
-void jalmah_state::jalmah(machine_config &config)
-{
- M68000(config, m_maincpu, 12000000/2); // assume same as Mega System 1
- m_maincpu->set_addrmap(AS_PROGRAM, &jalmah_state::jalmah_map);
- m_maincpu->set_vblank_int("screen", FUNC(jalmah_state::irq2_line_hold));
+MACHINE_CONFIG_START(jalmah_state::jalmah)
+ MCFG_DEVICE_ADD("maincpu" , M68000, 12000000/2) // assume same as Mega System 1
+ MCFG_DEVICE_PROGRAM_MAP(jalmah_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", jalmah_state, irq2_line_hold)
//M50747 MCU
@@ -1099,20 +1098,20 @@ void jalmah_state::jalmah(machine_config &config)
MEGASYS1_TILEMAP(config, m_tmap[2], m_palette, 0x0200);
MEGASYS1_TILEMAP(config, m_tmap[3], m_palette, 0x0300);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(12000000/2,406,0,256,263,16,240); // assume same as nmk16 & mega system 1
- screen.set_screen_update(FUNC(jalmah_state::screen_update_jalmah));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(12000000/2,406,0,256,263,16,240) // assume same as nmk16 & mega system 1
+ MCFG_SCREEN_UPDATE_DRIVER(jalmah_state, screen_update_jalmah)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 0x400);
- TIMER(config, "mcusim").configure_periodic(FUNC(jalmah_state::mcu_sim), attotime::from_hz(10000));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("mcusim", jalmah_state, mcu_sim, attotime::from_hz(10000))
SPEAKER(config, "mono").front_center();
- okim6295_device &oki(OKIM6295(config, "oki", 4000000, okim6295_device::PIN7_LOW));
- oki.set_addrmap(0, &jalmah_state::oki_map);
- oki.add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 4000000, okim6295_device::PIN7_LOW)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
static const gfx_layout charlayout =
{
@@ -1145,18 +1144,18 @@ static GFXDECODE_START( gfx_urashima )
GFXDECODE_ENTRY( "scroll3", 0, charlayout, 0x000, 16 )
GFXDECODE_END
-void jalmah_state::jalmahv1(machine_config &config)
-{
+MACHINE_CONFIG_START(jalmah_state::jalmahv1)
jalmah(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &jalmah_state::jalmahv1_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(jalmahv1_map)
+MACHINE_CONFIG_END
-void urashima_state::urashima(machine_config &config)
-{
+MACHINE_CONFIG_START(urashima_state::urashima)
jalmah(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &urashima_state::urashima_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(urashima_map)
// Urashima seems to use an earlier version of the Jaleco tilemaps (without range etc.)
// and with per-scanline video registers
@@ -1165,10 +1164,11 @@ void urashima_state::urashima(machine_config &config)
config.device_remove("scroll2");
config.device_remove("scroll3");
- GFXDECODE(config, "gfxdecode", m_palette, gfx_urashima);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_urashima)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(urashima_state::screen_update_urashima));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(urashima_state, screen_update_urashima)
+MACHINE_CONFIG_END
// fake ROM containing 68k snippets
// the original MCU actually uploads these into shared work ram area
diff --git a/src/mame/drivers/jangou.cpp b/src/mame/drivers/jangou.cpp
index f35b4a257f1..1bc6fb59389 100644
--- a/src/mame/drivers/jangou.cpp
+++ b/src/mame/drivers/jangou.cpp
@@ -164,18 +164,18 @@ void jangou_state::jangou_palette(palette_device &palette) const
bit0 = BIT(color_prom[i], 0);
bit1 = BIT(color_prom[i], 1);
bit2 = BIT(color_prom[i], 2);
- int const r = combine_weights(weights_rg, bit0, bit1, bit2);
+ int const r = combine_3_weights(weights_rg, bit0, bit1, bit2);
// green component
bit0 = BIT(color_prom[i], 3);
bit1 = BIT(color_prom[i], 4);
bit2 = BIT(color_prom[i], 5);
- int const g = combine_weights(weights_rg, bit0, bit1, bit2);
+ int const g = combine_3_weights(weights_rg, bit0, bit1, bit2);
// blue component
bit0 = BIT(color_prom[i], 6);
bit1 = BIT(color_prom[i], 7);
- int const b = combine_weights(weights_b, bit0, bit1);
+ int const b = combine_2_weights(weights_b, bit0, bit1);
palette.set_pen_color(i, rgb_t(r, g, b));
}
@@ -870,25 +870,25 @@ MACHINE_RESET_MEMBER(jangou_state,jngolady)
}
/* Note: All frequencies and dividers are unverified */
-void jangou_state::jangou(machine_config &config)
-{
+MACHINE_CONFIG_START(jangou_state::jangou)
+
/* basic machine hardware */
- Z80(config, m_cpu_0, MASTER_CLOCK / 8);
- m_cpu_0->set_addrmap(AS_PROGRAM, &jangou_state::cpu0_map);
- m_cpu_0->set_addrmap(AS_IO, &jangou_state::cpu0_io);
- m_cpu_0->set_vblank_int("screen", FUNC(jangou_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("cpu0", Z80, MASTER_CLOCK / 8)
+ MCFG_DEVICE_PROGRAM_MAP(cpu0_map)
+ MCFG_DEVICE_IO_MAP(cpu0_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", jangou_state, irq0_line_hold)
- Z80(config, m_cpu_1, MASTER_CLOCK / 8);
- m_cpu_1->set_addrmap(AS_PROGRAM, &jangou_state::cpu1_map);
- m_cpu_1->set_addrmap(AS_IO, &jangou_state::cpu1_io);
+ MCFG_DEVICE_ADD("cpu1", Z80, MASTER_CLOCK / 8)
+ MCFG_DEVICE_PROGRAM_MAP(cpu1_map)
+ MCFG_DEVICE_IO_MAP(cpu1_io)
- JANGOU_BLITTER(config, "blitter", MASTER_CLOCK/4);
+ MCFG_JANGOU_BLITTER_ADD("blitter", MASTER_CLOCK/4)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(MASTER_CLOCK/4,320,0,256,264,16,240); // assume same as nightgal.cpp
- screen.set_screen_update(FUNC(jangou_state::screen_update_jangou));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4,320,0,256,264,16,240) // assume same as nightgal.cpp
+ MCFG_SCREEN_UPDATE_DRIVER(jangou_state, screen_update_jangou)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(jangou_state::jangou_palette), 32);
@@ -902,62 +902,66 @@ void jangou_state::jangou(machine_config &config)
aysnd.port_b_read_callback().set(FUNC(jangou_state::input_system_r));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.40);
- HC55516(config, m_cvsd, MASTER_CLOCK / 1024);
- m_cvsd->add_route(ALL_OUTPUTS, "mono", 0.60);
-}
+ MCFG_DEVICE_ADD("cvsd", HC55516, MASTER_CLOCK / 1024)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+MACHINE_CONFIG_END
-void jangou_state::jngolady(machine_config &config)
-{
+MACHINE_CONFIG_START(jangou_state::jngolady)
jangou(config);
/* basic machine hardware */
- m_cpu_0->set_addrmap(AS_PROGRAM, &jangou_state::jngolady_cpu0_map);
- m_cpu_1->set_addrmap(AS_PROGRAM, &jangou_state::jngolady_cpu1_map);
- m_cpu_1->set_addrmap(AS_IO, &jangou_state::jngolady_cpu1_io);
+ MCFG_DEVICE_MODIFY("cpu0")
+ MCFG_DEVICE_PROGRAM_MAP(jngolady_cpu0_map)
+
+ MCFG_DEVICE_MODIFY("cpu1")
+ MCFG_DEVICE_PROGRAM_MAP(jngolady_cpu1_map)
+ MCFG_DEVICE_IO_MAP(jngolady_cpu1_io)
- NSC8105(config, m_nsc, MASTER_CLOCK / 8);
- m_nsc->set_addrmap(AS_PROGRAM, &jangou_state::nsc_map);
+ MCFG_DEVICE_ADD("nsc", NSC8105, MASTER_CLOCK / 8)
+ MCFG_DEVICE_PROGRAM_MAP(nsc_map)
MCFG_MACHINE_START_OVERRIDE(jangou_state,jngolady)
MCFG_MACHINE_RESET_OVERRIDE(jangou_state,jngolady)
/* sound hardware */
- config.device_remove("cvsd");
+ MCFG_DEVICE_REMOVE("cvsd")
- MSM5205(config, m_msm, XTAL(400'000));
- m_msm->vck_legacy_callback().set(FUNC(jangou_state::jngolady_vclk_cb));
- m_msm->set_prescaler_selector(msm5205_device::S96_4B);
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, XTAL(400'000))
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, jangou_state, jngolady_vclk_cb))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
-void jangou_state::cntrygrl(machine_config &config)
-{
+MACHINE_CONFIG_START(jangou_state::cntrygrl)
jangou(config);
/* basic machine hardware */
- m_cpu_0->set_addrmap(AS_PROGRAM, &jangou_state::cntrygrl_cpu0_map);
- m_cpu_0->set_addrmap(AS_IO, &jangou_state::cntrygrl_cpu0_io);
- config.device_remove("cpu1");
+ MCFG_DEVICE_MODIFY("cpu0")
+ MCFG_DEVICE_PROGRAM_MAP(cntrygrl_cpu0_map )
+ MCFG_DEVICE_IO_MAP(cntrygrl_cpu0_io )
+
+ MCFG_DEVICE_REMOVE("cpu1")
MCFG_MACHINE_START_OVERRIDE(jangou_state,common)
MCFG_MACHINE_RESET_OVERRIDE(jangou_state,common)
/* sound hardware */
- config.device_remove("cvsd");
- config.device_remove("soundlatch");
-}
+ MCFG_DEVICE_REMOVE("cvsd")
+ MCFG_DEVICE_REMOVE("soundlatch")
+MACHINE_CONFIG_END
-void jangou_state::roylcrdn(machine_config &config)
-{
+MACHINE_CONFIG_START(jangou_state::roylcrdn)
jangou(config);
/* basic machine hardware */
- m_cpu_0->set_addrmap(AS_PROGRAM, &jangou_state::roylcrdn_cpu0_map);
- m_cpu_0->set_addrmap(AS_IO, &jangou_state::roylcrdn_cpu0_io);
- config.device_remove("cpu1");
+ MCFG_DEVICE_MODIFY("cpu0")
+ MCFG_DEVICE_PROGRAM_MAP(roylcrdn_cpu0_map )
+ MCFG_DEVICE_IO_MAP(roylcrdn_cpu0_io )
+
+ MCFG_DEVICE_REMOVE("cpu1")
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -965,9 +969,9 @@ void jangou_state::roylcrdn(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(jangou_state,common)
/* sound hardware */
- config.device_remove("cvsd");
- config.device_remove("soundlatch");
-}
+ MCFG_DEVICE_REMOVE("cvsd")
+ MCFG_DEVICE_REMOVE("soundlatch")
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/jankenmn.cpp b/src/mame/drivers/jankenmn.cpp
index 4f722610c3e..9f836a121d0 100644
--- a/src/mame/drivers/jankenmn.cpp
+++ b/src/mame/drivers/jankenmn.cpp
@@ -383,8 +383,7 @@ static const z80_daisy_config daisy_chain[] =
* Machine Config *
*********************************************/
-void jankenmn_state::jankenmn(machine_config &config)
-{
+MACHINE_CONFIG_START(jankenmn_state::jankenmn)
/* basic machine hardware */
Z80(config, m_maincpu, MASTER_CLOCK); /* 2.5 MHz */
m_maincpu->set_daisy_config(daisy_chain);
@@ -411,11 +410,10 @@ void jankenmn_state::jankenmn(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- AD7523(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", AD7523, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
/*********************************************
diff --git a/src/mame/drivers/jantotsu.cpp b/src/mame/drivers/jantotsu.cpp
index 92bf725bbad..95ab9ddb4f9 100644
--- a/src/mame/drivers/jantotsu.cpp
+++ b/src/mame/drivers/jantotsu.cpp
@@ -348,8 +348,8 @@ void jantotsu_state::jantotsu_map(address_map &map)
void jantotsu_state::jantotsu_io(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).portr("DSW1").w("sn1", FUNC(sn76489a_device::write));
- map(0x01, 0x01).r(FUNC(jantotsu_state::jantotsu_dsw2_r)).w("sn2", FUNC(sn76489a_device::write));
+ map(0x00, 0x00).portr("DSW1").w("sn1", FUNC(sn76489a_device::command_w));
+ map(0x01, 0x01).r(FUNC(jantotsu_state::jantotsu_dsw2_r)).w("sn2", FUNC(sn76489a_device::command_w));
map(0x02, 0x03).w(FUNC(jantotsu_state::jan_adpcm_w));
map(0x04, 0x04).rw(FUNC(jantotsu_state::jantotsu_mux_r), FUNC(jantotsu_state::jantotsu_mux_w));
map(0x07, 0x07).w(FUNC(jantotsu_state::bankaddr_w));
@@ -503,35 +503,38 @@ void jantotsu_state::machine_reset()
m_adpcm_trigger = 0;
}
-void jantotsu_state::jantotsu(machine_config &config)
-{
+MACHINE_CONFIG_START(jantotsu_state::jantotsu)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLOCK/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &jantotsu_state::jantotsu_map);
- m_maincpu->set_addrmap(AS_IO, &jantotsu_state::jantotsu_io);
+ MCFG_DEVICE_ADD("maincpu", Z80,MAIN_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(jantotsu_map)
+ MCFG_DEVICE_IO_MAP(jantotsu_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); //not accurate
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 16, 240-1);
- screen.set_screen_update(FUNC(jantotsu_state::screen_update_jantotsu));
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(jantotsu_state, screen_update_jantotsu)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
PALETTE(config, m_palette, FUNC(jantotsu_state::jantotsu_palette), 0x20);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489A(config, "sn1", MAIN_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 0.50);
- SN76489A(config, "sn2", MAIN_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("sn1", SN76489A, MAIN_CLOCK/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- MSM5205(config, m_adpcm, XTAL(384'000));
- m_adpcm->vck_legacy_callback().set(FUNC(jantotsu_state::jan_adpcm_int)); /* interrupt function */
- m_adpcm->set_prescaler_selector(msm5205_device::S64_4B); /* 6 KHz */
- m_adpcm->add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+ MCFG_DEVICE_ADD("sn2", SN76489A, MAIN_CLOCK/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+
+ MCFG_DEVICE_ADD("adpcm", MSM5205, XTAL(384'000))
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, jantotsu_state, jan_adpcm_int)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) /* 6 KHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/jazz.cpp b/src/mame/drivers/jazz.cpp
index 2aa45bb5ad9..fbf1669a576 100644
--- a/src/mame/drivers/jazz.cpp
+++ b/src/mame/drivers/jazz.cpp
@@ -13,10 +13,7 @@
* http://www.sensi.org/~alec/mips/mips-history.html
*
* TODO
- * - make it boot Windows NT
- * - big-endian support for RISC/os
- * - EISA bus and slots
- * - slotify and improve graphics board
+ * - everything (skeleton only)
*
* Unconfirmed parts lists from ARCSystem reference design (which appears to
* be very similar or identical to the Jazz system) taken from:
@@ -72,110 +69,35 @@ void jazz_state::machine_reset()
void jazz_state::init_common()
{
- // map the configured ram and vram
- m_cpu->space(0).install_ram(0x00000000, 0x00000000 | m_ram->mask(), m_ram->pointer());
- m_cpu->space(0).install_ram(0x40000000, 0x40000000 | m_vram->mask(), m_vram->pointer());
+ // map the configured ram
+ m_maincpu->space(AS_PROGRAM).install_ram(0, m_ram->mask(), m_ram->pointer());
}
void jazz_state::jazz_common_map(address_map &map)
{
map(0x1fc00000, 0x1fc3ffff).r(m_flash, FUNC(amd_28f020_device::read));
- map(0x40000000, 0x407fffff).ram().share("vram"); // local video memory
- map(0x60000000, 0x6000013f).lr8("video_rom",
- [](offs_t offset)
- {
- /*
- * Board_Identifier, PROM_Stride, PROM_Width, PROM_Size
- * 0=JazzVideoG300, 1=JazzVideoG364, 2=JazzVideoVxl, 0x10=MipsVideoG364, 0x11=MaximumJazzVideo (jazzvideog364 osc period == 123077, MipsVideoG364 = 200000)
- * Test_Byte_0 - Test_Byte_3
- * VideoMemorySize, VideoControlSize
- * CodeOffset, CodeSize
- * ID string
- */
- /*
- static u8 const jazz_g364[] =
- {
- 0x01, 0x08, 0x01, 0x20, 'J', 'a', 'z', 'z',
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
- 'J', 'a', 'z', 'z', ' ', 'G', '3', '6',
- '4', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- };
-
- static u8 const mips_g364[] =
- {
- 0x10, 0x08, 0x01, 0x20, 'J', 'a', 'z', 'z',
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
- 'M', 'i', 'p', 's', ' ', 'G', '3', '6',
- '4', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- };
- */
-
- static u8 const bogus_g364[] =
- {
- 0x10, 0x00, 0x00, 0x00, 'J', 'a', 'z', 'z',
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
- 'M', 'i', 'p', 's', ' ', 'G', '3', '6',
- '4', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- };
-
- return bogus_g364[offset];
- }).umask64(0xff);
-
- map(0x60080000, 0x60081fff).m(m_ramdac, FUNC(g364_device::map)); // local video control
- map(0x60180000, 0x60180007).lw32("g364_reset", [this](u32 data) { m_ramdac->reset(); });
-
+ // FIXME: lots of guesswork and assumptions here for now
map(0x80000000, 0x80000fff).m(m_mct_adr, FUNC(jazz_mct_adr_device::map));
-
- map(0x80001000, 0x800010ff).m(m_network, FUNC(dp83932c_device::map)).umask32(0x0000ffff);
- map(0x80002000, 0x8000200f).m(m_scsi, FUNC(ncr53c94_device::map));
- map(0x80003000, 0x8000300f).m(m_fdc, FUNC(n82077aa_device::map));
- map(0x80004000, 0x80004007).lrw8("rtc",
- [this](offs_t offset) { return m_rtc->read(1); },
- [this](offs_t offset, u8 data) { m_rtc->write(1, data); }).umask64(0xff);
- map(0x80005000, 0x80005007).rw(m_kbdc, FUNC(at_keyboard_controller_device::data_r), FUNC(at_keyboard_controller_device::data_w)).umask64(0x00ff);
- map(0x80005000, 0x80005007).rw(m_kbdc, FUNC(at_keyboard_controller_device::status_r), FUNC(at_keyboard_controller_device::command_w)).umask64(0xff00);
- map(0x80006000, 0x80006007).rw(m_ace[0], FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
- map(0x80007000, 0x80007007).rw(m_ace[1], FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
- map(0x80008000, 0x80008007).rw(m_lpt, FUNC(pc_lpt_device::read), FUNC(pc_lpt_device::write)).umask64(0xffffffff);
- map(0x80009000, 0x8000afff).ram().share("nvram"); // 9000-9fff unprotected/a000-afff protected?
- map(0x8000b000, 0x8000b007).lr8("mac", [](offs_t offset)
- {
- // mac address and checksum
- static u8 const mac[] = { 0x00, 0x00, 0x6b, 0x12, 0x34, 0x56, 0x00, 0xf7 };
-
- return mac[offset];
- });
- // 3 4k pages of nvram: read/write, protected, read-only
- // last page holds ethernet mac and checksum in bytes 0-7
-
+ map(0x80001000, 0x80001fff).m(m_network, FUNC(dp83932c_device::map));
+ //map(0x80002000, 0x80002fff).m(m_scsi, FUNC(ncr5390_device::map)).umask32(0x000000ff);
+ map(0x80003000, 0x80003fff).m(m_fdc, FUNC(n82077aa_device::map));
+ //map(0x80004000, 0x80004fff).rw(m_rtc, FUNC(mc146818_device::read), FUNC(mc146818_device::write));
+ //map(0x80005000, 0x80005fff).m() // keyboard/mouse
+ //map(0x80006000, 0x80006fff).m() // serial1
+ //map(0x80007000, 0x80007fff).m() // serial2
+ //map(0x80008000, 0x80008fff).m() // parallel
+ map(0x80009000, 0x80009fff).ram().share("nvram"); // unprotected?
+ map(0x8000a000, 0x8000afff).ram().share("nvram"); // protected?
+ map(0x8000b000, 0x8000bfff).ram().share("nvram"); // read-only? also sonic IO access?
//map(0x8000c000, 0x8000cfff) // sound
- //map(0x8000d000, 0x8000dfff).noprw(); // dummy dma device?
- map(0x8000d600, 0x8000d607).nopw();
-
- map(0x8000f000, 0x8000f007).lrw8(
- "led",
- [this]() { return m_led; },
- [this](u8 data)
- {
- logerror("led 0x%02x (%s)\n", data, machine().describe_context());
- m_led = data;
- }).umask64(0xff);
+ map(0x8000d000, 0x8000dfff).noprw(); // dummy dma device?
- // lots of byte data written to 800
- //map(0x800e0000, 0x800fffff).m() // dram config
+ map(0x8000f000, 0x8000f001).rw(FUNC(jazz_state::led_r), FUNC(jazz_state::led_w));
- map(0x90000000, 0x90ffffff).m(m_isp, FUNC(i82357_device::map));
+ //map(0x800e0000, 0x800e0000).rw(FUNC(jazz_state::dram_config_r), FUNC(jazz_state::dram_config_w));
- //map(0x91000000, 0x91ffffff).m();
- //map(0x92000000, 0x92ffffff).m(); // EISA I/O ports?
- //map(0x93000000, 0x93ffffff).m(); // EISA memory
-
- map(0xf0000000, 0xf0000007).r(m_mct_adr, FUNC(jazz_mct_adr_device::isr_r)).umask64(0xffff);
- map(0xf0000000, 0xf0000007).rw(m_mct_adr, FUNC(jazz_mct_adr_device::imr_r), FUNC(jazz_mct_adr_device::imr_w)).umask64(0xffff0000);
+ map(0xe0800000, 0xe0bfffff).ram().share("vram"); // framebuffer?
map(0xfff00000, 0xfff3ffff).r(m_flash, FUNC(amd_28f020_device::read)); // mirror?
}
@@ -186,62 +108,42 @@ static void jazz_scsi_devices(device_slot_interface &device)
device.option_add("cdrom", NSCSI_CDROM);
}
-FLOPPY_FORMATS_MEMBER(jazz_state::floppy_formats)
- FLOPPY_PC_FORMAT
-FLOPPY_FORMATS_END
-
void jazz_state::jazz(machine_config &config)
{
- R4000(config, m_cpu, 50_MHz_XTAL);
- m_cpu->set_addrmap(0, &jazz_state::jazz_common_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &jazz_state::jazz_common_map);
- RAM(config, m_ram);
- m_ram->set_default_size("16M");
- m_ram->set_extra_options("32M,64M,128M,256M");
+ RAM(config, m_ram, 0);
+ m_ram->set_default_size("8M");
+ m_ram->set_extra_options("16M,32M,64M,128M,256M");
m_ram->set_default_value(0);
- RAM(config, m_vram);
- m_vram->set_default_size("2M");
- m_vram->set_default_value(0);
-
- // local bus dma, timer and interrupt controller
+ // FIXME: may require big and little endian variants
JAZZ_MCT_ADR(config, m_mct_adr, 0);
- m_mct_adr->set_bus(m_cpu, 0);
- m_mct_adr->out_int_dma_cb().set_inputline(m_cpu, INPUT_LINE_IRQ0);
- m_mct_adr->out_int_device_cb().set_inputline(m_cpu, INPUT_LINE_IRQ1);
- m_mct_adr->out_int_timer_cb().set_inputline(m_cpu, INPUT_LINE_IRQ4);
- m_mct_adr->eisa_iack_cb().set(m_isp, FUNC(i82357_device::eisa_irq_ack));
// scsi bus and devices
- NSCSI_BUS(config, m_scsibus);
- NSCSI_CONNECTOR(config, "scsi:0", jazz_scsi_devices, "harddisk");
- NSCSI_CONNECTOR(config, "scsi:1", jazz_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:2", jazz_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:3", jazz_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:4", jazz_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:5", jazz_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:6", jazz_scsi_devices, "cdrom");
+ NSCSI_BUS(config, m_scsibus, 0);
- // scsi host adapter
- NSCSI_CONNECTOR(config, "scsi:7").option_set("ncr53c94", NCR53C94).clock(24_MHz_XTAL).machine_config(
- [this](device_t *device)
- {
- ncr53c94_device &adapter = downcast<ncr53c94_device &>(*device);
+ nscsi_connector &harddisk(NSCSI_CONNECTOR(config, "scsi:0", 0));
+ jazz_scsi_devices(harddisk);
+ harddisk.set_default_option("harddisk");
+
+ nscsi_connector &cdrom(NSCSI_CONNECTOR(config, "scsi:6", 0));
+ jazz_scsi_devices(cdrom);
+ cdrom.set_default_option("cdrom");
- adapter.irq_handler_cb().set(m_mct_adr, FUNC(jazz_mct_adr_device::irq<5>));;
- adapter.drq_handler_cb().set(m_mct_adr, FUNC(jazz_mct_adr_device::drq<0>));
+ jazz_scsi_devices(NSCSI_CONNECTOR(config, "scsi:1", 0));
+ jazz_scsi_devices(NSCSI_CONNECTOR(config, "scsi:2", 0));
+ jazz_scsi_devices(NSCSI_CONNECTOR(config, "scsi:3", 0));
+ jazz_scsi_devices(NSCSI_CONNECTOR(config, "scsi:4", 0));
+ jazz_scsi_devices(NSCSI_CONNECTOR(config, "scsi:5", 0));
- subdevice<jazz_mct_adr_device>(":mct_adr")->dma_r_cb<0>().set(adapter, FUNC(ncr53c94_device::dma_r));
- subdevice<jazz_mct_adr_device>(":mct_adr")->dma_w_cb<0>().set(adapter, FUNC(ncr53c94_device::dma_w));
- });
+ // scsi host adapter
+ nscsi_connector &adapter(NSCSI_CONNECTOR(config, "scsi:7", 0));
+ adapter.option_add_internal("host", NCR53C90A);
+ adapter.set_default_option("host");
+ adapter.set_fixed(true);
- // floppy controller and drive
N82077AA(config, m_fdc, 24_MHz_XTAL);
- m_fdc->intrq_wr_callback().set(m_mct_adr, FUNC(jazz_mct_adr_device::irq<1>));
- m_fdc->drq_wr_callback().set(m_mct_adr, FUNC(jazz_mct_adr_device::drq<1>));
- FLOPPY_CONNECTOR(config, "fdc:0", "35hd", FLOPPY_35_HD, true, jazz_state::floppy_formats).enable_sound(false);
- m_mct_adr->dma_r_cb<1>().set(m_fdc, FUNC(n82077aa_device::dma_r));
- m_mct_adr->dma_w_cb<1>().set(m_fdc, FUNC(n82077aa_device::dma_w));
MC146818(config, m_rtc, 32.768_kHz_XTAL);
@@ -249,112 +151,52 @@ void jazz_state::jazz(machine_config &config)
AMD_28F020(config, m_flash);
- // pc keyboard connector
+ // pc keyboard controller?
pc_kbdc_device &kbdc(PC_KBDC(config, "pc_kbdc", 0));
- kbdc.out_clock_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::kbd_clk_w));
- kbdc.out_data_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::kbd_data_w));
+ kbdc.out_clock_cb().set(m_kbdc, FUNC(at_keyboard_controller_device::kbd_clk_w));
+ kbdc.out_data_cb().set(m_kbdc, FUNC(at_keyboard_controller_device::kbd_data_w));
// keyboard port
pc_kbdc_slot_device &kbd(PC_KBDC_SLOT(config, "kbd", 0));
pc_at_keyboards(kbd);
- kbd.set_default_option(STR_KBD_MICROSOFT_NATURAL);
+ kbd.set_default_option(STR_KBD_IBM_PC_AT_84);
kbd.set_pc_kbdc_slot(&kbdc);
- // keyboard controller
- PS2_KEYBOARD_CONTROLLER(config, m_kbdc, 12_MHz_XTAL);
- //m_kbdc->hot_res().set_inputline(m_cpu, INPUT_LINE_RESET);
- m_kbdc->hot_res().set([this](int state) { if (!state) m_cpu->reset(); });
+ // at keyboard controller
+ AT_KEYBOARD_CONTROLLER(config, m_kbdc, 12_MHz_XTAL);
+ m_kbdc->hot_res().set_inputline(m_maincpu, INPUT_LINE_RESET);
m_kbdc->kbd_clk().set(kbdc, FUNC(pc_kbdc_device::clock_write_from_mb));
m_kbdc->kbd_data().set(kbdc, FUNC(pc_kbdc_device::data_write_from_mb));
- m_kbdc->kbd_irq().set(m_mct_adr, FUNC(jazz_mct_adr_device::irq<6>));;
-
- //m_kbdc->mouse_clk().set();
- //m_kbdc->mouse_data().set();
- m_kbdc->mouse_irq().set(m_mct_adr, FUNC(jazz_mct_adr_device::irq<7>));
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(78643200, 1280, 0, 1280, 1024, 0, 1024);
- m_screen->set_screen_update("g364", FUNC(g364_device::screen_update));
- m_screen->screen_vblank().set(m_mct_adr, FUNC(jazz_mct_adr_device::irq<3>)); // maybe?
-
- G364(config, m_ramdac, 5_MHz_XTAL); // FIXME: guessed clock
- m_ramdac->set_screen(m_screen);
- m_ramdac->set_vram(m_vram);
-
- // WD16C552 (two 16550 + pc_lpt)
- NS16550(config, m_ace[0], 4233600);
- rs232_port_device &serial0(RS232_PORT(config, "serial0", default_rs232_devices, nullptr));
-
- m_ace[0]->out_dtr_callback().set(serial0, FUNC(rs232_port_device::write_dtr));
- m_ace[0]->out_rts_callback().set(serial0, FUNC(rs232_port_device::write_rts));
- m_ace[0]->out_tx_callback().set(serial0, FUNC(rs232_port_device::write_txd));
- m_ace[0]->out_int_callback().set(m_mct_adr, FUNC(jazz_mct_adr_device::irq<8>));
-
- serial0.cts_handler().set(m_ace[0], FUNC(ns16550_device::cts_w));
- serial0.dcd_handler().set(m_ace[0], FUNC(ns16550_device::dcd_w));
- serial0.dsr_handler().set(m_ace[0], FUNC(ns16550_device::dsr_w));
- serial0.ri_handler().set(m_ace[0], FUNC(ns16550_device::ri_w));
- serial0.rxd_handler().set(m_ace[0], FUNC(ns16550_device::rx_w));
-
- NS16550(config, m_ace[1], 8_MHz_XTAL);
- rs232_port_device &serial1(RS232_PORT(config, "serial1", default_rs232_devices, nullptr));
-
- m_ace[1]->out_dtr_callback().set(serial1, FUNC(rs232_port_device::write_dtr));
- m_ace[1]->out_rts_callback().set(serial1, FUNC(rs232_port_device::write_rts));
- m_ace[1]->out_tx_callback().set(serial1, FUNC(rs232_port_device::write_txd));
- m_ace[1]->out_int_callback().set(m_mct_adr, FUNC(jazz_mct_adr_device::irq<9>));
-
- serial1.cts_handler().set(m_ace[1], FUNC(ns16550_device::cts_w));
- serial1.dcd_handler().set(m_ace[1], FUNC(ns16550_device::dcd_w));
- serial1.dsr_handler().set(m_ace[1], FUNC(ns16550_device::dsr_w));
- serial1.ri_handler().set(m_ace[1], FUNC(ns16550_device::ri_w));
- serial1.rxd_handler().set(m_ace[1], FUNC(ns16550_device::rx_w));
-
- PC_LPT(config, m_lpt, 0);
- m_lpt->irq_handler().set(m_mct_adr, FUNC(jazz_mct_adr_device::irq<0>));
-
- // TODO: sound, interrupt 2, drq 2(l) & 3(r)
-
- // buzzer
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_buzzer);
- m_buzzer->add_route(ALL_OUTPUTS, "mono", 0.50);
-
- DP83932C(config, m_network, 20_MHz_XTAL);
- m_network->out_int_cb().set(m_mct_adr, FUNC(jazz_mct_adr_device::irq<4>));
- m_network->set_ram(RAM_TAG);
-
- I82357(config, m_isp, 14.318181_MHz_XTAL);
- m_isp->out_rtc_cb().set(m_rtc, FUNC(mc146818_device::write));
- m_isp->out_int_cb().set_inputline(m_cpu, INPUT_LINE_IRQ2);
- m_isp->out_nmi_cb().set_inputline(m_cpu, INPUT_LINE_IRQ3);
- m_isp->out_spkr_cb().set(m_buzzer, FUNC(speaker_sound_device::level_w));
-
- // TODO: 4 EISA slots
+
+ G364(config, m_ramdac, 0);
}
void jazz_state::mmr4000be(machine_config &config)
{
+ R4000BE(config, m_maincpu, 50_MHz_XTAL);
+
jazz(config);
- m_cpu->set_config(r4000_device::CONFIG_BE, r4000_device::CONFIG_BE);
+ DP83932C_BE(config, m_network, 20_MHz_XTAL);
}
void jazz_state::mmr4000le(machine_config &config)
{
+ R4000LE(config, m_maincpu, 50_MHz_XTAL);
+
jazz(config);
- m_cpu->set_config(0, r4000_device::CONFIG_BE);
+ DP83932C_LE(config, m_network, 20_MHz_XTAL);
}
ROM_START(mmr4000be)
- ROM_REGION64_BE(0x40000, "flash", 0)
+ ROM_REGION32_BE(0x40000, "flash", 0)
ROM_SYSTEM_BIOS(0, "riscos", "R4000 RISC/os PROM")
ROMX_LOAD("riscos.bin", 0x00000, 0x40000, CRC(cea6bc8f) SHA1(3e47b4ad5d1a0c7aac649e6aef3df1bf86fc938b), ROM_BIOS(0))
ROM_END
ROM_START(mmr4000le)
- ROM_REGION64_LE(0x40000, "flash", 0)
+ ROM_REGION32_LE(0x40000, "flash", 0)
ROM_SYSTEM_BIOS(0, "ntprom", "R4000 Windows NT PROM")
ROMX_LOAD("ntprom.bin", 0x00000, 0x40000, CRC(d91018d7) SHA1(316de17820192c89b8ee6d9936ab8364a739ca53), ROM_BIOS(0))
ROM_END
diff --git a/src/mame/drivers/jchan.cpp b/src/mame/drivers/jchan.cpp
index 5d860983d60..25d45bfa545 100644
--- a/src/mame/drivers/jchan.cpp
+++ b/src/mame/drivers/jchan.cpp
@@ -603,26 +603,26 @@ INPUT_PORTS_END
/* machine driver */
-void jchan_state::jchan(machine_config &config)
-{
- M68000(config, m_maincpu, 16000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &jchan_state::jchan_main);
- TIMER(config, "scantimer").configure_scanline(FUNC(jchan_state::vblank), "screen", 0, 1);
+MACHINE_CONFIG_START(jchan_state::jchan)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 16000000)
+ MCFG_DEVICE_PROGRAM_MAP(jchan_main)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", jchan_state, vblank, "screen", 0, 1)
- M68000(config, m_subcpu, 16000000);
- m_subcpu->set_addrmap(AS_PROGRAM, &jchan_state::jchan_sub);
+ MCFG_DEVICE_ADD("sub", M68000, 16000000)
+ MCFG_DEVICE_PROGRAM_MAP(jchan_sub)
WATCHDOG_TIMER(config, "watchdog");
GFXDECODE(config, "gfxdecode", m_palette, gfx_jchan);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 40*8-1, 0*8, 30*8-1);
- screen.set_screen_update(FUNC(jchan_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(jchan_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xGRB_555, 0x10000);
@@ -634,7 +634,7 @@ void jchan_state::jchan(machine_config &config)
for (auto &spritegen : m_spritegen)
SKNS_SPRITE(config, spritegen, 0);
- KANEKO_TOYBOX(config, "toybox", "eeprom", "DSW1", "mcuram", "mcudata");
+ MCFG_DEVICE_ADD("toybox", KANEKO_TOYBOX, "eeprom", "DSW1", "mcuram", "mcudata")
EEPROM_93C46_16BIT(config, "eeprom");
@@ -642,10 +642,10 @@ void jchan_state::jchan(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ymz280b_device &ymz(YMZ280B(config, "ymz", 16000000));
- ymz.add_route(0, "lspeaker", 1.0);
- ymz.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, 16000000)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/* ROM loading */
diff --git a/src/mame/drivers/jclub2.cpp b/src/mame/drivers/jclub2.cpp
index b5720c16a48..57dc4d26b5d 100644
--- a/src/mame/drivers/jclub2.cpp
+++ b/src/mame/drivers/jclub2.cpp
@@ -1131,32 +1131,31 @@ TIMER_DEVICE_CALLBACK_MEMBER(common_state::scanline_irq)
}
// Older hardware (ST-0020 + ST-0016)
-void jclub2o_state::jclub2o(machine_config &config)
-{
- M68EC020(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &jclub2o_state::jclub2o_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(common_state::scanline_irq), "screen", 0, 1);
+MACHINE_CONFIG_START(jclub2o_state::jclub2o)
+ MCFG_DEVICE_ADD("maincpu", M68EC020, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(jclub2o_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", common_state, scanline_irq, "screen", 0, 1)
- ST0016_CPU(config, m_soundcpu, 8000000);
- m_soundcpu->set_addrmap(AS_PROGRAM, &jclub2o_state::st0016_mem);
- m_soundcpu->set_addrmap(AS_IO, &jclub2o_state::st0016_io);
- m_soundcpu->set_vblank_int("screen", FUNC(jclub2o_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("soundcpu",ST0016_CPU, 8000000)
+ MCFG_DEVICE_PROGRAM_MAP(st0016_mem)
+ MCFG_DEVICE_IO_MAP(st0016_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", jclub2o_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
EEPROM_S29290_16BIT(config, "eeprom");
WATCHDOG_TIMER(config, "watchdog");
- TICKET_DISPENSER(config, m_hopper1, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
- TICKET_DISPENSER(config, m_hopper2, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("hopper1", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+ MCFG_TICKET_DISPENSER_ADD("hopper2", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(0x190, 0x100+16);
- screen.set_visarea(0, 0x190-1, 0x10, 0x100-1);
- screen.set_screen_update(FUNC(jclub2_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x190, 0x100+16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x190-1, 0x10, 0x100-1)
+ MCFG_SCREEN_UPDATE_DRIVER(jclub2_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x10000);
@@ -1166,31 +1165,30 @@ void jclub2o_state::jclub2o(machine_config &config)
// layout
config.set_default_layout(layout_jclub2o);
-}
+MACHINE_CONFIG_END
// Newer hardware (ST-0032)
-void jclub2_state::jclub2(machine_config &config)
-{
- M68EC020(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &jclub2_state::jclub2_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(common_state::scanline_irq), "screen", 0, 1);
+MACHINE_CONFIG_START(jclub2_state::jclub2)
+ MCFG_DEVICE_ADD("maincpu", M68EC020, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(jclub2_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", common_state, scanline_irq, "screen", 0, 1)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
EEPROM_93C46_8BIT(config, "eeprom");
WATCHDOG_TIMER(config, "watchdog");
- TICKET_DISPENSER(config, m_hopper1, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
- TICKET_DISPENSER(config, m_hopper2, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("hopper1", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+ MCFG_TICKET_DISPENSER_ADD("hopper2", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(0x190, 0x100+16);
- screen.set_visarea(0, 0x190-1, 8, 0x100-8-1);
- screen.set_screen_update(FUNC(jclub2_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x190, 0x100+16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x190-1, 8, 0x100-8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(jclub2_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x10000);
@@ -1202,30 +1200,29 @@ void jclub2_state::jclub2(machine_config &config)
// layout
config.set_default_layout(layout_jclub2o);
-}
+MACHINE_CONFIG_END
-void darkhors_state::darkhors(machine_config &config)
-{
- M68EC020(config, m_maincpu, 12000000); // 36MHz/3 ??
- m_maincpu->set_addrmap(AS_PROGRAM, &darkhors_state::darkhors_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(common_state::scanline_irq), "screen", 0, 1);
+MACHINE_CONFIG_START(darkhors_state::darkhors)
+ MCFG_DEVICE_ADD("maincpu", M68EC020, 12000000) // 36MHz/3 ??
+ MCFG_DEVICE_PROGRAM_MAP(darkhors_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", common_state, scanline_irq, "screen", 0, 1)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
EEPROM_93C46_8BIT(config, "eeprom");
WATCHDOG_TIMER(config, "watchdog");
- TICKET_DISPENSER(config, m_hopper1, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
- TICKET_DISPENSER(config, m_hopper2, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("hopper1", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+ MCFG_TICKET_DISPENSER_ADD("hopper2", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(0x190, 0x100+16);
- screen.set_visarea(0, 0x190-1, 8, 0x100-8-1);
- screen.set_screen_update(FUNC(darkhors_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x190, 0x100+16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x190-1, 8, 0x100-8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(darkhors_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x10000);
@@ -1238,8 +1235,9 @@ void darkhors_state::darkhors(machine_config &config)
// sound hardware
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 528000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 528000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/jedi.cpp b/src/mame/drivers/jedi.cpp
index ab52077903d..1d3d4875afe 100644
--- a/src/mame/drivers/jedi.cpp
+++ b/src/mame/drivers/jedi.cpp
@@ -328,13 +328,13 @@ INPUT_PORTS_END
*
*************************************/
-void jedi_state::jedi(machine_config &config)
-{
+MACHINE_CONFIG_START(jedi_state::jedi)
+
/* basic machine hardware */
- M6502(config, m_maincpu, JEDI_MAIN_CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &jedi_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, JEDI_MAIN_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- config.m_minimum_quantum = attotime::from_hz(240);
+ MCFG_QUANTUM_TIME(attotime::from_hz(240))
X2212(config, "novram12b");
X2212(config, "novram12c");
@@ -361,7 +361,7 @@ void jedi_state::jedi(machine_config &config)
/* audio hardware */
jedi_audio(config);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jensen.cpp b/src/mame/drivers/jensen.cpp
deleted file mode 100644
index 542c41c2d49..00000000000
--- a/src/mame/drivers/jensen.cpp
+++ /dev/null
@@ -1,246 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Patrick Mackinlay
-
-/*
- * An emulation of the DECpc AXP/150 (code named Jensen), nearly identical
- * DEC 2000 Model 300 AXP, and DEC 2000 Model 500 AXP (code named Culzean).
- *
- * References:
- *
- * ftp://ftp.netbsd.org/pub/NetBSD/misc/dec-docs/ek-a0638-td.pdf.gz
- * http://www.decuslib.com/decus/vlt97a/everhart/jensen.info
- *
- * TODO
- * - everything (skeleton only)
- *
- */
-/*
- * WIP notes
- *
- * flash contains two compressed (deflate) blocks:
- *
- * block 0 offset 0x71c00 compressed 0x031737 decompressed 0x72800
- * block 1 offset 0xd2008 compressed 0x01c31b decompressed 0x47a00
- */
-#include "emu.h"
-
-#include "includes/jensen.h"
-#include "cpu/alpha/alphad.h"
-
-#include "debugger.h"
-
-#define VERBOSE 0
-#include "logmacro.h"
-
-void jensen_state::machine_start()
-{
-}
-
-void jensen_state::machine_reset()
-{
-}
-
-void jensen_state::init_common()
-{
- // map the configured ram
- m_cpu->space(0).install_ram(0x00000000, 0x00000000 | m_ram->mask(), m_ram->pointer());
-}
-
-void jensen_state::local_memory(address_map &map)
-{
- //map(0x00000000, 0x07ffffff); // valid range
-}
-
-void jensen_state::local_io(address_map &map)
-{
- map(0x00000000, 0x0000001f); // EISA INTA cycle
- map(0x80000000, 0x9fffffff).lr8("feprom0", [this](offs_t offset) { return m_feprom[0]->read(offset >> 9); });
- map(0xa0000000, 0xbfffffff).lr8("feprom1", [this](offs_t offset) { return m_feprom[1]->read(offset >> 9); });
-
- //map(0xc0000000, 0xc1ffffff); // vl82c106 bits 24:9 -> vlsi 15:0 i.e. >> 9
-
- map(0xd0000000, 0xd0000000).lrw8("hae", [this]() { return m_hae; }, [this](u8 data) { m_hae = data & 0x7f; });
- map(0xe0000000, 0xe0000000).lrw8("sysctl", [this]() { return m_sysctl; }, [this](u8 data) { m_sysctl = data; logerror("led %x\n", data & 0xf); });
- map(0xf0000000, 0xf0000000).lrw8("spare", [this]() { return m_spare; }, [this](u8 data) { m_spare = data; });
-}
-
-void jensen_state::eisa_memory(address_map &map)
-{
- map(0x00000000, 0xffffffff).lrw8("eisa_memory",
- [this](offs_t offset)
- {
- LOG("eisa_memory_r 0x%08x\n", (u32(m_hae) << 25) | (offset >> 7));
-
- return 0;
- },
- [this](offs_t offset, u8 data)
- {
- LOG("eisa_memory_w 0x%08x data 0x%02x\n", (u32(m_hae) << 25) | (offset >> 7), data);
- });
-}
-
-void jensen_state::eisa_io(address_map &map)
-{
- map(0x00000000, 0xffffffff).lrw8("eisa_io",
- [this](offs_t offset)
- {
- LOG("eisa_io_r offset 0x%08x address 0x%08x count %d (%s)\n", offset,
- (u32(m_hae) << 25) | (offset >> 7), (offset >> 5) & 3, machine().describe_context());
-
- return 0;
- },
- [this](offs_t offset, u8 data)
- {
- LOG("eisa_io_w offset 0x%08x address 0x%08x count %d data 0x%02x (%s)\n",
- offset, (u32(m_hae) << 25) | (offset >> 7), (offset >> 5) & 3, data, machine().describe_context());
- });
-}
-
-void jensen_state::jensen(machine_config &config)
-{
- DEC_21064(config, m_cpu, 300'000'000).set_clock_scale(0.5);
- m_cpu->set_dasm_type(alpha_disassembler::dasm_type::TYPE_NT);
- m_cpu->set_addrmap(0, &jensen_state::local_memory);
- m_cpu->set_addrmap(2, &jensen_state::local_io);
- m_cpu->set_addrmap(4, &jensen_state::eisa_memory);
- m_cpu->set_addrmap(6, &jensen_state::eisa_io);
- m_cpu->srom_oe_w().set(m_srom, FUNC(xc1765e_device::reset_w));
- m_cpu->srom_data_r().set(m_srom, FUNC(xc1765e_device::data_r));
-
- RAM(config, m_ram);
- m_ram->set_default_size("16M");
- m_ram->set_extra_options("32M,64M,80M,128M");
- m_ram->set_default_value(0);
-
- XC1765E(config, m_srom);
-
- // TODO: 1x1M + 1x256K flash?
- INTEL_E28F008SA(config, m_feprom[0]);
- INTEL_E28F008SA(config, m_feprom[1]);
-
- // pc keyboard connector
- pc_kbdc_device &kbdc(PC_KBDC(config, "pc_kbdc", 0));
- //kbdc.out_clock_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::kbd_clk_w));
- //kbdc.out_data_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::kbd_data_w));
-
- // keyboard port
- pc_kbdc_slot_device &kbd(PC_KBDC_SLOT(config, "kbd", 0));
- pc_at_keyboards(kbd);
- kbd.set_default_option(STR_KBD_MICROSOFT_NATURAL);
- kbd.set_pc_kbdc_slot(&kbdc);
-
- // TODO: VL82C106 (rtc, 2xserial, parallel, 2xps/2)
- // TODO: 18.432 MHz crystal
-#if 0
- rs232_port_device &com1(RS232_PORT(config, "com1", default_rs232_devices, nullptr));
- m_ace[0]->out_dtr_callback().set(serial0, FUNC(rs232_port_device::write_dtr));
- m_ace[0]->out_rts_callback().set(serial0, FUNC(rs232_port_device::write_rts));
- m_ace[0]->out_tx_callback().set(serial0, FUNC(rs232_port_device::write_txd));
- m_ace[0]->out_int_callback().set(m_mct_adr, FUNC(jazz_mct_adr_device::irq<8>));
-
- serial0.cts_handler().set(m_ace[0], FUNC(ns16550_device::cts_w));
- serial0.dcd_handler().set(m_ace[0], FUNC(ns16550_device::dcd_w));
- serial0.dsr_handler().set(m_ace[0], FUNC(ns16550_device::dsr_w));
- serial0.ri_handler().set(m_ace[0], FUNC(ns16550_device::ri_w));
- serial0.rxd_handler().set(m_ace[0], FUNC(ns16550_device::rx_w));
-
- rs232_port_device &com2(RS232_PORT(config, "com2", default_rs232_devices, nullptr));
- m_ace[1]->out_dtr_callback().set(serial1, FUNC(rs232_port_device::write_dtr));
- m_ace[1]->out_rts_callback().set(serial1, FUNC(rs232_port_device::write_rts));
- m_ace[1]->out_tx_callback().set(serial1, FUNC(rs232_port_device::write_txd));
- m_ace[1]->out_int_callback().set(m_mct_adr, FUNC(jazz_mct_adr_device::irq<9>));
-
- serial1.cts_handler().set(m_ace[1], FUNC(ns16550_device::cts_w));
- serial1.dcd_handler().set(m_ace[1], FUNC(ns16550_device::dcd_w));
- serial1.dsr_handler().set(m_ace[1], FUNC(ns16550_device::dsr_w));
- serial1.ri_handler().set(m_ace[1], FUNC(ns16550_device::ri_w));
- serial1.rxd_handler().set(m_ace[1], FUNC(ns16550_device::rx_w));
-
- PC_LPT(config, m_lpt, 0);
- m_lpt->irq_handler().set(m_mct_adr, FUNC(jazz_mct_adr_device::irq<0>));
-#endif
-
- I82357(config, m_isp, 14.318181_MHz_XTAL);
- m_isp->out_int_cb().set_inputline(m_cpu, INPUT_LINE_IRQ2);
- m_isp->out_nmi_cb().set_inputline(m_cpu, INPUT_LINE_IRQ3);
-
- // TODO: six EISA slots
-
- // DECpc AXP 150 usually fitted with:
- // 30-40383-01 Adaptec AHA-1742A (SCSI + floppy)
- // 30-40385-01 Compaq QVision 1024/E (1MB VGA)
-
- // Optional
- // DE422-SA Digital EISA Ethernet Controller (10 Mbps TP and BNC connectors)
-}
-
-void jensen_state::d2k300axp(machine_config &config)
-{
- jensen(config);
-}
-
-void jensen_state::d2k500axp(machine_config &config)
-{
- jensen(config);
-}
-
-void jensen_state::dpcaxp150(machine_config &config)
-{
- jensen(config);
-}
-
-ROM_START(d2k300axp)
- ROM_REGION32_LE(0x2000, "srom", 0)
- ROM_LOAD("srom.bin", 0x00000, 0x2000, NO_DUMP)
-
- ROM_REGION32_LE(0x100000, "feprom1", 0)
- ROM_SYSTEM_BIOS(0, "feprom", "")
- ROMX_LOAD("feprom1.bin", 0x00000, 0x100000, NO_DUMP, ROM_BIOS(0))
-ROM_END
-
-ROM_START(d2k500axp)
- ROM_REGION32_LE(0x2000, "srom", 0)
- ROM_LOAD("srom.bin", 0x00000, 0x2000, NO_DUMP)
-
- ROM_REGION32_LE(0x100000, "feprom1", 0)
- ROM_SYSTEM_BIOS(0, "feprom", "")
- ROMX_LOAD("feprom1.bin", 0x00000, 0x100000, NO_DUMP, ROM_BIOS(0))
-ROM_END
-
-ROM_START(dpcaxp150)
- /*
- * This region corresponds to the 8KiB Xilinx XC1765 serial prom which is
- * loaded into the Alpha primary instruction cache at reset. This dump is
- * stored least-significant bit first (which suits the way it's loaded by
- * the Alpha, and was the default treatment by the dumping device).
- */
- ROM_REGION32_LE(0x2000, "srom", 0)
- ROM_LOAD("005v2__ax06.bin", 0x00000, 0x2000, CRC(d017ea39) SHA1(4d2d11ac94adebe797e749f6ef1e1e523bd1e9f3))
-
- /*
- * This region corresponds to FEPROM1, the 1MiB Intel E28F008SA flash
- * memory. Documentation indicates FEPROM0 may be either 256KiB or 1MiB,
- * and may map to the unpopulated nearby PLCC socket. Some revisions of the
- * main board and the documentation indicate a SIMM of some kind rather
- * than directly mounted memory devices, but presumably have equivalent
- * sizes and content.
- */
- ROM_REGION32_LE(0x100000, "feprom1", 0)
-
- // source: dumped from physical board
- ROM_SYSTEM_BIOS(0, "v19", "Version 1.9, 22-JUN-1995")
- ROMX_LOAD("001z5__bl07.v19", 0x00000, 0x100000, CRC(26da3478) SHA1(baa7c92b01244aad84420268a06d04c6e2a30754), ROM_BIOS(0))
-
- // source: extracted from ftp://ftp.hp.com/pub/alphaserver/firmware/retired_platforms/alphapc/dec2000_axp150/
- ROM_SYSTEM_BIOS(1, "v22", "Version 2.2, 12-FEB-1996")
- ROMX_LOAD("001z5__bl07.v22", 0x00000, 0x100000, CRC(1edb9c98) SHA1(a45f0dde236e189a57afc1ed354201180ab2f234), ROM_BIOS(1))
-
- // source: extracted from https://archive.org/details/decpcaxp
- ROM_SYSTEM_BIOS(2, "v13", "Version 1.3, 10-JUN-1994")
- ROMX_LOAD("001z5__bl07.v13", 0x00000, 0x100000, CRC(8035f370) SHA1(2ebd75267ab7373d344efe44e700645ed31b44cd), ROM_BIOS(2))
-ROM_END
-
-/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1993, d2k300axp, 0, 0, d2k300axp, 0, jensen_state, init_common, "DEC", "DEC 2000 Model 300 AXP", MACHINE_IS_SKELETON)
-COMP( 1993, d2k500axp, 0, 0, d2k500axp, 0, jensen_state, init_common, "DEC", "DEC 2000 Model 500 AXP", MACHINE_IS_SKELETON)
-COMP( 1993, dpcaxp150, 0, 0, dpcaxp150, 0, jensen_state, init_common, "DEC", "DECpc AXP 150", MACHINE_IS_SKELETON)
diff --git a/src/mame/drivers/jeutel.cpp b/src/mame/drivers/jeutel.cpp
index 37877d8feb3..175737bc586 100644
--- a/src/mame/drivers/jeutel.cpp
+++ b/src/mame/drivers/jeutel.cpp
@@ -198,18 +198,15 @@ void jeutel_state::init_jeutel()
{
}
-void jeutel_state::jeutel(machine_config &config)
-{
+MACHINE_CONFIG_START(jeutel_state::jeutel)
/* basic machine hardware */
- Z80(config, m_maincpu, 3300000);
- m_maincpu->set_addrmap(AS_PROGRAM, &jeutel_state::jeutel_map);
-
- Z80(config, m_cpu2, 3300000);
- m_cpu2->set_addrmap(AS_PROGRAM, &jeutel_state::jeutel_cpu2);
-
- z80_device &cpu3(Z80(config, "cpu3", 3300000));
- cpu3.set_addrmap(AS_PROGRAM, &jeutel_state::jeutel_cpu3);
- cpu3.set_addrmap(AS_IO, &jeutel_state::jeutel_cpu3_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, 3300000)
+ MCFG_DEVICE_PROGRAM_MAP(jeutel_map)
+ MCFG_DEVICE_ADD("cpu2", Z80, 3300000)
+ MCFG_DEVICE_PROGRAM_MAP(jeutel_cpu2)
+ MCFG_DEVICE_ADD("cpu3", Z80, 3300000)
+ MCFG_DEVICE_PROGRAM_MAP(jeutel_cpu3)
+ MCFG_DEVICE_IO_MAP(jeutel_cpu3_io)
/* Video */
config.set_default_layout(layout_jeutel);
@@ -225,10 +222,10 @@ void jeutel_state::jeutel(machine_config &config)
aysnd.port_b_read_callback().set(FUNC(jeutel_state::portb_r));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.40);
- TMS5110A(config, m_tms, 640000);
- //m_tms->m0().set("tmsprom", FUNC(tmsprom_device::m0_w));
- //m_tms->data().set("tmsprom", FUNC(tmsprom_device::data_r));
- m_tms->add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("tms", TMS5110A, 640000)
+ //MCFG_TMS5110_M0_CB(WRITELINE("tmsprom", tmsprom_device, m0_w))
+ //MCFG_TMS5110_DATA_CB(READLINE("tmsprom", tmsprom_device, data_r))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
/* Devices */
i8255_device &ppi0(I8255A(config, "ppi8255_0"));
@@ -255,8 +252,8 @@ void jeutel_state::jeutel(machine_config &config)
//ppi2.in_pc_callback().set_ioport("EXTRA");
//ppi2.out_pc_callback().set(FUNC(jeutel_state::ppi2c_w));
- TIMER(config, "timer_a").configure_periodic(FUNC(jeutel_state::timer_a), attotime::from_hz(120));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_a", jeutel_state, timer_a, attotime::from_hz(120))
+MACHINE_CONFIG_END
/*--------------------------------
/ Le King
diff --git a/src/mame/drivers/joctronic.cpp b/src/mame/drivers/joctronic.cpp
index efe5ad48b18..5e681b158bd 100644
--- a/src/mame/drivers/joctronic.cpp
+++ b/src/mame/drivers/joctronic.cpp
@@ -335,17 +335,16 @@ void joctronic_state::machine_reset()
static INPUT_PORTS_START( joctronic )
INPUT_PORTS_END
-void joctronic_state::joctronic(machine_config &config)
-{
+MACHINE_CONFIG_START(joctronic_state::joctronic)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(12'000'000)/4); // 3 MHz - uses WAIT
m_maincpu->set_addrmap(AS_PROGRAM, &joctronic_state::maincpu_map); // 139
m_maincpu->set_addrmap(AS_IO, &joctronic_state::maincpu_io_map);
m_maincpu->set_daisy_config(daisy_chain);
- Z80(config, m_soundcpu, XTAL(12'000'000)/2); // 6 MHz - uses WAIT
- m_soundcpu->set_addrmap(AS_PROGRAM, &joctronic_state::joctronic_sound_map);
- m_soundcpu->set_addrmap(AS_IO, &joctronic_state::joctronic_sound_io_map);
+ MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/2) // 6 MHz - uses WAIT
+ MCFG_DEVICE_PROGRAM_MAP(joctronic_sound_map)
+ MCFG_DEVICE_IO_MAP(joctronic_sound_io_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 5516
@@ -358,10 +357,10 @@ void joctronic_state::joctronic(machine_config &config)
ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
ctc.zc_callback<0>().set_inputline(m_soundcpu, INPUT_LINE_IRQ0); //SINT
- LS259(config, "drivers1", 0); // IC4
- LS259(config, "drivers2", 0); // IC3
- LS259(config, "drivers3", 0); // IC2
- LS259(config, "drivers4", 0); // IC1
+ MCFG_DEVICE_ADD("drivers1", LS259, 0) // IC4
+ MCFG_DEVICE_ADD("drivers2", LS259, 0) // IC3
+ MCFG_DEVICE_ADD("drivers3", LS259, 0) // IC2
+ MCFG_DEVICE_ADD("drivers4", LS259, 0) // IC1
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -374,21 +373,23 @@ void joctronic_state::joctronic(machine_config &config)
AY8910(config, "aysnd2", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.40); // 1.5 MHz
- DAC_8BIT_R2R(config, "r2r1", 0).add_route(ALL_OUTPUTS, "mono", 0.30);
- DAC_8BIT_R2R(config, "r2r2", 0).add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+ MCFG_DEVICE_ADD("r2r1", DAC_8BIT_R2R, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
-void joctronic_state::slalom03(machine_config &config)
-{
+ MCFG_DEVICE_ADD("r2r2", DAC_8BIT_R2R, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(joctronic_state::slalom03)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(12'000'000)/2); // 6 MHz - uses WAIT
m_maincpu->set_addrmap(AS_PROGRAM, &joctronic_state::slalom03_maincpu_map); // 138, 368, 32
m_maincpu->set_addrmap(AS_IO, &joctronic_state::maincpu_io_map);
m_maincpu->set_daisy_config(daisy_chain);
- Z80(config, m_soundcpu, XTAL(12'000'000)/2); // 6 MHz - uses WAIT
- m_soundcpu->set_addrmap(AS_PROGRAM, &joctronic_state::slalom03_sound_map);
- m_soundcpu->set_addrmap(AS_IO, &joctronic_state::slalom03_sound_io_map);
+ MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/2) // 6 MHz - uses WAIT
+ MCFG_DEVICE_PROGRAM_MAP(slalom03_sound_map)
+ MCFG_DEVICE_IO_MAP(slalom03_sound_io_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 5516
@@ -401,12 +402,12 @@ void joctronic_state::slalom03(machine_config &config)
ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
//ctc.zc_callback<0>().set_inputline(m_soundcpu, INPUT_LINE_IRQ0); //SINT
- HC259(config, "drivers1", 0); // IC1
- HC259(config, "drivers2", 0); // IC2
- HC259(config, "drivers3", 0); // IC3
- HC259(config, "drivers4", 0); // IC4
- HC259(config, "drivers5", 0); // IC5
- HC259(config, "drivers6", 0); // IC6
+ MCFG_DEVICE_ADD("drivers1", HC259, 0) // IC1
+ MCFG_DEVICE_ADD("drivers2", HC259, 0) // IC2
+ MCFG_DEVICE_ADD("drivers3", HC259, 0) // IC3
+ MCFG_DEVICE_ADD("drivers4", HC259, 0) // IC4
+ MCFG_DEVICE_ADD("drivers5", HC259, 0) // IC5
+ MCFG_DEVICE_ADD("drivers6", HC259, 0) // IC6
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -420,16 +421,17 @@ void joctronic_state::slalom03(machine_config &config)
aysnd2.port_a_write_callback().set("r2r", FUNC(dac_8bit_r2r_device::data_w));
aysnd2.add_route(ALL_OUTPUTS, "mono", 0.40);
- DAC_8BIT_R2R(config, "r2r", 0).add_route(ALL_OUTPUTS, "mono", 0.30);
+ MCFG_DEVICE_ADD("r2r", DAC_8BIT_R2R, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
LS157(config, m_adpcm_select, 0);
m_adpcm_select->out_callback().set("oki", FUNC(msm5205_device::data_w));
- MSM5205(config, m_oki, XTAL(12'000'000)/2/16); // 375 kHz
- m_oki->vck_callback().set(FUNC(joctronic_state::vck_w));
- m_oki->set_prescaler_selector(msm5205_device::S96_4B); // frequency modifiable during operation
- m_oki->add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+ MCFG_DEVICE_ADD("oki", MSM5205, XTAL(12'000'000)/2/16) // 375 kHz
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) // frequency modifiable during operation
+ MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, joctronic_state, vck_w))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
void joctronic_state::bldyrolr(machine_config & config)
{
diff --git a/src/mame/drivers/jokrwild.cpp b/src/mame/drivers/jokrwild.cpp
index 8e22e948f24..38c53c9fbe6 100644
--- a/src/mame/drivers/jokrwild.cpp
+++ b/src/mame/drivers/jokrwild.cpp
@@ -413,11 +413,11 @@ WRITE8_MEMBER(jokrwild_state::testb_w)
* Machine Drivers *
*************************/
-void jokrwild_state::jokrwild(machine_config &config)
-{
+MACHINE_CONFIG_START(jokrwild_state::jokrwild)
+
/* basic machine hardware */
- M6809(config, m_maincpu, MASTER_CLOCK/2); /* guess */
- m_maincpu->set_addrmap(AS_PROGRAM, &jokrwild_state::jokrwild_map);
+ MCFG_DEVICE_ADD("maincpu", M6809, MASTER_CLOCK/2) /* guess */
+ MCFG_DEVICE_PROGRAM_MAP(jokrwild_map)
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -432,13 +432,13 @@ void jokrwild_state::jokrwild(machine_config &config)
pia1.readpb_handler().set_ioport("IN3");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size((32+1)*8, (32+1)*8); // From MC6845, registers 00 & 04. (value-1)
- screen.set_visarea(0*8, 24*8-1, 0*8, 26*8-1); // From MC6845, registers 01 & 06.
- screen.set_screen_update(FUNC(jokrwild_state::screen_update_jokrwild));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE((32+1)*8, (32+1)*8) // From MC6845, registers 00 & 04. (value-1)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 24*8-1, 0*8, 26*8-1) // From MC6845, registers 01 & 06.
+ MCFG_SCREEN_UPDATE_DRIVER(jokrwild_state, screen_update_jokrwild)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_jokrwild);
PALETTE(config, "palette", FUNC(jokrwild_state::jokrwild_palette), 512);
@@ -448,7 +448,8 @@ void jokrwild_state::jokrwild(machine_config &config)
crtc.set_show_border_area(false);
crtc.set_char_width(8);
crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
-}
+
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/jollyjgr.cpp b/src/mame/drivers/jollyjgr.cpp
index f745cad2888..7fddc2e98e5 100644
--- a/src/mame/drivers/jollyjgr.cpp
+++ b/src/mame/drivers/jollyjgr.cpp
@@ -676,20 +676,19 @@ void jollyjgr_state::machine_reset()
m_tilemap_bank = 0;
}
-void jollyjgr_state::jollyjgr(machine_config &config)
-{
+MACHINE_CONFIG_START(jollyjgr_state::jollyjgr)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'000'000)/6); /* 3MHz verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &jollyjgr_state::jollyjgr_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'000'000)/6) /* 3MHz verified */
+ MCFG_DEVICE_PROGRAM_MAP(jollyjgr_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.18); /* 59.1864Hz measured */
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(jollyjgr_state::screen_update_jollyjgr));
- screen.screen_vblank().set(FUNC(jollyjgr_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.18) /* 59.1864Hz measured */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(jollyjgr_state, screen_update_jollyjgr)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, jollyjgr_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_jollyjgr);
PALETTE(config, m_palette, FUNC(jollyjgr_state::jollyjgr_palette), 32); // tilemap and sprites
@@ -699,15 +698,16 @@ void jollyjgr_state::jollyjgr(machine_config &config)
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd", XTAL(3'579'545)/2).add_route(ALL_OUTPUTS, "mono", 0.45); /* 1.7897725MHz verified */
-}
+MACHINE_CONFIG_END
-void jollyjgr_state::fspider(machine_config &config)
-{
+MACHINE_CONFIG_START(jollyjgr_state::fspider)
jollyjgr(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &jollyjgr_state::fspider_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(fspider_map)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(jollyjgr_state::screen_update_fspider));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(jollyjgr_state, screen_update_fspider)
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/jongkyo.cpp b/src/mame/drivers/jongkyo.cpp
index 402fa56e677..e8286ef38c3 100644
--- a/src/mame/drivers/jongkyo.cpp
+++ b/src/mame/drivers/jongkyo.cpp
@@ -508,8 +508,8 @@ void jongkyo_state::machine_reset()
}
-void jongkyo_state::jongkyo(machine_config &config)
-{
+MACHINE_CONFIG_START(jongkyo_state::jongkyo)
+
/* basic machine hardware */
sega_315_5084_device &maincpu(SEGA_315_5084(config, m_maincpu, JONGKYO_CLOCK/4));
maincpu.set_addrmap(AS_PROGRAM, &jongkyo_state::jongkyo_memmap);
@@ -522,13 +522,13 @@ void jongkyo_state::jongkyo(machine_config &config)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 8, 256-8-1);
- screen.set_screen_update(FUNC(jongkyo_state::screen_update_jongkyo));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 8, 256-8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(jongkyo_state, screen_update_jongkyo)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(jongkyo_state::jongkyo_palette), 0x100);
@@ -537,7 +537,7 @@ void jongkyo_state::jongkyo(machine_config &config)
aysnd.port_a_read_callback().set(FUNC(jongkyo_state::input_1p_r));
aysnd.port_b_read_callback().set(FUNC(jongkyo_state::input_2p_r));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.33);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jonos.cpp b/src/mame/drivers/jonos.cpp
index 92a767ec09d..f48a6981af2 100644
--- a/src/mame/drivers/jonos.cpp
+++ b/src/mame/drivers/jonos.cpp
@@ -175,27 +175,26 @@ static GFXDECODE_START( gfx_jonos )
GFXDECODE_END
-void jonos_state::jonos(machine_config &config)
-{
+MACHINE_CONFIG_START(jonos_state::jonos)
/* basic machine hardware */
- I8085A(config, m_maincpu, XTAL(16'000'000) / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &jonos_state::jonos_mem);
+ MCFG_DEVICE_ADD("maincpu", I8085A, XTAL(16'000'000) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(jonos_mem)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(jonos_state::screen_update));
- screen.set_size(640, 288);
- screen.set_visarea(0, 639, 0, 287);
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_jonos);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(jonos_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 288)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 287)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_jonos)
PALETTE(config, "palette", palette_device::MONOCHROME);
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
keyboard.set_keyboard_callback(FUNC(jonos_state::kbd_put));
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/joystand.cpp b/src/mame/drivers/joystand.cpp
index 2d6544d7069..900f3ccb810 100644
--- a/src/mame/drivers/joystand.cpp
+++ b/src/mame/drivers/joystand.cpp
@@ -106,6 +106,7 @@ public:
joystand_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
+ m_tmp68301(*this, "tmp68301"),
m_palette(*this, "palette"),
m_bg15_palette(*this, "bg15_palette"),
m_gfxdecode(*this, "gfxdecode"),
@@ -141,7 +142,8 @@ protected:
private:
// devices
- required_device<tmp68301_device> m_maincpu;
+ required_device<cpu_device> m_maincpu;
+ required_device<tmp68301_device> m_tmp68301;
required_device<palette_device> m_palette;
required_device<palette_device> m_bg15_palette;
required_device<gfxdecode_device> m_gfxdecode;
@@ -432,7 +434,7 @@ READ16_MEMBER(joystand_state::cart_r)
{
int which = offset / 0x80000;
int addr = offset & 0x7ffff;
- return (m_cart_flash[which * 2 + 0]->read(addr) << 8) | m_cart_flash[which * 2 + 1]->read(addr);
+ return (m_cart_flash[which * 2 + 0]->read(space, addr) << 8) | m_cart_flash[which * 2 + 1]->read(space, addr);
}
WRITE16_MEMBER(joystand_state::cart_w)
@@ -441,9 +443,9 @@ WRITE16_MEMBER(joystand_state::cart_w)
int addr = offset & 0x7ffff;
if (ACCESSING_BITS_0_7)
- m_cart_flash[which * 2 + 1]->write(addr, data & 0xff);
+ m_cart_flash[which * 2 + 1]->write(space, addr, data & 0xff);
if (ACCESSING_BITS_8_15)
- m_cart_flash[which * 2 + 0]->write(addr, data >> 8);
+ m_cart_flash[which * 2 + 0]->write(space, addr, data >> 8);
bg15_tiles_dirty = true;
}
@@ -477,6 +479,8 @@ void joystand_state::joystand_map(address_map &map)
map(0xe00020, 0xe00021).r(FUNC(joystand_state::e00020_r)); // master slot
map(0xe80040, 0xe8005f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff);
+
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -580,24 +584,28 @@ void joystand_state::machine_reset()
INTERRUPT_GEN_MEMBER(joystand_state::joystand_interrupt)
{
// VBlank is connected to INT1 (external interrupts pin 1)
- m_maincpu->external_interrupt_1();
+ m_tmp68301->external_interrupt_1();
}
-void joystand_state::joystand(machine_config &config)
-{
+MACHINE_CONFIG_START(joystand_state::joystand)
+
// basic machine hardware
- TMP68301(config, m_maincpu, XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &joystand_state::joystand_map);
- m_maincpu->set_vblank_int("screen", FUNC(joystand_state::joystand_interrupt));
- m_maincpu->in_parallel_callback().set(FUNC(joystand_state::eeprom_r));
- m_maincpu->out_parallel_callback().set(FUNC(joystand_state::eeprom_w));
+ MCFG_DEVICE_ADD(m_maincpu, M68000, XTAL(16'000'000)) // !! TMP68301 !!
+ MCFG_DEVICE_PROGRAM_MAP(joystand_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", joystand_state, joystand_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("tmp68301",tmp68301_device,irq_callback)
+
+ TMP68301(config, m_tmp68301, 0);
+ m_tmp68301->set_cputag(m_maincpu);
+ m_tmp68301->in_parallel_callback().set(FUNC(joystand_state::eeprom_r));
+ m_tmp68301->out_parallel_callback().set(FUNC(joystand_state::eeprom_w));
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_screen_update(FUNC(joystand_state::screen_update));
- screen.set_size(0x200, 0x100);
- screen.set_visarea(0x40, 0x40+0x178-1, 0x10, 0x100-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_UPDATE_DRIVER(joystand_state, screen_update)
+ MCFG_SCREEN_SIZE(0x200, 0x100)
+ MCFG_SCREEN_VISIBLE_AREA(0x40, 0x40+0x178-1, 0x10, 0x100-1)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1000);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_joystand);
@@ -607,9 +615,11 @@ void joystand_state::joystand(machine_config &config)
// sound hardware
SPEAKER(config, "mono").front_center();
- YM2413(config, "ym2413", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("ym2413", YM2413, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
- OKIM6295(config, m_oki, XTAL(16'000'000) / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.50); // pin 7 not verified
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000) / 16, okim6295_device::PIN7_HIGH) // pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
// cart
TMS_29F040(config, "cart.u1");
@@ -627,8 +637,8 @@ void joystand_state::joystand(machine_config &config)
// devices
EEPROM_93C46_16BIT(config, "eeprom");
- MSM6242(config, "rtc", XTAL(32'768));
-}
+ MCFG_DEVICE_ADD("rtc", MSM6242, XTAL(32'768))
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/jp.cpp b/src/mame/drivers/jp.cpp
index 9a2b4d8ce82..249c23bc588 100644
--- a/src/mame/drivers/jp.cpp
+++ b/src/mame/drivers/jp.cpp
@@ -332,13 +332,11 @@ void jp_state::machine_reset()
m_digits[99] = 0x3f;
}
-void jp_state::jp(machine_config &config)
-
-{
+MACHINE_CONFIG_START(jp_state::jp)
/* basic machine hardware */
- Z80(config, m_maincpu, 8_MHz_XTAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &jp_state::jp_map);
- m_maincpu->set_periodic_int(FUNC(jp_state::irq0_line_hold), attotime::from_hz(8_MHz_XTAL / 8192)); // 4020 divider
+ MCFG_DEVICE_ADD("maincpu", Z80, 8_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(jp_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(jp_state, irq0_line_hold, 8_MHz_XTAL / 8192) // 4020 divider
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -380,7 +378,7 @@ void jp_state::jp(machine_config &config)
ay.port_a_read_callback().set(FUNC(jp_state::porta_r));
ay.port_b_read_callback().set(FUNC(jp_state::portb_r));
ay.add_route(ALL_OUTPUTS, "ayvol", 0.9);
-}
+MACHINE_CONFIG_END
WRITE8_MEMBER(jp_state::sample_bank_w)
{
@@ -409,24 +407,23 @@ IRQ_CALLBACK_MEMBER(jp_state::sound_int_cb)
return 0xff;
}
-void jp_state::jps(machine_config &config)
-{
+MACHINE_CONFIG_START(jp_state::jps)
jp(config);
- Z80(config, m_soundcpu, 8_MHz_XTAL / 2);
- m_soundcpu->set_addrmap(AS_PROGRAM, &jp_state::jp_sound_map);
- m_soundcpu->set_irq_acknowledge_callback(FUNC(jp_state::sound_int_cb));
+ MCFG_DEVICE_ADD("soundcpu", Z80, 8_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(jp_sound_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(jp_state, sound_int_cb)
LS157(config, m_adpcm_select, 0); // not labeled in manual; might even be a CD4019
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
SPEAKER(config, "msmvol").front_center();
- MSM5205(config, m_msm, 384'000); // not labeled in manual; clock unknown
- m_msm->vck_callback().set(FUNC(jp_state::vck_w));
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); // unknown
- m_msm->add_route(ALL_OUTPUTS, "msmvol", 1.0);
+ MCFG_DEVICE_ADD("msm", MSM5205, 384'000) // not labeled in manual; clock unknown
+ MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, jp_state, vck_w))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) // unknown
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msmvol", 1.0)
m_latch[9]->q_out_cb<5>().set_inputline("soundcpu", INPUT_LINE_NMI); // only external input for sound board
-}
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
/ America 1492 #1107
diff --git a/src/mame/drivers/jpmimpct.cpp b/src/mame/drivers/jpmimpct.cpp
index 6db9c4aa5f5..aa374ed298c 100644
--- a/src/mame/drivers/jpmimpct.cpp
+++ b/src/mame/drivers/jpmimpct.cpp
@@ -662,6 +662,7 @@ void jpmimpct_state::tms_program_map(address_map &map)
// AM_RANGE(0x01000000, 0x0100003f) AM_MIRROR(0xf87fffc0) AM_READWRITE(jpmimpct_bt477_r, jpmimpct_bt477_w)
map(0x01000000, 0x017fffff).mirror(0xf8000000).mask(0x1f).rw(FUNC(jpmimpct_state::jpmimpct_bt477_r), FUNC(jpmimpct_state::jpmimpct_bt477_w));
map(0x07800000, 0x07bfffff).mirror(0xf8400000).ram();
+ map(0xc0000000, 0xc00001ff).rw(m_dsp, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
}
@@ -838,10 +839,9 @@ WRITE_LINE_MEMBER(jpmimpct_state::tms_irq)
*
*************************************/
-void jpmimpct_state::jpmimpct(machine_config &config)
-{
- M68000(config, m_maincpu, 8000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &jpmimpct_state::m68k_program_map);
+MACHINE_CONFIG_START(jpmimpct_state::jpmimpct)
+ MCFG_DEVICE_ADD("maincpu", M68000, 8000000)
+ MCFG_DEVICE_PROGRAM_MAP(m68k_program_map)
TMS34010(config, m_dsp, 40000000);
m_dsp->set_addrmap(AS_PROGRAM, &jpmimpct_state::tms_program_map);
@@ -853,25 +853,27 @@ void jpmimpct_state::jpmimpct(machine_config &config)
m_dsp->set_shiftreg_in_callback(FUNC(jpmimpct_state::to_shiftreg));
m_dsp->set_shiftreg_out_callback(FUNC(jpmimpct_state::from_shiftreg));
- config.m_minimum_quantum = attotime::from_hz(30000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(30000))
MCFG_MACHINE_START_OVERRIDE(jpmimpct_state,jpmimpct)
MCFG_MACHINE_RESET_OVERRIDE(jpmimpct_state,jpmimpct)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TIMER(config, m_duart_1_timer).configure_generic(FUNC(jpmimpct_state::duart_1_timer_event));
+ MCFG_TIMER_DRIVER_ADD("duart_1_timer", jpmimpct_state, duart_1_timer_event)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(40000000/4, 156*4, 0, 100*4, 328, 0, 300);
- screen.set_screen_update("dsp", FUNC(tms34010_device::tms340x0_rgb32));
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(40000000/4, 156*4, 0, 100*4, 328, 0, 300)
+ MCFG_SCREEN_UPDATE_DEVICE("dsp", tms34010_device, tms340x0_rgb32)
+ MCFG_PALETTE_ADD("palette", 256)
SPEAKER(config, "mono").front_center();
- UPD7759(config, m_upd7759).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("upd", UPD7759)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_VIDEO_START_OVERRIDE(jpmimpct_state,jpmimpct)
- METERS(config, m_meters, 0).set_number(5);
-}
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(5)
+MACHINE_CONFIG_END
@@ -1309,12 +1311,11 @@ INPUT_PORTS_END
*
*************************************/
-void jpmimpct_state::impctawp(machine_config &config)
-{
- M68000(config, m_maincpu, 8000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &jpmimpct_state::awp68k_program_map);
+MACHINE_CONFIG_START(jpmimpct_state::impctawp)
+ MCFG_DEVICE_ADD("maincpu",M68000, 8000000)
+ MCFG_DEVICE_PROGRAM_MAP(awp68k_program_map)
- config.m_minimum_quantum = attotime::from_hz(30000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(30000))
S16LF01(config, m_vfd);
MCFG_MACHINE_START_OVERRIDE(jpmimpct_state,impctawp)
@@ -1327,11 +1328,11 @@ void jpmimpct_state::impctawp(machine_config &config)
ppi.in_pc_callback().set(FUNC(jpmimpct_state::hopper_c_r));
ppi.out_pc_callback().set(FUNC(jpmimpct_state::display_c_w));
- TIMER(config, m_duart_1_timer).configure_generic(FUNC(jpmimpct_state::duart_1_timer_event));
+ MCFG_TIMER_DRIVER_ADD("duart_1_timer", jpmimpct_state, duart_1_timer_event)
SPEAKER(config, "mono").front_center();
- UPD7759(config, m_upd7759).add_route(ALL_OUTPUTS, "mono", 0.50);
-
+ MCFG_DEVICE_ADD("upd",UPD7759)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
config.set_default_layout(layout_jpmimpct);
REEL(config, m_reel[0], STARPOINT_48STEP_REEL, 1, 3, 0x09, 4);
@@ -1347,8 +1348,11 @@ void jpmimpct_state::impctawp(machine_config &config)
REEL(config, m_reel[5], STARPOINT_48STEP_REEL, 1, 3, 0x09, 4);
m_reel[5]->optic_handler().set(FUNC(jpmimpct_state::reel_optic_cb<5>));
- METERS(config, m_meters, 0).set_number(5);
-}
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(5)
+
+MACHINE_CONFIG_END
+
/*************************************
diff --git a/src/mame/drivers/jpmmps.cpp b/src/mame/drivers/jpmmps.cpp
index c2f759d8a91..80ec4239389 100644
--- a/src/mame/drivers/jpmmps.cpp
+++ b/src/mame/drivers/jpmmps.cpp
@@ -184,19 +184,19 @@ void jpmmps_state::jpmmps_map(address_map &map)
void jpmmps_state::jpmmps_io_map(address_map &map)
{
- map.global_mask(0x1ff);
- map(0x0000, 0x003f).rw(UART_IC5, FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite));
+ map.global_mask(0xff);
+ map(0x0000, 0x001f).rw(UART_IC5, FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite));
-// AM_RANGE(0x0040, 0x0041) // power fail
-// AM_RANGE(0x0042, 0x0043) // wd timeout
-// AM_RANGE(0x0044, 0x0045) // invalid access
-// AM_RANGE(0x0046, 0x0047) // clear down
+// AM_RANGE(0x0020, 0x0020) // power fail
+// AM_RANGE(0x0021, 0x0021) // wd timeout
+// AM_RANGE(0x0022, 0x0022) // invalid access
+// AM_RANGE(0x0023, 0x0023) // clear down
-// AM_RANGE(0x004c, 0x004d) // uart4 int
-// AM_RANGE(0x004e, 0x004f) // uart2 int
+// AM_RANGE(0x0026, 0x0026) // uart4 int
+// AM_RANGE(0x0027, 0x0027) // uart2 int
- map(0x0080, 0x00bf).rw(UART_IC10, FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite));
- map(0x00c0, 0x00cf).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x0040, 0x005f).rw(UART_IC10, FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite));
+ map(0x0060, 0x0067).w("mainlatch", FUNC(ls259_device::write_d0));
}
@@ -248,8 +248,8 @@ void jpmmps_state::machine_reset()
m_maincpu->reset_line(ASSERT_LINE);
}
-void jpmmps_state::jpmmps(machine_config &config)
-{
+MACHINE_CONFIG_START(jpmmps_state::jpmmps)
+
// CPU TMS9995, standard variant; no line connections
TMS9995(config, m_maincpu, MAIN_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &jpmmps_state::jpmmps_map);
@@ -284,13 +284,14 @@ void jpmmps_state::jpmmps(machine_config &config)
SPEAKER(config, "mono").front_center();
- SN76489(config, m_psg, SOUND_CLOCK);
- m_psg->add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("sn", SN76489, SOUND_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
- METERS(config, m_meters, 0).set_number(9); // TODO: meters.cpp sets a max of 8
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(9) // TODO: meters.cpp sets a max of 8
config.set_default_layout(layout_jpmmps);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jpms80.cpp b/src/mame/drivers/jpms80.cpp
index 79092705dd5..718f91c464e 100644
--- a/src/mame/drivers/jpms80.cpp
+++ b/src/mame/drivers/jpms80.cpp
@@ -101,21 +101,21 @@ void jpms80_state::jpms80_map(address_map &map)
void jpms80_state::jpms80_io_map(address_map &map)
{
- map.global_mask(0x3ff);
+ map.global_mask(0x1ff);
// AM_RANGE(0x0000, 0x001f) // I/O & Optic (in)
- map(0x0000, 0x000f).w("outlatch0", FUNC(ls259_device::write_d0));
- map(0x0010, 0x001f).w("outlatch1", FUNC(ls259_device::write_d0));
- map(0x0020, 0x002f).w("outlatch2", FUNC(ls259_device::write_d0));
- map(0x0030, 0x003f).w("outlatch3", FUNC(ls259_device::write_d0));
- map(0x0040, 0x004f).w("outlatch4", FUNC(ls259_device::write_d0));
- map(0x0050, 0x005f).w("outlatch5", FUNC(ls259_device::write_d0));
- map(0x0060, 0x006f).w("outlatch6", FUNC(ls259_device::write_d0));
- map(0x0070, 0x007f).w("outlatch7", FUNC(ls259_device::write_d0));
- map(0x0080, 0x008f).w("outlatch8", FUNC(ls259_device::write_d0));
- map(0x0090, 0x009f).w("outlatch9", FUNC(ls259_device::write_d0));
- map(0x00a0, 0x00af).w("outlatch10", FUNC(ls259_device::write_d0));
-// AM_RANGE(0x0380, 0x03bf) // AY
- map(0x03c0, 0x03ff).rw(m_acc, FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite));
+ map(0x0000, 0x0007).w("outlatch0", FUNC(ls259_device::write_d0));
+ map(0x0008, 0x000f).w("outlatch1", FUNC(ls259_device::write_d0));
+ map(0x0010, 0x0017).w("outlatch2", FUNC(ls259_device::write_d0));
+ map(0x0018, 0x001f).w("outlatch3", FUNC(ls259_device::write_d0));
+ map(0x0020, 0x0027).w("outlatch4", FUNC(ls259_device::write_d0));
+ map(0x0028, 0x002f).w("outlatch5", FUNC(ls259_device::write_d0));
+ map(0x0030, 0x0037).w("outlatch6", FUNC(ls259_device::write_d0));
+ map(0x0038, 0x003f).w("outlatch7", FUNC(ls259_device::write_d0));
+ map(0x0040, 0x0047).w("outlatch8", FUNC(ls259_device::write_d0));
+ map(0x0048, 0x004f).w("outlatch9", FUNC(ls259_device::write_d0));
+ map(0x0050, 0x0057).w("outlatch10", FUNC(ls259_device::write_d0));
+// AM_RANGE(0x0140, 0x015f) // AY
+ map(0x01e0, 0x01ff).rw(m_acc, FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite));
// Lamps, Meters etc. can move around
}
diff --git a/src/mame/drivers/jpmsru.cpp b/src/mame/drivers/jpmsru.cpp
index ca601ce3439..6bff4e4c61f 100644
--- a/src/mame/drivers/jpmsru.cpp
+++ b/src/mame/drivers/jpmsru.cpp
@@ -73,19 +73,17 @@ void jpmsru_state::jpmsru_io(address_map &map)
static INPUT_PORTS_START( jpmsru )
INPUT_PORTS_END
-void jpmsru_state::jpmsru(machine_config &config)
-{
+MACHINE_CONFIG_START(jpmsru_state::jpmsru)
TMS9980A(config, m_maincpu, MAIN_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &jpmsru_state::jpmsru_map);
m_maincpu->set_addrmap(AS_IO, &jpmsru_state::jpmsru_io);
-}
+MACHINE_CONFIG_END
-void jpmsru_state::jpmsru_4(machine_config &config)
-{
+MACHINE_CONFIG_START(jpmsru_state::jpmsru_4)
TMS9980A(config, m_maincpu, MAIN_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &jpmsru_state::jpmsru_4_map);
m_maincpu->set_addrmap(AS_IO, &jpmsru_state::jpmsru_io);
-}
+MACHINE_CONFIG_END
void jpmsru_state::init_jpmsru()
{
diff --git a/src/mame/drivers/jpmsys5.cpp b/src/mame/drivers/jpmsys5.cpp
index 0909664ab42..ffc85d91c77 100644
--- a/src/mame/drivers/jpmsys5.cpp
+++ b/src/mame/drivers/jpmsys5.cpp
@@ -91,10 +91,10 @@ WRITE16_MEMBER(jpmsys5v_state::sys5_tms34061_w)
}
if (ACCESSING_BITS_8_15)
- m_tms34061->write(col, row, func, data >> 8);
+ m_tms34061->write(space, col, row, func, data >> 8);
if (ACCESSING_BITS_0_7)
- m_tms34061->write(col | 1, row, func, data & 0xff);
+ m_tms34061->write(space, col | 1, row, func, data & 0xff);
}
READ16_MEMBER(jpmsys5v_state::sys5_tms34061_r)
@@ -115,10 +115,10 @@ READ16_MEMBER(jpmsys5v_state::sys5_tms34061_r)
}
if (ACCESSING_BITS_8_15)
- data |= m_tms34061->read(col, row, func) << 8;
+ data |= m_tms34061->read(space, col, row, func) << 8;
if (ACCESSING_BITS_0_7)
- data |= m_tms34061->read(col | 1, row, func);
+ data |= m_tms34061->read(space, col | 1, row, func);
return data;
}
@@ -583,8 +583,7 @@ void jpmsys5v_state::machine_reset()
*
*************************************/
-void jpmsys5v_state::jpmsys5v(machine_config &config)
-{
+MACHINE_CONFIG_START(jpmsys5v_state::jpmsys5v)
M68000(config, m_maincpu, 8_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &jpmsys5v_state::m68000_map);
@@ -614,23 +613,25 @@ void jpmsys5v_state::jpmsys5v(machine_config &config)
S16LF01(config, m_vfd); //for debug ports
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(40'000'000) / 4, 676, 20*4, 147*4, 256, 0, 254);
- screen.set_screen_update(FUNC(jpmsys5v_state::screen_update_jpmsys5v));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(40'000'000) / 4, 676, 20*4, 147*4, 256, 0, 254)
+ MCFG_SCREEN_UPDATE_DRIVER(jpmsys5v_state, screen_update_jpmsys5v)
- TMS34061(config, m_tms34061, 0);
- m_tms34061->set_rowshift(8); /* VRAM address is (row << rowshift) | col */
- m_tms34061->set_vram_size(0x40000);
- m_tms34061->int_callback().set(FUNC(jpmsys5v_state::generate_tms34061_interrupt));
+ MCFG_DEVICE_ADD("tms34061", TMS34061, 0)
+ MCFG_TMS34061_ROWSHIFT(8) /* VRAM address is (row << rowshift) | col */
+ MCFG_TMS34061_VRAM_SIZE(0x40000) /* size of video RAM */
+ MCFG_TMS34061_INTERRUPT_CB(WRITELINE(*this, jpmsys5v_state, generate_tms34061_interrupt)) /* interrupt gen callback */
- PALETTE(config, "palette").set_entries(16);
+ MCFG_PALETTE_ADD("palette", 16)
SPEAKER(config, "mono").front_center();
- UPD7759(config, m_upd7759).add_route(ALL_OUTPUTS, "mono", 0.30);
+ MCFG_DEVICE_ADD("upd7759", UPD7759)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
/* Earlier revisions use an SAA1099, but no video card games seem to (?) */
- YM2413(config, "ym2413", 4000000).add_route(ALL_OUTPUTS, "mono", 1.00); /* Unconfirmed */
+ MCFG_DEVICE_ADD("ym2413", YM2413, 4000000 ) /* Unconfirmed */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
pia6821_device &pia(PIA6821(config, "6821pia", 0));
pia.readpa_handler().set(FUNC(jpmsys5v_state::u29_porta_r));
@@ -645,7 +646,7 @@ void jpmsys5v_state::jpmsys5v(machine_config &config)
ptm.set_external_clocks(0, 0, 0);
ptm.o1_callback().set(FUNC(jpmsys5v_state::u26_o1_callback));
ptm.irq_callback().set(FUNC(jpmsys5v_state::ptm_irq));
-}
+MACHINE_CONFIG_END
READ16_MEMBER(jpmsys5_state::mux_awp_r)
{
@@ -857,7 +858,7 @@ void jpmsys5_state::jpmsys5_ym(machine_config &config)
ptm.irq_callback().set(FUNC(jpmsys5_state::ptm_irq));
config.set_default_layout(layout_jpmsys5);
- METERS(config, m_meters, 0).set_number(8);
+ METERS(config, m_meters, 0).set_number_meters(8);
}
// the first rev PCB used an SAA1099
@@ -913,7 +914,7 @@ void jpmsys5_state::jpmsys5(machine_config &config)
ptm.irq_callback().set(FUNC(jpmsys5_state::ptm_irq));
config.set_default_layout(layout_jpmsys5);
- METERS(config, m_meters, 0).set_number(8);
+ METERS(config, m_meters, 0).set_number_meters(8);
}
/*************************************
diff --git a/src/mame/drivers/jpmsys7.cpp b/src/mame/drivers/jpmsys7.cpp
index 2702f1fc070..3e522cc34c1 100644
--- a/src/mame/drivers/jpmsys7.cpp
+++ b/src/mame/drivers/jpmsys7.cpp
@@ -56,16 +56,15 @@ void jpmsys7_state::jpmsys7_map(address_map &map)
static INPUT_PORTS_START( jpmsys7 )
INPUT_PORTS_END
-void jpmsys7_state::jpmsys7(machine_config &config)
-{
- MCF5206E(config, m_maincpu, 40000000); // seems to be a Coldfire of some kind
- m_maincpu->set_addrmap(AS_PROGRAM, &jpmsys7_state::jpmsys7_map);
- MCF5206E_PERIPHERAL(config, "maincpu_onboard", 0);
+MACHINE_CONFIG_START(jpmsys7_state::jpmsys7)
+ MCFG_DEVICE_ADD("maincpu", MCF5206E, 40000000) // seems to be a Coldfire of some kind
+ MCFG_DEVICE_PROGRAM_MAP(jpmsys7_map)
+ MCFG_MCF5206E_PERIPHERAL_ADD("maincpu_onboard")
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
/* unknown sound (probably DMA driven DAC) */
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jr100.cpp b/src/mame/drivers/jr100.cpp
index 17c691f24ba..3235e60ceb6 100644
--- a/src/mame/drivers/jr100.cpp
+++ b/src/mame/drivers/jr100.cpp
@@ -409,8 +409,8 @@ void jr100_state::jr100(machine_config &config)
m_cassette->set_default_state((cassette_state)(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED));
/* quickload */
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(jr100_state, jr100), this), "prg", attotime::from_seconds(2));
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(jr100_state, jr100), this), "prg", 2);
}
diff --git a/src/mame/drivers/jr200.cpp b/src/mame/drivers/jr200.cpp
index 4228a4fdd41..364b76c4111 100644
--- a/src/mame/drivers/jr200.cpp
+++ b/src/mame/drivers/jr200.cpp
@@ -539,32 +539,32 @@ void jr200_state::machine_reset()
}
-void jr200_state::jr200(machine_config &config)
-{
+MACHINE_CONFIG_START(jr200_state::jr200)
/* basic machine hardware */
- M6802(config, m_maincpu, XTAL(14'318'181) / 4); /* MN1800A, ? MHz assumption that it is same as JR-100*/
- m_maincpu->set_addrmap(AS_PROGRAM, &jr200_state::jr200_mem);
+ MCFG_DEVICE_ADD("maincpu", M6802, XTAL(14'318'181) / 4) /* MN1800A, ? Mhz assumption that it is same as JR-100*/
+ MCFG_DEVICE_PROGRAM_MAP(jr200_mem)
-// MN1544(config, "mn1544", ?);
+// MCFG_DEVICE_ADD("mn1544", MN1544, ?)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(16 + 256 + 16, 16 + 192 + 16); /* border size not accurate */
- screen.set_visarea(0, 16 + 256 + 16 - 1, 0, 16 + 192 + 16 - 1);
- screen.set_screen_update(FUNC(jr200_state::screen_update_jr200));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_jr200);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(16 + 256 + 16, 16 + 192 + 16) /* border size not accurate */
+ MCFG_SCREEN_VISIBLE_AREA(0, 16 + 256 + 16 - 1, 0, 16 + 192 + 16 - 1)
+ MCFG_SCREEN_UPDATE_DRIVER(jr200_state, screen_update_jr200)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_jr200)
PALETTE(config, m_palette, palette_device::BRG_3BIT);
SPEAKER(config, "mono").front_center();
// AY-8910 ?
- BEEP(config, m_beeper, 0).add_route(ALL_OUTPUTS,"mono",0.50);
-}
+ MCFG_DEVICE_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.50)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jtc.cpp b/src/mame/drivers/jtc.cpp
index 5e9c9bcdb39..588a49ca077 100644
--- a/src/mame/drivers/jtc.cpp
+++ b/src/mame/drivers/jtc.cpp
@@ -818,8 +818,8 @@ MACHINE_CONFIG_START(jtc_state::basic)
m_maincpu->p3_out_cb().set(FUNC(jtc_state::p3_w));
/* cassette */
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -827,82 +827,78 @@ MACHINE_CONFIG_START(jtc_state::basic)
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05);
/* printer */
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(jtc_state::write_centronics_busy));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, jtc_state, write_centronics_busy))
/* quickload */
- MCFG_QUICKLOAD_ADD("quickload", jtc_state, jtc, "jtc,bin", attotime::from_seconds(2))
+ MCFG_QUICKLOAD_ADD("quickload", jtc_state, jtc, "jtc,bin", 2)
MACHINE_CONFIG_END
-void jtc_state::jtc(machine_config &config)
-{
+MACHINE_CONFIG_START(jtc_state::jtc)
basic(config);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(jtc_state::screen_update));
- screen.set_size(64, 64);
- screen.set_visarea(0, 64-1, 0, 64-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(jtc_state, screen_update)
+ MCFG_SCREEN_SIZE(64, 64)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64-1, 0, 64-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
/* internal ram */
RAM(config, m_ram).set_default_size("2K");
-}
+MACHINE_CONFIG_END
-void jtces88_state::jtces88(machine_config &config)
-{
+MACHINE_CONFIG_START(jtces88_state::jtces88)
jtc(config);
/* internal ram */
m_ram->set_default_size("4K");
-}
+MACHINE_CONFIG_END
-void jtces23_state::jtces23(machine_config &config)
-{
+MACHINE_CONFIG_START(jtces23_state::jtces23)
basic(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &jtces23_state::jtc_es23_mem);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(jtces23_state::screen_update));
- screen.set_size(128, 128);
- screen.set_visarea(0, 128-1, 0, 128-1);
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_jtces23);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(jtces23_state, screen_update)
+ MCFG_SCREEN_SIZE(128, 128)
+ MCFG_SCREEN_VISIBLE_AREA(0, 128-1, 0, 128-1)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_jtces23)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* internal ram */
RAM(config, RAM_TAG).set_default_size("4K");
-}
+MACHINE_CONFIG_END
-void jtces40_state::jtces40(machine_config &config)
-{
+MACHINE_CONFIG_START(jtces40_state::jtces40)
basic(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &jtces40_state::jtc_es40_mem);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(jtces40_state::screen_update));
- screen.set_size(320, 192);
- screen.set_visarea(0, 320-1, 0, 192-1);
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_jtces40);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(jtces40_state, screen_update)
+ MCFG_SCREEN_SIZE(320, 192)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 192-1)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_jtces40)
PALETTE(config, "palette", FUNC(jtc_state::es40_palette), 16);
/* internal ram */
RAM(config, RAM_TAG).set_default_size("8K").set_extra_options("16K,32K");
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/jubilee.cpp b/src/mame/drivers/jubilee.cpp
index 1fd5617df9f..e15c173f5ea 100644
--- a/src/mame/drivers/jubilee.cpp
+++ b/src/mame/drivers/jubilee.cpp
@@ -569,19 +569,19 @@ READ8_MEMBER(jubilee_state::mux_port_r)
{
switch( mux_sel )
{
- case 0x01: return BIT(ioport("IN0")->read(), offset);
- case 0x02: return BIT(ioport("IN1")->read(), offset); /* muxed credits input is here! */
- case 0x03: return BIT(ioport("IN2")->read(), offset);
+ case 0x01: return ioport("IN0")->read();
+ case 0x02: return ioport("IN1")->read(); /* muxed credits input is here! */
+ case 0x03: return ioport("IN2")->read();
}
- return 1;
+ return 0xff;
}
void jubilee_state::jubileep_cru_map(address_map &map)
{
- map(0x0c80, 0x0c8f).r(FUNC(jubilee_state::mux_port_r)); /* multiplexed input port */
- map(0x0000, 0x0fff).w(FUNC(jubilee_state::unk_w));
+ map(0x00c8, 0x00c8).r(FUNC(jubilee_state::mux_port_r)); /* multiplexed input port */
+ map(0x0000, 0x07ff).w(FUNC(jubilee_state::unk_w));
}
/* I/O byte R/W
@@ -670,8 +670,8 @@ GFXDECODE_END
* Machine Drivers *
*************************/
-void jubilee_state::jubileep(machine_config &config)
-{
+MACHINE_CONFIG_START(jubilee_state::jubileep)
+
// Main CPU TMS9980A, no line connections.
TMS9980A(config, m_maincpu, CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &jubilee_state::jubileep_map);
@@ -681,22 +681,22 @@ void jubilee_state::jubileep(machine_config &config)
NVRAM(config, "videoworkram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8); /* (47+1*8, 38+1*8) from CRTC settings */
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1); /* (32*8, 32*8) from CRTC settings */
- screen.set_screen_update(FUNC(jubilee_state::screen_update_jubileep));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8) /* (47+1*8, 38+1*8) from CRTC settings */
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) /* (32*8, 32*8) from CRTC settings */
+ MCFG_SCREEN_UPDATE_DRIVER(jubilee_state, screen_update_jubileep)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, "palette", gfx_jubileep);
- PALETTE(config, "palette").set_entries(8);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_jubileep)
+ MCFG_PALETTE_ADD("palette",8)
mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK));
crtc.set_screen("screen");
crtc.set_show_border_area(false);
crtc.set_char_width(8);
-}
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/juicebox.cpp b/src/mame/drivers/juicebox.cpp
index 2e01708869a..ce141025821 100644
--- a/src/mame/drivers/juicebox.cpp
+++ b/src/mame/drivers/juicebox.cpp
@@ -308,25 +308,24 @@ void juicebox_state::init_juicebox()
// do nothing
}
-void juicebox_state::juicebox(machine_config &config)
-{
- ARM7(config, m_maincpu, 66000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &juicebox_state::juicebox_map);
+MACHINE_CONFIG_START(juicebox_state::juicebox)
+ MCFG_DEVICE_ADD("maincpu", ARM7, 66000000)
+ MCFG_DEVICE_PROGRAM_MAP(juicebox_map)
+
+ MCFG_PALETTE_ADD("palette", 32768)
- PALETTE(config, "palette").set_entries(32768);
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(240, 160)
+ MCFG_SCREEN_VISIBLE_AREA(0, 240 - 1, 0, 160 - 1)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(240, 160);
- screen.set_visarea(0, 240 - 1, 0, 160 - 1);
- screen.set_screen_update("s3c44b0", FUNC(s3c44b0_device::video_update));
+ MCFG_SCREEN_UPDATE_DEVICE("s3c44b0", s3c44b0_device, video_update)
SPEAKER(config, "speaker").front_center();
- DAC_16BIT_R2R_TWOS_COMPLEMENT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_16BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
S3C44B0(config, m_s3c44b0, 10000000);
m_s3c44b0->set_cpu("maincpu");
@@ -337,8 +336,8 @@ void juicebox_state::juicebox(machine_config &config)
SMARTMEDIA(config, m_smartmedia, 0);
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("juicebox");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list","juicebox")
+MACHINE_CONFIG_END
static INPUT_PORTS_START( juicebox )
PORT_START( "PORTG" )
diff --git a/src/mame/drivers/jungleyo.cpp b/src/mame/drivers/jungleyo.cpp
index dc8967d320a..b42416e14b7 100644
--- a/src/mame/drivers/jungleyo.cpp
+++ b/src/mame/drivers/jungleyo.cpp
@@ -120,31 +120,31 @@ static GFXDECODE_START( gfx_jungleyo )
GFXDECODE_END
-void jungleyo_state::jungleyo(machine_config &config)
-{
- M68000(config, m_maincpu, 24_MHz_XTAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &jungleyo_state::jungleyo_map);
- m_maincpu->set_vblank_int("screen", FUNC(jungleyo_state::irq1_line_hold));
+MACHINE_CONFIG_START(jungleyo_state::jungleyo)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 24_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(jungleyo_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", jungleyo_state, irq1_line_hold)
GFXDECODE(config, m_gfxdecode, "palette", gfx_jungleyo);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(jungleyo_state::screen_update_jungleyo));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(jungleyo_state, screen_update_jungleyo)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x200);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- okim6295_device &oki(OKIM6295(config, "oki", 24_MHz_XTAL / 20, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
- oki.add_route(ALL_OUTPUTS, "lspeaker", 0.47);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 0.47);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 24_MHz_XTAL / 20, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47)
+MACHINE_CONFIG_END
ROM_START( jungleyo )
diff --git a/src/mame/drivers/junior.cpp b/src/mame/drivers/junior.cpp
index d571bb4a543..44ba5f62e8f 100644
--- a/src/mame/drivers/junior.cpp
+++ b/src/mame/drivers/junior.cpp
@@ -225,26 +225,25 @@ void junior_state::machine_reset()
}
-void junior_state::junior(machine_config &config)
-{
+MACHINE_CONFIG_START(junior_state::junior)
/* basic machine hardware */
- M6502(config, m_maincpu, 1_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &junior_state::junior_mem);
- config.m_minimum_quantum = attotime::from_hz(50);
+ MCFG_DEVICE_ADD("maincpu",M6502, 1_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(junior_mem)
+ MCFG_QUANTUM_TIME(attotime::from_hz(50))
/* video hardware */
config.set_default_layout(layout_junior);
/* Devices */
- MOS6532_NEW(config, m_riot, 1_MHz_XTAL);
- m_riot->pa_rd_callback().set(FUNC(junior_state::junior_riot_a_r));
- m_riot->pa_wr_callback().set(FUNC(junior_state::junior_riot_a_w));
- m_riot->pb_rd_callback().set(FUNC(junior_state::junior_riot_b_r));
- m_riot->pb_wr_callback().set(FUNC(junior_state::junior_riot_b_w));
- m_riot->irq_wr_callback().set_inputline(m_maincpu, M6502_IRQ_LINE);
-
- TIMER(config, "led_timer").configure_periodic(FUNC(junior_state::junior_update_leds), attotime::from_hz(50));
-}
+ MCFG_DEVICE_ADD("riot", MOS6532_NEW, 1_MHz_XTAL)
+ MCFG_MOS6530n_IN_PA_CB(READ8(*this, junior_state, junior_riot_a_r))
+ MCFG_MOS6530n_OUT_PA_CB(WRITE8(*this, junior_state, junior_riot_a_w))
+ MCFG_MOS6530n_IN_PB_CB(READ8(*this, junior_state, junior_riot_b_r))
+ MCFG_MOS6530n_OUT_PB_CB(WRITE8(*this, junior_state, junior_riot_b_w))
+ MCFG_MOS6530n_IRQ_CB(INPUTLINE("maincpu", M6502_IRQ_LINE))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("led_timer", junior_state, junior_update_leds, attotime::from_hz(50))
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/junofrst.cpp b/src/mame/drivers/junofrst.cpp
index 5944603fb10..a86811791c8 100644
--- a/src/mame/drivers/junofrst.cpp
+++ b/src/mame/drivers/junofrst.cpp
@@ -403,8 +403,8 @@ WRITE_LINE_MEMBER(junofrst_state::_30hz_irq)
}
}
-void junofrst_state::junofrst(machine_config &config)
-{
+MACHINE_CONFIG_START(junofrst_state::junofrst)
+
/* basic machine hardware */
KONAMI1(config, m_maincpu, 1500000); /* 1.5 MHz ??? */
m_maincpu->set_addrmap(AS_PROGRAM, &junofrst_state::main_map);
@@ -452,15 +452,17 @@ void junofrst_state::junofrst(machine_config &config)
aysnd.add_route(1, "filter.0.1", 0.30);
aysnd.add_route(2, "filter.0.2", 0.30);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // 100K (R56-63)/200K (R64-71) ladder network
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-
- FILTER_RC(config, m_filter_0_0).add_route(ALL_OUTPUTS, "speaker", 1.0);
- FILTER_RC(config, m_filter_0_1).add_route(ALL_OUTPUTS, "speaker", 1.0);
- FILTER_RC(config, m_filter_0_2).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // 100K (R56-63)/200K (R64-71) ladder network
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+
+ MCFG_DEVICE_ADD("filter.0.0", FILTER_RC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+ MCFG_DEVICE_ADD("filter.0.1", FILTER_RC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+ MCFG_DEVICE_ADD("filter.0.2", FILTER_RC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
ROM_START( junofrst )
diff --git a/src/mame/drivers/jupace.cpp b/src/mame/drivers/jupace.cpp
index 453a6828dc0..8b551db5d1f 100644
--- a/src/mame/drivers/jupace.cpp
+++ b/src/mame/drivers/jupace.cpp
@@ -751,32 +751,32 @@ void ace_state::machine_start()
//**************************************************************************
//-------------------------------------------------
-// machine_config( ace )
+// MACHINE_CONFIG( ace )
//-------------------------------------------------
MACHINE_CONFIG_START(ace_state::ace)
// basic machine hardware
- Z80(config, m_maincpu, XTAL(6'500'000)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &ace_state::ace_mem);
- m_maincpu->set_addrmap(AS_IO, &ace_state::ace_io);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(6'500'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(ace_mem)
+ MCFG_DEVICE_IO_MAP(ace_io)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
// video hardware
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(ace_state::screen_update));
- screen.set_raw(XTAL(6'500'000), 416, 0, 336, 312, 0, 304);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(ace_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(6'500'000), 416, 0, 336, 312, 0, 304)
+ MCFG_SCREEN_PALETTE("palette")
- TIMER(config, "set_irq").configure_scanline(FUNC(ace_state::set_irq), SCREEN_TAG, 31*8, 264);
- TIMER(config, "clear_irq").configure_scanline(FUNC(ace_state::clear_irq), SCREEN_TAG, 32*8, 264);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("set_irq", ace_state, set_irq, SCREEN_TAG, 31*8, 264)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("clear_irq", ace_state, clear_irq, SCREEN_TAG, 32*8, 264)
PALETTE(config, "palette", palette_device::MONOCHROME);
- GFXDECODE(config, "gfxdecode", "palette", gfx_ace);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ace)
// sound hardware
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 1.00);
AY8910(config, AY8910_TAG, XTAL(6'500'000) / 2).add_route(ALL_OUTPUTS, "mono", 0.25);
@@ -785,12 +785,12 @@ MACHINE_CONFIG_START(ace_state::ace)
m_sp0256->add_route(ALL_OUTPUTS, "mono", 0.25);
// devices
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(ace_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED);
- m_cassette->set_interface("jupace_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(ace_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED)
+ MCFG_CASSETTE_INTERFACE("jupace_cass")
- MCFG_SNAPSHOT_ADD("snapshot", ace_state, ace, "ace", attotime::from_seconds(1))
+ MCFG_SNAPSHOT_ADD("snapshot", ace_state, ace, "ace", 1)
I8255A(config, m_ppi);
m_ppi->in_pb_callback().set(FUNC(ace_state::sby_r));
@@ -802,15 +802,13 @@ MACHINE_CONFIG_START(ace_state::ace)
m_z80pio->out_pa_callback().set(FUNC(ace_state::pio_pa_w));
m_z80pio->out_pb_callback().set("cent_data_out", FUNC(output_latch_device::bus_w));
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
-
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
// internal ram
RAM(config, RAM_TAG).set_default_size("1K").set_extra_options("16K,32K,48K");
- SOFTWARE_LIST(config, "cass_list").set_original("jupace_cass");
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "jupace_cass")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jupiter.cpp b/src/mame/drivers/jupiter.cpp
index 06726da0312..5366da61ac8 100644
--- a/src/mame/drivers/jupiter.cpp
+++ b/src/mame/drivers/jupiter.cpp
@@ -280,7 +280,7 @@ void jupiter3_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( jupiter )
+// MACHINE_CONFIG( jupiter )
//-------------------------------------------------
void jupiter2_state::jupiter2(machine_config &config)
@@ -316,38 +316,37 @@ void jupiter2_state::jupiter2(machine_config &config)
//-------------------------------------------------
-// machine_config( jupiter3 )
+// MACHINE_CONFIG( jupiter3 )
//-------------------------------------------------
-void jupiter3_state::jupiter3(machine_config &config)
-{
+MACHINE_CONFIG_START(jupiter3_state::jupiter3)
// basic machine hardware
- Z80(config, m_maincpu, 4000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &jupiter3_state::jupiter3_mem);
- m_maincpu->set_addrmap(AS_IO, &jupiter3_state::jupiter3_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(jupiter3_mem)
+ MCFG_DEVICE_IO_MAP(jupiter3_io)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(jupiter3_state::screen_update));
- screen.set_size(512, 320);
- screen.set_visarea(0, 512-1, 0, 320-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(jupiter3_state, screen_update)
+ MCFG_SCREEN_SIZE(512, 320)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 320-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
// devices
FD1771(config, INS1771N1_TAG, 1000000);
- FLOPPY_CONNECTOR(config, INS1771N1_TAG":0", jupiter_floppies, "525ssdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, INS1771N1_TAG":1", jupiter_floppies, nullptr, floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(INS1771N1_TAG":0", jupiter_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(INS1771N1_TAG":1", jupiter_floppies, nullptr, floppy_image_device::default_floppy_formats)
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
keyboard.set_keyboard_callback(FUNC(jupiter3_state::kbd_put));
// internal ram
RAM(config, RAM_TAG).set_default_size("64K");
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jvh.cpp b/src/mame/drivers/jvh.cpp
index d0acac1d6d9..0a2c546f366 100644
--- a/src/mame/drivers/jvh.cpp
+++ b/src/mame/drivers/jvh.cpp
@@ -49,28 +49,28 @@ void jvh_state::jvh_map(address_map &map)
void jvh_state::escape_io(address_map &map)
{
- //map(0x0010, 0x002f).r(FUNC(jvh_state::sw1_r));
- //map(0x0030, 0x005f).r(FUNC(jvh_state::dip_r));
- //map(0x0060, 0x007f).r(FUNC(jvh_state::sw6_r));
- //map(0x0020, 0x002b).w(FUNC(jvh_state::snd_w));
- //map(0x002c, 0x002d).w(FUNC(jvh_state::latch_w));
- //map(0x002e, 0x0033).w(FUNC(jvh_state::out1a_w));
- //map(0x0034, 0x0035).w(FUNC(jvh_state::enable_w));
- //map(0x0036, 0x003f).w(FUNC(jvh_state::out1b_w));
- //map(0x0040, 0x004f).w(FUNC(jvh_state::out2a_w));
- //map(0x0050, 0x005f).w(FUNC(jvh_state::out2b_w));
- //map(0x0060, 0x006f).w(FUNC(jvh_state::out3a_w));
- //map(0x007c, 0x007d).w(FUNC(jvh_state::irq_enable));
- //map(0x007e, 0x007f).w(FUNC(jvh_state::zc_enable));
- //map(0x0080, 0x008f).w(FUNC(jvh_state::digit_w));
- //map(0x0090, 0x0097).w(FUNC(jvh_state::bcd_w));
- //map(0x0098, 0x00a1).w(FUNC(jvh_state::panel_w));
- //map(0x00a2, 0x00ab).w(FUNC(jvh_state::col_w));
- //map(0x00b0, 0x00bf).w(FUNC(jvh_state::out5b_w));
- //map(0x00c0, 0x00cf).w(FUNC(jvh_state::out6a_w));
- //map(0x00d0, 0x00df).w(FUNC(jvh_state::out6b_w));
- //map(0x00e0, 0x00e9).w(FUNC(jvh_state::out7a_w));
- //map(0x00ea, 0x00ff).w(FUNC(jvh_state::sol_w));
+ //AM_RANGE(0x01, 0x02) AM_READ(sw1_r)
+ //AM_RANGE(0x03, 0x05) AM_READ(dip_r)
+ //AM_RANGE(0x06, 0x07) AM_READ(sw6_r)
+ //AM_RANGE(0x10, 0x15) AM_WRITE(snd_w)
+ //AM_RANGE(0x16, 0x16) AM_WRITE(latch_w)
+ //AM_RANGE(0x17, 0x19) AM_WRITE(out1a_w)
+ //AM_RANGE(0x1a, 0x1a) AM_WRITE(enable_w)
+ //AM_RANGE(0x1b, 0x1f) AM_WRITE(out1b_w)
+ //AM_RANGE(0x20, 0x27) AM_WRITE(out2a_w)
+ //AM_RANGE(0x28, 0x2f) AM_WRITE(out2b_w)
+ //AM_RANGE(0x30, 0x37) AM_WRITE(out3a_w)
+ //AM_RANGE(0x3e, 0x3e) AM_WRITE(irq_enable)
+ //AM_RANGE(0x3f, 0x3f) AM_WRITE(zc_enable)
+ //AM_RANGE(0x40, 0x47) AM_WRITE(digit_w)
+ //AM_RANGE(0x48, 0x4b) AM_WRITE(bcd_w)
+ //AM_RANGE(0x4c, 0x50) AM_WRITE(panel_w)
+ //AM_RANGE(0x51, 0x55) AM_WRITE(col_w)
+ //AM_RANGE(0x58, 0x5f) AM_WRITE(out5b_w)
+ //AM_RANGE(0x60, 0x67) AM_WRITE(out6a_w)
+ //AM_RANGE(0x68, 0x6f) AM_WRITE(out6b_w)
+ //AM_RANGE(0x70, 0x74) AM_WRITE(out7a_w)
+ //AM_RANGE(0x75, 0x7f) AM_WRITE(sol_w)
}
void jvh_state::movmastr_io(address_map &map)
diff --git a/src/mame/drivers/k1003.cpp b/src/mame/drivers/k1003.cpp
index 50c42a3ca57..95a11014fa5 100644
--- a/src/mame/drivers/k1003.cpp
+++ b/src/mame/drivers/k1003.cpp
@@ -147,16 +147,15 @@ void k1003_state::machine_reset()
{
}
-void k1003_state::k1003(machine_config &config)
-{
+MACHINE_CONFIG_START(k1003_state::k1003)
/* basic machine hardware */
- I8008(config, m_maincpu, 800000);
- m_maincpu->set_addrmap(AS_PROGRAM, &k1003_state::k1003_mem);
- m_maincpu->set_addrmap(AS_IO, &k1003_state::k1003_io);
+ MCFG_DEVICE_ADD("maincpu",I8008, 800000)
+ MCFG_DEVICE_PROGRAM_MAP(k1003_mem)
+ MCFG_DEVICE_IO_MAP(k1003_io)
/* video hardware */
config.set_default_layout(layout_k1003);
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/k28.cpp b/src/mame/drivers/k28.cpp
index aa93287e6e1..4f55bb65983 100644
--- a/src/mame/drivers/k28.cpp
+++ b/src/mame/drivers/k28.cpp
@@ -1,87 +1,104 @@
// license:BSD-3-Clause
// copyright-holders:hap, Kevin Horton
-/******************************************************************************
+/***************************************************************************
-Tiger Electronics K28: Talking Learning Computer (model 7-230/7-231)
-* PCB marked PB-123 WIZARD, TIGER
-* Intel P8021 MCU with 1KB internal ROM
-* MM5445N VFD driver, 9-digit alphanumeric display same as snmath
-* 2*TMS6100 (32KB VSM)
-* SC-01-A speech chip
+ Tiger Electronics K28: Talking Learning Computer (model 7-230/7-231)
+ * PCB marked PB-123 WIZARD, TIGER
+ * Intel P8021 MCU with 1KB internal ROM
+ * MM5445N VFD driver, 9-digit alphanumeric display same as snmath
+ * 2*TMS6100 (32KB VSM)
+ * SC-01-A speech chip
-3 models exist:
-- 7-230: darkblue case, toy-ish looks
-- 7-231: gray case, hardware is the same
-- 7-232: this one is completely different hw --> driver tispeak.cpp
+ 3 models exist:
+ - 7-230: darkblue case, toy-ish looks
+ - 7-231: gray case, hardware is the same
+ - 7-232: this one is completely different hw --> driver tispeak.cpp
-TODO:
-- external module support (no dumps yet)
+ TODO:
+ - external module support (no dumps yet)
+ - make MM5445N a device
-******************************************************************************/
+***************************************************************************/
#include "emu.h"
#include "cpu/mcs48/mcs48.h"
#include "machine/timer.h"
#include "machine/tms6100.h"
#include "sound/votrax.h"
-#include "video/mm5445.h"
#include "speaker.h"
#include "k28.lh"
-namespace {
class k28_state : public driver_device
{
public:
- k28_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
+ k28_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_tms6100(*this, "tms6100"),
m_speech(*this, "speech"),
- m_vfd(*this, "vfd"),
- m_vfd_delay(*this, "led_delay_%u", 0),
m_onbutton_timer(*this, "on_button"),
m_inp_matrix(*this, "IN.%u", 0),
m_out_x(*this, "%u.%u", 0U, 0U),
- m_out_digit(*this, "digit%u", 0U)
+ m_out_a(*this, "%u.a", 0U),
+ m_out_digit(*this, "digit%u", 0U),
+ m_display_wait(33),
+ m_display_maxy(1),
+ m_display_maxx(0)
{ }
void k28(machine_config &config);
DECLARE_INPUT_CHANGED_MEMBER(power_on);
-protected:
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
private:
- // devices/pointers
+ // devices
required_device<i8021_device> m_maincpu;
required_device<tms6100_device> m_tms6100;
required_device<votrax_sc01_device> m_speech;
- required_device<mm5445_device> m_vfd;
- required_device_array<timer_device, 9> m_vfd_delay;
required_device<timer_device> m_onbutton_timer;
required_ioport_array<7> m_inp_matrix;
- output_finder<9, 16> m_out_x;
- output_finder<9> m_out_digit;
+ output_finder<0x20, 0x20> m_out_x;
+ output_finder<0x20> m_out_a;
+ output_finder<0x20> m_out_digit;
+
+ // display common
+ int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
+ int m_display_maxy; // display matrix number of rows
+ int m_display_maxx; // display matrix number of columns (max 31 for now)
- TIMER_DEVICE_CALLBACK_MEMBER(vfd_delay_off);
+ u32 m_display_state[0x20]; // display matrix rows data (last bit is used for always-on)
+ u16 m_display_segmask[0x20]; // if not 0, display matrix row is a digit, mask indicates connected segments
+ u8 m_display_decay[0x20][0x20]; // (internal use)
+
+ TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
+ void display_update();
+ void set_display_size(int maxx, int maxy);
+ void set_display_segmask(u32 digits, u32 mask);
+ void display_matrix(int maxx, int maxy, u32 setx, u32 sety, bool update = true);
bool m_power_on;
u8 m_inp_mux;
u8 m_phoneme;
int m_speech_strobe;
- u64 m_vfd_data;
+ int m_vfd_data_enable;
+ int m_vfd_data_in;
+ int m_vfd_clock;
+ u64 m_vfd_shiftreg;
+ u64 m_vfd_shiftreg_out;
+ int m_vfd_shiftcount;
- DECLARE_WRITE64_MEMBER(vfd_output_w);
DECLARE_WRITE8_MEMBER(mcu_p0_w);
DECLARE_READ8_MEMBER(mcu_p1_r);
DECLARE_READ8_MEMBER(mcu_p2_r);
DECLARE_WRITE8_MEMBER(mcu_p2_w);
+ DECLARE_WRITE_LINE_MEMBER(mcu_prog_w);
void power_off();
+
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
};
@@ -91,21 +108,44 @@ void k28_state::machine_start()
{
// resolve handlers
m_out_x.resolve();
+ m_out_a.resolve();
m_out_digit.resolve();
// zerofill
+ memset(m_display_state, 0, sizeof(m_display_state));
+ memset(m_display_decay, 0, sizeof(m_display_decay));
+ memset(m_display_segmask, 0, sizeof(m_display_segmask));
+
m_power_on = false;
m_inp_mux = 0;
m_phoneme = 0x3f;
m_speech_strobe = 0;
- m_vfd_data = 0;
+ m_vfd_data_enable = 0;
+ m_vfd_data_in = 0;
+ m_vfd_clock = 0;
+ m_vfd_shiftreg = 0;
+ m_vfd_shiftreg_out = 0;
+ m_vfd_shiftcount = 0;
// register for savestates
+ save_item(NAME(m_display_maxy));
+ save_item(NAME(m_display_maxx));
+ save_item(NAME(m_display_wait));
+
+ save_item(NAME(m_display_state));
+ save_item(NAME(m_display_decay));
+ save_item(NAME(m_display_segmask));
+
save_item(NAME(m_power_on));
save_item(NAME(m_inp_mux));
save_item(NAME(m_phoneme));
save_item(NAME(m_speech_strobe));
- save_item(NAME(m_vfd_data));
+ save_item(NAME(m_vfd_data_enable));
+ save_item(NAME(m_vfd_data_in));
+ save_item(NAME(m_vfd_clock));
+ save_item(NAME(m_vfd_shiftreg));
+ save_item(NAME(m_vfd_shiftreg_out));
+ save_item(NAME(m_vfd_shiftcount));
}
void k28_state::machine_reset()
@@ -130,55 +170,91 @@ void k28_state::power_off()
}
+/***************************************************************************
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
+ Helper Functions
-// VFD handling
+***************************************************************************/
-TIMER_DEVICE_CALLBACK_MEMBER(k28_state::vfd_delay_off)
+// The device may strobe the outputs very fast, it is unnoticeable to the user.
+// To prevent flickering here, we need to simulate a decay.
+
+void k28_state::display_update()
{
- // clear VFD outputs
- if (!BIT(m_vfd_data, param+16))
+ for (int y = 0; y < m_display_maxy; y++)
{
- m_out_digit[param] = 0;
+ u32 active_state = 0;
- for (int i = 0; i < 16; i++)
- m_out_x[param][i] = 0;
+ for (int x = 0; x <= m_display_maxx; x++)
+ {
+ // turn on powered segments
+ if (m_power_on && m_display_state[y] >> x & 1)
+ m_display_decay[y][x] = m_display_wait;
+
+ // determine active state
+ u32 ds = (m_display_decay[y][x] != 0) ? 1 : 0;
+ active_state |= (ds << x);
+
+ // output to y.x, or y.a when always-on
+ if (x != m_display_maxx)
+ m_out_x[y][x] = ds;
+ else
+ m_out_a[y] = ds;
+ }
+
+ // output to digity
+ if (m_display_segmask[y] != 0)
+ m_out_digit[y] = active_state & m_display_segmask[y];
}
}
-WRITE64_MEMBER(k28_state::vfd_output_w)
+TIMER_DEVICE_CALLBACK_MEMBER(k28_state::display_decay_tick)
{
- // O1-O16: digit segment data
- u16 seg_data = bitswap<16>(data,15,14,2,6,5,3,1,7,12,11,10,13,0,4,9,8);
+ // slowly turn off unpowered segments
+ for (int y = 0; y < m_display_maxy; y++)
+ for (int x = 0; x <= m_display_maxx; x++)
+ if (m_display_decay[y][x] != 0)
+ m_display_decay[y][x]--;
- // O17-O25: digit select
- for (int i = 0; i < 9; i++)
- {
- if (BIT(data, i+16))
- {
- m_out_digit[i] = seg_data & 0x3fff;
+ display_update();
+}
- // output individual segments (2 of them are not in MAME's 16seg)
- for (int j = 0; j < 16; j++)
- m_out_x[i][j] = seg_data >> j & 1;
- }
+void k28_state::set_display_size(int maxx, int maxy)
+{
+ m_display_maxx = maxx;
+ m_display_maxy = maxy;
+}
- // they're strobed, so on falling edge, delay them going off to prevent flicker
- else if (BIT(m_vfd_data, i+16))
- m_vfd_delay[i]->adjust(attotime::from_msec(50), i);
+void k28_state::set_display_segmask(u32 digits, u32 mask)
+{
+ // set a segment mask per selected digit, but leave unselected ones alone
+ for (int i = 0; i < 0x20; i++)
+ {
+ if (digits & 1)
+ m_display_segmask[i] = mask;
+ digits >>= 1;
}
+}
+
+void k28_state::display_matrix(int maxx, int maxy, u32 setx, u32 sety, bool update)
+{
+ set_display_size(maxx, maxy);
+
+ // update current state
+ u32 mask = (1 << maxx) - 1;
+ for (int y = 0; y < maxy; y++)
+ m_display_state[y] = (sety >> y & 1) ? ((setx & mask) | (1 << maxx)) : 0;
- // O26: power-off request on falling edge
- if (~data & m_vfd_data & 0x2000000)
- power_off();
- m_vfd_data = data;
+ display_update();
}
-// I8021 ports
+
+/***************************************************************************
+
+ I/O, Address Map(s)
+
+***************************************************************************/
WRITE8_MEMBER(k28_state::mcu_p0_w)
{
@@ -190,11 +266,13 @@ WRITE8_MEMBER(k28_state::mcu_p0_w)
// d3: SC-01 strobe, latch phoneme on rising edge
int strobe = data >> 3 & 1;
if (strobe && !m_speech_strobe)
- m_speech->write(m_phoneme);
+ m_speech->write(space, 0, m_phoneme);
m_speech_strobe = strobe;
// d5: VFD driver data enable
- m_vfd->enable_w(data >> 5 & 1);
+ m_vfd_data_enable = ~data >> 5 & 1;
+ if (m_vfd_data_enable)
+ m_vfd_shiftreg = (m_vfd_shiftreg & ~u64(1)) | m_vfd_data_in;
// d4: VSM chip enable
// d6: VSM M0
@@ -233,7 +311,9 @@ READ8_MEMBER(k28_state::mcu_p2_r)
WRITE8_MEMBER(k28_state::mcu_p2_w)
{
// d0: VFD driver serial data
- m_vfd->data_w(data & 1);
+ m_vfd_data_in = data & 1;
+ if (m_vfd_data_enable)
+ m_vfd_shiftreg = (m_vfd_shiftreg & ~u64(1)) | m_vfd_data_in;
// d0-d3: VSM data, input mux and SC-01 phoneme lower nibble
m_tms6100->add_w(space, 0, data);
@@ -241,11 +321,53 @@ WRITE8_MEMBER(k28_state::mcu_p2_w)
m_phoneme = (m_phoneme & ~0xf) | (data & 0xf);
}
+WRITE_LINE_MEMBER(k28_state::mcu_prog_w)
+{
+ // 8021 PROG: clock VFD driver
+ bool rise = state == 1 && !m_vfd_clock;
+ m_vfd_clock = state;
+
+ // on rising edge
+ if (rise)
+ {
+ // leading 1 triggers shift start
+ if (m_vfd_shiftcount == 0 && ~m_vfd_shiftreg & 1)
+ return;
+
+ // output shiftreg on 35th clock
+ if (m_vfd_shiftcount == 35)
+ {
+ m_vfd_shiftcount = 0;
+
+ // output 0-15: digit segment data
+ u16 seg_data = (u16)(m_vfd_shiftreg >> 19);
+ seg_data = bitswap<16>(seg_data,0,1,13,9,10,12,14,8,3,4,5,2,15,11,6,7);
+ // output 16-24: digit select
+ u16 digit_sel = (u16)(m_vfd_shiftreg >> 10) & 0x1ff;
+ set_display_segmask(0x1ff, 0x3fff);
+ display_matrix(16, 9, seg_data, digit_sel);
-/******************************************************************************
- Input Ports
-******************************************************************************/
+ // output 25: power-off request on falling edge
+ if (~m_vfd_shiftreg & m_vfd_shiftreg_out & 0x200)
+ power_off();
+ m_vfd_shiftreg_out = m_vfd_shiftreg;
+ }
+ else
+ {
+ m_vfd_shiftreg <<= 1;
+ m_vfd_shiftcount++;
+ }
+ }
+}
+
+
+
+/***************************************************************************
+
+ Inputs
+
+***************************************************************************/
static INPUT_PORTS_START( k28 )
PORT_START("IN.0")
@@ -321,9 +443,11 @@ INPUT_PORTS_END
-/******************************************************************************
- Machine Configs
-******************************************************************************/
+/***************************************************************************
+
+ Machine Config
+
+***************************************************************************/
void k28_state::k28(machine_config &config)
{
@@ -333,20 +457,15 @@ void k28_state::k28(machine_config &config)
m_maincpu->p1_in_cb().set(FUNC(k28_state::mcu_p1_r));
m_maincpu->p2_in_cb().set(FUNC(k28_state::mcu_p2_r));
m_maincpu->p2_out_cb().set(FUNC(k28_state::mcu_p2_w));
- m_maincpu->prog_out_cb().set("vfd", FUNC(mm5445_device::clock_w));
- m_maincpu->t1_in_cb().set("speech", FUNC(votrax_sc01_device::request));
+ m_maincpu->prog_out_cb().set(FUNC(k28_state::mcu_prog_w));
+ m_maincpu->t1_in_cb().set("speech", FUNC(votrax_sc01_device::request)); // SC-01 A/R pin
- TMS6100(config, m_tms6100, 3.579545_MHz_XTAL / 15); // CLK tied to 8021 ALE pin
+ TMS6100(config, m_tms6100, 3.579545_MHz_XTAL); // CLK tied to 8021 ALE pin
TIMER(config, "on_button").configure_generic(timer_device::expired_delegate());
-
- /* video hardware */
- MM5445(config, m_vfd).output_cb().set(FUNC(k28_state::vfd_output_w));
+ TIMER(config, "display_decay").configure_periodic(FUNC(k28_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_k28);
- for (int i = 0; i < 9; i++)
- TIMER(config, m_vfd_delay[i]).configure_generic(FUNC(k28_state::vfd_delay_off));
-
/* sound hardware */
SPEAKER(config, "mono").front_center();
VOTRAX_SC01(config, "speech", 760000).add_route(ALL_OUTPUTS, "mono", 0.5); // measured 760kHz on its RC pin
@@ -354,9 +473,11 @@ void k28_state::k28(machine_config &config)
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
+/***************************************************************************
+
+ ROM Defs, Game driver(s)
+
+***************************************************************************/
ROM_START( k28 )
ROM_REGION( 0x1000, "maincpu", 0 )
@@ -367,13 +488,7 @@ ROM_START( k28 )
ROM_LOAD( "cm62051.vsm", 0x4000, 0x4000, CRC(0fa61baa) SHA1(831be669423ba60c7f85a896b4b09a1295478bd9) )
ROM_END
-} // anonymous namespace
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
COMP( 1981, k28, 0, 0, k28, k28, k28_state, empty_init, "Tiger Electronics", "K28: Talking Learning Computer (model 7-230)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/k8915.cpp b/src/mame/drivers/k8915.cpp
index 2c2609ee46b..e316bd9ccc9 100644
--- a/src/mame/drivers/k8915.cpp
+++ b/src/mame/drivers/k8915.cpp
@@ -134,21 +134,20 @@ uint32_t k8915_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
}
-void k8915_state::k8915(machine_config &config)
-{
+MACHINE_CONFIG_START(k8915_state::k8915)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'915'200) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &k8915_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &k8915_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(4'915'200) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(k8915_state::screen_update));
- screen.set_size(640, 250);
- screen.set_visarea(0, 639, 0, 249);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(k8915_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 250)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -165,7 +164,7 @@ void k8915_state::k8915(machine_config &config)
rs232.rxd_handler().set("sio", FUNC(z80sio_device::rxb_w));
rs232.dcd_handler().set("sio", FUNC(z80sio_device::dcdb_w));
rs232.cts_handler().set("sio", FUNC(z80sio_device::ctsb_w));
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/kaneko16.cpp b/src/mame/drivers/kaneko16.cpp
index 3070854ecf8..9e166ea1560 100644
--- a/src/mame/drivers/kaneko16.cpp
+++ b/src/mame/drivers/kaneko16.cpp
@@ -159,8 +159,8 @@ template<int Chip>
READ16_MEMBER(kaneko16_state::kaneko16_ay_YM2149_r)
{
/* Each 2149 register is mapped to a different address */
- m_ym2149[Chip]->address_w(offset);
- return m_ym2149[Chip]->data_r();
+ m_ym2149[Chip]->address_w(space,0,offset);
+ return m_ym2149[Chip]->data_r(space,0);
}
@@ -168,10 +168,10 @@ template<int Chip>
WRITE16_MEMBER(kaneko16_state::kaneko16_ay_YM2149_w)
{
/* Each 2149 register is mapped to a different address */
- m_ym2149[Chip]->address_w(offset);
+ m_ym2149[Chip]->address_w(space,0,offset);
/* The registers are mapped to odd addresses, except one! */
- if (ACCESSING_BITS_0_7) m_ym2149[Chip]->data_w( data & 0xff);
- else m_ym2149[Chip]->data_w((data >> 8) & 0xff);
+ if (ACCESSING_BITS_0_7) m_ym2149[Chip]->data_w(space,0, data & 0xff);
+ else m_ym2149[Chip]->data_w(space,0,(data >> 8) & 0xff);
}
template<int Mask>
@@ -243,7 +243,7 @@ READ16_MEMBER(kaneko16_berlwall_state::berlwall_oki_r)
mem_mask >>= 8;
}
- ret = m_oki[0]->read();
+ ret = m_oki[0]->read(space, offset, mem_mask);
ret = ret | ret << 8;
return ret;
@@ -257,7 +257,7 @@ WRITE16_MEMBER(kaneko16_berlwall_state::berlwall_oki_w)
mem_mask >>= 8;
}
- m_oki[0]->write(data);
+ m_oki[0]->write(space, offset, data, mem_mask);
}
READ16_MEMBER(kaneko16_berlwall_state::berlwall_spriteram_r)
@@ -1768,23 +1768,23 @@ TIMER_DEVICE_CALLBACK_MEMBER(kaneko16_state::kaneko16_interrupt)
6-7] rte
*/
-void kaneko16_berlwall_state::berlwall(machine_config &config)
-{
+MACHINE_CONFIG_START(kaneko16_berlwall_state::berlwall)
+
/* basic machine hardware */
M68000(config, m_maincpu, 12000000); /* MC68000P12 */
m_maincpu->set_addrmap(AS_PROGRAM, &kaneko16_berlwall_state::berlwall_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(kaneko16_state::kaneko16_interrupt), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1)
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
-// m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK); // mangled sprites otherwise
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 256-1, 16, 240-1);
- m_screen->set_screen_update(FUNC(kaneko16_berlwall_state::screen_update_berlwall));
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+// MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) // mangled sprites otherwise
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(kaneko16_berlwall_state, screen_update_berlwall)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_1x4bit_1x4bit);
PALETTE(config, m_palette).set_format(palette_device::xGRB_555, 2048);
@@ -1817,7 +1817,7 @@ void kaneko16_berlwall_state::berlwall(machine_config &config)
OKIM6295(config, m_oki[0], 12000000/6, okim6295_device::PIN7_LOW);
m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+MACHINE_CONFIG_END
/***************************************************************************
@@ -1830,12 +1830,12 @@ void kaneko16_state::bakubrkr_oki1_map(address_map &map)
map(0x20000, 0x3ffff).bankr("okibank1");
}
-void kaneko16_state::bakubrkr(machine_config &config)
-{
+MACHINE_CONFIG_START(kaneko16_state::bakubrkr)
+
/* basic machine hardware */
M68000(config, m_maincpu, XTAL(12'000'000)); /* verified on pcb */
m_maincpu->set_addrmap(AS_PROGRAM, &kaneko16_state::bakubrkr_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(kaneko16_state::kaneko16_interrupt), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1)
MCFG_MACHINE_RESET_OVERRIDE(kaneko16_state,gtmr)
EEPROM_93C46_16BIT(config, m_eeprom);
@@ -1843,14 +1843,14 @@ void kaneko16_state::bakubrkr(machine_config &config)
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK); // mangled sprites otherwise
- m_screen->set_refresh_hz(59);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 256-1, 16, 240-1);
- m_screen->set_screen_update(FUNC(kaneko16_state::screen_update_kaneko16));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) // mangled sprites otherwise
+ MCFG_SCREEN_REFRESH_RATE(59)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(kaneko16_state, screen_update_kaneko16)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_1x4bit_2x4bit);
PALETTE(config, m_palette).set_format(palette_device::xGRB_555, 2048);
@@ -1885,7 +1885,7 @@ void kaneko16_state::bakubrkr(machine_config &config)
OKIM6295(config, m_oki[0], XTAL(12'000'000)/6, okim6295_device::PIN7_HIGH); /* verified on pcb */
m_oki[0]->set_addrmap(0, &kaneko16_state::bakubrkr_oki1_map);
m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/***************************************************************************
@@ -1902,26 +1902,26 @@ void kaneko16_state::bakubrkr(machine_config &config)
6-7] busy loop
*/
-void kaneko16_state::blazeon(machine_config &config)
-{
+MACHINE_CONFIG_START(kaneko16_state::blazeon)
+
/* basic machine hardware */
M68000(config, m_maincpu, 12000000); /* TMP68HC000-12 */
m_maincpu->set_addrmap(AS_PROGRAM, &kaneko16_state::blazeon_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(kaneko16_state::kaneko16_interrupt), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1)
Z80(config, m_audiocpu, 4000000); /* D780C-2 (6 MHz) */
m_audiocpu->set_addrmap(AS_PROGRAM, &kaneko16_state::blazeon_soundmem);
m_audiocpu->set_addrmap(AS_IO, &kaneko16_state::blazeon_soundport);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(320, 240);
- m_screen->set_visarea(0, 320-1, 0, 240-1 -8);
- m_screen->set_screen_update(FUNC(kaneko16_state::screen_update_kaneko16));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(320, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1 -8)
+ MCFG_SCREEN_UPDATE_DRIVER(kaneko16_state, screen_update_kaneko16)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_1x4bit_1x4bit);
PALETTE(config, m_palette).set_format(palette_device::xGRB_555, 2048);
@@ -1950,33 +1950,33 @@ void kaneko16_state::blazeon(machine_config &config)
YM2151(config, m_ymsnd, 4000000);
m_ymsnd->add_route(0, "lspeaker", 1.0);
m_ymsnd->add_route(1, "rspeaker", 1.0);
-}
+MACHINE_CONFIG_END
/***************************************************************************
Wing Force
***************************************************************************/
-void kaneko16_state::wingforc(machine_config &config)
-{
+MACHINE_CONFIG_START(kaneko16_state::wingforc)
+
/* basic machine hardware */
M68000(config, m_maincpu, XTAL(16'000'000)); /* TMP68HC000N-16 */
m_maincpu->set_addrmap(AS_PROGRAM, &kaneko16_state::blazeon_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(kaneko16_state::kaneko16_interrupt), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1)
Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* D780C-2 (6 MHz) */
m_audiocpu->set_addrmap(AS_PROGRAM, &kaneko16_state::blazeon_soundmem);
m_audiocpu->set_addrmap(AS_IO, &kaneko16_state::wingforc_soundport);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
- m_screen->set_refresh_hz(59.1854);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(320, 240);
- m_screen->set_visarea(0, 320-1, 0, 240-1 -16);
- m_screen->set_screen_update(FUNC(kaneko16_state::screen_update_kaneko16));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(59.1854)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(320, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1 -16)
+ MCFG_SCREEN_UPDATE_DRIVER(kaneko16_state, screen_update_kaneko16)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_1x4bit_1x4bit);
PALETTE(config, m_palette).set_format(palette_device::xGRB_555, 2048);
@@ -2007,7 +2007,7 @@ void kaneko16_state::wingforc(machine_config &config)
OKIM6295(config, m_oki[0], XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH);
m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
m_oki[0]->set_addrmap(0, &kaneko16_state::bakubrkr_oki1_map);
-}
+MACHINE_CONFIG_END
/***************************************************************************
@@ -2035,12 +2035,12 @@ void kaneko16_state::gtmr_oki2_map(address_map &map)
map(0x00000, 0x3ffff).bankr("okibank2");
}
-void kaneko16_gtmr_state::gtmr(machine_config &config)
-{
+MACHINE_CONFIG_START(kaneko16_gtmr_state::gtmr)
+
/* basic machine hardware */
M68000(config, m_maincpu, XTAL(16'000'000)); /* verified on pcb */
m_maincpu->set_addrmap(AS_PROGRAM, &kaneko16_gtmr_state::gtmr_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(kaneko16_state::kaneko16_interrupt), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1)
MCFG_MACHINE_RESET_OVERRIDE(kaneko16_gtmr_state,gtmr)
@@ -2049,14 +2049,14 @@ void kaneko16_gtmr_state::gtmr(machine_config &config)
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(320, 240);
- m_screen->set_visarea(0, 320-1, 0, 240-1);
- m_screen->set_screen_update(FUNC(kaneko16_state::screen_update_kaneko16));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(320, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(kaneko16_state, screen_update_kaneko16)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_1x8bit_2x4bit);
PALETTE(config, m_palette).set_format(palette_device::xGRB_555, 32768);
@@ -2091,30 +2091,27 @@ void kaneko16_gtmr_state::gtmr(machine_config &config)
OKIM6295(config, m_oki[1], XTAL(16'000'000)/8, okim6295_device::PIN7_LOW); /* verified on pcb */
m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.5);
m_oki[1]->set_addrmap(0, &kaneko16_gtmr_state::gtmr_oki2_map);
-}
+MACHINE_CONFIG_END
-void kaneko16_gtmr_state::gtmre(machine_config &config)
-{
+MACHINE_CONFIG_START(kaneko16_gtmr_state::gtmre)
gtmr(config);
m_toybox->set_table(kaneko_toybox_device::TABLE_ALT);
-}
+MACHINE_CONFIG_END
/***************************************************************************
Great 1000 Miles Rally 2
***************************************************************************/
-void kaneko16_gtmr_state::gtmr2(machine_config &config)
-{
+MACHINE_CONFIG_START(kaneko16_gtmr_state::gtmr2)
gtmre(config);
m_maincpu->set_addrmap(AS_PROGRAM, &kaneko16_gtmr_state::gtmr2_map);
-}
+MACHINE_CONFIG_END
/***************************************************************************
Blood Warrior
***************************************************************************/
-void kaneko16_gtmr_state::bloodwar(machine_config &config)
-{
+MACHINE_CONFIG_START(kaneko16_gtmr_state::bloodwar)
gtmr(config);
/* basic machine hardware */
@@ -2122,7 +2119,7 @@ void kaneko16_gtmr_state::bloodwar(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(kaneko16_gtmr_state, gtmr)
m_kaneko_spr->set_priorities(2 /* never used? */ ,3 /* character selection / vs. portraits */ ,5 /* winning portrait*/ ,7 /* ? */);
-}
+MACHINE_CONFIG_END
@@ -2130,8 +2127,7 @@ void kaneko16_gtmr_state::bloodwar(machine_config &config)
Bonk's Adventure
***************************************************************************/
-void kaneko16_gtmr_state::bonkadv(machine_config &config)
-{
+MACHINE_CONFIG_START(kaneko16_gtmr_state::bonkadv)
gtmr(config);
/* basic machine hardware */
@@ -2142,18 +2138,17 @@ void kaneko16_gtmr_state::bonkadv(machine_config &config)
m_toybox->set_game_type(kaneko_toybox_device::GAME_BONK);
m_kaneko_hit->set_type(0);
-}
+MACHINE_CONFIG_END
/***************************************************************************
Magical Crystal
***************************************************************************/
-void kaneko16_state::mgcrystl(machine_config &config)
-{
+MACHINE_CONFIG_START(kaneko16_state::mgcrystl)
/* basic machine hardware */
M68000(config, m_maincpu, XTAL(12'000'000)); /* verified on pcb, TMP68HC000N-12 @U31 and X2 is 12MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &kaneko16_state::mgcrystl_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(kaneko16_state::kaneko16_interrupt), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1)
MCFG_MACHINE_RESET_OVERRIDE(kaneko16_state,mgcrystl)
@@ -2162,14 +2157,14 @@ void kaneko16_state::mgcrystl(machine_config &config)
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 256-1, 0+16, 256-16-1);
- m_screen->set_screen_update(FUNC(kaneko16_state::screen_update_kaneko16));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(kaneko16_state, screen_update_kaneko16)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_1x4bit_2x4bit);
PALETTE(config, m_palette).set_format(palette_device::xGRB_555, 2048);
@@ -2203,7 +2198,7 @@ void kaneko16_state::mgcrystl(machine_config &config)
OKIM6295(config, m_oki[0], XTAL(12'000'000)/6, okim6295_device::PIN7_HIGH); /* verified on pcb */
m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
@@ -2266,12 +2261,12 @@ static const uint16_t shogwarr_default_eeprom[64] = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0000, 0x0000, 0xFFFF
};
-void kaneko16_shogwarr_state::shogwarr(machine_config &config)
-{
+MACHINE_CONFIG_START(kaneko16_shogwarr_state::shogwarr)
+
/* basic machine hardware */
M68000(config, m_maincpu, XTAL(12'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &kaneko16_shogwarr_state::shogwarr_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(kaneko16_shogwarr_state::shogwarr_interrupt), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_shogwarr_state, shogwarr_interrupt, "screen", 0, 1)
MCFG_MACHINE_RESET_OVERRIDE(kaneko16_shogwarr_state,mgcrystl)
@@ -2280,14 +2275,14 @@ void kaneko16_shogwarr_state::shogwarr(machine_config &config)
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(59.1854);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(320, 240);
- m_screen->set_visarea(40, 296-1, 16, 240-1);
- m_screen->set_screen_update(FUNC(kaneko16_state::screen_update_kaneko16));
- m_screen->set_palette(m_palette);
- m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.1854)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(320, 240)
+ MCFG_SCREEN_VISIBLE_AREA(40, 296-1, 16, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(kaneko16_state, screen_update_kaneko16)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_1x4bit_1x4bit);
PALETTE(config, m_palette).set_format(palette_device::xGRB_555, 2048);
@@ -2320,7 +2315,7 @@ void kaneko16_shogwarr_state::shogwarr(machine_config &config)
OKIM6295(config, m_oki[1], XTAL(16'000'000)/8, okim6295_device::PIN7_LOW);
m_oki[1]->set_addrmap(0, &kaneko16_shogwarr_state::gtmr_oki2_map);
m_oki[1]->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
static const uint16_t brapboys_default_eeprom[64] = {
diff --git a/src/mame/drivers/kangaroo.cpp b/src/mame/drivers/kangaroo.cpp
index c0d8de228bf..62fff7f69c5 100644
--- a/src/mame/drivers/kangaroo.cpp
+++ b/src/mame/drivers/kangaroo.cpp
@@ -418,24 +418,24 @@ INPUT_PORTS_END
*
*************************************/
-void kangaroo_state::nomcu(machine_config &config)
-{
+MACHINE_CONFIG_START(kangaroo_state::nomcu)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &kangaroo_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(kangaroo_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", kangaroo_state, irq0_line_hold)
- z80_device &audiocpu(Z80(config, "audiocpu", MASTER_CLOCK/8));
- audiocpu.set_addrmap(AS_PROGRAM, &kangaroo_state::sound_map);
- audiocpu.set_addrmap(AS_IO, &kangaroo_state::sound_map); // yes, this is identical
- audiocpu.set_vblank_int("screen", FUNC(kangaroo_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("audiocpu", Z80, MASTER_CLOCK/8)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_map) // yes, this is identical
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", kangaroo_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_video_attributes(VIDEO_UPDATE_SCANLINE);
- screen.set_raw(MASTER_CLOCK, 320*2, 0*2, 256*2, 260, 8, 248);
- screen.set_screen_update(FUNC(kangaroo_state::screen_update_kangaroo));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK, 320*2, 0*2, 256*2, 260, 8, 248)
+ MCFG_SCREEN_UPDATE_DRIVER(kangaroo_state, screen_update_kangaroo)
PALETTE(config, m_palette, palette_device::BGR_3BIT);
@@ -445,17 +445,17 @@ void kangaroo_state::nomcu(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
AY8910(config, "aysnd", MASTER_CLOCK/8).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
-void kangaroo_state::mcu(machine_config &config)
-{
+MACHINE_CONFIG_START(kangaroo_state::mcu)
nomcu(config);
MCFG_MACHINE_START_OVERRIDE(kangaroo_state,kangaroo_mcu)
- MB8841(config, "mcu", MASTER_CLOCK/4/2).set_disable();
-}
+ MCFG_DEVICE_ADD("mcu", MB8841, MASTER_CLOCK/4/2)
+ MCFG_DEVICE_DISABLE()
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/karnov.cpp b/src/mame/drivers/karnov.cpp
index cb058bed589..0836e82942a 100644
--- a/src/mame/drivers/karnov.cpp
+++ b/src/mame/drivers/karnov.cpp
@@ -769,10 +769,10 @@ void karnov_state::machine_reset()
void karnov_state::karnov(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 10000000); /* 10 MHz */
+ M68000(config, m_maincpu, 10000000); /* 10 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &karnov_state::karnov_map);
- M6502(config, m_audiocpu, 1500000); /* Accurate */
+ M6502(config, m_audiocpu, 1500000); /* Accurate */
m_audiocpu->set_addrmap(AS_PROGRAM, &karnov_state::karnov_sound_map);
/* video hardware */
diff --git a/src/mame/drivers/kas89.cpp b/src/mame/drivers/kas89.cpp
index 5de1f4a17af..fffa09cd05e 100644
--- a/src/mame/drivers/kas89.cpp
+++ b/src/mame/drivers/kas89.cpp
@@ -767,18 +767,18 @@ INPUT_PORTS_END
* Machine Driver *
**************************************/
-void kas89_state::kas89(machine_config &config)
-{
+MACHINE_CONFIG_START(kas89_state::kas89)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/6); /* Confirmed */
- m_maincpu->set_addrmap(AS_PROGRAM, &kas89_state::kas89_map);
- m_maincpu->set_addrmap(AS_IO, &kas89_state::kas89_io);
- TIMER(config, "kas89_nmi").configure_periodic(FUNC(kas89_state::kas89_nmi_cb), attotime::from_hz(138));
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6) /* Confirmed */
+ MCFG_DEVICE_PROGRAM_MAP(kas89_map)
+ MCFG_DEVICE_IO_MAP(kas89_io)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("kas89_nmi", kas89_state, kas89_nmi_cb, attotime::from_hz(138))
- Z80(config, m_audiocpu, MASTER_CLOCK/6); /* Confirmed */
- m_audiocpu->set_addrmap(AS_PROGRAM, &kas89_state::audio_map);
- m_audiocpu->set_addrmap(AS_IO, &kas89_state::audio_io);
- TIMER(config, "kas89_snmi").configure_periodic(FUNC(kas89_state::kas89_sound_nmi_cb), attotime::from_hz(138));
+ MCFG_DEVICE_ADD("audiocpu", Z80, MASTER_CLOCK/6) /* Confirmed */
+ MCFG_DEVICE_PROGRAM_MAP(audio_map)
+ MCFG_DEVICE_IO_MAP(audio_io)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("kas89_snmi", kas89_state, kas89_sound_nmi_cb, attotime::from_hz(138))
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -795,7 +795,7 @@ void kas89_state::kas89(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
AY8910(config, "aysnd", MASTER_CLOCK/12).add_route(ALL_OUTPUTS, "mono", 1.0); /* Confirmed */
-}
+MACHINE_CONFIG_END
/**************************************
diff --git a/src/mame/drivers/kaypro.cpp b/src/mame/drivers/kaypro.cpp
index 76fad038721..407c985cfa4 100644
--- a/src/mame/drivers/kaypro.cpp
+++ b/src/mame/drivers/kaypro.cpp
@@ -206,35 +206,34 @@ MACHINE_CONFIG_START(kaypro_state::kayproii)
MCFG_MACHINE_RESET_OVERRIDE(kaypro_state, kaypro )
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER, rgb_t::green());
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(80*7, 24*10);
- m_screen->set_visarea(0, 80*7-1, 0, 24*10-1);
- m_screen->set_screen_update(FUNC(kaypro_state::screen_update_kayproii));
- m_screen->set_palette(m_palette);
-
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(80*7, 24*10)
+ MCFG_SCREEN_VISIBLE_AREA(0,80*7-1,0,24*10-1)
MCFG_VIDEO_START_OVERRIDE(kaypro_state, kaypro )
+ MCFG_SCREEN_UPDATE_DRIVER(kaypro_state, screen_update_kayproii)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_kayproii);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_kayproii)
PALETTE(config, m_palette, palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beep, 950).add_route(ALL_OUTPUTS, "mono", 1.00); /* piezo-device needs to be measured */
+ MCFG_DEVICE_ADD("beeper", BEEP, 950) /* piezo-device needs to be measured */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* devices */
- MCFG_QUICKLOAD_ADD("quickload", kaypro_state, kaypro, "com,cpm", attotime::from_seconds(3))
+ MCFG_QUICKLOAD_ADD("quickload", kaypro_state, kaypro, "com,cpm", 3)
kaypro_10_keyboard_device &kbd(KAYPRO_10_KEYBOARD(config, "kbd"));
kbd.rxd_cb().set("sio", FUNC(z80sio_device::rxb_w));
kbd.rxd_cb().append("sio", FUNC(z80sio_device::syncb_w));
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(kaypro_state::write_centronics_busy));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, kaypro_state, write_centronics_busy))
- output_latch_device &latch(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(latch);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
rs232_port_device &serial(RS232_PORT(config, "serial", default_rs232_devices, nullptr));
serial.rxd_handler().set("sio", FUNC(z80sio_device::rxa_w));
@@ -267,21 +266,23 @@ MACHINE_CONFIG_START(kaypro_state::kayproii)
m_fdc->intrq_wr_callback().set(FUNC(kaypro_state::fdc_intrq_w));
m_fdc->drq_wr_callback().set(FUNC(kaypro_state::fdc_drq_w));
m_fdc->set_force_ready(true);
- FLOPPY_CONNECTOR(config, "fdc:0", kaypro_floppies, "525ssdd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", kaypro_floppies, "525ssdd", floppy_image_device::default_floppy_formats).enable_sound(true);
- SOFTWARE_LIST(config, "flop_list").set_original("kayproii");
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", kaypro_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", kaypro_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_SOFTWARE_LIST_ADD("flop_list","kayproii")
MACHINE_CONFIG_END
-void kaypro_state::kayproiv(machine_config &config)
-{
+MACHINE_CONFIG_START(kaypro_state::kayproiv)
kayproii(config);
m_pio_s->set_clock(2500000);
m_pio_s->out_pa_callback().set(FUNC(kaypro_state::kayproiv_pio_system_w));
- config.device_remove("fdc:0");
- config.device_remove("fdc:1");
- FLOPPY_CONNECTOR(config, "fdc:0", kaypro_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", kaypro_floppies, "525dd", floppy_image_device::default_floppy_formats);
-}
+ MCFG_DEVICE_REMOVE("fdc:0")
+ MCFG_DEVICE_REMOVE("fdc:1")
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", kaypro_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", kaypro_floppies, "525dd", floppy_image_device::default_floppy_formats)
+MACHINE_CONFIG_END
MACHINE_CONFIG_START(kaypro_state::kaypro484)
/* basic machine hardware */
@@ -293,14 +294,13 @@ MACHINE_CONFIG_START(kaypro_state::kaypro484)
MCFG_MACHINE_RESET_OVERRIDE(kaypro_state, kaypro )
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(80*8, 25*16);
- m_screen->set_visarea(0,80*8-1,0,25*16-1);
- m_screen->set_screen_update(FUNC(kaypro_state::screen_update_kaypro484));
-
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(80*8, 25*16)
+ MCFG_SCREEN_VISIBLE_AREA(0,80*8-1,0,25*16-1)
MCFG_VIDEO_START_OVERRIDE(kaypro_state, kaypro )
+ MCFG_SCREEN_UPDATE_DRIVER(kaypro_state, screen_update_kaypro484)
GFXDECODE(config, "gfxdecode", m_palette, gfx_kaypro484);
PALETTE(config, m_palette, FUNC(kaypro_state::kaypro_palette), 3);
@@ -316,7 +316,7 @@ MACHINE_CONFIG_START(kaypro_state::kaypro484)
m_crtc->set_char_width(7);
m_crtc->set_update_row_callback(FUNC(kaypro_state::kaypro484_update_row), this);
- MCFG_QUICKLOAD_ADD("quickload", kaypro_state, kaypro, "com,cpm", attotime::from_seconds(3))
+ MCFG_QUICKLOAD_ADD("quickload", kaypro_state, kaypro, "com,cpm", 3)
kaypro_10_keyboard_device &kbd(KAYPRO_10_KEYBOARD(config, "kbd"));
kbd.rxd_cb().set("sio_1", FUNC(z80sio_device::rxb_w));
@@ -324,11 +324,10 @@ MACHINE_CONFIG_START(kaypro_state::kaypro484)
CLOCK(config, "kbdtxrxc", 4800).signal_handler().set("sio_1", FUNC(z80sio_device::rxtxcb_w));
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(kaypro_state::write_centronics_busy));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, kaypro_state, write_centronics_busy))
- output_latch_device &latch(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(latch);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
rs232_port_device &modem(RS232_PORT(config, "modem", default_rs232_devices, nullptr));
modem.rxd_handler().set("sio_1", FUNC(z80sio_device::rxa_w));
@@ -362,37 +361,38 @@ MACHINE_CONFIG_START(kaypro_state::kaypro484)
m_fdc->intrq_wr_callback().set(FUNC(kaypro_state::fdc_intrq_w));
m_fdc->drq_wr_callback().set(FUNC(kaypro_state::fdc_drq_w));
m_fdc->set_force_ready(true);
- FLOPPY_CONNECTOR(config, "fdc:0", kaypro_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", kaypro_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", kaypro_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", kaypro_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MACHINE_CONFIG_END
-void kaypro_state::kaypro10(machine_config &config)
-{
+MACHINE_CONFIG_START(kaypro_state::kaypro10)
kaypro484(config);
- config.device_remove("fdc:1"); // only has 1 floppy drive
+ MCFG_DEVICE_REMOVE("fdc:1") // only has 1 floppy drive
// need to add hard drive & controller
-}
+MACHINE_CONFIG_END
-void kaypro_state::kaypronew2(machine_config &config)
-{
+MACHINE_CONFIG_START(kaypro_state::kaypronew2)
kaypro484(config);
- config.device_remove("fdc:1"); // only has 1 floppy drive
-}
+ MCFG_DEVICE_REMOVE("fdc:1") // only has 1 floppy drive
+MACHINE_CONFIG_END
-void kaypro_state::kaypro284(machine_config &config)
-{
+MACHINE_CONFIG_START(kaypro_state::kaypro284)
kaypro484(config);
- config.device_remove("fdc:0");
- config.device_remove("fdc:1");
- FLOPPY_CONNECTOR(config, "fdc:0", kaypro_floppies, "525ssdd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", kaypro_floppies, "525ssdd", floppy_image_device::default_floppy_formats).enable_sound(true);
-}
+ MCFG_DEVICE_REMOVE("fdc:0")
+ MCFG_DEVICE_REMOVE("fdc:1")
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", kaypro_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", kaypro_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+MACHINE_CONFIG_END
-void kaypro_state::omni2(machine_config &config)
-{
+MACHINE_CONFIG_START(kaypro_state::omni2)
kayproiv(config);
- m_screen->set_screen_update(FUNC(kaypro_state::screen_update_omni2));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(kaypro_state, screen_update_omni2)
+MACHINE_CONFIG_END
void kaypro_state::init_kaypro()
{
diff --git a/src/mame/drivers/kc.cpp b/src/mame/drivers/kc.cpp
index 38bebdf1a0a..7fbf8fed1ec 100644
--- a/src/mame/drivers/kc.cpp
+++ b/src/mame/drivers/kc.cpp
@@ -96,15 +96,14 @@ void kc85_exp(device_slot_interface &device)
}
-void kc_state::kc85_3(machine_config &config)
-{
+MACHINE_CONFIG_START(kc_state::kc85_3)
/* basic machine hardware */
Z80(config, m_maincpu, KC85_3_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &kc_state::kc85_3_mem);
m_maincpu->set_addrmap(AS_IO, &kc_state::kc85_3_io);
m_maincpu->set_daisy_config(kc85_daisy_chain);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
Z80PIO(config, m_z80pio, KC85_3_CLOCK);
m_z80pio->out_int_callback().set_inputline(m_maincpu, 0);
@@ -122,11 +121,11 @@ void kc_state::kc85_3(machine_config &config)
m_z80ctc->zc_callback<2>().set(FUNC(kc_state::video_toggle_blink_state));
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(28'375'160)/2, 908, 0, 320, 312, 0, 256);
- m_screen->set_screen_update(FUNC(kc_state::screen_update));
- m_screen->set_palette("palette");
- TIMER(config, "scantimer").configure_scanline(FUNC(kc_state::kc_scanline), "screen", 0, 1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(28'375'160)/2, 908, 0, 320, 312, 0, 256)
+ MCFG_SCREEN_UPDATE_DRIVER(kc_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kc_state, kc_scanline, "screen", 0, 1)
PALETTE(config, "palette", FUNC(kc_state::kc85_palette), KC85_PALETTE_SIZE);
@@ -135,55 +134,56 @@ void kc_state::kc85_3(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
/* devices */
- quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(kc_state, kc), this), "kcc", attotime::from_seconds(2));
+ MCFG_QUICKLOAD_ADD("quickload", kc_state, kc, "kcc", 2)
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(kc_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY);
- m_cassette->set_interface("kc_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(kc_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY)
+ MCFG_CASSETTE_INTERFACE("kc_cass")
/* cartridge slot */
- KCCART_SLOT(config, m_expansions[0], kc85_cart, "m011");
- m_expansions[0]->set_next_slot("mc");
- m_expansions[0]->irq().set_inputline(m_maincpu, 0);
- m_expansions[0]->nmi().set_inputline(m_maincpu, INPUT_LINE_NMI);
- m_expansions[0]->halt().set_inputline(m_maincpu, INPUT_LINE_HALT);
-
- KCCART_SLOT(config, m_expansions[1], kc85_cart, nullptr);
- m_expansions[1]->set_next_slot("exp");
- m_expansions[1]->irq().set_inputline(m_maincpu, 0);
- m_expansions[1]->nmi().set_inputline(m_maincpu, INPUT_LINE_NMI);
- m_expansions[1]->halt().set_inputline(m_maincpu, INPUT_LINE_HALT);
+ MCFG_DEVICE_ADD("m8", KCCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(kc85_cart, "m011", false)
+ MCFG_KCCART_SLOT_NEXT_SLOT("mc")
+ MCFG_KCCART_SLOT_OUT_IRQ_CB(INPUTLINE("maincpu", 0))
+ MCFG_KCCART_SLOT_OUT_NMI_CB(INPUTLINE("maincpu", INPUT_LINE_NMI))
+ MCFG_KCCART_SLOT_OUT_HALT_CB(INPUTLINE("maincpu", INPUT_LINE_HALT))
+ MCFG_DEVICE_ADD("mc", KCCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(kc85_cart, nullptr, false)
+ MCFG_KCCART_SLOT_NEXT_SLOT("exp")
+ MCFG_KCCART_SLOT_OUT_IRQ_CB(INPUTLINE("maincpu", 0))
+ MCFG_KCCART_SLOT_OUT_NMI_CB(INPUTLINE("maincpu", INPUT_LINE_NMI))
+ MCFG_KCCART_SLOT_OUT_HALT_CB(INPUTLINE("maincpu", INPUT_LINE_HALT))
/* expansion interface */
- KCEXP_SLOT(config, m_expansions[2], kc85_exp, nullptr);
- m_expansions[2]->set_next_slot(nullptr);
- m_expansions[2]->irq().set_inputline(m_maincpu, 0);
- m_expansions[2]->nmi().set_inputline(m_maincpu, INPUT_LINE_NMI);
- m_expansions[2]->halt().set_inputline(m_maincpu, INPUT_LINE_HALT);
+ MCFG_DEVICE_ADD("exp", KCEXP_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(kc85_exp, nullptr, false)
+ MCFG_KCEXP_SLOT_NEXT_SLOT(nullptr)
+ MCFG_KCEXP_SLOT_OUT_IRQ_CB(INPUTLINE("maincpu", 0))
+ MCFG_KCEXP_SLOT_OUT_NMI_CB(INPUTLINE("maincpu", INPUT_LINE_NMI))
+ MCFG_KCEXP_SLOT_OUT_HALT_CB(INPUTLINE("maincpu", INPUT_LINE_HALT))
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("kc_cart");
- SOFTWARE_LIST(config, "flop_list").set_original("kc_flop");
- SOFTWARE_LIST(config, "cass_list").set_original("kc_cass");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "kc_cart")
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "kc_flop")
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "kc_cass")
/* internal ram */
RAM(config, m_ram).set_default_size("16K");
-}
+MACHINE_CONFIG_END
-void kc85_4_state::kc85_4(machine_config &config)
-{
+
+MACHINE_CONFIG_START(kc85_4_state::kc85_4)
/* basic machine hardware */
Z80(config, m_maincpu, KC85_4_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &kc85_4_state::kc85_4_mem);
m_maincpu->set_addrmap(AS_IO, &kc85_4_state::kc85_4_io);
m_maincpu->set_daisy_config(kc85_daisy_chain);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
Z80PIO(config, m_z80pio, KC85_4_CLOCK);
m_z80pio->out_int_callback().set_inputline(m_maincpu, 0);
@@ -201,11 +201,11 @@ void kc85_4_state::kc85_4(machine_config &config)
m_z80ctc->zc_callback<2>().set(FUNC(kc_state::video_toggle_blink_state));
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(28'375'160)/2, 908, 0, 320, 312, 0, 256);
- m_screen->set_screen_update(FUNC(kc85_4_state::screen_update));
- m_screen->set_palette("palette");
- TIMER(config, "scantimer").configure_scanline(FUNC(kc85_4_state::kc_scanline), "screen", 0, 1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(28'375'160)/2, 908, 0, 320, 312, 0, 256)
+ MCFG_SCREEN_UPDATE_DRIVER(kc85_4_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kc85_4_state, kc_scanline, "screen", 0, 1)
PALETTE(config, "palette", FUNC(kc85_4_state::kc85_palette), KC85_PALETTE_SIZE);
@@ -214,46 +214,47 @@ void kc85_4_state::kc85_4(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
/* devices */
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(kc_state, kc), this), "kcc", attotime::from_seconds(2));
+ MCFG_QUICKLOAD_ADD("quickload", kc_state, kc, "kcc", 2)
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(kc_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY);
- m_cassette->set_interface("kc_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(kc_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY)
+ MCFG_CASSETTE_INTERFACE("kc_cass")
/* cartridge slot */
- KCCART_SLOT(config, m_expansions[0], kc85_cart, "m011");
- m_expansions[0]->set_next_slot("mc");
- m_expansions[0]->irq().set_inputline(m_maincpu, 0);
- m_expansions[0]->nmi().set_inputline(m_maincpu, INPUT_LINE_NMI);
- m_expansions[0]->halt().set_inputline(m_maincpu, INPUT_LINE_HALT);
-
- KCCART_SLOT(config, m_expansions[1], kc85_cart, nullptr);
- m_expansions[1]->set_next_slot("exp");
- m_expansions[1]->irq().set_inputline(m_maincpu, 0);
- m_expansions[1]->nmi().set_inputline(m_maincpu, INPUT_LINE_NMI);
- m_expansions[1]->halt().set_inputline(m_maincpu, INPUT_LINE_HALT);
+ MCFG_DEVICE_ADD("m8", KCCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(kc85_cart, "m011", false)
+ MCFG_KCCART_SLOT_NEXT_SLOT("mc")
+ MCFG_KCCART_SLOT_OUT_IRQ_CB(INPUTLINE("maincpu", 0))
+ MCFG_KCCART_SLOT_OUT_NMI_CB(INPUTLINE("maincpu", INPUT_LINE_NMI))
+ MCFG_KCCART_SLOT_OUT_HALT_CB(INPUTLINE("maincpu", INPUT_LINE_HALT))
+ MCFG_DEVICE_ADD("mc", KCCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(kc85_cart, nullptr, false)
+ MCFG_KCCART_SLOT_NEXT_SLOT("exp")
+ MCFG_KCCART_SLOT_OUT_IRQ_CB(INPUTLINE("maincpu", 0))
+ MCFG_KCCART_SLOT_OUT_NMI_CB(INPUTLINE("maincpu", INPUT_LINE_NMI))
+ MCFG_KCCART_SLOT_OUT_HALT_CB(INPUTLINE("maincpu", INPUT_LINE_HALT))
/* expansion interface */
- KCEXP_SLOT(config, m_expansions[2], kc85_exp, nullptr);
- m_expansions[2]->set_next_slot(nullptr);
- m_expansions[2]->irq().set_inputline(m_maincpu, 0);
- m_expansions[2]->nmi().set_inputline(m_maincpu, INPUT_LINE_NMI);
- m_expansions[2]->halt().set_inputline(m_maincpu, INPUT_LINE_HALT);
+ MCFG_DEVICE_ADD("exp", KCEXP_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(kc85_exp, nullptr, false)
+ MCFG_KCEXP_SLOT_NEXT_SLOT(nullptr)
+ MCFG_KCEXP_SLOT_OUT_IRQ_CB(INPUTLINE("maincpu", 0))
+ MCFG_KCEXP_SLOT_OUT_NMI_CB(INPUTLINE("maincpu", INPUT_LINE_NMI))
+ MCFG_KCEXP_SLOT_OUT_HALT_CB(INPUTLINE("maincpu", INPUT_LINE_HALT))
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("kc_cart");
- SOFTWARE_LIST(config, "flop_list").set_original("kc_flop");
- SOFTWARE_LIST(config, "cass_list").set_original("kc_cass");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "kc_cart")
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "kc_flop")
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "kc_cass")
/* internal ram */
RAM(config, m_ram).set_default_size("64K");
-}
+MACHINE_CONFIG_END
void kc85_4_state::kc85_5(machine_config &config)
{
diff --git a/src/mame/drivers/kchamp.cpp b/src/mame/drivers/kchamp.cpp
index 8c4a19ef8b3..b60421bca77 100644
--- a/src/mame/drivers/kchamp.cpp
+++ b/src/mame/drivers/kchamp.cpp
@@ -92,11 +92,11 @@ WRITE_LINE_MEMBER(kchamp_state::sound_reset_w)
{
m_ay[0]->reset();
m_ay[1]->reset();
- sound_control_w(0);
+ sound_control_w(machine().dummy_space(), 0, 0);
}
}
-void kchamp_state::sound_control_w(u8 data)
+WRITE8_MEMBER(kchamp_state::sound_control_w)
{
m_msm->reset_w(!(data & 1));
m_sound_nmi_enable = ((data >> 1) & 1);
@@ -404,19 +404,18 @@ void kchamp_state::machine_reset()
m_sound_nmi_enable = 0;
}
-void kchamp_state::kchampvs(machine_config &config)
-{
+MACHINE_CONFIG_START(kchamp_state::kchampvs)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/4); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &kchamp_state::kchampvs_map);
- m_maincpu->set_addrmap(AS_IO, &kchamp_state::kchampvs_io_map);
- m_maincpu->set_addrmap(AS_OPCODES, &kchamp_state::decrypted_opcodes_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/4) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(kchampvs_map)
+ MCFG_DEVICE_IO_MAP(kchampvs_io_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
- Z80(config, m_audiocpu, XTAL(12'000'000)/4); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &kchamp_state::kchampvs_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &kchamp_state::kchampvs_sound_io_map);
- /* IRQs triggered from main CPU */
- /* NMIs from MSM5205 */
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(12'000'000)/4) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(kchampvs_sound_map)
+ MCFG_DEVICE_IO_MAP(kchampvs_sound_io_map) /* irq's triggered from main cpu */
+ /* nmi's from msm5205 */
ls259_device &mainlatch(LS259(config, "mainlatch")); // 8C
mainlatch.q_out_cb<0>().set(FUNC(kchamp_state::flipscreen_w));
@@ -426,16 +425,16 @@ void kchamp_state::kchampvs(machine_config &config)
MCFG_MACHINE_START_OVERRIDE(kchamp_state,kchampvs)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.10); /* verified on pcb */
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(kchamp_state::screen_update_kchampvs));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(kchamp_state::vblank_irq));
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_kchamp);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.10) /* verified on pcb */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(kchamp_state, screen_update_kchampvs)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, kchamp_state, vblank_irq))
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_kchamp)
PALETTE(config, m_palette, FUNC(kchamp_state::kchamp_palette), 256);
/* sound hardware */
@@ -445,34 +444,35 @@ void kchamp_state::kchampvs(machine_config &config)
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
AY8910(config, m_ay[0], XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "speaker", 0.3); /* verified on pcb */
+
AY8910(config, m_ay[1], XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "speaker", 0.3); /* verified on pcb */
LS157(config, m_adpcm_select, 0); // at 4C
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
- MSM5205(config, m_msm, 375000); /* verified on pcb, discrete circuit clock */
- m_msm->vck_callback().set(FUNC(kchamp_state::msmint)); /* interrupt function */
- m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 1 / 96 = 3906.25Hz playback */
- m_msm->add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 375000) /* verified on pcb, discrete circuit clock */
+ MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, kchamp_state, msmint)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 1 / 96 = 3906.25Hz playback */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
/********************
* 1 Player Version *
********************/
-void kchamp_state::kchamp(machine_config &config)
-{
+MACHINE_CONFIG_START(kchamp_state::kchamp)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/4); /* 12MHz / 4 = 3.0 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &kchamp_state::kchamp_map);
- m_maincpu->set_addrmap(AS_IO, &kchamp_state::kchamp_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/4) /* 12MHz / 4 = 3.0 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(kchamp_map)
+ MCFG_DEVICE_IO_MAP(kchamp_io_map)
- Z80(config, m_audiocpu, XTAL(12'000'000)/4); /* 12MHz / 4 = 3.0 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &kchamp_state::kchamp_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &kchamp_state::kchamp_sound_io_map);
- m_audiocpu->set_periodic_int(FUNC(kchamp_state::sound_int), attotime::from_hz(125)); /* Hz */
- /* IRQs triggered from main CPU */
- /* NMIs from 125Hz clock */
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(12'000'000)/4) /* 12MHz / 4 = 3.0 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(kchamp_sound_map)
+ MCFG_DEVICE_IO_MAP(kchamp_sound_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(kchamp_state, sound_int, 125) /* Hz */
+ /* irq's triggered from main cpu */
+ /* nmi's from 125 Hz clock */
ls259_device &mainlatch(LS259(config, "mainlatch")); // IC71
mainlatch.q_out_cb<0>().set(FUNC(kchamp_state::flipscreen_w));
@@ -481,16 +481,16 @@ void kchamp_state::kchamp(machine_config &config)
MCFG_MACHINE_START_OVERRIDE(kchamp_state,kchamp)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(kchamp_state::screen_update_kchamp));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(kchamp_state::vblank_irq));
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_kchamp);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(kchamp_state, screen_update_kchamp)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, kchamp_state, vblank_irq))
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_kchamp)
PALETTE(config, m_palette, FUNC(kchamp_state::kchamp_palette), 256);
/* sound hardware */
@@ -500,13 +500,13 @@ void kchamp_state::kchamp(machine_config &config)
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
AY8910(config, m_ay[0], XTAL(12'000'000)/12).add_route(ALL_OUTPUTS, "speaker", 0.3); /* Guess based on actual pcb recordings of karatedo */
+
AY8910(config, m_ay[1], XTAL(12'000'000)/12).add_route(ALL_OUTPUTS, "speaker", 0.3); /* Guess based on actual pcb recordings of karatedo */
- DAC08(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.3); // IC11
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC08, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.3) // IC11
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
/***************************************************************************
@@ -681,92 +681,6 @@ ROM_START( kchampvs2 )
ROM_LOAD( "lt.k8", 0x0200, 0x0100, CRC(ba4a5651) SHA1(77e81bd64ab59a7466d20eabdff4be241e963c52) ) /* blue */
ROM_END
-// This version has a mix of the "Karate Champ (US VS version, set 1)" ROMs and a few ROMs unique to "Taisen Karate Dou (Japan VS version)" along with 1 completely unique program ROM.
-// The only difference is instead of "My hero" as found in the later US sets it says "My hero deserves the fair".
-ROM_START( kchampvs3 )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "bs24.d13", 0x00000, 0x02000, CRC(829da69b) SHA1(3266e7686e537f34ee5ce4cccc349eb12fc65038) )
- ROM_LOAD( "bs23.d11", 0x02000, 0x02000, CRC(091f810e) SHA1(283edb08ce106835185a1c2d6b88f7544d75f3b4) )
- ROM_LOAD( "bs22.d10", 0x04000, 0x02000, CRC(d4df2a52) SHA1(60d6cb1cb51c6f80a0f88913d4152ab8bda752d6) )
- ROM_LOAD( "bs21.d8", 0x06000, 0x02000, CRC(80839912) SHA1(4a3c6ad8eba756ae8e89faf42b72b41f85731e67) ) // only unique ROM
- ROM_LOAD( "bs20.d7", 0x08000, 0x02000, CRC(623a467b) SHA1(5f150c67632f8e32769b75aa0615d0eb018afdc4) )
- ROM_LOAD( "bs19.d6", 0x0a000, 0x02000, CRC(43e196c4) SHA1(8029798ea0a560603c3dcde56db5a1ccde58c514) )
- ROM_CONTINUE( 0x0e000, 0x02000 )
-
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */
- ROM_LOAD( "bs18.d4", 0x00000, 0x02000, CRC(eaa646eb) SHA1(cbd48f4d5d225b71c2dd0b14f420838561e3f83e) )
- ROM_LOAD( "bs17.d2", 0x02000, 0x02000, CRC(d71031ad) SHA1(b168f4ef4feb4195305404df699acecb731eab02) )
- ROM_LOAD( "bs16.d1", 0x04000, 0x02000, CRC(6f811c43) SHA1(1d33ac8129562ab709bd7396b4c2457b6db99277) )
-
- ROM_REGION( 0x08000, "gfx1", 0 )
- ROM_LOAD( "bs12.k1", 0x00000, 0x02000, CRC(4c574ecd) SHA1(86914eef33da73463ba6261eecae75209d24fac1) )
- ROM_LOAD( "bs13.k3", 0x02000, 0x02000, CRC(750b66af) SHA1(c7824994b977d4e846f3ecadfcfc51331f52b6f4) )
- ROM_LOAD( "bs14.k5", 0x04000, 0x02000, CRC(9ad6227c) SHA1(708af5e70927040cf7f2ae6f792344c19099530c) )
- ROM_LOAD( "bs15.k6", 0x06000, 0x02000, CRC(3b6d5de5) SHA1(288fffcbc9369db5c75e7e0d6181612de6f12da3) )
-
- ROM_REGION( 0x18000, "gfx2", 0 ) // 00, 06, 03 and 09 match the karatevs set
- ROM_LOAD( "bs00.a1", 0x00000, 0x02000, CRC(c46a8b88) SHA1(a47e56a6dc7f36b896b8156e77a1da7e8be2332e) )
- ROM_LOAD( "bs06.c1", 0x02000, 0x02000, CRC(cf8982ff) SHA1(aafb249503ad51f64b1f31ea2d869dfc0e065d19) )
- ROM_LOAD( "bs01.a3", 0x04000, 0x02000, CRC(b4842ea9) SHA1(471475f65edbd292b9162ad50e5cb0c7144845b0) )
- ROM_LOAD( "bs07.c3", 0x06000, 0x02000, CRC(8cd166a5) SHA1(4b623c4c0025d75b3ed9746f8b6730bf3e65d85a) )
- ROM_LOAD( "bs02.a5", 0x08000, 0x02000, CRC(4cbd3aa3) SHA1(a9a683dcc4f52b18450659a20434a4d2a7b411d9) )
- ROM_LOAD( "bs08.c5", 0x0a000, 0x02000, CRC(6be342a6) SHA1(0b8ac7ef7c6a6464fbc027a9fd17fa7ce1ffd962) )
- ROM_LOAD( "bs03.a6", 0x0c000, 0x02000, CRC(bde8a52b) SHA1(1a0800472caf8c79a15cc977dad1a7bc97c74b2b) )
- ROM_LOAD( "bs09.c6", 0x0e000, 0x02000, CRC(e9a5f945) SHA1(e6b21912bee97de06819c8ac85a45bbc70030f88) )
- ROM_LOAD( "bs04.a8", 0x10000, 0x02000, CRC(7346db8a) SHA1(d2b2c1700ae0ff9c614a9981a3da3d69879e9f25) )
- ROM_LOAD( "bs10.c8", 0x12000, 0x02000, CRC(b78714fc) SHA1(4df7f15c37d56a9d66d0049aad65b32063e5c29a) )
- ROM_LOAD( "bs05.a10", 0x14000, 0x02000, CRC(b2557102) SHA1(ec4285029fc3ee1ad0adb05f363b234c67f8903d) )
- ROM_LOAD( "bs11.c10", 0x16000, 0x02000, CRC(c85aba0e) SHA1(4be21b38623c2a8ae7f1e7397fb002e4cb9e4614) )
-
- ROM_REGION( 0x0300, "proms", 0 )
- ROM_LOAD( "br27.k10", 0x0000, 0x0100, CRC(f683c54a) SHA1(92893990456b92f04a2be98b8e9626e97b7a2562) ) /* red */
- ROM_LOAD( "br26.k9", 0x0100, 0x0100, CRC(3ddbb6c4) SHA1(0eca5594d6812bc79f8b78f83fe003877d20c973) ) /* green */
- ROM_LOAD( "br25.k8", 0x0200, 0x0100, CRC(ba4a5651) SHA1(77e81bd64ab59a7466d20eabdff4be241e963c52) ) /* blue */
-ROM_END
-
-// This version has a mix of the "Karate Champ (US VS version, set 1)" ROMs and a few ROMs unique to "Taisen Karate Dou (Japan VS version)".
-// It displays the dialog balloon in red with a boat below it.
-ROM_START( kchampvs4 )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "bs24.d13", 0x00000, 0x02000, CRC(829da69b) SHA1(3266e7686e537f34ee5ce4cccc349eb12fc65038) )
- ROM_LOAD( "bs23.d11", 0x02000, 0x02000, CRC(091f810e) SHA1(283edb08ce106835185a1c2d6b88f7544d75f3b4) )
- ROM_LOAD( "bs22.d10", 0x04000, 0x02000, CRC(d4df2a52) SHA1(60d6cb1cb51c6f80a0f88913d4152ab8bda752d6) )
- ROM_LOAD( "bs21.d8", 0x06000, 0x02000, CRC(3d4ef0da) SHA1(228c8e47bb7123b69746506402edb875a43d7af5) )
- ROM_LOAD( "bs20.d7", 0x08000, 0x02000, CRC(623a467b) SHA1(5f150c67632f8e32769b75aa0615d0eb018afdc4) )
- ROM_LOAD( "bs19.d6", 0x0a000, 0x02000, CRC(43e196c4) SHA1(8029798ea0a560603c3dcde56db5a1ccde58c514) )
- ROM_CONTINUE( 0x0e000, 0x02000 )
-
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */
- ROM_LOAD( "bs18.d4", 0x00000, 0x02000, CRC(eaa646eb) SHA1(cbd48f4d5d225b71c2dd0b14f420838561e3f83e) )
- ROM_LOAD( "bs17.d2", 0x02000, 0x02000, CRC(d71031ad) SHA1(b168f4ef4feb4195305404df699acecb731eab02) )
- ROM_LOAD( "bs16.d1", 0x04000, 0x02000, CRC(6f811c43) SHA1(1d33ac8129562ab709bd7396b4c2457b6db99277) )
-
- ROM_REGION( 0x08000, "gfx1", 0 )
- ROM_LOAD( "bs12.k1", 0x00000, 0x02000, CRC(4c574ecd) SHA1(86914eef33da73463ba6261eecae75209d24fac1) )
- ROM_LOAD( "bs13.k3", 0x02000, 0x02000, CRC(750b66af) SHA1(c7824994b977d4e846f3ecadfcfc51331f52b6f4) )
- ROM_LOAD( "bs14.k5", 0x04000, 0x02000, CRC(9ad6227c) SHA1(708af5e70927040cf7f2ae6f792344c19099530c) )
- ROM_LOAD( "bs15.k6", 0x06000, 0x02000, CRC(3b6d5de5) SHA1(288fffcbc9369db5c75e7e0d6181612de6f12da3) )
-
- ROM_REGION( 0x18000, "gfx2", 0 ) // 00, 06, 03 and 09 match the karatevs set
- ROM_LOAD( "bs00.a1", 0x00000, 0x02000, CRC(c46a8b88) SHA1(a47e56a6dc7f36b896b8156e77a1da7e8be2332e) )
- ROM_LOAD( "bs06.c1", 0x02000, 0x02000, CRC(cf8982ff) SHA1(aafb249503ad51f64b1f31ea2d869dfc0e065d19) )
- ROM_LOAD( "bs01.a3", 0x04000, 0x02000, CRC(b4842ea9) SHA1(471475f65edbd292b9162ad50e5cb0c7144845b0) )
- ROM_LOAD( "bs07.c3", 0x06000, 0x02000, CRC(8cd166a5) SHA1(4b623c4c0025d75b3ed9746f8b6730bf3e65d85a) )
- ROM_LOAD( "bs02.a5", 0x08000, 0x02000, CRC(4cbd3aa3) SHA1(a9a683dcc4f52b18450659a20434a4d2a7b411d9) )
- ROM_LOAD( "bs08.c5", 0x0a000, 0x02000, CRC(6be342a6) SHA1(0b8ac7ef7c6a6464fbc027a9fd17fa7ce1ffd962) )
- ROM_LOAD( "bs03.a6", 0x0c000, 0x02000, CRC(bde8a52b) SHA1(1a0800472caf8c79a15cc977dad1a7bc97c74b2b) )
- ROM_LOAD( "bs09.c6", 0x0e000, 0x02000, CRC(e9a5f945) SHA1(e6b21912bee97de06819c8ac85a45bbc70030f88) )
- ROM_LOAD( "bs04.a8", 0x10000, 0x02000, CRC(7346db8a) SHA1(d2b2c1700ae0ff9c614a9981a3da3d69879e9f25) )
- ROM_LOAD( "bs10.c8", 0x12000, 0x02000, CRC(b78714fc) SHA1(4df7f15c37d56a9d66d0049aad65b32063e5c29a) )
- ROM_LOAD( "bs05.a10", 0x14000, 0x02000, CRC(b2557102) SHA1(ec4285029fc3ee1ad0adb05f363b234c67f8903d) )
- ROM_LOAD( "bs11.c10", 0x16000, 0x02000, CRC(c85aba0e) SHA1(4be21b38623c2a8ae7f1e7397fb002e4cb9e4614) )
-
- ROM_REGION( 0x0300, "proms", 0 )
- ROM_LOAD( "br27.k10", 0x0000, 0x0100, CRC(f683c54a) SHA1(92893990456b92f04a2be98b8e9626e97b7a2562) ) /* red */
- ROM_LOAD( "br26.k9", 0x0100, 0x0100, CRC(3ddbb6c4) SHA1(0eca5594d6812bc79f8b78f83fe003877d20c973) ) /* green */
- ROM_LOAD( "br25.k8", 0x0200, 0x0100, CRC(ba4a5651) SHA1(77e81bd64ab59a7466d20eabdff4be241e963c52) ) /* blue */
-ROM_END
-
ROM_START( karatevs )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "br24.d13", 0x00000, 0x02000, CRC(ea9cda49) SHA1(7d753a8d391418d0fe5231eb88b3627f7d3fd99e) )
@@ -858,6 +772,4 @@ GAME( 1984, kchamp, 0, kchamp, kchamp, kchamp_state, empty_init,
GAME( 1984, karatedo, kchamp, kchamp, kchamp, kchamp_state, empty_init, ROT90, "Data East Corporation", "Karate Dou (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1984, kchampvs, kchamp, kchampvs, kchampvs, kchamp_state, init_kchampvs, ROT90, "Data East USA", "Karate Champ (US VS version, set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1984, kchampvs2, kchamp, kchampvs, kchampvs, kchamp_state, init_kchampvs2, ROT90, "Data East USA", "Karate Champ (US VS version, set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, kchampvs3, kchamp, kchampvs, kchampvs, kchamp_state, init_kchampvs, ROT90, "Data East USA", "Karate Champ (US VS version, set 3)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, kchampvs4, kchamp, kchampvs, kchampvs, kchamp_state, init_kchampvs, ROT90, "Data East USA", "Karate Champ (US VS version, set 4)", MACHINE_SUPPORTS_SAVE )
GAME( 1984, karatevs, kchamp, kchampvs, kchampvs, kchamp_state, init_kchampvs, ROT90, "Data East Corporation", "Taisen Karate Dou (Japan VS version)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/kdt6.cpp b/src/mame/drivers/kdt6.cpp
index fbdaeeaf03f..9ca94a8bb09 100644
--- a/src/mame/drivers/kdt6.cpp
+++ b/src/mame/drivers/kdt6.cpp
@@ -187,7 +187,7 @@ void kdt6_state::psi98_io(address_map &map)
map(0x19, 0x19).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
map(0x1c, 0x1c).w(FUNC(kdt6_state::status0_w));
map(0x1d, 0x1d).r(m_keyboard, FUNC(psi_keyboard_bus_device::key_data_r));
- map(0x1e, 0x1e).rw(m_fdc, FUNC(upd765a_device::dma_r), FUNC(upd765a_device::dma_w));
+ map(0x1e, 0x1e).rw(m_fdc, FUNC(upd765a_device::mdma_r), FUNC(upd765a_device::mdma_w));
map(0x1f, 0x1f).w(FUNC(kdt6_state::fdc_tc_w));
map(0x20, 0x2f).rw(FUNC(kdt6_state::mapper_r), FUNC(kdt6_state::mapper_w));
map(0x30, 0x30).rw(FUNC(kdt6_state::video_data_r), FUNC(kdt6_state::video_data_w));
@@ -617,18 +617,16 @@ static const z80_daisy_config daisy_chain_intf[] =
{ nullptr }
};
-void kdt6_state::psi98(machine_config &config)
-{
+MACHINE_CONFIG_START(kdt6_state::psi98)
Z80(config, m_cpu, XTAL(16'000'000) / 4);
m_cpu->set_addrmap(AS_PROGRAM, &kdt6_state::psi98_mem);
m_cpu->set_addrmap(AS_IO, &kdt6_state::psi98_io);
m_cpu->set_daisy_config(daisy_chain_intf);
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_color(rgb_t::green());
- screen.set_raw(XTAL(13'516'800), 824, 48, 688, 274, 0, 250);
- screen.set_screen_update(FUNC(kdt6_state::screen_update));
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_RAW_PARAMS(XTAL(13'516'800), 824, 48, 688, 274, 0, 250)
+ MCFG_SCREEN_UPDATE_DRIVER(kdt6_state, screen_update)
PALETTE(config, m_palette, palette_device::MONOCHROME);
config.set_default_layout(layout_kdt6);
@@ -646,7 +644,7 @@ void kdt6_state::psi98(machine_config &config)
m_beeper->add_route(ALL_OUTPUTS, "mono", 0.50);
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
- TIMER(config, m_beep_timer).configure_generic(FUNC(kdt6_state::beeper_off));
+ MCFG_TIMER_DRIVER_ADD("beep_timer", kdt6_state, beeper_off)
Z80DMA(config, m_dma, 16_MHz_XTAL / 4);
m_dma->out_busreq_callback().set(FUNC(kdt6_state::busreq_w));
@@ -707,25 +705,24 @@ void kdt6_state::psi98(machine_config &config)
m_centronics->select_handler().set("pio", FUNC(z80pio_device::pa5_w));
INPUT_BUFFER(config, "cent_data_in");
- output_latch_device &latch(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(latch);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
UPD1990A(config, m_rtc);
UPD765A(config, m_fdc, 8'000'000, true, true);
m_fdc->intrq_wr_callback().set("ctc1", FUNC(z80ctc_device::trg0));
m_fdc->drq_wr_callback().set(FUNC(kdt6_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, "fdc:0", kdt6_floppies, "fd55f", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", kdt6_floppies, "fd55f", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", kdt6_floppies, "fd55f", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", kdt6_floppies, "fd55f", floppy_image_device::default_floppy_formats)
- SOFTWARE_LIST(config, "floppy_list").set_original("psi98");
+ MCFG_SOFTWARE_LIST_ADD("floppy_list", "psi98")
- PSI_KEYBOARD_INTERFACE(config, m_keyboard, "hle");
- m_keyboard->rx().set(FUNC(kdt6_state::keyboard_rx_w));
- m_keyboard->key_strobe().set("ctc2", FUNC(z80ctc_device::trg1));
+ MCFG_PSI_KEYBOARD_INTERFACE_ADD("kbd", "hle")
+ MCFG_PSI_KEYBOARD_RX_HANDLER(WRITELINE(*this, kdt6_state, keyboard_rx_w))
+ MCFG_PSI_KEYBOARD_KEY_STROBE_HANDLER(WRITELINE("ctc2", z80ctc_device, trg1))
// 6 ECB slots
-}
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/kickgoal.cpp b/src/mame/drivers/kickgoal.cpp
index 4520698d0c7..7628eb9026b 100644
--- a/src/mame/drivers/kickgoal.cpp
+++ b/src/mame/drivers/kickgoal.cpp
@@ -66,7 +66,7 @@ WRITE16_MEMBER(kickgoal_state::actionhw_snd_w)
case 0xfe: m_okibank->set_entry(1); break;
case 0xff: m_okibank->set_entry(3); break;
case 0x78:
- m_oki->write(data);
+ m_oki->write_command(data);
m_snd_sam[0] = 00; m_snd_sam[1]= 00; m_snd_sam[2] = 00; m_snd_sam[3] = 00;
break;
default:
@@ -75,44 +75,44 @@ WRITE16_MEMBER(kickgoal_state::actionhw_snd_w)
if ((data & 0x80) && (m_snd_sam[3] != m_snd_new))
{
logerror("About to play sample %02x at vol %02x\n", m_snd_new, data);
- if ((m_oki->read() & 0x08) != 0x08)
+ if ((m_oki->read_status() & 0x08) != 0x08)
{
logerror("Playing sample %02x at vol %02x\n", m_snd_new, data);
- m_oki->write(m_snd_new);
- m_oki->write(data);
+ m_oki->write_command(m_snd_new);
+ m_oki->write_command(data);
}
m_snd_new = 00;
}
if ((data & 0x40) && (m_snd_sam[2] != m_snd_new))
{
logerror("About to play sample %02x at vol %02x\n", m_snd_new, data);
- if ((m_oki->read() & 0x04) != 0x04)
+ if ((m_oki->read_status() & 0x04) != 0x04)
{
logerror("Playing sample %02x at vol %02x\n", m_snd_new, data);
- m_oki->write(m_snd_new);
- m_oki->write(data);
+ m_oki->write_command(m_snd_new);
+ m_oki->write_command(data);
}
m_snd_new = 00;
}
if ((data & 0x20) && (m_snd_sam[1] != m_snd_new))
{
logerror("About to play sample %02x at vol %02x\n", m_snd_new, data);
- if ((m_oki->read() & 0x02) != 0x02)
+ if ((m_oki->read_status() & 0x02) != 0x02)
{
logerror("Playing sample %02x at vol %02x\n", m_snd_new, data);
- m_oki->write(m_snd_new);
- m_oki->write(data);
+ m_oki->write_command(m_snd_new);
+ m_oki->write_command(data);
}
m_snd_new = 00;
}
if ((data & 0x10) && (m_snd_sam[0] != m_snd_new))
{
logerror("About to play sample %02x at vol %02x\n", m_snd_new, data);
- if ((m_oki->read() & 0x01) != 0x01)
+ if ((m_oki->read_status() & 0x01) != 0x01)
{
logerror("Playing sample %02x at vol %02x\n", m_snd_new, data);
- m_oki->write(m_snd_new);
- m_oki->write(data);
+ m_oki->write_command(m_snd_new);
+ m_oki->write_command(data);
}
m_snd_new = 00;
}
@@ -127,7 +127,7 @@ WRITE16_MEMBER(kickgoal_state::actionhw_snd_w)
else /* Turn a channel off */
{
logerror("Turning channel %02x off\n", data);
- m_oki->write(data);
+ m_oki->write_command(data);
if (data & 0x40) m_snd_sam[3] = 00;
if (data & 0x20) m_snd_sam[2] = 00;
if (data & 0x10) m_snd_sam[1] = 00;
@@ -394,7 +394,7 @@ WRITE8_MEMBER(kickgoal_state::soundio_port_c_w)
{
if (!(data & 0x01))
{
- m_pic_portb = m_oki->read();
+ m_pic_portb = m_oki->read_status();
}
}
@@ -402,7 +402,7 @@ WRITE8_MEMBER(kickgoal_state::soundio_port_c_w)
{
if (!(data & 0x02))
{
- m_oki->write(m_pic_portb);
+ m_oki->write_command(m_pic_portb);
}
}
@@ -418,12 +418,12 @@ WRITE16_MEMBER(kickgoal_state::to_pic_w)
-void kickgoal_state::kickgoal(machine_config &config)
-{
+MACHINE_CONFIG_START(kickgoal_state::kickgoal)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(12'000'000)); /* 12 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &kickgoal_state::kickgoal_program_map);
- m_maincpu->set_vblank_int("screen", FUNC(kickgoal_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(12'000'000)) /* 12 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(kickgoal_program_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", kickgoal_state, irq6_line_hold)
PIC16C57(config, m_audiocpu, XTAL(12'000'000)/3); /* 4MHz ? */
m_audiocpu->write_a().set(FUNC(kickgoal_state::soundio_port_a_w));
@@ -437,13 +437,13 @@ void kickgoal_state::kickgoal(machine_config &config)
EEPROM_93C46_16BIT(config, "eeprom").default_data(kickgoal_default_eeprom_type1, 128);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(9*8, 55*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(kickgoal_state::screen_update_kickgoal));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(9*8, 55*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(kickgoal_state, screen_update_kickgoal)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_kickgoal);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 1024);
@@ -455,32 +455,32 @@ void kickgoal_state::kickgoal(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- OKIM6295(config, m_oki, XTAL(12'000'000)/12, okim6295_device::PIN7_LOW);
- m_oki->set_addrmap(0, &kickgoal_state::oki_map);
- m_oki->add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(12'000'000)/12, okim6295_device::PIN7_LOW)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(kickgoal_state::actionhw)
-void kickgoal_state::actionhw(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(12'000'000)); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &kickgoal_state::kickgoal_program_map);
- m_maincpu->set_vblank_int("screen", FUNC(kickgoal_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(12'000'000)) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(kickgoal_program_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", kickgoal_state, irq6_line_hold)
- PIC16C57(config, m_audiocpu, XTAL(12'000'000)/3); /* verified on pcb */
- m_audiocpu->set_disable(); /* Disabled since the internal rom isn't dumped */
+ MCFG_DEVICE_ADD("audiocpu", PIC16C57, XTAL(12'000'000)/3) /* verified on pcb */
+ MCFG_DEVICE_DISABLE() /* Disabled since the internal rom isn't dumped */
/* Program and Data Maps are internal to the MCU */
EEPROM_93C46_16BIT(config, "eeprom").default_data(kickgoal_default_eeprom_type1, 128);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(10*8+2, 54*8-1+2, 0*8, 30*8-1);
- screen.set_screen_update(FUNC(kickgoal_state::screen_update_kickgoal));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(10*8+2, 54*8-1+2, 0*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(kickgoal_state, screen_update_kickgoal)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_actionhw);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 1024);
@@ -492,10 +492,10 @@ void kickgoal_state::actionhw(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- OKIM6295(config, m_oki, XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH); /* verified on pcb */
- m_oki->set_addrmap(0, &kickgoal_state::oki_map);
- m_oki->add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH) /* verified on pcb */
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/kim1.cpp b/src/mame/drivers/kim1.cpp
index 2fc01cbef0c..178e5bfce3c 100644
--- a/src/mame/drivers/kim1.cpp
+++ b/src/mame/drivers/kim1.cpp
@@ -240,36 +240,36 @@ void kim1_state::machine_reset()
// MACHINE DRIVERS
//**************************************************************************
-void kim1_state::kim1(machine_config &config)
-{
+MACHINE_CONFIG_START(kim1_state::kim1)
// basic machine hardware
- M6502(config, m_maincpu, 1000000); /* 1 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &kim1_state::kim1_map);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD("maincpu", M6502, 1000000) /* 1 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(kim1_map)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
// video hardware
config.set_default_layout(layout_kim1);
// devices
- MOS6530(config, m_riot2, 1000000);
- m_riot2->in_pa_callback().set(FUNC(kim1_state::kim1_u2_read_a));
- m_riot2->out_pa_callback().set(FUNC(kim1_state::kim1_u2_write_a));
- m_riot2->in_pb_callback().set(FUNC(kim1_state::kim1_u2_read_b));
- m_riot2->out_pb_callback().set(FUNC(kim1_state::kim1_u2_write_b));
+ MCFG_DEVICE_ADD("miot_u2", MOS6530, 1000000)
+ MCFG_MOS6530_IN_PA_CB(READ8(*this, kim1_state, kim1_u2_read_a))
+ MCFG_MOS6530_OUT_PA_CB(WRITE8(*this, kim1_state, kim1_u2_write_a))
+ MCFG_MOS6530_IN_PB_CB(READ8(*this, kim1_state, kim1_u2_read_b))
+ MCFG_MOS6530_OUT_PB_CB(WRITE8(*this, kim1_state, kim1_u2_write_b))
- MOS6530(config, "miot_u3", 1000000);
+ MCFG_DEVICE_ADD("miot_u3", MOS6530, 1000000)
- CASSETTE(config, m_cass);
- m_cass->set_formats(kim1_cassette_formats);
- m_cass->set_default_state(CASSETTE_STOPPED);
- m_cass->set_interface ("kim1_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(kim1_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED)
+ MCFG_CASSETTE_INTERFACE ("kim1_cass")
- TIMER(config, "led_timer").configure_periodic(FUNC(kim1_state::kim1_update_leds), attotime::from_hz(60));
- TIMER(config, "cassette_timer").configure_periodic(FUNC(kim1_state::kim1_cassette_input), attotime::from_hz(44100));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("led_timer", kim1_state, kim1_update_leds, attotime::from_hz(60))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("cassette_timer", kim1_state, kim1_cassette_input, attotime::from_hz(44100))
// software list
- SOFTWARE_LIST(config, "cass_list").set_original("kim1_cass");
-}
+ MCFG_SOFTWARE_LIST_ADD ("cass_list", "kim1_cass")
+
+MACHINE_CONFIG_END
//**************************************************************************
// ROM DEFINITIONS
diff --git a/src/mame/drivers/kingdrby.cpp b/src/mame/drivers/kingdrby.cpp
index 7a83fb6ab7c..b710cc0cb2b 100644
--- a/src/mame/drivers/kingdrby.cpp
+++ b/src/mame/drivers/kingdrby.cpp
@@ -964,24 +964,23 @@ void kingdrby_state::kingdrbb_palette(palette_device &palette) const
}
}
-void kingdrby_state::kingdrby(machine_config &config)
-{
- z80_device &master(Z80(config, "master", CLK_2));
- master.set_addrmap(AS_PROGRAM, &kingdrby_state::master_map);
- master.set_addrmap(AS_IO, &kingdrby_state::master_io_map);
- master.set_vblank_int("screen", FUNC(kingdrby_state::irq0_line_hold));
+MACHINE_CONFIG_START(kingdrby_state::kingdrby)
+ MCFG_DEVICE_ADD("master", Z80, CLK_2)
+ MCFG_DEVICE_PROGRAM_MAP(master_map)
+ MCFG_DEVICE_IO_MAP(master_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", kingdrby_state, irq0_line_hold)
- z80_device &slave(Z80(config, "slave", CLK_2));
- slave.set_addrmap(AS_PROGRAM, &kingdrby_state::slave_map);
- slave.set_addrmap(AS_IO, &kingdrby_state::slave_io_map);
- slave.set_vblank_int("screen", FUNC(kingdrby_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("slave", Z80, CLK_2)
+ MCFG_DEVICE_PROGRAM_MAP(slave_map)
+ MCFG_DEVICE_IO_MAP(slave_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", kingdrby_state, irq0_line_hold)
- Z80(config, m_soundcpu, CLK_2);
- m_soundcpu->set_addrmap(AS_PROGRAM, &kingdrby_state::sound_map);
- m_soundcpu->set_addrmap(AS_IO, &kingdrby_state::sound_io_map);
- m_soundcpu->set_periodic_int(FUNC(kingdrby_state::irq0_line_hold), attotime::from_hz(1000)); /* guess, controls ay8910 tempo.*/
+ MCFG_DEVICE_ADD("soundcpu", Z80, CLK_2)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(kingdrby_state, irq0_line_hold, 1000) /* guess, controls ay8910 tempo.*/
- config.m_perfect_cpu_quantum = subtag("master");
+ MCFG_QUANTUM_PERFECT_CPU("master")
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -1001,13 +1000,13 @@ void kingdrby_state::kingdrby(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_kingdrby);
PALETTE(config, m_palette, FUNC(kingdrby_state::kingdrby_palette), 0x200);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 0, 224-1); /* controlled by CRTC */
- screen.set_screen_update(FUNC(kingdrby_state::screen_update_kingdrby));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 224-1) /* controlled by CRTC */
+ MCFG_SCREEN_UPDATE_DRIVER(kingdrby_state, screen_update_kingdrby)
+ MCFG_SCREEN_PALETTE(m_palette)
mc6845_device &crtc(MC6845(config, "crtc", CLK_1/32)); /* 53.333 Hz. guess */
crtc.set_screen("screen");
@@ -1019,13 +1018,13 @@ void kingdrby_state::kingdrby(machine_config &config)
ay8910_device &aysnd(AY8910(config, "aysnd", CLK_1/8)); /* guess */
aysnd.port_a_read_callback().set(FUNC(kingdrby_state::sound_cmd_r));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
-void kingdrby_state::kingdrbb(machine_config &config)
-{
+MACHINE_CONFIG_START(kingdrby_state::kingdrbb)
kingdrby(config);
- subdevice<z80_device>("slave")->set_addrmap(AS_PROGRAM, &kingdrby_state::slave_1986_map);
+ MCFG_DEVICE_MODIFY("slave")
+ MCFG_DEVICE_PROGRAM_MAP(slave_1986_map)
m_palette->set_init(FUNC(kingdrby_state::kingdrbb_palette));
@@ -1045,26 +1044,26 @@ void kingdrby_state::kingdrbb(machine_config &config)
m_ppi[1]->out_pa_callback().set_nop();
m_ppi[1]->out_pb_callback().set_nop();
m_ppi[1]->out_pc_callback().set_nop();
-}
+MACHINE_CONFIG_END
-void kingdrby_state::cowrace(machine_config &config)
-{
+MACHINE_CONFIG_START(kingdrby_state::cowrace)
kingdrbb(config);
- m_soundcpu->set_addrmap(AS_PROGRAM, &kingdrby_state::cowrace_sound_map);
- m_soundcpu->set_addrmap(AS_IO, &kingdrby_state::cowrace_sound_io);
+ MCFG_DEVICE_MODIFY("soundcpu")
+ MCFG_DEVICE_PROGRAM_MAP(cowrace_sound_map)
+ MCFG_DEVICE_IO_MAP(cowrace_sound_io)
- m_gfxdecode->set_info(gfx_cowrace);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_cowrace)
m_palette->set_init(FUNC(kingdrby_state::kingdrby_palette));
-
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.80); // clock frequency & pin 7 not verified
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
ym2203_device &aysnd(YM2203(config.replace(), "aysnd", 3000000));
aysnd.port_a_read_callback().set(FUNC(kingdrby_state::sound_cmd_r));
aysnd.port_b_read_callback().set("oki", FUNC(okim6295_device::read));
aysnd.port_b_write_callback().set("oki", FUNC(okim6295_device::write));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+MACHINE_CONFIG_END
ROM_START( kingdrby )
ROM_REGION( 0x3000, "master", 0 )
diff --git a/src/mame/drivers/kingobox.cpp b/src/mame/drivers/kingobox.cpp
index 575bd849403..cb3f3d8d78a 100644
--- a/src/mame/drivers/kingobox.cpp
+++ b/src/mame/drivers/kingobox.cpp
@@ -29,25 +29,25 @@ Main CPU:
#include "speaker.h"
-void kingofb_state::video_interrupt_w(uint8_t data)
+WRITE8_MEMBER(kingofb_state::video_interrupt_w)
{
m_video_cpu->set_input_line_and_vector(0, HOLD_LINE, 0xff);
}
-void kingofb_state::sprite_interrupt_w(uint8_t data)
+WRITE8_MEMBER(kingofb_state::sprite_interrupt_w)
{
m_sprite_cpu->set_input_line_and_vector(0, HOLD_LINE, 0xff);
}
-void kingofb_state::scroll_interrupt_w(uint8_t data)
+WRITE8_MEMBER(kingofb_state::scroll_interrupt_w)
{
- sprite_interrupt_w(data);
+ sprite_interrupt_w(space, offset, data);
*m_scroll_y = data;
}
-void kingofb_state::sound_command_w(uint8_t data)
+WRITE8_MEMBER(kingofb_state::sound_command_w)
{
- m_soundlatch->write(machine().dummy_space(), 0, data);
+ m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff);
}
@@ -459,11 +459,11 @@ void kingofb_state::machine_start()
void kingofb_state::machine_reset()
{
- kingofb_f800_w(0); // LS174 reset
+ kingofb_f800_w(machine().dummy_space(), 0, 0); // LS174 reset
}
-void kingofb_state::kingofb(machine_config &config)
-{
+MACHINE_CONFIG_START(kingofb_state::kingofb)
+
/* basic machine hardware */
Z80(config, m_maincpu, 4000000); // 4.0 MHz
m_maincpu->set_addrmap(AS_PROGRAM, &kingofb_state::kingobox_map);
@@ -485,20 +485,20 @@ void kingofb_state::kingofb(machine_config &config)
CLOCK(config, "soundnmi", 6000).signal_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- config.m_minimum_quantum = attotime::from_hz(6000); // We really need heavy synching among the processors
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) // We really need heavy synching among the processors
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(kingofb_state::screen_update_kingofb));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(m_nmigate, FUNC(input_merger_device::in_w<0>));
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_kingobox);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(kingofb_state, screen_update_kingofb)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("nmigate", input_merger_device, in_w<0>))
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_kingobox)
PALETTE(config, m_palette, FUNC(kingofb_state::kingofb_palette), 256+8*2, 256+8);
MCFG_VIDEO_START_OVERRIDE(kingofb_state,kingofb)
@@ -511,16 +511,15 @@ void kingofb_state::kingofb(machine_config &config)
aysnd.port_a_read_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read));
aysnd.add_route(ALL_OUTPUTS, "speaker", 0.25);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.125); // 100K (R30-44 even)/200K (R31-45 odd) ladder network
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.125) // 100K (R30-44 even)/200K (R31-45 odd) ladder network
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
/* Ring King */
-void kingofb_state::ringking(machine_config &config)
-{
+MACHINE_CONFIG_START(kingofb_state::ringking)
+
/* basic machine hardware */
Z80(config, m_maincpu, 4000000); // 4.0 MHz
m_maincpu->set_addrmap(AS_PROGRAM, &kingofb_state::ringking_map);
@@ -542,20 +541,20 @@ void kingofb_state::ringking(machine_config &config)
CLOCK(config, "soundnmi", 6000).signal_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- config.m_minimum_quantum = attotime::from_hz(6000); // We really need heavy synching among the processors
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) // We really need heavy synching among the processors
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(kingofb_state::screen_update_ringking));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(m_nmigate, FUNC(input_merger_device::in_w<0>));
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_rk);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(kingofb_state, screen_update_ringking)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("nmigate", input_merger_device, in_w<0>))
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_rk)
PALETTE(config, m_palette, FUNC(kingofb_state::ringking_palette), 256+8*2, 256+8);
MCFG_VIDEO_START_OVERRIDE(kingofb_state,ringking)
@@ -568,11 +567,10 @@ void kingofb_state::ringking(machine_config &config)
aysnd.port_a_read_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read));
aysnd.add_route(ALL_OUTPUTS, "speaker", 0.25);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.125); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.125) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/kingpin.cpp b/src/mame/drivers/kingpin.cpp
index 0273e41542a..172396a74fa 100644
--- a/src/mame/drivers/kingpin.cpp
+++ b/src/mame/drivers/kingpin.cpp
@@ -91,7 +91,8 @@ void kingpin_state::kingpin_io_map(address_map &map)
map.global_mask(0xff);
map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0x10, 0x13).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
- map(0x20, 0x21).rw("tms9928a", FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
+ map(0x20, 0x20).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0x21, 0x21).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
map(0x60, 0x60).w(FUNC(kingpin_state::sound_nmi_w));
//AM_RANGE(0x30, 0x30) AM_WRITENOP // lamps?
//AM_RANGE(0x40, 0x40) AM_WRITENOP // lamps?
diff --git a/src/mame/drivers/klax.cpp b/src/mame/drivers/klax.cpp
index bec9aec2143..fe67297a324 100644
--- a/src/mame/drivers/klax.cpp
+++ b/src/mame/drivers/klax.cpp
@@ -194,66 +194,67 @@ GFXDECODE_END
*
*************************************/
-void klax_state::klax(machine_config &config)
-{
+MACHINE_CONFIG_START(klax_state::klax)
+
/* basic machine hardware */
- M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &klax_state::klax_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(klax_map)
EEPROM_2816(config, "eeprom").lock_after_write(true);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- GFXDECODE(config, m_gfxdecode, "palette", gfx_klax);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_klax)
PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 512).set_membits(8);
- TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 8, 8, TILEMAP_SCAN_COLS, 64, 32);
- m_playfield_tilemap->set_info_callback(FUNC(klax_state::get_playfield_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 2, klax_state, get_playfield_tile_info, 8,8, SCAN_COLS, 64,32)
ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, klax_state::s_mob_config);
m_mob->set_gfxdecode(m_gfxdecode);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(klax_state::screen_update_klax));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set(FUNC(klax_state::video_int_write_line));
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(klax_state, screen_update_klax)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, klax_state, video_int_write_line))
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", ATARI_CLOCK_14MHz/4/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, ATARI_CLOCK_14MHz/4/4, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
void klax_state::bootleg_sound_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
}
-void klax_state::klax2bl(machine_config &config)
-{
+MACHINE_CONFIG_START(klax_state::klax2bl)
klax(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &klax_state::klax2bl_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(klax2bl_map)
- config.device_remove("oki"); // no 6295 here
+ MCFG_DEVICE_REMOVE("oki") // no 6295 here
- z80_device &audiocpu(Z80(config, "audiocpu", 6000000)); /* ? */
- audiocpu.set_addrmap(AS_PROGRAM, &klax_state::bootleg_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 6000000) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(bootleg_sound_map)
- m_gfxdecode->set_info(gfx_klax2bl);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_klax2bl)
// guess, probably something like this
// 2 x msm at least on bootleg set 2 (ic18 and ic19)
- MSM5205(config, "msm", 375000); /* ? */
-// msm.vck_legacy_callback().set(FUNC(klax_state::m5205_int1)); /* interrupt function */
-// msm.set_prescaler_selector(msm5205_device::MSM5205_S96_4B); /* 4KHz 4-bit */
-// msm.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 375000) /* ? */
+// MCFG_MSM5205_VCLK_CB(WRITELINE(*this, klax_state, m5205_int1)) /* interrupt function */
+// MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */
+// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/kncljoe.cpp b/src/mame/drivers/kncljoe.cpp
index 74d90fec1c6..cdd8d80de2c 100644
--- a/src/mame/drivers/kncljoe.cpp
+++ b/src/mame/drivers/kncljoe.cpp
@@ -57,8 +57,8 @@ void kncljoe_state::main_map(address_map &map)
map(0xd804, 0xd804).portr("DSWB");
map(0xd800, 0xd800).w(FUNC(kncljoe_state::sound_cmd_w));
map(0xd801, 0xd801).w(FUNC(kncljoe_state::kncljoe_control_w));
- map(0xd802, 0xd802).w("sn1", FUNC(sn76489_device::write));
- map(0xd803, 0xd803).w("sn2", FUNC(sn76489_device::write));
+ map(0xd802, 0xd802).w("sn1", FUNC(sn76489_device::command_w));
+ map(0xd803, 0xd803).w("sn2", FUNC(sn76489_device::command_w));
map(0xd807, 0xd807).nopr(); /* unknown read */
map(0xd817, 0xd817).nopr(); /* unknown read */
map(0xe800, 0xefff).ram().share("spriteram");
@@ -77,7 +77,7 @@ WRITE8_MEMBER(kncljoe_state::m6803_port2_w)
{
/* control or data port? */
if (m_port2 & 0x08)
- m_ay8910->data_address_w(m_port2 >> 2, m_port1);
+ m_ay8910->data_address_w(space, m_port2 >> 2, m_port1);
}
m_port2 = data;
}
@@ -85,7 +85,7 @@ WRITE8_MEMBER(kncljoe_state::m6803_port2_w)
READ8_MEMBER(kncljoe_state::m6803_port1_r)
{
if (m_port2 & 0x08)
- return m_ay8910->data_r();
+ return m_ay8910->data_r(space, 0);
return 0xff;
}
@@ -249,12 +249,12 @@ void kncljoe_state::machine_reset()
m_flipscreen = 0;
}
-void kncljoe_state::kncljoe(machine_config &config)
-{
+MACHINE_CONFIG_START(kncljoe_state::kncljoe)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(6'000'000)); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &kncljoe_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(kncljoe_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(6'000'000)) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", kncljoe_state, irq0_line_hold)
m6803_cpu_device &soundcpu(M6803(config, "soundcpu", XTAL(3'579'545))); /* verified on pcb */
soundcpu.set_addrmap(AS_PROGRAM, &kncljoe_state::sound_map);
@@ -265,14 +265,14 @@ void kncljoe_state::kncljoe(machine_config &config)
soundcpu.set_periodic_int(FUNC(kncljoe_state::sound_nmi), attotime::from_hz((double)3970)); //measured 3.970 kHz
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(1500));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(1*8, 31*8-1, 0*8, 32*8-1);
- m_screen->set_screen_update(FUNC(kncljoe_state::screen_update_kncljoe));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1500))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(kncljoe_state, screen_update_kncljoe)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_kncljoe);
PALETTE(config, m_palette, FUNC(kncljoe_state::kncljoe_palette), 16*8+16*8, 128+16);
@@ -287,10 +287,12 @@ void kncljoe_state::kncljoe(machine_config &config)
m_ay8910->port_b_write_callback().set(FUNC(kncljoe_state::unused_w));
m_ay8910->add_route(ALL_OUTPUTS, "mono", 0.30);
- SN76489(config, "sn1", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 0.30); /* verified on pcb */
+ MCFG_DEVICE_ADD("sn1", SN76489, XTAL(3'579'545)) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
- SN76489(config, "sn2", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 0.30); /* verified on pcb */
-}
+ MCFG_DEVICE_ADD("sn2", SN76489, XTAL(3'579'545)) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/koftball.cpp b/src/mame/drivers/koftball.cpp
index 2b1c1658888..05b82ee4fa7 100644
--- a/src/mame/drivers/koftball.cpp
+++ b/src/mame/drivers/koftball.cpp
@@ -238,37 +238,36 @@ static GFXDECODE_START( gfx_koftball )
GFXDECODE_END
-void koftball_state::koftball(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(21'477'272) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &koftball_state::koftball_mem);
- TIMER(config, "scantimer").configure_scanline(FUNC(koftball_state::bmc_interrupt), "screen", 0, 1);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_screen_update(FUNC(koftball_state::screen_update_koftball));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 0*8, 30*8-1);
- screen.set_palette(m_palette);
-
- PALETTE(config, m_palette).set_entries(256);
+MACHINE_CONFIG_START(koftball_state::koftball)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(21'477'272) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(koftball_mem)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", koftball_state, bmc_interrupt, "screen", 0, 1)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_UPDATE_DRIVER(koftball_state, screen_update_koftball)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 30*8-1)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 256)
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette));
ramdac.set_addrmap(0, &koftball_state::ramdac_map);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_koftball);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_koftball)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(3'579'545))); // guessed chip type, clock not verified
- ymsnd.add_route(ALL_OUTPUTS, "lspeaker", 0.50);
- ymsnd.add_route(ALL_OUTPUTS, "rspeaker", 0.50);
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545)) // guessed chip type, clock not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
- okim6295_device &oki(OKIM6295(config, "oki", 1122000, okim6295_device::PIN7_LOW)); /* clock frequency & pin 7 not verified */
- oki.add_route(ALL_OUTPUTS, "lspeaker", 0.50);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 0.50);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1122000, okim6295_device::PIN7_LOW) /* clock frequency & pin 7 not verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
+MACHINE_CONFIG_END
ROM_START( koftball )
ROM_REGION( 0x200000, "maincpu", 0 ) /* 68000 Code */
diff --git a/src/mame/drivers/koikoi.cpp b/src/mame/drivers/koikoi.cpp
index e2ee71ee3a5..51eb86d950f 100644
--- a/src/mame/drivers/koikoi.cpp
+++ b/src/mame/drivers/koikoi.cpp
@@ -354,23 +354,23 @@ void koikoi_state::machine_reset()
m_ioram[i] = 0;
}
-void koikoi_state::koikoi(machine_config &config)
-{
+MACHINE_CONFIG_START(koikoi_state::koikoi)
+
/* basic machine hardware */
- Z80(config, m_maincpu, KOIKOI_CRYSTAL/4); /* ?? */
- m_maincpu->set_addrmap(AS_PROGRAM, &koikoi_state::koikoi_map);
- m_maincpu->set_addrmap(AS_IO, &koikoi_state::koikoi_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80,KOIKOI_CRYSTAL/4) /* ?? */
+ MCFG_DEVICE_PROGRAM_MAP(koikoi_map)
+ MCFG_DEVICE_IO_MAP(koikoi_io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(koikoi_state::screen_update_koikoi));
- screen.set_palette("palette");
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(koikoi_state, screen_update_koikoi)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
GFXDECODE(config, m_gfxdecode, "palette", gfx_koikoi);
PALETTE(config, "palette", FUNC(koikoi_state::koikoi_palette), 8 * 32, 16);
@@ -382,7 +382,7 @@ void koikoi_state::koikoi(machine_config &config)
aysnd.port_b_read_callback().set(FUNC(koikoi_state::input_r));
aysnd.port_a_write_callback().set(FUNC(koikoi_state::unknown_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.10);
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/konamigv.cpp b/src/mame/drivers/konamigv.cpp
index 664108f51cc..36330f5205b 100644
--- a/src/mame/drivers/konamigv.cpp
+++ b/src/mame/drivers/konamigv.cpp
@@ -466,8 +466,8 @@ READ16_MEMBER(simpbowl_state::flash_r)
{
int chip = (m_flash_address >= 0x200000) ? 2 : 0;
- int ret = ( m_flash8[chip]->read(m_flash_address & 0x1fffff) & 0xff ) |
- ( m_flash8[chip+1]->read(m_flash_address & 0x1fffff) << 8 );
+ int ret = ( m_flash8[chip]->read(space, m_flash_address & 0x1fffff) & 0xff ) |
+ ( m_flash8[chip+1]->read(space, m_flash_address & 0x1fffff) << 8 );
m_flash_address++;
@@ -485,8 +485,8 @@ WRITE16_MEMBER(simpbowl_state::flash_w)
{
case 0:
chip = (m_flash_address >= 0x200000) ? 2 : 0;
- m_flash8[chip]->write(m_flash_address & 0x1fffff, data&0xff);
- m_flash8[chip+1]->write(m_flash_address & 0x1fffff, (data>>8)&0xff);
+ m_flash8[chip]->write(space, m_flash_address & 0x1fffff, data&0xff);
+ m_flash8[chip+1]->write(space, m_flash_address & 0x1fffff, (data>>8)&0xff);
break;
case 1:
@@ -506,10 +506,10 @@ WRITE16_MEMBER(simpbowl_state::flash_w)
}
}
-void simpbowl_state::simpbowl(machine_config &config)
-{
+MACHINE_CONFIG_START(simpbowl_state::simpbowl)
konamigv(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &simpbowl_state::simpbowl_map);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP( simpbowl_map )
FUJITSU_29F016A(config, "flash0");
FUJITSU_29F016A(config, "flash1");
@@ -519,7 +519,7 @@ void simpbowl_state::simpbowl(machine_config &config)
upd4701_device &upd(UPD4701A(config, "upd"));
upd.set_portx_tag("TRACK0_X");
upd.set_porty_tag("TRACK0_Y");
-}
+MACHINE_CONFIG_END
static INPUT_PORTS_START( simpbowl )
PORT_INCLUDE( konamigv )
@@ -546,10 +546,10 @@ WRITE16_MEMBER(konamigv_state::btc_trackball_w)
}
}
-void konamigv_state::btchamp(machine_config &config)
-{
+MACHINE_CONFIG_START(konamigv_state::btchamp)
konamigv(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &konamigv_state::btchamp_map);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP( btchamp_map )
SHARP_LH28F400(config, "flash");
@@ -560,7 +560,7 @@ void konamigv_state::btchamp(machine_config &config)
UPD4701A(config, m_btc_trackball[1]);
m_btc_trackball[1]->set_portx_tag("TRACK1_X");
m_btc_trackball[1]->set_porty_tag("TRACK1_Y");
-}
+MACHINE_CONFIG_END
static INPUT_PORTS_START( btchamp )
PORT_INCLUDE( konamigv )
@@ -604,11 +604,11 @@ WRITE16_MEMBER(konamigv_state::tokimeki_serial_w)
}
-void konamigv_state::tmosh(machine_config &config)
-{
+MACHINE_CONFIG_START(konamigv_state::tmosh)
konamigv(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &konamigv_state::tmosh_map);
-}
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP( tmosh_map )
+MACHINE_CONFIG_END
/*
Dead Eye
@@ -620,13 +620,13 @@ CD:
A01
*/
-void konamigv_state::kdeadeye(machine_config &config)
-{
+MACHINE_CONFIG_START(konamigv_state::kdeadeye)
konamigv(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &konamigv_state::kdeadeye_map);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP( kdeadeye_map )
SHARP_LH28F400(config, "flash");
-}
+MACHINE_CONFIG_END
static INPUT_PORTS_START( kdeadeye )
PORT_INCLUDE( konamigv )
diff --git a/src/mame/drivers/konamigx.cpp b/src/mame/drivers/konamigx.cpp
index 565a2837f3d..50e33254c5c 100644
--- a/src/mame/drivers/konamigx.cpp
+++ b/src/mame/drivers/konamigx.cpp
@@ -1645,7 +1645,7 @@ void konamigx_state::konamigx(machine_config &config)
/* These parameters are actual value written to the CCU.
tbyahhoo attract mode desync is caused by another matter. */
- //MCFG_SCREEN_vblank_time(ATTOSECONDS_IN_USEC(600))
+ //MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600))
// TODO: WTF, without these most games crashes? Some legacy call in video code???
m_screen->set_size(1024, 1024);
m_screen->set_visarea(24, 24+288-1, 16, 16+224-1);
diff --git a/src/mame/drivers/konamim2.cpp b/src/mame/drivers/konamim2.cpp
index a8228df1359..fee5bee182f 100644
--- a/src/mame/drivers/konamim2.cpp
+++ b/src/mame/drivers/konamim2.cpp
@@ -1165,6 +1165,7 @@ void konamim2_state::konamim2(machine_config &config)
DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_rdac, 0).add_route(ALL_OUTPUTS, "rspeaker", 1.0);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT);
@@ -1202,7 +1203,7 @@ void konamim2_state::set_arcres(machine_config &config)
void konamim2_state::add_ymz280b(machine_config &config)
{
- // TODO: The YMZ280B outputs are actually routed to a speaker in each gun
+ // TODO: The YMZ280B outputs are actually routed to a speaker in each gun
YMZ280B(config, m_ymz280b, XTAL(16'934'400));
m_ymz280b->add_route(0, "lspeaker", 0.5);
m_ymz280b->add_route(1, "rspeaker", 0.5);
@@ -1453,8 +1454,8 @@ ROM_END
void konamim2_state::install_m48t58()
{
- read8sm_delegate read_delegate(FUNC(m48t58_device::read), &(*m_m48t58));
- write8sm_delegate write_delegate(FUNC(m48t58_device::write), &(*m_m48t58));
+ read8_delegate read_delegate(FUNC(m48t58_device::read), &(*m_m48t58));
+ write8_delegate write_delegate(FUNC(m48t58_device::write), &(*m_m48t58));
m_ppc1->space(AS_PROGRAM).install_readwrite_handler(0x36c00000, 0x36c03fff, read_delegate, write_delegate, 0xff00ff00ff00ff00ULL);
m_ppc2->space(AS_PROGRAM).install_readwrite_handler(0x36c00000, 0x36c03fff, read_delegate, write_delegate, 0xff00ff00ff00ff00ULL);
@@ -1462,8 +1463,8 @@ void konamim2_state::install_m48t58()
void konamim2_state::install_ymz280b()
{
- read8sm_delegate read_delegate(FUNC(ymz280b_device::read), &(*m_ymz280b));
- write8sm_delegate write_delegate(FUNC(ymz280b_device::write), &(*m_ymz280b));
+ read8_delegate read_delegate(FUNC(ymz280b_device::read), &(*m_ymz280b));
+ write8_delegate write_delegate(FUNC(ymz280b_device::write), &(*m_ymz280b));
m_ppc1->space(AS_PROGRAM).install_readwrite_handler(0x3e800000, 0x3e80000f, read_delegate, write_delegate, 0xff00ff0000000000ULL);
m_ppc2->space(AS_PROGRAM).install_readwrite_handler(0x3e800000, 0x3e80000f, read_delegate, write_delegate, 0xff00ff0000000000ULL);
diff --git a/src/mame/drivers/konblands.cpp b/src/mame/drivers/konblands.cpp
index 4edf9ddf888..a50f23ca37e 100644
--- a/src/mame/drivers/konblands.cpp
+++ b/src/mame/drivers/konblands.cpp
@@ -160,7 +160,7 @@ void konblands_state::konblands_map(address_map &map)
map(0x1005, 0x1005).nopw(); // enable audio
map(0x1006, 0x1006).w(FUNC(konblands_state::irq_enable_w));
map(0x1007, 0x1007).w(FUNC(konblands_state::firq_enable_w));
- map(0x1800, 0x1800).portr("INPUTS").w("sn", FUNC(sn76496_device::write));
+ map(0x1800, 0x1800).portr("INPUTS").w("sn", FUNC(sn76496_device::command_w));
map(0x4000, 0x47ff).ram().share("vram");
map(0x4800, 0x4bff).ram();
map(0x5800, 0x5800).nopw(); // watchdog
@@ -178,7 +178,7 @@ void konblands_state::konblandsh_map(address_map &map)
map(0x0807, 0x0807).nopr().w(FUNC(konblands_state::firq_enable_w));
map(0x0c00, 0x0c00).portr("INPUTS");
map(0x1000, 0x1000).portr("DSW1");
- map(0x1400, 0x1400).w("sn", FUNC(sn76496_device::write));
+ map(0x1400, 0x1400).w("sn", FUNC(sn76496_device::command_w));
map(0x1800, 0x1800).nopw(); // sn latch
map(0x2000, 0x27ff).ram().share("vram");
map(0x2800, 0x2fff).ram();
@@ -279,17 +279,17 @@ WRITE_LINE_MEMBER(konblands_state::ld_command_strobe_cb)
MACHINE_CONFIG_START(konblands_state::konblands)
/* basic machine hardware */
- MC6809E(config, m_maincpu, MASTER_CLOCK/12);
- m_maincpu->set_addrmap(AS_PROGRAM, &konblands_state::konblands_map);
- m_maincpu->set_vblank_int("screen", FUNC(konblands_state::vblank_irq));
- m_maincpu->set_periodic_int(FUNC(konblands_state::timer_irq), attotime::from_hz(8)); // 8 times per frame
+ MCFG_DEVICE_ADD("maincpu",MC6809E,MASTER_CLOCK/12)
+ MCFG_DEVICE_PROGRAM_MAP(konblands_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", konblands_state, vblank_irq)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(konblands_state, timer_irq, 8) // 8 times per frame
/* video hardware */
- PIONEER_LDV1000(config, m_laserdisc, 0);
- m_laserdisc->command_strobe_callback().set(FUNC(konblands_state::ld_command_strobe_cb));
+ MCFG_LASERDISC_LDV1000_ADD("laserdisc")
+ MCFG_LASERDISC_LDV1000_COMMAND_STROBE_CB(WRITELINE(*this, konblands_state, ld_command_strobe_cb))
// TODO: might be different
- m_laserdisc->set_overlay(512, 256, FUNC(konblands_state::screen_update));
- m_laserdisc->set_overlay_palette("palette");
+ MCFG_LASERDISC_OVERLAY_DRIVER(512, 256, konblands_state, screen_update)
+ MCFG_LASERDISC_OVERLAY_PALETTE("palette")
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
@@ -300,14 +300,15 @@ MACHINE_CONFIG_START(konblands_state::konblands)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76496(config, "sn", MASTER_CLOCK/12).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("sn", SN76496, MASTER_CLOCK/12)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
-void konblands_state::konblandsh(machine_config &config)
-{
+MACHINE_CONFIG_START(konblands_state::konblandsh)
konblands(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &konblands_state::konblandsh_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(konblandsh_map)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/konendev.cpp b/src/mame/drivers/konendev.cpp
index d61bef2d23a..2708b198fe7 100644
--- a/src/mame/drivers/konendev.cpp
+++ b/src/mame/drivers/konendev.cpp
@@ -304,23 +304,22 @@ INTERRUPT_GEN_MEMBER(konendev_state::vbl_interrupt)
device.execute().set_input_line(INPUT_LINE_IRQ3, ASSERT_LINE);
}
-void konendev_state::konendev(machine_config &config)
-{
+MACHINE_CONFIG_START(konendev_state::konendev)
/* basic machine hardware */
- PPC403GCX(config, m_maincpu, 32000000); // Clock unknown
- m_maincpu->set_addrmap(AS_PROGRAM, &konendev_state::konendev_map);
- m_maincpu->set_vblank_int("screen", FUNC(konendev_state::vbl_interrupt));
+ MCFG_DEVICE_ADD("maincpu", PPC403GCX, 32000000) // Clock unknown
+ MCFG_DEVICE_PROGRAM_MAP(konendev_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", konendev_state, vbl_interrupt)
/* video hardware */
PALETTE(config, "palette", palette_device::RGB_555);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // Not accurate
- screen.set_size(640, 480);
- screen.set_visarea(0, 639, 0, 479);
- screen.set_screen_update(FUNC(konendev_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // Not accurate
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
+ MCFG_SCREEN_UPDATE_DRIVER(konendev_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
K057714(config, m_gcu, 0);
m_gcu->irq_callback().set(FUNC(konendev_state::gcu_interrupt));
@@ -334,10 +333,10 @@ void konendev_state::konendev(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ymz280b_device &ymz(YMZ280B(config, "ymz", 16934400)); // Clock unknown
- ymz.add_route(0, "lspeaker", 1.0);
- ymz.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, 16934400) // Clock unknown
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/* Interesting sets */
diff --git a/src/mame/drivers/konmedal68k.cpp b/src/mame/drivers/konmedal68k.cpp
index 7b562fa8655..4bc346fc4c2 100644
--- a/src/mame/drivers/konmedal68k.cpp
+++ b/src/mame/drivers/konmedal68k.cpp
@@ -294,21 +294,20 @@ void konmedal68k_state::machine_reset()
m_control = m_control2 = 0;
}
-void konmedal68k_state::kzaurus(machine_config &config)
-{
+MACHINE_CONFIG_START(konmedal68k_state::kzaurus)
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(33'868'800)/4); // 33.8688 MHz crystal verified on PCB
- m_maincpu->set_addrmap(AS_PROGRAM, &konmedal68k_state::kzaurus_main);
- TIMER(config, "scantimer").configure_scanline(FUNC(konmedal68k_state::scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(33'868'800)/4 ) // 33.8688 MHz crystal verified on PCB
+ MCFG_DEVICE_PROGRAM_MAP(kzaurus_main)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", konmedal68k_state, scanline, "screen", 0, 1)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.62); /* verified on pcb */
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(40, 400-1, 16, 240-1);
- screen.set_screen_update(FUNC(konmedal68k_state::screen_update_konmedal68k));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.62) /* verified on pcb */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(40, 400-1, 16, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(konmedal68k_state, screen_update_konmedal68k)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xBGR_888, 8192).enable_shadows();
@@ -323,10 +322,10 @@ void konmedal68k_state::kzaurus(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- YMZ280B(config, m_ymz, XTAL(33'868'800)/2); // 33.8688 MHz xtal verified on PCB
- m_ymz->add_route(0, "lspeaker", 1.0);
- m_ymz->add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, XTAL(33'868'800)/2) // 33.8688 MHz xtal verified on PCB
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
ROM_START( kzaurus )
ROM_REGION( 0x80000, "maincpu", 0 ) /* main program */
diff --git a/src/mame/drivers/kontest.cpp b/src/mame/drivers/kontest.cpp
index 2bf98250613..bc01ab4fe74 100644
--- a/src/mame/drivers/kontest.cpp
+++ b/src/mame/drivers/kontest.cpp
@@ -179,8 +179,8 @@ void kontest_state::kontest_map(address_map &map)
void kontest_state::kontest_io(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).w("sn1", FUNC(sn76489a_device::write));
- map(0x04, 0x04).w("sn2", FUNC(sn76489a_device::write));
+ map(0x00, 0x00).w("sn1", FUNC(sn76489a_device::command_w));
+ map(0x04, 0x04).w("sn2", FUNC(sn76489a_device::command_w));
map(0x08, 0x08).w(FUNC(kontest_state::control_w));
map(0x0c, 0x0c).portr("IN0");
map(0x0d, 0x0d).portr("IN1");
@@ -254,21 +254,21 @@ void kontest_state::machine_reset()
m_control = 0;
}
-void kontest_state::kontest(machine_config &config)
-{
+MACHINE_CONFIG_START(kontest_state::kontest)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLOCK/8);
- m_maincpu->set_addrmap(AS_PROGRAM, &kontest_state::kontest_map);
- m_maincpu->set_addrmap(AS_IO, &kontest_state::kontest_io);
- m_maincpu->set_vblank_int("screen", FUNC(kontest_state::kontest_interrupt));
+ MCFG_DEVICE_ADD("maincpu", Z80,MAIN_CLOCK/8)
+ MCFG_DEVICE_PROGRAM_MAP(kontest_map)
+ MCFG_DEVICE_IO_MAP(kontest_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", kontest_state, kontest_interrupt)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_screen_update(FUNC(kontest_state::screen_update));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_UPDATE_DRIVER(kontest_state, screen_update)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
PALETTE(config, m_palette, FUNC(kontest_state::kontest_palette), 32);
@@ -276,10 +276,12 @@ void kontest_state::kontest(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- SN76489A(config, "sn1", MAIN_CLOCK/16).add_route(ALL_OUTPUTS, "rspeaker", 0.50);
+ MCFG_DEVICE_ADD("sn1", SN76489A, MAIN_CLOCK/16)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
- SN76489A(config, "sn2", MAIN_CLOCK/16).add_route(ALL_OUTPUTS, "lspeaker", 0.50);
-}
+ MCFG_DEVICE_ADD("sn2", SN76489A, MAIN_CLOCK/16)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/kopunch.cpp b/src/mame/drivers/kopunch.cpp
index f846590101a..7de29871fa1 100644
--- a/src/mame/drivers/kopunch.cpp
+++ b/src/mame/drivers/kopunch.cpp
@@ -233,13 +233,13 @@ void kopunch_state::machine_start()
save_item(NAME(m_scrollx));
}
-void kopunch_state::kopunch(machine_config &config)
-{
+MACHINE_CONFIG_START(kopunch_state::kopunch)
+
/* basic machine hardware */
- I8085A(config, m_maincpu, 4000000); // 4 MHz?
- m_maincpu->set_addrmap(AS_PROGRAM, &kopunch_state::kopunch_map);
- m_maincpu->set_addrmap(AS_IO, &kopunch_state::kopunch_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(kopunch_state::vblank_interrupt));
+ MCFG_DEVICE_ADD("maincpu", I8085A, 4000000) // 4 MHz?
+ MCFG_DEVICE_PROGRAM_MAP(kopunch_map)
+ MCFG_DEVICE_IO_MAP(kopunch_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", kopunch_state, vblank_interrupt)
i8255_device &ppi0(I8255A(config, "ppi8255_0"));
// $30 - always $9b (PPI mode 0, ports A & B & C as input)
@@ -267,20 +267,20 @@ void kopunch_state::kopunch(machine_config &config)
ppi3.out_pc_callback().set(FUNC(kopunch_state::gfxbank_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 28*8-1);
- screen.set_screen_update(FUNC(kopunch_state::screen_update_kopunch));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(kopunch_state, screen_update_kopunch)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_kopunch);
PALETTE(config, "palette", FUNC(kopunch_state::kopunch_palette), 8);
/* sound hardware */
// ...
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/kramermc.cpp b/src/mame/drivers/kramermc.cpp
index b2229f86a83..5924c4a9ba5 100644
--- a/src/mame/drivers/kramermc.cpp
+++ b/src/mame/drivers/kramermc.cpp
@@ -111,12 +111,11 @@ static INPUT_PORTS_START( kramermc )
INPUT_PORTS_END
/* Machine driver */
-void kramermc_state::kramermc(machine_config &config)
-{
+MACHINE_CONFIG_START(kramermc_state::kramermc)
/* basic machine hardware */
- Z80(config, m_maincpu, 1500000);
- m_maincpu->set_addrmap(AS_PROGRAM, &kramermc_state::kramermc_mem);
- m_maincpu->set_addrmap(AS_IO, &kramermc_state::kramermc_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, 1500000)
+ MCFG_DEVICE_PROGRAM_MAP(kramermc_mem)
+ MCFG_DEVICE_IO_MAP(kramermc_io)
z80pio_device& pio(Z80PIO(config, "z80pio", 1500000));
pio.in_pa_callback().set(FUNC(kramermc_state::kramermc_port_a_r));
@@ -124,18 +123,19 @@ void kramermc_state::kramermc(machine_config &config)
pio.in_pb_callback().set(FUNC(kramermc_state::kramermc_port_b_r));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(64*8, 16*8);
- screen.set_visarea(0, 64*8-1, 0, 16*8-1);
- screen.set_screen_update(FUNC(kramermc_state::screen_update_kramermc));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(64*8, 16*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 16*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(kramermc_state, screen_update_kramermc)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_kramermc);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_kramermc)
PALETTE(config, m_palette, palette_device::MONOCHROME);
-}
+
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( kramermc )
diff --git a/src/mame/drivers/kron.cpp b/src/mame/drivers/kron.cpp
index 85de8f4dc61..7fa942dfdec 100644
--- a/src/mame/drivers/kron.cpp
+++ b/src/mame/drivers/kron.cpp
@@ -300,27 +300,26 @@ WRITE_LINE_MEMBER(kron180_state::keyb_interrupt)
/*
* Machine configuration
*/
-void kron180_state::kron180(machine_config &config)
-{
+MACHINE_CONFIG_START(kron180_state::kron180)
/* basic machine hardware */
- Z180(config, m_maincpu, XTAL(12'288'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &kron180_state::kron180_mem);
- m_maincpu->set_addrmap(AS_IO, &kron180_state::kron180_iomap);
+ MCFG_DEVICE_ADD ("maincpu", Z180, XTAL(12'288'000))
+ MCFG_DEVICE_PROGRAM_MAP (kron180_mem)
+ MCFG_DEVICE_IO_MAP(kron180_iomap)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(50);
- screen.set_screen_update(FUNC(kron180_state::screen_update));
- screen.set_size(80 * 10, 24 * 10);
- screen.set_visarea(0, 639, 0, 199); // TODO: This need to be fixed once the real char table is used...
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_COLOR(rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_UPDATE_DRIVER(kron180_state, screen_update)
+ MCFG_SCREEN_SIZE(80 * 10, 24 * 10)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 199) // TODO: This need to be fixed once the real char table is used...
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
/* keyboard TODO: fix it, doesn't work yet */
- PC_KEYB(config, m_keyboard);
- m_keyboard->keypress().set(FUNC(kron180_state::keyb_interrupt));
-}
+ MCFG_PC_KEYB_ADD("pc_keyboard", WRITELINE(*this, kron180_state, keyb_interrupt))
+MACHINE_CONFIG_END
/* ROM definitions */
ROM_START (kron180)
diff --git a/src/mame/drivers/krz2000.cpp b/src/mame/drivers/krz2000.cpp
index 71e62fb3c10..fe2b785a0be 100644
--- a/src/mame/drivers/krz2000.cpp
+++ b/src/mame/drivers/krz2000.cpp
@@ -65,12 +65,17 @@ void k2000_state::k2000_map(address_map &map)
map(0x000000, 0x0fffff).rom().region("maincpu", 0);
map(0x100000, 0x11ffff).ram(); // is this area banked between RAM (write of 0x20 to 7e0001) vs setup/SU ROM (write of 0x30 to 7e0001) ?
// byte writes to 7e0000-7e0001 - unknown, possibly banking or status?
+ map(0xfffc00, 0xffffff).rw("tmp68301", FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
void k2000_state::k2000(machine_config &config)
{
- TMP68301(config, m_maincpu, XTAL(12'000'000));
+ M68301(config, m_maincpu, XTAL(12'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &k2000_state::k2000_map);
+ m_maincpu->set_irq_acknowledge_callback("tmp68301", FUNC(tmp68301_device::irq_callback));
+
+ tmp68301_device &tmp68301(TMP68301(config, "tmp68301", 0));
+ tmp68301.set_cputag(m_maincpu);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
diff --git a/src/mame/drivers/ksayakyu.cpp b/src/mame/drivers/ksayakyu.cpp
index f0ca353b282..c4c1ced6ec8 100644
--- a/src/mame/drivers/ksayakyu.cpp
+++ b/src/mame/drivers/ksayakyu.cpp
@@ -258,28 +258,28 @@ void ksayakyu_state::machine_reset()
m_flipscreen = 0;
}
-void ksayakyu_state::ksayakyu(machine_config &config)
-{
+MACHINE_CONFIG_START(ksayakyu_state::ksayakyu)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLOCK/8); //divider is guessed
- m_maincpu->set_addrmap(AS_PROGRAM, &ksayakyu_state::maincpu_map);
+ MCFG_DEVICE_ADD("maincpu", Z80,MAIN_CLOCK/8) //divider is guessed
+ MCFG_DEVICE_PROGRAM_MAP(maincpu_map)
- z80_device &audiocpu(Z80(config, "audiocpu", MAIN_CLOCK/8)); //divider is guessed, controls DAC tempo
- audiocpu.set_addrmap(AS_PROGRAM, &ksayakyu_state::soundcpu_map);
- audiocpu.set_periodic_int(FUNC(ksayakyu_state::irq0_line_hold), attotime::from_hz(60)); //guess, controls music tempo
+ MCFG_DEVICE_ADD("audiocpu", Z80, MAIN_CLOCK/8) //divider is guessed, controls DAC tempo
+ MCFG_DEVICE_PROGRAM_MAP(soundcpu_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(ksayakyu_state, irq0_line_hold, 60) //guess, controls music tempo
- config.m_minimum_quantum = attotime::from_hz(60000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60000))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(ksayakyu_state::screen_update_ksayakyu));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, 0, ASSERT_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ksayakyu_state, screen_update_ksayakyu)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(ASSERTLINE("maincpu", 0))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ksayakyu);
PALETTE(config, m_palette, FUNC(ksayakyu_state::ksayakyu_palette), 256);
@@ -299,11 +299,10 @@ void ksayakyu_state::ksayakyu(machine_config &config)
ay2.port_b_write_callback().set(FUNC(ksayakyu_state::dummy3_w));
ay2.add_route(ALL_OUTPUTS, "speaker", 0.25);
- DAC_6BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_6BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
ROM_START( ksayakyu )
ROM_REGION( 0x20000, "maincpu", 0 )
diff --git a/src/mame/drivers/kungfur.cpp b/src/mame/drivers/kungfur.cpp
index 66ab23b5ca4..e7cd67bbb86 100644
--- a/src/mame/drivers/kungfur.cpp
+++ b/src/mame/drivers/kungfur.cpp
@@ -296,12 +296,12 @@ void kungfur_state::machine_reset()
m_control = 0;
}
-void kungfur_state::kungfur(machine_config &config)
-{
+MACHINE_CONFIG_START(kungfur_state::kungfur)
+
/* basic machine hardware */
- M6809(config, m_maincpu, 8000000/2); // 4MHz?
- m_maincpu->set_addrmap(AS_PROGRAM, &kungfur_state::kungfur_map);
- m_maincpu->set_periodic_int(FUNC(kungfur_state::kungfur_irq), attotime::from_hz(975)); // close approximation
+ MCFG_DEVICE_ADD("maincpu", M6809, 8000000/2) // 4MHz?
+ MCFG_DEVICE_PROGRAM_MAP(kungfur_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(kungfur_state, kungfur_irq, 975) // close approximation
i8255_device &ppi0(I8255A(config, "ppi8255_0"));
// $4008 - always $83 (PPI mode 0, ports B & lower C as input)
@@ -321,16 +321,16 @@ void kungfur_state::kungfur(machine_config &config)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MSM5205(config, m_adpcm1, XTAL(384'000)); // clock verified with recording
- m_adpcm1->vck_legacy_callback().set(FUNC(kungfur_state::kfr_adpcm1_int));
- m_adpcm1->set_prescaler_selector(msm5205_device::S48_4B);
- m_adpcm1->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
-
- MSM5205(config, m_adpcm2, XTAL(384'000)); // clock verified with recording
- m_adpcm2->vck_legacy_callback().set(FUNC(kungfur_state::kfr_adpcm2_int));
- m_adpcm2->set_prescaler_selector(msm5205_device::S48_4B);
- m_adpcm2->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("adpcm1", MSM5205, XTAL(384'000)) // clock verified with recording
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, kungfur_state, kfr_adpcm1_int))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+
+ MCFG_DEVICE_ADD("adpcm2", MSM5205, XTAL(384'000)) // "
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, kungfur_state, kfr_adpcm2_int))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/kurukuru.cpp b/src/mame/drivers/kurukuru.cpp
index 64435e50fe0..47157c2ff0b 100644
--- a/src/mame/drivers/kurukuru.cpp
+++ b/src/mame/drivers/kurukuru.cpp
@@ -840,17 +840,17 @@ void kurukuru_state::machine_reset()
* Machine Driver *
*************************************************/
-void kurukuru_state::kurukuru(machine_config &config)
-{
+MACHINE_CONFIG_START(kurukuru_state::kurukuru)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &kurukuru_state::kurukuru_map);
- m_maincpu->set_addrmap(AS_IO, &kurukuru_state::kurukuru_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(kurukuru_map)
+ MCFG_DEVICE_IO_MAP(kurukuru_io)
- Z80(config, m_audiocpu, CPU_CLOCK);
- m_audiocpu->set_addrmap(AS_PROGRAM, &kurukuru_state::kurukuru_audio_map);
- m_audiocpu->set_addrmap(AS_IO, &kurukuru_state::kurukuru_audio_io);
- m_audiocpu->set_irq_acknowledge_callback("soundirq", FUNC(rst_neg_buffer_device::inta_cb));
+ MCFG_DEVICE_ADD("audiocpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(kurukuru_audio_map)
+ MCFG_DEVICE_IO_MAP(kurukuru_audio_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("soundirq", rst_neg_buffer_device, inta_cb)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -861,7 +861,7 @@ void kurukuru_state::kurukuru(machine_config &config)
v9938.int_cb().set_inputline("maincpu", 0);
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- TICKET_DISPENSER(config, "hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -879,23 +879,25 @@ void kurukuru_state::kurukuru(machine_config &config)
ym2149.port_b_write_callback().set(FUNC(kurukuru_state::ym2149_bout_w));
ym2149.add_route(ALL_OUTPUTS, "mono", 0.80);
- MSM5205(config, m_adpcm, M5205_CLOCK);
- m_adpcm->vck_legacy_callback().set(FUNC(kurukuru_state::kurukuru_msm5205_vck));
- m_adpcm->set_prescaler_selector(msm5205_device::S48_4B); /* changed on the fly */
- m_adpcm->add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+ MCFG_DEVICE_ADD("adpcm", MSM5205, M5205_CLOCK)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, kurukuru_state, kurukuru_msm5205_vck))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* changed on the fly */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
-void kurukuru_state::ppj(machine_config &config)
-{
+
+MACHINE_CONFIG_START(kurukuru_state::ppj)
kurukuru(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &kurukuru_state::ppj_map);
- m_maincpu->set_addrmap(AS_IO, &kurukuru_state::ppj_io);
-
- m_audiocpu->set_addrmap(AS_PROGRAM, &kurukuru_state::ppj_audio_map);
- m_audiocpu->set_addrmap(AS_IO, &kurukuru_state::ppj_audio_io);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ppj_map)
+ MCFG_DEVICE_IO_MAP(ppj_io)
+
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(ppj_audio_map)
+ MCFG_DEVICE_IO_MAP(ppj_audio_io)
+MACHINE_CONFIG_END
/*************************************************
diff --git a/src/mame/drivers/kyocera.cpp b/src/mame/drivers/kyocera.cpp
index cf0ee589e99..701fffaa459 100644
--- a/src/mame/drivers/kyocera.cpp
+++ b/src/mame/drivers/kyocera.cpp
@@ -383,7 +383,7 @@ READ8_MEMBER( pc8201_state::romrd_r )
uint8_t data = 0xff;
if (m_rom_sel)
- data = m_cas_cart->read_rom(m_rom_addr & 0x1ffff);
+ data = m_cas_cart->read_rom(space, m_rom_addr & 0x1ffff);
return data;
}
@@ -533,16 +533,32 @@ READ8_MEMBER( kc85_state::lcd_r )
{
uint8_t data = 0;
- for (uint8_t i = 0; i < 10; i++)
- data |= m_lcdc[i]->read(space, offset);
+ data |= m_lcdc0->read(space, offset);
+ data |= m_lcdc1->read(space, offset);
+ data |= m_lcdc2->read(space, offset);
+ data |= m_lcdc3->read(space, offset);
+ data |= m_lcdc4->read(space, offset);
+ data |= m_lcdc5->read(space, offset);
+ data |= m_lcdc6->read(space, offset);
+ data |= m_lcdc7->read(space, offset);
+ data |= m_lcdc8->read(space, offset);
+ data |= m_lcdc9->read(space, offset);
return data;
}
WRITE8_MEMBER( kc85_state::lcd_w )
{
- for (uint8_t i = 0; i < 10; i++)
- m_lcdc[i]->write(space, offset, data);
+ m_lcdc0->write(space, offset, data);
+ m_lcdc1->write(space, offset, data);
+ m_lcdc2->write(space, offset, data);
+ m_lcdc3->write(space, offset, data);
+ m_lcdc4->write(space, offset, data);
+ m_lcdc5->write(space, offset, data);
+ m_lcdc6->write(space, offset, data);
+ m_lcdc7->write(space, offset, data);
+ m_lcdc8->write(space, offset, data);
+ m_lcdc9->write(space, offset, data);
}
/* Memory Maps */
@@ -947,8 +963,14 @@ WRITE8_MEMBER( kc85_state::i8155_pa_w )
m_keylatch = (m_keylatch & 0x100) | data;
/* LCD */
- for (uint8_t i = 0; i < 8; i++)
- m_lcdc[i]->cs2_w(BIT(data, i));
+ m_lcdc0->cs2_w(BIT(data, 0));
+ m_lcdc1->cs2_w(BIT(data, 1));
+ m_lcdc2->cs2_w(BIT(data, 2));
+ m_lcdc3->cs2_w(BIT(data, 3));
+ m_lcdc4->cs2_w(BIT(data, 4));
+ m_lcdc5->cs2_w(BIT(data, 5));
+ m_lcdc6->cs2_w(BIT(data, 6));
+ m_lcdc7->cs2_w(BIT(data, 7));
/* RTC */
m_rtc->c0_w(BIT(data, 0));
@@ -979,8 +1001,8 @@ WRITE8_MEMBER( kc85_state::i8155_pb_w )
m_keylatch = (BIT(data, 0) << 8) | (m_keylatch & 0xff);
/* LCD */
- m_lcdc[8]->cs2_w(BIT(data, 0));
- m_lcdc[9]->cs2_w(BIT(data, 1));
+ m_lcdc8->cs2_w(BIT(data, 0));
+ m_lcdc9->cs2_w(BIT(data, 1));
/* beeper */
m_buzzer = BIT(data, 2);
diff --git a/src/mame/drivers/kyugo.cpp b/src/mame/drivers/kyugo.cpp
index d0c96f25d20..f7f0de665d5 100644
--- a/src/mame/drivers/kyugo.cpp
+++ b/src/mame/drivers/kyugo.cpp
@@ -519,20 +519,20 @@ INTERRUPT_GEN_MEMBER(kyugo_state::vblank_irq)
}
-void kyugo_state::kyugo_base(machine_config &config)
-{
+MACHINE_CONFIG_START(kyugo_state::kyugo_base)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'432'000)/6); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &kyugo_state::kyugo_main_map);
- m_maincpu->set_addrmap(AS_IO, &kyugo_state::kyugo_main_portmap);
- m_maincpu->set_vblank_int("screen", FUNC(kyugo_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'432'000)/6) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(kyugo_main_map)
+ MCFG_DEVICE_IO_MAP(kyugo_main_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", kyugo_state, vblank_irq)
- Z80(config, m_subcpu, XTAL(18'432'000)/6); /* verified on pcb */
- m_subcpu->set_addrmap(AS_PROGRAM, &kyugo_state::gyrodine_sub_map);
- m_subcpu->set_addrmap(AS_IO, &kyugo_state::gyrodine_sub_portmap);
- m_subcpu->set_periodic_int(FUNC(kyugo_state::irq0_line_hold), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("sub", Z80, XTAL(18'432'000)/6) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(gyrodine_sub_map)
+ MCFG_DEVICE_IO_MAP(gyrodine_sub_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(kyugo_state, irq0_line_hold, 4*60)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set(FUNC(kyugo_state::nmi_mask_w));
@@ -540,15 +540,15 @@ void kyugo_state::kyugo_base(machine_config &config)
mainlatch.q_out_cb<2>().set_inputline(m_subcpu, INPUT_LINE_RESET).invert();
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 36*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(kyugo_state::screen_update));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_kyugo);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(kyugo_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_kyugo)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
/* sound hardware */
@@ -560,51 +560,51 @@ void kyugo_state::kyugo_base(machine_config &config)
ay1.add_route(ALL_OUTPUTS, "mono", 0.30);
AY8910(config, "ay2", XTAL(18'432'000)/12).add_route(ALL_OUTPUTS, "mono", 0.30); /* verified on pcb */
-}
+MACHINE_CONFIG_END
-void kyugo_state::gyrodine(machine_config &config)
-{
+MACHINE_CONFIG_START(kyugo_state::gyrodine)
kyugo_base(config);
/* add watchdog */
WATCHDOG_TIMER(config, "watchdog");
- m_maincpu->set_addrmap(AS_PROGRAM, &kyugo_state::gyrodine_main_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(gyrodine_main_map)
+MACHINE_CONFIG_END
-void kyugo_state::repulse(machine_config &config)
-{
+MACHINE_CONFIG_START(kyugo_state::repulse)
kyugo_base(config);
/* basic machine hardware */
- m_subcpu->set_addrmap(AS_PROGRAM, &kyugo_state::repulse_sub_map);
- m_subcpu->set_addrmap(AS_IO, &kyugo_state::repulse_sub_portmap);
-}
+ MCFG_DEVICE_MODIFY("sub")
+ MCFG_DEVICE_PROGRAM_MAP(repulse_sub_map)
+ MCFG_DEVICE_IO_MAP(repulse_sub_portmap)
+MACHINE_CONFIG_END
-void kyugo_state::srdmissn(machine_config &config)
-{
+MACHINE_CONFIG_START(kyugo_state::srdmissn)
kyugo_base(config);
/* basic machine hardware */
- m_subcpu->set_addrmap(AS_PROGRAM, &kyugo_state::srdmissn_sub_map);
- m_subcpu->set_addrmap(AS_IO, &kyugo_state::srdmissn_sub_portmap);
-}
+ MCFG_DEVICE_MODIFY("sub")
+ MCFG_DEVICE_PROGRAM_MAP(srdmissn_sub_map)
+ MCFG_DEVICE_IO_MAP(srdmissn_sub_portmap)
+MACHINE_CONFIG_END
-void kyugo_state::flashgala(machine_config &config)
-{
+MACHINE_CONFIG_START(kyugo_state::flashgala)
kyugo_base(config);
/* basic machine hardware */
- m_subcpu->set_addrmap(AS_PROGRAM, &kyugo_state::flashgala_sub_map);
- m_subcpu->set_addrmap(AS_IO, &kyugo_state::flashgala_sub_portmap);
-}
+ MCFG_DEVICE_MODIFY("sub")
+ MCFG_DEVICE_PROGRAM_MAP(flashgala_sub_map)
+ MCFG_DEVICE_IO_MAP(flashgala_sub_portmap)
+MACHINE_CONFIG_END
-void kyugo_state::legend(machine_config &config)
-{
+MACHINE_CONFIG_START(kyugo_state::legend)
kyugo_base(config);
/* basic machine hardware */
- m_subcpu->set_addrmap(AS_PROGRAM, &kyugo_state::legend_sub_map);
- m_subcpu->set_addrmap(AS_IO, &kyugo_state::srdmissn_sub_portmap);
-}
+ MCFG_DEVICE_MODIFY("sub")
+ MCFG_DEVICE_PROGRAM_MAP(legend_sub_map)
+ MCFG_DEVICE_IO_MAP(srdmissn_sub_portmap)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/labyrunr.cpp b/src/mame/drivers/labyrunr.cpp
index 5309b55a80f..41101cb84ec 100644
--- a/src/mame/drivers/labyrunr.cpp
+++ b/src/mame/drivers/labyrunr.cpp
@@ -164,24 +164,24 @@ void labyrunr_state::machine_start()
membank("bank1")->configure_entries(0, 6, &ROM[0x10000], 0x4000);
}
-void labyrunr_state::labyrunr(machine_config &config)
-{
+MACHINE_CONFIG_START(labyrunr_state::labyrunr)
+
/* basic machine hardware */
- HD6309(config, m_maincpu, 3000000*4); /* 24MHz/8? */
- m_maincpu->set_addrmap(AS_PROGRAM, &labyrunr_state::labyrunr_map);
- m_maincpu->set_periodic_int(FUNC(labyrunr_state::labyrunr_timer_interrupt), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("maincpu", HD6309, 3000000*4) /* 24MHz/8? */
+ MCFG_DEVICE_PROGRAM_MAP(labyrunr_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(labyrunr_state, labyrunr_timer_interrupt, 4*60)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(37*8, 32*8);
- screen.set_visarea(0*8, 35*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(labyrunr_state::screen_update_labyrunr));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(labyrunr_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(37*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 35*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(labyrunr_state, screen_update_labyrunr)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, labyrunr_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_labyrunr);
PALETTE(config, m_palette, FUNC(labyrunr_state::labyrunr_palette));
@@ -209,7 +209,7 @@ void labyrunr_state::labyrunr(machine_config &config)
ym2.add_route(1, "mono", 0.40);
ym2.add_route(2, "mono", 0.40);
ym2.add_route(3, "mono", 0.80);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/ladybug.cpp b/src/mame/drivers/ladybug.cpp
index 14ee602e55d..f97996b3580 100644
--- a/src/mame/drivers/ladybug.cpp
+++ b/src/mame/drivers/ladybug.cpp
@@ -122,8 +122,8 @@ void ladybug_state::ladybug_map(address_map &map)
map(0x9002, 0x9002).portr("DSW0");
map(0x9003, 0x9003).portr("DSW1");
map(0xa000, 0xa007).w("videolatch", FUNC(ls259_device::write_d0));
- map(0xb000, 0xbfff).w("sn1", FUNC(sn76489_device::write));
- map(0xc000, 0xcfff).w("sn2", FUNC(sn76489_device::write));
+ map(0xb000, 0xbfff).w("sn1", FUNC(sn76489_device::command_w));
+ map(0xc000, 0xcfff).w("sn2", FUNC(sn76489_device::command_w));
map(0xd000, 0xd7ff).rw(m_video, FUNC(ladybug_video_device::bg_r), FUNC(ladybug_video_device::bg_w));
map(0xe000, 0xe000).portr("IN2");
}
@@ -165,11 +165,11 @@ void sraider_state::sraider_cpu2_map(address_map &map)
void sraider_state::sraider_cpu2_io_map(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).w("sn1", FUNC(sn76489_device::write));
- map(0x08, 0x08).w("sn2", FUNC(sn76489_device::write));
- map(0x10, 0x10).w("sn3", FUNC(sn76489_device::write));
- map(0x18, 0x18).w("sn4", FUNC(sn76489_device::write));
- map(0x20, 0x20).w("sn5", FUNC(sn76489_device::write));
+ map(0x00, 0x00).w("sn1", FUNC(sn76489_device::command_w));
+ map(0x08, 0x08).w("sn2", FUNC(sn76489_device::command_w));
+ map(0x10, 0x10).w("sn3", FUNC(sn76489_device::command_w));
+ map(0x18, 0x18).w("sn4", FUNC(sn76489_device::command_w));
+ map(0x20, 0x20).w("sn5", FUNC(sn76489_device::command_w));
map(0x28, 0x3f).w(FUNC(sraider_state::sraider_misc_w)); // lots unknown
}
@@ -721,20 +721,20 @@ void sraider_state::machine_reset()
}
-void ladybug_state::ladybug(machine_config &config)
-{
+MACHINE_CONFIG_START(ladybug_state::ladybug)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* 4 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &ladybug_state::ladybug_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(ladybug_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(1*8, 31*8-1, 4*8, 28*8-1);
- screen.set_screen_update(FUNC(ladybug_state::screen_update_ladybug));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ladybug_state, screen_update_ladybug)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_ladybug);
PALETTE(config, "palette", FUNC(ladybug_state::ladybug_palette), 4*8 + 4*16, 32);
@@ -749,36 +749,36 @@ void ladybug_state::ladybug(machine_config &config)
SN76489(config, "sn1", 4000000).add_route(ALL_OUTPUTS, "mono", 1.0);
SN76489(config, "sn2", 4000000).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
-void dorodon_state::dorodon(machine_config &config)
-{
+MACHINE_CONFIG_START(dorodon_state::dorodon)
ladybug(config);
- m_maincpu->set_addrmap(AS_OPCODES, &dorodon_state::decrypted_opcodes_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(sraider_state::sraider)
-void sraider_state::sraider(machine_config &config)
-{
/* basic machine hardware */
- z80_device &maincpu(Z80(config, "maincpu", 4000000)); /* 4 MHz */
- maincpu.set_addrmap(AS_PROGRAM, &sraider_state::sraider_cpu1_map);
- maincpu.set_vblank_int("screen", FUNC(sraider_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sraider_cpu1_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sraider_state, irq0_line_hold)
- z80_device &sub(Z80(config, "sub", 4000000)); /* 4 MHz */
- sub.set_addrmap(AS_PROGRAM, &sraider_state::sraider_cpu2_map);
- sub.set_addrmap(AS_IO, &sraider_state::sraider_cpu2_io_map);
- sub.set_vblank_int("screen", FUNC(sraider_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("sub", Z80, 4000000) /* 4 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sraider_cpu2_map)
+ MCFG_DEVICE_IO_MAP(sraider_cpu2_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sraider_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(1*8, 31*8-1, 4*8, 28*8-1);
- screen.set_screen_update(FUNC(sraider_state::screen_update_sraider));
- screen.screen_vblank().set(FUNC(sraider_state::screen_vblank_sraider));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sraider_state, screen_update_sraider)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sraider_state, screen_vblank_sraider))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sraider);
PALETTE(config, m_palette, FUNC(sraider_state::sraider_palette), 4*8 + 4*16 + 32 + 2, 32 + 32 + 1);
@@ -794,7 +794,7 @@ void sraider_state::sraider(machine_config &config)
SN76489(config, "sn3", 4000000).add_route(ALL_OUTPUTS, "mono", 1.0);
SN76489(config, "sn4", 4000000).add_route(ALL_OUTPUTS, "mono", 1.0);
SN76489(config, "sn5", 4000000).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/ladyfrog.cpp b/src/mame/drivers/ladyfrog.cpp
index 718eabb91b7..be3263d3bf5 100644
--- a/src/mame/drivers/ladyfrog.cpp
+++ b/src/mame/drivers/ladyfrog.cpp
@@ -340,6 +340,7 @@ void ladyfrog_state::ladyfrog(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "mono", 0.25); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/laser3k.cpp b/src/mame/drivers/laser3k.cpp
index df772f96d27..e2d3d28bd7c 100644
--- a/src/mame/drivers/laser3k.cpp
+++ b/src/mame/drivers/laser3k.cpp
@@ -972,19 +972,18 @@ void laser3k_state::laser3k_palette(palette_device &palette) const
palette.set_pen_colors(0, laser3k_pens);
}
-void laser3k_state::laser3k(machine_config &config)
-{
+MACHINE_CONFIG_START(laser3k_state::laser3k)
/* basic machine hardware */
- M6502(config, m_maincpu, 1021800);
- m_maincpu->set_addrmap(AS_PROGRAM, &laser3k_state::laser3k_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, 1021800)
+ MCFG_DEVICE_PROGRAM_MAP(laser3k_map)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(50);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(300*2, 192);
- m_screen->set_visarea(0, (280*2)-1,0,192-1);
- m_screen->set_screen_update(FUNC(laser3k_state::screen_update));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(300*2, 192)
+ MCFG_SCREEN_VISIBLE_AREA(0, (280*2)-1,0,192-1)
+ MCFG_SCREEN_UPDATE_DRIVER(laser3k_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(laser3k_state::laser3k_palette), ARRAY_LENGTH(laser3k_pens));
@@ -1013,9 +1012,11 @@ void laser3k_state::laser3k(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
- SN76489(config, m_sn, 1020484).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+ MCFG_DEVICE_ADD("sn76489", SN76489, 1020484)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
ROM_START(las3000)
ROM_REGION(0x0800,"gfx1",0)
diff --git a/src/mame/drivers/laserbas.cpp b/src/mame/drivers/laserbas.cpp
index 0d9dae8a029..0df02156860 100644
--- a/src/mame/drivers/laserbas.cpp
+++ b/src/mame/drivers/laserbas.cpp
@@ -368,12 +368,12 @@ INPUT_PORTS_END
#define CLOCK 16680000
#define PIT_CLOCK (CLOCK/16) // 12 divider ?
-void laserbas_state::laserbas(machine_config &config)
-{
- Z80(config, m_maincpu, CLOCK / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &laserbas_state::laserbas_memory);
- m_maincpu->set_addrmap(AS_IO, &laserbas_state::laserbas_io);
- TIMER(config, "scantimer").configure_scanline(FUNC(laserbas_state::laserbas_scanline), "screen", 0, 1);
+MACHINE_CONFIG_START(laserbas_state::laserbas)
+
+ MCFG_DEVICE_ADD("maincpu", Z80, CLOCK / 4)
+ MCFG_DEVICE_PROGRAM_MAP(laserbas_memory)
+ MCFG_DEVICE_IO_MAP(laserbas_io)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", laserbas_state, laserbas_scanline, "screen", 0, 1)
/* TODO: clocks aren't known */
pit8253_device &pit0(PIT8253(config, "pit0", 0));
@@ -392,9 +392,9 @@ void laserbas_state::laserbas(machine_config &config)
pit1.out_handler<1>().set(FUNC(laserbas_state::pit_out_w<4>));
pit1.out_handler<2>().set(FUNC(laserbas_state::pit_out_w<5>));
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(4000000, 256, 0, 256, 256, 0, 256); /* temporary, CRTC will configure screen */
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(4000000, 256, 0, 256, 256, 0, 256) /* temporary, CRTC will configure screen */
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
h46505_device &crtc(H46505(config, "crtc", 3000000/4)); /* unknown clock, hand tuned to get ~60 fps */
crtc.set_screen("screen");
@@ -406,20 +406,21 @@ void laserbas_state::laserbas(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_4BIT_R2R(config, m_dac[0], 0).add_route(ALL_OUTPUTS, "speaker", 0.16);
- DAC_4BIT_R2R(config, m_dac[1], 0).add_route(ALL_OUTPUTS, "speaker", 0.16);
- DAC_4BIT_R2R(config, m_dac[2], 0).add_route(ALL_OUTPUTS, "speaker", 0.16);
- DAC_4BIT_R2R(config, m_dac[3], 0).add_route(ALL_OUTPUTS, "speaker", 0.16);
- DAC_4BIT_R2R(config, m_dac[4], 0).add_route(ALL_OUTPUTS, "speaker", 0.16);
- DAC_4BIT_R2R(config, m_dac[5], 0).add_route(ALL_OUTPUTS, "speaker", 0.16);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac3", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac3", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac4", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac4", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac5", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac5", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac6", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac6", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD(m_dac[0], DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.16)
+ MCFG_DEVICE_ADD(m_dac[1], DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.16)
+ MCFG_DEVICE_ADD(m_dac[2], DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.16)
+ MCFG_DEVICE_ADD(m_dac[3], DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.16)
+ MCFG_DEVICE_ADD(m_dac[4], DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.16)
+ MCFG_DEVICE_ADD(m_dac[5], DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.16)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac3", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac3", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac4", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac4", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac5", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac5", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac6", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac6", -1.0, DAC_VREF_NEG_INPUT)
+
+MACHINE_CONFIG_END
/*
Amstar LaserBase 1981 (Hoei)
diff --git a/src/mame/drivers/lasso.cpp b/src/mame/drivers/lasso.cpp
index f5ecc749f62..cf307aab66f 100644
--- a/src/mame/drivers/lasso.cpp
+++ b/src/mame/drivers/lasso.cpp
@@ -491,26 +491,26 @@ MACHINE_RESET_MEMBER(lasso_state,wwjgtin)
m_track_enable = 0;
}
-void lasso_state::base(machine_config &config)
-{
+MACHINE_CONFIG_START(lasso_state::base)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 11289000/16); /* guess */
- m_maincpu->set_addrmap(AS_PROGRAM, &lasso_state::lasso_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(lasso_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M6502, 11289000/16) /* guess */
+ MCFG_DEVICE_PROGRAM_MAP(lasso_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lasso_state, irq0_line_hold)
- M6502(config, m_audiocpu, 600000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &lasso_state::lasso_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6502, 600000)
+ MCFG_DEVICE_PROGRAM_MAP(lasso_audio_map)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57); /* guess, but avoids glitching of Chameleon's high score table */
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(lasso_state::screen_update_lasso));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57) /* guess, but avoids glitching of Chameleon's high score table */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(lasso_state, screen_update_lasso)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lasso);
@@ -521,88 +521,90 @@ void lasso_state::base(machine_config &config)
SN76489(config, m_sn_1, 2000000).add_route(ALL_OUTPUTS, "speaker", 1.0);
SN76489(config, m_sn_2, 2000000).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+MACHINE_CONFIG_END
-void lasso_state::lasso(machine_config &config)
-{
+MACHINE_CONFIG_START(lasso_state::lasso)
base(config);
/* basic machine hardware */
- m6502_device & blitter(M6502(config, "blitter", 11289000/16)); /* guess */
- blitter.set_addrmap(AS_PROGRAM, &lasso_state::lasso_coprocessor_map);
+ MCFG_DEVICE_ADD("blitter", M6502, 11289000/16) /* guess */
+ MCFG_DEVICE_PROGRAM_MAP(lasso_coprocessor_map)
PALETTE(config, m_palette, FUNC(lasso_state::lasso_palette), 0x40);
-}
+MACHINE_CONFIG_END
-void lasso_state::chameleo(machine_config &config)
-{
+MACHINE_CONFIG_START(lasso_state::chameleo)
base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &lasso_state::chameleo_main_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(chameleo_main_map)
- m_audiocpu->set_addrmap(AS_PROGRAM, &lasso_state::chameleo_audio_map);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(chameleo_audio_map)
/* video hardware */
PALETTE(config, m_palette, FUNC(lasso_state::lasso_palette), 0x40);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(lasso_state::screen_update_chameleo));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(lasso_state, screen_update_chameleo)
+MACHINE_CONFIG_END
-void lasso_state::wwjgtin(machine_config &config)
-{
+MACHINE_CONFIG_START(lasso_state::wwjgtin)
base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &lasso_state::wwjgtin_main_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(wwjgtin_main_map)
- m_audiocpu->set_addrmap(AS_PROGRAM, &lasso_state::wwjgtin_audio_map);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(wwjgtin_audio_map)
MCFG_MACHINE_START_OVERRIDE(lasso_state,wwjgtin)
MCFG_MACHINE_RESET_OVERRIDE(lasso_state,wwjgtin)
/* video hardware */
- subdevice<screen_device>("screen")->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(lasso_state::screen_update_wwjgtin));
- m_gfxdecode->set_info(gfx_wwjgtin); // Has 1 additional layer
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(lasso_state, screen_update_wwjgtin)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_wwjgtin) // Has 1 additional layer
PALETTE(config, m_palette, FUNC(lasso_state::wwjgtin_palette), 0x40 + 16*16, 64);
MCFG_VIDEO_START_OVERRIDE(lasso_state,wwjgtin)
/* sound hardware */
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void lasso_state::pinbo(machine_config &config)
-{
+MACHINE_CONFIG_START(lasso_state::pinbo)
base(config);
/* basic machine hardware */
- M6502(config.replace(), m_maincpu, XTAL(18'000'000)/24);
- m_maincpu->set_addrmap(AS_PROGRAM, &lasso_state::pinbo_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(lasso_state::irq0_line_hold));
+ MCFG_DEVICE_REPLACE("maincpu", M6502, XTAL(18'000'000)/24)
+ MCFG_DEVICE_PROGRAM_MAP(pinbo_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lasso_state, irq0_line_hold)
- Z80(config.replace(), m_audiocpu, XTAL(18'000'000)/6);
- m_audiocpu->set_addrmap(AS_PROGRAM, &lasso_state::pinbo_audio_map);
- m_audiocpu->set_addrmap(AS_IO, &lasso_state::pinbo_audio_io_map);
+ MCFG_DEVICE_REPLACE("audiocpu", Z80, XTAL(18'000'000)/6)
+ MCFG_DEVICE_PROGRAM_MAP(pinbo_audio_map)
+ MCFG_DEVICE_IO_MAP(pinbo_audio_io_map)
/* video hardware */
- m_gfxdecode->set_info(gfx_pinbo);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_pinbo)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
MCFG_VIDEO_START_OVERRIDE(lasso_state,pinbo)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(lasso_state::screen_update_chameleo));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(lasso_state, screen_update_chameleo)
/* sound hardware */
- config.device_remove("sn76489.1");
- config.device_remove("sn76489.2");
+ MCFG_DEVICE_REMOVE("sn76489.1")
+ MCFG_DEVICE_REMOVE("sn76489.2")
AY8910(config, "ay1", XTAL(18'000'000)/12).add_route(ALL_OUTPUTS, "speaker", 0.55);
AY8910(config, "ay2", XTAL(18'000'000)/12).add_route(ALL_OUTPUTS, "speaker", 0.55);
-}
+MACHINE_CONFIG_END
ROM_START( lasso )
diff --git a/src/mame/drivers/lastbank.cpp b/src/mame/drivers/lastbank.cpp
index c76837381d7..1942d977b20 100644
--- a/src/mame/drivers/lastbank.cpp
+++ b/src/mame/drivers/lastbank.cpp
@@ -512,37 +512,37 @@ TIMER_DEVICE_CALLBACK_MEMBER(lastbank_state::irq_scanline)
}
}
-void lastbank_state::lastbank(machine_config &config)
-{
+MACHINE_CONFIG_START(lastbank_state::lastbank)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/4); //!!! TC0091LVC !!!
- m_maincpu->set_addrmap(AS_PROGRAM, &lastbank_state::lastbank_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(lastbank_state::irq_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu",Z80,MASTER_CLOCK/4) //!!! TC0091LVC !!!
+ MCFG_DEVICE_PROGRAM_MAP(lastbank_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", lastbank_state, irq_scanline, "screen", 0, 1)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- z80_device &audiocpu(Z80(config, "audiocpu", MASTER_CLOCK/4));
- audiocpu.set_addrmap(AS_PROGRAM, &lastbank_state::lastbank_audio_map);
- audiocpu.set_addrmap(AS_IO, &lastbank_state::lastbank_audio_io);
+ MCFG_DEVICE_ADD("audiocpu",Z80,MASTER_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(lastbank_audio_map)
+ MCFG_DEVICE_IO_MAP(lastbank_audio_io)
// yes, we have no interrupts
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
//MCFG_MACHINE_START_OVERRIDE(lastbank_state,lastbank)
//MCFG_MACHINE_RESET_OVERRIDE(lastbank_state,lastbank)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(lastbank_state::screen_update));
- screen.screen_vblank().set(FUNC(lastbank_state::screen_vblank));
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_lastbank );
- PALETTE(config, "palette").set_entries(0x100);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(lastbank_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, lastbank_state, screen_vblank))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lastbank )
+ MCFG_PALETTE_ADD("palette", 0x100)
TC0091LVC(config, m_vdp, 0);
m_vdp->set_gfxdecode_tag("gfxdecode");
@@ -555,7 +555,8 @@ void lastbank_state::lastbank(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch1");
GENERIC_LATCH_8(config, "soundlatch2");
- OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.75);
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
ES8712(config, m_essnd, 0);
m_essnd->msm_write_handler().set("msm", FUNC(msm6585_device::data_w));
@@ -569,7 +570,7 @@ void lastbank_state::lastbank(machine_config &config)
// A RTC-62421 is present on the Last Bank PCB. However, the code
// that tries to read from it is broken and nonfunctional. The RTC
// is also absent from some other games on the same hardware.
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/lastfght.cpp b/src/mame/drivers/lastfght.cpp
index 36b169f41f4..ba14903c9ee 100644
--- a/src/mame/drivers/lastfght.cpp
+++ b/src/mame/drivers/lastfght.cpp
@@ -553,28 +553,28 @@ void lastfght_state::machine_reset()
m_c00006 = 0;
}
-void lastfght_state::lastfght(machine_config &config)
-{
+MACHINE_CONFIG_START(lastfght_state::lastfght)
+
/* basic machine hardware */
- H83044(config, m_maincpu, 32000000/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &lastfght_state::lastfght_map);
- m_maincpu->set_vblank_int("screen", FUNC(lastfght_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", H83044, 32000000/2)
+ MCFG_DEVICE_PROGRAM_MAP( lastfght_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lastfght_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_PALETTE_ADD( "palette", 256 )
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette)); // HMC HM86171 VGA 256 colour RAMDAC
ramdac.set_addrmap(0, &lastfght_state::ramdac_map);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 256-16-1);
- m_screen->set_refresh_hz(60);
- m_screen->set_screen_update(FUNC(lastfght_state::screen_update));
- m_screen->set_palette(m_palette);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE( 512, 256 )
+ MCFG_SCREEN_VISIBLE_AREA( 0, 512-1, 0, 256-16-1 )
+ MCFG_SCREEN_REFRESH_RATE( 60 )
+ MCFG_SCREEN_UPDATE_DRIVER(lastfght_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/laz_aftrshok.cpp b/src/mame/drivers/laz_aftrshok.cpp
index 954f203c6de..ac70499d7ac 100644
--- a/src/mame/drivers/laz_aftrshok.cpp
+++ b/src/mame/drivers/laz_aftrshok.cpp
@@ -30,7 +30,6 @@ https://www.youtube.com/watch?v=9DIhuOEVwf4
*/
#include "emu.h"
-#include "cpu/mcs51/mcs51.h"
#include "sound/okim6295.h"
#include "speaker.h"
@@ -40,139 +39,46 @@ class aftrshok_state : public driver_device
public:
aftrshok_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_oki(*this, "oki")
+ // ,m_maincpu(*this, "maincpu")
{ }
void aftrshok(machine_config &config);
private:
- void sound_data_w(u8 data);
- void mcu_p3_w(u8 data);
-
- void prog_map(address_map &map);
- void ext_map(address_map &map);
-
virtual void machine_start() override;
virtual void machine_reset() override;
- required_device<mcs51_cpu_device> m_maincpu;
- required_device<okim6295_device> m_oki;
-
- u8 m_sound_data;
+// required_device<mcs51_cpu_device> m_maincpu;
};
static INPUT_PORTS_START( aftrshok )
- PORT_START("IN0")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
-
- PORT_START("IN1")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
-
- PORT_START("IN2")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
-
- PORT_START("IN3")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
-
- PORT_START("IN4")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
INPUT_PORTS_END
void aftrshok_state::machine_start()
{
- save_item(NAME(m_sound_data));
}
void aftrshok_state::machine_reset()
{
- m_sound_data = 0;
-}
-
-void aftrshok_state::sound_data_w(u8 data)
-{
- m_sound_data = data;
-}
-
-void aftrshok_state::mcu_p3_w(u8 data)
-{
- if (!BIT(data, 1) && !BIT(data, 2))
- m_oki->write(m_sound_data);
-}
-
-void aftrshok_state::prog_map(address_map &map)
-{
- map(0x0000, 0xffff).rom().region("maincpu", 0);
}
-void aftrshok_state::ext_map(address_map &map)
-{
- map(0x0700, 0x0700).nopw();
- map(0x0800, 0x0800).nopw();
- map(0x1000, 0x1000).w(FUNC(aftrshok_state::sound_data_w));
- map(0x1800, 0x1800).nopw();
- map(0x2000, 0x2000).nopw();
- map(0x2800, 0x2800).nopw();
- map(0x4000, 0x4000).portr("IN0");
- map(0x4800, 0x4800).portr("IN1");
- map(0x5000, 0x5000).portr("IN2");
- map(0x5800, 0x5800).portr("IN3");
- map(0x6000, 0x6000).portr("IN4");
- map(0x8000, 0x9fff).ram();
-}
+MACHINE_CONFIG_START(aftrshok_state::aftrshok)
-void aftrshok_state::aftrshok(machine_config &config)
-{
/* basic machine hardware */
- I8031(config, m_maincpu, 12_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &aftrshok_state::prog_map);
- m_maincpu->set_addrmap(AS_IO, &aftrshok_state::ext_map);
- m_maincpu->port_out_cb<3>().set(FUNC(aftrshok_state::mcu_p3_w));
+// MCFG_DEVICE_ADD("maincpu", ??, 8000000) // unknown
+// MCFG_DEVICE_PROGRAM_MAP(aftrshok_map)
+// MCFG_DEVICE_IO_MAP(aftrshok_io)
+// MCFG_DEVICE_VBLANK_INT_DRIVER("screen", aftrshok_state, irq0_line_hold)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, 2.097152_MHz_XTAL, okim6295_device::PIN7_HIGH);
- m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) // maybe
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
@@ -197,5 +103,5 @@ ROM_START( aftrshoka )
ROM_END
-GAME( 19??, aftrshok, 0, aftrshok, aftrshok, aftrshok_state, empty_init, ROT0, "Lazer-tron", "After Shock (Lazer-tron, set 1)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL )
-GAME( 19??, aftrshoka, aftrshok, aftrshok, aftrshok, aftrshok_state, empty_init, ROT0, "Lazer-tron", "After Shock (Lazer-tron, set 2)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL )
+GAME( 19??, aftrshok, 0, aftrshok, aftrshok, aftrshok_state, empty_init, ROT0, "Lazer-tron", "After Shock (Lazer-tron, set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 19??, aftrshoka, aftrshok, aftrshok, aftrshok, aftrshok_state, empty_init, ROT0, "Lazer-tron", "After Shock (Lazer-tron, set 2)", MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/laz_awetoss.cpp b/src/mame/drivers/laz_awetoss.cpp
index 8f88516353f..6de09c4ecbf 100644
--- a/src/mame/drivers/laz_awetoss.cpp
+++ b/src/mame/drivers/laz_awetoss.cpp
@@ -45,19 +45,20 @@ void awetoss_state::machine_reset()
}
-void awetoss_state::awetoss(machine_config &config)
-{
+MACHINE_CONFIG_START(awetoss_state::awetoss)
+
/* basic machine hardware */
-// ??_device &maincpu(??(config, "maincpu", 8000000)); // unknown
-// maincpu.set_addrmap(AS_PROGRAM, &awetoss_state::awetoss_map);
-// maincpu.set_addrmap(AS_IO, &awetoss_state::awetoss_io);
-// maincpu.set_vblank_int("screen", FUNC(awetoss_state::irq0_line_hold));
+// MCFG_DEVICE_ADD("maincpu", ??, 8000000) // unknown
+// MCFG_DEVICE_PROGRAM_MAP(awetoss_map)
+// MCFG_DEVICE_IO_MAP(awetoss_io)
+// MCFG_DEVICE_VBLANK_INT_DRIVER("screen", awetoss_state, irq0_line_hold)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // maybe
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) // maybe
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/laz_ribrac.cpp b/src/mame/drivers/laz_ribrac.cpp
index 7ef91dff45f..2003a22860a 100644
--- a/src/mame/drivers/laz_ribrac.cpp
+++ b/src/mame/drivers/laz_ribrac.cpp
@@ -49,18 +49,19 @@ void laz_ribrac_state::machine_reset()
}
-void laz_ribrac_state::laz_ribrac(machine_config &config)
-{
+MACHINE_CONFIG_START(laz_ribrac_state::laz_ribrac)
+
/* basic machine hardware */
-// ??_device &maincpu(??(config, "maincpu", 8000000)); // unknown
-// maincpu.set_addrmap(AS_PROGRAM, &laz_ribrac_state::laz_ribrac_map);
-// maincpu.set_addrmap(AS_IO, &laz_ribrac_state::laz_ribrac_io);
+// MCFG_DEVICE_ADD("maincpu", ??, 8000000) // unknown
+// MCFG_DEVICE_PROGRAM_MAP(laz_ribrac_map)
+// MCFG_DEVICE_IO_MAP(laz_ribrac_io)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // maybe
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) // maybe
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/lazercmd.cpp b/src/mame/drivers/lazercmd.cpp
index f5282ebecee..376cc587bd0 100644
--- a/src/mame/drivers/lazercmd.cpp
+++ b/src/mame/drivers/lazercmd.cpp
@@ -626,110 +626,110 @@ void lazercmd_state::machine_reset()
}
-void lazercmd_state::lazercmd(machine_config &config)
-{
+MACHINE_CONFIG_START(lazercmd_state::lazercmd)
+
/* basic machine hardware */
- S2650(config, m_maincpu, MASTER_CLOCK/12); /* 666 kHz? */
+ MCFG_DEVICE_ADD("maincpu", S2650, MASTER_CLOCK/12) /* 666 kHz? */
/* Main Clock is 8MHz divided by 12
but memory and IO access is only possible
within the line and frame blanking period
thus requiring an extra loading of approx 3-5 */
- m_maincpu->set_addrmap(AS_PROGRAM, &lazercmd_state::lazercmd_map);
- m_maincpu->set_addrmap(AS_DATA, &lazercmd_state::lazercmd_portmap);
- TIMER(config, "scantimer").configure_scanline(FUNC(lazercmd_state::lazercmd_timer), "screen", 0, 1);
+ MCFG_DEVICE_PROGRAM_MAP(lazercmd_map)
+ MCFG_DEVICE_DATA_MAP(lazercmd_portmap)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", lazercmd_state, lazercmd_timer, "screen", 0, 1)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(HORZ_RES * HORZ_CHR, VERT_RES * VERT_CHR + 16);
- screen.set_visarea(0 * HORZ_CHR, HORZ_RES * HORZ_CHR - 1, 0 * VERT_CHR, (VERT_RES - 1) * VERT_CHR - 1);
- screen.set_screen_update(FUNC(lazercmd_state::screen_update_lazercmd));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(HORZ_RES * HORZ_CHR, VERT_RES * VERT_CHR + 16)
+ MCFG_SCREEN_VISIBLE_AREA(0 * HORZ_CHR, HORZ_RES * HORZ_CHR - 1, 0 * VERT_CHR, (VERT_RES - 1) * VERT_CHR - 1)
+ MCFG_SCREEN_UPDATE_DRIVER(lazercmd_state, screen_update_lazercmd)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lazercmd);
PALETTE(config, m_palette, FUNC(lazercmd_state::lazercmd_palette), 5);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac0, 0).add_route(ALL_OUTPUTS, "speaker", 0.99);
- DAC_1BIT(config, m_dac1, 0).add_route(ALL_OUTPUTS, "speaker", 0.99);
- DAC_1BIT(config, m_dac2, 0).add_route(ALL_OUTPUTS, "speaker", 0.99);
- DAC_1BIT(config, m_dac3, 0).add_route(ALL_OUTPUTS, "speaker", 0.99);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac0", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac3", 1.0, DAC_VREF_POS_INPUT);
-}
+ MCFG_DEVICE_ADD("dac0", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.99)
+ MCFG_DEVICE_ADD("dac1", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.99)
+ MCFG_DEVICE_ADD("dac2", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.99)
+ MCFG_DEVICE_ADD("dac3", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.99)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac0", 1.0, DAC_VREF_POS_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac3", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
-void lazercmd_state::medlanes(machine_config &config)
-{
+MACHINE_CONFIG_START(lazercmd_state::medlanes)
+
/* basic machine hardware */
- S2650(config, m_maincpu, MASTER_CLOCK/12); /* 666 kHz */
+ MCFG_DEVICE_ADD("maincpu", S2650, MASTER_CLOCK/12) /* 666 kHz */
/* Main Clock is 8MHz divided by 12
but memory and IO access is only possible
within the line and frame blanking period
thus requiring an extra loading of approx 3-5 */
- m_maincpu->set_addrmap(AS_PROGRAM, &lazercmd_state::medlanes_map);
- m_maincpu->set_addrmap(AS_DATA, &lazercmd_state::lazercmd_portmap);
- TIMER(config, "scantimer").configure_scanline(FUNC(lazercmd_state::lazercmd_timer), "screen", 0, 1);
+ MCFG_DEVICE_PROGRAM_MAP(medlanes_map)
+ MCFG_DEVICE_DATA_MAP(lazercmd_portmap)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", lazercmd_state, lazercmd_timer, "screen", 0, 1)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(HORZ_RES * HORZ_CHR, VERT_RES * VERT_CHR);
- screen.set_visarea(0 * HORZ_CHR, HORZ_RES * HORZ_CHR - 1, 0 * VERT_CHR, VERT_RES * VERT_CHR - 1);
- screen.set_screen_update(FUNC(lazercmd_state::screen_update_lazercmd));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(HORZ_RES * HORZ_CHR, VERT_RES * VERT_CHR)
+ MCFG_SCREEN_VISIBLE_AREA(0 * HORZ_CHR, HORZ_RES * HORZ_CHR - 1, 0 * VERT_CHR, VERT_RES * VERT_CHR - 1)
+ MCFG_SCREEN_UPDATE_DRIVER(lazercmd_state, screen_update_lazercmd)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lazercmd);
PALETTE(config, m_palette, FUNC(lazercmd_state::lazercmd_palette), 5);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac2, 0).add_route(ALL_OUTPUTS, "speaker", 0.99);
- DAC_1BIT(config, m_dac3, 0).add_route(ALL_OUTPUTS, "speaker", 0.99);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac3", 1.0, DAC_VREF_POS_INPUT);
-}
+ MCFG_DEVICE_ADD("dac2", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.99)
+ MCFG_DEVICE_ADD("dac3", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.99)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac3", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
-void lazercmd_state::bbonk(machine_config &config)
-{
+MACHINE_CONFIG_START(lazercmd_state::bbonk)
+
/* basic machine hardware */
- S2650(config, m_maincpu, MASTER_CLOCK/12); /* 666 kHz */
+ MCFG_DEVICE_ADD("maincpu", S2650, MASTER_CLOCK/12) /* 666 kHz */
/* Main Clock is 8MHz divided by 12
but memory and IO access is only possible
within the line and frame blanking period
thus requiring an extra loading of approx 3-5 */
- m_maincpu->set_addrmap(AS_PROGRAM, &lazercmd_state::bbonk_map);
- m_maincpu->set_addrmap(AS_DATA, &lazercmd_state::lazercmd_portmap);
- TIMER(config, "scantimer").configure_scanline(FUNC(lazercmd_state::bbonk_timer), "screen", 0, 1);
+ MCFG_DEVICE_PROGRAM_MAP(bbonk_map)
+ MCFG_DEVICE_DATA_MAP(lazercmd_portmap)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", lazercmd_state, bbonk_timer, "screen", 0, 1)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(HORZ_RES * HORZ_CHR, VERT_RES * VERT_CHR);
- screen.set_visarea(0 * HORZ_CHR, HORZ_RES * HORZ_CHR - 1, 0 * VERT_CHR, (VERT_RES - 1) * VERT_CHR - 1);
- screen.set_screen_update(FUNC(lazercmd_state::screen_update_lazercmd));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(HORZ_RES * HORZ_CHR, VERT_RES * VERT_CHR)
+ MCFG_SCREEN_VISIBLE_AREA(0 * HORZ_CHR, HORZ_RES * HORZ_CHR - 1, 0 * VERT_CHR, (VERT_RES - 1) * VERT_CHR - 1)
+ MCFG_SCREEN_UPDATE_DRIVER(lazercmd_state, screen_update_lazercmd)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lazercmd);
PALETTE(config, m_palette, FUNC(lazercmd_state::lazercmd_palette), 5);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac2, 0).add_route(ALL_OUTPUTS, "speaker", 0.99);
- DAC_1BIT(config, m_dac3, 0).add_route(ALL_OUTPUTS, "speaker", 0.99);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac3", 1.0, DAC_VREF_POS_INPUT);
-}
+ MCFG_DEVICE_ADD("dac2", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.99)
+ MCFG_DEVICE_ADD("dac3", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.99)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac3", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/lb186.cpp b/src/mame/drivers/lb186.cpp
index b66fb20d84c..fa6ed3e6c9b 100644
--- a/src/mame/drivers/lb186.cpp
+++ b/src/mame/drivers/lb186.cpp
@@ -116,9 +116,9 @@ void lb186_state::ncr5380(device_t *device)
{
devcb_base *devcb;
(void)devcb;
- downcast<ncr5380n_device &>(*device).set_clock(10000000);
- downcast<ncr5380n_device &>(*device).irq_handler().set(":maincpu", FUNC(i80186_cpu_device::int1_w));
- downcast<ncr5380n_device &>(*device).drq_handler().set(":maincpu", FUNC(i80186_cpu_device::drq0_w));
+ MCFG_DEVICE_CLOCK(10000000)
+ MCFG_NCR5380N_IRQ_HANDLER(WRITELINE(":maincpu", i80186_cpu_device, int1_w))
+ MCFG_NCR5380N_DRQ_HANDLER(WRITELINE(":maincpu", i80186_cpu_device, drq0_w))
}
static void scsi_devices(device_slot_interface &device)
@@ -132,17 +132,16 @@ FLOPPY_FORMATS_MEMBER( lb186_state::floppy_formats )
FLOPPY_NASLITE_FORMAT
FLOPPY_FORMATS_END
-void lb186_state::lb186(machine_config &config)
-{
- I80186(config, m_maincpu, 16_MHz_XTAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &lb186_state::lb186_map);
- m_maincpu->set_addrmap(AS_IO, &lb186_state::lb186_io);
+MACHINE_CONFIG_START(lb186_state::lb186)
+ MCFG_DEVICE_ADD("maincpu", I80186, 16_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(lb186_map)
+ MCFG_DEVICE_IO_MAP(lb186_io)
- scn2681_device &duart(SCN2681(config, "duart", 3.6864_MHz_XTAL));
- duart.irq_cb().set(m_maincpu, FUNC(i80186_cpu_device::int0_w));
- duart.a_tx_cb().set("rs232_1", FUNC(rs232_port_device::write_txd));
- duart.b_tx_cb().set("rs232_2", FUNC(rs232_port_device::write_txd));
- duart.outport_cb().set(FUNC(lb186_state::sio_out_w));
+ MCFG_DEVICE_ADD("duart", SCN2681, 3.6864_MHz_XTAL)
+ MCFG_MC68681_IRQ_CALLBACK(WRITELINE("maincpu", i80186_cpu_device, int0_w))
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE("rs232_1", rs232_port_device, write_txd))
+ MCFG_MC68681_B_TX_CALLBACK(WRITELINE("rs232_2", rs232_port_device, write_txd))
+ MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, lb186_state, sio_out_w))
rs232_port_device &rs232_1(RS232_PORT(config, "rs232_1", default_rs232_devices, "terminal"));
rs232_1.rxd_handler().set("duart", FUNC(scn2681_device::rx_a_w));
@@ -152,21 +151,22 @@ void lb186_state::lb186(machine_config &config)
WD1772(config, m_fdc, 16_MHz_XTAL / 2);
m_fdc->intrq_wr_callback().set(m_maincpu, FUNC(i80186_cpu_device::int2_w));
m_fdc->drq_wr_callback().set(m_maincpu, FUNC(i80186_cpu_device::drq0_w));
- FLOPPY_CONNECTOR(config, "fdc:0", lb186_floppies, "525dd", lb186_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", lb186_floppies, nullptr, lb186_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:2", lb186_floppies, nullptr, lb186_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:3", lb186_floppies, nullptr, lb186_state::floppy_formats);
-
- NSCSI_BUS(config, "scsibus");
- NSCSI_CONNECTOR(config, "scsibus:0", scsi_devices, "harddisk");
- NSCSI_CONNECTOR(config, "scsibus:1", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:2", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:3", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:4", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:5", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:6", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:7", scsi_devices, "ncr5380", true).set_option_machine_config("ncr5380", lb186_state::ncr5380);
-}
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", lb186_floppies, "525dd", lb186_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", lb186_floppies, nullptr, lb186_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:2", lb186_floppies, nullptr, lb186_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:3", lb186_floppies, nullptr, lb186_state::floppy_formats)
+
+ MCFG_NSCSI_BUS_ADD("scsibus")
+ MCFG_NSCSI_ADD("scsibus:0", scsi_devices, "harddisk", false)
+ MCFG_NSCSI_ADD("scsibus:1", scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:2", scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:3", scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:4", scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:5", scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:6", scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:7", scsi_devices, "ncr5380", true)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("ncr5380", lb186_state::ncr5380)
+MACHINE_CONFIG_END
ROM_START( lb186 )
ROM_REGION(0x4000, "bios", 0)
diff --git a/src/mame/drivers/lbeach.cpp b/src/mame/drivers/lbeach.cpp
index d0f15f067c9..726d7ede5d7 100644
--- a/src/mame/drivers/lbeach.cpp
+++ b/src/mame/drivers/lbeach.cpp
@@ -333,29 +333,29 @@ void lbeach_state::machine_reset()
{
}
-void lbeach_state::lbeach(machine_config &config)
-{
+MACHINE_CONFIG_START(lbeach_state::lbeach)
+
/* basic machine hardware */
- M6800(config, m_maincpu, XTAL(16'000'000) / 32); // Motorola MC6800P, 500kHz
- m_maincpu->set_addrmap(AS_PROGRAM, &lbeach_state::lbeach_map);
+ MCFG_DEVICE_ADD("maincpu", M6800, XTAL(16'000'000) / 32) // Motorola MC6800P, 500kHz
+ MCFG_DEVICE_PROGRAM_MAP(lbeach_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60); // ~60Hz
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 511-32, 0, 255-24);
- m_screen->set_screen_update(FUNC(lbeach_state::screen_update_lbeach));
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE); // needed for collision detection
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60) // ~60Hz
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 511-32, 0, 255-24)
+ MCFG_SCREEN_UPDATE_DRIVER(lbeach_state, screen_update_lbeach)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) // needed for collision detection
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lbeach);
PALETTE(config, m_palette, FUNC(lbeach_state::lbeach_palette), 2 + 8 + 2);
/* sound hardware */
// ...
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/lc80.cpp b/src/mame/drivers/lc80.cpp
index a785258401f..be5c78464ca 100644
--- a/src/mame/drivers/lc80.cpp
+++ b/src/mame/drivers/lc80.cpp
@@ -330,19 +330,19 @@ void lc80_state::machine_start()
/* Machine Driver */
-void lc80_state::lc80(machine_config &config)
-{
+MACHINE_CONFIG_START(lc80_state::lc80)
/* basic machine hardware */
- Z80(config, m_maincpu, 900000); /* UD880D */
- m_maincpu->set_addrmap(AS_PROGRAM, &lc80_state::lc80_mem);
- m_maincpu->set_addrmap(AS_IO, &lc80_state::lc80_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, 900000) /* UD880D */
+ MCFG_DEVICE_PROGRAM_MAP(lc80_mem)
+ MCFG_DEVICE_IO_MAP(lc80_io)
/* video hardware */
config.set_default_layout(layout_lc80);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
/* devices */
z80ctc_device& ctc(Z80CTC(config, Z80CTC_TAG, 900000));
@@ -361,25 +361,25 @@ void lc80_state::lc80(machine_config &config)
m_pio2->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
m_pio2->in_pb_callback().set(FUNC(lc80_state::pio2_pb_r));
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
RAM(config, RAM_TAG).set_default_size("1K").set_extra_options("2K,3K,4K");
-}
+MACHINE_CONFIG_END
-void lc80_state::lc80_2(machine_config &config)
-{
+MACHINE_CONFIG_START(lc80_state::lc80_2)
/* basic machine hardware */
- Z80(config, m_maincpu, 1800000); /* UD880D */
- m_maincpu->set_addrmap(AS_PROGRAM, &lc80_state::lc80_mem);
- m_maincpu->set_addrmap(AS_IO, &lc80_state::lc80_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, 1800000) /* UD880D */
+ MCFG_DEVICE_PROGRAM_MAP(lc80_mem)
+ MCFG_DEVICE_IO_MAP(lc80_io)
/* video hardware */
config.set_default_layout(layout_lc80);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
/* devices */
z80ctc_device& ctc(Z80CTC(config, Z80CTC_TAG, 900000));
@@ -398,21 +398,21 @@ void lc80_state::lc80_2(machine_config &config)
m_pio2->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
m_pio2->in_pb_callback().set(FUNC(lc80_state::pio2_pb_r));
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("4K");
-}
+MACHINE_CONFIG_END
#if 0
-void lc80_state::sc80(machine_config &config)
-{
+static MACHINE_CONFIG_START( sc80 )
lc80_2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &lc80_state::sc80_mem);
-}
+ MCFG_DEVICE_MODIFY(Z80_TAG)
+ MCFG_DEVICE_PROGRAM_MAP(sc80_mem)
+MACHINE_CONFIG_END
#endif
/* ROMs */
diff --git a/src/mame/drivers/lckydraw.cpp b/src/mame/drivers/lckydraw.cpp
index e97ac6f8b75..0f23ddbd892 100644
--- a/src/mame/drivers/lckydraw.cpp
+++ b/src/mame/drivers/lckydraw.cpp
@@ -35,18 +35,17 @@ void lckydraw_state::maincpu_map(address_map &map)
static INPUT_PORTS_START( lckydraw )
INPUT_PORTS_END
-void lckydraw_state::lckydraw(machine_config &config)
-{
+MACHINE_CONFIG_START(lckydraw_state::lckydraw)
/* basic machine hardware */
- I8035(config, m_maincpu, 6000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &lckydraw_state::maincpu_map);
+ MCFG_DEVICE_ADD("maincpu", I8035, 6000000)
+ MCFG_DEVICE_PROGRAM_MAP(maincpu_map)
/* video hardware */
- //config.set_default_layout();
+ //MCFG_DEFAULT_LAYOUT()
/* sound hardware */
genpin_audio(config);
-}
+MACHINE_CONFIG_END
ROM_START(lckydraw)
diff --git a/src/mame/drivers/lcmate2.cpp b/src/mame/drivers/lcmate2.cpp
index a03cf631c46..f390aefa0d2 100644
--- a/src/mame/drivers/lcmate2.cpp
+++ b/src/mame/drivers/lcmate2.cpp
@@ -229,27 +229,26 @@ static GFXDECODE_START( gfx_lcmate2 )
GFXDECODE_END
-void lcmate2_state::lcmate2(machine_config &config)
-{
+MACHINE_CONFIG_START(lcmate2_state::lcmate2)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(3'579'545)); // confirmed
- m_maincpu->set_addrmap(AS_PROGRAM, &lcmate2_state::lcmate2_mem);
- m_maincpu->set_addrmap(AS_IO, &lcmate2_state::lcmate2_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(3'579'545)) // confirmed
+ MCFG_DEVICE_PROGRAM_MAP(lcmate2_mem)
+ MCFG_DEVICE_IO_MAP(lcmate2_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
- screen.set_size(120, 18);
- screen.set_visarea(0, 120-1, 0, 18-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
+ MCFG_SCREEN_SIZE(120, 18)
+ MCFG_SCREEN_VISIBLE_AREA(0, 120-1, 0, 18-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(lcmate2_state::lcmate2_palette), 2);
GFXDECODE(config, "gfxdecode", "palette", gfx_lcmate2);
- HD44780(config, m_lcdc, 0);
- m_lcdc->set_lcd_size(2, 20);
+ MCFG_HD44780_ADD("hd44780")
+ MCFG_HD44780_LCD_SIZE(2, 20)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -259,7 +258,7 @@ void lcmate2_state::lcmate2(machine_config &config)
/* Devices */
RP5C15(config, m_rtc, XTAL(32'768));
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( lcmate2 )
diff --git a/src/mame/drivers/ldplayer.cpp b/src/mame/drivers/ldplayer.cpp
index c621648f3c1..7b3aef786df 100644
--- a/src/mame/drivers/ldplayer.cpp
+++ b/src/mame/drivers/ldplayer.cpp
@@ -627,9 +627,8 @@ INPUT_PORTS_END
*
*************************************/
-void ldplayer_state::ldplayer_ntsc(machine_config &config)
-{
-}
+MACHINE_CONFIG_START(ldplayer_state::ldplayer_ntsc)
+MACHINE_CONFIG_END
MACHINE_CONFIG_START(ldv1000_state::ldv1000)
diff --git a/src/mame/drivers/leapfrog_leappad.cpp b/src/mame/drivers/leapfrog_leappad.cpp
deleted file mode 100644
index 3eca2599d12..00000000000
--- a/src/mame/drivers/leapfrog_leappad.cpp
+++ /dev/null
@@ -1,145 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:David Haywood
-/******************************************************************************
-
- LEAPPAD:
- Example-Video: https://www.youtube.com/watch?v=LtUhENu5TKc
- The LEAPPAD is basically compareable to the SEGA PICO, but without
- Screen-Output! Each "Game" consists of two parts (Book + Cartridge).
- Insert the cartridge into the system and add the Book on the Top of the
- "console" and you can click on each pages and hear sounds or
- learning-stuff on each page...
-
- MY FIRST LEAPPAD:
- Basically the same as the LEAPPAD, but for even younger kids! (Cartridge
- internal PCB's are identical to LEAPPAD).
- Example Video: https://www.youtube.com/watch?v=gsf8XYV1Tpg
-
- LITTLE TOUCH LEAPPAD:
- Same as the other LEAPPAD models, but aimed at babies.
-
- Don't get confused by the name "LEAPPAD", as it looks like Leapfrog
- also released some kind of Tablet with this name, and they even released
- a new "LEAPPAD" in around 2016:
- https://www.youtube.com/watch?v=MXFSgj6xLTU , which nearly looks like the
- same, but is most likely techically completely different..
-
-*******************************************************************************/
-
-#include "emu.h"
-
-#include "bus/generic/slot.h"
-#include "bus/generic/carts.h"
-
-#include "screen.h"
-#include "softlist.h"
-#include "speaker.h"
-
-class leapfrog_leappad_state : public driver_device
-{
-public:
- leapfrog_leappad_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_cart(*this, "cartslot")
- , m_cart_region(nullptr)
- { }
-
- void leapfrog_leappad(machine_config &config);
- void leapfrog_mfleappad(machine_config &config);
-
-private:
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart);
-
- required_device<generic_slot_device> m_cart;
- memory_region *m_cart_region;
-};
-
-
-
-void leapfrog_leappad_state::machine_start()
-{
- // if there's a cart, override the standard mapping
- if (m_cart && m_cart->exists())
- {
- std::string region_tag;
- m_cart_region = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
- }
-}
-
-void leapfrog_leappad_state::machine_reset()
-{
-}
-
-DEVICE_IMAGE_LOAD_MEMBER(leapfrog_leappad_state, cart)
-{
- uint32_t size = m_cart->common_get_size("rom");
-
- m_cart->rom_alloc(size, GENERIC_ROM16_WIDTH, ENDIANNESS_LITTLE);
- m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
-
- return image_init_result::PASS;
-}
-
-static INPUT_PORTS_START( leapfrog_leappad )
-INPUT_PORTS_END
-
-
-
-void leapfrog_leappad_state::leapfrog_leappad(machine_config &config)
-{
- //ARCA5(config, m_maincpu, 96000000/10); // LeapPad Leapfrog 05-9-01 FS80A363 (doesn't appear to be Arcompact, what is it?)
- //m_maincpu->set_addrmap(AS_PROGRAM, &leapfrog_leappad_state::map);
-
- // screenless
-
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "leapfrog_leappad_cart");
- m_cart->set_width(GENERIC_ROM16_WIDTH);
- m_cart->set_device_load(device_image_load_delegate(&leapfrog_leappad_state::device_image_load_cart, this));
-
- SOFTWARE_LIST(config, "cart_list").set_original("leapfrog_leappad_cart");
-}
-
-void leapfrog_leappad_state::leapfrog_mfleappad(machine_config &config)
-{
- //ARCA5(config, m_maincpu, 96000000/10); // LeapPad Leapfrog 05-9-01 FS80A363 (doesn't appear to be Arcompact, what is it?)
- //m_maincpu->set_addrmap(AS_PROGRAM, &leapfrog_leappad_state::map);
-
- // screenless
-
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "leapfrog_mfleappad_cart");
- m_cart->set_width(GENERIC_ROM16_WIDTH);
- m_cart->set_device_load(device_image_load_delegate(&leapfrog_leappad_state::device_image_load_cart, this));
-
- SOFTWARE_LIST(config, "cart_list").set_original("leapfrog_mfleappad_cart");
-}
-
-// All of these contain the string "Have you copied our ROM?" near the date codes
-
-ROM_START( leappad )
- ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "leappadbios.bin", 0x000000, 0x100000, CRC(c886cddc) SHA1(f8a83b156feb28315d2321758678e141600a0d4e) ) // contains "Aug 06 2001.16:33:16.155-00450.LeapPad ILA2 Universal Base ROM" and "Copyright (c) 1998-2001 Knowledge Kids Enterprises, Inc."
-ROM_END
-
-ROM_START( leappadca )
- ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "leappadbioscanada.bin", 0x000000, 0x200000, CRC(cc12e3db) SHA1(adf52232adcfd4de5d8e31c0e0c09be61718a9d4) ) // contains "Jan 23 2004 11:28:40 152-10620 2MB Canada Full Base ROM" and "Copyright (c) 2000-2004 LeapFrog Enterprises, Inc."
-ROM_END
-
-ROM_START( mfleappad )
- ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "myfirstleappadinternational.bin", 0x000000, 0x100000, CRC(4dc0c4d5) SHA1(573ecf2efaccf70e619cf54d63be9169e469ee6f) ) // contains "May 07 2002 10:53:14 152-00932 MFLP International base ROM V1.3" and "Copyright (c) 2002 LeapFrog Enterprises, Inc."
-ROM_END
-
-ROM_START( mfleappadus )
- ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "myfirstleappadbios.bin", 0x000000, 0x400000, CRC(19174c16) SHA1(e0ba644fdf38fd5f91ab8c4b673c4a658cc3e612) ) // contains "Feb 13 2004.10:58:53.152-10573.MFLP US Base ROM - 2004" and "Copyright (c) 2004 LeapFrog Enterprises, Inc."
-ROM_END
-
-// year, name, parent, compat, machine, input, class, init, company, fullname, flags
-CONS( 2001, leappad, 0, 0, leapfrog_leappad, leapfrog_leappad, leapfrog_leappad_state, empty_init, "LeapFrog", "LeapPad (World)", MACHINE_IS_SKELETON )
-CONS( 2004, leappadca, leappad, 0, leapfrog_leappad, leapfrog_leappad, leapfrog_leappad_state, empty_init, "LeapFrog", "LeapPad (Canada)", MACHINE_IS_SKELETON )
-CONS( 2002, mfleappad, 0, 0, leapfrog_mfleappad, leapfrog_leappad, leapfrog_leappad_state, empty_init, "LeapFrog", "My First LeapPad (World, V1.3)", MACHINE_IS_SKELETON )
-CONS( 2004, mfleappadus, mfleappad, 0, leapfrog_mfleappad, leapfrog_leappad, leapfrog_leappad_state, empty_init, "LeapFrog", "My First LeapPad (US)", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/leapster.cpp b/src/mame/drivers/leapster.cpp
index 993aa687149..4da6dee7175 100644
--- a/src/mame/drivers/leapster.cpp
+++ b/src/mame/drivers/leapster.cpp
@@ -311,16 +311,16 @@ void leapster_state::leapster_aux(address_map &map)
MACHINE_CONFIG_START(leapster_state::leapster)
/* basic machine hardware */
// CPU is ArcTangent-A5 '5.1' (ARCompact core)
- ARCA5(config, m_maincpu, 96000000/10);
- m_maincpu->set_addrmap(AS_PROGRAM, &leapster_state::leapster_map);
- m_maincpu->set_addrmap(AS_IO, &leapster_state::leapster_aux);
+ MCFG_DEVICE_ADD("maincpu", ARCA5, 96000000/10)
+ MCFG_DEVICE_PROGRAM_MAP(leapster_map)
+ MCFG_DEVICE_IO_MAP(leapster_aux)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(60);
- screen.set_size(160, 160);
- screen.set_visarea(0, 160-1, 0, 160-1);
- screen.set_screen_update(FUNC(leapster_state::screen_update_leapster));
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(160, 160)
+ MCFG_SCREEN_VISIBLE_AREA(0, 160-1, 0, 160-1)
+ MCFG_SCREEN_UPDATE_DRIVER(leapster_state, screen_update_leapster)
/* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "leapster_cart")
@@ -328,7 +328,7 @@ MACHINE_CONFIG_START(leapster_state::leapster)
MCFG_GENERIC_LOAD(leapster_state, leapster_cart)
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("leapster");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "leapster")
MACHINE_CONFIG_END
#define ROM_LOAD_BIOS(bios,name,offset,length,hash) \
@@ -342,14 +342,12 @@ MACHINE_CONFIG_END
ROM_START(leapster)
ROM_REGION(0x800000, "maincpu", ROMREGION_ERASE00)
- ROM_SYSTEM_BIOS( 0, "uni15", "Universal 1.5" ) // 152-10346 Leapster BaseROM Universal v1.5 - Sep 04 2003 10:46:47
+ ROM_SYSTEM_BIOS( 0, "uni15", "Universal 1.5" ) /* 152-10346 Leapster BaseROM Universal v1.5 - Sep 04 2003 10:46:47 */
ROM_LOAD_BIOS( 0, "155-10072-a.bin" , 0x00000, 0x200000, CRC(af05e5a0) SHA1(d4468d060543ba7e44785041093bc98bcd9afa07) )
- ROM_SYSTEM_BIOS( 1, "uk21", "UK 2.1" ) // 152-11452 Leapster BaseROM UK v2.1 - Aug 30 2005 16:01:46
+ ROM_SYSTEM_BIOS( 1, "uk21", "UK 2.1" ) /* 152-11452 Leapster BaseROM UK v2.1 - Aug 30 2005 16:01:46 */
ROM_LOAD_BIOS( 1, "leapster2_1004.bin", 0x00000, 0x800000, CRC(b466e14d) SHA1(910c234f03e76b7de55b8aa0a0c62fd1daae4910) )
- ROM_SYSTEM_BIOS( 2, "ger21", "German 2.1" ) // 152-11435 Leapster BaseROM German v2.1 - Oct 21 2005 18:53:59
+ ROM_SYSTEM_BIOS( 2, "ger21", "German 2.1" ) /* 152-11435 Leapster BaseROM German v2.1 - Oct 21 2005 18:53:59 */
ROM_LOAD_BIOS( 2, "leapster2_1006.bin", 0x00000, 0x800000, CRC(a69ed8ca) SHA1(e6aacba0c39b1465f344c2b07ff1cbd8a395adac) )
- ROM_SYSTEM_BIOS( 3, "sp10", "Spanish 1.0" ) // 152-11546 Leapster Baserom SP v1.0 - Apr 03 2006 06:26:00
- ROM_LOAD_BIOS( 3, "leapster2_1008.bin", 0x00000, 0x800000, CRC(b43345e7) SHA1(31c27e79568115bf36e5ef668f528e3005054152) )
ROM_END
ROM_START(leapstertv)
diff --git a/src/mame/drivers/learnwin.cpp b/src/mame/drivers/learnwin.cpp
index 0eca6b1414f..9c84fa6dc3b 100644
--- a/src/mame/drivers/learnwin.cpp
+++ b/src/mame/drivers/learnwin.cpp
@@ -140,17 +140,17 @@ void learnwin_state::machine_reset()
}
-void learnwin_state::learnwin(machine_config &config)
-{
+MACHINE_CONFIG_START(learnwin_state::learnwin)
+
/* video hardware */
-// screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
-// screen.set_refresh_hz(60);
-// screen.set_size(48, 32);
-// screen.set_visarea(0, 47, 0, 31);
+// MCFG_SCREEN_ADD("screen", LCD)
+// MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_SIZE(48, 32)
+// MCFG_SCREEN_VISIBLE_AREA(0,47,0,31)
/* sound hardware */
SPEAKER(config, "mono").front_center();
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/legionna.cpp b/src/mame/drivers/legionna.cpp
index e1359deac03..08406bb472d 100644
--- a/src/mame/drivers/legionna.cpp
+++ b/src/mame/drivers/legionna.cpp
@@ -1200,7 +1200,7 @@ GFXDECODE_END
void legionna_state::legionna(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 20_MHz_XTAL / 2); /* ??? */
+ M68000(config, m_maincpu, 20000000/2); /* ??? */
m_maincpu->set_addrmap(AS_PROGRAM, &legionna_state::legionna_map);
m_maincpu->set_vblank_int("screen", FUNC(legionna_state::irq4_line_hold)); /* VBL */
@@ -1239,7 +1239,7 @@ void legionna_state::legionna(machine_config &config)
ymsnd.irq_handler().set("seibu_sound", FUNC(seibu_sound_device::fm_irqhandler));
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
- OKIM6295(config, m_oki, 20_MHz_XTAL / 20, okim6295_device::PIN7_HIGH);
+ OKIM6295(config, m_oki, 1320000, okim6295_device::PIN7_LOW);
m_oki->add_route(ALL_OUTPUTS, "mono", 0.40);
SEIBU_SOUND(config, m_seibu_sound, 0);
@@ -1253,7 +1253,7 @@ void legionna_state::legionna(machine_config &config)
void legionna_state::heatbrl(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 20_MHz_XTAL / 2); /* ??? */
+ M68000(config, m_maincpu, 20000000/2); /* ??? */
m_maincpu->set_addrmap(AS_PROGRAM, &legionna_state::heatbrl_map);
m_maincpu->set_vblank_int("screen", FUNC(legionna_state::irq4_line_hold)); /* VBL */
@@ -1292,7 +1292,7 @@ void legionna_state::heatbrl(machine_config &config)
ymsnd.irq_handler().set("seibu_sound", FUNC(seibu_sound_device::fm_irqhandler));
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
- OKIM6295(config, m_oki, 20_MHz_XTAL / 20, okim6295_device::PIN7_HIGH);
+ OKIM6295(config, m_oki, 1320000, okim6295_device::PIN7_LOW);
m_oki->add_route(ALL_OUTPUTS, "mono", 0.40);
SEIBU_SOUND(config, m_seibu_sound, 0);
@@ -1306,7 +1306,7 @@ void legionna_state::heatbrl(machine_config &config)
void legionna_state::godzilla(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 20_MHz_XTAL / 2);
+ M68000(config, m_maincpu, 20000000/2);
m_maincpu->set_addrmap(AS_PROGRAM, &legionna_state::godzilla_map);
m_maincpu->set_vblank_int("screen", FUNC(legionna_state::irq4_line_hold));
@@ -1349,7 +1349,7 @@ void legionna_state::godzilla(machine_config &config)
ymsnd.add_route(0, "mono", 0.50);
ymsnd.add_route(1, "mono", 0.50);
- OKIM6295(config, m_oki, 20_MHz_XTAL / 20, okim6295_device::PIN7_HIGH);
+ OKIM6295(config, m_oki, 1320000, okim6295_device::PIN7_LOW);
m_oki->add_route(ALL_OUTPUTS, "mono", 0.40);
SEIBU_SOUND(config, m_seibu_sound, 0);
@@ -1363,7 +1363,7 @@ void legionna_state::godzilla(machine_config &config)
void legionna_state::denjinmk(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 20_MHz_XTAL / 2);
+ M68000(config, m_maincpu, 20000000/2);
m_maincpu->set_addrmap(AS_PROGRAM, &legionna_state::denjinmk_map);
m_maincpu->set_vblank_int("screen", FUNC(legionna_state::irq4_line_hold));
@@ -1379,7 +1379,7 @@ void legionna_state::denjinmk(machine_config &config)
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_size(42*8, 36*8);
- screen.set_refresh_hz(56); // <= 56 FPS, Value from doc
+ screen.set_refresh_hz(61);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
screen.set_visarea(0*8, 40*8-1, 0*8, 32*8-1);
screen.set_screen_update(FUNC(legionna_state::screen_update_godzilla));
@@ -1403,7 +1403,7 @@ void legionna_state::denjinmk(machine_config &config)
ymsnd.add_route(0, "mono", 0.50);
ymsnd.add_route(1, "mono", 0.50);
- OKIM6295(config, m_oki, 20_MHz_XTAL / 20, okim6295_device::PIN7_HIGH);
+ OKIM6295(config, m_oki, 1320000, okim6295_device::PIN7_LOW);
m_oki->add_route(ALL_OUTPUTS, "mono", 0.40);
SEIBU_SOUND(config, m_seibu_sound, 0);
@@ -1417,7 +1417,7 @@ void legionna_state::denjinmk(machine_config &config)
void legionna_state::grainbow(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 20_MHz_XTAL / 2);
+ M68000(config, m_maincpu, 20000000/2);
m_maincpu->set_addrmap(AS_PROGRAM, &legionna_state::grainbow_map);
m_maincpu->set_vblank_int("screen", FUNC(legionna_state::irq4_line_hold));
@@ -1457,7 +1457,7 @@ void legionna_state::grainbow(machine_config &config)
ymsnd.add_route(0, "mono", 0.50);
ymsnd.add_route(1, "mono", 0.50);
- OKIM6295(config, m_oki, 20_MHz_XTAL / 20, okim6295_device::PIN7_HIGH);
+ OKIM6295(config, m_oki, 1320000, okim6295_device::PIN7_LOW);
m_oki->add_route(ALL_OUTPUTS, "mono", 0.40);
SEIBU_SOUND(config, m_seibu_sound, 0);
@@ -1471,7 +1471,7 @@ void legionna_state::grainbow(machine_config &config)
void legionna_state::cupsoc(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 20_MHz_XTAL / 2);
+ M68000(config, m_maincpu, 20000000/2);
m_maincpu->set_addrmap(AS_PROGRAM, &legionna_state::cupsoc_map);
m_maincpu->set_vblank_int("screen", FUNC(legionna_state::irq4_line_hold)); /* VBL */
@@ -1510,7 +1510,7 @@ void legionna_state::cupsoc(machine_config &config)
ymsnd.irq_handler().set("seibu_sound", FUNC(seibu_sound_device::fm_irqhandler));
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
- OKIM6295(config, m_oki, 20_MHz_XTAL / 20, okim6295_device::PIN7_HIGH);
+ OKIM6295(config, m_oki, 1320000, okim6295_device::PIN7_LOW);
m_oki->add_route(ALL_OUTPUTS, "mono", 0.40);
SEIBU_SOUND(config, m_seibu_sound, 0);
diff --git a/src/mame/drivers/leland.cpp b/src/mame/drivers/leland.cpp
index 2a287d86571..7f2a80da015 100644
--- a/src/mame/drivers/leland.cpp
+++ b/src/mame/drivers/leland.cpp
@@ -978,17 +978,17 @@ INPUT_PORTS_END
*
*************************************/
-void leland_state::leland(machine_config &config)
-{
+MACHINE_CONFIG_START(leland_state::leland)
+
/* basic machine hardware */
- Z80(config, m_master, MASTER_CLOCK/2);
- m_master->set_addrmap(AS_PROGRAM, &leland_state::master_map_program);
- m_master->set_addrmap(AS_IO, &leland_state::master_map_io);
- m_master->set_vblank_int("screen", FUNC(leland_state::leland_master_interrupt));
+ MCFG_DEVICE_ADD(m_master, Z80, MASTER_CLOCK/2)
+ MCFG_DEVICE_PROGRAM_MAP(master_map_program)
+ MCFG_DEVICE_IO_MAP(master_map_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", leland_state, leland_master_interrupt)
- Z80(config, m_slave, MASTER_CLOCK/2);
- m_slave->set_addrmap(AS_PROGRAM, &leland_state::slave_small_map_program);
- m_slave->set_addrmap(AS_IO, &leland_state::slave_map_io);
+ MCFG_DEVICE_ADD(m_slave, Z80, MASTER_CLOCK/2)
+ MCFG_DEVICE_PROGRAM_MAP(slave_small_map_program)
+ MCFG_DEVICE_IO_MAP(slave_map_io)
EEPROM_93C46_16BIT(config, m_eeprom);
NVRAM(config, "battery", nvram_device::DEFAULT_ALL_0);
@@ -1013,54 +1013,53 @@ void leland_state::leland(machine_config &config)
// m_ay8912->port_a_write_callback().set(FUNC(leland_state::leland_sound_port_w));
// m_ay8912->add_route(ALL_OUTPUTS, "speaker", 0.25);
- DAC_8BIT_BINARY_WEIGHTED(config, m_dac[0], 0).add_route(ALL_OUTPUTS, "speaker", 0.0625); // ls374.u79 + r17-r23 (24k,12k,6.2k,3k,1.5k,750,390,180)
- DAC_8BIT_BINARY_WEIGHTED(config, m_dac[1], 0).add_route(ALL_OUTPUTS, "speaker", 0.0625); // ls374.u88 + r27-r34 (24k,12k,6.2k,3k,1.5k,750,390,180)
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac0", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac0", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD(m_dac[0], DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.0625) // ls374.u79 + r17-r23 (24k,12k,6.2k,3k,1.5k,750,390,180)
+ MCFG_DEVICE_ADD(m_dac[1], DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.0625) // ls374.u88 + r27-r34 (24k,12k,6.2k,3k,1.5k,750,390,180)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac0", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac0", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void redline_state::redline(machine_config &config)
-{
+MACHINE_CONFIG_START(redline_state::redline)
leland(config);
/* basic machine hardware */
- m_master->set_addrmap(AS_IO, &redline_state::master_redline_map_io);
+ MCFG_DEVICE_MODIFY("master")
+ MCFG_DEVICE_IO_MAP(master_redline_map_io)
/* sound hardware */
- REDLINE_80186(config, m_sound, 0);
-}
+ MCFG_DEVICE_ADD(m_sound, REDLINE_80186, 0)
+MACHINE_CONFIG_END
-void redline_state::quarterb(machine_config &config)
-{
+MACHINE_CONFIG_START(redline_state::quarterb)
redline(config);
/* sound hardware */
- LELAND_80186(config.replace(), m_sound, 0);
-}
+ MCFG_DEVICE_REPLACE(m_sound, LELAND_80186, 0)
+MACHINE_CONFIG_END
-void redline_state::lelandi(machine_config &config)
-{
+MACHINE_CONFIG_START(redline_state::lelandi)
quarterb(config);
/* basic machine hardware */
- m_slave->set_addrmap(AS_PROGRAM, &redline_state::slave_large_map_program);
-}
+ MCFG_DEVICE_MODIFY("slave")
+ MCFG_DEVICE_PROGRAM_MAP(slave_large_map_program)
+MACHINE_CONFIG_END
-void ataxx_state::ataxx(machine_config &config)
-{
+MACHINE_CONFIG_START(ataxx_state::ataxx)
+
/* basic machine hardware */
- Z80(config, m_master, 6000000);
- m_master->set_addrmap(AS_PROGRAM, &ataxx_state::master_map_program_2);
- m_master->set_addrmap(AS_IO, &ataxx_state::master_map_io_2);
+ MCFG_DEVICE_ADD(m_master, Z80, 6000000)
+ MCFG_DEVICE_PROGRAM_MAP(master_map_program_2)
+ MCFG_DEVICE_IO_MAP(master_map_io_2)
- Z80(config, m_slave, 6000000);
- m_slave->set_addrmap(AS_PROGRAM, &ataxx_state::slave_map_program);
- m_slave->set_addrmap(AS_IO, &ataxx_state::slave_map_io_2);
+ MCFG_DEVICE_ADD(m_slave, Z80, 6000000)
+ MCFG_DEVICE_PROGRAM_MAP(slave_map_program)
+ MCFG_DEVICE_IO_MAP(slave_map_io_2)
EEPROM_93C56_16BIT(config, m_eeprom, eeprom_serial_streaming::ENABLE);
@@ -1070,16 +1069,15 @@ void ataxx_state::ataxx(machine_config &config)
ataxx_video(config);
/* sound hardware */
- ATAXX_80186(config, m_sound, 0);
-}
+ MCFG_DEVICE_ADD(m_sound, ATAXX_80186, 0)
+MACHINE_CONFIG_END
-void ataxx_state::wsf(machine_config &config)
-{
+MACHINE_CONFIG_START(ataxx_state::wsf)
ataxx(config);
- WSF_80186(config.replace(), m_sound, 0);
-}
+ MCFG_DEVICE_REPLACE(m_sound, WSF_80186, 0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/lemmings.cpp b/src/mame/drivers/lemmings.cpp
index 1d845cab76d..b7d1dac1c17 100644
--- a/src/mame/drivers/lemmings.cpp
+++ b/src/mame/drivers/lemmings.cpp
@@ -213,29 +213,29 @@ void lemmings_state::machine_start()
{
}
-void lemmings_state::lemmings(machine_config &config)
-{
+MACHINE_CONFIG_START(lemmings_state::lemmings)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 14000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &lemmings_state::lemmings_map);
- m_maincpu->set_vblank_int("screen", FUNC(lemmings_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 14000000)
+ MCFG_DEVICE_PROGRAM_MAP(lemmings_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lemmings_state, irq6_line_hold)
- M6809(config, m_audiocpu, 32220000/8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &lemmings_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", M6809,32220000/8)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
/* video hardware */
- BUFFERED_SPRITERAM16(config, m_spriteram[0]);
- BUFFERED_SPRITERAM16(config, m_spriteram[1]);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(529));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(lemmings_state::screen_update_lemmings));
- screen.screen_vblank().set(FUNC(lemmings_state::screen_vblank_lemmings));
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_lemmings);
+ MCFG_DEVICE_ADD("spriteram1", BUFFERED_SPRITERAM16)
+ MCFG_DEVICE_ADD("spriteram2", BUFFERED_SPRITERAM16)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(lemmings_state, screen_update_lemmings)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, lemmings_state, screen_vblank_lemmings))
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lemmings)
PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 1024);
DECO_SPRITE(config, m_sprgen[0], 0);
@@ -264,10 +264,10 @@ void lemmings_state::lemmings(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.45);
ymsnd.add_route(1, "rspeaker", 0.45);
- okim6295_device &oki(OKIM6295(config, "oki", 1023924, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
- oki.add_route(ALL_OUTPUTS, "lspeaker", 0.50);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 0.50);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1023924, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
+MACHINE_CONFIG_END
/******************************************************************************/
diff --git a/src/mame/drivers/lethal.cpp b/src/mame/drivers/lethal.cpp
index b4d39607c8e..1d6ae81ea8c 100644
--- a/src/mame/drivers/lethal.cpp
+++ b/src/mame/drivers/lethal.cpp
@@ -674,31 +674,6 @@ ROM_START( lethaleneab ) // Euro ver. EAB
ROM_LOAD( "lethaleneab.nv", 0x0000, 0x0080, CRC(4e9bb34d) SHA1(9502583bc9f5f6fc5bba333869398b24bf154b73) )
ROM_END
-ROM_START( lethalenead ) // Euro ver. EAD
- ROM_REGION( 0x40000, "maincpu", 0 ) /* main program */
- ROM_LOAD( "191ead01.u4", 0x00000, 0x40000, CRC(ce2e13ce) SHA1(52df8fbcca0de02bdb83fc804ee27a90135993e7) )
-
- ROM_REGION( 0x10000, "soundcpu", 0 ) /* Z80 sound program */
- ROM_LOAD( "191a02.f4", 0x00000, 0x10000, CRC(72b843cc) SHA1(b44b2f039358c26fa792d740639b66a5c8bf78e7) )
-
- ROM_REGION( 0x400000, "gfx1", 0 ) /* tilemaps */
- ROM_LOAD32_WORD( "191a08", 0x000002, 0x100000, CRC(555bd4db) SHA1(d2e55796b4ab2306ae549fa9e7288e41eaa8f3de) )
- ROM_LOAD32_WORD( "191a10", 0x000000, 0x100000, CRC(2fa9bf51) SHA1(1e4ec56b41dfd8744347a7b5799e3ebce0939adc) )
- ROM_LOAD32_WORD( "191a07", 0x200002, 0x100000, CRC(1dad184c) SHA1(b2c4a8e48084005056aef2c8eaccb3d2eca71b73) )
- ROM_LOAD32_WORD( "191a09", 0x200000, 0x100000, CRC(e2028531) SHA1(63ccce7855d829763e9e248a6c3eb6ea89ab17ee) )
-
- ROM_REGION( 0x400000, "k053244", ROMREGION_ERASE00 ) /* sprites */
- ROM_LOAD32_WORD( "191a05", 0x000000, 0x100000, CRC(f2e3b58b) SHA1(0bbc2fe87a4fd00b5073a884bcfebcf9c2c402ad) )
- ROM_LOAD32_WORD( "191a04", 0x000002, 0x100000, CRC(5c3eeb2b) SHA1(33ea8b3968b78806334b5a0aab3a2c24e45c604e) )
- ROM_LOAD32_WORD( "191a06", 0x200000, 0x100000, CRC(ee11fc08) SHA1(ec6dd684e8261b181d65b8bf1b9e97da5c4468f7) )
-
- ROM_REGION( 0x200000, "k054539", 0 ) /* K054539 samples */
- ROM_LOAD( "191a03", 0x000000, 0x200000, CRC(9b13fbe8) SHA1(19b02dbd9d6da54045b0ba4dfe7b282c72745c9c))
-
- ROM_REGION( 0x80, "eeprom", 0 )
- ROM_LOAD( "lethalenead.nv", 0x0000, 0x0080, CRC(e1dc2bc0) SHA1(adfb8dfaec0b0faf6784eab97a5b31c0c7813756) )
-ROM_END
-
ROM_START( lethaleneae ) // Euro ver. EAE
ROM_REGION( 0x40000, "maincpu", 0 ) /* main program */
ROM_LOAD( "191eae01.u4", 0x00000, 0x40000, CRC(c6a3c6ac) SHA1(96a209a3a5b4af40af36bd7090c59a74f8c8df59) )
@@ -782,7 +757,6 @@ GAME( 1992, lethalenua, lethalen, lethalen, lethalen, lethal_state, empty_init,
GAME( 1992, lethalenux, lethalen, lethalen, lethalen, lethal_state, empty_init, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver unknown, US, 08/06/92 15:11, hacked/proto?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes UA to eeprom but earlier than suspected UAA set, might be a proto, might be hacked, fails rom test, definitely a good dump, another identical set was found in Italy
GAME( 1992, lethaleneae,lethalen, lethalen, lethalene, lethal_state, empty_init, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver EAE, 11/19/92 16:24)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes EE to eeprom
-GAME( 1992, lethalenead,lethalen, lethalen, lethalene, lethal_state, empty_init, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver EAD, 11/11/92 10:52)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes ED to eeprom
GAME( 1992, lethaleneab,lethalen, lethalen, lethalene, lethal_state, empty_init, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver EAB, 10/14/92 19:53)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes EC to eeprom, so might actually be EC
GAME( 1992, lethaleneaa,lethalen, lethalen, lethalene, lethal_state, empty_init, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver EAA, 09/09/92 09:44)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes EA to eeprom
diff --git a/src/mame/drivers/lethalj.cpp b/src/mame/drivers/lethalj.cpp
index 01875d251d5..d21465b8ddc 100644
--- a/src/mame/drivers/lethalj.cpp
+++ b/src/mame/drivers/lethalj.cpp
@@ -223,6 +223,7 @@ void lethalj_state::lethalj_map(address_map &map)
map(0x04500010, 0x0450001f).portr("IN0");
map(0x04600000, 0x0460000f).portr("IN1");
map(0x04700000, 0x0470007f).w(FUNC(lethalj_state::blitter_w));
+ map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xc0000240, 0xc000025f).nopw(); /* seems to be a bug in their code, one of many. */
map(0xff800000, 0xffffffff).rom().region("maincpu", 0);
}
@@ -367,7 +368,7 @@ static INPUT_PORTS_START( eggvntdx )
PORT_INCLUDE(eggventr)
PORT_MODIFY("IN0")
- PORT_DIPUNUSED_DIPLOC( 0x1000, IP_ACTIVE_LOW, "SW3:4" ) // Was "Slot Machine" - The slot machine is present in the code as a 'bonus stage'
+ PORT_DIPUNUSED_DIPLOC( 0x1000, IP_ACTIVE_LOW, "SW3:4" ) // Was "Slot Machine" - The slot machince is present in the code as a 'bonus stage'
// (when the egg reaches Vegas?), but not actually called (EC).
INPUT_PORTS_END
@@ -630,8 +631,8 @@ INPUT_PORTS_END
*
*************************************/
-void lethalj_state::gameroom(machine_config &config)
-{
+MACHINE_CONFIG_START(lethalj_state::gameroom)
+
/* basic machine hardware */
TMS34010(config, m_maincpu, MASTER_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &lethalj_state::lethalj_map);
@@ -640,35 +641,38 @@ void lethalj_state::gameroom(machine_config &config)
m_maincpu->set_pixels_per_clock(1);
m_maincpu->set_scanline_ind16_callback(FUNC(lethalj_state::scanline_update));
- TICKET_DISPENSER(config, m_ticket, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(VIDEO_CLOCK, 701, 0, 512, 263, 0, 236);
- m_screen->set_screen_update("maincpu", FUNC(tms34010_device::tms340x0_ind16));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK, 701, 0, 512, 263, 0, 236)
+ MCFG_SCREEN_UPDATE_DEVICE("maincpu", tms34010_device, tms340x0_ind16)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::RGB_555);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki1", SOUND_CLOCK, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.8);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, SOUND_CLOCK, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.8)
- OKIM6295(config, "oki2", SOUND_CLOCK, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.8);
+ MCFG_DEVICE_ADD("oki2", OKIM6295, SOUND_CLOCK, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.8)
- OKIM6295(config, "oki3", SOUND_CLOCK, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.8);
-}
+ MCFG_DEVICE_ADD("oki3", OKIM6295, SOUND_CLOCK, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.8)
+MACHINE_CONFIG_END
-void lethalj_state::lethalj(machine_config &config)
-{
+MACHINE_CONFIG_START(lethalj_state::lethalj)
gameroom(config);
m_maincpu->set_pixel_clock(VIDEO_CLOCK_LETHALJ);
- m_screen->set_raw(VIDEO_CLOCK_LETHALJ, 689, 0, 512, 259, 0, 236);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK_LETHALJ, 689, 0, 512, 259, 0, 236)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/lg-dvd.cpp b/src/mame/drivers/lg-dvd.cpp
index cc685f02016..73f29b2c73c 100644
--- a/src/mame/drivers/lg-dvd.cpp
+++ b/src/mame/drivers/lg-dvd.cpp
@@ -33,11 +33,10 @@ void lg_dvd_state::lg_dvd_map(address_map &map)
map(0x0000, 0x7fff).rom().region("maincpu", 0);
}
-void lg_dvd_state::lg(machine_config &config)
-{
- I80C52(config, m_maincpu, XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &lg_dvd_state::lg_dvd_map);
-}
+MACHINE_CONFIG_START(lg_dvd_state::lg)
+ MCFG_DEVICE_ADD( "maincpu", I80C52, XTAL(16'000'000) )
+ MCFG_DEVICE_PROGRAM_MAP( lg_dvd_map )
+MACHINE_CONFIG_END
ROM_START( lggp40 )
ROM_REGION( 0x100000, "maincpu", 0 )
diff --git a/src/mame/drivers/lgp.cpp b/src/mame/drivers/lgp.cpp
index 2158a992817..2598595ba1d 100644
--- a/src/mame/drivers/lgp.cpp
+++ b/src/mame/drivers/lgp.cpp
@@ -412,22 +412,21 @@ void lgp_state::lgp_palette(palette_device &palette) const
/* DRIVER */
MACHINE_CONFIG_START(lgp_state::lgp)
/* main cpu */
- Z80(config, m_maincpu, CPU_PCB_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &lgp_state::main_program_map);
- m_maincpu->set_addrmap(AS_IO, &lgp_state::main_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(lgp_state::vblank_callback_lgp));
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_PCB_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(main_program_map)
+ MCFG_DEVICE_IO_MAP(main_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lgp_state, vblank_callback_lgp)
/* sound cpu */
- z80_device &audiocpu(Z80(config, "audiocpu", SOUND_PCB_CLOCK));
- audiocpu.set_addrmap(AS_PROGRAM, &lgp_state::sound_program_map);
- audiocpu.set_addrmap(AS_IO, &lgp_state::sound_io_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_PCB_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(sound_program_map)
+ MCFG_DEVICE_IO_MAP(sound_io_map)
- PIONEER_LDV1000(config, m_laserdisc, 0);
- m_laserdisc->command_strobe_callback().set(FUNC(lgp_state::ld_command_strobe_cb));
- m_laserdisc->set_overlay(256, 256, FUNC(lgp_state::screen_update_lgp));
- m_laserdisc->set_overlay_palette(m_palette);
- m_laserdisc->add_route(0, "lspeaker", 1.0);
- m_laserdisc->add_route(1, "rspeaker", 1.0);
+
+ MCFG_LASERDISC_LDV1000_ADD("laserdisc")
+ MCFG_LASERDISC_LDV1000_COMMAND_STROBE_CB(WRITELINE(*this, lgp_state, ld_command_strobe_cb))
+ MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, lgp_state, screen_update_lgp)
+ MCFG_LASERDISC_OVERLAY_PALETTE("palette")
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
@@ -439,6 +438,10 @@ MACHINE_CONFIG_START(lgp_state::lgp)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
+
+ MCFG_DEVICE_MODIFY("laserdisc")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/liberate.cpp b/src/mame/drivers/liberate.cpp
index 245f906e692..e2c31f14e29 100644
--- a/src/mame/drivers/liberate.cpp
+++ b/src/mame/drivers/liberate.cpp
@@ -741,33 +741,33 @@ MACHINE_RESET_MEMBER(liberate_state,liberate)
m_bank = 0;
}
-void liberate_state::liberate_base(machine_config &config)
-{
+MACHINE_CONFIG_START(liberate_state::liberate_base)
+
/* basic machine hardware */
- DECO16(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &liberate_state::liberate_map);
- m_maincpu->set_addrmap(AS_IO, &liberate_state::deco16_io_map);
+ MCFG_DEVICE_ADD("maincpu",DECO16, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(liberate_map)
+ MCFG_DEVICE_IO_MAP(deco16_io_map)
- DECO_222(config, m_audiocpu, 1500000); /* is it a real 222 (M6502 with bitswapped opcodes), or the same thing in external logic? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &liberate_state::liberate_sound_map);
- m_audiocpu->set_periodic_int(FUNC(liberate_state::nmi_line_pulse), attotime::from_hz(16*60)); /* ??? */
+ MCFG_DEVICE_ADD("audiocpu",DECO_222, 1500000) /* is it a real 222 (M6502 with bitswapped opcodes), or the same thing in external logic? */
+ MCFG_DEVICE_PROGRAM_MAP(liberate_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(liberate_state, nmi_line_pulse, 16*60) /* ??? */
- config.m_minimum_quantum = attotime::from_hz(12000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(12000))
MCFG_MACHINE_START_OVERRIDE(liberate_state,liberate)
MCFG_MACHINE_RESET_OVERRIDE(liberate_state,liberate)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(529) /* 529ms Vblank duration?? */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(liberate_state::screen_update_liberate));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(liberate_state::deco16_interrupt));
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_liberate);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 529ms Vblank duration?? */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(liberate_state, screen_update_liberate)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, liberate_state, deco16_interrupt))
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_liberate)
PALETTE(config, m_palette, FUNC(liberate_state::liberate_palette), 33);
MCFG_VIDEO_START_OVERRIDE(liberate_state,liberate)
@@ -780,80 +780,81 @@ void liberate_state::liberate_base(machine_config &config)
AY8912(config, "ay1", 1500000).add_route(ALL_OUTPUTS, "mono", 0.30);
AY8912(config, "ay2", 1500000).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
-void liberate_state::liberate(machine_config &config)
-{
+MACHINE_CONFIG_START(liberate_state::liberate)
liberate_base(config);
- m_maincpu->set_addrmap(AS_OPCODES, &liberate_state::decrypted_opcodes_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+MACHINE_CONFIG_END
-void liberate_state::liberatb(machine_config &config)
-{
+MACHINE_CONFIG_START(liberate_state::liberatb)
liberate_base(config);
/* basic machine hardware */
- M6502(config.replace(), m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &liberate_state::liberatb_map);
-}
+ MCFG_DEVICE_REPLACE("maincpu", M6502, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(liberatb_map)
+MACHINE_CONFIG_END
-void liberate_state::boomrang(machine_config &config)
-{
+MACHINE_CONFIG_START(liberate_state::boomrang)
liberate_base(config);
MCFG_VIDEO_START_OVERRIDE(liberate_state,boomrang)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(liberate_state::screen_update_boomrang));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(liberate_state, screen_update_boomrang)
+MACHINE_CONFIG_END
-void liberate_state::prosoccr(machine_config &config)
-{
+MACHINE_CONFIG_START(liberate_state::prosoccr)
liberate_base(config);
/* basic machine hardware */
- m_maincpu->set_clock(10000000/8); //xtal is unknown?
- m_maincpu->set_addrmap(AS_PROGRAM, &liberate_state::prosoccr_map);
- m_maincpu->set_addrmap(AS_IO, &liberate_state::prosoccr_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(10000000/8) //xtal is unknown?
+ MCFG_DEVICE_PROGRAM_MAP(prosoccr_map)
+ MCFG_DEVICE_IO_MAP(prosoccr_io_map)
- m_audiocpu->set_clock(10000000/8); //xtal is 12 Mhz, divider is unknown
- m_audiocpu->set_addrmap(AS_PROGRAM, &liberate_state::prosoccr_sound_map);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_CLOCK(10000000/8) //xtal is 12 Mhz, divider is unknown
+ MCFG_DEVICE_PROGRAM_MAP(prosoccr_sound_map)
- config.m_minimum_quantum = attotime::from_hz(12000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(12000))
- subdevice<screen_device>("screen")->set_visarea(1*8, 31*8-1, 0*8, 32*8-1);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(liberate_state::screen_update_prosoccr));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(liberate_state, screen_update_prosoccr)
- m_gfxdecode->set_info(gfx_prosoccr);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_prosoccr)
MCFG_VIDEO_START_OVERRIDE(liberate_state,prosoccr)
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(liberate_state::prosport)
-void liberate_state::prosport(machine_config &config)
-{
/* basic machine hardware */
- DECO16(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &liberate_state::prosport_map);
- m_maincpu->set_addrmap(AS_IO, &liberate_state::deco16_io_map);
+ MCFG_DEVICE_ADD("maincpu", DECO16, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(prosport_map)
+ MCFG_DEVICE_IO_MAP(deco16_io_map)
- DECO_222(config, m_audiocpu, 1500000/2); /* is it a real 222 (M6502 with bitswapped opcodes), or the same thing in external logic? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &liberate_state::liberate_sound_map);
- m_audiocpu->set_periodic_int(FUNC(liberate_state::nmi_line_pulse), attotime::from_hz(16*60)); /* ??? */
+ MCFG_DEVICE_ADD("audiocpu", DECO_222, 1500000/2) /* is it a real 222 (M6502 with bitswapped opcodes), or the same thing in external logic? */
+ MCFG_DEVICE_PROGRAM_MAP(liberate_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(liberate_state, nmi_line_pulse, 16*60) /* ??? */
-// config.m_minimum_quantum = attotime::from_hz(12000);
+// MCFG_QUANTUM_TIME(attotime::from_hz(12000))
MCFG_MACHINE_START_OVERRIDE(liberate_state,liberate)
MCFG_MACHINE_RESET_OVERRIDE(liberate_state,liberate)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(1529) /* 529ms Vblank duration?? */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(liberate_state::screen_update_prosport));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(liberate_state::deco16_interrupt));
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_prosport);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1529) /* 529ms Vblank duration?? */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(liberate_state, screen_update_prosport)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, liberate_state, deco16_interrupt))
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_prosport)
PALETTE(config, m_palette).set_format(palette_device::BGR_233_inverted, 256);
MCFG_VIDEO_START_OVERRIDE(liberate_state,prosport)
@@ -866,7 +867,7 @@ void liberate_state::prosport(machine_config &config)
AY8912(config, "ay1", 1500000).add_route(ALL_OUTPUTS, "mono", 0.30);
AY8912(config, "ay2", 1500000).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/lilith.cpp b/src/mame/drivers/lilith.cpp
index 9d9056f7d1f..d909b4b5264 100644
--- a/src/mame/drivers/lilith.cpp
+++ b/src/mame/drivers/lilith.cpp
@@ -26,9 +26,8 @@ private:
static INPUT_PORTS_START( lilith )
INPUT_PORTS_END
-void lilith_state::lilith(machine_config &config)
-{
-}
+MACHINE_CONFIG_START(lilith_state::lilith)
+MACHINE_CONFIG_END
ROM_START( lilith )
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/limenko.cpp b/src/mame/drivers/limenko.cpp
index bb0fe8a026e..05f0496496b 100644
--- a/src/mame/drivers/limenko.cpp
+++ b/src/mame/drivers/limenko.cpp
@@ -41,7 +41,6 @@ public:
limenko_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
- , m_qs1000(*this, "qs1000")
, m_oki(*this, "oki")
, m_gfxdecode(*this, "gfxdecode")
, m_palette(*this, "palette")
@@ -72,7 +71,6 @@ protected:
private:
required_device<cpu_device> m_maincpu;
- optional_device<qs1000_device> m_qs1000;
optional_device<okim6295_device> m_oki;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
@@ -275,7 +273,7 @@ READ8_MEMBER(limenko_state::spotty_sound_r)
if(m_spotty_sound_cmd == 0xf7)
return m_soundlatch->read(space,0);
else
- return m_oki->read();
+ return m_oki->read(space,0);
}
/*****************************************************************************************************
@@ -734,17 +732,17 @@ void limenko_state::limenko(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
GENERIC_LATCH_8(config, m_soundlatch);
- m_soundlatch->data_pending_callback().set(m_qs1000, FUNC(qs1000_device::set_irq));
+ m_soundlatch->data_pending_callback().set("qs1000", FUNC(qs1000_device::set_irq));
m_soundlatch->set_separate_acknowledge(true);
- QS1000(config, m_qs1000, XTAL(24'000'000));
- m_qs1000->set_external_rom(true);
- m_qs1000->p1_in().set("soundlatch", FUNC(generic_latch_8_device::read));
- m_qs1000->p1_out().set(FUNC(limenko_state::qs1000_p1_w));
- m_qs1000->p2_out().set(FUNC(limenko_state::qs1000_p2_w));
- m_qs1000->p3_out().set(FUNC(limenko_state::qs1000_p3_w));
- m_qs1000->add_route(0, "lspeaker", 1.0);
- m_qs1000->add_route(1, "rspeaker", 1.0);
+ qs1000_device &qs1000(QS1000(config, "qs1000", XTAL(24'000'000)));
+ qs1000.set_external_rom(true);
+ qs1000.p1_in().set("soundlatch", FUNC(generic_latch_8_device::read));
+ qs1000.p1_out().set(FUNC(limenko_state::qs1000_p1_w));
+ qs1000.p2_out().set(FUNC(limenko_state::qs1000_p2_w));
+ qs1000.p3_out().set(FUNC(limenko_state::qs1000_p3_w));
+ qs1000.add_route(0, "lspeaker", 1.0);
+ qs1000.add_route(1, "rspeaker", 1.0);
}
void limenko_state::spotty(machine_config &config)
@@ -1094,7 +1092,7 @@ READ32_MEMBER(limenko_state::spotty_speedup_r)
void limenko_state::init_common()
{
// Set up the QS1000 program ROM banking, taking care not to overlap the internal RAM
- m_qs1000->cpu().space(AS_IO).install_read_bank(0x0100, 0xffff, "bank");
+ machine().device("qs1000:cpu")->memory().space(AS_IO).install_read_bank(0x0100, 0xffff, "bank");
membank("qs1000:bank")->configure_entries(0, 8, memregion("qs1000:cpu")->base()+0x100, 0x10000);
m_spriteram_bit = 1;
diff --git a/src/mame/drivers/lindbergh.cpp b/src/mame/drivers/lindbergh.cpp
index 8953bddb2e2..2c3c2172dab 100644
--- a/src/mame/drivers/lindbergh.cpp
+++ b/src/mame/drivers/lindbergh.cpp
@@ -392,9 +392,8 @@ void lindbergh_state::machine_reset()
{
}
-void lindbergh_state::lindbergh(machine_config &config)
-{
- PENTIUM4(config, "maincpu", 28000000U*5); /* Actually Celeron D at 2,8 GHz */
+MACHINE_CONFIG_START(lindbergh_state::lindbergh)
+ MCFG_DEVICE_ADD("maincpu", PENTIUM4, 28000000U*5) /* Actually Celeron D at 2,8 GHz */
PCI_ROOT (config, ":pci", 0);
I82875P_HOST (config, ":pci:00.0", 0, 0x103382c0, "maincpu", 512*1024*1024);
@@ -418,7 +417,7 @@ void lindbergh_state::lindbergh(machine_config &config)
SATA (config, ":pci:1f.2", 0, 0x808625a3, 0x02, 0x103382c0);
SMBUS (config, ":pci:1f.3", 0, 0x808625a4, 0x02, 0x103382c0);
AC97 (config, ":pci:1f.5", 0, 0x808625a6, 0x02, 0x103382c0);
-}
+MACHINE_CONFIG_END
#define LINDBERGH_BIOS \
ROM_REGION32_LE(0x100000, ":pci:1f.0", 0) /* PC bios, location 3j7 */ \
diff --git a/src/mame/drivers/lisa.cpp b/src/mame/drivers/lisa.cpp
index 13f5228c6a6..c09aebd3eab 100644
--- a/src/mame/drivers/lisa.cpp
+++ b/src/mame/drivers/lisa.cpp
@@ -100,26 +100,23 @@ static const floppy_interface lisa_floppy_interface =
void lisa_state::lisa(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 20.37504_MHz_XTAL / 4); // CPUCK is nominally 5 MHz
+ M68000(config, m_maincpu, 5093760); /* 20.37504 MHz / 4 */
m_maincpu->set_addrmap(AS_PROGRAM, &lisa_state::lisa_map);
- m_maincpu->set_vblank_int("screen", FUNC(lisa_state::lisa_interrupt));
+ m_maincpu->set_vblank_int(SCREEN_TAG, FUNC(lisa_state::lisa_interrupt));
- cop421_cpu_device &iocop(COP421(config, "iocop", 3.93216_MHz_XTAL)); // U9F (I/O board)
- iocop.set_config(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, true);
- iocop.read_si().set_constant(1); // FIXME: actually tied to VIA CA2 but both pulled up to +5
- iocop.read_g().set_constant(15);
+ cop421_cpu_device &cop(COP421(config, COP421_TAG, 3900000));
+ cop.set_config(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, true);
- cop421_cpu_device &kbcop(COP421(config, "kbcop", 3932160)); // same clock as other COP?
+ cop421_cpu_device &kbcop(COP421(config, KB_COP421_TAG, 3900000)); // ?
kbcop.set_config(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, true);
- kbcop.read_si().set_constant(0);
- kbcop.read_g().set_constant(15);
M6504(config, m_fdc_cpu, 2000000); /* 16.000 MHz / 8 in when DIS asserted, 16.000 MHz / 9 otherwise (?) */
m_fdc_cpu->set_addrmap(AS_PROGRAM, &lisa_state::lisa_fdc_map);
config.m_minimum_quantum = attotime::from_hz(60);
- LS259(config, m_latch); // U4E (CPU board)
+ LS259(config, m_latch, 0); // U4E
+
m_latch->q_out_cb<0>().set(FUNC(lisa_state::diag1_w));
m_latch->q_out_cb<1>().set(FUNC(lisa_state::diag2_w));
m_latch->q_out_cb<2>().set(FUNC(lisa_state::seg1_w));
@@ -130,8 +127,11 @@ void lisa_state::lisa(machine_config &config)
m_latch->q_out_cb<7>().set(FUNC(lisa_state::hdmsk_w));
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(20.37504_MHz_XTAL, 896, 0, 720, 379, 0, 364);
- //m_screen->set_raw(20_MHz_XTAL, 896, 0, 720, 374, 0, 360); // according to Lisa Hardware Reference Manual
+ m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ m_screen->set_refresh_hz(60);
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ m_screen->set_size(880, 380);
+ m_screen->set_visarea(0, 720-1, 0, 364-1);
m_screen->set_screen_update(FUNC(lisa_state::screen_update_lisa));
m_screen->set_palette("palette");
@@ -154,14 +154,14 @@ void lisa_state::lisa(machine_config &config)
SOFTWARE_LIST(config, "disk_list").set_type("lisa", SOFTWARE_LIST_ORIGINAL_SYSTEM);
/* via */
- VIA6522(config, m_via0, 20.37504_MHz_XTAL / 40); // CPU E clock (nominally 500 kHz)
+ VIA6522(config, m_via0, 500000);
m_via0->writepa_handler().set(FUNC(lisa_state::COPS_via_out_a));
m_via0->writepb_handler().set(FUNC(lisa_state::COPS_via_out_b));
m_via0->ca2_handler().set(FUNC(lisa_state::COPS_via_out_ca2));
m_via0->cb2_handler().set(FUNC(lisa_state::COPS_via_out_cb2));
m_via0->irq_handler().set(FUNC(lisa_state::COPS_via_irq_func));
- VIA6522(config, m_via1, 20.37504_MHz_XTAL / 40); // CPU E clock (nominally 500 kHz)
+ VIA6522(config, m_via1, 500000);
SCC8530(config, m_scc, 7833600);
}
@@ -363,10 +363,10 @@ ROM_START( lisa ) /* with twiggy drives, io40 i/o rom; technically any of the bo
ROMX_LOAD("341-0175-a", 0x000000, 0x2000, NO_DUMP, ROM_SKIP(1) | ROM_BIOS(7)) // 341-0175-A LISA Bootrom Rev A (10/12/82?) (High)
ROMX_LOAD("341-0176-a", 0x000001, 0x2000, NO_DUMP, ROM_SKIP(1) | ROM_BIOS(7)) // 341-0176-A LISA Bootrom Rev A (10/12/82?) (Low)
- ROM_REGION( 0x400, "iocop", 0 )
+ ROM_REGION( 0x400, COP421_TAG, 0 )
ROM_LOAD("341-0064a.u9f", 0x000, 0x400, CRC(e6849910) SHA1(d46e67df75c9e3e773d20542fb9d5b1d2ac0fb9b))
- ROM_REGION( 0x400, "kbcop", 0 )
+ ROM_REGION( 0x400, KB_COP421_TAG, 0 )
ROM_LOAD("341-0064a.u9f", 0x000, 0x400, CRC(e6849910) SHA1(d46e67df75c9e3e773d20542fb9d5b1d2ac0fb9b))
ROM_REGION(0x2000,"fdccpu",0) // 6504 RAM and ROM
@@ -406,10 +406,10 @@ ROM_START( lisa2 ) /* internal apple codename was 'pepsi'; has one SSDD 400K dri
ROMX_LOAD("341-0175-3b", 0x000000, 0x2000, NO_DUMP, ROM_SKIP(1) | ROM_BIOS(4)) // ?label? 341-0175-3b LISA Bootrom Rev 3B (9/8/83) (High)
ROMX_LOAD("341-0176-3b", 0x000001, 0x2000, NO_DUMP, ROM_SKIP(1) | ROM_BIOS(4)) // ?label? 341-0176-3b LISA Bootrom Rev 3B (9/8/83) (Low)
- ROM_REGION( 0x400, "iocop", 0 )
+ ROM_REGION( 0x400, COP421_TAG, 0 )
ROM_LOAD("341-0064a.u9f", 0x000, 0x400, CRC(e6849910) SHA1(d46e67df75c9e3e773d20542fb9d5b1d2ac0fb9b))
- ROM_REGION( 0x400, "kbcop", 0 )
+ ROM_REGION( 0x400, KB_COP421_TAG, 0 )
ROM_LOAD("341-0064a.u9f", 0x000, 0x400, CRC(e6849910) SHA1(d46e67df75c9e3e773d20542fb9d5b1d2ac0fb9b))
ROM_REGION(0x2000,"fdccpu",0) // 6504 RAM and ROM
@@ -439,10 +439,10 @@ ROM_START( lisa210 ) /* newer motherboard and i/o board; has io88 i/o rom, built
ROMX_LOAD("341-0175-f", 0x000000, 0x2000, CRC(701b9dab) SHA1(b116e5fada7b9a51f1b6e25757b2814d1b2737a5), ROM_SKIP(1) | ROM_BIOS(2)) // 341-0175-F LISA Bootrom Rev F (12/21/83) (High)
ROMX_LOAD("341-0176-f", 0x000001, 0x2000, CRC(036010b6) SHA1(ac93e6dbe4ce59396d7d191ee3e3e79a504e518f), ROM_SKIP(1) | ROM_BIOS(2)) // 341-0176-F LISA Bootrom Rev F (12/21/83) (Low)
- ROM_REGION( 0x400, "iocop", 0 )
+ ROM_REGION( 0x400, COP421_TAG, 0 )
ROM_LOAD("341-0064a.u9f", 0x000, 0x400, CRC(e6849910) SHA1(d46e67df75c9e3e773d20542fb9d5b1d2ac0fb9b))
- ROM_REGION( 0x400, "kbcop", 0 )
+ ROM_REGION( 0x400, KB_COP421_TAG, 0 )
ROM_LOAD("341-0064a.u9f", 0x000, 0x400, CRC(e6849910) SHA1(d46e67df75c9e3e773d20542fb9d5b1d2ac0fb9b))
#if 1
@@ -467,10 +467,10 @@ ROM_START( macxl )
ROM_LOAD16_BYTE("341-0347-a", 0x000000, 0x2000, CRC(80add605) SHA1(82215688b778d8c712a8186235f7981e3dc4dd7f)) // 341-0347-A Mac XL '3A' Bootrom Hi (boot3a.hi)
ROM_LOAD16_BYTE("341-0346-a", 0x000001, 0x2000, CRC(edf5222f) SHA1(b0388ee8dbbc51a2d628473dc29b65ce913fcd76)) // 341-0346-A Mac XL '3A' Bootrom Lo (boot3a.lo)
- ROM_REGION( 0x400, "iocop", 0 )
+ ROM_REGION( 0x400, COP421_TAG, 0 )
ROM_LOAD("341-0064a.u9f", 0x000, 0x400, CRC(e6849910) SHA1(d46e67df75c9e3e773d20542fb9d5b1d2ac0fb9b))
- ROM_REGION( 0x400, "kbcop", 0 )
+ ROM_REGION( 0x400, KB_COP421_TAG, 0 )
ROM_LOAD("341-0064a.u9f", 0x000, 0x400, CRC(e6849910) SHA1(d46e67df75c9e3e773d20542fb9d5b1d2ac0fb9b))
#if 1
diff --git a/src/mame/drivers/littlerb.cpp b/src/mame/drivers/littlerb.cpp
index 5c5c206ca69..4573075593e 100644
--- a/src/mame/drivers/littlerb.cpp
+++ b/src/mame/drivers/littlerb.cpp
@@ -287,26 +287,25 @@ TIMER_DEVICE_CALLBACK_MEMBER(littlerb_state::littlerb_sound_step_cb)
m_soundframe++;
}
-void littlerb_state::littlerb(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(16'000'000)/2); // 10MHz rated part, near 16Mhz XTAL
- m_maincpu->set_addrmap(AS_PROGRAM, &littlerb_state::littlerb_main);
+MACHINE_CONFIG_START(littlerb_state::littlerb)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)/2) // 10MHz rated part, near 16Mhz XTAL
+ MCFG_DEVICE_PROGRAM_MAP(littlerb_main)
INDER_VIDEO(config, m_indervid, 0); // XTAL(40'000'000)
// TODO: not accurate - driven by XTAL(6'000'000)?
- TIMER(config, "step_timer").configure_periodic(FUNC(littlerb_state::littlerb_sound_step_cb), attotime::from_hz(7500/150));
- TIMER(config, "sound_timer").configure_periodic(FUNC(littlerb_state::littlerb_sound_cb), attotime::from_hz(7500));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("step_timer", littlerb_state, littlerb_sound_step_cb, attotime::from_hz(7500/150))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("sound_timer", littlerb_state, littlerb_sound_cb, attotime::from_hz(7500))
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- DAC_8BIT_R2R(config, m_ldac, 0).add_route(ALL_OUTPUTS, "lspeaker", 0.5); // unknown DAC
- DAC_8BIT_R2R(config, m_rdac, 0).add_route(ALL_OUTPUTS, "rspeaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("ldac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("rdac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
ROM_START( littlerb )
ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */
diff --git a/src/mame/drivers/lkage.cpp b/src/mame/drivers/lkage.cpp
index 923e61eb107..9c98ce24ecc 100644
--- a/src/mame/drivers/lkage.cpp
+++ b/src/mame/drivers/lkage.cpp
@@ -497,7 +497,7 @@ void lkage_state::lkage(machine_config &config)
m_maincpu->set_vblank_int("screen", FUNC(lkage_state::irq0_line_hold));
Z80(config, m_audiocpu, SOUND_CPU_CLOCK);
- m_audiocpu->set_addrmap(AS_PROGRAM, &lkage_state::lkage_sound_map); /* IRQs are triggered by the YM2203 */
+ m_audiocpu->set_addrmap(AS_PROGRAM, &lkage_state::lkage_sound_map); /* IRQs are triggered by the YM2203 */
TAITO68705_MCU(config, m_bmcu, MCU_CLOCK);
diff --git a/src/mame/drivers/llc.cpp b/src/mame/drivers/llc.cpp
index 5c3568309d1..44f7e645886 100644
--- a/src/mame/drivers/llc.cpp
+++ b/src/mame/drivers/llc.cpp
@@ -200,8 +200,7 @@ static GFXDECODE_START( gfx_llc2 )
GFXDECODE_END
/* Machine driver */
-void llc_state::llc1(machine_config &config)
-{
+MACHINE_CONFIG_START(llc_state::llc1)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(3'000'000));
m_maincpu->set_daisy_config(llc1_daisy_chain);
@@ -212,15 +211,15 @@ void llc_state::llc1(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(llc_state, llc1 )
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(64*8, 16*8);
- screen.set_visarea(0, 64*8-1, 0, 16*8-1);
- screen.set_screen_update(FUNC(llc_state::screen_update_llc1));
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_llc1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(64*8, 16*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 16*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(llc_state, screen_update_llc1)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_llc1)
PALETTE(config, "palette", palette_device::MONOCHROME);
config.set_default_layout(layout_llc1);
@@ -243,10 +242,9 @@ void llc_state::llc1(machine_config &config)
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
keyboard.set_keyboard_callback(FUNC(llc_state::kbd_put));
-}
+MACHINE_CONFIG_END
-void llc_state::llc2(machine_config &config)
-{
+MACHINE_CONFIG_START(llc_state::llc2)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(3'000'000));
m_maincpu->set_daisy_config(llc2_daisy_chain);
@@ -256,20 +254,21 @@ void llc_state::llc2(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(llc_state, llc2 )
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0, 64*8-1, 0, 32*8-1);
- screen.set_screen_update(FUNC(llc_state::screen_update_llc2));
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_llc2);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(llc_state, screen_update_llc2)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_llc2)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.15);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
z80pio_device& pio1(Z80PIO(config, "z80pio1", XTAL(3'000'000)));
pio1.in_pa_callback().set(K7659_KEYBOARD_TAG, FUNC(k7659_keyboard_device::read));
@@ -279,13 +278,13 @@ void llc_state::llc2(machine_config &config)
z80pio_device& pio2(Z80PIO(config, "z80pio2", XTAL(3'000'000)));
pio2.in_pa_callback().set(FUNC(llc_state::llc2_port2_a_r));
- Z80CTC(config, "z80ctc", XTAL(3'000'000));
+ MCFG_DEVICE_ADD("z80ctc", Z80CTC, XTAL(3'000'000))
K7659_KEYBOARD(config, K7659_KEYBOARD_TAG, 0);
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K");
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( llc1 )
diff --git a/src/mame/drivers/lockon.cpp b/src/mame/drivers/lockon.cpp
index d9474d316a1..9648e829649 100644
--- a/src/mame/drivers/lockon.cpp
+++ b/src/mame/drivers/lockon.cpp
@@ -470,23 +470,23 @@ void lockon_state::machine_reset()
m_main_inten = 0;
}
-void lockon_state::lockon(machine_config &config)
-{
- V30(config, m_maincpu, 16_MHz_XTAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &lockon_state::main_v30);
+MACHINE_CONFIG_START(lockon_state::lockon)
+
+ MCFG_DEVICE_ADD("maincpu", V30, 16_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(main_v30)
- V30(config, m_ground, 16_MHz_XTAL / 2);
- m_ground->set_addrmap(AS_PROGRAM, &lockon_state::ground_v30);
+ MCFG_DEVICE_ADD("ground", V30, 16_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(ground_v30)
- V30(config, m_object, 16_MHz_XTAL / 2);
- m_object->set_addrmap(AS_PROGRAM, &lockon_state::object_v30);
+ MCFG_DEVICE_ADD("object", V30, 16_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(object_v30)
- Z80(config, m_audiocpu, 16_MHz_XTAL / 4);
- m_audiocpu->set_addrmap(AS_PROGRAM, &lockon_state::sound_prg);
- m_audiocpu->set_addrmap(AS_IO, &lockon_state::sound_io);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 16_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(sound_prg)
+ MCFG_DEVICE_IO_MAP(sound_io)
WATCHDOG_TIMER(config, m_watchdog).set_time(PERIOD_OF_555_ASTABLE(10000, 4700, 10000e-12) * 4096);
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
m58990_device &adc(M58990(config, "adc", 16_MHz_XTAL / 16));
adc.in_callback<0>().set_ioport("ADC_BANK");
@@ -494,12 +494,12 @@ void lockon_state::lockon(machine_config &config)
adc.in_callback<2>().set_ioport("ADC_MISSILE");
adc.in_callback<3>().set_ioport("ADC_HOVER");
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(lockon_state::screen_update_lockon));
- m_screen->screen_vblank().set(FUNC(lockon_state::screen_vblank_lockon));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(lockon_state, screen_update_lockon)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, lockon_state, screen_vblank_lockon))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lockon);
PALETTE(config, m_palette, FUNC(lockon_state::lockon_palette), 1024 + 2048);
@@ -526,7 +526,7 @@ void lockon_state::lockon(machine_config &config)
FILTER_VOLUME(config, "f2203.2r").add_route(ALL_OUTPUTS, "rspeaker", 1.0);
FILTER_VOLUME(config, "f2203.3l").add_route(ALL_OUTPUTS, "lspeaker", 1.0);
FILTER_VOLUME(config, "f2203.3r").add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/looping.cpp b/src/mame/drivers/looping.cpp
index 04202e11ff0..ff23f1f710b 100644
--- a/src/mame/drivers/looping.cpp
+++ b/src/mame/drivers/looping.cpp
@@ -216,18 +216,18 @@ void looping_state::looping_palette(palette_device &palette) const
bit0 = BIT(color_prom[i], 0);
bit1 = BIT(color_prom[i], 1);
bit2 = BIT(color_prom[i], 2);
- int const r = combine_weights(rweights, bit0, bit1, bit2);
+ int const r = combine_3_weights(rweights, bit0, bit1, bit2);
// green component
bit0 = BIT(color_prom[i], 3);
bit1 = BIT(color_prom[i], 4);
bit2 = BIT(color_prom[i], 5);
- int const g = combine_weights(gweights, bit0, bit1, bit2);
+ int const g = combine_3_weights(gweights, bit0, bit1, bit2);
// blue component
bit0 = BIT(color_prom[i], 6);
bit1 = BIT(color_prom[i], 7);
- int const b = combine_weights(bweights, bit0, bit1);
+ int const b = combine_2_weights(bweights, bit0, bit1);
palette.set_pen_color(i, rgb_t(r, g, b));
}
@@ -567,7 +567,7 @@ void looping_state::looping_map(address_map &map)
void looping_state::looping_io_map(address_map &map)
{
- map(0x0800, 0x080f).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x400, 0x407).w("mainlatch", FUNC(ls259_device::write_d0));
}
@@ -587,8 +587,8 @@ void looping_state::looping_sound_map(address_map &map)
void looping_state::looping_sound_io_map(address_map &map)
{
- map(0x0000, 0x000f).w("sen0", FUNC(ls259_device::write_d0));
- map(0x0010, 0x001f).w("sen1", FUNC(ls259_device::write_d0));
+ map(0x000, 0x007).w("sen0", FUNC(ls259_device::write_d0));
+ map(0x008, 0x00f).w("sen1", FUNC(ls259_device::write_d0));
}
@@ -684,6 +684,7 @@ void looping_state::looping(machine_config &config)
DAC_2BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.15); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
diff --git a/src/mame/drivers/lsasquad.cpp b/src/mame/drivers/lsasquad.cpp
index 08436c78a2d..b75ad9fb27e 100644
--- a/src/mame/drivers/lsasquad.cpp
+++ b/src/mame/drivers/lsasquad.cpp
@@ -555,20 +555,20 @@ MACHINE_RESET_MEMBER(lsasquad_state,lsasquad)
}
/* Note: lsasquad clock values are not verified */
-void lsasquad_state::lsasquad(machine_config &config)
-{
+MACHINE_CONFIG_START(lsasquad_state::lsasquad)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &lsasquad_state::lsasquad_map);
- m_maincpu->set_vblank_int("screen", FUNC(lsasquad_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK / 4)
+ MCFG_DEVICE_PROGRAM_MAP(lsasquad_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lsasquad_state, irq0_line_hold)
- Z80(config, m_audiocpu, MASTER_CLOCK / 8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &lsasquad_state::lsasquad_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, MASTER_CLOCK / 8)
+ MCFG_DEVICE_PROGRAM_MAP(lsasquad_sound_map)
/* IRQs are triggered by the YM2203 */
- TAITO68705_MCU(config, m_bmcu, MASTER_CLOCK / 8);
+ MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU, MASTER_CLOCK / 8)
- config.m_minimum_quantum = attotime::from_hz(30000); /* 500 CPU slices per frame - a high value to ensure proper */
+ MCFG_QUANTUM_TIME(attotime::from_hz(30000)) /* 500 CPU slices per frame - an high value to ensure proper */
/* synchronization of the CPUs */
/* main<->sound synchronization depends on this */
@@ -578,20 +578,21 @@ void lsasquad_state::lsasquad(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set("soundnmi", FUNC(input_merger_device::in_w<0>));
- INPUT_MERGER_ALL_HIGH(config, "soundnmi").output_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI);
+ MCFG_INPUT_MERGER_ALL_HIGH("soundnmi")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
GENERIC_LATCH_8(config, m_soundlatch2);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(lsasquad_state::screen_update_lsasquad));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_lsasquad);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(lsasquad_state, screen_update_lsasquad)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lsasquad)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 512);
/* sound hardware */
@@ -607,33 +608,33 @@ void lsasquad_state::lsasquad(machine_config &config)
ymsnd.add_route(1, "mono", 0.12);
ymsnd.add_route(2, "mono", 0.12);
ymsnd.add_route(3, "mono", 0.63);
-}
+MACHINE_CONFIG_END
-void lsasquad_state::storming(machine_config &config)
-{
+MACHINE_CONFIG_START(lsasquad_state::storming)
lsasquad(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &lsasquad_state::storming_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(storming_map)
- config.device_remove("bmcu");
+ MCFG_DEVICE_REMOVE("bmcu")
AY8910(config.replace(), "aysnd", MASTER_CLOCK / 8).add_route(ALL_OUTPUTS, "mono", 0.12); // AY-3-8910A
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(lsasquad_state::daikaiju)
-void lsasquad_state::daikaiju(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &lsasquad_state::daikaiju_map);
- m_maincpu->set_vblank_int("screen", FUNC(lsasquad_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK / 4)
+ MCFG_DEVICE_PROGRAM_MAP(daikaiju_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lsasquad_state, irq0_line_hold)
- Z80(config, m_audiocpu, MASTER_CLOCK / 8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &lsasquad_state::daikaiju_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, MASTER_CLOCK / 8)
+ MCFG_DEVICE_PROGRAM_MAP(daikaiju_sound_map)
/* IRQs are triggered by the YM2203 */
- TAITO68705_MCU(config, m_bmcu, MASTER_CLOCK / 8);
+ MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU, MASTER_CLOCK / 8)
- config.m_minimum_quantum = attotime::from_hz(30000); /* 500 CPU slices per frame - a high value to ensure proper */
+ MCFG_QUANTUM_TIME(attotime::from_hz(30000)) /* 500 CPU slices per frame - an high value to ensure proper */
/* synchronization of the CPUs */
/* main<->sound synchronization depends on this */
@@ -643,18 +644,19 @@ void lsasquad_state::daikaiju(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set("soundnmi", FUNC(input_merger_device::in_w<0>));
- INPUT_MERGER_ALL_HIGH(config, "soundnmi").output_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI);
+ MCFG_INPUT_MERGER_ALL_HIGH("soundnmi")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(lsasquad_state::screen_update_daikaiju));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_lsasquad);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(lsasquad_state, screen_update_daikaiju)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lsasquad)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 512);
/* sound hardware */
@@ -670,7 +672,7 @@ void lsasquad_state::daikaiju(machine_config &config)
ymsnd.add_route(1, "mono", 0.12);
ymsnd.add_route(2, "mono", 0.12);
ymsnd.add_route(3, "mono", 0.63);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/ltcasino.cpp b/src/mame/drivers/ltcasino.cpp
index e6fb14e2898..cbad9040b9f 100644
--- a/src/mame/drivers/ltcasino.cpp
+++ b/src/mame/drivers/ltcasino.cpp
@@ -742,21 +742,20 @@ static GFXDECODE_START( gfx_ltcasino )
GFXDECODE_END
-void ltcasino_state::ltcasino(machine_config &config)
-{
+MACHINE_CONFIG_START(ltcasino_state::ltcasino)
/* basic machine hardware */
- M6502(config, m_maincpu, XTAL(18'432'000)/9); /* 2.048MHz ?? (or 18.432MHz/8 = 2.304MHz) - not verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &ltcasino_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(ltcasino_state::irq0_line_hold));
+ MCFG_DEVICE_ADD(m_maincpu, M6502, XTAL(18'432'000)/9) /* 2.048MHz ?? (or 18.432MHz/8 = 2.304MHz) - not verified */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ltcasino_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(6*8, 58*8-1, 0, 32*8-1);
- screen.set_screen_update(FUNC(ltcasino_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(6*8, 58*8-1, 0, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ltcasino_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_ltcasino);
PALETTE(config, "palette", FUNC(ltcasino_state::ltcasino_palette), 2*64);
@@ -769,7 +768,7 @@ void ltcasino_state::ltcasino(machine_config &config)
aysnd.port_b_read_callback().set_ioport("IN6");
//ltcasino -> pc: F3F3 (A in service) and F3FD (B in service)
aysnd.add_route(ALL_OUTPUTS, "mono", 0.4);
-}
+MACHINE_CONFIG_END
ROM_START( ltcasino )
diff --git a/src/mame/drivers/ltd.cpp b/src/mame/drivers/ltd.cpp
index 27f3e4e9500..7e7ef9404e9 100644
--- a/src/mame/drivers/ltd.cpp
+++ b/src/mame/drivers/ltd.cpp
@@ -523,11 +523,10 @@ TIMER_DEVICE_CALLBACK_MEMBER( ltd_state::timer_r )
}
}
-void ltd_state::ltd3(machine_config &config)
-{
+MACHINE_CONFIG_START(ltd_state::ltd3)
/* basic machine hardware */
- M6802(config, m_maincpu, XTAL(3'579'545));
- m_maincpu->set_addrmap(AS_PROGRAM, &ltd_state::ltd3_map);
+ MCFG_DEVICE_ADD("maincpu", M6802, XTAL(3'579'545))
+ MCFG_DEVICE_PROGRAM_MAP(ltd3_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -537,11 +536,10 @@ void ltd_state::ltd3(machine_config &config)
/* Sound */
genpin_audio(config);
- TIMER(config, "timer_r").configure_periodic(FUNC(ltd_state::timer_r), attotime::from_hz(500));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_r", ltd_state, timer_r, attotime::from_hz(500))
+MACHINE_CONFIG_END
-void ltd_state::ltd4(machine_config &config)
-{
+MACHINE_CONFIG_START(ltd_state::ltd4)
/* basic machine hardware */
m6803_cpu_device &maincpu(M6803(config, "maincpu", XTAL(3'579'545))); // guess, no details available
maincpu.set_addrmap(AS_PROGRAM, &ltd_state::ltd4_map);
@@ -561,7 +559,7 @@ void ltd_state::ltd4(machine_config &config)
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd_0", XTAL(3'579'545)/2).add_route(ALL_OUTPUTS, "mono", 0.3); /* guess */
AY8910(config, "aysnd_1", XTAL(3'579'545)/2).add_route(ALL_OUTPUTS, "mono", 0.3); /* guess */
-}
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
/ Arizona
diff --git a/src/mame/drivers/luckgrln.cpp b/src/mame/drivers/luckgrln.cpp
index a15a16257f7..63507f60509 100644
--- a/src/mame/drivers/luckgrln.cpp
+++ b/src/mame/drivers/luckgrln.cpp
@@ -861,42 +861,42 @@ INTERRUPT_GEN_MEMBER(luckgrln_state::irq)
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
-void luckgrln_state::luckgrln(machine_config &config)
-{
- Z180(config, m_maincpu, 8000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &luckgrln_state::mainmap);
- m_maincpu->set_addrmap(AS_IO, &luckgrln_state::luckgrln_io);
- m_maincpu->set_vblank_int("screen", FUNC(luckgrln_state::irq));
+MACHINE_CONFIG_START(luckgrln_state::luckgrln)
+ MCFG_DEVICE_ADD(m_maincpu, Z180,8000000)
+ MCFG_DEVICE_PROGRAM_MAP(mainmap)
+ MCFG_DEVICE_IO_MAP(luckgrln_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", luckgrln_state, irq)
h46505_device &crtc(H46505(config, "crtc", 6000000/4)); /* unknown clock, hand tuned to get ~60 fps */
crtc.set_screen("screen");
crtc.set_show_border_area(false);
crtc.set_char_width(8);
- MSM6242(config, "rtc", 0);
+ MCFG_DEVICE_ADD("rtc", MSM6242, 0)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(luckgrln_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(luckgrln_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_luckgrln);
- PALETTE(config, m_palette).set_entries(0x8000);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, "palette", gfx_luckgrln)
+ MCFG_PALETTE_ADD("palette", 0x8000)
SPEAKER(config, "mono").front_center();
-}
-void luckgrln_state::_7smash(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(luckgrln_state::_7smash)
luckgrln(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &luckgrln_state::_7smash_map);
- m_maincpu->set_addrmap(AS_IO, &luckgrln_state::_7smash_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(_7smash_map)
+ MCFG_DEVICE_IO_MAP(_7smash_io)
- config.device_remove("rtc");
-}
+ MCFG_DEVICE_REMOVE("rtc")
+MACHINE_CONFIG_END
void luckgrln_state::init_luckgrln()
{
diff --git a/src/mame/drivers/lucky74.cpp b/src/mame/drivers/lucky74.cpp
index eef05d50adb..cc000621cf2 100644
--- a/src/mame/drivers/lucky74.cpp
+++ b/src/mame/drivers/lucky74.cpp
@@ -937,11 +937,11 @@ void lucky74_state::lucky74_map(address_map &map)
map(0xf000, 0xf003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); // Input Ports 0 & 1
map(0xf080, 0xf083).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); // DSW 1, 2 & 3
map(0xf0c0, 0xf0c3).rw("ppi8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write)); // DSW 4
- map(0xf100, 0xf100).w("sn1", FUNC(sn76489_device::write)); // SN76489 #1
+ map(0xf100, 0xf100).w("sn1", FUNC(sn76489_device::command_w)); // SN76489 #1
map(0xf200, 0xf203).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); // Input Ports 2 & 4
- map(0xf300, 0xf300).w("sn2", FUNC(sn76489_device::write)); // SN76489 #2
+ map(0xf300, 0xf300).w("sn2", FUNC(sn76489_device::command_w)); // SN76489 #2
map(0xf400, 0xf400).w("aysnd", FUNC(ay8910_device::address_w)); // YM2149 control
- map(0xf500, 0xf500).w("sn3", FUNC(sn76489_device::write)); // SN76489 #3
+ map(0xf500, 0xf500).w("sn3", FUNC(sn76489_device::command_w)); // SN76489 #3
map(0xf600, 0xf600).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); // YM2149 (Input Port 1)
map(0xf700, 0xf701).rw(FUNC(lucky74_state::usart_8251_r), FUNC(lucky74_state::usart_8251_w)); // USART 8251 port
map(0xf800, 0xf803).rw(FUNC(lucky74_state::copro_sm7831_r), FUNC(lucky74_state::copro_sm7831_w)); // SM7831 Co-Processor
@@ -1463,13 +1463,13 @@ WRITE_LINE_MEMBER(lucky74_state::lucky74_adpcm_int)
* Machine Drivers *
*************************/
-void lucky74_state::lucky74(machine_config &config)
-{
+MACHINE_CONFIG_START(lucky74_state::lucky74)
+
/* basic machine hardware */
- Z80(config, m_maincpu, C_06B49P_CLKOUT_03); /* 3 MHz. */
- m_maincpu->set_addrmap(AS_PROGRAM, &lucky74_state::lucky74_map);
- m_maincpu->set_addrmap(AS_IO, &lucky74_state::lucky74_portmap);
- m_maincpu->set_vblank_int("screen", FUNC(lucky74_state::nmi_interrupt)); /* 60 Hz. measured */
+ MCFG_DEVICE_ADD("maincpu", Z80, C_06B49P_CLKOUT_03) /* 3 MHz. */
+ MCFG_DEVICE_PROGRAM_MAP(lucky74_map)
+ MCFG_DEVICE_IO_MAP(lucky74_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lucky74_state, nmi_interrupt) /* 60 Hz. measured */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -1495,13 +1495,13 @@ void lucky74_state::lucky74(machine_config &config)
ppi3.out_pc_callback().set(FUNC(lucky74_state::lamps_b_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 1*8, 30*8-1);
- screen.set_screen_update(FUNC(lucky74_state::screen_update_lucky74));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 1*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(lucky74_state, screen_update_lucky74)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_lucky74);
PALETTE(config, "palette", FUNC(lucky74_state::lucky74_palette), 512);
@@ -1509,9 +1509,14 @@ void lucky74_state::lucky74(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489(config, "sn1", C_06B49P_CLKOUT_03).add_route(ALL_OUTPUTS, "mono", 0.80); /* 3 MHz. */
- SN76489(config, "sn2", C_06B49P_CLKOUT_03).add_route(ALL_OUTPUTS, "mono", 0.80); /* 3 MHz. */
- SN76489(config, "sn3", C_06B49P_CLKOUT_03).add_route(ALL_OUTPUTS, "mono", 0.80); /* 3 MHz. */
+ MCFG_DEVICE_ADD("sn1", SN76489, C_06B49P_CLKOUT_03) /* 3 MHz. */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ MCFG_DEVICE_ADD("sn2", SN76489, C_06B49P_CLKOUT_03) /* 3 MHz. */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ MCFG_DEVICE_ADD("sn3", SN76489, C_06B49P_CLKOUT_03) /* 3 MHz. */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
ay8910_device &aysnd(AY8910(config, "aysnd", C_06B49P_CLKOUT_04)); /* 1.5 MHz. */
aysnd.port_a_read_callback().set_ioport("IN3");
@@ -1519,11 +1524,12 @@ void lucky74_state::lucky74(machine_config &config)
aysnd.port_b_write_callback().set(FUNC(lucky74_state::ym2149_portb_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.00); /* not routed to audio hardware */
- MSM5205(config, m_msm, C_06B49P_CLKOUT_06); /* 375 kHz. */
- m_msm->vck_legacy_callback().set(FUNC(lucky74_state::lucky74_adpcm_int)); /* interrupt function */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8KHz */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.70);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, C_06B49P_CLKOUT_06) /* 375 kHz. */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, lucky74_state, lucky74_adpcm_int)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
+
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/luckybal.cpp b/src/mame/drivers/luckybal.cpp
index d4a0e10cd1d..2f198250492 100644
--- a/src/mame/drivers/luckybal.cpp
+++ b/src/mame/drivers/luckybal.cpp
@@ -565,12 +565,12 @@ INPUT_PORTS_END
* Machine Driver *
**************************************/
-void luckybal_state::luckybal(machine_config &config)
-{
+MACHINE_CONFIG_START(luckybal_state::luckybal)
+
/* basic machine hardware */
- Z180(config, m_maincpu, CPU_CLOCK / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &luckybal_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &luckybal_state::main_io);
+ MCFG_DEVICE_ADD("maincpu", Z180, CPU_CLOCK / 2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_io)
I8255A(config, m_ppi);
m_ppi->out_pa_callback().set(FUNC(luckybal_state::output_port_a_w));
@@ -578,11 +578,11 @@ void luckybal_state::luckybal(machine_config &config)
m_ppi->in_pc_callback().set(FUNC(luckybal_state::input_port_c_r));
m_ppi->out_pc_callback().set(FUNC(luckybal_state::output_port_c_w));
- CD4099(config, "latch1", 0);
+ MCFG_DEVICE_ADD("latch1", CD4099, 0)
- CD4099(config, "latch2", 0);
+ MCFG_DEVICE_ADD("latch2", CD4099, 0)
- CD4099(config, "latch3", 0);
+ MCFG_DEVICE_ADD("latch3", CD4099, 0)
/* nvram */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -596,11 +596,11 @@ void luckybal_state::luckybal(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC08(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC08, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+
+MACHINE_CONFIG_END
/**************************************
diff --git a/src/mame/drivers/lvcards.cpp b/src/mame/drivers/lvcards.cpp
index ba00c75d0f3..cbc54fd9b48 100644
--- a/src/mame/drivers/lvcards.cpp
+++ b/src/mame/drivers/lvcards.cpp
@@ -459,22 +459,21 @@ GFXDECODE_END
/* Sound Interfaces */
-void lvcards_state::lvcards(machine_config &config)
-{
+MACHINE_CONFIG_START(lvcards_state::lvcards)
// basic machine hardware
- Z80(config, m_maincpu, 18432000/4); // unknown frequency, assume same as tehkanwc.cpp
- m_maincpu->set_addrmap(AS_PROGRAM, &lvcards_state::lvcards_map);
- m_maincpu->set_addrmap(AS_IO, &lvcards_state::lvcards_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(lvcards_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu",Z80, 18432000/4) // unknown frequency, assume same as tehkanwc.cpp
+ MCFG_DEVICE_PROGRAM_MAP(lvcards_map)
+ MCFG_DEVICE_IO_MAP(lvcards_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lvcards_state, irq0_line_hold)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(8*0, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(lvcards_state::screen_update_lvcards));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*0, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(lvcards_state, screen_update_lvcards)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_lvcards);
PALETTE(config, "palette", FUNC(lvcards_state::lvcards_palette), 256);
@@ -486,28 +485,28 @@ void lvcards_state::lvcards(machine_config &config)
aysnd.port_a_read_callback().set_ioport("DSW0");
aysnd.port_b_read_callback().set_ioport("DSW1");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
-void lvpoker_state::lvpoker(machine_config &config)
-{
+MACHINE_CONFIG_START(lvpoker_state::lvpoker)
lvcards(config);
// basic machine hardware
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- m_maincpu->set_addrmap(AS_PROGRAM, &lvpoker_state::lvpoker_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(lvpoker_map)
+MACHINE_CONFIG_END
-void lvpoker_state::ponttehk(machine_config &config)
-{
+MACHINE_CONFIG_START(lvpoker_state::ponttehk)
lvcards(config);
// basic machine hardware
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- m_maincpu->set_addrmap(AS_PROGRAM, &lvpoker_state::ponttehk_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ponttehk_map)
// video hardware
PALETTE(config.replace(), "palette", palette_device::RGB_444_PROMS, "proms", 256);
-}
+MACHINE_CONFIG_END
ROM_START( lvpoker )
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/lviv.cpp b/src/mame/drivers/lviv.cpp
index 251f3e03dda..3af2fe67ae6 100644
--- a/src/mame/drivers/lviv.cpp
+++ b/src/mame/drivers/lviv.cpp
@@ -10,13 +10,13 @@ Dr. Volodimir Mosorov for two Lviv machines.
What's new:
-----------
-28.02.2003 Snapshot verifying function added.
+28.02.2003 Snapshot veryfing function added.
07.01.2003 Support for .SAV snapshots. Joystick support (there are strange
problems with "Doroga (1991)(-)(Ru).lvt".
21.12.2002 Cassette support rewritten, WAVs saving and loading are working now.
08.12.2002 Comments on emulation status updated. Changed 'lvive' to 'lvivp'.
ADC r instruction in I8080 core fixed (Arkanoid works now).
- Original keyboard layout added.
+ Orginal keyboard layout added.
20.07.2002 "Reset" key fixed. I8080 core fixed (all BASIC commands works).
now). Unsupported .lvt files versions aren't now loaded.
xx.07.2002 Improved port and memory mapping (Raphael Nabet).
@@ -34,7 +34,7 @@ Notes on emulation status and to do list:
-----------------------------------------
1. LIMITATION: Printer is not emulated.
2. LIMITATION: Timings are not implemented, due to it emulated machine runs
- twice fast as original.
+ twice fast as orginal.
3. LIMITATION: .RSS files are not supported.
4. LIMITATION: Some usage notes and trivia are needed in sysinfo.dat.
@@ -96,11 +96,11 @@ Ports:
D0-D3 8255 PPI
Port A:
- keyboard scanning
+ keyboard scaning
Port B:
keyboard reading
Port C:
- keyboard scanning/reading
+ keyboard scaning/reading
Keyboard:
---------
@@ -161,7 +161,7 @@ Keyboard:
Video:
-----
Screen resolution is 256x256 pixels. 4 colors at once are possible,
- but there is a possibility of palette change. Bits 0..6 of port 0xc1
+ but there is a posiibility of palette change. Bits 0..6 of port 0xc1
are used for palette setting.
One byte of video-RAM sets 4 pixels. Colors of pixels are corrected
@@ -423,10 +423,10 @@ INPUT_PORTS_END
/* machine definition */
MACHINE_CONFIG_START(lviv_state::lviv)
/* basic machine hardware */
- I8080(config, m_maincpu, 2500000);
- m_maincpu->set_addrmap(AS_PROGRAM, &lviv_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &lviv_state::io_map);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD(m_maincpu, I8080, 2500000)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
I8255(config, m_ppi[0]);
m_ppi[0]->in_pa_callback().set(FUNC(lviv_state::ppi_0_porta_r));
@@ -444,31 +444,32 @@ MACHINE_CONFIG_START(lviv_state::lviv)
m_ppi[1]->in_pc_callback().set(FUNC(lviv_state::ppi_1_portc_r));
m_ppi[1]->out_pc_callback().set(FUNC(lviv_state::ppi_1_portc_w));
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(0)
+
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(50);
- m_screen->set_vblank_time(0);
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 256-1, 0, 256-1);
- m_screen->set_screen_update(FUNC(lviv_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(lviv_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(lviv_state::lviv_palette), ARRAY_LENGTH(s_palette));
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
/* snapshot */
- MCFG_SNAPSHOT_ADD("snapshot", lviv_state, lviv, "sav")
+ MCFG_SNAPSHOT_ADD("snapshot", lviv_state, lviv, "sav", 0)
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(lviv_lvt_format);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("lviv_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(lviv_lvt_format)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("lviv_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("lviv");
+ MCFG_SOFTWARE_LIST_ADD("cass_list","lviv")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K");
diff --git a/src/mame/drivers/lwings.cpp b/src/mame/drivers/lwings.cpp
index f96736b6c7e..251394647bb 100644
--- a/src/mame/drivers/lwings.cpp
+++ b/src/mame/drivers/lwings.cpp
@@ -931,33 +931,33 @@ void lwings_state::machine_reset()
m_adpcm = 0;
}
-void lwings_state::lwings(machine_config &config)
-{
+MACHINE_CONFIG_START(lwings_state::lwings)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/2); /* verified on PCB */
- m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::lwings_map);
- m_maincpu->set_vblank_int("screen", FUNC(lwings_state::lwings_interrupt));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* verified on PCB */
+ MCFG_DEVICE_PROGRAM_MAP(lwings_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lwings_state, lwings_interrupt)
- Z80(config, m_soundcpu, XTAL(12'000'000)/4); /* verified on PCB */
- m_soundcpu->set_addrmap(AS_PROGRAM, &lwings_state::lwings_sound_map);
- m_soundcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(222));
- // above frequency is an approximation from PCB music recording - where is the frequency actually derived from?
+ MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/4) /* verified on PCB */
+ MCFG_DEVICE_PROGRAM_MAP(lwings_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(lwings_state, irq0_line_hold, 222) // approximation from pcb music recording - where is the frequency actually derived from??
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- BUFFERED_SPRITERAM8(config, m_spriteram);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(lwings_state::screen_update_lwings));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_lwings);
+ MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_lwings)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lwings)
+
PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024);
/* sound hardware */
@@ -965,45 +965,48 @@ void lwings_state::lwings(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- ym2203_device &ym2203a(YM2203(config, "2203a", XTAL(12'000'000)/8)); /* verified on PCB */
- ym2203a.add_route(0, "mono", 0.20);
- ym2203a.add_route(1, "mono", 0.20);
- ym2203a.add_route(2, "mono", 0.20);
- ym2203a.add_route(3, "mono", 0.10);
-
- ym2203_device &ym2203b(YM2203(config, "2203b", XTAL(12'000'000)/8)); /* verified on PCB */
- ym2203b.add_route(0, "mono", 0.20);
- ym2203b.add_route(1, "mono", 0.20);
- ym2203b.add_route(2, "mono", 0.20);
- ym2203b.add_route(3, "mono", 0.10);
-}
+ MCFG_DEVICE_ADD("2203a", YM2203, XTAL(12'000'000)/8) /* verified on PCB */
+ MCFG_SOUND_ROUTE(0, "mono", 0.20)
+ MCFG_SOUND_ROUTE(1, "mono", 0.20)
+ MCFG_SOUND_ROUTE(2, "mono", 0.20)
+ MCFG_SOUND_ROUTE(3, "mono", 0.10)
+
+ MCFG_DEVICE_ADD("2203b", YM2203, XTAL(12'000'000)/8) /* verified on PCB */
+ MCFG_SOUND_ROUTE(0, "mono", 0.20)
+ MCFG_SOUND_ROUTE(1, "mono", 0.20)
+ MCFG_SOUND_ROUTE(2, "mono", 0.20)
+ MCFG_SOUND_ROUTE(3, "mono", 0.10)
+MACHINE_CONFIG_END
+
+
+
+MACHINE_CONFIG_START(lwings_state::fball)
-void lwings_state::fball(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::fball_map);
- m_maincpu->set_vblank_int("screen", FUNC(lwings_state::avengers_interrupt));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(fball_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lwings_state, avengers_interrupt)
- Z80(config, m_soundcpu, XTAL(12'000'000)/4); // ?
- m_soundcpu->set_addrmap(AS_PROGRAM, &lwings_state::fball_sound_map);
-// m_soundcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(222));
+ MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/4) // ?
+ MCFG_DEVICE_PROGRAM_MAP(fball_sound_map)
+// MCFG_DEVICE_PERIODIC_INT_DRIVER(lwings_state, irq0_line_hold, 222)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- BUFFERED_SPRITERAM8(config, m_spriteram);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1); // the 16-pixel black border on left edge is correct, test mode actually uses that area
- screen.set_screen_update(FUNC(lwings_state::screen_update_lwings));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_lwings);
+ MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) // the 16-pixel black border on left edge is correct, test mode actually uses that area
+ MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_lwings)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lwings)
+
PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024);
/* sound hardware */
@@ -1011,60 +1014,65 @@ void lwings_state::fball(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
- oki.set_addrmap(0, &lwings_state::fball_oki_map);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, fball_oki_map)
-void lwings_state::trojan(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_START(lwings_state::trojan)
lwings(config);
/* basic machine hardware */
- m_maincpu->set_clock(XTAL(12'000'000)/4); /* verified on PCB */
- m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::trojan_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(XTAL(12'000'000)/4) /* verified on PCB */
+ MCFG_DEVICE_PROGRAM_MAP(trojan_map)
- m_soundcpu->set_clock(XTAL(12'000'000)/4); /* verified on PCB */
+ MCFG_DEVICE_MODIFY("soundcpu")
+ MCFG_DEVICE_CLOCK(XTAL(12'000'000)/4) /* verified on PCB */
- z80_device &adpcm(Z80(config, "adpcm", XTAL(12'000'000)/4)); /* verified on PCB */
- adpcm.set_addrmap(AS_PROGRAM, &lwings_state::trojan_adpcm_map);
- adpcm.set_addrmap(AS_IO, &lwings_state::trojan_adpcm_io_map);
- adpcm.set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(4000));
+ MCFG_DEVICE_ADD("adpcm", Z80, XTAL(12'000'000)/4) /* verified on PCB */
+ MCFG_DEVICE_PROGRAM_MAP(trojan_adpcm_map)
+ MCFG_DEVICE_IO_MAP(trojan_adpcm_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(lwings_state, irq0_line_hold, 4000)
/* video hardware */
- m_gfxdecode->set_info(gfx_trojan);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_trojan)
MCFG_VIDEO_START_OVERRIDE(lwings_state,trojan)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(lwings_state::screen_update_trojan));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_trojan)
/* sound hardware */
+
GENERIC_LATCH_8(config, "soundlatch2");
- MSM5205(config, m_msm, XTAL(384'000)); /* verified on PCB */
- m_msm->set_prescaler_selector(msm5205_device::SEX_4B); /* slave mode */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("5205", MSM5205, XTAL(384'000)) /* verified on PCB */
+ MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* slave mode */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
-void lwings_state::avengers(machine_config &config)
-{
+MACHINE_CONFIG_START(lwings_state::avengers)
trojan(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::avengers_map);
- m_maincpu->set_vblank_int("screen", FUNC(lwings_state::avengers_interrupt)); // RST 38h triggered by software
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(avengers_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lwings_state, avengers_interrupt) // RST 38h triggered by software
- subdevice<cpu_device>("adpcm")->set_addrmap(AS_IO, &lwings_state::avengers_adpcm_io_map);
+ MCFG_DEVICE_MODIFY("adpcm")
+ MCFG_DEVICE_IO_MAP(avengers_adpcm_io_map)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(lwings_state,avengers)
-}
+MACHINE_CONFIG_END
-void lwings_state::avengersb(machine_config &config)
-{
+MACHINE_CONFIG_START(lwings_state::avengersb)
avengers(config);
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(lwings_state,avengersb)
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/lynx.cpp b/src/mame/drivers/lynx.cpp
index 89c207682bf..0bce8a5dd10 100644
--- a/src/mame/drivers/lynx.cpp
+++ b/src/mame/drivers/lynx.cpp
@@ -76,23 +76,23 @@ void lynx_state::sound_cb()
MACHINE_CONFIG_START(lynx_state::lynx)
/* basic machine hardware */
- M65SC02(config, m_maincpu, 4000000); /* vti core, integrated in vlsi, stz, but not bbr bbs */
- m_maincpu->set_addrmap(AS_PROGRAM, &lynx_state::lynx_mem);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD("maincpu", M65SC02, 4000000) /* vti core, integrated in vlsi, stz, but not bbr bbs */
+ MCFG_DEVICE_PROGRAM_MAP(lynx_mem)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
ADDRESS_MAP_BANK(config, "bank_fc00").set_map(&lynx_state::lynx_fc00_mem).set_options(ENDIANNESS_LITTLE, 8, 9, 0x100);
ADDRESS_MAP_BANK(config, "bank_fd00").set_map(&lynx_state::lynx_fd00_mem).set_options(ENDIANNESS_LITTLE, 8, 9, 0x100);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_LCD);
- m_screen->set_refresh_hz(30);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_screen_update(FUNC(lynx_state::screen_update));
- m_screen->set_size(160, 102);
- m_screen->set_visarea(0, 160-1, 0, 102-1);
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(30)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(lynx_state, screen_update)
+ MCFG_SCREEN_SIZE(160, 102)
+ MCFG_SCREEN_VISIBLE_AREA(0, 160-1, 0, 102-1)
config.set_default_layout(layout_lynx);
- PALETTE(config, m_palette).set_entries(0x10);
+ MCFG_PALETTE_ADD("palette", 0x10)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -101,7 +101,7 @@ MACHINE_CONFIG_START(lynx_state::lynx)
m_sound->add_route(ALL_OUTPUTS, "mono", 0.50);
/* devices */
- MCFG_QUICKLOAD_ADD("quickload", lynx_state, lynx, "o");
+ MCFG_QUICKLOAD_ADD("quickload", lynx_state, lynx, "o", 0)
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "lynx_cart")
MCFG_GENERIC_EXTENSIONS("lnx,lyx")
@@ -109,7 +109,7 @@ MACHINE_CONFIG_START(lynx_state::lynx)
MCFG_GENERIC_LOAD(lynx_state, lynx_cart)
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("lynx");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","lynx")
MACHINE_CONFIG_END
#if 0
diff --git a/src/mame/drivers/m20.cpp b/src/mame/drivers/m20.cpp
index 28d5b810d6f..a1d07ace980 100644
--- a/src/mame/drivers/m20.cpp
+++ b/src/mame/drivers/m20.cpp
@@ -790,31 +790,30 @@ static void keyboard(device_slot_interface &device)
device.option_add("m20", M20_KEYBOARD);
}
-void m20_state::m20(machine_config &config)
-{
+MACHINE_CONFIG_START(m20_state::m20)
/* basic machine hardware */
- Z8001(config, m_maincpu, MAIN_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &m20_state::m20_program_mem);
- m_maincpu->set_addrmap(AS_DATA, &m20_state::m20_data_mem);
- m_maincpu->set_addrmap(AS_IO, &m20_state::m20_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(m20_state::m20_irq_callback));
+ MCFG_DEVICE_ADD("maincpu", Z8001, MAIN_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(m20_program_mem)
+ MCFG_DEVICE_DATA_MAP(m20_data_mem)
+ MCFG_DEVICE_IO_MAP(m20_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(m20_state,m20_irq_callback)
RAM(config, RAM_TAG).set_default_size("160K").set_default_value(0).set_extra_options("128K,192K,224K,256K,384K,512K");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
PALETTE(config, m_palette, palette_device::MONOCHROME);
/* Devices */
FD1797(config, m_fd1797, 1000000);
m_fd1797->intrq_wr_callback().set(m_i8259, FUNC(pic8259_device::ir0_w));
- FLOPPY_CONNECTOR(config, "fd1797:0", m20_floppies, "5dd", m20_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "fd1797:1", m20_floppies, "5dd", m20_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("fd1797:0", m20_floppies, "5dd", m20_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fd1797:1", m20_floppies, "5dd", m20_state::floppy_formats)
mc6845_device &crtc(MC6845(config, "crtc", PIXEL_CLOCK/8)); /* hand tuned to get ~50 fps */
crtc.set_screen("screen");
@@ -850,10 +849,10 @@ void m20_state::m20(machine_config &config)
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr));
rs232.rxd_handler().set(m_ttyi8251, FUNC(i8251_device::write_rxd));
- M20_8086(config, m_apb, m_maincpu, m_i8259, RAM_TAG);
+ MCFG_DEVICE_ADD("apb", M20_8086, "maincpu", m_i8259, RAM_TAG)
- SOFTWARE_LIST(config, "flop_list").set_original("m20");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list","m20")
+MACHINE_CONFIG_END
ROM_START(m20)
ROM_REGION(0x2000,"maincpu", 0)
diff --git a/src/mame/drivers/m24.cpp b/src/mame/drivers/m24.cpp
index d03e3dadd31..a52b11959e0 100644
--- a/src/mame/drivers/m24.cpp
+++ b/src/mame/drivers/m24.cpp
@@ -15,21 +15,13 @@
#include "emu.h"
-#include "bus/isa/isa.h"
-#include "bus/isa/isa_cards.h"
#include "cpu/i86/i86.h"
#include "cpu/tms7000/tms7000.h"
#include "imagedev/floppy.h"
-#include "machine/am9517a.h"
-#include "machine/i8087.h"
#include "machine/m24_kbd.h"
#include "machine/m24_z8000.h"
#include "machine/mm58274c.h"
-#include "machine/pit8253.h"
-#include "machine/pic8259.h"
-#include "machine/ram.h"
-#include "sound/spkrdev.h"
-#include "speaker.h"
+#include "machine/genpc.h"
#include "formats/pc_dsk.h"
#include "formats/naslite_dsk.h"
@@ -43,83 +35,35 @@ public:
m24_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
- m_ram(*this, RAM_TAG),
- m_isabus(*this, "isabus"),
- m_dmac(*this, "dmac"),
- m_pic(*this, "pic"),
- m_pit(*this, "pit"),
- m_speaker(*this, "speaker"),
+ m_mb(*this, "mb"),
m_kbc(*this, "kbc"),
m_keyboard(*this, "keyboard"),
- m_z8000_apb(*this, "z8000_apb"),
- m_dsw0(*this, "DSW0")
+ m_z8000_apb(*this, "z8000_apb")
{ }
void olivetti(machine_config &config);
protected:
- virtual void machine_start() override;
- virtual void machine_reset() override;
+ void machine_reset() override;
private:
- void dma_segment_w(offs_t offset, u8 data);
- DECLARE_WRITE_LINE_MEMBER(dma_hrq_w);
- u8 dma_memory_read(offs_t offset);
- void dma_memory_write(offs_t offset, u8 data);
- template <int Channel> u8 dma_io_read(offs_t offset);
- template <int Channel> void dma_io_write(offs_t offset, u8 data);
- template <int Channel> DECLARE_WRITE_LINE_MEMBER(dma_dack_w);
- DECLARE_WRITE_LINE_MEMBER(dma_tc_w);
- DECLARE_WRITE_LINE_MEMBER(dreq0_ck_w);
- DECLARE_WRITE_LINE_MEMBER(speaker_ck_w);
- void update_speaker();
-
- u8 keyboard_data_r();
- u8 keyboard_status_r();
- void keyboard_data_w(u8 data);
-
- void ctrlport_a_w(u8 data);
- u8 ctrlport_a_r();
- u8 ctrlport_b_r();
-
- void alt_w(u8 data);
- DECLARE_WRITE_LINE_MEMBER(chck_w);
- DECLARE_WRITE_LINE_MEMBER(int87_w);
- void nmi_enable_w(u8 data);
- void update_nmi();
-
- required_device<i8086_cpu_device> m_maincpu;
- required_device<ram_device> m_ram;
- required_device<isa8_device> m_isabus;
- required_device<am9517a_device> m_dmac;
- required_device<pic8259_device> m_pic;
- required_device<pit8253_device> m_pit;
- required_device<speaker_sound_device> m_speaker;
+ required_device<cpu_device> m_maincpu;
+ required_device<pc_noppi_mb_device> m_mb;
required_device<tms7000_device> m_kbc;
required_device<m24_keyboard_device> m_keyboard;
optional_device<m24_z8000_device> m_z8000_apb;
- required_ioport m_dsw0;
-
- u8 m_dma_segment[4];
- u8 m_dma_active;
- bool m_tc;
- bool m_dreq0_ck;
-
- u8 m_ctrlport_a;
- u8 m_ctrlport_b;
-
- bool m_87int;
- bool m_chck_active;
- bool m_nmi_enable;
- u8 m_pa, m_kbcin, m_kbcout;
+ uint8_t m_sysctl, m_pa, m_kbcin, m_kbcout;
bool m_kbcibf, m_kbdata, m_i86_halt, m_i86_halt_perm;
+ DECLARE_READ8_MEMBER(keyboard_r);
+ DECLARE_WRITE8_MEMBER(keyboard_w);
DECLARE_READ8_MEMBER(pa_r);
DECLARE_WRITE8_MEMBER(pb_w);
DECLARE_READ8_MEMBER(kbcdata_r);
DECLARE_WRITE8_MEMBER(kbcdata_w);
DECLARE_WRITE_LINE_MEMBER(kbcin_w);
+ DECLARE_WRITE_LINE_MEMBER(dma_hrq_w);
DECLARE_WRITE_LINE_MEMBER(int_w);
DECLARE_WRITE_LINE_MEMBER(halt_i86_w);
DECLARE_FLOPPY_FORMATS( floppy_formats );
@@ -130,44 +74,9 @@ private:
void m24_map(address_map &map);
};
-void m24_state::machine_start()
-{
- m_maincpu->space(AS_PROGRAM).install_ram(0, m_ram->size() - 1, m_ram->pointer());
-
- std::fill_n(&m_dma_segment[0], 4, 0);
- m_dma_active = 0;
- m_tc = false;
- m_dreq0_ck = true;
-
- m_ctrlport_a = 0;
- m_ctrlport_b = 0;
-
- m_87int = false;
- m_chck_active = false;
- m_nmi_enable = false;
-
- save_item(NAME(m_dma_segment));
- save_item(NAME(m_dma_active));
- save_item(NAME(m_tc));
- save_item(NAME(m_dreq0_ck));
- save_item(NAME(m_ctrlport_a));
- save_item(NAME(m_ctrlport_b));
- save_item(NAME(m_87int));
- save_item(NAME(m_chck_active));
- save_item(NAME(m_nmi_enable));
- save_item(NAME(m_pa));
- save_item(NAME(m_kbcin));
- save_item(NAME(m_kbcout));
- save_item(NAME(m_kbcibf));
- save_item(NAME(m_kbdata));
- save_item(NAME(m_i86_halt));
- save_item(NAME(m_i86_halt_perm));
-}
-
void m24_state::machine_reset()
{
- ctrlport_a_w(0);
- nmi_enable_w(0);
+ m_sysctl = 0;
m_pa = 0x40;
m_kbcibf = false;
m_kbdata = true;
@@ -177,218 +86,49 @@ void m24_state::machine_reset()
m_z8000_apb->halt_w(ASSERT_LINE);
}
-void m24_state::dma_segment_w(offs_t offset, u8 data)
-{
- m_dma_segment[offset] = data & 0x0f;
-}
-
-WRITE_LINE_MEMBER(m24_state::dma_hrq_w)
-{
- if(!m_i86_halt)
- m_maincpu->set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
- if(m_z8000_apb && !m_z8000_apb->halted())
- m_z8000_apb->halt_w(state ? ASSERT_LINE : CLEAR_LINE);
-
- /* Assert HLDA */
- m_dmac->hack_w(state);
-}
-
-u8 m24_state::dma_memory_read(offs_t offset)
+READ8_MEMBER(m24_state::keyboard_r)
{
- const int seg = (BIT(m_dma_active, 2) ? 0 : 2) | (BIT(m_dma_active, 3) ? 0 : 1);
- return m_maincpu->space(AS_PROGRAM).read_byte(offset | u32(m_dma_segment[seg]) << 16);
-}
-
-void m24_state::dma_memory_write(offs_t offset, u8 data)
-{
- const int seg = (BIT(m_dma_active, 2) ? 0 : 2) | (BIT(m_dma_active, 3) ? 0 : 1);
- m_maincpu->space(AS_PROGRAM).write_byte(offset | u32(m_dma_segment[seg]) << 16, data);
-}
-
-template <int Channel>
-u8 m24_state::dma_io_read(offs_t offset)
-{
- return m_isabus->dack_r(Channel);
-}
-
-template <int Channel>
-void m24_state::dma_io_write(offs_t offset, u8 data)
-{
- m_isabus->dack_w(Channel, data);
-}
-
-template <int Channel>
-WRITE_LINE_MEMBER(m24_state::dma_dack_w)
-{
- m_isabus->dack_line_w(Channel, state);
-
- if (!state)
- {
- m_dma_active |= 1 << Channel;
- if (Channel == 0)
- m_dmac->dreq0_w(0);
- if (m_tc)
- m_isabus->eop_w(Channel, ASSERT_LINE);
- }
- else
+ switch(offset)
{
- m_dma_active &= ~(1 << Channel);
- if (m_tc)
- m_isabus->eop_w(Channel, CLEAR_LINE);
+ case 0:
+ m_pa |= 0x40;
+ m_mb->m_pic8259->ir1_w(0);
+ return m_kbcout;
+ case 1:
+ return m_sysctl;
+ case 2:
+ return 0;
+ case 4:
+ return (m_kbcibf ? 2 : 0) | ((m_pa & 0x40) ? 0 : 1);
}
+ return 0xff;
}
-WRITE_LINE_MEMBER(m24_state::dma_tc_w)
-{
- m_tc = (state == ASSERT_LINE);
- for (int channel = 0; channel < 4; channel++)
- if (BIT(m_dma_active, channel))
- m_isabus->eop_w(channel, state);
-}
-
-WRITE_LINE_MEMBER(m24_state::dreq0_ck_w)
+WRITE8_MEMBER(m24_state::keyboard_w)
{
- if (state && !m_dreq0_ck && !BIT(m_dma_active, 0))
- m_dmac->dreq0_w(1);
-
- m_dreq0_ck = state;
-}
-
-WRITE_LINE_MEMBER(m24_state::speaker_ck_w)
-{
- if (state)
- m_ctrlport_b |= 0x20;
- else
- m_ctrlport_b &= 0xdf;
-
- update_speaker();
-}
-
-void m24_state::update_speaker()
-{
- if (BIT(m_ctrlport_a, 1) && BIT(m_ctrlport_b, 5))
- {
- m_speaker->level_w(1);
- m_ctrlport_b &= 0xef;
- }
- else
+ switch(offset)
{
- m_speaker->level_w(0);
- m_ctrlport_b |= 0x10;
+ case 0:
+ m_kbc->set_input_line(TMS7000_INT1_LINE, ASSERT_LINE);
+ m_kbcibf = true;
+ m_kbcin = data;
+ break;
+ case 1:
+ m_sysctl = data;
+ m_mb->m_pit8253->write_gate2(BIT(data, 0));
+ m_mb->pc_speaker_set_spkrdata(BIT(data, 1));
+ if(BIT(data, 6))
+ m_pa |= 4;
+ else
+ m_pa &= ~4;
+ break;
+ case 5:
+ m_maincpu->set_input_line(INPUT_LINE_HALT, (data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
+ m_i86_halt = true;
+ m_i86_halt_perm = true;
}
}
-u8 m24_state::keyboard_data_r()
-{
- if (!machine().side_effects_disabled())
- {
- m_pa |= 0x40;
- m_pic->ir1_w(0);
- }
- return m_kbcout;
-}
-
-u8 m24_state::keyboard_status_r()
-{
- return (m_kbcibf ? 2 : 0) | ((m_pa & 0x40) ? 0 : 1);
-}
-
-void m24_state::keyboard_data_w(u8 data)
-{
- m_kbc->set_input_line(TMS7000_INT1_LINE, ASSERT_LINE);
- m_kbcibf = true;
- m_kbcin = data;
-}
-
-void m24_state::ctrlport_a_w(u8 data)
-{
- const bool spkrdata_en_dis = BIT(data ^ m_ctrlport_a, 1);
- const bool iochk_en_dis = BIT(data ^ m_ctrlport_a, 4);
-
- m_pit->write_gate2(BIT(data, 0));
-
- if (BIT(m_ctrlport_a, 4) && !m_chck_active)
- m_ctrlport_b &= 0xbf;
-
- if (BIT(data, 6))
- m_pa |= 4;
- else
- m_pa &= ~4;
-
- m_ctrlport_a = data;
-
- if (spkrdata_en_dis)
- update_speaker();
- if (iochk_en_dis)
- update_nmi();
-}
-
-u8 m24_state::ctrlport_a_r()
-{
- return m_ctrlport_a;
-}
-
-u8 m24_state::ctrlport_b_r()
-{
- // Bit 0 = NC
- // Bit 1 = SW4 (8087 present)
- // Bit 2 = ~RI1
- // Bit 3 = ~DSR1
- // Bit 4 = OUT2 (8253)
- // Bit 5 = SPKR
- // Bit 6 = IOCHK
- // Bit 7 = MBMERR (MRD parity check)
-
- if (BIT(m_dsw0->read(), 4))
- m_ctrlport_b |= 0x02;
- else
- m_ctrlport_b &= 0xfd;
-
- return m_ctrlport_b;
-}
-
-void m24_state::alt_w(u8 data)
-{
- m_maincpu->set_input_line(INPUT_LINE_HALT, (data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
- m_i86_halt = true;
- m_i86_halt_perm = true;
-}
-
-WRITE_LINE_MEMBER(m24_state::chck_w)
-{
- m_chck_active = (state == 0);
- if (m_chck_active)
- {
- if (!BIT(m_ctrlport_b, 6))
- {
- m_ctrlport_b |= 0x40;
- update_nmi();
- }
- }
- else if (BIT(m_ctrlport_a, 4))
- m_ctrlport_b &= 0xbf;
-}
-
-WRITE_LINE_MEMBER(m24_state::int87_w)
-{
- m_87int = state;
- update_nmi();
-}
-
-void m24_state::nmi_enable_w(u8 data)
-{
- m_nmi_enable = BIT(data, 7);
- update_nmi();
-}
-
-void m24_state::update_nmi()
-{
- if (m_nmi_enable && ((m_87int && BIT(m_dsw0->read(), 4)) || (BIT(m_ctrlport_b, 6) && !BIT(m_ctrlport_a, 4))))
- m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
- else
- m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
-}
-
READ8_MEMBER(m24_state::pa_r)
{
return m_pa & (m_kbdata ? 0xff : 0xfd);
@@ -411,7 +151,7 @@ READ8_MEMBER(m24_state::kbcdata_r)
WRITE8_MEMBER(m24_state::kbcdata_w)
{
m_pa &= ~0x40;
- m_pic->ir1_w(1);
+ m_mb->m_pic8259->ir1_w(1);
m_kbcout = data;
}
@@ -420,6 +160,17 @@ WRITE_LINE_MEMBER(m24_state::kbcin_w)
m_kbdata = state;
}
+WRITE_LINE_MEMBER(m24_state::dma_hrq_w)
+{
+ if(!m_i86_halt)
+ m_maincpu->set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
+ if(m_z8000_apb && !m_z8000_apb->halted())
+ m_z8000_apb->halt_w(state ? ASSERT_LINE : CLEAR_LINE);
+
+ /* Assert HLDA */
+ m_mb->m_dma8237->hack_w(state);
+}
+
WRITE_LINE_MEMBER(m24_state::int_w)
{
if(!m_i86_halt)
@@ -445,18 +196,10 @@ void m24_state::m24_map(address_map &map)
void m24_state::m24_io(address_map &map)
{
map.unmap_value_high();
- map(0x0000, 0x000f).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write));
- map(0x0020, 0x0021).mirror(0xe).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
- map(0x0040, 0x0043).mirror(0xc).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
- map(0x0060, 0x0060).rw(FUNC(m24_state::keyboard_data_r), FUNC(m24_state::keyboard_data_w));
- map(0x0061, 0x0061).rw(FUNC(m24_state::ctrlport_a_r), FUNC(m24_state::ctrlport_a_w));
- map(0x0062, 0x0062).r(FUNC(m24_state::ctrlport_b_r));
- map(0x0064, 0x0064).r(FUNC(m24_state::keyboard_status_r));
- map(0x0065, 0x0065).w(FUNC(m24_state::alt_w));
+ map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map));
+ map(0x0060, 0x0065).rw(FUNC(m24_state::keyboard_r), FUNC(m24_state::keyboard_w));
map(0x0066, 0x0067).portr("DSW0");
map(0x0070, 0x007f).rw("mm58174an", FUNC(mm58274c_device::read), FUNC(mm58274c_device::write));
- map(0x0080, 0x0083).mirror(0xc).w(FUNC(m24_state::dma_segment_w));
- map(0x00a0, 0x00a1).mirror(0xe).w(FUNC(m24_state::nmi_enable_w));
map(0x80c1, 0x80c1).rw(m_z8000_apb, FUNC(m24_z8000_device::handshake_r), FUNC(m24_z8000_device::handshake_w));
}
@@ -521,79 +264,30 @@ void m24_state::cfg_m20_format(device_t *device)
device->subdevice<floppy_connector>("fdc:1")->set_formats(m24_state::floppy_formats);
}
-void m24_state::olivetti(machine_config &config)
-{
+MACHINE_CONFIG_START(m24_state::olivetti)
/* basic machine hardware */
- I8086(config, m_maincpu, 24_MHz_XTAL / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &m24_state::m24_map);
- m_maincpu->set_addrmap(AS_IO, &m24_state::m24_io);
- m_maincpu->set_irq_acknowledge_callback("pic", FUNC(pic8259_device::inta_cb));
- m_maincpu->esc_opcode_handler().set("ndp", FUNC(i8087_device::insn_w));
- m_maincpu->esc_data_handler().set("ndp", FUNC(i8087_device::addr_w));
-
- i8087_device &i8087(I8087(config, "ndp", 24_MHz_XTAL / 3));
- i8087.set_space_86(m_maincpu, AS_PROGRAM);
- i8087.irq().set(FUNC(m24_state::int87_w));
- i8087.busy().set_inputline(m_maincpu, INPUT_LINE_TEST);
-
- AM9517A(config, m_dmac, 24_MHz_XTAL / 6); // 8237A-4
- m_dmac->out_hreq_callback().set(FUNC(m24_state::dma_hrq_w));
- m_dmac->in_memr_callback().set(FUNC(m24_state::dma_memory_read));
- m_dmac->out_memw_callback().set(FUNC(m24_state::dma_memory_write));
- m_dmac->in_ior_callback<1>().set(FUNC(m24_state::dma_io_read<1>));
- m_dmac->in_ior_callback<2>().set(FUNC(m24_state::dma_io_read<2>));
- m_dmac->in_ior_callback<3>().set(FUNC(m24_state::dma_io_read<3>));
- m_dmac->out_iow_callback<1>().set(FUNC(m24_state::dma_io_write<1>));
- m_dmac->out_iow_callback<2>().set(FUNC(m24_state::dma_io_write<2>));
- m_dmac->out_iow_callback<3>().set(FUNC(m24_state::dma_io_write<3>));
- m_dmac->out_dack_callback<0>().set(FUNC(m24_state::dma_dack_w<0>));
- m_dmac->out_dack_callback<1>().set(FUNC(m24_state::dma_dack_w<1>));
- m_dmac->out_dack_callback<2>().set(FUNC(m24_state::dma_dack_w<2>));
- m_dmac->out_dack_callback<3>().set(FUNC(m24_state::dma_dack_w<3>));
- m_dmac->out_eop_callback().set(FUNC(m24_state::dma_tc_w));
-
- PIC8259(config, m_pic);
- m_pic->in_sp_callback().set_constant(1);
- m_pic->out_int_callback().set(FUNC(m24_state::int_w));
-
- PIT8253(config, m_pit); // 8253-5
- m_pit->set_clk<0>(3.6864_MHz_XTAL / 3); // divided by LS175 at 8T
- m_pit->set_clk<1>(3.6864_MHz_XTAL / 3);
- m_pit->set_clk<2>(3.6864_MHz_XTAL / 3);
- m_pit->out_handler<0>().set(m_pic, FUNC(pic8259_device::ir0_w));
- m_pit->out_handler<1>().set(FUNC(m24_state::dreq0_ck_w));
- m_pit->out_handler<2>().set(FUNC(m24_state::speaker_ck_w));
-
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
-
- ISA8(config, m_isabus, 24_MHz_XTAL / 6);
- m_isabus->set_memspace(m_maincpu, AS_PROGRAM);
- m_isabus->set_iospace(m_maincpu, AS_IO);
- m_isabus->irq2_callback().set(m_pic, FUNC(pic8259_device::ir2_w));
- m_isabus->irq3_callback().set(m_pic, FUNC(pic8259_device::ir3_w));
- m_isabus->irq4_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
- m_isabus->irq5_callback().set(m_pic, FUNC(pic8259_device::ir5_w));
- m_isabus->irq6_callback().set(m_pic, FUNC(pic8259_device::ir6_w));
- m_isabus->irq7_callback().set(m_pic, FUNC(pic8259_device::ir7_w));
- m_isabus->drq1_callback().set(m_dmac, FUNC(am9517a_device::dreq1_w));
- m_isabus->drq2_callback().set(m_dmac, FUNC(am9517a_device::dreq2_w));
- m_isabus->drq3_callback().set(m_dmac, FUNC(am9517a_device::dreq3_w));
- m_isabus->iochck_callback().set(FUNC(m24_state::chck_w));
-
- ISA8_SLOT(config, "mb1", 0, m_isabus, pc_isa8_cards, "cga_m24", true);
- ISA8_SLOT(config, "mb2", 0, m_isabus, pc_isa8_cards, "fdc_xt", true).set_option_machine_config("fdc_xt", cfg_m20_format);
- ISA8_SLOT(config, "mb3", 0, m_isabus, pc_isa8_cards, "lpt", true);
- ISA8_SLOT(config, "mb4", 0, m_isabus, pc_isa8_cards, "com", true);
-
- ISA8_SLOT(config, "isa1", 0, m_isabus, pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa2", 0, m_isabus, pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa3", 0, m_isabus, pc_isa8_cards, nullptr, false);
-
- // 2 banks of 16 64Kx1 or 256Kx1 DRAMs on motherboard
- RAM(config, m_ram).set_default_size("640K").set_extra_options("128K, 256K, 512K");
-
- TMS7000(config, m_kbc, 24_MHz_XTAL / 6);
+ MCFG_DEVICE_ADD("maincpu", I8086, XTAL(8'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(m24_map)
+ MCFG_DEVICE_IO_MAP(m24_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
+
+ MCFG_PCNOPPI_MOTHERBOARD_ADD("mb", "maincpu")
+
+ // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("mb1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "cga_m24", true)
+ MCFG_DEVICE_ADD("mb2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", true)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc_xt", cfg_m20_format)
+ MCFG_DEVICE_ADD("mb3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "lpt", true)
+ MCFG_DEVICE_ADD("mb4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", true)
+
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+
+ /* internal ram */
+ RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
+
+ TMS7000(config, m_kbc, XTAL(4'000'000));
m_kbc->set_addrmap(AS_PROGRAM, &m24_state::kbc_map);
m_kbc->in_porta().set(FUNC(m24_state::pa_r));
m_kbc->out_portb().set(FUNC(m24_state::pb_w));
@@ -601,17 +295,19 @@ void m24_state::olivetti(machine_config &config)
M24_KEYBOARD(config, m_keyboard, 0);
m_keyboard->out_data_handler().set(FUNC(m24_state::kbcin_w));
- mm58274c_device &mm58174an(MM58274C(config, "mm58174an", 32.768_kHz_XTAL));
- // this is all guess
- mm58174an.set_mode24(1); // ?
- mm58174an.set_day1(1); // ?
+ MCFG_DEVICE_ADD("mm58174an", MM58274C, 0)
+ MCFG_MM58274C_MODE24(1) // ?
+ MCFG_MM58274C_DAY1(1) // ?
- M24_Z8000(config, m_z8000_apb, 0); // TODO: make this a slot device (uses custom bus connector)
+ M24_Z8000(config, m_z8000_apb, 0);
m_z8000_apb->halt_callback().set(FUNC(m24_state::halt_i86_w));
+ subdevice<am9517a_device>("mb:dma8237")->out_hreq_callback().set(FUNC(m24_state::dma_hrq_w));
+ subdevice<pic8259_device>("mb:pic8259")->out_int_callback().set(FUNC(m24_state::int_w));
+
/* software lists */
- SOFTWARE_LIST(config, "disk_list").set_original("ibm5150");
-}
+ MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
+MACHINE_CONFIG_END
ROM_START( m24 )
ROM_REGION16_LE(0x8000,"bios", 0)
diff --git a/src/mame/drivers/m3.cpp b/src/mame/drivers/m3.cpp
index f875c49b9c2..265b6c67f07 100644
--- a/src/mame/drivers/m3.cpp
+++ b/src/mame/drivers/m3.cpp
@@ -115,20 +115,19 @@ void m3_state::machine_reset()
m_maincpu->set_pc(0xf000);
}
-void m3_state::m3(machine_config &config)
-{
- Z80(config, m_maincpu, 2'000'000); // no idea of clock.
- m_maincpu->set_addrmap(AS_PROGRAM, &m3_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &m3_state::io_map);
+MACHINE_CONFIG_START(m3_state::m3)
+ MCFG_DEVICE_ADD("maincpu", Z80, 2'000'000) // no idea of clock.
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not correct
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
- screen.set_size(640, 480);
- screen.set_visarea(0, 639, 0, 479);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_f4disp);
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not correct
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_f4disp)
PALETTE(config, m_palette, palette_device::MONOCHROME);
/* Devices */
@@ -137,7 +136,7 @@ void m3_state::m3(machine_config &config)
crtc.set_show_border_area(false);
crtc.set_char_width(7);
crtc.set_update_row_callback(FUNC(m3_state::crtc_update_row), this);
-}
+MACHINE_CONFIG_END
ROM_START( m3 )
ROM_REGION( 0x3000, "roms", 0 )
diff --git a/src/mame/drivers/m5.cpp b/src/mame/drivers/m5.cpp
index 74ec56eb5ac..ecef78735a7 100644
--- a/src/mame/drivers/m5.cpp
+++ b/src/mame/drivers/m5.cpp
@@ -718,8 +718,9 @@ void m5_state::m5_io(address_map &map)
map.unmap_value_high();
map.global_mask(0xff);
map(0x00, 0x03).mirror(0x0c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
- map(0x10, 0x11).mirror(0x0e).rw("tms9928a", FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
- map(0x20, 0x20).mirror(0x0f).w(SN76489AN_TAG, FUNC(sn76489a_device::write));
+ map(0x10, 0x10).mirror(0x0e).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0x11, 0x11).mirror(0x0e).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
+ map(0x20, 0x20).mirror(0x0f).w(SN76489AN_TAG, FUNC(sn76489a_device::command_w));
map(0x30, 0x30).mirror(0x08).portr("Y0").w(FUNC(m5_state::mem64KBF_w)); // 64KBF paging
map(0x31, 0x31).mirror(0x08).portr("Y1");
map(0x32, 0x32).mirror(0x08).portr("Y2");
@@ -1039,8 +1040,9 @@ void brno_state::brno_io(address_map &map)
map.unmap_value_high();
map.global_mask(0xff);
map(0x00, 0x03).mirror(0x0c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
- map(0x10, 0x11).mirror(0x0e).rw("tms9928a", FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
- map(0x20, 0x20).mirror(0x0f).w(SN76489AN_TAG, FUNC(sn76489a_device::write));
+ map(0x10, 0x10).mirror(0x0e).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0x11, 0x11).mirror(0x0e).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
+ map(0x20, 0x20).mirror(0x0f).w(SN76489AN_TAG, FUNC(sn76489a_device::command_w));
map(0x30, 0x30).portr("Y0");
map(0x31, 0x31).portr("Y1");
map(0x32, 0x32).portr("Y2");
@@ -1399,24 +1401,24 @@ void brno_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( m5 )
+// MACHINE_CONFIG( m5 )
//-------------------------------------------------
-void m5_state::m5(machine_config &config)
-{
+MACHINE_CONFIG_START(m5_state::m5)
// basic machine hardware
Z80(config, m_maincpu, 14.318181_MHz_XTAL / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &m5_state::m5_mem);
m_maincpu->set_addrmap(AS_IO, &m5_state::m5_io);
m_maincpu->set_daisy_config(m5_daisy_chain);
- Z80(config, m_fd5cpu, 14.318181_MHz_XTAL / 4);
- m_fd5cpu->set_addrmap(AS_PROGRAM, &m5_state::fd5_mem);
- m_fd5cpu->set_addrmap(AS_IO, &m5_state::fd5_io);
+ MCFG_DEVICE_ADD(m_fd5cpu, Z80, 14.318181_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(fd5_mem)
+ MCFG_DEVICE_IO_MAP(fd5_io)
// sound hardware
SPEAKER(config, "mono").front_center();
- SN76489A(config, SN76489AN_TAG, 14.318181_MHz_XTAL / 4).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD(SN76489AN_TAG, SN76489A, 14.318181_MHz_XTAL / 4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
// devices
Z80CTC(config, m_ctc, 14.318181_MHz_XTAL / 4);
@@ -1424,16 +1426,15 @@ void m5_state::m5(machine_config &config)
// CK0 = EXINT, CK1 = GND, CK2 = TCK, CK3 = VDP INT
// ZC2 = EXCLK
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(m5_state::write_centronics_busy));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, m5_state, write_centronics_busy))
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(sordm5_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY);
- m_cassette->set_interface("m5_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(sordm5_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY)
+ MCFG_CASSETTE_INTERFACE("m5_cass")
I8255(config, m_ppi);
m_ppi->in_pa_callback().set(FUNC(m5_state::ppi_pa_r));
@@ -1444,25 +1445,25 @@ void m5_state::m5(machine_config &config)
UPD765A(config, m_fdc, 8'000'000, true, true);
m_fdc->intrq_wr_callback().set_inputline(m_fd5cpu, INPUT_LINE_IRQ0);
- FLOPPY_CONNECTOR(config, UPD765_TAG ":0", m5_floppies, "525dd", m5_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", m5_floppies, "525dd", m5_state::floppy_formats)
// cartridge
- M5_CART_SLOT(config, m_cart1, m5_cart, nullptr);
- M5_CART_SLOT(config, m_cart2, m5_cart, nullptr);
+ MCFG_M5_CARTRIDGE_ADD("cartslot1", m5_cart, nullptr)
+ MCFG_M5_CARTRIDGE_ADD("cartslot2", m5_cart, nullptr)
// software lists
- SOFTWARE_LIST(config, "cart_list").set_original("m5_cart");
- SOFTWARE_LIST(config, "cass_list").set_original("m5_cass");
- //SOFTWARE_LIST(config, "flop_list").set_original("m5_flop");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "m5_cart")
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "m5_cass")
+ //MCFG_SOFTWARE_LIST_ADD("flop_list", "m5_flop")
// internal ram
//68K is not possible, 'cos internal ram always overlays any expansion memory in that area
RAM(config, RAM_TAG).set_default_size("4K").set_extra_options("36K,64K");
-}
+MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( ntsc )
+// MACHINE_CONFIG_START( ntsc )
//-------------------------------------------------
void m5_state::ntsc(machine_config &config)
@@ -1478,7 +1479,7 @@ void m5_state::ntsc(machine_config &config)
//-------------------------------------------------
-// machine_config( pal )
+// MACHINE_CONFIG_START( pal )
//-------------------------------------------------
void m5_state::pal(machine_config &config)
@@ -1493,12 +1494,11 @@ void m5_state::pal(machine_config &config)
}
//-------------------------------------------------
-// machine_config( m5p_brno )
+// MACHINE_CONFIG( m5p_brno )
//-------------------------------------------------
-void brno_state::brno(machine_config &config)
-{
+MACHINE_CONFIG_START(brno_state::brno)
m5(config);
// basic machine hardware
@@ -1520,16 +1520,19 @@ void brno_state::brno(machine_config &config)
// floppy
WD2797(config, m_fdc, 1_MHz_XTAL);
- FLOPPY_CONNECTOR(config, WD2797_TAG":0", brno_floppies, "35hd", brno_state::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, WD2797_TAG":1", brno_floppies, "35hd", brno_state::floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":0", brno_floppies, "35hd", brno_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":1", brno_floppies, "35hd", brno_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
// only one floppy drive
- //config.device_remove(WD2797_TAG":1");
+ //MCFG_DEVICE_REMOVE(WD2797_TAG":1")
//MCFG_SNAPSHOT_ADD("snapshot", brno_state, brno, "rmd", 0)
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("m5_flop");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list","m5_flop")
+
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/m52.cpp b/src/mame/drivers/m52.cpp
index a441b45c69a..999b58f8210 100644
--- a/src/mame/drivers/m52.cpp
+++ b/src/mame/drivers/m52.cpp
@@ -398,13 +398,13 @@ void m52_state::machine_reset()
m_bgcontrol = 0;
}
-void m52_state::m52(machine_config &config)
-{
+MACHINE_CONFIG_START(m52_state::m52)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK / 6);
- m_maincpu->set_addrmap(AS_PROGRAM, &m52_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &m52_state::main_portmap);
- m_maincpu->set_vblank_int("screen", FUNC(m52_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK / 6)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", m52_state, irq0_line_hold)
/* video hardware */
PALETTE(config, m_sp_palette).set_entries(256, 32);
@@ -416,24 +416,27 @@ void m52_state::m52(machine_config &config)
PALETTE(config, m_bg_palette).set_entries(3 * 4, 32);
GFXDECODE(config, m_bg_gfxdecode, m_bg_palette, gfx_m52_bg);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MASTER_CLOCK / 3, 384, 136, 376, 282, 22, 274);
- m_screen->set_screen_update(FUNC(m52_state::screen_update_m52));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK / 3, 384, 136, 376, 282, 22, 274)
+ MCFG_SCREEN_UPDATE_DRIVER(m52_state, screen_update_m52)
/* sound hardware */
//m52_sound_c_audio(config);
- IREM_M52_SOUNDC_AUDIO(config, "irem_audio", 0);
-}
+ MCFG_DEVICE_ADD("irem_audio", IREM_M52_SOUNDC_AUDIO, 0)
+MACHINE_CONFIG_END
-void m52_alpha1v_state::alpha1v(machine_config &config)
-{
+
+MACHINE_CONFIG_START(m52_alpha1v_state::alpha1v)
m52(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &m52_alpha1v_state::alpha1v_map);
- m_screen->set_raw(MASTER_CLOCK / 3, 384, 136, 376, 282, 16, 272);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(alpha1v_map)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK / 3, 384, 136, 376, 282, 16, 272)
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/m57.cpp b/src/mame/drivers/m57.cpp
index 7377b320cef..d35f8a8eb30 100644
--- a/src/mame/drivers/m57.cpp
+++ b/src/mame/drivers/m57.cpp
@@ -229,31 +229,32 @@ GFXDECODE_END
*
*************************************/
-void m57_state::m57(machine_config &config)
-{
+MACHINE_CONFIG_START(m57_state::m57)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'432'000)/6); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &m57_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(m57_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'432'000)/6) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", m57_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(1790) /* accurate frequency, measured on a Moon Patrol board, is 56.75Hz. */);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1790) /* accurate frequency, measured on a Moon Patrol board, is 56.75Hz. */)
/* the Lode Runner manual (similar but different hardware) */
/* talks about 55Hz and 1790ms vblank duration. */
- screen.set_size(32*8, 32*8);
- screen.set_visarea(1*8, 31*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(m57_state::screen_update_m57));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(m57_state, screen_update_m57)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_m57);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_m57)
PALETTE(config, m_palette, FUNC(m57_state::m57_palette), 32*8+32*8, 256+16);
/* sound hardware */
//m52_sound_c_audio(config);
- IREM_M52_SOUNDC_AUDIO(config, "irem_audio", 0);
-}
+ MCFG_DEVICE_ADD("irem_audio", IREM_M52_SOUNDC_AUDIO, 0)
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/m58.cpp b/src/mame/drivers/m58.cpp
index fd0507bc4f9..991ecff9372 100644
--- a/src/mame/drivers/m58.cpp
+++ b/src/mame/drivers/m58.cpp
@@ -192,25 +192,25 @@ GFXDECODE_END
*
*************************************/
-void m58_state::yard(machine_config &config)
-{
+MACHINE_CONFIG_START(m58_state::yard)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/3/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &m58_state::yard_map);
- m_maincpu->set_vblank_int("screen", FUNC(m58_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/3/2)
+ MCFG_DEVICE_PROGRAM_MAP(yard_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", m58_state, irq0_line_hold)
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_yard);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_yard)
PALETTE(config, m_palette, FUNC(m58_state::m58_palette), 256+256+256, 256+256+16);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MASTER_CLOCK/3, 384, 0, 256, 282, 42, 266);
- m_screen->set_screen_update(FUNC(m58_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 256, 282, 42, 266)
+ MCFG_SCREEN_UPDATE_DRIVER(m58_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
/* sound hardware */
- IREM_M52_LARGE_AUDIO(config, "irem_audio", 0);
-}
+ MCFG_DEVICE_ADD("irem_audio", IREM_M52_LARGE_AUDIO, 0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/m62.cpp b/src/mame/drivers/m62.cpp
index 1b491be7ab0..9c12b6e6ae1 100644
--- a/src/mame/drivers/m62.cpp
+++ b/src/mame/drivers/m62.cpp
@@ -965,220 +965,231 @@ void m62_state::machine_reset()
m_bankcontrol[1] = 0;
}
-void m62_state::ldrun(machine_config &config)
-{
+MACHINE_CONFIG_START(m62_state::ldrun)
/* basic machine hardware */
- Z80(config, m_maincpu, 24000000/6);
- m_maincpu->set_addrmap(AS_PROGRAM, &m62_state::ldrun_map);
- m_maincpu->set_addrmap(AS_IO, &m62_state::kungfum_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(m62_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 24000000/6)
+ MCFG_DEVICE_PROGRAM_MAP(ldrun_map)
+ MCFG_DEVICE_IO_MAP(kungfum_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", m62_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(55);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(1790) /* frames per second and vblank duration from the Lode Runner manual */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea((64*8-384)/2, 64*8-(64*8-384)/2-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(m62_state::screen_update_ldrun));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(55)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1790) /* frames per second and vblank duration from the Lode Runner manual */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA((64*8-384)/2, 64*8-(64*8-384)/2-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_ldrun)
- GFXDECODE(config, m_spr_decode, m_spr_palette, gfx_m62_sprites);
- GFXDECODE(config, m_chr_decode, m_chr_palette, gfx_m62_tiles);
+ MCFG_DEVICE_ADD(m_spr_decode, GFXDECODE, m_spr_palette, gfx_m62_sprites)
+ MCFG_DEVICE_ADD(m_chr_decode, GFXDECODE, m_chr_palette, gfx_m62_tiles)
PALETTE(config, m_chr_palette, FUNC(m62_state::m62_chr), 256);
PALETTE(config, m_spr_palette, FUNC(m62_state::m62_spr), 256);
/* sound hardware */
//m62_audio(config);
- IREM_M62_AUDIO(config, m_audio, 0);
+ MCFG_DEVICE_ADD("irem_audio", IREM_M62_AUDIO, 0)
-}
+MACHINE_CONFIG_END
-void m62_state::kungfum(machine_config &config)
-{
+MACHINE_CONFIG_START(m62_state::kungfum)
ldrun(config);
/* basic machine hardware */
- m_maincpu->set_clock(18432000/6);
- m_maincpu->set_addrmap(AS_PROGRAM, &m62_state::kungfum_map);
- m_maincpu->set_addrmap(AS_IO, &m62_state::kungfum_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(18432000/6)
+ MCFG_DEVICE_PROGRAM_MAP(kungfum_map)
+ MCFG_DEVICE_IO_MAP(kungfum_io_map)
/* video hardware */
- subdevice<screen_device>("screen")->set_visarea((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(m62_state::screen_update_kungfum));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_kungfum)
MCFG_VIDEO_START_OVERRIDE(m62_state,kungfum)
-}
+MACHINE_CONFIG_END
-void m62_state::battroad(machine_config &config)
-{
+MACHINE_CONFIG_START(m62_state::battroad)
ldrun(config);
/* basic machine hardware */
- m_maincpu->set_clock(18432000/6);
- m_maincpu->set_addrmap(AS_PROGRAM, &m62_state::battroad_map);
- m_maincpu->set_addrmap(AS_IO, &m62_state::battroad_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(18432000/6)
+ MCFG_DEVICE_PROGRAM_MAP(battroad_map)
+ MCFG_DEVICE_IO_MAP(battroad_io_map)
MCFG_MACHINE_START_OVERRIDE(m62_state,battroad)
/* video hardware */
- subdevice<screen_device>("screen")->set_visarea((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(m62_state::screen_update_battroad));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_battroad)
- GFXDECODE(config, m_fg_decode, m_fg_palette, gfx_m62_fg_battroad);
+ MCFG_DEVICE_ADD(m_fg_decode, GFXDECODE, m_fg_palette, gfx_m62_fg_battroad)
PALETTE(config, m_fg_palette, FUNC(m62_state::m62_battroad_fg), 32);
MCFG_VIDEO_START_OVERRIDE(m62_state,battroad)
-}
+MACHINE_CONFIG_END
-void m62_state::ldrun2(machine_config &config)
-{
+MACHINE_CONFIG_START(m62_state::ldrun2)
ldrun(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &m62_state::ldrun2_map);
- m_maincpu->set_addrmap(AS_IO, &m62_state::ldrun2_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ldrun2_map)
+ MCFG_DEVICE_IO_MAP(ldrun2_io_map)
MCFG_VIDEO_START_OVERRIDE(m62_state,ldrun2)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(m62_state::screen_update_ldrun));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_ldrun)
+MACHINE_CONFIG_END
-void m62_state::ldrun3(machine_config &config)
-{
+MACHINE_CONFIG_START(m62_state::ldrun3)
ldrun(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &m62_state::ldrun3_map);
- m_maincpu->set_addrmap(AS_IO, &m62_state::ldrun3_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ldrun3_map)
+ MCFG_DEVICE_IO_MAP(ldrun3_io_map)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(m62_state,ldrun2)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(m62_state::screen_update_ldrun3));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_ldrun3)
+MACHINE_CONFIG_END
-void m62_state::ldrun4(machine_config &config)
-{
+MACHINE_CONFIG_START(m62_state::ldrun4)
ldrun(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &m62_state::ldrun4_map);
- m_maincpu->set_addrmap(AS_IO, &m62_state::ldrun4_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ldrun4_map)
+ MCFG_DEVICE_IO_MAP(ldrun4_io_map)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(m62_state,ldrun4)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(m62_state::screen_update_ldrun4));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_ldrun4)
+MACHINE_CONFIG_END
-void m62_state::lotlot(machine_config &config)
-{
+MACHINE_CONFIG_START(m62_state::lotlot)
ldrun(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &m62_state::lotlot_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(lotlot_map)
/* video hardware */
- GFXDECODE(config, m_fg_decode, m_fg_palette, gfx_m62_fg_lotlot);
- m_chr_decode->set_info(gfx_m62_tiles_lotlot);
+
+ MCFG_DEVICE_ADD(m_fg_decode, GFXDECODE, m_fg_palette, gfx_m62_fg_lotlot)
+ MCFG_GFXDECODE_MODIFY("chr_decode", gfx_m62_tiles_lotlot)
PALETTE(config, m_fg_palette, FUNC(m62_state::m62_lotlot_fg), 256);
MCFG_VIDEO_START_OVERRIDE(m62_state,lotlot)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(m62_state::screen_update_lotlot));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_lotlot)
+MACHINE_CONFIG_END
-void m62_state::kidniki(machine_config &config)
-{
+MACHINE_CONFIG_START(m62_state::kidniki)
ldrun(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &m62_state::kidniki_map);
- m_maincpu->set_addrmap(AS_IO, &m62_state::kidniki_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(kidniki_map)
+ MCFG_DEVICE_IO_MAP(kidniki_io_map)
/* video hardware */
- GFXDECODE(config, m_fg_decode, m_chr_palette, gfx_m62_fg_kidniki);
+ MCFG_DEVICE_ADD("fg_decode", GFXDECODE, "chr_palette", gfx_m62_fg_kidniki)
MCFG_VIDEO_START_OVERRIDE(m62_state,kidniki)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(m62_state::screen_update_kidniki));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_kidniki)
+MACHINE_CONFIG_END
-void m62_state::spelunkr(machine_config &config)
-{
+MACHINE_CONFIG_START(m62_state::spelunkr)
ldrun(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &m62_state::spelunkr_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(spelunkr_map)
/* video hardware */
- GFXDECODE(config, m_fg_decode, m_chr_palette, gfx_m62_fg_spelunkr);
+ MCFG_DEVICE_ADD("fg_decode", GFXDECODE, "chr_palette", gfx_m62_fg_spelunkr)
MCFG_VIDEO_START_OVERRIDE(m62_state,spelunkr)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(m62_state::screen_update_spelunkr));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_spelunkr)
+MACHINE_CONFIG_END
-void m62_state::spelunk2(machine_config &config)
-{
+MACHINE_CONFIG_START(m62_state::spelunk2)
ldrun(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &m62_state::spelunk2_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(spelunk2_map)
/* video hardware */
- m_chr_decode->set_info(gfx_m62_tiles_spelunk2);
- GFXDECODE(config, m_fg_decode, m_chr_palette, gfx_m62_fg_spelunk2);
+ MCFG_GFXDECODE_MODIFY("chr_decode", gfx_m62_tiles_spelunk2)
+ MCFG_DEVICE_ADD(m_fg_decode, GFXDECODE, m_chr_palette, gfx_m62_fg_spelunk2)
m_chr_palette->set_entries(512);
m_chr_palette->set_init(FUNC(m62_state::spelunk2_palette));
MCFG_VIDEO_START_OVERRIDE(m62_state,spelunk2)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(m62_state::screen_update_spelunk2));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_spelunk2)
+MACHINE_CONFIG_END
-void m62_state::youjyudn(machine_config &config)
-{
+MACHINE_CONFIG_START(m62_state::youjyudn)
ldrun(config);
/* basic machine hardware */
- m_maincpu->set_clock(18432000/6);
- m_maincpu->set_addrmap(AS_PROGRAM, &m62_state::youjyudn_map);
- m_maincpu->set_addrmap(AS_IO, &m62_state::youjyudn_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(18432000/6)
+ MCFG_DEVICE_PROGRAM_MAP(youjyudn_map)
+ MCFG_DEVICE_IO_MAP(youjyudn_io_map)
/* video hardware */
- subdevice<screen_device>("screen")->set_visarea((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(m62_state::screen_update_youjyudn));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_youjyudn)
- m_chr_decode->set_info(gfx_m62_tiles_youjyudn);
- GFXDECODE(config, m_fg_decode, m_chr_palette, gfx_m62_fg_youjyudn);
+ MCFG_GFXDECODE_MODIFY("chr_decode", gfx_m62_tiles_youjyudn)
+ MCFG_DEVICE_ADD("fg_decode", GFXDECODE, "chr_palette", gfx_m62_fg_youjyudn)
MCFG_VIDEO_START_OVERRIDE(m62_state,youjyudn)
-}
+MACHINE_CONFIG_END
-void m62_state::horizon(machine_config &config)
-{
+MACHINE_CONFIG_START(m62_state::horizon)
ldrun(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &m62_state::horizon_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(horizon_map)
/* video hardware */
- subdevice<screen_device>("screen")->set_visarea((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(m62_state::screen_update_horizon));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_horizon)
MCFG_VIDEO_START_OVERRIDE(m62_state,horizon)
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/m63.cpp b/src/mame/drivers/m63.cpp
index cebcc902653..6c2016619e8 100644
--- a/src/mame/drivers/m63.cpp
+++ b/src/mame/drivers/m63.cpp
@@ -413,13 +413,13 @@ WRITE8_MEMBER(m63_state::snd_irq_w)
WRITE8_MEMBER(m63_state::snddata_w)
{
if ((m_p2 & 0xf0) == 0xe0)
- m_ay1->address_w(offset);
+ m_ay1->address_w(space, 0, offset);
else if ((m_p2 & 0xf0) == 0xa0)
- m_ay1->data_w(offset);
+ m_ay1->data_w(space, 0, offset);
else if (m_ay2 != nullptr && (m_p1 & 0xe0) == 0x60)
- m_ay2->address_w(offset);
+ m_ay2->address_w(space, 0, offset);
else if (m_ay2 != nullptr && (m_p1 & 0xe0) == 0x40)
- m_ay2->data_w(offset);
+ m_ay2->data_w(space, 0, offset);
else if ((m_p2 & 0xf0) == 0x70 )
m_sound_status = offset;
}
@@ -755,8 +755,8 @@ INTERRUPT_GEN_MEMBER(m63_state::vblank_irq)
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
-void m63_state::m63(machine_config &config)
-{
+MACHINE_CONFIG_START(m63_state::m63)
+
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(12'000'000)/4); /* 3 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &m63_state::m63_map);
diff --git a/src/mame/drivers/m6805evs.cpp b/src/mame/drivers/m6805evs.cpp
index 0212023cd9a..a7789452380 100644
--- a/src/mame/drivers/m6805evs.cpp
+++ b/src/mame/drivers/m6805evs.cpp
@@ -102,14 +102,13 @@ void m6805evs_state::machine_reset()
{
}
-void m6805evs_state::m6805evs(machine_config &config)
-{
+MACHINE_CONFIG_START(m6805evs_state::m6805evs)
/* basic machine hardware */
- M6805(config, m_maincpu, XTAL(4'000'000));
+ MCFG_DEVICE_ADD("maincpu", M6805, XTAL(4'000'000))
// Needs a 13-bits address bus wide version of the cpu
-// m_maincpu->set_addrmap(AS_PROGRAM, &m6805evs_state::mem_map);
-}
+// MCFG_DEVICE_PROGRAM_MAP(mem_map)
+MACHINE_CONFIG_END
ROM_START(m6805evs)
ROM_REGION(0x2000, "eprom", 0)
diff --git a/src/mame/drivers/m72.cpp b/src/mame/drivers/m72.cpp
index 87a4d16f218..0ce6cad4fc5 100644
--- a/src/mame/drivers/m72.cpp
+++ b/src/mame/drivers/m72.cpp
@@ -310,7 +310,7 @@ TIMER_CALLBACK_MEMBER(m72_state::delayed_ram16_w)
uint16_t mem_mask = (BIT(param, 28) ? 0xff00 : 0x0000) | (BIT(param, 27) ? 0x00ff : 0x0000);
logerror("MB8421/MB8431 left_w(0x%03x, 0x%04x, 0x%04x)\n", offset, val, mem_mask);
- m_dpram->left_w(offset, val, mem_mask);
+ m_dpram->left_w(machine().dummy_space(), offset, val, mem_mask);
}
TIMER_CALLBACK_MEMBER(m72_state::delayed_ram8_w)
@@ -319,9 +319,9 @@ TIMER_CALLBACK_MEMBER(m72_state::delayed_ram8_w)
uint16_t offset = (param >> 9) & 0x07ff;
if (BIT(param, 8))
- m_dpram->right_w(offset, val << 8, 0xff00);
+ m_dpram->right_w(machine().dummy_space(), offset, val << 8, 0xff00);
else
- m_dpram->right_w(offset, val, 0x00ff);
+ m_dpram->right_w(machine().dummy_space(), offset, val, 0x00ff);
}
@@ -337,7 +337,7 @@ WRITE8_MEMBER(m72_state::mcu_data_w)
READ8_MEMBER(m72_state::mcu_data_r)
{
- return (m_dpram->right_r(offset >> 1) >> (BIT(offset, 0) ? 8 : 0)) & 0xff;
+ return (m_dpram->right_r(space, offset >> 1) >> (BIT(offset, 0) ? 8 : 0)) & 0xff;
}
READ8_MEMBER(m72_state::mcu_sample_r)
@@ -1822,12 +1822,13 @@ void m72_state::m72_audio_chips(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.2); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
-void m72_state::m72_base(machine_config &config)
-{
+MACHINE_CONFIG_START(m72_state::m72_base)
+
/* basic machine hardware */
V30(config, m_maincpu, MASTER_CLOCK/2/2); /* 16 MHz external freq (8MHz internal) */
m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::m72_map);
@@ -1917,94 +1918,96 @@ void m72_state::m72_dbreed(machine_config &config)
/****************************************** M81 ***********************************************/
// M81 is closest to M72
-void m72_state::m81_hharry(machine_config &config)
-{
+MACHINE_CONFIG_START(m72_state::m81_hharry)
m72_base(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::hharry_map);
- m_maincpu->set_addrmap(AS_IO, &m72_state::m81_portmap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hharry_map)
+ MCFG_DEVICE_IO_MAP(m81_portmap)
- m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_rom_map);
- m_soundcpu->set_addrmap(AS_IO, &m72_state::rtype2_sound_portmap);
- m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(128*55));
+ MCFG_DEVICE_MODIFY("soundcpu")
+ MCFG_DEVICE_PROGRAM_MAP(sound_rom_map)
+ MCFG_DEVICE_IO_MAP(rtype2_sound_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55)
MCFG_VIDEO_START_OVERRIDE(m72_state,hharry)
- m_screen->set_screen_update(FUNC(m72_state::screen_update_m81));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m81)
+MACHINE_CONFIG_END
-void m72_state::m81_xmultipl(machine_config &config)
-{
+MACHINE_CONFIG_START(m72_state::m81_xmultipl)
m81_hharry(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::xmultipl_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(xmultipl_map)
MCFG_VIDEO_START_OVERRIDE(m72_state,xmultipl) // different offsets
-}
+MACHINE_CONFIG_END
-void m72_state::m81_dbreed(machine_config &config)
-{
+MACHINE_CONFIG_START(m72_state::m81_dbreed)
m81_xmultipl(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::dbreed_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dbreed_map)
+MACHINE_CONFIG_END
/****************************************** M84 ***********************************************/
// M84
-void m72_state::rtype2(machine_config &config)
-{
- /* basic machine hardware */
- V30(config, m_maincpu, MASTER_CLOCK/2/2); /* 16 MHz external freq (8MHz internal) */
- m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::rtype2_map);
- m_maincpu->set_addrmap(AS_IO, &m72_state::m84_portmap);
- m_maincpu->set_irq_acknowledge_callback("upd71059c", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(m72_state::rtype2)
- Z80(config, m_soundcpu, SOUND_CLOCK);
- m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_rom_map);
- m_soundcpu->set_addrmap(AS_IO, &m72_state::rtype2_sound_portmap);
- m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(128*55)); /* clocked by V1? (Vigilante) */
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
+ MCFG_DEVICE_PROGRAM_MAP(rtype2_map)
+ MCFG_DEVICE_IO_MAP(m84_portmap)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb)
+
+ MCFG_DEVICE_ADD(m_soundcpu, Z80, SOUND_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(sound_rom_map)
+ MCFG_DEVICE_IO_MAP(rtype2_sound_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */
/* IRQs are generated by main Z80 and YM2151 */
PIC8259(config, m_upd71059c, 0);
m_upd71059c->out_int_callback().set_inputline(m_maincpu, 0);
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_rtype2);
- PALETTE(config, m_palette).set_entries(512);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rtype2)
+ MCFG_PALETTE_ADD("palette", 512)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256);
- m_screen->set_screen_update(FUNC(m72_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(m72_state,rtype2)
m72_audio_chips(config);
-}
+MACHINE_CONFIG_END
// not m72, different video system (less tiles regions?) (M84? M82?)
-void m72_state::hharryu(machine_config &config)
-{
+MACHINE_CONFIG_START(m72_state::hharryu)
rtype2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::hharryu_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hharryu_map)
MCFG_VIDEO_START_OVERRIDE(m72_state,hharryu)
-}
+MACHINE_CONFIG_END
// M84
-void m72_state::cosmccop(machine_config &config)
-{
- /* basic machine hardware */
- V35(config, m_maincpu, MASTER_CLOCK/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::kengo_map);
- m_maincpu->set_addrmap(AS_IO, &m72_state::m84_v33_portmap);
+MACHINE_CONFIG_START(m72_state::cosmccop)
- Z80(config, m_soundcpu, SOUND_CLOCK);
- m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_rom_map);
- m_soundcpu->set_addrmap(AS_IO, &m72_state::rtype2_sound_portmap);
- m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(128*55)); /* clocked by V1? (Vigilante) */
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", V35,MASTER_CLOCK/2)
+ MCFG_DEVICE_PROGRAM_MAP(kengo_map)
+ MCFG_DEVICE_IO_MAP(m84_v33_portmap)
+
+ MCFG_DEVICE_ADD(m_soundcpu, Z80, SOUND_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(sound_rom_map)
+ MCFG_DEVICE_IO_MAP(rtype2_sound_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */
/* IRQs are generated by main Z80 and YM2151 */
MCFG_MACHINE_START_OVERRIDE(m72_state,kengo)
@@ -2013,18 +2016,18 @@ void m72_state::cosmccop(machine_config &config)
// upd71059c isn't needed because the V35 has its own IRQ controller
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_rtype2);
- PALETTE(config, m_palette).set_entries(512);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rtype2)
+ MCFG_PALETTE_ADD("palette", 512)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256);
- m_screen->set_screen_update(FUNC(m72_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(m72_state,hharryu)
m72_audio_chips(config);
-}
+MACHINE_CONFIG_END
void m72_state::kengo(machine_config &config)
{
@@ -2041,53 +2044,52 @@ M82-A-A as the top board
M82-B-A and as the bottom board
*/
-void m72_state::m82(machine_config &config)
-{
+MACHINE_CONFIG_START(m72_state::m82)
+
/* basic machine hardware */
- V30(config, m_maincpu, MASTER_CLOCK/2/2); /* 16 MHz external freq (8MHz internal) */
- m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::m82_map);
- m_maincpu->set_addrmap(AS_IO, &m72_state::m82_portmap);
- m_maincpu->set_irq_acknowledge_callback("upd71059c", FUNC(pic8259_device::inta_cb));
- Z80(config, m_soundcpu, SOUND_CLOCK);
- m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_rom_map);
- m_soundcpu->set_addrmap(AS_IO, &m72_state::rtype2_sound_portmap);
- m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(128*55)); /* clocked by V1? (Vigilante) */
+ MCFG_DEVICE_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
+ MCFG_DEVICE_PROGRAM_MAP(m82_map)
+ MCFG_DEVICE_IO_MAP(m82_portmap)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb)
+ MCFG_DEVICE_ADD(m_soundcpu, Z80, SOUND_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(sound_rom_map)
+ MCFG_DEVICE_IO_MAP(rtype2_sound_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */
/* IRQs are generated by main Z80 and YM2151 */
PIC8259(config, m_upd71059c, 0);
m_upd71059c->out_int_callback().set_inputline(m_maincpu, 0);
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_majtitle);
- PALETTE(config, m_palette).set_entries(512);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_majtitle)
+ MCFG_PALETTE_ADD("palette", 512)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256);
- m_screen->set_screen_update(FUNC(m72_state::screen_update_m82));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m82)
+ MCFG_SCREEN_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(m72_state,m82)
m72_audio_chips(config);
-}
+MACHINE_CONFIG_END
/* Pound for Pound uses
M85-A-B / M85-B
*/
-void m72_state::poundfor(machine_config &config)
-{
- /* basic machine hardware */
- V30(config, m_maincpu, MASTER_CLOCK/2/2); /* 16 MHz external freq (8MHz internal) */
- m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::rtype2_map);
- m_maincpu->set_addrmap(AS_IO, &m72_state::poundfor_portmap);
- m_maincpu->set_irq_acknowledge_callback("upd71059c", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(m72_state::poundfor)
- Z80(config, m_soundcpu, SOUND_CLOCK);
- m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_rom_map);
- m_soundcpu->set_addrmap(AS_IO, &m72_state::poundfor_sound_portmap);
- m_soundcpu->set_periodic_int(FUNC(m72_state::fake_nmi), attotime::from_hz(128*55)); /* clocked by V1? (Vigilante) */
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
+ MCFG_DEVICE_PROGRAM_MAP(rtype2_map)
+ MCFG_DEVICE_IO_MAP(poundfor_portmap)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb)
+ MCFG_DEVICE_ADD(m_soundcpu, Z80, SOUND_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(sound_rom_map)
+ MCFG_DEVICE_IO_MAP(poundfor_sound_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, fake_nmi, 128*55) /* clocked by V1? (Vigilante) */
/* IRQs are generated by main Z80 and YM2151 */
PIC8259(config, m_upd71059c, 0);
@@ -2102,18 +2104,18 @@ void m72_state::poundfor(machine_config &config)
m_upd4701[1]->set_porty_tag("TRACK1_Y");
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_rtype2);
- PALETTE(config, m_palette).set_entries(512);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rtype2)
+ MCFG_PALETTE_ADD("palette", 512)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256);
- m_screen->set_screen_update(FUNC(m72_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(m72_state,poundfor)
m72_audio_chips(config);
-}
+MACHINE_CONFIG_END
/***************************************************************************
@@ -2672,49 +2674,6 @@ ROM_START( imgfightj )
ROM_LOAD( "if-c-v1.bin", 0x10000, 0x10000, CRC(45b68bf5) SHA1(2fb28793019ca85b3b6d7c4c31eedff1d71f2d83) )
ROM_END
-ROM_START( imgfightb ) // mostly identical to imgfightj
- ROM_REGION( 0x100000, "maincpu", 0 ) // identical, but ic111.9e
- ROM_LOAD16_BYTE( "ic108.9b", 0x00001, 0x10000, CRC(592d2d80) SHA1(d54916a9bfe4b65a972b62202af706135e73518d) )
- ROM_LOAD16_BYTE( "ic89.7b", 0x00000, 0x10000, CRC(61f89056) SHA1(3e0724dbc2b00a30193ea6cfac8b4331055d4fd4) )
- ROM_LOAD16_BYTE( "ic111.9e", 0x40001, 0x10000, CRC(da50622e) SHA1(32c75b6270d401a6825632c66f3026cae7b5b81f) ) // slight difference: 99.998474%: 0x1116 from 0x09 to 0x0d
- ROM_RELOAD( 0xc0001, 0x10000 )
- ROM_LOAD16_BYTE( "ic110.9d", 0x60001, 0x10000, CRC(0e0aefcd) SHA1(f5056a2d0612d912aff1e0eccb1182de7ae16990) )
- ROM_RELOAD( 0xe0001, 0x10000 )
- ROM_LOAD16_BYTE( "ic92.7e", 0x40000, 0x10000, CRC(38fce272) SHA1(4fe4d0838d21f3022b440a32ec69b25e936e62dd) )
- ROM_RELOAD( 0xc0000, 0x10000 )
- ROM_LOAD16_BYTE( "ic91.7d", 0x60000, 0x10000, CRC(d69c0722) SHA1(ef18e7b7057f19caaa61d0b8c07d2d0c6e0a555e) )
- ROM_RELOAD( 0xe0000, 0x10000 )
-
- ROM_REGION( 0x10000, "mcu", 0 )
- ROM_LOAD( "25.ic27.2l", 0x00000, 0x2000, CRC(3e66c629) SHA1(e1da7a85dd0a20c8692ceca188883c2abb5b816d) ) // i80c31 instead of i8751, FIXED BITS (xxxxxxxxxxxxxxx0)
-
- ROM_REGION( 0x080000, "sprites", 0 ) // half size ROMs, but identical content
- ROM_LOAD( "ic96.7k", 0x00000, 0x10000, CRC(d4febb03) SHA1(6fe53b198bdcef1708ff134c64af9c064e274e1b) ) /* sprites */
- ROM_LOAD( "ic97.7l", 0x10000, 0x10000, CRC(973d7bbc) SHA1(409242ddc7eb90564a15b222641e53d11ab1e04a) )
- ROM_LOAD( "ic115.9k", 0x20000, 0x10000, CRC(2328880b) SHA1(a35c77a7d04614dbfbca4c79bb3e729115129ee4) )
- ROM_LOAD( "ic116.9l", 0x30000, 0x10000, CRC(6da001ea) SHA1(473ed89b77809b3b76bfa9f5ca4008c9534cdbb4) )
- ROM_LOAD( "ic94.7h", 0x40000, 0x10000, CRC(92bc7fda) SHA1(521d4a29e06eb8790fdeeba968f99a389f50a24e) )
- ROM_LOAD( "ic95.7j", 0x50000, 0x10000, CRC(e63a5918) SHA1(fd3374866f922cef72c0678aa751ad1e6f95a12a) )
- ROM_LOAD( "ic113.9h", 0x60000, 0x10000, CRC(27caec8e) SHA1(cc1943ba9548715425e799f418750cd70c3f88da) )
- ROM_LOAD( "ic114.9j", 0x70000, 0x10000, CRC(1933eb65) SHA1(4c24cfd059c11875f53b57cc020fbdbac903bd4a) )
-
- ROM_REGION( 0x040000, "gfx2", 0 ) // identical
- ROM_LOAD( "ic30.3d", 0x00000, 0x10000, CRC(34ee2d77) SHA1(38826e0318aa8da893fa4c93f217288c015df606) ) /* tiles #1 */
- ROM_LOAD( "ic31.3e", 0x10000, 0x10000, CRC(6bd2845b) SHA1(149cf14f919590da88b9a8e254690da010709862) )
- ROM_LOAD( "ic29.3c", 0x20000, 0x10000, CRC(090d50e5) SHA1(4f2a7c76320b3f8dafae90a246187e034fe7562b) )
- ROM_LOAD( "ic32.3f", 0x30000, 0x10000, CRC(3a8e3083) SHA1(8a75d556790b6bea41ead1a5f95589dd293bdf4e) )
-
- ROM_REGION( 0x040000, "gfx3", 0 ) // identical
- ROM_LOAD( "ic35.3k", 0x00000, 0x10000, CRC(b425c829) SHA1(0ccd487dba00bb7cb0ff5d1c67f8fee3e68df5d8) ) /* tiles #2 */
- ROM_LOAD( "ic36.3l", 0x10000, 0x10000, CRC(e9bfe23e) SHA1(f97a68dbdce7e06d07faab19acf7625cdc8eeaa8) )
- ROM_LOAD( "ic34.3j", 0x20000, 0x10000, CRC(256e50f2) SHA1(9e9fda4f1f1449548942c0da4478f61fe0d263d1) )
- ROM_LOAD( "ic33.3h", 0x30000, 0x10000, CRC(4c682785) SHA1(f61f1227e0ad629fdfca106306b17a9f6a9959e3) )
-
- ROM_REGION( 0x20000, "samples", 0 ) /* samples, identical */
- ROM_LOAD( "ic28.lower.2n.bin", 0x00000, 0x10000, CRC(cb64a194) SHA1(940fad6b9147bccc8290e112f5973f8ea062b52f) )
- ROM_LOAD( "ic28.lower.2n.bin", 0x10000, 0x10000, CRC(45b68bf5) SHA1(2fb28793019ca85b3b6d7c4c31eedff1d71f2d83) )
-ROM_END
-
ROM_START( loht )
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD16_BYTE( "tom_c-h0.rom", 0x00001, 0x20000, CRC(a63204b6) SHA1(d217bc70650a1a1bbe0cf536ec3bb678f670718d) )
@@ -2949,7 +2908,7 @@ ROM_START( lohtb3 ) // extremely similar to the original. Copyright changed to 1
ROM_RELOAD( 0xe0000, 0x10000 )
ROM_REGION( 0x10000, "mcu", 0 )
- ROM_LOAD( "c8751h.bin", 0x00000, 0x01000, CRC(9c9545f1) SHA1(ca800ce7467efb877d0fff4c47d72478a991e2a9) )
+ ROM_LOAD( "loht-a26.bin", 0x00000, 0x02000, BAD_DUMP CRC(ac901e17) SHA1(70a73288d594c78ad2aca78ce55a699cb040bede) ) // undumped, using the dump from lohtb2 for now
ROM_REGION( 0x080000, "sprites", 0 )
ROM_LOAD( "i-8.8", 0x00000, 0x10000, CRC(df5ac5ee) SHA1(5b45417ada402047d97dfb6cee6545686ad26e37) )
@@ -3873,12 +3832,11 @@ GAME( 1988, nspiritj, nspirit, m72_8751, nspirit, m72_state, init_m
GAME( 1988, imgfight, 0, m72, imgfight, m72_state, init_imgfight, ROT270, "Irem", "Image Fight (World, revision A)", MACHINE_SUPPORTS_SAVE ) // doesn't wait / check for japan warning string.. fails rom check if used with japanese mcu rom (World version?)
GAME( 1988, imgfightj, imgfight, m72_8751, imgfight, m72_state, init_m72_8751, ROT270, "Irem", "Image Fight (Japan)", MACHINE_SUPPORTS_SAVE ) // waits for japan warning screen, works with our mcu dump, can't actually see warning screen due to priority / mixing errors, check tilemap viewer (Japan Version)
-GAME( 1988, imgfightb, imgfight, m72, imgfight, m72_state, init_imgfight, ROT270, "Irem", "Image Fight (Japan, bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // uses an 80c31 MCU, which isn't hooked up yet
GAME( 1989, loht, 0, m72, loht, m72_state, init_loht, ROT0, "Irem", "Legend of Hero Tonma", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // fails rom check if used with Japan MCU rom (World version?)
GAME( 1989, lohtj, loht, m72_8751, loht, m72_state, init_m72_8751, ROT0, "Irem", "Legend of Hero Tonma (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // waits for japan warning screen, works with our mcu dump (Japan Version)
GAME( 1989, lohtb2, loht, m72_8751, loht, m72_state, init_m72_8751, ROT0, "bootleg", "Legend of Hero Tonma (Japan, bootleg with i8751)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // works like above, mcu code is the same as the real code, probably just an alt revision on a bootleg board
-GAME( 1997, lohtb3, loht, m72_8751, loht, m72_state, init_m72_8751, ROT0, "bootleg", "Legend of Hero Tonma (World, bootleg with i8751)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1997, lohtb3, loht, m72_8751, loht, m72_state, init_m72_8751, ROT0, "bootleg", "Legend of Hero Tonma (World, bootleg with i8751)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // works like above, mcu code is the same as the real code, probably just an alt revision on a bootleg board
GAME( 1989, xmultiplm72, xmultipl, m72_xmultipl, xmultipl, m72_state, init_m72_8751, ROT0, "Irem", "X Multiply (Japan, M72)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/m79152pc.cpp b/src/mame/drivers/m79152pc.cpp
index a84453b6bec..bc0317a1896 100644
--- a/src/mame/drivers/m79152pc.cpp
+++ b/src/mame/drivers/m79152pc.cpp
@@ -264,8 +264,7 @@ static const z80_daisy_config daisy_chain[] =
{ nullptr }
};
-void m79152pc_state::m79152pc(machine_config &config)
-{
+MACHINE_CONFIG_START(m79152pc_state::m79152pc)
/* basic machine hardware */
Z80(config, m_maincpu, 4'000'000); // UA880D
m_maincpu->set_addrmap(AS_PROGRAM, &m79152pc_state::mem_map);
@@ -288,7 +287,7 @@ void m79152pc_state::m79152pc(machine_config &config)
m_screen->set_screen_update(FUNC(m79152pc_state::screen_update));
m_screen->set_palette("palette");
- GFXDECODE(config, "gfxdecode", "palette", gfx_m79152pc);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_m79152pc)
PALETTE(config, "palette", palette_device::MONOCHROME);
pit8253_device &pit(PIT8253(config, "pit", 0)); // КР580ВИ53
@@ -343,7 +342,7 @@ void m79152pc_state::m79152pc(machine_config &config)
SPEAKER(config, "mono").front_center();
BEEP(config, m_beep, 1000);
m_beep->add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( m79152pc )
diff --git a/src/mame/drivers/m79amb.cpp b/src/mame/drivers/m79amb.cpp
index 4dc3beb74cc..f06097e01ab 100644
--- a/src/mame/drivers/m79amb.cpp
+++ b/src/mame/drivers/m79amb.cpp
@@ -194,26 +194,27 @@ INTERRUPT_GEN_MEMBER(m79amb_state::m79amb_interrupt)
device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xcf); /* RST 08h */
}
-void m79amb_state::m79amb(machine_config &config)
-{
+MACHINE_CONFIG_START(m79amb_state::m79amb)
+
/* basic machine hardware */
- I8080(config, m_maincpu, XTAL(19'660'800) / 10);
- m_maincpu->set_addrmap(AS_PROGRAM, &m79amb_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(m79amb_state::m79amb_interrupt));
+ MCFG_DEVICE_ADD("maincpu", I8080, XTAL(19'660'800) / 10)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", m79amb_state, m79amb_interrupt)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 4*8, 32*8-1);
- screen.set_screen_update(FUNC(m79amb_state::screen_update_ramtek));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(m79amb_state, screen_update_ramtek)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- DISCRETE(config, m_discrete, m79amb_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, m79amb_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/m90.cpp b/src/mame/drivers/m90.cpp
index b51f058c2a5..ceff4b12215 100644
--- a/src/mame/drivers/m90.cpp
+++ b/src/mame/drivers/m90.cpp
@@ -774,6 +774,7 @@ void m90_state::m90(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.1); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
@@ -1138,32 +1139,23 @@ ROM_START( newapunk )
ROM_LOAD( "bbm2-v0.30", 0x0000, 0x20000, CRC(4ad889ed) SHA1(b685892a2348f17f89c6d6ce91216f6cf1e33751) )
ROM_END
-//PCB is marked: "BOMBER LORD 030" and "lc" on component side ("LC" is the Italian for "Lato Componenti" which translates to "Components Side")
-//PCB is marked: "BOMBER LORD 030" and "ls" on solder side ("LS" is the Italian for "Lato Saldature" which translates to "Solders Side")
ROM_START( bomblord )
ROM_REGION( CODE_SIZE, "maincpu", 0 )
- ROM_LOAD16_BYTE( "27c020_3.u6", 0x00001, 0x40000, CRC(65d5c54a) SHA1(f794a193d5927b5fb838ab2351c176d8cbd37236) )
- ROM_LOAD16_BYTE( "27c020_4.u5", 0x00000, 0x40000, CRC(cfe65f81) SHA1(8dae94abc67bc53f1c8dbe13243dc08a62fd5d22) )
+ ROM_LOAD16_BYTE( "bomblord.3", 0x00001, 0x40000, CRC(65d5c54a) SHA1(f794a193d5927b5fb838ab2351c176d8cbd37236) )
+ ROM_LOAD16_BYTE( "bomblord.4", 0x00000, 0x40000, CRC(cfe65f81) SHA1(8dae94abc67bc53f1c8dbe13243dc08a62fd5d22) )
ROM_COPY( "maincpu", 0x7fff0, 0xffff0, 0x10 ) /* start vector */
ROM_REGION( 0x10000, "soundcpu", 0 )
- ROM_LOAD( "27c512_1.u100", 0x0000, 0x10000, CRC(6bc1689e) SHA1(099c275632965e19eb6131863f69d2afa9916e90) )
+ ROM_LOAD( "bbm2-sp.33", 0x0000, 0x10000, CRC(6bc1689e) SHA1(099c275632965e19eb6131863f69d2afa9916e90) ) // bomblord.1
ROM_REGION( 0x200000, "gfx1", 0 )
- ROM_LOAD( "27c020_5.u69", 0x000000, 0x40000, CRC(3ded3278) SHA1(2fec2f10d875e44d966b6f652e3b09308db9b343) )
- ROM_LOAD( "27c020_6.u70", 0x080000, 0x40000, CRC(1c489632) SHA1(f4412b138e4933c8d152ec51d05baa02abc7fc00) )
- ROM_LOAD( "27c020_7.u71", 0x100000, 0x40000, CRC(cc2b6237) SHA1(8450edac25817afdc393e2e6960fec4da382d2c9) )
- // previous 7.u71 dump had a single different byte at 0x86eb: 0x6f instead of 0x2f. Hashes left as a remainder:
- // ROM_LOAD( "bomblord.7", 0x100000, 0x40000, CRC(68935e94) SHA1(6725c7ad49bd0ee6ed1db22193852a11cdf95aaa) )
- ROM_LOAD( "27c020_8.u72", 0x180000, 0x40000, CRC(6a423b24) SHA1(d30dac90a7dc2a616714eae7450ae0edef566c31) )
+ ROM_LOAD( "bomblord.5", 0x000000, 0x40000, CRC(3ded3278) SHA1(2fec2f10d875e44d966b6f652e3b09308db9b343) )
+ ROM_LOAD( "bomblord.6", 0x080000, 0x40000, CRC(1c489632) SHA1(f4412b138e4933c8d152ec51d05baa02abc7fc00) )
+ ROM_LOAD( "bomblord.7", 0x100000, 0x40000, CRC(68935e94) SHA1(6725c7ad49bd0ee6ed1db22193852a11cdf95aaa) )
+ ROM_LOAD( "bomblord.8", 0x180000, 0x40000, CRC(6a423b24) SHA1(d30dac90a7dc2a616714eae7450ae0edef566c31) )
ROM_REGION( 0x20000, "samples", 0 )
- ROM_LOAD( "27c010_2.u104", 0x0000, 0x20000, CRC(37d356bd) SHA1(15f187954f94e2b1a4757e4a27ab7be9598972ff) )
-
- ROM_REGION( 0x700, "plds", ROMREGION_ERASE00 ) // all read protected
- ROM_LOAD( "palce16v8h.u45", 0x000, 0x117, NO_DUMP )
- ROM_LOAD( "palce16v8h.u119", 0x200, 0x117, NO_DUMP )
- ROM_LOAD( "palce22v10h.u105", 0x400, 0x2dd, NO_DUMP )
+ ROM_LOAD( "bomblord.2", 0x0000, 0x20000, CRC(37d356bd) SHA1(15f187954f94e2b1a4757e4a27ab7be9598972ff) )
ROM_END
ROM_START( quizf1 )
@@ -1191,8 +1183,8 @@ ROM_END
ROM_START( riskchal )
ROM_REGION( CODE_SIZE, "maincpu", 0 )
- ROM_LOAD16_BYTE( "l4-a-h0-b.ic77", 0x00001, 0x40000, CRC(4c9b5344) SHA1(61e26950a672c6404e2386acdd098536b61b9933) )
- ROM_LOAD16_BYTE( "l4-a-l0-b.ic79", 0x00000, 0x40000, CRC(0455895a) SHA1(1072b8d280f7ccc48cd8fbd81323e1f8c8d0db95) )
+ ROM_LOAD16_BYTE( "rc_h0.ic77", 0x00001, 0x40000, CRC(4c9b5344) SHA1(61e26950a672c6404e2386acdd098536b61b9933) ) /* Need to verify rom label. Likely L4-A-H0-B */
+ ROM_LOAD16_BYTE( "rc_l0.ic79", 0x00000, 0x40000, CRC(0455895a) SHA1(1072b8d280f7ccc48cd8fbd81323e1f8c8d0db95) ) /* Need to verify rom label. Likely L4-A-L0-B */
ROM_COPY( "maincpu", 0x7fff0, 0xffff0, 0x10 ) /* start vector */
ROM_REGION( 0x10000, "soundcpu", 0 )
diff --git a/src/mame/drivers/mac.cpp b/src/mame/drivers/mac.cpp
index 7c086b41a79..e998b013cfb 100644
--- a/src/mame/drivers/mac.cpp
+++ b/src/mame/drivers/mac.cpp
@@ -546,11 +546,11 @@ READ8_MEMBER(mac_state::mac_5396_r)
{
if (offset < 0x100)
{
- return m_539x_1->read(offset>>4);
+ return m_539x_1->read(space, offset>>4);
}
else // pseudo-DMA: read from the FIFO
{
- return m_539x_1->read(2);
+ return m_539x_1->read(space, 2);
}
// never executed
@@ -561,11 +561,11 @@ WRITE8_MEMBER(mac_state::mac_5396_w)
{
if (offset < 0x100)
{
- m_539x_1->write(offset>>4, data);
+ m_539x_1->write(space, offset>>4, data);
}
else // pseudo-DMA: write to the FIFO
{
- m_539x_1->write(2, data);
+ m_539x_1->write(space, 2, data);
}
}
@@ -1055,6 +1055,7 @@ void mac_state::mac512ke_base(machine_config &config)
DAC_8BIT_PWM(config, m_dac, 0);
m_dac->add_route(ALL_OUTPUTS, "speaker", 0.25); // 2 x ls161
voltage_regulator_device &vreg(VOLTAGE_REGULATOR(config, "vref", 0));
+ vreg.set_output(5.0);
vreg.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vreg.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
@@ -1095,7 +1096,7 @@ void mac_state::add_macplus_additions(machine_config &config)
void mac_state::add_nubus(machine_config &config, bool bank1, bool bank2)
{
nubus_device &nubus(NUBUS(config, "nubus", 0));
- nubus.set_space(m_maincpu, AS_PROGRAM);
+ nubus.set_cputag("maincpu");
nubus.out_irq9_callback().set(FUNC(mac_state::nubus_irq_9_w));
nubus.out_irqa_callback().set(FUNC(mac_state::nubus_irq_a_w));
nubus.out_irqb_callback().set(FUNC(mac_state::nubus_irq_b_w));
@@ -1119,7 +1120,7 @@ void mac_state::add_nubus(machine_config &config, bool bank1, bool bank2)
template <typename T> void mac_state::add_nubus_pds(machine_config &config, const char *slot_tag, T &&opts)
{
nubus_device &nubus(NUBUS(config, "pds", 0));
- nubus.set_space(m_maincpu, AS_PROGRAM);
+ nubus.set_cputag("maincpu");
nubus.out_irq9_callback().set(FUNC(mac_state::nubus_irq_9_w));
nubus.out_irqa_callback().set(FUNC(mac_state::nubus_irq_a_w));
nubus.out_irqb_callback().set(FUNC(mac_state::nubus_irq_b_w));
diff --git a/src/mame/drivers/mac128.cpp b/src/mame/drivers/mac128.cpp
index 3364f1085f6..43afa8e4e87 100644
--- a/src/mame/drivers/mac128.cpp
+++ b/src/mame/drivers/mac128.cpp
@@ -109,8 +109,8 @@ c0 8 data bits, Rx disabled
#define DAC_TAG "macdac"
#define SCC_TAG "scc"
-#define C7M (15.6672_MHz_XTAL / 2)
-#define C3_7M (15.6672_MHz_XTAL / 4).value()
+#define C7M (7833600)
+#define C3_7M (3916800)
// uncomment to run i8021 keyboard in original Mac/512(e)/Plus
//#define MAC_USE_EMULATED_KBD (1)
@@ -1350,7 +1350,7 @@ void mac128_state::mac512ke(machine_config &config)
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(15.6672_MHz_XTAL, MAC_H_TOTAL, 0, MAC_H_VIS, MAC_V_TOTAL, 0, MAC_V_VIS);
+ m_screen->set_raw(C7M*2, MAC_H_TOTAL, 0, MAC_H_VIS, MAC_V_TOTAL, 0, MAC_V_VIS);
m_screen->set_screen_update(FUNC(mac128_state::screen_update_mac));
m_screen->set_palette("palette");
@@ -1362,6 +1362,7 @@ void mac128_state::mac512ke(machine_config &config)
SPEAKER(config, "speaker").front_center();
DAC_8BIT_PWM(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // 2 x ls161
voltage_regulator_device &vreg(VOLTAGE_REGULATOR(config, "vref"));
+ vreg.set_output(5.0);
vreg.add_route(0, DAC_TAG, 1.0, DAC_VREF_POS_INPUT);
vreg.add_route(0, DAC_TAG, -1.0, DAC_VREF_NEG_INPUT);
diff --git a/src/mame/drivers/macp.cpp b/src/mame/drivers/macp.cpp
index 3ae5799d64a..5de847d24c1 100644
--- a/src/mame/drivers/macp.cpp
+++ b/src/mame/drivers/macp.cpp
@@ -53,34 +53,32 @@ INPUT_PORTS_END
static INPUT_PORTS_START( cicplay )
INPUT_PORTS_END
-void macp_state::macp(machine_config &config)
-{
+MACHINE_CONFIG_START(macp_state::macp)
/* basic machine hardware */
- Z80(config, m_maincpu, 2500000);
- m_maincpu->set_addrmap(AS_PROGRAM, &macp_state::macp_map);
- m_maincpu->set_addrmap(AS_IO, &macp_state::macp_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, 2500000)
+ MCFG_DEVICE_PROGRAM_MAP(macp_map)
+ MCFG_DEVICE_IO_MAP(macp_io)
/* video hardware */
- //config.set_default_layout();
+ //MCFG_DEFAULT_LAYOUT()
//I8279
/* sound hardware */
//2x AY8910
genpin_audio(config);
-}
+MACHINE_CONFIG_END
-void macp_state::macp0(machine_config &config)
-{
+MACHINE_CONFIG_START(macp_state::macp0)
macp(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &macp_state::macp0_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(macp0_map)
+MACHINE_CONFIG_END
-void macp_state::macpmsm(machine_config &config)
-{
+MACHINE_CONFIG_START(macp_state::macpmsm)
macp(config);
// MSM5205
-}
+MACHINE_CONFIG_END
ROM_START(macgalxy)
ROM_REGION(0x4000, "maincpu", 0)
diff --git a/src/mame/drivers/macs.cpp b/src/mame/drivers/macs.cpp
index 1d4e6d487a1..9674e1335a2 100644
--- a/src/mame/drivers/macs.cpp
+++ b/src/mame/drivers/macs.cpp
@@ -2,7 +2,7 @@
// copyright-holders:David Haywood
/*
-macs.cpp - Multi Amenity Cassette System
+macs.c - Multi Amenity Cassette System
processor seems to be ST0016 (z80 based) from SETA
@@ -501,7 +501,6 @@ uint8_t macs_state::dma_offset()
return m_cart_bank;
}
-
MACHINE_CONFIG_START(macs_state::macs)
/* basic machine hardware */
ST0016_CPU(config, m_maincpu, 8000000); // 8 MHz ?
diff --git a/src/mame/drivers/madalien.cpp b/src/mame/drivers/madalien.cpp
index fcd20dcfb1b..a0d3f1863f7 100644
--- a/src/mame/drivers/madalien.cpp
+++ b/src/mame/drivers/madalien.cpp
@@ -150,14 +150,14 @@ static INPUT_PORTS_START( madalien )
INPUT_PORTS_END
-void madalien_state::madalien(machine_config &config)
-{
+MACHINE_CONFIG_START(madalien_state::madalien)
+
/* main CPU */
- M6502(config, m_maincpu, MADALIEN_MAIN_CLOCK / 8); /* 1324kHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &madalien_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, MADALIEN_MAIN_CLOCK / 8) /* 1324kHz */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- M6502(config, m_audiocpu, SOUND_CLOCK / 8); /* 512kHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &madalien_state::audio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6502, SOUND_CLOCK / 8) /* 512kHz */
+ MCFG_DEVICE_PROGRAM_MAP(audio_map)
/* video hardware */
madalien_video(config);
@@ -177,8 +177,9 @@ void madalien_state::madalien(machine_config &config)
aysnd.add_route(1, "discrete", 1.0, 1);
aysnd.add_route(2, "discrete", 1.0, 2);
- DISCRETE(config, m_discrete, madalien_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, madalien_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( madalien )
diff --git a/src/mame/drivers/madmotor.cpp b/src/mame/drivers/madmotor.cpp
index 2092c8c426b..c46dd579df0 100644
--- a/src/mame/drivers/madmotor.cpp
+++ b/src/mame/drivers/madmotor.cpp
@@ -258,28 +258,28 @@ uint32_t madmotor_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
/******************************************************************************/
-void madmotor_state::madmotor(machine_config &config)
-{
+MACHINE_CONFIG_START(madmotor_state::madmotor)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000); /* Custom chip 59, 24 MHz crystal */
- m_maincpu->set_addrmap(AS_PROGRAM, &madmotor_state::madmotor_map);
- m_maincpu->set_vblank_int("screen", FUNC(madmotor_state::irq6_line_hold)); /* VBL */
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000) /* Custom chip 59, 24 MHz crystal */
+ MCFG_DEVICE_PROGRAM_MAP(madmotor_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", madmotor_state, irq6_line_hold)/* VBL */
H6280(config, m_audiocpu, 8053000/2); /* Custom chip 45, Crystal near CPU is 8.053 MHz */
m_audiocpu->set_addrmap(AS_PROGRAM, &madmotor_state::sound_map);
m_audiocpu->add_route(ALL_OUTPUTS, "mono", 0); // internal sound unused
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* frames per second, vblank duration taken from Burger Time */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(madmotor_state::screen_update));
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_madmotor);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* frames per second, vblank duration taken from Burger Time */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(madmotor_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_madmotor)
PALETTE(config, "palette").set_format(palette_device::xBGR_444, 1024);
DECO_BAC06(config, m_tilegen[0], 0);
@@ -303,17 +303,20 @@ void madmotor_state::madmotor(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, 0);
- YM2203(config, "ym1", 21470000/6).add_route(ALL_OUTPUTS, "mono", 0.40);
+ MCFG_DEVICE_ADD("ym1", YM2203, 21470000/6)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
ym2151_device &ym2(YM2151(config, "ym2", 21470000/6));
ym2.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
ym2.add_route(0, "mono", 0.45);
ym2.add_route(1, "mono", 0.45);
- OKIM6295(config, "oki1", 1023924, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.50); // clock frequency & pin 7 not verified
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 1023924, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- OKIM6295(config, "oki2", 2047848, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.25); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 2047848, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
/******************************************************************************/
diff --git a/src/mame/drivers/magic10.cpp b/src/mame/drivers/magic10.cpp
index c67df432427..9195fff8044 100644
--- a/src/mame/drivers/magic10.cpp
+++ b/src/mame/drivers/magic10.cpp
@@ -736,23 +736,22 @@ GFXDECODE_END
* Machine Drivers *
****************************/
-void magic10_state::magic10(machine_config &config)
-{
+MACHINE_CONFIG_START(magic10_state::magic10)
/* basic machine hardware */
- M68000(config, m_maincpu, CPU_CLOCK); // 10 MHz.
- m_maincpu->set_addrmap(AS_PROGRAM, &magic10_state::magic10_map);
- m_maincpu->set_vblank_int("screen", FUNC(magic10_state::irq1_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, CPU_CLOCK) // 10 MHz.
+ MCFG_DEVICE_PROGRAM_MAP(magic10_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", magic10_state, irq1_line_hold)
// 1FILL is required by vanilla magic10 at least (otherwise gameplay won't work properly)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 44*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(magic10_state::screen_update_magic10));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 44*8-1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(magic10_state, screen_update_magic10)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xBRG_444, 256);
@@ -760,51 +759,55 @@ void magic10_state::magic10(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) /* clock frequency & pin 7 not verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void magic10_state::magic10a(machine_config &config)
-{
+MACHINE_CONFIG_START(magic10_state::magic10a)
magic10(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &magic10_state::magic10a_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(magic10a_map)
+MACHINE_CONFIG_END
-void magic10_state::magic102(machine_config &config)
-{
+MACHINE_CONFIG_START(magic10_state::magic102)
magic10(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &magic10_state::magic102_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(magic102_map)
- subdevice<screen_device>("screen")->set_visarea(0*8, 48*8-1, 0*8, 30*8-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 30*8-1)
+MACHINE_CONFIG_END
-void magic10_state::hotslot(machine_config &config)
-{
+MACHINE_CONFIG_START(magic10_state::hotslot)
magic10(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &magic10_state::hotslot_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hotslot_map)
- subdevice<screen_device>("screen")->set_visarea(8*8, 56*8-1, 2*8, 32*8-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(8*8, 56*8-1, 2*8, 32*8-1)
+MACHINE_CONFIG_END
-void magic10_state::sgsafari(machine_config &config)
-{
+MACHINE_CONFIG_START(magic10_state::sgsafari)
magic10(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &magic10_state::sgsafari_map);
- m_maincpu->set_vblank_int("screen", FUNC(magic10_state::irq2_line_hold)); /* L1 interrupts */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sgsafari_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", magic10_state, irq2_line_hold) /* L1 interrupts */
- subdevice<screen_device>("screen")->set_visarea(0*8, 44*8-1, 0*8, 30*8-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 44*8-1, 0*8, 30*8-1)
+MACHINE_CONFIG_END
/****************************
diff --git a/src/mame/drivers/magicard.cpp b/src/mame/drivers/magicard.cpp
index 43dff213718..5c32e4dd1d4 100644
--- a/src/mame/drivers/magicard.cpp
+++ b/src/mame/drivers/magicard.cpp
@@ -997,35 +997,35 @@ void magicard_state::ramdac_map(address_map &map)
}
-void magicard_state::magicard(machine_config &config)
-{
- SCC68070(config, m_maincpu, CLOCK_A / 2); /* SCC-68070 CCA84 datasheet */
- m_maincpu->set_addrmap(AS_PROGRAM, &magicard_state::magicard_mem);
- m_maincpu->set_vblank_int("screen", FUNC(magicard_state::magicard_irq)); /* no interrupts? (it erases the vectors..) */
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(50);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(400, 300);
- m_screen->set_visarea(0, 320-1, 0, 256-1); //dynamic resolution,TODO
- m_screen->set_screen_update(FUNC(magicard_state::screen_update_magicard));
-
- PALETTE(config, m_palette).set_entries(0x100);
+MACHINE_CONFIG_START(magicard_state::magicard)
+ MCFG_DEVICE_ADD("maincpu", SCC68070, CLOCK_A / 2) /* SCC-68070 CCA84 datasheet */
+ MCFG_DEVICE_PROGRAM_MAP(magicard_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", magicard_state, magicard_irq) /* no interrupts? (it erases the vectors..) */
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(400, 300)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1) //dynamic resolution,TODO
+ MCFG_SCREEN_UPDATE_DRIVER(magicard_state, screen_update_magicard)
+
+ MCFG_PALETTE_ADD("palette", 0x100)
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette));
ramdac.set_addrmap(0, &magicard_state::ramdac_map);
SPEAKER(config, "mono").front_center();
- SAA1099(config, "saa", CLOCK_B).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("saa", SAA1099, CLOCK_B)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void magicard_state::hotslots(machine_config &config)
-{
+MACHINE_CONFIG_START(magicard_state::hotslots)
magicard(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &magicard_state::hotslots_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hotslots_mem)
- config.device_remove("saa");
+ MCFG_DEVICE_REMOVE("saa")
YMZ284(config, "ssg", 4000000).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/*************************
* Rom Load *
diff --git a/src/mame/drivers/magicfly.cpp b/src/mame/drivers/magicfly.cpp
index 38d22cf4657..b7f35b850c4 100644
--- a/src/mame/drivers/magicfly.cpp
+++ b/src/mame/drivers/magicfly.cpp
@@ -940,22 +940,22 @@ GFXDECODE_END
* Machine Drivers *
*********************************************/
-void magicfly_state::magicfly(machine_config &config)
-{
+MACHINE_CONFIG_START(magicfly_state::magicfly)
+
/* basic machine hardware */
- M6502(config, m_maincpu, MASTER_CLOCK / 16); /* guess */
- m_maincpu->set_addrmap(AS_PROGRAM, &magicfly_state::magicfly_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, MASTER_CLOCK / 16) /* guess */
+ MCFG_DEVICE_PROGRAM_MAP(magicfly_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size((39+1)*8, (31+1)*8); /* Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1). */
- screen.set_visarea(0*8, 32*8-1, 0*8, 29*8-1); /* Taken from MC6845 init, registers 01 & 06. */
- screen.set_screen_update(FUNC(magicfly_state::screen_update_magicfly));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE((39+1)*8, (31+1)*8) /* Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1). */
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 29*8-1) /* Taken from MC6845 init, registers 01 & 06. */
+ MCFG_SCREEN_UPDATE_DRIVER(magicfly_state, screen_update_magicfly)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_magicfly);
PALETTE(config, "palette", FUNC(magicfly_state::magicfly_palette), 32);
@@ -968,19 +968,19 @@ void magicfly_state::magicfly(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
-void magicfly_state::_7mezzo(machine_config &config)
-{
+MACHINE_CONFIG_START(magicfly_state::_7mezzo)
magicfly(config);
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(magicfly_state, 7mezzo)
-}
+
+MACHINE_CONFIG_END
void magicfly_state::bchance(machine_config &config)
diff --git a/src/mame/drivers/magictg.cpp b/src/mame/drivers/magictg.cpp
index a39a4dfb253..9a749b09e5b 100644
--- a/src/mame/drivers/magictg.cpp
+++ b/src/mame/drivers/magictg.cpp
@@ -936,24 +936,25 @@ MACHINE_CONFIG_START(magictg_state::magictg)
#endif
MCFG_PCI_BUS_LEGACY_DEVICE(9, DEVICE_SELF, magictg_state, zr36120_pci_r, zr36120_pci_w) // TODO: ZR36120 device
- VOODOO_1(config, m_voodoo[0], STD_VOODOO_1_CLOCK);
- m_voodoo[0]->set_fbmem(2);
- m_voodoo[0]->set_tmumem(4,0);
- m_voodoo[0]->set_screen_tag("screen");
- m_voodoo[0]->set_cpu_tag(m_mips);
-
- VOODOO_1(config, m_voodoo[1], STD_VOODOO_1_CLOCK);
- m_voodoo[1]->set_fbmem(2);
- m_voodoo[1]->set_tmumem(4,0);
- m_voodoo[1]->set_screen_tag("screen");
- m_voodoo[1]->set_cpu_tag(m_mips);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(1024, 1024);
- screen.set_visarea(0, 511, 16, 447);
- screen.set_screen_update(FUNC(magictg_state::screen_update_magictg));
+ MCFG_DEVICE_ADD("voodoo_0", VOODOO_1, STD_VOODOO_1_CLOCK)
+ MCFG_VOODOO_FBMEM(2)
+ MCFG_VOODOO_TMUMEM(4,0)
+ MCFG_VOODOO_SCREEN_TAG("screen")
+ MCFG_VOODOO_CPU_TAG("mips")
+
+ MCFG_DEVICE_ADD("voodoo_1", VOODOO_1, STD_VOODOO_1_CLOCK)
+ MCFG_VOODOO_FBMEM(2)
+ MCFG_VOODOO_TMUMEM(4,0)
+ MCFG_VOODOO_SCREEN_TAG("screen")
+ MCFG_VOODOO_CPU_TAG("mips")
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(1024, 1024)
+ MCFG_SCREEN_VISIBLE_AREA(0, 511, 16, 447)
+
+ MCFG_SCREEN_UPDATE_DRIVER(magictg_state, screen_update_magictg)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/magmax.cpp b/src/mame/drivers/magmax.cpp
index 647abfb29a6..bce7832c872 100644
--- a/src/mame/drivers/magmax.cpp
+++ b/src/mame/drivers/magmax.cpp
@@ -325,27 +325,27 @@ static GFXDECODE_START( gfx_magmax )
GFXDECODE_END
-void magmax_state::magmax(machine_config &config)
-{
+MACHINE_CONFIG_START(magmax_state::magmax)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &magmax_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(magmax_state::irq1_line_assert));
+ MCFG_DEVICE_ADD(m_maincpu, M68000, XTAL(16'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", magmax_state, irq1_line_assert)
- Z80(config, m_audiocpu, XTAL(20'000'000)/8); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &magmax_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &magmax_state::sound_io_map);
+ MCFG_DEVICE_ADD(m_audiocpu, Z80,XTAL(20'000'000)/8) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_io_map)
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(magmax_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(magmax_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_magmax);
PALETTE(config, m_palette, FUNC(magmax_state::magmax_palette), 1*16 + 16*16 + 256, 256);
@@ -365,7 +365,7 @@ void magmax_state::magmax(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
m_soundlatch->set_separate_acknowledge(true);
-}
+MACHINE_CONFIG_END
ROM_START( magmax )
diff --git a/src/mame/drivers/magnum.cpp b/src/mame/drivers/magnum.cpp
index 9ba4bb1439a..b1eb9b3c016 100644
--- a/src/mame/drivers/magnum.cpp
+++ b/src/mame/drivers/magnum.cpp
@@ -279,45 +279,45 @@ void magnum_state::magnum_lcdc(address_map &map)
map(0x0000, 0x027f).ram();
}
-void magnum_state::magnum(machine_config &config)
-{
- I80186(config, m_maincpu, XTAL(12'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &magnum_state::magnum_map);
- m_maincpu->set_addrmap(AS_IO, &magnum_state::magnum_io);
+MACHINE_CONFIG_START(magnum_state::magnum)
+ MCFG_DEVICE_ADD("maincpu", I80186, XTAL(12'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(magnum_map)
+ MCFG_DEVICE_IO_MAP(magnum_io)
CDP1879(config, "rtc", XTAL(32'768)).irq_callback().set(FUNC(magnum_state::rtcirq_w));
- screen_device &screen1(SCREEN(config, "screen1", SCREEN_TYPE_LCD));
- screen1.set_refresh_hz(50);
- screen1.set_screen_update("lcdc1", FUNC(hd61830_device::screen_update));
- screen1.set_size(6*40, 9*16);
- screen1.set_visarea(0, 6*40-1, 0, 8*16-1);
- screen1.set_palette("palette");
+ MCFG_SCREEN_ADD("screen1", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_UPDATE_DEVICE("lcdc1", hd61830_device, screen_update)
+ MCFG_SCREEN_SIZE(6*40, 9*16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 6*40-1, 0, 8*16-1)
+ MCFG_SCREEN_PALETTE("palette")
- screen_device &screen2(SCREEN(config, "screen2", SCREEN_TYPE_LCD));
- screen2.set_refresh_hz(50);
- screen2.set_screen_update("lcdc2", FUNC(hd61830_device::screen_update));
- screen2.set_size(6*40, 9*16);
- screen2.set_visarea(0, 6*40-1, 0, 8*16-1);
- screen2.set_palette("palette");
+ MCFG_SCREEN_ADD("screen2", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_UPDATE_DEVICE("lcdc2", hd61830_device, screen_update)
+ MCFG_SCREEN_SIZE(6*40, 9*16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 6*40-1, 0, 8*16-1)
+ MCFG_SCREEN_PALETTE("palette")
- hd61830_device &lcdc1(HD61830(config, "lcdc1", 1000000)); // unknown clock
- lcdc1.set_addrmap(0, &magnum_state::magnum_lcdc);
- lcdc1.set_screen("screen1");
+ MCFG_DEVICE_ADD("lcdc1", HD61830, 1000000) // unknown clock
+ MCFG_DEVICE_ADDRESS_MAP(0, magnum_lcdc)
+ MCFG_VIDEO_SET_SCREEN("screen1")
- hd61830_device &lcdc2(HD61830(config, "lcdc2", 1000000)); // unknown clock
- lcdc2.set_addrmap(0, &magnum_state::magnum_lcdc);
- lcdc2.set_screen("screen2");
+ MCFG_DEVICE_ADD("lcdc2", HD61830, 1000000) // unknown clock
+ MCFG_DEVICE_ADDRESS_MAP(0, magnum_lcdc)
+ MCFG_VIDEO_SET_SCREEN("screen2")
- //I8275(config, "crtc", 3000000); // unknown clock
+ //MCFG_DEVICE_ADD("crtc", I8275, 3000000) // unknown clock
//WD1793(config, "fdc", 1000000); // nothing known, type or if any disks even exist, port 0x44 is possibly motor control
PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED);
SPEAKER(config, "speaker").front_center();
- BEEP(config, m_beep, 500).add_route(ALL_OUTPUTS, "speaker", 0.50); // frequency is guessed
-}
+ MCFG_DEVICE_ADD("beep", BEEP, 500) /// frequency is guessed
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.50)
+MACHINE_CONFIG_END
ROM_START( magnum )
ROM_REGION(0x20000, "bios", 0)
diff --git a/src/mame/drivers/magreel.cpp b/src/mame/drivers/magreel.cpp
index 70b56114e1a..3203c1be13e 100644
--- a/src/mame/drivers/magreel.cpp
+++ b/src/mame/drivers/magreel.cpp
@@ -118,29 +118,30 @@ void magreel_state::machine_reset()
}
-void magreel_state::magreel(machine_config &config)
-{
+MACHINE_CONFIG_START(magreel_state::magreel)
+
/* basic machine hardware - all information unknown */
-// m68000_device &maincpu(M68000(config, "maincpu", MAIN_CLOCK/12));
-// maincpu.set_addrmap(AS_PROGRAM, &magreel_state::magreel_map);
+// MCFG_DEVICE_ADD("maincpu",m68000,MAIN_CLOCK/12)
+// MCFG_DEVICE_PROGRAM_MAP(magreel_map)
/* video hardware */
-// screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
-// screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
-// screen.set_screen_update(FUNC(magreel_state::screen_update));
-// screen.set_size(32*8, 32*8);
-// screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
-// screen.set_raw(MAIN_CLOCK/2, 442, 0, 320, 264, 0, 240); /* generic NTSC video timing at 320x240 */
-// screen.set_palette("palette");
+// MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+// MCFG_SCREEN_UPDATE_DRIVER(magreel_state, screen_update)
+// MCFG_SCREEN_SIZE(32*8, 32*8)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+// MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK/2, 442, 0, 320, 264, 0, 240) /* generic NTSC video timing at 320x240 */
+// MCFG_SCREEN_PALETTE("palette")
-// GFXDECODE(config, "gfxdecode", "palette", gfx_magreel);
+// MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_magreel)
-// PALETTE(config, "palette", FUNC(magreel_state::magreel), 8)
+// MCFG_PALETTE_ADD("palette", 8)
+// MCFG_PALETTE_INIT_OWNER(magreel_state, magreel)
/* sound hardware */
SPEAKER(config, "mono").front_center();
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/magtouch.cpp b/src/mame/drivers/magtouch.cpp
index 5be7b28db81..dd3748442ed 100644
--- a/src/mame/drivers/magtouch.cpp
+++ b/src/mame/drivers/magtouch.cpp
@@ -193,17 +193,16 @@ void magtouch_state::magtouch_sb_conf(device_t *device)
MCFG_DEVICE_SLOT_INTERFACE(pc_joysticks, nullptr, true) // remove joystick
}
-void magtouch_state::magtouch(machine_config &config)
-{
+MACHINE_CONFIG_START(magtouch_state::magtouch)
/* basic machine hardware */
- I386(config, m_maincpu, 14318180*2); /* I386 ?? Mhz */
- m_maincpu->set_addrmap(AS_PROGRAM, &magtouch_state::magtouch_map);
- m_maincpu->set_addrmap(AS_IO, &magtouch_state::magtouch_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I386, 14318180*2) /* I386 ?? Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(magtouch_map)
+ MCFG_DEVICE_IO_MAP(magtouch_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
/* video hardware */
pcvideo_trident_vga(config);
- TVGA9000_VGA(config.replace(), "vga", 0);
+ MCFG_DEVICE_REPLACE("vga", TVGA9000_VGA, 0)
pcat_common(config);
@@ -211,15 +210,14 @@ void magtouch_state::magtouch(machine_config &config)
uart.out_tx_callback().set("microtouch", FUNC(microtouch_device::rx));
uart.out_int_callback().set("pic8259_1", FUNC(pic8259_device::ir4_w));
- MICROTOUCH(config, "microtouch", 9600).stx().set("ns16450_0", FUNC(ins8250_uart_device::rx_w));
+ MCFG_MICROTOUCH_ADD( "microtouch", 9600, WRITELINE("ns16450_0", ins8250_uart_device, rx_w) )
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
m_dma8237_1->out_iow_callback<1>().set(FUNC(magtouch_state::dma8237_1_dack_w));
ISA8(config, m_isabus, 0);
- m_isabus->set_memspace("maincpu", AS_PROGRAM);
- m_isabus->set_iospace("maincpu", AS_IO);
+ m_isabus->set_cputag("maincpu");
m_isabus->irq2_callback().set("pic8259_2", FUNC(pic8259_device::ir2_w));
m_isabus->irq3_callback().set("pic8259_1", FUNC(pic8259_device::ir3_w));
//m_isabus->irq4_callback().set("pic8259_1", FUNC(pic8259_device::ir4_w));
@@ -231,10 +229,10 @@ void magtouch_state::magtouch(machine_config &config)
m_isabus->drq3_callback().set("dma8237_1", FUNC(am9517a_device::dreq3_w));
// FIXME: determine ISA bus clock
- isa8_slot_device &isa1(ISA8_SLOT(config, "isa1", 0, m_isabus, magtouch_isa8_cards, "sb15", true));
- isa1.set_option_device_input_defaults("sb15", DEVICE_INPUT_DEFAULTS_NAME(magtouch_sb_def));
- isa1.set_option_machine_config("sb15", magtouch_sb_conf);
-}
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "isa", magtouch_isa8_cards, "sb15", true)
+ MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("sb15", magtouch_sb_def)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("sb15", magtouch_sb_conf)
+MACHINE_CONFIG_END
ROM_START(magtouch)
diff --git a/src/mame/drivers/mainsnk.cpp b/src/mame/drivers/mainsnk.cpp
index 6f869be918d..408822e302a 100644
--- a/src/mame/drivers/mainsnk.cpp
+++ b/src/mame/drivers/mainsnk.cpp
@@ -375,24 +375,24 @@ GFXDECODE_END
-void mainsnk_state::mainsnk(machine_config &config)
-{
- Z80(config, m_maincpu, 3360000);
- m_maincpu->set_addrmap(AS_PROGRAM, &mainsnk_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(mainsnk_state::irq0_line_hold));
+MACHINE_CONFIG_START(mainsnk_state::mainsnk)
+
+ MCFG_DEVICE_ADD("maincpu", Z80, 3360000)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mainsnk_state, irq0_line_hold)
- Z80(config, m_audiocpu, 4000000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &mainsnk_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &mainsnk_state::sound_portmap);
- m_audiocpu->set_periodic_int(FUNC(mainsnk_state::irq0_line_assert), attotime::from_hz(244));
+ MCFG_DEVICE_ADD("audiocpu", Z80,4000000)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(mainsnk_state, irq0_line_assert, 244)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(36*8, 28*8);
- screen.set_visarea(0*8, 36*8-1, 1*8, 28*8-1);
- screen.set_screen_update(FUNC(mainsnk_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(36*8, 28*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mainsnk_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mainsnk);
PALETTE(config, m_palette, FUNC(mainsnk_state::mainsnk_palette), 0x400);
@@ -406,7 +406,7 @@ void mainsnk_state::mainsnk(machine_config &config)
AY8910(config, "ay1", 2000000).add_route(ALL_OUTPUTS, "mono", 0.35);
AY8910(config, "ay2", 2000000).add_route(ALL_OUTPUTS, "mono", 0.35);
-}
+MACHINE_CONFIG_END
ROM_START(mainsnk)
diff --git a/src/mame/drivers/majorpkr.cpp b/src/mame/drivers/majorpkr.cpp
index 486413c360b..a632af8ca67 100644
--- a/src/mame/drivers/majorpkr.cpp
+++ b/src/mame/drivers/majorpkr.cpp
@@ -1004,13 +1004,12 @@ GFXDECODE_END
* Machine Drivers *
*************************/
-void majorpkr_state::majorpkr(machine_config &config)
-{
+MACHINE_CONFIG_START(majorpkr_state::majorpkr)
/* basic machine hardware */
- z80_device &maincpu(Z80(config, "maincpu", CPU_CLOCK)); // 6 MHz.
- maincpu.set_addrmap(AS_PROGRAM, &majorpkr_state::map);
- maincpu.set_addrmap(AS_IO, &majorpkr_state::portmap);
- maincpu.set_vblank_int("screen", FUNC(majorpkr_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK) // 6 MHz.
+ MCFG_DEVICE_PROGRAM_MAP(map)
+ MCFG_DEVICE_IO_MAP(portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", majorpkr_state, irq0_line_hold)
ADDRESS_MAP_BANK(config, "palette_bank").set_map(&majorpkr_state::palettebanks).set_options(ENDIANNESS_LITTLE, 8, 13, 0x800);
ADDRESS_MAP_BANK(config, "vram_bank").set_map(&majorpkr_state::vrambanks).set_options(ENDIANNESS_LITTLE, 8, 13, 0x800);
@@ -1018,10 +1017,10 @@ void majorpkr_state::majorpkr(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(CRTC_CLOCK*16, (47+1)*16, 0, (36*16)-16, (36+1)*8, 0, (28*8)); // from CRTC registers.
- screen.set_screen_update(FUNC(majorpkr_state::screen_update_majorpkr));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(CRTC_CLOCK*16, (47+1)*16, 0, (36*16)-16, (36+1)*8, 0, (28*8)) // from CRTC registers.
+ MCFG_SCREEN_UPDATE_DRIVER(majorpkr_state, screen_update_majorpkr)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_majorpkr);
@@ -1035,8 +1034,9 @@ void majorpkr_state::majorpkr(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", OKI_CLOCK, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 verified.
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, OKI_CLOCK, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 verified.
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/manohman.cpp b/src/mame/drivers/manohman.cpp
index 57c29b77ebe..11230025558 100644
--- a/src/mame/drivers/manohman.cpp
+++ b/src/mame/drivers/manohman.cpp
@@ -8,7 +8,7 @@
Preliminary driver by Roberto Fresca.
- German board game similar to Ludo, derived from the Indian game Parchisi.
+ German board game similar to Ludo, derivated from the indian game Parchisi.
Coin-operated machine for 1-4 players. No screen, just artwork and lamps.
The machine was designed for pubs, etc...
@@ -242,25 +242,25 @@ INPUT_PORTS_END
* Machine Config *
*********************************************/
-void manohman_state::manohman(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(8'000'000)); // MC68000P8
- m_maincpu->set_addrmap(AS_PROGRAM, &manohman_state::mem_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(manohman_state::iack_handler));
+MACHINE_CONFIG_START(manohman_state::manohman)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(8'000'000)) // MC68000P8
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(manohman_state, iack_handler)
PIT68230(config, m_pit, XTAL(8'000'000)); // MC68230P8
m_pit->timer_irq_callback().set_inputline("maincpu", M68K_IRQ_2);
- MC68681(config, m_duart, XTAL(3'686'400));
- m_duart->irq_cb().set_inputline(m_maincpu, M68K_IRQ_4);
+ MCFG_DEVICE_ADD("duart", MC68681, XTAL(3'686'400))
+ MCFG_MC68681_IRQ_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
- MSM6242(config, "rtc", XTAL(32'768)); // M62X42B
+ MCFG_DEVICE_ADD("rtc", MSM6242, XTAL(32'768)) // M62X42B
NVRAM(config, "nvram", nvram_device::DEFAULT_NONE); // KM6264BL-10 x2 + MAX696CFL + battery
SPEAKER(config, "mono").front_center();
- SAA1099(config, "saa", XTAL(8'000'000) / 2).add_route(ALL_OUTPUTS, "mono", 0.10); // clock not verified
-}
+ MCFG_DEVICE_ADD("saa", SAA1099, XTAL(8'000'000) / 2) // clock not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
+MACHINE_CONFIG_END
/*********************************************
diff --git a/src/mame/drivers/mappy.cpp b/src/mame/drivers/mappy.cpp
index f41d55efb89..38067a4ca1f 100644
--- a/src/mame/drivers/mappy.cpp
+++ b/src/mame/drivers/mappy.cpp
@@ -1334,7 +1334,7 @@ void mappy_state::superpac_common(machine_config &config)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
- config.m_minimum_quantum = attotime::from_hz(6000); // 100 CPU slices per frame - a high value to ensure proper synchronization of the CPUs
+ config.m_minimum_quantum = attotime::from_hz(6000); // 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs
ls157_device &dipmux(LS157(config, "dipmux"));
dipmux.a_in_callback().set_ioport("DSW2");
@@ -1417,6 +1417,7 @@ void mappy_state::grobda(machine_config &config)
/* sound hardware */
DAC_4BIT_BINARY_WEIGHTED(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.275); // alternate route to 15XX-related DAC?
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
@@ -1445,7 +1446,7 @@ void mappy_state::phozon(machine_config &config)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
- config.m_minimum_quantum = attotime::from_hz(6000); // 100 CPU slices per frame - a high value to ensure proper synchronization of the CPUs
+ config.m_minimum_quantum = attotime::from_hz(6000); // 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs
NAMCO_58XX(config, m_namcoio[0], 0);
m_namcoio[0]->in_callback<0>().set_ioport("COINS");
@@ -1504,7 +1505,7 @@ void mappy_state::mappy_common(machine_config &config)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
- config.m_minimum_quantum = attotime::from_hz(6000); // 100 CPU slices per frame - a high value to ensure proper synchronization of the CPUs
+ config.m_minimum_quantum = attotime::from_hz(6000); // 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs
ls157_device &dipmux(LS157(config, "dipmux"));
dipmux.a_in_callback().set_ioport("DSW2");
@@ -1512,7 +1513,7 @@ void mappy_state::mappy_common(machine_config &config)
/* video hardware */
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mappy);
- PALETTE(config, m_palette, FUNC(mappy_state::mappy_palette), 64*4+16*16, 32);
+ PALETTE(config, m_palette, FUNC(mappy_state::mappy_palette), 64*4+16*4, 32);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
diff --git a/src/mame/drivers/marineb.cpp b/src/mame/drivers/marineb.cpp
index 61b07ee3c56..b1ac1423195 100644
--- a/src/mame/drivers/marineb.cpp
+++ b/src/mame/drivers/marineb.cpp
@@ -538,12 +538,12 @@ WRITE_LINE_MEMBER(marineb_state::wanted_vblank_irq)
}
-void marineb_state::marineb(machine_config &config)
-{
+MACHINE_CONFIG_START(marineb_state::marineb)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK); /* 3 MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &marineb_state::marineb_map);
- m_maincpu->set_addrmap(AS_IO, &marineb_state::marineb_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK) /* 3 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(marineb_map)
+ MCFG_DEVICE_IO_MAP(marineb_io_map)
LS259(config, m_outlatch);
m_outlatch->q_out_cb<0>().set(FUNC(marineb_state::nmi_mask_w));
@@ -551,14 +551,14 @@ void marineb_state::marineb(machine_config &config)
m_outlatch->q_out_cb<2>().set(FUNC(marineb_state::flipscreen_x_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(5000) /* frames per second, vblank duration */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(marineb_state::screen_update_marineb));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(marineb_state::marineb_vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(5000) /* frames per second, vblank duration */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(marineb_state, screen_update_marineb)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, marineb_state, marineb_vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_marineb);
PALETTE(config, m_palette, FUNC(marineb_state::marineb_palette), 256);
@@ -566,17 +566,19 @@ void marineb_state::marineb(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
AY8910(config, "ay1", SOUND_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
-void marineb_state::changes(machine_config &config)
-{
+MACHINE_CONFIG_START(marineb_state::changes)
marineb(config);
+ /* basic machine hardware */
+
/* video hardware */
- m_gfxdecode->set_info(gfx_changes);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(marineb_state::screen_update_changes));
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_changes)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(marineb_state, screen_update_changes)
+MACHINE_CONFIG_END
void marineb_state::springer(machine_config &config)
@@ -590,45 +592,50 @@ void marineb_state::springer(machine_config &config)
}
-void marineb_state::hoccer(machine_config &config)
-{
+MACHINE_CONFIG_START(marineb_state::hoccer)
marineb(config);
+ /* basic machine hardware */
+
/* video hardware */
- m_gfxdecode->set_info(gfx_hoccer);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(marineb_state::screen_update_hoccer));
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_hoccer)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(marineb_state, screen_update_hoccer)
+MACHINE_CONFIG_END
-void marineb_state::wanted(machine_config &config)
-{
+MACHINE_CONFIG_START(marineb_state::wanted)
marineb(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &marineb_state::wanted_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(wanted_io_map)
m_outlatch->q_out_cb<0>().set(FUNC(marineb_state::irq_mask_w));
/* video hardware */
- m_gfxdecode->set_info(gfx_wanted);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(marineb_state::screen_update_springer));
- subdevice<screen_device>("screen")->screen_vblank().set(FUNC(marineb_state::wanted_vblank_irq));
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_wanted)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(marineb_state, screen_update_springer)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, marineb_state, wanted_vblank_irq))
// sound hardware (PSG type verified only for bcruzm12)
AY8912(config.replace(), "ay1", SOUND_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.25);
AY8912(config, "ay2", SOUND_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
-void marineb_state::hopprobo(machine_config &config)
-{
+MACHINE_CONFIG_START(marineb_state::hopprobo)
marineb(config);
+ /* basic machine hardware */
+
/* video hardware */
- m_gfxdecode->set_info(gfx_hopprobo);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(marineb_state::screen_update_hopprobo));
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_hopprobo)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(marineb_state, screen_update_hopprobo)
+MACHINE_CONFIG_END
void marineb_state::bcruzm12(machine_config &config)
diff --git a/src/mame/drivers/marinedt.cpp b/src/mame/drivers/marinedt.cpp
index c018c2fdd30..ff7d507c187 100644
--- a/src/mame/drivers/marinedt.cpp
+++ b/src/mame/drivers/marinedt.cpp
@@ -626,19 +626,19 @@ void marinedt_state::marinedt_palette(palette_device &palette) const
}
}
-void marinedt_state::marinedt(machine_config &config)
-{
+MACHINE_CONFIG_START(marinedt_state::marinedt)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLOCK/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &marinedt_state::marinedt_map);
- m_maincpu->set_addrmap(AS_IO, &marinedt_state::marinedt_io);
- m_maincpu->set_vblank_int("screen", FUNC(marinedt_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu",Z80,MAIN_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(marinedt_map)
+ MCFG_DEVICE_IO_MAP(marinedt_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", marinedt_state, irq0_line_hold)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_screen_update(FUNC(marinedt_state::screen_update));
- m_screen->set_raw(MAIN_CLOCK/2, 328, 0, 256, 263, 32, 256); // template to get ~60 fps
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(marinedt_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK/2, 328, 0, 256, 263, 32, 256) // template to get ~60 fps
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_marinedt);
@@ -647,7 +647,7 @@ void marinedt_state::marinedt(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
//AY8910(config, "aysnd", MAIN_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/mario.cpp b/src/mame/drivers/mario.cpp
index c937aa5e377..fa40440ebc3 100644
--- a/src/mame/drivers/mario.cpp
+++ b/src/mame/drivers/mario.cpp
@@ -335,12 +335,12 @@ WRITE_LINE_MEMBER(mario_state::vblank_irq)
m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
-void mario_state::mario_base(machine_config &config)
-{
+MACHINE_CONFIG_START(mario_state::mario_base)
+
/* basic machine hardware */
- Z80(config, m_maincpu, Z80_CLOCK); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &mario_state::mario_map);
- m_maincpu->set_addrmap(AS_IO, &mario_state::mario_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, Z80_CLOCK) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(mario_map)
+ MCFG_DEVICE_IO_MAP(mario_io_map)
/* devices */
Z80DMA(config, m_z80dma, Z80_CLOCK);
@@ -359,15 +359,16 @@ void mario_state::mario_base(machine_config &config)
mainlatch.q_out_cb<7>().set(FUNC(mario_state::coin_counter_2_w)); // COUNTER 1 (misnumbered on schematic)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- screen.set_screen_update(FUNC(mario_state::screen_update));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(mario_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(mario_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mario_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mario);
PALETTE(config, m_palette, FUNC(mario_state::mario_palette), 256);
-}
+
+MACHINE_CONFIG_END
void mario_state::mario(machine_config &config)
{
@@ -375,15 +376,15 @@ void mario_state::mario(machine_config &config)
mario_audio(config);
}
-void mario_state::masao(machine_config &config)
-{
+MACHINE_CONFIG_START(mario_state::masao)
mario_base(config);
- m_maincpu->set_clock(4000000); /* 4.000 MHz (?) */
- m_maincpu->set_addrmap(AS_PROGRAM, &mario_state::masao_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(4000000) /* 4.000 MHz (?) */
+ MCFG_DEVICE_PROGRAM_MAP(masao_map)
/* sound hardware */
masao_audio(config);
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/markham.cpp b/src/mame/drivers/markham.cpp
index b0f4e3a6b63..5d7039eceec 100644
--- a/src/mame/drivers/markham.cpp
+++ b/src/mame/drivers/markham.cpp
@@ -242,8 +242,8 @@ void markham_state::markham_slave_map(address_map &map)
map(0x0000, 0x5fff).rom();
map(0x8000, 0x87ff).ram().share("share1");
- map(0xc000, 0xc000).w("sn1", FUNC(sn76496_device::write));
- map(0xc001, 0xc001).w("sn2", FUNC(sn76496_device::write));
+ map(0xc000, 0xc000).w("sn1", FUNC(sn76496_device::command_w));
+ map(0xc001, 0xc001).w("sn2", FUNC(sn76496_device::command_w));
map(0xc002, 0xc002).nopw(); /* unknown */
map(0xc003, 0xc003).nopw(); /* unknown */
@@ -255,8 +255,8 @@ void markham_state::strnskil_slave_map(address_map &map)
map(0xc000, 0xc7ff).ram().share("spriteram");
map(0xc800, 0xcfff).ram().share("share1");
- map(0xd801, 0xd801).w("sn1", FUNC(sn76496_device::write));
- map(0xd802, 0xd802).w("sn2", FUNC(sn76496_device::write));
+ map(0xd801, 0xd801).w("sn1", FUNC(sn76496_device::command_w));
+ map(0xd802, 0xd802).w("sn2", FUNC(sn76496_device::command_w));
}
/****************************************************************************/
@@ -543,24 +543,24 @@ static GFXDECODE_START( gfx_markham )
GFXDECODE_ENTRY( "gfx1", 0x0000, spritelayout, 0, 64 )
GFXDECODE_END
-void markham_state::markham(machine_config &config)
-{
+MACHINE_CONFIG_START(markham_state::markham)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK/2); /* 4.000MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &markham_state::markham_master_map);
- m_maincpu->set_vblank_int("screen", FUNC(markham_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK/2) /* 4.000MHz */
+ MCFG_DEVICE_PROGRAM_MAP(markham_master_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", markham_state, irq0_line_hold)
- Z80(config, m_subcpu, CPU_CLOCK/2); /* 4.000MHz */
- m_subcpu->set_addrmap(AS_PROGRAM, &markham_state::markham_slave_map);
- m_subcpu->set_vblank_int("screen", FUNC(markham_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("subcpu", Z80, CPU_CLOCK/2) /* 4.000MHz */
+ MCFG_DEVICE_PROGRAM_MAP(markham_slave_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", markham_state, irq0_line_hold)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(markham_state::screen_update_markham));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(markham_state, screen_update_markham)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_markham);
PALETTE(config, m_palette, FUNC(markham_state::markham_palette), 1024, 256);
@@ -568,36 +568,43 @@ void markham_state::markham(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76496(config, m_sn[0], CPU_CLOCK/2).add_route(ALL_OUTPUTS, "mono", 0.75);
+ MCFG_DEVICE_ADD("sn1", SN76496, CPU_CLOCK/2)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
- SN76496(config, m_sn[1], CPU_CLOCK/2).add_route(ALL_OUTPUTS, "mono", 0.75);
-}
+ MCFG_DEVICE_ADD("sn2", SN76496, CPU_CLOCK/2)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(markham_state::strnskil)
-void markham_state::strnskil(machine_config &config)
-{
markham(config);
/* basic machine hardware */
- Z80(config.replace(), m_maincpu, CPU_CLOCK/2); /* 4.000MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &markham_state::strnskil_master_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(markham_state::strnskil_scanline), "screen", 0, 1);
+ MCFG_DEVICE_REMOVE("maincpu")
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK/2) /* 4.000MHz */
+ MCFG_DEVICE_PROGRAM_MAP(strnskil_master_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", markham_state, strnskil_scanline, "screen", 0, 1)
- Z80(config.replace(), m_subcpu, CPU_CLOCK/2); /* 4.000MHz */
- m_subcpu->set_addrmap(AS_PROGRAM, &markham_state::strnskil_slave_map);
- m_subcpu->set_periodic_int(FUNC(markham_state::irq0_line_hold), attotime::from_hz(2*(PIXEL_CLOCK/HTOTAL/VTOTAL)));
+ MCFG_DEVICE_REMOVE("subcpu")
+ MCFG_DEVICE_ADD("subcpu", Z80, CPU_CLOCK/2) /* 4.000MHz */
+ MCFG_DEVICE_PROGRAM_MAP(strnskil_slave_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(markham_state, irq0_line_hold, 2*(PIXEL_CLOCK/HTOTAL/VTOTAL))
/* video hardware */
- m_screen->set_screen_update(FUNC(markham_state::screen_update_strnskil));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(markham_state, screen_update_strnskil)
MCFG_VIDEO_START_OVERRIDE(markham_state, strnskil)
/* sound hardware */
- m_sn[0]->set_clock(CPU_CLOCK/4);
-}
+ MCFG_DEVICE_MODIFY("sn1")
+ MCFG_DEVICE_CLOCK(CPU_CLOCK/4)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(markham_state::banbam)
-void markham_state::banbam(machine_config &config)
-{
strnskil(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &markham_state::banbam_master_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(banbam_master_map)
MB8841(config, m_mcu, CPU_CLOCK/2); /* 4.000MHz */
// m_mcu->read_k().set(FUNC(markham_state::mcu_portk_r));
@@ -612,7 +619,7 @@ void markham_state::banbam(machine_config &config)
// m_mcu->read_r<3>().set(FUNC(markham_state::mcu_port_r3_r));
// m_mcu->write_r<3>().set(FUNC(markham_state::mcu_port_r3_w));
m_mcu->set_disable();
-}
+MACHINE_CONFIG_END
/****************************************************************************/
diff --git a/src/mame/drivers/marywu.cpp b/src/mame/drivers/marywu.cpp
index 79c03162f5b..0d99de7f3f2 100644
--- a/src/mame/drivers/marywu.cpp
+++ b/src/mame/drivers/marywu.cpp
@@ -186,12 +186,11 @@ void marywu_state::machine_start()
m_leds.resolve();
}
-void marywu_state::marywu(machine_config &config)
-{
+MACHINE_CONFIG_START(marywu_state::marywu)
/* basic machine hardware */
- i80c31_device &maincpu(I80C31(config, "maincpu", XTAL(10'738'635))); //actual CPU is a Winbond w78c31b-24
- maincpu.set_addrmap(AS_PROGRAM, &marywu_state::program_map);
- maincpu.set_addrmap(AS_IO, &marywu_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", I80C31, XTAL(10'738'635)) //actual CPU is a Winbond w78c31b-24
+ MCFG_DEVICE_PROGRAM_MAP(program_map)
+ MCFG_DEVICE_IO_MAP(io_map)
//TODO: figure out what each bit is mapped to in the 80c31 ports P1 and P3
/* Keyboard & display interface */
@@ -214,7 +213,7 @@ void marywu_state::marywu(machine_config &config)
ay2.add_route(ALL_OUTPUTS, "mono", 0.50);
ay2.port_a_write_callback().set(FUNC(marywu_state::ay2_port_a_w));
ay2.port_b_write_callback().set(FUNC(marywu_state::ay2_port_b_w));
-}
+MACHINE_CONFIG_END
ROM_START( marywu )
ROM_REGION( 0x8000, "maincpu", 0 )
diff --git a/src/mame/drivers/mastboyo.cpp b/src/mame/drivers/mastboyo.cpp
index 344f94cb2f8..fbb79301379 100644
--- a/src/mame/drivers/mastboyo.cpp
+++ b/src/mame/drivers/mastboyo.cpp
@@ -196,26 +196,26 @@ void mastboyo_state::machine_start()
}
-void mastboyo_state::mastboyo(machine_config &config)
-{
+MACHINE_CONFIG_START(mastboyo_state::mastboyo)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 20_MHz_XTAL / 6);
- m_maincpu->set_addrmap(AS_PROGRAM, &mastboyo_state::mastboyo_map);
- m_maincpu->set_addrmap(AS_IO, &mastboyo_state::mastboyo_portmap);
- m_maincpu->set_periodic_int(FUNC(mastboyo_state::irq0_line_hold), attotime::from_hz(256.244f)); // not sure, INT0 pin was measured at 256.244Hz
+ MCFG_DEVICE_ADD("maincpu", Z80, 20_MHz_XTAL / 6)
+ MCFG_DEVICE_PROGRAM_MAP(mastboyo_map)
+ MCFG_DEVICE_IO_MAP(mastboyo_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(mastboyo_state, irq0_line_hold, 256.244f) // not sure, INT0 pin was measured at 256.244Hz
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 2*8, 256-2*8-1);
- screen.set_screen_update(FUNC(mastboyo_state::screen_update_mastboyo));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 2*8, 256-2*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mastboyo_state, screen_update_mastboyo)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, "palette", gfx_mastboyo);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mastboyo)
PALETTE(config, "palette", FUNC(mastboyo_state::mastboyo_palette), 256);
@@ -226,7 +226,8 @@ void mastboyo_state::mastboyo(machine_config &config)
aysnd.port_a_read_callback().set_ioport("DSW"); // DSW
aysnd.port_b_read_callback().set_ioport("IN0"); // player inputs
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+
+MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/matmania.cpp b/src/mame/drivers/matmania.cpp
index 003d1281534..8a70b2e0560 100644
--- a/src/mame/drivers/matmania.cpp
+++ b/src/mame/drivers/matmania.cpp
@@ -302,11 +302,11 @@ GFXDECODE_END
void matmania_state::matmania(machine_config &config)
{
/* basic machine hardware */
- M6502(config, m_maincpu, 1500000); /* 1.5 MHz ???? */
+ M6502(config, m_maincpu, 1500000); /* 1.5 MHz ???? */
m_maincpu->set_addrmap(AS_PROGRAM, &matmania_state::matmania_map);
m_maincpu->set_vblank_int("screen", FUNC(matmania_state::irq0_line_hold));
- M6502(config, m_audiocpu, 1200000); /* 1.2 MHz ???? */
+ M6502(config, m_audiocpu, 1200000); /* 1.2 MHz ???? */
m_audiocpu->set_addrmap(AS_PROGRAM, &matmania_state::matmania_sound_map);
m_audiocpu->set_periodic_int(FUNC(matmania_state::nmi_line_pulse), attotime::from_hz(15*60)); /* ???? */
@@ -334,6 +334,7 @@ void matmania_state::matmania(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
@@ -375,6 +376,7 @@ void matmania_state::maniach(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/maxaflex.cpp b/src/mame/drivers/maxaflex.cpp
index 1202d575b79..87e3fcfd91a 100644
--- a/src/mame/drivers/maxaflex.cpp
+++ b/src/mame/drivers/maxaflex.cpp
@@ -308,7 +308,7 @@ void maxaflex_state::machine_reset()
{
atari_common_state::machine_reset();
- m_pokey->write(15, 0);
+ m_pokey->write(machine().dummy_space(), 15, 0);
// Supervisor board reset
m_portb_out = 0xff;
diff --git a/src/mame/drivers/maygay1b.cpp b/src/mame/drivers/maygay1b.cpp
index 6be81bbb2d6..cb203d2c0eb 100644
--- a/src/mame/drivers/maygay1b.cpp
+++ b/src/mame/drivers/maygay1b.cpp
@@ -439,7 +439,7 @@ WRITE_LINE_MEMBER(maygay1b_state::srsel_w)
WRITE8_MEMBER(maygay1b_state::latch_ch2_w)
{
- m_msm6376->write(data&0x7f);
+ m_msm6376->write(space, 0, data&0x7f);
m_msm6376->ch2_w(data&0x80);
}
@@ -762,10 +762,10 @@ READ8_MEMBER(maygay1b_state::mcu_port2_r)
// machine driver for maygay m1 board /////////////////////////////////
-void maygay1b_state::maygay_m1(machine_config &config)
-{
- MC6809(config, m_maincpu, M1_MASTER_CLOCK/2); // claimed to be 4 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &maygay1b_state::m1_memmap);
+MACHINE_CONFIG_START(maygay1b_state::maygay_m1)
+
+ MCFG_DEVICE_ADD("maincpu", MC6809, M1_MASTER_CLOCK/2) // claimed to be 4 MHz
+ MCFG_DEVICE_PROGRAM_MAP(m1_memmap)
I80C51(config, m_mcu, 2000000); // EP840034.A-P-80C51AVW
m_mcu->port_in_cb<0>().set(FUNC(maygay1b_state::mcu_port0_r));
@@ -775,9 +775,9 @@ void maygay1b_state::maygay_m1(machine_config &config)
m_mcu->port_out_cb<2>().set(FUNC(maygay1b_state::mcu_port2_w));
m_mcu->port_out_cb<3>().set(FUNC(maygay1b_state::mcu_port3_w));
- MC68681(config, m_duart68681, M1_DUART_CLOCK);
- m_duart68681->irq_cb().set(FUNC(maygay1b_state::duart_irq_handler));
- m_duart68681->inport_cb().set(FUNC(maygay1b_state::m1_duart_r));;
+ MCFG_DEVICE_ADD("duart68681", MC68681, M1_DUART_CLOCK)
+ MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, maygay1b_state, duart_irq_handler))
+ MCFG_MC68681_INPORT_CALLBACK(READ8(*this, maygay1b_state, m1_duart_r))
pia6821_device &pia(PIA6821(config, "pia", 0));
pia.writepa_handler().set(FUNC(maygay1b_state::m1_pia_porta_w));
@@ -801,15 +801,15 @@ void maygay1b_state::maygay_m1(machine_config &config)
m_ay->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
m_ay->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
- ym2413_device &ymsnd(YM2413(config, "ymsnd", M1_MASTER_CLOCK/4));
- ymsnd.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- ymsnd.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("ymsnd", YM2413, M1_MASTER_CLOCK/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
- OKIM6376(config, m_msm6376, 102400); //? Seems to work well with samples, but unconfirmed
- m_msm6376->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_msm6376->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_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)
- TIMER(config, "nmitimer").configure_periodic(FUNC(maygay1b_state::maygay1b_nmitimer_callback), attotime::from_hz(75)); // freq?
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("nmitimer", maygay1b_state, maygay1b_nmitimer_callback, attotime::from_hz(75)) // freq?
i8279_device &kbdc(I8279(config, "i8279", M1_MASTER_CLOCK/4)); // unknown clock
kbdc.out_sl_callback().set(FUNC(maygay1b_state::scanlines_w)); // scan SL lines
@@ -836,30 +836,30 @@ void maygay1b_state::maygay_m1(machine_config &config)
REEL(config, m_reels[5], STARPOINT_48STEP_REEL, 1, 3, 0x09, 4);
m_reels[5]->optic_handler().set(FUNC(maygay1b_state::reel_optic_cb<5>));
- METERS(config, m_meters, 0).set_number(8);
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(8)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
config.set_default_layout(layout_maygay1b);
-}
+MACHINE_CONFIG_END
-void maygay1b_state::maygay_m1_no_oki(machine_config &config)
-{
+MACHINE_CONFIG_START(maygay1b_state::maygay_m1_no_oki)
maygay_m1(config);
- config.device_remove("msm6376");
-}
+ MCFG_DEVICE_REMOVE("msm6376")
+MACHINE_CONFIG_END
-void maygay1b_state::maygay_m1_nec(machine_config &config)
-{
+MACHINE_CONFIG_START(maygay1b_state::maygay_m1_nec)
maygay_m1(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &maygay1b_state::m1_nec_memmap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(m1_nec_memmap)
- config.device_remove("msm6376");
+ MCFG_DEVICE_REMOVE("msm6376")
- UPD7759(config, m_upd7759);
- m_upd7759->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_upd7759->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("upd", UPD7759)
+ 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)
{
diff --git a/src/mame/drivers/maygayep.cpp b/src/mame/drivers/maygayep.cpp
index 4d3399db597..858796660b8 100644
--- a/src/mame/drivers/maygayep.cpp
+++ b/src/mame/drivers/maygayep.cpp
@@ -105,15 +105,15 @@ void maygayep_state::init_maygayep()
}
-void maygayep_state::maygayep(machine_config &config)
-{
- H83002(config, m_maincpu, 16000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &maygayep_state::maygayep_map);
+MACHINE_CONFIG_START(maygayep_state::maygayep)
+ MCFG_DEVICE_ADD("maincpu", H83002, 16000000 )
+ MCFG_DEVICE_PROGRAM_MAP( maygayep_map )
SPEAKER(config, "mono").front_center();
- YMZ280B(config, "ymz", 10000000).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, 10000000 )
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
#define MISSING_SOUND \
ROM_REGION( 0x100000, "ymz", ROMREGION_ERASE00 ) \
diff --git a/src/mame/drivers/maygaysw.cpp b/src/mame/drivers/maygaysw.cpp
index 4fb1f75042d..137b5b72fbc 100644
--- a/src/mame/drivers/maygaysw.cpp
+++ b/src/mame/drivers/maygaysw.cpp
@@ -131,12 +131,12 @@ static INPUT_PORTS_START( maygayew )
INPUT_PORTS_END
-void maygayew_state::maygayew(machine_config &config)
-{
+MACHINE_CONFIG_START(maygayew_state::maygayew)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 8000000); // MC68306FC16 - standard 68000 core + peripherals
- m_maincpu->set_addrmap(AS_PROGRAM, &maygayew_state::maygayew_map);
-}
+ MCFG_DEVICE_ADD("maincpu", M68000,8000000) // MC68306FC16 - standard 68000 core + peripherals
+ MCFG_DEVICE_PROGRAM_MAP(maygayew_map)
+MACHINE_CONFIG_END
ROM_START( mg_gbr )
ROM_REGION( 0x040000, "mainrom", 0 )
diff --git a/src/mame/drivers/maygayv1.cpp b/src/mame/drivers/maygayv1.cpp
index 5bc77116c26..f027400471f 100644
--- a/src/mame/drivers/maygayv1.cpp
+++ b/src/mame/drivers/maygayv1.cpp
@@ -878,10 +878,9 @@ void maygayv1_state::machine_reset()
}
-void maygayv1_state::maygayv1(machine_config &config)
-{
- M68000(config, m_maincpu, MASTER_CLOCK / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &maygayv1_state::main_map);
+MACHINE_CONFIG_START(maygayv1_state::maygayv1)
+ MCFG_DEVICE_ADD("maincpu", M68000, MASTER_CLOCK / 2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
I8052(config, m_soundcpu, SOUND_CLOCK);
m_soundcpu->set_addrmap(AS_PROGRAM, &maygayv1_state::sound_prg);
@@ -900,20 +899,20 @@ void maygayv1_state::maygayv1(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* TODO: Use real video timings */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(640, 300);
- screen.set_visarea(0, 640 - 1, 0, 300 - 1);
- screen.set_screen_update(FUNC(maygayv1_state::screen_update_maygayv1));
- screen.screen_vblank().set(FUNC(maygayv1_state::screen_vblank_maygayv1));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(640, 300)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640 - 1, 0, 300 - 1)
+ MCFG_SCREEN_UPDATE_DRIVER(maygayv1_state, screen_update_maygayv1)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, maygayv1_state, screen_vblank_maygayv1))
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, "palette").set_entries(16);
+ MCFG_PALETTE_ADD("palette", 16)
- MC68681(config, m_duart68681, DUART_CLOCK);
- m_duart68681->irq_cb().set(FUNC(maygayv1_state::duart_irq_handler));
- m_duart68681->a_tx_cb().set(FUNC(maygayv1_state::duart_txa));;
+ MCFG_DEVICE_ADD("duart68681", MC68681, DUART_CLOCK)
+ MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, maygayv1_state, duart_irq_handler))
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE(*this, maygayv1_state, duart_txa))
i8279_device &kbdc(I8279(config, "i8279", MASTER_CLOCK/4)); // unknown clock
kbdc.out_sl_callback().set(FUNC(maygayv1_state::strobe_w)); // scan SL lines
@@ -922,10 +921,12 @@ void maygayv1_state::maygayv1(machine_config &config)
SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", MASTER_CLOCK / 4).add_route(ALL_OUTPUTS, "mono", 0.8);
+ MCFG_DEVICE_ADD("ymsnd",YM2413, MASTER_CLOCK / 4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.8)
- UPD7759(config, m_upd7759).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("upd",UPD7759)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/mazerbla.cpp b/src/mame/drivers/mazerbla.cpp
index c5cdaa330d3..5ccac260c7e 100644
--- a/src/mame/drivers/mazerbla.cpp
+++ b/src/mame/drivers/mazerbla.cpp
@@ -973,85 +973,85 @@ void mazerbla_state::machine_reset()
}
}
-void mazerbla_state::mazerbla(machine_config &config)
-{
+MACHINE_CONFIG_START(mazerbla_state::mazerbla)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK); /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */
- m_maincpu->set_addrmap(AS_PROGRAM, &mazerbla_state::mazerbla_map);
- m_maincpu->set_addrmap(AS_IO, &mazerbla_state::mazerbla_io_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(mazerbla_state::irq_callback));
-
- Z80(config, m_subcpu, MASTER_CLOCK); /* 4 MHz, NMI, IM1 INT */
- m_subcpu->set_addrmap(AS_PROGRAM, &mazerbla_state::mazerbla_cpu2_map);
- m_subcpu->set_addrmap(AS_IO, &mazerbla_state::mazerbla_cpu2_io_map);
- m_subcpu->set_periodic_int(FUNC(mazerbla_state::irq0_line_hold), attotime::from_hz(400)); /* frequency in Hz */
-
- z80_device &sub2(Z80(config, "sub2", MASTER_CLOCK)); /* 4 MHz, no NMI, IM1 INT */
- sub2.set_addrmap(AS_PROGRAM, &mazerbla_state::mazerbla_cpu3_map);
- sub2.set_addrmap(AS_IO, &mazerbla_state::mazerbla_cpu3_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK) /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */
+ MCFG_DEVICE_PROGRAM_MAP(mazerbla_map)
+ MCFG_DEVICE_IO_MAP(mazerbla_io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(mazerbla_state,irq_callback)
+
+ MCFG_DEVICE_ADD("sub", Z80, MASTER_CLOCK) /* 4 MHz, NMI, IM1 INT */
+ MCFG_DEVICE_PROGRAM_MAP(mazerbla_cpu2_map)
+ MCFG_DEVICE_IO_MAP(mazerbla_cpu2_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(mazerbla_state, irq0_line_hold, 400) /* frequency in Hz */
+
+ MCFG_DEVICE_ADD("sub2", Z80, MASTER_CLOCK) /* 4 MHz, no NMI, IM1 INT */
+ MCFG_DEVICE_PROGRAM_MAP(mazerbla_cpu3_map)
+ MCFG_DEVICE_IO_MAP(mazerbla_cpu3_io_map)
/* (vblank related ??) int generated by a custom video processor
and cleared on ANY port access.
but handled differently for now
*/
- sub2.set_vblank_int("screen", FUNC(mazerbla_state::irq0_line_hold));
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mazerbla_state, irq0_line_hold)
/* synchronization forced on the fly */
- MB_VCU(config, m_vcu, SOUND_CLOCK/4);
- m_vcu->set_cpu_tag("sub2");
- m_vcu->set_palette_tag("palette");
+ MCFG_DEVICE_ADD("vcu", MB_VCU, SOUND_CLOCK/4)
+ MCFG_MB_VCU_CPU("sub2")
+ MCFG_MB_VCU_PALETTE("palette")
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(40*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
- m_screen->set_screen_update(FUNC(mazerbla_state::screen_update_mazerbla));
- m_screen->screen_vblank().set(FUNC(mazerbla_state::screen_vblank));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mazerbla_state, screen_update_mazerbla)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mazerbla_state, screen_vblank))
PALETTE(config, "palette", FUNC(mazerbla_state::mazerbla_palette), 256+1);
/* sound hardware */
-}
+MACHINE_CONFIG_END
-void mazerbla_state::greatgun(machine_config &config)
-{
+MACHINE_CONFIG_START(mazerbla_state::greatgun)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK); /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */
- m_maincpu->set_addrmap(AS_PROGRAM, &mazerbla_state::mazerbla_map);
- m_maincpu->set_addrmap(AS_IO, &mazerbla_state::greatgun_io_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(mazerbla_state::irq_callback));
-
- Z80(config, m_subcpu, SOUND_CLOCK / 4); /* 3.579500 MHz, NMI - caused by sound command write, periodic INT */
- m_subcpu->set_addrmap(AS_PROGRAM, &mazerbla_state::greatgun_sound_map);
- m_subcpu->set_periodic_int(FUNC(mazerbla_state::sound_interrupt), attotime::from_hz((double)14318180/16/16/16/16 ));
-
- z80_device &sub2(Z80(config, "sub2", MASTER_CLOCK)); /* 4 MHz, no NMI, IM1 INT */
- sub2.set_addrmap(AS_PROGRAM, &mazerbla_state::mazerbla_cpu3_map);
- sub2.set_addrmap(AS_IO, &mazerbla_state::greatgun_cpu3_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK) /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */
+ MCFG_DEVICE_PROGRAM_MAP(mazerbla_map)
+ MCFG_DEVICE_IO_MAP(greatgun_io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(mazerbla_state,irq_callback)
+
+ MCFG_DEVICE_ADD("sub", Z80, SOUND_CLOCK / 4) /* 3.579500 MHz, NMI - caused by sound command write, periodic INT */
+ MCFG_DEVICE_PROGRAM_MAP(greatgun_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(mazerbla_state, sound_interrupt, (double)14318180/16/16/16/16 )
+
+ MCFG_DEVICE_ADD("sub2", Z80, MASTER_CLOCK) /* 4 MHz, no NMI, IM1 INT */
+ MCFG_DEVICE_PROGRAM_MAP(mazerbla_cpu3_map)
+ MCFG_DEVICE_IO_MAP(greatgun_cpu3_io_map)
/* (vblank related ??) int generated by a custom video processor
and cleared on ANY port access.
but handled differently for now
*/
- sub2.set_vblank_int("screen", FUNC(mazerbla_state::irq0_line_hold));
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mazerbla_state, irq0_line_hold)
- MB_VCU(config, m_vcu, SOUND_CLOCK/4);
- m_vcu->set_cpu_tag("sub2");
- m_vcu->set_palette_tag("palette");
+ MCFG_DEVICE_ADD("vcu", MB_VCU, SOUND_CLOCK/4)
+ MCFG_MB_VCU_CPU("sub2")
+ MCFG_MB_VCU_PALETTE("palette")
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(40*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
- m_screen->set_screen_update(FUNC(mazerbla_state::screen_update_mazerbla));
- m_screen->screen_vblank().set(FUNC(mazerbla_state::screen_vblank));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mazerbla_state, screen_update_mazerbla)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mazerbla_state, screen_vblank))
PALETTE(config, "palette", FUNC(mazerbla_state::mazerbla_palette), 246+1);
@@ -1069,7 +1069,7 @@ void mazerbla_state::greatgun(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_subcpu, INPUT_LINE_NMI);
m_soundlatch->set_separate_acknowledge(true);
-}
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/mbc200.cpp b/src/mame/drivers/mbc200.cpp
index abb4dd2f6c1..62cb696500f 100644
--- a/src/mame/drivers/mbc200.cpp
+++ b/src/mame/drivers/mbc200.cpp
@@ -302,25 +302,24 @@ static GFXDECODE_START( gfx_mbc200 )
GFXDECODE_END
-void mbc200_state::mbc200(machine_config &config)
-{
+MACHINE_CONFIG_START(mbc200_state::mbc200)
/* basic machine hardware */
- Z80(config, m_maincpu, 8_MHz_XTAL / 2); // NEC D780C-1
- m_maincpu->set_addrmap(AS_PROGRAM, &mbc200_state::mbc200_mem);
- m_maincpu->set_addrmap(AS_IO, &mbc200_state::mbc200_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, 8_MHz_XTAL / 2) // NEC D780C-1
+ MCFG_DEVICE_PROGRAM_MAP(mbc200_mem)
+ MCFG_DEVICE_IO_MAP(mbc200_io)
- z80_device &subcpu(Z80(config, "subcpu", 8_MHz_XTAL / 2)); // NEC D780C-1
- subcpu.set_addrmap(AS_PROGRAM, &mbc200_state::mbc200_sub_mem);
- subcpu.set_addrmap(AS_IO, &mbc200_state::mbc200_sub_io);
+ MCFG_DEVICE_ADD("subcpu", Z80, 8_MHz_XTAL / 2) // NEC D780C-1
+ MCFG_DEVICE_PROGRAM_MAP(mbc200_sub_mem)
+ MCFG_DEVICE_IO_MAP(mbc200_sub_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 400);
- screen.set_visarea(0, 640-1, 0, 400-1);
- screen.set_screen_update("crtc", FUNC(h46505_device::screen_update));
- GFXDECODE(config, "gfxdecode", m_palette, gfx_mbc200);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 400)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", h46505_device, screen_update)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mbc200)
PALETTE(config, m_palette, palette_device::MONOCHROME);
H46505(config, m_crtc, 8_MHz_XTAL / 4); // HD46505SP
@@ -331,8 +330,10 @@ void mbc200_state::mbc200(machine_config &config)
// sound
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beep, 1000).add_route(ALL_OUTPUTS, "mono", 0.50); // frequency unknown
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("beeper", BEEP, 1000) // frequency unknown
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
I8255(config, "ppi_1").out_pc_callback().set(FUNC(mbc200_state::p1_portc_w));
I8255(config, "ppi_2").in_pa_callback().set(FUNC(mbc200_state::p2_porta_r));
@@ -346,16 +347,18 @@ void mbc200_state::mbc200(machine_config &config)
I8251(config, "uart2", 0); // INS8251A
MB8876(config, m_fdc, 8_MHz_XTAL / 8); // guess
- FLOPPY_CONNECTOR(config, "fdc:0", mbc200_floppies, "qd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", mbc200_floppies, "qd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", mbc200_floppies, "qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", mbc200_floppies, "qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
/* Keyboard */
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
keyboard.set_keyboard_callback(FUNC(mbc200_state::kbd_put));
/* software lists */
- SOFTWARE_LIST(config, "flop_list").set_original("mbc200");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "mbc200")
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( mbc200 )
diff --git a/src/mame/drivers/mbc55x.cpp b/src/mame/drivers/mbc55x.cpp
index 73629a1945f..aa8b1bb7041 100644
--- a/src/mame/drivers/mbc55x.cpp
+++ b/src/mame/drivers/mbc55x.cpp
@@ -8,6 +8,11 @@
Phill Harvey-Smith
2011-01-29.
+
+ToDo:
+- Fix the sound
+- Add serial uart
+
*/
@@ -17,14 +22,27 @@
#include "bus/isa/isa_cards.h"
//#include "bus/pc_joy/pc_joy.h"
#include "bus/rs232/rs232.h"
+#include "cpu/mcs48/mcs48.h"
#include "machine/clock.h"
#include "machine/i8087.h"
#include "machine/input_merger.h"
-#include "machine/mbc55x_kbd.h"
#include "screen.h"
#include "softlist.h"
#include "speaker.h"
+static constexpr rgb_t mbc55x_pens[SCREEN_NO_COLOURS]
+{
+ // normal brightness
+ { 0x00, 0x00, 0x00 }, // black
+ { 0x00, 0x00, 0x80 }, // blue
+ { 0x00, 0x80, 0x00 }, // green
+ { 0x00, 0x80, 0x80 }, // cyan
+ { 0x80, 0x00, 0x00 }, // red
+ { 0x80, 0x00, 0x80 }, // magenta
+ { 0x80, 0x80, 0x00 }, // yellow
+ { 0x80, 0x80, 0x80 } // light grey
+};
+
void mbc55x_state::mbc55x_mem(address_map &map)
{
@@ -64,146 +82,156 @@ void mbc55x_state::mbc55x_iodecode(address_map &map)
map(0x14, 0x15).mirror(0x02).rw("sio", FUNC(i8251_device::read), FUNC(i8251_device::write));
map(0x18, 0x18).mirror(0x02).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
map(0x19, 0x19).mirror(0x02).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
- map(0x1c, 0x1d).mirror(0x02).rw(m_kb_uart, FUNC(i8251_device::read), FUNC(i8251_device::write));
-}
-
-uint8_t mbc55x_state::iodecode_r(offs_t offset)
-{
- return m_iodecode->read8(offset >> 1);
-}
-
-void mbc55x_state::iodecode_w(offs_t offset, uint8_t data)
-{
- m_iodecode->write8(offset >> 1, data);
-}
-
-/* 8255 Configuration */
-
-uint8_t mbc55x_state::game_io_r()
-{
- return 0xff;
-}
-
-void mbc55x_state::game_io_w(uint8_t data)
-{
-}
-
-uint8_t mbc55x_state::printer_status_r()
-{
- return m_printer_status;
-}
-
-void mbc55x_state::printer_data_w(uint8_t data)
-{
- m_printer->write_data7(!BIT(data, 7));
- m_printer->write_data6(!BIT(data, 6));
- m_printer->write_data5(!BIT(data, 5));
- m_printer->write_data4(!BIT(data, 4));
- m_printer->write_data3(!BIT(data, 3));
- m_printer->write_data2(!BIT(data, 2));
- m_printer->write_data1(!BIT(data, 1));
- m_printer->write_data0(!BIT(data, 0));
-}
-
-void mbc55x_state::disk_select_w(uint8_t data)
-{
- floppy_image_device *floppy = nullptr;
-
- switch (data & 0x03)
- {
- case 0: floppy = m_floppy[0]->get_device(); break;
- case 1: floppy = m_floppy[1]->get_device(); break;
- case 2: floppy = m_floppy[2]->get_device(); break;
- case 3: floppy = m_floppy[3]->get_device(); break;
- }
-
- m_fdc->set_floppy(floppy);
-
- if (floppy)
- {
- floppy->mon_w(0);
- floppy->ss_w(BIT(data, 2));
- }
-
- m_printer->write_strobe(!BIT(data, 3));
-}
-
-WRITE_LINE_MEMBER(mbc55x_state::printer_busy_w)
-{
- m_printer_status = (m_printer_status & 0xef) | (state ? 0x10 : 0x00);
-}
-
-WRITE_LINE_MEMBER(mbc55x_state::printer_paper_end_w)
-{
- m_printer_status = (m_printer_status & 0xdf) | (state ? 0x20 : 0x00);
-}
-
-WRITE_LINE_MEMBER(mbc55x_state::printer_select_w)
-{
- m_printer_status = (m_printer_status & 0xbf) | (state ? 0x40 : 0x00);
+ map(0x1c, 0x1d).mirror(0x02).r(FUNC(mbc55x_state::mbc55x_kb_usart_r)).w(m_kb_uart, FUNC(i8251_device::write));
}
+static INPUT_PORTS_START( mbc55x )
+ PORT_START("KEY0") /* Key row 0 scancodes 00..07 */
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5')
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6')
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7')
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8')
+
+ PORT_START("KEY1") /* Key row 1 scancodes 08..0F */
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("=") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("BSLASH") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\')
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('W')
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('E')
+
+ PORT_START("KEY2") /* Key row 2 scancodes 10..17 */
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('R')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('T')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('U')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('I')
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('O')
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('P')
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[')
+
+
+ PORT_START("KEY3") /* Key row 3 scancodes 18..1F */
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('A')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('S')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('D')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('F')
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('G')
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('H')
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('J')
+
+ PORT_START("KEY4") /* Key row 4 scancodes 20..27 */
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('K')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('L')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(";") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TILDE") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('`')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("#") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('#')
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ENTER") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(0x0D)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('X')
+
+
+ PORT_START("KEY5") /* Key row 5 scancodes 28..2F */
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('C')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('V')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('B')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('N')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('M')
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',')
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.')
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("/") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/')
+
+ PORT_START("KEY6") /* Key row 6 scancodes 30..37 */
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SPACE") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(0x08)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
+
+#if 0
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("BACKSLASH") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LSHIFT") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
+
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) // Ether control
+
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RSHIFT") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_2)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PRSCR") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('*')
+
+ PORT_START("KEY7") /* Key row 7 scancodes 38..3F */
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ALT") PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CAPS") PORT_CODE(KEYCODE_CAPSLOCK)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1") PORT_CODE(KEYCODE_F1)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F2") PORT_CODE(KEYCODE_F2)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F3") PORT_CODE(KEYCODE_F3)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F4") PORT_CODE(KEYCODE_F4)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F5") PORT_CODE(KEYCODE_F5)
+
+ PORT_START("KEY8") /* Key row 8 scancodes 40..47 */
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F6") PORT_CODE(KEYCODE_F6)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F7") PORT_CODE(KEYCODE_F7)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F8") PORT_CODE(KEYCODE_F8)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F9") PORT_CODE(KEYCODE_F9)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F10") PORT_CODE(KEYCODE_F10)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("NUMLK") PORT_CODE(KEYCODE_NUMLOCK)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SCRLK") PORT_CODE(KEYCODE_SCRLOCK)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP7") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR('7')
+
+ PORT_START("KEY9") /* Key row 9 scancodes 48..4F */
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP8") PORT_CODE(KEYCODE_8_PAD) //PORT_CHAR('8')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP9") PORT_CODE(KEYCODE_9_PAD) //PORT_CHAR('9')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP-") PORT_CODE(KEYCODE_MINUS_PAD) //PORT_CHAR('-')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP4") PORT_CODE(KEYCODE_4_PAD) //PORT_CHAR('4')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP5") PORT_CODE(KEYCODE_5_PAD) //PORT_CHAR('5')
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP6") PORT_CODE(KEYCODE_6_PAD) //PORT_CHAR('6')
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP+") PORT_CODE(KEYCODE_PLUS_PAD) //PORT_CHAR('+')
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP1") PORT_CODE(KEYCODE_1_PAD) //PORT_CHAR('1')
+
+ PORT_START("KEY10") /* Key row 10 scancodes 50..57 */
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP2") PORT_CODE(KEYCODE_2_PAD) //PORT_CHAR('2')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP3") PORT_CODE(KEYCODE_3_PAD) //PORT_CHAR('3')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP0") PORT_CODE(KEYCODE_0_PAD) //PORT_CHAR('0')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP.") PORT_CODE(KEYCODE_DEL_PAD) //PORT_CHAR('.')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
+ //PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP5") PORT_CODE(KEYCODE_5_PAD) PORT_CHAR('5')
+ //PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP6") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR('6')
+ //PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP+") PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR('+')
+ //PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP1") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR('1')
+#endif
+
+ PORT_START(KEY_SPECIAL_TAG)
+ PORT_BIT(KEY_BIT_LSHIFT, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("LSHIFT") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
+ PORT_BIT(KEY_BIT_RSHIFT, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RSHIFT") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_2)
+ PORT_BIT(KEY_BIT_CTRL, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) // Ether control
+ PORT_BIT(KEY_BIT_GRAPH, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("GRAPH") PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
-void mbc55x_state::set_ram_size()
-{
- address_space &space = m_maincpu->space( AS_PROGRAM );
- int ramsize = m_ram->size();
- int nobanks = ramsize / RAM_BANK_SIZE;
- char bank[10];
- int bankno;
- uint8_t *ram = &m_ram->pointer()[0];
- uint8_t *map_base;
- int bank_base;
-
-
- logerror("Ramsize is %d bytes\n",ramsize);
- logerror("RAM_BANK_SIZE=%d, nobanks=%d\n",RAM_BANK_SIZE,nobanks);
-
- // Main memory mapping
-
- for(bankno=0; bankno<RAM_BANK_COUNT; bankno++)
- {
- sprintf(bank,"bank%x",bankno);
- bank_base=bankno*RAM_BANK_SIZE;
- map_base=&ram[bank_base];
-
- if(bankno<nobanks)
- {
- membank(bank)->set_base(map_base);
- space.install_readwrite_bank(bank_base, bank_base+(RAM_BANK_SIZE-1), bank);
- logerror("Mapping bank %d at %05X to RAM\n",bankno,bank_base);
- }
- else
- {
- space.nop_readwrite(bank_base, bank_base+(RAM_BANK_SIZE-1));
- logerror("Mapping bank %d at %05X to NOP\n",bankno,bank_base);
- }
- }
-
- // Graphics red and blue plane memory mapping, green is in main memory
- membank(RED_PLANE_TAG)->set_base(&m_video_mem[RED_PLANE_OFFSET]);
- space.install_readwrite_bank(RED_PLANE_MEMBASE, RED_PLANE_MEMBASE+(COLOUR_PLANE_SIZE-1), RED_PLANE_TAG);
- membank(BLUE_PLANE_TAG)->set_base(&m_video_mem[BLUE_PLANE_OFFSET]);
- space.install_readwrite_bank(BLUE_PLANE_MEMBASE, BLUE_PLANE_MEMBASE+(COLOUR_PLANE_SIZE-1), BLUE_PLANE_TAG);
-}
+INPUT_PORTS_END
-void mbc55x_state::machine_reset()
-{
- set_ram_size();
-}
-void mbc55x_state::machine_start()
+void mbc55x_state::mbc55x_palette(palette_device &palette) const
{
- m_printer_status = 0xff;
+ logerror("initializing palette\n");
- m_kb_uart->write_cts(0);
+ palette.set_pen_colors(0, mbc55x_pens);
}
-static INPUT_PORTS_START( mbc55x )
-INPUT_PORTS_END
-
-
FLOPPY_FORMATS_MEMBER( mbc55x_state::floppy_formats )
FLOPPY_PC_FORMAT
FLOPPY_FORMATS_END
@@ -222,8 +250,7 @@ static void mbc55x_floppies(device_slot_interface &device)
}
-void mbc55x_state::mbc55x(machine_config &config)
-{
+MACHINE_CONFIG_START(mbc55x_state::mbc55x)
/* basic machine hardware */
I8088(config, m_maincpu, 14.318181_MHz_XTAL / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &mbc55x_state::mbc55x_mem);
@@ -233,7 +260,8 @@ void mbc55x_state::mbc55x(machine_config &config)
m_maincpu->esc_data_handler().set("coproc", FUNC(i8087_device::addr_w));
i8087_device &i8087(I8087(config, "coproc", 14.318181_MHz_XTAL / 4));
- i8087.set_space_88(m_maincpu, AS_PROGRAM);
+ i8087.set_addrmap(AS_PROGRAM, &mbc55x_state::mbc55x_mem);
+ i8087.set_data_width(8);
i8087.irq().set(m_pic, FUNC(pic8259_device::ir6_w));
i8087.busy().set_inputline("maincpu", INPUT_LINE_TEST);
@@ -243,8 +271,7 @@ void mbc55x_state::mbc55x(machine_config &config)
m_iodecode->addr_width(5);
m_iodecode->set_addrmap(0, &mbc55x_state::mbc55x_iodecode);
- mbc55x_keyboard_device &keyboard(MBC55X_KEYBOARD(config, "keyboard"));
- keyboard.txd_callback().set(m_kb_uart, FUNC(i8251_device::write_rxd));
+ I8049(config, "kbdc", 6_MHz_XTAL).set_disable();
/* video hardware */
screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
@@ -265,7 +292,7 @@ void mbc55x_state::mbc55x(machine_config &config)
m_kb_uart->rts_handler().set(m_printer, FUNC(centronics_device::write_init)).invert();
m_kb_uart->rxrdy_handler().set(m_pic, FUNC(pic8259_device::ir3_w));
- PIT8253(config, m_pit);
+ PIT8253(config, m_pit, 0);
m_pit->out_handler<0>().set(m_pic, FUNC(pic8259_device::ir0_w));
m_pit->out_handler<0>().append(m_pit, FUNC(pit8253_device::write_clk1));
m_pit->out_handler<1>().set(m_pic, FUNC(pic8259_device::ir1_w));
@@ -279,7 +306,7 @@ void mbc55x_state::mbc55x(machine_config &config)
clk_78_6khz.signal_handler().append(m_kb_uart, FUNC(i8251_device::write_txc));
clk_78_6khz.signal_handler().append(m_kb_uart, FUNC(i8251_device::write_rxc));
- PIC8259(config, m_pic);
+ PIC8259(config, m_pic, 0);
m_pic->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
I8255(config, m_ppi);
@@ -301,19 +328,18 @@ void mbc55x_state::mbc55x(machine_config &config)
FD1793(config, m_fdc, 14.318181_MHz_XTAL / 14); // M5W1793-02P (clock is nominally 1 MHz)
m_fdc->intrq_wr_callback().set(m_pic, FUNC(pic8259_device::ir5_w));
- FLOPPY_CONNECTOR(config, m_floppy[0], mbc55x_floppies, "qd", mbc55x_state::floppy_formats);
- FLOPPY_CONNECTOR(config, m_floppy[1], mbc55x_floppies, "qd", mbc55x_state::floppy_formats);
- FLOPPY_CONNECTOR(config, m_floppy[2], mbc55x_floppies, "", mbc55x_state::floppy_formats);
- FLOPPY_CONNECTOR(config, m_floppy[3], mbc55x_floppies, "", mbc55x_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy[0], mbc55x_floppies, "qd", mbc55x_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy[1], mbc55x_floppies, "qd", mbc55x_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy[2], mbc55x_floppies, "", mbc55x_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy[3], mbc55x_floppies, "", mbc55x_state::floppy_formats)
/* Software list */
- SOFTWARE_LIST(config, "disk_list").set_original("mbc55x");
+ MCFG_SOFTWARE_LIST_ADD("disk_list","mbc55x")
isa8_device &isa(ISA8(config, "isa", 14.318181_MHz_XTAL / 4));
- isa.set_memspace(m_maincpu, AS_PROGRAM);
- isa.set_iospace(m_maincpu, AS_IO);
+ isa.set_cputag(m_maincpu);
isa.irq7_callback().set(m_pic, FUNC(pic8259_device::ir7_w)); // all other IRQ and DRQ lines are NC
- isa.iochck_callback().set_inputline(m_maincpu, INPUT_LINE_NMI).invert();
+ //isa.iochck_callback().set_inputline(m_maincpu, INPUT_LINE_NMI));
ISA8_SLOT(config, "external", 0, "isa", pc_isa8_cards, nullptr, false);
@@ -336,7 +362,7 @@ void mbc55x_state::mbc55x(machine_config &config)
m_printer->busy_handler().append(m_pic, FUNC(pic8259_device::ir4_w)).invert();
m_printer->perror_handler().set(FUNC(mbc55x_state::printer_paper_end_w));
m_printer->select_handler().set(FUNC(mbc55x_state::printer_select_w));
-}
+MACHINE_CONFIG_END
ROM_START( mbc55x )
@@ -344,7 +370,11 @@ ROM_START( mbc55x )
ROM_SYSTEM_BIOS(0, "v120", "mbc55x BIOS v1.20 (1983)")
ROMX_LOAD("mbc55x-v120.rom", 0x0000, 0x2000, CRC(b439b4b8) SHA1(6e8df0f3868e3fd0229a5c2720d6c01e46815cab), ROM_BIOS(0))
+
+ ROM_REGION(0x0800, "kbdc", 0)
+ ROM_LOAD("d8049hc.m1", 0x0000, 0x0800, NO_DUMP)
ROM_END
+
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
COMP( 1983, mbc55x, 0, 0, mbc55x, mbc55x, mbc55x_state, empty_init, "Sanyo", "MBC-55x", 0 )
diff --git a/src/mame/drivers/mbee.cpp b/src/mame/drivers/mbee.cpp
index 0d7d36c9a6c..adc737303a1 100644
--- a/src/mame/drivers/mbee.cpp
+++ b/src/mame/drivers/mbee.cpp
@@ -659,14 +659,14 @@ MACHINE_CONFIG_START(mbee_state::mbee)
m_pio->in_pb_callback().set(FUNC(mbee_state::pio_port_b_r));
m_pio->out_pb_callback().set(FUNC(mbee_state::pio_port_b_w));
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(50);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(250)); /* not accurate */
- m_screen->set_size(64*8, 19*16); /* need at least 17 lines for NET */
- m_screen->set_visarea(0*8, 64*8-1, 0, 19*16-1);
- m_screen->set_screen_update(FUNC(mbee_state::screen_update_mbee));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(250)) /* not accurate */
+ MCFG_SCREEN_SIZE(64*8, 19*16) /* need at least 17 lines for NET */
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0, 19*16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mbee_state, screen_update_mbee)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_mono);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_mono)
PALETTE(config, m_palette, FUNC(mbee_state::standard_palette), 100);
@@ -686,18 +686,17 @@ MACHINE_CONFIG_START(mbee_state::mbee)
m_crtc->set_on_update_addr_change_callback(FUNC(mbee_state::crtc_update_addr), this);
m_crtc->out_vsync_callback().set(FUNC(mbee_state::crtc_vs));
- MCFG_QUICKLOAD_ADD("quickload", mbee_state, mbee, "mwb,com,bee", attotime::from_seconds(3))
- MCFG_QUICKLOAD_ADD("quickload2", mbee_state, mbee_z80bin, "bin", attotime::from_seconds(3))
+ MCFG_QUICKLOAD_ADD("quickload", mbee_state, mbee, "mwb,com,bee", 3)
+ MCFG_QUICKLOAD_ADD("quickload2", mbee_state, mbee_z80bin, "bin", 3)
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(m_pio, FUNC(z80pio_device::strobe_a));
+ MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE("z80pio", z80pio_device, strobe_a))
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(mbee_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(mbee_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
MACHINE_CONFIG_END
@@ -717,14 +716,14 @@ MACHINE_CONFIG_START(mbee_state::mbeeic)
m_pio->in_pb_callback().set(FUNC(mbee_state::pio_port_b_r));
m_pio->out_pb_callback().set(FUNC(mbee_state::pio_port_b_w));
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(50);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(250)); /* not accurate */
- m_screen->set_size(80*8, 310);
- m_screen->set_visarea(0, 80*8-1, 0, 19*16-1);
- m_screen->set_screen_update(FUNC(mbee_state::screen_update_mbee));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(250)) /* not accurate */
+ MCFG_SCREEN_SIZE(80*8, 310)
+ MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 19*16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mbee_state, screen_update_mbee)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_standard);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_standard)
PALETTE(config, m_palette, FUNC(mbee_state::standard_palette), 100);
@@ -744,105 +743,109 @@ MACHINE_CONFIG_START(mbee_state::mbeeic)
m_crtc->set_on_update_addr_change_callback(FUNC(mbee_state::crtc_update_addr), this);
m_crtc->out_vsync_callback().set(FUNC(mbee_state::crtc_vs));
- MCFG_QUICKLOAD_ADD("quickload", mbee_state, mbee, "mwb,com,bee", attotime::from_seconds(2))
- MCFG_QUICKLOAD_ADD("quickload2", mbee_state, mbee_z80bin, "bin", attotime::from_seconds(2))
+ MCFG_QUICKLOAD_ADD("quickload", mbee_state, mbee, "mwb,com,bee", 2)
+ MCFG_QUICKLOAD_ADD("quickload2", mbee_state, mbee_z80bin, "bin", 2)
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(m_pio, FUNC(z80pio_device::strobe_a));
+ MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(m_pio, z80pio_device, strobe_a))
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(mbee_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(mbee_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
MACHINE_CONFIG_END
-void mbee_state::mbeepc(machine_config &config)
-{
+MACHINE_CONFIG_START(mbee_state::mbeepc)
mbeeic(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &mbee_state::mbeepc_mem);
- m_maincpu->set_addrmap(AS_IO, &mbee_state::mbeepc_io);
-}
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(mbeepc_mem)
+ MCFG_DEVICE_IO_MAP(mbeepc_io)
+MACHINE_CONFIG_END
-void mbee_state::mbeeppc(machine_config &config)
-{
+MACHINE_CONFIG_START(mbee_state::mbeeppc)
mbeeic(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mbee_state::mbeeppc_mem);
- m_maincpu->set_addrmap(AS_IO, &mbee_state::mbeeppc_io);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(mbeeppc_mem)
+ MCFG_DEVICE_IO_MAP(mbeeppc_io)
MCFG_VIDEO_START_OVERRIDE(mbee_state, premium)
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_premium);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_premium)
m_palette->set_init(FUNC(mbee_state::premium_palette));
MC146818(config, m_rtc, 32.768_kHz_XTAL);
m_rtc->irq().set(FUNC(mbee_state::rtc_irq_w));
-}
+MACHINE_CONFIG_END
-void mbee_state::mbee56(machine_config &config)
-{
+MACHINE_CONFIG_START(mbee_state::mbee56)
mbeeic(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &mbee_state::mbee56_mem);
- m_maincpu->set_addrmap(AS_IO, &mbee_state::mbee56_io);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(mbee56_mem)
+ MCFG_DEVICE_IO_MAP(mbee56_io)
MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee56)
WD2793(config, m_fdc, 4_MHz_XTAL / 2);
m_fdc->intrq_wr_callback().set(FUNC(mbee_state::fdc_intrq_w));
m_fdc->drq_wr_callback().set(FUNC(mbee_state::fdc_drq_w));
m_fdc->enmf_rd_callback().set_constant(0);
- FLOPPY_CONNECTOR(config, m_floppy0, mbee_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, m_floppy1, mbee_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
-}
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy0, mbee_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy1, mbee_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+MACHINE_CONFIG_END
-void mbee_state::mbee128(machine_config &config)
-{
+MACHINE_CONFIG_START(mbee_state::mbee128)
mbee56(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &mbee_state::mbee256_mem);
- m_maincpu->set_addrmap(AS_IO, &mbee_state::mbee128_io);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(mbee256_mem)
+ MCFG_DEVICE_IO_MAP(mbee128_io)
MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee128)
MC146818(config, m_rtc, 32.768_kHz_XTAL);
m_rtc->irq().set(FUNC(mbee_state::rtc_irq_w));
-}
+MACHINE_CONFIG_END
-void mbee_state::mbee128p(machine_config &config)
-{
+MACHINE_CONFIG_START(mbee_state::mbee128p)
mbeeppc(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &mbee_state::mbee256_mem);
- m_maincpu->set_addrmap(AS_IO, &mbee_state::mbee128_io);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(mbee256_mem)
+ MCFG_DEVICE_IO_MAP(mbee128_io)
MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee128)
WD2793(config, m_fdc, 4_MHz_XTAL / 2);
m_fdc->intrq_wr_callback().set(FUNC(mbee_state::fdc_intrq_w));
m_fdc->drq_wr_callback().set(FUNC(mbee_state::fdc_drq_w));
m_fdc->enmf_rd_callback().set_constant(0);
- FLOPPY_CONNECTOR(config, m_floppy0, mbee_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, m_floppy1, mbee_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
-}
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy0, mbee_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy1, mbee_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+MACHINE_CONFIG_END
-void mbee_state::mbee256(machine_config &config)
-{
+MACHINE_CONFIG_START(mbee_state::mbee256)
mbee128p(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &mbee_state::mbee256_mem);
- m_maincpu->set_addrmap(AS_IO, &mbee_state::mbee256_io);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(mbee256_mem)
+ MCFG_DEVICE_IO_MAP(mbee256_io)
MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee256)
- config.device_remove("fdc:0");
- config.device_remove("fdc:1");
- FLOPPY_CONNECTOR(config, m_floppy0, mbee_floppies, "35dd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, m_floppy1, mbee_floppies, "35dd", floppy_image_device::default_floppy_formats).enable_sound(true);
-}
+ MCFG_DEVICE_REMOVE("fdc:0")
+ MCFG_DEVICE_REMOVE("fdc:1")
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy0, mbee_floppies, "35dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy1, mbee_floppies, "35dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+MACHINE_CONFIG_END
-void mbee_state::mbeett(machine_config &config)
-{
+MACHINE_CONFIG_START(mbee_state::mbeett)
mbeeppc(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &mbee_state::mbeett_mem);
- m_maincpu->set_addrmap(AS_IO, &mbee_state::mbeett_io);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(mbeett_mem)
+ MCFG_DEVICE_IO_MAP(mbeett_io)
MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbeett)
- config.device_remove("quickload");
- config.device_remove("quickload2");
+ MCFG_DEVICE_REMOVE("quickload")
+ MCFG_DEVICE_REMOVE("quickload2")
SCC8530(config, "scc", 4000000); // clock unknown
-}
+MACHINE_CONFIG_END
/* Unused roms:
ROM_LOAD_OPTIONAL("net.rom", 0xe000, 0x1000, CRC(e14aac4c) SHA1(330902cf47f53c22c85003a620f7d7d3261ebb67) )
diff --git a/src/mame/drivers/mc10.cpp b/src/mame/drivers/mc10.cpp
index 0162ae4befc..1982fa29054 100644
--- a/src/mame/drivers/mc10.cpp
+++ b/src/mame/drivers/mc10.cpp
@@ -502,8 +502,8 @@ INPUT_PORTS_END
MACHINE DRIVERS
***************************************************************************/
-void mc10_state::mc10(machine_config &config)
-{
+MACHINE_CONFIG_START(mc10_state::mc10)
+
/* basic machine hardware */
M6803(config, m_maincpu, XTAL(3'579'545)); /* 0,894886 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &mc10_state::mc10_mem);
@@ -513,35 +513,34 @@ void mc10_state::mc10(machine_config &config)
m_maincpu->out_p2_cb().set(FUNC(mc10_state::mc10_port2_w));
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
+ MCFG_SCREEN_MC6847_NTSC_ADD("screen", "mc6847")
- mc6847_ntsc_device &vdg(MC6847_NTSC(config, "mc6847", XTAL(3'579'545)));
- vdg.set_screen("screen");
- vdg.input_callback().set(FUNC(mc10_state::mc6847_videoram_r));
+ MCFG_DEVICE_ADD("mc6847", MC6847_NTSC, XTAL(3'579'545))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(*this, mc10_state, mc6847_videoram_r))
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.0625);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.0625)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(coco_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
- m_cassette->set_interface("mc10_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(coco_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
+ MCFG_CASSETTE_INTERFACE("mc10_cass")
/* printer */
- PRINTER(config, m_printer, 0);
+ MCFG_DEVICE_ADD("printer", PRINTER, 0)
/* internal ram */
RAM(config, m_ram).set_default_size("20K").set_extra_options("4K");
/* Software lists */
- SOFTWARE_LIST(config, "cass_list").set_original("mc10");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "mc10")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(mc10_state::alice32)
-void mc10_state::alice32(machine_config &config)
-{
M6803(config, m_maincpu, XTAL(3'579'545));
m_maincpu->set_addrmap(AS_PROGRAM, &mc10_state::alice32_mem);
m_maincpu->in_p1_cb().set(FUNC(mc10_state::mc10_port1_r));
@@ -550,51 +549,50 @@ void mc10_state::alice32(machine_config &config)
m_maincpu->out_p2_cb().set(FUNC(mc10_state::mc10_port2_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_screen_update("ef9345", FUNC(ef9345_device::screen_update));
- screen.set_size(336, 270);
- screen.set_visarea(00, 336-1, 00, 270-1);
- PALETTE(config, "palette").set_entries(8);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_UPDATE_DEVICE("ef9345", ef9345_device, screen_update)
+ MCFG_SCREEN_SIZE(336, 270)
+ MCFG_SCREEN_VISIBLE_AREA(00, 336-1, 00, 270-1)
+ MCFG_PALETTE_ADD("palette", 8)
- EF9345(config, m_ef9345, 0);
- m_ef9345->set_palette_tag("palette");
- TIMER(config, "alice32_sl").configure_scanline(FUNC(mc10_state::alice32_scanline), "screen", 0, 10);
+ MCFG_DEVICE_ADD("ef9345", EF9345, 0)
+ MCFG_EF9345_PALETTE("palette")
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("alice32_sl", mc10_state, alice32_scanline, "screen", 0, 10)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.0625);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.0625)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(alice32_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
- m_cassette->set_interface("mc10_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(alice32_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
+ MCFG_CASSETTE_INTERFACE("mc10_cass")
/* printer */
- PRINTER(config, m_printer, 0);
+ MCFG_DEVICE_ADD("printer", PRINTER, 0)
/* internal ram */
RAM(config, m_ram).set_default_size("24K").set_extra_options("8K");
/* Software lists */
- SOFTWARE_LIST(config, "cass_list").set_original("alice32");
- SOFTWARE_LIST(config, "mc10_cass").set_compatible("mc10");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "alice32")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("mc10_cass", "mc10")
+MACHINE_CONFIG_END
-void mc10_state::alice90(machine_config &config)
-{
+MACHINE_CONFIG_START(mc10_state::alice90)
alice32(config);
m_maincpu->set_addrmap(AS_PROGRAM, &mc10_state::alice90_mem);
m_ram->set_default_size("32K");
/* Software lists */
- subdevice<software_list_device>("cass_list")->set_original("alice90");
- SOFTWARE_LIST(config, "alice32_cass").set_compatible("alice32");
- config.device_remove("mc10_cass");
-}
+ MCFG_SOFTWARE_LIST_MODIFY("cass_list", "alice90")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("alice32_cass", "alice32")
+ MCFG_DEVICE_REMOVE("mc10_cass")
+MACHINE_CONFIG_END
}
diff --git a/src/mame/drivers/mc1000.cpp b/src/mame/drivers/mc1000.cpp
index 0e97e92265d..1c565efb043 100644
--- a/src/mame/drivers/mc1000.cpp
+++ b/src/mame/drivers/mc1000.cpp
@@ -541,32 +541,29 @@ TIMER_DEVICE_CALLBACK_MEMBER(mc1000_state::ne555_tick)
m_maincpu->set_input_line(INPUT_LINE_IRQ0, param);
}
-void mc1000_state::mc1000(machine_config &config)
-{
+MACHINE_CONFIG_START(mc1000_state::mc1000)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 3579545);
- m_maincpu->set_addrmap(AS_PROGRAM, &mc1000_state::mc1000_mem);
- m_maincpu->set_addrmap(AS_OPCODES, &mc1000_state::mc1000_banking_mem);
- m_maincpu->set_addrmap(AS_IO, &mc1000_state::mc1000_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, 3579545)
+ MCFG_DEVICE_PROGRAM_MAP(mc1000_mem)
+ MCFG_DEVICE_OPCODES_MAP(mc1000_banking_mem)
+ MCFG_DEVICE_IO_MAP(mc1000_io)
/* timers */
- timer_device &ne555clear(TIMER(config, "ne555clear"));
- ne555clear.configure_periodic(FUNC(mc1000_state::ne555_tick), attotime::from_hz(MC1000_NE555_FREQ));
- ne555clear.config_param(CLEAR_LINE);
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("ne555clear", mc1000_state, ne555_tick, attotime::from_hz(MC1000_NE555_FREQ))
+ MCFG_TIMER_PARAM(CLEAR_LINE)
- timer_device &ne555assert(TIMER(config, "ne555assert"));
- ne555assert.configure_periodic(FUNC(mc1000_state::ne555_tick), attotime::from_hz(MC1000_NE555_FREQ));
- ne555assert.set_start_delay(attotime::from_hz(MC1000_NE555_FREQ * 100 / MC1000_NE555_DUTY_CYCLE));
- ne555assert.config_param(ASSERT_LINE);
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("ne555assert", mc1000_state, ne555_tick, attotime::from_hz(MC1000_NE555_FREQ))
+ MCFG_TIMER_START_DELAY(attotime::from_hz(MC1000_NE555_FREQ * 100 / MC1000_NE555_DUTY_CYCLE))
+ MCFG_TIMER_PARAM(ASSERT_LINE)
/* video hardware */
- SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER);
+ MCFG_SCREEN_MC6847_PAL_ADD(SCREEN_TAG, MC6847_TAG)
- MC6847_NTSC(config, m_vdg, XTAL(3'579'545));
- m_vdg->hsync_wr_callback().set(FUNC(mc1000_state::hs_w));
- m_vdg->fsync_wr_callback().set(FUNC(mc1000_state::fs_w));
- m_vdg->input_callback().set(FUNC(mc1000_state::videoram_r));
- m_vdg->set_screen(SCREEN_TAG);
+ MCFG_DEVICE_ADD(MC6847_TAG, MC6847_NTSC, XTAL(3'579'545))
+ MCFG_MC6847_HSYNC_CALLBACK(WRITELINE(*this, mc1000_state, hs_w))
+ MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(*this, mc1000_state, fs_w))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(*this, mc1000_state, videoram_r))
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -578,21 +575,20 @@ void mc1000_state::mc1000(machine_config &config)
ay8910.add_route(ALL_OUTPUTS, "mono", 0.25);
/* devices */
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("mc1000_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("mc1000_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("mc1000_cass");
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "mc1000_cass")
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(mc1000_state::write_centronics_busy));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, mc1000_state, write_centronics_busy))
- output_latch_device &latch(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(latch);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("16K").set_extra_options("48K");
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/mc1502.cpp b/src/mame/drivers/mc1502.cpp
index 21dc9813aeb..8d14a8620f3 100644
--- a/src/mame/drivers/mc1502.cpp
+++ b/src/mame/drivers/mc1502.cpp
@@ -229,8 +229,7 @@ static INPUT_PORTS_START( mc1502 )
PORT_INCLUDE( mc7007_3_keyboard )
INPUT_PORTS_END
-void mc1502_state::mc1502(machine_config &config)
-{
+MACHINE_CONFIG_START(mc1502_state::mc1502)
I8088(config, m_maincpu, XTAL(16'000'000)/3);
m_maincpu->set_addrmap(AS_PROGRAM, &mc1502_state::mc1502_map);
m_maincpu->set_addrmap(AS_IO, &mc1502_state::mc1502_io);
@@ -239,7 +238,7 @@ void mc1502_state::mc1502(machine_config &config)
MCFG_MACHINE_START_OVERRIDE( mc1502_state, mc1502 )
MCFG_MACHINE_RESET_OVERRIDE( mc1502_state, mc1502 )
- PIT8253(config, m_pit8253);
+ PIT8253(config, m_pit8253, 0);
m_pit8253->set_clk<0>(XTAL(16'000'000)/12); /* heartbeat IRQ */
m_pit8253->out_handler<0>().set(m_pic8259, FUNC(pic8259_device::ir0_w));
m_pit8253->set_clk<1>(XTAL(16'000'000)/12); /* serial port */
@@ -247,7 +246,7 @@ void mc1502_state::mc1502(machine_config &config)
m_pit8253->set_clk<2>(XTAL(16'000'000)/12); /* pio port c pin 4, and speaker polling enough */
m_pit8253->out_handler<2>().set(FUNC(mc1502_state::mc1502_pit8253_out2_changed));
- PIC8259(config, m_pic8259);
+ PIC8259(config, m_pic8259, 0);
m_pic8259->out_int_callback().set_inputline(m_maincpu, 0);
I8255(config, m_ppi8255n1);
@@ -277,8 +276,7 @@ void mc1502_state::mc1502(machine_config &config)
rs232.cts_handler().set(m_upd8251, FUNC(i8251_device::write_cts));
isa8_device &isa(ISA8(config, "isa", 0));
- isa.set_memspace("maincpu", AS_PROGRAM);
- isa.set_iospace("maincpu", AS_IO);
+ isa.set_cputag("maincpu");
isa.irq2_callback().set(m_pic8259, FUNC(pic8259_device::ir2_w));
isa.irq3_callback().set(m_pic8259, FUNC(pic8259_device::ir3_w));
isa.irq4_callback().set(m_pic8259, FUNC(pic8259_device::ir4_w));
@@ -286,33 +284,32 @@ void mc1502_state::mc1502(machine_config &config)
isa.irq6_callback().set(m_pic8259, FUNC(pic8259_device::ir6_w));
isa.irq7_callback().set(m_pic8259, FUNC(pic8259_device::ir7_w));
- ISA8_SLOT(config, "board0", 0, "isa", mc1502_isa8_cards, "cga_mc1502", true); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa1", 0, "isa", mc1502_isa8_cards, "fdc", false);
- ISA8_SLOT(config, "isa2", 0, "isa", mc1502_isa8_cards, "rom", false);
+ MCFG_DEVICE_ADD("board0", ISA8_SLOT, 0, "isa", mc1502_isa8_cards, "cga_mc1502", true) // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "isa", mc1502_isa8_cards, "fdc", false)
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "isa", mc1502_isa8_cards, "rom", false)
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette); // FIXME: really no output routes for the cassette sound?
+ WAVE(config, "wave", "cassette"); // FIXME: really no output routes for the cassette sound?
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.80);
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit6));
- m_centronics->busy_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit7));
- m_centronics->fault_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit4));
- m_centronics->perror_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit5));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit6))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit7))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit4))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit5))
- INPUT_BUFFER(config, "cent_status_in");
+ MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0)
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
- SOFTWARE_LIST(config, "flop_list").set_original("mc1502_flop");
-// SOFTWARE_LIST(config, "cass_list").set_original("mc1502_cass");
+ MCFG_SOFTWARE_LIST_ADD("flop_list","mc1502_flop")
+// MCFG_SOFTWARE_LIST_ADD("cass_list","mc1502_cass")
RAM(config, RAM_TAG).set_default_size("608K").set_extra_options("96K"); /* 96 base + 512 on expansion card */
-}
+MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/mc8020.cpp b/src/mame/drivers/mc8020.cpp
index 137fd859428..1a5d8dd041f 100644
--- a/src/mame/drivers/mc8020.cpp
+++ b/src/mame/drivers/mc8020.cpp
@@ -296,8 +296,7 @@ static const z80_daisy_config daisy_chain[] =
{ nullptr }
};
-void mc8020_state::mc8020(machine_config &config)
-{
+MACHINE_CONFIG_START(mc8020_state::mc8020)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(2'457'600));
m_maincpu->set_addrmap(AS_PROGRAM, &mc8020_state::mem_map);
@@ -305,13 +304,13 @@ void mc8020_state::mc8020(machine_config &config)
m_maincpu->set_daisy_config(daisy_chain);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(32*6, 16*8);
- screen.set_visarea(0, 32*6-1, 0, 16*8-1);
- screen.set_screen_update(FUNC(mc8020_state::screen_update_mc8020));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(32*6, 16*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 32*6-1, 0, 16*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mc8020_state, screen_update_mc8020)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -326,7 +325,7 @@ void mc8020_state::mc8020(machine_config &config)
ctc.set_clk<2>(XTAL(2'457'600) / 64); // guess
ctc.zc_callback<2>().set("ctc", FUNC(z80ctc_device::trg1));
ctc.zc_callback<2>().append("ctc", FUNC(z80ctc_device::trg0));
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/mc8030.cpp b/src/mame/drivers/mc8030.cpp
index 29d4ad16c2e..cffbecdc3fb 100644
--- a/src/mame/drivers/mc8030.cpp
+++ b/src/mame/drivers/mc8030.cpp
@@ -184,8 +184,7 @@ static const z80_daisy_config daisy_chain[] =
};
-void mc8030_state::mc8030(machine_config &config)
-{
+MACHINE_CONFIG_START(mc8030_state::mc8030)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(2'457'600));
m_maincpu->set_addrmap(AS_PROGRAM, &mc8030_state::mem_map);
@@ -193,13 +192,13 @@ void mc8030_state::mc8030(machine_config &config)
m_maincpu->set_daisy_config(daisy_chain);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(mc8030_state::screen_update_mc8030));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mc8030_state, screen_update_mc8030)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -241,7 +240,7 @@ void mc8030_state::mc8030(machine_config &config)
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "keyboard"));
rs232.rxd_handler().set("asp_sio", FUNC(z80sio_device::rxa_w));
rs232.cts_handler().set("asp_sio", FUNC(z80sio_device::ctsa_w));
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( mc8030 )
diff --git a/src/mame/drivers/mcb216.cpp b/src/mame/drivers/mcb216.cpp
index 43e0e5022aa..a6ca9952aec 100644
--- a/src/mame/drivers/mcb216.cpp
+++ b/src/mame/drivers/mcb216.cpp
@@ -119,41 +119,39 @@ MACHINE_RESET_MEMBER( mcb216_state, cb308 )
m_maincpu->set_state_int(Z80_PC, 0xe000);
}
-void mcb216_state::mcb216(machine_config &config)
-{
+MACHINE_CONFIG_START(mcb216_state::mcb216)
/* basic machine hardware */
- Z80(config, m_maincpu, 8_MHz_XTAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &mcb216_state::mcb216_mem);
- m_maincpu->set_addrmap(AS_IO, &mcb216_state::mcb216_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(mcb216_state::irq_callback));
+ MCFG_DEVICE_ADD("maincpu", Z80, 8_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(mcb216_mem)
+ MCFG_DEVICE_IO_MAP(mcb216_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(mcb216_state, irq_callback)
MCFG_MACHINE_RESET_OVERRIDE(mcb216_state, mcb216)
TMS5501(config, m_tms5501, 8_MHz_XTAL / 4);
m_tms5501->xmt_callback().set("rs232", FUNC(rs232_port_device::write_txd));
- m_tms5501->int_callback().set_inputline(m_maincpu, 0);
+ m_tms5501->int_callback().set_inputline("maincpu", 0);
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
rs232.rxd_handler().set(m_tms5501, FUNC(tms5501_device::rcv_w));
-}
+MACHINE_CONFIG_END
-void mcb216_state::cb308(machine_config &config)
-{
+MACHINE_CONFIG_START(mcb216_state::cb308)
/* basic machine hardware */
- Z80(config, m_maincpu, 8_MHz_XTAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &mcb216_state::cb308_mem);
- m_maincpu->set_addrmap(AS_IO, &mcb216_state::mcb216_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(mcb216_state::irq_callback));
+ MCFG_DEVICE_ADD("maincpu", Z80, 8_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(cb308_mem)
+ MCFG_DEVICE_IO_MAP(mcb216_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(mcb216_state, irq_callback)
MCFG_MACHINE_RESET_OVERRIDE(mcb216_state, cb308)
TMS5501(config, m_tms5501, 8_MHz_XTAL / 4);
m_tms5501->xmt_callback().set("rs232", FUNC(rs232_port_device::write_txd));
- m_tms5501->int_callback().set_inputline(m_maincpu, 0);
+ m_tms5501->int_callback().set_inputline("maincpu", 0);
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
rs232.rxd_handler().set(m_tms5501, FUNC(tms5501_device::rcv_w));
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( mcb216 )
diff --git a/src/mame/drivers/mcr3.cpp b/src/mame/drivers/mcr3.cpp
index 193a58241fc..6e2d7191d51 100644
--- a/src/mame/drivers/mcr3.cpp
+++ b/src/mame/drivers/mcr3.cpp
@@ -104,6 +104,7 @@
#include "emu.h"
+#include "includes/mcr.h"
#include "includes/mcr3.h"
#include "machine/nvram.h"
@@ -259,11 +260,11 @@ WRITE8_MEMBER(mcr3_state::maxrpm_op6_w)
/* when the read is toggled is when the ADC value is latched */
if (!(data & 0x80))
- m_latched_input = m_maxrpm_adc->read();
+ m_latched_input = m_maxrpm_adc->read(space, 0);
/* when both the write and the enable are low, it's a write to the ADC0844 */
if (!(data & 0x40) && !(data & 0x20))
- m_maxrpm_adc->write(bitswap<4>(m_maxrpm_adc_control, 2, 3, 1, 0));
+ m_maxrpm_adc->write(space, 0, bitswap<4>(m_maxrpm_adc_control, 2, 3, 1, 0));
/* low 5 bits control the turbo CS */
m_turbo_cheap_squeak->write(space, offset, data);
@@ -389,7 +390,7 @@ WRITE8_MEMBER(mcr3_state::stargrds_op6_w)
READ8_MEMBER(mcr3_state::spyhunt_ip1_r)
{
- return ioport("ssio:IP1")->read() | (m_cheap_squeak_deluxe->stat_r() << 5);
+ return ioport("ssio:IP1")->read() | (m_cheap_squeak_deluxe->stat_r(space, 0) << 5);
}
@@ -429,7 +430,7 @@ WRITE8_MEMBER(mcr3_state::spyhunt_op4_w)
m_last_op4 = data;
/* low 5 bits go to control the Cheap Squeak Deluxe */
- m_cheap_squeak_deluxe->sr_w(data & 0x0f);
+ m_cheap_squeak_deluxe->sr_w(space, offset, data & 0x0f);
m_cheap_squeak_deluxe->sirq_w(BIT(data, 4));
}
@@ -1077,15 +1078,15 @@ GFXDECODE_END
*************************************/
/* Core MCR monoboard system with no sound */
-void mcr3_state::mcrmono(machine_config &config)
-{
+MACHINE_CONFIG_START(mcr3_state::mcrmono)
+
/* basic machine hardware */
Z80(config, m_maincpu, MASTER_CLOCK/4);
m_maincpu->set_addrmap(AS_PROGRAM, &mcr3_state::mcrmono_map);
m_maincpu->set_addrmap(AS_IO, &mcr3_state::mcrmono_portmap);
m_maincpu->set_daisy_config(mcr_daisy_chain);
- TIMER(config, "scantimer").configure_scanline(FUNC(mcr3_state::mcr_interrupt), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mcr3_state, mcr_interrupt, "screen", 0, 1)
Z80CTC(config, m_ctc, MASTER_CLOCK/4 /* same as "maincpu" */);
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
@@ -1100,33 +1101,32 @@ void mcr3_state::mcrmono(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
- m_screen->set_refresh_hz(30);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(32*16, 30*16);
- m_screen->set_visarea(0*16, 32*16-1, 0*16, 30*16-1);
- m_screen->set_screen_update(FUNC(mcr3_state::screen_update_mcr3));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_mcr3);
- PALETTE(config, m_palette).set_entries(64);
-}
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(30)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*16, 30*16)
+ MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 0*16, 30*16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mcr3_state, screen_update_mcr3)
+ MCFG_SCREEN_PALETTE("palette")
+
+ GFXDECODE(config, "gfxdecode", "palette", gfx_mcr3);
+ PALETTE(config, "palette").set_entries(64);
+MACHINE_CONFIG_END
/*************************************/
/* Sarge/Demolition Derby Mono/Max RPM = MCR monoboard with Turbo Cheap Squeak */
-void mcr3_state::mono_tcs(machine_config &config)
-{
+MACHINE_CONFIG_START(mcr3_state::mono_tcs)
mcrmono(config);
/* basic machine hardware */
- MIDWAY_TURBO_CHEAP_SQUEAK(config, m_turbo_cheap_squeak);
- m_turbo_cheap_squeak->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_turbo_cheap_squeak->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("tcs", MIDWAY_TURBO_CHEAP_SQUEAK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
void mcr3_state::maxrpm(machine_config &config)
{
@@ -1141,53 +1141,51 @@ void mcr3_state::maxrpm(machine_config &config)
/* Rampage/Power Drive/Star Guards = MCR monoboard with Sounds Good */
-void mcr3_state::mono_sg(machine_config &config)
-{
+MACHINE_CONFIG_START(mcr3_state::mono_sg)
mcrmono(config);
/* basic machine hardware */
- MIDWAY_SOUNDS_GOOD(config, m_sounds_good);
- m_sounds_good->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_sounds_good->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("sg", MIDWAY_SOUNDS_GOOD)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/*************************************/
/* Core scrolling system with SSIO sound */
-void mcr3_state::mcrscroll(machine_config &config)
-{
+MACHINE_CONFIG_START(mcr3_state::mcrscroll)
mcrmono(config);
/* basic machine hardware */
- MIDWAY_SSIO(config, m_ssio);
- m_ssio->add_route(0, "lspeaker", 1.0);
- m_ssio->add_route(1, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("ssio", MIDWAY_SSIO)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
m_maincpu->set_addrmap(AS_PROGRAM, &mcr3_state::spyhunt_map);
m_maincpu->set_addrmap(AS_IO, &mcr3_state::spyhunt_portmap);
/* video hardware */
- m_screen->set_size(30*16, 30*16);
- m_screen->set_visarea(0, 30*16-1, 0, 30*16-1);
- m_screen->set_screen_update(FUNC(mcr3_state::screen_update_spyhunt));
- m_gfxdecode->set_info(gfx_spyhunt);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(30*16, 30*16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 30*16-1, 0, 30*16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mcr3_state, screen_update_spyhunt)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_spyhunt)
subdevice<palette_device>("palette")->set_entries(64 + 4).set_init(FUNC(mcr3_state::spyhunt_palette));
MCFG_VIDEO_START_OVERRIDE(mcr3_state,spyhunt)
-}
+MACHINE_CONFIG_END
/* Spy Hunter = scrolling system with an SSIO and a cheap squeak deluxe */
-void mcr3_state::mcrsc_csd(machine_config &config)
-{
+MACHINE_CONFIG_START(mcr3_state::mcrsc_csd)
mcrscroll(config);
/* basic machine hardware */
- MIDWAY_CHEAP_SQUEAK_DELUXE(config, m_cheap_squeak_deluxe);
- m_cheap_squeak_deluxe->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_cheap_squeak_deluxe->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("csd", MIDWAY_CHEAP_SQUEAK_DELUXE)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
CD4099(config, m_lamplatch); // U1 on Lamp Driver Board
m_lamplatch->q_out_cb<0>().set_output("lamp0");
@@ -1198,7 +1196,12 @@ void mcr3_state::mcrsc_csd(machine_config &config)
m_lamplatch->q_out_cb<5>().set_output("lamp5");
m_lamplatch->q_out_cb<6>().set_output("lamp6");
m_lamplatch->q_out_cb<7>().set_output("lamp7");
-}
+MACHINE_CONFIG_END
+
+
+
+
+
/*************************************
diff --git a/src/mame/drivers/mcr68.cpp b/src/mame/drivers/mcr68.cpp
index e8367ad72bf..859c316cff7 100644
--- a/src/mame/drivers/mcr68.cpp
+++ b/src/mame/drivers/mcr68.cpp
@@ -107,7 +107,7 @@ WRITE16_MEMBER(mcr68_state::blasted_control_w)
READ16_MEMBER(mcr68_state::spyhunt2_port_0_r)
{
int result = ioport("IN0")->read();
- int analog = m_adc->read();
+ int analog = m_adc->read(space, 0);
return result | ((m_sounds_good->read(space, 0) & 1) << 5) | (analog << 8);
}
@@ -130,7 +130,7 @@ WRITE16_MEMBER(mcr68_state::spyhunt2_control_w)
m_sounds_good->reset_write(~m_control_word & 0x2000);
m_sounds_good->write(space, offset, (m_control_word >> 8) & 0x001f);
- m_adc->write((m_control_word >> 3) & 0x0f);
+ m_adc->write(space, 0, (m_control_word >> 3) & 0x0f);
}
@@ -181,7 +181,7 @@ WRITE16_MEMBER(mcr68_state::archrivl_control_w)
{
COMBINE_DATA(&m_control_word);
m_cvsd_sound->reset_write(~m_control_word & 0x0400);
- m_cvsd_sound->write(m_control_word & 0x3ff);
+ m_cvsd_sound->write(space, 0, m_control_word & 0x3ff);
}
@@ -896,11 +896,11 @@ GFXDECODE_END
=================================================================*/
-void mcr68_state::mcr68(machine_config &config)
-{
+MACHINE_CONFIG_START(mcr68_state::mcr68)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 7723800);
- m_maincpu->set_addrmap(AS_PROGRAM, &mcr68_state::mcr68_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, 7723800)
+ MCFG_DEVICE_PROGRAM_MAP(mcr68_map)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
MCFG_MACHINE_START_OVERRIDE(mcr68_state,mcr68)
@@ -910,15 +910,15 @@ void mcr68_state::mcr68(machine_config &config)
m_ptm->irq_callback().set_inputline("maincpu", 2);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(30);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(32*16, 30*16);
- m_screen->set_visarea(0, 32*16-1, 0, 30*16-1);
- m_screen->set_screen_update(FUNC(mcr68_state::screen_update_mcr68));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(30)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*16, 30*16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 32*16-1, 0, 30*16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mcr68_state, screen_update_mcr68)
+ MCFG_SCREEN_PALETTE("palette")
- TIMER(config, "scantimer").configure_scanline(FUNC(mcr68_state::scanline_cb), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mcr68_state, scanline_cb, "screen", 0, 1)
GFXDECODE(config, m_gfxdecode, "palette", gfx_mcr68);
PALETTE(config, "palette").set_format(palette_device::xRBG_333, 64);
@@ -927,7 +927,7 @@ void mcr68_state::mcr68(machine_config &config)
/* sound hardware -- determined by specific machine */
SPEAKER(config, "speaker").front_center();
-}
+MACHINE_CONFIG_END
void mcr68_state::xenophob(machine_config &config)
@@ -949,53 +949,56 @@ void mcr68_state::intlaser(machine_config &config)
}
-void mcr68_state::spyhunt2(machine_config &config)
-{
+MACHINE_CONFIG_START(mcr68_state::spyhunt2)
mcr68(config);
/* basic machine hardware */
- MIDWAY_SOUNDS_GOOD(config, m_sounds_good).add_route(ALL_OUTPUTS, "speaker", 1.0);
- MIDWAY_TURBO_CHEAP_SQUEAK(config, m_turbo_cheap_squeak).add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD(m_sounds_good, MIDWAY_SOUNDS_GOOD)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+ MCFG_DEVICE_ADD("tcs", MIDWAY_TURBO_CHEAP_SQUEAK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
ADC0844(config, m_adc);
m_adc->ch1_callback().set_ioport("AN1");
m_adc->ch2_callback().set_ioport("AN2");
m_adc->ch3_callback().set_ioport("AN3");
m_adc->ch4_callback().set_ioport("AN4");
-}
+MACHINE_CONFIG_END
-void mcr68_state::archrivl(machine_config &config)
-{
+MACHINE_CONFIG_START(mcr68_state::archrivl)
mcr68(config);
/* basic machine hardware */
- WILLIAMS_CVSD_SOUND(config, m_cvsd_sound).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_ADD("cvsd", WILLIAMS_CVSD_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
-void mcr68_state::pigskin(machine_config &config)
-{
+MACHINE_CONFIG_START(mcr68_state::pigskin)
mcr68(config);
/* basic machine hardware */
- WILLIAMS_CVSD_SOUND(config, m_cvsd_sound).add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD("cvsd", WILLIAMS_CVSD_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
- m_maincpu->set_addrmap(AS_PROGRAM, &mcr68_state::pigskin_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(pigskin_map)
+MACHINE_CONFIG_END
-void mcr68_state::trisport(machine_config &config)
-{
+MACHINE_CONFIG_START(mcr68_state::trisport)
mcr68(config);
/* basic machine hardware */
- WILLIAMS_CVSD_SOUND(config, m_cvsd_sound).add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD("cvsd", WILLIAMS_CVSD_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
- m_maincpu->set_addrmap(AS_PROGRAM, &mcr68_state::trisport_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(trisport_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/meadows.cpp b/src/mame/drivers/meadows.cpp
index ee4c065045e..4e8392ef9b2 100644
--- a/src/mame/drivers/meadows.cpp
+++ b/src/mame/drivers/meadows.cpp
@@ -649,6 +649,7 @@ void meadows_state::meadows(machine_config &config)
SPEAKER(config, "speaker").front_center();
DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
@@ -709,6 +710,7 @@ void meadows_state::bowl3d(machine_config &config)
SPEAKER(config, "speaker").front_center();
DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
@@ -753,7 +755,7 @@ ROM_START( deadeye )
/* empty */
ROM_REGION( 0x08000, "audiocpu", 0 )
- ROM_LOAD( "de_sound_099c_m2-a1.0.4a", 0x0000, 0x0400, CRC(c10a1b1a) SHA1(779ea261d23360634081295a164cacbd819d8719) )
+ ROM_LOAD( "de_snd", 0x0000, 0x0400, CRC(c10a1b1a) SHA1(779ea261d23360634081295a164cacbd819d8719) )
ROM_END
diff --git a/src/mame/drivers/meadwttl.cpp b/src/mame/drivers/meadwttl.cpp
index aa4cd9a537d..f042a4b7f81 100644
--- a/src/mame/drivers/meadwttl.cpp
+++ b/src/mame/drivers/meadwttl.cpp
@@ -90,21 +90,20 @@ void meadwttl_state::video_start()
{
}
-void meadwttl_state::meadows(machine_config &config)
-{
+MACHINE_CONFIG_START(meadwttl_state::meadows)
+
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_meadows);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(meadows)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL);
- m_video->set_vert_params(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.30);
-}
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/mediagx.cpp b/src/mame/drivers/mediagx.cpp
index 27831b89759..a6460ad57af 100644
--- a/src/mame/drivers/mediagx.cpp
+++ b/src/mame/drivers/mediagx.cpp
@@ -883,10 +883,10 @@ void mediagx_state::ramdac_map(address_map &map)
MACHINE_CONFIG_START(mediagx_state::mediagx)
/* basic machine hardware */
- MEDIAGX(config, m_maincpu, 166000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &mediagx_state::mediagx_map);
- m_maincpu->set_addrmap(AS_IO, &mediagx_state::mediagx_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD(m_maincpu, MEDIAGX, 166000000)
+ MCFG_DEVICE_PROGRAM_MAP(mediagx_map)
+ MCFG_DEVICE_IO_MAP(mediagx_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
pcat_common(config);
@@ -896,29 +896,31 @@ MACHINE_CONFIG_START(mediagx_state::mediagx)
ide_controller_32_device &ide(IDE_CONTROLLER_32(config, "ide").options(ata_devices, "hdd", nullptr, true));
ide.irq_handler().set(m_pic8259_2, FUNC(pic8259_device::ir6_w));
- TIMER(config, "sound_timer").configure_generic(FUNC(mediagx_state::sound_timer_callback));
+ MCFG_TIMER_DRIVER_ADD("sound_timer", mediagx_state, sound_timer_callback)
RAMDAC(config, m_ramdac, 0, m_palette);
m_ramdac->set_addrmap(0, &mediagx_state::ramdac_map);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(640, 480);
- m_screen->set_visarea(0, 639, 0, 239);
- m_screen->set_screen_update(FUNC(mediagx_state::screen_update));
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
+ MCFG_SCREEN_UPDATE_DRIVER(mediagx_state, screen_update)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cga);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_cga)
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_PALETTE_ADD(m_palette, 256)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- DMADAC(config, m_dmadac[0]).add_route(ALL_OUTPUTS, "lspeaker", 1.0);
+ MCFG_DEVICE_ADD(m_dmadac[0], DMADAC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- DMADAC(config, m_dmadac[1]).add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD(m_dmadac[1], DMADAC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/megadriv.cpp b/src/mame/drivers/megadriv.cpp
index 6f8bd49912b..d6a7c70cfda 100644
--- a/src/mame/drivers/megadriv.cpp
+++ b/src/mame/drivers/megadriv.cpp
@@ -377,51 +377,50 @@ WRITE_LINE_MEMBER(md_cons_state::screen_vblank_console)
}
}
-void md_cons_state::ms_megadriv(machine_config &config)
-{
+MACHINE_CONFIG_START(md_cons_state::ms_megadriv)
md_ntsc(config);
MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megadriv)
MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
- subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
+ MCFG_SCREEN_MODIFY("megadriv")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, md_cons_state, screen_vblank_console))
- MD_CART_SLOT(config, m_cart, md_cart, nullptr);
- SOFTWARE_LIST(config, "cart_list").set_original("megadriv");
-}
+ MCFG_MD_CARTRIDGE_ADD("mdslot", md_cart, nullptr)
+ MCFG_SOFTWARE_LIST_ADD("cart_list","megadriv")
+MACHINE_CONFIG_END
-void md_cons_state::ms_megadpal(machine_config &config)
-{
+MACHINE_CONFIG_START(md_cons_state::ms_megadpal)
md_pal(config);
MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megadriv)
MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
- subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
+ MCFG_SCREEN_MODIFY("megadriv")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, md_cons_state, screen_vblank_console))
- MD_CART_SLOT(config, m_cart, md_cart, nullptr);
- SOFTWARE_LIST(config, "cart_list").set_original("megadriv");
-}
+ MCFG_MD_CARTRIDGE_ADD("mdslot", md_cart, nullptr)
+ MCFG_SOFTWARE_LIST_ADD("cart_list","megadriv")
+MACHINE_CONFIG_END
-void md_cons_state::genesis_tmss(machine_config &config)
-{
+MACHINE_CONFIG_START(md_cons_state::genesis_tmss)
ms_megadriv(config);
- subdevice<software_list_device>("cart_list")->set_filter("TMSS");
-}
+ MCFG_SOFTWARE_LIST_FILTER("cart_list","TMSS")
+MACHINE_CONFIG_END
-void md_cons_state::dcat16_megadriv(machine_config &config)
-{
+MACHINE_CONFIG_START(md_cons_state::dcat16_megadriv)
dcat16_megadriv_base(config);
MCFG_MACHINE_START_OVERRIDE(md_cons_state, md_common)
MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, megadriv)
- subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
+ MCFG_SCREEN_MODIFY("megadriv")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, md_cons_state, screen_vblank_console))
// has SD card slot instead?
-// MD_CART_SLOT(config, m_cart, md_cart, nullptr);
-// SOFTWARE_LIST(config, "cart_list").set_original("megadriv");
-}
+// MCFG_MD_CARTRIDGE_ADD("mdslot", md_cart, nullptr)
+// MCFG_SOFTWARE_LIST_ADD("cart_list","megadriv")
+MACHINE_CONFIG_END
/*************************************
*
@@ -605,32 +604,35 @@ MACHINE_CONFIG_START(md_cons_state::genesis_32x)
MCFG_MACHINE_START_OVERRIDE(md_cons_state, md_common)
MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
- m_vdp->set_md_32x_scanline(FUNC(md_cons_state::_32x_scanline_callback), this);
- m_vdp->set_md_32x_scanline_helper(FUNC(md_cons_state::_32x_scanline_helper_callback), this);
- m_vdp->set_md_32x_interrupt(FUNC(md_cons_state::_32x_interrupt_callback), this);
- m_vdp->reset_routes();
- m_vdp->add_route(ALL_OUTPUTS, "lspeaker", (0.25)/2);
- m_vdp->add_route(ALL_OUTPUTS, "rspeaker", (0.25)/2);
+ MCFG_DEVICE_MODIFY("gen_vdp")
+ MCFG_SEGA315_5313_32X_SCANLINE_CB(md_cons_state, _32x_scanline_callback);
+ MCFG_SEGA315_5313_32X_SCANLINE_HELPER_CB(md_cons_state, _32x_scanline_helper_callback);
+ MCFG_SEGA315_5313_32X_INTERRUPT_CB(md_cons_state, _32x_interrupt_callback);
+ MCFG_SOUND_ROUTES_RESET()
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", (0.25)/2)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", (0.25)/2)
SEGA_32X_NTSC(config, m_32x, (MASTER_CLOCK_NTSC * 3) / 7, m_maincpu, m_scan_timer);
m_32x->set_palette_tag("gen_vdp:palette");
- subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
+ MCFG_SCREEN_MODIFY("megadriv")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, md_cons_state, screen_vblank_console))
// we need to remove and re-add the YM because the balance is different
// due to MAME / MESS having severe issues if the dac output is > 0.40? (sound is corrupted even if DAC is silent?!)
- config.device_remove("ymsnd");
+ MCFG_DEVICE_REMOVE("ymsnd")
- YM2612(config, m_ymsnd, MASTER_CLOCK_NTSC/7);
- m_ymsnd->add_route(0, "lspeaker", (0.50)/2);
- m_ymsnd->add_route(1, "rspeaker", (0.50)/2);
+ MCFG_DEVICE_ADD("ymsnd", YM2612, MASTER_CLOCK_NTSC/7)
+ MCFG_SOUND_ROUTE(0, "lspeaker", (0.50)/2)
+ MCFG_SOUND_ROUTE(1, "rspeaker", (0.50)/2)
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "_32x_cart")
MCFG_GENERIC_EXTENSIONS("32x,bin")
MCFG_GENERIC_MANDATORY
MCFG_GENERIC_LOAD(md_cons_state, _32x_cart)
- SOFTWARE_LIST(config, "cart_list").set_original("32x").set_filter("NTSC-U");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","32x")
+ MCFG_SOFTWARE_LIST_FILTER("cart_list","NTSC-U")
MACHINE_CONFIG_END
@@ -640,32 +642,35 @@ MACHINE_CONFIG_START(md_cons_state::mdj_32x)
MCFG_MACHINE_START_OVERRIDE(md_cons_state, md_common)
MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
- m_vdp->set_md_32x_scanline(FUNC(md_cons_state::_32x_scanline_callback), this);
- m_vdp->set_md_32x_scanline_helper(FUNC(md_cons_state::_32x_scanline_helper_callback), this);
- m_vdp->set_md_32x_interrupt(FUNC(md_cons_state::_32x_interrupt_callback), this);
- m_vdp->reset_routes();
- m_vdp->add_route(ALL_OUTPUTS, "lspeaker", (0.25)/2);
- m_vdp->add_route(ALL_OUTPUTS, "rspeaker", (0.25)/2);
+ MCFG_DEVICE_MODIFY("gen_vdp")
+ MCFG_SEGA315_5313_32X_SCANLINE_CB(md_cons_state, _32x_scanline_callback);
+ MCFG_SEGA315_5313_32X_SCANLINE_HELPER_CB(md_cons_state, _32x_scanline_helper_callback);
+ MCFG_SEGA315_5313_32X_INTERRUPT_CB(md_cons_state, _32x_interrupt_callback);
+ MCFG_SOUND_ROUTES_RESET()
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", (0.25)/2)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", (0.25)/2)
SEGA_32X_NTSC(config, m_32x, (MASTER_CLOCK_NTSC * 3) / 7, m_maincpu, m_scan_timer);
m_32x->set_palette_tag("gen_vdp:palette");
- subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
+ MCFG_SCREEN_MODIFY("megadriv")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, md_cons_state, screen_vblank_console))
// we need to remove and re-add the sound system because the balance is different
// due to MAME / MESS having severe issues if the dac output is > 0.40? (sound is corrupted even if DAC is silent?!)
- config.device_remove("ymsnd");
+ MCFG_DEVICE_REMOVE("ymsnd")
- YM2612(config, m_ymsnd, MASTER_CLOCK_NTSC/7);
- m_ymsnd->add_route(0, "lspeaker", (0.50)/2);
- m_ymsnd->add_route(1, "rspeaker", (0.50)/2);
+ MCFG_DEVICE_ADD("ymsnd", YM2612, MASTER_CLOCK_NTSC/7)
+ MCFG_SOUND_ROUTE(0, "lspeaker", (0.50)/2)
+ MCFG_SOUND_ROUTE(1, "rspeaker", (0.50)/2)
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "_32x_cart")
MCFG_GENERIC_EXTENSIONS("32x,bin")
MCFG_GENERIC_MANDATORY
MCFG_GENERIC_LOAD(md_cons_state, _32x_cart)
- SOFTWARE_LIST(config, "cart_list").set_original("32x").set_filter("NTSC-J");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","32x")
+ MCFG_SOFTWARE_LIST_FILTER("cart_list","NTSC-J")
MACHINE_CONFIG_END
@@ -675,32 +680,35 @@ MACHINE_CONFIG_START(md_cons_state::md_32x)
MCFG_MACHINE_START_OVERRIDE(md_cons_state, md_common)
MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
- m_vdp->set_md_32x_scanline(FUNC(md_cons_state::_32x_scanline_callback), this);
- m_vdp->set_md_32x_scanline_helper(FUNC(md_cons_state::_32x_scanline_helper_callback), this);
- m_vdp->set_md_32x_interrupt(FUNC(md_cons_state::_32x_interrupt_callback), this);
- m_vdp->reset_routes();
- m_vdp->add_route(ALL_OUTPUTS, "lspeaker", (0.25)/2);
- m_vdp->add_route(ALL_OUTPUTS, "rspeaker", (0.25)/2);
+ MCFG_DEVICE_MODIFY("gen_vdp")
+ MCFG_SEGA315_5313_32X_SCANLINE_CB(md_cons_state, _32x_scanline_callback);
+ MCFG_SEGA315_5313_32X_SCANLINE_HELPER_CB(md_cons_state, _32x_scanline_helper_callback);
+ MCFG_SEGA315_5313_32X_INTERRUPT_CB(md_cons_state, _32x_interrupt_callback);
+ MCFG_SOUND_ROUTES_RESET()
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", (0.25)/2)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", (0.25)/2)
SEGA_32X_PAL(config, m_32x, (MASTER_CLOCK_PAL * 3) / 7, m_maincpu, m_scan_timer);
m_32x->set_palette_tag("gen_vdp:palette");
- subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
+ MCFG_SCREEN_MODIFY("megadriv")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, md_cons_state, screen_vblank_console))
// we need to remove and re-add the sound system because the balance is different
// due to MAME / MESS having severe issues if the dac output is > 0.40? (sound is corrupted even if DAC is silent?!)
- config.device_remove("ymsnd");
+ MCFG_DEVICE_REMOVE("ymsnd")
- YM2612(config, m_ymsnd, MASTER_CLOCK_NTSC/7);
- m_ymsnd->add_route(0, "lspeaker", (0.50)/2);
- m_ymsnd->add_route(1, "rspeaker", (0.50)/2);
+ MCFG_DEVICE_ADD("ymsnd", YM2612, MASTER_CLOCK_NTSC/7)
+ MCFG_SOUND_ROUTE(0, "lspeaker", (0.50)/2)
+ MCFG_SOUND_ROUTE(1, "rspeaker", (0.50)/2)
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "_32x_cart")
MCFG_GENERIC_EXTENSIONS("32x,bin")
MCFG_GENERIC_MANDATORY
MCFG_GENERIC_LOAD(md_cons_state, _32x_cart)
- SOFTWARE_LIST(config, "cart_list").set_original("32x").set_filter("PAL");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","32x")
+ MCFG_SOFTWARE_LIST_FILTER("cart_list","PAL")
MACHINE_CONFIG_END
@@ -736,120 +744,120 @@ ROM_END
/****************************************** SegaCD emulation ****************************************/
-void md_cons_state::genesis_scd(machine_config &config)
-{
+MACHINE_CONFIG_START(md_cons_state::genesis_scd)
md_ntsc(config);
MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
- subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
+ MCFG_SCREEN_MODIFY("megadriv")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, md_cons_state, screen_vblank_console))
- SEGA_SEGACD_US(config, m_segacd, 0);
- m_segacd->set_palette("gen_vdp:palette");
- m_segacd->set_hostcpu(m_maincpu);
+ MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_US, 0)
+ MCFG_GFX_PALETTE("gen_vdp:palette")
- CDROM(config, "cdrom").set_interface("scd_cdrom");
+ MCFG_CDROM_ADD( "cdrom" )
+ MCFG_CDROM_INTERFACE("scd_cdrom")
- SOFTWARE_LIST(config, "cd_list").set_original("segacd");
-}
+ MCFG_SOFTWARE_LIST_ADD("cd_list","segacd")
+MACHINE_CONFIG_END
-void md_cons_state::md_scd(machine_config &config)
-{
+MACHINE_CONFIG_START(md_cons_state::md_scd)
md_pal(config);
MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
- subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
+ MCFG_SCREEN_MODIFY("megadriv")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, md_cons_state, screen_vblank_console))
- SEGA_SEGACD_EUROPE(config, m_segacd, 0);
- m_segacd->set_palette("gen_vdp:palette");
- m_segacd->set_hostcpu(m_maincpu);
+ MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_EUROPE, 0)
+ MCFG_GFX_PALETTE("gen_vdp:palette")
- CDROM(config, "cdrom").set_interface("scd_cdrom");
+ MCFG_CDROM_ADD( "cdrom" )
+ MCFG_CDROM_INTERFACE("scd_cdrom")
- SOFTWARE_LIST(config, "cd_list").set_original("megacd");
-}
+ MCFG_SOFTWARE_LIST_ADD("cd_list","megacd")
+MACHINE_CONFIG_END
-void md_cons_state::mdj_scd(machine_config &config)
-{
+MACHINE_CONFIG_START(md_cons_state::mdj_scd)
md_ntsc(config);
MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
- subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
+ MCFG_SCREEN_MODIFY("megadriv")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, md_cons_state, screen_vblank_console))
- SEGA_SEGACD_JAPAN(config, m_segacd, 0);
- m_segacd->set_palette("gen_vdp:palette");
- m_segacd->set_hostcpu(m_maincpu);
+ MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_JAPAN, 0)
+ MCFG_GFX_PALETTE("gen_vdp:palette")
- CDROM(config, "cdrom").set_interface("scd_cdrom");
+ MCFG_CDROM_ADD( "cdrom" )
+ MCFG_CDROM_INTERFACE("scd_cdrom")
- SOFTWARE_LIST(config, "cd_list").set_original("megacdj");
-}
+ MCFG_SOFTWARE_LIST_ADD("cd_list","megacdj")
+MACHINE_CONFIG_END
/******************SEGA CD + 32X****************************/
MACHINE_CONFIG_START(md_cons_state::genesis_32x_scd)
genesis_32x(config);
- SEGA_SEGACD_US(config, m_segacd, 0);
- m_segacd->set_palette("gen_vdp:palette");
- m_segacd->set_hostcpu(m_maincpu);
+ MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_US, 0)
+ MCFG_GFX_PALETTE("gen_vdp:palette")
- CDROM(config, "cdrom").set_interface("scd_cdrom");
+ MCFG_CDROM_ADD( "cdrom" )
+ MCFG_CDROM_INTERFACE("scd_cdrom")
MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
- config.device_remove("cartslot");
+ MCFG_DEVICE_REMOVE("cartslot")
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "_32x_cart")
MCFG_GENERIC_EXTENSIONS("32x,bin")
MCFG_GENERIC_LOAD(md_cons_state, _32x_cart)
- //config.m_perfect_cpu_quantum = subtag("32x_master_sh2");
- SOFTWARE_LIST(config, "cd_list").set_original("segacd");
+ //MCFG_QUANTUM_PERFECT_CPU("32x_master_sh2")
+ MCFG_SOFTWARE_LIST_ADD("cd_list", "segacd")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(md_cons_state::md_32x_scd)
md_32x(config);
- SEGA_SEGACD_EUROPE(config, m_segacd, 0);
- m_segacd->set_palette("gen_vdp:palette");
- m_segacd->set_hostcpu(m_maincpu);
+ MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_EUROPE, 0)
+ MCFG_GFX_PALETTE("gen_vdp:palette")
- CDROM(config, "cdrom").set_interface("scd_cdrom");
+ MCFG_CDROM_ADD( "cdrom" )
+ MCFG_CDROM_INTERFACE("scd_cdrom")
MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
- config.device_remove("cartslot");
+ MCFG_DEVICE_REMOVE("cartslot")
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "_32x_cart")
MCFG_GENERIC_EXTENSIONS("32x,bin")
MCFG_GENERIC_LOAD(md_cons_state, _32x_cart)
- //config.m_perfect_cpu_quantum = subtag("32x_master_sh2");
- SOFTWARE_LIST(config, "cd_list").set_original("megacd");
+ //MCFG_QUANTUM_PERFECT_CPU("32x_master_sh2")
+ MCFG_SOFTWARE_LIST_ADD("cd_list", "megacd")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(md_cons_state::mdj_32x_scd)
mdj_32x(config);
- SEGA_SEGACD_JAPAN(config, m_segacd, 0);
- m_segacd->set_palette("gen_vdp:palette");
- m_segacd->set_hostcpu(m_maincpu);
+ MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_JAPAN, 0)
+ MCFG_GFX_PALETTE("gen_vdp:palette")
- CDROM(config, "cdrom").set_interface("scd_cdrom");
+ MCFG_CDROM_ADD( "cdrom" )
+ MCFG_CDROM_INTERFACE("scd_cdrom")
MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
- config.device_remove("cartslot");
+ MCFG_DEVICE_REMOVE("cartslot")
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "_32x_cart")
MCFG_GENERIC_EXTENSIONS("32x,bin")
MCFG_GENERIC_LOAD(md_cons_state, _32x_cart)
- //config.m_perfect_cpu_quantum = subtag("32x_master_sh2");
- SOFTWARE_LIST(config, "cd_list").set_original("megacdj");
+ //MCFG_QUANTUM_PERFECT_CPU("32x_master_sh2")
+ MCFG_SOFTWARE_LIST_ADD("cd_list", "megacdj")
MACHINE_CONFIG_END
/* We need proper names for most of these BIOS ROMs! */
diff --git a/src/mame/drivers/megadriv_acbl.cpp b/src/mame/drivers/megadriv_acbl.cpp
index cf6e5463d9d..5431775a539 100644
--- a/src/mame/drivers/megadriv_acbl.cpp
+++ b/src/mame/drivers/megadriv_acbl.cpp
@@ -6,14 +6,10 @@
Games supported:
* Aladdin
- * Bare Knuckle III
- * Jurassic Park
* Mortal Kombat 3
- * Sonic The Hedgehog 2
* Super Street Fighter II - The New Challengers
* Sunset Riders
* Top Shooter
- * Twinkle Tale
Aladdin PCB info
@@ -100,7 +96,7 @@ Stephh's notes (based on the game M68000 code and some tests) :
that's why I've "blanked" player 2 inputs which are never read.
- I've labelled the buttons the same way as in 'g_aladj' with default options.
-5) MegaDrive comparison ('g_aladj' in HazeMD)
+5) MegaDrive comparaison ('g_aladj' in HazeMD)
- There is no "OPTIONS" menu as the difficulty is handled via the MCU / Dip Switches.
Some code has been patched but most is still there (see the texts in the ROM ares);
@@ -195,7 +191,7 @@ connector, but of course, I can be wrong.
|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|_|_|_|
- IC1 = Surface scratched out, don't know what it is
+ IC1 = Surface scracthed out, don't know what is it
U24 = Surface scratched out, seems like a PROM
DIPs = Fixed as: 00001000
ROMs = Toshiba TC574000AD
@@ -270,7 +266,7 @@ connector, but of course, I can be wrong.
// smaller ROM region because some bootlegs check for RAM there (used by topshoot and hshavoc)
void md_boot_state::md_bootleg_map(address_map &map)
{
- map(0x000000, 0x1fffff).rom(); /* Cartridge Program Rom */
+ map(0x000000, 0x0fffff).rom(); /* Cartridge Program Rom */
map(0x200000, 0x2023ff).ram(); // tested
map(0xa00000, 0xa01fff).rw(FUNC(md_boot_state::megadriv_68k_read_z80_ram), FUNC(md_boot_state::megadriv_68k_write_z80_ram));
@@ -288,12 +284,12 @@ void md_boot_state::md_bootleg_map(address_map &map)
map(0xe00000, 0xe0ffff).ram().mirror(0x1f0000).share("megadrive_ram");
}
-void md_boot_state::md_bootleg(machine_config &config)
-{
+MACHINE_CONFIG_START(md_boot_state::md_bootleg)
md_ntsc(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &md_boot_state::md_bootleg_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(md_bootleg_map)
+MACHINE_CONFIG_END
/*************************************
*
@@ -329,29 +325,6 @@ READ16_MEMBER(md_boot_state::aladmdb_r )
if (m_maincpu->pc()==0x1b2d4e) return 0x0000;
logerror("aladbl_r : %06x\n",m_maincpu->pc());
- return 0x0000;
-}
-
-READ16_MEMBER(md_boot_state::twinktmb_r )
-{
- if (m_maincpu->pc()==0x02f81e)
- return ioport("COIN")->read(); // TODO: coins don't respond well
-
- if (m_maincpu->pc()==0x02f84e) return 0x0000; // what's this? dips?
-
- //logerror("twinktmb_r : %06x\n",m_maincpu->pc());
-
- return 0x0000;
-}
-
-READ16_MEMBER(md_boot_state::jparkmb_r )
-{
- if (m_maincpu->pc()==0x1e327a)
- return ioport("COIN")->read(); // TODO: coins don't respond well
-
- if (m_maincpu->pc()==0x1e3254) return 0x0000; // what's this? dips?
-
- //logerror("jparkmb_r : %06x\n",m_maincpu->pc());
return 0x0000;
}
@@ -632,75 +605,6 @@ INPUT_PORTS_START( aladmdb )
PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1) /* needed to avoid credits getting mad */
INPUT_PORTS_END
-INPUT_PORTS_START( sonic2mb )
- PORT_INCLUDE( md_common )
-
- PORT_MODIFY("PAD1")
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
-
- PORT_MODIFY("PAD2")
- PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("DSW")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x00fc, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_DIPNAME( 0x0300, 0x0200, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
- PORT_DIPSETTING( 0x0000, "1" )
- PORT_DIPSETTING( 0x0100, "2" )
- PORT_DIPSETTING( 0x0200, "3" )
- PORT_DIPSETTING( 0x0300, "4" )
- PORT_DIPNAME( 0x3c00, 0x2000, "Timer Speed" ) PORT_DIPLOCATION("SW1:3,4,5,6")
- PORT_DIPSETTING( 0x3c00, "0 (Slowest)" )
- PORT_DIPSETTING( 0x3800, "1" )
- PORT_DIPSETTING( 0x3400, "2" )
- PORT_DIPSETTING( 0x3000, "3" )
- PORT_DIPSETTING( 0x2c00, "4" )
- PORT_DIPSETTING( 0x2800, "5" )
- PORT_DIPSETTING( 0x2400, "6" )
- PORT_DIPSETTING( 0x2000, "7" )
- PORT_DIPSETTING( 0x1c00, "8" )
- PORT_DIPSETTING( 0x1800, "9" )
- PORT_DIPSETTING( 0x1400, "10" )
- PORT_DIPSETTING( 0x1000, "11" )
- PORT_DIPSETTING( 0x0c00, "12" )
- PORT_DIPSETTING( 0x0800, "13" )
- PORT_DIPSETTING( 0x0400, "14" )
- PORT_DIPSETTING( 0x0000, "15 (Fastest)" )
- PORT_DIPUNKNOWN_DIPLOC(0x4000, 0x4000, "SW1:7")
- PORT_DIPUNKNOWN_DIPLOC(0x8000, 0x8000, "SW1:8")
-INPUT_PORTS_END
-
-INPUT_PORTS_START( twinktmb )
- PORT_INCLUDE( aladmdb )
-
- /* As I don't know how it is on real hardware, this is more a guess than anything */
-
- PORT_MODIFY("MCU")
- 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")
-
- PORT_START("COIN")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_COIN1 )
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_COIN2 )
- PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNUSED )
-INPUT_PORTS_END
-
/* verified from M68000 code */
INPUT_PORTS_START( srmdb )
PORT_INCLUDE( md_common )
@@ -805,11 +709,10 @@ INPUT_PORTS_END
*
*************************************/
-void md_boot_state::megadrvb(machine_config &config)
-{
+MACHINE_CONFIG_START(md_boot_state::megadrvb)
md_ntsc(config);
MCFG_MACHINE_START_OVERRIDE(md_boot_state, md_bootleg)
-}
+MACHINE_CONFIG_END
MACHINE_START_MEMBER(md_boot_state, md_6button)
{
@@ -825,11 +728,10 @@ MACHINE_START_MEMBER(md_boot_state, md_6button)
m_io_timeout[i] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(md_base_state::io_timeout_timer_callback),this), (void*)(uintptr_t)i);
}
-void md_boot_state::megadrvb_6b(machine_config &config)
-{
+MACHINE_CONFIG_START(md_boot_state::megadrvb_6b)
md_ntsc(config);
MCFG_MACHINE_START_OVERRIDE(md_boot_state, md_6button)
-}
+MACHINE_CONFIG_END
/*************************************
@@ -844,9 +746,6 @@ ROM_START( aladmdb )
ROM_LOAD16_BYTE( "m2.bin", 0x000000, 0x080000, CRC(142a0366) SHA1(6c94aa9936cd11ccda503b52019a6721e64a32f0) )
ROM_LOAD16_BYTE( "m3.bin", 0x100001, 0x080000, CRC(0feeeb19) SHA1(bd567a33077ab9997871d21736066140d50e3d70) )
ROM_LOAD16_BYTE( "m4.bin", 0x100000, 0x080000, CRC(bc712661) SHA1(dfd554d000399e17b4ddc69761e572195ed4e1f0))
-
- ROM_REGION( 0x2000, "pic", ROMREGION_ERASE00 )
- ROM_LOAD( "pic16c57xtp", 0x0000, 0x2000, NO_DUMP )
ROM_END
ROM_START( mk3mdb ) // roms are scrambled, we take care of the address descramble in the ROM load, and the data descramble in the init
@@ -917,25 +816,6 @@ ROM_START( barek3mb )
ROM_LOAD16_BYTE( "2.u16", 0x200001, 0x080000, CRC(bba4a585) SHA1(32c59729943d7b4c1a39f2a2b0dae9ce16991e9c) )
ROM_END
-ROM_START( twinktmb ) // same PCB as sonic2mb, but in this one the PIC is populated
- ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 Code */
- ROM_LOAD16_BYTE( "m2.bin", 0x000000, 0x080000, CRC(44424f8f) SHA1(e16318bfdf869765c821c264cf9a7e6c728f7073) )
- ROM_LOAD16_BYTE( "m1.bin", 0x000001, 0x080000, CRC(69aa916e) SHA1(7ea6b571fd0b6494051d5846ee9b4564b7692766) )
-
- ROM_REGION( 0x2000, "pic", ROMREGION_ERASE00 )
- ROM_LOAD( "pic16c57xtp", 0x0000, 0x2000, NO_DUMP )
-ROM_END
-
-ROM_START( jparkmb ) // same PCB as twinktmb, JPA-028 label
- ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 Code */
- ROM_LOAD16_BYTE( "f24.bin", 0x000000, 0x080000, CRC(bdd851d2) SHA1(1a75922e848fd5c7cd4ab102c99effcfcf382097) )
- ROM_LOAD16_BYTE( "f23.bin", 0x000001, 0x080000, CRC(8dc66c71) SHA1(a2741ffa583a4b779b7be3e3ae628e97f792ee3d) )
- ROM_LOAD16_BYTE( "f22.bin", 0x100000, 0x080000, CRC(36337d06) SHA1(d537cff2c8ed58da146faf390c09252be359ccd1) )
- ROM_LOAD16_BYTE( "f21.bin", 0x100001, 0x080000, CRC(6ede6b6b) SHA1(cf29300d9278ea03f54cf54ea582bdd8b9bbdbbd) )
-
- ROM_REGION( 0x2000, "pic", ROMREGION_ERASE00 )
- ROM_LOAD( "pic16c57xtp", 0x0000, 0x2000, NO_DUMP )
-ROM_END
/*************************************
*
@@ -1083,37 +963,6 @@ void md_boot_state::init_barek3()
init_megadrij();
}
-void md_boot_state::init_sonic2mb()
-{
- // 100000 = writes to unpopulated MCU?
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x100000, 0x100001, write16_delegate(FUNC(md_boot_state::aladmdb_w),this));
- m_maincpu->space(AS_PROGRAM).install_read_port(0x300000, 0x300001, "DSW");
-
- init_megadrij();
-}
-
-void md_boot_state::init_twinktmb()
-{
- // boot vectors don't seem to be valid, so they are patched...
- uint8_t* rom = memregion("maincpu")->base();
- rom[0x01] = 0x00;
-
- rom[0x04] = 0x00;
- rom[0x07] = 0x46;
- rom[0x06] = 0xcc;
-
- init_megadrij();
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x100000, 0x100001, write16_delegate(FUNC(md_boot_state::aladmdb_w),this));
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x300000, 0x300001, read16_delegate(FUNC(md_boot_state::twinktmb_r),this));
-}
-
-void md_boot_state::init_jparkmb()
-{
- init_megadrij();
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x100000, 0x100001, write16_delegate(FUNC(md_boot_state::aladmdb_w),this));
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x300000, 0x300001, read16_delegate(FUNC(md_boot_state::jparkmb_r),this));
-}
-
/*************************************
*
* Game driver(s)
@@ -1125,7 +974,5 @@ GAME( 1996, mk3mdb, 0, megadrvb_6b, mk3mdb, md_boot_state, init_mk3mdb, R
GAME( 1994, ssf2mdb, 0, megadrvb_6b, ssf2mdb, md_boot_state, init_ssf2mdb, ROT0, "bootleg / Capcom", "Super Street Fighter II - The New Challengers (bootleg of Japanese MegaDrive version)", 0)
GAME( 1993, srmdb, 0, megadrvb, srmdb, md_boot_state, init_srmdb, ROT0, "bootleg / Konami", "Sunset Riders (bootleg of Megadrive version)", 0)
GAME( 1995, topshoot, 0, md_bootleg, topshoot, md_boot_state, init_topshoot, ROT0, "Sun Mixing", "Top Shooter", 0)
-GAME( 1993, sonic2mb, 0, md_bootleg, sonic2mb, md_boot_state, init_sonic2mb, ROT0, "bootleg / Sega", "Sonic The Hedgehog 2 (bootleg of Megadrive version)", 0 ) // flying wires going through the empty PIC space aren't completely understood
+GAME( 1993, sonic2mb, 0, megadrvb, aladmdb, md_boot_state, init_aladmdb, ROT0, "bootleg / Sega", "Sonic The Hedgehog 2 (bootleg of Megadrive version)", MACHINE_NOT_WORKING )
GAME( 1994, barek3mb, 0, megadrvb, barek3, md_boot_state, init_barek3, ROT0, "bootleg / Sega", "Bare Knuckle III (bootleg of Megadrive version)", 0 )
-GAME( 1993, twinktmb, 0, md_bootleg, twinktmb, md_boot_state, init_twinktmb, ROT0, "bootleg / Sega", "Twinkle Tale (bootleg of Megadrive version)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // needs PIC decap or simulation
-GAME( 1993, jparkmb, 0, md_bootleg, twinktmb, md_boot_state, init_jparkmb, ROT0, "bootleg / Sega", "Jurassic Park (bootleg of Megadrive version)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // needs PIC decap or simulation
diff --git a/src/mame/drivers/megadriv_rad.cpp b/src/mame/drivers/megadriv_rad.cpp
index c41967b0923..60597e07a53 100644
--- a/src/mame/drivers/megadriv_rad.cpp
+++ b/src/mame/drivers/megadriv_rad.cpp
@@ -133,29 +133,29 @@ MACHINE_RESET_MEMBER(megadriv_radica_state, megadriv_radica)
m_maincpu->reset();
}
-void megadriv_radica_state::megadriv_radica_3button_ntsc(machine_config &config)
-{
+MACHINE_CONFIG_START(megadriv_radica_state::megadriv_radica_3button_ntsc)
md_ntsc(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &megadriv_radica_state::megadriv_radica_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(megadriv_radica_map)
MCFG_MACHINE_START_OVERRIDE(megadriv_radica_state, megadriv_radica_3button)
MCFG_MACHINE_RESET_OVERRIDE(megadriv_radica_state, megadriv_radica)
-}
+MACHINE_CONFIG_END
-void megadriv_radica_state::megadriv_radica_3button_pal(machine_config &config)
-{
+MACHINE_CONFIG_START(megadriv_radica_state::megadriv_radica_3button_pal)
md_pal(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &megadriv_radica_state::megadriv_radica_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(megadriv_radica_map)
MCFG_MACHINE_START_OVERRIDE(megadriv_radica_state, megadriv_radica_3button)
MCFG_MACHINE_RESET_OVERRIDE(megadriv_radica_state, megadriv_radica)
-}
+MACHINE_CONFIG_END
-void megadriv_radica_state::megadriv_radica_6button_pal(machine_config &config)
-{
+MACHINE_CONFIG_START(megadriv_radica_state::megadriv_radica_6button_pal)
md_pal(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &megadriv_radica_state::megadriv_radica_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(megadriv_radica_map)
MCFG_MACHINE_START_OVERRIDE(megadriv_radica_state, megadriv_radica_6button)
MCFG_MACHINE_RESET_OVERRIDE(megadriv_radica_state, megadriv_radica)
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/megaplay.cpp b/src/mame/drivers/megaplay.cpp
index 29e51560ca4..9822a1ec776 100644
--- a/src/mame/drivers/megaplay.cpp
+++ b/src/mame/drivers/megaplay.cpp
@@ -41,6 +41,7 @@ this reason.
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/cxd1095.h"
+#include "sound/sn76496.h"
#include "includes/megadriv.h"
@@ -606,16 +607,17 @@ void mplay_state::megaplay_bios_map(address_map &map)
READ8_MEMBER(mplay_state::vdp1_count_r)
{
+ address_space &prg = m_bioscpu->space(AS_PROGRAM);
if (offset & 0x01)
- return m_vdp1->hcount_read();
+ return m_vdp1->hcount_read(prg, offset);
else
- return m_vdp1->vcount_read();
+ return m_vdp1->vcount_read(prg, offset);
}
void mplay_state::megaplay_bios_io_map(address_map &map)
{
map.global_mask(0xff);
- map(0x7f, 0x7f).w(m_vdp1, FUNC(sega315_5124_device::psg_w));
+ map(0x7f, 0x7f).w("sn2", FUNC(sn76496_device::command_w));
map(0x40, 0x41).mirror(0x3e).r(FUNC(mplay_state::vdp1_count_r));
map(0x80, 0x80).mirror(0x3e).rw(m_vdp1, FUNC(sega315_5124_device::data_read), FUNC(sega315_5124_device::data_write));
@@ -662,18 +664,17 @@ MACHINE_RESET_MEMBER(mplay_state,megaplay)
MACHINE_RESET_CALL_MEMBER(megadriv);
}
-void mplay_state::megaplay(machine_config &config)
-{
+MACHINE_CONFIG_START(mplay_state::megaplay)
/* basic machine hardware */
md_ntsc(config);
/* The Megaplay has an extra BIOS cpu which drives an SMS VDP
which includes an SN76496 for sound */
- Z80(config, m_bioscpu, MASTER_CLOCK / 15); /* ?? */
- m_bioscpu->set_addrmap(AS_PROGRAM, &mplay_state::megaplay_bios_map);
- m_bioscpu->set_addrmap(AS_IO, &mplay_state::megaplay_bios_io_map);
+ MCFG_DEVICE_ADD("mtbios", Z80, MASTER_CLOCK / 15) /* ?? */
+ MCFG_DEVICE_PROGRAM_MAP(megaplay_bios_map)
+ MCFG_DEVICE_IO_MAP(megaplay_bios_io_map)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
cxd1095_device &io1(CXD1095(config, "io1", 0));
io1.in_porta_cb().set_ioport("DSW0");
@@ -691,20 +692,23 @@ void mplay_state::megaplay(machine_config &config)
io2.in_porte_cb().set(FUNC(mplay_state::bios_6404_r));
io2.out_porte_cb().set(FUNC(mplay_state::bios_6404_w));
+ MCFG_DEVICE_ADD("sn2", SN76496, MASTER_CLOCK/15)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) /* 3.58 MHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker",0.25) /* 3.58 MHz */
+
/* New update functions to handle the extra layer */
- subdevice<screen_device>("megadriv")->set_raw(XTAL(10'738'635)/2, \
+ MCFG_SCREEN_MODIFY("megadriv")
+ MCFG_SCREEN_RAW_PARAMS(XTAL(10'738'635)/2, \
sega315_5124_device::WIDTH, sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH, sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 256, \
- sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224);
- subdevice<screen_device>("megadriv")->set_screen_update(FUNC(mplay_state::screen_update_megplay));
+ sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224)
+ MCFG_SCREEN_UPDATE_DRIVER(mplay_state, screen_update_megplay)
// Megaplay has an additional SMS VDP as an overlay
- SEGA315_5246(config, m_vdp1, MASTER_CLOCK / 5); /* ?? */
- m_vdp1->set_screen("megadriv");
- m_vdp1->set_is_pal(false);
- m_vdp1->irq().set_inputline(m_bioscpu, 0);
- m_vdp1->add_route(ALL_OUTPUTS, "lspeaker", 0.25);
- m_vdp1->add_route(ALL_OUTPUTS, "rspeaker", 0.25);
-}
+ MCFG_DEVICE_ADD("vdp1", SEGA315_5246, 0)
+ MCFG_SEGA315_5246_SET_SCREEN("megadriv")
+ MCFG_SEGA315_5246_IS_PAL(false)
+ MCFG_SEGA315_5246_INT_CB(INPUTLINE("mtbios", 0))
+MACHINE_CONFIG_END
/* MegaPlay Games - Modified Genesis games */
diff --git a/src/mame/drivers/megasys1.cpp b/src/mame/drivers/megasys1.cpp
index 34b19cf50a4..00a17eb9fe9 100644
--- a/src/mame/drivers/megasys1.cpp
+++ b/src/mame/drivers/megasys1.cpp
@@ -116,10 +116,6 @@ RAM RW 0f0000-0f3fff 0e0000-0effff? <
This game has no alternate levels mode either. Socketed encryption chip is
unusual.
-- Understand raster effect related register (ex : stdragon "push start" screen)
-
-- chimerab ranking screen effect is imperfect ( https://youtu.be/XhjCaFxhphA )
-
***************************************************************************/
#include "emu.h"
@@ -213,8 +209,8 @@ void megasys1_state::megasys1Z_map(address_map &map)
map(0x080002, 0x080003).portr("P1");
map(0x080004, 0x080005).portr("P2");
map(0x080006, 0x080007).portr("DSW");
- map(0x084200, 0x084205).rw("scroll0", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
- map(0x084208, 0x08420d).rw("scroll1", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x084200, 0x084205).w("scroll0", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x084208, 0x08420d).w("scroll1", FUNC(megasys1_tilemap_device::scroll_w));
map(0x084300, 0x084301).w(FUNC(megasys1_state::screen_flag_w));
map(0x084308, 0x084309).w(FUNC(megasys1_state::soundlatch_z_w));
map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
@@ -228,9 +224,9 @@ void megasys1_state::megasys1A_map(address_map &map)
{
map.global_mask(0xfffff);
megasys1Z_map(map);
- map(0x080008, 0x080009).r(m_soundlatch[1], FUNC(generic_latch_16_device::read)); /* from sound cpu */
+ map(0x080008, 0x080009).r(m_soundlatch2, FUNC(generic_latch_16_device::read)); /* from sound cpu */
map(0x084000, 0x084001).w(FUNC(megasys1_state::active_layers_w));
- map(0x084008, 0x08400d).rw("scroll2", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x084008, 0x08400d).w("scroll2", FUNC(megasys1_tilemap_device::scroll_w));
map(0x084100, 0x084101).rw(FUNC(megasys1_state::sprite_flag_r), FUNC(megasys1_state::sprite_flag_w));
map(0x084308, 0x084309).w(FUNC(megasys1_state::soundlatch_w));
map(0x098000, 0x09bfff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2");
@@ -310,10 +306,10 @@ void megasys1_state::megasys1B_map(address_map &map)
map.global_mask(0xfffff);
map(0x000000, 0x03ffff).rom();
map(0x044000, 0x044001).w(FUNC(megasys1_state::active_layers_w));
- map(0x044008, 0x04400d).rw("scroll2", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x044008, 0x04400d).w("scroll2", FUNC(megasys1_tilemap_device::scroll_w));
map(0x044100, 0x044101).rw(FUNC(megasys1_state::sprite_flag_r), FUNC(megasys1_state::sprite_flag_w));
- map(0x044200, 0x044205).rw("scroll0", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
- map(0x044208, 0x04420d).rw("scroll1", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x044200, 0x044205).w("scroll0", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x044208, 0x04420d).w("scroll1", FUNC(megasys1_tilemap_device::scroll_w));
map(0x044300, 0x044301).w(FUNC(megasys1_state::screen_flag_w));
map(0x044308, 0x044309).w(FUNC(megasys1_state::soundlatch_w));
map(0x048000, 0x0487ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
@@ -362,10 +358,10 @@ void megasys1_state::megasys1B_monkelf_map(address_map &map)
#define INTERRUPT_NUM_C INTERRUPT_NUM_B
#define interrupt_C interrupt_B
-WRITE16_MEMBER(megasys1_state::ram_w)
+WRITE16_MEMBER(megasys1_state::ram_w )
{
// DON'T use COMBINE_DATA
- // byte writes end up mirroring in both bytes of the word like nmk16.cpp
+ // byte writes end up mirroring in both bytes of the word like nmk16.c
// 64th Street and Chimera Beast rely on this for attract inputs
m_ram[offset] = data;
@@ -377,14 +373,14 @@ void megasys1_state::megasys1C_map(address_map &map)
{
map.global_mask(0x1fffff);
map(0x000000, 0x07ffff).rom();
- map(0x0c2000, 0x0c2005).rw("scroll0", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
- map(0x0c2008, 0x0c200d).rw("scroll1", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
- map(0x0c2100, 0x0c2105).rw("scroll2", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x0c2000, 0x0c2005).w("scroll0", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x0c2008, 0x0c200d).w("scroll1", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x0c2100, 0x0c2105).w("scroll2", FUNC(megasys1_tilemap_device::scroll_w));
map(0x0c2108, 0x0c2109).w(FUNC(megasys1_state::sprite_bank_w));
map(0x0c2200, 0x0c2201).rw(FUNC(megasys1_state::sprite_flag_r), FUNC(megasys1_state::sprite_flag_w));
map(0x0c2208, 0x0c2209).w(FUNC(megasys1_state::active_layers_w));
map(0x0c2308, 0x0c2309).w(FUNC(megasys1_state::screen_flag_w));
- map(0x0c8000, 0x0c8001).r(m_soundlatch[1], FUNC(generic_latch_16_device::read)).w(FUNC(megasys1_state::soundlatch_c_w));
+ map(0x0c8000, 0x0c8001).r(m_soundlatch2, FUNC(generic_latch_16_device::read)).w(FUNC(megasys1_state::soundlatch_c_w));
map(0x0d2000, 0x0d3fff).ram().share("objectram");
map(0x0d8000, 0x0d8001).rw(FUNC(megasys1_state::ip_select_r), FUNC(megasys1_state::ip_select_w));
// 64th Street actively uses 0xe4*** for breakable objects.
@@ -408,8 +404,8 @@ INTERRUPT_GEN_MEMBER(megasys1_state::megasys1D_irq)
void megasys1_state::megasys1D_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
- map(0x0c2000, 0x0c2005).rw("scroll0", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
- map(0x0c2008, 0x0c200d).rw("scroll1", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x0c2000, 0x0c2005).w("scroll0", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x0c2008, 0x0c200d).w("scroll1", FUNC(megasys1_tilemap_device::scroll_w));
map(0x0c2108, 0x0c2109).nopw(); //AM_WRITE(sprite_bank_w)
map(0x0c2200, 0x0c2201).rw(FUNC(megasys1_state::sprite_flag_r), FUNC(megasys1_state::sprite_flag_w));
map(0x0c2208, 0x0c2209).w(FUNC(megasys1_state::active_layers_w));
@@ -420,7 +416,7 @@ void megasys1_state::megasys1D_map(address_map &map)
map(0x0e0000, 0x0e0001).portr("DSW");
map(0x0e8000, 0x0ebfff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0");
map(0x0f0000, 0x0f0001).portr("SYSTEM");
- map(0x0f8001, 0x0f8001).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x0f8001, 0x0f8001).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
// map(0x100000, 0x100001); // protection
map(0x1f0000, 0x1fffff).ram() /*.w(FUNC(megasys1_state::ram_w))*/ .share("ram");
}
@@ -495,15 +491,21 @@ WRITE_LINE_MEMBER(megasys1_state::sound_irq)
m_audiocpu->set_input_line(4, HOLD_LINE);
}
-template<int Chip>
-READ8_MEMBER(megasys1_state::oki_status_r)
+READ8_MEMBER(megasys1_state::oki_status_1_r)
{
if (m_ignore_oki_status == 1)
return 0;
else
- return m_oki[Chip]->read();
+ return m_oki1->read_status();
}
+READ8_MEMBER(megasys1_state::oki_status_2_r)
+{
+ if (m_ignore_oki_status == 1)
+ return 0;
+ else
+ return m_oki2->read_status();
+}
/***************************************************************************
[ Sound CPU - System A ]
***************************************************************************/
@@ -512,32 +514,24 @@ READ8_MEMBER(megasys1_state::oki_status_r)
void megasys1_state::megasys1A_sound_map(address_map &map)
{
map(0x000000, 0x01ffff).rom();
- map(0x040000, 0x040001).r(m_soundlatch[0], FUNC(generic_latch_16_device::read));
- map(0x060000, 0x060001).w(m_soundlatch[1], FUNC(generic_latch_16_device::write)); // to main cpu
+ map(0x040000, 0x040001).r(m_soundlatch, FUNC(generic_latch_16_device::read));
+ map(0x060000, 0x060001).w(m_soundlatch2, FUNC(generic_latch_16_device::write)); // to main cpu
map(0x080000, 0x080003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
- map(0x0a0001, 0x0a0001).r(FUNC(megasys1_state::oki_status_r<0>));
- map(0x0a0000, 0x0a0003).w(m_oki[0], FUNC(okim6295_device::write)).umask16(0x00ff);
- map(0x0c0001, 0x0c0001).r(FUNC(megasys1_state::oki_status_r<1>));
- map(0x0c0000, 0x0c0003).w(m_oki[1], FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0a0001, 0x0a0001).r(FUNC(megasys1_state::oki_status_1_r));
+ map(0x0a0000, 0x0a0003).w(m_oki1, FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0c0001, 0x0c0001).r(FUNC(megasys1_state::oki_status_2_r));
+ map(0x0c0000, 0x0c0003).w(m_oki2, FUNC(okim6295_device::write)).umask16(0x00ff);
map(0x0e0000, 0x0fffff).ram();
}
-// jitsupro writes oki commands to both the lsb and msb; it works because of byte smearing
-void megasys1_state::megasys1A_jitsupro_sound_map(address_map &map)
-{
- megasys1A_sound_map(map);
- map(0x0a0000, 0x0a0003).w(m_oki[0], FUNC(okim6295_device::write)).umask16(0x00ff).cswidth(16);
- map(0x0c0000, 0x0c0003).w(m_oki[1], FUNC(okim6295_device::write)).umask16(0x00ff).cswidth(16);
-}
-
void megasys1_state::kickoffb_sound_map(address_map &map)
{ // TODO: wrong, needs to be checked range for range
map(0x000000, 0x01ffff).rom();
- map(0x040000, 0x040001).r(m_soundlatch[0], FUNC(generic_latch_16_device::read));
- map(0x060000, 0x060001).w(m_soundlatch[1], FUNC(generic_latch_16_device::write)); // to main cpu
+ map(0x040000, 0x040001).r(m_soundlatch, FUNC(generic_latch_16_device::read));
+ map(0x060000, 0x060001).w(m_soundlatch2, FUNC(generic_latch_16_device::write)); // to main cpu
map(0x080000, 0x080003).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)).umask16(0x00ff);
- map(0x0a0001, 0x0a0001).r(FUNC(megasys1_state::oki_status_r<0>));
- map(0x0a0000, 0x0a0003).w(m_oki[0], FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0a0001, 0x0a0001).r(FUNC(megasys1_state::oki_status_1_r));
+ map(0x0a0000, 0x0a0003).w(m_oki1, FUNC(okim6295_device::write)).umask16(0x00ff);
map(0x0e0000, 0x0fffff).ram();
}
@@ -550,13 +544,13 @@ void megasys1_state::kickoffb_sound_map(address_map &map)
void megasys1_state::megasys1B_sound_map(address_map &map)
{
map(0x000000, 0x01ffff).rom();
- map(0x040000, 0x040001).r(m_soundlatch[0], FUNC(generic_latch_16_device::read)).w(m_soundlatch[1], FUNC(generic_latch_16_device::write)); /* from/to main cpu */
- map(0x060000, 0x060001).r(m_soundlatch[0], FUNC(generic_latch_16_device::read)).w(m_soundlatch[1], FUNC(generic_latch_16_device::write)); /* from/to main cpu */
+ map(0x040000, 0x040001).r(m_soundlatch, FUNC(generic_latch_16_device::read)).w(m_soundlatch2, FUNC(generic_latch_16_device::write)); /* from/to main cpu */
+ map(0x060000, 0x060001).r(m_soundlatch, FUNC(generic_latch_16_device::read)).w(m_soundlatch2, FUNC(generic_latch_16_device::write)); /* from/to main cpu */
map(0x080000, 0x080003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
- map(0x0a0001, 0x0a0001).r(FUNC(megasys1_state::oki_status_r<0>));
- map(0x0a0000, 0x0a0003).w(m_oki[0], FUNC(okim6295_device::write)).umask16(0x00ff);
- map(0x0c0001, 0x0c0001).r(FUNC(megasys1_state::oki_status_r<1>));
- map(0x0c0000, 0x0c0003).w(m_oki[1], FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0a0001, 0x0a0001).r(FUNC(megasys1_state::oki_status_1_r));
+ map(0x0a0000, 0x0a0003).w(m_oki1, FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0c0001, 0x0c0001).r(FUNC(megasys1_state::oki_status_2_r));
+ map(0x0c0000, 0x0c0003).w(m_oki2, FUNC(okim6295_device::write)).umask16(0x00ff);
map(0x0e0000, 0x0effff).ram();
}
@@ -571,7 +565,7 @@ void megasys1_state::z80_sound_map(address_map &map)
{
map(0x0000, 0x3fff).rom();
map(0xc000, 0xc7ff).ram();
- map(0xe000, 0xe000).lr8("soundlatch_r_z", [this](address_space &space, offs_t offset){ return m_soundlatch[0]->read(space, 0) & 0xff; });
+ map(0xe000, 0xe000).r(m_soundlatch_z, FUNC(generic_latch_8_device::read));
map(0xf000, 0xf000).nopw(); /* ?? */
}
@@ -1623,7 +1617,7 @@ WRITE16_MEMBER(megasys1_state::protection_peekaboo_w)
COMBINE_DATA(&m_protection_val);
if ((m_protection_val & 0x90) == 0x90)
- m_okibank->set_entry(m_protection_val & 7);
+ membank("okibank")->set_entry(m_protection_val & 7);
m_maincpu->set_input_line(4, HOLD_LINE);
}
@@ -1711,7 +1705,7 @@ void megasys1_state::system_A(machine_config &config)
m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_abc);
- PALETTE(config, m_palette, FUNC(megasys1_state::megasys1_palette)).set_format(palette_device::RRRRGGGGBBBBRGBx, 0x800/2);
+ PALETTE(config, m_palette, FUNC(megasys1_state::megasys1_palette)).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024);
MCFG_VIDEO_START_OVERRIDE(megasys1_state,megasys1)
MEGASYS1_TILEMAP(config, m_tmap[0], m_palette, 256*0);
@@ -1722,21 +1716,21 @@ void megasys1_state::system_A(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- GENERIC_LATCH_16(config, m_soundlatch[0]);
- GENERIC_LATCH_16(config, m_soundlatch[1]);
+ GENERIC_LATCH_16(config, m_soundlatch);
+ GENERIC_LATCH_16(config, m_soundlatch2);
ym2151_device &ymsnd(YM2151(config, "ymsnd", SOUND_CPU_CLOCK/2)); /* 3.5MHz (7MHz / 2) verified */
ymsnd.irq_handler().set(FUNC(megasys1_state::sound_irq));
ymsnd.add_route(0, "lspeaker", 0.80);
ymsnd.add_route(1, "rspeaker", 0.80);
- OKIM6295(config, m_oki[0], OKI4_SOUND_CLOCK, okim6295_device::PIN7_HIGH); /* 4MHz verified */
- m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 0.30);
- m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 0.30);
+ OKIM6295(config, m_oki1, OKI4_SOUND_CLOCK, okim6295_device::PIN7_HIGH); /* 4MHz verified */
+ m_oki1->add_route(ALL_OUTPUTS, "lspeaker", 0.30);
+ m_oki1->add_route(ALL_OUTPUTS, "rspeaker", 0.30);
- OKIM6295(config, m_oki[1], OKI4_SOUND_CLOCK, okim6295_device::PIN7_HIGH); /* 4MHz verified */
- m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.30);
- m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.30);
+ OKIM6295(config, m_oki2, OKI4_SOUND_CLOCK, okim6295_device::PIN7_HIGH); /* 4MHz verified */
+ m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 0.30);
+ m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 0.30);
}
void megasys1_state::system_A_hachoo(machine_config &config)
@@ -1758,12 +1752,6 @@ void megasys1_state::system_A_soldam(machine_config &config)
m_tmap[1]->set_8x8_scroll_factor(4);
}
-void megasys1_state::system_A_jitsupro(machine_config &config)
-{
- system_A(config);
- m_audiocpu->set_addrmap(AS_PROGRAM, &megasys1_state::megasys1A_jitsupro_sound_map);
-}
-
void megasys1_state::kickoffb(machine_config &config)
{
system_A(config);
@@ -1818,7 +1806,7 @@ void megasys1_state::system_Bbl(machine_config &config)
m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_abc);
- PALETTE(config, m_palette, FUNC(megasys1_state::megasys1_palette)).set_format(palette_device::RRRRGGGGBBBBRGBx, 0x800/2);
+ PALETTE(config, m_palette, FUNC(megasys1_state::megasys1_palette)).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024);
MCFG_VIDEO_START_OVERRIDE(megasys1_state,megasys1)
MEGASYS1_TILEMAP(config, m_tmap[0], m_palette, 256*0);
@@ -1830,9 +1818,9 @@ void megasys1_state::system_Bbl(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
/* just the one OKI, used for sound and music */
- OKIM6295(config, m_oki[0], OKI4_SOUND_CLOCK, okim6295_device::PIN7_HIGH);
- m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 0.30);
- m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 0.30);
+ OKIM6295(config, m_oki1, OKI4_SOUND_CLOCK, okim6295_device::PIN7_HIGH);
+ m_oki1->add_route(ALL_OUTPUTS, "lspeaker", 0.30);
+ m_oki1->add_route(ALL_OUTPUTS, "rspeaker", 0.30);
}
void megasys1_state::system_B_hayaosi1(machine_config &config)
@@ -1841,13 +1829,13 @@ void megasys1_state::system_B_hayaosi1(machine_config &config)
/* basic machine hardware */
- OKIM6295(config.replace(), m_oki[0], 2000000, okim6295_device::PIN7_HIGH); /* correct speed, but unknown OSC + divider combo */
- m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 0.30);
- m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 0.30);
+ OKIM6295(config.replace(), m_oki1, 2000000, okim6295_device::PIN7_HIGH); /* correct speed, but unknown OSC + divider combo */
+ m_oki1->add_route(ALL_OUTPUTS, "lspeaker", 0.30);
+ m_oki1->add_route(ALL_OUTPUTS, "rspeaker", 0.30);
- OKIM6295(config.replace(), m_oki[1], 2000000, okim6295_device::PIN7_HIGH); /* correct speed, but unknown OSC + divider combo */
- m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.30);
- m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.30);
+ OKIM6295(config.replace(), m_oki2, 2000000, okim6295_device::PIN7_HIGH); /* correct speed, but unknown OSC + divider combo */
+ m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 0.30);
+ m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 0.30);
}
void megasys1_state::system_C(machine_config &config)
@@ -1894,7 +1882,7 @@ void megasys1_state::system_D(machine_config &config)
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_abc);
- PALETTE(config, m_palette, FUNC(megasys1_state::megasys1_palette)).set_format(palette_device::RGBx_555, 0x800/2);
+ PALETTE(config, m_palette, FUNC(megasys1_state::megasys1_palette)).set_format(palette_device::RGBx_555, 1024);
MCFG_VIDEO_START_OVERRIDE(megasys1_state,megasys1)
MEGASYS1_TILEMAP(config, m_tmap[0], m_palette, 256*0);
@@ -1903,9 +1891,9 @@ void megasys1_state::system_D(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki[0], SYS_D_CPU_CLOCK/4, okim6295_device::PIN7_HIGH); /* 2MHz (8MHz / 4) */
- m_oki[0]->set_addrmap(0, &megasys1_state::megasys1D_oki_map);
- m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
+ OKIM6295(config, m_oki1, SYS_D_CPU_CLOCK/4, okim6295_device::PIN7_HIGH); /* 2MHz (8MHz / 4) */
+ m_oki1->set_addrmap(0, &megasys1_state::megasys1D_oki_map);
+ m_oki1->add_route(ALL_OUTPUTS, "mono", 1.0);
}
@@ -1943,8 +1931,9 @@ void megasys1_state::system_Z(machine_config &config)
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_z);
- PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 0x800/2);
- MCFG_VIDEO_START_OVERRIDE(megasys1_state,megasys1_z)
+ PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 768);
+
+ MCFG_VIDEO_START_OVERRIDE(megasys1_state,megasys1)
MEGASYS1_TILEMAP(config, m_tmap[0], m_palette, 256*0);
MEGASYS1_TILEMAP(config, m_tmap[1], m_palette, 256*2);
@@ -1952,7 +1941,7 @@ void megasys1_state::system_Z(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- GENERIC_LATCH_16(config, m_soundlatch[0]);
+ GENERIC_LATCH_8(config, m_soundlatch_z);
ym2203_device &ymsnd(YM2203(config, "ymsnd", 1500000));
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
@@ -4377,8 +4366,8 @@ ROM_END
void megasys1_state::rodland_gfx_unmangle(const char *region)
{
- u8 *rom = memregion(region)->base();
- u32 size = memregion(region)->bytes();
+ uint8_t *rom = memregion(region)->base();
+ uint32_t size = memregion(region)->bytes();
int i;
/* data lines swap: 76543210 -> 64537210 */
@@ -4388,7 +4377,7 @@ void megasys1_state::rodland_gfx_unmangle(const char *region)
| ((rom[i] & 0x48) << 1)
| ((rom[i] & 0x10) << 2);
- std::vector<u8> buffer(size);
+ std::vector<uint8_t> buffer(size);
memcpy(&buffer[0],rom,size);
@@ -4406,15 +4395,15 @@ void megasys1_state::rodland_gfx_unmangle(const char *region)
void megasys1_state::jitsupro_gfx_unmangle(const char *region)
{
- u8 *rom = memregion(region)->base();
- u32 size = memregion(region)->bytes();
+ uint8_t *rom = memregion(region)->base();
+ uint32_t size = memregion(region)->bytes();
int i;
/* data lines swap: 76543210 -> 43576210 */
for (i = 0;i < size;i++)
rom[i] = bitswap<8>(rom[i],0x4,0x3,0x5,0x7,0x6,0x2,0x1,0x0);
- std::vector<u8> buffer(size);
+ std::vector<uint8_t> buffer(size);
memcpy(&buffer[0],rom,size);
@@ -4430,15 +4419,15 @@ void megasys1_state::jitsupro_gfx_unmangle(const char *region)
void megasys1_state::stdragona_gfx_unmangle(const char *region)
{
- u8 *rom = memregion(region)->base();
- u32 size = memregion(region)->bytes();
+ uint8_t *rom = memregion(region)->base();
+ uint32_t size = memregion(region)->bytes();
int i;
/* data lines swap: 76543210 -> 37564210 */
for (i = 0;i < size;i++)
rom[i] = bitswap<8>(rom[i],3,7,5,6,4,2,1,0);
- std::vector<u8> buffer(size);
+ std::vector<uint8_t> buffer(size);
memcpy(&buffer[0],rom,size);
@@ -4476,7 +4465,7 @@ void megasys1_state::stdragona_gfx_unmangle(const char *region)
void megasys1_state::init_64street()
{
-// u16 *ROM = (u16 *) memregion("maincpu")->base();
+// uint16_t *ROM = (uint16_t *) memregion("maincpu")->base();
// ROM[0x006b8/2] = 0x6004; // d8001 test
// ROM[0x10EDE/2] = 0x6012; // watchdog
@@ -4690,6 +4679,16 @@ void megasys1_state::init_iganinju()
save_item(NAME(m_mcu_hs_ram));
}
+// jitsupro writes oki commands to both the lsb and msb; it works because of byte smearing
+WRITE16_MEMBER(megasys1_state::okim6295_both_1_w)
+{
+ m_oki1->write_command(data & 0xff);
+}
+WRITE16_MEMBER(megasys1_state::okim6295_both_2_w)
+{
+ m_oki2->write_command(data & 0xff);
+}
+
void megasys1_state::init_jitsupro()
{
astyanax_rom_decode(machine(), "maincpu"); // Code
@@ -4699,6 +4698,9 @@ void megasys1_state::init_jitsupro()
m_maincpu->space(AS_PROGRAM).install_read_handler(0x00000, 0x3ffff, read16_delegate(FUNC(megasys1_state::megasys1A_mcu_hs_r),this));
m_maincpu->space(AS_PROGRAM).install_write_handler(0x20000, 0x20009, write16_delegate(FUNC(megasys1_state::megasys1A_mcu_hs_w),this));
+ m_audiocpu->space(AS_PROGRAM).install_write_handler(0xa0000, 0xa0003, write16_delegate(FUNC(megasys1_state::okim6295_both_1_w),this));
+ m_audiocpu->space(AS_PROGRAM).install_write_handler(0xc0000, 0xc0003, write16_delegate(FUNC(megasys1_state::okim6295_both_2_w),this));
+
m_mcu_hs = 0;
memset(m_mcu_hs_ram, 0, sizeof(m_mcu_hs_ram));
@@ -4708,10 +4710,11 @@ void megasys1_state::init_jitsupro()
void megasys1_state::init_peekaboo()
{
- u8 *ROM = memregion("oki1")->base();
+ uint8_t *ROM = memregion("oki1")->base();
+ memory_bank *okibank = membank("okibank");
- m_okibank->configure_entry(7, &ROM[0x20000]);
- m_okibank->configure_entries(0, 7, &ROM[0x20000], 0x20000);
+ okibank->configure_entry(7, &ROM[0x20000]);
+ okibank->configure_entries(0, 7, &ROM[0x20000], 0x20000);
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x100000, 0x100001, read16_delegate(FUNC(megasys1_state::protection_peekaboo_r),this), write16_delegate(FUNC(megasys1_state::protection_peekaboo_w),this));
@@ -4845,7 +4848,7 @@ void megasys1_state::init_monkelf()
m_rom_maincpu[0x00744/2] = 0x4e71; // weird check, 0xe000e R is a port-based trap?
// convert bootleg priority format to standard
- u8 *ROM = memregion("proms")->base();
+ uint8_t *ROM = memregion("proms")->base();
for (int i = 0x1fe; i >= 0; i -= 2)
{
ROM[i+0] = ROM[i+1] = (ROM[i/2] >> 4) & 0x0f;
@@ -4878,7 +4881,7 @@ GAME( 1988, iganinjub,kazan, system_A_iganinju, kazan, megasys1_state, emp
GAME( 1989, astyanax, 0, system_A, astyanax, megasys1_state, init_astyanax, ROT0, "Jaleco", "The Astyanax", MACHINE_SUPPORTS_SAVE )
GAME( 1989, lordofk, astyanax, system_A, astyanax, megasys1_state, init_astyanax, ROT0, "Jaleco", "The Lord of King (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, hachoo, 0, system_A_hachoo, hachoo, megasys1_state, init_astyanax, ROT0, "Jaleco", "Hachoo!", MACHINE_SUPPORTS_SAVE )
-GAME( 1989, jitsupro, 0, system_A_jitsupro, jitsupro, megasys1_state, init_jitsupro, ROT0, "Jaleco", "Jitsuryoku!! Pro Yakyuu (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, jitsupro, 0, system_A, jitsupro, megasys1_state, init_jitsupro, ROT0, "Jaleco", "Jitsuryoku!! Pro Yakyuu (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, plusalph, 0, system_A, plusalph, megasys1_state, init_astyanax, ROT270, "Jaleco", "Plus Alpha", MACHINE_SUPPORTS_SAVE )
GAME( 1989, stdragon, 0, system_A, stdragon, megasys1_state, init_stdragon, ROT0, "Jaleco", "Saint Dragon (set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, stdragona,stdragon, system_A, stdragon, megasys1_state, init_stdragona,ROT0, "Jaleco", "Saint Dragon (set 2)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/megatech.cpp b/src/mame/drivers/megatech.cpp
index 11731195cb8..fb671437177 100644
--- a/src/mame/drivers/megatech.cpp
+++ b/src/mame/drivers/megatech.cpp
@@ -78,6 +78,7 @@ Sonic Hedgehog 2 171-6215A 837-6963-62 610-0239-62 MPR
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/cxd1095.h"
+#include "sound/sn76496.h"
#include "rendlay.h"
#include "includes/megadriv.h"
@@ -133,7 +134,8 @@ private:
DECLARE_READ8_MEMBER(bios_joypad_r);
DECLARE_WRITE8_MEMBER(bios_port_7f_w);
DECLARE_READ8_MEMBER(vdp1_count_r);
- u8 sms_count_r(offs_t offset);
+ DECLARE_READ8_MEMBER(sms_count_r);
+ DECLARE_WRITE8_MEMBER(sms_sn_w);
DECLARE_READ8_MEMBER(sms_ioport_dc_r);
DECLARE_READ8_MEMBER(sms_ioport_dd_r);
DECLARE_WRITE8_MEMBER(mt_sms_standard_rom_bank_w);
@@ -159,7 +161,7 @@ private:
uint8_t m_mt_cart_select_reg;
uint32_t m_bios_port_ctrl;
- int m_current_machine_is_sms; // is the current game SMS based (running on genesis z80, in VDP compatibility mode)
+ int m_current_MACHINE_IS_sms; // is the current game SMS based (running on genesis z80, in VDP compatibility mode)
uint32_t m_bios_ctrl_inputs;
uint8_t m_bios_ctrl[6];
int m_mt_bank_addr;
@@ -320,12 +322,19 @@ INPUT_PORTS_END
/* MEGATECH specific */
-u8 mtech_state::sms_count_r(offs_t offset)
+READ8_MEMBER(mtech_state::sms_count_r)
{
+ address_space &prg = m_z80snd->space(AS_PROGRAM);
if (offset & 0x01)
- return m_vdp->hcount_read();
+ return m_vdp->hcount_read(prg, offset);
else
- return m_vdp->vcount_read();
+ return m_vdp->vcount_read(prg, offset);
+}
+
+WRITE8_MEMBER(mtech_state::sms_sn_w)
+{
+ address_space &prg = m_z80snd->space(AS_PROGRAM);
+ m_vdp->vdp_w(prg, 0x10 >> 1, data, 0x00ff);
}
READ8_MEMBER (mtech_state::sms_ioport_dc_r)
@@ -389,10 +398,10 @@ void mtech_state::set_genz80_as_sms()
prg.install_write_handler(0xfffc, 0xffff, write8_delegate(FUNC(mtech_state::mt_sms_standard_rom_bank_w),this));
// ports
- io.install_read_handler (0x40, 0x41, 0, 0x3e, 0, read8sm_delegate(FUNC(mtech_state::sms_count_r),this));
- io.install_write_handler (0x40, 0x41, 0, 0x3e, 0, write8smo_delegate(FUNC(sega315_5124_device::psg_w),(sega315_5124_device *)m_vdp));
- io.install_readwrite_handler (0x80, 0x80, 0, 0x3e, 0, read8smo_delegate(FUNC(sega315_5124_device::data_read),(sega315_5124_device *)m_vdp), write8smo_delegate(FUNC(sega315_5124_device::data_write),(sega315_5124_device *)m_vdp));
- io.install_readwrite_handler (0x81, 0x81, 0, 0x3e, 0, read8smo_delegate(FUNC(sega315_5124_device::control_read),(sega315_5124_device *)m_vdp), write8smo_delegate(FUNC(sega315_5124_device::control_write),(sega315_5124_device *)m_vdp));
+ io.install_read_handler (0x40, 0x41, 0, 0x3e, 0, read8_delegate(FUNC(mtech_state::sms_count_r),this));
+ io.install_write_handler (0x40, 0x41, 0, 0x3e, 0, write8_delegate(FUNC(mtech_state::sms_sn_w),this));
+ io.install_readwrite_handler (0x80, 0x80, 0, 0x3e, 0, read8_delegate(FUNC(sega315_5124_device::data_read),(sega315_5124_device *)m_vdp), write8_delegate(FUNC(sega315_5124_device::data_write),(sega315_5124_device *)m_vdp));
+ io.install_readwrite_handler (0x81, 0x81, 0, 0x3e, 0, read8_delegate(FUNC(sega315_5124_device::control_read),(sega315_5124_device *)m_vdp), write8_delegate(FUNC(sega315_5124_device::control_write),(sega315_5124_device *)m_vdp));
io.install_read_handler (0x10, 0x10, read8_delegate(FUNC(mtech_state::sms_ioport_dd_r),this)); // super tetris
@@ -413,7 +422,7 @@ void mtech_state::set_genz80_as_md()
prg.install_ram(0x0000, 0x1fff, m_genz80.z80_prgram.get());
- prg.install_readwrite_handler(0x4000, 0x4003, read8sm_delegate(FUNC(ym2612_device::read), (ym2612_device *)m_ymsnd), write8sm_delegate(FUNC(ym2612_device::write), (ym2612_device *)m_ymsnd));
+ prg.install_readwrite_handler(0x4000, 0x4003, read8_delegate(FUNC(ym2612_device::read), (ym2612_device *)m_ymsnd), write8_delegate(FUNC(ym2612_device::write), (ym2612_device *)m_ymsnd));
prg.install_write_handler (0x6000, 0x6000, write8_delegate(FUNC(mtech_state::megadriv_z80_z80_bank_w),this));
prg.install_write_handler (0x6001, 0x6001, write8_delegate(FUNC(mtech_state::megadriv_z80_z80_bank_w),this));
prg.install_read_handler (0x6100, 0x7eff, read8_delegate(FUNC(mtech_state::megadriv_z80_unmapped_read),this));
@@ -443,7 +452,7 @@ void mtech_state::switch_cart(int gameno)
if (!m_cart_is_genesis[gameno])
{
logerror("enabling SMS Z80\n");
- m_current_machine_is_sms = 1;
+ m_current_MACHINE_IS_sms = 1;
set_genz80_as_sms();
//m_z80snd->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
m_z80snd->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
@@ -451,7 +460,7 @@ void mtech_state::switch_cart(int gameno)
else
{
logerror("disabling SMS Z80\n");
- m_current_machine_is_sms = 0;
+ m_current_MACHINE_IS_sms = 0;
set_genz80_as_md();
m_maincpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
//m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
@@ -577,17 +586,18 @@ WRITE8_MEMBER(mtech_state::bios_port_7f_w)
READ8_MEMBER(mtech_state::vdp1_count_r)
{
+ address_space &prg = m_bioscpu->space(AS_PROGRAM);
if (offset & 0x01)
- return m_vdp1->hcount_read();
+ return m_vdp1->hcount_read(prg, offset);
else
- return m_vdp1->vcount_read();
+ return m_vdp1->vcount_read(prg, offset);
}
void mtech_state::megatech_bios_portmap(address_map &map)
{
map.global_mask(0xff);
map(0x3f, 0x3f).w(FUNC(mtech_state::bios_port_ctrl_w));
- map(0x7f, 0x7f).w(FUNC(mtech_state::bios_port_7f_w)); // PSG?
+ map(0x7f, 0x7f).w(FUNC(mtech_state::bios_port_7f_w));
map(0x40, 0x41).mirror(0x3e).r(FUNC(mtech_state::vdp1_count_r));
map(0x80, 0x80).mirror(0x3e).rw(m_vdp1, FUNC(sega315_5124_device::data_read), FUNC(sega315_5124_device::data_write));
@@ -620,7 +630,7 @@ void mtech_state::init_mt_crt()
uint32_t mtech_state::screen_update_main(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
// if we're running an sms game then use the SMS update.. maybe this should be moved to the megadrive emulation core as compatibility mode is a feature of the chip
- if (!m_current_machine_is_sms)
+ if (!m_current_MACHINE_IS_sms)
screen_update_megadriv(screen, bitmap, cliprect);
else
{
@@ -642,7 +652,7 @@ uint32_t mtech_state::screen_update_main(screen_device &screen, bitmap_rgb32 &bi
WRITE_LINE_MEMBER(mtech_state::screen_vblank_main)
{
- if (!m_current_machine_is_sms)
+ if (!m_current_MACHINE_IS_sms)
screen_vblank_megadriv(state);
}
@@ -681,15 +691,14 @@ uint32_t mtech_state::screen_update_menu(screen_device &screen, bitmap_rgb32 &bi
}
-void mtech_state::megatech(machine_config &config)
-{
+MACHINE_CONFIG_START(mtech_state::megatech)
/* basic machine hardware */
md_ntsc(config);
/* Megatech has an extra SMS based bios *and* an additional screen */
- Z80(config, m_bioscpu, MASTER_CLOCK / 15); /* ?? */
- m_bioscpu->set_addrmap(AS_PROGRAM, &mtech_state::megatech_bios_map);
- m_bioscpu->set_addrmap(AS_IO, &mtech_state::megatech_bios_portmap);
+ MCFG_DEVICE_ADD("mtbios", Z80, MASTER_CLOCK / 15) /* ?? */
+ MCFG_DEVICE_PROGRAM_MAP(megatech_bios_map)
+ MCFG_DEVICE_IO_MAP(megatech_bios_portmap)
cxd1095_device &io1(CXD1095(config, "io1", 0));
io1.in_porta_cb().set_ioport("BIOS_DSW0");
@@ -708,29 +717,33 @@ void mtech_state::megatech(machine_config &config)
config.set_default_layout(layout_dualhovu);
- screen_device &screen(*subdevice<screen_device>("megadriv"));
- screen.set_raw(XTAL(10'738'635)/2, \
+ MCFG_SCREEN_MODIFY("megadriv")
+ MCFG_SCREEN_RAW_PARAMS(XTAL(10'738'635)/2, \
sega315_5124_device::WIDTH , sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH, sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 256, \
- sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224);
- screen.set_screen_update(FUNC(mtech_state::screen_update_main));
- screen.screen_vblank().set(FUNC(mtech_state::screen_vblank_main));
+ sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224)
+ MCFG_SCREEN_UPDATE_DRIVER(mtech_state, screen_update_main)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mtech_state, screen_vblank_main))
- m_vdp->irq().set_inputline(m_z80snd, 0);
+ MCFG_DEVICE_MODIFY("gen_vdp")
+ MCFG_SEGA315_5313_INT_CB(INPUTLINE("genesis_snd_z80", 0))
- screen_device &menu(SCREEN(config, "menu", SCREEN_TYPE_RASTER));
+ MCFG_SCREEN_ADD("menu", RASTER)
// check frq
- menu.set_raw(XTAL(10'738'635)/2, \
+ MCFG_SCREEN_RAW_PARAMS(XTAL(10'738'635)/2, \
sega315_5124_device::WIDTH , sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH, sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 256, \
- sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224);
- menu.set_screen_update(FUNC(mtech_state::screen_update_menu));
-
- SEGA315_5246(config, m_vdp1, MASTER_CLOCK / 5); /* ?? */
- m_vdp1->set_screen("menu");
- m_vdp1->set_is_pal(false);
- m_vdp1->irq().set_inputline(m_bioscpu, 0);
- m_vdp1->add_route(ALL_OUTPUTS, "lspeaker", 0.25);
- m_vdp1->add_route(ALL_OUTPUTS, "rspeaker", 0.25);
-}
+ sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224)
+ MCFG_SCREEN_UPDATE_DRIVER(mtech_state, screen_update_menu)
+
+ MCFG_DEVICE_ADD("vdp1", SEGA315_5246, 0)
+ MCFG_SEGA315_5246_SET_SCREEN("menu")
+ MCFG_SEGA315_5246_IS_PAL(false)
+ MCFG_SEGA315_5246_INT_CB(INPUTLINE("mtbios", 0))
+
+ /* sound hardware */
+ MCFG_DEVICE_ADD("sn2", SN76496, MASTER_CLOCK/15)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
+MACHINE_CONFIG_END
image_init_result mtech_state::load_cart(device_image_interface &image, generic_slot_device *slot, int gameno)
@@ -784,7 +797,7 @@ MACHINE_CONFIG_START(mtech_state::megatech_multislot)
MCFG_MEGATECH_CARTSLOT_ADD("mt_slot7", mt_cart7)
MCFG_MEGATECH_CARTSLOT_ADD("mt_slot8", mt_cart8)
- SOFTWARE_LIST(config, "cart_list").set_original("megatech");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","megatech")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/megazone.cpp b/src/mame/drivers/megazone.cpp
index 52548698b5e..5c477f1cf9d 100644
--- a/src/mame/drivers/megazone.cpp
+++ b/src/mame/drivers/megazone.cpp
@@ -293,15 +293,15 @@ WRITE_LINE_MEMBER(megazone_state::vblank_irq)
}
-void megazone_state::megazone(machine_config &config)
-{
+MACHINE_CONFIG_START(megazone_state::megazone)
+
/* basic machine hardware */
- KONAMI1(config, m_maincpu, XTAL(18'432'000)/9); /* 2.048 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &megazone_state::megazone_map);
+ MCFG_DEVICE_ADD("maincpu", KONAMI1, XTAL(18'432'000)/9) /* 2.048 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(megazone_map)
- Z80(config, m_audiocpu, XTAL(18'432'000)/6); /* Z80 Clock is derived from the H1 signal */
- m_audiocpu->set_addrmap(AS_PROGRAM, &megazone_state::megazone_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &megazone_state::megazone_sound_io_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(18'432'000)/6) /* Z80 Clock is derived from the H1 signal */
+ MCFG_DEVICE_PROGRAM_MAP(megazone_sound_map)
+ MCFG_DEVICE_IO_MAP(megazone_sound_io_map)
I8039(config, m_daccpu, XTAL(14'318'181)/2); /* 7.15909MHz */
m_daccpu->set_addrmap(AS_PROGRAM, &megazone_state::megazone_i8039_map);
@@ -309,7 +309,7 @@ void megazone_state::megazone(machine_config &config)
m_daccpu->p1_out_cb().set("dac", FUNC(dac_byte_interface::data_w));
m_daccpu->p2_out_cb().set(FUNC(megazone_state::i8039_irqen_and_status_w));
- config.m_minimum_quantum = attotime::from_hz(900);
+ MCFG_QUANTUM_TIME(attotime::from_hz(900))
ls259_device &mainlatch(LS259(config, "mainlatch")); // 13A
mainlatch.q_out_cb<0>().set(FUNC(megazone_state::coin_counter_2_w));
@@ -320,14 +320,14 @@ void megazone_state::megazone(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(36*8, 32*8);
- screen.set_visarea(0*8, 36*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(megazone_state::screen_update_megazone));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(megazone_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(36*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(megazone_state, screen_update_megazone)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, megazone_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_megazone);
PALETTE(config, m_palette, FUNC(megazone_state::megazone_palette), 16*16+16*16, 32);
@@ -344,15 +344,17 @@ void megazone_state::megazone(machine_config &config)
aysnd.add_route(1, "filter.0.1", 0.30);
aysnd.add_route(2, "filter.0.2", 0.30);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-
- FILTER_RC(config, m_filter[0]).add_route(ALL_OUTPUTS, "speaker", 1.0);
- FILTER_RC(config, m_filter[1]).add_route(ALL_OUTPUTS, "speaker", 1.0);
- FILTER_RC(config, m_filter[2]).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+
+ MCFG_DEVICE_ADD("filter.0.0", FILTER_RC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+ MCFG_DEVICE_ADD("filter.0.1", FILTER_RC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+ MCFG_DEVICE_ADD("filter.0.2", FILTER_RC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/meijinsn.cpp b/src/mame/drivers/meijinsn.cpp
index 044f9e47e00..9cc06506945 100644
--- a/src/mame/drivers/meijinsn.cpp
+++ b/src/mame/drivers/meijinsn.cpp
@@ -288,18 +288,18 @@ void meijinsn_state::meijinsn_palette(palette_device &palette) const
bit0 = BIT(color_prom[i], 0);
bit1 = BIT(color_prom[i], 1);
bit2 = BIT(color_prom[i], 2);
- int const r = combine_weights(weights_r, bit0, bit1, bit2);
+ int const r = combine_3_weights(weights_r, bit0, bit1, bit2);
/* green component */
bit0 = BIT(color_prom[i], 3);
bit1 = BIT(color_prom[i], 4);
bit2 = BIT(color_prom[i], 5);
- int const g = combine_weights(weights_g, bit0, bit1, bit2);
+ int const g = combine_3_weights(weights_g, bit0, bit1, bit2);
/* blue component */
bit0 = BIT(color_prom[i], 6);
bit1 = BIT(color_prom[i], 7);
- int const b = combine_weights(weights_b, bit0, bit1);
+ int const b = combine_2_weights(weights_b, bit0, bit1);
palette.set_pen_color(i, rgb_t(r, g, b));
}
@@ -357,27 +357,27 @@ void meijinsn_state::machine_reset()
}
-void meijinsn_state::meijinsn(machine_config &config)
-{
+MACHINE_CONFIG_START(meijinsn_state::meijinsn)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 9000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &meijinsn_state::meijinsn_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(meijinsn_state::meijinsn_interrupt), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M68000, 9000000 )
+ MCFG_DEVICE_PROGRAM_MAP(meijinsn_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", meijinsn_state, meijinsn_interrupt, "screen", 0, 1)
- z80_device &audiocpu(Z80(config, "audiocpu", 4000000));
- audiocpu.set_addrmap(AS_PROGRAM, &meijinsn_state::meijinsn_sound_map);
- audiocpu.set_addrmap(AS_IO, &meijinsn_state::meijinsn_sound_io_map);
- audiocpu.set_periodic_int(FUNC(meijinsn_state::irq0_line_hold), attotime::from_hz(160*60));
+ MCFG_DEVICE_ADD("audiocpu", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(meijinsn_sound_map)
+ MCFG_DEVICE_IO_MAP(meijinsn_sound_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(meijinsn_state, irq0_line_hold, 160*60)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(12, 243, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(meijinsn_state::screen_update_meijinsn));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(12, 243, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(meijinsn_state, screen_update_meijinsn)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(meijinsn_state::meijinsn_palette), 32);
@@ -389,7 +389,7 @@ void meijinsn_state::meijinsn(machine_config &config)
ay8910_device &aysnd(AY8910(config, "aysnd", 2000000));
aysnd.port_a_read_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.75);
-}
+MACHINE_CONFIG_END
ROM_START( meijinsn )
diff --git a/src/mame/drivers/mekd2.cpp b/src/mame/drivers/mekd2.cpp
index d77e9ff93fc..e0bd9db2663 100644
--- a/src/mame/drivers/mekd2.cpp
+++ b/src/mame/drivers/mekd2.cpp
@@ -375,11 +375,10 @@ void mekd2_state::machine_start()
************************************************************/
-void mekd2_state::mekd2(machine_config &config)
-{
+MACHINE_CONFIG_START(mekd2_state::mekd2)
/* basic machine hardware */
- M6800(config, m_maincpu, XTAL_MEKD2 / 2); /* 614.4 kHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &mekd2_state::mekd2_mem);
+ MCFG_DEVICE_ADD("maincpu", M6800, XTAL_MEKD2 / 2) /* 614.4 kHz */
+ MCFG_DEVICE_PROGRAM_MAP(mekd2_mem)
config.set_default_layout(layout_mekd2);
@@ -387,7 +386,7 @@ void mekd2_state::mekd2(machine_config &config)
SPEAKER(config, "mono").front_center();
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
- CASSETTE(config, m_cass);
+ MCFG_CASSETTE_ADD("cassette")
/* Devices */
PIA6821(config, m_pia_s, 0);
@@ -406,17 +405,17 @@ void mekd2_state::mekd2(machine_config &config)
ACIA6850(config, m_acia, 0);
m_acia->txd_handler().set(FUNC(mekd2_state::cass_w));
- clock_device &acia_tx_clock(CLOCK(config, "acia_tx_clock", XTAL_MEKD2 / 256)); // 4800Hz
- acia_tx_clock.signal_handler().set(m_acia, FUNC(acia6850_device::write_txc));
+ MCFG_DEVICE_ADD("acia_tx_clock", CLOCK, XTAL_MEKD2 / 256) // 4800Hz
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE("acia", acia6850_device, write_txc))
- clock_device &acia_rx_clock(CLOCK(config, "acia_rx_clock", 300)); // toggled by cassette circuit
- acia_rx_clock.signal_handler().set(m_acia, FUNC(acia6850_device::write_rxc));
+ MCFG_DEVICE_ADD("acia_rx_clock", CLOCK, 300) // toggled by cassette circuit
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE("acia", acia6850_device, write_rxc))
- TIMER(config, "mekd2_c").configure_periodic(FUNC(mekd2_state::mekd2_c), attotime::from_hz(4800));
- TIMER(config, "mekd2_p").configure_periodic(FUNC(mekd2_state::mekd2_p), attotime::from_hz(40000));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("mekd2_c", mekd2_state, mekd2_c, attotime::from_hz(4800))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("mekd2_p", mekd2_state, mekd2_p, attotime::from_hz(40000))
- QUICKLOAD(config, "quickload").set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(mekd2_state, mekd2_quik), this), "d2", attotime::from_seconds(1));
-}
+ MCFG_QUICKLOAD_ADD("quickload", mekd2_state, mekd2_quik, "d2", 1)
+MACHINE_CONFIG_END
/***********************************************************
diff --git a/src/mame/drivers/mephisto.cpp b/src/mame/drivers/mephisto.cpp
index d1c142e3194..21191fce122 100644
--- a/src/mame/drivers/mephisto.cpp
+++ b/src/mame/drivers/mephisto.cpp
@@ -233,6 +233,7 @@ static INPUT_PORTS_START( mephisto )
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C 3") PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3)
PORT_START("KEY2_7") //Port $2c0f
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D 4") PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4)
+
INPUT_PORTS_END
@@ -243,16 +244,20 @@ TIMER_DEVICE_CALLBACK_MEMBER(mephisto_state::update_nmi)
m_allowNMI = 0;
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
+ m_beep->set_state(m_outlatch->q6_r() ? 1 : 0);
}
TIMER_DEVICE_CALLBACK_MEMBER(mephisto_state::update_nmi_r5)
{
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
+ m_beep->set_state(m_outlatch->q6_r() ? 1 : 0);
}
TIMER_DEVICE_CALLBACK_MEMBER(mephisto_state::update_irq)//only mm2
{
m_maincpu->set_input_line(M65C02_IRQ_LINE, HOLD_LINE);
+
+ m_beep->set_state(m_outlatch->q6_r() ? 1 : 0);
}
void mephisto_state::machine_start()
@@ -294,11 +299,11 @@ void mephisto_state::machine_reset()
}
-void mephisto_state::mephisto(machine_config &config)
-{
+MACHINE_CONFIG_START(mephisto_state::mephisto)
/* basic machine hardware */
- M65C02(config, m_maincpu, 4915200); /* 65C02 */
- m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_state::mephisto_mem);
+ MCFG_DEVICE_ADD("maincpu",M65C02,4915200) /* 65C02 */
+ MCFG_DEVICE_PROGRAM_MAP(mephisto_mem)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
HC259(config, m_outlatch);
m_outlatch->q_out_cb<0>().set_output("led100");
@@ -307,50 +312,45 @@ void mephisto_state::mephisto(machine_config &config)
m_outlatch->q_out_cb<3>().set_output("led103");
m_outlatch->q_out_cb<4>().set_output("led104");
m_outlatch->q_out_cb<5>().set_output("led105");
- m_outlatch->q_out_cb<6>().set(m_beep, FUNC(beep_device::set_state));
m_outlatch->q_out_cb<7>().set(FUNC(mephisto_state::write_led7));
/* sound hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beep, 3250).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("beeper", BEEP, 3250)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- TIMER(config, "nmi_timer").configure_periodic(FUNC(mephisto_state::update_nmi), attotime::from_hz(600));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", mephisto_state, update_nmi, attotime::from_hz(600))
MEPHISTO_SENSORS_BOARD(config, "board", 0);
config.set_default_layout(layout_mephisto);
-}
+MACHINE_CONFIG_END
-void mephisto_state::rebel5(machine_config &config)
-{
+MACHINE_CONFIG_START(mephisto_state::rebel5)
mephisto(config);
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(rebel5_mem)
+ MCFG_DEVICE_REMOVE("nmi_timer")
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer_r5", mephisto_state, update_nmi_r5, attotime::from_hz(600))
- m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_state::rebel5_mem);
-
- config.device_remove("nmi_timer");
- TIMER(config, "nmi_timer_r5").configure_periodic(FUNC(mephisto_state::update_nmi_r5), attotime::from_hz(600));
-}
+MACHINE_CONFIG_END
-void mephisto_state::mm2(machine_config &config)
-{
+MACHINE_CONFIG_START(mephisto_state::mm2)
mephisto(config);
-
- m_maincpu->set_clock(3700000);
- m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_state::mm2_mem);
+ MCFG_DEVICE_REPLACE("maincpu", M65C02, 3700000)
+ MCFG_DEVICE_PROGRAM_MAP(mm2_mem)
MCFG_MACHINE_START_OVERRIDE(mephisto_state, mm2 )
- config.device_remove("nmi_timer");
- TIMER(config, "irq_timer").configure_periodic(FUNC(mephisto_state::update_irq), attotime::from_hz(450));
-
- m_outlatch->q_out_cb<7>().set(FUNC(mephisto_state::write_led7)).invert();
-}
+ MCFG_DEVICE_REMOVE("nmi_timer")
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", mephisto_state, update_irq, attotime::from_hz(450))
+MACHINE_CONFIG_END
-void mephisto_state::mm4tk(machine_config &config)
-{
+MACHINE_CONFIG_START(mephisto_state::mm4tk)
mephisto(config);
-
- m_maincpu->set_clock(18000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_state::mephisto_mem);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_REPLACE("maincpu", M65C02, 18000000)
+ MCFG_DEVICE_PROGRAM_MAP(mephisto_mem)
+MACHINE_CONFIG_END
ROM_START(rebel5)
ROM_REGION(0x10000,"maincpu",0)
@@ -415,11 +415,11 @@ void mephisto_state::init_mephisto()
***************************************************************************/
-/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME, FLAGS */
-CONS( 1984, mm2, mm4, 0, mm2, mephisto, mephisto_state, init_mephisto, "Hegener & Glaser", "Mephisto MM II", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1986, rebel5, mm4, 0, rebel5, mephisto, mephisto_state, init_mephisto, "Hegener & Glaser", "Mephisto Rebell 5.0", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1987, mm4, 0, 0, mephisto, mephisto, mephisto_state, init_mephisto, "Hegener & Glaser", "Mephisto MM IV", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1987, mm4tk, mm4, 0, mm4tk, mephisto, mephisto_state, init_mephisto, "Hegener & Glaser", "Mephisto MM IV (TurboKit + HG440)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1990, mm5, mm4, 0, mephisto, mephisto, mephisto_state, init_mephisto, "Hegener & Glaser", "Mephisto MM V (V5.1)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1990, mm50, mm4, 0, mephisto, mephisto, mephisto_state, init_mephisto, "Hegener & Glaser", "Mephisto MM V (V5.0)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1990, mm5tk, mm4, 0, mm4tk, mephisto, mephisto_state, init_mephisto, "Hegener & Glaser", "Mephisto MM V (V5.1) (TurboKit + HG550)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+CONS( 1984, mm2, mm4, 0, mm2, mephisto, mephisto_state, init_mephisto, "Hegener & Glaser", "Mephisto MM2 Schachcomputer", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1986, rebel5, mm4, 0, rebel5, mephisto, mephisto_state, init_mephisto, "Hegener & Glaser", "Mephisto Rebell 5,0 Schachcomputer", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1987, mm4, 0, 0, mephisto, mephisto, mephisto_state, init_mephisto, "Hegener & Glaser", "Mephisto 4 Schachcomputer", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1987, mm4tk, mm4, 0, mm4tk, mephisto, mephisto_state, init_mephisto, "Hegener & Glaser", "Mephisto 4 Schachcomputer Turbo Kit + HG440", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1990, mm5, mm4, 0, mephisto, mephisto, mephisto_state, init_mephisto, "Hegener & Glaser", "Mephisto 5.1 Schachcomputer", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1990, mm50, mm4, 0, mephisto, mephisto, mephisto_state, init_mephisto, "Hegener & Glaser", "Mephisto 5.0 Schachcomputer", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1990, mm5tk, mm4, 0, mm4tk, mephisto, mephisto_state, init_mephisto, "Hegener & Glaser", "Mephisto 5.1 Schachcomputer Turbo Kit + HG550", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/mephisto_montec.cpp b/src/mame/drivers/mephisto_montec.cpp
index eec48437d00..20829ed2950 100644
--- a/src/mame/drivers/mephisto_montec.cpp
+++ b/src/mame/drivers/mephisto_montec.cpp
@@ -459,69 +459,69 @@ static INPUT_PORTS_START( smondial2 )
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Clear") PORT_CODE(KEYCODE_BACKSPACE)
INPUT_PORTS_END
-void mephisto_montec_state::montec(machine_config &config)
-{
- M65C02(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_montec_state::montec_mem);
- m_maincpu->set_periodic_int(FUNC(mephisto_montec_state::nmi_line_assert), attotime::from_hz(XTAL(4'000'000) / (1 << 13)));
+MACHINE_CONFIG_START(mephisto_montec_state::montec)
+ MCFG_DEVICE_ADD("maincpu", M65C02, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP( montec_mem )
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(mephisto_montec_state, nmi_line_assert, XTAL(4'000'000) / (1 << 13))
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beeper, 3250).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("beeper", BEEP, 3250)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MEPHISTO_SENSORS_BOARD(config, m_board, 0);
config.set_default_layout(layout_mephisto_montec);
-}
+MACHINE_CONFIG_END
-void mephisto_montec_state::monteciv(machine_config &config)
-{
+MACHINE_CONFIG_START(mephisto_montec_state::monteciv)
montec(config);
- m_maincpu->set_clock(XTAL(8'000'000));
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK( XTAL(8'000'000) )
+MACHINE_CONFIG_END
-void mephisto_montec_state::megaiv(machine_config &config)
-{
+MACHINE_CONFIG_START(mephisto_montec_state::megaiv)
montec(config);
- m_maincpu->set_clock(XTAL(4'915'200));
- m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_montec_state::megaiv_mem);
- m_maincpu->set_periodic_int(FUNC(mephisto_montec_state::nmi_line_pulse), attotime::from_hz(XTAL(4'915'200) / (1 << 13)));
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK( XTAL(4'915'200) )
+ MCFG_DEVICE_PROGRAM_MAP(megaiv_mem)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(mephisto_montec_state, nmi_line_pulse, XTAL(4'915'200) / (1 << 13))
MEPHISTO_BUTTONS_BOARD(config.replace(), m_board, 0);
m_board->set_disable_leds(true);
config.set_default_layout(layout_mephisto_megaiv);
-}
+MACHINE_CONFIG_END
-void mephisto_montec_state::mondial2(machine_config &config)
-{
+MACHINE_CONFIG_START(mephisto_montec_state::mondial2)
megaiv(config);
- m_maincpu->set_clock(XTAL(2'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_montec_state::mondial2_mem);
- m_maincpu->set_periodic_int(FUNC(mephisto_montec_state::nmi_line_pulse), attotime::from_hz(XTAL(2'000'000) / (1 << 12)));
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK( XTAL(2'000'000) )
+ MCFG_DEVICE_PROGRAM_MAP(mondial2_mem)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(mephisto_montec_state, nmi_line_pulse, XTAL(2'000'000) / (1 << 12))
- TIMER(config, "refresh_leds").configure_periodic(FUNC(mephisto_montec_state::refresh_leds), attotime::from_hz(10));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("refresh_leds", mephisto_montec_state, refresh_leds, attotime::from_hz(10))
config.set_default_layout(layout_mephisto_mondial2);
-}
+MACHINE_CONFIG_END
-void mephisto_montec_state::smondial(machine_config &config)
-{
+MACHINE_CONFIG_START(mephisto_montec_state::smondial)
megaiv(config);
- m_maincpu->set_clock(XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_montec_state::smondial_mem);
- m_maincpu->set_periodic_int(FUNC(mephisto_montec_state::nmi_line_pulse), attotime::from_hz(XTAL(4'000'000) / (1 << 13)));
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK( XTAL(4'000'000) )
+ MCFG_DEVICE_PROGRAM_MAP(smondial_mem)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(mephisto_montec_state, nmi_line_pulse, XTAL(4'000'000) / (1 << 13))
+MACHINE_CONFIG_END
-void mephisto_montec_state::smondial2(machine_config &config)
-{
+MACHINE_CONFIG_START(mephisto_montec_state::smondial2)
smondial(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_montec_state::smondial2_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(smondial2_mem)
- GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "smondial2_cart");
- SOFTWARE_LIST(config, "cart_list").set_original("smondial2");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "smondial2_cart")
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "smondial2")
config.set_default_layout(layout_mephisto_smondial2);
-}
+MACHINE_CONFIG_END
ROM_START(megaiv)
diff --git a/src/mame/drivers/mephistp.cpp b/src/mame/drivers/mephistp.cpp
index 25d927c0623..aedff4d87b3 100644
--- a/src/mame/drivers/mephistp.cpp
+++ b/src/mame/drivers/mephistp.cpp
@@ -87,9 +87,9 @@ WRITE8_MEMBER(mephisto_pinball_state::t0_t1_w)
void mephisto_pinball_state::ay8910_update()
{
if (m_ay8910_bdir)
- m_aysnd->data_address_w(m_ay8910_bc1, m_ay8910_data);
+ m_aysnd->data_address_w(machine().dummy_space(), m_ay8910_bc1, m_ay8910_data);
else if (m_ay8910_bc1)
- m_ay8910_data = m_aysnd->data_r();
+ m_ay8910_data = m_aysnd->data_r(machine().dummy_space(), 0);
}
WRITE8_MEMBER(mephisto_pinball_state::ay8910_columns_w)
@@ -160,18 +160,17 @@ void mephisto_pinball_state::machine_reset()
{
}
-void mephisto_pinball_state::mephisto(machine_config &config)
-{
+MACHINE_CONFIG_START(mephisto_pinball_state::mephisto)
/* basic machine hardware */
- I8088(config, m_maincpu, XTAL(18'000'000)/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_pinball_state::mephisto_map);
- //m_maincpu->set_irq_acknowledge_callback("muart", FUNC(i8256_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I8088, XTAL(18'000'000)/3)
+ MCFG_DEVICE_PROGRAM_MAP(mephisto_map)
+ //MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("muart", i8256_device, inta_cb)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- //i8256_device &muart(I8256(config, "muart", XTAL(18'000'000)/3));
- //muart.irq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- //muart.txd_handler().set_inputline("audiocpu", MCS51_RX_LINE);
+ //MCFG_DEVICE_ADD("muart", I8256, XTAL(18'000'000)/3)
+ //MCFG_I8256_IRQ_HANDLER(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ //MCFG_I8256_TXD_HANDLER(INPUTLINE("audiocpu", MCS51_RX_LINE))
I8155(config, "ic20", XTAL(18'000'000)/6);
//i8155_device &i8155_1(I8155(config, "ic20", XTAL(18'000'000)/6));
@@ -196,20 +195,21 @@ void mephisto_pinball_state::mephisto(machine_config &config)
m_aysnd->port_b_read_callback().set(FUNC(mephisto_pinball_state::ay8910_inputs_r));
m_aysnd->add_route(ALL_OUTPUTS, "mono", 0.5);
- DAC08(config, "dac", 0).add_route(ALL_OUTPUTS, "mono", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC08, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void mephisto_pinball_state::sport2k(machine_config &config)
-{
+MACHINE_CONFIG_START(mephisto_pinball_state::sport2k)
mephisto(config);
- subdevice<i8051_device>("soundcpu")->set_addrmap(AS_IO, &mephisto_pinball_state::sport2k_8051_io);
+ MCFG_DEVICE_MODIFY("soundcpu")
+ MCFG_DEVICE_IO_MAP(sport2k_8051_io)
- YM3812(config, "ymsnd", XTAL(14'318'181)/4).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(14'318'181)/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
/ Mephisto
diff --git a/src/mame/drivers/merit.cpp b/src/mame/drivers/merit.cpp
index 8c932d55280..0cf37ab2960 100644
--- a/src/mame/drivers/merit.cpp
+++ b/src/mame/drivers/merit.cpp
@@ -1409,11 +1409,10 @@ MACHINE_START_MEMBER(merit_state,casino5)
membank("bank2")->set_entry(0);
}
-void merit_state::pitboss(machine_config &config)
-{
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &merit_state::pitboss_map);
- m_maincpu->set_addrmap(AS_IO, &merit_state::trvwhiz_io_map);
+MACHINE_CONFIG_START(merit_state::pitboss)
+ MCFG_DEVICE_ADD("maincpu",Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(pitboss_map)
+ MCFG_DEVICE_IO_MAP(trvwhiz_io_map)
I8255A(config, m_ppi[0]);
m_ppi[0]->in_pa_callback().set_ioport("IN0");
@@ -1426,9 +1425,9 @@ void merit_state::pitboss(machine_config &config)
m_ppi[1]->out_pc_callback().set(FUNC(merit_state::misc_w));
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, 512, 0, 512, 256, 0, 256); /* temporary, CRTC will configure screen */
- m_screen->set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 512, 0, 512, 256, 0, 256) /* temporary, CRTC will configure screen */
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK));
crtc.set_screen(m_screen);
@@ -1445,97 +1444,97 @@ void merit_state::pitboss(machine_config &config)
ay8912_device &aysnd(AY8912(config, "aysnd", CRTC_CLOCK));
aysnd.port_a_write_callback().set(FUNC(merit_state::led2_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.33);
-}
+MACHINE_CONFIG_END
-void merit_state::casino5(machine_config &config)
-{
+MACHINE_CONFIG_START(merit_state::casino5)
pitboss(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &merit_state::casino5_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(casino5_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
MCFG_MACHINE_START_OVERRIDE(merit_state,casino5)
-}
+MACHINE_CONFIG_END
-void merit_state::bigappg(machine_config &config)
-{
+MACHINE_CONFIG_START(merit_state::bigappg)
pitboss(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &merit_state::bigappg_map);
- m_maincpu->set_addrmap(AS_IO, &merit_state::tictac_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(bigappg_map)
+ MCFG_DEVICE_IO_MAP(tictac_io_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void merit_state::misdraw(machine_config &config)
-{
+MACHINE_CONFIG_START(merit_state::misdraw)
bigappg(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &merit_state::misdraw_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(misdraw_map)
NVRAM(config, "cpunvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void merit_state::dodge(machine_config &config)
-{
+MACHINE_CONFIG_START(merit_state::dodge)
pitboss(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &merit_state::dodge_map);
- m_maincpu->set_addrmap(AS_IO, &merit_state::tictac_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dodge_map)
+ MCFG_DEVICE_IO_MAP(tictac_io_map)
NVRAM(config, "nvram").set_custom_handler(FUNC(merit_state::dodge_nvram_init));
-}
+MACHINE_CONFIG_END
-void merit_state::tictac(machine_config &config)
-{
+MACHINE_CONFIG_START(merit_state::tictac)
pitboss(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &merit_state::tictac_map);
- m_maincpu->set_addrmap(AS_IO, &merit_state::tictac_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tictac_map)
+ MCFG_DEVICE_IO_MAP(tictac_io_map)
+MACHINE_CONFIG_END
-void merit_state::trvwhiz(machine_config &config)
-{
+MACHINE_CONFIG_START(merit_state::trvwhiz)
pitboss(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &merit_state::trvwhiz_map);
- m_maincpu->set_addrmap(AS_IO, &merit_state::trvwhiz_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(trvwhiz_map)
+ MCFG_DEVICE_IO_MAP(trvwhiz_io_map)
+MACHINE_CONFIG_END
-void merit_state::dtrvwz5(machine_config &config)
-{
+MACHINE_CONFIG_START(merit_state::dtrvwz5)
pitboss(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &merit_state::dtrvwz5_map);
- m_maincpu->set_addrmap(AS_IO, &merit_state::tictac_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dtrvwz5_map)
+ MCFG_DEVICE_IO_MAP(tictac_io_map)
+MACHINE_CONFIG_END
-void merit_state::phrcraze(machine_config &config)
-{
+MACHINE_CONFIG_START(merit_state::phrcraze)
pitboss(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &merit_state::phrcraze_map);
- m_maincpu->set_addrmap(AS_IO, &merit_state::phrcraze_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(phrcraze_map)
+ MCFG_DEVICE_IO_MAP(phrcraze_io_map)
+MACHINE_CONFIG_END
-void merit_state::trvwhziv(machine_config &config)
-{
+MACHINE_CONFIG_START(merit_state::trvwhziv)
pitboss(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &merit_state::trvwhziv_map);
- m_maincpu->set_addrmap(AS_IO, &merit_state::tictac_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(trvwhziv_map)
+ MCFG_DEVICE_IO_MAP(tictac_io_map)
+MACHINE_CONFIG_END
-void merit_state::couple(machine_config &config)
-{
+MACHINE_CONFIG_START(merit_state::couple)
pitboss(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &merit_state::couple_map);
- m_maincpu->set_addrmap(AS_IO, &merit_state::tictac_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(couple_map)
+ MCFG_DEVICE_IO_MAP(tictac_io_map)
m_ppi[1]->out_pc_callback().set(FUNC(merit_state::misc_couple_w));
-}
+MACHINE_CONFIG_END
ROM_START( pitboss ) /* Program roms were all printed as 2214-05 with the "7" hand written over the 5, U5 also had an added hand written "A" */
diff --git a/src/mame/drivers/meritm.cpp b/src/mame/drivers/meritm.cpp
index 34aae5bd85a..e2c8a1ca2cc 100644
--- a/src/mame/drivers/meritm.cpp
+++ b/src/mame/drivers/meritm.cpp
@@ -1154,17 +1154,15 @@ void meritm_state::crt250(machine_config &config)
aysnd.add_route(ALL_OUTPUTS, "mono", 1.0);
}
-void meritm_state::crt250_questions(machine_config &config)
-{
+MACHINE_CONFIG_START(meritm_state::crt250_questions)
crt250(config);
m_maincpu->set_addrmap(AS_PROGRAM, &meritm_state::crt250_questions_map);
MCFG_MACHINE_START_OVERRIDE(meritm_state, crt250_questions)
-}
+MACHINE_CONFIG_END
-void meritm_state::crt250_crt252_crt258(machine_config &config)
-{
+MACHINE_CONFIG_START(meritm_state::crt250_crt252_crt258)
crt250_questions(config);
m_maincpu->set_addrmap(AS_IO, &meritm_state::crt250_crt258_io_map);
@@ -1174,12 +1172,11 @@ void meritm_state::crt250_crt252_crt258(machine_config &config)
NS16550(config, m_uart, UART_CLK);
m_uart->out_tx_callback().set(m_microtouch, FUNC(microtouch_device::rx));
- MICROTOUCH(config, m_microtouch, 9600).stx().set(m_uart, FUNC(ins8250_uart_device::rx_w));
- m_microtouch->set_touch_callback(FUNC(meritm_state::touch_coord_transform), this);
-}
+ MCFG_MICROTOUCH_ADD(m_microtouch, 9600, WRITELINE(m_uart, ins8250_uart_device, rx_w))
+ MCFG_MICROTOUCH_TOUCH_CB(meritm_state, touch_coord_transform)
+MACHINE_CONFIG_END
-void meritm_state::crt260(machine_config &config)
-{
+MACHINE_CONFIG_START(meritm_state::crt260)
crt250(config);
m_maincpu->set_addrmap(AS_PROGRAM, &meritm_state::map);
@@ -1193,9 +1190,9 @@ void meritm_state::crt260(machine_config &config)
NS16550(config, m_uart, UART_CLK);
m_uart->out_tx_callback().set(m_microtouch, FUNC(microtouch_device::rx));
- MICROTOUCH(config, m_microtouch, 9600).stx().set(m_uart, FUNC(ins8250_uart_device::rx_w));
- m_microtouch->set_touch_callback(FUNC(meritm_state::touch_coord_transform), this);
-}
+ MCFG_MICROTOUCH_ADD(m_microtouch, 9600, WRITELINE(m_uart, ins8250_uart_device, rx_w))
+ MCFG_MICROTOUCH_TOUCH_CB(meritm_state, touch_coord_transform)
+MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/meritum.cpp b/src/mame/drivers/meritum.cpp
index 7c15230f9e3..89507372c4e 100644
--- a/src/mame/drivers/meritum.cpp
+++ b/src/mame/drivers/meritum.cpp
@@ -395,9 +395,9 @@ GFXDECODE_END
MACHINE_CONFIG_START(meritum_state::meritum)
/* basic machine hardware */
- Z80(config, m_maincpu, 10_MHz_XTAL / 4); // U880D @ 2.5 MHz or 1.67 MHz by jumper selection
- m_maincpu->set_addrmap(AS_PROGRAM, &meritum_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &meritum_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 10_MHz_XTAL / 4) // U880D @ 2.5 MHz or 1.67 MHz by jumper selection
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
i8251_device &usart(I8251(config, "usart", 10_MHz_XTAL / 4)); // same as CPU clock
usart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
@@ -420,14 +420,14 @@ MACHINE_CONFIG_START(meritum_state::meritum)
i8255_device &mainppi(I8255(config, "mainppi")); // parallel interface
mainppi.out_pc_callback().set("nmigate", FUNC(input_merger_device::in_w<0>)).bit(7).invert();
- I8255(config, "flopppi", 0); // floppy disk interface
- PIT8253(config, "audiopit", 0); // optional audio interface
+ MCFG_DEVICE_ADD("flopppi", I8255, 0) // floppy disk interface
+ MCFG_DEVICE_ADD("audiopit", PIT8253, 0) // optional audio interface
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(10_MHz_XTAL, 107 * 6, 0, 64 * 6, 312, 0, 192);
- screen.set_screen_update(FUNC(meritum_state::screen_update_meritum));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(10_MHz_XTAL, 107 * 6, 0, 64 * 6, 312, 0, 192)
+ MCFG_SCREEN_UPDATE_DRIVER(meritum_state, screen_update_meritum)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_meritum);
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -438,8 +438,8 @@ MACHINE_CONFIG_START(meritum_state::meritum)
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05);
/* devices */
- CASSETTE(config, m_cassette);
- MCFG_QUICKLOAD_ADD("quickload", meritum_state, trs80_cmd, "cmd", attotime::from_seconds(1))
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_QUICKLOAD_ADD("quickload", meritum_state, trs80_cmd, "cmd", 1.0)
MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/mermaid.cpp b/src/mame/drivers/mermaid.cpp
index 37fcb30a87c..3119a60617b 100644
--- a/src/mame/drivers/mermaid.cpp
+++ b/src/mame/drivers/mermaid.cpp
@@ -128,14 +128,14 @@ Stephh's notes (based on the games Z80 code and some tests) :
WRITE8_MEMBER(mermaid_state::mermaid_ay8910_write_port_w)
{
- if (m_ay8910_enable[0]) m_ay8910[0]->data_w(data);
- if (m_ay8910_enable[1]) m_ay8910[1]->data_w(data);
+ if (m_ay8910_enable[0]) m_ay8910[0]->data_w(space, offset, data);
+ if (m_ay8910_enable[1]) m_ay8910[1]->data_w(space, offset, data);
}
WRITE8_MEMBER(mermaid_state::mermaid_ay8910_control_port_w)
{
- if (m_ay8910_enable[0]) m_ay8910[0]->address_w(data);
- if (m_ay8910_enable[1]) m_ay8910[1]->address_w(data);
+ if (m_ay8910_enable[0]) m_ay8910[0]->address_w(space, offset, data);
+ if (m_ay8910_enable[1]) m_ay8910[1]->address_w(space, offset, data);
}
@@ -419,11 +419,11 @@ WRITE_LINE_MEMBER(mermaid_state::rougien_adpcm_int)
}
}
-void mermaid_state::mermaid(machine_config &config)
-{
+MACHINE_CONFIG_START(mermaid_state::mermaid)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); // ???
- m_maincpu->set_addrmap(AS_PROGRAM, &mermaid_state::mermaid_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) // ???
+ MCFG_DEVICE_PROGRAM_MAP(mermaid_map)
LS259(config, m_latch[0]);
m_latch[0]->q_out_cb<0>().set(FUNC(mermaid_state::ay1_enable_w));
@@ -440,14 +440,14 @@ void mermaid_state::mermaid(machine_config &config)
m_latch[1]->q_out_cb<7>().set_nop(); // very frequent
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(mermaid_state::screen_update_mermaid));
- m_screen->screen_vblank().set(FUNC(mermaid_state::screen_vblank_mermaid));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mermaid_state, screen_update_mermaid)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mermaid_state, screen_vblank_mermaid))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mermaid);
PALETTE(config, m_palette, FUNC(mermaid_state::mermaid_palette), 4*16+2*2, 64+1);
@@ -456,11 +456,12 @@ void mermaid_state::mermaid(machine_config &config)
SPEAKER(config, "mono").front_center();
AY8910(config, m_ay8910[0], 1500000).add_route(ALL_OUTPUTS, "mono", 0.25);
+
AY8910(config, m_ay8910[1], 1500000).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-void mermaid_state::rougien(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(mermaid_state::rougien)
mermaid(config);
m_latch[0]->q_out_cb<2>().set(FUNC(mermaid_state::rougien_sample_playback_w));
@@ -470,16 +471,16 @@ void mermaid_state::rougien(machine_config &config)
m_palette->set_init(FUNC(mermaid_state::rougien_palette));
- MSM5205(config, m_adpcm, 384000);
- m_adpcm->vck_callback().set(FUNC(mermaid_state::rougien_adpcm_int));
- m_adpcm->set_prescaler_selector(msm5205_device::S96_4B);
- m_adpcm->add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("adpcm", MSM5205, 384000)
+ MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, mermaid_state, rougien_adpcm_int))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
RIPPLE_COUNTER(config, m_adpcm_counter);
m_adpcm_counter->set_device_rom_tag("adpcm");
m_adpcm_counter->set_stages(12);
m_adpcm_counter->rom_out_cb().set(FUNC(mermaid_state::adpcm_data_w));
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/mes.cpp b/src/mame/drivers/mes.cpp
index 7685d75f35b..e8899cfc15e 100644
--- a/src/mame/drivers/mes.cpp
+++ b/src/mame/drivers/mes.cpp
@@ -131,21 +131,20 @@ void mes_state::kbd_put(u8 data)
m_term_data = data;
}
-void mes_state::mes(machine_config &config)
-{
+MACHINE_CONFIG_START(mes_state::mes)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(16'000'000) / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &mes_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &mes_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(16'000'000) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(mes_state::screen_update));
- screen.set_size(640, 250);
- screen.set_visarea(0, 639, 0, 249);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(mes_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 250)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -155,7 +154,7 @@ void mes_state::mes(machine_config &config)
generic_keyboard_device &keybd(GENERIC_KEYBOARD(config, "keybd", 0));
keybd.set_keyboard_callback(FUNC(mes_state::kbd_put));
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/metalmx.cpp b/src/mame/drivers/metalmx.cpp
index a702481129f..2270377cd69 100644
--- a/src/mame/drivers/metalmx.cpp
+++ b/src/mame/drivers/metalmx.cpp
@@ -527,6 +527,7 @@ void metalmx_state::gsp_map(address_map &map)
{
map(0x88800000, 0x8880000f).ram(); /* ? */
map(0x88c00000, 0x88c0000f).ram(); /* ? */
+ map(0xc0000000, 0xc00003ff).rw(m_gsp, FUNC(tms34020_device::io_register_r), FUNC(tms34020_device::io_register_w));
map(0xff000000, 0xff7fffff).ram().share("gsp_dram");
map(0xff800000, 0xffffffff).ram().share("gsp_vram");
}
@@ -656,14 +657,14 @@ INPUT_PORTS_END
*
*************************************/
-void metalmx_state::metalmx(machine_config &config)
-{
- M68EC020(config, m_maincpu, XTAL(14'318'181));
- m_maincpu->set_addrmap(AS_PROGRAM, &metalmx_state::main_map);
+MACHINE_CONFIG_START(metalmx_state::metalmx)
+
+ MCFG_DEVICE_ADD("maincpu", M68EC020, XTAL(14'318'181))
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- ADSP2105(config, m_adsp, XTAL(10'000'000));
- m_adsp->set_addrmap(AS_PROGRAM, &metalmx_state::adsp_program_map);
- m_adsp->set_addrmap(AS_DATA, &metalmx_state::adsp_data_map);
+ MCFG_DEVICE_ADD("adsp", ADSP2105, XTAL(10'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(adsp_program_map)
+ MCFG_DEVICE_DATA_MAP(adsp_data_map)
TMS34020(config, m_gsp, 40000000); /* Unverified */
m_gsp->set_addrmap(AS_PROGRAM, &metalmx_state::gsp_map);
@@ -672,26 +673,26 @@ void metalmx_state::metalmx(machine_config &config)
m_gsp->set_pixels_per_clock(2);
m_gsp->output_int().set_inputline("maincpu", 4);
- DSP32C(config, m_dsp32c[0], 40000000); /* Unverified */
- m_dsp32c[0]->set_addrmap(AS_PROGRAM, &metalmx_state::dsp32c_1_map);
+ MCFG_DEVICE_ADD("dsp32c_1", DSP32C, 40000000) /* Unverified */
+ MCFG_DEVICE_PROGRAM_MAP(dsp32c_1_map)
- DSP32C(config, m_dsp32c[1], 40000000); /* Unverified */
- m_dsp32c[1]->set_addrmap(AS_PROGRAM, &metalmx_state::dsp32c_2_map);
+ MCFG_DEVICE_ADD("dsp32c_2", DSP32C, 40000000) /* Unverified */
+ MCFG_DEVICE_PROGRAM_MAP(dsp32c_2_map)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 384);
- screen.set_visarea(0, 511, 0, 383);
- screen.set_screen_update(FUNC(metalmx_state::screen_update_metalmx));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 384)
+ MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
+ MCFG_SCREEN_UPDATE_DRIVER(metalmx_state, screen_update_metalmx)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::RGB_565);
ATARI_CAGE(config, m_cage, 0);
m_cage->set_speedup(0); // TODO: speedup address
m_cage->irq_handler().set(FUNC(metalmx_state::cage_irq_callback));
-}
+MACHINE_CONFIG_END
void metalmx_state::init_metalmx()
diff --git a/src/mame/drivers/metlclsh.cpp b/src/mame/drivers/metlclsh.cpp
index 562318e5257..306b3dfbec7 100644
--- a/src/mame/drivers/metlclsh.cpp
+++ b/src/mame/drivers/metlclsh.cpp
@@ -278,11 +278,11 @@ void metlclsh_state::machine_reset()
void metlclsh_state::metlclsh(machine_config &config)
{
/* basic machine hardware */
- M6809(config, m_maincpu, 1500000); // ?
+ M6809(config, m_maincpu, 1500000); // ?
m_maincpu->set_addrmap(AS_PROGRAM, &metlclsh_state::metlclsh_master_map);
// IRQ by YM3526, NMI by CPU #2
- M6809(config, m_subcpu, 1500000); // ?
+ M6809(config, m_subcpu, 1500000); // ?
m_subcpu->set_addrmap(AS_PROGRAM, &metlclsh_state::metlclsh_slave_map);
// IRQ by CPU #1, NMI by coin insertion
diff --git a/src/mame/drivers/metlfrzr.cpp b/src/mame/drivers/metlfrzr.cpp
index 2e5cdbdb68c..2cd3986f02f 100644
--- a/src/mame/drivers/metlfrzr.cpp
+++ b/src/mame/drivers/metlfrzr.cpp
@@ -366,28 +366,28 @@ TIMER_DEVICE_CALLBACK_MEMBER(metlfrzr_state::scanline)
m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0x08); /* RST 08h */
}
-void metlfrzr_state::metlfrzr(machine_config &config)
-{
+MACHINE_CONFIG_START(metlfrzr_state::metlfrzr)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &metlfrzr_state::metlfrzr_map);
- m_maincpu->set_addrmap(AS_OPCODES, &metlfrzr_state::decrypted_opcodes_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(metlfrzr_state::scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(metlfrzr_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", metlfrzr_state, scanline, "screen", 0, 1)
- T5182(config, "t5182", 0);
+ MCFG_DEVICE_ADD("t5182", T5182, 0)
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 0x200).set_indirect_entries(256 * 2);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_metlfrzr);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256 - 1, 16, 256 - 16 - 1);
- screen.set_screen_update(FUNC(metlfrzr_state::screen_update_metlfrzr));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256 - 1, 16, 256 - 16 - 1)
+ MCFG_SCREEN_UPDATE_DRIVER(metlfrzr_state, screen_update_metlfrzr)
+ MCFG_SCREEN_PALETTE(m_palette)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -396,7 +396,7 @@ void metlfrzr_state::metlfrzr(machine_config &config)
ymsnd.irq_handler().set("t5182", FUNC(t5182_device::ym2151_irq_handler));
ymsnd.add_route(0, "mono", 1.0);
ymsnd.add_route(1, "mono", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/metro.cpp b/src/mame/drivers/metro.cpp
index f707ab3cb4d..7c772688dc2 100644
--- a/src/mame/drivers/metro.cpp
+++ b/src/mame/drivers/metro.cpp
@@ -367,7 +367,7 @@ WRITE8_MEMBER(metro_state::upd7810_portb_w)
{
if (!BIT(data, 2))
{
- downcast<ym2413_device *>(m_ymsnd.target())->write(BIT(data, 1), m_porta);
+ downcast<ym2413_device *>(m_ymsnd.target())->write(space, BIT(data, 1), m_porta);
}
m_portb = data;
return;
@@ -377,7 +377,7 @@ WRITE8_MEMBER(metro_state::upd7810_portb_w)
{
/* write */
if (!BIT(data, 4))
- m_oki->write(m_porta);
+ m_oki->write(space, 0, m_porta);
}
m_portb = data;
@@ -409,13 +409,13 @@ WRITE8_MEMBER(metro_state::daitorid_portb_w)
if (!BIT(data, 2))
{
/* write */
- downcast<ym2151_device *>(m_ymsnd.target())->write(BIT(data, 1), m_porta);
+ downcast<ym2151_device *>(m_ymsnd.target())->write(space, BIT(data, 1), m_porta);
}
if (!BIT(data, 3))
{
/* read */
- m_porta = downcast<ym2151_device *>(m_ymsnd.target())->read(BIT(data, 1));
+ m_porta = downcast<ym2151_device *>(m_ymsnd.target())->read(space, BIT(data, 1));
}
m_portb = data;
@@ -426,14 +426,14 @@ WRITE8_MEMBER(metro_state::daitorid_portb_w)
{
/* write */
if (!BIT(data, 4))
- m_oki->write(m_porta);
+ m_oki->write(space, 0, m_porta);
}
if (BIT(m_portb, 3) && !BIT(data, 3)) /* clock 1->0 */
{
/* read */
if (!BIT(data, 4))
- m_porta = m_oki->read();
+ m_porta = m_oki->read(space, 0);
}
m_portb = data;
@@ -4877,68 +4877,46 @@ Custom graphics chip - Imagetek I4100 052 9227KK701 (same as Karate Tournament)
ROM_START( pangpoms )
ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 Code */
- ROM_LOAD16_BYTE( "ppoms09.9.f7", 0x000000, 0x020000, CRC(0c292dbc) SHA1(8b09de2a560e804e0dea514c95b317c2e2b6501d) )
- ROM_LOAD16_BYTE( "ppoms10.10.f8", 0x000001, 0x020000, CRC(0bc18853) SHA1(68d50ad50caad34e72d32e7b9fea1d85af74b879) )
+ ROM_LOAD16_BYTE( "ppoms09.bin", 0x000000, 0x020000, CRC(0c292dbc) SHA1(8b09de2a560e804e0dea514c95b317c2e2b6501d) )
+ ROM_LOAD16_BYTE( "ppoms10.bin", 0x000001, 0x020000, CRC(0bc18853) SHA1(68d50ad50caad34e72d32e7b9fea1d85af74b879) )
ROM_REGION( 0x20000, "audiocpu", 0 ) /* NEC78C10 Code */
- ROM_LOAD( "pj_a12.12.a7", 0x000000, 0x020000, CRC(a749357b) SHA1(1555f565c301c5be7c49fc44a004b5c0cb3777c6) )
+ ROM_LOAD( "ppoms12.bin", 0x000000, 0x020000, CRC(a749357b) SHA1(1555f565c301c5be7c49fc44a004b5c0cb3777c6) )
ROM_REGION( 0x100000, "vdp", 0 ) /* Gfx + Data (Addressable by CPU & Blitter) */
- ROMX_LOAD( "pj_e_02.i7", 0x000000, 0x020000, CRC(88f902f7) SHA1(12ea58d7c000b629ccdceec3dedc2747a63b84be) , ROM_SKIP(7))
+ ROMX_LOAD( "ppoms02.bin", 0x000000, 0x020000, CRC(88f902f7) SHA1(12ea58d7c000b629ccdceec3dedc2747a63b84be) , ROM_SKIP(7))
ROMX_LOAD( "ppoms04.bin", 0x000001, 0x020000, CRC(9190c2a0) SHA1(a7399cc2dea5a963e7c930e426915e8eb3552213) , ROM_SKIP(7))
ROMX_LOAD( "ppoms06.bin", 0x000002, 0x020000, CRC(ed15c93d) SHA1(95072e7d1def0d8e97946a612b90ce078c64aed2) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_08.i16", 0x000003, 0x020000, CRC(9a3408b9) SHA1(924b184d3a47bbe8aa5d41761ea5e94ba7e4f2e9) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_01.i6", 0x000004, 0x020000, CRC(11ac3810) SHA1(6ada82a73d4383f99f5be67369b810a692d27ef9) , ROM_SKIP(7))
+ ROMX_LOAD( "ppoms08.bin", 0x000003, 0x020000, CRC(9a3408b9) SHA1(924b184d3a47bbe8aa5d41761ea5e94ba7e4f2e9) , ROM_SKIP(7))
+ ROMX_LOAD( "ppoms01.bin", 0x000004, 0x020000, CRC(11ac3810) SHA1(6ada82a73d4383f99f5be67369b810a692d27ef9) , ROM_SKIP(7))
ROMX_LOAD( "ppoms03.bin", 0x000005, 0x020000, CRC(e595529e) SHA1(91b4bd1f029ce09d7689815099b38916fe0d2686) , ROM_SKIP(7))
ROMX_LOAD( "ppoms05.bin", 0x000006, 0x020000, CRC(02226214) SHA1(82302e7f1e7269c45e11dfba45ec7bbf522b47f1) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_07.i14", 0x000007, 0x020000, CRC(48471c87) SHA1(025fa79993788a0091c4edb83423725abd3a47a2) , ROM_SKIP(7))
+ ROMX_LOAD( "ppoms07.bin", 0x000007, 0x020000, CRC(48471c87) SHA1(025fa79993788a0091c4edb83423725abd3a47a2) , ROM_SKIP(7))
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
- ROM_LOAD( "pj_a11.11.e1", 0x000000, 0x020000, CRC(e89bd565) SHA1(6c7c1ad67ba708dbbe9654c1d290af290207d2be) )
+ ROM_LOAD( "ppoms11.bin", 0x000000, 0x020000, CRC(e89bd565) SHA1(6c7c1ad67ba708dbbe9654c1d290af290207d2be) )
ROM_END
ROM_START( pangpomsm )
ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 Code */
- ROM_LOAD16_BYTE( "pa_c_09.9.f7", 0x000000, 0x020000, CRC(e01a7a08) SHA1(1890b290dfb1521ab73b2392409aaf44b99d63bb) )
- ROM_LOAD16_BYTE( "pa_c_10.10.f8", 0x000001, 0x020000, CRC(5e509cee) SHA1(821cfbf5f65cc3091eb8008310266f9f2c838072) )
+ ROM_LOAD16_BYTE( "pa.c09", 0x000000, 0x020000, CRC(e01a7a08) SHA1(1890b290dfb1521ab73b2392409aaf44b99d63bb) )
+ ROM_LOAD16_BYTE( "pa.c10", 0x000001, 0x020000, CRC(5e509cee) SHA1(821cfbf5f65cc3091eb8008310266f9f2c838072) )
ROM_REGION( 0x20000, "audiocpu", 0 ) /* NEC78C10 Code */
- ROM_LOAD( "pj_a12.12.a7", 0x000000, 0x020000, CRC(a749357b) SHA1(1555f565c301c5be7c49fc44a004b5c0cb3777c6) )
+ ROM_LOAD( "ppoms12.bin", 0x000000, 0x020000, CRC(a749357b) SHA1(1555f565c301c5be7c49fc44a004b5c0cb3777c6) )
ROM_REGION( 0x100000, "vdp", 0 ) /* Gfx + Data (Addressable by CPU & Blitter) */
- ROMX_LOAD( "pj_e_02.i7", 0x000000, 0x020000, CRC(88f902f7) SHA1(12ea58d7c000b629ccdceec3dedc2747a63b84be) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_04.i10", 0x000001, 0x020000, CRC(54bf2f10) SHA1(2f0f18984e336f226457295d375a73bcf86cef31) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_06.i13", 0x000002, 0x020000, CRC(c8b6347d) SHA1(7090e44dc7032432795b6fb6bc166bf4de159685) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_08.i16", 0x000003, 0x020000, CRC(9a3408b9) SHA1(924b184d3a47bbe8aa5d41761ea5e94ba7e4f2e9) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_01.i6", 0x000004, 0x020000, CRC(11ac3810) SHA1(6ada82a73d4383f99f5be67369b810a692d27ef9) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_03.i9", 0x000005, 0x020000, CRC(d126e774) SHA1(f782d1e1277956f088dc91dec8f338f85b9af13a) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_05.i12", 0x000006, 0x020000, CRC(79c0ec1e) SHA1(b15582e89d859dda4f82908c62e9e07cb45229b9) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_07.i14", 0x000007, 0x020000, CRC(48471c87) SHA1(025fa79993788a0091c4edb83423725abd3a47a2) , ROM_SKIP(7))
+ ROMX_LOAD( "ppoms02.bin", 0x000000, 0x020000, CRC(88f902f7) SHA1(12ea58d7c000b629ccdceec3dedc2747a63b84be) , ROM_SKIP(7))
+ ROMX_LOAD( "pj.e04", 0x000001, 0x020000, CRC(54bf2f10) SHA1(2f0f18984e336f226457295d375a73bcf86cef31) , ROM_SKIP(7))
+ ROMX_LOAD( "pj.e06", 0x000002, 0x020000, CRC(c8b6347d) SHA1(7090e44dc7032432795b6fb6bc166bf4de159685) , ROM_SKIP(7))
+ ROMX_LOAD( "ppoms08.bin", 0x000003, 0x020000, CRC(9a3408b9) SHA1(924b184d3a47bbe8aa5d41761ea5e94ba7e4f2e9) , ROM_SKIP(7))
+ ROMX_LOAD( "ppoms01.bin", 0x000004, 0x020000, CRC(11ac3810) SHA1(6ada82a73d4383f99f5be67369b810a692d27ef9) , ROM_SKIP(7))
+ ROMX_LOAD( "pj.e03", 0x000005, 0x020000, CRC(d126e774) SHA1(f782d1e1277956f088dc91dec8f338f85b9af13a) , ROM_SKIP(7))
+ ROMX_LOAD( "pj.e05", 0x000006, 0x020000, CRC(79c0ec1e) SHA1(b15582e89d859dda4f82908c62e9e07cb45229b9) , ROM_SKIP(7))
+ ROMX_LOAD( "ppoms07.bin", 0x000007, 0x020000, CRC(48471c87) SHA1(025fa79993788a0091c4edb83423725abd3a47a2) , ROM_SKIP(7))
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
- ROM_LOAD( "pj_a11.11.e1", 0x000000, 0x020000, CRC(e89bd565) SHA1(6c7c1ad67ba708dbbe9654c1d290af290207d2be) )
-ROM_END
-
-ROM_START( pangpomsn )
- ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 Code */
- ROM_LOAD16_BYTE( "pn_e_09.9.f7", 0x000000, 0x020000, CRC(2cc925aa) SHA1(27a09b4b990a867c624207474cb8c55f7d72ce88) )
- ROM_LOAD16_BYTE( "pn_e_10.10.f8", 0x000001, 0x020000, CRC(6d7ad1d2) SHA1(4b6f83f90631fa3eac4d6a3d3ab44760be821f54) )
-
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* NEC78C10 Code */
- ROM_LOAD( "pj_a12.12.a7", 0x000000, 0x020000, CRC(a749357b) SHA1(1555f565c301c5be7c49fc44a004b5c0cb3777c6) )
-
- ROM_REGION( 0x100000, "vdp", 0 ) /* Gfx + Data (Addressable by CPU & Blitter) */
- ROMX_LOAD( "pj_e_02.i7", 0x000000, 0x020000, CRC(88f902f7) SHA1(12ea58d7c000b629ccdceec3dedc2747a63b84be) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_04.i10", 0x000001, 0x020000, CRC(54bf2f10) SHA1(2f0f18984e336f226457295d375a73bcf86cef31) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_06.i13", 0x000002, 0x020000, CRC(c8b6347d) SHA1(7090e44dc7032432795b6fb6bc166bf4de159685) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_08.i16", 0x000003, 0x020000, CRC(9a3408b9) SHA1(924b184d3a47bbe8aa5d41761ea5e94ba7e4f2e9) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_01.i6", 0x000004, 0x020000, CRC(11ac3810) SHA1(6ada82a73d4383f99f5be67369b810a692d27ef9) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_03.i9", 0x000005, 0x020000, CRC(d126e774) SHA1(f782d1e1277956f088dc91dec8f338f85b9af13a) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_05.i12", 0x000006, 0x020000, CRC(79c0ec1e) SHA1(b15582e89d859dda4f82908c62e9e07cb45229b9) , ROM_SKIP(7))
- ROMX_LOAD( "pj_e_07.i14", 0x000007, 0x020000, CRC(48471c87) SHA1(025fa79993788a0091c4edb83423725abd3a47a2) , ROM_SKIP(7))
-
- ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
- ROM_LOAD( "pj_a11.11.e1", 0x000000, 0x020000, CRC(e89bd565) SHA1(6c7c1ad67ba708dbbe9654c1d290af290207d2be) )
+ ROM_LOAD( "ppoms11.bin", 0x000000, 0x020000, CRC(e89bd565) SHA1(6c7c1ad67ba708dbbe9654c1d290af290207d2be) )
ROM_END
@@ -5596,7 +5574,6 @@ GAME( 1992, karatour, 0, karatour, karatour, metro_state, init_karato
GAME( 1992, karatourj, karatour, karatour, karatour, metro_state, init_karatour, ROT0, "Mitchell", "Chatan Yarakuu Shanku - The Karate Tournament (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1992, pangpoms, 0, pangpoms, pangpoms, metro_state, init_metro, ROT0, "Metro", "Pang Pom's", MACHINE_SUPPORTS_SAVE )
GAME( 1992, pangpomsm, pangpoms, pangpoms, pangpoms, metro_state, init_metro, ROT0, "Metro (Mitchell license)", "Pang Pom's (Mitchell)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, pangpomsn, pangpoms, pangpoms, pangpoms, metro_state, init_metro, ROT0, "Nova", "Pang Pom's (Nova)", MACHINE_SUPPORTS_SAVE )
GAME( 1992, skyalert, 0, skyalert, skyalert, metro_state, init_metro, ROT270, "Metro", "Sky Alert", MACHINE_SUPPORTS_SAVE )
GAME( 1993, ladykill, 0, karatour, ladykill, metro_state, init_karatour, ROT90, "Yanyaka (Mitchell license)", "Lady Killer", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1993, moegonta, ladykill, karatour, moegonta, metro_state, init_karatour, ROT90, "Yanyaka", "Moeyo Gonta!! (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/mexico86.cpp b/src/mame/drivers/mexico86.cpp
index 85e1b05bd55..92497781e06 100644
--- a/src/mame/drivers/mexico86.cpp
+++ b/src/mame/drivers/mexico86.cpp
@@ -65,7 +65,7 @@ PS4 J8635 PS4 J8541 PS4 J8648
READ8_MEMBER(mexico86_state::kiki_ym2203_r)
{
- u8 result = m_ymsnd->read(offset);
+ u8 result = m_ymsnd->read(space, offset);
if (offset == 0)
result &= 0x7f;
diff --git a/src/mame/drivers/meyc8080.cpp b/src/mame/drivers/meyc8080.cpp
index 3283f59d41c..eef08d8ddbf 100644
--- a/src/mame/drivers/meyc8080.cpp
+++ b/src/mame/drivers/meyc8080.cpp
@@ -588,29 +588,29 @@ INPUT_PORTS_END
*
*************************************/
-void meyc8080_state::meyc8080(machine_config &config)
-{
+MACHINE_CONFIG_START(meyc8080_state::meyc8080)
+
/* basic machine hardware */
- I8080A(config, m_maincpu, XTAL(20'000'000) / 10); // divider guessed
- m_maincpu->set_addrmap(AS_PROGRAM, &meyc8080_state::meyc8080_map);
+ MCFG_DEVICE_ADD("maincpu", I8080A, XTAL(20'000'000) / 10) // divider guessed
+ MCFG_DEVICE_PROGRAM_MAP(meyc8080_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_size(256, 256);
- screen.set_visarea(0*8, 32*8-1, 4*8, 32*8-1);
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_screen_update(FUNC(meyc8080_state::screen_update_meyc8080));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 32*8-1)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_UPDATE_DRIVER(meyc8080_state, screen_update_meyc8080)
/* audio hardware */
SPEAKER(config, "speaker").front_center();
- DAC_2BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.66); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_2BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.66) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/meyc8088.cpp b/src/mame/drivers/meyc8088.cpp
index 056227e3f3c..11fe7a0df0f 100644
--- a/src/mame/drivers/meyc8088.cpp
+++ b/src/mame/drivers/meyc8088.cpp
@@ -364,11 +364,11 @@ INPUT_PORTS_END
***************************************************************************/
-void meyc8088_state::meyc8088(machine_config &config)
-{
+MACHINE_CONFIG_START(meyc8088_state::meyc8088)
+
/* basic machine hardware */
- I8088(config, m_maincpu, (XTAL(15'000'000) / 3) * 0.95); // NOTE: underclocked to prevent errors on diagnostics, MAME i8088 cycle timing is probably inaccurate
- m_maincpu->set_addrmap(AS_PROGRAM, &meyc8088_state::meyc8088_map);
+ MCFG_DEVICE_ADD(m_maincpu, I8088, (XTAL(15'000'000) / 3) * 0.95) // NOTE: underclocked to prevent errors on diagnostics, MAME i8088 cycle timing is probably inaccurate
+ MCFG_DEVICE_PROGRAM_MAP(meyc8088_map)
i8155_device &i8155_1(I8155(config, "i8155_1", XTAL(15'000'000) / (3*1)));
// all ports set to input
@@ -386,24 +386,24 @@ void meyc8088_state::meyc8088(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TIMER(config, m_heartbeat).configure_generic(FUNC(meyc8088_state::heartbeat_callback));
+ MCFG_TIMER_DRIVER_ADD("heartbeat", meyc8088_state, heartbeat_callback)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(15'000'000)/3, 320, 0, 256, 261, 0, 224);
- screen.set_screen_update(FUNC(meyc8088_state::screen_update));
- screen.screen_vblank().set(FUNC(meyc8088_state::screen_vblank));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(15'000'000)/3, 320, 0, 256, 261, 0, 224)
+ MCFG_SCREEN_UPDATE_DRIVER(meyc8088_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, meyc8088_state, screen_vblank))
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(meyc8088_state::meyc8088_palette), 32);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
ROM_START( gldarrow )
diff --git a/src/mame/drivers/mgames.cpp b/src/mame/drivers/mgames.cpp
index 82e504689fc..f171c7ea4ce 100644
--- a/src/mame/drivers/mgames.cpp
+++ b/src/mame/drivers/mgames.cpp
@@ -23,7 +23,7 @@
FOR AMUSEMENT ONLY.
The ingenious Match Games offers something for everyone. Four captivating themes
- with brilliant graphics, challenging play action, an enticing bonus feature and a
+ with brillant graphics, challenging play action, an enticing bonus feature and a
host of options to tailor the game to any location.
Match Games is today's perfect alternative in adult video skill games...
@@ -36,19 +36,19 @@
and number combinations. Play appeal stays high as new characters are introduced.
"Wild" characters liven the action even more and build special bonus points, co-
- llected on a 5-way number match. The appeal is irresistible... Players stay hoo-
+ llected on a 5-way number match. The appeal is irresistable... Players stay hoo-
ked in for lot more action (and more earnings) for you!.
GAME THEMES:
- Match Games acknowledges every scoring combination by displaying its own special
+ Match Games aknowledges every scoring combination by displaying its own special
name keyed to each game theme.
Every time 2 "Wild" characters pop up together, special bonus symbols appear,
increasing bonus by 5 points.
- * "THE WHITE KNIGHT" features knights in armor with colored plumes and wild
+ * "THE WHITE KNIGHT" features knights in armor with colores plumes and wild
'White Knights'.
* "THE FROG POND" stars colorful and humorous frogs perched on top of mushrooms.
@@ -238,8 +238,6 @@ public:
void mgames(machine_config &config);
private:
- tilemap_t *m_tilemap;
-
DECLARE_READ8_MEMBER(mixport_r);
DECLARE_WRITE8_MEMBER(outport0_w);
DECLARE_WRITE8_MEMBER(outport1_w);
@@ -249,14 +247,12 @@ private:
DECLARE_WRITE8_MEMBER(outport5_w);
DECLARE_WRITE8_MEMBER(outport6_w);
DECLARE_WRITE8_MEMBER(outport7_w);
-
void mgames_palette(palette_device &palette) const;
uint32_t screen_update_mgames(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TILE_GET_INFO_MEMBER(tile_info);
-
void main_map(address_map &map);
- virtual void machine_start() override;
+ virtual void machine_start() override { m_lamps.resolve(); }
+ virtual void video_start() override;
uint8_t m_output[8];
required_shared_ptr<uint8_t> m_video;
@@ -267,40 +263,41 @@ private:
output_finder<9> m_lamps;
};
-TILE_GET_INFO_MEMBER( mgames_state::tile_info )
-{
- uint8_t code = m_video[tile_index];
- uint8_t color = m_video[tile_index + 0x400] & 0x3f;
- SET_TILE_INFO_MEMBER(0, code, color, 0);
-}
-
-void mgames_state::machine_start()
+void mgames_state::video_start()
{
- m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mgames_state::tile_info), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
-
- m_lamps.resolve();
}
uint32_t mgames_state::screen_update_mgames(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- m_tilemap->mark_all_dirty();
- m_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ gfx_element *const gfx = m_gfxdecode->gfx(0);
+ int count = 0;
+ for (int y = 0; y < 32; y++)
+ {
+ for (int x = 0; x < 32; x++)
+ {
+ uint16_t const dat = m_video[count];
+ uint16_t const col = m_video[count + 0x400] & 0x7f;
+ gfx->opaque(bitmap, cliprect, dat, col, 0, 0, x * 16, y * 16);
+ count++;
+ }
+ }
return 0;
}
void mgames_state::mgames_palette(palette_device &palette) const
{
- for (int i = 0; i < 64; i++)
+ for (int i = 0; i < 0x100; i++)
{
- palette.set_indirect_color(i, rgb_t(
- pal2bit((i >> 0) & 3),
- pal2bit((i >> 2) & 3),
- pal2bit((i >> 4) & 3)
- ));
- palette.set_pen_indirect(i * 2 + 0, 0); // all tiles black background
- palette.set_pen_indirect(i * 2 + 1, i);
+ rgb_t color;
+
+ if (i & 0x01)
+ color = rgb_t(pal2bit((i & 0x6) >> 1), pal2bit((i & 0x18) >> 3), pal2bit((i & 0x60) >> 5));
+ else
+ color = rgb_t::black();
+
+ palette.set_pen_color(i, color);
}
}
@@ -625,46 +622,47 @@ static INPUT_PORTS_START( mgames )
INPUT_PORTS_END
-static const gfx_layout gfx_16x16x1 =
+static const gfx_layout tiles16x16_layout =
{
16,16,
RGN_FRAC(1,1),
1,
{ 0 },
- { STEP16(0,1) },
- { STEP16(0,16) },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
+ { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
+ 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16},
16*16
};
static GFXDECODE_START( gfx_mgames )
- GFXDECODE_ENTRY( "gfx1", 0, gfx_16x16x1, 0, 64 )
+ GFXDECODE_ENTRY( "gfx1", 0, tiles16x16_layout, 0, 0x100 )
GFXDECODE_END
-void mgames_state::mgames(machine_config &config)
-{
+MACHINE_CONFIG_START(mgames_state::mgames)
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/6); /* 3 MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &mgames_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(mgames_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,MASTER_CLOCK/6) /* 3 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mgames_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(mgames_state::screen_update_mgames));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mgames_state, screen_update_mgames)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mgames);
- PALETTE(config, m_palette, FUNC(mgames_state::mgames_palette), 128, 64);
+ PALETTE(config, m_palette, FUNC(mgames_state::mgames_palette), 0x200);
/* sound hardware */
// to do...
-}
+
+MACHINE_CONFIG_END
ROM_START( mgames )
diff --git a/src/mame/drivers/mgavegas.cpp b/src/mame/drivers/mgavegas.cpp
index 741f4ec8ce9..2b0fe10a3b8 100644
--- a/src/mame/drivers/mgavegas.cpp
+++ b/src/mame/drivers/mgavegas.cpp
@@ -292,7 +292,7 @@ uint8_t ret=0;
switch (offset&0x03)
{
case 1: //bdir=0 BC1=1
- ret=m_ay->data_r();
+ ret=m_ay->data_r(space,0);
break;
default:
if (LOG_AY8910)
@@ -313,10 +313,10 @@ WRITE8_MEMBER(mgavegas_state::w_a0)
switch (offset&0x03)
{
case 0: //bdir=1 bc1=1
- m_ay->address_w(data);
+ m_ay->address_w(space,0,data );
break;
case 2: //bdir=1 bc1=0
- m_ay->data_w(data);
+ m_ay->data_w(space,0,data );
break;
/*
case 1: //bdir=0 bc1=1
@@ -584,35 +584,41 @@ void mgavegas_state::init_mgavegas133()
* Machine Drivers *
*************************/
-void mgavegas_state::mgavegas(machine_config &config)
-{
+
+MACHINE_CONFIG_START(mgavegas_state::mgavegas)
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLK);
- m_maincpu->set_addrmap(AS_PROGRAM, &mgavegas_state::mgavegas_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLK)
+ MCFG_DEVICE_PROGRAM_MAP(mgavegas_map)
- TIMER(config, "int_0").configure_periodic(FUNC(mgavegas_state::int_0), attotime::from_hz(6000)); //6KHz from MSM5205 /VCK
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("int_0", mgavegas_state, int_0, attotime::from_hz(6000)) //6KHz from MSM5205 /VCK
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- TICKET_DISPENSER(config, "hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+ MCFG_TICKET_DISPENSER_ADD("hopper",attotime::from_msec(200),TICKET_MOTOR_ACTIVE_HIGH,TICKET_STATUS_ACTIVE_LOW);
/* sound hardware */
+
SPEAKER(config, "mono").front_center();
AY8910(config, m_ay, AY_CLK);
m_ay->add_route(ALL_OUTPUTS, "mono", 0.3);
m_ay->port_a_read_callback().set(FUNC(mgavegas_state::ay8910_a_r));
m_ay->port_b_read_callback().set(FUNC(mgavegas_state::ay8910_b_r));
- MSM5205(config, m_msm, MSM_CLK);
- m_msm->set_prescaler_selector(msm5205_device::S64_4B);
- m_msm->add_route(ALL_OUTPUTS, "filter1", 2.0);
+ MCFG_DEVICE_ADD("5205", MSM5205, MSM_CLK)
+ MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter1", 2.0)
+
+
+ MCFG_DEVICE_ADD("filter1", FILTER_RC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter2",2.0)
+ MCFG_DEVICE_ADD("filter2", FILTER_RC)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
- FILTER_RC(config, "filter1").add_route(ALL_OUTPUTS, "filter2", 2.0);
- FILTER_RC(config, "filter2").add_route(ALL_OUTPUTS, "mono", 2.0);
/* Video */
config.set_default_layout(layout_mgavegas);
-}
+
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/mgolf.cpp b/src/mame/drivers/mgolf.cpp
index cc47c4c2c9a..3a496fb7fc6 100644
--- a/src/mame/drivers/mgolf.cpp
+++ b/src/mame/drivers/mgolf.cpp
@@ -368,26 +368,26 @@ void mgolf_state::machine_reset()
}
-void mgolf_state::mgolf(machine_config &config)
-{
+MACHINE_CONFIG_START(mgolf_state::mgolf)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 12096000 / 16); /* ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &mgolf_state::cpu_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, 12096000 / 16) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(cpu_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(256, 262);
- m_screen->set_visarea(0, 255, 0, 223);
- m_screen->set_screen_update(FUNC(mgolf_state::screen_update));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_mgolf);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(256, 262)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 223)
+ MCFG_SCREEN_UPDATE_DRIVER(mgolf_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_mgolf)
PALETTE(config, m_palette, FUNC(mgolf_state::mgolf_palette), 4);
/* sound hardware */
-}
+MACHINE_CONFIG_END
ROM_START( mgolf )
diff --git a/src/mame/drivers/mhavoc.cpp b/src/mame/drivers/mhavoc.cpp
index 21b782f8d69..6cacca4895f 100644
--- a/src/mame/drivers/mhavoc.cpp
+++ b/src/mame/drivers/mhavoc.cpp
@@ -212,7 +212,7 @@ READ8_MEMBER(mhavoc_state::quad_pokeyn_r)
int control = (offset & 0x20) >> 2;
int pokey_reg = (offset & 0x7) | control;
- return m_pokey[pokey_num]->read(pokey_reg);
+ return m_pokey[pokey_num]->read(space, pokey_reg);
}
WRITE8_MEMBER(mhavoc_state::quad_pokeyn_w)
@@ -221,7 +221,7 @@ WRITE8_MEMBER(mhavoc_state::quad_pokeyn_w)
int control = (offset & 0x20) >> 2;
int pokey_reg = (offset & 0x7) | control;
- m_pokey[pokey_num]->write(pokey_reg, data);
+ m_pokey[pokey_num]->write(space, pokey_reg, data);
}
@@ -244,7 +244,7 @@ READ8_MEMBER(mhavoc_state::dual_pokey_r)
int control = (offset & 0x10) >> 1;
int pokey_reg = (offset & 0x7) | control;
- return m_pokey[pokey_num]->read(pokey_reg);
+ return m_pokey[pokey_num]->read(space, pokey_reg);
}
@@ -254,7 +254,7 @@ WRITE8_MEMBER(mhavoc_state::dual_pokey_w)
int control = (offset & 0x10) >> 1;
int pokey_reg = (offset & 0x7) | control;
- m_pokey[pokey_num]->write(pokey_reg, data);
+ m_pokey[pokey_num]->write(space, pokey_reg, data);
}
diff --git a/src/mame/drivers/micral.cpp b/src/mame/drivers/micral.cpp
index 6b1bab57c18..a7575b3d30f 100644
--- a/src/mame/drivers/micral.cpp
+++ b/src/mame/drivers/micral.cpp
@@ -57,7 +57,6 @@ Other things...
#include "screen.h"
#include "speaker.h"
#include "machine/ay31015.h"
-#include "machine/clock.h"
#include "bus/rs232/rs232.h"
@@ -378,28 +377,27 @@ MACHINE_RESET_MEMBER( micral_state, micral )
m_uart->write_cs(0);
}
-void micral_state::micral(machine_config &config)
-{
+MACHINE_CONFIG_START(micral_state::micral)
// basic machine hardware
- Z80(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &micral_state::mem_map);
+ MCFG_DEVICE_ADD( "maincpu", Z80, XTAL(4'000'000) )
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
// no i/o ports on main cpu
- z80_device &keyboard(Z80(config, "keyboard", XTAL(1'000'000))); // freq unknown
- keyboard.set_addrmap(AS_PROGRAM, &micral_state::mem_kbd);
- keyboard.set_addrmap(AS_IO, &micral_state::io_kbd);
+ MCFG_DEVICE_ADD( "keyboard", Z80, XTAL(1'000'000) ) // freq unknown
+ MCFG_DEVICE_PROGRAM_MAP(mem_kbd)
+ MCFG_DEVICE_IO_MAP(io_kbd)
MCFG_MACHINE_RESET_OVERRIDE(micral_state, micral)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(250));
- screen.set_screen_update(FUNC(micral_state::screen_update));
- screen.set_size(640, 240);
- screen.set_visarea(0, 639, 0, 239);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(250))
+ MCFG_SCREEN_UPDATE_DRIVER(micral_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
- //GFXDECODE(config, "gfxdecode", "palette", gfx_micral);
+ //MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_micral)
CRT5037(config, m_crtc, 4000000 / 8); // xtal freq unknown
m_crtc->set_char_width(8); // unknown
@@ -407,19 +405,17 @@ void micral_state::micral(machine_config &config)
m_crtc->set_screen("screen");
/* sound hardware */
- //SPEAKER(config, "mono").front_center();
- //BEEP(config, m_beep, 2000).add_route(ALL_OUTPUTS, "mono", 0.50);
+ //MCFG_SPEAKER_STANDARD_MONO("mono")
+ //MCFG_DEVICE_ADD("beeper", BEEP, 2000)
+ //MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
AY31015(config, m_uart); // CDP6402
+ m_uart->set_tx_clock(153600);
+ m_uart->set_rx_clock(153600);
m_uart->read_si_callback().set("rs232", FUNC(rs232_port_device::rxd_r));
m_uart->write_so_callback().set("rs232", FUNC(rs232_port_device::write_txd));
-
- clock_device &uart_clock(CLOCK(config, "uart_clock", 153600));
- uart_clock.signal_handler().set(m_uart, FUNC(ay31015_device::write_tcp));
- uart_clock.signal_handler().append(m_uart, FUNC(ay31015_device::write_rcp));
-
RS232_PORT(config, "rs232", default_rs232_devices, "keyboard");
-}
+MACHINE_CONFIG_END
ROM_START( micral )
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/micro20.cpp b/src/mame/drivers/micro20.cpp
index e08b9ec4ca3..fc0667db97a 100644
--- a/src/mame/drivers/micro20.cpp
+++ b/src/mame/drivers/micro20.cpp
@@ -165,20 +165,19 @@ static DEVICE_INPUT_DEFAULTS_START( terminal )
DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 )
DEVICE_INPUT_DEFAULTS_END
-void micro20_state::micro20(machine_config &config)
-{
+MACHINE_CONFIG_START(micro20_state::micro20)
/* basic machine hardware */
- M68020(config, m_maincpu, 16.67_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &micro20_state::micro20_map);
+ MCFG_DEVICE_ADD(MAINCPU_TAG, M68020, 16.67_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(micro20_map)
- mc68681_device &duart_a(MC68681(config, DUART_A_TAG, 3.6864_MHz_XTAL));
- duart_a.a_tx_cb().set("rs232", FUNC(rs232_port_device::write_txd));
+ MCFG_DEVICE_ADD(DUART_A_TAG, MC68681, 3.6864_MHz_XTAL)
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE("rs232", rs232_port_device, write_txd))
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
rs232.rxd_handler().set(DUART_A_TAG, FUNC(mc68681_device::rx_a_w));
rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
- MC68681(config, DUART_B_TAG, 3.6864_MHz_XTAL);
+ MCFG_DEVICE_ADD(DUART_B_TAG, MC68681, 3.6864_MHz_XTAL)
WD1772(config, FDC_TAG, 16.67_MHz_XTAL / 2);
@@ -188,16 +187,16 @@ void micro20_state::micro20(machine_config &config)
m_pit->pb_out_callback().set(FUNC(micro20_state::portb_w));
m_pit->pc_out_callback().set(FUNC(micro20_state::portc_w));
- MSM58321(config, m_rtc, 32768_Hz_XTAL);
- m_rtc->set_default_24h(false);
- m_rtc->d0_handler().set(m_pit, FUNC(pit68230_device::pb0_w));
- m_rtc->d1_handler().set(m_pit, FUNC(pit68230_device::pb1_w));
- m_rtc->d2_handler().set(m_pit, FUNC(pit68230_device::pb2_w));
- m_rtc->d3_handler().set(m_pit, FUNC(pit68230_device::pb3_w));
- m_rtc->busy_handler().set(m_pit, FUNC(pit68230_device::pb7_w));
+ MCFG_DEVICE_ADD(RTC_TAG, MSM58321, 32.768_kHz_XTAL)
+ MCFG_MSM58321_DEFAULT_24H(false)
+ MCFG_MSM58321_D0_HANDLER(WRITELINE(PIT_TAG, pit68230_device, pb0_w))
+ MCFG_MSM58321_D1_HANDLER(WRITELINE(PIT_TAG, pit68230_device, pb1_w))
+ MCFG_MSM58321_D2_HANDLER(WRITELINE(PIT_TAG, pit68230_device, pb2_w))
+ MCFG_MSM58321_D3_HANDLER(WRITELINE(PIT_TAG, pit68230_device, pb3_w))
+ MCFG_MSM58321_BUSY_HANDLER(WRITELINE(PIT_TAG, pit68230_device, pb7_w))
- TIMER(config, "timer").configure_periodic(FUNC(micro20_state::micro20_timer), attotime::from_hz(200));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer", micro20_state, micro20_timer, attotime::from_hz(200))
+MACHINE_CONFIG_END
static INPUT_PORTS_START( micro20 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/micro3d.cpp b/src/mame/drivers/micro3d.cpp
index 22e780fed92..6a322a88043 100644
--- a/src/mame/drivers/micro3d.cpp
+++ b/src/mame/drivers/micro3d.cpp
@@ -240,6 +240,7 @@ void micro3d_state::vgbmem(address_map &map)
map(0x02e00000, 0x02e0003f).w(FUNC(micro3d_state::vgb_uart_w)).umask16(0x00ff);
map(0x03800000, 0x03dfffff).rom().region("tms_gfx", 0);
map(0x03e00000, 0x03ffffff).rom().region("tms34010", 0);
+ map(0xc0000000, 0xc00001ff).rw(m_vgb, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xffe00000, 0xffffffff).rom().region("tms34010", 0);
}
@@ -298,11 +299,11 @@ void micro3d_state::soundmem_io(address_map &map)
*
*************************************/
-void micro3d_state::micro3d(machine_config &config)
-{
- M68000(config, m_maincpu, 32_MHz_XTAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &micro3d_state::hostmem);
- m_maincpu->set_vblank_int("screen", FUNC(micro3d_state::micro3d_vblank));
+MACHINE_CONFIG_START(micro3d_state::micro3d)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 32_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(hostmem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", micro3d_state, micro3d_vblank)
TMS34010(config, m_vgb, 40_MHz_XTAL);
m_vgb->set_addrmap(AS_PROGRAM, &micro3d_state::vgbmem);
@@ -313,9 +314,9 @@ void micro3d_state::micro3d(machine_config &config)
m_vgb->output_int().set(FUNC(micro3d_state::tms_interrupt));
m_vgb->set_screen("screen");
- AM29000(config, m_drmath, 32_MHz_XTAL / 2);
- m_drmath->set_addrmap(AS_PROGRAM, &micro3d_state::drmath_prg);
- m_drmath->set_addrmap(AS_DATA, &micro3d_state::drmath_data);
+ MCFG_DEVICE_ADD("drmath", AM29000, 32_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(drmath_prg)
+ MCFG_DEVICE_DATA_MAP(drmath_data)
scc8530_device &scc(SCC8530N(config, "scc", 32_MHz_XTAL / 2 / 2));
scc.out_txdb_callback().set("monitor_drmath", FUNC(rs232_port_device::write_txd));
@@ -330,12 +331,12 @@ void micro3d_state::micro3d(machine_config &config)
m_audiocpu->serial_tx_cb().set(FUNC(micro3d_state::data_from_i8031));
m_audiocpu->serial_rx_cb().set(FUNC(micro3d_state::data_to_i8031));
- MC68681(config, m_duart, 3.6864_MHz_XTAL);
- m_duart->irq_cb().set(FUNC(micro3d_state::duart_irq_handler));
- m_duart->a_tx_cb().set("monitor_host", FUNC(rs232_port_device::write_txd));
- m_duart->b_tx_cb().set(FUNC(micro3d_state::duart_txb));
- m_duart->inport_cb().set(FUNC(micro3d_state::duart_input_r));
- m_duart->outport_cb().set(FUNC(micro3d_state::duart_output_w));
+ MCFG_DEVICE_ADD("duart", MC68681, 3.6864_MHz_XTAL)
+ MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, micro3d_state, duart_irq_handler))
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE("monitor_host", rs232_port_device, write_txd))
+ MCFG_MC68681_B_TX_CALLBACK(WRITELINE(*this, micro3d_state, duart_txb))
+ MCFG_MC68681_INPORT_CALLBACK(READ8(*this, micro3d_state, duart_input_r))
+ MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, micro3d_state, duart_output_w))
mc68901_device &mfp(MC68901(config, "mfp", 4000000));
mfp.set_timer_clock(4000000);
@@ -347,14 +348,14 @@ void micro3d_state::micro3d(machine_config &config)
mfp.out_tco_cb().set("mfp", FUNC(mc68901_device::tbi_w));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- config.m_minimum_quantum = attotime::from_hz(3000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(3000))
PALETTE(config, m_palette).set_format(palette_device::BRGx_555, 4096);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(40_MHz_XTAL/8*4, 192*4, 0, 144*4, 434, 0, 400);
- screen.set_screen_update("vgb", FUNC(tms34010_device::tms340x0_ind16));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(40_MHz_XTAL/8*4, 192*4, 0, 144*4, 434, 0, 400)
+ MCFG_SCREEN_UPDATE_DEVICE("vgb", tms34010_device, tms340x0_ind16)
+ MCFG_SCREEN_PALETTE(m_palette)
MC2661(config, m_vgb_uart, 40_MHz_XTAL / 8); // actually SCN2651
m_vgb_uart->txd_handler().set("monitor_vgb", FUNC(rs232_port_device::write_txd));
@@ -393,7 +394,7 @@ void micro3d_state::micro3d(machine_config &config)
MICRO3D_SOUND(config, m_noise_2);
m_noise_2->add_route(0, "lspeaker", 1.0);
m_noise_2->add_route(1, "rspeaker", 1.0);
-}
+MACHINE_CONFIG_END
void micro3d_state::botss11(machine_config &config)
{
@@ -465,10 +466,10 @@ ROM_END
ROM_START( f15se21 )
/* Host PCB (MPG DW-00011C-0011-01) */
ROM_REGION( 0x180000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "110-00001-500.u67", 0x000001, 0x20000, CRC(6c26806d) SHA1(7cfd2b3b92b0fc6627c92a2013a317ca5abc66a0) )
- ROM_LOAD16_BYTE( "110-00001-501.u91", 0x000000, 0x20000, CRC(81f02bf7) SHA1(09976746fe4d9c88bd8840f6e7addb09226aa54b) )
- ROM_LOAD16_BYTE( "110-00001-502.u68", 0x040001, 0x20000, CRC(1eb945e5) SHA1(aba3ff038f2ca0f1200be5710073825ce80e3656) )
- ROM_LOAD16_BYTE( "110-00001-503.u92", 0x040000, 0x20000, CRC(21fcb974) SHA1(56f78ce652e2bf432fbba8cda8c800f02dad84bb) )
+ ROM_LOAD16_BYTE( "500.hst", 0x000001, 0x20000, CRC(6c26806d) SHA1(7cfd2b3b92b0fc6627c92a2013a317ca5abc66a0) )
+ ROM_LOAD16_BYTE( "501.hst", 0x000000, 0x20000, CRC(81f02bf7) SHA1(09976746fe4d9c88bd8840f6e7addb09226aa54b) )
+ ROM_LOAD16_BYTE( "502.hst", 0x040001, 0x20000, CRC(1eb945e5) SHA1(aba3ff038f2ca0f1200be5710073825ce80e3656) )
+ ROM_LOAD16_BYTE( "503.hst", 0x040000, 0x20000, CRC(21fcb974) SHA1(56f78ce652e2bf432fbba8cda8c800f02dad84bb) )
ROM_LOAD16_BYTE( "004.hst", 0x080001, 0x20000, CRC(81671ce1) SHA1(51ff641ccbc9dea640a62944910abe73d796b062) )
ROM_LOAD16_BYTE( "005.hst", 0x080000, 0x20000, CRC(bdaa7db5) SHA1(52cd832cdd44e609e8cd269469b806e2cd27d63d) )
diff --git a/src/mame/drivers/microkit.cpp b/src/mame/drivers/microkit.cpp
index c57c2ceb475..5ae46c8736f 100644
--- a/src/mame/drivers/microkit.cpp
+++ b/src/mame/drivers/microkit.cpp
@@ -101,7 +101,7 @@ WRITE8_MEMBER( microkit_state::ram_w )
{
m_ram_data = data;
if (data > 0 && data < 0x80)
- m_terminal->write(data);
+ m_terminal->write(space, 0, data);
}
void microkit_state::machine_reset()
diff --git a/src/mame/drivers/micromon.cpp b/src/mame/drivers/micromon.cpp
deleted file mode 100644
index 6d38665db7b..00000000000
--- a/src/mame/drivers/micromon.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Robbbert
-/*
-
-Micromon 7141 ECG unit for hospitals.
-
-No manuals or schematic found.
-
-From the photos, we can see a CDP1802ACE CPU, 2.4576 crystal,
-a GM76C28A-10 2Kx8 static RAM (like 6116), 2 ROMS and a bunch of small chips.
-There's also 4 dipswitches in a single package. 1=on,2=off,3=off,4=on.
-The unit has an audible alarm, presumably a speaker, but it doesn't appear in any photo.
-
-The front panel has a CRT display (looks like cyan on black), some buttons with unknown
-symbols, a 5-position rotary switch, a plug for the ECG device, a socket called "Sync"
-and some LEDs.
-
-Date of manufacture unknown, however the chips have date codes of 1994 and 1995.
-
-*****************************************************************************************/
-
-#include "emu.h"
-#include "cpu/cosmac/cosmac.h"
-
-
-class micromon_state : public driver_device
-{
-public:
- micromon_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- { }
-
- void micromon(machine_config &config);
-
-private:
- DECLARE_READ_LINE_MEMBER(clear_r);
-
- void micromon_io(address_map &map);
- void micromon_mem(address_map &map);
-
- virtual void machine_reset() override;
- uint8_t m_resetcnt;
- required_device<cosmac_device> m_maincpu;
-};
-
-void micromon_state::micromon_mem(address_map &map)
-{
- map(0x0000, 0x1fff).rom().region("maincpu", 0);
- map(0x2000, 0x3fff).ram();
-}
-
-void micromon_state::micromon_io(address_map &map)
-{
-}
-
-static INPUT_PORTS_START( micromon )
-INPUT_PORTS_END
-
-READ_LINE_MEMBER( micromon_state::clear_r )
-{
- if (m_resetcnt < 0x10)
- m_maincpu->set_state_int(cosmac_device::COSMAC_R0, 0x0000);
- if (m_resetcnt < 0x20)
- m_resetcnt++;
- // set reset pin to normal
- return 1;
-}
-
-void micromon_state::machine_reset()
-{
- m_resetcnt = 0;
-}
-
-
-void micromon_state::micromon(machine_config &config)
-{
- // basic machine hardware
- CDP1802(config, m_maincpu, 2457600);
- m_maincpu->set_addrmap(AS_PROGRAM, &micromon_state::micromon_mem);
- m_maincpu->set_addrmap(AS_IO, &micromon_state::micromon_io);
- m_maincpu->wait_cb().set_constant(1);
- m_maincpu->clear_cb().set(FUNC(micromon_state::clear_r));
-
- // video hardware
-
- // sound
-}
-
-ROM_START( micromon7141 )
- ROM_REGION( 0x2000, "maincpu", 0 )
- ROM_LOAD( "721421_rev4.0_25_7_95.ic2", 0x0000, 0x1000, CRC(b2a26439) SHA1(66a65d19b3cff185e82b10fc7ecb965c51751b7c) )
- ROM_LOAD( "702423_rev4.0_25_7_95.ic41", 0x1000, 0x1000, CRC(5efe6b4b) SHA1(b3670c53e2527e824cc22e4a54db9abf5a07239f) )
-ROM_END
-
-SYST( 1995?, micromon7141, 0, 0, micromon, micromon, micromon_state, empty_init, "Kontron Instruments", "Micromon 7141 ECG unit", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/micronic.cpp b/src/mame/drivers/micronic.cpp
index 80789ee722a..0a89a68fb01 100644
--- a/src/mame/drivers/micronic.cpp
+++ b/src/mame/drivers/micronic.cpp
@@ -200,17 +200,17 @@ WRITE8_MEMBER( micronic_state::port_2c_w )
WRITE8_MEMBER( micronic_state::rtc_address_w )
{
- m_rtc->write(0, data);
+ m_rtc->write(space, 0, data);
}
READ8_MEMBER( micronic_state::rtc_data_r )
{
- return m_rtc->read(1);
+ return m_rtc->read(space, 1);
}
WRITE8_MEMBER( micronic_state::rtc_data_w )
{
- m_rtc->write(1, data);
+ m_rtc->write(space, 1, data);
}
/***************************************************************************
@@ -349,24 +349,23 @@ WRITE_LINE_MEMBER( micronic_state::mc146818_irq )
}
-void micronic_state::micronic(machine_config &config)
-{
+MACHINE_CONFIG_START(micronic_state::micronic)
/* basic machine hardware */
- Z80(config, m_maincpu, 3.579545_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &micronic_state::micronic_mem);
- m_maincpu->set_addrmap(AS_IO, &micronic_state::micronic_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, 3.579545_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(micronic_mem)
+ MCFG_DEVICE_IO_MAP(micronic_io)
/* video hardware */
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_LCD));
- screen.set_refresh_hz(80);
- screen.set_screen_update(HD61830_TAG, FUNC(hd61830_device::screen_update));
- screen.set_size(120, 64); //6x20, 8x8
- screen.set_visarea(0, 120-1, 0, 64-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD(SCREEN_TAG, LCD)
+ MCFG_SCREEN_REFRESH_RATE(80)
+ MCFG_SCREEN_UPDATE_DEVICE(HD61830_TAG, hd61830_device, screen_update)
+ MCFG_SCREEN_SIZE(120, 64) //6x20, 8x8
+ MCFG_SCREEN_VISIBLE_AREA(0, 120-1, 0, 64-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(micronic_state::micronic_palette), 2);
- HD61830(config, m_lcdc, 4.9152_MHz_XTAL / 2 / 2);
+ MCFG_DEVICE_ADD(HD61830_TAG, HD61830, 4.9152_MHz_XTAL / 2 / 2)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -380,7 +379,7 @@ void micronic_state::micronic(machine_config &config)
MC146818(config, m_rtc, 32.768_kHz_XTAL);
m_rtc->irq().set(FUNC(micronic_state::mc146818_irq));
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( micronic )
diff --git a/src/mame/drivers/micropin.cpp b/src/mame/drivers/micropin.cpp
index 19f3aff32c7..c0c01f897e5 100644
--- a/src/mame/drivers/micropin.cpp
+++ b/src/mame/drivers/micropin.cpp
@@ -177,12 +177,12 @@ INPUT_PORTS_END
READ8_MEMBER( micropin_state::pia51_r )
{
- return m_pia51->read(offset) ^ 0xff;
+ return m_pia51->read(space, offset) ^ 0xff;
}
WRITE8_MEMBER( micropin_state::pia51_w )
{
- m_pia51->write(offset, data ^ 0xff);
+ m_pia51->write(space, offset, data ^ 0xff);
}
// lamps and disp strobes
@@ -298,12 +298,11 @@ void micropin_state::init_micropin()
{
}
-void micropin_state::micropin(machine_config &config)
-{
+MACHINE_CONFIG_START(micropin_state::micropin)
/* basic machine hardware */
- M6800(config, m_v1cpu, XTAL(2'000'000) / 2);
- m_v1cpu->set_addrmap(AS_PROGRAM, &micropin_state::micropin_map);
- m_v1cpu->set_periodic_int(FUNC(micropin_state::irq0_line_hold), attotime::from_hz(500));
+ MCFG_DEVICE_ADD("v1cpu", M6800, XTAL(2'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(micropin_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(micropin_state, irq0_line_hold, 500)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -313,7 +312,8 @@ void micropin_state::micropin(machine_config &config)
/* Sound */
genpin_audio(config);
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beep, 387).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("beeper", BEEP, 387)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
pia6821_device &pia50(PIA6821(config, "pia50", 0));
@@ -332,22 +332,21 @@ void micropin_state::micropin(machine_config &config)
//m_pia51->ca2_handler().set(FUNC(micropin_state::p51ca2_w));
//m_pia51->cb2_handler().set(FUNC(micropin_state::p51cb2_w));
- TIMER(config, "timer_a").configure_periodic(FUNC(micropin_state::timer_a), attotime::from_hz(100));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_a", micropin_state, timer_a, attotime::from_hz(100))
+MACHINE_CONFIG_END
-void micropin_state::pentacup2(machine_config &config)
-{
+MACHINE_CONFIG_START(micropin_state::pentacup2)
/* basic machine hardware */
- I8085A(config, m_v2cpu, 2000000);
- m_v2cpu->set_addrmap(AS_PROGRAM, &micropin_state::pentacup2_map);
- m_v2cpu->set_addrmap(AS_IO, &micropin_state::pentacup2_io);
- //m_v2cpu->set_periodic_int(FUNC(micropin_state::irq2_line_hold), attotime::from_hz(50));
+ MCFG_DEVICE_ADD("v2cpu", I8085A, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(pentacup2_map)
+ MCFG_DEVICE_IO_MAP(pentacup2_io)
+ //MCFG_DEVICE_PERIODIC_INT_DRIVER(micropin_state, irq2_line_hold, 50)
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* Sound */
genpin_audio(config);
-}
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
/ Pentacup
diff --git a/src/mame/drivers/microtan.cpp b/src/mame/drivers/microtan.cpp
index 4366447ff27..16405bfab22 100644
--- a/src/mame/drivers/microtan.cpp
+++ b/src/mame/drivers/microtan.cpp
@@ -209,23 +209,23 @@ GFXDECODE_END
MACHINE_CONFIG_START(microtan_state::microtan)
/* basic machine hardware */
- M6502(config, m_maincpu, 6_MHz_XTAL / 8); // 750 kHz
- m_maincpu->set_addrmap(AS_PROGRAM, &microtan_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(microtan_state::interrupt));
+ MCFG_DEVICE_ADD(m_maincpu, M6502, 6_MHz_XTAL / 8) // 750 kHz
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", microtan_state, interrupt)
// The 6502 IRQ line is active low and probably driven by open collector outputs (guess).
INPUT_MERGER_ANY_HIGH(config, m_irq_line).output_handler().set_inputline(m_maincpu, 0);
/* video hardware - include overscan */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(32*8, 16*16);
- screen.set_visarea(0*8, 32*8-1, 0*16, 16*16-1);
- screen.set_screen_update(FUNC(microtan_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(32*8, 16*16)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*16, 16*16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(microtan_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, "palette", gfx_microtan);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_microtan)
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -236,11 +236,11 @@ MACHINE_CONFIG_START(microtan_state::microtan)
AY8910(config, m_ay8910[1], 1000000).add_route(ALL_OUTPUTS, "speaker", 0.5);
/* snapshot/quickload */
- MCFG_SNAPSHOT_ADD("snapshot", microtan_state, microtan, "m65", attotime::from_msec(500))
- MCFG_QUICKLOAD_ADD("quickload", microtan_state, microtan, "hex", attotime::from_msec(500))
+ MCFG_SNAPSHOT_ADD("snapshot", microtan_state, microtan, "m65", 0.5)
+ MCFG_QUICKLOAD_ADD("quickload", microtan_state, microtan, "hex", 0.5)
/* cassette */
- CASSETTE(config, m_cassette);
+ MCFG_CASSETTE_ADD( m_cassette )
/* acia */
mos6551_device &acia(MOS6551(config, "acia", 0));
@@ -255,7 +255,7 @@ MACHINE_CONFIG_START(microtan_state::microtan)
m_via6522[0]->cb2_handler().set(FUNC(microtan_state::via_0_out_cb2));
m_via6522[0]->irq_handler().set(m_irq_line, FUNC(input_merger_device::in_w<IRQ_VIA_0>));
- VIA6522(config, m_via6522[1], 6_MHz_XTAL / 8);
+ MCFG_DEVICE_ADD(m_via6522[1], VIA6522, 6_MHz_XTAL / 8)
m_via6522[1]->writepa_handler().set(FUNC(microtan_state::via_1_out_a));
m_via6522[1]->writepb_handler().set(FUNC(microtan_state::via_1_out_b));
m_via6522[1]->ca2_handler().set(FUNC(microtan_state::via_1_out_ca2));
diff --git a/src/mame/drivers/microvsn.cpp b/src/mame/drivers/microvsn.cpp
index 859749f43bc..5763dd39e11 100644
--- a/src/mame/drivers/microvsn.cpp
+++ b/src/mame/drivers/microvsn.cpp
@@ -647,32 +647,31 @@ MACHINE_CONFIG_START(microvision_state::microvision)
m_tms1100->o().set(FUNC(microvision_state::tms1100_write_o));
m_tms1100->r().set(FUNC(microvision_state::tms1100_write_r));
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(0)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(0);
- screen.set_screen_update(FUNC(microvision_state::screen_update));
- screen.screen_vblank().set(FUNC(microvision_state::screen_vblank));
- screen.set_size(16, 16);
- screen.set_visarea(0, 15, 0, 15);
- screen.set_palette("palette");
+ MCFG_SCREEN_UPDATE_DRIVER(microvision_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, microvision_state, screen_vblank))
+ MCFG_SCREEN_SIZE(16, 16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 15, 0, 15)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(microvision_state::microvision_palette), 16);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_2BIT_BINARY_WEIGHTED_ONES_COMPLEMENT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_2BIT_BINARY_WEIGHTED_ONES_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "microvision_cart")
MCFG_GENERIC_MANDATORY
MCFG_GENERIC_LOAD(microvision_state, microvsn_cart)
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("microvision");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","microvision")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/midas.cpp b/src/mame/drivers/midas.cpp
index 1120a125a73..199a91a4c57 100644
--- a/src/mame/drivers/midas.cpp
+++ b/src/mame/drivers/midas.cpp
@@ -55,8 +55,6 @@
#include "includes/neogeo.h"
#include "cpu/m68000/m68000.h"
-#include "cpu/mcs51/mcs51.h"
-#include "cpu/pic16c5x/pic16c5x.h"
#include "sound/ymz280b.h"
#include "machine/eepromser.h"
#include "machine/ticket.h"
@@ -77,8 +75,7 @@ public:
m_screen(*this, "screen"),
m_prize(*this, "prize%u", 1),
m_ticket(*this, "ticket"),
- m_zoomram(*this, "zoomtable"),
- m_zoomtable(*this, "spritegen:zoomy")
+ m_zoomram(*this, "zoomtable")
{ }
void hammer(machine_config &config);
@@ -93,15 +90,15 @@ protected:
private:
DECLARE_READ16_MEMBER(ret_ffff);
- DECLARE_WRITE16_MEMBER(gfxregs_w);
- DECLARE_WRITE8_MEMBER(livequiz_coin_w);
+ DECLARE_WRITE16_MEMBER(midas_gfxregs_w);
+ DECLARE_WRITE16_MEMBER(livequiz_coin_w);
DECLARE_READ16_MEMBER(hammer_sensor_r);
- DECLARE_WRITE8_MEMBER(hammer_coin_w);
- DECLARE_WRITE8_MEMBER(hammer_motor_w);
- DECLARE_WRITE8_MEMBER(eeprom_w);
- DECLARE_WRITE16_MEMBER(zoomtable_w);
+ DECLARE_WRITE16_MEMBER(hammer_coin_w);
+ DECLARE_WRITE16_MEMBER(hammer_motor_w);
+ DECLARE_WRITE16_MEMBER(midas_eeprom_w);
+ DECLARE_WRITE16_MEMBER(midas_zoomtable_w);
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update_midas(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<eeprom_serial_93cxx_device> m_eeprom;
required_device<gfxdecode_device> m_gfxdecode;
@@ -111,9 +108,8 @@ private:
optional_device_array<ticket_dispenser_device, 2> m_prize;
optional_device<ticket_dispenser_device> m_ticket;
required_shared_ptr<uint16_t> m_zoomram;
- required_region_ptr<uint8_t> m_zoomtable;
- DECLARE_WRITE_LINE_MEMBER(screen_vblank);
+ DECLARE_WRITE_LINE_MEMBER(screen_vblank_midas);
void hammer_map(address_map &map);
void livequiz_map(address_map &map);
@@ -126,7 +122,7 @@ void midas_state::video_start()
{
}
-uint32_t midas_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+uint32_t midas_state::screen_update_midas(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
// fill with background color first
bitmap.fill(0x0, cliprect);
@@ -138,16 +134,19 @@ uint32_t midas_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
return 0;
}
-WRITE8_MEMBER(midas_state::eeprom_w)
+WRITE16_MEMBER(midas_state::midas_eeprom_w)
{
- // latch the bit
- m_eeprom->di_write((data & 0x04) >> 2);
+ if (ACCESSING_BITS_0_7)
+ {
+ // latch the bit
+ m_eeprom->di_write((data & 0x04) >> 2);
- // reset line asserted: reset.
- m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE );
+ // reset line asserted: reset.
+ m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE );
- // clock line asserted: write latch or select next bit to read
- m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
+ // clock line asserted: write latch or select next bit to read
+ m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
+ }
}
READ16_MEMBER(midas_state::ret_ffff)
@@ -155,7 +154,7 @@ READ16_MEMBER(midas_state::ret_ffff)
return 0xffff;
}
-WRITE16_MEMBER(midas_state::gfxregs_w)
+WRITE16_MEMBER(midas_state::midas_gfxregs_w)
{
/* accessing the LSB only is not mapped */
if (mem_mask != 0x00ff)
@@ -173,14 +172,15 @@ WRITE16_MEMBER(midas_state::gfxregs_w)
}
}
-WRITE16_MEMBER(midas_state::zoomtable_w)
+WRITE16_MEMBER(midas_state::midas_zoomtable_w)
{
COMBINE_DATA(&m_zoomram[offset]);
+ uint8_t *rgn = memregion("zoomy")->base();
if (ACCESSING_BITS_0_7)
{
- m_zoomtable[offset+0x00000] = data & 0xff;
- m_zoomtable[offset+0x10000] = data & 0xff;
+ rgn[offset+0x00000] = data & 0xff;
+ rgn[offset+0x10000] = data & 0xff;
}
}
@@ -188,9 +188,12 @@ WRITE16_MEMBER(midas_state::zoomtable_w)
Live Quiz Show
***************************************************************************************/
-WRITE8_MEMBER(midas_state::livequiz_coin_w)
+WRITE16_MEMBER(midas_state::livequiz_coin_w)
{
- machine().bookkeeping().coin_counter_w(0, data & 0x0001);
+ if (ACCESSING_BITS_0_7)
+ {
+ machine().bookkeeping().coin_counter_w(0, data & 0x0001);
+ }
#ifdef MAME_DEBUG
// popmessage("coin %04X", data);
#endif
@@ -205,11 +208,11 @@ void midas_state::livequiz_map(address_map &map)
map(0x940000, 0x940001).portr("PLAYER2");
map(0x980000, 0x980001).portr("START");
- map(0x980001, 0x980001).w(FUNC(midas_state::livequiz_coin_w));
+ map(0x980000, 0x980001).w(FUNC(midas_state::livequiz_coin_w));
- map(0x9a0001, 0x9a0001).w(FUNC(midas_state::eeprom_w));
+ map(0x9a0000, 0x9a0001).w(FUNC(midas_state::midas_eeprom_w));
- map(0x9c0000, 0x9c0005).w(FUNC(midas_state::gfxregs_w));
+ map(0x9c0000, 0x9c0005).w(FUNC(midas_state::midas_gfxregs_w));
map(0x9c000c, 0x9c000d).nopw(); // IRQ Ack, temporary
map(0xa00000, 0xa3ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
@@ -225,7 +228,7 @@ void midas_state::livequiz_map(address_map &map)
map(0xba0000, 0xba0001).portr("START3");
map(0xbc0000, 0xbc0001).portr("PLAYER3");
- map(0xd00000, 0xd1ffff).ram().w(FUNC(midas_state::zoomtable_w)).share("zoomtable"); // zoom table?
+ map(0xd00000, 0xd1ffff).ram().w(FUNC(midas_state::midas_zoomtable_w)).share("zoomtable"); // zoom table?
map(0xe00000, 0xe3ffff).ram();
}
@@ -242,21 +245,27 @@ READ16_MEMBER(midas_state::hammer_sensor_r)
return (ioport("SENSORY")->read() << 8) | ioport("SENSORX")->read();
}
-WRITE8_MEMBER(midas_state::hammer_coin_w)
+WRITE16_MEMBER(midas_state::hammer_coin_w)
{
- machine().bookkeeping().coin_counter_w(0, BIT(data, 0));
- machine().bookkeeping().coin_counter_w(1, BIT(data, 1));
+ if (ACCESSING_BITS_0_7)
+ {
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 0));
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 1));
+ }
#ifdef MAME_DEBUG
// popmessage("coin %04X", data);
#endif
}
-WRITE8_MEMBER(midas_state::hammer_motor_w)
+WRITE16_MEMBER(midas_state::hammer_motor_w)
{
- m_prize[0]->motor_w(BIT(data, 0));
- m_prize[1]->motor_w(BIT(data, 1));
- m_ticket->motor_w(BIT(data, 4));
- // data & 0x0080 ?
+ if (ACCESSING_BITS_0_7)
+ {
+ m_prize[0]->motor_w(BIT(data, 0));
+ m_prize[1]->motor_w(BIT(data, 1));
+ m_ticket->motor_w(BIT(data, 4));
+ // data & 0x0080 ?
+ }
#ifdef MAME_DEBUG
// popmessage("motor %04X", data);
#endif
@@ -271,11 +280,11 @@ void midas_state::hammer_map(address_map &map)
map(0x940000, 0x940001).portr("IN0");
map(0x980000, 0x980001).portr("TILT");
- map(0x980001, 0x980001).w(FUNC(midas_state::hammer_coin_w));
+ map(0x980000, 0x980001).w(FUNC(midas_state::hammer_coin_w));
- map(0x9a0001, 0x9a0001).w(FUNC(midas_state::eeprom_w));
+ map(0x9a0000, 0x9a0001).w(FUNC(midas_state::midas_eeprom_w));
- map(0x9c0000, 0x9c0005).w(FUNC(midas_state::gfxregs_w));
+ map(0x9c0000, 0x9c0005).w(FUNC(midas_state::midas_gfxregs_w));
map(0x9c000c, 0x9c000d).nopw(); // IRQ Ack, temporary
map(0xa00000, 0xa3ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
@@ -291,11 +300,11 @@ void midas_state::hammer_map(address_map &map)
map(0xba0000, 0xba0001).portr("IN1");
map(0xbc0000, 0xbc0001).portr("HAMMER");
- map(0xbc0003, 0xbc0003).w(FUNC(midas_state::hammer_motor_w));
+ map(0xbc0002, 0xbc0003).w(FUNC(midas_state::hammer_motor_w));
map(0xbc0004, 0xbc0005).r(FUNC(midas_state::hammer_sensor_r));
- map(0xd00000, 0xd1ffff).ram().w(FUNC(midas_state::zoomtable_w)).share("zoomtable"); // zoom table?
+ map(0xd00000, 0xd1ffff).ram().w(FUNC(midas_state::midas_zoomtable_w)).share("zoomtable"); // zoom table?
map(0xe00000, 0xe3ffff).ram();
}
@@ -605,6 +614,7 @@ INPUT_PORTS_END
void midas_state::machine_start()
{
m_sprgen->set_pens(m_palette->pens());
+ m_sprgen->set_screen(m_screen);
m_sprgen->set_sprite_region(memregion("sprites")->base(), memregion("sprites")->bytes());
m_sprgen->set_fixed_regions(memregion("tiles")->base(), memregion("tiles")->bytes(), memregion("tiles"));
m_sprgen->neogeo_set_fixed_layer_source(0); // temporary: ensure banking is disabled
@@ -614,35 +624,29 @@ void midas_state::machine_reset()
{
}
-WRITE_LINE_MEMBER(midas_state::screen_vblank)
+WRITE_LINE_MEMBER(midas_state::screen_vblank_midas)
{
if (state) m_sprgen->buffer_vram();
}
-void midas_state::livequiz(machine_config &config)
-{
- /* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &midas_state::livequiz_map);
- m_maincpu->set_vblank_int("screen", FUNC(midas_state::irq1_line_hold));
+MACHINE_CONFIG_START(midas_state::livequiz)
- pic16c56_device &pic1(PIC16C56(config, "pic1", XTAL(24'000'000) / 6)); // !! PIC12C508 !! unknown MHz
- pic1.set_disable(); // Currently not hooked up
-
- pic16c56_device &pic2(PIC16C56(config, "pic2", XTAL(24'000'000) / 6)); // !! PIC12C508 !! unknown MHz
- pic2.set_disable(); // Currently not hooked up
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(livequiz_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", midas_state, irq1_line_hold)
- EEPROM_93C46_16BIT(config, m_eeprom);
+ EEPROM_93C46_16BIT(config, "eeprom");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(NEOGEO_PIXEL_CLOCK, NEOGEO_HTOTAL, NEOGEO_HBEND, NEOGEO_HBSTART, NEOGEO_VTOTAL, NEOGEO_VBEND, NEOGEO_VBSTART);
- m_screen->set_screen_update(FUNC(midas_state::screen_update));
- m_screen->screen_vblank().set(FUNC(midas_state::screen_vblank));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(NEOGEO_PIXEL_CLOCK, NEOGEO_HTOTAL, NEOGEO_HBEND, NEOGEO_HBSTART, NEOGEO_VTOTAL, NEOGEO_VBEND, NEOGEO_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(midas_state, screen_update_midas)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, midas_state, screen_vblank_midas))
- NEOGEO_SPRITE_MIDAS(config, m_sprgen, 0).set_screen(m_screen);
+ MCFG_DEVICE_ADD("spritegen", NEOGEO_SPRITE_MIDAS, 0)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_midas);
PALETTE(config, m_palette).set_format(palette_device::xRGB_888, 0x10000);
@@ -650,53 +654,42 @@ void midas_state::livequiz(machine_config &config)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
+ MCFG_DEVICE_ADD("ymz", YMZ280B, XTAL(16'934'400))
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+MACHINE_CONFIG_END
- ymz280b_device &ymz(YMZ280B(config, "ymz", XTAL(16'934'400)));
- ymz.add_route(0, "lspeaker", 0.80);
- ymz.add_route(1, "rspeaker", 0.80);
-}
+MACHINE_CONFIG_START(midas_state::hammer)
-void midas_state::hammer(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(28'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &midas_state::hammer_map);
- m_maincpu->set_vblank_int("screen", FUNC(midas_state::irq1_line_hold));
-
- at89c52_device &mcu(AT89C52(config, "mcu", XTAL(24'000'000) / 2)); // on top board, unknown MHz
- mcu.set_disable(); // Currently not hooked up
-
- EEPROM_93C46_16BIT(config, m_eeprom);
-
- TICKET_DISPENSER(config, m_prize[0], 0);
- m_prize[0]->set_period(attotime::from_msec(1000*5));
- m_prize[0]->set_senses(TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW, false);
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(28'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(hammer_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", midas_state, irq1_line_hold)
- TICKET_DISPENSER(config, m_prize[1], 0);
- m_prize[1]->set_period(attotime::from_msec(1000*5));
- m_prize[1]->set_senses(TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW, false);
+ EEPROM_93C46_16BIT(config, "eeprom");
- TICKET_DISPENSER(config, m_ticket, 0);
- m_ticket->set_period(attotime::from_msec(200));
- m_ticket->set_senses(TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW, false);
+ MCFG_TICKET_DISPENSER_ADD("prize1", attotime::from_msec(1000*5), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW )
+ MCFG_TICKET_DISPENSER_ADD("prize2", attotime::from_msec(1000*5), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW )
+ MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW )
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(NEOGEO_PIXEL_CLOCK, NEOGEO_HTOTAL, NEOGEO_HBEND, NEOGEO_HBSTART, NEOGEO_VTOTAL, NEOGEO_VBEND, NEOGEO_VBSTART);
- m_screen->set_screen_update(FUNC(midas_state::screen_update));
- m_screen->screen_vblank().set(FUNC(midas_state::screen_vblank));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(NEOGEO_PIXEL_CLOCK, NEOGEO_HTOTAL, NEOGEO_HBEND, NEOGEO_HBSTART, NEOGEO_VTOTAL, NEOGEO_VBEND, NEOGEO_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(midas_state, screen_update_midas)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, midas_state, screen_vblank_midas))
- NEOGEO_SPRITE_MIDAS(config, m_sprgen, 0).set_screen(m_screen);
+ MCFG_DEVICE_ADD("spritegen", NEOGEO_SPRITE_MIDAS, 0)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_midas);
PALETTE(config, m_palette).set_format(palette_device::xRGB_888, 0x10000);
/* sound hardware */
- SPEAKER(config, "mono").front_center(); // stereo outputs aren't exists?
-
- ymz280b_device &ymz(YMZ280B(config, "ymz", XTAL(16'934'400)));
- ymz.add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+ SPEAKER(config, "lspeaker").front_left();
+ SPEAKER(config, "rspeaker").front_right();
+ MCFG_DEVICE_ADD("ymz", YMZ280B, XTAL(16'934'400))
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+MACHINE_CONFIG_END
/***************************************************************************************
@@ -791,10 +784,8 @@ ROM_START( livequiz )
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "flash.u1", 0x000000, 0x200000, CRC(8ec44493) SHA1(a987886cb87ac0a744f01f2e4a7cc6d12efeaa04) )
- ROM_REGION( 0x000800, "pic1", 0 )
+ ROM_REGION( 0x200000, "pic", 0 )
ROM_LOAD( "main_pic12c508a.u27", 0x000000, 0x000400, CRC(a84f0a7e) SHA1(fb27c05fb27b98ca603697e1be214dc6c8d5f884) )
-
- ROM_REGION( 0x000800, "pic2", 0 )
ROM_LOAD( "sub_pic12c508a.u4", 0x000000, 0x000400, CRC(e52ebdc4) SHA1(0f3af66b5ea184e49188e74a873699324a3930f1) )
ROM_REGION( 0x800000, "sprites", 0 )
@@ -809,7 +800,7 @@ ROM_START( livequiz )
ROM_REGION( 0x200000, "ymz", 0 )
ROM_LOAD( "flash.u5", 0x000000, 0x200000, CRC(dc062792) SHA1(ec415c918c47ce9d181f014cde317af5717600e4) )
- ROM_REGION( 0x20000, "spritegen:zoomy", ROMREGION_ERASE00 )
+ ROM_REGION( 0x20000, "zoomy", ROMREGION_ERASE00 )
/* uploaded */
ROM_END
@@ -883,9 +874,6 @@ ROM_START( hammer )
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "p.u22", 0x000000, 0x200000, CRC(687f1596) SHA1(3dc5fb0af1e8c4f3a42ce4aad39635b1111831d8) )
- ROM_REGION( 0x002000, "mcu", 0 )
- ROM_LOAD( "hammer_at89c52", 0x000000, 0x002000, NO_DUMP )
-
ROM_REGION( 0x1000000, "sprites", 0 )
ROM_LOAD64_WORD( "a0l.u44", 0x000000, 0x200000, CRC(b9cafd81) SHA1(24698970d1aea0907e2963c872ce61077f44c3af) )
ROM_LOAD64_WORD( "a0h.u46", 0x800000, 0x200000, CRC(f60f188b) SHA1(486f26c473b46efb402662b2f374e361cd7b4284) )
@@ -907,7 +895,7 @@ ROM_START( hammer )
ROM_LOAD( "s0.u25", 0x000000, 0x200000, CRC(c049a3e0) SHA1(0c7016c3128c170a84ad3f92fad1165775210e3d) )
ROM_LOAD( "s1.u26", 0x200000, 0x200000, CRC(9cc4b3ec) SHA1(b91a8747074a1032eb7f70a015d394fe8e896d7e) )
- ROM_REGION( 0x20000, "spritegen:zoomy", ROMREGION_ERASE00 )
+ ROM_REGION( 0x20000, "zoomy", ROMREGION_ERASE00 )
/* uploaded */
ROM_END
diff --git a/src/mame/drivers/midqslvr.cpp b/src/mame/drivers/midqslvr.cpp
index af25727af8e..20024e51f4c 100644
--- a/src/mame/drivers/midqslvr.cpp
+++ b/src/mame/drivers/midqslvr.cpp
@@ -418,10 +418,10 @@ void midqslvr_state::machine_reset()
}
MACHINE_CONFIG_START(midqslvr_state::midqslvr)
- PENTIUM(config, m_maincpu, 333000000); // actually Celeron 333
- m_maincpu->set_addrmap(AS_PROGRAM, &midqslvr_state::midqslvr_map);
- m_maincpu->set_addrmap(AS_IO, &midqslvr_state::midqslvr_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", PENTIUM, 333000000) // actually Celeron 333
+ MCFG_DEVICE_PROGRAM_MAP(midqslvr_map)
+ MCFG_DEVICE_IO_MAP(midqslvr_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
pcat_common(config);
diff --git a/src/mame/drivers/midtunit.cpp b/src/mame/drivers/midtunit.cpp
index 4d37fffd7ec..7bfafb19de8 100644
--- a/src/mame/drivers/midtunit.cpp
+++ b/src/mame/drivers/midtunit.cpp
@@ -65,6 +65,7 @@ void midtunit_state::main_map(address_map &map)
map(0x01f00000, 0x01f0001f).w(m_video, FUNC(midtunit_video_device::midtunit_control_w));
map(0x02000000, 0x07ffffff).r(m_video, FUNC(midtunit_video_device::midtunit_gfxrom_r)).share("gfxrom");
map(0x1f800000, 0x1fffffff).rom().region("maincpu", 0); /* mirror used by MK */
+ map(0xc0000000, 0xc00001ff).rw("maincpu", FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xff800000, 0xffffffff).rom().region("maincpu", 0);
}
diff --git a/src/mame/drivers/midvunit.cpp b/src/mame/drivers/midvunit.cpp
index 6bcbf5272f1..43dc19af1cf 100644
--- a/src/mame/drivers/midvunit.cpp
+++ b/src/mame/drivers/midvunit.cpp
@@ -121,7 +121,7 @@ READ32_MEMBER(midvunit_state::port0_r)
READ32_MEMBER( midvunit_state::adc_r )
{
if (!(m_control_data & 0x40))
- return m_adc->read() << m_adc_shift;
+ return m_adc->read(space, 0) << m_adc_shift;
else
logerror("adc_r without enabling reads!\n");
@@ -131,7 +131,7 @@ READ32_MEMBER( midvunit_state::adc_r )
WRITE32_MEMBER( midvunit_state::adc_w )
{
if (!(m_control_data & 0x20))
- m_adc->write(data >> m_adc_shift);
+ m_adc->write(space, 0, data >> m_adc_shift);
else
logerror("adc_w without enabling writes!\n");
}
@@ -280,14 +280,14 @@ WRITE32_MEMBER(midvunit_state::tms32031_control_w)
READ32_MEMBER(midvunit_state::crusnwld_serial_status_r)
{
- uint16_t in1 = (m_in1->read() & 0x7fff) | (m_midway_serial_pic->status_r() << 15);
+ uint16_t in1 = (m_in1->read() & 0x7fff) | (m_midway_serial_pic->status_r(space,0) << 15);
return in1 | in1 << 16;
}
READ32_MEMBER(midvunit_state::crusnwld_serial_data_r)
{
- return m_midway_serial_pic->read() << 16;
+ return m_midway_serial_pic->read(space,0) << 16;
}
@@ -298,7 +298,7 @@ WRITE32_MEMBER(midvunit_state::crusnwld_serial_data_w)
m_midway_serial_pic->reset_w(1);
m_midway_serial_pic->reset_w(0);
}
- m_midway_serial_pic->write(data >> 16);
+ m_midway_serial_pic->write(space,0,data >> 16);
}
@@ -342,20 +342,20 @@ WRITE32_MEMBER(midvunit_state::bit_reset_w)
READ32_MEMBER(midvunit_state::offroadc_serial_status_r)
{
- uint16_t in1 = (m_in1->read() & 0x7fff) | (m_midway_serial_pic2->status_r() << 15);
+ uint16_t in1 = (m_in1->read() & 0x7fff) | (m_midway_serial_pic2->status_r(space,0) << 15);
return in1 | in1 << 16;
}
READ32_MEMBER(midvunit_state::offroadc_serial_data_r)
{
- return m_midway_serial_pic2->read() << 16;
+ return m_midway_serial_pic2->read(space, 0) << 16;
}
WRITE32_MEMBER(midvunit_state::offroadc_serial_data_w)
{
- m_midway_serial_pic2->write(data >> 16);
+ m_midway_serial_pic2->write(space, 0, data >> 16);
}
READ32_MEMBER(midvunit_state::midvunit_wheel_board_r)
@@ -1055,27 +1055,27 @@ INPUT_PORTS_END
*
*************************************/
-void midvunit_state::midvcommon(machine_config &config)
-{
+MACHINE_CONFIG_START(midvunit_state::midvcommon)
+
/* basic machine hardware */
TMS32031(config, m_maincpu, CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &midvunit_state::midvunit_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- TIMER(config, "timer0").configure_generic(timer_device::expired_delegate());
- TIMER(config, "timer1").configure_generic(timer_device::expired_delegate());
+ MCFG_TIMER_ADD_NONE("timer0")
+ MCFG_TIMER_ADD_NONE("timer1")
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
- PALETTE(config, m_palette).set_entries(32768);
+ MCFG_PALETTE_ADD("palette", 32768)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MIDVUNIT_VIDEO_CLOCK/2, 666, 0, 512, 432, 0, 400);
- m_screen->set_screen_update(FUNC(midvunit_state::screen_update_midvunit));
- m_screen->set_palette(m_palette);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MIDVUNIT_VIDEO_CLOCK/2, 666, 0, 512, 432, 0, 400)
+ MCFG_SCREEN_UPDATE_DRIVER(midvunit_state, screen_update_midvunit)
+ MCFG_SCREEN_PALETTE("palette")
+MACHINE_CONFIG_END
void midvunit_state::midvunit(machine_config &config)
@@ -1110,8 +1110,7 @@ void midvunit_state::offroadc(machine_config &config)
m_midway_serial_pic2->set_yearoffs(94);
}
-void midvunit_state::midvplus(machine_config &config)
-{
+MACHINE_CONFIG_START(midvunit_state::midvplus)
midvcommon(config);
/* basic machine hardware */
@@ -1132,7 +1131,7 @@ void midvunit_state::midvplus(machine_config &config)
DCS2_AUDIO_2115(config, m_dcs, 0);
m_dcs->set_dram_in_mb(2);
m_dcs->set_polling_offset(0x3839);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/midwunit.cpp b/src/mame/drivers/midwunit.cpp
index 1f7cbed2a9b..0925f6c168a 100644
--- a/src/mame/drivers/midwunit.cpp
+++ b/src/mame/drivers/midwunit.cpp
@@ -126,6 +126,7 @@ void midwunit_state::main_map(address_map &map)
map(0x01a00000, 0x01a000ff).mirror(0x00080000).rw(m_video, FUNC(midwunit_video_device::midtunit_dma_r), FUNC(midwunit_video_device::midtunit_dma_w));
map(0x01b00000, 0x01b0001f).rw(m_video, FUNC(midwunit_video_device::midwunit_control_r), FUNC(midwunit_video_device::midwunit_control_w));
map(0x02000000, 0x06ffffff).r(m_video, FUNC(midwunit_video_device::midwunit_gfxrom_r));
+ map(0xc0000000, 0xc00001ff).rw("maincpu", FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xff800000, 0xffffffff).rom().region("maincpu", 0);
}
diff --git a/src/mame/drivers/midxunit.cpp b/src/mame/drivers/midxunit.cpp
index 34d4dc0f281..700457a87c7 100644
--- a/src/mame/drivers/midxunit.cpp
+++ b/src/mame/drivers/midxunit.cpp
@@ -122,6 +122,7 @@ void midxunit_state::main_map(address_map &map)
map(0x80c00000, 0x80c000ff).rw(FUNC(midxunit_state::midxunit_uart_r), FUNC(midxunit_state::midxunit_uart_w));
map(0xa0440000, 0xa047ffff).rw(FUNC(midxunit_state::midxunit_cmos_r), FUNC(midxunit_state::midxunit_cmos_w)).share("nvram");
map(0xa0800000, 0xa08fffff).rw(m_video, FUNC(midxunit_video_device::midxunit_paletteram_r), FUNC(midxunit_video_device::midxunit_paletteram_w)).share("palette");
+ map(0xc0000000, 0xc00003ff).rw("maincpu", FUNC(tms34020_device::io_register_r), FUNC(tms34020_device::io_register_w));
map(0xc0800000, 0xc08000ff).mirror(0x00400000).rw(m_video, FUNC(midxunit_video_device::midtunit_dma_r), FUNC(midxunit_video_device::midtunit_dma_w));
map(0xf8000000, 0xfeffffff).r(m_video, FUNC(midxunit_video_device::midwunit_gfxrom_r));
map(0xff000000, 0xffffffff).rom().region("maincpu", 0);
diff --git a/src/mame/drivers/midyunit.cpp b/src/mame/drivers/midyunit.cpp
index 4d35c966546..8a63bfb2fd1 100644
--- a/src/mame/drivers/midyunit.cpp
+++ b/src/mame/drivers/midyunit.cpp
@@ -155,13 +155,13 @@ WRITE8_MEMBER(midyunit_state::yawdim_oki_bank_w)
CUSTOM_INPUT_MEMBER(midyunit_state::narc_talkback_strobe_r)
{
- return (m_narc_sound->read() >> 8) & 1;
+ return (m_narc_sound->read(machine().dummy_space(), 0) >> 8) & 1;
}
CUSTOM_INPUT_MEMBER(midyunit_state::narc_talkback_data_r)
{
- return m_narc_sound->read() & 0xff;
+ return m_narc_sound->read(machine().dummy_space(), 0) & 0xff;
}
@@ -190,6 +190,7 @@ void midyunit_state::main_map(address_map &map)
map(0x01e00000, 0x01e0001f).w(FUNC(midyunit_state::midyunit_sound_w));
map(0x01f00000, 0x01f0001f).w(FUNC(midyunit_state::midyunit_control_w));
map(0x02000000, 0x05ffffff).r(FUNC(midyunit_state::midyunit_gfxrom_r)).share("gfx_rom");
+ map(0xc0000000, 0xc00001ff).rw("maincpu", FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xff800000, 0xffffffff).rom().region("user1", 0);
}
@@ -1098,8 +1099,8 @@ INPUT_PORTS_END
*
*************************************/
-void midyunit_state::zunit(machine_config &config)
-{
+MACHINE_CONFIG_START(midyunit_state::zunit)
+
/* basic machine hardware */
TMS34010(config, m_maincpu, FAST_MASTER_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &midyunit_state::main_map);
@@ -1114,24 +1115,24 @@ void midyunit_state::zunit(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- PALETTE(config, m_palette).set_entries(8192);
+ MCFG_PALETTE_ADD("palette", 8192)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_video_attributes(VIDEO_ALWAYS_UPDATE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
// from TMS340 registers
- screen.set_raw(MEDRES_PIXEL_CLOCK*2, 674, 122, 634, 433, 27, 427);
- screen.set_screen_update("maincpu", FUNC(tms34010_device::tms340x0_ind16));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_RAW_PARAMS(MEDRES_PIXEL_CLOCK*2, 674, 122, 634, 433, 27, 427)
+ MCFG_SCREEN_UPDATE_DEVICE("maincpu", tms34010_device, tms340x0_ind16)
+ MCFG_SCREEN_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(midyunit_state,midzunit)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- WILLIAMS_NARC_SOUND(config, m_narc_sound);
- m_narc_sound->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_narc_sound->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("narcsnd", WILLIAMS_NARC_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
@@ -1141,8 +1142,8 @@ void midyunit_state::zunit(machine_config &config)
*
*************************************/
-void midyunit_state::yunit_core(machine_config &config)
-{
+MACHINE_CONFIG_START(midyunit_state::yunit_core)
+
/* basic machine hardware */
TMS34010(config, m_maincpu, SLOW_MASTER_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &midyunit_state::main_map);
@@ -1157,96 +1158,103 @@ void midyunit_state::yunit_core(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_PALETTE_ADD("palette", 256)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_video_attributes(VIDEO_ALWAYS_UPDATE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
// from TMS340 registers - visible area varies slightly between games
// we use the largest visarea (smashtv's) here so that aviwrite will work nicely
- screen.set_raw(STDRES_PIXEL_CLOCK*2, 506, 90, 500, 289, 20, 276);
- screen.set_screen_update("maincpu", FUNC(tms34010_device::tms340x0_ind16));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_RAW_PARAMS(STDRES_PIXEL_CLOCK*2, 506, 90, 500, 289, 20, 276)
+ MCFG_SCREEN_UPDATE_DEVICE("maincpu", tms34010_device, tms340x0_ind16)
+ MCFG_SCREEN_PALETTE("palette")
/* sound hardware */
SPEAKER(config, "speaker").front_center();
-}
+MACHINE_CONFIG_END
-void midyunit_state::yunit_cvsd_4bit_slow(machine_config &config)
-{
+MACHINE_CONFIG_START(midyunit_state::yunit_cvsd_4bit_slow)
yunit_core(config);
/* basic machine hardware */
- WILLIAMS_CVSD_SOUND(config, m_cvsd_sound).add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD("cvsd", WILLIAMS_CVSD_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
/* video hardware */
- m_palette->set_entries(256);
+ MCFG_DEVICE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(256)
MCFG_VIDEO_START_OVERRIDE(midyunit_state,midyunit_4bit)
-}
+MACHINE_CONFIG_END
-void midyunit_state::yunit_cvsd_4bit_fast(machine_config &config)
-{
+MACHINE_CONFIG_START(midyunit_state::yunit_cvsd_4bit_fast)
yunit_core(config);
/* basic machine hardware */
- m_maincpu->set_clock(FAST_MASTER_CLOCK);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(FAST_MASTER_CLOCK)
- WILLIAMS_CVSD_SOUND(config, m_cvsd_sound).add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD("cvsd", WILLIAMS_CVSD_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
/* video hardware */
- m_palette->set_entries(256);
+ MCFG_DEVICE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(256)
MCFG_VIDEO_START_OVERRIDE(midyunit_state,midyunit_4bit)
-}
+MACHINE_CONFIG_END
-void midyunit_state::yunit_cvsd_6bit_slow(machine_config &config)
-{
+MACHINE_CONFIG_START(midyunit_state::yunit_cvsd_6bit_slow)
yunit_core(config);
/* basic machine hardware */
- WILLIAMS_CVSD_SOUND(config, m_cvsd_sound).add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD("cvsd", WILLIAMS_CVSD_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
/* video hardware */
- m_palette->set_entries(4096);
+ MCFG_DEVICE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(4096)
MCFG_VIDEO_START_OVERRIDE(midyunit_state,midyunit_6bit)
-}
+MACHINE_CONFIG_END
-void midyunit_state::yunit_adpcm_6bit_fast(machine_config &config)
-{
+MACHINE_CONFIG_START(midyunit_state::yunit_adpcm_6bit_fast)
yunit_core(config);
/* basic machine hardware */
- m_maincpu->set_clock(FAST_MASTER_CLOCK);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(FAST_MASTER_CLOCK)
- WILLIAMS_ADPCM_SOUND(config, m_adpcm_sound).add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD("adpcm", WILLIAMS_ADPCM_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
/* video hardware */
- m_palette->set_entries(4096);
+ MCFG_DEVICE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(4096)
MCFG_VIDEO_START_OVERRIDE(midyunit_state,midyunit_6bit)
-}
+MACHINE_CONFIG_END
-void midyunit_state::yunit_adpcm_6bit_faster(machine_config &config)
-{
+MACHINE_CONFIG_START(midyunit_state::yunit_adpcm_6bit_faster)
yunit_core(config);
/* basic machine hardware */
- m_maincpu->set_clock(FASTER_MASTER_CLOCK);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(FASTER_MASTER_CLOCK)
- WILLIAMS_ADPCM_SOUND(config, m_adpcm_sound).add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD("adpcm", WILLIAMS_ADPCM_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
/* video hardware */
- m_palette->set_entries(4096);
+ MCFG_DEVICE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(4096)
MCFG_VIDEO_START_OVERRIDE(midyunit_state,midyunit_6bit)
-}
+MACHINE_CONFIG_END
void midyunit_state::term2(machine_config &config)
{
yunit_adpcm_6bit_faster(config);
-
ADC0844(config, m_term2_adc); // U2 on Coil Lamp Driver Board (A-14915)
m_term2_adc->ch1_callback().set_ioport("STICK0_X");
m_term2_adc->ch2_callback().set_ioport("STICK0_Y");
@@ -1255,25 +1263,26 @@ void midyunit_state::term2(machine_config &config)
}
-void midyunit_state::mkyawdim(machine_config &config)
-{
+MACHINE_CONFIG_START(midyunit_state::mkyawdim)
yunit_core(config);
/* basic machine hardware */
- Z80(config, m_audiocpu, XTAL(8'000'000) / 2);
- m_audiocpu->set_addrmap(AS_PROGRAM, &midyunit_state::yawdim_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(8'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(yawdim_sound_map)
/* video hardware */
- m_palette->set_entries(4096);
+ MCFG_DEVICE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(4096)
MCFG_VIDEO_START_OVERRIDE(midyunit_state,mkyawdim)
/* sound hardware */
GENERIC_LATCH_8(config, m_soundlatch);
- OKIM6295(config, m_oki, XTAL(8'000'000) / 8, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(8'000'000) / 8, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/midzeus.cpp b/src/mame/drivers/midzeus.cpp
index 2f0fc5f84e7..1beb25f7071 100644
--- a/src/mame/drivers/midzeus.cpp
+++ b/src/mame/drivers/midzeus.cpp
@@ -187,13 +187,13 @@ WRITE32_MEMBER(midzeus_state::cmos_protect_w)
READ32_MEMBER(midzeus2_state::zeus2_timekeeper_r)
{
- return m_m48t35->read(offset) | 0xffffff00;
+ return m_m48t35->read(space, offset, 0xff) | 0xffffff00;
}
WRITE32_MEMBER(midzeus2_state::zeus2_timekeeper_w)
{
if (disk_asic_jr[2] && !cmos_protected)
- m_m48t35->write(offset, data);
+ m_m48t35->write(space, offset, data, 0xff);
else
logerror("%s:zeus2_timekeeper_w with disk_asic_jr[2] = %d, cmos_protected = %d\n", machine().describe_context(), disk_asic_jr[2], cmos_protected);
cmos_protected = true;
@@ -1255,8 +1255,8 @@ INPUT_PORTS_END
*
*************************************/
-void midzeus_state::midzeus(machine_config &config)
-{
+MACHINE_CONFIG_START(midzeus_state::midzeus)
+
/* basic machine hardware */
TMS32032(config, m_maincpu, CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &midzeus_state::zeus_map);
@@ -1282,24 +1282,22 @@ void midzeus_state::midzeus(machine_config &config)
MIDWAY_IOASIC(config, m_ioasic, 0);
m_ioasic->set_shuffle(MIDWAY_IOASIC_STANDARD);
m_ioasic->set_yearoffs(94);
-}
+MACHINE_CONFIG_END
-void midzeus_state::mk4(machine_config &config)
-{
+MACHINE_CONFIG_START(midzeus_state::mk4)
midzeus(config);
m_ioasic->set_upper(461/* or 474 */);
m_ioasic->set_shuffle_default(1);
-}
+MACHINE_CONFIG_END
-void midzeus_state::invasn(machine_config &config)
-{
+MACHINE_CONFIG_START(midzeus_state::invasn)
midzeus(config);
PIC16C57(config, "pic", 8000000); /* ? */
m_ioasic->set_upper(468/* or 488 */);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(midzeus2_state::midzeus2)
-void midzeus2_state::midzeus2(machine_config &config)
-{
/* basic machine hardware */
TMS32032(config, m_maincpu, CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &midzeus2_state::zeus2_map);
@@ -1325,19 +1323,17 @@ void midzeus2_state::midzeus2(machine_config &config)
m_ioasic->set_shuffle(MIDWAY_IOASIC_STANDARD);
m_ioasic->set_yearoffs(99);
m_ioasic->set_upper(474);
-}
+MACHINE_CONFIG_END
-void midzeus2_state::crusnexo(machine_config &config)
-{
+MACHINE_CONFIG_START(midzeus2_state::crusnexo)
midzeus2(config);
m_ioasic->set_upper(472/* or 476,477,478,110 */);
-}
+MACHINE_CONFIG_END
-void midzeus2_state::thegrid(machine_config &config)
-{
+MACHINE_CONFIG_START(midzeus2_state::thegrid)
midzeus2(config);
m_ioasic->set_upper(474/* or 491 */);
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/mightyframe.cpp b/src/mame/drivers/mightyframe.cpp
index 99f774e34ed..e873ec63a7d 100644
--- a/src/mame/drivers/mightyframe.cpp
+++ b/src/mame/drivers/mightyframe.cpp
@@ -38,11 +38,10 @@ void mightyframe_state::mem_map(address_map &map)
static INPUT_PORTS_START( mightyframe )
INPUT_PORTS_END
-void mightyframe_state::mightyframe(machine_config &config)
-{
- m68000_device &maincpu(M68000(config, "maincpu", XTAL(16'000'000))); // no idea of clock
- maincpu.set_addrmap(AS_PROGRAM, &mightyframe_state::mem_map);
-}
+MACHINE_CONFIG_START(mightyframe_state::mightyframe)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)) // no idea of clock
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+MACHINE_CONFIG_END
ROM_START( mightyframe )
ROM_REGION( 0x8000, "maincpu", 0 )
diff --git a/src/mame/drivers/mikie.cpp b/src/mame/drivers/mikie.cpp
index a8b8cbd3842..3b8c548fdba 100644
--- a/src/mame/drivers/mikie.cpp
+++ b/src/mame/drivers/mikie.cpp
@@ -132,9 +132,9 @@ void mikie_state::sound_map(address_map &map)
map(0x4000, 0x43ff).ram();
map(0x8000, 0x8000).nopw(); // sound command latch
map(0x8001, 0x8001).nopw(); // ???
- map(0x8002, 0x8002).w("sn1", FUNC(sn76489a_device::write)); // trigger read of latch
+ map(0x8002, 0x8002).w("sn1", FUNC(sn76489a_device::command_w)); // trigger read of latch
map(0x8003, 0x8003).r("soundlatch", FUNC(generic_latch_8_device::read));
- map(0x8004, 0x8004).w("sn2", FUNC(sn76489a_device::write)); // trigger read of latch
+ map(0x8004, 0x8004).w("sn2", FUNC(sn76489a_device::command_w)); // trigger read of latch
map(0x8005, 0x8005).r(FUNC(mikie_state::mikie_sh_timer_r));
map(0x8079, 0x8079).nopw(); // ???
map(0xa003, 0xa003).nopw(); // ???
@@ -258,14 +258,14 @@ WRITE_LINE_MEMBER(mikie_state::vblank_irq)
m_maincpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
}
-void mikie_state::mikie(machine_config &config)
-{
+MACHINE_CONFIG_START(mikie_state::mikie)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, OSC/12); // 9A (surface scratched)
- m_maincpu->set_addrmap(AS_PROGRAM, &mikie_state::mikie_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, OSC/12) // 9A (surface scratched)
+ MCFG_DEVICE_PROGRAM_MAP(mikie_map)
- Z80(config, m_audiocpu, CLK); // 4E (surface scratched)
- m_audiocpu->set_addrmap(AS_PROGRAM, &mikie_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, CLK) // 4E (surface scratched)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
ls259_device &mainlatch(LS259(config, "mainlatch")); // 6I
mainlatch.q_out_cb<0>().set(FUNC(mikie_state::coin_counter_1_w)); // COIN1
@@ -278,14 +278,14 @@ void mikie_state::mikie(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60.59);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(mikie_state::screen_update_mikie));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(mikie_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60.59)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mikie_state, screen_update_mikie)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mikie_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mikie);
PALETTE(config, m_palette, FUNC(mikie_state::mikie_palette), 16*8*16+16*8*16, 256);
@@ -295,10 +295,12 @@ void mikie_state::mikie(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- SN76489A(config, "sn1", XTAL/8).add_route(ALL_OUTPUTS, "mono", 0.60);
+ MCFG_DEVICE_ADD("sn1", SN76489A, XTAL/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
- SN76489A(config, "sn2", CLK).add_route(ALL_OUTPUTS, "mono", 0.60);
-}
+ MCFG_DEVICE_ADD("sn2", SN76489A, CLK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/mikro80.cpp b/src/mame/drivers/mikro80.cpp
index 206a603adf1..71169a78c75 100644
--- a/src/mame/drivers/mikro80.cpp
+++ b/src/mame/drivers/mikro80.cpp
@@ -165,12 +165,11 @@ static GFXDECODE_START( gfx_mikro80 )
GFXDECODE_ENTRY( "gfx1", 0x0000, mikro80_charlayout, 0, 1 )
GFXDECODE_END
-void mikro80_state::mikro80(machine_config &config)
-{
+MACHINE_CONFIG_START(mikro80_state::mikro80)
/* basic machine hardware */
- I8080(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &mikro80_state::mikro80_mem);
- m_maincpu->set_addrmap(AS_IO, &mikro80_state::mikro80_io);
+ MCFG_DEVICE_ADD("maincpu",I8080, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(mikro80_mem)
+ MCFG_DEVICE_IO_MAP(mikro80_io)
I8255(config, m_ppi8255);
m_ppi8255->out_pa_callback().set(FUNC(mikro80_state::mikro80_8255_porta_w));
@@ -178,45 +177,45 @@ void mikro80_state::mikro80(machine_config &config)
m_ppi8255->in_pc_callback().set(FUNC(mikro80_state::mikro80_8255_portc_r));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0, 64*8-1, 0, 32*8-1);
- screen.set_screen_update(FUNC(mikro80_state::screen_update_mikro80));
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_mikro80);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mikro80_state, screen_update_mikro80)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mikro80)
PALETTE(config, "palette", palette_device::MONOCHROME);
SPEAKER(config, "speaker").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.25);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(rk8_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
- m_cassette->set_interface("mikro80_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(rk8_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
+ MCFG_CASSETTE_INTERFACE("mikro80_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("mikro80");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "mikro80")
+MACHINE_CONFIG_END
-void mikro80_state::radio99(machine_config &config)
-{
+MACHINE_CONFIG_START(mikro80_state::radio99)
mikro80(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &mikro80_state::radio99_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(radio99_io)
- DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.12);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.12)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
-void mikro80_state::kristall(machine_config &config)
-{
+MACHINE_CONFIG_START(mikro80_state::kristall)
mikro80(config);
- m_maincpu->set_addrmap(AS_IO, &mikro80_state::kristall_io);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(kristall_io)
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/mikromik.cpp b/src/mame/drivers/mikromik.cpp
index f122675dd3c..5be831c4c2c 100644
--- a/src/mame/drivers/mikromik.cpp
+++ b/src/mame/drivers/mikromik.cpp
@@ -92,7 +92,7 @@ READ8_MEMBER( mm1_state::read )
switch ((offset >> 4) & 0x07)
{
case 0:
- data = m_dmac->read(offset & 0x0f);
+ data = m_dmac->read(space, offset & 0x0f);
break;
case 1:
@@ -114,16 +114,16 @@ READ8_MEMBER( mm1_state::read )
case 5:
if (BIT(offset, 0))
{
- data = m_fdc->fifo_r();
+ data = m_fdc->fifo_r(space, 0, 0xff);
}
else
{
- data = m_fdc->msr_r();
+ data = m_fdc->msr_r(space, 0, 0xff);
}
break;
case 7:
- data = m_hgdc->read(offset & 0x01);
+ data = m_hgdc->read(space, offset & 0x01);
break;
}
}
@@ -161,7 +161,7 @@ WRITE8_MEMBER( mm1_state::write )
switch ((offset >> 4) & 0x07)
{
case 0:
- m_dmac->write(offset & 0x0f, data);
+ m_dmac->write(space, offset & 0x0f, data);
break;
case 1:
@@ -183,7 +183,7 @@ WRITE8_MEMBER( mm1_state::write )
case 5:
if (BIT(offset, 0))
{
- m_fdc->fifo_w(data);
+ m_fdc->fifo_w(space, 0, data, 0xff);
}
break;
@@ -192,7 +192,7 @@ WRITE8_MEMBER( mm1_state::write )
break;
case 7:
- m_hgdc->write(offset & 0x01, data);
+ m_hgdc->write(space, offset & 0x01, data);
break;
}
}
@@ -456,7 +456,7 @@ void mm1_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( mm1 )
+// MACHINE_CONFIG( mm1 )
//-------------------------------------------------
void mm1_state::mm1(machine_config &config)
@@ -480,10 +480,10 @@ void mm1_state::mm1(machine_config &config)
m_dmac->in_memr_callback().set(FUNC(mm1_state::read));
m_dmac->out_memw_callback().set(FUNC(mm1_state::write));
m_dmac->in_ior_callback<2>().set(FUNC(mm1_state::mpsc_dack_r));
- m_dmac->in_ior_callback<3>().set(m_fdc, FUNC(upd765_family_device::dma_r));
+ m_dmac->in_ior_callback<3>().set(m_fdc, FUNC(upd765_family_device::mdma_r));
m_dmac->out_iow_callback<0>().set(m_crtc, FUNC(i8275_device::dack_w));
m_dmac->out_iow_callback<1>().set(FUNC(mm1_state::mpsc_dack_w));
- m_dmac->out_iow_callback<3>().set(m_fdc, FUNC(upd765_family_device::dma_w));
+ m_dmac->out_iow_callback<3>().set(m_fdc, FUNC(upd765_family_device::mdma_w));
m_dmac->out_dack_callback<3>().set(FUNC(mm1_state::dack3_w));
PIT8253(config, m_pit, 0);
@@ -525,7 +525,7 @@ void mm1_state::mm1(machine_config &config)
//-------------------------------------------------
-// machine_config( mm1m6 )
+// MACHINE_CONFIG( mm1m6 )
//-------------------------------------------------
void mm1_state::mm1m6(machine_config &config)
@@ -537,7 +537,7 @@ void mm1_state::mm1m6(machine_config &config)
//-------------------------------------------------
-// machine_config( mm1m7 )
+// MACHINE_CONFIG( mm1m7 )
//-------------------------------------------------
void mm1_state::mm1m7(machine_config &config)
diff --git a/src/mame/drivers/mikrosha.cpp b/src/mame/drivers/mikrosha.cpp
index 414f0c7414c..9e67a919dbf 100644
--- a/src/mame/drivers/mikrosha.cpp
+++ b/src/mame/drivers/mikrosha.cpp
@@ -45,7 +45,7 @@ private:
void mikrosha_state::machine_reset()
{
if (m_cart->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0x8000+m_cart->get_rom_size()-1, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0x8000+m_cart->get_rom_size()-1, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
radio86_state::machine_reset();
}
@@ -203,12 +203,11 @@ static GFXDECODE_START( gfx_mikrosha )
GFXDECODE_ENTRY( "gfx1", 0x0000, mikrosha_charlayout, 0, 1 )
GFXDECODE_END
-void mikrosha_state::mikrosha(machine_config &config)
-{
+MACHINE_CONFIG_START(mikrosha_state::mikrosha)
/* basic machine hardware */
- I8080(config, m_maincpu, XTAL(16'000'000) / 9);
- m_maincpu->set_addrmap(AS_PROGRAM, &mikrosha_state::mikrosha_mem);
- m_maincpu->set_addrmap(AS_IO, &mikrosha_state::mikrosha_io);
+ MCFG_DEVICE_ADD("maincpu", I8080, XTAL(16'000'000) / 9)
+ MCFG_DEVICE_PROGRAM_MAP(mikrosha_mem)
+ MCFG_DEVICE_IO_MAP(mikrosha_io)
I8255(config, m_ppi8255_1);
m_ppi8255_1->in_pa_callback().set(FUNC(radio86_state::radio86_8255_portb_r2));
@@ -219,10 +218,10 @@ void mikrosha_state::mikrosha(machine_config &config)
I8255(config, m_ppi8255_2);
m_ppi8255_2->out_pb_callback().set(FUNC(radio86_state::mikrosha_8255_font_page_w));
- i8275_device &i8275(I8275(config, "i8275", XTAL(16'000'000) / 12));
- i8275.set_character_width(6);
- i8275.set_display_callback(FUNC(mikrosha_state::display_pixels), this);
- i8275.drq_wr_callback().set(m_dma8257, FUNC(i8257_device::dreq2_w));
+ MCFG_DEVICE_ADD("i8275", I8275, XTAL(16'000'000) / 12)
+ MCFG_I8275_CHARACTER_WIDTH(6)
+ MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(mikrosha_state, display_pixels)
+ MCFG_I8275_DRQ_CALLBACK(WRITELINE(m_dma8257,i8257_device, dreq2_w))
pit8253_device &pit8253(PIT8253(config, "pit8253", 0));
pit8253.set_clk<0>(0);
@@ -231,11 +230,11 @@ void mikrosha_state::mikrosha(machine_config &config)
pit8253.out_handler<2>().set(FUNC(mikrosha_state::mikrosha_pit_out2));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update("i8275", FUNC(i8275_device::screen_update));
- screen.set_refresh_hz(50);
- screen.set_size(78*6, 30*10);
- screen.set_visarea(0, 78*6-1, 0, 30*10-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DEVICE("i8275", i8275_device, screen_update)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(78*6, 30*10)
+ MCFG_SCREEN_VISIBLE_AREA(0, 78*6-1, 0, 30*10-1)
GFXDECODE(config, "gfxdecode", m_palette, gfx_mikrosha);
PALETTE(config, m_palette, FUNC(mikrosha_state::radio86_palette), 3);
@@ -250,16 +249,17 @@ void mikrosha_state::mikrosha(machine_config &config)
m_dma8257->out_iow_cb<2>().set("i8275", FUNC(i8275_device::dack_w));
m_dma8257->set_reverse_rw_mode(1);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(rkm_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
- m_cassette->set_interface("mikrosha_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(rkm_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
+ MCFG_CASSETTE_INTERFACE("mikrosha_cass")
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "mikrosha_cart", "bin,rom");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "mikrosha_cart")
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
- SOFTWARE_LIST(config, "cass_list").set_original("mikrosha_cass");
- SOFTWARE_LIST(config, "cart_list").set_original("mikrosha_cart");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "mikrosha_cass")
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "mikrosha_cart")
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/mil4000.cpp b/src/mame/drivers/mil4000.cpp
index d4e37d14353..fe28b93c707 100644
--- a/src/mame/drivers/mil4000.cpp
+++ b/src/mame/drivers/mil4000.cpp
@@ -561,37 +561,37 @@ static GFXDECODE_START( gfx_mil4000 )
GFXDECODE_END
-void mil4000_state::mil4000(machine_config &config)
-{
- M68000(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &mil4000_state::mil4000_map);
+MACHINE_CONFIG_START(mil4000_state::mil4000)
+ MCFG_DEVICE_ADD("maincpu", M68000, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(mil4000_map)
// irq 2/4/5 point to the same place, others invalid
- m_maincpu->set_vblank_int("screen", FUNC(mil4000_state::irq5_line_hold));
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mil4000_state, irq5_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(320, 240);
- screen.set_visarea(0, 320-1, 0, 240-1);
- screen.set_screen_update(FUNC(mil4000_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(320, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mil4000_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::BLACK).set_format(palette_device::RGBx_555, 0x800);
GFXDECODE(config, m_gfxdecode, "palette", gfx_mil4000);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // frequency from 1000 kHz resonator. pin 7 high not verified.
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) // frequency from 1000 kHz resonator. pin 7 high not verified.
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void mil4000_state::chewheel(machine_config &config)
-{
+MACHINE_CONFIG_START(mil4000_state::chewheel)
mil4000(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mil4000_state::chewheel_map); /* 2MHz */
-}
+ MCFG_DEVICE_REPLACE("maincpu", M68000, CPU_CLOCK) /* 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(chewheel_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mil4000_state, irq5_line_hold)
+MACHINE_CONFIG_END
ROM_START( mil4000 )
diff --git a/src/mame/drivers/milton6805.cpp b/src/mame/drivers/milton6805.cpp
index 89f5de74f16..03789aff3c8 100644
--- a/src/mame/drivers/milton6805.cpp
+++ b/src/mame/drivers/milton6805.cpp
@@ -115,11 +115,11 @@ void milton_state::prg_map(address_map &map)
static INPUT_PORTS_START( milton )
INPUT_PORTS_END
-void milton_state::milton(machine_config &config)
-{
+MACHINE_CONFIG_START(milton_state::milton)
+
/* basic machine hardware */
- M6805(config, m_maincpu, 3120000); // MC6805P2, needs a CPU core
- m_maincpu->set_addrmap(AS_PROGRAM, &milton_state::prg_map);
+ MCFG_DEVICE_ADD("maincpu", M6805, 3120000) // MC6805P2, needs a CPU core
+ MCFG_DEVICE_PROGRAM_MAP(prg_map)
// GROMs. They still require a ready callback and external clock
// of 3120000/8 Hz, pulsing their glock_in line (see tmc0430.cpp and ti99_4x.cpp)
@@ -127,8 +127,9 @@ void milton_state::milton(machine_config &config)
TMC0430(config, "grom4", "groms", 0x2000, 1);
SPEAKER(config, "speaker").front_center();
- SP0250(config, "sp0250", 3120000).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_ADD("sp0250", SP0250, 3120000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/mini2440.cpp b/src/mame/drivers/mini2440.cpp
index 6ec4b19e85c..ee445b41584 100644
--- a/src/mame/drivers/mini2440.cpp
+++ b/src/mame/drivers/mini2440.cpp
@@ -225,27 +225,27 @@ void mini2440_state::init_mini2440()
// do nothing
}
-void mini2440_state::mini2440(machine_config &config)
-{
- ARM920T(config, m_maincpu, 400000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &mini2440_state::mini2440_map);
+MACHINE_CONFIG_START(mini2440_state::mini2440)
+ MCFG_DEVICE_ADD("maincpu", ARM920T, 400000000)
+ MCFG_DEVICE_PROGRAM_MAP(mini2440_map)
+
+ MCFG_PALETTE_ADD("palette", 32768)
- PALETTE(config, "palette").set_entries(32768);
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(1024, 768)
+ MCFG_SCREEN_VISIBLE_AREA(0, 239, 0, 319)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(1024, 768);
- screen.set_visarea(0, 239, 0, 319);
- screen.set_screen_update("s3c2440", FUNC(s3c2440_device::screen_update));
+ MCFG_SCREEN_UPDATE_DEVICE("s3c2440", s3c2440_device, screen_update)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- UDA1341TS(config, m_ldac, 0).add_route(ALL_OUTPUTS, "lspeaker", 1.0); // uda1341ts.u12
- UDA1341TS(config, m_rdac, 0).add_route(ALL_OUTPUTS, "rspeaker", 1.0); // uda1341ts.u12
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("ldac", UDA1341TS, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) // uda1341ts.u12
+ MCFG_DEVICE_ADD("rdac", UDA1341TS, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) // uda1341ts.u12
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
S3C2440(config, m_s3c2440, 12000000);
m_s3c2440->set_palette_tag("palette");
@@ -263,7 +263,7 @@ void mini2440_state::mini2440(machine_config &config)
NAND(config, m_nand, 0);
m_nand->set_nand_type(nand_device::chip::K9F1G08U0B);
m_nand->rnb_wr_callback().set(m_s3c2440, FUNC(s3c2440_device::frnb_w));
-}
+MACHINE_CONFIG_END
static INPUT_PORTS_START( mini2440 )
PORT_START( "PENB" )
diff --git a/src/mame/drivers/miniboy7.cpp b/src/mame/drivers/miniboy7.cpp
index 55806601093..c72e1e188d5 100644
--- a/src/mame/drivers/miniboy7.cpp
+++ b/src/mame/drivers/miniboy7.cpp
@@ -259,13 +259,13 @@ MC6845_UPDATE_ROW( miniboy7_state::crtc_update_row )
void miniboy7_state::miniboy7_palette(palette_device &palette) const
{
/*
- prom bits
- 7654 3210
- ---- ---x red component?.
- ---- --x- green component?.
- ---- -x-- blue component?.
- ---- x--- intensity?.
- xxxx ---- unused.
+ prom bits
+ 7654 3210
+ ---- ---x red component?.
+ ---- --x- green component?.
+ ---- -x-- blue component?.
+ ---- x--- intensity?.
+ xxxx ---- unused.
*/
/* 0000IBGR */
@@ -513,11 +513,11 @@ GFXDECODE_END
* Machine Drivers *
***********************************/
-void miniboy7_state::miniboy7(machine_config &config)
-{
+MACHINE_CONFIG_START(miniboy7_state::miniboy7)
+
/* basic machine hardware */
- M6502(config, m_maincpu, MASTER_CLOCK / 16); /* guess */
- m_maincpu->set_addrmap(AS_PROGRAM, &miniboy7_state::miniboy7_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, MASTER_CLOCK / 16) /* guess */
+ MCFG_DEVICE_PROGRAM_MAP(miniboy7_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -529,14 +529,14 @@ void miniboy7_state::miniboy7(machine_config &config)
pia.irqb_handler().set_inputline("maincpu", 0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size((47+1)*8, (39+1)*8); /* Taken from MC6845, registers 00 & 04. Normally programmed with (value-1) */
- screen.set_visarea(0*8, 37*8-1, 0*8, 37*8-1); /* Taken from MC6845, registers 01 & 06 */
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE((47+1)*8, (39+1)*8) /* Taken from MC6845, registers 00 & 04. Normally programmed with (value-1) */
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 37*8-1, 0*8, 37*8-1) /* Taken from MC6845, registers 01 & 06 */
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_miniboy7);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_miniboy7)
PALETTE(config, m_palette, FUNC(miniboy7_state::miniboy7_palette), 256);
@@ -553,7 +553,8 @@ void miniboy7_state::miniboy7(machine_config &config)
ay8910.add_route(ALL_OUTPUTS, "mono", 0.75);
ay8910.port_a_write_callback().set(FUNC(miniboy7_state::ay_pa_w));
ay8910.port_b_write_callback().set(FUNC(miniboy7_state::ay_pb_w));
-}
+
+MACHINE_CONFIG_END
/***********************************
diff --git a/src/mame/drivers/miniforce.cpp b/src/mame/drivers/miniforce.cpp
index ef55e15c2e7..2e9feea1184 100644
--- a/src/mame/drivers/miniforce.cpp
+++ b/src/mame/drivers/miniforce.cpp
@@ -182,20 +182,19 @@ static void miniforce_vme_cards(device_slot_interface &device)
/*
* Machine configuration
*/
-void miniforce_state::miniforce(machine_config &config)
-{
-// ->set_addrmap(AS_PROGRAM, &miniforce_state::miniforce_mem);
- VME(config, "vme", 0);
- VME_SLOT(config, "slot1", miniforce_vme_cards, "fccpu21", 1, "vme");
- VME_SLOT(config, "slot2", miniforce_vme_cards, nullptr, 2, "vme");
- VME_SLOT(config, "slot3", miniforce_vme_cards, nullptr, 3, "vme");
- VME_SLOT(config, "slot4", miniforce_vme_cards, nullptr, 4, "vme");
- VME_SLOT(config, "slot5", miniforce_vme_cards, nullptr, 5, "vme");
- VME_SLOT(config, "slot6", miniforce_vme_cards, nullptr, 6, "vme");
- VME_SLOT(config, "slot7", miniforce_vme_cards, nullptr, 7, "vme");
- VME_SLOT(config, "slot8", miniforce_vme_cards, nullptr, 8, "vme");
- VME_SLOT(config, "slot9", miniforce_vme_cards, nullptr, 9, "vme");
-}
+MACHINE_CONFIG_START(miniforce_state::miniforce)
+// MCFG_DEVICE_PROGRAM_MAP (miniforce_mem)
+ MCFG_VME_DEVICE_ADD("vme")
+ MCFG_VME_SLOT_ADD ("vme", 1, miniforce_vme_cards, "fccpu21")
+ MCFG_VME_SLOT_ADD ("vme", 2, miniforce_vme_cards, nullptr)
+ MCFG_VME_SLOT_ADD ("vme", 3, miniforce_vme_cards, nullptr)
+ MCFG_VME_SLOT_ADD ("vme", 4, miniforce_vme_cards, nullptr)
+ MCFG_VME_SLOT_ADD ("vme", 5, miniforce_vme_cards, nullptr)
+ MCFG_VME_SLOT_ADD ("vme", 6, miniforce_vme_cards, nullptr)
+ MCFG_VME_SLOT_ADD ("vme", 7, miniforce_vme_cards, nullptr)
+ MCFG_VME_SLOT_ADD ("vme", 8, miniforce_vme_cards, nullptr)
+ MCFG_VME_SLOT_ADD ("vme", 9, miniforce_vme_cards, nullptr)
+MACHINE_CONFIG_END
ROM_START(miniforce)
ROM_END
diff --git a/src/mame/drivers/minitel_2_rpic.cpp b/src/mame/drivers/minitel_2_rpic.cpp
index 098fda55139..29dfa0b53aa 100644
--- a/src/mame/drivers/minitel_2_rpic.cpp
+++ b/src/mame/drivers/minitel_2_rpic.cpp
@@ -266,14 +266,14 @@ READ8_MEMBER(minitel_state::dev_keyb_ser_r)
READ8_MEMBER ( minitel_state::ts9347_io_r )
{
- return m_ts9347->data_r(offset);
+ return m_ts9347->data_r(space, offset, 0xff);
}
WRITE8_MEMBER ( minitel_state::ts9347_io_w )
{
LOG("minitel_state::ts9347_io_w : %x %x\n",offset, data);
- m_ts9347->data_w(offset, data);
+ m_ts9347->data_w(space, offset, data, 0xff);
}
TIMER_DEVICE_CALLBACK_MEMBER(minitel_state::minitel_scanline)
diff --git a/src/mame/drivers/minivadr.cpp b/src/mame/drivers/minivadr.cpp
index 0b0b1bd4c88..40b9b0c2865 100644
--- a/src/mame/drivers/minivadr.cpp
+++ b/src/mame/drivers/minivadr.cpp
@@ -110,23 +110,23 @@ static INPUT_PORTS_START( minivadr )
INPUT_PORTS_END
-void minivadr_state::minivadr(machine_config &config)
-{
+MACHINE_CONFIG_START(minivadr_state::minivadr)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(24'000'000) / 6);
- m_maincpu->set_addrmap(AS_PROGRAM, &minivadr_state::minivadr_map);
- m_maincpu->set_vblank_int("screen", FUNC(minivadr_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(24'000'000) / 6)
+ MCFG_DEVICE_PROGRAM_MAP(minivadr_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", minivadr_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 16, 240-1);
- screen.set_screen_update(FUNC(minivadr_state::screen_update_minivadr));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(minivadr_state, screen_update_minivadr)
/* the board has no sound hardware */
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/mips.cpp b/src/mame/drivers/mips.cpp
index eeb409abad7..f1b3f833181 100644
--- a/src/mame/drivers/mips.cpp
+++ b/src/mame/drivers/mips.cpp
@@ -43,13 +43,13 @@
* https://web.archive.org/web/20140518203135/http://no-l.org/pages/riscos.html
*
* TODO (rx2030)
+ * - remaining iop interface
+ * - figure out the brcond0 signal
* - keyboard controller and keyboard
* - buzzer
*
* TODO (rx3230)
* - verify/complete address maps
- * - keyboard controller and interrupts
- * - isa slot and colour graphics board
* - idprom
*
* Ref Part Function
@@ -133,7 +133,7 @@
/*
* Rx2030 WIP
*
- * status: boots RISC/os, requires unimplemented MIPS keyboard
+ * status: loads RISC/os, but panics
*
* V50 internal peripherals:
* base = 0xfe00
@@ -171,7 +171,7 @@
/*
* Rx3230 WIP
*
- * status: boots RISC/os from network, panics during installation
+ * status: boots to monitor
*
* R3000 interrupts
* 0 <- lance, scc, slot, keyboard
@@ -231,28 +231,6 @@ void rx2030_state::rx2030_init()
if (!m_vram)
m_iop_interface |= VID_ABSENT;
-
- /*
- * HACK: the prom bfs code broadcasts to the network address (i.e. the
- * host portion is "all zeroes"), instead of to the standard "all ones".
- * This makes it very difficult to receive the bfs request in a modern host
- * OS; the patch changes the code to broadcast to the standard broadcast
- * address instead.
- *
- * Technique is identical to that described for the rx3230 below.
- */
- switch (system_bios())
- {
- case 1:
- m_rom[0x1ab68 >> 1] = 0x0624;
- m_rom[0x1ab6a >> 1] = 0xffff;
- break;
-
- case 2:
- m_rom[0x1a7f8 >> 1] = 0x0624;
- m_rom[0x1a7fa >> 1] = 0xffff;
- break;
- }
}
u16 rx2030_state::mmu_r(offs_t offset, u16 mem_mask)
@@ -290,7 +268,7 @@ void rx2030_state::iop_program_map(address_map &map)
map(0x00000, 0x1ffff).ram();
map(0x20000, 0x3ffff).rw(FUNC(rx2030_state::mmu_r), FUNC(rx2030_state::mmu_w));
- map(0x80000, 0xbffff).rom().region("rx2030", 0).mirror(0x40000);
+ map(0x80000, 0xbffff).rom().region("v50_ipl", 0).mirror(0x40000);
}
void rx2030_state::iop_io_map(address_map &map)
@@ -333,10 +311,10 @@ void rx2030_state::iop_io_map(address_map &map)
map(0x0200, 0x0201).rw(m_fio, FUNC(z8038_device::fifo_r<1>), FUNC(z8038_device::fifo_w<1>)).umask16(0xff);
map(0x0202, 0x0203).rw(m_fio, FUNC(z8038_device::reg_r<1>), FUNC(z8038_device::reg_w<1>)).umask16(0xff);
- map(0x0240, 0x0241).lw8("rtc", [this](u8 data) { m_rtc->write(0, data); }).umask16(0xff00);
+ map(0x0240, 0x0241).lw8("rtc", [this](address_space &space, offs_t offset, u8 data) { m_rtc->write(space, 0, data); }).umask16(0xff00);
map(0x0280, 0x0281).lrw8("rtc",
- [this]() { return m_rtc->read(1); },
- [this](u8 data) { m_rtc->write(1, data); }).umask16(0xff00);
+ [this](address_space &space, offs_t offset) { return m_rtc->read(space, 1); },
+ [this](address_space &space, offs_t offset, u8 data) { m_rtc->write(space, 1, data); }).umask16(0xff00);
map(0x02c0, 0x2c1).lw8("cpu_interface", [this](u8 data)
{
@@ -356,7 +334,7 @@ void rx2030_state::iop_io_map(address_map &map)
else
m_iop->set_input_line(INPUT_LINE_IRQ2, CLEAR_LINE);
m_iop_interface |= IOP_IACK;
- m_iop_interface &= ~IOP_IRQ;
+ m_iop_interface &= ~IOP_IRQ; // maybe?
break;
default:
@@ -432,7 +410,7 @@ void rx2030_state::rx2030_map(address_map &map)
case 19: // keyboard
LOGMASKED(LOG_IOCB, "iocb %s command 0x%04x data 0x%02x (%s)\n",
iop_commands[iocb], iop_cmd,
- m_ram->read(0x1000 + iocb_cmdparam + 7),
+ m_ram->read(0x1000 + iocb_cmdparam + 6),
machine().describe_context());
break;
@@ -448,7 +426,7 @@ void rx2030_state::rx2030_map(address_map &map)
// interrupt the iop
m_iop_interface &= ~IOP_IACK;
- m_iop_interface |= IOP_IRQ;
+ m_iop_interface |= IOP_IRQ; // maybe?
m_iop->set_input_line(INPUT_LINE_IRQ2, ASSERT_LINE);
break;
@@ -499,13 +477,12 @@ static void mips_scsi_devices(device_slot_interface &device)
void rx2030_state::rx2030(machine_config &config)
{
R2000A(config, m_cpu, 33.333_MHz_XTAL / 2, 32768, 32768);
- m_cpu->set_fpu(mips1_device_base::MIPS_R2010A);
+ m_cpu->set_fpurev(mips1_device_base::MIPS_R2010A);
m_cpu->in_brcond<0>().set([]() { return 1; }); // writeback complete
V50(config, m_iop, 20_MHz_XTAL / 2);
m_iop->set_addrmap(AS_PROGRAM, &rx2030_state::iop_program_map);
m_iop->set_addrmap(AS_IO, &rx2030_state::iop_io_map);
- m_iop->out_handler<2>().set(m_buzzer, FUNC(speaker_sound_device::level_w));
// general dma configuration
m_iop->out_hreq_cb().set(m_iop, FUNC(v50_device::hack_w));
@@ -542,7 +519,6 @@ void rx2030_state::rx2030(machine_config &config)
//m_kbdc->hot_res().set_inputline(m_maincpu, INPUT_LINE_RESET);
m_kbdc->kbd_clk().set(kbdc, FUNC(pc_kbdc_device::clock_write_from_mb));
m_kbdc->kbd_data().set(kbdc, FUNC(pc_kbdc_device::data_write_from_mb));
- m_kbdc->set_default_bios_tag("award15");
SCC85C30(config, m_scc, 1.8432_MHz_XTAL);
m_scc->configure_channels(m_scc->clock(), m_scc->clock(), m_scc->clock(), m_scc->clock());
@@ -571,24 +547,33 @@ void rx2030_state::rx2030(machine_config &config)
FLOPPY_CONNECTOR(config, "fdc:0", "35hd", FLOPPY_35_HD, true, mips_floppy_formats).enable_sound(false);
// scsi bus and devices
- NSCSI_BUS(config, m_scsibus);
- NSCSI_CONNECTOR(config, "scsi:0", mips_scsi_devices, "harddisk");
- NSCSI_CONNECTOR(config, "scsi:1", mips_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:2", mips_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:3", mips_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:4", mips_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:5", mips_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:6", mips_scsi_devices, nullptr);
-
- // scsi host adapter (clock assumed)
- NSCSI_CONNECTOR(config, "scsi:7").option_set("aic6250", AIC6250).clock(10_MHz_XTAL).machine_config(
- [this](device_t *device)
- {
- aic6250_device &adapter = downcast<aic6250_device &>(*device);
+ NSCSI_BUS(config, m_scsibus, 0);
- adapter.int_cb().set_inputline(m_iop, INPUT_LINE_IRQ7).invert();
- adapter.breq_cb().set(m_iop, FUNC(v50_device::dreq_w<1>));
- });
+ nscsi_connector &harddisk(NSCSI_CONNECTOR(config, "scsi:0", 0));
+ mips_scsi_devices(harddisk);
+ harddisk.set_default_option("harddisk");
+
+ mips_scsi_devices(NSCSI_CONNECTOR(config, "scsi:1", 0));
+ mips_scsi_devices(NSCSI_CONNECTOR(config, "scsi:2", 0));
+ mips_scsi_devices(NSCSI_CONNECTOR(config, "scsi:3", 0));
+ mips_scsi_devices(NSCSI_CONNECTOR(config, "scsi:4", 0));
+ mips_scsi_devices(NSCSI_CONNECTOR(config, "scsi:5", 0));
+ mips_scsi_devices(NSCSI_CONNECTOR(config, "scsi:6", 0));
+
+ // scsi host adapter
+ nscsi_connector &adapter(NSCSI_CONNECTOR(config, "scsi:7", 0));
+ adapter.option_add_internal("aic6250", AIC6250);
+ adapter.set_default_option("aic6250");
+ adapter.set_fixed(true);
+ adapter.set_option_machine_config("aic6250", [this](device_t *device)
+ {
+ aic6250_device &adapter = downcast<aic6250_device &>(*device);
+
+ adapter.set_clock(10_MHz_XTAL); // clock assumed
+
+ adapter.int_cb().set_inputline(m_iop, INPUT_LINE_IRQ7).invert();
+ adapter.breq_cb().set(m_iop, FUNC(v50_device::dreq_w<1>));
+ });
// ethernet
AM7990(config, m_net);
@@ -771,7 +756,7 @@ void rx3230_state::rx3230(machine_config &config)
{
R3000A(config, m_cpu, 50_MHz_XTAL / 2, 32768, 32768);
m_cpu->set_addrmap(AS_PROGRAM, &rx3230_state::rx3230_map);
- m_cpu->set_fpu(mips1_device_base::MIPS_R3010A);
+ m_cpu->set_fpurev(mips1_device_base::MIPS_R3010A);
m_cpu->in_brcond<0>().set([]() { return 1; }); // writeback complete
// 32 SIMM slots, 8-128MB memory, banks of 8 1MB or 4MB SIMMs
@@ -782,33 +767,40 @@ void rx3230_state::rx3230(machine_config &config)
MIPS_RAMBO(config, m_rambo, 25_MHz_XTAL / 4);
m_rambo->timer_out().set_inputline(m_cpu, INPUT_LINE_IRQ2);
- m_rambo->irq_out().set_inputline(m_cpu, INPUT_LINE_IRQ1);
m_rambo->parity_out().set_inputline(m_cpu, INPUT_LINE_IRQ5);
//m_rambo->buzzer_out().set(m_buzzer, FUNC(speaker_sound_device::level_w));
m_rambo->set_ram(m_ram);
- m_rambo->dma_r<0>().set("scsi:7:ncr53c94", FUNC(ncr53c94_device::dma16_r));
- m_rambo->dma_w<0>().set("scsi:7:ncr53c94", FUNC(ncr53c94_device::dma16_w));
+ m_rambo->dma_r<0>().set("scsi:7:ncr53c94", FUNC(ncr53c94_device::dma_r));
+ m_rambo->dma_w<0>().set("scsi:7:ncr53c94", FUNC(ncr53c94_device::dma_w));
// scsi bus and devices
- NSCSI_BUS(config, m_scsibus);
- NSCSI_CONNECTOR(config, "scsi:0", mips_scsi_devices, "harddisk");
- NSCSI_CONNECTOR(config, "scsi:1", mips_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:2", mips_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:3", mips_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:4", mips_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:5", mips_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsi:6", mips_scsi_devices, nullptr);
+ NSCSI_BUS(config, m_scsibus, 0);
+
+ nscsi_connector &harddisk(NSCSI_CONNECTOR(config, "scsi:0", 0));
+ mips_scsi_devices(harddisk);
+ harddisk.set_default_option("harddisk");
+
+ mips_scsi_devices(NSCSI_CONNECTOR(config, "scsi:1", 0));
+ mips_scsi_devices(NSCSI_CONNECTOR(config, "scsi:2", 0));
+ mips_scsi_devices(NSCSI_CONNECTOR(config, "scsi:3", 0));
+ mips_scsi_devices(NSCSI_CONNECTOR(config, "scsi:4", 0));
+ mips_scsi_devices(NSCSI_CONNECTOR(config, "scsi:5", 0));
+ mips_scsi_devices(NSCSI_CONNECTOR(config, "scsi:6", 0));
// scsi host adapter
- NSCSI_CONNECTOR(config, "scsi:7").option_set("ncr53c94", NCR53C94).clock(24_MHz_XTAL).machine_config(
- [this](device_t *device)
- {
- ncr53c94_device &adapter = downcast<ncr53c94_device &>(*device);
+ nscsi_connector &adapter(NSCSI_CONNECTOR(config, "scsi:7", 0));
+ adapter.option_add_internal("ncr53c94", NCR53C94);
+ adapter.set_default_option("ncr53c94");
+ adapter.set_fixed(true);
+ adapter.set_option_machine_config("ncr53c94", [this](device_t *device)
+ {
+ ncr53c94_device &adapter = downcast<ncr53c94_device &>(*device);
- adapter.set_busmd(ncr53c94_device::busmd_t::BUSMD_1);
- adapter.irq_handler_cb().set(*this, FUNC(rx3230_state::irq_w<INT_SCSI>)).invert();
- adapter.drq_handler_cb().set(m_rambo, FUNC(mips_rambo_device::drq_w<0>));
- });
+ adapter.set_clock(24_MHz_XTAL);
+
+ adapter.irq_handler_cb().set(*this, FUNC(rx3230_state::irq_w<INT_SCSI>)).invert();
+ adapter.drq_handler_cb().set(m_rambo, FUNC(mips_rambo_device::drq_w<0>));
+ });
// ethernet
AM7990(config, m_net);
@@ -855,7 +847,7 @@ void rx3230_state::rx3230(machine_config &config)
AT_KEYBOARD_CONTROLLER(config, m_kbdc, 12_MHz_XTAL); // TODO: confirm
m_kbdc->kbd_clk().set(kbdc, FUNC(pc_kbdc_device::clock_write_from_mb));
m_kbdc->kbd_data().set(kbdc, FUNC(pc_kbdc_device::data_write_from_mb));
- //m_kbdc->kbd_irq().set(FUNC(rx3230_state::irq_w<INT_KBD>));
+ m_kbdc->kbd_irq().set(FUNC(rx3230_state::irq_w<INT_KBD>));
// buzzer
SPEAKER(config, "mono").front_center();
@@ -966,7 +958,7 @@ void rx3230_state::lance_w(offs_t offset, u16 data, u16 mem_mask)
}
ROM_START(rx2030)
- ROM_REGION16_LE(0x40000, "rx2030", 0)
+ ROM_REGION16_LE(0x40000, "v50_ipl", 0)
ROM_SYSTEM_BIOS(0, "v4.32", "Rx2030 v4.32, Jan 1991")
ROMX_LOAD("50-00121__005.u139", 0x00000, 0x10000, CRC(b2f42665) SHA1(81c83aa6b8865338fda5c03733ede91749997648), ROM_BIOS(0) | ROM_SKIP(1))
ROMX_LOAD("50-00120__005.u140", 0x00001, 0x10000, CRC(0ffa485e) SHA1(7cdfb81d1a547c5ccc88e1e0ef73d447cd03e9e2), ROM_BIOS(0) | ROM_SKIP(1))
@@ -979,6 +971,9 @@ ROM_START(rx2030)
ROMX_LOAD("50-00119__003.u141", 0x20001, 0x10000, CRC(c8469906) SHA1(69bbf4b5c415b2e2156a4467bf9cb30e79f586ef), ROM_BIOS(1) | ROM_SKIP(1))
ROMX_LOAD("50-00118__003.u142", 0x20000, 0x10000, CRC(18cc001a) SHA1(198023e92e1e3ba2fc8637f5dd6f370e7e023fdd), ROM_BIOS(1) | ROM_SKIP(1))
+ ROM_REGION(0x800, "i8742_eprom", 0)
+ ROM_LOAD("keyboard_1.5.bin", 0x000, 0x800, CRC(f86ba0f7) SHA1(1ad475451db35a76d929824c035d582279fbe3a3))
+
/*
* The following isn't a real dump, but a hand-made nvram image that allows
* entry to the boot monitor. Variables can be adjusted via the monitor,
diff --git a/src/mame/drivers/mirage.cpp b/src/mame/drivers/mirage.cpp
index 49f970c0b9d..661b70d0ecb 100644
--- a/src/mame/drivers/mirage.cpp
+++ b/src/mame/drivers/mirage.cpp
@@ -291,27 +291,27 @@ void miragemj_state::machine_reset()
m_mux_data = 0;
}
-void miragemj_state::mirage(machine_config &config)
-{
+MACHINE_CONFIG_START(miragemj_state::mirage)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 28000000/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &miragemj_state::mirage_map);
- m_maincpu->set_vblank_int("screen", FUNC(miragemj_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 28000000/2)
+ MCFG_DEVICE_PROGRAM_MAP(mirage_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", miragemj_state, irq6_line_hold)
EEPROM_93C46_16BIT(config, "eeprom"); // 93C45
/* video hardware */
- BUFFERED_SPRITERAM16(config, m_spriteram);
+ MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM16)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(529));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(miragemj_state::screen_update_mirage));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(miragemj_state, screen_update_mirage)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising))
- GFXDECODE(config, "gfxdecode", "palette", gfx_mirage);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mirage)
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 1024);
DECO16IC(config, m_deco_tilegen, 0);
@@ -337,10 +337,12 @@ void miragemj_state::mirage(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki_bgm, 2000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30); // clock frequency & pin 7 not verified
+ MCFG_DEVICE_ADD("oki_bgm", OKIM6295, 2000000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
- OKIM6295(config, m_oki_sfx, 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.70); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki_sfx", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
+MACHINE_CONFIG_END
ROM_START( mirage )
diff --git a/src/mame/drivers/mirax.cpp b/src/mame/drivers/mirax.cpp
index 41946d23965..5a1f0233b93 100644
--- a/src/mame/drivers/mirax.cpp
+++ b/src/mame/drivers/mirax.cpp
@@ -277,14 +277,14 @@ WRITE8_MEMBER(mirax_state::audio_w)
WRITE8_MEMBER(mirax_state::ay1_sel)
{
- m_ay[0]->address_w(m_nAyCtrl);
- m_ay[0]->data_w(data);
+ m_ay[0]->address_w(space,0,m_nAyCtrl);
+ m_ay[0]->data_w(space,0,data);
}
WRITE8_MEMBER(mirax_state::ay2_sel)
{
- m_ay[1]->address_w(m_nAyCtrl);
- m_ay[1]->data_w(data);
+ m_ay[1]->address_w(space,0,m_nAyCtrl);
+ m_ay[1]->data_w(space,0,data);
}
WRITE_LINE_MEMBER(mirax_state::nmi_mask_w)
@@ -482,14 +482,13 @@ WRITE_LINE_MEMBER(mirax_state::vblank_irq)
m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
-void mirax_state::mirax(machine_config &config)
-{
- Z80(config, m_maincpu, 12000000/4); // ceramic potted module, encrypted z80
- m_maincpu->set_addrmap(AS_PROGRAM, &mirax_state::mirax_main_map);
+MACHINE_CONFIG_START(mirax_state::mirax)
+ MCFG_DEVICE_ADD("maincpu", Z80, 12000000/4) // ceramic potted module, encrypted z80
+ MCFG_DEVICE_PROGRAM_MAP(mirax_main_map)
- Z80(config, m_audiocpu, 12000000/4);
- m_audiocpu->set_addrmap(AS_PROGRAM, &mirax_state::mirax_sound_map);
- m_audiocpu->set_periodic_int(FUNC(mirax_state::irq0_line_hold), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("audiocpu", Z80, 12000000/4)
+ MCFG_DEVICE_PROGRAM_MAP(mirax_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(mirax_state, irq0_line_hold, 4*60)
ls259_device &mainlatch(LS259(config, "mainlatch")); // R10
mainlatch.q_out_cb<0>().set(FUNC(mirax_state::coin_counter0_w));
@@ -501,14 +500,14 @@ void mirax_state::mirax(machine_config &config)
mainlatch.q_out_cb<7>().set(FUNC(mirax_state::flip_screen_y_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(256, 256);
- screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(mirax_state::screen_update));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(mirax_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mirax_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mirax_state, vblank_irq))
PALETTE(config, m_palette, FUNC(mirax_state::mirax_palette), 0x40);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mirax);
@@ -519,7 +518,7 @@ void mirax_state::mirax(machine_config &config)
AY8912(config, m_ay[0], 12000000/4).add_route(ALL_OUTPUTS, "mono", 0.80);
AY8912(config, m_ay[1], 12000000/4).add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+MACHINE_CONFIG_END
ROM_START( mirax )
diff --git a/src/mame/drivers/missb2.cpp b/src/mame/drivers/missb2.cpp
index 99fe7e73234..e6fd8d6e23d 100644
--- a/src/mame/drivers/missb2.cpp
+++ b/src/mame/drivers/missb2.cpp
@@ -175,12 +175,12 @@ WRITE8_MEMBER(missb2_state::missb2_bg_bank_w)
WRITE8_MEMBER(missb2_state::missb2_oki_w)
{
- m_oki->write(bitswap<8>(data, 7,5,6,4,3,1,2,0));
+ m_oki->write_command(bitswap<8>(data, 7,5,6,4,3,1,2,0));
}
READ8_MEMBER(missb2_state::missb2_oki_r)
{
- return bitswap<8>(m_oki->read(), 7,5,6,4,3,1,2,0);
+ return bitswap<8>(m_oki->read_status(), 7,5,6,4,3,1,2,0);
}
/* Memory Maps */
diff --git a/src/mame/drivers/missbamby.cpp b/src/mame/drivers/missbamby.cpp
deleted file mode 100644
index 305d1955619..00000000000
--- a/src/mame/drivers/missbamby.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:
-
-/*
-Miss Bamby - Automatics Pasqual (ClawGrip 2019-01-21)
- _____________________________________________________________
- | _______ |
- | |__??__| ____________ |
- | __________________ | EMPTY | |
- | | M5L8085AP | |_SOCKET____| |
- | |_________________| ____________ |
- | ______________ | ROM1 | |
- | XTAL |M5L8212P | |___________| |
- | __ 6.144 |____________| ____________ |
- | |R| | ROM0 | |
- __| |___________| |
-|__| ________ ________ ___________________ ____________ |
-|__| |ULN2003A |ULN2003A | M5L8155P | |_D5101LC__| |
-|__| |__________________| ____________ |
-|__| ________ _________ |_D5101LC__| |
-|__| _______ |74LS393| |74LS74B1 |
-|__| |7407N | ________ |
-|__| ________ ________ |GD4001B| |
-|__| |74LS14_| |74LS153| _________ |
-|__| ____ | BATT | |
-|__| _______ ___________________ |D | | 3.6V | |
-|__| |LM380N| | AY-3-8910 | |I | |_________| |
-|__| |__________________| |P | ______ |
-|__| |S__| LM311N |
- |____________________________________________________________|
-*/
-
-#include "emu.h"
-#include "emupal.h"
-#include "screen.h"
-#include "speaker.h"
-#include "cpu/i8085/i8085.h"
-#include "machine/i8155.h"
-//#include "machine/nvram.h"
-#include "machine/pit8253.h"
-#include "sound/ay8910.h"
-
-class missbamby_state : public driver_device
-{
-public:
- missbamby_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu")
- {
- }
-
- void missbamby(machine_config &config);
-
-private:
- required_device<cpu_device> m_maincpu;
-
- uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
-
- void io_map(address_map &map);
- void prg_map(address_map &map);
-
- virtual void machine_start() override;
-};
-
-uint32_t missbamby_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- return 0;
-}
-
-void missbamby_state::prg_map(address_map &map) // preliminary, everything to be taken with a grain of salt
-{
- map(0x0000, 0x3fff).rom();
- map(0x5000, 0x50ff).ram();
- //map(0x6000, 0x6000).r(); // only read once at start-up?
- map(0x8000, 0x80ff).ram();
- map(0x8800, 0x88ff).rw("i8155", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
- map(0x8900, 0x8907).rw("i8155", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
- map(0x9000, 0x9003).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
-}
-
-void missbamby_state::io_map(address_map &map)
-{
- map.global_mask(0xff);
- map.unmap_value_high();
-}
-
-
-static INPUT_PORTS_START( missbamby )
- PORT_START("IN0")
- PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("DSW1")
- 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
-
-
-void missbamby_state::machine_start()
-{
-}
-
-
-
-void missbamby_state::missbamby(machine_config &config)
-{
- /* basic machine hardware */
- I8085A(config, m_maincpu, 6.144_MHz_XTAL); // M5L8085AP
- m_maincpu->set_addrmap(AS_PROGRAM, &missbamby_state::prg_map);
- m_maincpu->set_addrmap(AS_IO, &missbamby_state::io_map);
-
- PIT8253(config, "pit", 6.144_MHz_XTAL/4); // guess: only ML82 readable, might be something else
-
- I8155(config, "i8155", 6.144_MHz_XTAL/2); // M5L8155P, guessed divisor
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- AY8910(config, "ay8910", 6.144_MHz_XTAL / 4).add_route(ALL_OUTPUTS, "mono", 1.0); // guess
-}
-
-
-ROM_START( msbamby )
- ROM_REGION(0x4000, "maincpu", 0)
- ROM_LOAD( "1.bin", 0x0000, 0x2000, CRC(7b5efbd9) SHA1(abb4b4432021945aee474c4bdd83979f6460c671) )
- ROM_LOAD( "2.bin", 0x2000, 0x2000, CRC(6048d5cd) SHA1(a3bbf43b1474de75aef9957b967ead96b9a18fc5) )
-ROM_END
-
-
-GAME( 198?, msbamby, 0, missbamby, missbamby, missbamby_state, empty_init, ROT0, "Automatics Pasqual", "Miss Bamby", MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/missile.cpp b/src/mame/drivers/missile.cpp
index 2a62d81080f..87112ab0d88 100644
--- a/src/mame/drivers/missile.cpp
+++ b/src/mame/drivers/missile.cpp
@@ -742,7 +742,7 @@ WRITE8_MEMBER(missile_state::missile_w)
else if (offset < 0x4800)
{
if (m_pokey.found())
- m_pokey->write(offset, data);
+ m_pokey->write(space, offset, data, 0xff);
}
/* OUT0 */
@@ -804,7 +804,7 @@ READ8_MEMBER(missile_state::missile_r)
else if (offset < 0x4800)
{
if (m_pokey.found())
- result = m_pokey->read(offset & 0x0f);
+ result = m_pokey->read(space, offset & 0x0f, 0xff);
}
/* IN0 */
diff --git a/src/mame/drivers/mitchell.cpp b/src/mame/drivers/mitchell.cpp
index 5bddb9f9bdb..044ebd58744 100644
--- a/src/mame/drivers/mitchell.cpp
+++ b/src/mame/drivers/mitchell.cpp
@@ -1161,29 +1161,30 @@ TIMER_DEVICE_CALLBACK_MEMBER(mitchell_state::mitchell_irq)
}
}
-void mitchell_state::mgakuen(machine_config &config)
-{
+MACHINE_CONFIG_START(mitchell_state::mgakuen)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(16'000'000)/2); /* probably same clock as the other mitchell hardware games */
- m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mgakuen_map);
- m_maincpu->set_addrmap(AS_IO, &mitchell_state::mitchell_io_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(mitchell_state::mitchell_irq), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(16'000'000)/2) /* probably same clock as the other mitchell hardware games */
+ MCFG_DEVICE_PROGRAM_MAP(mgakuen_map)
+ MCFG_DEVICE_IO_MAP(mitchell_io_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mitchell_state, mitchell_irq, "screen", 0, 1)
MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell)
MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell)
- EEPROM_93C46_16BIT(config, m_eeprom);
+ EEPROM_93C46_16BIT(config, "eeprom");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(mitchell_state::screen_update_pang));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_mgakuen);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mgakuen)
+
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 1024); // less colors than the others
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
@@ -1191,37 +1192,39 @@ void mitchell_state::mgakuen(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH); /* probably same clock as the other mitchell hardware games */
- m_oki->add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH) /* probably same clock as the other mitchell hardware games */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(16'000'000)/4)); /* probably same clock as the other mitchell hardware games */
- ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(16'000'000)/4) /* probably same clock as the other mitchell hardware games */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_START(mitchell_state::pang)
-void mitchell_state::pang(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mitchell_map);
- m_maincpu->set_addrmap(AS_IO, &mitchell_state::mitchell_io_map);
- m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(mitchell_state::mitchell_irq), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(16'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(mitchell_map)
+ MCFG_DEVICE_IO_MAP(mitchell_io_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mitchell_state, mitchell_irq, "screen", 0, 1)
MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell)
MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell)
- EEPROM_93C46_16BIT(config, m_eeprom);
+ EEPROM_93C46_16BIT(config, "eeprom");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57.42); /* verified on pcb */
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(mitchell_state::screen_update_pang));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_mitchell);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57.42) /* verified on pcb */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mitchell)
+
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048);
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
@@ -1229,12 +1232,12 @@ void mitchell_state::pang(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH); /* verified on pcb */
- m_oki->add_route(ALL_OUTPUTS, "mono", 0.30);
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
- ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(16'000'000)/4)); /* verified on pcb */
- ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymsnd",YM2413, XTAL(16'000'000)/4) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
void mitchell_state::pangnv(machine_config &config)
{
@@ -1272,71 +1275,74 @@ WRITE_LINE_MEMBER(mitchell_state::spangbl_adpcm_int)
m_audiocpu->set_input_line(INPUT_LINE_NMI, m_sample_select);
}
-void mitchell_state::spangbl(machine_config &config)
-{
+
+MACHINE_CONFIG_START(mitchell_state::spangbl)
pangnv(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::spangbl_map);
- m_maincpu->set_addrmap(AS_IO, &mitchell_state::spangbl_io_map);
- m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map);
- m_maincpu->set_vblank_int("screen", FUNC(mitchell_state::irq0_line_hold));
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(spangbl_map)
+ MCFG_DEVICE_IO_MAP(spangbl_io_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mitchell_state, irq0_line_hold)
- config.device_remove("scantimer");
+ MCFG_DEVICE_REMOVE("scantimer")
- Z80(config, m_audiocpu, 4000000); // Z80A CPU; clock unknown
- m_audiocpu->set_addrmap(AS_PROGRAM, &mitchell_state::spangbl_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) // Z80A CPU; clock unknown
+ MCFG_DEVICE_PROGRAM_MAP(spangbl_sound_map)
- m_gfxdecode->set_info(gfx_spangbl);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_spangbl)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
- config.device_remove("oki");
- MSM5205(config, m_msm, 400000); // clock and prescaler unknown
- m_msm->vck_legacy_callback().set(FUNC(mitchell_state::spangbl_adpcm_int)); // controls music as well as ADCPM rate
- m_msm->set_prescaler_selector(msm5205_device::S96_4B);
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_REMOVE("oki")
+ MCFG_DEVICE_ADD("msm", MSM5205, 400000) // clock and prescaler unknown
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, mitchell_state, spangbl_adpcm_int)) // controls music as well as ADCPM rate
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
LS157(config, m_adpcm_select, 0);
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
-}
+MACHINE_CONFIG_END
-void mitchell_state::pangba(machine_config &config)
-{
+MACHINE_CONFIG_START(mitchell_state::pangba)
spangbl(config);
- m_audiocpu->set_addrmap(AS_PROGRAM, &mitchell_state::pangba_sound_map);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(pangba_sound_map)
- YM3812(config.replace(), "ymsnd", 4000000).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_REPLACE("ymsnd", YM3812, 4000000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(mitchell_state::mstworld)
-void mitchell_state::mstworld(machine_config &config)
-{
/* basic machine hardware */
/* it doesn't glitch with the clock speed set to 4x normal, however this is incorrect..
the interrupt handling (and probably various irq flags / vbl flags handling etc.) is
more likely wrong.. the game appears to run too fast anyway .. */
- Z80(config, m_maincpu, 6000000*4);
- m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mitchell_map);
- m_maincpu->set_addrmap(AS_IO, &mitchell_state::mstworld_io_map);
- m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map);
- m_maincpu->set_vblank_int("screen", FUNC(mitchell_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 6000000*4)
+ MCFG_DEVICE_PROGRAM_MAP(mitchell_map)
+ MCFG_DEVICE_IO_MAP(mstworld_io_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mitchell_state, irq0_line_hold)
- Z80(config, m_audiocpu, 6000000); /* 6 MHz? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &mitchell_state::mstworld_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80,6000000) /* 6 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(mstworld_sound_map)
MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell)
MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(mitchell_state::screen_update_pang));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_mstworld);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mstworld)
+
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048);
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
@@ -1346,31 +1352,33 @@ void mitchell_state::mstworld(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- OKIM6295(config, m_oki, 990000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
- m_oki->add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 990000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_START(mitchell_state::marukin)
-void mitchell_state::marukin(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mitchell_map);
- m_maincpu->set_addrmap(AS_IO, &mitchell_state::mitchell_io_map);
- m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(mitchell_state::mitchell_irq), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(16'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(mitchell_map)
+ MCFG_DEVICE_IO_MAP(mitchell_io_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mitchell_state, mitchell_irq, "screen", 0, 1)
- EEPROM_93C46_16BIT(config, m_eeprom);
+ EEPROM_93C46_16BIT(config, "eeprom");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(mitchell_state::screen_update_pang));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_marukin);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_marukin)
+
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048);
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
@@ -1378,12 +1386,12 @@ void mitchell_state::marukin(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH); /* verified on pcb */
- m_oki->add_route(ALL_OUTPUTS, "mono", 0.30);
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
- ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(16'000'000)/4)); /* verified on pcb */
- ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(16'000'000)/4) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/*
@@ -1403,27 +1411,28 @@ Vsync is 59.09hz
*/
-void mitchell_state::pkladiesbl(machine_config &config)
-{
+MACHINE_CONFIG_START(mitchell_state::pkladiesbl)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mitchell_map);
- m_maincpu->set_addrmap(AS_IO, &mitchell_state::mitchell_io_map);
- m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(mitchell_state::mitchell_irq), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(mitchell_map)
+ MCFG_DEVICE_IO_MAP(mitchell_io_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mitchell_state, mitchell_irq, "screen", 0, 1)
- EEPROM_93C46_16BIT(config, m_eeprom);
+ EEPROM_93C46_16BIT(config, "eeprom");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.09); /* verified on pcb */
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(mitchell_state::screen_update_pang));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_pkladiesbl);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.09) /* verified on pcb */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pkladiesbl)
+
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048);
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
@@ -1431,12 +1440,12 @@ void mitchell_state::pkladiesbl(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH); /* It should be a OKIM5205 with a 384khz resonator */
- m_oki->add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH) /* It should be a OKIM5205 with a 384khz resonator */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- ym2413_device &ymsnd(YM2413(config, "ymsnd", 3750000)); /* verified on pcb, read the comments */
- ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2413, 3750000) /* verified on pcb, read the comments */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/*************************************
*
@@ -1799,7 +1808,7 @@ ROM_END
// Similar to "pangbold" but with data on a battery backed 256Kbit RAM (undumped), on a small sub-board with the Z84 and a PLD (also undumped, was protected).
ROM_START( pangbp )
ROM_REGION( 2*0x50000, "maincpu", 0 )
- ROM_LOAD( "pangbp_nvr.bin", 0x00000, 0x08000, NO_DUMP ) // Opcodes + data (?) on battery backed RAM (the battery was dead, so it's undumped)
+ ROM_LOAD( "pangbp_nvr.bin", 0x00000, 0x08000, NO_DUMP ) // Opcodes + data (?) on battery backed RAM (the battery was dead, so it's undumped)
ROM_LOAD( "pangbp_4.6l", 0x50000, 0x08000, CRC(01bc7ecf) SHA1(7f3e3cf5f5d03d1c2d1ad624627feb941aea7414) ) // Opcodes + data on ROM (almost the same as the first half of "4.6l" on "pangbold")
ROM_LOAD( "pangbp_2.3l", 0x60000, 0x20000, CRC(3f15bb61) SHA1(4f74ee25f32a201482840158b4d4c7aca1cda684) ) // Decrypted opcodes
ROM_LOAD( "pangbp_3.5l", 0x10000, 0x20000, CRC(ce6375e4) SHA1(fdd40d82553fcd4d2762ecfd898d0e3112dfde79) ) // Decrypted data
diff --git a/src/mame/drivers/mjkjidai.cpp b/src/mame/drivers/mjkjidai.cpp
index 2aa94b2d72a..8470d46d095 100644
--- a/src/mame/drivers/mjkjidai.cpp
+++ b/src/mame/drivers/mjkjidai.cpp
@@ -94,8 +94,8 @@ void mjkjidai_state::mjkjidai_io_map(address_map &map)
map.global_mask(0xff);
map(0x00, 0x03).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0x10, 0x13).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write));
- map(0x20, 0x20).w("sn1", FUNC(sn76489_device::write));
- map(0x30, 0x30).w("sn2", FUNC(sn76489_device::write));
+ map(0x20, 0x20).w("sn1", FUNC(sn76489_device::command_w));
+ map(0x30, 0x30).w("sn2", FUNC(sn76489_device::command_w));
map(0x40, 0x40).w(FUNC(mjkjidai_state::adpcm_w));
}
@@ -296,14 +296,14 @@ void mjkjidai_state::machine_reset()
m_adpcm_pos = m_adpcm_end = 0;
}
-void mjkjidai_state::mjkjidai(machine_config &config)
-{
+MACHINE_CONFIG_START(mjkjidai_state::mjkjidai)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 10000000/2); /* 5 MHz ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &mjkjidai_state::mjkjidai_map);
- m_maincpu->set_addrmap(AS_IO, &mjkjidai_state::mjkjidai_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80,10000000/2) /* 5 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(mjkjidai_map)
+ MCFG_DEVICE_IO_MAP(mjkjidai_io_map)
- NVRAM(config, m_nvram, nvram_device::DEFAULT_NONE);
+ NVRAM(config, "nvram", nvram_device::DEFAULT_NONE);
i8255_device &ppi1(I8255A(config, "ppi1"));
ppi1.in_pa_callback().set_ioport("KEYBOARD");
@@ -317,29 +317,34 @@ void mjkjidai_state::mjkjidai(machine_config &config)
ppi2.in_pc_callback().set_ioport("DSW2");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(3*8, 61*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(mjkjidai_state::screen_update_mjkjidai));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(mjkjidai_state::vblank_irq));
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_mjkjidai);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(3*8, 61*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mjkjidai_state, screen_update_mjkjidai)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mjkjidai_state, vblank_irq))
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mjkjidai)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 0x100);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489(config, "sn1", 10000000/4).add_route(ALL_OUTPUTS, "mono", 0.50);
- SN76489(config, "sn2", 10000000/4).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("sn1", SN76489, 10000000/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+
+ MCFG_DEVICE_ADD("sn2", SN76489, 10000000/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, mjkjidai_state, adpcm_int))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) /* 6kHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(mjkjidai_state::adpcm_int));
- m_msm->set_prescaler_selector(msm5205_device::S64_4B); /* 6kHz */
- m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
/***************************************************************************
diff --git a/src/mame/drivers/mjsenpu.cpp b/src/mame/drivers/mjsenpu.cpp
index c0780ae7eea..b79a85f8765 100644
--- a/src/mame/drivers/mjsenpu.cpp
+++ b/src/mame/drivers/mjsenpu.cpp
@@ -463,34 +463,35 @@ following clocks are on the PCB
*/
-void mjsenpu_state::mjsenpu(machine_config &config)
-{
+MACHINE_CONFIG_START(mjsenpu_state::mjsenpu)
+
/* basic machine hardware */
- E132XT(config, m_maincpu, 27000000*2); /* ?? Mhz */
- m_maincpu->set_addrmap(AS_PROGRAM, &mjsenpu_state::mjsenpu_32bit_map);
- m_maincpu->set_addrmap(AS_IO, &mjsenpu_state::mjsenpu_io);
- m_maincpu->set_vblank_int("screen", FUNC(mjsenpu_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", E132XT, 27000000*2) /* ?? Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(mjsenpu_32bit_map)
+ MCFG_DEVICE_IO_MAP(mjsenpu_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mjsenpu_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
// more likely coins out?
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(50), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-16-1);
- screen.set_screen_update(FUNC(mjsenpu_state::screen_update_mjsenpu));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mjsenpu_state, screen_update_mjsenpu)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(0x100);
+ MCFG_PALETTE_ADD("palette", 0x100)
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.00); /* 1 Mhz? */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) /* 1 Mhz? */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
ROM_START( mjsenpu )
diff --git a/src/mame/drivers/mjsister.cpp b/src/mame/drivers/mjsister.cpp
index 37a2378a550..c150358cc9a 100644
--- a/src/mame/drivers/mjsister.cpp
+++ b/src/mame/drivers/mjsister.cpp
@@ -493,13 +493,13 @@ INTERRUPT_GEN_MEMBER(mjsister_state::interrupt)
m_maincpu->set_input_line(0, ASSERT_LINE);
}
-void mjsister_state::mjsister(machine_config &config)
-{
+MACHINE_CONFIG_START(mjsister_state::mjsister)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MCLK/2); /* 6.000 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &mjsister_state::mjsister_map);
- m_maincpu->set_addrmap(AS_IO, &mjsister_state::mjsister_io_map);
- m_maincpu->set_periodic_int(FUNC(mjsister_state::interrupt), attotime::from_hz(2*60));
+ MCFG_DEVICE_ADD("maincpu", Z80, MCLK/2) /* 6.000 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(mjsister_map)
+ MCFG_DEVICE_IO_MAP(mjsister_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(mjsister_state, interrupt, 2*60)
LS259(config, m_mainlatch[0]);
m_mainlatch[0]->q_out_cb<0>().set(FUNC(mjsister_state::rombank_w));
@@ -517,13 +517,13 @@ void mjsister_state::mjsister(machine_config &config)
m_mainlatch[1]->q_out_cb<6>().set(FUNC(mjsister_state::rombank_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(256+4, 256);
- screen.set_visarea(0, 255+4, 8, 247);
- screen.set_screen_update(FUNC(mjsister_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256+4, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255+4, 8, 247)
+ MCFG_SCREEN_UPDATE_DRIVER(mjsister_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
@@ -536,11 +536,10 @@ void mjsister_state::mjsister(machine_config &config)
aysnd.port_b_read_callback().set_ioport("DSW2");
aysnd.add_route(ALL_OUTPUTS, "speaker", 0.15);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/mk1.cpp b/src/mame/drivers/mk1.cpp
index e24794400da..d9f6bee12d2 100644
--- a/src/mame/drivers/mk1.cpp
+++ b/src/mame/drivers/mk1.cpp
@@ -1,26 +1,19 @@
// license:GPL-2.0+
-// copyright-holders:Peter Trauner, Wilbert Pol, hap
+// copyright-holders:Peter Trauner
/******************************************************************************
-Driver file to handle emulation of the Novag/Videomaster Chess Champion MK I
-Initial version by PeT mess@utanet.at 2000,2001.
+ mk1.c
-The MK I was a clone of Data Cash Systems's CompuChess (1977, one of the first
-chess computers). The ROM is identical. DCS sued Novag Industries for copyright
-infringement and somehow didn't manage to win the case.
+Driver file to handle emulation of the Novag/Videomaster Chess Champion MK 1
+by PeT mess@utanet.at 2000,2001.
-Unlike CompuChess, MK I was a large success, we can assume that it kickstarted
-Novag's chess computer generation. It was also distributed as "Computer Chess"
-by JS&A, in the same casing as MK I.
+Minor updates by Wilbert Pol - 2007
-To start playing, enter difficulty level (1-6), then when it says "bP", press A
-for new game, B for empty board, or C for continue.
-
-MK I hardware description:
-- An F8 3850 CPU accompanied by a 3853 memory interface, approx 2MHz
+Hardware descriptions:
+- An F8 3850 CPU accompanied by a 3853 memory interface
Variations seen:
- - MOSTEK MK 3853N 7915 Philippines (static memory interface for F8)
- - MOSTEK MK 3850N-3 7917 Philipines (Fairchild F8 CPU)
+ - MOSTEK MK 3853N 7915 Philippines ( static memory interface for f8)
+ - MOSTEK MK 3850N-3 7917 Philipines (fairchild f8 cpu)
- 3850PK F7901 SINGAPORE (Fairchild F8 CPU)
- 3853PK F7851 SINGAPORE (static memory interface for F8)
- 2KB 2316 compatible ROM
@@ -40,8 +33,11 @@ MK I hardware description:
- The digit display is driven by two other components:
- SN75492N MALAYSIA 7840B
- ULN2033A 7847
-- Hardware addressing is controlled by a HBF4001AE.
-- No speaker.
+- Hardware addressing is controlled by a NBF4001AE.
+- Unknown if there is a speaker.
+
+TODO:
+- Figure out exact clock frequency
******************************************************************************/
@@ -49,270 +45,175 @@ MK I hardware description:
#include "cpu/f8/f8.h"
#include "machine/f3853.h"
#include "machine/timer.h"
-
-// internal artwork
-#include "cmpchess.lh" // clickable
-#include "mk1.lh" // clickable
+#include "mk1.lh"
-namespace {
-
class mk1_state : public driver_device
{
public:
- mk1_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_keypad(*this, "LINE%u", 1U),
- m_delay_display(*this, "delay_display_%u", 0),
- m_out_digit(*this, "digit%u", 0U)
+ mk1_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_digits(*this, "digit%u", 0U)
+ , m_leds(*this, "led%u", 0U)
{ }
- void cmpchess(machine_config &config);
void mk1(machine_config &config);
- DECLARE_INPUT_CHANGED_MEMBER(reset_switch);
+private:
+ DECLARE_READ8_MEMBER(mk1_f8_r);
+ DECLARE_WRITE8_MEMBER(mk1_f8_w);
+ TIMER_DEVICE_CALLBACK_MEMBER(mk1_update_leds);
+ void mk1_io(address_map &map);
+ void mk1_mem(address_map &map);
-protected:
virtual void machine_start() override;
-private:
- // devices/pointers
+ uint8_t m_f8[2];
+ uint8_t m_led_data[4];
required_device<cpu_device> m_maincpu;
- required_ioport_array<4> m_keypad;
- required_device_array<timer_device, 4> m_delay_display;
- output_finder<4> m_out_digit;
-
- void main_io(address_map &map);
- void main_map(address_map &map);
-
- TIMER_DEVICE_CALLBACK_MEMBER(blink) { m_blink = !m_blink; update_display(); }
- TIMER_DEVICE_CALLBACK_MEMBER(delay_display);
- void update_display();
-
- DECLARE_READ8_MEMBER(input_r);
- DECLARE_WRITE8_MEMBER(digit_select_w);
- DECLARE_WRITE8_MEMBER(digit_data_w);
-
- u8 m_digit_select;
- u8 m_digit_data;
- bool m_blink;
+ output_finder<4> m_digits;
+ output_finder<4> m_leds;
};
-void mk1_state::machine_start()
-{
- // resolve handlers
- m_out_digit.resolve();
-
- // zerofill
- m_digit_select = 0;
- m_digit_data = 0;
- m_blink = false;
-
- // register for savestates
- save_item(NAME(m_digit_select));
- save_item(NAME(m_digit_data));
- save_item(NAME(m_blink));
-}
-
-INPUT_CHANGED_MEMBER(mk1_state::reset_switch)
-{
- // reset switch is tied to F3850 RESET pin
- m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
- // clear display
- if (newval)
- {
- m_digit_select = 0xff;
- for (int i = 0; i < 4; i++)
- m_out_digit[i] = 0;
- }
-}
+#define MAIN_CLOCK 1000000
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// display handling
-
-TIMER_DEVICE_CALLBACK_MEMBER(mk1_state::delay_display)
+READ8_MEMBER( mk1_state::mk1_f8_r )
{
- // clear digits if inactive
- if (BIT(m_digit_select, param))
- m_out_digit[param] = 0;
-}
+ uint8_t i, data = m_f8[offset];
-void mk1_state::update_display()
-{
- // output digits if active
- for (int i = 0; i < 4; i++)
+ if ( offset == 0 )
{
- if (!BIT(m_digit_select, i))
+ if (BIT(data, 0)) data |= ioport("LINE1")->read();
+ if (BIT(data, 1)) data |= ioport("LINE2")->read();
+ if (BIT(data, 2)) data |= ioport("LINE3")->read();
+ if (BIT(data, 3)) data |= ioport("LINE4")->read();
+
+ for (i = 4; i < 8; i++)
{
- // display panel goes into automated blink mode if DP segment is held high
- // and DP segment itself only appears to be active if no other segments are
- u8 mask = (m_digit_data == 1) ? 0x80 : 0x7f;
- mask = (m_blink && m_digit_data & 1) ? 0 : mask;
- m_out_digit[i] = bitswap<8>(m_digit_data,0,2,1,3,4,5,6,7) & mask;
+ if (BIT(data, i))
+ {
+ if (BIT(ioport("LINE1")->read(), i)) data |= 1;
+ if (BIT(ioport("LINE2")->read(), i)) data |= 2;
+ if (BIT(ioport("LINE3")->read(), i)) data |= 4;
+ if (BIT(ioport("LINE4")->read(), i)) data |= 8;
+ }
}
}
+ return data;
}
-
-// F3850 ports
-
-WRITE8_MEMBER(mk1_state::digit_data_w)
-{
- // digit segment data, and also input mux
- m_digit_data = data;
- update_display();
-}
-
-WRITE8_MEMBER(mk1_state::digit_select_w)
-{
- // d0-d3: digit select (active low)
- // they're strobed, so on rising edge, delay them going off to prevent flicker or stuck display
- for (int i = 0; i < 4; i++)
- if (BIT(~m_digit_select & data, i))
- m_delay_display[i]->adjust(attotime::from_msec(20), i);
-
- m_digit_select = data;
- update_display();
-}
-
-READ8_MEMBER(mk1_state::input_r)
+WRITE8_MEMBER( mk1_state::mk1_f8_w )
{
- u8 data = m_digit_data;
-
- // d0-d3: multiplexed inputs from d4-d7
- for (int i = 0; i < 4; i++)
- if (m_digit_data & m_keypad[i]->read())
- data |= 1 << i;
-
- // d4-d7: multiplexed inputs from d0-d3
- for (int i = 0; i < 4; i++)
- if (BIT(m_digit_data, i))
- data |= m_keypad[i]->read();
+ /* 0 is high and allows also input */
+ m_f8[offset] = data;
- return data;
+ if ( ! ( m_f8[1] & 1 ) ) m_led_data[0] = bitswap<8>( m_f8[0],2,1,3,4,5,6,7,0 );
+ if ( ! ( m_f8[1] & 2 ) ) m_led_data[1] = bitswap<8>( m_f8[0],2,1,3,4,5,6,7,0 );
+ if ( ! ( m_f8[1] & 4 ) ) m_led_data[2] = bitswap<8>( m_f8[0],2,1,3,4,5,6,7,0 );
+ if ( ! ( m_f8[1] & 8 ) ) m_led_data[3] = bitswap<8>( m_f8[0],2,1,3,4,5,6,7,0 );
}
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void mk1_state::main_map(address_map &map)
+void mk1_state::mk1_mem(address_map &map)
{
map(0x0000, 0x07ff).rom();
map(0x1800, 0x18ff).ram();
}
-void mk1_state::main_io(address_map &map)
+
+void mk1_state::mk1_io(address_map &map)
{
- map(0x00, 0x00).rw(FUNC(mk1_state::input_r), FUNC(mk1_state::digit_data_w));
- map(0x01, 0x01).w(FUNC(mk1_state::digit_select_w));
- map(0x0c, 0x0f).rw("smi", FUNC(f3853_device::read), FUNC(f3853_device::write));
+ map(0x0, 0x1).rw(FUNC(mk1_state::mk1_f8_r), FUNC(mk1_state::mk1_f8_w));
+ map(0xc, 0xf).rw("f3853", FUNC(f3853_device::read), FUNC(f3853_device::write));
}
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( cmpchess )
- PORT_START("LINE1")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("A / White King")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_NAME("B / White Queen")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("C / White Bishop")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("D / Play")
-
- PORT_START("LINE2")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("E / White Knight")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("F / White Rook")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("G / White Pawn")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_M) PORT_NAME("H / md") // more data
-
- PORT_START("LINE3")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1 / Black King")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2 / Black Queen")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3 / Black Bishop")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4 / fp") // find piece(position)
-
- PORT_START("LINE4")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5 / Black Knight")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6 / Black Rook")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7 / Black Pawn")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8 / ep") // enter piece(position)
-
- PORT_START("RESET")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_R) PORT_TOGGLE PORT_CHANGED_MEMBER(DEVICE_SELF, mk1_state, reset_switch, nullptr) PORT_NAME("Reset Switch") // L.S. switch on the MK I
+static INPUT_PORTS_START( mk1 )
+ PORT_START("RESET") /* 0 */
+ PORT_DIPNAME ( 0x01, 0x01, "Switch")
+ PORT_DIPSETTING( 0, "L" )
+ PORT_DIPSETTING( 1, "S" )
+
+ PORT_START("LINE1") /* 1 */
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("White A King") PORT_CODE(KEYCODE_A)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("White B Queen") PORT_CODE(KEYCODE_B)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("White C Bishop") PORT_CODE(KEYCODE_C)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("White D PLAY") PORT_CODE(KEYCODE_D)
+ PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("LINE2") /* 2 */
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("White E Knight") PORT_CODE(KEYCODE_E)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("White F Castle") PORT_CODE(KEYCODE_F)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("White G Pawn") PORT_CODE(KEYCODE_G)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("White H md") PORT_CODE(KEYCODE_H)
+ PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("LINE3") /* 3 */
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Black 1 King") PORT_CODE(KEYCODE_1)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Black 2 Queen") PORT_CODE(KEYCODE_2)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Black 3 Bishop") PORT_CODE(KEYCODE_3)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Black 4 fp") PORT_CODE(KEYCODE_4)
+ PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("LINE4") /* 4 */
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Black 5 Knight") PORT_CODE(KEYCODE_5)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Black 6 Castle") PORT_CODE(KEYCODE_6)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Black 7 Pawn") PORT_CODE(KEYCODE_7)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Black 8 ep") PORT_CODE(KEYCODE_8)
+ PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
-
-/******************************************************************************
- Machine Configs
-******************************************************************************/
-
-void mk1_state::cmpchess(machine_config &config)
+TIMER_DEVICE_CALLBACK_MEMBER(mk1_state::mk1_update_leds)
{
- /* basic machine hardware */
- F8(config, m_maincpu, 3.579545_MHz_XTAL/2); // Fairchild 3850PK
- m_maincpu->set_addrmap(AS_PROGRAM, &mk1_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &mk1_state::main_io);
- m_maincpu->set_irq_acknowledge_callback("smi", FUNC(f3853_device::int_acknowledge));
-
- f3853_device &smi(F3853(config, "smi", 3.579545_MHz_XTAL/2));
- smi.int_req_callback().set_inputline("maincpu", F8_INPUT_LINE_INT_REQ);
-
- /* video hardware */
for (int i = 0; i < 4; i++)
- TIMER(config, m_delay_display[i]).configure_generic(FUNC(mk1_state::delay_display));
-
- TIMER(config, "blink_display").configure_periodic(FUNC(mk1_state::blink), attotime::from_msec(250)); // approximation
- config.set_default_layout(layout_cmpchess);
+ {
+ m_digits[i] = m_led_data[i] >> 1;
+ m_leds[i] = m_led_data[i] & 0x01;
+ m_led_data[i] = 0;
+ }
}
-void mk1_state::mk1(machine_config &config)
+
+void mk1_state::machine_start()
{
- cmpchess(config);
+ m_digits.resolve();
+ m_leds.resolve();
+}
- /* basic machine hardware */
- m_maincpu->set_clock(2000000); // it's a bit faster than cmpchess
- subdevice<f3853_device>("smi")->set_clock(2000000);
- config.set_default_layout(layout_mk1);
-}
+MACHINE_CONFIG_START(mk1_state::mk1)
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD( "maincpu", F8, MAIN_CLOCK ) /* MK3850 */
+ MCFG_DEVICE_PROGRAM_MAP(mk1_mem)
+ MCFG_DEVICE_IO_MAP(mk1_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("f3853", f3853_device, int_acknowledge)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
+ f3853_device &f3853(F3853(config, "f3853", MAIN_CLOCK));
+ f3853.int_req_callback().set_inputline("maincpu", F8_INPUT_LINE_INT_REQ);
+ /* video hardware */
+ config.set_default_layout(layout_mk1);
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("led_timer", mk1_state, mk1_update_leds, attotime::from_hz(30))
+MACHINE_CONFIG_END
-ROM_START( cmpchess )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD("32014-4950", 0x0000, 0x0800, CRC(278f7bf3) SHA1(b384c95ba691d52dfdddd35987a71e9746a46170) )
-ROM_END
ROM_START( ccmk1 )
- ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD("82c210-1", 0x0000, 0x0800, CRC(278f7bf3) SHA1(b384c95ba691d52dfdddd35987a71e9746a46170) )
+ ROM_REGION(0x10000,"maincpu",0)
+ ROM_LOAD("82c210-1", 0x0000, 0x800, CRC(278f7bf3) SHA1(b384c95ba691d52dfdddd35987a71e9746a46170))
ROM_END
-} // anonymous namespace
+/***************************************************************************
+ Game driver(s)
-/******************************************************************************
- Drivers
-******************************************************************************/
+***************************************************************************/
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1977, cmpchess, 0, 0, cmpchess, cmpchess, mk1_state, empty_init, "Data Cash Systems", "CompuChess", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1978, ccmk1, cmpchess, 0, mk1, cmpchess, mk1_state, empty_init, "Novag", "Chess Champion: MK I", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+// seams to be developed by mostek (MK)
+// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
+CONS( 1979, ccmk1, 0, 0, mk1, mk1, mk1_state, empty_init, "Novag", "Chess Champion: MK I", MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/mk14.cpp b/src/mame/drivers/mk14.cpp
index 076e88fe577..39db2ca1e04 100644
--- a/src/mame/drivers/mk14.cpp
+++ b/src/mame/drivers/mk14.cpp
@@ -117,8 +117,8 @@ void mk14_state::mem_map(address_map &map)
map.unmap_value_high();
map.global_mask(0x0fff);
map(0x000, 0x1ff).mirror(0x600).rom(); // ROM
- map(0x800, 0x87f).mirror(0x600).rw("ic8", FUNC(ins8154_device::read_io), FUNC(ins8154_device::write_io)); // I/O
- map(0x880, 0x8ff).mirror(0x600).rw("ic8", FUNC(ins8154_device::read_ram), FUNC(ins8154_device::write_ram)); // 128 bytes I/O chip RAM
+ map(0x800, 0x87f).mirror(0x600).rw("ic8", FUNC(ins8154_device::ins8154_r), FUNC(ins8154_device::ins8154_w)); // I/O
+ map(0x880, 0x8ff).mirror(0x600).ram(); // 128 I/O chip RAM
map(0x900, 0x9ff).mirror(0x400).rw(FUNC(mk14_state::keyboard_r), FUNC(mk14_state::display_w));
map(0xb00, 0xbff).ram(); // VDU RAM
map(0xf00, 0xfff).ram(); // Standard RAM
@@ -223,6 +223,7 @@ void mk14_state::mk14(machine_config &config)
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
ZN425E(config, "dac8", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // Ferranti ZN425E
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac8", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac8", -1.0, DAC_VREF_NEG_INPUT);
diff --git a/src/mame/drivers/mk2.cpp b/src/mame/drivers/mk2.cpp
index 7196be18f16..a126253a09b 100644
--- a/src/mame/drivers/mk2.cpp
+++ b/src/mame/drivers/mk2.cpp
@@ -200,28 +200,28 @@ WRITE8_MEMBER( mk2_state::mk2_write_b )
}
-void mk2_state::mk2(machine_config &config)
-{
+MACHINE_CONFIG_START(mk2_state::mk2)
/* basic machine hardware */
- M6504(config, m_maincpu, 1000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &mk2_state::mk2_mem);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD("maincpu", M6504, 1000000)
+ MCFG_DEVICE_PROGRAM_MAP(mk2_mem)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* video hardware */
config.set_default_layout(layout_mk2);
- MOS6530(config, m_miot, 1000000);
- m_miot->in_pa_callback().set(FUNC(mk2_state::mk2_read_a));
- m_miot->out_pa_callback().set(FUNC(mk2_state::mk2_write_a));
- m_miot->in_pb_callback().set(FUNC(mk2_state::mk2_read_b));
- m_miot->out_pb_callback().set(FUNC(mk2_state::mk2_write_b));
+ MCFG_DEVICE_ADD("miot", MOS6530, 1000000)
+ MCFG_MOS6530_IN_PA_CB(READ8(*this, mk2_state, mk2_read_a))
+ MCFG_MOS6530_OUT_PA_CB(WRITE8(*this, mk2_state, mk2_write_a))
+ MCFG_MOS6530_IN_PB_CB(READ8(*this, mk2_state, mk2_read_b))
+ MCFG_MOS6530_OUT_PB_CB(WRITE8(*this, mk2_state, mk2_write_b))
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- TIMER(config, "led_timer").configure_periodic(FUNC(mk2_state::update_leds), attotime::from_hz(60));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("led_timer", mk2_state, update_leds, attotime::from_hz(60))
+MACHINE_CONFIG_END
ROM_START(ccmk2)
diff --git a/src/mame/drivers/mkit09.cpp b/src/mame/drivers/mkit09.cpp
index ab05909ab31..679a947e82c 100644
--- a/src/mame/drivers/mkit09.cpp
+++ b/src/mame/drivers/mkit09.cpp
@@ -198,11 +198,10 @@ WRITE8_MEMBER( mkit09_state::pb_w )
}
-void mkit09_state::mkit09(machine_config &config)
-{
+MACHINE_CONFIG_START(mkit09_state::mkit09)
/* basic machine hardware */
- MC6809(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &mkit09_state::mkit09_mem);
+ MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(mkit09_mem)
/* video hardware */
config.set_default_layout(layout_mkit09);
@@ -220,14 +219,13 @@ void mkit09_state::mkit09(machine_config &config)
m_pia->irqa_handler().set_inputline("maincpu", M6809_IRQ_LINE);
m_pia->irqb_handler().set_inputline("maincpu", M6809_IRQ_LINE);
- CASSETTE(config, m_cass);
-}
+ MCFG_CASSETTE_ADD( "cassette" )
+MACHINE_CONFIG_END
-void mkit09_state::mkit09a(machine_config &config)
-{
+MACHINE_CONFIG_START(mkit09_state::mkit09a)
/* basic machine hardware */
- MC6809(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &mkit09_state::mkit09a_mem);
+ MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(mkit09a_mem)
/* video hardware */
config.set_default_layout(layout_mkit09);
@@ -245,8 +243,8 @@ void mkit09_state::mkit09a(machine_config &config)
m_pia->irqa_handler().set_inputline("maincpu", M6809_IRQ_LINE);
m_pia->irqb_handler().set_inputline("maincpu", M6809_IRQ_LINE);
- CASSETTE(config, m_cass);
-}
+ MCFG_CASSETTE_ADD( "cassette" )
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( mkit09 )
diff --git a/src/mame/drivers/mmodular.cpp b/src/mame/drivers/mmodular.cpp
index 25a256d9d92..554cb1af4fa 100644
--- a/src/mame/drivers/mmodular.cpp
+++ b/src/mame/drivers/mmodular.cpp
@@ -255,72 +255,68 @@ void mmodular_state::init_gen32()
rom[0x870] = 0x38;
}
-void mmodular_state::alm16(machine_config &config)
-{
- m68000_device &maincpu(M68000(config, "maincpu", XTAL(12'000'000)));
- maincpu.set_addrmap(AS_PROGRAM, &mmodular_state::alm16_mem);
- maincpu.set_periodic_int(FUNC(mmodular_state::irq2_line_hold), attotime::from_hz(600));
+MACHINE_CONFIG_START(mmodular_state::alm16)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(12'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(alm16_mem)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(mmodular_state, irq2_line_hold, 600)
MEPHISTO_SENSORS_BOARD(config, "board", 0);
MEPHISTO_DISPLAY_MODUL(config, "display", 0);
config.set_default_layout(layout_mmodular);
-}
+MACHINE_CONFIG_END
-void mmodular_state::van16(machine_config &config)
-{
+MACHINE_CONFIG_START(mmodular_state::van16)
alm16(config);
- subdevice<m68000_device>("maincpu")->set_addrmap(AS_PROGRAM, &mmodular_state::van16_mem);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(van16_mem)
+MACHINE_CONFIG_END
-void mmodular_state::alm32(machine_config &config)
-{
- m68020_device &maincpu(M68020(config, "maincpu", XTAL(12'000'000)));
- maincpu.set_addrmap(AS_PROGRAM, &mmodular_state::alm32_mem);
- maincpu.set_periodic_int(FUNC(mmodular_state::irq6_line_hold), attotime::from_hz(750));
+MACHINE_CONFIG_START(mmodular_state::alm32)
+ MCFG_DEVICE_ADD("maincpu", M68020, XTAL(12'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(alm32_mem)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(mmodular_state, irq6_line_hold, 750)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
MEPHISTO_SENSORS_BOARD(config, "board", 0);
MEPHISTO_DISPLAY_MODUL(config, "display", 0);
config.set_default_layout(layout_mmodular);
-}
+MACHINE_CONFIG_END
-void mmodular_state::van32(machine_config &config)
-{
+MACHINE_CONFIG_START(mmodular_state::van32)
alm32(config);
- subdevice<m68020_device>("maincpu")->set_addrmap(AS_PROGRAM, &mmodular_state::van32_mem);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(van32_mem)
+MACHINE_CONFIG_END
-void mmodular_state::gen32(machine_config &config)
-{
- m68030_device &maincpu(M68030(config, "maincpu", XTAL(33'333'000)));
- maincpu.set_addrmap(AS_PROGRAM, &mmodular_state::gen32_mem);
- maincpu.set_periodic_int(FUNC(mmodular_state::irq2_line_hold), attotime::from_hz(375));
+MACHINE_CONFIG_START(mmodular_state::gen32)
+ MCFG_DEVICE_ADD("maincpu", M68030, XTAL(33'333'000))
+ MCFG_DEVICE_PROGRAM_MAP(gen32_mem)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(mmodular_state, irq2_line_hold, 375)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
MEPHISTO_SENSORS_BOARD(config, "board", 0);
MEPHISTO_DISPLAY_MODUL(config, "display", 0);
config.set_default_layout(layout_mmodular);
-}
+MACHINE_CONFIG_END
-void berlinp_state::berlinp(machine_config &config)
-{
- m68020_device &maincpu(M68020(config, "maincpu", XTAL(24'576'000)));
- maincpu.set_addrmap(AS_PROGRAM, &berlinp_state::berlinp_mem);
- maincpu.set_periodic_int(FUNC(berlinp_state::irq2_line_hold), attotime::from_hz(750));
+MACHINE_CONFIG_START(berlinp_state::berlinp)
+ MCFG_DEVICE_ADD("maincpu", M68020, XTAL(24'576'000))
+ MCFG_DEVICE_PROGRAM_MAP(berlinp_mem)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(berlinp_state, irq2_line_hold, 750)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MEPHISTO_BUTTONS_BOARD(config, m_board, 0);
+ MEPHISTO_SENSORS_BOARD(config, m_board, 0);
MEPHISTO_DISPLAY_MODUL(config, "display", 0);
config.set_default_layout(layout_mmodular);
-}
+MACHINE_CONFIG_END
ROM_START( alm16 )
diff --git a/src/mame/drivers/mod8.cpp b/src/mame/drivers/mod8.cpp
index 262ded69e62..5d4f7589d61 100644
--- a/src/mame/drivers/mod8.cpp
+++ b/src/mame/drivers/mod8.cpp
@@ -94,7 +94,7 @@ WRITE8_MEMBER( mod8_state::out_w )
if (m_tty_cnt == 10)
{
- m_teleprinter->write((m_tty_data >> 7) & 0x7f);
+ m_teleprinter->write(space, 0, (m_tty_data >> 7) & 0x7f);
m_tty_cnt = 0;
}
}
@@ -146,18 +146,17 @@ void mod8_state::kbd_put(u8 data)
m_maincpu->set_input_line(0, HOLD_LINE);
}
-void mod8_state::mod8(machine_config &config)
-{
+MACHINE_CONFIG_START(mod8_state::mod8)
/* basic machine hardware */
- I8008(config, m_maincpu, 800000);
- m_maincpu->set_addrmap(AS_PROGRAM, &mod8_state::mod8_mem);
- m_maincpu->set_addrmap(AS_IO, &mod8_state::mod8_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(mod8_state::mod8_irq_callback));
+ MCFG_DEVICE_ADD("maincpu",I8008, 800000)
+ MCFG_DEVICE_PROGRAM_MAP(mod8_mem)
+ MCFG_DEVICE_IO_MAP(mod8_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(mod8_state,mod8_irq_callback)
/* video hardware */
TELEPRINTER(config, m_teleprinter, 0);
m_teleprinter->set_keyboard_callback(FUNC(mod8_state::kbd_put));
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/model1.cpp b/src/mame/drivers/model1.cpp
index 8c50750fe83..ce2ddeb1042 100644
--- a/src/mame/drivers/model1.cpp
+++ b/src/mame/drivers/model1.cpp
@@ -600,7 +600,7 @@ READ8_MEMBER( model1_state::dpram_r )
{
// insert waitstate
m_maincpu->adjust_icount(-1);
- return m_dpram->right_r(offset);
+ return m_dpram->right_r(space, offset);
}
WRITE8_MEMBER( model1_state::vf_outputs_w )
@@ -613,8 +613,6 @@ WRITE8_MEMBER( model1_state::vf_outputs_w )
machine().bookkeeping().coin_counter_w(1, BIT(data, 1));
machine().bookkeeping().coin_counter_w(0, BIT(data, 0));
-
- m_digits[1] = data;
}
WRITE8_MEMBER( model1_state::vr_outputs_w )
@@ -647,8 +645,6 @@ WRITE8_MEMBER( model1_state::swa_outputs_w )
machine().bookkeeping().coin_counter_w(1, BIT(data, 1));
machine().bookkeeping().coin_counter_w(0, BIT(data, 0));
-
- m_digits[1] = data;
}
WRITE8_MEMBER( model1_state::wingwar_outputs_w )
@@ -663,8 +659,6 @@ WRITE8_MEMBER( model1_state::wingwar_outputs_w )
// -------0 coin counter 1
machine().bookkeeping().coin_counter_w(0, BIT(data, 0));
-
- m_digits[1] = data;
}
WRITE8_MEMBER( model1_state::wingwar360_outputs_w )
@@ -677,8 +671,6 @@ WRITE8_MEMBER( model1_state::wingwar360_outputs_w )
machine().bookkeeping().coin_counter_w(1, BIT(data, 1));
machine().bookkeeping().coin_counter_w(0, BIT(data, 0));
-
- m_digits[1] = data;
}
WRITE8_MEMBER( model1_state::netmerc_outputs_w )
@@ -693,11 +685,6 @@ WRITE8_MEMBER( model1_state::netmerc_outputs_w )
machine().bookkeeping().coin_counter_w(0, BIT(data, 0));
}
-WRITE8_MEMBER( model1_state::drive_board_w )
-{
- m_digits[0] = data;
-}
-
READ8_MEMBER( model1_state::r360_r )
{
return m_r360_state;
@@ -1687,24 +1674,23 @@ ROM_START( netmerc )
ROM_LOAD16_BYTE( "u2", 0x0001, 0x4000, CRC(c589f428) SHA1(98dc0114a5f89636b4e237ed954e19f1cfd186ab) )
ROM_END
-void model1_state::model1(machine_config &config)
-{
- V60(config, m_maincpu, 16000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &model1_state::model1_mem);
- m_maincpu->set_addrmap(AS_IO, &model1_state::model1_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(model1_state::irq_callback));
+MACHINE_CONFIG_START(model1_state::model1)
+ MCFG_DEVICE_ADD("maincpu", V60, 16000000)
+ MCFG_DEVICE_PROGRAM_MAP(model1_mem)
+ MCFG_DEVICE_IO_MAP(model1_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(model1_state,irq_callback)
- GENERIC_FIFO_U32(config, "copro_fifo_in", 0);
- GENERIC_FIFO_U32(config, "copro_fifo_out", 0);
+ MCFG_DEVICE_ADD("copro_fifo_in", GENERIC_FIFO_U32, 0)
+ MCFG_DEVICE_ADD("copro_fifo_out", GENERIC_FIFO_U32, 0)
- TIMER(config, "scantimer").configure_scanline(FUNC(model1_state::model1_interrupt), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", model1_state, model1_interrupt, "screen", 0, 1)
#if 1
- MB86233(config, m_tgp_copro, 16000000);
- m_tgp_copro->set_addrmap(AS_PROGRAM, &model1_state::copro_prog_map);
- m_tgp_copro->set_addrmap(AS_DATA, &model1_state::copro_data_map);
- m_tgp_copro->set_addrmap(AS_IO, &model1_state::copro_io_map);
- m_tgp_copro->set_addrmap(mb86233_device::AS_RF, &model1_state::copro_rf_map);
+ MCFG_DEVICE_ADD("tgp_copro", MB86233, 16000000)
+ MCFG_DEVICE_PROGRAM_MAP(copro_prog_map)
+ MCFG_DEVICE_DATA_MAP(copro_data_map)
+ MCFG_DEVICE_IO_MAP(copro_io_map)
+ MCFG_DEVICE_ADDRESS_MAP(mb86233_device::AS_RF, copro_rf_map)
#endif
model1io_device &ioboard(SEGA_MODEL1IO(config, "ioboard", 0));
@@ -1717,11 +1703,11 @@ void model1_state::model1(machine_config &config)
S24TILE(config, m_tiles, 0, 0x3fff).set_palette(m_palette);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
- m_screen->set_raw(XTAL(16'000'000), 656, 0/*+69*/, 496/*+69*/, 424, 0/*+25*/, 384/*+25*/);
- m_screen->set_screen_update(FUNC(model1_state::screen_update_model1));
- m_screen->screen_vblank().set(FUNC(model1_state::screen_vblank_model1));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK )
+ MCFG_SCREEN_RAW_PARAMS(XTAL(16'000'000), 656, 0/*+69*/, 496/*+69*/, 424, 0/*+25*/, 384/*+25*/)
+ MCFG_SCREEN_UPDATE_DRIVER(model1_state, screen_update_model1)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, model1_state, screen_vblank_model1))
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 8192);
@@ -1734,14 +1720,13 @@ void model1_state::model1(machine_config &config)
clock_device &m1uart_clock(CLOCK(config, "m1uart_clock", 500000)); // 16 times 31.25MHz (standard Sega/MIDI sound data rate)
m1uart_clock.signal_handler().set(m_m1uart, FUNC(i8251_device::write_txc));
m1uart_clock.signal_handler().append(m_m1uart, FUNC(i8251_device::write_rxc));
-}
+MACHINE_CONFIG_END
-void model1_state::model1_hle(machine_config &config)
-{
+MACHINE_CONFIG_START(model1_state::model1_hle)
model1(config);
- config.device_remove("tgp_copro");
-}
+ MCFG_DEVICE_REMOVE("tgp_copro")
+MACHINE_CONFIG_END
void model1_state::vf(machine_config &config)
{
@@ -1757,10 +1742,7 @@ void model1_state::vr(machine_config &config)
{
model1(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &model1_state::model1_comm_mem);
-
model1io_device &ioboard(*subdevice<model1io_device>("ioboard"));
- ioboard.drive_write_callback().set(FUNC(model1_state::drive_board_w));
ioboard.an_callback<0>().set_ioport("WHEEL");
ioboard.an_callback<1>().set_ioport("ACCEL");
ioboard.an_callback<2>().set_ioport("BRAKE");
@@ -1773,10 +1755,7 @@ void model1_state::vformula(machine_config &config)
{
model1(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &model1_state::model1_comm_mem);
-
model1io_device &ioboard(*subdevice<model1io_device>("ioboard"));
- ioboard.drive_write_callback().set(FUNC(model1_state::drive_board_w));
ioboard.an_callback<0>().set_ioport("WHEEL");
ioboard.an_callback<1>().set_ioport("ACCEL");
ioboard.an_callback<2>().set_ioport("BRAKE");
@@ -1808,11 +1787,11 @@ void model1_state::swa(machine_config &config)
m_m1audio->rxd_handler().append(m_dsbz80, FUNC(dsbz80_device::write_txd));
}
-void model1_state::wingwar(machine_config &config)
-{
+MACHINE_CONFIG_START(model1_state::wingwar)
model1_hle(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &model1_state::model1_comm_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(model1_comm_mem)
model1io2_device &ioboard(SEGA_MODEL1IO2(config.replace(), "ioboard", 0));
ioboard.set_default_bios_tag("epr16891");
@@ -1828,7 +1807,7 @@ void model1_state::wingwar(machine_config &config)
config.set_default_layout(layout_model1io2);
M1COMM(config, "m1comm", 0).set_default_bios_tag("epr15112");
-}
+MACHINE_CONFIG_END
void model1_state::wingwar360(machine_config &config)
{
@@ -1841,7 +1820,7 @@ void model1_state::wingwar360(machine_config &config)
ioboard.output_callback().set(FUNC(model1_state::wingwar360_outputs_w));
config.set_default_layout(layout_model1io2);
-}
+MACHINE_CONFIG_END
void model1_state::polhemus_map(address_map &map)
{
@@ -1850,11 +1829,10 @@ void model1_state::polhemus_map(address_map &map)
map(0xf8000, 0xfffff).rom().region("polhemus", 0);
}
-void model1_state::netmerc(machine_config &config)
-{
+MACHINE_CONFIG_START(model1_state::netmerc)
model1_hle(config);
- i386sx_device &polhemus(I386SX(config, "polhemus", 16000000));
- polhemus.set_addrmap(AS_PROGRAM, &model1_state::polhemus_map);
+ MCFG_DEVICE_ADD("polhemus", I386SX, 16000000)
+ MCFG_DEVICE_PROGRAM_MAP(polhemus_map)
model1io2_device &ioboard(SEGA_MODEL1IO2(config.replace(), "ioboard", 0));
ioboard.set_default_bios_tag("epr18021");
@@ -1867,7 +1845,7 @@ void model1_state::netmerc(machine_config &config)
ioboard.output_callback().set(FUNC(model1_state::netmerc_outputs_w));
config.set_default_layout(layout_model1io2);
-}
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp
index 3224ee999ad..2ef11e43ab9 100644
--- a/src/mame/drivers/model2.cpp
+++ b/src/mame/drivers/model2.cpp
@@ -3493,52 +3493,6 @@ ROM_START( srallycb ) /* Sega Rally Championship Revision B, Model 2A, Sega game
MODEL2A_VID_BOARD
ROM_END
-ROM_START( srallycc ) /* Sega Rally Championship Revision A, Model 2A, Sega game ID# 833-11649 RALLY TWIN, Sega ROM board ID# 834-11618 RALLY TWIN */
- ROM_REGION( 0x200000, "maincpu", 0 ) // i960 program
- ROM_LOAD32_WORD( "epr-17888a.12", 0x000000, 0x080000, CRC(7f71fe46) SHA1(cca55b2ce837b1147a31666c1d4e2ecc793447c8) )
- ROM_LOAD32_WORD( "epr-17889a.13", 0x000002, 0x080000, CRC(6d99b766) SHA1(720e1d8090746c9baa55682e33ba485cf64a1522) )
-
- ROM_REGION32_LE( 0x2400000, "main_data", 0 ) // Data
- ROM_LOAD32_WORD( "mpr-17746.10", 0x000000, 0x200000, CRC(8fe311f4) SHA1(f4ada8e5c906fc384bed1b96f09cdf313f89e825) )
- ROM_LOAD32_WORD( "mpr-17747.11", 0x000002, 0x200000, CRC(543593fd) SHA1(5ba63a77e9fc70569af21d50b3171bc8ff4522b8) )
- ROM_LOAD32_WORD( "mpr-17744.8", 0x400000, 0x200000, CRC(71fed098) SHA1(1d187cad375121a45348d640edd3cc7dce658d28) )
- ROM_LOAD32_WORD( "mpr-17745.9", 0x400002, 0x200000, CRC(8ecca705) SHA1(ed2b3298aad6f4e52dc672a0168183e457564b43) )
- ROM_LOAD32_WORD( "mpr-17884.6", 0x800000, 0x200000, CRC(4cfc95e1) SHA1(81d927b8c4f9d0c4c5e29d676b30f30f83751fdc) )
- ROM_LOAD32_WORD( "mpr-17885.7", 0x800002, 0x200000, CRC(a08d2467) SHA1(9449ac8f8f9ce8d8e536b05a91e46841fed7f2d0) )
-
- ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
- ROM_LOAD32_WORD( "mpr-17754.28", 0x000000, 0x200000, CRC(81a84f67) SHA1(c0a9b690523a529e4015e9af10dc3fb2a1726f08) )
- ROM_LOAD32_WORD( "mpr-17755.29", 0x000002, 0x200000, CRC(2a6e7da4) SHA1(e60803ae951489fe47d66731d15c32249ca547b4) )
-
- ROM_REGION( 0x010000, "drivecpu", 0 ) // Drive I/O program
- ROM_LOAD( "epr-17891.ic12", 0x000000, 0x010000, CRC(9a33b437) SHA1(3e8f210aa5159e78f640126cb5ce7f05f22560f2) )
-
- ROM_REGION( 0x2000000, "polygons", 0 ) // Models
- ROM_LOAD32_WORD( "mpr-17748.16", 0x000000, 0x200000, CRC(3148a2b2) SHA1(283cc49bfb6c6381a7ead9273fd097dca5b981b6) )
- ROM_LOAD32_WORD( "mpr-17750.20", 0x000002, 0x200000, CRC(232aec29) SHA1(4d470e71df61298282c356814e2d151fda323fb6) )
- ROM_LOAD32_WORD( "mpr-17749.17", 0x400000, 0x200000, CRC(0838d184) SHA1(704175c8b29e4c989afcb7be42e7e0e096740eaf) )
- ROM_LOAD32_WORD( "mpr-17751.21", 0x400002, 0x200000, CRC(ed87ac62) SHA1(601542149d33ca52a47536b4b0af47bf1fd87eb2) )
-
- ROM_REGION( 0x1000000, "textures", 0 ) // Textures
- ROM_LOAD32_WORD( "mpr-17753.25", 0x000000, 0x200000, CRC(6db0eb36) SHA1(dd5fd3c9592360d3e95623ac2491e6faabe9dbcb) )
- ROM_LOAD32_WORD( "mpr-17752.24", 0x000002, 0x200000, CRC(d6aa86ce) SHA1(1d342f87d1af1e5438d1ae818b1b14268e765897) )
-
- ROM_REGION( 0x20000, "cpu4", 0) // Communication program
- ROM_LOAD( "epr-16726.bin", 0x000000, 0x020000, CRC(c179b8c7) SHA1(86d3e65c77fb53b1d380b629348f4ab5b3d39228) )
-
- ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program
- ROM_LOAD16_WORD_SWAP( "epr-17890a.30", 0x000000, 0x040000, CRC(5bac3fa1) SHA1(3635333d36463b6fab25560ed918e05138f964dc) )
-
- ROM_REGION16_BE( 0x800000, "samples", 0 ) // Samples
- ROM_LOAD16_WORD_SWAP( "mpr-17756.31", 0x000000, 0x200000, CRC(7725f111) SHA1(1f1ee3f19a6bcf57bc5a1c7dd64ee83f8b81f084) )
- ROM_LOAD16_WORD_SWAP( "mpr-17757.32", 0x200000, 0x200000, CRC(1616e649) SHA1(1d3a0e441d150ada0535a9d50e2f69dd4b99c584) )
- ROM_LOAD16_WORD_SWAP( "mpr-17886.36", 0x400000, 0x200000, CRC(54a72923) SHA1(103c4838b27378c834c08d29d6fb6ba95e7f9d03) )
- ROM_LOAD16_WORD_SWAP( "mpr-17887.37", 0x600000, 0x200000, CRC(38c31fdd) SHA1(a85f05160b060d9d4a431aaa73cfc03f24214fb9) )
-
- MODEL2_CPU_BOARD
- MODEL2A_VID_BOARD
-ROM_END
-
ROM_START( srallycdx ) /* Sega Rally Championship DX Revision A, Model 2A - Single player cabinet - NO LINK option!, Sega ROM board ID# 834-11254 RALLY 50 */
ROM_REGION( 0x200000, "maincpu", 0 ) // i960 program
ROM_LOAD32_WORD( "epr-17760a.12", 0x000000, 0x020000, CRC(2c1b996b) SHA1(28c1196aac1c242e61069ee809c9e8229c061950) ) /* AMD 27C1024 EPROM */
@@ -5335,23 +5289,7 @@ ROM_START( overrev ) /* Over Rev Revision A, Model 2C */
ROM_LOAD16_WORD_SWAP( "mpr-20004.34", 0x400000, 0x400000, CRC(0b9c5410) SHA1(e5bb30702fc853ccc03316be07a334269d3ebb4a) )
ROM_END
-/*
-
-Over Rev on MODEL2 B-CRX:
-
-The set below has been found labeled as:
-Main board ID# 837-10854-02-91
- Sega Game ID# 836-12788
- ROM board ID# 836-12789
-
-As well as:
-Main board ID# 837-10854-02-91
- Sega Game ID# 836-13274 OVER REV
- ROM board ID# 836-13275
-
-These ID numbers have been verified on multiple board sets for both revision A and revision B program ROMs
-*/
-ROM_START( overrevb ) /* Over Rev Revision B, Model 2B */
+ROM_START( overrevb ) /* Over Rev Revision B, Model 2B, Sega Game ID# 836-13274, ROM board ID# 836-13275 */
ROM_REGION( 0x200000, "maincpu", 0 ) // i960 program
ROM_LOAD32_WORD( "epr-19992b.15", 0x000000, 0x080000, CRC(6d3e78d5) SHA1(40d18ee284ea2e038f7e3d04db56e793ab3e3dd5) ) /* sum16 492A printed on label */
ROM_LOAD32_WORD( "epr-19993b.16", 0x000002, 0x080000, CRC(765dc9ce) SHA1(a718c32ca27ec1fb5ed2d7d3797ea7e906510a04) ) /* sum16 B955 printed on label */
@@ -5380,35 +5318,6 @@ ROM_START( overrevb ) /* Over Rev Revision B, Model 2B */
ROM_LOAD16_WORD_SWAP( "mpr-20004.34", 0x400000, 0x400000, CRC(0b9c5410) SHA1(e5bb30702fc853ccc03316be07a334269d3ebb4a) )
ROM_END
-ROM_START( overrevba ) /* Over Rev Revision A, Model 2B */
- ROM_REGION( 0x200000, "maincpu", 0 ) // i960 program
- ROM_LOAD32_WORD( "epr-19992a.15", 0x000000, 0x080000, CRC(68d3c8a8) SHA1(360d42c502d16ba056f4bfa8bb1667c8c58df8e2) )
- ROM_LOAD32_WORD( "epr-19993a.16", 0x000002, 0x080000, CRC(9718eb58) SHA1(07e92d00843dd499e45654827e233723e18cc3e2) )
-
- ROM_REGION32_LE( 0x2000000, "main_data", 0 ) // Data
- ROM_LOAD32_WORD( "mpr-19996.11", 0x000000, 0x400000, CRC(21928a00) SHA1(6b439fd2b113b64df9378ef8180a17aa6fa975c5) )
- ROM_LOAD32_WORD( "mpr-19997.12", 0x000002, 0x400000, CRC(2a169cab) SHA1(dbf9af938afd0599d345c42c1df242e575c14de9) )
- ROM_LOAD32_WORD( "mpr-19994.9", 0x800000, 0x400000, CRC(e691fbd5) SHA1(b99c2f3f2a682966d792917dfcb8ed8e53bc0b7a) )
- ROM_LOAD32_WORD( "mpr-19995.10", 0x800002, 0x400000, CRC(82a7828e) SHA1(4336a12a07a67f94091b4a9b491bab02c375dd15) )
-
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
-
- ROM_REGION( 0x800000, "polygons", 0 ) // Models
- ROM_LOAD32_WORD( "mpr-19998.17", 0x000000, 0x200000, CRC(6a834574) SHA1(8be19bf42dbb157d6acde62a2018ef4c0d41aab4) )
- ROM_LOAD32_WORD( "mpr-19999.21", 0x000002, 0x200000, CRC(ff590a2d) SHA1(ad29e4270b4a2f82189fbab83358eb1200f43777) )
-
- ROM_REGION( 0x400000, "textures", 0 ) // Textures
- ROM_LOAD32_WORD( "mpr-20001.27", 0x000000, 0x200000, CRC(6ca236aa) SHA1(b3cb89fadb42afed13be4f229d7158dee487978a) )
- ROM_LOAD32_WORD( "mpr-20000.25", 0x000002, 0x200000, CRC(894d8ded) SHA1(9bf7c754a29eef47fa49b5567980601895127306) )
-
- ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program
- ROM_LOAD16_WORD_SWAP( "epr-20002.31", 0x000000, 0x080000, CRC(7efb069e) SHA1(30b1bbaf348d6a6b9ee2fdf82a0749baa025e0bf) )
-
- ROM_REGION16_BE( 0x800000, "samples", 0 ) // Samples
- ROM_LOAD16_WORD_SWAP( "mpr-20003.32", 0x000000, 0x400000, CRC(149ac22b) SHA1(c890bbaebbbb07b62bcb8a3a8edded9fa0ec9a1e) )
- ROM_LOAD16_WORD_SWAP( "mpr-20004.34", 0x400000, 0x400000, CRC(0b9c5410) SHA1(e5bb30702fc853ccc03316be07a334269d3ebb4a) )
-ROM_END
-
ROM_START( rascot2 ) /* Royal Ascot 2, Model 2C, Rom Board : 837-12485 Com Board : 837-12532 SDC-2 */
ROM_REGION( 0x200000, "maincpu", 0 ) // i960 program
ROM_LOAD32_WORD("epr-20166.15", 0x000000, 0x020000, CRC(520479a4) SHA1(02e14a7be299c2af36373595cf6f154312372a60) )
@@ -6795,7 +6704,6 @@ GAME( 1995, manxtt, 0, manxttdx, manxtt, model2a_state, empty_in
GAME( 1995, manxttc, 0, manxtt, manxtt, model2a_state, empty_init, ROT0, "Sega", "Manx TT Superbike - Twin (Revision C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, srallyc, 0, srallyc, srallyc, model2a_state, empty_init, ROT0, "Sega", "Sega Rally Championship - Twin/DX (Revision C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, srallycb, srallyc, srallyc, srallyc, model2a_state, empty_init, ROT0, "Sega", "Sega Rally Championship - Twin/DX (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1995, srallycc, srallyc, srallyc, srallyc, model2a_state, empty_init, ROT0, "Sega", "Sega Rally Championship - Twin/DX (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, srallycdx, srallyc, srallyc, srallyc, model2a_state, empty_init, ROT0, "Sega", "Sega Rally Championship - DX (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, srallycdxa,srallyc, srallyc, srallyc, model2a_state, empty_init, ROT0, "Sega", "Sega Rally Championship - DX", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, vcop2, 0, vcop2, vcop2, model2a_state, empty_init, ROT0, "Sega", "Virtua Cop 2", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
@@ -6831,7 +6739,6 @@ GAME( 1996, sgt24h, 0, indy500, sgt24h, model2b_state, init_sg
GAME( 1996, dynabb, 0, dynabb, dynabb, model2b_state, empty_init, ROT0, "Sega", "Dynamite Baseball", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, dynabb97, 0, dynabb, dynabb, model2b_state, empty_init, ROT0, "Sega", "Dynamite Baseball 97 (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, overrevb, overrev, indy500, overrev, model2b_state, empty_init, ROT0, "Jaleco", "Over Rev (Model 2B, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, overrevba, overrev, indy500, overrev, model2b_state, empty_init, ROT0, "Jaleco", "Over Rev (Model 2B, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, zerogun, 0, zerogun, zerogun, model2b_state, init_zerogun, ROT0, "Psikyo", "Zero Gunner (Export, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, zerogunj, zerogun, zerogun, zerogun, model2b_state, init_zerogun, ROT0, "Psikyo", "Zero Gunner (Japan, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
GAME( 1998, dynamcopb, dynamcop, model2b_5881, dynamcop, model2b_state, empty_init, ROT0, "Sega", "Dynamite Cop (Export, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/model3.cpp b/src/mame/drivers/model3.cpp
index ac9637de63d..6d91183246e 100644
--- a/src/mame/drivers/model3.cpp
+++ b/src/mame/drivers/model3.cpp
@@ -2274,7 +2274,7 @@ ROM_START( scud ) /* step 1.5, Sega game ID# is 833-13041, ROM board ID# 834-1
ROM_LOAD( "epr-19338a.bin", 0x000000, 0x010000, CRC(c9fac464) SHA1(47b9ab7921a685c01629afb592d597faa11d2bd6) )
ROM_END
-ROM_START( scudj ) /* step 1.5, Sega game ID# is 833-13041, ROM board ID# 12934 SPG DX, Digital Audio board ID# 837-12941 */
+ROM_START( scudj ) /* step 1.5, Sega game ID# is 833-13041, ROM board ID# 12934 SPG DX */
ROM_REGION64_BE( 0x8800000, "user1", 0 ) /* program + data ROMs */
// CROM
ROM_LOAD64_WORD_SWAP( "epr-19610a.17", 0x0600006, 0x80000, CRC(53f5cd94) SHA1(e27609165087ef7000b61ce628883561ffe64b22) )
@@ -3124,7 +3124,7 @@ ROM_START( lostwsga ) /* Step 1.5, PCB cage labeled 834-13172 THE LOST WORLD U
ROM_FILL( 0x000000, 0x800000, 0x0000 )
ROM_END
-ROM_START( lostwsgp ) /* Step 1.5, build 1997/06/24, location test or preview version, about half of game is available, Stage 3-2 ends with "Coming Soon?" */
+ROM_START( lostwsgo ) /* Step 1.5, build 1997/06/24, possible original "no revision" release */
ROM_REGION64_BE( 0x8800000, "user1", 0 ) /* program + data ROMs */
// CROM
ROM_LOAD64_WORD_SWAP( "ic17.17", 0x600006, 0x080000, CRC(9e94afdb) SHA1(c66ebc6f1ec34475f67cfc8dc66fa8634a59432b) )
@@ -4311,7 +4311,6 @@ ROM_START( swtrilgy ) /* Step 2.1, Sega game ID# is 833-13586, ROM board ID# 8
ROM_LOAD( "mpr-21378.24", 0xc00000, 0x400000, CRC(1fcf715e) SHA1(9706f36e7a61d885d34a6974311a2410fe3d6760) )
ROM_REGION( 0x10000, "ffcpu", 0 ) /* force feedback controller prg */
- ROM_LOAD( "dvctbd.bin", 0x00000, 0x10000, CRC(f5208c59) SHA1(f8216b2dc0dac94dcbcf4f8f09dc606777251209) ) // ROM label unknown, not clear if older or newer than epr-21119
ROM_LOAD( "epr-21119.ic8", 0x00000, 0x10000, CRC(65082b14) SHA1(6c3c192dd6ef3780c6202dd63fc6086328928818) )
// ???? 317-0241-COM Model 3
@@ -5026,7 +5025,7 @@ ROM_START( srally2pa ) // prototype 1997/12/08
ROM_LOAD( "epr-20512.bin", 0x000000, 0x010000, CRC(cf64350d) SHA1(f30c8c7b65fb38f7dd63845f12b81388ff3b946d) )
ROM_END
-ROM_START( srally2x ) /* Step 2.0, Sega game ID# is 833-13371, ROM board ID# 834-13372 SRT DX */
+ROM_START( srally2x ) /* Step 2.0 */
ROM_REGION64_BE( 0x8800000, "user1", 0 ) /* program + data ROMs */
// CROM
ROM_LOAD64_WORD_SWAP( "epr-20502.17", 0x000006, 0x200000, CRC(af16846d) SHA1(a0babc4dc3809ca1e71eaad4dc2f8c1597575e8b) )
@@ -5213,7 +5212,7 @@ ROM_START( harleya ) /* Step 2.0, Sega game ID# is 833-13325, ROM board ID# 8
ROM_FILL( 0x000000, 0x1000000, 0x0000 )
ROM_END
-ROM_START( fvipers2 ) /* Step 2.0, Sega game ID# is 833-13407 FIGHTING VIPERS2, ROM board ID# 834-13408 FIGHTING VIPERS2, Security board ID# 837-13423-COM */
+ROM_START( fvipers2 ) /* Step 2.0 */
ROM_REGION64_BE( 0x8800000, "user1", 0 ) /* program + data ROMs */
// CROM
ROM_LOAD64_WORD_SWAP( "epr-20596a.17", 0x000006, 0x200000, CRC(969ab801) SHA1(a7a2aa71204d1c38a6a8c0605331fd859cb224f1) )
@@ -6546,7 +6545,7 @@ GAME( 1996, scuda, scud, scud, scud, model3_state, init_scud,
GAME( 1997, scudplus, scud, scud, scud, model3_state, init_scudplus, ROT0, "Sega", "Scud Race Plus (Revision A)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1997, scudplusa, scud, scud, scud, model3_state,init_scudplusa, ROT0, "Sega", "Scud Race Plus", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1997, lostwsga, 0, model3_15, lostwsga, model3_state, init_lostwsga, ROT0, "Sega", "The Lost World (Revision A)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, lostwsgp,lostwsga, model3_15, lostwsga, model3_state, init_lostwsga, ROT0, "Sega", "The Lost World (location test)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, lostwsgo,lostwsga, model3_15, lostwsga, model3_state, init_lostwsga, ROT0, "Sega", "The Lost World (older)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1997, vs215, vs2, model3_15, model3, model3_state, init_vs215, ROT0, "Sega", "Virtua Striker 2 (Step 1.5, Export, USA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1997, vs215o, vs2, model3_15, model3, model3_state, init_vs215, ROT0, "Sega", "Virtua Striker 2 (Step 1.5, Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1997, lemans24, 0, model3_15, scud, model3_state, init_lemans24, ROT0, "Sega", "Le Mans 24 (Revision B)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/modellot.cpp b/src/mame/drivers/modellot.cpp
index 2521ae49cdb..c87ed0f9719 100644
--- a/src/mame/drivers/modellot.cpp
+++ b/src/mame/drivers/modellot.cpp
@@ -178,29 +178,28 @@ uint32_t modellot_state::screen_update_modellot(screen_device &screen, bitmap_in
return 0;
}
-void modellot_state::modellot(machine_config &config)
-{
+MACHINE_CONFIG_START(modellot_state::modellot)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &modellot_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &modellot_state::io_map);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(64*8, 16*16);
- screen.set_visarea(0, 64*8-1, 0, 16*16-1);
- screen.set_screen_update(FUNC(modellot_state::screen_update_modellot));
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_modellot);
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(64*8, 16*16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 16*16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(modellot_state, screen_update_modellot)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_modellot)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* Devices */
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
keyboard.set_keyboard_callback(FUNC(modellot_state::kbd_put));
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( modellot )
diff --git a/src/mame/drivers/modena.cpp b/src/mame/drivers/modena.cpp
index 43fce448759..fb72cbee78d 100644
--- a/src/mame/drivers/modena.cpp
+++ b/src/mame/drivers/modena.cpp
@@ -138,14 +138,12 @@ void mephisto_modena_state::machine_reset()
}
-void mephisto_modena_state::modena(machine_config &config)
-{
- M65C02(config, m_maincpu, XTAL(4'194'304)); // W65C02SP
- m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_modena_state::modena_mem);
- timer_device &nmi_on(TIMER(config, "nmi_on"));
- nmi_on.configure_periodic(FUNC(mephisto_modena_state::nmi_on), attotime::from_hz(XTAL(4'194'304) / (1 << 13)));
- nmi_on.set_start_delay(attotime::from_hz(XTAL(4'194'304) / (1 << 13)) - attotime::from_usec(975)); // active for 975us
- TIMER(config, "nmi_off").configure_periodic(FUNC(mephisto_modena_state::nmi_off), attotime::from_hz(XTAL(4'194'304) / (1 << 13)));
+MACHINE_CONFIG_START(mephisto_modena_state::modena)
+ MCFG_DEVICE_ADD("maincpu", M65C02, XTAL(4'194'304)) // W65C02SP
+ MCFG_DEVICE_PROGRAM_MAP(modena_mem)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_on", mephisto_modena_state, nmi_on, attotime::from_hz(XTAL(4'194'304) / (1 << 13)))
+ MCFG_TIMER_START_DELAY(attotime::from_hz(XTAL(4'194'304) / (1 << 13)) - attotime::from_usec(975)) // active for 975us
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_off", mephisto_modena_state, nmi_off, attotime::from_hz(XTAL(4'194'304) / (1 << 13)))
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -155,8 +153,9 @@ void mephisto_modena_state::modena(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beeper, 3250).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("beeper", BEEP, 3250)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START(modena)
diff --git a/src/mame/drivers/mogura.cpp b/src/mame/drivers/mogura.cpp
index 71965ec7e99..d2e4acbc668 100644
--- a/src/mame/drivers/mogura.cpp
+++ b/src/mame/drivers/mogura.cpp
@@ -208,22 +208,22 @@ void mogura_state::machine_start()
{
}
-void mogura_state::mogura(machine_config &config)
-{
+MACHINE_CONFIG_START(mogura_state::mogura)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 3000000); /* 3 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &mogura_state::mogura_map);
- m_maincpu->set_addrmap(AS_IO, &mogura_state::mogura_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(mogura_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,3000000) /* 3 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(mogura_map)
+ MCFG_DEVICE_IO_MAP(mogura_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mogura_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60); // ?
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 512);
- screen.set_visarea(0, 320-1, 0, 256-1);
- screen.set_screen_update(FUNC(mogura_state::screen_update_mogura));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60) // ?
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 512)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mogura_state, screen_update_mogura)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_mogura);
PALETTE(config, "palette", FUNC(mogura_state::mogura_palette), 32);
@@ -231,12 +231,12 @@ void mogura_state::mogura(machine_config &config)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- DAC_4BIT_R2R(config, m_ldac, 0).add_route(ALL_OUTPUTS, "lspeaker", 0.25); // unknown DAC
- DAC_4BIT_R2R(config, m_rdac, 0).add_route(ALL_OUTPUTS, "rspeaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("ldac", DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("rdac", DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
+ MACHINE_CONFIG_END
ROM_START( mogura )
diff --git a/src/mame/drivers/mole.cpp b/src/mame/drivers/mole.cpp
index 83702b50d6b..bf8ddf93453 100644
--- a/src/mame/drivers/mole.cpp
+++ b/src/mame/drivers/mole.cpp
@@ -323,30 +323,30 @@ void mole_state::machine_reset()
m_tile_bank = 0;
}
-void mole_state::mole(machine_config &config)
-{
+MACHINE_CONFIG_START(mole_state::mole)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 4000000); // ???
- m_maincpu->set_addrmap(AS_PROGRAM, &mole_state::mole_map);
- m_maincpu->set_vblank_int("screen", FUNC(mole_state::irq0_line_assert));
+ MCFG_DEVICE_ADD("maincpu", M6502, 4000000) // ???
+ MCFG_DEVICE_PROGRAM_MAP(mole_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mole_state, irq0_line_assert)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(40*8, 25*8);
- screen.set_visarea(0*8, 40*8-1, 0*8, 25*8-1);
- screen.set_screen_update(FUNC(mole_state::screen_update_mole));
- screen.set_palette("palette");
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_mole);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(40*8, 25*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 25*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mole_state, screen_update_mole)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mole)
PALETTE(config, "palette", palette_device::RBG_3BIT);
/* sound hardware */
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd", 2000000).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/molecular.cpp b/src/mame/drivers/molecular.cpp
index 90ad41e69e8..fafed97a8b9 100644
--- a/src/mame/drivers/molecular.cpp
+++ b/src/mame/drivers/molecular.cpp
@@ -297,40 +297,40 @@ void molecula_state::molecula_palette(palette_device &palette) const
{
}
-void molecula_state::molecula(machine_config &config)
-{
+MACHINE_CONFIG_START(molecula_state::molecula)
+
/* basic machine hardware */
- Z80(config, m_filecpu, Z80_CLOCK/2);
- m_filecpu->set_addrmap(AS_PROGRAM, &molecula_state::molecula_file_map);
- m_filecpu->set_addrmap(AS_IO, &molecula_state::molecula_file_io);
- m_filecpu->set_disable();
+ MCFG_DEVICE_ADD("filecpu",Z80,Z80_CLOCK/2)
+ MCFG_DEVICE_PROGRAM_MAP(molecula_file_map)
+ MCFG_DEVICE_IO_MAP(molecula_file_io)
+ MCFG_DEVICE_DISABLE()
- z80_device &appcpu(Z80(config, "appcpu", Z80_CLOCK/2));
- appcpu.set_addrmap(AS_PROGRAM, &molecula_state::molecula_app_map);
- appcpu.set_addrmap(AS_IO, &molecula_state::molecula_app_io);
+ MCFG_DEVICE_ADD("appcpu",Z80,Z80_CLOCK/2)
+ MCFG_DEVICE_PROGRAM_MAP(molecula_app_map)
+ MCFG_DEVICE_IO_MAP(molecula_app_io)
-// i8086_device &sub(I8086(config, "sub", I86_CLOCK/2));
-// sub.set_addrmap(AS_PROGRAM, &molecula_state::molecula_map);
-// sub.set_addrmap(AS_IO, &molecula_state::molecula_io);
-// sub.set_disable();
+// MCFG_DEVICE_ADD("sub",I8086,I86_CLOCK/2)
+// MCFG_DEVICE_PROGRAM_MAP(molecula_map)
+// MCFG_DEVICE_IO_MAP(molecula_io)
+// MCFG_DEVICE_DISABLE()
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_screen_update(FUNC(molecula_state::screen_update));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_UPDATE_DRIVER(molecula_state, screen_update)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, "gfxdecode", "palette", gfx_molecula);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_molecula)
PALETTE(config, "palette", FUNC(molecula_state::molecula_palette), 8);
/* sound hardware */
SPEAKER(config, "mono").front_center();
// AY8910(config, "aysnd", MAIN_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/momoko.cpp b/src/mame/drivers/momoko.cpp
index ec0d9096651..c3aea29e4e9 100644
--- a/src/mame/drivers/momoko.cpp
+++ b/src/mame/drivers/momoko.cpp
@@ -255,26 +255,26 @@ void momoko_state::machine_reset()
m_flipscreen = 0;
}
-void momoko_state::momoko(machine_config &config)
-{
+MACHINE_CONFIG_START(momoko_state::momoko)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(10'000'000)/2); /* 5.0MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &momoko_state::momoko_map);
- m_maincpu->set_vblank_int("screen", FUNC(momoko_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(10'000'000)/2) /* 5.0MHz */
+ MCFG_DEVICE_PROGRAM_MAP(momoko_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", momoko_state, irq0_line_hold)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(10'000'000)/4)); /* 2.5MHz */
- audiocpu.set_addrmap(AS_PROGRAM, &momoko_state::momoko_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(10'000'000)/4) /* 2.5MHz */
+ MCFG_DEVICE_PROGRAM_MAP(momoko_sound_map)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(1*8, 31*8-1, 2*8, 29*8-1);
- screen.set_screen_update(FUNC(momoko_state::screen_update_momoko));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 29*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(momoko_state, screen_update_momoko)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_momoko);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 512);
@@ -297,7 +297,7 @@ void momoko_state::momoko(machine_config &config)
ym2.add_route(1, "mono", 0.15);
ym2.add_route(2, "mono", 0.15);
ym2.add_route(3, "mono", 0.40);
-}
+MACHINE_CONFIG_END
/****************************************************************************/
diff --git a/src/mame/drivers/monacogp.cpp b/src/mame/drivers/monacogp.cpp
index dcac825ec5f..2580c0d2e61 100644
--- a/src/mame/drivers/monacogp.cpp
+++ b/src/mame/drivers/monacogp.cpp
@@ -183,21 +183,20 @@ void monacogp_state::video_start()
{
}
-void monacogp_state::monacogp(machine_config &config)
-{
+MACHINE_CONFIG_START(monacogp_state::monacogp)
+
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_monacogp);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(monacogp)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL);
- m_video->set_vert_params(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.30);
-}
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/monon_color.cpp b/src/mame/drivers/monon_color.cpp
index bc7cac52cea..f805d31d302 100644
--- a/src/mame/drivers/monon_color.cpp
+++ b/src/mame/drivers/monon_color.cpp
@@ -117,20 +117,21 @@ void monon_color_state::monon_color_map(address_map &map)
}
MACHINE_CONFIG_START(monon_color_state::monon_color)
+
/* basic machine hardware */
- AX208(config, m_maincpu, 96000000); // (8051 / MCS51 derived) incomplete core!
- m_maincpu->set_addrmap(AS_PROGRAM, &monon_color_state::monon_color_map);
+ MCFG_DEVICE_ADD("maincpu", AX208, 96000000) // (8051 / MCS51 derived) incomplete core!
+ MCFG_DEVICE_PROGRAM_MAP(monon_color_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- m_screen->set_screen_update(FUNC(monon_color_state::screen_update));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_UPDATE_DRIVER(monon_color_state, screen_update)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -142,7 +143,7 @@ MACHINE_CONFIG_START(monon_color_state::monon_color)
MCFG_GENERIC_MANDATORY
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("monon_color");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","monon_color")
MACHINE_CONFIG_END
DEVICE_IMAGE_LOAD_MEMBER( monon_color_state, monon_color_cart )
diff --git a/src/mame/drivers/monzagp.cpp b/src/mame/drivers/monzagp.cpp
index 074edd9f8a5..43c4d2dfea0 100644
--- a/src/mame/drivers/monzagp.cpp
+++ b/src/mame/drivers/monzagp.cpp
@@ -140,15 +140,15 @@ void monzagp_state::monzagp_palette(palette_device &palette) const
// red component
bit0 = BIT(d, 2);
- int const r = combine_weights(rweights, bit0, bit1, bit2);
+ int const r = combine_3_weights(rweights, bit0, bit1, bit2);
// green component
bit0 = BIT(d, 1);
- int const g = combine_weights(gweights, bit0, bit1, bit2);
+ int const g = combine_3_weights(gweights, bit0, bit1, bit2);
// blue component
bit0 = BIT(d, 0);
- int const b = combine_weights(bweights, bit0, bit1, bit2);
+ int const b = combine_3_weights(bweights, bit0, bit1, bit2);
palette.set_pen_color(i, rgb_t(r, g, b));
}
@@ -504,8 +504,7 @@ static GFXDECODE_START( gfx_monzagp )
GFXDECODE_ENTRY( "gfx3", 0x0000, tile_layout, 0, 8 )
GFXDECODE_END
-void monzagp_state::monzagp(machine_config &config)
-{
+MACHINE_CONFIG_START(monzagp_state::monzagp)
I8035(config, m_maincpu, 12000000/4); /* 400KHz ??? - Main board Crystal is 12MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &monzagp_state::monzagp_map);
m_maincpu->set_addrmap(AS_IO, &monzagp_state::monzagp_io);
@@ -527,10 +526,10 @@ void monzagp_state::monzagp(machine_config &config)
PALETTE(config, m_palette, FUNC(monzagp_state::monzagp_palette), 0x200);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_monzagp);
- TIMER(config, "time_tick_timer").configure_periodic(FUNC(monzagp_state::time_tick_timer), attotime::from_hz(4));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("time_tick_timer", monzagp_state, time_tick_timer, attotime::from_hz(4))
NVRAM(config, "nvram", nvram_device::DEFAULT_NONE);
-}
+MACHINE_CONFIG_END
ROM_START( monzagp )
ROM_REGION( 0x1000, "maincpu", 0 )
diff --git a/src/mame/drivers/moo.cpp b/src/mame/drivers/moo.cpp
index e01c2c4d483..f2ea25096f8 100644
--- a/src/mame/drivers/moo.cpp
+++ b/src/mame/drivers/moo.cpp
@@ -494,15 +494,15 @@ MACHINE_RESET_MEMBER(moo_state,moo)
m_sprite_colorbase = 0;
}
-void moo_state::moo(machine_config &config)
-{
+MACHINE_CONFIG_START(moo_state::moo)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(32'000'000)/2); // 16MHz verified
- m_maincpu->set_addrmap(AS_PROGRAM, &moo_state::moo_map);
- m_maincpu->set_vblank_int("screen", FUNC(moo_state::moo_interrupt));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(32'000'000)/2) // 16MHz verified
+ MCFG_DEVICE_PROGRAM_MAP(moo_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", moo_state, moo_interrupt)
- Z80(config, m_soundcpu, XTAL(32'000'000)/4); // 8MHz verified
- m_soundcpu->set_addrmap(AS_PROGRAM, &moo_state::sound_map);
+ MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(32'000'000)/4) // 8MHz verified
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
MCFG_MACHINE_START_OVERRIDE(moo_state,moo)
MCFG_MACHINE_RESET_OVERRIDE(moo_state,moo)
@@ -513,13 +513,13 @@ void moo_state::moo(machine_config &config)
m_k053252->set_offsets(40, 16);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(1200)); // should give IRQ4 sufficient time to update scroll registers
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(40, 40+384-1, 16, 16+224-1);
- m_screen->set_screen_update(FUNC(moo_state::screen_update_moo));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1200)) // should give IRQ4 sufficient time to update scroll registers
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
+ MCFG_SCREEN_UPDATE_DRIVER(moo_state, screen_update_moo)
PALETTE(config, m_palette).set_format(palette_device::xRGB_888, 2048);
m_palette->enable_shadows();
@@ -549,17 +549,17 @@ void moo_state::moo(machine_config &config)
YM2151(config, "ymsnd", XTAL(32'000'000)/8).add_route(0, "lspeaker", 0.50).add_route(1, "rspeaker", 0.50); // 4MHz verified
- K054539(config, m_k054539, XTAL(18'432'000));
- m_k054539->add_route(0, "rspeaker", 0.75);
- m_k054539->add_route(1, "lspeaker", 0.75);
-}
+ MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
+ MCFG_SOUND_ROUTE(0, "rspeaker", 0.75)
+ MCFG_SOUND_ROUTE(1, "lspeaker", 0.75)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(moo_state::moobl)
-void moo_state::moobl(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, 16100000);
- m_maincpu->set_addrmap(AS_PROGRAM, &moo_state::moobl_map);
- m_maincpu->set_vblank_int("screen", FUNC(moo_state::moobl_interrupt));
+ MCFG_DEVICE_ADD("maincpu", M68000, 16100000)
+ MCFG_DEVICE_PROGRAM_MAP(moobl_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", moo_state, moobl_interrupt)
MCFG_MACHINE_START_OVERRIDE(moo_state,moo)
MCFG_MACHINE_RESET_OVERRIDE(moo_state,moo)
@@ -567,13 +567,13 @@ void moo_state::moobl(machine_config &config)
EEPROM_ER5911_8BIT(config, "eeprom");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(1200)); // should give IRQ4 sufficient time to update scroll registers
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(40, 40+384-1, 16, 16+224-1);
- m_screen->set_screen_update(FUNC(moo_state::screen_update_moo));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1200)) // should give IRQ4 sufficient time to update scroll registers
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
+ MCFG_SCREEN_UPDATE_DRIVER(moo_state, screen_update_moo)
PALETTE(config, m_palette).set_format(palette_device::xRGB_888, 2048);
m_palette->enable_shadows();
@@ -599,16 +599,16 @@ void moo_state::moobl(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- OKIM6295(config, m_oki, 1056000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
- m_oki->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_oki->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
-void moo_state::bucky(machine_config &config)
-{
+MACHINE_CONFIG_START(moo_state::bucky)
moo(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &moo_state::bucky_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(bucky_map)
K054000(config, "k054000", 0);
@@ -618,7 +618,7 @@ void moo_state::bucky(machine_config &config)
m_palette->set_format(palette_device::xRGB_888, 4096);
MCFG_VIDEO_START_OVERRIDE(moo_state,bucky)
-}
+MACHINE_CONFIG_END
ROM_START( moomesa ) /* Version EA */
diff --git a/src/mame/drivers/mosaic.cpp b/src/mame/drivers/mosaic.cpp
index fddb52cf413..37cabb24b2d 100644
--- a/src/mame/drivers/mosaic.cpp
+++ b/src/mame/drivers/mosaic.cpp
@@ -31,10 +31,6 @@ Sound: YM2203C
MCM2018ANS45 (x2)
HY6264P-15
-Actual Measured Clocks Derived
- Z180 - 6.14522MHz (12.288000MHz/2)
- YM2203C - 3.57543MHz (14.318181MHz/4)
-
Unknown 28 pin protection chip (possibly a PIC) at 5A (UC02 as silkscreened on PCB)
***************************************************************************/
@@ -281,23 +277,23 @@ void mosaic_state::machine_reset()
m_prot_val = 0;
}
-void mosaic_state::mosaic(machine_config &config)
-{
+MACHINE_CONFIG_START(mosaic_state::mosaic)
+
/* basic machine hardware */
- Z180(config, m_maincpu, XTAL(12'288'000)/2); /* 6.144MHz - Verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &mosaic_state::mosaic_map);
- m_maincpu->set_addrmap(AS_IO, &mosaic_state::mosaic_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(mosaic_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z180, XTAL(12'288'000)/2) /* 6.144MHz */
+ MCFG_DEVICE_PROGRAM_MAP(mosaic_map)
+ MCFG_DEVICE_IO_MAP(mosaic_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mosaic_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, 48*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(mosaic_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mosaic_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_mosaic);
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 256);
@@ -306,18 +302,18 @@ void mosaic_state::mosaic(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(14'318'181)/4)); /* 3.579545MHz - Verified */
+ ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(12'288'000)/4)); /* 3.072MHz or 3.579545MHz (14.31818MHz/4)? */
ymsnd.port_a_read_callback().set_ioport("DSW");
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
-void mosaic_state::gfire2(machine_config &config)
-{
+MACHINE_CONFIG_START(mosaic_state::gfire2)
mosaic(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &mosaic_state::gfire2_map);
- m_maincpu->set_addrmap(AS_IO, &mosaic_state::gfire2_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(gfire2_map)
+ MCFG_DEVICE_IO_MAP(gfire2_io_map)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mouser.cpp b/src/mame/drivers/mouser.cpp
index cde0dabd118..4dd9341441c 100644
--- a/src/mame/drivers/mouser.cpp
+++ b/src/mame/drivers/mouser.cpp
@@ -190,17 +190,17 @@ void mouser_state::machine_reset()
{
}
-void mouser_state::mouser(machine_config &config)
-{
+MACHINE_CONFIG_START(mouser_state::mouser)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* 4 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &mouser_state::mouser_map);
- m_maincpu->set_addrmap(AS_OPCODES, &mouser_state::decrypted_opcodes_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(mouser_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
- Z80(config, m_audiocpu, 4000000); /* ??? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &mouser_state::mouser_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &mouser_state::mouser_sound_io_map);
- m_audiocpu->set_periodic_int(FUNC(mouser_state::mouser_sound_nmi_assert), attotime::from_hz(4*60)); /* ??? This controls the sound tempo */
+ MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* ??? */
+ MCFG_DEVICE_PROGRAM_MAP(mouser_sound_map)
+ MCFG_DEVICE_IO_MAP(mouser_sound_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(mouser_state, mouser_sound_nmi_assert, 4*60) /* ??? This controls the sound tempo */
ls259_device &mainlatch(LS259(config, "mainlatch")); // type unconfirmed
mainlatch.q_out_cb<0>().set(FUNC(mouser_state::nmi_enable_w));
@@ -210,14 +210,14 @@ void mouser_state::mouser(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, 0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(mouser_state::screen_update_mouser));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(mouser_state::mouser_nmi_interrupt));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mouser_state, screen_update_mouser)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mouser_state, mouser_nmi_interrupt))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mouser);
PALETTE(config, m_palette, FUNC(mouser_state::mouser_palette), 64);
@@ -227,7 +227,7 @@ void mouser_state::mouser(machine_config &config)
AY8910(config, "ay1", 4000000/2).add_route(ALL_OUTPUTS, "mono", 0.50);
AY8910(config, "ay2", 4000000/2).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
ROM_START( mouser )
diff --git a/src/mame/drivers/mpc3000.cpp b/src/mame/drivers/mpc3000.cpp
index 3110cd1f0cb..799ee2b5c94 100644
--- a/src/mame/drivers/mpc3000.cpp
+++ b/src/mame/drivers/mpc3000.cpp
@@ -205,12 +205,13 @@ void mpc3000_state::mpc3000(machine_config &config)
hiledlatch.q_out_cb<6>().set_output("led14").invert(); // 16 Levels
hiledlatch.q_out_cb<7>().set_output("led15").invert(); // After
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(80);
- screen.set_screen_update("lcdc", FUNC(hd61830_device::screen_update));
- screen.set_size(240, 64); //6x20, 8x8
- screen.set_visarea(0, 240-1, 0, 64-1);
- screen.set_palette("palette");
+ device_t *device = nullptr;
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(80)
+ MCFG_SCREEN_UPDATE_DEVICE("lcdc", hd61830_device, screen_update)
+ MCFG_SCREEN_SIZE(240, 64) //6x20, 8x8
+ MCFG_SCREEN_VISIBLE_AREA(0, 240-1, 0, 64-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(mpc3000_state::mpc3000_palette), 2);
diff --git a/src/mame/drivers/mpf1.cpp b/src/mame/drivers/mpf1.cpp
index eec49abcc2e..6eb4640def3 100644
--- a/src/mame/drivers/mpf1.cpp
+++ b/src/mame/drivers/mpf1.cpp
@@ -355,8 +355,8 @@ void mpf1_state::machine_reset()
/* Machine Drivers */
-void mpf1_state::mpf1(machine_config &config)
-{
+MACHINE_CONFIG_START(mpf1_state::mpf1)
+
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(3'579'545)/2);
m_maincpu->set_addrmap(AS_PROGRAM, &mpf1_state::mpf1_map);
@@ -376,21 +376,21 @@ void mpf1_state::mpf1(machine_config &config)
ppi.out_pb_callback().set(FUNC(mpf1_state::ppi_pb_w));
ppi.out_pc_callback().set(FUNC(mpf1_state::ppi_pc_w));
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
/* video hardware */
config.set_default_layout(layout_mpf1);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- TIMER(config, "halt_timer").configure_periodic(FUNC(mpf1_state::check_halt_callback), attotime::from_hz(1));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("halt_timer", mpf1_state, check_halt_callback, attotime::from_hz(1))
+MACHINE_CONFIG_END
-void mpf1_state::mpf1b(machine_config &config)
-{
+MACHINE_CONFIG_START(mpf1_state::mpf1b)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(3'579'545)/2);
m_maincpu->set_addrmap(AS_PROGRAM, &mpf1_state::mpf1b_map);
@@ -410,23 +410,24 @@ void mpf1_state::mpf1b(machine_config &config)
ppi.out_pb_callback().set(FUNC(mpf1_state::ppi_pb_w));
ppi.out_pc_callback().set(FUNC(mpf1_state::ppi_pc_w));
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
/* video hardware */
config.set_default_layout(layout_mpf1b);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- TMS5220(config, TMS5220_TAG, 680000L).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD(TMS5220_TAG, TMS5220, 680000L)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- TIMER(config, "halt_timer").configure_periodic(FUNC(mpf1_state::check_halt_callback), attotime::from_hz(1));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("halt_timer", mpf1_state, check_halt_callback, attotime::from_hz(1))
+MACHINE_CONFIG_END
-void mpf1_state::mpf1p(machine_config &config)
-{
+MACHINE_CONFIG_START(mpf1_state::mpf1p)
/* basic machine hardware */
Z80(config, m_maincpu, 2500000);
m_maincpu->set_addrmap(AS_PROGRAM, &mpf1_state::mpf1p_map);
@@ -449,15 +450,16 @@ void mpf1_state::mpf1p(machine_config &config)
ppi.out_pb_callback().set(FUNC(mpf1_state::ppi_pb_w));
ppi.out_pc_callback().set(FUNC(mpf1_state::ppi_pc_w));
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- TIMER(config, "halt_timer").configure_periodic(FUNC(mpf1_state::check_halt_callback), attotime::from_hz(1));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("halt_timer", mpf1_state, check_halt_callback, attotime::from_hz(1))
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/mps1230.cpp b/src/mame/drivers/mps1230.cpp
index 71f8f4d9d39..3646d540904 100644
--- a/src/mame/drivers/mps1230.cpp
+++ b/src/mame/drivers/mps1230.cpp
@@ -138,17 +138,15 @@ void mps1230_state::mps1230_map(address_map &map)
static INPUT_PORTS_START( mps1230 )
INPUT_PORTS_END
-void mps1230_state::mps1230(machine_config &config)
-{
- UPD7810(config, m_maincpu, 11060000);
- m_maincpu->set_addrmap(AS_PROGRAM, &mps1230_state::mps1230_map);
-}
-
-void mps1230_state::mps1000(machine_config &config)
-{
- Z80(config, m_maincpu, 4000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &mps1230_state::mps1230_map);
-}
+MACHINE_CONFIG_START(mps1230_state::mps1230)
+ MCFG_DEVICE_ADD(CPU_TAG, UPD7810, 11060000)
+ MCFG_DEVICE_PROGRAM_MAP(mps1230_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(mps1230_state::mps1000)
+ MCFG_DEVICE_ADD(CPU_TAG, Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(mps1230_map)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/mpu12wbk.cpp b/src/mame/drivers/mpu12wbk.cpp
index 807716f04e8..f1e22b2bf43 100644
--- a/src/mame/drivers/mpu12wbk.cpp
+++ b/src/mame/drivers/mpu12wbk.cpp
@@ -494,22 +494,22 @@ GFXDECODE_END
* Machine Drivers *
*************************/
-void mpu12wbk_state::mpu12wbk(machine_config &config)
-{
+MACHINE_CONFIG_START(mpu12wbk_state::mpu12wbk)
+
/* basic machine hardware */
- MC6809(config, m_maincpu, MASTER_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu12wbk_state::mpu12wbk_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809, MASTER_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(mpu12wbk_map)
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size((32+1)*8, (32+1)*8); /* From MC6845, registers 00 & 04. (value-1) */
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1); /* Driven by MC6845, registers 01 & 06 */
- screen.set_screen_update(FUNC(mpu12wbk_state::screen_update_mpu12wbk));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE((32+1)*8, (32+1)*8) /* From MC6845, registers 00 & 04. (value-1) */
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) /* Driven by MC6845, registers 01 & 06 */
+ MCFG_SCREEN_UPDATE_DRIVER(mpu12wbk_state, screen_update_mpu12wbk)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_mpu12wbk);
PALETTE(config, "palette", FUNC(mpu12wbk_state::mpu12wbk_palette), 512);
@@ -524,7 +524,8 @@ void mpu12wbk_state::mpu12wbk(machine_config &config)
SPEAKER(config, "mono").front_center();
AY8910(config, "ay8910", MASTER_CLOCK/8).add_route(ALL_OUTPUTS, "mono", 1.00); /* clock guessed */
-}
+
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/mpu2.cpp b/src/mame/drivers/mpu2.cpp
index 914dd61b447..566df8efea1 100644
--- a/src/mame/drivers/mpu2.cpp
+++ b/src/mame/drivers/mpu2.cpp
@@ -74,11 +74,10 @@ INPUT_PORTS_END
-void mpu2_state::mpu2(machine_config &config)
-{
- M6800(config, m_maincpu, 2000000); // ?
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu2_state::mpu2_basemap);
-}
+MACHINE_CONFIG_START(mpu2_state::mpu2)
+ MCFG_DEVICE_ADD("maincpu", M6800, 2000000) // ?
+ MCFG_DEVICE_PROGRAM_MAP(mpu2_basemap)
+MACHINE_CONFIG_END
// technically not a 'bios' because they're all on the same board.
#define MPU2_MASKROM \
diff --git a/src/mame/drivers/mpu3.cpp b/src/mame/drivers/mpu3.cpp
index 6e1c005ff64..fa4d828b5d7 100644
--- a/src/mame/drivers/mpu3.cpp
+++ b/src/mame/drivers/mpu3.cpp
@@ -803,12 +803,12 @@ TIMER_DEVICE_CALLBACK_MEMBER(mpu3_state::ic10_callback)
}
WRITE8_MEMBER(mpu3_state::mpu3ptm_w)
{
- m_ptm2->write(offset >>2,data);//((offset & 0x1f) >>2),data);
+ m_ptm2->write(space, offset >>2,data);//((offset & 0x1f) >>2),data);
}
READ8_MEMBER(mpu3_state::mpu3ptm_r)
{
- return m_ptm2->read(offset >>2);
+ return m_ptm2->read(space, offset >>2);
}
void mpu3_state::mpu3_basemap(address_map &map)
@@ -822,18 +822,17 @@ void mpu3_state::mpu3_basemap(address_map &map)
map(0xa800, 0xa803).rw(m_pia6, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC6 */
}
-void mpu3_state::mpu3base(machine_config &config)
-{
- M6808(config, m_maincpu, 4_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu3_state::mpu3_basemap);
+MACHINE_CONFIG_START(mpu3_state::mpu3base)
+ MCFG_DEVICE_ADD("maincpu", M6808, 4_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(mpu3_basemap)
input_merger_device &mainirq(INPUT_MERGER_ANY_HIGH(config, "mainirq")); // open collector
mainirq.output_handler().set_inputline("maincpu", M6808_IRQ_LINE);
MSC1937(config, m_vfd);
- TIMER(config, "50hz").configure_periodic(FUNC(mpu3_state::gen_50hz), attotime::from_hz(100));
- TIMER(config, "555_ic10").configure_periodic(FUNC(mpu3_state::ic10_callback), PERIOD_OF_555_ASTABLE(10000,1000,0.0000001));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("50hz", mpu3_state, gen_50hz, attotime::from_hz(100))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("555_ic10", mpu3_state, ic10_callback, PERIOD_OF_555_ASTABLE(10000,1000,0.0000001))
/* 6840 PTM */
PTM6840(config, m_ptm2, 4_MHz_XTAL / 4);
@@ -881,12 +880,13 @@ void mpu3_state::mpu3base(machine_config &config)
REEL(config, m_reels[3], MPU3_48STEP_REEL, 1, 3, 0x00, 2);
m_reels[3]->optic_handler().set(FUNC(mpu3_state::reel_optic_cb<3>));
- METERS(config, m_meters, 0).set_number(8);
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(8)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 2x HM4334 or HMI6514 or MB8414 + 2.4V battery
config.set_default_layout(layout_mpu3);
-}
+MACHINE_CONFIG_END
static const mpu3_chr_table hprvpr_data[64] = {
diff --git a/src/mame/drivers/mpu4dealem.cpp b/src/mame/drivers/mpu4dealem.cpp
index 73db940923c..0b599667a2e 100644
--- a/src/mame/drivers/mpu4dealem.cpp
+++ b/src/mame/drivers/mpu4dealem.cpp
@@ -107,16 +107,16 @@ void mpu4dealem_state::dealem_palette(palette_device &palette) const
bit0 = BIT(*color_prom, 0);
bit1 = BIT(*color_prom, 1);
bit2 = BIT(*color_prom, 2);
- int const r = combine_weights(weights_r, bit0, bit1, bit2);
+ int const r = combine_3_weights(weights_r, bit0, bit1, bit2);
/* green component */
bit0 = BIT(*color_prom, 3);
bit1 = BIT(*color_prom, 4);
bit2 = BIT(*color_prom, 5);
- int const g = combine_weights(weights_g, bit0, bit1, bit2);
+ int const g = combine_3_weights(weights_g, bit0, bit1, bit2);
/* blue component */
bit0 = BIT(*color_prom, 6);
bit1 = BIT(*color_prom, 7);
- int const b = combine_weights(weights_b, bit0, bit1);
+ int const b = combine_2_weights(weights_b, bit0, bit1);
palette.set_pen_color(i, rgb_t(r, g, b));
color_prom++;
@@ -196,13 +196,12 @@ MACHINE_RESET_MEMBER(mpu4dealem_state,dealem_vid)
/* machine driver for Zenitone Deal 'Em board */
-void mpu4dealem_state::dealem(machine_config &config)
-{
+MACHINE_CONFIG_START(mpu4dealem_state::dealem)
MCFG_MACHINE_START_OVERRIDE(mpu4dealem_state,mod2) /* main mpu4 board initialisation */
MCFG_MACHINE_RESET_OVERRIDE(mpu4dealem_state,dealem_vid)
- M6809(config, m_maincpu, MPU4_MASTER_CLOCK/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4dealem_state::dealem_memmap);
+ MCFG_DEVICE_ADD("maincpu", M6809, MPU4_MASTER_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(dealem_memmap)
mpu4_common(config);
@@ -215,23 +214,23 @@ void mpu4dealem_state::dealem(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_size((54+1)*8, (32+1)*8); /* Taken from 6845 init, registers 00 & 04. Normally programmed with (value-1) */
- screen.set_visarea(0*8, 40*8-1, 0*8, 31*8-1); /* Taken from 6845 init, registers 01 & 06 */
- screen.set_refresh_hz(56); /* Measured accurately from the flip-flop, but 6845 handles this */
- screen.set_screen_update(FUNC(mpu4dealem_state::screen_update_dealem));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE((54+1)*8, (32+1)*8) /* Taken from 6845 init, registers 00 & 04. Normally programmed with (value-1) */
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 31*8-1) /* Taken from 6845 init, registers 01 & 06 */
+ MCFG_SCREEN_REFRESH_RATE(56) /* Measured accurately from the flip-flop, but 6845 handles this */
+ MCFG_SCREEN_UPDATE_DRIVER(mpu4dealem_state, screen_update_dealem)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_dealem);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dealem)
- PALETTE(config, m_palette, FUNC(mpu4dealem_state::dealem_palette), 32);
+ PALETTE(config, "palette", FUNC(mpu4dealem_state::dealem_palette), 32);
hd6845_device &crtc(HD6845(config, "crtc", MPU4_MASTER_CLOCK / 4 / 8)); /* HD68B45 */
crtc.set_screen("screen");
crtc.set_show_border_area(false);
crtc.set_char_width(8);
crtc.out_vsync_callback().set(FUNC(mpu4dealem_state::dealem_vsync_changed));
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mpu4plasma.cpp b/src/mame/drivers/mpu4plasma.cpp
index 9784f72a740..f1f6930af61 100644
--- a/src/mame/drivers/mpu4plasma.cpp
+++ b/src/mame/drivers/mpu4plasma.cpp
@@ -88,23 +88,22 @@ uint32_t mpu4plasma_state::screen_update_mpu4plasma(screen_device &screen, bitma
}
-void mpu4plasma_state::mpu4plasma(machine_config &config)
-{
+MACHINE_CONFIG_START(mpu4plasma_state::mpu4plasma)
mod2(config);
- m68000_device &plasmacpu(M68000(config, "plasmacpu", 10000000));
- plasmacpu.set_addrmap(AS_PROGRAM, &mpu4plasma_state::mpu4plasma_map);
- plasmacpu.set_vblank_int("screen", FUNC(mpu4plasma_state::irq4_line_hold));
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0, 128-1, 0*8, 40-1);
- screen.set_screen_update(FUNC(mpu4plasma_state::screen_update_mpu4plasma));
- screen.set_palette(m_palette);
-
- PALETTE(config, m_palette).set_entries(0x200);
-}
+ MCFG_DEVICE_ADD("plasmacpu", M68000, 10000000)
+ MCFG_DEVICE_PROGRAM_MAP(mpu4plasma_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mpu4plasma_state, irq4_line_hold)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 128-1, 0*8, 40-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mpu4plasma_state, screen_update_mpu4plasma)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 0x200)
+MACHINE_CONFIG_END
// plasma v0.1
#define M4BIGCHF_PLASMA \
diff --git a/src/mame/drivers/mpu4sw.cpp b/src/mame/drivers/mpu4sw.cpp
index 332d9327d4e..6922676d799 100644
--- a/src/mame/drivers/mpu4sw.cpp
+++ b/src/mame/drivers/mpu4sw.cpp
@@ -4626,24 +4626,24 @@ GAME_CUSTOM( 199?, m4ttdia__m, m4ttdia, "tda04y.p1", 0x0000, 0x020000, CR
GAME(year, setname, parent, mod4oki, mpu4, mpu4_state, init_m4_showstring, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "PES 0.4"
-GAME_CUSTOM( 199?, m4przve, 0, "pess.p1", 0x0000, 0x010000, CRC(d8e79833) SHA1(f68fd1bd057a353832c7de3e2818906ab2b844b7), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PES 0.4)" )
-GAME_CUSTOM( 199?, m4przve__l, m4przve, "pesb.p1", 0x0000, 0x010000, CRC(bf0ffed9) SHA1(ab8cd98ae7dfb3582aad7ae8c669a6d97f144f88), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PES 0.4 B)" )
-GAME_CUSTOM( 199?, m4przve__m, m4przve, "pesd.p1", 0x0000, 0x010000, CRC(6f7b1e16) SHA1(412a22ebb61b77541da067ba74621c8e54364471), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PES 0.4 D)" )
-GAME_CUSTOM( 199?, m4przve__n, m4przve, "pesdy.p1", 0x0000, 0x010000, CRC(94db27b4) SHA1(fe745a991a5e78fc9054480d3ce5bf6b7f5f9fe4), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PES 0.4 YD)" )
-GAME_CUSTOM( 199?, m4przve__o, m4przve, "pesk.p1", 0x0000, 0x010000, CRC(9e7b9f58) SHA1(86c2a83964f925448dda189546d9909b10e52673), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PES 0.4 K)" )
-GAME_CUSTOM( 199?, m4przve__p, m4przve, "pesy.p1", 0x0000, 0x010000, CRC(fbfc1563) SHA1(870239cab39eff33303fe06dfd1dd3db708f0f2d), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PES 0.4 Y)" )
+GAME_CUSTOM( 199?, m4przve, 0, "pess.p1", 0x0000, 0x010000, CRC(d8e79833) SHA1(f68fd1bd057a353832c7de3e2818906ab2b844b7), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PES 0.4)" )
+GAME_CUSTOM( 199?, m4przve__l, m4przve, "pesb.p1", 0x0000, 0x010000, CRC(bf0ffed9) SHA1(ab8cd98ae7dfb3582aad7ae8c669a6d97f144f88), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PES 0.4 B)" )
+GAME_CUSTOM( 199?, m4przve__m, m4przve, "pesd.p1", 0x0000, 0x010000, CRC(6f7b1e16) SHA1(412a22ebb61b77541da067ba74621c8e54364471), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PES 0.4 D)" )
+GAME_CUSTOM( 199?, m4przve__n, m4przve, "pesdy.p1", 0x0000, 0x010000, CRC(94db27b4) SHA1(fe745a991a5e78fc9054480d3ce5bf6b7f5f9fe4), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PES 0.4 YD)" )
+GAME_CUSTOM( 199?, m4przve__o, m4przve, "pesk.p1", 0x0000, 0x010000, CRC(9e7b9f58) SHA1(86c2a83964f925448dda189546d9909b10e52673), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PES 0.4 K)" )
+GAME_CUSTOM( 199?, m4przve__p, m4przve, "pesy.p1", 0x0000, 0x010000, CRC(fbfc1563) SHA1(870239cab39eff33303fe06dfd1dd3db708f0f2d), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PES 0.4 Y)" )
// "(C)1993 BARCREST" and "PE8 0.1"
-GAME_CUSTOM( 199?, m4przve__j, m4przve, "pe8s.p1", 0x0000, 0x010000, CRC(e8463e69) SHA1(923d6c79470a65cf66b089ef09898acea928aa9b), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1)" )
-GAME_CUSTOM( 199?, m4przve__a, m4przve, "pe8ad.p1", 0x0000, 0x010000, CRC(3a81422e) SHA1(bb77365ed7bc7c2cd9e1cfe6e266c6edfd3562a3), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 AD)" )
-GAME_CUSTOM( 199?, m4przve__b, m4przve, "pe8b.p1", 0x0000, 0x010000, CRC(9f36b112) SHA1(265451557afcfdc1aa8e77616f4b871698b20c5f), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 B)" )
-GAME_CUSTOM( 199?, m4przve__c, m4przve, "pe8bd.p1", 0x0000, 0x010000, CRC(af0689b5) SHA1(0e3cf464c855b0dcfeac403bda80818287707abe), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 BD)" )
-GAME_CUSTOM( 199?, m4przve__d, m4przve, "pe8d.p1", 0x0000, 0x010000, CRC(d21ee810) SHA1(bb95e217a383332a6617644bf17239c1ebd7c7e7), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 D)" )
-GAME_CUSTOM( 199?, m4przve__e, m4przve, "pe8dj.p1", 0x0000, 0x010000, CRC(2bdf3b80) SHA1(2d27373e01c4308c9b0818c8193b459b1b335634), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 DJ)" )
-GAME_CUSTOM( 199?, m4przve__f, m4przve, "pe8dk.p1", 0x0000, 0x010000, CRC(fcece282) SHA1(95e5bfeef8618f422501bcb9b703887587b3067a), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 KD)" )
-GAME_CUSTOM( 199?, m4przve__g, m4przve, "pe8dy.p1", 0x0000, 0x010000, CRC(6abc5682) SHA1(ae8754f0e214738adae4bc856cd72b0920aaa67a), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 YD)" )
-GAME_CUSTOM( 199?, m4przve__h, m4przve, "pe8j.p1", 0x0000, 0x010000, CRC(d3bf07f1) SHA1(3e539f24ef25c8d6fbfbdcd469fa8a2908dd2ec2), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 J)" )
-GAME_CUSTOM( 199?, m4przve__i, m4przve, "pe8k.p1", 0x0000, 0x010000, CRC(efba0d3f) SHA1(2205b94f5a6ed23e834cfeb0d3ebe5ed66d942a1), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 K)" )
-GAME_CUSTOM( 199?, m4przve__k, m4przve, "pe8y.p1", 0x0000, 0x010000, CRC(c324b75f) SHA1(bf3409a193539e1e032c856a5316bec674043d57), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 Y)" )
+GAME_CUSTOM( 199?, m4przve__j, m4przve, "pe8s.p1", 0x0000, 0x010000, CRC(e8463e69) SHA1(923d6c79470a65cf66b089ef09898acea928aa9b), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PE8 0.1)" )
+GAME_CUSTOM( 199?, m4przve__a, m4przve, "pe8ad.p1", 0x0000, 0x010000, CRC(3a81422e) SHA1(bb77365ed7bc7c2cd9e1cfe6e266c6edfd3562a3), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PE8 0.1 AD)" )
+GAME_CUSTOM( 199?, m4przve__b, m4przve, "pe8b.p1", 0x0000, 0x010000, CRC(9f36b112) SHA1(265451557afcfdc1aa8e77616f4b871698b20c5f), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PE8 0.1 B)" )
+GAME_CUSTOM( 199?, m4przve__c, m4przve, "pe8bd.p1", 0x0000, 0x010000, CRC(af0689b5) SHA1(0e3cf464c855b0dcfeac403bda80818287707abe), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PE8 0.1 BD)" )
+GAME_CUSTOM( 199?, m4przve__d, m4przve, "pe8d.p1", 0x0000, 0x010000, CRC(d21ee810) SHA1(bb95e217a383332a6617644bf17239c1ebd7c7e7), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PE8 0.1 D)" )
+GAME_CUSTOM( 199?, m4przve__e, m4przve, "pe8dj.p1", 0x0000, 0x010000, CRC(2bdf3b80) SHA1(2d27373e01c4308c9b0818c8193b459b1b335634), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PE8 0.1 DJ)" )
+GAME_CUSTOM( 199?, m4przve__f, m4przve, "pe8dk.p1", 0x0000, 0x010000, CRC(fcece282) SHA1(95e5bfeef8618f422501bcb9b703887587b3067a), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PE8 0.1 KD)" )
+GAME_CUSTOM( 199?, m4przve__g, m4przve, "pe8dy.p1", 0x0000, 0x010000, CRC(6abc5682) SHA1(ae8754f0e214738adae4bc856cd72b0920aaa67a), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PE8 0.1 YD)" )
+GAME_CUSTOM( 199?, m4przve__h, m4przve, "pe8j.p1", 0x0000, 0x010000, CRC(d3bf07f1) SHA1(3e539f24ef25c8d6fbfbdcd469fa8a2908dd2ec2), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PE8 0.1 J)" )
+GAME_CUSTOM( 199?, m4przve__i, m4przve, "pe8k.p1", 0x0000, 0x010000, CRC(efba0d3f) SHA1(2205b94f5a6ed23e834cfeb0d3ebe5ed66d942a1), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PE8 0.1 K)" )
+GAME_CUSTOM( 199?, m4przve__k, m4przve, "pe8y.p1", 0x0000, 0x010000, CRC(c324b75f) SHA1(bf3409a193539e1e032c856a5316bec674043d57), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PE8 0.1 Y)" )
#define M4SHOCM_EXTRA_ROMS \
diff --git a/src/mame/drivers/mpz80.cpp b/src/mame/drivers/mpz80.cpp
index 344a1f14e7f..02a247b1ea4 100644
--- a/src/mame/drivers/mpz80.cpp
+++ b/src/mame/drivers/mpz80.cpp
@@ -219,7 +219,7 @@ READ8_MEMBER( mpz80_state::mmu_r )
}
else
{
- data = m_s100->smemr_r(m_addr);
+ data = m_s100->smemr_r(space, m_addr);
}
return data;
@@ -267,7 +267,7 @@ WRITE8_MEMBER( mpz80_state::mmu_w )
}
else
{
- m_s100->mwrt_w(m_addr, data);
+ m_s100->mwrt_w(space, m_addr, data);
}
}
@@ -294,7 +294,7 @@ inline offs_t mpz80_state::get_io_address(offs_t offset)
READ8_MEMBER( mpz80_state::mmu_io_r )
{
- return m_s100->sinp_r(get_io_address(offset));
+ return m_s100->sinp_r(space, get_io_address(offset));
}
@@ -304,7 +304,7 @@ READ8_MEMBER( mpz80_state::mmu_io_r )
WRITE8_MEMBER( mpz80_state::mmu_io_w )
{
- m_s100->sout_w(get_io_address(offset), data);
+ m_s100->sout_w(space, get_io_address(offset), data);
}
@@ -709,42 +709,41 @@ void mpz80_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( mpz80 )
+// MACHINE_CONFIG( mpz80 )
//-------------------------------------------------
-void mpz80_state::mpz80(machine_config &config)
-{
+MACHINE_CONFIG_START(mpz80_state::mpz80)
// basic machine hardware
- Z80(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &mpz80_state::mpz80_mem);
- m_maincpu->set_addrmap(AS_IO, &mpz80_state::mpz80_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(mpz80_mem)
+ MCFG_DEVICE_IO_MAP(mpz80_io)
// S-100
- S100_BUS(config, m_s100, XTAL(4'000'000) / 2);
- m_s100->irq().set(FUNC(mpz80_state::s100_pint_w));
- m_s100->nmi().set(FUNC(mpz80_state::s100_nmi_w));
- m_s100->rdy().set_inputline(m_maincpu, Z80_INPUT_LINE_BOGUSWAIT);
- S100_SLOT(config, S100_TAG ":1", mpz80_s100_cards, "mm65k16s");
- S100_SLOT(config, S100_TAG ":2", mpz80_s100_cards, "wunderbus");
- S100_SLOT(config, S100_TAG ":3", mpz80_s100_cards, "dj2db");
- S100_SLOT(config, S100_TAG ":4", mpz80_s100_cards, nullptr);//"hdcdma")
- S100_SLOT(config, S100_TAG ":5", mpz80_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":6", mpz80_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":7", mpz80_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":8", mpz80_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":9", mpz80_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":10", mpz80_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":11", mpz80_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":12", mpz80_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":13", mpz80_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":14", mpz80_s100_cards, nullptr);
+ MCFG_DEVICE_ADD(S100_TAG, S100_BUS, XTAL(4'000'000) / 2)
+ MCFG_S100_IRQ_CALLBACK(WRITELINE(*this, mpz80_state, s100_pint_w))
+ MCFG_S100_NMI_CALLBACK(WRITELINE(*this, mpz80_state, s100_nmi_w))
+ MCFG_S100_RDY_CALLBACK(INPUTLINE(Z80_TAG, Z80_INPUT_LINE_BOGUSWAIT))
+ MCFG_S100_SLOT_ADD(S100_TAG ":1", mpz80_s100_cards, "mm65k16s")
+ MCFG_S100_SLOT_ADD(S100_TAG ":2", mpz80_s100_cards, "wunderbus")
+ MCFG_S100_SLOT_ADD(S100_TAG ":3", mpz80_s100_cards, "dj2db")
+ MCFG_S100_SLOT_ADD(S100_TAG ":4", mpz80_s100_cards, nullptr)//"hdcdma")
+ MCFG_S100_SLOT_ADD(S100_TAG ":5", mpz80_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":6", mpz80_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":7", mpz80_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":8", mpz80_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":9", mpz80_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":10", mpz80_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":11", mpz80_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":12", mpz80_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":13", mpz80_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":14", mpz80_s100_cards, nullptr)
// internal ram
RAM(config, RAM_TAG).set_default_size("65K"); // 65K???
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("mpz80");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "mpz80")
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mrdo.cpp b/src/mame/drivers/mrdo.cpp
index c157b6f9b05..7a26840f18c 100644
--- a/src/mame/drivers/mrdo.cpp
+++ b/src/mame/drivers/mrdo.cpp
@@ -57,8 +57,8 @@ void mrdo_state::main_map(address_map &map)
map(0x8800, 0x8fff).ram().w(FUNC(mrdo_state::mrdo_fgvideoram_w)).share("fgvideoram");
map(0x9000, 0x90ff).writeonly().share("spriteram");
map(0x9800, 0x9800).w(FUNC(mrdo_state::mrdo_flipscreen_w)); /* screen flip + playfield priority */
- map(0x9801, 0x9801).w("u8106_1", FUNC(u8106_device::write));
- map(0x9802, 0x9802).w("u8106_2", FUNC(u8106_device::write));
+ map(0x9801, 0x9801).w("u8106_1", FUNC(u8106_device::command_w));
+ map(0x9802, 0x9802).w("u8106_2", FUNC(u8106_device::command_w));
map(0x9803, 0x9803).r(FUNC(mrdo_state::mrdo_SECRE_r));
map(0xa000, 0xa000).portr("P1");
map(0xa001, 0xa001).portr("P2");
@@ -175,18 +175,18 @@ static GFXDECODE_START( gfx_mrdo )
GFXDECODE_END
-void mrdo_state::mrdo(machine_config &config)
-{
+MACHINE_CONFIG_START(mrdo_state::mrdo)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLOCK/2); /* Verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &mrdo_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(mrdo_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CLOCK/2) /* Verified */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mrdo_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(VIDEO_CLOCK/4, 312, 8, 248, 262, 32, 224);
- screen.set_screen_update(FUNC(mrdo_state::screen_update_mrdo));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/4, 312, 8, 248, 262, 32, 224)
+ MCFG_SCREEN_UPDATE_DRIVER(mrdo_state, screen_update_mrdo)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mrdo);
PALETTE(config, m_palette, FUNC(mrdo_state::mrdo_palette), 64*4 + 16*4, 256);
@@ -194,16 +194,17 @@ void mrdo_state::mrdo(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- U8106(config, "u8106_1", MAIN_CLOCK/2).add_route(ALL_OUTPUTS, "mono", 0.50); /* sn76489-equivalent?, Verified */
+ MCFG_DEVICE_ADD("u8106_1", U8106, MAIN_CLOCK/2) /* sn76489-equivalent?, Verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- U8106(config, "u8106_2", MAIN_CLOCK/2).add_route(ALL_OUTPUTS, "mono", 0.50); /* sn76489-equivalent?, Verified */
-}
+ MCFG_DEVICE_ADD("u8106_2", U8106, MAIN_CLOCK/2) /* sn76489-equivalent?, Verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
-void mrdo_state::mrlo(machine_config &config)
-{
+MACHINE_CONFIG_START(mrdo_state::mrlo)
mrdo(config);
- //config.device_remove("pal16r6");
-}
+ //MCFG_DEVICE_REMOVE("pal16r6")
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mrflea.cpp b/src/mame/drivers/mrflea.cpp
index c9020ed39ec..b7f5f795d2d 100644
--- a/src/mame/drivers/mrflea.cpp
+++ b/src/mame/drivers/mrflea.cpp
@@ -255,20 +255,20 @@ void mrflea_state::machine_reset()
m_gfx_bank = 0;
}
-void mrflea_state::mrflea(machine_config &config)
-{
+MACHINE_CONFIG_START(mrflea_state::mrflea)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* 4 MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &mrflea_state::mrflea_master_map);
- m_maincpu->set_addrmap(AS_IO, &mrflea_state::mrflea_master_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(mrflea_state::irq0_line_hold)); /* NMI resets the game */
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(mrflea_master_map)
+ MCFG_DEVICE_IO_MAP(mrflea_master_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mrflea_state, irq0_line_hold) /* NMI resets the game */
- Z80(config, m_subcpu, 6000000); // runs in IM 1, so doesn't use 8259 INTA
- m_subcpu->set_addrmap(AS_PROGRAM, &mrflea_state::mrflea_slave_map);
- m_subcpu->set_addrmap(AS_IO, &mrflea_state::mrflea_slave_io_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(mrflea_state::mrflea_slave_interrupt), "screen", 0, 1);
+ MCFG_DEVICE_ADD("subcpu", Z80, 6000000) // runs in IM 1, so doesn't use 8259 INTA
+ MCFG_DEVICE_PROGRAM_MAP(mrflea_slave_map)
+ MCFG_DEVICE_IO_MAP(mrflea_slave_io_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mrflea_state, mrflea_slave_interrupt, "screen", 0, 1)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
i8255_device &mainppi(I8255(config, "mainppi", 0));
mainppi.in_pb_callback().set("subppi", FUNC(i8255_device::pb_r));
@@ -285,13 +285,13 @@ void mrflea_state::mrflea(machine_config &config)
m_pic->out_int_callback().set_inputline(m_subcpu, 0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 0*8, 31*8-1);
- m_screen->set_screen_update(FUNC(mrflea_state::screen_update_mrflea));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mrflea_state, screen_update_mrflea)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mrflea);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 32);
@@ -315,7 +315,7 @@ void mrflea_state::mrflea(machine_config &config)
ay4.port_a_read_callback().set_ioport("UNKNOWN");
ay4.port_b_write_callback().set(FUNC(mrflea_state::mrflea_data1_w));
ay4.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/mrgame.cpp b/src/mame/drivers/mrgame.cpp
index 094b3a46334..e966ad5c383 100644
--- a/src/mame/drivers/mrgame.cpp
+++ b/src/mame/drivers/mrgame.cpp
@@ -468,18 +468,18 @@ void mrgame_state::mrgame_palette(palette_device &palette) const
bit0 = BIT(color_prom[i], 0);
bit1 = BIT(color_prom[i], 1);
bit2 = BIT(color_prom[i], 2);
- uint8_t const r = combine_weights(rweights, bit0, bit1, bit2);
+ uint8_t const r = combine_3_weights(rweights, bit0, bit1, bit2);
// green component
bit0 = BIT(color_prom[i], 3);
bit1 = BIT(color_prom[i], 4);
bit2 = BIT(color_prom[i], 5);
- uint8_t const g = combine_weights(gweights, bit0, bit1, bit2);
+ uint8_t const g = combine_3_weights(gweights, bit0, bit1, bit2);
// blue component
bit0 = BIT(color_prom[i], 6);
bit1 = BIT(color_prom[i], 7);
- uint8_t const b = combine_weights(bweights, bit0, bit1);
+ uint8_t const b = combine_2_weights(bweights, bit0, bit1);
palette.set_pen_color(i, rgb_t(r, g, b));
palette.set_pen_color(i + 32, rgb_t(r, g, b));
@@ -591,6 +591,7 @@ void mrgame_state::mrgame(machine_config &config)
dacvol.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dacvol", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dacvol", -1.0, DAC_VREF_NEG_INPUT);
diff --git a/src/mame/drivers/mrjong.cpp b/src/mame/drivers/mrjong.cpp
index f2de01ab5a6..f0cafad98c4 100644
--- a/src/mame/drivers/mrjong.cpp
+++ b/src/mame/drivers/mrjong.cpp
@@ -85,8 +85,8 @@ void mrjong_state::mrjong_io_map(address_map &map)
{
map.global_mask(0xff);
map(0x00, 0x00).portr("P2").w(FUNC(mrjong_state::mrjong_flipscreen_w));
- map(0x01, 0x01).portr("P1").w("sn1", FUNC(sn76489_device::write));
- map(0x02, 0x02).portr("DSW").w("sn2", FUNC(sn76489_device::write));
+ map(0x01, 0x01).portr("P1").w("sn1", FUNC(sn76489_device::command_w));
+ map(0x02, 0x02).portr("DSW").w("sn2", FUNC(sn76489_device::command_w));
map(0x03, 0x03).r(FUNC(mrjong_state::io_0x03_r)); // Unknown
}
@@ -185,22 +185,22 @@ GFXDECODE_END
*
*************************************/
-void mrjong_state::mrjong(machine_config &config)
-{
+MACHINE_CONFIG_START(mrjong_state::mrjong)
+
/* basic machine hardware */
- Z80(config, m_maincpu,15468000/6); /* 2.578 MHz?? */
- m_maincpu->set_addrmap(AS_PROGRAM, &mrjong_state::mrjong_map);
- m_maincpu->set_addrmap(AS_IO, &mrjong_state::mrjong_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80,15468000/6) /* 2.578 MHz?? */
+ MCFG_DEVICE_PROGRAM_MAP(mrjong_map)
+ MCFG_DEVICE_IO_MAP(mrjong_io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 30*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(mrjong_state::screen_update_mrjong));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 30*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mrjong_state, screen_update_mrjong)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mrjong);
PALETTE(config, m_palette, FUNC(mrjong_state::mrjong_palette), 4 * 32, 16);
@@ -209,7 +209,7 @@ void mrjong_state::mrjong(machine_config &config)
SPEAKER(config, "mono").front_center();
SN76489(config, "sn1", 15468000 / 6).add_route(ALL_OUTPUTS, "mono", 1.0);
SN76489(config, "sn2", 15468000 / 6).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/ms0515.cpp b/src/mame/drivers/ms0515.cpp
index c0f1aa54baa..3d2de87af00 100644
--- a/src/mame/drivers/ms0515.cpp
+++ b/src/mame/drivers/ms0515.cpp
@@ -523,26 +523,27 @@ WRITE_LINE_MEMBER(ms0515_state::irq11_w)
irq_encoder(11, state);
}
-void ms0515_state::ms0515(machine_config &config)
-{
+MACHINE_CONFIG_START(ms0515_state::ms0515)
/* basic machine hardware */
T11(config, m_maincpu, XTAL(15'000'000) / 2); // actual CPU is T11 clone, KR1807VM1
m_maincpu->set_initial_mode(0xf2ff);
m_maincpu->set_addrmap(AS_PROGRAM, &ms0515_state::ms0515_mem);
/* video hardware -- 50 Hz refresh rate */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw( XTAL(15'000'000), 958,0,640, 313,0,200 );
- screen.set_screen_update(FUNC(ms0515_state::screen_update_ms0515));
- screen.screen_vblank().set(FUNC(ms0515_state::screen_vblank));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS( XTAL(15'000'000), 958,0,640, 313,0,200 )
+ MCFG_SCREEN_UPDATE_DRIVER(ms0515_state, screen_update_ms0515)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, ms0515_state, screen_vblank))
+ MCFG_SCREEN_PALETTE("palette")
config.set_default_layout(layout_ms0515);
PALETTE(config, "palette", FUNC(ms0515_state::ms0515_palette), 16);
KR1818VG93(config, m_fdc, 1000000);
- FLOPPY_CONNECTOR(config, "vg93:0", ms0515_floppies, "525qd", ms0515_state::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "vg93:1", ms0515_floppies, "525qd", ms0515_state::floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("vg93:0", ms0515_floppies, "525qd", ms0515_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("vg93:1", ms0515_floppies, "525qd", ms0515_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
i8255_device &ppi(I8255(config, "ppi8255_1"));
ppi.out_pa_callback().set(FUNC(ms0515_state::ms0515_porta_w));
@@ -560,8 +561,8 @@ void ms0515_state::ms0515(machine_config &config)
m_rs232->cts_handler().set(m_i8251line, FUNC(i8251_device::write_cts));
m_rs232->dsr_handler().set(m_i8251line, FUNC(i8251_device::write_dsr));
-// clock_device &line_clock(CLOCK(config, "line_clock", 4800*16)); // 8251 is set to /16 on the clock input
-// line_clock.signal_handler().set(FUNC(ms0515_state::write_line_clock));
+// MCFG_DEVICE_ADD("line_clock", CLOCK, 4800*16) // 8251 is set to /16 on the clock input
+// MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, ms0515_state, write_line_clock))
// serial connection to MS7004 keyboard
I8251(config, m_i8251kbd, 0);
@@ -573,8 +574,8 @@ void ms0515_state::ms0515(machine_config &config)
m_ms7004->rts_handler().set(m_i8251kbd, FUNC(i8251_device::write_cts));
// baud rate is supposed to be 4800 but keyboard is slightly faster
- clock_device &keyboard_clock(CLOCK(config, "keyboard_clock", 4960*16));
- keyboard_clock.signal_handler().set(FUNC(ms0515_state::write_keyboard_clock));
+ MCFG_DEVICE_ADD("keyboard_clock", CLOCK, 4960*16)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, ms0515_state, write_keyboard_clock))
PIT8253(config, m_pit8253, 0);
m_pit8253->set_clk<0>(XTAL(2'000'000));
@@ -589,7 +590,7 @@ void ms0515_state::ms0515(machine_config &config)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("128K");
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( ms0515 )
diff --git a/src/mame/drivers/ms32.cpp b/src/mame/drivers/ms32.cpp
index 431ee15cae4..582a0457c85 100644
--- a/src/mame/drivers/ms32.cpp
+++ b/src/mame/drivers/ms32.cpp
@@ -1700,31 +1700,31 @@ void ms32_state::machine_reset()
/********** MACHINE DRIVER **********/
-void ms32_state::ms32(machine_config &config)
-{
+MACHINE_CONFIG_START(ms32_state::ms32)
+
/* basic machine hardware */
- V70(config, m_maincpu, 20000000); // D70632GD-20 20MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &ms32_state::ms32_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(ms32_state::irq_callback));
+ MCFG_DEVICE_ADD("maincpu", V70, 20000000) // D70632GD-20 20MHz
+ MCFG_DEVICE_PROGRAM_MAP(ms32_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(ms32_state,irq_callback)
- TIMER(config, "scantimer").configure_scanline(FUNC(ms32_state::ms32_interrupt), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ms32_state, ms32_interrupt, "screen", 0, 1)
- Z80(config, m_audiocpu, 8000000); // Z0840008PSC, Clock from notes
- m_audiocpu->set_addrmap(AS_PROGRAM, &ms32_state::ms32_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 8000000) // Z0840008PSC, Clock from notes
+ MCFG_DEVICE_PROGRAM_MAP(ms32_sound_map)
- config.m_minimum_quantum = attotime::from_hz(60000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60000))
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(40*8, 28*8);
- m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
- m_screen->set_screen_update(FUNC(ms32_state::screen_update_ms32));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 28*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ms32_state, screen_update_ms32)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_ms32);
- PALETTE(config, m_palette).set_entries(0x10000);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ms32)
+ MCFG_PALETTE_ADD("palette", 0x10000)
/* sound hardware */
@@ -1734,23 +1734,24 @@ void ms32_state::ms32(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- ymf271_device &ymf(YMF271(config, "ymf", 16934400));
- ymf.add_route(0, "lspeaker", 1.0);
- ymf.add_route(1, "rspeaker", 1.0);
-// ymf.add_route(2, "lspeaker", 1.0); Output 2/3 not used?
-// ymf.add_route(3, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymf", YMF271, 16934400)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+// MCFG_SOUND_ROUTE(2, "lspeaker", 1.0) Output 2/3 not used?
+// MCFG_SOUND_ROUTE(3, "rspeaker", 1.0)
-void ms32_state::f1superb(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(ms32_state::f1superb)
ms32(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &ms32_state::f1superb_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(f1superb_map)
- m_gfxdecode->set_info(gfx_f1superb);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_f1superb)
MCFG_VIDEO_START_OVERRIDE(ms32_state,f1superb)
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/msbc1.cpp b/src/mame/drivers/msbc1.cpp
index 5ceecb1e4c2..f11756b0bd9 100644
--- a/src/mame/drivers/msbc1.cpp
+++ b/src/mame/drivers/msbc1.cpp
@@ -94,12 +94,11 @@ void msbc1_state::machine_reset()
m_maincpu->reset();
}
-void msbc1_state::msbc1(machine_config &config)
-{
+MACHINE_CONFIG_START(msbc1_state::msbc1)
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(12'500'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &msbc1_state::msbc1_mem);
-}
+ MCFG_DEVICE_ADD(MC68000R12_TAG, M68000, XTAL(12'500'000))
+ MCFG_DEVICE_PROGRAM_MAP(msbc1_mem)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( msbc1 )
diff --git a/src/mame/drivers/mstation.cpp b/src/mame/drivers/mstation.cpp
index 4dce16f278e..767fcbcc163 100644
--- a/src/mame/drivers/mstation.cpp
+++ b/src/mame/drivers/mstation.cpp
@@ -446,21 +446,20 @@ void mstation_state::mstation_palette(palette_device &palette) const
}
-void mstation_state::mstation(machine_config &config)
-{
+MACHINE_CONFIG_START(mstation_state::mstation)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000)); //unknown clock
- m_maincpu->set_addrmap(AS_PROGRAM, &mstation_state::mstation_mem);
- m_maincpu->set_addrmap(AS_IO, &mstation_state::mstation_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(4'000'000)) //unknown clock
+ MCFG_DEVICE_PROGRAM_MAP(mstation_mem)
+ MCFG_DEVICE_IO_MAP(mstation_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(mstation_state::screen_update));
- screen.set_size(320, 128);
- screen.set_visarea(0, 320-1, 0, 128-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(mstation_state, screen_update)
+ MCFG_SCREEN_SIZE(320, 128)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 128-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(mstation_state::mstation_palette), 2);
@@ -468,10 +467,10 @@ void mstation_state::mstation(machine_config &config)
SST_28SF040(config, "flash1");
// IRQ 4 is generated every second, used for auto power off
- TIMER(config, "1hz_timer").configure_periodic(FUNC(mstation_state::mstation_1hz_timer), attotime::from_hz(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("1hz_timer", mstation_state, mstation_1hz_timer, attotime::from_hz(1))
// IRQ 1 is used for scan the kb and for cursor blinking
- TIMER(config, "kb_timer").configure_periodic(FUNC(mstation_state::mstation_kb_timer), attotime::from_hz(50));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("kb_timer", mstation_state, mstation_kb_timer, attotime::from_hz(50))
rp5c01_device &rtc(RP5C01(config, "rtc", XTAL(32'768)));
rtc.out_alarm_callback().set(FUNC(mstation_state::rtc_irq));
@@ -481,7 +480,7 @@ void mstation_state::mstation(machine_config &config)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("128K");
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( mstation )
diff --git a/src/mame/drivers/msx.cpp b/src/mame/drivers/msx.cpp
index bdb05dc6efc..16e3b689a7d 100644
--- a/src/mame/drivers/msx.cpp
+++ b/src/mame/drivers/msx.cpp
@@ -530,6 +530,7 @@ PCB Layouts missing
#include "includes/msx.h"
#include "formats/dsk_dsk.h"
#include "formats/dmk_dsk.h"
+#include "machine/input_merger.h"
#include "machine/msx_matsushita.h"
#include "machine/msx_s1985.h"
#include "machine/msx_systemflags.h"
@@ -556,7 +557,8 @@ void msx_state::msx_io_map(address_map &map)
map(0x91, 0x91).w("cent_data_out", FUNC(output_latch_device::bus_w));
map(0xa0, 0xa7).rw(m_ay8910, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
map(0xa8, 0xab).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
- map(0x98, 0x99).rw("tms9928a", FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
+ map(0x98, 0x98).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0x99, 0x99).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
map(0xd8, 0xd9).rw(FUNC(msx_state::msx_kanji_r), FUNC(msx_state::msx_kanji_w));
// 0xfc - 0xff : Memory mapper I/O ports. I/O handlers will be installed if a memory mapper is present in a system
}
@@ -1236,42 +1238,36 @@ WRITE_LINE_MEMBER(msx2_state::turbo_w)
#define MSX_VISIBLE_YBORDER_PIXELS 24
-void msx_state::msx1_cartlist(machine_config &config)
-{
- SOFTWARE_LIST(config, "cart_list").set_original("msx1_cart");
-}
+MACHINE_CONFIG_START(msx_state::msx1_cartlist)
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "msx1_cart")
+MACHINE_CONFIG_END
-void msx_state::msx1_floplist(machine_config &config)
-{
- SOFTWARE_LIST(config, "flop_list").set_original("msx1_flop");
-}
+MACHINE_CONFIG_START(msx_state::msx1_floplist)
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "msx1_flop")
+MACHINE_CONFIG_END
-void msx2_state::msx2_cartlist(machine_config &config)
-{
- SOFTWARE_LIST(config, "cart_list").set_original("msx2_cart");
- SOFTWARE_LIST(config, "msx1_crt_l").set_compatible("msx1_cart");
-}
+MACHINE_CONFIG_START(msx2_state::msx2_cartlist)
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "msx2_cart")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("msx1_crt_l", "msx1_cart")
+MACHINE_CONFIG_END
-void msx2_state::msx2_floplist(machine_config &config)
-{
- SOFTWARE_LIST(config, "flop_list").set_original("msx2_flop");
- SOFTWARE_LIST(config, "msx1_flp_l").set_compatible("msx1_flop");
-}
+MACHINE_CONFIG_START(msx2_state::msx2_floplist)
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "msx2_flop")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("msx1_flp_l", "msx1_flop")
+MACHINE_CONFIG_END
-void msx2_state::msx2p_floplist(machine_config &config)
-{
- SOFTWARE_LIST(config, "flop_list").set_original("msx2p_flop");
- SOFTWARE_LIST(config, "msx2_flp_l").set_compatible("msx2_flop");
- SOFTWARE_LIST(config, "msx1_flp_l").set_compatible("msx1_flop"); // maybe not?
-}
+MACHINE_CONFIG_START(msx2_state::msx2p_floplist)
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "msx2p_flop")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("msx2_flp_l", "msx2_flop")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("msx1_flp_l", "msx1_flop") // maybe not?
+MACHINE_CONFIG_END
-void msx2_state::msxr_floplist(machine_config &config)
-{
- SOFTWARE_LIST(config, "flop_list").set_original("msxr_flop");
- SOFTWARE_LIST(config, "msx2p_flp_l").set_compatible("msx2p_flop");
- SOFTWARE_LIST(config, "msx2_flp_l").set_compatible("msx2_flop"); // maybe not?
- SOFTWARE_LIST(config, "msx1_flp_l").set_compatible("msx1_flop"); // maybe not?
-}
+MACHINE_CONFIG_START(msx2_state::msxr_floplist)
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "msxr_flop")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("msx2p_flp_l", "msx2p_flop")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("msx2_flp_l", "msx2_flop") // maybe not?
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("msx1_flp_l", "msx1_flop") // maybe not?
+MACHINE_CONFIG_END
FLOPPY_FORMATS_MEMBER( msx_state::floppy_formats )
FLOPPY_MSX_FORMAT,
@@ -1324,40 +1320,36 @@ void msx_state::msx_microsol(machine_config &config)
fdc.set_force_ready(true);
}
-void msx_state::msx_1_35_ssdd_drive(machine_config &config)
-{
- FLOPPY_CONNECTOR(config, "fdc:0", msx_floppies, "35ssdd", msx_state::floppy_formats);
-}
+MACHINE_CONFIG_START(msx_state::msx_1_35_ssdd_drive)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", msx_floppies, "35ssdd", msx_state::floppy_formats)
+MACHINE_CONFIG_END
-void msx_state::msx_1_35_dd_drive(machine_config &config)
-{
- FLOPPY_CONNECTOR(config, "fdc:0", msx_floppies, "35dd", msx_state::floppy_formats);
-}
+MACHINE_CONFIG_START(msx_state::msx_1_35_dd_drive)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", msx_floppies, "35dd", msx_state::floppy_formats)
+MACHINE_CONFIG_END
-void msx_state::msx_2_35_dd_drive(machine_config &config)
-{
- FLOPPY_CONNECTOR(config, "fdc:0", msx_floppies, "35dd", msx_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", msx_floppies, "35dd", msx_state::floppy_formats);
-}
+MACHINE_CONFIG_START(msx_state::msx_2_35_dd_drive)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", msx_floppies, "35dd", msx_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", msx_floppies, "35dd", msx_state::floppy_formats)
+MACHINE_CONFIG_END
-void msx2_state::msx_ym2413(machine_config &config)
-{
- YM2413(config, "ym2413", 21.477272_MHz_XTAL / 6).add_route(ALL_OUTPUTS, "speaker", 0.4);
-}
+MACHINE_CONFIG_START(msx2_state::msx_ym2413)
+ MCFG_DEVICE_ADD("ym2413", YM2413, 21.477272_MHz_XTAL / 6)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4)
+MACHINE_CONFIG_END
-void msx2_state::msx2_64kb_vram(machine_config &config)
-{
- m_v9938->set_vram_size(0x10000);
-}
+MACHINE_CONFIG_START(msx2_state::msx2_64kb_vram)
+ MCFG_DEVICE_MODIFY("v9938")
+ downcast<v99x8_device &>(*device).set_vram_size(0x10000);
+MACHINE_CONFIG_END
-void msx_state::msx(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::msx)
/* basic machine hardware */
- Z80(config, m_maincpu, 10.738635_MHz_XTAL / 3); /* 3.579545 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &msx_state::msx_memory_map);
- m_maincpu->set_addrmap(AS_IO, &msx_state::msx_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(msx_state::msx_interrupt)); /* Needed for mouse updates */
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD("maincpu", Z80, 10.738635_MHz_XTAL / 3) /* 3.579545 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(msx_memory_map)
+ MCFG_DEVICE_IO_MAP(msx_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", msx_state, msx_interrupt) /* Needed for mouse updates */
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline("maincpu", INPUT_LINE_IRQ0);
@@ -1368,11 +1360,11 @@ void msx_state::msx(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.1);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.1)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.25);
AY8910(config, m_ay8910, 10.738635_MHz_XTAL / 3 / 2);
m_ay8910->set_flags(AY8910_SINGLE_OUTPUT);
m_ay8910->port_a_read_callback().set(FUNC(msx_state::msx_psg_port_a_r));
@@ -1382,25 +1374,24 @@ void msx_state::msx(machine_config &config)
m_ay8910->add_route(ALL_OUTPUTS, "speaker", 0.3);
/* printer */
- centronics_device &centronics(CENTRONICS(config, "centronics", centronics_devices, "printer"));
- centronics.busy_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit1));
+ MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit1))
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- centronics.set_output_latch(cent_data_out);
- INPUT_BUFFER(config, "cent_status_in");
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+ MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0)
- output_latch_device &cent_ctrl_out(OUTPUT_LATCH(config, "cent_ctrl_out"));
- cent_ctrl_out.bit_handler<1>().set(centronics, FUNC(centronics_device::write_strobe));
+ MCFG_DEVICE_ADD("cent_ctrl_out", OUTPUT_LATCH, 0)
+ MCFG_OUTPUT_LATCH_BIT1_HANDLER(WRITELINE("centronics", centronics_device, write_strobe))
/* cassette */
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(fmsx_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY);
- m_cassette->set_interface("msx_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(fmsx_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY)
+ MCFG_CASSETTE_INTERFACE("msx_cass")
/* Software lists */
- SOFTWARE_LIST(config, "cass_list").set_original("msx1_cass");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list","msx1_cass")
+MACHINE_CONFIG_END
template<typename VDPType>
@@ -1416,13 +1407,12 @@ void msx_state::msx1(VDPType &vdp_type, machine_config &config)
}
-void msx2_state::msx2(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::msx2)
/* basic machine hardware */
- Z80(config, m_maincpu, 21.477272_MHz_XTAL / 6); /* 3.579545 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &msx2_state::msx_memory_map);
- m_maincpu->set_addrmap(AS_IO, &msx2_state::msx2_io_map);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD("maincpu", Z80, 21.477272_MHz_XTAL / 6) /* 3.579545 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(msx_memory_map)
+ MCFG_DEVICE_IO_MAP(msx2_io_map)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline("maincpu", INPUT_LINE_IRQ0);
@@ -1440,11 +1430,11 @@ void msx2_state::msx2(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.1);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.1)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.25);
AY8910(config, m_ay8910, 21.477272_MHz_XTAL / 6 / 2);
m_ay8910->set_flags(AY8910_SINGLE_OUTPUT);
m_ay8910->port_a_read_callback().set(FUNC(msx2_state::msx_psg_port_a_r));
@@ -1454,38 +1444,36 @@ void msx2_state::msx2(machine_config &config)
m_ay8910->add_route(ALL_OUTPUTS, "speaker", 0.3);
/* printer */
- centronics_device &centronics(CENTRONICS(config, "centronics", centronics_devices, "printer"));
- centronics.busy_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit1));
+ MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit1))
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- centronics.set_output_latch(cent_data_out);
- INPUT_BUFFER(config, "cent_status_in");
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+ MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0)
- output_latch_device &cent_ctrl_out(OUTPUT_LATCH(config, "cent_ctrl_out"));
- cent_ctrl_out.bit_handler<1>().set(centronics, FUNC(centronics_device::write_strobe));
+ MCFG_DEVICE_ADD("cent_ctrl_out", OUTPUT_LATCH, 0)
+ MCFG_OUTPUT_LATCH_BIT1_HANDLER(WRITELINE("centronics", centronics_device, write_strobe))
/* cassette */
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(fmsx_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY);
- m_cassette->set_interface("msx_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(fmsx_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY)
+ MCFG_CASSETTE_INTERFACE("msx_cass")
/* real time clock */
RP5C01(config, m_rtc, 32.768_kHz_XTAL);
/* Software lists */
- SOFTWARE_LIST(config, "cass_list").set_original("msx2_cass");
- SOFTWARE_LIST(config, "msx1_cas_l").set_compatible("msx1_cass");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "msx2_cass")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("msx1_cas_l", "msx1_cass")
+MACHINE_CONFIG_END
-void msx2_state::msx2p(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::msx2p)
/* basic machine hardware */
- Z80(config, m_maincpu, 21.477272_MHz_XTAL / 6); /* 3.579545 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &msx2_state::msx_memory_map);
- m_maincpu->set_addrmap(AS_IO, &msx2_state::msx2p_io_map);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD("maincpu", Z80, 21.477272_MHz_XTAL / 6) /* 3.579545 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(msx_memory_map)
+ MCFG_DEVICE_IO_MAP(msx2p_io_map)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline("maincpu", INPUT_LINE_IRQ0);
@@ -1503,11 +1491,11 @@ void msx2_state::msx2p(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.1);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.1)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.25);
AY8910(config, m_ay8910, 21.477272_MHz_XTAL / 6 / 2);
m_ay8910->set_flags(AY8910_SINGLE_OUTPUT);
m_ay8910->port_a_read_callback().set(FUNC(msx2_state::msx_psg_port_a_r));
@@ -1517,29 +1505,28 @@ void msx2_state::msx2p(machine_config &config)
m_ay8910->add_route(ALL_OUTPUTS, "speaker", 0.3);
/* printer */
- centronics_device &centronics(CENTRONICS(config, "centronics", centronics_devices, "printer"));
- centronics.busy_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit1));
+ MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit1))
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- centronics.set_output_latch(cent_data_out);
- INPUT_BUFFER(config, "cent_status_in");
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+ MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0)
- output_latch_device &cent_ctrl_out(OUTPUT_LATCH(config, "cent_ctrl_out"));
- cent_ctrl_out.bit_handler<1>().set(centronics, FUNC(centronics_device::write_strobe));
+ MCFG_DEVICE_ADD("cent_ctrl_out", OUTPUT_LATCH, 0)
+ MCFG_OUTPUT_LATCH_BIT1_HANDLER(WRITELINE("centronics", centronics_device, write_strobe))
/* cassette */
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(fmsx_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY);
- m_cassette->set_interface("msx_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(fmsx_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY)
+ MCFG_CASSETTE_INTERFACE("msx_cass")
/* real time clock */
RP5C01(config, m_rtc, 32.768_kHz_XTAL);
/* Software lists */
- SOFTWARE_LIST(config, "cass_list").set_original("msx2_cass");
- SOFTWARE_LIST(config, "msx1_cas_l").set_compatible("msx1_cass");
- }
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "msx2_cass")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("msx1_cas_l", "msx1_cass")
+MACHINE_CONFIG_END
void msx2_state::msx2_pal(machine_config &config)
@@ -1565,21 +1552,20 @@ ROM_START(ax150)
ROM_LOAD ("ax150arab.rom", 0x8000, 0x8000, CRC(339cd1aa) SHA1(0287b2ec897b9196788cd9f10c99e1487d7adbbb))
ROM_END
-void msx_state::ax150(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::ax150)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "arab", 1, 0, 1, 2, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 2, 2); /* 32KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("arab", 1, 0, 1, 2, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 2, 2, 2) /* 32KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Al Alamiah AX-170 */
@@ -1590,22 +1576,21 @@ ROM_START (ax170)
ROM_END
-void msx_state::ax170(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::ax170)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
// T7937 (in ax170mk2)
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "arab", 1, 0, 1, 2, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("arab", 1, 0, 1, 2, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 2, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Canon V-8 */
@@ -1614,20 +1599,20 @@ ROM_START (canonv8)
ROM_LOAD ("v8bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::canonv8(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::canonv8)
msx1(TMS9928A, config);
// AY8910/YM2149??
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1).force_start_address(0xe000); /* 8KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 3, 1) /* 8KB RAM */
+ MCFG_MSX_SLOT_RAM_8KB
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Canon V-10 */
@@ -1636,20 +1621,19 @@ ROM_START (canonv10)
ROM_LOAD ("v10bios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
ROM_END
-void msx_state::canonv10(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::canonv10)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1); /* 16KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 3, 1) /* 16KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Canon V-20 */
@@ -1658,20 +1642,19 @@ ROM_START (canonv20)
ROM_LOAD ("v20bios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
ROM_END
-void msx_state::canonv20(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::canonv20)
msx1(TMS9929A, config);
// YM2149
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Canon V-20E */
@@ -1708,20 +1691,19 @@ ROM_START (mx10)
ROM_LOAD( "mx10bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::mx10(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mx10)
msx1(TMS9918, config);
// FDC: None, 0 drives
// 2? Cartridge slots
// Z80: uPD780C-1
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1); // 16KB RAM
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 0, 3, 1) // 16KB RAM
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Casio MX-15 */
@@ -1730,21 +1712,20 @@ ROM_START (mx15)
ROM_LOAD( "mx15bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::mx15(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mx15)
msx1(TMS9928A, config);
// FDC: None, 0 drives
// 3 Cartridge slots
// T6950
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1); // 16KB RAM
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<3>(config, MSX_SLOT_CARTRIDGE, "cartslot3", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 0, 3, 1) // 16KB RAM
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot3", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Casio MX-101 */
@@ -1753,19 +1734,18 @@ ROM_START (mx101)
ROM_LOAD( "mx101bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::mx101(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mx101)
msx1(TMS9928A, config);
// FDC: None, 0 drives
// 2? Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1); // 16KB RAM
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 0, 3, 1) // 16KB RAM
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Casio PV-7 */
@@ -1774,8 +1754,7 @@ ROM_START (pv7)
ROM_LOAD("pv7bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::pv7(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::pv7)
msx1(TMS9918, config);
// AY8910?
// FDC: None, 0 drives
@@ -1785,13 +1764,14 @@ void msx_state::pv7(machine_config &config)
// No printer port
// Z80: uPD780C-1
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1).force_start_address(0xe000); /* 8KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 0, 3, 1) /* 8KB RAM */
+ MCFG_MSX_SLOT_RAM_8KB
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Casio PV-16 */
@@ -1800,20 +1780,19 @@ ROM_START (pv16)
ROM_LOAD("pv16.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::pv16(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::pv16)
msx1(TMS9918, config);
// AY8910
// FDC: None, 0 drives
// 1 Cartridge slot
// No printer port
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1); /* 16KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 0, 3, 1) /* 16KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Daewoo CPC-88 */
@@ -1824,21 +1803,20 @@ ROM_START (cpc88)
ROM_RELOAD (0xa000, 0x2000)
ROM_END
-void msx_state::cpc88(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::cpc88)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2? Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 0, 2, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("han", 0, 0, 2, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Daewoo DPC-100 */
@@ -1848,21 +1826,20 @@ ROM_START (dpc100)
ROM_LOAD ("100han.rom", 0x8000, 0x4000, CRC(97478efb) SHA1(4421fa2504cbce18f7c84b5ea97f04e017007f07))
ROM_END
-void msx_state::dpc100(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::dpc100)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 0, 2, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1); /* 16KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("han", 0, 0, 2, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 3, 1) /* 16KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Daewoo DPC-180 */
@@ -1872,21 +1849,20 @@ ROM_START (dpc180)
ROM_LOAD ("180han.rom", 0x8000, 0x4000, CRC(97478efb) SHA1(4421fa2504cbce18f7c84b5ea97f04e017007f07))
ROM_END
-void msx_state::dpc180(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::dpc180)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 0, 2, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 2, 2); /* 32KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("han", 0, 0, 2, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Daewoo DPC-200 */
@@ -1896,21 +1872,20 @@ ROM_START (dpc200)
ROM_LOAD ("200han.rom", 0x8000, 0x4000, CRC(97478efb) SHA1(4421fa2504cbce18f7c84b5ea97f04e017007f07))
ROM_END
-void msx_state::dpc200(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::dpc200)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 0, 2, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("han", 0, 0, 2, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Daewoo DPC-200E */
@@ -1919,20 +1894,19 @@ ROM_START (dpc200e)
ROM_LOAD ("dpc200ebios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
ROM_END
-void msx_state::dpc200e(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::dpc200e)
msx1(TMS9929A, config);
// AY8910
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Daewoo Zemmix CPC-50A */
@@ -1941,8 +1915,7 @@ ROM_START (cpc50a)
ROM_LOAD ("50abios.rom", 0x0000, 0x8000, CRC(c3a868ef) SHA1(a08a940aa87313509e00bc5ac7494d53d8e03492))
ROM_END
-void msx_state::cpc50a(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::cpc50a)
msx1(TMS9918, config);
// AY8910/YM2149?
// FDC: None, 0 drives
@@ -1951,12 +1924,13 @@ void msx_state::cpc50a(machine_config &config)
// No cassette port?
// No printer port?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1).force_start_address(0xe000); /* 8KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 3, 1) /* 8KB RAM */
+ MCFG_MSX_SLOT_RAM_8KB
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Daewoo Zemmix CPC-50B */
@@ -1965,8 +1939,7 @@ ROM_START (cpc50b)
ROM_LOAD ("50bbios.rom", 0x0000, 0x8000, CRC(c3a868ef) SHA1(a08a940aa87313509e00bc5ac7494d53d8e03492))
ROM_END
-void msx_state::cpc50b(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::cpc50b)
msx1(TMS9918, config);
// AY8910/YM2149?
// FDC: None, 0 drives
@@ -1975,12 +1948,12 @@ void msx_state::cpc50b(machine_config &config)
// No cassette port?
// No printer port?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1); /* 16KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 3, 1) /* 16KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Daewoo Zemmix CPC-51 */
@@ -1989,8 +1962,7 @@ ROM_START (cpc51)
ROM_LOAD ("51bios.rom", 0x0000, 0x8000, CRC(c3a868ef) SHA1(a08a940aa87313509e00bc5ac7494d53d8e03492))
ROM_END
-void msx_state::cpc51(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::cpc51)
msx1(TMS9918, config);
// AY8910/YM2149?
// FDC: None, 0 drives
@@ -1999,12 +1971,12 @@ void msx_state::cpc51(machine_config &config)
// No cassette port
// No printer port
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Dragon MSX-64 */
@@ -2014,20 +1986,19 @@ ROM_START(dgnmsx)
ROM_LOAD("uk2msx058.ic6", 0x4000, 0x4000, CRC(e516e7e5) SHA1(05fedd4b9bfcf4949020c79d32c4c3f03a54fb62))
ROM_END
-void msx_state::dgnmsx(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::dgnmsx)
msx1(TMS9929A, config);
// AY8910
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Fenner DPC-200 */
@@ -2036,20 +2007,19 @@ ROM_START (fdpc200)
ROM_LOAD ("dpc200bios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
ROM_END
-void msx_state::fdpc200(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::fdpc200)
msx1(TMS9929A, config);
// AY8910
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Fenner FPC-500 */
@@ -2058,20 +2028,19 @@ ROM_START (fpc500)
ROM_LOAD ("fpc500bios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
ROM_END
-void msx_state::fpc500(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::fpc500)
msx1(TMS9929A, config);
// AY8910?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Fenner SPC-800 */
@@ -2080,21 +2049,20 @@ ROM_START (fspc800)
ROM_LOAD ("spc800bios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
ROM_END
-void msx_state::fspc800(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::fspc800)
msx1(TMS9929A, config);
// AY8910?
// FDC: None, 0 drives
// 2 Cartridge slots
// Z80: GSS Z8400APS
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Frael Bruc 100-1 */
@@ -2103,20 +2071,19 @@ ROM_START (bruc100)
ROM_LOAD("bruc100-1bios.rom", 0x0000, 0x8000, CRC(c7bc4298) SHA1(3abca440cba16ac5e162b602557d30169f77adab))
ROM_END
-void msx_state::bruc100(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::bruc100)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Fujitsu FM-X */
@@ -2125,21 +2092,20 @@ ROM_START (fmx)
ROM_LOAD ("fmxbios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::fmx(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::fmx)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 1 Cartridge slot, 2 "Fujistu expansion slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1); // 16KB RAM
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 0, 3, 1) // 16KB RAM
// Fujitsu expansion slot #1 in slot 1
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
// Fijutsu expansion slot #2 in slot 3
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Goldstar FC-80U */
@@ -2150,21 +2116,20 @@ ROM_START (gsfc80u)
ROM_RELOAD (0xa000, 0x2000)
ROM_END
-void msx_state::gsfc80u(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::gsfc80u)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 0, 2, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("han", 0, 0, 2, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Goldstar FC-200 */
@@ -2174,20 +2139,19 @@ ROM_START (gsfc200)
ROM_LOAD ("fc200bios.rom.u5b", 0x4000, 0x4000, CRC(1a99b1a1) SHA1(e18f72271b64693a2a2bc226e1b9ebd0448e07c0))
ROM_END
-void msx_state::gsfc200(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::gsfc200)
msx1(TMS9129, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "rom", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("rom", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Goldstar GFC-1080 */
@@ -2198,20 +2162,19 @@ ROM_START (gfc1080)
ROM_LOAD ("gfc1080pasocalc.rom", 0xC000, 0x4000, CRC(4014f7ea) SHA1(a5581fa3ce10f90f15ba3dc53d57b02d6e4af172))
ROM_END
-void msx_state::gfc1080(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::gfc1080)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "rom", 0, 0, 0, 4, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); // 64KB RAM
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("rom", 0, 0, 0, 4, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) // 64KB RAM
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Goldstar GFC-1080A */
@@ -2222,20 +2185,19 @@ ROM_START (gfc1080a)
ROM_RELOAD (0xa000, 0x2000)
ROM_END
-void msx_state::gfc1080a(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::gfc1080a)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "rom", 0, 0, 0, 3, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); // 64KB RAM
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("rom", 0, 0, 0, 3, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) // 64KB RAM
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Gradiente Expert 1.0 */
@@ -2244,20 +2206,19 @@ ROM_START (expert10)
ROM_LOAD ("expbios.rom", 0x0000, 0x8000, CRC(07610d77) SHA1(ef3e010eb57e4476700a3bbff9d2119ab3acdf62))
ROM_END
-void msx_state::expert10(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::expert10)
msx1(TMS9128, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Gradiente Expert 1.1 */
ROM_START (expert11)
@@ -2265,20 +2226,19 @@ ROM_START (expert11)
ROM_LOAD ("expbios11.rom", 0x0000, 0x8000, CRC(efb4b972) SHA1(d6720845928ee848cfa88a86accb067397685f02))
ROM_END
-void msx_state::expert11(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::expert11)
msx1(TMS9128, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Gradiente Expert 1.3 */
ROM_START (expert13)
@@ -2286,20 +2246,19 @@ ROM_START (expert13)
ROM_LOAD ("expbios13.rom", 0x0000, 0x8000, CRC(5638bc38) SHA1(605f5af3f358c6811f54e0173bad908614a198c0))
ROM_END
-void msx_state::expert13(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::expert13)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 2, 0, 0, 4).set_total_size(0x10000); /* 64KB Mapper RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 2, 0, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Gradiente Expert DDPlus */
ROM_START (expertdp)
@@ -2308,26 +2267,25 @@ ROM_START (expertdp)
ROM_LOAD ("eddpdisk.rom", 0x8000, 0x4000, CRC(549f1d90) SHA1(f1525de4e0b60a6687156c2a96f8a8b2044b6c56))
ROM_END
-void msx_state::expertdp(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::expertdp)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: mb8877a, 1 3.5" DSDD drive
// 2 Cartridge slots
// MSX Engine T7937A (also VDP)
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 3, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 3, 1, 1, "maincpu", 0x8000)
msx_mb8877a(config);
msx_1_35_dd_drive(config);
msx1_floplist(config);
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Gradiente Expert Plus */
@@ -2337,22 +2295,21 @@ ROM_START (expertpl)
ROM_LOAD ("exppdemo.rom", 0x8000, 0x4000, CRC(a9bbef64) SHA1(d4cea8c815f3eeabe0c6a1c845f902ec4318bf6b))
ROM_END
-void msx_state::expertpl(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::expertpl)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
// MSX Engine T7937A
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "demo", 3, 3, 2, 1, "maincpu", 0x8000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("demo", 3, 3, 2, 1, "maincpu", 0x8000)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Hitachi MB-H2 */
@@ -2362,8 +2319,7 @@ ROM_START (mbh2)
ROM_LOAD ("mbh2firm.rom", 0x8000, 0x4000, CRC(4f03c947) SHA1(e2140fa2e8e59090ecccf55b62323ea9dcc66d0b))
ROM_END
-void msx_state::mbh2(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mbh2)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
@@ -2371,13 +2327,13 @@ void msx_state::mbh2(machine_config &config)
// Builtin cassette player
// Speed controller (normal, slow 1, slow 2)
- add_internal_slot(config, MSX_SLOT_ROM, "rom", 0, 0, 0, 3, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); // 64KB RAM
+ MCFG_MSX_LAYOUT_ROM("rom", 0, 0, 0, 3, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) // 64KB RAM
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Hitachi MB-H25 */
@@ -2386,20 +2342,19 @@ ROM_START (mbh25)
ROM_LOAD ("mbh25bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::mbh25(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mbh25)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "rom", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2); // 32KB RAM
+ MCFG_MSX_LAYOUT_ROM("rom", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 2, 2) // 32KB RAM
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Hitachi MB-H50 */
@@ -2408,21 +2363,20 @@ ROM_START (mbh50)
ROM_LOAD ("mbh50bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::mbh50(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mbh50)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
// T6950
- add_internal_slot(config, MSX_SLOT_ROM, "rom", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); // 64KB RAM
+ MCFG_MSX_LAYOUT_ROM("rom", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) // 64KB RAM
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - JVC HC-7GB */
@@ -2431,20 +2385,19 @@ ROM_START (jvchc7gb)
ROM_LOAD ("hc7gbbios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
ROM_END
-void msx_state::jvchc7gb(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::jvchc7gb)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "rom", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("rom", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Mitsubishi ML-F48 */
@@ -2453,20 +2406,19 @@ ROM_START (mlf48)
ROM_LOAD ("mlf48bios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
ROM_END
-void msx_state::mlf48(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mlf48)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 2, 2); // 32KB RAM
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 2, 2) // 32KB RAM
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Mitsubishi ML-F80 */
@@ -2475,20 +2427,19 @@ ROM_START (mlf80)
ROM_LOAD ("mlf80bios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
ROM_END
-void msx_state::mlf80(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mlf80)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Mitsubishi ML-F110 */
@@ -2497,20 +2448,19 @@ ROM_START (mlf110)
ROM_LOAD ("mlf110bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::mlf110(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mlf110)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 3, 1); // 16KB RAM
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 3, 1) // 16KB RAM
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Mitsubishi ML-F120 */
@@ -2520,21 +2470,20 @@ ROM_START (mlf120)
ROM_LOAD ("mlf120firm.rom", 0x8000, 0x4000, CRC(4b5f3173) SHA1(21a9f60cb6370d0617ce54c42bb7d8e40a4ab560))
ROM_END
-void msx_state::mlf120(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mlf120)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2? Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "firm", 1, 0, 1, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 2, 2); // 32KB RAM
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("firm", 1, 0, 1, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 2, 2) // 32KB RAM
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Mitsubishi ML-FX1 */
@@ -2543,20 +2492,19 @@ ROM_START (mlfx1)
ROM_LOAD ("mlfx1bios.rom", 0x0000, 0x8000, CRC(62867dce) SHA1(0cbe0df4af45e8f531e9c761403ac9e71808f20c))
ROM_END
-void msx_state::mlfx1(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mlfx1)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 2, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - National CF-1200 */
@@ -2565,20 +2513,19 @@ ROM_START (cf1200)
ROM_LOAD ("1200bios.rom", 0x0000, 0x8000, CRC(5ad03407) SHA1(c7a2c5baee6a9f0e1c6ee7d76944c0ab1886796c))
ROM_END
-void msx_state::cf1200(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::cf1200)
msx1(TMS9918A, config);
// AY8910
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1); /* 16KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 0, 3, 1) /* 16KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - National CF-2000 */
@@ -2587,20 +2534,19 @@ ROM_START (cf2000)
ROM_LOAD ("2000bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::cf2000(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::cf2000)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1); /* 16KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 0, 3, 1) /* 16KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - National CF-2700 */
ROM_START (cf2700)
@@ -2608,20 +2554,19 @@ ROM_START (cf2700)
ROM_LOAD ("2700bios.rom.ic32", 0x0000, 0x8000, CRC(5ad03407) SHA1(c7a2c5baee6a9f0e1c6ee7d76944c0ab1886796c))
ROM_END
-void msx_state::cf2700(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::cf2700)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 2, 2); /* 32KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - National CF-3000 */
@@ -2630,20 +2575,19 @@ ROM_START (cf3000)
ROM_LOAD ("3000bios.rom", 0x0000, 0x8000, CRC(5ad03407) SHA1(c7a2c5baee6a9f0e1c6ee7d76944c0ab1886796c))
ROM_END
-void msx_state::cf3000(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::cf3000)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - National CF-3300 */
ROM_START (cf3300)
@@ -2652,25 +2596,24 @@ ROM_START (cf3300)
ROM_LOAD ("3300disk.rom", 0x8000, 0x4000, CRC(549f1d90) SHA1(f1525de4e0b60a6687156c2a96f8a8b2044b6c56))
ROM_END
-void msx_state::cf3300(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::cf3300)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: mb8877a, 1 3.5" SSDD drive
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 1, 1, 1, "maincpu", 0x8000)
msx_mb8877a(config);
msx_1_35_ssdd_drive(config);
msx1_floplist(config);
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - National FS-1300 */
@@ -2679,20 +2622,19 @@ ROM_START (fs1300)
ROM_LOAD ("1300bios.rom", 0x0000, 0x8000, CRC(5ad03407) SHA1(c7a2c5baee6a9f0e1c6ee7d76944c0ab1886796c))
ROM_END
-void msx_state::fs1300(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::fs1300)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - National FS-4000 */
@@ -2706,22 +2648,21 @@ ROM_START (fs4000)
ROM_LOAD ("4000kfn.rom", 0, 0x20000, CRC(956dc96d) SHA1(9ed3ab6d893632b9246e91b412cd5db519e7586b))
ROM_END
-void msx_state::fs4000(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::fs4000)
msx1(TMS9128, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 0, 0, 2, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("word", 3, 0, 0, 2, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 2, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - National FS-4000 (Alt) */
@@ -2735,22 +2676,21 @@ ROM_START (fs4000a)
ROM_LOAD ("4000kfn.rom", 0, 0x20000, CRC(956dc96d) SHA1(9ed3ab6d893632b9246e91b412cd5db519e7586b))
ROM_END
-void msx_state::fs4000a(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::fs4000a)
msx1(TMS9128, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 0, 0, 2, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("word", 3, 0, 0, 2, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 2, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/*MSX - Olympia PHC-2*/
@@ -2759,20 +2699,19 @@ ROM_START (phc2)
ROM_LOAD ("phc2bios.rom", 0x0000, 0x8000, CRC(4f7bb04b) SHA1(ab0177624d46dd77ab4f50ffcb983c3ba88223f4))
ROM_END
-void msx_state::phc2(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::phc2)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Olympia PHC-28 */
@@ -2781,20 +2720,19 @@ ROM_START (phc28)
ROM_LOAD ("phc28bios.rom", 0x0000, 0x8000, CRC(eceb2802) SHA1(195950173701abeb460a1a070d83466f3f53b337))
ROM_END
-void msx_state::phc28(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::phc28)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2); /* 32KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 2, 2) /* 32KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Panasonic CF-2700G */
@@ -2803,20 +2741,19 @@ ROM_START (cf2700g)
ROM_LOAD ("cf2700g.rom", 0x0000, 0x8000, CRC(4aa194f4) SHA1(69bf27b610e11437dad1f7a1c37a63179a293d12))
ROM_END
-void msx_state::cf2700g(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::cf2700g)
msx1(TMS9929A, config);
// AY8910
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4); /* 64KB?? RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 0, 4) /* 64KB?? RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Perfect Perfect1 */
@@ -2827,20 +2764,19 @@ ROM_START (perfect1)
ROM_RELOAD (0x10000, 0x8000)
ROM_END
-void msx_state::perfect1(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::perfect1)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 dribes
// 1 Cartridge slot
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "arab", 0, 1, 0, 4, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 2, 0, 4); // 64KB RAM
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("arab", 0, 1, 0, 4, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 2, 0, 4) // 64KB RAM
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Philips NMS-801 */
@@ -2849,17 +2785,16 @@ ROM_START (nms801)
ROM_LOAD ("801bios.rom", 0x0000, 0x8000, CRC(fa089461) SHA1(21329398c0f350e330b353f45f21aa7ba338fc8d))
ROM_END
-void msx_state::nms801(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::nms801)
msx1(TMS9929A, config);
// AY8910
// FDC: None, 0 drives
// 0 Cartridge slots
// No printer port
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
-}
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
+MACHINE_CONFIG_END
/* MSX - Philips VG-8000 */
@@ -2868,21 +2803,20 @@ ROM_START (vg8000)
ROM_LOAD ("8000bios.rom", 0x0000, 0x8000, CRC(efd970b0) SHA1(42252cf87deeb58181a7bfec7c874190a1351779))
ROM_END
-void msx_state::vg8000(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::vg8000)
msx1(TMS9129, config);
// AY8910
// FDC: None, 0 drives
// 2 Cartridge slots
// No printer port
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 3, 1); /* 16KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 3, 1) /* 16KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Philips VG-8010 */
@@ -2891,21 +2825,20 @@ ROM_START (vg8010)
ROM_LOAD ("8010bios.rom", 0x0000, 0x8000, CRC(efd970b0) SHA1(42252cf87deeb58181a7bfec7c874190a1351779))
ROM_END
-void msx_state::vg8010(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::vg8010)
msx1(TMS9129, config);
// AY8910
// FDC: None, 0 drives
// 2 Cartridge slots
// No printer port
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2); /* 32KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 2, 2) /* 32KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Philips VG-8010F */
@@ -2914,21 +2847,20 @@ ROM_START (vg8010f)
ROM_LOAD ("8010fbios.rom", 0x0000, 0x8000, CRC(df57c9ca) SHA1(898630ad1497dc9a329580c682ee55c4bcb9c30c))
ROM_END
-void msx_state::vg8010f(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::vg8010f)
msx1(TMS9129, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
// No printer port
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2); /* 32KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 2, 2) /* 32KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Philips VG-8020-00 */
@@ -2937,20 +2869,19 @@ ROM_START (vg802000)
ROM_LOAD ("8020-00bios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
ROM_END
-void msx_state::vg802000(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::vg802000)
msx1(TMS9929A, config);
// YM2149
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Philips VG-8020-20 */
@@ -2959,21 +2890,20 @@ ROM_START (vg802020)
ROM_LOAD ("8020-20bios.rom", 0x0000, 0x8000, CRC(a317e6b4) SHA1(e998f0c441f4f1800ef44e42cd1659150206cf79))
ROM_END
-void msx_state::vg802020(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::vg802020)
msx1(TMS9129, config);
// YM2149 (in S-3527 MSX Engine)
// FDC: None, 0 drives
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000); /* 64KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x10000) /* 64KB Mapper RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Philips VG-8020F */
@@ -2982,21 +2912,20 @@ ROM_START (vg8020f)
ROM_LOAD ("vg8020f.rom", 0x0000, 0x8000, CRC(6e692fa1) SHA1(9eaad185efc8e224368d1db4949eb9659c26fb2c))
ROM_END
-void msx_state::vg8020f(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::vg8020f)
msx1(TMS9929A, config);
// YM2149 (in S-3527 MSX Engine)
// FDC: None, 0 drives
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4); /* 64KB?? RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 2, 0, 4) /* 64KB?? RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Pioneer PX-7 */
@@ -3007,8 +2936,7 @@ ROM_START (piopx7)
ROM_FILL( 0xa000, 0x2000, 0x6E )
ROM_END
-void msx_state::piopx7(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::piopx7)
msx1(TMS9929A, config);
// TMS9129NL VDP with sync/overlay interface
// AY-3-8910 PSG
@@ -3034,14 +2962,14 @@ void msx_state::piopx7(machine_config &config)
// Bit 0 R = INTEXV (interrupt available when external video signal OFF, reset on read)
// Bit 0 W = /OVERLAY (0 = superimpose, 1 = non-superimpose)
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 2, 2); /* 32KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "rom2", 2, 0, 1, 1, "maincpu", 0x8000);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_ROM("rom2", 2, 0, 1, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Pioneer PX-7UK */
@@ -3053,21 +2981,20 @@ ROM_START (piopx7uk)
ROM_LOAD ("videoart.rom", 0xc000, 0x8000, CRC(0ba148dc) SHA1(b7b4e4cd40a856bb071976e6cf0f5e546fc86a78))
ROM_END
-void msx_state::piopx7uk(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::piopx7uk)
msx1(TMS9129, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 2, 2); /* 32KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "rom2", 2, 0, 1, 1, "maincpu", 0x8000);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_ROM("rom2", 2, 0, 1, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Pioneer PX-V60 */
@@ -3078,21 +3005,20 @@ ROM_START (piopxv60)
ROM_FILL( 0xa000, 0x2000, 0x6E )
ROM_END
-void msx_state::piopxv60(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::piopxv60)
msx1(TMS9128, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 2, 2); /* 32KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "rom2", 2, 0, 1, 1, "maincpu", 0x8000);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_ROM("rom2", 2, 0, 1, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Samsung SPC-800 */
@@ -3102,21 +3028,20 @@ ROM_START (spc800)
ROM_LOAD ("spc800han.rom", 0x8000, 0x4000, CRC(5ae2b013) SHA1(1e7616261a203580c1044205ad8766d104f1d874))
ROM_END
-void msx_state::spc800(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::spc800)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 0, 4, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB?? RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("han", 0, 0, 4, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB?? RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sanyo MPC-64 */
@@ -3125,20 +3050,19 @@ ROM_START (mpc64)
ROM_LOAD ("mpc64bios.rom", 0x0000, 0x8000, CRC(d6e704ad) SHA1(d67be6d7d56d7229418f4e122f2ec27990db7d19))
ROM_END
-void msx_state::mpc64(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mpc64)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sanyo MPC-100 */
@@ -3147,20 +3071,19 @@ ROM_START (mpc100)
ROM_LOAD ("mpc100bios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
ROM_END
-void msx_state::mpc100(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mpc100)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sanyo MPC-200 */
@@ -3169,8 +3092,7 @@ ROM_START (mpc200)
ROM_LOAD ("mpc200bios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
ROM_END
-void msx_state::mpc200(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mpc200)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
@@ -3178,13 +3100,13 @@ void msx_state::mpc200(machine_config &config)
// T6950
// T7775 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); // 64KB RAM
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) // 64KB RAM
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sanyo MPC-200SP */
@@ -3193,20 +3115,19 @@ ROM_START (mpc200sp)
ROM_LOAD ("mpcsp200bios.rom", 0x0000, 0x8000, CRC(bcd79900) SHA1(fc8c2b69351e60dc902add232032c2d69f00e41e))
ROM_END
-void msx_state::mpc200sp(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mpc200sp)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2? Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); // 64KB RAM
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) // 64KB RAM
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sanyo PHC-28L */
@@ -3215,20 +3136,19 @@ ROM_START (phc28l)
ROM_LOAD ("28lbios.rom", 0x0000, 0x8000, CRC(d2110d66) SHA1(d3af963e2529662eae63f04a2530454685a1989f))
ROM_END
-void msx_state::phc28l(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::phc28l)
msx1(TMS9929A, config);
// YM2149
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sanyo PHC-28S */
@@ -3237,20 +3157,19 @@ ROM_START (phc28s)
ROM_LOAD ("28sbios.rom", 0x0000, 0x8000, CRC(e5cf6b3c) SHA1(b1cce60ef61c058f5e42ef7ac635018d1a431168))
ROM_END
-void msx_state::phc28s(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::phc28s)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2); /* 32KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 2, 2) /* 32KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sanyo Wavy MPC-10 */
@@ -3259,20 +3178,19 @@ ROM_START (mpc10)
ROM_LOAD ("mpc10.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
ROM_END
-void msx_state::mpc10(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mpc10)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2); /* 32KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 2, 2) /* 32KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sharp Epcom HotBit 1.1 */
@@ -3281,20 +3199,19 @@ ROM_START (hotbit11)
ROM_LOAD ("hotbit11.rom", 0x0000, 0x8000, CRC(b6942694) SHA1(663f8c512d04d213fa616b0db5eefe3774012a4b))
ROM_END
-void msx_state::hotbit11(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hotbit11)
msx1(TMS9128, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sharp Epcom HotBit 1.2 */
@@ -3303,20 +3220,19 @@ ROM_START (hotbit12)
ROM_LOAD ("hotbit12.rom", 0x0000, 0x8000, CRC(f59a4a0c) SHA1(9425815446d468058705bae545ffa13646744a87))
ROM_END
-void msx_state::hotbit12(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hotbit12)
msx1(TMS9128, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sharp Epcom HotBit 1.3b */
@@ -3325,20 +3241,19 @@ ROM_START (hotbi13b)
ROM_LOAD ("hotbit13b.rom", 0x0000, 0x8000, CRC(7a19820e) SHA1(e0c2bfb078562d15acabc5831020a2370ea87052))
ROM_END
-void msx_state::hotbi13b(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hotbi13b)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000); /* 64KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB Mapper RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sharp Epcom HotBit 1.3p */
@@ -3347,20 +3262,19 @@ ROM_START (hotbi13p)
ROM_LOAD ("hotbit13p.rom", 0x0000, 0x8000, CRC(150e239c) SHA1(942f9507d206cd8156f15601fe8032fcf0e3875b))
ROM_END
-void msx_state::hotbi13p(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hotbi13p)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000); /* 64KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB Mapper RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sony HB-10 */
@@ -3369,23 +3283,22 @@ ROM_START (hb10)
ROM_LOAD ("hb10bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::hb10(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hb10)
msx1(TMS9928A, config);
// YM2149 (in S-1985 MSX-Engine)
// FDC: None, 0 drives
// 2 Cartridge slots
// S-1985 MSX-Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 3, 1); /* 16KB? RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 3, 1) /* 16KB? RAM */
MSX_S1985(config, "s1985", 0);
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sony HB-10P */
@@ -3394,21 +3307,20 @@ ROM_START (hb10p)
ROM_LOAD ("10pbios.rom", 0x0000, 0x8000, CRC(0f488dd8) SHA1(5e7c8eab238712d1e18b0219c0f4d4dae180420d))
ROM_END
-void msx_state::hb10p(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hb10p)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
// T6950
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sony HB-20P */
@@ -3417,21 +3329,20 @@ ROM_START (hb20p)
ROM_LOAD ("20pbios.rom", 0x0000, 0x8000, CRC(21af423f) SHA1(365c93d7652c9f727221689bcc348652832a7b7a))
ROM_END
-void msx_state::hb20p(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hb20p)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
// T6950
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sony HB-201 */
@@ -3442,21 +3353,20 @@ ROM_START (hb201)
ROM_FILL( 0xc000, 0x4000, 0xff )
ROM_END
-void msx_state::hb201(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hb201)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "note", 0, 0, 2, 2, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("note", 0, 0, 2, 2, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sony HB-201P */
@@ -3466,21 +3376,20 @@ ROM_START (hb201p)
ROM_LOAD ("201pnote.rom.ic8", 0x8000, 0x4000, CRC(1ff9b6ec) SHA1(e84d3ec7a595ee36b50e979683c84105c1871857))
ROM_END
-void msx_state::hb201p(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hb201p)
msx1(TMS9929A, config);
// YM2149
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "note", 0, 0, 2, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("note", 0, 0, 2, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sony HB-501P */
@@ -3489,20 +3398,19 @@ ROM_START (hb501p)
ROM_LOAD ("501pbios.rom", 0x0000, 0x8000, CRC(0f488dd8) SHA1(5e7c8eab238712d1e18b0219c0f4d4dae180420d))
ROM_END
-void msx_state::hb501p(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hb501p)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sony HB-55 (Version 1) */
@@ -3512,21 +3420,20 @@ ROM_START (hb55)
ROM_LOAD ("hb55note.rom", 0x8000, 0x2000, CRC(5743ab55) SHA1(b9179db93608c4da649532e704f072e0a3ea1b22))
ROM_END
-void msx_state::hb55(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hb55)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "note", 0, 0, 2, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1); /* 16KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("note", 0, 0, 2, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 0, 3, 1) /* 16KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sony HB-55D */
@@ -3536,21 +3443,20 @@ ROM_START (hb55d)
ROM_LOAD ("55dnote.rom", 0x8000, 0x4000, CRC(8aae0494) SHA1(97ce59892573cac3c440efff6d74c8a1c29a5ad3))
ROM_END
-void msx_state::hb55d(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hb55d)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "note", 0, 0, 2, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1); /* 16KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("note", 0, 0, 2, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 3, 1) /* 16KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sony HB-55P */
@@ -3561,21 +3467,20 @@ ROM_START (hb55p)
ROM_LOAD ("55pnote.ic44", 0x8000, 0x4000, CRC(492b12f8) SHA1(b262aedc71b445303f84efe5e865cbb71fd7d952))
ROM_END
-void msx_state::hb55p(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hb55p)
msx1(TMS9929A, config);
// AY8910
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "note", 0, 0, 2, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1); /* 16KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("note", 0, 0, 2, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 3, 1) /* 16KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sony HB-75D */
@@ -3585,21 +3490,20 @@ ROM_START (hb75d)
ROM_LOAD ("75dnote.rom", 0x8000, 0x4000, CRC(8aae0494) SHA1(97ce59892573cac3c440efff6d74c8a1c29a5ad3))
ROM_END
-void msx_state::hb75d(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hb75d)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "note", 0, 0, 2, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("note", 0, 0, 2, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sony HB-75P */
@@ -3610,21 +3514,20 @@ ROM_START (hb75p)
ROM_LOAD ("75pnote.ic44", 0x8000, 0x4000, CRC(492b12f8) SHA1(b262aedc71b445303f84efe5e865cbb71fd7d952))
ROM_END
-void msx_state::hb75p(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hb75p)
msx1(TMS9929A, config);
// AY8910
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "note", 0, 0, 2, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("note", 0, 0, 2, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sony HB-101P */
@@ -3634,21 +3537,20 @@ ROM_START (hb101p)
ROM_LOAD ("101pnote.rom", 0x8000, 0x4000, CRC(525017c2) SHA1(8ffc24677fd9d2606a79718764261cdf02434f0a))
ROM_END
-void msx_state::hb101p(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hb101p)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 2, 2); /* 32KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "note", 3, 0, 1, 1, "maincpu", 0x8000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("note", 3, 0, 1, 1, "maincpu", 0x8000)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Sony HB-701FD */
@@ -3658,26 +3560,25 @@ ROM_START (hb701fd)
ROM_LOAD ("hb701fddisk.rom", 0x8000, 0x4000, CRC(71961d9d) SHA1(2144036d6573d666143e890e5413956bfe8f66c5))
ROM_END
-void msx_state::hb701fd(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hb701fd)
msx1(TMS9928A, config);
// YM2149 (in S-1985)
// FDC: WD2793?, 1 3.5" SSDD drive
// 2 Cartridge slots
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1"); // Is this correct??
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 1, 1, 1, "maincpu", 0x8000) // Is this correct??
msx_wd2793_force_ready(config);
msx_1_35_ssdd_drive(config);
msx1_floplist(config);
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Spectravideo SVI-728 */
@@ -3687,21 +3588,20 @@ ROM_START (svi728)
// ROM_LOAD ("707disk.rom", 0x8000, 0x4000, CRC(f9978853) SHA1(6aa856cc56eb98863c9da7a566571605682b5c6b))
ROM_END
-void msx_state::svi728(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::svi728)
msx1(TMS9129, config);
// AY8910
// FDC: None, 0 drives
// 1 Cartridge slots, 1 Expansion slot (eg for SVI-707)
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 2, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot", 2, 0)
// MSX_LAYOUT_SLOT (3, 0, 1, 1, DISK_ROM2, 0x4000, 0x8000)
// MSX_LAYOUT_SLOT (3, 1, 0, 4, CARTRIDGE2, 0x0000, 0x0000)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Spectravideo SVI-738 */
@@ -3713,8 +3613,7 @@ ROM_START (svi738)
ROM_FILL (0xe000, 0x2000, 0xff)
ROM_END
-void msx_state::svi738(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::svi738)
msx1(TMS9929A, config);
// AY8910
// FDC: wd1793, 1 3.5" SSDD drive
@@ -3722,19 +3621,19 @@ void msx_state::svi738(machine_config &config)
// builtin 80 columns card (V9938)
// RS-232C interface
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "rs232", 3, 0, 1, 1, "maincpu", 0xc000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 2, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("rs232", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 1, 1, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 2)
msx_fd1793(config);
msx_1_35_ssdd_drive(config);
msx1_floplist(config);
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Spectravideo SVI-738 Arabic */
@@ -3747,8 +3646,7 @@ ROM_START (svi738ar)
ROM_LOAD ("738arab.rom", 0x10000, 0x8000, CRC(339cd1aa) SHA1(0287b2ec897b9196788cd9f10c99e1487d7adbbb))
ROM_END
-void msx_state::svi738ar(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::svi738ar)
msx1(TMS9929A, config);
// AY8910
// FDC: wd2793, 1 3.5" SSDD drive
@@ -3756,20 +3654,20 @@ void msx_state::svi738ar(machine_config &config)
// builtin 80 columns card (V9938)
// RS-232C interface
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "rs232", 3, 0, 1, 1, "maincpu", 0xc000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 2, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "arab", 3, 3, 1, 2, "maincpu", 0x10000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("rs232", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 1, 1, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 2)
+ MCFG_MSX_LAYOUT_ROM("arab", 3, 3, 1, 2, "maincpu", 0x10000)
msx_wd2793_force_ready(config);
msx_1_35_ssdd_drive(config);
msx1_floplist(config);
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Spectravideo SVI-738 Danish */
@@ -3781,8 +3679,7 @@ ROM_START (svi738dk)
ROM_FILL (0xe000, 0x2000, 0xff)
ROM_END
-void msx_state::svi738dk(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::svi738dk)
msx1(TMS9929A, config);
// AY8910
// FDC: wd2793, 1 3.5" SSDD drive
@@ -3790,19 +3687,19 @@ void msx_state::svi738dk(machine_config &config)
// builtin 80 columns card (V9938)
// RS-232C interface
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "rs232", 3, 0, 1, 1, "maincpu", 0xc000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 2, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("rs232", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 1, 1, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 2)
msx_wd2793_force_ready(config);
msx_1_35_ssdd_drive(config);
msx1_floplist(config);
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Spectravideo SVI-738 Spanish */
@@ -3814,8 +3711,7 @@ ROM_START (svi738sp)
ROM_FILL (0xe000, 0x2000, 0xff)
ROM_END
-void msx_state::svi738sp(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::svi738sp)
msx1(TMS9929A, config);
// AY8910
// FDC: wd2793, 1 3.5" SSDD drive
@@ -3823,19 +3719,19 @@ void msx_state::svi738sp(machine_config &config)
// builtin 80 columns card (V9938)
// RS-232C interface
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "rs232", 3, 0, 1, 1, "maincpu", 0xc000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 2, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("rs232", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 1, 1, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 2)
msx_wd2793_force_ready(config);
msx_1_35_ssdd_drive(config);
msx1_floplist(config);
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Spectravideo SVI-738 Swedish */
@@ -3847,8 +3743,7 @@ ROM_START (svi738sw)
ROM_FILL (0xe000, 0x2000, 0xff)
ROM_END
-void msx_state::svi738sw(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::svi738sw)
msx1(TMS9929A, config);
// AY8910
// FDC: wd2793, 1 3.5" SSDD drive
@@ -3856,19 +3751,19 @@ void msx_state::svi738sw(machine_config &config)
// builtin 80 columns card (V9938)
// RS-232C interface
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "rs232", 3, 0, 1, 1, "maincpu", 0xc000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 2, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("rs232", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 1, 1, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 2)
msx_wd2793_force_ready(config);
msx_1_35_ssdd_drive(config);
msx1_floplist(config);
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Spectravideo SVI-738 Poland*/
@@ -3880,8 +3775,7 @@ ROM_START (svi738pl)
ROM_FILL (0xe000, 0x2000, 0xff)
ROM_END
-void msx_state::svi738pl(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::svi738pl)
msx1(TMS9929A, config);
// AY8910
// FDC: wd2793, 1 3.5" SSDD drive
@@ -3889,19 +3783,19 @@ void msx_state::svi738pl(machine_config &config)
// builtin 80 columns card (V9938)
// RS-232C interface
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "rs232", 3, 0, 1, 1, "maincpu", 0xc000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 2, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("rs232", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 1, 1, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 2)
msx_wd2793_force_ready(config);
msx_1_35_ssdd_drive(config);
msx1_floplist(config);
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Talent DPC-200 */
@@ -3910,20 +3804,19 @@ ROM_START (tadpc200)
ROM_LOAD ("dpc200bios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
ROM_END
-void msx_state::tadpc200(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::tadpc200)
msx1(TMS9129, config);
// AY8910
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Talent DPC-200A */
@@ -3932,20 +3825,19 @@ ROM_START (tadpc20a)
ROM_LOAD ("dpc200abios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
ROM_END
-void msx_state::tadpc20a(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::tadpc20a)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 1, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Toshiba HX-10 */
/* The BIOS on the Toshiba HX-10 is inside a big 64pin Toshiba chip label TCX-1007 */
@@ -3955,20 +3847,19 @@ ROM_START (hx10)
ROM_LOAD ("tcx-1007.ic15", 0x0000, 0x8000, CRC(5486b711) SHA1(4dad9de7c28b452351cc12910849b51bd9a37ab3))
ROM_END
-void msx_state::hx10(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hx10)
msx1(TMS9929A, config);
// AY8910
// FDC: None, 0 drives
// 1 Cartridge slot, 1 Toshiba Expension slot
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
//MSX_LAYOUT_SLOT (3, 0, 0, 4, CARTRIDGE2, 0x0000, 0x0000) // Expansion slot
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Toshiba HX-10D */
@@ -3977,20 +3868,19 @@ ROM_START (hx10d)
ROM_LOAD ("hx10dbios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::hx10d(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hx10d)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Toshiba HX-10DP */
@@ -3999,20 +3889,19 @@ ROM_START (hx10dp)
ROM_LOAD ("hx10dpbios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::hx10dp(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hx10dp)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Toshiba HX-10E */
@@ -4021,20 +3910,19 @@ ROM_START (hx10e)
ROM_LOAD ("hx10ebios.rom", 0x0000, 0x8000, CRC(5486b711) SHA1(4dad9de7c28b452351cc12910849b51bd9a37ab3))
ROM_END
-void msx_state::hx10e(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hx10e)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Toshiba HX-10F */
@@ -4043,20 +3931,19 @@ ROM_START (hx10f)
ROM_LOAD ("hx10fbios.rom", 0x0000, 0x8000, CRC(e0e894b7) SHA1(d99eebded5db5fce1e072d08e642c0909bc7efdd))
ROM_END
-void msx_state::hx10f(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hx10f)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Toshiba HX-10S */
@@ -4065,20 +3952,19 @@ ROM_START (hx10s)
ROM_LOAD ("hx10sbios.rom", 0x0000, 0x8000, CRC(5486b711) SHA1(4dad9de7c28b452351cc12910849b51bd9a37ab3))
ROM_END
-void msx_state::hx10s(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hx10s)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1); /* 16KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 3, 1) /* 16KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Toshiba HX-10SA */
@@ -4087,20 +3973,19 @@ ROM_START (hx10sa)
ROM_LOAD ("hx10sabios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::hx10sa(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hx10sa)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Toshiba HX-20 */
@@ -4110,23 +3995,22 @@ ROM_START (hx20)
ROM_LOAD ("hx20word.rom", 0x8000, 0x8000, CRC(39b3e1c0) SHA1(9f7cfa932bd7dfd0d9ecaadc51655fb557c2e125))
ROM_END
-void msx_state::hx20(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hx20)
msx1(TMS9129, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
// T6950
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram1", 0, 0, 2, 2); /* 32KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram2", 3, 0, 2, 2); /* 32KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0x8000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram1", 0, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram2", 3, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_ROM("word", 3, 3, 1, 2, "maincpu", 0x8000)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Toshiba HX-20I */
@@ -4136,23 +4020,22 @@ ROM_START (hx20i)
ROM_LOAD ("hx20iword.rom", 0x8000, 0x8000, CRC(39b3e1c0) SHA1(9f7cfa932bd7dfd0d9ecaadc51655fb557c2e125))
ROM_END
-void msx_state::hx20i(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hx20i)
msx1(TMS9129, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
// T6950 VDP instead of TMS9928A
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram1", 0, 0, 2, 2); /* 32KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram2", 3, 0, 2, 2); /* 32KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0x8000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram1", 0, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram2", 3, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_ROM("word", 3, 3, 1, 2, "maincpu", 0x8000)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Toshiba HX-21 */
@@ -4165,21 +4048,20 @@ ROM_START (hx21)
ROM_LOAD ("hx21kfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
ROM_END
-void msx_state::hx21(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hx21)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram2", 3, 0, 0, 4); /* 64KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0x8000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram2", 3, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("word", 3, 3, 1, 2, "maincpu", 0x8000)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Toshiba HX-21I */
@@ -4189,22 +4071,21 @@ ROM_START (hx21i)
ROM_LOAD ("hx21iword.rom", 0x8000, 0x8000, CRC(f9e29c66) SHA1(3289336b2c12161fd926a7e5ce865770ae7038af))
ROM_END
-void msx_state::hx21i(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hx21i)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram1", 0, 0, 2, 2); /* 32KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram2", 3, 0, 2, 2); /* 32KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0x8000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram1", 0, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram2", 3, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_ROM("word", 3, 3, 1, 2, "maincpu", 0x8000)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Toshiba HX-22 */
@@ -4217,22 +4098,21 @@ ROM_START (hx22)
ROM_LOAD ("hx22kfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
ROM_END
-void msx_state::hx22(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hx22)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
// RS232C builtin?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram2", 3, 0, 0, 4); /* 64KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0x8000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram2", 3, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("word", 3, 3, 1, 2, "maincpu", 0x8000)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Toshiba HX-22I */
@@ -4242,8 +4122,7 @@ ROM_START (hx22i)
ROM_LOAD ("hx22iword.rom", 0x8000, 0x8000, CRC(f9e29c66) SHA1(3289336b2c12161fd926a7e5ce865770ae7038af))
ROM_END
-void msx_state::hx22i(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hx22i)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
@@ -4251,15 +4130,15 @@ void msx_state::hx22i(machine_config &config)
// RS232C builtin?
// Z80: LH0080A
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram1", 0, 0, 2, 2); /* 32KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram2", 3, 0, 2, 2); /* 32KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0x8000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram1", 0, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram2", 3, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_ROM("word", 3, 3, 1, 2, "maincpu", 0x8000)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Victor HC-5 */
@@ -4268,20 +4147,19 @@ ROM_START (hc5)
ROM_LOAD ("hc5bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::hc5(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hc5)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives,
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1); // 16KB or 32KB RAM ?
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 3, 1) // 16KB or 32KB RAM ?
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Victor HC-6 */
@@ -4290,20 +4168,19 @@ ROM_START (hc6)
ROM_LOAD ("hc6bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::hc6(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hc6)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives,
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 2, 2); // 32KB RAM
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 2, 2) // 32KB RAM
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Victor HC-7 */
@@ -4312,20 +4189,19 @@ ROM_START (hc7)
ROM_LOAD ("hc7bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
ROM_END
-void msx_state::hc7(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::hc7)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives,
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); // 64KB RAM
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) // 64KB RAM
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Yamaha CX5F (with SFG01) */
@@ -4334,8 +4210,7 @@ ROM_START (cx5f1)
ROM_LOAD ("cx5fbios.rom", 0x0000, 0x8000, CRC(dc662057) SHA1(36d77d357a5fd15af2ab266ee66e5091ba4770a3))
ROM_END
-void msx_state::cx5f1(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::cx5f1)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
@@ -4343,13 +4218,13 @@ void msx_state::cx5f1(machine_config &config)
// 1 Yamaha expansion slot?
// S-5327 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 2, 2); // 32KB RAM
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 2, 0, msx_yamaha_60pin, "sfg01");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 0, 2, 2) // 32KB RAM
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot", 1, 0)
+ MCFG_MSX_LAYOUT_YAMAHA_EXPANSION("expansion", 2, 0, "sfg01")
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Yamaha CX5F (with SFG05) */
@@ -4358,8 +4233,7 @@ ROM_START (cx5f)
ROM_LOAD ("cx5fbios.rom", 0x0000, 0x8000, CRC(dc662057) SHA1(36d77d357a5fd15af2ab266ee66e5091ba4770a3))
ROM_END
-void msx_state::cx5f(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::cx5f)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
@@ -4367,13 +4241,13 @@ void msx_state::cx5f(machine_config &config)
// 1 Yamaha expansion slot?
// S-5327 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 0, msx_yamaha_60pin, "sfg05");
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2); // 32KB RAM
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_YAMAHA_EXPANSION("expansion", 3, 0, "sfg05")
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 2, 2) // 32KB RAM
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Yamaha CX5M / Yamaha CX5M-2 */
@@ -4382,22 +4256,21 @@ ROM_START (cx5m)
ROM_LOAD ("cx5mbios.rom", 0x0000, 0x8000, CRC(e2242b53) SHA1(706dd67036baeec7127e4ccd8c8db8f6ce7d0e4c))
ROM_END
-void msx_state::cx5m(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::cx5m)
msx1(TMS9929A, config);
// YM2149
// FDC: None, 0 drives
// 2 Cartridge slots
// 1 Expansion slot (60 pins interface instead of regular 50 pin cartridge interface)
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 2, 2); /* 32KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 0, msx_yamaha_60pin, "sfg01");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram", 0, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_YAMAHA_EXPANSION("expansion", 3, 0, "sfg01")
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Yamaha CX5M-128 */
@@ -4408,23 +4281,22 @@ ROM_START (cx5m128)
ROM_LOAD ("yrm502.rom", 0x14000, 0x4000, CRC(5330fe21) SHA1(7b1798561ee1844a7d6432924fbee9b4fc591c19))
ROM_END
-void msx_state::cx5m128(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::cx5m128)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 1, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "yrm", 3, 1, 1, 1, "maincpu", 0x14000); /* YRM-502 */
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); /* 128KB Mapper RAM */
- add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 3, msx_yamaha_60pin, "sfg05");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 1, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("yrm", 3, 1, 1, 1, "maincpu", 0x14000) /* YRM-502 */
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_LAYOUT_YAMAHA_EXPANSION("expansion", 3, 3, "sfg05")
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Yamaha CX5MII */
@@ -4434,22 +4306,21 @@ ROM_START (cx5m2)
ROM_LOAD ("cx5m2ext.rom", 0x8000, 0x4000, CRC(feada82e) SHA1(48b0c2ff1f1e407cc44394219f7b3878efaa919f))
ROM_END
-void msx_state::cx5m2(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::cx5m2)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 1, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000); /* 64KB Mapper RAM */
- add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 3, msx_yamaha_60pin, "sfg05");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 1, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_LAYOUT_YAMAHA_EXPANSION("expansion", 3, 3, "sfg05")
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Yamaha YIS303 */
@@ -4459,21 +4330,20 @@ ROM_START (yis303)
ROM_FILL( 0x8000, 0xc000, 0xff )
ROM_END
-void msx_state::yis303(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::yis303)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "fillff", 3, 0, 0, 3, "maincpu", 0x0000); /* Fill FF */
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 3, 1); /* 16KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("fillff", 3, 0, 0, 3, "maincpu", 0x0000) /* Fill FF */
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 3, 1) /* 16KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Yamaha YIS503 */
@@ -4483,21 +4353,20 @@ ROM_START (yis503)
ROM_FILL( 0x8000, 0xc000, 0xff )
ROM_END
-void msx_state::yis503(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::yis503)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "fillff", 3, 0, 0, 3, "maincpu", 0x0000); /* Fill FF */
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2); /* 32KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("fillff", 3, 0, 0, 3, "maincpu", 0x0000) /* Fill FF */
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 2, 2) /* 32KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Yamaha YIS503F */
@@ -4506,20 +4375,19 @@ ROM_START (yis503f)
ROM_LOAD ("yis503f.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
ROM_END
-void msx_state::yis503f(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::yis503f)
msx1(TMS9929A, config);
// YM2149
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB?? RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB?? RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Yamaha YIS503II */
@@ -4528,20 +4396,19 @@ ROM_START (yis503ii)
ROM_LOAD ("yis503iibios.rom", 0x0000, 0x8000, CRC(e2242b53) SHA1(706dd67036baeec7127e4ccd8c8db8f6ce7d0e4c))
ROM_END
-void msx_state::yis503ii(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::yis503ii)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Yamaha YIS503IIR Russian */
@@ -4552,8 +4419,7 @@ ROM_START (y503iir)
ROM_LOAD ("yis503iirnet.rom", 0xc000, 0x2000, CRC(0731db3f) SHA1(264fbb2de69fdb03f87dc5413428f6aa19511a7f))
ROM_END
-void msx_state::y503iir(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::y503iir)
msx1(TMS9929A, config);
// YM2149 (in S-3527 MSX Engine)
// FDC: wd2793/mb8877?, 1 3.5" DSDD drive
@@ -4562,19 +4428,19 @@ void msx_state::y503iir(machine_config &config)
// RTC
// V9938 VDP
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1"); /* National disk */
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4); /* 64KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "net", 3, 3, 1, 1, "maincpu", 0xc000); /* Net */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 1, 1, 1, "maincpu", 0x8000) /* National disk */
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 2, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("net", 3, 3, 1, 1, "maincpu", 0xc000) /* Net */
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx1_floplist(config);
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Yamaha YIS503IIR Estonian */
@@ -4585,26 +4451,25 @@ ROM_START (y503iir2)
ROM_LOAD ("yis503iirnet.rom", 0xc000, 0x2000, CRC(0731db3f) SHA1(264fbb2de69fdb03f87dc5413428f6aa19511a7f))
ROM_END
-void msx_state::y503iir2(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::y503iir2)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: wd2793/mb8877?, 1 3.5" DSDD drive?
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1"); /* National disk */
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4); /* 64KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "net", 3, 3, 1, 1, "maincpu", 0xc000); /* Net */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 1, 1, 1, "maincpu", 0x8000) /* National disk */
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 2, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("net", 3, 3, 1, 1, "maincpu", 0xc000) /* Net */
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx1_floplist(config);
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Yamaha YIS503M */
@@ -4613,21 +4478,20 @@ ROM_START (yis503m)
ROM_LOAD ("yis503mbios.rom", 0x0000, 0x8000, CRC(e2242b53) SHA1(706dd67036baeec7127e4ccd8c8db8f6ce7d0e4c))
ROM_END
-void msx_state::yis503m(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::yis503m)
msx1(TMS9929A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 0, msx_yamaha_60pin, "sfg05");
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2); /* 32KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_YAMAHA_EXPANSION("expansion", 3, 0, "sfg05")
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 2, 2) /* 32KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Yashica YC-64 */
@@ -4636,19 +4500,18 @@ ROM_START (yc64)
ROM_LOAD ("yc64bios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
ROM_END
-void msx_state::yc64(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::yc64)
msx1(TMS9929A, config);
// YM2149
// FDC: None, 0 drives
// 1 Cartridge slot (slot 1)
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX - Yeno MX64 */
@@ -4657,20 +4520,19 @@ ROM_START (mx64)
ROM_LOAD ("mx64bios.rom", 0x0000, 0x8000, CRC(e0e894b7) SHA1(d99eebded5db5fce1e072d08e642c0909bc7efdd))
ROM_END
-void msx_state::mx64(machine_config &config)
-{
+MACHINE_CONFIG_START(msx_state::mx64)
msx1(TMS9928A, config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); /* 64KB RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 2, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx1_cartlist(config);
-}
+MACHINE_CONFIG_END
/******************************** MSX 2 **********************************/
@@ -4687,29 +4549,29 @@ ROM_START (ax350)
ROM_LOAD ("ax350disk.rom", 0x2c000, 0x4000, CRC(1e7d6512) SHA1(78cd7f847e77fd8cd51a647efb2725ba93f4c471))
ROM_END
-void msx2_state::ax350(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::ax350)
msx2_pal(config);
// AY8910/YM2149?
// FDC: wd2793/tc8566af?, 1 3.5" DSDD drive
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000); /* Bios */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000); /* Ext */
- add_internal_slot(config, MSX_SLOT_ROM, "arab", 0, 1, 1, 2, "maincpu", 0xc000); /* Arab */
- add_internal_slot(config, MSX_SLOT_ROM, "swp", 0, 2, 1, 2, "maincpu", 0x14000); /* SWP */
- add_internal_slot(config, MSX_SLOT_ROM, "paint", 0, 3, 0, 4, "maincpu", 0x1c000); /* Paint */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x2c000).set_tags("fdc", "fdc:0", "fdc:1"); /* Disk */
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8); /* 128KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000) /* Bios */
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000) /* Ext */
+ MCFG_MSX_LAYOUT_ROM("arab", 0, 1, 1, 2, "maincpu", 0xc000) /* Arab */
+ MCFG_MSX_LAYOUT_ROM("swp", 0, 2, 1, 2, "maincpu", 0x14000) /* SWP */
+ MCFG_MSX_LAYOUT_ROM("paint", 0, 3, 0, 4, "maincpu", 0x1c000) /* Paint */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 1, 1, 1, "maincpu", 0x2c000) /* Disk */
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Al Alamiah AX-370 */
@@ -4723,29 +4585,29 @@ ROM_START (ax370)
ROM_LOAD ("ax370disk.rom", 0x2c000, 0x4000, CRC(60f8baba) SHA1(95de8809d2758fc0a743390ea5085b602e59e101))
ROM_END
-void msx2_state::ax370(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::ax370)
msx2_pal(config);
// AY8910/YM2149?
// FDC: tc8566af, 1 3.5" DSDD drive
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000); /* Bios */
- add_internal_slot(config, MSX_SLOT_ROM, "swp", 0, 2, 1, 2, "maincpu", 0x14000); /* SWP */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8); /* 128KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000); /* Ext */
- add_internal_slot(config, MSX_SLOT_ROM, "arab", 3, 1, 1, 2, "maincpu", 0xc000); /* Arab */
- add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0x2c000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_ROM, "paint", 3, 3, 0, 4, "maincpu", 0x1c000); /* Paint */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000) /* Bios */
+ MCFG_MSX_LAYOUT_ROM("swp", 0, 2, 1, 2, "maincpu", 0x14000) /* SWP */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000) /* Ext */
+ MCFG_MSX_LAYOUT_ROM("arab", 3, 1, 1, 2, "maincpu", 0xc000) /* Arab */
+ MCFG_MSX_LAYOUT_DISK3("disk", 3, 2, 1, 1, "maincpu", 0x2c000)
+ MCFG_MSX_LAYOUT_ROM("paint", 3, 3, 0, 4, "maincpu", 0x1c000) /* Paint */
msx_tc8566af(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Canon V-25 */
@@ -4755,8 +4617,7 @@ ROM_START (canonv25)
ROM_LOAD ("v25ext.rom", 0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
ROM_END
-void msx2_state::canonv25(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::canonv25)
msx2(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: None, 0 drives
@@ -4764,18 +4625,18 @@ void msx2_state::canonv25(machine_config &config)
// S-1985 MSX Engine
// 64KB VRAM
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000); // BIOS
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000); // EXT
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000) // BIOS
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000) // EXT
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x10000) // 64KB Mapper RAM
MSX_S1985(config, "s1985", 0);
msx2_64kb_vram(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Canon V-30 */
@@ -4786,20 +4647,19 @@ ROM_START (canonv30)
ROM_LOAD ("v30disk.rom", 0xc000, 0x4000, CRC(54c73ad6) SHA1(12f2cc79b3d09723840bae774be48c0d721ec1c6))
ROM_END
-void msx2_state::canonv30(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::canonv30)
msx2(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: ??, 2 3.5" DSDD drive
// 2 Cartridge slots
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000); // BIOS
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000); // EXT
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1"); // DISK
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000); // 64KB?? Mapper RAM
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000) // BIOS
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000) // EXT
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 1, 1, 1, "maincpu", 0xc000) // DISK
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x10000) // 64KB?? Mapper RAM
MSX_S1985(config, "s1985", 0);
@@ -4808,7 +4668,7 @@ void msx2_state::canonv30(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Canon V-30F */
@@ -4819,20 +4679,19 @@ ROM_START (canonv30f)
ROM_LOAD ("v30fdisk.rom", 0xc000, 0x4000, CRC(54c73ad6) SHA1(12f2cc79b3d09723840bae774be48c0d721ec1c6))
ROM_END
-void msx2_state::canonv30f(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::canonv30f)
msx2(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: ??, 2 3.5" DSDD drive
// 2 Cartridge slots
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000); // BIOS
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000); // EXT
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1"); // DISK
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 128KB Mapper RAM
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000) // BIOS
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000) // EXT
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 1, 1, 1, "maincpu", 0xc000) // DISK
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) // 128KB Mapper RAM
MSX_S1985(config, "s1985", 0);
@@ -4841,7 +4700,7 @@ void msx2_state::canonv30f(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Daewoo CPC-300 */
@@ -4852,25 +4711,25 @@ ROM_START (cpc300)
ROM_LOAD ("300han.rom", 0x10000, 0x8000, CRC(e78cd87f) SHA1(47a9d9a24e4fc6f9467c6e7d61a02d45f5a753ef))
ROM_END
-void msx2_state::cpc300(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::cpc300)
msx2(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: None, 0 drives
// 2 Cartridge slots
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80); /* 128KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 3, 0, 2, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("han", 0, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 0, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 3, 0, 2, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
MSX_S1985(config, "s1985", 0);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Daewoo CPC-300E */
@@ -4882,8 +4741,7 @@ ROM_START (cpc300e)
ROM_LOAD ("300ehan.rom", 0x10000, 0x4000, BAD_DUMP CRC(5afea78d) SHA1(f08c91f8c78d681e1f02eaaaaafb87ad81112b60))
ROM_END
-void msx2_state::cpc300e(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::cpc300e)
msx2(config);
// AY8910/YM2149?
// FDC: None, 0 drives
@@ -4891,15 +4749,16 @@ void msx2_state::cpc300e(machine_config &config)
// No clockchip
// No joystick port??
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 1, 1, 1, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80); /* 128KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 3, 0, 2, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("han", 0, 1, 1, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 0, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 3, 0, 2, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Daewoo CPC-330K */
@@ -4910,8 +4769,7 @@ ROM_START (cpc330k)
ROM_LOAD ("330khan.rom", 0x10000, 0x4000, CRC(3d6dd335) SHA1(d2b058989a700ca772b9591f42c01ed0f45f74d6))
ROM_END
-void msx2_state::cpc330k(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::cpc330k)
msx2(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: None, 0 drives
@@ -4920,17 +4778,17 @@ void msx2_state::cpc330k(machine_config &config)
// Ergonomic keyboard, 2 builtin game controllers
// builtin FM?? builtin SCC??
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 1, 1, 1, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x20000); /* 128KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 3, 0, 2, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("han", 0, 1, 1, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 0, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 3, 0, 2, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
MSX_S1985(config, "s1985", 0);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Daewoo CPC-400 */
@@ -4945,27 +4803,27 @@ ROM_START (cpc400)
ROM_LOAD ("400kfn.rom", 0, 0x20000, CRC(b663c605) SHA1(965f4982790f1817bcbabbb38c8777183b231a55))
ROM_END
-void msx2_state::cpc400(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::cpc400)
msx2(config);
// AY8910/YM2149?
// FDC: mb8877a, 1 3.5" DS?DD drive
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 1, 1, 2, "maincpu", 0x14000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80); /* 128KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 3, 0, 2, "maincpu", 0xc000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 2, 0, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("han", 0, 1, 1, 2, "maincpu", 0x14000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 0, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 3, 0, 2, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_DISK2("disk", 2, 0, 1, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx_mb8877a(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Daewoo CPC-400S */
@@ -4980,21 +4838,21 @@ ROM_START (cpc400s)
ROM_LOAD ("400skfn.rom", 0, 0x20000, CRC(fa85368c) SHA1(30fff22e3e3d464993707488442721a5e56a9707))
ROM_END
-void msx2_state::cpc400s(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::cpc400s)
msx2(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: mb8877a, 1 3.5" DS?DD drive
// 2 Cartridge slots
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 1, 1, 2, "maincpu", 0x14000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80); /* 128KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 3, 0, 2, "maincpu", 0xc000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 2, 0, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("han", 0, 1, 1, 2, "maincpu", 0x14000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 0, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 3, 0, 2, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_DISK2("disk", 2, 0, 1, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
MSX_S1985(config, "s1985", 0);
@@ -5003,7 +4861,7 @@ void msx2_state::cpc400s(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Daewoo Zemmix CPC-61 */
@@ -5016,8 +4874,7 @@ ROM_START (cpc61)
ROM_LOAD ("61kfn.rom", 0x00000, 0x40000, CRC(9a3cf67c) SHA1(22d5f4e522250dc5eb17e15b68f4a51bb752cba1))
ROM_END
-void msx2_state::cpc61(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::cpc61)
msx2(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: None, 0 drives
@@ -5028,15 +4885,15 @@ void msx2_state::cpc61(machine_config &config)
// No printer port
// No cassette port?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM?
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 3, 0, 2, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 0, 2, 0x10000) // 64KB Mapper RAM?
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 3, 0, 2, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
MSX_S1985(config, "s1985", 0);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Daewoo Zemmix CPG-120 Normal */
@@ -5050,8 +4907,7 @@ ROM_START (cpg120)
ROM_LOAD ("cpg120kfn.rom", 0x0000, 0x40000, CRC(9a3cf67c) SHA1(22d5f4e522250dc5eb17e15b68f4a51bb752cba1))
ROM_END
-void msx2_state::cpg120(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::cpg120)
msx2(config);
// YM2149 (in S1985)
// FDC: None, 0 drives
@@ -5063,19 +4919,19 @@ void msx2_state::cpg120(machine_config &config)
// No clock chip
// No printer port
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x20000); // 128KB Mapper RAM
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 3, 0, 2, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 2, 0, 1, 1, "maincpu", 0x10000).set_ym2413_tag("ym2413");
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 0, 2, 0x20000) // 128KB Mapper RAM
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 3, 0, 2, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_MUSIC("mus", 2, 0, 1, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
MSX_S1985(config, "s1985", 0);
msx_ym2413(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Daewoo Zemmic CPG-120 Turbo */
/* Same as normal CPG-120 but with CPU running at 5.369317 MHz */
@@ -5089,8 +4945,7 @@ ROM_START (fpc900)
ROM_LOAD ("fpc900disk.rom", 0xc000, 0x4000, CRC(ca3307d3) SHA1(c3efedda7ab947a06d9345f7b8261076fa7ceeef))
ROM_END
-void msx2_state::fpc900(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fpc900)
msx2_pal(config);
// YM2149 (in S-3527 MSX Engine)
// FDC: WD2793?, 1 3.5" DSDD drive
@@ -5098,19 +4953,19 @@ void msx2_state::fpc900(machine_config &config)
// S-3527 MSX Engine
// 256KB?? VRAM
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x40000); // 256KB? Mapper RAM
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x40000) // 256KB? Mapper RAM
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000)
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Gradiente Expert 2.0 */
@@ -5122,27 +4977,27 @@ ROM_START (expert20)
ROM_LOAD ("microsoldisk.rom", 0x10000, 0x4000, CRC(6704ef81) SHA1(a3028515ed829e900cc8deb403e17b09a38bf9b0))
ROM_END
-void msx2_state::expert20(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::expert20)
msx2_pal(config);
// AY8910/YM2149?
// FDC: microsol, 1? 3.5"? DS?DD drive
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 1, 1, 0, 1, "maincpu", 0x8000); /* EXT */
- add_internal_slot(config, MSX_SLOT_ROM, "xbasic", 1, 1, 1, 1, "maincpu", 0xc000); /* XBASIC */
- add_internal_slot(config, MSX_SLOT_DISK5, "disk", 1, 3, 1, 1, "maincpu", 0x10000).set_tags("fdc", "fdc:0", "fdc:1", "fdc:2", "fdc:3"); /* Microsol controller */
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 2, 0, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80); /* 128KB Mapper RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 1, 1, 0, 1, "maincpu", 0x8000) /* EXT */
+ MCFG_MSX_LAYOUT_ROM("xbasic", 1, 1, 1, 1, "maincpu", 0xc000) /* XBASIC */
+ MCFG_MSX_LAYOUT_DISK5("disk", 1, 3, 1, 1, "maincpu", 0x10000) /* Microsol controller */
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 2, 0, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx_microsol(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Hitachi MB-H70 */
@@ -5157,21 +5012,20 @@ ROM_START (mbh70)
ROM_LOAD ("mbh70kfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
ROM_END
-void msx2_state::mbh70(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::mbh70)
msx2(config);
// YM2149 (in S-1985)
// FDC: WD2793?, 1? 3.5" DSDD drive
// S-1985 MSX Engine
// 2? Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_SONY08, "firm", 0, 3, 0, 4, "maincpu", 0x10000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 128KB Mapper RAM
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_SONY08("firm", 0, 3, 0, 4, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) // 128KB Mapper RAM
MSX_S1985(config, "s1985", 0);
@@ -5180,7 +5034,7 @@ void msx2_state::mbh70(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Kawai KMC-5000 */
@@ -5195,21 +5049,20 @@ ROM_START (kmc5000)
ROM_LOAD ("kmc5000kfn.rom", 0, 0x20000, CRC(c61ddc5d) SHA1(5e872d5853698731a0ed22fb72dbcdfd59cd19c3))
ROM_END
-void msx2_state::kmc5000(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::kmc5000)
msx2(config);
// YM2149 (in S-1985)
// FDC: TC8566AF?, 1? 3.5" DSDD drive
// S-1985 MSX Engine
// 2? Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_DISK3("disk", 3, 2, 1, 1, "maincpu", 0xc000)
MSX_S1985(config, "s1985", 0);
@@ -5218,7 +5071,7 @@ void msx2_state::kmc5000(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Mitsubishi ML-G1 */
@@ -5229,25 +5082,24 @@ ROM_START (mlg1)
ROM_LOAD ("mlg1paint.rom", 0xc000, 0x8000, CRC(64df1750) SHA1(5cf0abca6dbcf940bc33c433ecb4e4ada02fbfe6))
ROM_END
-void msx2_state::mlg1(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::mlg1)
msx2_pal(config);
// YM2149 (in S-1985)
// FDC: None, 0 drives
// S-1985 MSX Engine
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 64KB or 128KB Mapper RAM ?
- add_internal_slot(config, MSX_SLOT_ROM, "paint", 3, 3, 0, 2, "maincpu", 0xc000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) // 64KB or 128KB Mapper RAM ?
+ MCFG_MSX_LAYOUT_ROM("paint", 3, 3, 0, 2, "maincpu", 0xc000)
MSX_S1985(config, "s1985", 0);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Mitsubishi ML-G3 */
@@ -5259,21 +5111,20 @@ ROM_START (mlg3)
ROM_LOAD ("mlg3rs232c.rom", 0x10000, 0x4000, CRC(90b8a114) SHA1(dc50f2c9db233e505b0981c244ff3de553ac9d68))
ROM_END
-void msx2_state::mlg3(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::mlg3)
msx2_pal(config);
// YM2149 (in S-1985)
// FDC: wd2793?, 1 3.5" DSDD drive
// S-1985 MSX Engine
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 64KB or 128KB Mapper RAM?
- //add_internal_slot(config, MSX_SLOT_ROM, "rs232c", 3, 3, 1, 1, "maincpu", 0x10000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) // 64KB or 128KB Mapper RAM?
+ //MCFG_MSX_LAYOUT_ROM("rs232c", 3, 3, 1, 1, "maincpu", 0x10000)
MSX_S1985(config, "s1985", 0);
@@ -5282,7 +5133,7 @@ void msx2_state::mlg3(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Mitsubishi ML-G10 */
@@ -5295,24 +5146,23 @@ ROM_START (mlg10)
ROM_LOAD ("mlg10kfn.rom", 0, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
ROM_END
-void msx2_state::mlg10(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::mlg10)
msx2(config);
// YM2149 (in S-1985)
// FDC: None, 0 drives
// S-1985 MSX Engine
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 64KB or 128KB Mapper RAM?
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) // 64KB or 128KB Mapper RAM?
MSX_S1985(config, "s1985", 0);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Mitsubishi ML-G30 Model 1/Model 2 */
@@ -5326,26 +5176,25 @@ ROM_START (mlg30)
ROM_LOAD ("g30kfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
ROM_END
-void msx2_state::mlg30(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::mlg30)
msx2(config);
// AY8910/YM2149?
// FDC: wd2793/tc8566af?, 1 or 2? 3.5" DSDD drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr); /* Slot 2 subslot 0 */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000); /* 64KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0) /* Slot 2 subslot 0 */
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x10000) /* 64KB Mapper RAM */
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - National FS-4500 */
@@ -5369,8 +5218,7 @@ ROM_START (fs4500)
ROM_LOAD ("4500budi.rom", 0, 0x20000, CRC(f94590f8) SHA1(1ebb06062428fcdc66808a03761818db2bba3c73))
ROM_END
-void msx2_state::fs4500(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fs4500)
msx2(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: None, 0 drives
@@ -5378,25 +5226,25 @@ void msx2_state::fs4500(machine_config &config)
// S-1985 MSX Engine
// Matsushita switched device
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "font", 0, 2, 0, 1, "maincpu", 0xc000);
- add_internal_slot(config, MSX_SLOT_BUNSETSU, "buns", 0, 2, 1, 2, "maincpu", 0x10000).set_bunsetsu_region_tag("bunsetsu");
- add_internal_slot(config, MSX_SLOT_ROM, "jush", 0, 3, 1, 2, "maincpu", 0x18000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "wor1", 3, 0, 0, 3, "maincpu", 0x20000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr1", 3, 0, 3, 1, "maincpu", 0x38000);
- add_internal_slot(config, MSX_SLOT_ROM, "wor2", 3, 1, 0, 3, "maincpu", 0x2c000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr2", 3, 1, 3, 1, "maincpu", 0x3c000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("font", 0, 2, 0, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_BUNSETSU("buns", 0, 2, 1, 2, "maincpu", 0x10000, "bunsetsu")
+ MCFG_MSX_LAYOUT_ROM("jush", 0, 3, 1, 2, "maincpu", 0x18000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("wor1", 3, 0, 0, 3, "maincpu", 0x20000)
+ MCFG_MSX_LAYOUT_ROM("kdr1", 3, 0, 3, 1, "maincpu", 0x38000)
+ MCFG_MSX_LAYOUT_ROM("wor2", 3, 1, 0, 3, "maincpu", 0x2c000)
+ MCFG_MSX_LAYOUT_ROM("kdr2", 3, 1, 3, 1, "maincpu", 0x3c000)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 2, 0, 4) /* 64KB RAM */
MSX_S1985(config, "s1985", 0);
MSX_MATSUSHITA(config, "matsushita", 0);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - National FS-4600 */
@@ -5418,24 +5266,24 @@ ROM_START (fs4600)
ROM_LOAD ("4600kf12.rom", 0, 0x20000, CRC(340d1ef7) SHA1(a7a23dc01314e88381eee88b4878b39931ab4818))
ROM_END
-void msx2_state::fs4600(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fs4600)
msx2(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: mb8877a, 1 3.5" DSDD drive
// 2 Cartridge slots
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "fon1", 0, 2, 0, 1, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 0, 2, 1, 2, "maincpu", 0x18000);
- add_internal_slot(config, MSX_SLOT_ROM, "fon2", 0, 3, 0, 1, "maincpu", 0x14000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_FS4600, "firm", 3, 1, 0, 4, "maincpu", 0x20000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80); /* 128KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("fon1", 0, 2, 0, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 0, 2, 1, 2, "maincpu", 0x18000)
+ MCFG_MSX_LAYOUT_ROM("fon2", 0, 3, 0, 1, "maincpu", 0x14000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_FS4600("firm", 3, 1, 0, 4, "maincpu", 0x20000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 3, 1, 1, "maincpu", 0xc000)
MSX_S1985(config, "s1985", 0);
@@ -5444,7 +5292,7 @@ void msx2_state::fs4600(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - National FS-4700 */
@@ -5469,8 +5317,7 @@ ROM_START (fs4700)
ROM_LOAD ("4700budi.rom", 0, 0x20000, CRC(f94590f8) SHA1(1ebb06062428fcdc66808a03761818db2bba3c73))
ROM_END
-void msx2_state::fs4700(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fs4700)
msx2(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: mb8877a, 1 3.5" DSDD drive
@@ -5478,19 +5325,19 @@ void msx2_state::fs4700(machine_config &config)
// S-1985 MSX Engine
// Matsushita switched device
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "font", 0, 2, 0, 1, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_BUNSETSU, "buns", 0, 2, 1, 2, "maincpu", 0x14000).set_bunsetsu_region_tag("bunsetsu");
- add_internal_slot(config, MSX_SLOT_ROM, "jush", 0, 3, 1, 2, "maincpu", 0x1c000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "wor1", 3, 0, 0, 3, "maincpu", 0x24000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr1", 3, 0, 3, 1, "maincpu", 0x3c000);
- add_internal_slot(config, MSX_SLOT_ROM, "wor2", 3, 1, 0, 3, "maincpu", 0x30000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr2", 3, 1, 3, 1, "maincpu", 0x40000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4); /* 64KB RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("font", 0, 2, 0, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_BUNSETSU("buns", 0, 2, 1, 2, "maincpu", 0x14000, "bunsetsu")
+ MCFG_MSX_LAYOUT_ROM("jush", 0, 3, 1, 2, "maincpu", 0x1c000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("wor1", 3, 0, 0, 3, "maincpu", 0x24000)
+ MCFG_MSX_LAYOUT_ROM("kdr1", 3, 0, 3, 1, "maincpu", 0x3c000)
+ MCFG_MSX_LAYOUT_ROM("wor2", 3, 1, 0, 3, "maincpu", 0x30000)
+ MCFG_MSX_LAYOUT_ROM("kdr2", 3, 1, 3, 1, "maincpu", 0x40000)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 2, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 3, 1, 1, "maincpu", 0xc000)
MSX_S1985(config, "s1985", 0);
@@ -5501,7 +5348,7 @@ void msx2_state::fs4700(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - National FS-5000 */
@@ -5518,25 +5365,25 @@ ROM_START (fs5000)
ROM_LOAD ("5000kfn.rom", 0, 0x20000, CRC(c61ddc5d) SHA1(5e872d5853698731a0ed22fb72dbcdfd59cd19c3))
ROM_END
-void msx2_state::fs5000(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fs5000)
msx2(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: wd2793, 2 3.5" DSDD drives
// 2 Cartridge slots
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "empty1", 0, 1, 0, 4, "maincpu", 0x20000);
- add_internal_slot(config, MSX_SLOT_ROM, "empty2", 0, 2, 0, 4, "maincpu", 0x20000);
- add_internal_slot(config, MSX_SLOT_ROM, "empty3", 0, 3, 0, 4, "maincpu", 0x20000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 0, 1, 2, "maincpu", 0x18000);
- add_internal_slot(config, MSX_SLOT_ROM, "rtcrom", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80); /* 128KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("empty1", 0, 1, 0, 4, "maincpu", 0x20000)
+ MCFG_MSX_LAYOUT_ROM("empty2", 0, 2, 0, 4, "maincpu", 0x20000)
+ MCFG_MSX_LAYOUT_ROM("empty3", 0, 3, 0, 4, "maincpu", 0x20000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 0, 1, 2, "maincpu", 0x18000)
+ MCFG_MSX_LAYOUT_ROM("rtcrom", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 3, 1, 1, "maincpu", 0xc000)
MSX_S1985(config, "s1985", 0);
@@ -5545,7 +5392,7 @@ void msx2_state::fs5000(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - National FS-5500F2*/
/* The National FS-5500 had two versions: */
@@ -5565,8 +5412,7 @@ ROM_START (fs5500f1)
ROM_LOAD ("5500kfn.rom", 0, 0x20000, CRC(956dc96d) SHA1(9ed3ab6d893632b9246e91b412cd5db519e7586b))
ROM_END
-void msx2_state::fs5500f1(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fs5500f1)
msx2(config);
// YM2149 in (S-1985 MSX Engine)
// FDC: mb8877a, 1 3.5" DSDD drive
@@ -5574,17 +5420,17 @@ void msx2_state::fs5500f1(machine_config &config)
// S-1985 MSX Engine
// Matsushita switched device
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "empty1", 0, 1, 0, 4, "maincpu", 0x20000);
- add_internal_slot(config, MSX_SLOT_ROM, "empty2", 0, 2, 0, 4, "maincpu", 0x20000);
- add_internal_slot(config, MSX_SLOT_ROM, "empty3", 0, 3, 0, 4, "maincpu", 0x20000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 0, 1, 2, "maincpu", 0x18000);
- add_internal_slot(config, MSX_SLOT_ROM, "imp", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4); /* 64KB RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("empty1", 0, 1, 0, 4, "maincpu", 0x20000)
+ MCFG_MSX_LAYOUT_ROM("empty2", 0, 2, 0, 4, "maincpu", 0x20000)
+ MCFG_MSX_LAYOUT_ROM("empty3", 0, 3, 0, 4, "maincpu", 0x20000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 0, 1, 2, "maincpu", 0x18000)
+ MCFG_MSX_LAYOUT_ROM("imp", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 2, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 3, 1, 1, "maincpu", 0xc000)
MSX_S1985(config, "s1985", 0);
@@ -5595,7 +5441,7 @@ void msx2_state::fs5500f1(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - National FS-5500F2*/
/* The National FS-5500 had two versions: */
@@ -5615,8 +5461,7 @@ ROM_START (fs5500f2)
ROM_LOAD ("5500kfn.rom", 0, 0x20000, CRC(956dc96d) SHA1(9ed3ab6d893632b9246e91b412cd5db519e7586b))
ROM_END
-void msx2_state::fs5500f2(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fs5500f2)
msx2(config);
// YM2149 in (S-1985 MSX Engine)
// FDC: mb8877a, 2 3.5" DSDD drive
@@ -5624,17 +5469,17 @@ void msx2_state::fs5500f2(machine_config &config)
// S-1985 MSX Engine
// Matsushita switched device
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "empty1", 0, 1, 0, 4, "maincpu", 0x20000);
- add_internal_slot(config, MSX_SLOT_ROM, "empty2", 0, 2, 0, 4, "maincpu", 0x20000);
- add_internal_slot(config, MSX_SLOT_ROM, "empty3", 0, 3, 0, 4, "maincpu", 0x20000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 0, 1, 2, "maincpu", 0x18000);
- add_internal_slot(config, MSX_SLOT_ROM, "imp", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4); /* 64KB RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("empty1", 0, 1, 0, 4, "maincpu", 0x20000)
+ MCFG_MSX_LAYOUT_ROM("empty2", 0, 2, 0, 4, "maincpu", 0x20000)
+ MCFG_MSX_LAYOUT_ROM("empty3", 0, 3, 0, 4, "maincpu", 0x20000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 0, 1, 2, "maincpu", 0x18000)
+ MCFG_MSX_LAYOUT_ROM("imp", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 2, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 3, 1, 1, "maincpu", 0xc000)
MSX_S1985(config, "s1985", 0);
@@ -5645,7 +5490,7 @@ void msx2_state::fs5500f2(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Panasonic FS-A1 */
@@ -5657,23 +5502,22 @@ ROM_START (fsa1)
ROM_LOAD ("a1desk2.rom", 0x18000, 0x8000, CRC(7f6f4aa1) SHA1(7f5b76605e3d898cc4b5aacf1d7682b82fe84353))
ROM_END
-void msx2_state::fsa1(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fsa1)
msx2(config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64 KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "desk1", 3, 2, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_ROM, "desk2", 3, 3, 1, 2, "maincpu", 0x18000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64 KB RAM */
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("desk1", 3, 2, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_ROM("desk2", 3, 3, 1, 2, "maincpu", 0x18000)
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Panasonic FS-A1 (a) */
@@ -5685,23 +5529,22 @@ ROM_START (fsa1a)
ROM_LOAD ("a1desk2.rom", 0x14000, 0x8000, CRC(7f6f4aa1) SHA1(7f5b76605e3d898cc4b5aacf1d7682b82fe84353))
ROM_END
-void msx2_state::fsa1a(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fsa1a)
msx2(config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "desk1", 3, 2, 1, 2, "maincpu", 0xc000);
- add_internal_slot(config, MSX_SLOT_ROM, "desk2", 3, 3, 1, 2, "maincpu", 0x14000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 0, 0, 4) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("desk1", 3, 2, 1, 2, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("desk2", 3, 3, 1, 2, "maincpu", 0x14000)
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Panasonic FS-A1F */
@@ -5717,28 +5560,28 @@ ROM_START (fsa1f)
ROM_LOAD ("a1fkfn.rom", 0, 0x20000, CRC(c61ddc5d) SHA1(5e872d5853698731a0ed22fb72dbcdfd59cd19c3))
ROM_END
-void msx2_state::fsa1f(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fsa1f)
msx2(config);
// AY8910/YM2149?
// FDC: tc8566af, 1 3.5" DSDD drive
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "fkdr", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_ROM, "fcock", 3, 3, 1, 2, "maincpu", 0x18000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("fkdr", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_DISK3("disk", 3, 2, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("fcock", 3, 3, 1, 2, "maincpu", 0x18000)
msx_tc8566af(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Panasonic FS-A1FM */
@@ -5757,21 +5600,21 @@ ROM_START (fsa1fm)
ROM_LOAD ("a1fmkf12.rom", 0, 0x20000, CRC(340d1ef7) SHA1(a7a23dc01314e88381eee88b4878b39931ab4818))
ROM_END
-void msx2_state::fsa1fm(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fsa1fm)
msx2(config);
// AY8910/YM2149?
// FDC: tc8566af, 1 3.5" DSDD drive
// 2 Cartridge slots
// Integrated 1200baud modem
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
/* MSX_LAYOUT_SLOT (3, 1, 1, 4, MODEM_ROM, 0x20000, 0x10000) */ /* Modem Mapper of FS-CM1/A1FM must be emulated */
- add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_DISK3("disk", 3, 2, 1, 1, "maincpu", 0xc000)
/* MSX_LAYOUT_SLOT (3, 3, 0, 4, FSA1FM_ROM, 0x100000, 0x10000) */ /* Panasonic FS-A1FM Mapper must be emulated */
msx_tc8566af(config);
@@ -5779,7 +5622,7 @@ void msx2_state::fsa1fm(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Panasonic FS-A1MK2 */
@@ -5792,24 +5635,24 @@ ROM_START (fsa1mk2)
ROM_LOAD ("a1mkcoc3.rom", 0x18000, 0x8000, CRC(c1945676) SHA1(a3f4e2e4934074925d775afe30ac72f150ede543))
ROM_END
-void msx2_state::fsa1mk2(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fsa1mk2)
msx2(config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64 KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "coc1", 3, 1, 1, 2, "maincpu", 0xc000);
- add_internal_slot(config, MSX_SLOT_ROM, "coc2", 3, 2, 1, 1, "maincpu", 0x14000);
- add_internal_slot(config, MSX_SLOT_ROM, "coc3", 3, 3, 1, 2, "maincpu", 0x18000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64 KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("coc1", 3, 1, 1, 2, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("coc2", 3, 2, 1, 1, "maincpu", 0x14000)
+ MCFG_MSX_LAYOUT_ROM("coc3", 3, 3, 1, 2, "maincpu", 0x18000)
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips NMS-8220 - 2 possible sets (/00 /16) */
@@ -5820,23 +5663,23 @@ ROM_START (nms8220)
ROM_LOAD ("8220pen.rom.u13", 0xc000, 0x4000, CRC(3d38c53e) SHA1(cb754aed85b3e97a7d3c5894310df7ca18f89f41))
ROM_END
-void msx2_state::nms8220(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::nms8220)
msx2_pal(config);
// YM2149 (in S-3527 MSX Engine)
// FDC: None, 0 drives
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000).set_ramio_bits(0xf8); /* 64KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "pen", 3, 3, 1, 1, "maincpu", 0xc000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_ROM("pen", 3, 3, 1, 1, "maincpu", 0xc000)
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips NMS-8220 (a) */
@@ -5847,23 +5690,23 @@ ROM_START (nms8220a)
ROM_LOAD ("8220pena.rom.u13", 0xc000, 0x4000, CRC(17817b5a) SHA1(5df95d033ae70b107697b69470126ce1b7ae9eb5))
ROM_END
-void msx2_state::nms8220a(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::nms8220a)
msx2_pal(config);
// YM2149 (in S-3527 MSX Engine)
// FDC: None, 0 drives
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000).set_ramio_bits(0xf8); /* 64KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "pen", 3, 3, 1, 1, "maincpu", 0xc000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_ROM("pen", 3, 3, 1, 1, "maincpu", 0xc000)
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips NMS-8245 - 2 possible sets (/00 /16) */
/* /00 - A16 = 0 */
@@ -5875,27 +5718,27 @@ ROM_START (nms8245)
ROM_LOAD ("nms8245.u7", 0x0000, 0x20000, BAD_DUMP CRC(0c827d5f) SHA1(064e706cb1f12b99b329944ceeedc0efc3b2d9be))
ROM_END
-void msx2_state::nms8245(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::nms8245)
msx2_pal(config);
// YM2149 (in S-3527 MSX Engine)
// FDC: wd2793, 1 3.5" DSDD drive
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8); /* 128KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext",3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000)
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips NMS-8245F */
/* NMS-8245/19? */
@@ -5905,27 +5748,27 @@ ROM_START (nms8245f)
ROM_LOAD ("nms8245.u7", 0x0000, 0x20000, BAD_DUMP CRC(0c827d5f) SHA1(064e706cb1f12b99b329944ceeedc0efc3b2d9be))
ROM_END
-void msx2_state::nms8245f(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::nms8245f)
msx2_pal(config);
// YM2149 (in S-3527 MSX Engine)
// FDC: wd2793, 1 3.5" DSDD drive
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x10000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x18000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8); /* 128KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0x1c000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x18000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0x1c000)
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips NMS-8250 */
/* Labels taken from an NMS-8250/00 */
@@ -5937,27 +5780,27 @@ ROM_START (nms8250)
ROM_LOAD ("jq00014.ic117", 0xc000, 0x4000, CRC(ca3307d3) SHA1(c3efedda7ab947a06d9345f7b8261076fa7ceeef))
ROM_END
-void msx2_state::nms8250(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::nms8250)
msx2_pal(config);
// YM2149 (in S-3527 MSX Engine)
// FDC: wd2793, 1 3.5" DSDD drive
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8); /* 128KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000)
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips NMS-8250F */
@@ -5968,27 +5811,27 @@ ROM_START (nms8250f)
ROM_LOAD ("nms8250fdisk.rom", 0xc000, 0x4000, CRC(13b60725) SHA1(58ba1887e8fd21c912b6859cae6514bd874ffcca))
ROM_END
-void msx2_state::nms8250f(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::nms8250f)
msx2_pal(config);
// YM2149 (in S-3527 MSX Engine)
// FDC: wd2793, 1 3.5" DSDD drive
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8); /* 128KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000)
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips NMS-8250J */
@@ -6002,26 +5845,25 @@ ROM_START (nms8250j)
ROM_LOAD ("8250jkfn.rom", 0x00000, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
ROM_END
-void msx2_state::nms8250j(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::nms8250j)
msx2(config);
// AY8910/YM2149?
// FDC: wd2793?, 1 3.5" DSDD drive
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); /* 128KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000)
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips NMS-8255 */
@@ -6032,27 +5874,27 @@ ROM_START (nms8255)
ROM_LOAD ("8255disk.rom.ic117", 0xc000, 0x4000, CRC(ca3307d3) SHA1(c3efedda7ab947a06d9345f7b8261076fa7ceeef))
ROM_END
-void msx2_state::nms8255(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::nms8255)
msx2_pal(config);
// YM2149 (in S-3527 MSX Engine)
// FDC: wd2793, 2 3.5" DSDD drives
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8); /* 128KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000)
msx_wd2793_force_ready(config);
msx_2_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips NMS-8255F */
@@ -6063,27 +5905,27 @@ ROM_START (nms8255f)
ROM_LOAD ("nms8255fdisk.rom", 0xc000, 0x4000, CRC(13b60725) SHA1(58ba1887e8fd21c912b6859cae6514bd874ffcca))
ROM_END
-void msx2_state::nms8255f(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::nms8255f)
msx2_pal(config);
// YM2149 (in S-3527 MSX Engine)
// FDC: wd2793, 2 3.5" DSDD drives
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8); /* 128KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000)
msx_wd2793_force_ready(config);
msx_2_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips NMS-8260 */
/* Prototype created by JVC for Philips. Based on an NMS-8250 with the floppy drive removed and replaced with a 20MB JVC harddisk */
@@ -6096,20 +5938,20 @@ ROM_START (nms8260)
ROM_LOAD ("nms8260hdd.rom", 0x10000, 0x4000, CRC(0051afc3) SHA1(77f9fe964f6d8cb8c4af3b5fe63ce6591d5288e6))
ROM_END
-void msx2_state::nms8260(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::nms8260)
msx2_pal(config);
// YM2149 (in S-3527 MSX Engine)
// FDC: wd2793, 1 3.5" DSDD drives
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "hdd", 2, 0, 1, 1, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8); /* 128KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_ROM("hdd", 2, 0, 1, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000)
// There is actually only an FDC inside the real thing. With a floppy controller to attach an external floppy drive
msx_wd2793_force_ready(config);
@@ -6117,7 +5959,7 @@ void msx2_state::nms8260(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips NMS-8270 - Not confirmed to exist yet */
@@ -6130,26 +5972,26 @@ ROM_START (nms8280)
ROM_LOAD ("8280disk.rom.ic117", 0xc000, 0x4000, CRC(ca3307d3) SHA1(c3efedda7ab947a06d9345f7b8261076fa7ceeef))
ROM_END
-void msx2_state::nms8280(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::nms8280)
msx2_pal(config);
// AY8910/YM2149?
// FDC: wd2793, 2 3.5" DSDD drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8); /* 128KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000)
msx_wd2793_force_ready(config);
msx_2_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips NMS-8280F */
@@ -6160,26 +6002,26 @@ ROM_START (nms8280f)
ROM_LOAD ("8280fdisk.rom", 0xc000, 0x4000, CRC(13b60725) SHA1(58ba1887e8fd21c912b6859cae6514bd874ffcca))
ROM_END
-void msx2_state::nms8280f(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::nms8280f)
msx2_pal(config);
// AY8910/YM2149?
// FDC: wd2793, 2 3.5" DSDD drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8); /* 128KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000)
msx_wd2793_force_ready(config);
msx_2_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips NMS-8280G */
@@ -6190,26 +6032,26 @@ ROM_START (nms8280g)
ROM_LOAD ("8280gdisk.rom.ic117", 0xc000, 0x4000, CRC(d0beebb8) SHA1(d1001f93c87ff7fb389e418e33bf7bc81bdbb65f))
ROM_END
-void msx2_state::nms8280g(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::nms8280g)
msx2_pal(config);
// AY8910/YM2149?
// FDC: wd2793, 2 3.5" DSDD drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8); /* 128KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000)
msx_wd2793_force_ready(config);
msx_2_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips VG-8230 (u11 - exp, u12 - basic, u13 - disk */
@@ -6220,27 +6062,27 @@ ROM_START (vg8230)
ROM_LOAD ("8230disk.rom.u13", 0xc000, 0x4000, CRC(77c4e5bc) SHA1(849f93867ff7846b27f84d0be418569faf058ac2))
ROM_END
-void msx2_state::vg8230(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::vg8230)
msx2_pal(config);
// YM2149 (in S-3527 MSX Engine)
// FDC: wd2793, 1 3.5" SSDD drive
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000).set_ramio_bits(0xf8); /* 64KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000)
msx_wd2793_force_ready(config);
msx_1_35_ssdd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips VG-8230J */
@@ -6254,26 +6096,25 @@ ROM_START (vg8230j)
ROM_LOAD ("8230jkfn.rom", 0x00000, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
ROM_END
-void msx2_state::vg8230j(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::vg8230j)
msx2(config);
// AY8910/YM2149?
// FDC: wd2793?, 1 3.5" SSDD drive?
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); /* 128KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000)
msx_wd2793_force_ready(config);
msx_1_35_ssdd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips VG-8235 3 psosible basic and ext roms (/00 /02 /19) */
@@ -6284,27 +6125,27 @@ ROM_START (vg8235)
ROM_LOAD ("8235disk.rom.u50", 0xc000, 0x4000, CRC(51daeb25) SHA1(8954e59aa79310c7b719ecf0cde1e82fb731dcd1))
ROM_END
-void msx2_state::vg8235(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::vg8235)
msx2_pal(config);
// YM2149 (in S-3527 MSX Engine)
// FDC: wd2793, 1 3.5" SSDD drive
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8); /* 128KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000)
msx_wd2793_force_ready(config);
msx_1_35_ssdd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips VG-8235F */
@@ -6315,27 +6156,27 @@ ROM_START (vg8235f)
ROM_LOAD ("8235fdisk.rom.u50", 0xc000, 0x4000, CRC(77c4e5bc) SHA1(849f93867ff7846b27f84d0be418569faf058ac2))
ROM_END
-void msx2_state::vg8235f(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::vg8235f)
msx2_pal(config);
// YM2149 (in S-3527 MSX Engine)
// FDC: wd2793, 1 3.5" SSDD drive
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8); /* 128KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000)
msx_wd2793_force_ready(config);
msx_1_35_ssdd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Philips VG-8240 */
@@ -6346,26 +6187,26 @@ ROM_START (vg8240)
ROM_LOAD ("8240disk.rom", 0xc000, 0x4000, CRC(ca3307d3) SHA1(c3efedda7ab947a06d9345f7b8261076fa7ceeef))
ROM_END
-void msx2_state::vg8240(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::vg8240)
msx2_pal(config);
// AY8910/YM2149?
// FDC: wd2793, 1 3.5" DSDD drive
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000).set_ramio_bits(0xf8); /* 64KB Mapper RAM */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0xf8)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 3, 1, 1, "maincpu", 0xc000)
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sanyo MPC-2300 */
@@ -6375,21 +6216,20 @@ ROM_START (mpc2300)
ROM_LOAD ("2300ext.rom", 0x8000, 0x4000, CRC(3d7dc718) SHA1(e1f834b28c3ee7c9f79fe6fbf2b23c8a0617892b))
ROM_END
-void msx2_state::mpc2300(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::mpc2300)
msx2(config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x20000); /* 128KB?? Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x20000) /* 128KB?? Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sanyo MPC-2500FD */
@@ -6400,27 +6240,26 @@ ROM_START (mpc2500f)
ROM_LOAD ("mpc2500fddisk.rom", 0xc000, 0x4000, CRC(38454059) SHA1(58ac78bba29a06645ca8d6a94ef2ac68b743ad32))
ROM_END
-void msx2_state::mpc2500f(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::mpc2500f)
msx2(config);
// YM2149
// FDC: wd2793?, 1? 3.5" DSDD drive?
// 2 Cartridge slots?
// S-3527 MSX Eninge
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 2, 3, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 1, 1, 2, "maincpu", 0xC000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000); /* 64KB?? Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 2, 3, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 1, 1, 1, "maincpu", 0xC000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x10000) /* 64KB?? Mapper RAM */
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sanyo Wavy MPC-25FD */
@@ -6431,26 +6270,25 @@ ROM_START (mpc25fd)
ROM_LOAD ("25fddisk.rom", 0xc000, 0x4000, CRC(38454059) SHA1(58ac78bba29a06645ca8d6a94ef2ac68b743ad32))
ROM_END
-void msx2_state::mpc25fd(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::mpc25fd)
msx2(config);
// YM2149 (in S-3527 MSX Engine)
// FDC: wd2793, 1 drive
// 1 Cartridge slot (slot 1)
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 2, 3, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); /* 128KB?? RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot", 1, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 2, 3, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 1, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB?? RAM */
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sanyo Wavy MPC-27 */
@@ -6463,28 +6301,27 @@ ROM_START (mpc27)
ROM_RELOAD (0x12000, 0x2000)
ROM_END
-void msx2_state::mpc27(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::mpc27)
msx2(config);
// YM2149 (in S-3527 MSX Engine)
// FDC: wd2793?, 1 drive
// 2 Cartridge slots?
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x20000); /* 128KB?? RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 2, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_ROM, "lpen", 3, 3, 1, 1, "maincpu", 0x10000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x20000) /* 128KB?? RAM */
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 2, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("lpen", 3, 3, 1, 1, "maincpu", 0x10000)
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sanyo Wavy PHC-23 = PHC-23J(B)*/
@@ -6494,24 +6331,23 @@ ROM_START (phc23)
ROM_LOAD ("23ext.rom", 0x8000, 0x4000, CRC(90ca25b5) SHA1(fd9fa78bac25aa3c0792425b21d14e364cf7eea4))
ROM_END
-void msx2_state::phc23(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::phc23)
msx2(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: None, 0 drives
// 2 Cartridge slots
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 2, 0, 4) /* 64KB RAM */
MSX_S1985(config, "s1985", 0);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sanyo Wavy PHC-55FD2 */
@@ -6522,20 +6358,19 @@ ROM_START (phc55fd2)
ROM_LOAD ("phc55fd2disk.rom", 0xc000, 0x4000, CRC(38454059) SHA1(58ac78bba29a06645ca8d6a94ef2ac68b743ad32))
ROM_END
-void msx2_state::phc55fd2(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::phc55fd2)
msx2(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: wd2793?, 2 3.5" DSDD drives
// 2 Cartridge slots
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x20000); /* 128KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 2, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x20000) /* 128KB RAM */
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 2, 1, 1, "maincpu", 0xc000)
MSX_S1985(config, "s1985", 0);
@@ -6544,7 +6379,7 @@ void msx2_state::phc55fd2(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sanyo Wavy PHC-77 */
@@ -6559,8 +6394,7 @@ ROM_START (phc77)
ROM_LOAD ("phc77kfn.rom", 0x0000, 0x20000, CRC(3b8fdf44) SHA1(fc71561a64f73da0e0043d256f67fd18d7fc3a7f))
ROM_END
-void msx2_state::phc77(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::phc77)
msx2(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: wd2793?, 1 drive
@@ -6568,13 +6402,13 @@ void msx2_state::phc77(machine_config &config)
// S-1985 MSX Engine
// Builtin printer
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000); /* 64KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 2, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_ROM, "write", 3, 3, 1, 2, "maincpu", 0x10000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 2, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("write", 3, 3, 1, 2, "maincpu", 0x10000)
MSX_S1985(config, "s1985", 0);
@@ -6583,7 +6417,7 @@ void msx2_state::phc77(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sharp Epcom HotBit 2.0 */
@@ -6595,27 +6429,27 @@ ROM_START (hotbit20)
ROM_LOAD ("microsoldisk.rom", 0x10000, 0x4000, CRC(6704ef81) SHA1(a3028515ed829e900cc8deb403e17b09a38bf9b0))
ROM_END
-void msx2_state::hotbit20(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hotbit20)
msx2_pal(config);
// AY8910/YM2149?
// FDC: microsol, 1 or 2 drives?
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 1, 1, 0, 1, "maincpu", 0x8000); /* EXT */
- add_internal_slot(config, MSX_SLOT_ROM, "xbasic", 1, 1, 1, 1, "maincpu", 0xc000); /* XBASIC */
- add_internal_slot(config, MSX_SLOT_DISK5, "disk", 1, 3, 1, 1, "maincpu", 0x10000).set_tags("fdc", "fdc:0", "fdc:1", "fdc:2", "fdc:3"); /* Microsol controller */
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 2, 0, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80); /* 128KB Mapper RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 1, 1, 0, 1, "maincpu", 0x8000) /* EXT */
+ MCFG_MSX_LAYOUT_ROM("xbasic", 1, 1, 1, 1, "maincpu", 0xc000) /* XBASIC */
+ MCFG_MSX_LAYOUT_DISK5("disk", 1, 3, 1, 1, "maincpu", 0x10000) /* Microsol controller */
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 2, 0, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx_microsol(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F1 */
@@ -6628,24 +6462,23 @@ ROM_START (hbf1)
ROM_LOAD ("f1note3.rom", 0x18000, 0x8000, CRC(73eb9329) SHA1(58accf41a90693874b86ce98d8d43c27beb8b6dc))
ROM_END
-void msx2_state::hbf1(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf1)
msx2(config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "note1", 3, 0, 1, 1, "maincpu", 0xc000);
- add_internal_slot(config, MSX_SLOT_ROM, "note2", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_ROM, "note3", 3, 2, 1, 2, "maincpu", 0x18000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 3, 0, 4); /* 64KB RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("note1", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("note2", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_ROM("note3", 3, 2, 1, 2, "maincpu", 0x18000)
+ MCFG_MSX_LAYOUT_RAM("ram", 3, 3, 0, 4) /* 64KB RAM */
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F1II */
@@ -6658,24 +6491,24 @@ ROM_START (hbf12)
ROM_LOAD ("f12note3.rom", 0x18000, 0x8000, CRC(44a10e6a) SHA1(917d1c079e03c4a44de864f123d03c4e32c8daae))
ROM_END
-void msx2_state::hbf12(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf12)
msx2(config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "note1", 3, 0, 1, 1, "maincpu", 0xc000);
- add_internal_slot(config, MSX_SLOT_ROM, "note2", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_ROM, "note3", 3, 2, 1, 2, "maincpu", 0x18000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 3, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("note1", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("note2", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_ROM("note3", 3, 2, 1, 2, "maincpu", 0x18000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 3, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F1XD */
@@ -6686,20 +6519,20 @@ ROM_START (hbf1xd)
ROM_LOAD ("f1xddisk.rom.ic27", 0xc000, 0x4000, BAD_DUMP CRC(54c73ad6) SHA1(12f2cc79b3d09723840bae774be48c0d721ec1c6))
ROM_END
-void msx2_state::hbf1xd(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf1xd)
msx2(config);
// YM2149 (in S-1895 MSX Engine)
// FDC: wd2793, 1 3.5" DSDD drive
// 2 Cartridge slots
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 3, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 3, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
MSX_S1985(config, "s1985", 0);
@@ -6708,7 +6541,7 @@ void msx2_state::hbf1xd(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F1XDMK2 */
@@ -6719,26 +6552,26 @@ ROM_START (hbf1xdm2)
ROM_LOAD ("f1m2disk.rom.ic27", 0xc000, 0x4000, BAD_DUMP CRC(54c73ad6) SHA1(12f2cc79b3d09723840bae774be48c0d721ec1c6))
ROM_END
-void msx2_state::hbf1xdm2(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf1xdm2)
msx2(config);
// AY8910/YM2149?
// FDC: wd2793, 1 3.5" DSDD drive
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 3, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 3, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
msx_wd2793(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F5 */
@@ -6749,22 +6582,21 @@ ROM_START (hbf5)
ROM_LOAD ("hbf5note.rom", 0xc000, 0x4000, CRC(0cdc0777) SHA1(06ba91d6732ee8a2ecd5dcc38b0ce42403d86708))
ROM_END
-void msx2_state::hbf5(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf5)
msx2_pal(config);
// YM2149
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "note", 0, 1, 1, 1, "maincpu", 0xc000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x10000); /* 64KB?? Mapper RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("note", 0, 1, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 0, 2, 0x10000) /* 64KB?? Mapper RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F500 */
@@ -6778,27 +6610,26 @@ ROM_START (hbf500)
ROM_LOAD ("f500kfn.rom", 0, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
ROM_END
-void msx2_state::hbf500(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf500)
msx2(config);
// AY8910/YM2149?
// FDC: wd2793, 1 3.5" DSDD drive
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram1", 0, 0, 2, 2); /* 32KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 0, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM, "ram2", 0, 2, 0, 2); /* 32KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram1", 0, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 0, 1, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM("ram2", 0, 2, 0, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F500F */
@@ -6809,8 +6640,7 @@ ROM_START (hbf500f)
ROM_LOAD ("hbf500fdisk.rom", 0xc000, 0x4000, CRC(6e718f5c) SHA1(0e081572f84555dc13bdb0c7044a19d6c164d985))
ROM_END
-void msx2_state::hbf500f(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf500f)
msx2_pal(config);
// AY8910/YM2149?
// FDC: wd2793, 1 3.5" DSDD drive
@@ -6820,16 +6650,16 @@ void msx2_state::hbf500f(machine_config &config)
msx_1_35_dd_drive(config);
msx2_floplist(config);
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram1", 0, 0, 2, 2); /* 32KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 0, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM, "ram2", 0, 2, 0, 2); /* 32KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram1", 0, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 0, 1, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM("ram2", 0, 2, 0, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F500P */
@@ -6840,8 +6670,7 @@ ROM_START (hbf500p)
ROM_FILL (0x10000, 0xc000, 0xFF)
ROM_END
-void msx2_state::hbf500p(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf500p)
msx2_pal(config);
// AY8910/YM2149?
// FDC: wd2793, 1 3.5" DSDD drive
@@ -6851,17 +6680,17 @@ void msx2_state::hbf500p(machine_config &config)
msx_1_35_dd_drive(config);
msx2_floplist(config);
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram1", 0, 0, 2, 2); /* 32KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 0, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM, "ram2", 0, 2, 0, 2); /* 32KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "empty", 3, 0, 0, 4, "maincpu", 0xc000); // Empty? or is this the 3rd cartridge/expansion slot ?
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram1", 0, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 0, 1, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM("ram2", 0, 2, 0, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("empty", 3, 0, 0, 4, "maincpu", 0xc000) // Empty? or is this the 3rd cartridge/expansion slot ?
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F700D */
@@ -6871,20 +6700,20 @@ ROM_START (hbf700d)
ROM_LOAD ("700dext.ic6", 0x8000, 0x8000, CRC(100cf756) SHA1(317722fa36c2ed31c07c5218b43490fd5badf1f8))
ROM_END
-void msx2_state::hbf700d(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf700d)
msx2_pal(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: wd2793, 1 3.5" DSDD drive
// 2 Cartridge slots
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 3, 0, 4).set_total_size(0x40000).set_ramio_bits(0x80); /* 256KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 3, 0x40000) /* 256KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
MSX_S1985(config, "s1985", 0);
@@ -6893,7 +6722,7 @@ void msx2_state::hbf700d(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F700F */
@@ -6903,26 +6732,26 @@ ROM_START (hbf700f)
ROM_LOAD ("700fext.ic6", 0x8000, 0x8000, CRC(7c8b07b1) SHA1(ecacb20ba0a9bbd25e8c0f128d64dd66f8cd8bee))
ROM_END
-void msx2_state::hbf700f(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf700f)
msx2_pal(config);
// AY8910/YM2149?
// FDC: wd2793, 1 3.5" DSDD drive
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 3, 0, 4).set_total_size(0x40000).set_ramio_bits(0x80); /* 256KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 3, 0x40000) /* 256KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
msx_wd2793(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F700P */
@@ -6932,20 +6761,20 @@ ROM_START (hbf700p)
ROM_LOAD ("700pext.ic6", 0x8000, 0x8000, CRC(63e1bffc) SHA1(496698a60432490dc1306c8cc1d4a6ded275261a))
ROM_END
-void msx2_state::hbf700p(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf700p)
msx2_pal(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: wd2793, 1 3.5" DSDD drive
// 2 Cartridge slots
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 3, 0, 4).set_total_size(0x40000).set_ramio_bits(0x80); /* 256KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 3, 0x40000) /* 256KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
MSX_S1985(config, "s1985", 0);
@@ -6954,7 +6783,7 @@ void msx2_state::hbf700p(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F700S */
@@ -6964,26 +6793,26 @@ ROM_START (hbf700s)
ROM_LOAD ("700sext.ic6", 0x8000, 0x8000, CRC(28d1badf) SHA1(ae3ed88a2d7034178e08f7bdf5409f462bf67fc9))
ROM_END
-void msx2_state::hbf700s(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf700s)
msx2_pal(config);
// AY8910/YM2149?
// FDC: wd2793, 1 3.5" DSDD drive
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 3, 0, 4).set_total_size(0x40000).set_ramio_bits(0x80); /* 256KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 3, 0x40000) /* 256KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F900 */
ROM_START (hbf900)
@@ -6998,27 +6827,27 @@ ROM_START (hbf900)
ROM_LOAD ("f900kfn.rom", 0, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
ROM_END
-void msx2_state::hbf900(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf900)
msx2(config);
// AY8910/YM2149?
// FDC: wd2793, 2 3.5" DSDD drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 1, 0, 4).set_total_size(0x40000).set_ramio_bits(0x80); /* 256KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "empty", 3, 3, 1, 1, "maincpu", 0x14000); // Empty/unknown, optional fmpac rom used to be loaded here, or should the util rom be loaded?
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 1, 0x40000) /* 256KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("empty", 3, 3, 1, 1, "maincpu", 0x14000) // Empty/unknown, optional fmpac rom used to be loaded here, or should the util rom be loaded?
msx_wd2793_force_ready(config);
msx_2_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F900 (a) */
ROM_START (hbf900a)
@@ -7033,27 +6862,27 @@ ROM_START (hbf900a)
ROM_LOAD ("f900kfn.rom", 0, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
ROM_END
-void msx2_state::hbf900a(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf900a)
msx2(config);
// AY8910/YM2149?
// FDC: wd2793, 2 3.5" DSDD drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 1, 0, 4).set_total_size(0x40000).set_ramio_bits(0x80); /* 256KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "empty", 3, 3, 1, 1, "maincpu", 0x14000); // Empty/unknown, optional fmpac rom used to be loaded here, or should the util rom be loaded?
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 1, 0x40000) /* 256KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("empty", 3, 3, 1, 1, "maincpu", 0x14000) // Empty/unknown, optional fmpac rom used to be loaded here, or should the util rom be loaded?
msx_wd2793(config);
msx_2_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F9P */
@@ -7064,25 +6893,25 @@ ROM_START (hbf9p)
ROM_LOAD ("f9pfirm2.rom.ic13", 0x10000, 0x8000, CRC(ea97069f) SHA1(2d1880d1f5a6944fcb1b198b997a3d90ecd1903d))
ROM_END
-void msx2_state::hbf9p(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf9p)
msx2_pal(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: None, 0 drives
// 2 Cartridge slots
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "firm1", 3, 0, 0, 2, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "firm2", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80); /* 128KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("firm1", 3, 0, 0, 2, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("firm2", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
MSX_S1985(config, "s1985", 0);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F9P Russian */
@@ -7092,24 +6921,23 @@ ROM_START (hbf9pr)
ROM_LOAD ("f9prext.rom", 0x8000, 0x4000, CRC(8b966f50) SHA1(65253cb38ab11084f355a2d4ad78fa6c64cbe660))
ROM_END
-void msx2_state::hbf9pr(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf9pr)
msx2_pal(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: None, 0 drives
// 2 Cartridge slots
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); /* 128KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
MSX_S1985(config, "s1985", 0);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-F9S */
@@ -7120,25 +6948,25 @@ ROM_START (hbf9s)
ROM_LOAD ("f9sfirm2.ic13", 0x10000, 0x8000, CRC(ea97069f) SHA1(2d1880d1f5a6944fcb1b198b997a3d90ecd1903d))
ROM_END
-void msx2_state::hbf9s(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf9s)
msx2_pal(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: None, 0 drives
// 2 Cartridge slots
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "firm1", 3, 0, 0, 2, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "firm2", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80); /* 128KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("firm1", 3, 0, 0, 2, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("firm2", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
MSX_S1985(config, "s1985", 0);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-G900AP */
@@ -7157,28 +6985,28 @@ ROM_START (hbg900ap)
ROM_LOAD ("g900util.rom", 0x14000, 0x4000, CRC(d0417c20) SHA1(8779b004e7605a3c419825f0373a5d8fa84e1d5b))
ROM_END
-void msx2_state::hbg900ap(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbg900ap)
msx2_pal(config);
// AY8910/YM2149?
// FDC: wd2793, 1 3.5" DSDD drive
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 0, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 0, 1, 1, 1, "maincpu", 0xc000)
/* MSX_LAYOUT_SLOT ("rs232c", 0, 2, 1, 1, "maincpu", 0x10000) */ /* RS232C must be emulated */
- add_internal_slot(config, MSX_SLOT_ROM, "util", 0, 3, 1, 1, "maincpu", 0x14000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x80000).set_ramio_bits(0x80); /* 512KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("util", 0, 3, 1, 1, "maincpu", 0x14000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x80000) /* 512KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
msx_wd2793(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Sony HB-G900P - 3x 32KB ROMs */
@@ -7191,28 +7019,28 @@ ROM_START (hbg900p)
ROM_LOAD ("g900util.rom", 0x14000, 0x4000, CRC(d0417c20) SHA1(8779b004e7605a3c419825f0373a5d8fa84e1d5b))
ROM_END
-void msx2_state::hbg900p(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbg900p)
msx2_pal(config);
// AY8910/YM2149?
// FDC: wd2793, 1 3.5" DSDD drive
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 0, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 0, 1, 1, 1, "maincpu", 0xc000)
/* MSX_LAYOUT_SLOT ("rs232c", 0, 2, 1, 1, "maincpu", 0x10000) */ /* RS232C must be emulated */
- add_internal_slot(config, MSX_SLOT_ROM, "util", 0, 3, 1, 1, "maincpu", 0x14000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("util", 0, 3, 1, 1, "maincpu", 0x14000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
msx_wd2793(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Talent TPC-310 */
ROM_START (tpc310)
@@ -7224,21 +7052,21 @@ ROM_START (tpc310)
ROM_LOAD ("tpc310acc.rom", 0x14000, 0x8000, CRC(4fb8fab3) SHA1(cdeb0ed8adecaaadb78d5a5364fd603238591685))
ROM_END
-void msx2_state::tpc310(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::tpc310)
msx2_pal(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: mb8877a?, 1 3.5" DSDD drive
// 1 Cartridge slot (slot 2)
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 1, 0, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80); /* 128KB Mapper RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "turbo", 3, 0, 1, 1, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_ROM, "acc", 3, 1, 1, 2, "maincpu", 0x14000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 2, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 1, 0, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("turbo", 3, 0, 1, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_ROM("acc", 3, 1, 1, 2, "maincpu", 0x14000)
+ MCFG_MSX_LAYOUT_DISK2("disk", 3, 2, 1, 1, "maincpu", 0xc000)
MSX_S1985(config, "s1985", 0);
@@ -7247,7 +7075,7 @@ void msx2_state::tpc310(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Talent TPP-311 */
@@ -7258,21 +7086,20 @@ ROM_START (tpp311)
ROM_LOAD ("311logo.rom", 0xc000, 0x8000, CRC(0e6ecb9f) SHA1(e45ddc5bf1a1e63756d11fb43fc50276ca35cab0))
ROM_END
-void msx2_state::tpp311(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::tpp311)
msx2_pal(config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 0 Cartridge slots?
// 64KB VRAM
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 1, 0, 0, 4).set_total_size(0x10000); /* 64KB?? Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "logo", 2, 0, 1, 2, "maincpu", 0xc000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 1, 0, 0x10000) /* 64KB?? Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("logo", 2, 0, 1, 2, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
msx2_64kb_vram(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Talent TPS-312 */
@@ -7284,27 +7111,26 @@ ROM_START (tps312)
ROM_LOAD ("312write.rom", 0x14000, 0x4000, CRC(63c6992f) SHA1(93682f5baba7697c40088e26f99ee065c78e83b8))
ROM_END
-void msx2_state::tps312(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::tps312)
msx2_pal(config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
// 64KB VRAM
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 1, 0, 0, 4).set_total_size(0x20000); /* 128KB?? Mapper RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "write", 3, 1, 1, 1, "maincpu", 0x14000);
- add_internal_slot(config, MSX_SLOT_ROM, "plan", 3, 2, 1, 1, "maincpu", 0xc000);
- add_internal_slot(config, MSX_SLOT_ROM, "planlow", 3, 2, 0, 1, "maincpu", 0x10000);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 3, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 1, 0, 0x20000) /* 128KB?? Mapper RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("write", 3, 1, 1, 1, "maincpu", 0x14000)
+ MCFG_MSX_LAYOUT_ROM("plan", 3, 2, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("planlow", 3, 2, 0, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 3)
msx2_cartlist(config);
msx2_64kb_vram(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Toshiba HX-23 */
@@ -7315,26 +7141,25 @@ ROM_START (hx23)
ROM_LOAD ("hx23word.rom", 0xc000, 0x8000, CRC(39b3e1c0) SHA1(9f7cfa932bd7dfd0d9ecaadc51655fb557c2e125))
ROM_END
-void msx2_state::hx23(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hx23)
msx2_pal(config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
// 64KB VRAM
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_RAM, "ram1", 0, 0, 2, 2); /* 32KB RAM */
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM, "ram2", 3, 0, 0, 2); /* 32KB RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0xc000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_RAM("ram1", 0, 0, 2, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM("ram2", 3, 0, 0, 2) /* 32KB RAM */
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("word", 3, 3, 1, 2, "maincpu", 0xc000)
msx2_cartlist(config);
msx2_64kb_vram(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Toshiba HX-23F */
@@ -7345,22 +7170,22 @@ ROM_START (hx23f)
ROM_LOAD ("hx23fword.rom", 0xc000, 0x8000, CRC(39b3e1c0) SHA1(9f7cfa932bd7dfd0d9ecaadc51655fb557c2e125))
ROM_END
-void msx2_state::hx23f(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hx23f)
msx2_pal(config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80); /* 128KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0xc000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("word", 3, 3, 1, 2, "maincpu", 0xc000)
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Toshiba HX-23I */
@@ -7371,25 +7196,24 @@ ROM_START (hx23i)
ROM_LOAD ("hx23iword.rom", 0xc000, 0x8000, CRC(d50db5b4) SHA1(64cf27a6be1393b1da9f8d5d43df617c9f22fbd2))
ROM_END
-void msx2_state::hx23i(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hx23i)
msx2_pal(config);
// YM2149 (in S-1985)
// FDC: None, 0 drives
// 2 Cartridge slots?
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x20000); /* 128KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0xc000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("word", 3, 3, 1, 2, "maincpu", 0xc000)
MSX_S1985(config, "s1985", 0);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX@ - Toshiba HX-33 */
@@ -7403,8 +7227,7 @@ ROM_START (hx33)
ROM_LOAD ("hx33kfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
ROM_END
-void msx2_state::hx33(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hx33)
msx2(config);
// YM2149 (in S-1985)
// FDC: None, 0, drives
@@ -7412,19 +7235,19 @@ void msx2_state::hx33(machine_config &config)
// RS232C builtin?
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "firm", 3, 2, 1, 2, "maincpu", 0xc000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) // 64KB Mapper RAM
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("firm", 3, 2, 1, 2, "maincpu", 0xc000)
MSX_S1985(config, "s1985", 0);
msx2_64kb_vram(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX@ - Toshiba HX-34 */
@@ -7440,8 +7263,7 @@ ROM_REGION (0x18000, "maincpu", 0)
ROM_LOAD ("hx34kfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
ROM_END
-void msx2_state::hx34(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hx34)
msx2(config);
// YM2149 (in S-1985)
// FDC: wd2793??, 1 3.5" DSDD drive
@@ -7449,13 +7271,13 @@ void msx2_state::hx34(machine_config &config)
// RS232C builtin?
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_DISK6, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_ROM, "firm", 3, 3, 1, 2, "maincpu", 0x10000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) // 64KB Mapper RAM
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK6("disk", 3, 2, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("firm", 3, 3, 1, 2, "maincpu", 0x10000)
MSX_S1985(config, "s1985", 0);
@@ -7464,7 +7286,7 @@ void msx2_state::hx34(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX@ - Toshiba HX-34I */
@@ -7477,8 +7299,7 @@ ROM_START (hx34i)
ROM_LOAD ("hx34ifirm.rom", 0x10000, 0x8000, CRC(f9e29c66) SHA1(3289336b2c12161fd926a7e5ce865770ae7038af))
ROM_END
-void msx2_state::hx34i(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hx34i)
msx2_pal(config);
// YM2149 (in S-1985)
// FDC: wd2793??, 1 3.5" DSDD drive
@@ -7486,13 +7307,13 @@ void msx2_state::hx34i(machine_config &config)
// RS232C builtin?
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_DISK6, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_ROM, "firm", 3, 3, 1, 2, "maincpu", 0x10000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) // 64KB Mapper RAM
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK6("disk", 3, 2, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("firm", 3, 3, 1, 2, "maincpu", 0x10000)
MSX_S1985(config, "s1985", 0);
@@ -7501,7 +7322,7 @@ void msx2_state::hx34i(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Toshiba FS-TM1 */
@@ -7513,26 +7334,25 @@ ROM_START (fstm1)
ROM_LOAD ("fstm1desk2.rom", 0x14000, 0x8000, CRC(304820ea) SHA1(ff6e07d3976b0874164fae680ae028d598752049))
ROM_END
-void msx2_state::fstm1(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fstm1)
msx2_pal(config);
// YM2149 (in S-1985)
// FDC: None, 0 drives
// 2 Cartridge slots
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "desk1", 3, 2, 1, 2, "maincpu", 0xc000);
- add_internal_slot(config, MSX_SLOT_ROM, "desk2", 3, 3, 1, 2, "maincpu", 0x14000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) // 64KB Mapper RAM
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("desk1", 3, 2, 1, 2, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("desk2", 3, 3, 1, 2, "maincpu", 0x14000)
MSX_S1985(config, "s1985", 0);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Victor HC-90 */
@@ -7547,8 +7367,7 @@ ROM_START (victhc90)
ROM_LOAD ("hc90kfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
ROM_END
-void msx2_state::victhc90(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::victhc90)
msx2(config);
// YM2149 (in S-1985)
// FDC: wd2793?, 1 3.5" DSDD drive
@@ -7557,12 +7376,12 @@ void msx2_state::victhc90(machine_config &config)
// 1 Cartridge slot (slot 1 or 2?)
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "firm", 0, 1, 1, 1, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 1, 0, msx_cart, nullptr);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("firm", 0, 1, 1, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 0, 2, 0x10000) // 64KB Mapper RAM
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot", 1, 0)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 0, 1, 1, "maincpu", 0xc000)
MSX_S1985(config, "s1985", 0);
@@ -7571,7 +7390,7 @@ void msx2_state::victhc90(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Victor HC-95 */
@@ -7586,8 +7405,7 @@ ROM_START (victhc95)
ROM_LOAD ("hc95kfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
ROM_END
-void msx2_state::victhc95(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::victhc95)
msx2(config);
// YM2149 (in S-1985)
// FDC: wd2793?, 2 3.5" DSDD drive
@@ -7596,12 +7414,12 @@ void msx2_state::victhc95(machine_config &config)
// 1 Cartridge slot (slot 1 or 2?)
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "firm", 0, 1, 1, 1, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 1, 0, msx_cart, nullptr);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("firm", 0, 1, 1, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 0, 2, 0x10000) // 64KB Mapper RAM
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot", 1, 0)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 0, 1, 1, "maincpu", 0xc000)
MSX_S1985(config, "s1985", 0);
@@ -7610,7 +7428,7 @@ void msx2_state::victhc95(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Victor HC-95A */
@@ -7625,8 +7443,7 @@ ROM_START (victhc95a)
ROM_LOAD ("hc95akfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
ROM_END
-void msx2_state::victhc95a(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::victhc95a)
msx2(config);
// YM2149 (in S-1985)
// FDC: wd2793?, 2 3.5" DSDD drive
@@ -7636,12 +7453,12 @@ void msx2_state::victhc95a(machine_config &config)
// S-1985 MSX Engine
// V9958 VDP
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "firm", 0, 1, 1, 1, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x40000); // 256KB Mapper RAM
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 1, 0, msx_cart, nullptr);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("firm", 0, 1, 1, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 0, 2, 0x40000) // 256KB Mapper RAM
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot", 1, 0)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 0, 1, 1, "maincpu", 0xc000)
MSX_S1985(config, "s1985", 0);
@@ -7650,7 +7467,7 @@ void msx2_state::victhc95a(machine_config &config)
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Yamaha CX7M */
@@ -7660,22 +7477,22 @@ ROM_START (cx7m)
ROM_LOAD ("cx7mext.rom", 0x8000, 0x4000, CRC(66237ecf) SHA1(5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02))
ROM_END
-void msx2_state::cx7m(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::cx7m)
msx2_pal(config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64KB Mapper RAM */
- add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 3, msx_yamaha_60pin, "sfg05");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_YAMAHA_EXPANSION("expansion", 3, 3, "sfg05")
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Yamaha CX7M/128 */
@@ -7686,23 +7503,23 @@ ROM_START (cx7m128)
ROM_LOAD ("yrm502.rom", 0xc000, 0x4000, CRC(51f7ddd1) SHA1(2a4b4a4657e3077df8a88f98210b76883d3702b1))
ROM_END
-void msx2_state::cx7m128(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::cx7m128)
msx2_pal(config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "yrm502", 3, 1, 1, 1, "maincpu", 0xc000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80); /* 128KB Mapper RAM */
- add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 3, msx_yamaha_60pin, "sfg05");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("yrm502", 3, 1, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) /* 128KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_YAMAHA_EXPANSION("expansion", 3, 3, "sfg05")
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Yamaha YIS-503 III R */
@@ -7714,8 +7531,7 @@ ROM_START (y503iiir)
ROM_LOAD ("yis503iiirnet.rom", 0x10000, 33121, CRC(b10fb61c) SHA1(af2b7004a8888d7a72eee937783fccaca0f38621)) // Very odd size for a rom...
ROM_END
-void msx2_state::y503iiir(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::y503iiir)
msx2_pal(config);
// YM2149 (in S-3527)
// FDC: wd2793?, 1 3.5" DSDD drive
@@ -7723,20 +7539,20 @@ void msx2_state::y503iiir(machine_config &config)
// Networking builtin
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "cpm", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 128KB Mapper RAM
- add_internal_slot(config, MSX_SLOT_ROM, "net", 3, 3, 0, 3, "maincpu", 0x10000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("cpm", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) // 128KB Mapper RAM
+ MCFG_MSX_LAYOUT_ROM("net", 3, 3, 0, 3, "maincpu", 0x10000)
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Yamaha YIS-503 III R Estonian */
@@ -7748,8 +7564,7 @@ ROM_START (y503iiire)
ROM_LOAD ("yis503iiirenet.rom", 0x10000, 33121, CRC(b10fb61c) SHA1(af2b7004a8888d7a72eee937783fccaca0f38621)) // Very odd size for a rom...
ROM_END
-void msx2_state::y503iiire(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::y503iiire)
msx2_pal(config);
// YM2149 (in S-3527)
// FDC: wd2793?, 1 3.5" DSDD drive
@@ -7757,20 +7572,20 @@ void msx2_state::y503iiire(machine_config &config)
// Networking builtin
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "cpm", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 128KB Mapper RAM
- add_internal_slot(config, MSX_SLOT_ROM, "net", 3, 3, 0, 3, "maincpu", 0x10000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("cpm", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) // 128KB Mapper RAM
+ MCFG_MSX_LAYOUT_ROM("net", 3, 3, 0, 3, "maincpu", 0x10000)
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Yamaha YIS604 */
@@ -7783,23 +7598,22 @@ ROM_START (yis60464)
ROM_LOAD ("yis604kfn.rom", 0x0000, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
ROM_END
-void msx2_state::yis60464(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::yis60464)
msx2(config);
// YM2149 (in S-3527)
// FDC: None, 0 drives
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
- add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 3, msx_yamaha_60pin, "sfg05");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x10000) // 64KB Mapper RAM
+ MCFG_MSX_LAYOUT_YAMAHA_EXPANSION("expansion", 3, 3, "sfg05")
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Yamaha YIS604/128 */
@@ -7813,24 +7627,23 @@ ROM_START (yis604)
ROM_LOAD ("yis604kfn.rom", 0x0000, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
ROM_END
-void msx2_state::yis604(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::yis604)
msx2(config);
// YM2149 (in S-3527)
// FDC: None, 0 drives
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "yrm502", 3, 1, 1, 1, "maincpu", 0xc000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
- add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 3, msx_yamaha_60pin, "sfg05");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("yrm502", 3, 1, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x10000) // 64KB Mapper RAM
+ MCFG_MSX_LAYOUT_YAMAHA_EXPANSION("expansion", 3, 3, "sfg05")
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Yamaha YIS-805/128 */
@@ -7845,29 +7658,28 @@ ROM_START (y805128)
ROM_LOAD ("yis805128kfn.rom", 0x0000, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
ROM_END
-void msx2_state::y805128(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::y805128)
msx2(config);
// YM2149 (in S-3527)
// FDC: wd2793?, 1 3.5" DSDD drive
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_ROM, "yrm502", 3, 1, 1, 1, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 128KB Mapper RAM
- add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 3, msx_yamaha_60pin, "sfg05");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("yrm502", 3, 1, 1, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) // 128KB Mapper RAM
+ MCFG_MSX_LAYOUT_YAMAHA_EXPANSION("expansion", 3, 3, "sfg05")
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Yamaha YIS-805R2/128 */
@@ -7880,8 +7692,7 @@ ROM_START (y805128r2)
ROM_LOAD ("yis805128r2paint.rom", 0x18000, 0x10000, CRC(1bda68a3) SHA1(7fd2a28c4fdaeb140f3c8c8fb90271b1472c97b9))
ROM_END
-void msx2_state::y805128r2(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::y805128r2)
msx2_pal(config);
// YM2149 (in S-3527)
// FDC: wd2793?, 1 3.5" DSDD drive
@@ -7889,21 +7700,21 @@ void msx2_state::y805128r2(machine_config &config)
// S-3527 MSX Engine
// Networking built in
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "paint", 3, 0, 0, 4, "maincpu", 0x18000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 128KB Mapper RAM
- add_internal_slot(config, MSX_SLOT_ROM, "net", 3, 3, 0, 2, "maincpu", 0x10000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("paint", 3, 0, 0, 4, "maincpu", 0x18000)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 1, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) // 128KB Mapper RAM
+ MCFG_MSX_LAYOUT_ROM("net", 3, 3, 0, 2, "maincpu", 0x10000)
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Yamaha YIS-805R2/128 Estonian */
@@ -7916,8 +7727,7 @@ ROM_START (y805128r2e)
ROM_LOAD ("yis805128r2epaint.rom", 0x18000, 0x10000, CRC(1bda68a3) SHA1(7fd2a28c4fdaeb140f3c8c8fb90271b1472c97b9))
ROM_END
-void msx2_state::y805128r2e(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::y805128r2e)
msx2_pal(config);
// YM2149 (in S-3527)
// FDC: wd2793?, 1 3.5" DSDD drive
@@ -7925,21 +7735,21 @@ void msx2_state::y805128r2e(machine_config &config)
// S-3527 MSX Engine
// Networking built in
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "paint", 3, 0, 0, 4, "maincpu", 0x18000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 128KB Mapper RAM
- add_internal_slot(config, MSX_SLOT_ROM, "net", 3, 3, 0, 2, "maincpu", 0x10000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("paint", 3, 0, 0, 4, "maincpu", 0x18000)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 1, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x20000) // 128KB Mapper RAM
+ MCFG_MSX_LAYOUT_ROM("net", 3, 3, 0, 2, "maincpu", 0x10000)
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2 - Yamaha YIS-805/256 */
@@ -7954,29 +7764,28 @@ ROM_START (y805256)
ROM_LOAD ("yis805256kfn.rom", 0x0000, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
ROM_END
-void msx2_state::y805256(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::y805256)
msx2(config);
// YM2149 (in S-3527)
// FDC: wd2793?, 1 3.5" DSDD drive
// 2 Cartridge slots
// S-3527 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_ROM, "yrm502", 3, 1, 1, 1, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x40000); // 256KB Mapper RAM
- add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 3, msx_yamaha_60pin, "sfg05");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_ROM("ext", 0, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("yrm502", 3, 1, 1, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x40000) // 256KB Mapper RAM
+ MCFG_MSX_LAYOUT_YAMAHA_EXPANSION("expansion", 3, 3, "sfg05")
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/******************************** MSX 2+ **********************************/
@@ -7991,21 +7800,20 @@ ROM_START (expert3i )
ROM_LOAD ("ide240a.rom", 0x14000, 0x10000, CRC(7adf857f) SHA1(8a919dbeed92db8c06a611279efaed8552810239))
ROM_END
-void msx2_state::expert3i(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::expert3i)
msx2p(config);
// AY8910/YM2149?
// FDC: wd2793, 1 or 2? drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 1, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 1, 1, 1, 1, "maincpu", 0x10000).set_ym2413_tag("ym2413");
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 1, 2, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_ROM, "ide", 1, 3, 0, 4, "maincpu", 0x14000); /* IDE hardware needs to be emulated */
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 2, 0, 0, 4).set_total_size(0x40000); /* 256KB?? Mapper RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 1, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_MUSIC("mus", 1, 1, 1, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 1, 2, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("ide", 1, 3, 0, 4, "maincpu", 0x14000) /* IDE hardware needs to be emulated */
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 2, 0, 0x40000) /* 256KB?? Mapper RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx_ym2413(config);
@@ -8014,7 +7822,7 @@ void msx2_state::expert3i(machine_config &config)
msx2p_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2+ - Ciel Expert 3 Turbo */
@@ -8028,22 +7836,21 @@ ROM_START (expert3t )
ROM_LOAD ("turbo.rom", 0x14000, 0x4000, CRC(ab528416) SHA1(d468604269ae7664ac739ea9f922a05e14ffa3d1))
ROM_END
-void msx2_state::expert3t(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::expert3t)
msx2p(config);
// AY8910
// FDC: wd2793?, 1 or 2? drives
// 4 Cartridge/Expansion slots?
// FM/YM2413 built-in
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 1, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 1, 1, 1, 1, "maincpu", 0x10000).set_ym2413_tag("ym2413");
- add_internal_slot(config, MSX_SLOT_ROM, "turbo", 1, 2, 1, 1, "maincpu", 0x14000); /* Turbo hardware needs to be emulated */
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 1, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 2, 0, 0, 4).set_total_size(0x40000); /* 256KB Mapper RAM */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 1, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_MUSIC("mus", 1, 1, 1, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_ROM("turbo", 1, 2, 1, 1, "maincpu", 0x14000) /* Turbo hardware needs to be emulated */
+ MCFG_MSX_LAYOUT_DISK1("disk", 1, 3, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 2, 0, 0x40000) /* 256KB Mapper RAM */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
msx_ym2413(config);
@@ -8052,7 +7859,7 @@ void msx2_state::expert3t(machine_config &config)
msx2p_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2+ - Gradiente Expert AC88+ */
@@ -8065,28 +7872,27 @@ ROM_START (expertac)
ROM_LOAD ("xbasic2.rom", 0x14000, 0x4000, CRC(2825b1a0) SHA1(47370bec7ca1f0615a54eda548b07fbc0c7ef398))
ROM_END
-void msx2_state::expertac(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::expertac)
msx2p(config);
// AY8910/YM2149?
// FDC: wd2793?, 1 or 2? drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000); /* 64KB Mapper RAM?? */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "asm", 3, 1, 1, 1, "maincpu", 0x10000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 2, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_ROM, "xbasic", 3, 3, 1, 1, "maincpu", 0x14000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB Mapper RAM?? */
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("asm", 3, 1, 1, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 2, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("xbasic", 3, 3, 1, 1, "maincpu", 0x14000)
msx_wd2793_force_ready(config);
msx_1_35_dd_drive(config);
msx2p_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2+ - Gradiente Expert DDX+ */
@@ -8099,20 +7905,19 @@ ROM_START (expertdx)
ROM_LOAD ("kanji.rom", 0x14000, 0x8000, CRC(b4fc574d) SHA1(dcc3a67732aa01c4f2ee8d1ad886444a4dbafe06))
ROM_END
-void msx2_state::expertdx(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::expertdx)
msx2p(config);
// AY8910/YM2149?
// FDC: tc8566af, 1 3.5" DSDD drive?
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 1, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "xbasic", 1, 2, 1, 1, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_DISK3, "disk", 1, 3, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 2, 0, 0, 4).set_total_size(0x10000); /* 64KB Mapper RAM?? */
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 1, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("xbasic", 1, 2, 1, 1, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_DISK3("disk", 1, 3, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 2, 0, 0x10000) /* 64KB Mapper RAM?? */
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 3, 0)
/* Kanji? */
msx_tc8566af(config);
@@ -8120,7 +7925,7 @@ void msx2_state::expertdx(machine_config &config)
msx2p_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2+ - Panasonic FS-A1FX */
@@ -8136,21 +7941,21 @@ ROM_START (fsa1fx)
ROM_LOAD ("a1fxkfn.rom", 0, 0x20000, CRC(b244f6cf) SHA1(e0e99cd91e88ce2676445663f832c835d74d6fd4))
ROM_END
-void msx2_state::fsa1fx(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fsa1fx)
msx2p(config);
// AY8910/YM2149?
// FDC: tc8566af, 1 3.5" DSDD drive
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_ROM, "cock", 3, 3, 1, 2, "maincpu", 0x18000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_DISK3("disk", 3, 2, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("cock", 3, 3, 1, 2, "maincpu", 0x18000)
msx_matsushita_device &matsushita(MSX_MATSUSHITA(config, "matsushita", 0));
matsushita.turbo_callback().set(FUNC(msx2_state::turbo_w));
@@ -8162,7 +7967,7 @@ void msx2_state::fsa1fx(machine_config &config)
msx2p_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2+ - Panasonic FS-A1WSX */
@@ -8179,8 +7984,7 @@ ROM_START (fsa1wsx)
ROM_LOAD ("a1wskfn.rom", 0, 0x40000, CRC(1f6406fb) SHA1(5aff2d9b6efc723bc395b0f96f0adfa83cc54a49))
ROM_END
-void msx2_state::fsa1wsx(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fsa1wsx)
msx2p(config);
// AY8910/YM2149?
// FDC: tc8566af, 1 3.5" DSDD drive
@@ -8188,15 +7992,16 @@ void msx2_state::fsa1wsx(machine_config &config)
// FM built-in
// No cassette port
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 0, 2, 1, 1, "maincpu", 0x18000).set_ym2413_tag("ym2413");
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_PANASONIC08, "firm", 3, 3, 0, 4, "maincpu", 0x1c000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_MUSIC("mus", 0, 2, 1, 1, "maincpu", 0x18000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_DISK3("disk", 3, 2, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_PANASONIC08("firm", 3, 3, 0, 4, "maincpu", 0x1c000)
msx_matsushita_device &matsushita(MSX_MATSUSHITA(config, "matsushita", 0));
matsushita.turbo_callback().set(FUNC(msx2_state::turbo_w));
@@ -8210,7 +8015,7 @@ void msx2_state::fsa1wsx(machine_config &config)
msx2p_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2+ - Panasonic FS-A1WX */
@@ -8227,8 +8032,7 @@ ROM_START (fsa1wx)
ROM_LOAD ("a1wxkfn.rom", 0, 0x40000, CRC(1f6406fb) SHA1(5aff2d9b6efc723bc395b0f96f0adfa83cc54a49))
ROM_END
-void msx2_state::fsa1wx(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fsa1wx)
msx2p(config);
// AY8910/YM2149?
// FDC: tc8566af, 1 3.5" DSDD drive
@@ -8236,15 +8040,16 @@ void msx2_state::fsa1wx(machine_config &config)
// FM built-in
// MSX Engine T9769A
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 0, 2, 1, 1, "maincpu", 0x18000).set_ym2413_tag("ym2413");
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_PANASONIC08, "firm", 3, 3, 0, 4, "maincpu", 0x1c000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_MUSIC("mus", 0, 2, 1, 1, "maincpu", 0x18000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_DISK3("disk", 3, 2, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_PANASONIC08("firm", 3, 3, 0, 4, "maincpu", 0x1c000)
msx_matsushita_device &matsushita(MSX_MATSUSHITA(config, "matsushita", 0));
matsushita.turbo_callback().set(FUNC(msx2_state::turbo_w));
@@ -8258,7 +8063,7 @@ void msx2_state::fsa1wx(machine_config &config)
msx2p_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2+ - Panasonic FS-A1WX (a) */
ROM_START (fsa1wxa)
@@ -8274,23 +8079,23 @@ ROM_START (fsa1wxa)
ROM_LOAD ("a1wxkfn.rom", 0, 0x40000, CRC(1f6406fb) SHA1(5aff2d9b6efc723bc395b0f96f0adfa83cc54a49))
ROM_END
-void msx2_state::fsa1wxa(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fsa1wxa)
msx2p(config);
// AY8910/YM2149?
// FDC: tc8566af, 1 3.5" DSDD drive
// 2 Cartridge slots?
// FM built-in
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 0, 2, 1, 1, "maincpu", 0x18000).set_ym2413_tag("ym2413");
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_PANASONIC08, "firm", 3, 3, 0, 4, "maincpu", 0x1c000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_MUSIC("mus", 0, 2, 1, 1, "maincpu", 0x18000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_DISK3("disk", 3, 2, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_PANASONIC08("firm", 3, 3, 0, 4, "maincpu", 0x1c000)
msx_matsushita_device &matsushita(MSX_MATSUSHITA(config, "matsushita", 0));
matsushita.turbo_callback().set(FUNC(msx2_state::turbo_w));
@@ -8304,7 +8109,7 @@ void msx2_state::fsa1wxa(machine_config &config)
msx2p_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2+ - Sanyo Wavy PHC-35J */
@@ -8318,24 +8123,24 @@ ROM_START (phc35j)
ROM_LOAD ("35jkfn.rom", 0, 0x20000, CRC(c9651b32) SHA1(84a645becec0a25d3ab7a909cde1b242699a8662))
ROM_END
-void msx2_state::phc35j(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::phc35j)
msx2p(config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0xc000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 1, 1, 2, "maincpu", 0xc000)
MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0xff);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2+ - Sanyo Wavy PHC-70FD1 */
@@ -8352,23 +8157,23 @@ ROM_START (phc70fd)
ROM_LOAD ("70fdkfn.rom", 0, 0x20000, CRC(c9651b32) SHA1(84a645becec0a25d3ab7a909cde1b242699a8662))
ROM_END
-void msx2_state::phc70fd(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::phc70fd)
msx2p(config);
// AY8910/YM2149?
// FDC: tc8566af, 1 3.5" DSDD drive
// 2 Cartridge slots
// FM built-in
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 3, 3, 1, 1, "maincpu", 0x18000).set_ym2413_tag("ym2413");
- add_internal_slot(config, MSX_SLOT_ROM, "bas", 3, 3, 2, 1, "maincpu", 0x1c000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_DISK3("disk", 3, 2, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_MUSIC("mus", 3, 3, 1, 1, "maincpu", 0x18000)
+ MCFG_MSX_LAYOUT_ROM("bas", 3, 3, 2, 1, "maincpu", 0x1c000)
MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0xff);
@@ -8379,7 +8184,7 @@ void msx2_state::phc70fd(machine_config &config)
msx2p_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2+ - Sanyo Wavy PHC-70FD2 */
ROM_START (phc70fd2)
@@ -8395,23 +8200,23 @@ ROM_START (phc70fd2)
ROM_LOAD ("70f2kfn.rom", 0, 0x40000, CRC(9a850db9) SHA1(bcdb4dae303dfe5234f372d70a5e0271d3202c36))
ROM_END
-void msx2_state::phc70fd2(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::phc70fd2)
msx2p(config);
// AY8910/YM2149?
// FDC: tc8566af, 2 3.5" DSDD drives
// 2 Cartridge slots
// FM built-in
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 3, 3, 1, 1, "maincpu", 0x18000).set_ym2413_tag("ym2413");
- add_internal_slot(config, MSX_SLOT_ROM, "bas", 3, 3, 2, 1, "maincpu", 0x1c000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_DISK3("disk", 3, 2, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_MUSIC("mus", 3, 3, 1, 1, "maincpu", 0x18000)
+ MCFG_MSX_LAYOUT_ROM("bas", 3, 3, 2, 1, "maincpu", 0x1c000)
MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0xff);
@@ -8422,7 +8227,7 @@ void msx2_state::phc70fd2(machine_config &config)
msx2p_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2+ - Sony HB-F1XDJ */
@@ -8439,8 +8244,7 @@ ROM_START (hbf1xdj)
ROM_LOAD ("f1xjkfn.rom", 0, 0x40000, CRC(7016dfd0) SHA1(218d91eb6df2823c924d3774a9f455492a10aecb))
ROM_END
-void msx2_state::hbf1xdj(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf1xdj)
msx2p(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: wd2793, 1 3.5" DSDD drive
@@ -8448,15 +8252,16 @@ void msx2_state::hbf1xdj(machine_config &config)
// FM built-in
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_SONY08, "firm", 0, 3, 0, 4, "maincpu", 0x1c000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 2, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 3, 3, 1, 1, "maincpu", 0x18000).set_ym2413_tag("ym2413");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_SONY08("firm", 0, 3, 0, 4, "maincpu", 0x1c000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 2, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_MUSIC("mus", 3, 3, 1, 1, "maincpu", 0x18000)
MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0x00);
@@ -8469,7 +8274,7 @@ void msx2_state::hbf1xdj(machine_config &config)
msx2p_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2+ - Sony HB-F1XV */
@@ -8486,8 +8291,7 @@ ROM_START (hbf1xv)
ROM_LOAD ("f1xvkfn.rom", 0, 0x40000, CRC(7016dfd0) SHA1(218d91eb6df2823c924d3774a9f455492a10aecb))
ROM_END
-void msx2_state::hbf1xv(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf1xv)
msx2p(config);
// YM2149 (in S-1985 MSX Engine)
// FDC: wd2793, 1 3.5" DSDD drives
@@ -8495,15 +8299,16 @@ void msx2_state::hbf1xv(machine_config &config)
// FM built-in
// S-1985 MSX Engine
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_SONY08, "firm", 0, 3, 0, 4, "maincpu", 0x1c000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80); /* 64KB Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 2, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 3, 3, 1, 1, "maincpu", 0x18000).set_ym2413_tag("ym2413");
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_SONY08("firm", 0, 3, 0, 4, "maincpu", 0x1c000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x10000) /* 64KB Mapper RAM */
+ MCFG_MSX_RAMIO_SET_BITS(0x80)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_DISK1("disk", 3, 2, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_MUSIC("mus", 3, 3, 1, 1, "maincpu", 0x18000)
MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0x00);
@@ -8516,7 +8321,7 @@ void msx2_state::hbf1xv(machine_config &config)
msx2p_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX2+ - Sony HB-F9S+ */
@@ -8528,25 +8333,24 @@ ROM_START (hbf9sp)
ROM_LOAD ("f9spfrm2.rom", 0x10000, 0x8000, CRC(ea97069f) SHA1(2d1880d1f5a6944fcb1b198b997a3d90ecd1903d))
ROM_END
-void msx2_state::hbf9sp(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::hbf9sp)
msx2p(config);
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots?
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "firm1", 3, 0, 1, 1, "maincpu", 0xc000);
- add_internal_slot(config, MSX_SLOT_ROM, "firm2", 3, 1, 1, 2, "maincpu", 0x10000);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000); /* 64KB?? Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 0, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("firm1", 3, 0, 1, 1, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("firm2", 3, 1, 1, 2, "maincpu", 0x10000)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 2, 0x10000) /* 64KB?? Mapper RAM */
MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0x00);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX Turbo-R - Panasonic FS-A1GT */
@@ -8562,8 +8366,7 @@ ROM_START (fsa1gt)
ROM_LOAD ("a1gtfirm.rom", 0x6c000, 0x400000, CRC(feefeadc) SHA1(e779c338eb91a7dea3ff75f3fde76b8af22c4a3a))
ROM_END
-void msx2_state::fsa1gt(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fsa1gt)
msx2(config);
// AY8910/YM2149?
// FDC: tc8566af, 1 3.5" DSDD drive
@@ -8571,16 +8374,16 @@ void msx2_state::fsa1gt(machine_config &config)
// FM built-in
// MIDI
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 0, 2, 1, 1, "maincpu", 0x24000).set_ym2413_tag("ym2413");
- add_internal_slot(config, MSX_SLOT_ROM, "opt", 0, 3, 1, 1, "maincpu", 0x28000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x20000); /* 128KB?? Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x1c000);
- add_internal_slot(config, MSX_SLOT_DISK4, "dos", 3, 2, 1, 3, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_ROM, "firm", 3, 3, 0, 4, "maincpu", 0x6c000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_MUSIC("mus", 0, 2, 1, 1, "maincpu", 0x24000)
+ MCFG_MSX_LAYOUT_ROM("opt", 0, 3, 1, 1, "maincpu", 0x28000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x20000) /* 128KB?? Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 1, 1, 2, "maincpu", 0x1c000)
+ MCFG_MSX_LAYOUT_DISK4("dos", 3, 2, 1, 3, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("firm", 3, 3, 0, 4, "maincpu", 0x6c000)
MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0x00);
@@ -8591,7 +8394,7 @@ void msx2_state::fsa1gt(machine_config &config)
msxr_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* MSX Turbo-R - Panasonic FS-A1ST */
@@ -8607,24 +8410,23 @@ ROM_START (fsa1st)
ROM_LOAD ("a1stfirm.rom", 0x6c000, 0x400000, CRC(139ac99c) SHA1(c212b11fda13f83dafed688c54d098e7e47ab225))
ROM_END
-void msx2_state::fsa1st(machine_config &config)
-{
+MACHINE_CONFIG_START(msx2_state::fsa1st)
msx2(config);
// AY8910/YM2149?
// FDC: tc8566af, 1 3.5" DSDD drive
// 2 Cartridge slots
// FM built-in
- add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
- add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 0, 2, 1, 1, "maincpu", 0x24000).set_ym2413_tag("ym2413");
- add_internal_slot(config, MSX_SLOT_ROM, "opt", 0, 3, 1, 1, "maincpu", 0x28000);
- add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
- add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 1, 0, msx_cart, nullptr);
- add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x20000); /* 128KB?? Mapper RAM */
- add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
- add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x1c000);
- add_internal_slot(config, MSX_SLOT_DISK4, "dos", 3, 2, 1, 3, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
- add_internal_slot(config, MSX_SLOT_ROM, "firm", 3, 3, 0, 4, "maincpu", 0x6c000);
+ MCFG_MSX_LAYOUT_ROM("bios", 0, 0, 0, 2, "maincpu", 0x0000)
+ MCFG_MSX_LAYOUT_MUSIC("mus", 0, 2, 1, 1, "maincpu", 0x24000)
+ MCFG_MSX_LAYOUT_ROM("opt", 0, 3, 1, 1, "maincpu", 0x28000)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot1", 1, 0)
+ MCFG_MSX_LAYOUT_CARTRIDGE("cartslot2", 2, 0)
+ MCFG_MSX_LAYOUT_RAM_MM("ram_mm", 3, 0, 0x20000) /* 128KB?? Mapper RAM */
+ MCFG_MSX_LAYOUT_ROM("ext", 3, 1, 0, 1, "maincpu", 0x8000)
+ MCFG_MSX_LAYOUT_ROM("kdr", 3, 1, 1, 2, "maincpu", 0x1c000)
+ MCFG_MSX_LAYOUT_DISK4("dos", 3, 2, 1, 3, "maincpu", 0xc000)
+ MCFG_MSX_LAYOUT_ROM("firm", 3, 3, 0, 4, "maincpu", 0x6c000)
MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0x00);
@@ -8635,7 +8437,7 @@ void msx2_state::fsa1st(machine_config &config)
msxr_floplist(config);
msx2_cartlist(config);
-}
+MACHINE_CONFIG_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */
diff --git a/src/mame/drivers/mt735.cpp b/src/mame/drivers/mt735.cpp
index c9a2550a648..a8dad4eaca1 100644
--- a/src/mame/drivers/mt735.cpp
+++ b/src/mame/drivers/mt735.cpp
@@ -64,11 +64,10 @@ void mt735_state::mt735_map(address_map &map)
static INPUT_PORTS_START( mt735 )
INPUT_PORTS_END
-void mt735_state::mt735(machine_config &config)
-{
- M68000(config, m_cpu, XTAL(48'000'000)/6);
- m_cpu->set_addrmap(AS_PROGRAM, &mt735_state::mt735_map);
-}
+MACHINE_CONFIG_START(mt735_state::mt735)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(48'000'000)/6)
+ MCFG_DEVICE_PROGRAM_MAP(mt735_map)
+MACHINE_CONFIG_END
ROM_START( mt735 )
ROM_REGION( 0x40000, "maincpu", 0 )
diff --git a/src/mame/drivers/mtx.cpp b/src/mame/drivers/mtx.cpp
index e322d4ab9c2..72b4d4f84b9 100644
--- a/src/mame/drivers/mtx.cpp
+++ b/src/mame/drivers/mtx.cpp
@@ -11,7 +11,8 @@
TODO:
- cassette
- - FDX floppy
+ - cartridges
+ - SDX/FDX floppy
- HDX hard disk
- HRX high resolution graphics
- "Silicon" disks
@@ -23,8 +24,14 @@
#include "includes/mtx.h"
#include "bus/centronics/ctronics.h"
+#include "cpu/z80/z80.h"
+#include "machine/z80daisy.h"
#include "imagedev/cassette.h"
#include "imagedev/snapquik.h"
+#include "machine/ram.h"
+#include "machine/z80ctc.h"
+#include "machine/z80dart.h"
+#include "sound/sn76496.h"
#include "video/tms9928a.h"
#include "softlist.h"
@@ -51,13 +58,13 @@ void mtx_state::mtx_io(address_map &map)
{
map.global_mask(0xff);
map(0x00, 0x00).rw(FUNC(mtx_state::mtx_strobe_r), FUNC(mtx_state::mtx_bankswitch_w));
- map(0x01, 0x01).rw("tms9929a", FUNC(tms9929a_device::vram_read), FUNC(tms9929a_device::vram_write));
- map(0x02, 0x02).rw("tms9929a", FUNC(tms9929a_device::register_read), FUNC(tms9929a_device::register_write));
+ map(0x01, 0x01).rw("tms9929a", FUNC(tms9929a_device::vram_r), FUNC(tms9929a_device::vram_w));
+ map(0x02, 0x02).rw("tms9929a", FUNC(tms9929a_device::register_r), FUNC(tms9929a_device::register_w));
map(0x03, 0x03).rw(FUNC(mtx_state::mtx_sound_strobe_r), FUNC(mtx_state::mtx_cst_w));
map(0x04, 0x04).r(FUNC(mtx_state::mtx_prt_r)).w("cent_data_out", FUNC(output_latch_device::bus_w));
map(0x05, 0x05).rw(FUNC(mtx_state::mtx_key_lo_r), FUNC(mtx_state::mtx_sense_w));
map(0x06, 0x06).rw(FUNC(mtx_state::mtx_key_hi_r), FUNC(mtx_state::mtx_sound_latch_w));
- // map(0x07, 0x07) PIO
+// map(0x07, 0x07) PIO
map(0x08, 0x0b).rw(m_z80ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
map(0x1f, 0x1f).w(FUNC(mtx_state::mtx_cst_motor_w));
map(0x30, 0x31).w(FUNC(mtx_state::hrx_address_w));
@@ -195,12 +202,6 @@ static INPUT_PORTS_START( mtx512 )
PORT_DIPSETTING(0x08, DEF_STR(Off) )
PORT_DIPSETTING(0x00, DEF_STR(On) )
PORT_BIT( 0xf3, IP_ACTIVE_LOW, IPT_UNUSED)
-
- PORT_START("keyboard_rom")
- PORT_CONFNAME(0x03, 0x00, "Keyboard ROM")
- PORT_CONFSETTING(0x00, "None")
- PORT_CONFSETTING(0x01, "Denmark")
- PORT_CONFSETTING(0x02, "Finland")
INPUT_PORTS_END
/***************************************************************************
@@ -242,7 +243,7 @@ WRITE_LINE_MEMBER(mtx_state::ctc_trg2_w)
static const z80_daisy_config mtx_daisy_chain[] =
{
- { "z80ctc" },
+ { Z80CTC_TAG },
{ nullptr }
};
@@ -252,8 +253,8 @@ static const z80_daisy_config mtx_daisy_chain[] =
static const z80_daisy_config rs128_daisy_chain[] =
{
- { "z80ctc" },
- { "z80dart" },
+ { Z80CTC_TAG },
+ { Z80DART_TAG },
{ nullptr }
};
@@ -279,19 +280,22 @@ WRITE_LINE_MEMBER(mtx_state::mtx_tms9929a_interrupt)
***************************************************************************/
/*-------------------------------------------------
- machine_config( mtx512 )
+ MACHINE_CONFIG_START( mtx512 )
-------------------------------------------------*/
-void mtx_state::mtx512(machine_config &config)
-{
+MACHINE_CONFIG_START(mtx_state::mtx512)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4_MHz_XTAL);
+ Z80(config, m_maincpu, XTAL(4'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &mtx_state::mtx_mem);
m_maincpu->set_addrmap(AS_IO, &mtx_state::mtx_io);
m_maincpu->set_daisy_config(mtx_daisy_chain);
+ MCFG_MACHINE_START_OVERRIDE(mtx_state,mtx512)
+ MCFG_MACHINE_RESET_OVERRIDE(mtx_state,mtx512)
+
/* video hardware */
- tms9929a_device &vdp(TMS9929A(config, "tms9929a", 10.6875_MHz_XTAL));
+ tms9929a_device &vdp(TMS9929A(config, "tms9929a", XTAL(10'738'635)));
vdp.set_screen("screen");
vdp.set_vram_size(0x4000);
vdp.int_callback().set(FUNC(mtx_state::mtx_tms9929a_interrupt));
@@ -299,61 +303,50 @@ void mtx_state::mtx512(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489A(config, m_sn, 4_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD(SN76489A_TAG, SN76489A, XTAL(4'000'000))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* devices */
- Z80CTC(config, m_z80ctc, 4_MHz_XTAL);
+ Z80CTC(config, m_z80ctc, XTAL(4'000'000));
m_z80ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
m_z80ctc->zc_callback<1>().set(FUNC(mtx_state::ctc_trg1_w));
m_z80ctc->zc_callback<2>().set(FUNC(mtx_state::ctc_trg2_w));
- TIMER(config, "z80ctc_timer").configure_periodic(FUNC(mtx_state::ctc_tick), attotime::from_hz(4_MHz_XTAL/13));
-
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(mtx_state::write_centronics_busy));
- m_centronics->fault_handler().set(FUNC(mtx_state::write_centronics_fault));
- m_centronics->perror_handler().set(FUNC(mtx_state::write_centronics_perror));
- m_centronics->select_handler().set(FUNC(mtx_state::write_centronics_select));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("z80ctc_timer", mtx_state, ctc_tick, attotime::from_hz(XTAL(4'000'000)/13))
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, mtx_state, write_centronics_busy))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, mtx_state, write_centronics_fault))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, mtx_state, write_centronics_perror))
+ MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, mtx_state, write_centronics_select))
- snapshot_image_device &snapshot(SNAPSHOT(config, "snapshot"));
- snapshot.set_handler(snapquick_load_delegate(&SNAPSHOT_LOAD_NAME(mtx_state, mtx), this), "mtx", attotime::from_seconds(1));
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(mtx_state, mtx), this), "run", attotime::from_seconds(1));
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED);
- m_cassette->set_interface("mtx_cass");
+ MCFG_SNAPSHOT_ADD("snapshot", mtx_state, mtx, "mtx", 1)
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
+ MCFG_CASSETTE_INTERFACE("mtx_cass")
- TIMER(config, "cassette_timer").configure_periodic(FUNC(mtx_state::cassette_tick), attotime::from_hz(44100));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("cassette_timer", mtx_state, cassette_tick, attotime::from_hz(44100))
/* internal ram */
RAM(config, m_ram).set_default_size("64K").set_extra_options("96K,128K,192K,320K,448K,512K");
/* rom extension board */
- GENERIC_SOCKET(config, m_extrom, generic_plain_slot, "mtx_rom", "bin,rom");
- m_extrom->set_device_load(device_image_load_delegate(&mtx_state::device_image_load_extrom_load, this));
-
- /* rs232 board with disk drive bus */
- MTX_EXP_SLOT(config, m_exp, mtx_expansion_devices, nullptr);
- m_exp->set_program_space(m_maincpu, AS_PROGRAM);
- m_exp->set_io_space(m_maincpu, AS_IO);
- m_exp->int_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI);
- m_exp->busreq_handler().set_inputline(m_maincpu, Z80_INPUT_LINE_BUSRQ);
+ MCFG_GENERIC_SOCKET_ADD("extrom", generic_plain_slot, "mtx_rom")
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
+ MCFG_GENERIC_LOAD(mtx_state, extrom_load)
/* cartridge slot */
- GENERIC_CARTSLOT(config, m_rompak, generic_plain_slot, "mtx_cart", "bin,rom");
- m_rompak->set_device_load(device_image_load_delegate(&mtx_state::device_image_load_rompak_load, this));
+ MCFG_GENERIC_SOCKET_ADD("rompak", generic_plain_slot, "mtx_cart")
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
+ MCFG_GENERIC_LOAD(mtx_state, rompak_load)
/* software lists */
- SOFTWARE_LIST(config, "cass_list").set_original("mtx_cass");
- SOFTWARE_LIST(config, "flop_list").set_original("mtx_flop");
- SOFTWARE_LIST(config, "cart_list").set_original("mtx_cart");
- SOFTWARE_LIST(config, "rom_list").set_original("mtx_rom");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "mtx_cass")
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "mtx_cart")
+ MCFG_SOFTWARE_LIST_ADD("rom_list", "mtx_rom")
+MACHINE_CONFIG_END
void mtx_state::mtx500(machine_config &config)
{
@@ -364,7 +357,7 @@ void mtx_state::mtx500(machine_config &config)
}
/*-------------------------------------------------
- machine_config( rs128 )
+ MACHINE_CONFIG_START( rs128 )
-------------------------------------------------*/
void mtx_state::rs128(machine_config &config)
@@ -376,7 +369,7 @@ void mtx_state::rs128(machine_config &config)
m_maincpu->set_daisy_config(rs128_daisy_chain);
/* devices */
- Z80DART(config, m_z80dart, 4_MHz_XTAL);
+ Z80DART(config, m_z80dart, XTAL(4'000'000));
m_z80dart->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
/* internal ram */
@@ -389,23 +382,30 @@ void mtx_state::rs128(machine_config &config)
ROM_START( mtx512 )
ROM_REGION( 0x02000, "user1", 0 )
- ROM_SYSTEM_BIOS( 0, "uk", "UK" )
- ROMX_LOAD( "mtx1a.9h", 0x0000, 0x2000, CRC(9ca858cc) SHA1(3804503a58f0bcdea96bb6488833782ebd03976d), ROM_BIOS(0) ) /* OS */
- ROM_SYSTEM_BIOS( 1, "de", "German" )
- ROMX_LOAD( "mtx2a.9h", 0x0000, 0x2000, CRC(1c7bbe98) SHA1(8c950051b830e5e0c41072d6bd893151acd3839d), ROM_BIOS(1) ) /* OS */
+ ROM_LOAD( "osrom", 0x0000, 0x2000, CRC(9ca858cc) SHA1(3804503a58f0bcdea96bb6488833782ebd03976d) )
ROM_REGION( 0x10000, "user2", ROMREGION_ERASEFF )
- ROMX_LOAD( "mtx1b.8h", 0x0000, 0x2000, CRC(87b4e59c) SHA1(c49782a82a7f068c1195cd967882ba9edd546eaf), ROM_BIOS(0) ) /* BASIC */
- ROMX_LOAD( "mtx1c.10h", 0x2000, 0x2000, CRC(9d7538c3) SHA1(d1882c4ea61a68b1715bd634ded5603e18a99c5f), ROM_BIOS(0) ) /* ASSEM */
- ROMX_LOAD( "mtx2b.8h", 0x0000, 0x2000, CRC(599d5b6b) SHA1(3ec1f7f476a21ca3206012ded22198c020b47f7d), ROM_BIOS(1) ) /* BASIC */
- ROMX_LOAD( "mtx1c.10h", 0x2000, 0x2000, CRC(9d7538c3) SHA1(d1882c4ea61a68b1715bd634ded5603e18a99c5f), ROM_BIOS(1) ) /* ASSEM */
+ ROM_LOAD( "basicrom", 0x0000, 0x2000, CRC(87b4e59c) SHA1(c49782a82a7f068c1195cd967882ba9edd546eaf) )
+ ROM_LOAD( "assemrom", 0x2000, 0x2000, CRC(9d7538c3) SHA1(d1882c4ea61a68b1715bd634ded5603e18a99c5f) )
- /* Keyboard PROMs (N82S181N) are piggy-backed on top of the OS ROM, wired to be selected as ROM 7 */
+ /* Keyboard ROMs are piggy-backed on top of the OS ROM, wired to be selected as ROM 7 */
/* Country character sets documented in the Operators Manual are:
U.S.A, France, Germany, England, Denmark, Sweden, Italy, Spain */
- ROM_REGION( 0x4000, "keyboard_rom", 0 )
- ROM_LOAD( "danish.rom", 0x0000, 0x2000, CRC(9c1b3fae) SHA1(82bc021660d88eebcf0c4d3856558ee9acc1c348) )
- ROM_LOAD( "finnish.rom", 0x2000, 0x2000, CRC(9b96cf72) SHA1(b46d1a733e0e635ccdaf4752cc370d793c3b5c55) )
+ ROM_DEFAULT_BIOS("us")
+ ROM_SYSTEM_BIOS( 0, "us", "U.S.A." )
+ ROM_SYSTEM_BIOS( 1, "dk", "Denmark" )
+ ROMX_LOAD( "danish.rom", 0xe000, 0x2000, CRC(9c1b3fae) SHA1(82bc021660d88eebcf0c4d3856558ee9acc1c348), ROM_BIOS(1) )
+ ROM_SYSTEM_BIOS( 2, "fi", "Finland" )
+ ROMX_LOAD( "finnish.rom", 0xe000, 0x2000, CRC(9b96cf72) SHA1(b46d1a733e0e635ccdaf4752cc370d793c3b5c55), ROM_BIOS(2) )
+
+ ROM_REGION( 0x2000, "sdx", 0 )
+ ROM_LOAD( "sdx", 0x0000, 0x2000, NO_DUMP )
+
+ ROM_REGION( 0x2000, "mtx", 0 )
+ ROM_LOAD( "sm2 fdcx1 v03", 0x0000, 0x2000, NO_DUMP )
+
+ ROM_REGION( 0x1000, MC6845_TAG, 0 )
+ ROM_LOAD( "80z.bin", 0x0000, 0x1000, CRC(ea6fe865) SHA1(f84883f79bed34501e5828336894fad929bddbb5) )
/* Device GAL16V8 converted from PAL14L4 JEDEC map */
ROM_REGION( 0x117, "plds", 0 )
diff --git a/src/mame/drivers/mugsmash.cpp b/src/mame/drivers/mugsmash.cpp
index 55d8c7d9358..dd6c2626a8c 100644
--- a/src/mame/drivers/mugsmash.cpp
+++ b/src/mame/drivers/mugsmash.cpp
@@ -398,25 +398,25 @@ void mugsmash_state::machine_start()
{
}
-void mugsmash_state::mugsmash(machine_config &config)
-{
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &mugsmash_state::mugsmash_map);
- m_maincpu->set_vblank_int("screen", FUNC(mugsmash_state::irq6_line_hold));
+MACHINE_CONFIG_START(mugsmash_state::mugsmash)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(mugsmash_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mugsmash_state, irq6_line_hold)
- Z80(config, m_audiocpu, 4000000); /* Guess */
- m_audiocpu->set_addrmap(AS_PROGRAM, &mugsmash_state::mugsmash_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* Guess */
+ MCFG_DEVICE_PROGRAM_MAP(mugsmash_sound_map)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(mugsmash_state::screen_update_mugsmash));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mugsmash_state, screen_update_mugsmash)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_mugsmash);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mugsmash)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x300);
@@ -431,10 +431,10 @@ void mugsmash_state::mugsmash(machine_config &config)
ymsnd.add_route(0, "lspeaker", 1.00); /* music */
ymsnd.add_route(1, "rspeaker", 1.00);
- okim6295_device &oki(OKIM6295(config, "oki", 1122000, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
- oki.add_route(ALL_OUTPUTS, "lspeaker", 0.50); /* sound fx */
- oki.add_route(ALL_OUTPUTS, "rspeaker", 0.50);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1122000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) /* sound fx */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
+MACHINE_CONFIG_END
ROM_START( mugsmash )
ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 Code */
diff --git a/src/mame/drivers/multfish.cpp b/src/mame/drivers/multfish.cpp
index a0e1d5bc07b..b3365965d1e 100644
--- a/src/mame/drivers/multfish.cpp
+++ b/src/mame/drivers/multfish.cpp
@@ -309,19 +309,19 @@ WRITE8_MEMBER(igrosoft_gamble_state::igrosoft_gamble_bank_w)
READ8_MEMBER(igrosoft_gamble_state::igrosoft_gamble_timekeeper_r)
{
- return m_m48t35->read(offset + 0x6000);
+ return m_m48t35->read(space, offset + 0x6000, 0xff);
}
WRITE8_MEMBER(igrosoft_gamble_state::igrosoft_gamble_timekeeper_w)
{
- m_m48t35->write(offset + 0x6000, data);
+ m_m48t35->write(space, offset + 0x6000, data, 0xff);
}
READ8_MEMBER(igrosoft_gamble_state::bankedram_r)
{
if ((m_rambk & 0x80) == 0x00)
{
- return m_m48t35->read(offset + 0x2000*(m_rambk & 0x03));
+ return m_m48t35->read(space, offset + 0x2000*(m_rambk & 0x03), 0xff);
}
else
{
@@ -334,7 +334,7 @@ WRITE8_MEMBER(igrosoft_gamble_state::bankedram_w)
{
if ((m_rambk & 0x80) == 0x00)
{
- m_m48t35->write(offset + 0x2000*(m_rambk & 0x03), data);
+ m_m48t35->write(space, offset + 0x2000*(m_rambk & 0x03), data, 0xff);
}
else
{
@@ -657,31 +657,6 @@ void igrosoft_gamble_state::init_fcockt2ent()
m_xor_paltype = 2;
ent_decode(machine(), 0x33, 0xcc, 0xaa, 0x88, 0x14140);
}
-void igrosoft_gamble_state::init_sweetlent()
-{
- m_xor_palette = 0xeadb;
- m_xor_paltype = 2;
- ent_decode(machine(), 0x44, 0xdd, 0xdd, 0x22, 0x6c6c0);
-}
-void igrosoft_gamble_state::init_islandent()
-{
- m_xor_palette = 0xdadb;
- m_xor_paltype = 2;
- ent_decode(machine(), 0x66, 0x22, 0x33, 0xcc, 0x64e40);
-}
-void igrosoft_gamble_state::init_pirateent()
-{
- m_xor_palette = 0xbcdb;
- m_xor_paltype = 2;
- ent_decode(machine(), 0x99, 0x22, 0xee, 0x66, 0x54d40);
-}
-
-void igrosoft_gamble_state::init_rollfruit()
-{
- // m_xor_palette = 0xbff7;
- // needs gfx and palette descrambles
- // encryption looks similar to Crazy Monkey 2
-}
void igrosoft_gamble_state::init_crzmon2()
{
@@ -977,11 +952,8 @@ void igrosoft_gamble_state::igrosoft_gamble_portmap(address_map &map)
map(0xb5, 0xb5).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Garage Ent banking
map(0xb6, 0xb6).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Resident Ent banking
map(0xb7, 0xb7).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Rock Climber Ent banking
- map(0xb8, 0xb8).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Sweet Life Ent banking
map(0xb9, 0xb9).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Sweet Life 2 Ent banking
- map(0xba, 0xba).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Island Ent banking
map(0xbb, 0xbb).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Island 2 Ent banking
- map(0xbc, 0xbc).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Pirate Ent banking
map(0xbd, 0xbd).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Pirate 2 Ent banking
map(0xbe, 0xbe).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Keks Ent banking
map(0xbf, 0xbf).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Gnome Ent banking
@@ -991,7 +963,7 @@ void igrosoft_gamble_state::igrosoft_gamble_portmap(address_map &map)
map(0xcc, 0xcc).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Sweet Life 2 lottery banking
map(0xcd, 0xcd).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Island 2 lottery banking
map(0xce, 0xce).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Pirate 2 lottery banking
- map(0xd0, 0xd0).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // rollfr_4 rollfr_5 banking
+ map(0xd0, 0xd0).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // rollfr_4 banking
map(0xe1, 0xe1).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Island 2 banking
map(0xe5, 0xe5).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Gnome banking
map(0xe8, 0xe8).w(FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Sweet Life 2 banking
@@ -1053,41 +1025,40 @@ void igrosoft_gamble_state::machine_reset()
m_rambk = 0;
}
-void igrosoft_gamble_state::igrosoft_gamble(machine_config &config)
-{
+MACHINE_CONFIG_START(igrosoft_gamble_state::igrosoft_gamble)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(24'000'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &igrosoft_gamble_state::igrosoft_gamble_map);
- m_maincpu->set_addrmap(AS_IO, &igrosoft_gamble_state::igrosoft_gamble_portmap);
- m_maincpu->set_vblank_int("screen", FUNC(igrosoft_gamble_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(24'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(igrosoft_gamble_map)
+ MCFG_DEVICE_IO_MAP(igrosoft_gamble_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", igrosoft_gamble_state, irq0_line_hold)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*16, 32*16);
- m_screen->set_visarea(17*16, 1024-16*7-1, 1*16, 32*16-1*16-1);
- m_screen->set_screen_update(FUNC(igrosoft_gamble_state::screen_update_igrosoft_gamble));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*16, 32*16)
+ MCFG_SCREEN_VISIBLE_AREA(17*16, 1024-16*7-1, 1*16, 32*16-1*16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(igrosoft_gamble_state, screen_update_igrosoft_gamble)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_igrosoft_gamble);
- PALETTE(config, m_palette).set_entries(0x1000);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_igrosoft_gamble)
+ MCFG_PALETTE_ADD("palette", 0x1000)
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd", 6000000/4).add_route(ALL_OUTPUTS, "mono", 0.30);
- M48T35(config, m_m48t35, 0);
- HOPPER(config, m_hopper, attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
-}
+ MCFG_DEVICE_ADD("m48t35", M48T35, 0)
+ MCFG_HOPPER_ADD("hopper", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+MACHINE_CONFIG_END
-void igrosoft_gamble_state::rollfr(machine_config &config)
-{
+MACHINE_CONFIG_START(igrosoft_gamble_state::rollfr)
igrosoft_gamble(config);
- m_maincpu->set_addrmap(AS_IO, &igrosoft_gamble_state::rollfr_portmap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(rollfr_portmap)
+MACHINE_CONFIG_END
@@ -1991,24 +1962,6 @@ ROM_START( sweetl_2 ) // 070412
ROM_LOAD( "m48t35", 0x0000, 0x8000, CRC(b5deda35) SHA1(adc4dbbd73f9c4305abc594617218c32c31e0b8c) )
ROM_END
-ROM_START( sweetl_3 ) // 090720 entertainment
- ROM_REGION( 0x40000, "maincpu", 0 ) // z80 code, banked
- ROM_LOAD( "sl_e_090720.rom", 0x00000, 0x40000, CRC(97b2f1dd) SHA1(1c14dbeb35fe58f65c2a438e7443d3c37a00d48f) )
-
- ROM_REGION( 0x400000, "gfx", 0 )
- ROM_LOAD( "sweetlife_ent.001", 0x000000, 0x80000, CRC(954cec46) SHA1(1068cfe2d68f68db7523c4cd9aad67f9eba5f370) )
- ROM_LOAD( "sweetlife_ent.002", 0x100000, 0x80000, CRC(39a4dfef) SHA1(2344aa37b4943777fa8276fe7c9829e4e6f5fe21) )
- ROM_LOAD( "sweetlife_ent.003", 0x200000, 0x80000, CRC(5448a09a) SHA1(6c72e42094eeb9cbbc9e67d029376a31c01762dd) )
- ROM_LOAD( "sweetlife_ent.004", 0x300000, 0x80000, CRC(b7a5f2cb) SHA1(75f9c9f031fc5c2f249020bafbed23caa233efcc) )
- ROM_LOAD( "sweetlife_ent.005", 0x080000, 0x80000, CRC(b2b45395) SHA1(65b4516da1698ac6e02accd7b07b4e3ad55bcd17) )
- ROM_LOAD( "sweetlife_ent.006", 0x180000, 0x80000, CRC(b9b5a8fe) SHA1(a985c59813cfba99abd5817c3bd9d3fe2c0ae38e) )
- ROM_LOAD( "sweetlife_ent.007", 0x280000, 0x80000, CRC(28b33238) SHA1(3668fb0eed46c9cccc155246e4832fc902be597d) )
- ROM_LOAD( "sweetlife_ent.008", 0x380000, 0x80000, CRC(7aa675a7) SHA1(9027b889d5370d9daf1f880d43b1252a381aade8) )
-
- ROM_REGION( 0x8000, "m48t35", 0 ) // factory initialized defaults
- ROM_LOAD( "m48t35", 0x0000, 0x8000, CRC(fd66d54b) SHA1(769cc41e1f3c25518aaf4c4d9ab3fe0a3e525bd7) )
-ROM_END
-
/*********************************************************
Sweet Life 2
@@ -2269,23 +2222,6 @@ ROM_START( rollfr_4 ) // 080331, bank D0
ROM_LOAD( "m48t35", 0x0000, 0x8000, CRC(8d69b6ab) SHA1(e4080e181acf1e84115efbd1de641256faf71c4d) )
ROM_END
-ROM_START( rollfr_5 ) // 100924, bank D0
- ROM_REGION( 0x40000, "maincpu", 0 ) // z80 code, banked
- ROM_LOAD( "rf1-100924.rom", 0x00000, 0x40000, CRC(27b68b41) SHA1(a98ddd9da2ec1d3dd235e8a14efa96fda3d13c05) )
-
- ROM_REGION( 0x400000, "gfx", 0 )
- ROM_LOAD( "rollfruit1.001", 0x000000, 0x80000, CRC(1e4e6cc7) SHA1(3c301094a0879c42dc93678a5504d6a1a3ca6f37) )
- ROM_LOAD( "rollfruit1.002", 0x100000, 0x80000, CRC(5b744953) SHA1(2d140e3f4022c635c2ca3926b203e66ea618229e) )
- ROM_LOAD( "rollfruit1.003", 0x200000, 0x80000, CRC(f169bbd2) SHA1(35115ae187206d81d121e8fa57ec3edc8581ec2b) )
- ROM_LOAD( "rollfruit1.004", 0x300000, 0x80000, CRC(d877bd31) SHA1(254e6360ec56a99b103289850e585bd5f21621be) )
- ROM_LOAD( "rollfruit1.005", 0x080000, 0x80000, CRC(a9c750ca) SHA1(630db2a329a520eb66e29f4520f6af7e3ac4ae53) )
- ROM_LOAD( "rollfruit1.006", 0x180000, 0x80000, CRC(adfffc87) SHA1(5dc23e8af750639c1615d766dcc7d0133d683118) )
- ROM_LOAD( "rollfruit1.007", 0x280000, 0x80000, CRC(04489de4) SHA1(b73e83475b10651db294788cac8cd5ff636c27f3) )
- ROM_LOAD( "rollfruit1.008", 0x380000, 0x80000, CRC(8462b4ae) SHA1(6abac36f9466ecdf6761600b46bee33ea6e36270) )
-
- ROM_REGION( 0x8000, "m48t35", 0 ) // factory initialized defaults
- ROM_LOAD( "m48t35", 0x0000, 0x8000, CRC(8d69b6ab) SHA1(e4080e181acf1e84115efbd1de641256faf71c4d) )
-ROM_END
/*********************************************************
@@ -2328,24 +2264,6 @@ ROM_START( island_2 ) // 070409
ROM_LOAD( "m48t35", 0x0000, 0x8000, CRC(e606d0df) SHA1(25a31534a660abfc344b824a7c45595f4f9cf430) )
ROM_END
-ROM_START( island_3 ) // 090806 entertainment
- ROM_REGION( 0x40000, "maincpu", 0 ) // z80 code, banked
- ROM_LOAD( "is_e_090806.rom", 0x00000, 0x40000, CRC(144565f9) SHA1(8f5d335516a7ec8b7b3f64610258d589e7006d0a) )
-
- ROM_REGION( 0x400000, "gfx", 0 )
- ROM_LOAD( "island_ent.001", 0x000000, 0x80000, CRC(a5ba250e) SHA1(a7f61f770a1edd8802b1eaa1659a3dd857335c63) )
- ROM_LOAD( "island_ent.002", 0x100000, 0x80000, CRC(453e9414) SHA1(fcdaf3895b5482445e9c73f2f27042276cd402ca) )
- ROM_LOAD( "island_ent.003", 0x200000, 0x80000, CRC(29466f14) SHA1(a52d1189ec893bac81824af8e08050ef43a8e8e6) )
- ROM_LOAD( "island_ent.004", 0x300000, 0x80000, CRC(a483d9b0) SHA1(6e1420ceca4975db3609ae8c3947a10a9869364b) )
- ROM_LOAD( "island_ent.005", 0x080000, 0x80000, CRC(3f7ce2c0) SHA1(fc65c5d5f1f765684b118523c0b935b69e63c344) )
- ROM_LOAD( "island_ent.006", 0x180000, 0x80000, CRC(17517ff8) SHA1(0b4945fb4c3c6e168d130629509eb26077a900d0) )
- ROM_LOAD( "island_ent.007", 0x280000, 0x80000, CRC(99d3baac) SHA1(d45c54fa2ef54e0d472b16850fda012a0cdaf586) )
- ROM_LOAD( "island_ent.008", 0x380000, 0x80000, CRC(ceecd2ef) SHA1(a2d810f690258519497303ac9bd37291661706a9) )
-
- ROM_REGION( 0x8000, "m48t35", 0 ) // factory initialized defaults
- ROM_LOAD( "m48t35", 0x0000, 0x8000, CRC(1be1d844) SHA1(7d02dd6414f08595178941440150c0d2b6ab45ad) )
-ROM_END
-
/*********************************************************
Island 2
@@ -2502,24 +2420,6 @@ ROM_START( pirate_4 ) // 070412
ROM_LOAD( "m48t35", 0x0000, 0x8000, CRC(85054f45) SHA1(4d9e86a23a5a521083b6faa3b1b3fd8e7b8c85b0) )
ROM_END
-ROM_START( pirate_5 ) // 090803 entertainment
- ROM_REGION( 0x40000, "maincpu", 0 ) // z80 code, banked
- ROM_LOAD( "pr_e_090803.rom", 0x00000, 0x40000, CRC(72a1260a) SHA1(84678a9a90ca795e4938d82945ce3c4d15c49ed1) )
-
- ROM_REGION( 0x400000, "gfx", 0 )
- ROM_LOAD( "pirate_ent.001", 0x000000, 0x80000, CRC(9b93cd27) SHA1(81cce41463322aa90866f5ac56b82fb73e191319) )
- ROM_LOAD( "pirate_ent.002", 0x100000, 0x80000, CRC(5776a0dc) SHA1(2d81b7333ee418329ec0f0bb96b30dfaaf32cbf9) )
- ROM_LOAD( "pirate_ent.003", 0x200000, 0x80000, CRC(bf91b15f) SHA1(933cde175e343c6e5511b023096aec43d49b8963) )
- ROM_LOAD( "pirate_ent.004", 0x300000, 0x80000, CRC(5ad7299d) SHA1(d1246cd2b87a0b0b9e81083f1724d17fb69f64e5) )
- ROM_LOAD( "pirate_ent.005", 0x080000, 0x80000, CRC(7af72c13) SHA1(c264c8a6eb8e4a6b22e9be7bc8bde05901d91c56) )
- ROM_LOAD( "pirate_ent.006", 0x180000, 0x80000, CRC(9ea25f75) SHA1(0c8715b3f3fc5b875f3fbd80c79ae55ca9a32cb1) )
- ROM_LOAD( "pirate_ent.007", 0x280000, 0x80000, CRC(dffa307e) SHA1(da231a501fe2cc2149fff9cc3370aa1766292091) )
- ROM_LOAD( "pirate_ent.008", 0x380000, 0x80000, CRC(c9504ac4) SHA1(c8dc072b75348da02f5d811a580ba103728c2dd4) )
-
- ROM_REGION( 0x8000, "m48t35", 0 ) // factory initialized defaults
- ROM_LOAD( "m48t35", 0x0000, 0x8000, CRC(348f7ba9) SHA1(0f48481bf1c790760c7ee27f0caed45a833d3365) )
-ROM_END
-
/*********************************************************
Pirate 2
@@ -2697,42 +2597,6 @@ ROM_START( keks_5 ) // 090727 entertainment
ROM_LOAD( "m48t35", 0x0000, 0x8000, CRC(480de536) SHA1(bddc8269222ff3837c2924caf8ffac803e4aed18) )
ROM_END
-ROM_START( keks_6 ) // 110816
- ROM_REGION( 0x40000, "maincpu", 0 ) // z80 code, banked
- ROM_LOAD( "ks_m_110816.rom", 0x00000, 0x40000, CRC(9e244f5d) SHA1(49f8a2cdbef309b26bcc95bfc78e5b4a83c30583) )
-
- ROM_REGION( 0x400000, "gfx", 0 )
- ROM_LOAD( "keks_m.001", 0x000000, 0x80000, CRC(f4c20f66) SHA1(bed42ef01dfaa9d5d6ebb703e44ce7c11b8a373c) )
- ROM_LOAD( "keks_m.002", 0x100000, 0x80000, CRC(b7ec3fac) SHA1(c3c62690487a6056415c46888bde8254efca836f) )
- ROM_LOAD( "keks_m.003", 0x200000, 0x80000, CRC(5b6e8568) SHA1(003297e9cd080d91fe6751286eabd3a2f37ceb76) )
- ROM_LOAD( "keks_m.004", 0x300000, 0x80000, CRC(9dc32736) SHA1(7b2091ae802431d1c959b859a58e0076d32abef0) )
- ROM_LOAD( "keks_m.005", 0x080000, 0x80000, CRC(c5b09267) SHA1(7fd0988e63752fdbb31fde60b4726cfd63149622) )
- ROM_LOAD( "keks_m.006", 0x180000, 0x80000, CRC(583da5fd) SHA1(645228db20cdaacb53bfc68731fd1a66a6a8cf56) )
- ROM_LOAD( "keks_m.007", 0x280000, 0x80000, CRC(311c166a) SHA1(5f0ad8d755a6141964d818b98b3f156cbda8fb0d) )
- ROM_LOAD( "keks_m.008", 0x380000, 0x80000, CRC(f69b0831) SHA1(75392349ef02a39cf883206938e2c615445065fc) )
-
- ROM_REGION( 0x8000, "m48t35", 0 ) // factory initialized defaults
- ROM_LOAD( "m48t35", 0x0000, 0x8000, CRC(99307739) SHA1(cfcf9cd9426a1a977c29f8825288064a561df28d) )
-ROM_END
-
-ROM_START( keks_7 ) // 110816
- ROM_REGION( 0x40000, "maincpu", 0 ) // z80 code, banked
- ROM_LOAD( "ks_110816.rom", 0x00000, 0x40000, CRC(be6b2642) SHA1(47ea80529da40d3260a84fa322dbaf5fb581dfbe) )
-
- ROM_REGION( 0x400000, "gfx", 0 )
- ROM_LOAD( "keks.001", 0x000000, 0x80000, CRC(fc399595) SHA1(037afd4a613cd58d4a28627b9e395d48c3fa866a) )
- ROM_LOAD( "keks.002", 0x100000, 0x80000, CRC(474b36e7) SHA1(e1e62acd4a706b2654fc1249850806b612fc1419) )
- ROM_LOAD( "keks.003", 0x200000, 0x80000, CRC(7f885e3d) SHA1(09bb4690e86ed4a29eef75ee4e5753ce40a164dd) )
- ROM_LOAD( "keks.004", 0x300000, 0x80000, CRC(a0fc654b) SHA1(3354bdb7aa372816a766b0d36408543de7d3482f) )
- ROM_LOAD( "keks_m.005", 0x080000, 0x80000, CRC(c5b09267) SHA1(7fd0988e63752fdbb31fde60b4726cfd63149622) )
- ROM_LOAD( "keks_m.006", 0x180000, 0x80000, CRC(583da5fd) SHA1(645228db20cdaacb53bfc68731fd1a66a6a8cf56) )
- ROM_LOAD( "keks_m.007", 0x280000, 0x80000, CRC(311c166a) SHA1(5f0ad8d755a6141964d818b98b3f156cbda8fb0d) )
- ROM_LOAD( "keks_m.008", 0x380000, 0x80000, CRC(f69b0831) SHA1(75392349ef02a39cf883206938e2c615445065fc) )
-
- ROM_REGION( 0x8000, "m48t35", 0 ) // factory initialized defaults
- ROM_LOAD( "m48t35", 0x0000, 0x8000, CRC(1464bf6c) SHA1(5c1a984825dbd129e8295c3c6de6f82bfe5dc99e) )
-ROM_END
-
/*********************************************************
Gnome
@@ -3048,7 +2912,7 @@ ROM_END
ROM_START( crzmon2 ) // 100310
ROM_REGION( 0x40000, "maincpu", 0 ) // z80 code, banked
- ROM_LOAD( "cm2_m_100310.rom", 0x00000, 0x40000, CRC(c7fa01c8) SHA1(180b5ce0e456abe9178255b8ea09afb953986310) )
+ ROM_LOAD( "cm2_100310.rom", 0x00000, 0x40000, CRC(c7fa01c8) SHA1(180b5ce0e456abe9178255b8ea09afb953986310) )
ROM_REGION( 0x400000, "gfx", 0 )
ROM_LOAD( "crazymonkey2.001", 0x000000, 0x80000, CRC(8c8edfa7) SHA1(a68d4ebc370a09d588b906e5c254bccac4f53001) )
@@ -3100,24 +2964,6 @@ ROM_START( crzmon2_3 ) // 100315 entertainment
ROM_LOAD( "m48t35", 0x0000, 0x8000, CRC(84b6f391) SHA1(8ffc43ed73f614268c3d089b6f304e095ac21fe9) )
ROM_END
-ROM_START( crzmon2_4 ) // 100618
- ROM_REGION( 0x40000, "maincpu", 0 ) // z80 code, banked
- ROM_LOAD( "cm2_100618.rom", 0x00000, 0x40000, CRC(3519e933) SHA1(1dad2fa2084e4c25f5d75cba3b631c7f3a1bdce6) )
-
- ROM_REGION( 0x400000, "gfx", 0 )
- ROM_LOAD( "crazymonkey2.001", 0x000000, 0x80000, CRC(8c8edfa7) SHA1(a68d4ebc370a09d588b906e5c254bccac4f53001) )
- ROM_LOAD( "crazymonkey2.002", 0x100000, 0x80000, CRC(6379769f) SHA1(3b3ffc3ce4436168db41f7e643b58dca94f250da) )
- ROM_LOAD( "crazymonkey2.003", 0x200000, 0x80000, CRC(b12f8080) SHA1(218fd38c3c2b2886084a1c694ce181f497c54085) )
- ROM_LOAD( "crazymonkey2.004", 0x300000, 0x80000, CRC(1da8ed1a) SHA1(9681e631eaeb26d242daba4d1c362302de6ca1bd) )
- ROM_LOAD( "crazymonkey2.005", 0x080000, 0x80000, CRC(82bfb2d3) SHA1(ca4c4a8b105fbcb3e120fc2d89866f3e66624e96) )
- ROM_LOAD( "crazymonkey2.006", 0x180000, 0x80000, CRC(e3dfdf6a) SHA1(67608c09d8c92f3278ddc11c27ddba8f3146c2c6) )
- ROM_LOAD( "crazymonkey2.007", 0x280000, 0x80000, CRC(329f4c3d) SHA1(27e1ed25b7e11c604abcf435f87b165201918def) )
- ROM_LOAD( "crazymonkey2.008", 0x380000, 0x80000, CRC(f7c8e613) SHA1(6dec3f6f27773cd0af83ca914d8481c8f17f1d3f) )
-
- ROM_REGION( 0x8000, "m48t35", 0 ) // factory initialized defaults
- ROM_LOAD( "m48t35", 0x0000, 0x8000, CRC(9849f5ec) SHA1(9d9bd0a85fe0214e254cb2f5817696b39cffe4a4) )
-ROM_END
-
/*
@@ -3178,7 +3024,6 @@ GAME( 2003, lhaunt_11, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_ga
GAME( 2003, rollfr_2, rollfr_4, rollfr, rollfr, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Roll Fruit (040318)", MACHINE_SUPPORTS_SAVE ) /* World */
GAME( 2003, rollfr_3, rollfr_4, rollfr, rollfr, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Roll Fruit (080327)", MACHINE_SUPPORTS_SAVE ) /* World */
GAME( 2003, rollfr_4, 0, rollfr, rollfr, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Roll Fruit (080331)", MACHINE_SUPPORTS_SAVE ) /* World */
-GAME( 2003, rollfr_5, rollfr_4, rollfr, rollfr, igrosoft_gamble_state, init_rollfruit, ROT0, "Igrosoft", "Roll Fruit (100924)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) /* World */
GAME( 2004, garage_4, garage_5, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Garage (040219 World)", MACHINE_SUPPORTS_SAVE ) /* World */
GAME( 2004, garage_5, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Garage (050311 World)", MACHINE_SUPPORTS_SAVE ) /* World */
@@ -3192,9 +3037,8 @@ GAME( 2004, rclimb_4, rclimb_3, igrosoft_gamble, igrosoft_gamble, igrosoft_ga
GAME( 2004, rclimb_5, rclimb_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Rock Climber (070621 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */
GAME( 2004, rclimb_7, rclimb_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_rclimbent, ROT0, "Igrosoft", "Rock Climber (090716 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */
-GAME( 2004, sweetl, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Sweet Life (041220 World)", MACHINE_SUPPORTS_SAVE ) /* World */
-GAME( 2004, sweetl_2, sweetl, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Sweet Life (070412 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */
-GAME( 2004, sweetl_3, sweetl, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_sweetlent, ROT0, "Igrosoft", "Sweet Life (090720 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */
+GAME( 2004, sweetl, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Sweet Life (041220 World)", MACHINE_SUPPORTS_SAVE ) /* World */
+GAME( 2004, sweetl_2, sweetl, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Sweet Life (070412 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */
GAME( 2004, resdnt, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Resident (040415 World)", MACHINE_SUPPORTS_SAVE ) /* World */
GAME( 2004, resdnt_2, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Resident (040513 World)", MACHINE_SUPPORTS_SAVE ) /* World */
@@ -3203,14 +3047,12 @@ GAME( 2004, resdnt_6, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_ga
GAME( 2004, resdnt_8, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_resdntent, ROT0, "Igrosoft", "Resident (100311 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */
GAME( 2004, resdnt_9, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Resident (100316 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */
-GAME( 2005, island, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Island (050713 World)", MACHINE_SUPPORTS_SAVE ) /* World */
-GAME( 2005, island_2, island, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Island (070409 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */
-GAME( 2005, island_3, island, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_islandent, ROT0, "Igrosoft", "Island (090806 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */
+GAME( 2005, island, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Island (050713 World)", MACHINE_SUPPORTS_SAVE ) /* World */
+GAME( 2005, island_2, island, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Island (070409 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */
-GAME( 2005, pirate_2, pirate_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Pirate (060210 World)", MACHINE_SUPPORTS_SAVE ) /* World */
-GAME( 2005, pirate_3, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Pirate (060803 World)", MACHINE_SUPPORTS_SAVE ) /* World */
-GAME( 2005, pirate_4, pirate_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Pirate (070412 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */
-GAME( 2005, pirate_5, pirate_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_pirateent, ROT0, "Igrosoft", "Pirate (090803 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */
+GAME( 2005, pirate_2, pirate_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Pirate (060210 World)", MACHINE_SUPPORTS_SAVE ) /* World */
+GAME( 2005, pirate_3, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Pirate (060803 World)", MACHINE_SUPPORTS_SAVE ) /* World */
+GAME( 2005, pirate_4, pirate_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Pirate (070412 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */
GAME( 2006, island2, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Island 2 (060529 World)", MACHINE_SUPPORTS_SAVE ) /* World */
GAME( 2006, island2_3, island2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Island 2 (061218 World)", MACHINE_SUPPORTS_SAVE ) /* World */
@@ -3223,13 +3065,11 @@ GAME( 2006, pirate2_2, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_ga
GAME( 2006, pirate2_3, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_pirate2l, ROT0, "Igrosoft", "Pirate 2 (090528 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */
GAME( 2006, pirate2_4, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_pirate2ent, ROT0, "Igrosoft", "Pirate 2 (090730 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */
-GAME( 2006, keks, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Keks (060328 World)", MACHINE_SUPPORTS_SAVE ) /* World */
-GAME( 2006, keks_2, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Keks (060403 World)", MACHINE_SUPPORTS_SAVE ) /* World */
-GAME( 2006, keks_3, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Keks (070119 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */
-GAME( 2006, keks_4, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_keksl, ROT0, "Igrosoft", "Keks (090604 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */
-GAME( 2006, keks_5, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_keksent, ROT0, "Igrosoft", "Keks (090727 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */
-GAME( 2006, keks_6, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Keks (110816 World)", MACHINE_SUPPORTS_SAVE ) /* World */
-GAME( 2006, keks_7, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Keks (110816 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */
+GAME( 2006, keks, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Keks (060328 World)", MACHINE_SUPPORTS_SAVE ) /* World */
+GAME( 2006, keks_2, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Keks (060403 World)", MACHINE_SUPPORTS_SAVE ) /* World */
+GAME( 2006, keks_3, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Keks (070119 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */
+GAME( 2006, keks_4, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_keksl, ROT0, "Igrosoft", "Keks (090604 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */
+GAME( 2006, keks_5, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_keksent, ROT0, "Igrosoft", "Keks (090727 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */
GAME( 2007, gnome, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Gnome (070906 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */
GAME( 2007, gnome_2, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "Igrosoft", "Gnome (071115 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */
@@ -3254,7 +3094,6 @@ GAME( 2008, fcockt2_5, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_ga
GAME( 2008, fcockt2_6, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_fcockt2l, ROT0, "Igrosoft", "Fruit Cocktail 2 (090528 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */
GAME( 2008, fcockt2_7, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_fcockt2ent, ROT0, "Igrosoft", "Fruit Cocktail 2 (090813 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */
-GAME( 2010, crzmon2, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_crzmon2, ROT0, "Igrosoft", "Crazy Monkey 2 (100310 World)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) /* World */ // xored and bitswapped palette and gfx roms
+GAME( 2010, crzmon2, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_crzmon2, ROT0, "Igrosoft", "Crazy Monkey 2 (100310)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) /* World */ // xored and bitswapped palette and gfx roms
GAME( 2010, crzmon2_2, crzmon2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_crzmon2lot, ROT0, "Igrosoft", "Crazy Monkey 2 (100311 Lottery)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) /* Lottery */
GAME( 2010, crzmon2_3, crzmon2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_crzmon2ent, ROT0, "Igrosoft", "Crazy Monkey 2 (100315 Entertainment)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) /* Entertainment */
-GAME( 2010, crzmon2_4, crzmon2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_crzmon2, ROT0, "Igrosoft", "Crazy Monkey 2 (100618 Russia)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) /* Russia */
diff --git a/src/mame/drivers/multfish_boot.cpp b/src/mame/drivers/multfish_boot.cpp
index 28eaa3b1373..7ee95650bd3 100644
--- a/src/mame/drivers/multfish_boot.cpp
+++ b/src/mame/drivers/multfish_boot.cpp
@@ -2117,18 +2117,18 @@ GAME( 2006, pirate2g, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_ga
GAME( 2006, pirate2h, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_customl, ROT0, "bootleg", "Pirate 2 (bootleg, 061005, LOTOS PR01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "LOTOS PR01"
GAME( 2006, pirate2_2a, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Pirate 2 (bootleg, 070126, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9
-GAME( 2006, keksa, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 060328, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9
-GAME( 2006, keksb, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 060328, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4
-GAME( 2006, keksc, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 060328, banking address hack, changed version text)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070119
-GAME( 2006, keks_2a, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 060403, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9
-GAME( 2006, keks_2b, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 060403, banking address hack, changed version text)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070119
-GAME( 2006, keks_2c, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_customl, ROT0, "bootleg", "Keks (bootleg, 060403, VIDEO GAME-1 KS01 set 1)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, bank F9, changed version text to "VIDEO GAME-1 KS01"
-GAME( 2006, keks_2d, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 060403, VIDEO GAME-1 KS01 set 2)", MACHINE_SUPPORTS_SAVE ) // modified graphics, bank F9, changed version text to "VIDEO GAME-1 KS01" (keks_2c, decoded gfx)
-GAME( 2006, keks_2e, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 060403, banking address hack, payout percentage 60)", MACHINE_SUPPORTS_SAVE ) // bank F9, payout percentage 60%
-GAME( 2006, keks_2f, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 060403, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // bank F9, modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)"
-GAME( 2006, keks_2g, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_customl, ROT0, "bootleg", "Keks (bootleg, 060403, LOTOS KS01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, bank F9, many texts changed, changed version text to "LOTOS KS01"
-GAME( 2006, keks_3a, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 070119, banking address hack set 1)", MACHINE_SUPPORTS_SAVE ) // bank F9
-GAME( 2006, keks_3b, keks_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 070119, banking address hack set 2)", MACHINE_SUPPORTS_SAVE ) // bank F9
+GAME( 2006, keksa, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 060328, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9
+GAME( 2006, keksb, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 060328, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4
+GAME( 2006, keksc, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 060328, banking address hack, changed version text)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070119
+GAME( 2006, keks_2a, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 060403, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9
+GAME( 2006, keks_2b, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 060403, banking address hack, changed version text)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070119
+GAME( 2006, keks_2c, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_customl, ROT0, "bootleg", "Keks (bootleg, 060403, VIDEO GAME-1 KS01 set 1)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, bank F9, changed version text to "VIDEO GAME-1 KS01"
+GAME( 2006, keks_2d, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 060403, VIDEO GAME-1 KS01 set 2)", MACHINE_SUPPORTS_SAVE ) // modified graphics, bank F9, changed version text to "VIDEO GAME-1 KS01" (keks_2c, decoded gfx)
+GAME( 2006, keks_2e, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 060403, banking address hack, payout percentage 60)", MACHINE_SUPPORTS_SAVE ) // bank F9, payout percentage 60%
+GAME( 2006, keks_2f, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 060403, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // bank F9, modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)"
+GAME( 2006, keks_2g, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, init_customl, ROT0, "bootleg", "Keks (bootleg, 060403, LOTOS KS01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, bank F9, many texts changed, changed version text to "LOTOS KS01"
+GAME( 2006, keks_3a, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 070119, banking address hack set 1)", MACHINE_SUPPORTS_SAVE ) // bank F9
+GAME( 2006, keks_3b, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Keks (bootleg, 070119, banking address hack set 2)", MACHINE_SUPPORTS_SAVE ) // bank F9
GAME( 2007, gnomea, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Gnome (bootleg, 070906, banking address hack set 1)", MACHINE_SUPPORTS_SAVE ) // bank F9
GAME( 2007, gnomeb, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, empty_init, ROT0, "bootleg", "Gnome (bootleg, 070906, banking address hack set 2)", MACHINE_SUPPORTS_SAVE ) // bank F9
diff --git a/src/mame/drivers/multi16.cpp b/src/mame/drivers/multi16.cpp
index 816aad95581..f272920cd10 100644
--- a/src/mame/drivers/multi16.cpp
+++ b/src/mame/drivers/multi16.cpp
@@ -107,13 +107,13 @@ void multi16_state::multi16_map(address_map &map)
WRITE8_MEMBER( multi16_state::multi16_6845_address_w )
{
m_crtc_index = data;
- m_crtc->address_w(data);
+ m_crtc->address_w(space, offset, data);
}
WRITE8_MEMBER( multi16_state::multi16_6845_data_w )
{
m_crtc_vreg[m_crtc_index] = data;
- m_crtc->register_w(data);
+ m_crtc->register_w(space, offset, data);
}
void multi16_state::multi16_io(address_map &map)
@@ -138,8 +138,7 @@ void multi16_state::machine_reset()
}
-void multi16_state::multi16(machine_config &config)
-{
+MACHINE_CONFIG_START(multi16_state::multi16)
/* basic machine hardware */
I8086(config, m_maincpu, 8000000);
m_maincpu->set_addrmap(AS_PROGRAM, &multi16_state::multi16_map);
@@ -147,15 +146,15 @@ void multi16_state::multi16(machine_config &config)
m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 200);
- screen.set_visarea(0, 640-1, 0, 200-1);
- screen.set_screen_update(FUNC(multi16_state::screen_update_multi16));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 200)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
+ MCFG_SCREEN_UPDATE_DRIVER(multi16_state, screen_update_multi16)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(8);
+ MCFG_PALETTE_ADD("palette", 8)
/* devices */
H46505(config, m_crtc, 16000000/5); /* unknown clock, hand tuned to get ~60 fps */
@@ -165,7 +164,7 @@ void multi16_state::multi16(machine_config &config)
PIC8259(config, m_pic, 0);
m_pic->out_int_callback().set_inputline(m_maincpu, 0);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( multi16 )
diff --git a/src/mame/drivers/multi8.cpp b/src/mame/drivers/multi8.cpp
index 119bc61d3b6..e205ed3e2ad 100644
--- a/src/mame/drivers/multi8.cpp
+++ b/src/mame/drivers/multi8.cpp
@@ -278,8 +278,8 @@ WRITE8_MEMBER( multi8_state::pal_w )
}
}
-READ8_MEMBER(multi8_state::ay8912_0_r){ return m_aysnd->data_r(); }
-READ8_MEMBER(multi8_state::ay8912_1_r){ return m_aysnd->data_r(); }
+READ8_MEMBER(multi8_state::ay8912_0_r){ return m_aysnd->data_r(space, 0); }
+READ8_MEMBER(multi8_state::ay8912_1_r){ return m_aysnd->data_r(space, 1); }
READ8_MEMBER( multi8_state::kanji_r )
{
@@ -566,33 +566,33 @@ void multi8_state::machine_reset()
m_mcu_init = 0;
}
-void multi8_state::multi8(machine_config &config)
-{
+MACHINE_CONFIG_START(multi8_state::multi8)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &multi8_state::multi8_mem);
- m_maincpu->set_addrmap(AS_IO, &multi8_state::multi8_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(multi8_mem)
+ MCFG_DEVICE_IO_MAP(multi8_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 200);
- screen.set_visarea(0, 320-1, 0, 200-1);
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 200)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
PALETTE(config, m_palette, palette_device::BRG_3BIT);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_multi8);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_multi8)
/* Audio */
SPEAKER(config, "mono").front_center();
AY8912(config, m_aysnd, 1500000); //unknown clock / divider
m_aysnd->port_a_write_callback().set(FUNC(multi8_state::ym2203_porta_w));
m_aysnd->add_route(ALL_OUTPUTS, "mono", 0.50);
- BEEP(config, m_beeper, 1200).add_route(ALL_OUTPUTS,"mono",0.50); // guesswork
+ MCFG_DEVICE_ADD("beeper", BEEP, 1200) // guesswork
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.50)
/* devices */
- TIMER(config, "keyboard_timer").configure_periodic(FUNC(multi8_state::keyboard_callback), attotime::from_hz(240/32));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", multi8_state, keyboard_callback, attotime::from_hz(240/32))
H46505(config, m_crtc, XTAL(3'579'545)/2); /* unknown clock, hand tuned to get ~60 fps */
m_crtc->set_screen("screen");
@@ -614,8 +614,8 @@ void multi8_state::multi8(machine_config &config)
PIC8259(config, "pic", 0);
//UPD765A(config, "fdc", false, true);
- //FLOPPY_CONNECTOR(config, "fdc:0", multi8_floppies, "525hd", floppy_image_device::default_floppy_formats);
-}
+ //MCFG_FLOPPY_DRIVE_ADD("fdc:0", multi8_floppies, "525hd", floppy_image_device::default_floppy_formats)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( multi8 )
diff --git a/src/mame/drivers/munchmo.cpp b/src/mame/drivers/munchmo.cpp
index 084666ffd02..a39e3b96a85 100644
--- a/src/mame/drivers/munchmo.cpp
+++ b/src/mame/drivers/munchmo.cpp
@@ -75,13 +75,13 @@ WRITE8_MEMBER(munchmo_state::sound_nmi_ack_w)
READ8_MEMBER(munchmo_state::ay1reset_r)
{
- m_ay8910[0]->reset_w();
+ m_ay8910[0]->reset_w(space, 0, 0);
return 0;
}
READ8_MEMBER(munchmo_state::ay2reset_r)
{
- m_ay8910[1]->reset_w();
+ m_ay8910[1]->reset_w(space, 0, 0);
return 0;
}
@@ -315,16 +315,16 @@ void munchmo_state::machine_start()
save_item(NAME(m_nmi_enable));
}
-void munchmo_state::mnchmobl(machine_config &config)
-{
+MACHINE_CONFIG_START(munchmo_state::mnchmobl)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(15'000'000)/4); // from pin 13 of XTAL-driven 163
- m_maincpu->set_addrmap(AS_PROGRAM, &munchmo_state::mnchmobl_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(munchmo_state::generic_irq_ack)); // IORQ clears flip-flop at 1-2C
+ MCFG_DEVICE_ADD(m_maincpu, Z80, XTAL(15'000'000)/4) // from pin 13 of XTAL-driven 163
+ MCFG_DEVICE_PROGRAM_MAP(mnchmobl_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(munchmo_state, generic_irq_ack) // IORQ clears flip-flop at 1-2C
- Z80(config, m_audiocpu, XTAL(15'000'000)/8); // from pin 12 of XTAL-driven 163
- m_audiocpu->set_addrmap(AS_PROGRAM, &munchmo_state::sound_map);
- m_audiocpu->set_irq_acknowledge_callback(FUNC(munchmo_state::generic_irq_ack)); // IORQ clears flip-flop at 1-7H
+ MCFG_DEVICE_ADD(m_audiocpu, Z80, XTAL(15'000'000)/8) // from pin 12 of XTAL-driven 163
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(munchmo_state, generic_irq_ack) // IORQ clears flip-flop at 1-7H
LS259(config, m_mainlatch, 0); // 12E
m_mainlatch->q_out_cb<0>().set(FUNC(munchmo_state::palette_bank_0_w)); // BCL0 2-11E
@@ -336,14 +336,14 @@ void munchmo_state::mnchmobl(machine_config &config)
m_mainlatch->q_out_cb<6>().set(FUNC(munchmo_state::nmi_enable_w)); // ENI 1-10C
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(256+32+32, 256);
- screen.set_visarea(0, 255+32+32,0, 255-16);
- screen.set_screen_update(FUNC(munchmo_state::screen_update));
- screen.screen_vblank().set(FUNC(munchmo_state::vblank_irq));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256+32+32, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255+32+32,0, 255-16)
+ MCFG_SCREEN_UPDATE_DRIVER(munchmo_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, munchmo_state, vblank_irq))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mnchmobl);
PALETTE(config, m_palette, FUNC(munchmo_state::munchmo_palette), 256);
@@ -361,7 +361,7 @@ void munchmo_state::mnchmobl(machine_config &config)
AY8910(config, m_ay8910[1], XTAL(15'000'000)/8);
//m_ay8910[1]->set_flags(AY8910_SINGLE_OUTPUT);
m_ay8910[1]->add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/murogem.cpp b/src/mame/drivers/murogem.cpp
index 440c2183cea..af2d453ca44 100644
--- a/src/mame/drivers/murogem.cpp
+++ b/src/mame/drivers/murogem.cpp
@@ -249,21 +249,20 @@ uint32_t murogem_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
}
-void murogem_state::murogem(machine_config &config)
-{
+MACHINE_CONFIG_START(murogem_state::murogem)
/* basic machine hardware */
- M6802(config, m_maincpu, 8000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &murogem_state::murogem_map);
- m_maincpu->set_vblank_int("screen", FUNC(murogem_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M6802, 8000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(murogem_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", murogem_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size((39+1)*8, (38+1)*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(murogem_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE((39+1)*8, (38+1)*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(murogem_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_murogem);
PALETTE(config, m_palette, FUNC(murogem_state::murogem_palette), 0x100);
@@ -275,10 +274,10 @@ void murogem_state::murogem(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.375);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.375)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
ROM_START( murogem )
diff --git a/src/mame/drivers/murogmbl.cpp b/src/mame/drivers/murogmbl.cpp
index 327cbc5da46..18d51977af9 100644
--- a/src/mame/drivers/murogmbl.cpp
+++ b/src/mame/drivers/murogmbl.cpp
@@ -348,57 +348,53 @@ static GFXDECODE_START( gfx_slotunbl )
GFXDECODE_ENTRY( "gfx1", 0, layout8x8x2, 0x0, 1 )
GFXDECODE_END
-void murogmbl_state::murogmbl(machine_config &config)
-{
+MACHINE_CONFIG_START(murogmbl_state::murogmbl)
/* basic machine hardware */
- Z80(config, m_maincpu, 1000000); /* Z80? */
- m_maincpu->set_addrmap(AS_PROGRAM, &murogmbl_state::murogmbl_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 1000000) /* Z80? */
+ MCFG_DEVICE_PROGRAM_MAP(murogmbl_map)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_murogmbl);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(murogmbl_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(murogmbl_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(murogmbl_state::murogmbl_palette), 0x100);
SPEAKER(config, "speaker").front_center();
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void slotunbl_state::slotunbl(machine_config &config)
-{
+MACHINE_CONFIG_START(slotunbl_state::slotunbl)
/* basic machine hardware */
- Z80(config, m_maincpu, 1000000); /* Z80? */
- m_maincpu->set_addrmap(AS_PROGRAM, &slotunbl_state::slotunbl_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 1000000) /* Z80? */
+ MCFG_DEVICE_PROGRAM_MAP(slotunbl_map)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_slotunbl);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(slotunbl_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(slotunbl_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(slotunbl_state::slotunbl_palette), 0x100);
SPEAKER(config, "speaker").front_center();
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
ROM_START(murogmbl)
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/mustache.cpp b/src/mame/drivers/mustache.cpp
index 9462c33bf02..eae1abaf643 100644
--- a/src/mame/drivers/mustache.cpp
+++ b/src/mame/drivers/mustache.cpp
@@ -179,28 +179,28 @@ TIMER_DEVICE_CALLBACK_MEMBER(mustache_state::scanline)
-void mustache_state::mustache(machine_config &config)
-{
+MACHINE_CONFIG_START(mustache_state::mustache)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &mustache_state::memmap);
- m_maincpu->set_addrmap(AS_OPCODES, &mustache_state::decrypted_opcodes_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(mustache_state::scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(memmap)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mustache_state, scanline, "screen", 0, 1)
SEI80BU(config, "sei80bu", 0).set_device_rom_tag("maincpu");
- T5182(config, "t5182", 0);
+ MCFG_DEVICE_ADD("t5182", T5182, 0)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(56.747);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(1*8, 31*8-1, 0, 31*8-1);
- m_screen->set_screen_update(FUNC(mustache_state::screen_update));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_mustache);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(56.747)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mustache_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mustache)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
/* sound hardware */
@@ -210,7 +210,7 @@ void mustache_state::mustache(machine_config &config)
ymsnd.irq_handler().set("t5182", FUNC(t5182_device::ym2151_irq_handler));
ymsnd.add_route(0, "mono", 1.0);
ymsnd.add_route(1, "mono", 1.0);
-}
+MACHINE_CONFIG_END
ROM_START( mustache )
ROM_REGION( 0x20000, "maincpu", 0 )
diff --git a/src/mame/drivers/mvme147.cpp b/src/mame/drivers/mvme147.cpp
index 6d3f012d7de..4ba6ed13afe 100644
--- a/src/mame/drivers/mvme147.cpp
+++ b/src/mame/drivers/mvme147.cpp
@@ -648,14 +648,12 @@ static void mvme147_vme_cards(device_slot_interface &device)
/*
* Machine configuration
*/
-void mvme147_state::mvme147(machine_config &config)
-{
+MACHINE_CONFIG_START(mvme147_state::mvme147)
/* basic machine hardware */
- M68030(config, m_maincpu, 16_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &mvme147_state::mvme147_mem);
-
- VME(config, "vme", 0);
- VME_SLOT(config, "slot1", mvme147_vme_cards, nullptr, 1, "vme");
+ MCFG_DEVICE_ADD("maincpu", M68030, 16_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(mvme147_mem)
+ MCFG_VME_DEVICE_ADD("vme")
+ MCFG_VME_SLOT_ADD("vme", 1, mvme147_vme_cards, nullptr)
M48T02(config, "m48t18", 0); /* t08 differs only in accepted voltage levels compared to t18 */
@@ -670,7 +668,7 @@ void mvme147_state::mvme147(machine_config &config)
rs232trm.cts_handler().set(m_sccterm, FUNC(scc85c30_device::ctsa_w));
SCC85C30(config, m_sccterm2, SCC_CLOCK);
-}
+MACHINE_CONFIG_END
/* ROM definitions */
ROM_START (mvme147)
diff --git a/src/mame/drivers/mw18w.cpp b/src/mame/drivers/mw18w.cpp
index f3a2e8263e4..b502c17ef1d 100644
--- a/src/mame/drivers/mw18w.cpp
+++ b/src/mame/drivers/mw18w.cpp
@@ -279,13 +279,13 @@ INPUT_PORTS_END
***************************************************************************/
-void mw18w_state::mw18w(machine_config &config)
-{
+MACHINE_CONFIG_START(mw18w_state::mw18w)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(19'968'000)/8);
- m_maincpu->set_periodic_int(FUNC(mw18w_state::irq0_line_assert), attotime::from_hz(960.516)); // 555 IC
- m_maincpu->set_addrmap(AS_PROGRAM, &mw18w_state::mw18w_map);
- m_maincpu->set_addrmap(AS_IO, &mw18w_state::mw18w_portmap);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(19'968'000)/8)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(mw18w_state, irq0_line_assert, 960.516) // 555 IC
+ MCFG_DEVICE_PROGRAM_MAP(mw18w_map)
+ MCFG_DEVICE_IO_MAP(mw18w_portmap)
WATCHDOG_TIMER(config, "watchdog");
@@ -293,7 +293,7 @@ void mw18w_state::mw18w(machine_config &config)
/* sound hardware */
//...
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mw8080bw.cpp b/src/mame/drivers/mw8080bw.cpp
index 0cea39f2e87..86827f050ab 100644
--- a/src/mame/drivers/mw8080bw.cpp
+++ b/src/mame/drivers/mw8080bw.cpp
@@ -235,7 +235,6 @@ void mw8080bw_state::mw8080bw_root(machine_config &config)
/* basic machine hardware */
I8080(config, m_maincpu, MW8080BW_CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &mw8080bw_state::main_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(mw8080bw_state::interrupt_vector));
MCFG_MACHINE_START_OVERRIDE(mw8080bw_state,mw8080bw)
MCFG_MACHINE_RESET_OVERRIDE(mw8080bw_state,mw8080bw)
diff --git a/src/mame/drivers/mwarr.cpp b/src/mame/drivers/mwarr.cpp
index 420e7ae14cf..c52875f14e0 100644
--- a/src/mame/drivers/mwarr.cpp
+++ b/src/mame/drivers/mwarr.cpp
@@ -306,23 +306,22 @@ void mwarr_state::machine_reset()
{
}
-void mwarr_state::mwarr(machine_config &config)
-{
+MACHINE_CONFIG_START(mwarr_state::mwarr)
/* basic machine hardware */
- M68000(config, m_maincpu, MASTER_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &mwarr_state::mwarr_map);
- m_maincpu->set_vblank_int("screen", FUNC(mwarr_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, MASTER_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(mwarr_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mwarr_state, irq4_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(54);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8+1, 48*8-1-8-1, 0, 30*8-1);
- screen.set_screen_update(FUNC(mwarr_state::screen_update_mwarr));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_mwarr);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(54)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8+1, 48*8-1-8-1, 0, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mwarr_state, screen_update_mwarr)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mwarr)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x800);
EDEVICES_VID(config, m_video, 0);
@@ -341,12 +340,13 @@ void mwarr_state::mwarr(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki1", SOUND_CLOCK/48 , okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, SOUND_CLOCK/48 , okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- okim6295_device &oki2(OKIM6295(config, "oki2", SOUND_CLOCK/48 , okim6295_device::PIN7_HIGH));
- oki2.add_route(ALL_OUTPUTS, "mono", 1.0);
- oki2.set_addrmap(0, &mwarr_state::oki2_map);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, SOUND_CLOCK/48 , okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki2_map)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/mwsub.cpp b/src/mame/drivers/mwsub.cpp
index 9330a077a97..9e204f5c64d 100644
--- a/src/mame/drivers/mwsub.cpp
+++ b/src/mame/drivers/mwsub.cpp
@@ -222,13 +222,13 @@ INPUT_PORTS_END
***************************************************************************/
-void submar_state::submar(machine_config &config)
-{
+MACHINE_CONFIG_START(submar_state::submar)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(19'968'000)/8);
- m_maincpu->set_periodic_int(FUNC(submar_state::irq0_line_assert), attotime::from_hz(124.675)); // 555 IC
- m_maincpu->set_addrmap(AS_PROGRAM, &submar_state::submar_map);
- m_maincpu->set_addrmap(AS_IO, &submar_state::submar_portmap);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(19'968'000)/8)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(submar_state, irq0_line_assert, 124.675) // 555 IC
+ MCFG_DEVICE_PROGRAM_MAP(submar_map)
+ MCFG_DEVICE_IO_MAP(submar_portmap)
WATCHDOG_TIMER(config, "watchdog");
@@ -236,7 +236,7 @@ void submar_state::submar(machine_config &config)
/* sound hardware */
//...
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mx2178.cpp b/src/mame/drivers/mx2178.cpp
index 18b06fb7f92..e81d39dc860 100644
--- a/src/mame/drivers/mx2178.cpp
+++ b/src/mame/drivers/mx2178.cpp
@@ -131,21 +131,20 @@ void mx2178_state::machine_reset()
{
}
-void mx2178_state::mx2178(machine_config &config)
-{
+MACHINE_CONFIG_START(mx2178_state::mx2178)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'869'600) / 5); // guess
- m_maincpu->set_addrmap(AS_PROGRAM, &mx2178_state::mx2178_mem);
- m_maincpu->set_addrmap(AS_IO, &mx2178_state::mx2178_io);
+ MCFG_DEVICE_ADD(m_maincpu, Z80, XTAL(18'869'600) / 5) // guess
+ MCFG_DEVICE_PROGRAM_MAP(mx2178_mem)
+ MCFG_DEVICE_IO_MAP(mx2178_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not correct
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_mx2178);
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not correct
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mx2178)
PALETTE(config, m_palette, palette_device::MONOCHROME);
/* Devices */
@@ -179,7 +178,7 @@ void mx2178_state::mx2178(machine_config &config)
rs232_port_device &rs232b(RS232_PORT(config, "rs232b", default_rs232_devices, "keyboard"));
rs232b.rxd_handler().set("acia2", FUNC(acia6850_device::write_rxd));
rs232b.cts_handler().set("acia2", FUNC(acia6850_device::write_cts));
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( mx2178 )
diff --git a/src/mame/drivers/myb3k.cpp b/src/mame/drivers/myb3k.cpp
index b3639487930..8581c56f6d5 100644
--- a/src/mame/drivers/myb3k.cpp
+++ b/src/mame/drivers/myb3k.cpp
@@ -930,8 +930,7 @@ static void stepone_isa_cards(device_slot_interface &device)
device.option_add("myb3k_fdc4711", ISA8_MYB3K_FDC4711);
}
-void myb3k_state::myb3k(machine_config &config)
-{
+MACHINE_CONFIG_START(myb3k_state::myb3k)
/* basic machine hardware */
I8088(config, m_maincpu, XTAL(14'318'181) / 3); /* 14.3182 main crystal divided by three through a 8284A */
m_maincpu->set_addrmap(AS_PROGRAM, &myb3k_state::myb3k_map);
@@ -942,7 +941,7 @@ void myb3k_state::myb3k(machine_config &config)
RAM(config, RAM_TAG).set_default_size("256K").set_extra_options("128K, 256K");
/* Interrupt controller */
- PIC8259(config, m_pic8259);
+ PIC8259(config, m_pic8259, 0);
m_pic8259->out_int_callback().set(FUNC(myb3k_state::pic_int_w));
/* Parallel port */
@@ -971,7 +970,7 @@ void myb3k_state::myb3k(machine_config &config)
m_dma8257->out_dack_cb<3>().set(FUNC(myb3k_state::dack3_w));
/* Timer */
- PIT8253(config, m_pit8253);
+ PIT8253(config, m_pit8253, 0);
m_pit8253->set_clk<0>(XTAL(14'318'181) / 12.0); /* TIMINT straight into IRQ0 */
m_pit8253->out_handler<0>().set(m_pic8259, FUNC(pic8259_device::ir0_w));
m_pit8253->set_clk<1>(XTAL(14'318'181) / 12.0); /* speaker if port c bit 5 is low */
@@ -988,8 +987,7 @@ void myb3k_state::myb3k(machine_config &config)
/* ISA8+ Expansion bus */
ISA8(config, m_isabus, 0);
- m_isabus->set_memspace("maincpu", AS_PROGRAM);
- m_isabus->set_iospace("maincpu", AS_IO);
+ m_isabus->set_cputag("maincpu");
m_isabus->irq2_callback().set(m_pic8259, FUNC(pic8259_device::ir2_w));
m_isabus->irq3_callback().set(m_pic8259, FUNC(pic8259_device::ir3_w));
m_isabus->irq4_callback().set(m_pic8259, FUNC(pic8259_device::ir4_w));
@@ -1001,53 +999,50 @@ void myb3k_state::myb3k(machine_config &config)
m_isabus->drq2_callback().set("dma", FUNC(i8257_device::dreq2_w));
m_isabus->drq3_callback().set("dma", FUNC(i8257_device::dreq3_w));
- ISA8_SLOT(config, "isa1", 0, m_isabus, stepone_isa_cards, "myb3k_fdc4711", false); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa2", 0, m_isabus, stepone_isa_cards, "myb3k_com", false);
- ISA8_SLOT(config, "isa3", 0, m_isabus, stepone_isa_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "isa", stepone_isa_cards, "myb3k_fdc4711", false) // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "isa", stepone_isa_cards, "myb3k_com", false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "isa", stepone_isa_cards, nullptr, false)
/* Centronics */
-
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(FUNC(myb3k_state::centronics_ack_w));
- m_centronics->busy_handler().set(FUNC(myb3k_state::centronics_busy_w));
- m_centronics->perror_handler().set(FUNC(myb3k_state::centronics_perror_w));
- m_centronics->select_handler().set(FUNC(myb3k_state::centronics_select_w));
-
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_DEVICE_ADD (m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER (WRITELINE (*this, myb3k_state, centronics_ack_w))
+ MCFG_CENTRONICS_BUSY_HANDLER (WRITELINE (*this, myb3k_state, centronics_busy_w))
+ MCFG_CENTRONICS_PERROR_HANDLER (WRITELINE (*this, myb3k_state, centronics_perror_w))
+ MCFG_CENTRONICS_SELECT_HANDLER (WRITELINE (*this, myb3k_state, centronics_select_w))
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD ("cent_data_out", "centronics")
/* Sound */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* Keyboard */
- MYB3K_KEYBOARD(config, m_kb, 0);
- m_kb->set_keyboard_callback(FUNC(myb3k_state::kbd_set_data_and_interrupt));
+ MCFG_DEVICE_ADD("myb3k_keyboard", MYB3K_KEYBOARD, 0)
+ MCFG_MYB3K_KEYBOARD_CB(PUT(myb3k_state, kbd_set_data_and_interrupt))
/* Monitor */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(14'318'181) / 3, 600, 0, 600, 400, 0, 400);
- m_screen->set_screen_update("crtc", FUNC(h46505_device::screen_update));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(14'318'181) / 3, 600, 0, 600, 400, 0, 400)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", h46505_device, screen_update)
+MACHINE_CONFIG_END
-void myb3k_state::jb3000(machine_config &config)
-{
+MACHINE_CONFIG_START(myb3k_state::jb3000)
myb3k(config);
/* Keyboard */
- JB3000_KEYBOARD(config.replace(), m_kb, 0);
- m_kb->set_keyboard_callback(FUNC(myb3k_state::kbd_set_data_and_interrupt));
-}
+ MCFG_DEVICE_REPLACE("myb3k_keyboard", JB3000_KEYBOARD, 0)
+ MCFG_MYB3K_KEYBOARD_CB(PUT(myb3k_state, kbd_set_data_and_interrupt))
-void myb3k_state::stepone(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(myb3k_state::stepone)
myb3k(config);
/* Keyboard */
- STEPONE_KEYBOARD(config.replace(), m_kb, 0);
- m_kb->set_keyboard_callback(FUNC(myb3k_state::kbd_set_data_and_interrupt));
+ MCFG_DEVICE_REPLACE("myb3k_keyboard", STEPONE_KEYBOARD, 0)
+ MCFG_MYB3K_KEYBOARD_CB(PUT(myb3k_state, kbd_set_data_and_interrupt))
/* software lists */
- SOFTWARE_LIST(config, "stepone_flop_list").set_original("stepone_flop");
-}
+ MCFG_SOFTWARE_LIST_ADD("stepone_flop_list", "stepone_flop")
+MACHINE_CONFIG_END
/* ROM definitions, ROM area is 8 x 8Kb and can be populated with 2732 mask ROMs or 2764s */
ROM_START( myb3k )
diff --git a/src/mame/drivers/mycom.cpp b/src/mame/drivers/mycom.cpp
index 609dc44fe5a..e4a7e440c27 100644
--- a/src/mame/drivers/mycom.cpp
+++ b/src/mame/drivers/mycom.cpp
@@ -508,12 +508,11 @@ void mycom_state::init_mycom()
membank("boot")->configure_entries(0, 2, &RAM[0x0000], 0x10000);
}
-void mycom_state::mycom(machine_config &config)
-{
+MACHINE_CONFIG_START(mycom_state::mycom)
/* basic machine hardware */
- Z80(config, m_maincpu, 10_MHz_XTAL / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &mycom_state::mycom_map);
- m_maincpu->set_addrmap(AS_IO, &mycom_state::mycom_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, 10_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(mycom_map)
+ MCFG_DEVICE_IO_MAP(mycom_io)
I8255(config, m_ppi0);
m_ppi0->out_pa_callback().set(FUNC(mycom_state::mycom_04_w));
@@ -526,19 +525,19 @@ void mycom_state::mycom(machine_config &config)
m_ppi1->out_pc_callback().set(FUNC(mycom_state::mycom_0a_w));
I8255(config, m_ppi2);
- m_ppi2->in_pb_callback().set(m_rtc, FUNC(msm5832_device::data_r));
- m_ppi2->out_pb_callback().set(m_rtc, FUNC(msm5832_device::data_w));
+ m_ppi2->in_pb_callback().set("rtc", FUNC(msm5832_device::data_r));
+ m_ppi2->out_pb_callback().set("rtc", FUNC(msm5832_device::data_w));
m_ppi2->out_pc_callback().set(FUNC(mycom_state::mycom_rtc_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
- screen.set_size(640, 480);
- screen.set_visarea(0, 320-1, 0, 192-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 192-1)
PALETTE(config, m_palette, palette_device::MONOCHROME);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_mycom);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mycom)
/* Manual states clock is 1.008mhz for 40 cols, and 2.016 mhz for 80 cols.
The CRTC is a HD46505S - same as a 6845. The start registers need to be readable. */
@@ -552,19 +551,22 @@ void mycom_state::mycom(machine_config &config)
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05);
- SN76489(config, m_audio, 10_MHz_XTAL / 4).add_route(ALL_OUTPUTS, "mono", 1.50);
+ MCFG_DEVICE_ADD("sn1", SN76489, 10_MHz_XTAL / 4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.50)
/* Devices */
- MSM5832(config, m_rtc, 32.768_kHz_XTAL);
+ MCFG_DEVICE_ADD("rtc", MSM5832, 32.768_kHz_XTAL)
- CASSETTE(config, m_cass);
+ MCFG_CASSETTE_ADD("cassette")
FD1771(config, m_fdc, 16_MHz_XTAL / 16);
- FLOPPY_CONNECTOR(config, "fdc:0", mycom_floppies, "525sd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", mycom_floppies, "525sd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", mycom_floppies, "525sd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", mycom_floppies, "525sd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
- TIMER(config, "keyboard_timer").configure_periodic(FUNC(mycom_state::mycom_kbd), attotime::from_hz(20));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", mycom_state, mycom_kbd, attotime::from_hz(20))
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( mycom )
diff --git a/src/mame/drivers/mystston.cpp b/src/mame/drivers/mystston.cpp
index 691132bd391..9c8ececd21d 100644
--- a/src/mame/drivers/mystston.cpp
+++ b/src/mame/drivers/mystston.cpp
@@ -79,14 +79,14 @@ WRITE8_MEMBER(mystston_state::mystston_ay8910_select_w)
if (((*m_ay8910_select & 0x20) == 0x20) && ((data & 0x20) == 0x00))
{
/* bit 4 goes to the 8910 #0 BC1 pin */
- m_ay8910[0]->data_address_w(*m_ay8910_select >> 4, *m_ay8910_data);
+ m_ay8910[0]->data_address_w(space, *m_ay8910_select >> 4, *m_ay8910_data);
}
/* bit 7 goes to 8910 #1 BDIR pin */
if (((*m_ay8910_select & 0x80) == 0x80) && ((data & 0x80) == 0x00))
{
/* bit 6 goes to the 8910 #1 BC1 pin */
- m_ay8910[1]->data_address_w(*m_ay8910_select >> 6, *m_ay8910_data);
+ m_ay8910[1]->data_address_w(space, *m_ay8910_select >> 6, *m_ay8910_data);
}
*m_ay8910_select = data;
@@ -191,11 +191,11 @@ INPUT_PORTS_END
*
*************************************/
-void mystston_state::mystston(machine_config &config)
-{
+MACHINE_CONFIG_START(mystston_state::mystston)
+
/* basic machine hardware */
- M6502(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &mystston_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
/* video hardware */
mystston_video(config);
@@ -206,7 +206,7 @@ void mystston_state::mystston(machine_config &config)
AY8910(config, m_ay8910[0], AY8910_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.30);
AY8910(config, m_ay8910[1], AY8910_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mystwarr.cpp b/src/mame/drivers/mystwarr.cpp
index a9229f5adbf..ccf8a2721c7 100644
--- a/src/mame/drivers/mystwarr.cpp
+++ b/src/mame/drivers/mystwarr.cpp
@@ -566,7 +566,7 @@ WRITE8_MEMBER(mystwarr_state::sound_ctrl_w)
quite similar to xexex/gijoe/asterix's sound.
*/
-void mystwarr_state::martchmp_sound_map(address_map &map)
+void mystwarr_state::mystwarr_sound_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
map(0x8000, 0xbfff).bankr("z80bank");
@@ -574,6 +574,22 @@ void mystwarr_state::martchmp_sound_map(address_map &map)
map(0xc000, 0xdfff).ram();
map(0xe000, 0xe22f).rw(m_k054539_1, FUNC(k054539_device::read), FUNC(k054539_device::write));
map(0xe230, 0xe3ff).ram();
+ map(0xe400, 0xe62f).rw(m_k054539_2, FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0xe630, 0xe7ff).ram();
+ map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map));
+ map(0xf800, 0xf800).w(FUNC(mystwarr_state::sound_ctrl_w));
+ map(0xfff0, 0xfff3).nopw(); // unknown write
+}
+
+
+void mystwarr_state::martchmp_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("z80bank");
+ map(0x0000, 0xbfff).nopw();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe22f).rw("k054539", FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0xe230, 0xe3ff).ram();
map(0xe400, 0xe62f).noprw();
map(0xe630, 0xe7ff).ram();
map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map));
@@ -582,10 +598,9 @@ void mystwarr_state::martchmp_sound_map(address_map &map)
}
-void mystwarr_state::mystwarr_sound_map(address_map &map)
+void mystwarr_state::mystwarr_k054539_map(address_map &map)
{
- martchmp_sound_map(map);
- map(0xe400, 0xe62f).rw(m_k054539_2, FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0x000000, 0x3fffff).rom().region("k054539", 0);
}
@@ -908,9 +923,10 @@ MACHINE_RESET_MEMBER(mystwarr_state,metamrph)
MACHINE_RESET_MEMBER(mystwarr_state,martchmp)
{
int i;
+ k054539_device *k054539 = subdevice<k054539_device>("k054539");
// boost voice(chip 0 channel 4-7)
- for (i=4; i<=7; i++) m_k054539_1->set_gain(i, 1.4);
+ for (i=4; i<=7; i++) k054539->set_gain(i, 1.4);
}
MACHINE_RESET_MEMBER(mystwarr_state,gaiapols)
@@ -980,13 +996,13 @@ void mystwarr_state::mystwarr(machine_config &config)
K054321(config, m_k054321, "lspeaker", "rspeaker");
K054539(config, m_k054539_1, XTAL(18'432'000));
- m_k054539_1->set_device_rom_tag("k054539");
+ m_k054539_1->set_addrmap(0, &mystwarr_state::mystwarr_k054539_map);
m_k054539_1->timer_handler().set(FUNC(mystwarr_state::k054539_nmi_gen));
m_k054539_1->add_route(0, "rspeaker", 1.0); /* stereo channels are inverted */
m_k054539_1->add_route(1, "lspeaker", 1.0);
K054539(config, m_k054539_2, XTAL(18'432'000));
- m_k054539_2->set_device_rom_tag("k054539");
+ m_k054539_2->set_addrmap(0, &mystwarr_state::mystwarr_k054539_map);
m_k054539_2->add_route(0, "rspeaker", 1.0); /* stereo channels are inverted */
m_k054539_2->add_route(1, "lspeaker", 1.0);
}
@@ -1134,7 +1150,13 @@ void mystwarr_state::martchmp(machine_config &config)
m_k055673->set_sprite_callback(FUNC(mystwarr_state::martchmp_sprite_callback), this);
m_k055673->set_config("gfx2", K055673_LAYOUT_GX, -58, -23);
+ config.device_remove("k054539_1");
config.device_remove("k054539_2");
+
+ k054539_device &k054539(K054539(config, "k054539", XTAL(18'432'000)));
+ k054539.timer_handler().set(FUNC(mystwarr_state::k054539_nmi_gen));
+ k054539.add_route(0, "rspeaker", 1.0); /* stereo channels are inverted */
+ k054539.add_route(1, "lspeaker", 1.0);
}
/**********************************************************************************/
diff --git a/src/mame/drivers/myvision.cpp b/src/mame/drivers/myvision.cpp
index e4277bec8cd..66d6788c6d4 100644
--- a/src/mame/drivers/myvision.cpp
+++ b/src/mame/drivers/myvision.cpp
@@ -78,8 +78,8 @@ void myvision_state::myvision_mem(address_map &map)
map.unmap_value_high();
//AM_RANGE(0x0000, 0x5fff) // mapped by the cartslot
map(0xa000, 0xa7ff).ram();
- map(0xe000, 0xe000).rw("tms9918", FUNC(tms9918a_device::vram_read), FUNC(tms9918a_device::vram_write));
- map(0xe002, 0xe002).rw("tms9918", FUNC(tms9918a_device::register_read), FUNC(tms9918a_device::register_write));
+ map(0xe000, 0xe000).rw("tms9918", FUNC(tms9918a_device::vram_r), FUNC(tms9918a_device::vram_w));
+ map(0xe002, 0xe002).rw("tms9918", FUNC(tms9918a_device::register_r), FUNC(tms9918a_device::register_w));
}
@@ -140,7 +140,7 @@ INPUT_PORTS_END
void myvision_state::machine_start()
{
if (m_cart->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x5fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x5fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
save_item(NAME(m_column));
}
@@ -216,9 +216,9 @@ WRITE8_MEMBER( myvision_state::ay_port_b_w )
MACHINE_CONFIG_START(myvision_state::myvision)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(10'738'635)/3); /* Not verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &myvision_state::myvision_mem);
- m_maincpu->set_addrmap(AS_IO, &myvision_state::myvision_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(10'738'635)/3) /* Not verified */
+ MCFG_DEVICE_PROGRAM_MAP(myvision_mem)
+ MCFG_DEVICE_IO_MAP(myvision_io)
/* video hardware */
tms9918a_device &vdp(TMS9918A(config, "tms9918", XTAL(10'738'635))); /* Exact model not verified */
@@ -242,7 +242,7 @@ MACHINE_CONFIG_START(myvision_state::myvision)
//MCFG_GENERIC_MANDATORY
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("myvision");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","myvision")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/mz2000.cpp b/src/mame/drivers/mz2000.cpp
index 683678c6f63..05a52679b10 100644
--- a/src/mame/drivers/mz2000.cpp
+++ b/src/mame/drivers/mz2000.cpp
@@ -876,12 +876,11 @@ static void mz2000_floppies(device_slot_interface &device)
}
-void mz2000_state::mz2000(machine_config &config)
-{
+MACHINE_CONFIG_START(mz2000_state::mz2000)
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &mz2000_state::mz2000_map);
- m_maincpu->set_addrmap(AS_IO, &mz2000_state::mz2000_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, MASTER_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(mz2000_map)
+ MCFG_DEVICE_IO_MAP(mz2000_io)
i8255_device &ppi(I8255(config, "i8255_0"));
ppi.in_pa_callback().set(FUNC(mz2000_state::mz2000_porta_r));
@@ -904,44 +903,44 @@ void mz2000_state::mz2000(machine_config &config)
MB8877(config, m_mb8877a, 1_MHz_XTAL);
- FLOPPY_CONNECTOR(config, "mb8877a:0", mz2000_floppies, "dd", mz2000_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "mb8877a:1", mz2000_floppies, "dd", mz2000_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "mb8877a:2", mz2000_floppies, "dd", mz2000_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "mb8877a:3", mz2000_floppies, "dd", mz2000_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("mb8877a:0", mz2000_floppies, "dd", mz2000_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("mb8877a:1", mz2000_floppies, "dd", mz2000_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("mb8877a:2", mz2000_floppies, "dd", mz2000_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("mb8877a:3", mz2000_floppies, "dd", mz2000_state::floppy_formats)
- SOFTWARE_LIST(config, "flop_list").set_original("mz2000_flop");
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "mz2000_flop")
- CASSETTE(config, m_cass);
- m_cass->set_formats(mz700_cassette_formats);
- m_cass->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
- m_cass->set_interface("mz_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(mz700_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("mz_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("mz2000_cass");
+ MCFG_SOFTWARE_LIST_ADD("cass_list","mz2000_cass")
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(640, 480);
- m_screen->set_visarea(0, 640-1, 0, 400-1);
- m_screen->set_screen_update(FUNC(mz2000_state::screen_update_mz2000));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, "gfxdecode", m_palette, gfx_mz2000);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1)
+ MCFG_SCREEN_UPDATE_DRIVER(mz2000_state, screen_update_mz2000)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mz2000)
PALETTE(config, m_palette, palette_device::BRG_3BIT);
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
BEEP(config, "beeper", 4096).add_route(ALL_OUTPUTS,"mono",0.15);
-}
+MACHINE_CONFIG_END
-void mz2000_state::mz80b(machine_config &config)
-{
+MACHINE_CONFIG_START(mz2000_state::mz80b)
mz2000(config);
- m_maincpu->set_addrmap(AS_IO, &mz2000_state::mz80b_io);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(mz80b_io)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mz2500.cpp b/src/mame/drivers/mz2500.cpp
index 514481eb977..73bbf18b4d4 100644
--- a/src/mame/drivers/mz2500.cpp
+++ b/src/mame/drivers/mz2500.cpp
@@ -1787,14 +1787,13 @@ static void mz2500_floppies(device_slot_interface &device)
device.option_add("dd", FLOPPY_35_DD);
}
-void mz2500_state::mz2500(machine_config &config)
-{
+MACHINE_CONFIG_START(mz2500_state::mz2500)
/* basic machine hardware */
- Z80(config, m_maincpu, 6000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &mz2500_state::mz2500_map);
- m_maincpu->set_addrmap(AS_IO, &mz2500_state::mz2500_io);
- m_maincpu->set_vblank_int("screen", FUNC(mz2500_state::mz2500_vbl));
- m_maincpu->set_irq_acknowledge_callback(FUNC(mz2500_state::mz2500_irq_ack));
+ MCFG_DEVICE_ADD("maincpu", Z80, 6000000)
+ MCFG_DEVICE_PROGRAM_MAP(mz2500_map)
+ MCFG_DEVICE_IO_MAP(mz2500_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mz2500_state, mz2500_vbl)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(mz2500_state,mz2500_irq_ack)
for (int bank = 0; bank < 8; bank++)
{
@@ -1829,18 +1828,18 @@ void mz2500_state::mz2500(machine_config &config)
MB8877(config, m_fdc, 1_MHz_XTAL);
- FLOPPY_CONNECTOR(config, "mb8877a:0", mz2500_floppies, "dd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "mb8877a:1", mz2500_floppies, "dd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "mb8877a:2", mz2500_floppies, "dd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "mb8877a:3", mz2500_floppies, "dd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("mb8877a:0", mz2500_floppies, "dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("mb8877a:1", mz2500_floppies, "dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("mb8877a:2", mz2500_floppies, "dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("mb8877a:3", mz2500_floppies, "dd", floppy_image_device::default_floppy_formats)
- SOFTWARE_LIST(config, "flop_list").set_original("mz2500");
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "mz2500")
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(21'477'272, 640+108, 0, 640, 480, 0, 200); //unknown clock / divider
- m_screen->set_screen_update(FUNC(mz2500_state::screen_update_mz2500));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(21'477'272, 640+108, 0, 640, 480, 0, 200) //unknown clock / divider
+ MCFG_SCREEN_UPDATE_DRIVER(mz2500_state, screen_update_mz2500)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(mz2500_state::mz2500_palette), 0x200);
@@ -1858,8 +1857,9 @@ void mz2500_state::mz2500(machine_config &config)
ym.add_route(2, "mono", 0.50);
ym.add_route(3, "mono", 0.50);
- BEEP(config, m_beeper, 4096).add_route(ALL_OUTPUTS,"mono",0.50);
-}
+ MCFG_DEVICE_ADD("beeper", BEEP, 4096)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.50)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mz3500.cpp b/src/mame/drivers/mz3500.cpp
index 6c965638dcc..42040e8d6f8 100644
--- a/src/mame/drivers/mz3500.cpp
+++ b/src/mame/drivers/mz3500.cpp
@@ -809,18 +809,18 @@ static void mz3500_floppies(device_slot_interface &device)
}
/* TODO: clocks */
-void mz3500_state::mz3500(machine_config &config)
-{
+MACHINE_CONFIG_START(mz3500_state::mz3500)
+
/* basic machine hardware */
- Z80(config, m_master, MAIN_CLOCK/2);
- m_master->set_addrmap(AS_PROGRAM, &mz3500_state::mz3500_master_map);
- m_master->set_addrmap(AS_IO, &mz3500_state::mz3500_master_io);
+ MCFG_DEVICE_ADD("master",Z80,MAIN_CLOCK/2)
+ MCFG_DEVICE_PROGRAM_MAP(mz3500_master_map)
+ MCFG_DEVICE_IO_MAP(mz3500_master_io)
- Z80(config, m_slave, MAIN_CLOCK/2);
- m_slave->set_addrmap(AS_PROGRAM, &mz3500_state::mz3500_slave_map);
- m_slave->set_addrmap(AS_IO, &mz3500_state::mz3500_slave_io);
+ MCFG_DEVICE_ADD("slave",Z80,MAIN_CLOCK/2)
+ MCFG_DEVICE_PROGRAM_MAP(mz3500_slave_map)
+ MCFG_DEVICE_IO_MAP(mz3500_slave_io)
- config.m_perfect_cpu_quantum = subtag("master");
+ MCFG_QUANTUM_PERFECT_CPU("master")
i8255_device &ppi(I8255A(config, "i8255"));
ppi.out_pa_callback().set(FUNC(mz3500_state::mz3500_pa_w));
@@ -829,29 +829,29 @@ void mz3500_state::mz3500(machine_config &config)
UPD765A(config, m_fdc, 8'000'000, true, true);
m_fdc->intrq_wr_callback().set_inputline(m_master, INPUT_LINE_IRQ0);
- FLOPPY_CONNECTOR(config, "upd765a:0", mz3500_floppies, "525ssdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765a:1", mz3500_floppies, "525ssdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765a:2", mz3500_floppies, "525ssdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765a:3", mz3500_floppies, "525ssdd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("upd765a:0", mz3500_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765a:1", mz3500_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765a:2", mz3500_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765a:3", mz3500_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
UPD7220(config, m_hgdc1, MAIN_CLOCK/5);
m_hgdc1->set_addrmap(0, &mz3500_state::upd7220_1_map);
- m_hgdc1->set_draw_text(FUNC(mz3500_state::hgdc_draw_text));
+ m_hgdc1->set_draw_text_callback(FUNC(mz3500_state::hgdc_draw_text), this);
m_hgdc1->vsync_wr_callback().set(m_hgdc2, FUNC(upd7220_device::ext_sync_w));
UPD7220(config, m_hgdc2, MAIN_CLOCK/5);
m_hgdc2->set_addrmap(0, &mz3500_state::upd7220_2_map);
- m_hgdc2->set_display_pixels(FUNC(mz3500_state::hgdc_display_pixels));
+ m_hgdc2->set_display_pixels_callback(FUNC(mz3500_state::hgdc_display_pixels), this);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_screen_update(FUNC(mz3500_state::screen_update));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_UPDATE_DRIVER(mz3500_state, screen_update)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_mz3500);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mz3500)
PALETTE(config, m_palette, palette_device::BRG_3BIT);
@@ -859,7 +859,7 @@ void mz3500_state::mz3500(machine_config &config)
SPEAKER(config, "mono").front_center();
BEEP(config, m_beeper, 2400).add_route(ALL_OUTPUTS, "mono", 0.15);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/mz6500.cpp b/src/mame/drivers/mz6500.cpp
index b26540cd920..c0db3e4506a 100644
--- a/src/mame/drivers/mz6500.cpp
+++ b/src/mame/drivers/mz6500.cpp
@@ -149,32 +149,31 @@ void mz6500_state::upd7220_map(address_map &map)
}
-void mz6500_state::mz6500(machine_config &config)
-{
+MACHINE_CONFIG_START(mz6500_state::mz6500)
/* basic machine hardware */
- I8086(config, m_maincpu, 8000000); //unk clock
- m_maincpu->set_addrmap(AS_PROGRAM, &mz6500_state::mz6500_map);
- m_maincpu->set_addrmap(AS_IO, &mz6500_state::mz6500_io);
+ MCFG_DEVICE_ADD("maincpu", I8086, 8000000) //unk clock
+ MCFG_DEVICE_PROGRAM_MAP(mz6500_map)
+ MCFG_DEVICE_IO_MAP(mz6500_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update("upd7220", FUNC(upd7220_device::screen_update));
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- PALETTE(config, "palette").set_entries(8);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DEVICE("upd7220", upd7220_device, screen_update)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_PALETTE_ADD("palette", 8)
/* Devices */
UPD7220(config, m_hgdc, 8000000/6); // unk clock
m_hgdc->set_addrmap(0, &mz6500_state::upd7220_map);
- m_hgdc->set_display_pixels(FUNC(mz6500_state::hgdc_display_pixels));
+ m_hgdc->set_display_pixels_callback(FUNC(mz6500_state::hgdc_display_pixels), this);
UPD765A(config, m_fdc, 8000000, true, true);
- FLOPPY_CONNECTOR(config, "upd765:0", mz6500_floppies, "525hd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765:1", mz6500_floppies, "525hd", floppy_image_device::default_floppy_formats);
-}
+ MCFG_FLOPPY_DRIVE_ADD("upd765:0", mz6500_floppies, "525hd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765:1", mz6500_floppies, "525hd", floppy_image_device::default_floppy_formats)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( mz6500 )
diff --git a/src/mame/drivers/mz700.cpp b/src/mame/drivers/mz700.cpp
index 09b1625cd39..4affb3ddcee 100644
--- a/src/mame/drivers/mz700.cpp
+++ b/src/mame/drivers/mz700.cpp
@@ -189,7 +189,7 @@ void mz_state::mz800_io(address_map &map)
map(0xeb, 0xeb).w(FUNC(mz_state::mz800_ramaddr_w));
map(0xf0, 0xf0).portr("atari_joy1").w(FUNC(mz_state::mz800_palette_w));
map(0xf1, 0xf1).portr("atari_joy2");
- map(0xf2, 0xf2).w("sn76489n", FUNC(sn76489_device::write));
+ map(0xf2, 0xf2).w("sn76489n", FUNC(sn76489_device::command_w));
map(0xfc, 0xff).rw("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
}
@@ -372,25 +372,24 @@ GFXDECODE_END
MACHINE DRIVERS
***************************************************************************/
-void mz_state::mz700(machine_config &config)
-{
+MACHINE_CONFIG_START(mz_state::mz700)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(17'734'470)/5);
- m_maincpu->set_addrmap(AS_PROGRAM, &mz_state::mz700_mem);
- m_maincpu->set_addrmap(AS_IO, &mz_state::mz700_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(17'734'470)/5)
+ MCFG_DEVICE_PROGRAM_MAP(mz700_mem)
+ MCFG_DEVICE_IO_MAP(mz700_io)
ADDRESS_MAP_BANK(config, "banke").set_map(&mz_state::mz700_banke).set_options(ENDIANNESS_LITTLE, 8, 16, 0x2000);
MCFG_MACHINE_RESET_OVERRIDE(mz_state, mz700)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(17'734'470)/2, 568, 0, 40*8, 312, 0, 25*8);
- m_screen->set_screen_update(FUNC(mz_state::screen_update_mz700));
- m_screen->set_palette(m_palette);
-
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(17'734'470)/2, 568, 0, 40*8, 312, 0, 25*8)
+ MCFG_SCREEN_UPDATE_DRIVER(mz_state, screen_update_mz700)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, palette_device::RGB_3BIT);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_mz700);
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mz700)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -398,8 +397,8 @@ void mz_state::mz700(machine_config &config)
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
/* ne556 timers */
- TIMER(config, "cursor").configure_periodic(FUNC(mz_state::ne556_cursor_callback), attotime::from_hz(1.5));
- TIMER(config, "other").configure_periodic(FUNC(mz_state::ne556_other_callback), attotime::from_hz(34.5));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("cursor", mz_state, ne556_cursor_callback, attotime::from_hz(1.5))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("other", mz_state, ne556_other_callback, attotime::from_hz(34.5))
/* devices */
PIT8253(config, m_pit, 0);
@@ -418,38 +417,40 @@ void mz_state::mz700(machine_config &config)
TTL74145(config, m_ls145);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(mz700_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("mz_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(mz700_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("mz_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("mz700_cass");
+ MCFG_SOFTWARE_LIST_ADD("cass_list","mz700_cass")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K");
-}
+MACHINE_CONFIG_END
-void mz_state::mz800(machine_config &config)
-{
+MACHINE_CONFIG_START(mz_state::mz800)
mz700(config);
- config.device_remove("banke");
+ MCFG_DEVICE_REMOVE("banke")
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &mz_state::mz800_mem);
- m_maincpu->set_addrmap(AS_IO, &mz_state::mz800_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mz800_mem)
+ MCFG_DEVICE_IO_MAP(mz800_io)
ADDRESS_MAP_BANK(config, "bankf").set_map(&mz_state::mz800_bankf).set_options(ENDIANNESS_LITTLE, 8, 16, 0x2000);
MCFG_MACHINE_RESET_OVERRIDE(mz_state, mz800)
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_mz800);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_mz800)
- m_screen->set_screen_update(FUNC(mz_state::screen_update_mz800));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(mz_state, screen_update_mz800)
- SN76489(config, "sn76489n", XTAL(17'734'470)/5).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("sn76489n", SN76489, XTAL(17'734'470)/5)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- config.device_remove("cass_list");
- SOFTWARE_LIST(config, "cass_list").set_original("mz800_cass");
+ MCFG_DEVICE_REMOVE("cass_list")
+ MCFG_SOFTWARE_LIST_ADD("cass_list","mz800_cass")
/* devices */
m_pit->set_clk<0>(XTAL(17'734'470)/16);
@@ -460,11 +461,10 @@ void mz_state::mz800(machine_config &config)
pio.out_pa_callback().set(FUNC(mz_state::mz800_z80pio_port_a_w));
pio.out_pb_callback().set("cent_data_out", FUNC(output_latch_device::bus_w));
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
-}
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/mz80.cpp b/src/mame/drivers/mz80.cpp
index e54591a6114..78a4aaeaba7 100644
--- a/src/mame/drivers/mz80.cpp
+++ b/src/mame/drivers/mz80.cpp
@@ -277,25 +277,24 @@ TIMER_DEVICE_CALLBACK_MEMBER(mz80_state::ne555_tempo_callback)
m_mz80k_tempo_strobe ^= 1;
}
-void mz80_state::mz80k(machine_config &config)
-{
+MACHINE_CONFIG_START(mz80_state::mz80k)
/* basic machine hardware */
/* main CPU */
- Z80(config, m_maincpu, XTAL(8'000'000) / 4); /* 2 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &mz80_state::mz80k_mem);
- m_maincpu->set_addrmap(AS_IO, &mz80_state::mz80k_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(8'000'000) / 4) /* 2 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(mz80k_mem)
+ MCFG_DEVICE_IO_MAP(mz80k_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(320, 200);
- screen.set_visarea(0, 319, 0, 199);
- screen.set_screen_update(FUNC(mz80_state::screen_update_mz80k));
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_mz80k);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(320, 200)
+ MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 199)
+ MCFG_SCREEN_UPDATE_DRIVER(mz80_state, screen_update_mz80k)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mz80k)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* Audio */
@@ -318,26 +317,24 @@ void mz80_state::mz80k(machine_config &config)
m_pit->set_clk<2>(0);
m_pit->out_handler<2>().set(FUNC(mz80_state::pit_out2_changed));
- TIMER(config, "tempo").configure_periodic(FUNC(mz80_state::ne555_tempo_callback), attotime::from_hz(34));
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(mz700_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("tempo", mz80_state, ne555_tempo_callback, attotime::from_hz(34))
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(mz700_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
+MACHINE_CONFIG_END
-void mz80_state::mz80kj(machine_config &config)
-{
+MACHINE_CONFIG_START(mz80_state::mz80kj)
mz80k(config);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(mz80_state, screen_update_mz80kj)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_mz80kj)
+MACHINE_CONFIG_END
- subdevice<screen_device>("screen")->set_screen_update(FUNC(mz80_state::screen_update_mz80kj));
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_mz80kj);
-}
-
-void mz80_state::mz80a(machine_config &config)
-{
+MACHINE_CONFIG_START(mz80_state::mz80a)
mz80k(config);
-
- subdevice<screen_device>("screen")->set_screen_update(FUNC(mz80_state::screen_update_mz80a));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(mz80_state, screen_update_mz80a)
+MACHINE_CONFIG_END
ROM_START( mz80k )
diff --git a/src/mame/drivers/mzr8105.cpp b/src/mame/drivers/mzr8105.cpp
index 76d5fb7af3f..a029c2a45c4 100644
--- a/src/mame/drivers/mzr8105.cpp
+++ b/src/mame/drivers/mzr8105.cpp
@@ -208,13 +208,13 @@ static void mzr8105_vme_cards(device_slot_interface &device)
/*
* Machine configuration
*/
-void mzr8105_state::mzr8105(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(10'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &mzr8105_state::mzr8105_mem);
- VME(config, "vme", 0).use_owner_spaces();
- VME_SLOT(config, "slot1", mzr8105_vme_cards, "mzr8300", 1, "vme");
-}
+MACHINE_CONFIG_START(mzr8105_state::mzr8105)
+ MCFG_DEVICE_ADD ("maincpu", M68000, XTAL(10'000'000))
+ MCFG_DEVICE_PROGRAM_MAP (mzr8105_mem)
+ MCFG_VME_DEVICE_ADD("vme")
+ MCFG_VME_BUS_OWNER_SPACES()
+ MCFG_VME_SLOT_ADD ("vme", 1, mzr8105_vme_cards, "mzr8300")
+MACHINE_CONFIG_END
/* ROM definitions */
/* mzr8300 UPD7201 init sequence
diff --git a/src/mame/drivers/nakajies.cpp b/src/mame/drivers/nakajies.cpp
index f95f0244270..e6b91e59e4c 100644
--- a/src/mame/drivers/nakajies.cpp
+++ b/src/mame/drivers/nakajies.cpp
@@ -750,18 +750,17 @@ static GFXDECODE_START( gfx_drwrt400 )
GFXDECODE_ENTRY( "bios", 0x580b6, nakajies_charlayout, 0, 1 )
GFXDECODE_END
-void nakajies_state::nakajies210(machine_config &config)
-{
- V20(config, m_maincpu, X301 / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &nakajies_state::nakajies_map);
- m_maincpu->set_addrmap(AS_IO, &nakajies_state::nakajies_io_map);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50); /* Wild guess */
- screen.set_screen_update(FUNC(nakajies_state::screen_update));
- screen.set_size(80 * 6, 8 * 8);
- screen.set_visarea(0, 6 * 80 - 1, 0, 8 * 8 - 1);
- screen.set_palette("palette");
+MACHINE_CONFIG_START(nakajies_state::nakajies210)
+ MCFG_DEVICE_ADD( "v20hl", V20, X301 / 2 )
+ MCFG_DEVICE_PROGRAM_MAP( nakajies_map)
+ MCFG_DEVICE_IO_MAP( nakajies_io_map)
+
+ MCFG_SCREEN_ADD( "screen", LCD )
+ MCFG_SCREEN_REFRESH_RATE( 50 ) /* Wild guess */
+ MCFG_SCREEN_UPDATE_DRIVER( nakajies_state, screen_update )
+ MCFG_SCREEN_SIZE( 80 * 6, 8 * 8 )
+ MCFG_SCREEN_VISIBLE_AREA( 0, 6 * 80 - 1, 0, 8 * 8 - 1 )
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_wales210);
PALETTE(config, "palette", FUNC(nakajies_state::nakajies_palette), 2);
@@ -773,28 +772,26 @@ void nakajies_state::nakajies210(machine_config &config)
/* rtc */
RP5C01(config, "rtc", XTAL(32'768));
- TIMER(config, "kb_timer").configure_periodic(FUNC(nakajies_state::kb_timer), attotime::from_hz(250));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("kb_timer", nakajies_state, kb_timer, attotime::from_hz(250))
+MACHINE_CONFIG_END
-void nakajies_state::dator3k(machine_config &config)
-{
+MACHINE_CONFIG_START(nakajies_state::dator3k)
nakajies210(config);
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_dator3k);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_dator3k)
+MACHINE_CONFIG_END
-void nakajies_state::nakajies220(machine_config &config)
-{
+MACHINE_CONFIG_START(nakajies_state::nakajies220)
nakajies210(config);
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_drwrt400);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_drwrt400)
+MACHINE_CONFIG_END
-void nakajies_state::nakajies250(machine_config &config)
-{
+MACHINE_CONFIG_START(nakajies_state::nakajies250)
nakajies210(config);
- subdevice<screen_device>("screen")->set_size(80 * 6, 16 * 8);
- subdevice<screen_device>("screen")->set_visarea(0, 6 * 80 - 1, 0, 16 * 8 - 1);
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_drwrt200);
-}
+ MCFG_SCREEN_MODIFY( "screen" )
+ MCFG_SCREEN_SIZE( 80 * 6, 16 * 8 )
+ MCFG_SCREEN_VISIBLE_AREA( 0, 6 * 80 - 1, 0, 16 * 8 - 1 )
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_drwrt200)
+MACHINE_CONFIG_END
ROM_START(wales210)
diff --git a/src/mame/drivers/namcofl.cpp b/src/mame/drivers/namcofl.cpp
index f5ff7c0df01..62e2f0b45fb 100644
--- a/src/mame/drivers/namcofl.cpp
+++ b/src/mame/drivers/namcofl.cpp
@@ -553,31 +553,30 @@ MACHINE_RESET_MEMBER(namcofl_state,namcofl)
}
-void namcofl_state::namcofl(machine_config &config)
-{
- I960(config, m_maincpu, 80_MHz_XTAL/4); // i80960KA-20 == 20 MHz part
- m_maincpu->set_addrmap(AS_PROGRAM, &namcofl_state::namcofl_mem);
+MACHINE_CONFIG_START(namcofl_state::namcofl)
+ MCFG_DEVICE_ADD("maincpu", I960, 80_MHz_XTAL/4) // i80960KA-20 == 20 MHz part
+ MCFG_DEVICE_PROGRAM_MAP(namcofl_mem)
- NAMCO_C75(config, m_mcu, 48.384_MHz_XTAL/3);
- m_mcu->set_addrmap(AS_PROGRAM, &namcofl_state::namcoc75_am);
- m_mcu->set_addrmap(AS_IO, &namcofl_state::namcoc75_io);
+ MCFG_DEVICE_ADD("mcu", NAMCO_C75, 48.384_MHz_XTAL/3)
+ MCFG_DEVICE_PROGRAM_MAP(namcoc75_am)
+ MCFG_DEVICE_IO_MAP(namcoc75_io)
/* TODO: irq generation for these */
- TIMER(config, "mcu_irq0").configure_periodic(FUNC(namcofl_state::mcu_irq0_cb), attotime::from_hz(60));
- TIMER(config, "mcu_irq2").configure_periodic(FUNC(namcofl_state::mcu_irq2_cb), attotime::from_hz(60));
- TIMER(config, "mcu_adc").configure_periodic(FUNC(namcofl_state::mcu_adc_cb), attotime::from_hz(60));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_irq0", namcofl_state, mcu_irq0_cb, attotime::from_hz(60))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_irq2", namcofl_state, mcu_irq2_cb, attotime::from_hz(60))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_adc", namcofl_state, mcu_adc_cb, attotime::from_hz(60))
MCFG_MACHINE_START_OVERRIDE(namcofl_state,namcofl)
MCFG_MACHINE_RESET_OVERRIDE(namcofl_state,namcofl)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(NAMCOFL_HTOTAL, NAMCOFL_VTOTAL);
- m_screen->set_visarea(0, NAMCOFL_HBSTART-1, 0, NAMCOFL_VBSTART-1);
- m_screen->set_screen_update(FUNC(namcofl_state::screen_update_namcofl));
- m_screen->set_palette(m_c116);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(NAMCOFL_HTOTAL, NAMCOFL_VTOTAL)
+ MCFG_SCREEN_VISIBLE_AREA(0, NAMCOFL_HBSTART-1, 0, NAMCOFL_VBSTART-1)
+ MCFG_SCREEN_UPDATE_DRIVER(namcofl_state, screen_update_namcofl)
+ MCFG_SCREEN_PALETTE(m_c116)
- GFXDECODE(config, "gfxdecode", m_c116, gfx_namcofl);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_c116, gfx_namcofl)
NAMCO_C169ROZ(config, m_c169roz, 0);
m_c169roz->set_palette(m_c116);
@@ -606,12 +605,12 @@ void namcofl_state::namcofl(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- c352_device &c352(C352(config, "c352", 48.384_MHz_XTAL/2, 288));
- c352.add_route(0, "lspeaker", 1.00);
- c352.add_route(1, "rspeaker", 1.00);
- //c352.add_route(2, "lspeaker", 1.00); // Second DAC not present.
- //c352.add_route(3, "rspeaker", 1.00);
-}
+ MCFG_DEVICE_ADD("c352", C352, 48.384_MHz_XTAL/2, 288)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
+ //MCFG_SOUND_ROUTE(2, "lspeaker", 1.00) // Second DAC not present.
+ //MCFG_SOUND_ROUTE(3, "rspeaker", 1.00)
+MACHINE_CONFIG_END
ROM_START( speedrcr )
ROM_REGION( 0x200000, "maincpu", 0 ) // i960 program
diff --git a/src/mame/drivers/namcona1.cpp b/src/mame/drivers/namcona1.cpp
index 32086e989ee..f8553076ba8 100644
--- a/src/mame/drivers/namcona1.cpp
+++ b/src/mame/drivers/namcona1.cpp
@@ -622,12 +622,30 @@ WRITE16_MEMBER(namcona1_state::na1mcu_shared_w)
COMBINE_DATA(&m_workram[offset]);
}
+READ16_MEMBER(namcona1_state::snd_r)
+{
+ /* can't use DEVREADWRITE8 for this because it is opposite endianness to the CPU for some reason */
+ return m_c140->c140_r(space,offset*2+1) | m_c140->c140_r(space,offset*2)<<8;
+}
+
+WRITE16_MEMBER(namcona1_state::snd_w)
+{
+ /* can't use DEVREADWRITE8 for this because it is opposite endianness to the CPU for some reason */
+ if (ACCESSING_BITS_0_7)
+ {
+ m_c140->c140_w(space,(offset*2)+1, data);
+ }
+
+ if (ACCESSING_BITS_8_15)
+ {
+ m_c140->c140_w(space,(offset*2), data>>8);
+ }
+}
+
void namcona1_state::namcona1_mcu_map(address_map &map)
{
map(0x000800, 0x000fff).rw(FUNC(namcona1_state::mcu_mailbox_r), FUNC(namcona1_state::mcu_mailbox_w_mcu)); // "Mailslot" communications ports
- map(0x001000, 0x001fff).lrw8("c219_rw",
- [this](offs_t offset) { return m_c140->c140_r(offset ^ 1)/* need ^ 1 because endian issue */; },
- [this](offs_t offset, u8 data) { m_c140->c140_w(offset ^ 1, data); }); // C140-alike sound chip
+ map(0x001000, 0x001fff).rw(FUNC(namcona1_state::snd_r), FUNC(namcona1_state::snd_w)); // C140-alike sound chip
map(0x002000, 0x002fff).rw(FUNC(namcona1_state::na1mcu_shared_r), FUNC(namcona1_state::na1mcu_shared_w)); // mirror of first page of shared work RAM
map(0x003000, 0x00afff).ram(); // there is a 32k RAM chip according to CGFM
map(0x200000, 0x27ffff).rw(FUNC(namcona1_state::na1mcu_shared_r), FUNC(namcona1_state::na1mcu_shared_w)); // shared work RAM
@@ -1025,7 +1043,7 @@ void xday2_namcona2_state::xday2(machine_config &config)
EEPROM_2864(config, "eeprom");
// TODO: unknown sub type
- MSM6242(config, "rtc", XTAL(32'768));
+ MSM6242(config,"rtc", XTAL(32'768));
}
/* NA-1 Hardware */
diff --git a/src/mame/drivers/namconb1.cpp b/src/mame/drivers/namconb1.cpp
index b41b05c7eba..eacff54e35a 100644
--- a/src/mame/drivers/namconb1.cpp
+++ b/src/mame/drivers/namconb1.cpp
@@ -1036,23 +1036,22 @@ void namconb1_state::machine_reset()
/***************************************************************/
-void namconb1_state::namconb1(machine_config &config)
-{
- M68EC020(config, m_maincpu, MASTER_CLOCK/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &namconb1_state::namconb1_am);
+MACHINE_CONFIG_START(namconb1_state::namconb1)
+ MCFG_DEVICE_ADD("maincpu", M68EC020, MASTER_CLOCK/2)
+ MCFG_DEVICE_PROGRAM_MAP(namconb1_am)
- NAMCO_C75(config, m_mcu, MASTER_CLOCK/3);
- m_mcu->set_addrmap(AS_PROGRAM, &namconb1_state::namcoc75_am);
- m_mcu->set_addrmap(AS_IO, &namconb1_state::namcoc75_io);
+ MCFG_DEVICE_ADD("mcu", NAMCO_C75, MASTER_CLOCK/3)
+ MCFG_DEVICE_PROGRAM_MAP(namcoc75_am)
+ MCFG_DEVICE_IO_MAP(namcoc75_io)
EEPROM_2816(config, "eeprom");
- TIMER(config, "scantimer").configure_scanline(FUNC(namconb1_state::scantimer), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namconb1_state, scantimer, "screen", 0, 1)
// has to be 60 hz or music will go crazy in nebulray, vshoot, gslugrs*
- TIMER(config, "mcu_irq0").configure_periodic(FUNC(namconb1_state::mcu_irq0_cb), attotime::from_hz(60));
- TIMER(config, "mcu_irq2").configure_periodic(FUNC(namconb1_state::mcu_irq2_cb), attotime::from_hz(60));
- TIMER(config, "mcu_adc").configure_periodic(FUNC(namconb1_state::mcu_adc_cb), attotime::from_hz(60));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_irq0", namconb1_state, mcu_irq0_cb, attotime::from_hz(60))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_irq2", namconb1_state, mcu_irq2_cb, attotime::from_hz(60))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_adc", namconb1_state, mcu_adc_cb, attotime::from_hz(60))
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(MASTER_CLOCK/8, 384, 0, 288, 264, 0, 224);
@@ -1083,19 +1082,18 @@ void namconb1_state::namconb1(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
-
- c352_device &c352(C352(config, "c352", MASTER_CLOCK/2, 288));
- c352.add_route(0, "lspeaker", 1.00);
- c352.add_route(1, "rspeaker", 1.00);
- //c352.add_route(2, "lspeaker", 1.00); // Second DAC not present.
- //c352.add_route(3, "rspeaker", 1.00);
-}
-
-void namconb1_state::namconb2(machine_config &config)
-{
+ MCFG_DEVICE_ADD("c352", C352, MASTER_CLOCK/2, 288)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
+ //MCFG_SOUND_ROUTE(2, "lspeaker", 1.00) // Second DAC not present.
+ //MCFG_SOUND_ROUTE(3, "rspeaker", 1.00)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(namconb1_state::namconb2)
namconb1(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &namconb1_state::namconb2_am);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(namconb2_am)
m_screen->set_screen_update(FUNC(namconb1_state::screen_update_namconb2));
@@ -1104,10 +1102,9 @@ void namconb1_state::namconb2(machine_config &config)
m_c169roz->set_is_namcofl(false);
m_c169roz->set_ram_words(0x20000/2);
m_c169roz->set_color_base(0x1800);
-}
+MACHINE_CONFIG_END
-void namconb1_state::machbrkr(machine_config &config)
-{
+MACHINE_CONFIG_START(namconb1_state::machbrkr)
namconb2(config);
m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&namconb1_state::NB2TilemapCB_machbrkr, this));
@@ -1117,10 +1114,9 @@ void namconb1_state::machbrkr(machine_config &config)
m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate(&namconb1_state::NB2objcode2tile_machbrkr, this));
MCFG_VIDEO_START_OVERRIDE(namconb1_state,machbrkr)
-}
+MACHINE_CONFIG_END
-void namconb1_state::outfxies(machine_config &config)
-{
+MACHINE_CONFIG_START(namconb1_state::outfxies)
namconb2(config);
m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&namconb1_state::NB2TilemapCB_outfxies, this));
@@ -1130,7 +1126,7 @@ void namconb1_state::outfxies(machine_config &config)
m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate(&namconb1_state::NB2objcode2tile_outfxies, this));
MCFG_VIDEO_START_OVERRIDE(namconb1_state,outfxies)
-}
+MACHINE_CONFIG_END
/***************************************************************/
diff --git a/src/mame/drivers/namcond1.cpp b/src/mame/drivers/namcond1.cpp
index df2642001aa..1c5a8027c14 100644
--- a/src/mame/drivers/namcond1.cpp
+++ b/src/mame/drivers/namcond1.cpp
@@ -10,14 +10,13 @@
Walter Fath
abcheck TODOs:
- - Ending has a rowscroll GFX bug;
+ - GFX rom banking is a mystery (bad ROMs? Encryption?)
- Where is the extra data ROM mapped?
gynotai TODOs:
- - printer (disable it in service mode to suppress POST error);
+ - printer (disable it in service mode);
- ball sensors aren't understood;
- - Seems to dislike our YGV608 row/colscroll handling
- (for example vertical bounding box is halved offset & size wise for Pac-Man goal stage);
+ - Seems to dislike our YGV608 row/colscroll handling;
To make abcheck run when the EEPROM is clear:
- F2 to enter service mode
@@ -368,19 +367,19 @@ WRITE_LINE_MEMBER( namcond1_state::raster_irq_w )
m_maincpu->set_input_line(2, state ? ASSERT_LINE : CLEAR_LINE);
}
-void namcond1_state::namcond1(machine_config &config)
-{
+MACHINE_CONFIG_START(namcond1_state::namcond1)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(49'152'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &namcond1_state::namcond1_map);
-// m_maincpu->set_vblank_int("screen", FUNC(namcond1_state::irq1_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(49'152'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(namcond1_map)
+// MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcond1_state, irq1_line_hold)
- H83002(config, m_mcu, XTAL(49'152'000)/3 );
- m_mcu->set_addrmap(AS_PROGRAM, &namcond1_state::nd1h8rwmap);
- m_mcu->set_addrmap(AS_IO, &namcond1_state::nd1h8iomap);
- m_mcu->set_vblank_int("screen", FUNC(namcond1_state::mcu_interrupt));
+ MCFG_DEVICE_ADD("mcu", H83002, XTAL(49'152'000)/3 )
+ MCFG_DEVICE_PROGRAM_MAP( nd1h8rwmap)
+ MCFG_DEVICE_IO_MAP( nd1h8iomap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcond1_state, mcu_interrupt)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
YGV608(config, m_ygv608, 0);
m_ygv608->set_palette("palette");
@@ -389,39 +388,39 @@ void namcond1_state::namcond1(machine_config &config)
m_ygv608->set_screen("screen");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ MCFG_SCREEN_ADD("screen", RASTER)
/*
H 804 108 576 48 32
V 261 26 224 3 0
*/
- screen.set_raw( XTAL(49'152'000)/8, 804/2, 108/2, (108+576)/2, 261, 26, 26+224);
- screen.set_screen_update("ygv608", FUNC(ygv608_device::update_screen));
- screen.set_palette("palette");
+ MCFG_SCREEN_RAW_PARAMS( XTAL(49'152'000)/8, 804/2, 108/2, (108+576)/2, 261, 26, 26+224)
+ MCFG_SCREEN_UPDATE_DEVICE("ygv608", ygv608_device, update_screen)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, "palette").set_entries(256);
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- c352_device &c352(C352(config, "c352", XTAL(49'152'000)/2, 288));
- c352.add_route(0, "lspeaker", 1.00);
- c352.add_route(1, "rspeaker", 1.00);
- //c352.add_route(2, "lspeaker", 1.00); // Second DAC not present.
- //c352.add_route(3, "rspeaker", 1.00);
+ MCFG_DEVICE_ADD("c352", C352, XTAL(49'152'000)/2, 288)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
+ //MCFG_SOUND_ROUTE(2, "lspeaker", 1.00) // Second DAC not present.
+ //MCFG_SOUND_ROUTE(3, "rspeaker", 1.00)
- AT28C16(config, "at28c16", 0);
-}
+ MCFG_DEVICE_ADD("at28c16", AT28C16, 0)
+MACHINE_CONFIG_END
-void namcond1_state::abcheck(machine_config &config)
-{
+MACHINE_CONFIG_START(namcond1_state::abcheck)
namcond1(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &namcond1_state::abcheck_map);
-// m_maincpu->set_vblank_int("screen", FUNC(namcond1_state::irq1_line_hold));
+ MCFG_DEVICE_REPLACE("maincpu", M68000, XTAL(49'152'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(abcheck_map)
+// MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcond1_state, irq1_line_hold)
NVRAM(config, "zpr1", nvram_device::DEFAULT_ALL_0);
NVRAM(config, "zpr2", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
ROM_START( ncv1 )
ROM_REGION( 0x100000, "maincpu", 0 ) /* 16MB for Main CPU */
diff --git a/src/mame/drivers/namcos1.cpp b/src/mame/drivers/namcos1.cpp
index 458bedf556e..eee1d1b93d4 100644
--- a/src/mame/drivers/namcos1.cpp
+++ b/src/mame/drivers/namcos1.cpp
@@ -347,12 +347,12 @@ C - uses sub board with support for player 3 and 4 controls
/**********************************************************************/
-void namcos1_state::audiocpu_irq_ack_w(u8 data)
+WRITE8_MEMBER(namcos1_state::audiocpu_irq_ack_w)
{
m_audiocpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE);
}
-void namcos1_state::mcu_irq_ack_w(u8 data)
+WRITE8_MEMBER(namcos1_state::mcu_irq_ack_w)
{
m_mcu->set_input_line(HD6301_IRQ_LINE, CLEAR_LINE);
}
@@ -366,20 +366,20 @@ READ8_MEMBER(namcos1_state::dsw_r)
// ------1- ls257 dsw selector 3y
// -------0 ls257 dsw selector 4y
- m_dsw_sel->ba_w(m_io_dipsw->read());
+ m_dsw_sel->write_ba(m_io_dipsw->read());
m_dsw_sel->select_w(BIT(offset, 1));
- return 0xf0 | bitswap<4>(m_dsw_sel->output_r(), 0, 1, 2, 3);
+ return 0xf0 | bitswap<4>(m_dsw_sel->output_r(space, 0), 0, 1, 2, 3);
}
-void namcos1_state::coin_w(u8 data)
+WRITE8_MEMBER(namcos1_state::coin_w)
{
machine().bookkeeping().coin_lockout_global_w(BIT(~data, 0));
machine().bookkeeping().coin_counter_w(0, BIT(data, 1));
machine().bookkeeping().coin_counter_w(1, BIT(data, 2));
}
-void namcos1_state::dac_gain_w(u8 data)
+WRITE8_MEMBER(namcos1_state::dac_gain_w)
{
/* DAC0 (GAIN0 = bit0, GAIN1 = bit2) */
int dac0_gain = (BIT(data, 2) << 1) | BIT(data, 0);
@@ -1076,6 +1076,7 @@ void namcos1_state::ns1(machine_config &config)
m_dac[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.5);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac0", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac0", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT);
diff --git a/src/mame/drivers/namcos2.cpp b/src/mame/drivers/namcos2.cpp
index 0b03529e90e..80279914f30 100644
--- a/src/mame/drivers/namcos2.cpp
+++ b/src/mame/drivers/namcos2.cpp
@@ -1777,31 +1777,30 @@ void namcos2_state::configure_c123tmap_standard(machine_config &config)
m_c123tmap->set_color_base(16*256);
}
-void namcos2_state::base_noio(machine_config &config)
-{
- M68000(config, m_maincpu, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
- m_maincpu->set_addrmap(AS_PROGRAM, &namcos2_state::master_default_am);
- TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
+MACHINE_CONFIG_START(namcos2_state::base_noio)
+ MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
+ MCFG_DEVICE_PROGRAM_MAP(master_default_am)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1)
- M68000(config, m_slave, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
- m_slave->set_addrmap(AS_PROGRAM, &namcos2_state::slave_default_am);
+ MCFG_DEVICE_ADD("slave", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
+ MCFG_DEVICE_PROGRAM_MAP(slave_default_am)
- MC6809E(config, m_audiocpu, M68B09_CPU_CLOCK); /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
- m_audiocpu->set_addrmap(AS_PROGRAM, &namcos2_state::sound_default_am);
- m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq0_line_hold), attotime::from_hz(2*60));
- m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq1_line_hold), attotime::from_hz(120));
+ MCFG_DEVICE_ADD("audiocpu", MC6809E, M68B09_CPU_CLOCK) /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
+ MCFG_DEVICE_PROGRAM_MAP(sound_default_am)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_state, irq0_line_hold, 2*60)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_state, irq1_line_hold, 120)
- config.m_minimum_quantum = attotime::from_hz(12000); /* CPU slices per frame */
+ MCFG_QUANTUM_TIME(attotime::from_hz(12000)) /* CPU slices per frame */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
configure_c148_standard(config);
NAMCO_C139(config, m_sci, 0);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8);
- m_screen->set_screen_update(FUNC(namcos2_state::screen_update));
- m_screen->set_palette(m_c116);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_c116)
configure_c123tmap_standard(config);
@@ -1816,7 +1815,7 @@ void namcos2_state::base_noio(machine_config &config)
configure_c116_standard(config);
- GFXDECODE(config, m_gfxdecode, m_c116, gfx_namcos2);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_c116, gfx_namcos2)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
@@ -1827,36 +1826,34 @@ void namcos2_state::base_noio(machine_config &config)
m_c140->add_route(1, "rspeaker", 0.75);
YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
-}
+MACHINE_CONFIG_END
-void namcos2_state::base(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos2_state::base)
base_noio(config);
configure_c65_standard(config);
-}
+MACHINE_CONFIG_END
-void namcos2_state::base_c68(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos2_state::base_c68)
base_noio(config);
configure_c68_standard(config);
-}
+MACHINE_CONFIG_END
-void namcos2_state::base2(machine_config &config)
-{
+/* adjusted machine driver start */
+MACHINE_CONFIG_START(namcos2_state::base2)
base(config);
m_c140->reset_routes();
m_c140->add_route(0, "lspeaker", 1.0);
m_c140->add_route(1, "rspeaker", 1.0);
-}
+MACHINE_CONFIG_END
+/* end */
-void namcos2_state::assaultp(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos2_state::assaultp)
base2(config);
- config.m_minimum_quantum = attotime::from_hz(12000*8); /* CPU slices per frame - boosted (along with MCU speed) so that the Mode Select works */
-}
+ MCFG_QUANTUM_TIME(attotime::from_hz(12000*8)) /* CPU slices per frame - boosted (along with MCU speed) so that the Mode Select works */
+MACHINE_CONFIG_END
void namcos2_state::base3(machine_config &config)
{
@@ -1869,35 +1866,34 @@ void namcos2_state::base3(machine_config &config)
YM2151(config.replace(), "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); /* 3.579545MHz */
}
-void namcos2_state::gollygho(machine_config &config)
-{
- M68000(config, m_maincpu, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
- m_maincpu->set_addrmap(AS_PROGRAM, &namcos2_state::master_default_am);
- TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
+MACHINE_CONFIG_START(namcos2_state::gollygho)
+ MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
+ MCFG_DEVICE_PROGRAM_MAP(master_default_am)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1)
- M68000(config, m_slave, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
- m_slave->set_addrmap(AS_PROGRAM, &namcos2_state::slave_default_am);
+ MCFG_DEVICE_ADD("slave", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
+ MCFG_DEVICE_PROGRAM_MAP(slave_default_am)
- MC6809E(config, m_audiocpu, M68B09_CPU_CLOCK); /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
- m_audiocpu->set_addrmap(AS_PROGRAM, &namcos2_state::sound_default_am);
- m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq0_line_hold), attotime::from_hz(2*60));
- m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq1_line_hold), attotime::from_hz(120));
+ MCFG_DEVICE_ADD("audiocpu", MC6809E, M68B09_CPU_CLOCK) /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
+ MCFG_DEVICE_PROGRAM_MAP(sound_default_am)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_state, irq0_line_hold, 2*60)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_state, irq1_line_hold, 120)
configure_c65_standard(config);
- config.m_minimum_quantum = attotime::from_hz(6000); /* CPU slices per frame */
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* CPU slices per frame */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
configure_c148_standard(config);
NAMCO_C139(config, m_sci, 0);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8);
- m_screen->set_screen_update(FUNC(namcos2_state::screen_update));
- m_screen->set_palette(m_c116);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_c116)
- GFXDECODE(config, m_gfxdecode, m_c116, gfx_namcos2);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_c116, gfx_namcos2)
configure_c123tmap_standard(config);
@@ -1921,36 +1917,35 @@ void namcos2_state::gollygho(machine_config &config)
m_c140->add_route(1, "rspeaker", 0.75);
YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
-}
+MACHINE_CONFIG_END
-void namcos2_state::finallap_noio(machine_config &config)
-{
- M68000(config, m_maincpu, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
- m_maincpu->set_addrmap(AS_PROGRAM, &namcos2_state::master_finallap_am);
- TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
+MACHINE_CONFIG_START(namcos2_state::finallap_noio)
+ MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
+ MCFG_DEVICE_PROGRAM_MAP(master_finallap_am)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1)
- M68000(config, m_slave, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
- m_slave->set_addrmap(AS_PROGRAM, &namcos2_state::slave_finallap_am);
+ MCFG_DEVICE_ADD("slave", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
+ MCFG_DEVICE_PROGRAM_MAP(slave_finallap_am)
- MC6809E(config, m_audiocpu, M68B09_CPU_CLOCK); /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
- m_audiocpu->set_addrmap(AS_PROGRAM, &namcos2_state::sound_default_am);
- m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq0_line_hold), attotime::from_hz(2*60));
- m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq1_line_hold), attotime::from_hz(120));
+ MCFG_DEVICE_ADD("audiocpu", MC6809E, M68B09_CPU_CLOCK) /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
+ MCFG_DEVICE_PROGRAM_MAP(sound_default_am)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_state, irq0_line_hold, 2*60)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_state, irq1_line_hold, 120)
- config.m_minimum_quantum = attotime::from_hz(6000); /* CPU slices per frame */
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* CPU slices per frame */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
configure_c148_standard(config);
NAMCO_C139(config, m_sci, 0);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8);
- m_screen->set_screen_update(FUNC(namcos2_state::screen_update_finallap));
- m_screen->set_palette(m_c116);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_finallap)
+ MCFG_SCREEN_PALETTE(m_c116)
- GFXDECODE(config, m_gfxdecode, m_c116, gfx_namcos2);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_c116, gfx_namcos2)
configure_c123tmap_standard(config);
@@ -1972,66 +1967,61 @@ void namcos2_state::finallap_noio(machine_config &config)
m_c140->add_route(1, "rspeaker", 0.75);
YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
-}
+MACHINE_CONFIG_END
-void namcos2_state::finallap(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos2_state::finallap)
finallap_noio(config);
configure_c65_standard(config);
-}
+MACHINE_CONFIG_END
-void namcos2_state::finallap_c68(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos2_state::finallap_c68)
finallap_noio(config);
configure_c68_standard(config);
-}
+MACHINE_CONFIG_END
// finalap2 has different mangle
-void namcos2_state::finalap2(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos2_state::finalap2)
finallap(config);
m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&namcos2_state::TilemapCB_finalap2, this));
-}
+MACHINE_CONFIG_END
-void namcos2_state::finalap3(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos2_state::finalap3)
finallap_c68(config);
m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&namcos2_state::TilemapCB_finalap2, this));
-}
+MACHINE_CONFIG_END
-void namcos2_state::sgunner(machine_config &config)
-{
- M68000(config, m_maincpu, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
- m_maincpu->set_addrmap(AS_PROGRAM, &namcos2_state::master_sgunner_am);
- TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
+MACHINE_CONFIG_START(namcos2_state::sgunner)
+ MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
+ MCFG_DEVICE_PROGRAM_MAP(master_sgunner_am)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1)
- M68000(config, m_slave, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
- m_slave->set_addrmap(AS_PROGRAM, &namcos2_state::slave_sgunner_am);
+ MCFG_DEVICE_ADD("slave", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
+ MCFG_DEVICE_PROGRAM_MAP(slave_sgunner_am)
- MC6809E(config, m_audiocpu, M68B09_CPU_CLOCK); /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
- m_audiocpu->set_addrmap(AS_PROGRAM, &namcos2_state::sound_default_am);
- m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq0_line_hold), attotime::from_hz(2*60));
- m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq1_line_hold), attotime::from_hz(120));
+ MCFG_DEVICE_ADD("audiocpu", MC6809E, M68B09_CPU_CLOCK) /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
+ MCFG_DEVICE_PROGRAM_MAP(sound_default_am)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_state, irq0_line_hold, 2*60)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_state, irq1_line_hold, 120)
configure_c65_standard(config);
- config.m_minimum_quantum = attotime::from_hz(6000); /* CPU slices per frame */
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* CPU slices per frame */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
configure_c148_standard(config);
NAMCO_C139(config, m_sci, 0);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8);
- m_screen->set_screen_update(FUNC(namcos2_state::screen_update_sgunner));
- m_screen->set_palette(m_c116);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_sgunner)
+ MCFG_SCREEN_PALETTE(m_c116)
- GFXDECODE(config, m_gfxdecode, m_c116, gfx_c355);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_c116, gfx_c355)
NAMCO_C355SPR(config, m_c355spr, 0);
m_c355spr->set_screen(m_screen);
@@ -2056,37 +2046,36 @@ void namcos2_state::sgunner(machine_config &config)
m_c140->add_route(1, "rspeaker", 0.75);
YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
-}
+MACHINE_CONFIG_END
-void namcos2_state::sgunner2(machine_config &config)
-{
- M68000(config, m_maincpu, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
- m_maincpu->set_addrmap(AS_PROGRAM, &namcos2_state::master_sgunner_am);
- TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
+MACHINE_CONFIG_START(namcos2_state::sgunner2)
+ MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
+ MCFG_DEVICE_PROGRAM_MAP(master_sgunner_am)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1)
- M68000(config, m_slave, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
- m_slave->set_addrmap(AS_PROGRAM, &namcos2_state::slave_sgunner_am);
+ MCFG_DEVICE_ADD("slave", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
+ MCFG_DEVICE_PROGRAM_MAP(slave_sgunner_am)
- MC6809E(config, m_audiocpu, M68B09_CPU_CLOCK); /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
- m_audiocpu->set_addrmap(AS_PROGRAM, &namcos2_state::sound_default_am);
- m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq0_line_hold), attotime::from_hz(2*60));
- m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq1_line_hold), attotime::from_hz(120));
+ MCFG_DEVICE_ADD("audiocpu", MC6809E, M68B09_CPU_CLOCK) /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
+ MCFG_DEVICE_PROGRAM_MAP(sound_default_am)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_state, irq0_line_hold, 2*60)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_state, irq1_line_hold, 120)
configure_c68_standard(config);
- config.m_minimum_quantum = attotime::from_hz(6000); /* CPU slices per frame */
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* CPU slices per frame */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
configure_c148_standard(config);
NAMCO_C139(config, m_sci, 0);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8);
- m_screen->set_screen_update(FUNC(namcos2_state::screen_update_sgunner));
- m_screen->set_palette(m_c116);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_sgunner)
+ MCFG_SCREEN_PALETTE(m_c116)
- GFXDECODE(config, m_gfxdecode, m_c116, gfx_c355);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_c116, gfx_c355)
NAMCO_C355SPR(config, m_c355spr, 0);
m_c355spr->set_screen(m_screen);
@@ -2111,37 +2100,36 @@ void namcos2_state::sgunner2(machine_config &config)
m_c140->add_route(1, "rspeaker", 0.75);
YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
-}
+MACHINE_CONFIG_END
-void namcos2_state::suzuka8h(machine_config &config)
-{
- M68000(config, m_maincpu, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
- m_maincpu->set_addrmap(AS_PROGRAM, &namcos2_state::master_suzuka8h_am);
- TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
+MACHINE_CONFIG_START(namcos2_state::suzuka8h)
+ MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
+ MCFG_DEVICE_PROGRAM_MAP(master_suzuka8h_am)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1)
- M68000(config, m_slave, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
- m_slave->set_addrmap(AS_PROGRAM, &namcos2_state::slave_suzuka8h_am);
+ MCFG_DEVICE_ADD("slave", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
+ MCFG_DEVICE_PROGRAM_MAP(slave_suzuka8h_am)
- MC6809E(config, m_audiocpu, M68B09_CPU_CLOCK); /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
- m_audiocpu->set_addrmap(AS_PROGRAM, &namcos2_state::sound_default_am);
- m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq0_line_hold), attotime::from_hz(2*60));
- m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq1_line_hold), attotime::from_hz(120));
+ MCFG_DEVICE_ADD("audiocpu", MC6809E, M68B09_CPU_CLOCK) /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
+ MCFG_DEVICE_PROGRAM_MAP(sound_default_am)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_state, irq0_line_hold, 2*60)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_state, irq1_line_hold, 120)
configure_c68_standard(config);
- config.m_minimum_quantum = attotime::from_hz(6000); /* CPU slices per frame */
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* CPU slices per frame */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
configure_c148_standard(config);
NAMCO_C139(config, m_sci, 0);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8);
- m_screen->set_screen_update(FUNC(namcos2_state::screen_update_luckywld));
- m_screen->set_palette(m_c116);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_luckywld)
+ MCFG_SCREEN_PALETTE(m_c116)
- GFXDECODE(config, m_gfxdecode, m_c116, gfx_c355);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_c116, gfx_c355)
NAMCO_C355SPR(config, m_c355spr, 0);
m_c355spr->set_screen(m_screen);
@@ -2169,15 +2157,16 @@ void namcos2_state::suzuka8h(machine_config &config)
m_c140->add_route(1, "rspeaker", 0.75);
YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
-}
+MACHINE_CONFIG_END
-void namcos2_state::luckywld(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos2_state::luckywld)
suzuka8h(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &namcos2_state::master_luckywld_am);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(master_luckywld_am)
- m_slave->set_addrmap(AS_PROGRAM, &namcos2_state::slave_luckywld_am);
+ MCFG_DEVICE_MODIFY("slave")
+ MCFG_DEVICE_PROGRAM_MAP(slave_luckywld_am)
NAMCO_C169ROZ(config, m_c169roz, 0);
m_c169roz->set_palette(m_c116);
@@ -2185,37 +2174,37 @@ void namcos2_state::luckywld(machine_config &config)
m_c169roz->set_ram_words(0x10000/2);
m_c169roz->set_tile_callback(namco_c169roz_device::c169_tilemap_delegate(&namcos2_state::RozCB_luckywld, this));
m_c169roz->set_color_base(0*256);
-}
-void namcos2_state::metlhawk(machine_config &config)
-{
- M68000(config, m_maincpu, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
- m_maincpu->set_addrmap(AS_PROGRAM, &namcos2_state::master_metlhawk_am);
- TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
+MACHINE_CONFIG_END
- M68000(config, m_slave, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
- m_slave->set_addrmap(AS_PROGRAM, &namcos2_state::slave_metlhawk_am);
+MACHINE_CONFIG_START(namcos2_state::metlhawk)
+ MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
+ MCFG_DEVICE_PROGRAM_MAP(master_metlhawk_am)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1)
- MC6809E(config, m_audiocpu, M68B09_CPU_CLOCK); /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
- m_audiocpu->set_addrmap(AS_PROGRAM, &namcos2_state::sound_default_am);
- m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq0_line_hold), attotime::from_hz(2*60));
- m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq1_line_hold), attotime::from_hz(120));
+ MCFG_DEVICE_ADD("slave", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
+ MCFG_DEVICE_PROGRAM_MAP(slave_metlhawk_am)
+
+ MCFG_DEVICE_ADD("audiocpu", MC6809E, M68B09_CPU_CLOCK) /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
+ MCFG_DEVICE_PROGRAM_MAP(sound_default_am)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_state, irq0_line_hold, 2*60)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_state, irq1_line_hold, 120)
configure_c65_standard(config);
- config.m_minimum_quantum = attotime::from_hz(6000); /* CPU slices per frame */
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* CPU slices per frame */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
configure_c148_standard(config);
NAMCO_C139(config, m_sci, 0);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8);
- m_screen->set_screen_update(FUNC(namcos2_state::screen_update_metlhawk));
- m_screen->set_palette(m_c116);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_metlhawk)
+ MCFG_SCREEN_PALETTE(m_c116)
- GFXDECODE(config, m_gfxdecode, m_c116, gfx_metlhawk);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_c116, gfx_metlhawk)
NAMCO_C169ROZ(config, m_c169roz, 0);
m_c169roz->set_palette(m_c116);
@@ -2244,7 +2233,7 @@ void namcos2_state::metlhawk(machine_config &config)
YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
// ymsnd.irq_handler().set_inputline("audiocpu", 1);
-}
+MACHINE_CONFIG_END
/*************************************************************/
@@ -2332,8 +2321,8 @@ ROM_START( assault )
NAMCOS2_GFXROM_LOAD_128K( "atshape.bin", 0x000000, CRC(dfcad82b) SHA1(9c3826b8dc36fa0d71c0de7f8be3479d9a025803) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
- NAMCOS2_DATA_LOAD_E_128K( "at1dat0.13s", 0x000000, CRC(844890f4) SHA1(1be30760acd81fae836301d81d6adbb3e5941373) )
- NAMCOS2_DATA_LOAD_O_128K( "at1dat1.13p", 0x000000, CRC(21715313) SHA1(97c6edae6a5f1df434f1dcf7be307b5e006e72a6) )
+ NAMCOS2_DATA_LOAD_E_128K( "at1dat0.bin", 0x000000, CRC(844890f4) SHA1(1be30760acd81fae836301d81d6adbb3e5941373) )
+ NAMCOS2_DATA_LOAD_O_128K( "at1dat1.bin", 0x000000, CRC(21715313) SHA1(97c6edae6a5f1df434f1dcf7be307b5e006e72a6) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "atvoi1.bin", 0x000000, 0x080000, CRC(d36a649e) SHA1(30173f32c6ec9dda6b8946baa14266e828b0324e) )
@@ -2383,8 +2372,8 @@ ROM_START( assaultj )
NAMCOS2_GFXROM_LOAD_128K( "atshape.bin", 0x000000, CRC(dfcad82b) SHA1(9c3826b8dc36fa0d71c0de7f8be3479d9a025803) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
- NAMCOS2_DATA_LOAD_E_128K( "at1dat0.13s", 0x000000, CRC(844890f4) SHA1(1be30760acd81fae836301d81d6adbb3e5941373) )
- NAMCOS2_DATA_LOAD_O_128K( "at1dat1.13p", 0x000000, CRC(21715313) SHA1(97c6edae6a5f1df434f1dcf7be307b5e006e72a6) )
+ NAMCOS2_DATA_LOAD_E_128K( "at1dat0.bin", 0x000000, CRC(844890f4) SHA1(1be30760acd81fae836301d81d6adbb3e5941373) )
+ NAMCOS2_DATA_LOAD_O_128K( "at1dat1.bin", 0x000000, CRC(21715313) SHA1(97c6edae6a5f1df434f1dcf7be307b5e006e72a6) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "atvoi1.bin", 0x000000, 0x080000, CRC(d36a649e) SHA1(30173f32c6ec9dda6b8946baa14266e828b0324e) )
@@ -2434,8 +2423,8 @@ ROM_START( assaultp )
NAMCOS2_GFXROM_LOAD_128K( "atshape.bin", 0x000000, CRC(dfcad82b) SHA1(9c3826b8dc36fa0d71c0de7f8be3479d9a025803) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
- NAMCOS2_DATA_LOAD_E_128K( "at1dat0.13s", 0x000000, CRC(844890f4) SHA1(1be30760acd81fae836301d81d6adbb3e5941373) )
- NAMCOS2_DATA_LOAD_O_128K( "at1dat1.13p", 0x000000, CRC(21715313) SHA1(97c6edae6a5f1df434f1dcf7be307b5e006e72a6) )
+ NAMCOS2_DATA_LOAD_E_128K( "at1dat0.bin", 0x000000, CRC(844890f4) SHA1(1be30760acd81fae836301d81d6adbb3e5941373) )
+ NAMCOS2_DATA_LOAD_O_128K( "at1dat1.bin", 0x000000, CRC(21715313) SHA1(97c6edae6a5f1df434f1dcf7be307b5e006e72a6) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "atvoi1.bin", 0x000000, 0x080000, CRC(d36a649e) SHA1(30173f32c6ec9dda6b8946baa14266e828b0324e) )
@@ -2484,8 +2473,8 @@ ROM_START( burnforc )
NAMCOS2_GFXROM_LOAD_128K( "bu_shape.bin", 0x000000,CRC(80a6b722) SHA1(2c24327a890310c5e8086dc6821627108a88c62e) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
- NAMCOS2_DATA_LOAD_E_128K( "bu1_dat0.13s", 0x000000, CRC(e0a9d92f) SHA1(15042e6d7b31bec08ccdf36e89fdb4b6fb62fa4b) )
- NAMCOS2_DATA_LOAD_O_128K( "bu1_dat1.13p", 0x000000, CRC(5fe54b73) SHA1(a5d4895f0a4523be20de40ccaa74f8fad0d5df7d) )
+ NAMCOS2_DATA_LOAD_E_128K( "bu1_dat0.bin", 0x000000, CRC(e0a9d92f) SHA1(15042e6d7b31bec08ccdf36e89fdb4b6fb62fa4b) )
+ NAMCOS2_DATA_LOAD_O_128K( "bu1_dat1.bin", 0x000000, CRC(5fe54b73) SHA1(a5d4895f0a4523be20de40ccaa74f8fad0d5df7d) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "bu_voi-1.bin", 0x000000, 0x080000, CRC(99d8a239) SHA1(1ebc586048e757ac0ac68dc9cc171f4849e67cef) )
@@ -2533,8 +2522,8 @@ ROM_START( burnforco )
NAMCOS2_GFXROM_LOAD_128K( "bu_shape.bin", 0x000000,CRC(80a6b722) SHA1(2c24327a890310c5e8086dc6821627108a88c62e) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
- NAMCOS2_DATA_LOAD_E_128K( "bu1_dat0.13s", 0x000000, CRC(e0a9d92f) SHA1(15042e6d7b31bec08ccdf36e89fdb4b6fb62fa4b) )
- NAMCOS2_DATA_LOAD_O_128K( "bu1_dat1.13p", 0x000000, CRC(5fe54b73) SHA1(a5d4895f0a4523be20de40ccaa74f8fad0d5df7d) )
+ NAMCOS2_DATA_LOAD_E_128K( "bu1_dat0.bin", 0x000000, CRC(e0a9d92f) SHA1(15042e6d7b31bec08ccdf36e89fdb4b6fb62fa4b) )
+ NAMCOS2_DATA_LOAD_O_128K( "bu1_dat1.bin", 0x000000, CRC(5fe54b73) SHA1(a5d4895f0a4523be20de40ccaa74f8fad0d5df7d) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "bu_voi-1.bin", 0x000000, 0x080000, CRC(99d8a239) SHA1(1ebc586048e757ac0ac68dc9cc171f4849e67cef) )
@@ -2575,8 +2564,8 @@ ROM_START( cosmogng )
ROM_LOAD( "co1sha0.bin", 0x000000, 0x80000, CRC(063a70cc) SHA1(c3179d55d57c47d3fef49d45e45b88c4d8250548) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
- NAMCOS2_DATA_LOAD_E_128K( "co1dat0.13s", 0x000000, CRC(b53da2ae) SHA1(a7fe63668d50928d5d2e2249a5f377c7e8dfc6a5) )
- NAMCOS2_DATA_LOAD_O_128K( "co1dat1.13p", 0x000000, CRC(d21ad10b) SHA1(dcf2d4cc048ea57507952a9a35390af7de5cfe34) )
+ NAMCOS2_DATA_LOAD_E_128K( "co1dat0.bin", 0x000000, CRC(b53da2ae) SHA1(a7fe63668d50928d5d2e2249a5f377c7e8dfc6a5) )
+ NAMCOS2_DATA_LOAD_O_128K( "co1dat1.bin", 0x000000, CRC(d21ad10b) SHA1(dcf2d4cc048ea57507952a9a35390af7de5cfe34) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "co2voi1.bin", 0x000000, 0x080000, CRC(5a301349) SHA1(e333ea5955a66ac8d7c94cd50047efaf6fa95b15) )
@@ -2618,8 +2607,8 @@ ROM_START( cosmogngj )
ROM_LOAD( "co1sha0.bin", 0x000000, 0x80000, CRC(063a70cc) SHA1(c3179d55d57c47d3fef49d45e45b88c4d8250548) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
- NAMCOS2_DATA_LOAD_E_128K( "co1dat0.13s", 0x000000, CRC(b53da2ae) SHA1(a7fe63668d50928d5d2e2249a5f377c7e8dfc6a5) )
- NAMCOS2_DATA_LOAD_O_128K( "co1dat1.13p", 0x000000, CRC(d21ad10b) SHA1(dcf2d4cc048ea57507952a9a35390af7de5cfe34) )
+ NAMCOS2_DATA_LOAD_E_128K( "co1dat0.bin", 0x000000, CRC(b53da2ae) SHA1(a7fe63668d50928d5d2e2249a5f377c7e8dfc6a5) )
+ NAMCOS2_DATA_LOAD_O_128K( "co1dat1.bin", 0x000000, CRC(d21ad10b) SHA1(dcf2d4cc048ea57507952a9a35390af7de5cfe34) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "co1voi1.bin", 0x000000, 0x080000, CRC(b5ba8f15) SHA1(9e54b9ba1cd44353782adf337376dff9eec4e937) )
@@ -2668,8 +2657,8 @@ ROM_START( dirtfoxj )
NAMCOS2_GFXROM_LOAD_128K( "df1_sha.bin", 0x000000, CRC(9a7c9a9b) SHA1(06221ae8d3f6bebbb5a7ab2eaaf35b9922389115) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
- NAMCOS2_DATA_LOAD_E_256K( "df1_dat0.13s", 0x000000, CRC(f5851c85) SHA1(e99c05891622cdaab394630b7b2678968e6761d7) )
- NAMCOS2_DATA_LOAD_O_256K( "df1_dat1.13p", 0x000000, CRC(1a31e46b) SHA1(4be7115893b27d6a3dc38c97dcb41eafebb423cd) )
+ NAMCOS2_DATA_LOAD_E_256K( "df1_dat0.bin", 0x000000, CRC(f5851c85) SHA1(e99c05891622cdaab394630b7b2678968e6761d7) )
+ NAMCOS2_DATA_LOAD_O_256K( "df1_dat1.bin", 0x000000, CRC(1a31e46b) SHA1(4be7115893b27d6a3dc38c97dcb41eafebb423cd) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "df1_voi1.bin", 0x000000, 0x080000, CRC(15053904) SHA1(b8ca7e5e53249dbee8284ce1e5c0e6438e64b2cf) )
@@ -2712,8 +2701,8 @@ ROM_START( dsaber )
ROM_LOAD( "shape.bin", 0x000000, 0x80000, CRC(698e7a3e) SHA1(4d41bf0242626ca1448d1f650c84b5987a7f6597) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
- NAMCOS2_DATA_LOAD_E_128K( "do1 dat0.13s", 0x000000, CRC(3e53331f) SHA1(3dd4c133f587361f30ab1b890f5b05749d5838e3) )
- NAMCOS2_DATA_LOAD_O_128K( "do1 dat1.13p", 0x000000, CRC(d5427f11) SHA1(af8d8153dc60044616a6b0571831c53c09fefda1) )
+ NAMCOS2_DATA_LOAD_E_128K( "do1 dat0.data0", 0x000000, CRC(3e53331f) SHA1(3dd4c133f587361f30ab1b890f5b05749d5838e3) )
+ NAMCOS2_DATA_LOAD_O_128K( "do1 dat1.data1", 0x000000, CRC(d5427f11) SHA1(af8d8153dc60044616a6b0571831c53c09fefda1) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "do voi-1a.voice1", 0x000000, 0x080000, CRC(dadf6a57) SHA1(caba21fc6b62d140f6d8231411ce82ae0ad2837a) )
@@ -2760,8 +2749,8 @@ ROM_START( dsabera )
ROM_LOAD( "shape.bin", 0x000000, 0x80000, CRC(698e7a3e) SHA1(4d41bf0242626ca1448d1f650c84b5987a7f6597) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
- NAMCOS2_DATA_LOAD_E_128K( "do1 dat0.13s", 0x000000, CRC(3e53331f) SHA1(3dd4c133f587361f30ab1b890f5b05749d5838e3) )
- NAMCOS2_DATA_LOAD_O_128K( "do1 dat1.13p", 0x000000, CRC(d5427f11) SHA1(af8d8153dc60044616a6b0571831c53c09fefda1) )
+ NAMCOS2_DATA_LOAD_E_128K( "do1 dat0.data0", 0x000000, CRC(3e53331f) SHA1(3dd4c133f587361f30ab1b890f5b05749d5838e3) )
+ NAMCOS2_DATA_LOAD_O_128K( "do1 dat1.data1", 0x000000, CRC(d5427f11) SHA1(af8d8153dc60044616a6b0571831c53c09fefda1) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "do voi-1a.voice1", 0x000000, 0x080000, CRC(dadf6a57) SHA1(caba21fc6b62d140f6d8231411ce82ae0ad2837a) )
@@ -2807,8 +2796,8 @@ ROM_START( dsaberj )
ROM_LOAD( "shape.bin", 0x000000, 0x80000, CRC(698e7a3e) SHA1(4d41bf0242626ca1448d1f650c84b5987a7f6597) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
- NAMCOS2_DATA_LOAD_E_128K( "do1 dat0.13s", 0x000000, CRC(3e53331f) SHA1(3dd4c133f587361f30ab1b890f5b05749d5838e3) )
- NAMCOS2_DATA_LOAD_O_128K( "do1 dat1.13p", 0x000000, CRC(d5427f11) SHA1(af8d8153dc60044616a6b0571831c53c09fefda1) )
+ NAMCOS2_DATA_LOAD_E_128K( "do1 dat0.data0", 0x000000, CRC(3e53331f) SHA1(3dd4c133f587361f30ab1b890f5b05749d5838e3) )
+ NAMCOS2_DATA_LOAD_O_128K( "do1 dat1.data1", 0x000000, CRC(d5427f11) SHA1(af8d8153dc60044616a6b0571831c53c09fefda1) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "do voi-1a.voice1", 0x000000, 0x080000, CRC(dadf6a57) SHA1(caba21fc6b62d140f6d8231411ce82ae0ad2837a) )
@@ -3119,8 +3108,8 @@ ROM_START( finalap2 )
NAMCOS2_GFXROM_LOAD_256K( "fls2sha", 0x000000, CRC(f7b40a85) SHA1(a458a1cc0dae757fe8a15cb5f5ae46d3c033df00) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
- NAMCOS2_DATA_LOAD_E_256K( "fls2dat0.13s", 0x000000, CRC(f1af432c) SHA1(c514261a49ceb5c3ba0246519ba5d02e9a20d950) )
- NAMCOS2_DATA_LOAD_O_256K( "fls2dat1.13p", 0x000000, CRC(8719533e) SHA1(98d2767da6f7f67da7af15e8cfed95adb04b7427) )
+ NAMCOS2_DATA_LOAD_E_256K( "fls2dat0", 0x000000, CRC(f1af432c) SHA1(c514261a49ceb5c3ba0246519ba5d02e9a20d950) )
+ NAMCOS2_DATA_LOAD_O_256K( "fls2dat1", 0x000000, CRC(8719533e) SHA1(98d2767da6f7f67da7af15e8cfed95adb04b7427) )
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* PROM for road colors */
ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
@@ -3174,8 +3163,8 @@ ROM_START( finalap2j )
NAMCOS2_GFXROM_LOAD_256K( "fls2sha", 0x000000, BAD_DUMP CRC(f7b40a85) SHA1(a458a1cc0dae757fe8a15cb5f5ae46d3c033df00) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
- NAMCOS2_DATA_LOAD_E_256K( "fls2dat0.13s", 0x000000, CRC(f1af432c) SHA1(c514261a49ceb5c3ba0246519ba5d02e9a20d950) )
- NAMCOS2_DATA_LOAD_O_256K( "fls2dat1.13p", 0x000000, CRC(8719533e) SHA1(98d2767da6f7f67da7af15e8cfed95adb04b7427) )
+ NAMCOS2_DATA_LOAD_E_256K( "fls2dat0", 0x000000, CRC(f1af432c) SHA1(c514261a49ceb5c3ba0246519ba5d02e9a20d950) )
+ NAMCOS2_DATA_LOAD_O_256K( "fls2dat1", 0x000000, CRC(8719533e) SHA1(98d2767da6f7f67da7af15e8cfed95adb04b7427) )
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* PROM for road colors */
ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
@@ -3460,8 +3449,8 @@ ROM_START( finalap3bl ) // bootleg set
NAMCOS2_GFXROM_LOAD_256K( "flt2_sha.bin", 0x000000, CRC(6986565b) SHA1(df95f2ad5d1e938551d33153f2dcc4711ffd0eba) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "flt1d0.13s", 0x000000, CRC(80004966) SHA1(112b2a9b0ea792d5dbff1b9cf904da788aeede29) )
- NAMCOS2_DATA_LOAD_O_128K( "flt1d1.13p", 0x000000, CRC(a2e93e8c) SHA1(9c8a5431a79153a70eb6939d16e0a5a6be235e75) )
+ NAMCOS2_DATA_LOAD_E_128K( "flt1d0", 0x000000, CRC(80004966) SHA1(112b2a9b0ea792d5dbff1b9cf904da788aeede29) )
+ NAMCOS2_DATA_LOAD_O_128K( "flt1d1", 0x000000, CRC(a2e93e8c) SHA1(9c8a5431a79153a70eb6939d16e0a5a6be235e75) )
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
@@ -3519,10 +3508,10 @@ ROM_START( finehour )
NAMCOS2_GFXROM_LOAD_256K( "fh1_sha.bin", 0x000000, CRC(15875eb0) SHA1(9225df6b01897938488461ebf0717e6d7b81d562) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "fh1_dt0.13s", 0x000000, CRC(2441c26f) SHA1(429c8f12f7bef3e62153ac8b9e00ea870db36a7b) )
- NAMCOS2_DATA_LOAD_O_128K( "fh1_dt1.13p", 0x000000, CRC(48154deb) SHA1(d6fde316f90bc847f60fa8d997504da34337ffa4) )
- NAMCOS2_DATA_LOAD_E_128K( "fh1_dt2.13r", 0x100000, CRC(12453ba4) SHA1(26ad0da6e56ece6f1ba0b0cf23d2fdae2ce24100) )
- NAMCOS2_DATA_LOAD_O_128K( "fh1_dt3.13n", 0x100000, CRC(50bab9da) SHA1(9c18e5fb810123f9d17042212e0878172e220d2a) )
+ NAMCOS2_DATA_LOAD_E_128K( "fh1_dt0.bin", 0x000000, CRC(2441c26f) SHA1(429c8f12f7bef3e62153ac8b9e00ea870db36a7b) )
+ NAMCOS2_DATA_LOAD_O_128K( "fh1_dt1.bin", 0x000000, CRC(48154deb) SHA1(d6fde316f90bc847f60fa8d997504da34337ffa4) )
+ NAMCOS2_DATA_LOAD_E_128K( "fh1_dt2.bin", 0x100000, CRC(12453ba4) SHA1(26ad0da6e56ece6f1ba0b0cf23d2fdae2ce24100) )
+ NAMCOS2_DATA_LOAD_O_128K( "fh1_dt3.bin", 0x100000, CRC(50bab9da) SHA1(9c18e5fb810123f9d17042212e0878172e220d2a) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "fh1_vo1.bin", 0x000000, 0x080000, CRC(07560fc7) SHA1(76f3855f5a4567dc65d513e37072072c2a011e7e) )
@@ -3737,8 +3726,8 @@ ROM_START( fourtrax )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
NAMCOS2_DATA_LOAD_E_256K( "fx_dat0.13s", 0x000000, CRC(63abf69b) SHA1(6776991eeff434bf9720f49ad6e62c37fc7ddf40) )
- NAMCOS2_DATA_LOAD_O_256K( "fx_dat1.13p", 0x000000, CRC(725bed14) SHA1(bbf886ac7f8c2c7857bc0b5d7f8fc7e63e8e9559) )
- NAMCOS2_DATA_LOAD_E_256K( "fx_dat2.13r", 0x100000, CRC(71e4a5a0) SHA1(a0188c920a43c5e69e25464627094b6b6ed26a59) )
+ NAMCOS2_DATA_LOAD_O_256K( "fx_dat1.13r", 0x000000, CRC(725bed14) SHA1(bbf886ac7f8c2c7857bc0b5d7f8fc7e63e8e9559) )
+ NAMCOS2_DATA_LOAD_E_256K( "fx_dat2.13p", 0x100000, CRC(71e4a5a0) SHA1(a0188c920a43c5e69e25464627094b6b6ed26a59) )
NAMCOS2_DATA_LOAD_O_256K( "fx_dat3.13n", 0x100000, CRC(605725f7) SHA1(b94ce0ec37f879a5e46a097058cb2dd57e2281f1) )
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
@@ -3796,8 +3785,8 @@ ROM_START( fourtraxj )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
NAMCOS2_DATA_LOAD_E_256K( "fx_dat0.13s", 0x000000, CRC(63abf69b) SHA1(6776991eeff434bf9720f49ad6e62c37fc7ddf40) )
- NAMCOS2_DATA_LOAD_O_256K( "fx_dat1.13p", 0x000000, CRC(725bed14) SHA1(bbf886ac7f8c2c7857bc0b5d7f8fc7e63e8e9559) )
- NAMCOS2_DATA_LOAD_E_256K( "fx_dat2.13r", 0x100000, CRC(71e4a5a0) SHA1(a0188c920a43c5e69e25464627094b6b6ed26a59) )
+ NAMCOS2_DATA_LOAD_O_256K( "fx_dat1.13r", 0x000000, CRC(725bed14) SHA1(bbf886ac7f8c2c7857bc0b5d7f8fc7e63e8e9559) )
+ NAMCOS2_DATA_LOAD_E_256K( "fx_dat2.13p", 0x100000, CRC(71e4a5a0) SHA1(a0188c920a43c5e69e25464627094b6b6ed26a59) )
NAMCOS2_DATA_LOAD_O_256K( "fx_dat3.13n", 0x100000, CRC(605725f7) SHA1(b94ce0ec37f879a5e46a097058cb2dd57e2281f1) )
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
@@ -3866,8 +3855,8 @@ ROM_START( fourtraxa )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
NAMCOS2_DATA_LOAD_E_256K( "fx_dat0.13s", 0x000000, CRC(63abf69b) SHA1(6776991eeff434bf9720f49ad6e62c37fc7ddf40) )
- NAMCOS2_DATA_LOAD_O_256K( "fx_dat1.13p", 0x000000, CRC(725bed14) SHA1(bbf886ac7f8c2c7857bc0b5d7f8fc7e63e8e9559) )
- NAMCOS2_DATA_LOAD_E_256K( "fx_dat2.13r", 0x100000, CRC(71e4a5a0) SHA1(a0188c920a43c5e69e25464627094b6b6ed26a59) )
+ NAMCOS2_DATA_LOAD_O_256K( "fx_dat1.13r", 0x000000, CRC(725bed14) SHA1(bbf886ac7f8c2c7857bc0b5d7f8fc7e63e8e9559) )
+ NAMCOS2_DATA_LOAD_E_256K( "fx_dat2.13p", 0x100000, CRC(71e4a5a0) SHA1(a0188c920a43c5e69e25464627094b6b6ed26a59) )
NAMCOS2_DATA_LOAD_O_256K( "fx_dat3.13n", 0x100000, CRC(605725f7) SHA1(b94ce0ec37f879a5e46a097058cb2dd57e2281f1) )
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
@@ -3917,10 +3906,10 @@ ROM_START( marvland )
NAMCOS2_GFXROM_LOAD_256K( "mv1-sha.bin", 0x000000, CRC(a47db5d3) SHA1(110e26412aa84f229773049112709be457b7a6ff) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "mv2_dat0.13s", 0x000000, CRC(62e6318b) SHA1(5c26bc054298f2a0980f7e82ba1844bc9f5eff98) )
- NAMCOS2_DATA_LOAD_O_128K( "mv2_dat1.13p", 0x000000, CRC(8a6902ca) SHA1(272e8699b872b3a50d72090b43c57493e6642bfe) )
- NAMCOS2_DATA_LOAD_E_128K( "mv2_dat2.13r", 0x100000, CRC(f5c6408c) SHA1(568fb08d0763dc91674d708fa2d15ca952956145) )
- NAMCOS2_DATA_LOAD_O_128K( "mv2_dat3.13n", 0x100000, CRC(6df76955) SHA1(fcfb520399acdd3776f66944121d6980552d3100) )
+ NAMCOS2_DATA_LOAD_E_128K( "mv2_dat0", 0x000000, CRC(62e6318b) SHA1(5c26bc054298f2a0980f7e82ba1844bc9f5eff98) )
+ NAMCOS2_DATA_LOAD_O_128K( "mv2_dat1", 0x000000, CRC(8a6902ca) SHA1(272e8699b872b3a50d72090b43c57493e6642bfe) )
+ NAMCOS2_DATA_LOAD_E_128K( "mv2_dat2", 0x100000, CRC(f5c6408c) SHA1(568fb08d0763dc91674d708fa2d15ca952956145) )
+ NAMCOS2_DATA_LOAD_O_128K( "mv2_dat3", 0x100000, CRC(6df76955) SHA1(fcfb520399acdd3776f66944121d6980552d3100) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "mv1-voi1.bin", 0x000000, 0x080000, CRC(de5cac09) SHA1(2d73e54c4f159e52db2c403a59d6c137cce6f53e) )
@@ -3965,8 +3954,8 @@ ROM_START( marvlandj )
NAMCOS2_GFXROM_LOAD_256K( "mv1-sha.bin", 0x000000, CRC(a47db5d3) SHA1(110e26412aa84f229773049112709be457b7a6ff) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "mv1-dat0.13s", 0x000000, CRC(e15f412e) SHA1(d3ff006d4577540a690c912e94897a1b638ac265) )
- NAMCOS2_DATA_LOAD_O_128K( "mv1-dat1.13p", 0x000000, CRC(73e1545a) SHA1(a04034e56fef69fb2a2eb88f2f392c376e52d00d) )
+ NAMCOS2_DATA_LOAD_E_128K( "mv1-dat0.bin", 0x000000, CRC(e15f412e) SHA1(d3ff006d4577540a690c912e94897a1b638ac265) )
+ NAMCOS2_DATA_LOAD_O_128K( "mv1-dat1.bin", 0x000000, CRC(73e1545a) SHA1(a04034e56fef69fb2a2eb88f2f392c376e52d00d) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "mv1-voi1.bin", 0x000000, 0x080000, CRC(de5cac09) SHA1(2d73e54c4f159e52db2c403a59d6c137cce6f53e) )
@@ -4152,8 +4141,8 @@ ROM_START( mirninja )
NAMCOS2_GFXROM_LOAD_128K( "mn_sha.bin", 0x000000, CRC(c28af90f) SHA1(8b7f95375eb32c3e30c2a55b7f543235f56d3a13) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "mn1_dat0.13s", 0x000000, CRC(104bcca8) SHA1(e8368d0dc51bf0653143bf2261d7ed5b54d92941) )
- NAMCOS2_DATA_LOAD_O_128K( "mn1_dat1.13p", 0x000000, CRC(d2a918fb) SHA1(032b7a7bcc60c41325e7b35df9a932e68cdd0788) )
+ NAMCOS2_DATA_LOAD_E_128K( "mn1_dat0.bin", 0x000000, CRC(104bcca8) SHA1(e8368d0dc51bf0653143bf2261d7ed5b54d92941) )
+ NAMCOS2_DATA_LOAD_O_128K( "mn1_dat1.bin", 0x000000, CRC(d2a918fb) SHA1(032b7a7bcc60c41325e7b35df9a932e68cdd0788) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "mn_voi1.bin", 0x000000, 0x080000, CRC(2ca3573c) SHA1(b2af101730de4ccc68acc1ed143c21a8c81f64db) )
@@ -4205,8 +4194,8 @@ ROM_START( ordyne )
NAMCOS2_GFXROM_LOAD_128K( "or_shape.shape", 0x000000, CRC(7aec9dee) SHA1(2e774e4cff69173b4524d6b25a6a449ba5498a6a) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "or1_d0.13s", 0x000000, CRC(de214f7a) SHA1(59883c7886b403306c30e51d7f49225483792650) )
- NAMCOS2_DATA_LOAD_O_128K( "or1_d1.13p", 0x000000, CRC(25e3e6c8) SHA1(ad093f15edaea71f6c7226c6e4f3c2130d418013) )
+ NAMCOS2_DATA_LOAD_E_128K( "or1_d0.data0", 0x000000, CRC(de214f7a) SHA1(59883c7886b403306c30e51d7f49225483792650) )
+ NAMCOS2_DATA_LOAD_O_128K( "or1_d1.data1", 0x000000, CRC(25e3e6c8) SHA1(ad093f15edaea71f6c7226c6e4f3c2130d418013) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "or_voi1.voice1", 0x000000, 0x080000, CRC(369e0bca) SHA1(2a921bb373dd043bd7b2a30e5e46ec3b8b3b5c8d) )
@@ -4261,8 +4250,8 @@ ROM_START( ordyneje )
NAMCOS2_GFXROM_LOAD_128K( "or_shape.shape", 0x000000, CRC(7aec9dee) SHA1(2e774e4cff69173b4524d6b25a6a449ba5498a6a) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "or1_d0.13s", 0x000000, CRC(de214f7a) SHA1(59883c7886b403306c30e51d7f49225483792650) )
- NAMCOS2_DATA_LOAD_O_128K( "or1_d1.13p", 0x000000, CRC(25e3e6c8) SHA1(ad093f15edaea71f6c7226c6e4f3c2130d418013) )
+ NAMCOS2_DATA_LOAD_E_128K( "or1_d0.data0", 0x000000, CRC(de214f7a) SHA1(59883c7886b403306c30e51d7f49225483792650) )
+ NAMCOS2_DATA_LOAD_O_128K( "or1_d1.data1", 0x000000, CRC(25e3e6c8) SHA1(ad093f15edaea71f6c7226c6e4f3c2130d418013) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "or_voi1.voice1", 0x000000, 0x080000, CRC(369e0bca) SHA1(2a921bb373dd043bd7b2a30e5e46ec3b8b3b5c8d) )
@@ -4317,8 +4306,8 @@ ROM_START( ordynej )
NAMCOS2_GFXROM_LOAD_128K( "or_shape.shape", 0x000000, CRC(7aec9dee) SHA1(2e774e4cff69173b4524d6b25a6a449ba5498a6a) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "or1_d0.13s", 0x000000, CRC(de214f7a) SHA1(59883c7886b403306c30e51d7f49225483792650) )
- NAMCOS2_DATA_LOAD_O_128K( "or1_d1.13p", 0x000000, CRC(25e3e6c8) SHA1(ad093f15edaea71f6c7226c6e4f3c2130d418013) )
+ NAMCOS2_DATA_LOAD_E_128K( "or1_d0.data0", 0x000000, CRC(de214f7a) SHA1(59883c7886b403306c30e51d7f49225483792650) )
+ NAMCOS2_DATA_LOAD_O_128K( "or1_d1.data1", 0x000000, CRC(25e3e6c8) SHA1(ad093f15edaea71f6c7226c6e4f3c2130d418013) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "or_voi1.voice1", 0x000000, 0x080000, CRC(369e0bca) SHA1(2a921bb373dd043bd7b2a30e5e46ec3b8b3b5c8d) )
@@ -4376,8 +4365,8 @@ ROM_START( phelios )
NAMCOS2_GFXROM_LOAD_128K( "ps_shape.shape", 0x000000, CRC(58e26fcf) SHA1(9edc3b54964f923ed07ee878520ccf3f188f04ad) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "ps2_dat0.13s", 0x000000, CRC(ee4194b0) SHA1(a0c2a807db70164ed761e5ad04301e5ae1173e7a) )
- NAMCOS2_DATA_LOAD_O_128K( "ps2_dat1.13p", 0x000000, CRC(5b22d714) SHA1(f6cb1fe661f7691269840245f06875845fd6eb33) )
+ NAMCOS2_DATA_LOAD_E_128K( "ps2_dat0.data0", 0x000000, CRC(ee4194b0) SHA1(a0c2a807db70164ed761e5ad04301e5ae1173e7a) )
+ NAMCOS2_DATA_LOAD_O_128K( "ps2_dat1.data1", 0x000000, CRC(5b22d714) SHA1(f6cb1fe661f7691269840245f06875845fd6eb33) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "ps_voi-1.voice1", 0x000000, 0x080000, CRC(f67376ed) SHA1(b54257aad34c6ad03d5b040e6a5dda94a48b6780) )
@@ -4431,8 +4420,8 @@ ROM_START( pheliosj )
NAMCOS2_GFXROM_LOAD_128K( "ps_shape.shape", 0x000000, CRC(58e26fcf) SHA1(9edc3b54964f923ed07ee878520ccf3f188f04ad) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "ps1_dat0.13s", 0x000000, CRC(ee4194b0) SHA1(a0c2a807db70164ed761e5ad04301e5ae1173e7a) ) /* Same DATA as World set, but labeled PS1 */
- NAMCOS2_DATA_LOAD_O_128K( "ps1_dat1.13p", 0x000000, CRC(5b22d714) SHA1(f6cb1fe661f7691269840245f06875845fd6eb33) ) /* Same DATA as World set, but labeled PS1 */
+ NAMCOS2_DATA_LOAD_E_128K( "ps1_dat0.data0", 0x000000, CRC(ee4194b0) SHA1(a0c2a807db70164ed761e5ad04301e5ae1173e7a) ) /* Same DATA as World set, but labeled PS1 */
+ NAMCOS2_DATA_LOAD_O_128K( "ps1_dat1.data1", 0x000000, CRC(5b22d714) SHA1(f6cb1fe661f7691269840245f06875845fd6eb33) ) /* Same DATA as World set, but labeled PS1 */
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "ps_voi-1.voice1", 0x000000, 0x080000, CRC(f67376ed) SHA1(b54257aad34c6ad03d5b040e6a5dda94a48b6780) )
@@ -4472,9 +4461,9 @@ ROM_START( rthun2 )
ROM_LOAD( "shape.bin", 0x000000, 0x80000, CRC(cf58fbbe) SHA1(fbe3b2f0c3267b298993d6238d97b119e13e07f6) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "rst1_data0.13s", 0x000000, CRC(0baf44ee) SHA1(5135d634f76893adb26a32976a69e2d47e2385c6) )
- NAMCOS2_DATA_LOAD_O_128K( "rst1_data1.13p", 0x000000, CRC(58a8daac) SHA1(c13ae8fc25b748a006c6db5b4b7ae593738544e8) )
- NAMCOS2_DATA_LOAD_E_128K( "rst1_data2.13r", 0x100000, CRC(8e850a2a) SHA1(e5230e80a23ca6d09c2c53f443ecf70cc74075d7) )
+ NAMCOS2_DATA_LOAD_E_128K( "rst1_data0.bin", 0x000000, CRC(0baf44ee) SHA1(5135d634f76893adb26a32976a69e2d47e2385c6) )
+ NAMCOS2_DATA_LOAD_O_128K( "rst1_data1.bin", 0x000000, CRC(58a8daac) SHA1(c13ae8fc25b748a006c6db5b4b7ae593738544e8) )
+ NAMCOS2_DATA_LOAD_E_128K( "rst1_data2.bin", 0x100000, CRC(8e850a2a) SHA1(e5230e80a23ca6d09c2c53f443ecf70cc74075d7) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "rst1_voi1.bin", 0x000000, 0x080000, CRC(e42027cd) SHA1(fa3a81118c7f112289c27023236dec2e9cbc78b5) )
@@ -4515,9 +4504,9 @@ ROM_START( rthun2j )
ROM_LOAD( "shape.bin", 0x000000, 0x80000, CRC(cf58fbbe) SHA1(fbe3b2f0c3267b298993d6238d97b119e13e07f6) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "rst1_data0.13s", 0x000000, CRC(0baf44ee) SHA1(5135d634f76893adb26a32976a69e2d47e2385c6) )
- NAMCOS2_DATA_LOAD_O_128K( "rst1_data1.13p", 0x000000, CRC(58a8daac) SHA1(c13ae8fc25b748a006c6db5b4b7ae593738544e8) )
- NAMCOS2_DATA_LOAD_E_128K( "rst1_data2.13r", 0x100000, CRC(8e850a2a) SHA1(e5230e80a23ca6d09c2c53f443ecf70cc74075d7) )
+ NAMCOS2_DATA_LOAD_E_128K( "rst1_data0.bin", 0x000000, CRC(0baf44ee) SHA1(5135d634f76893adb26a32976a69e2d47e2385c6) )
+ NAMCOS2_DATA_LOAD_O_128K( "rst1_data1.bin", 0x000000, CRC(58a8daac) SHA1(c13ae8fc25b748a006c6db5b4b7ae593738544e8) )
+ NAMCOS2_DATA_LOAD_E_128K( "rst1_data2.bin", 0x100000, CRC(8e850a2a) SHA1(e5230e80a23ca6d09c2c53f443ecf70cc74075d7) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "rst1_voi1.bin", 0x000000, 0x080000, CRC(e42027cd) SHA1(fa3a81118c7f112289c27023236dec2e9cbc78b5) )
@@ -4667,10 +4656,10 @@ ROM_START( sgunner2 )
ROM_LOAD( "sns_sha0.bin", 0x000000, 0x80000, CRC(0374fd67) SHA1(2f09536ef4f8e1aa719108e73642feb376d6efff) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "sns_dat0.13s", 0x000000, CRC(48295d93) SHA1(2b314128d5ed7d30895967dbd2ecd8f1dfdc61ca) )
- NAMCOS2_DATA_LOAD_O_128K( "sns_dat1.13p", 0x000000, CRC(b44cc656) SHA1(7126ef28bf174c6c560469fa6dc4cfb439811850) )
- NAMCOS2_DATA_LOAD_E_128K( "sns_dat2.13r", 0x100000, CRC(ca2ae645) SHA1(8addc8ed8244d0ff4c03909e865e3f15934963f1) )
- NAMCOS2_DATA_LOAD_O_128K( "sns_dat3.13n", 0x100000, CRC(203bb018) SHA1(36e20ab81ed69a941e13518ff2ae52acd6b22a78) )
+ NAMCOS2_DATA_LOAD_E_128K( "sns_dat0.bin", 0x000000, CRC(48295d93) SHA1(2b314128d5ed7d30895967dbd2ecd8f1dfdc61ca) )
+ NAMCOS2_DATA_LOAD_O_128K( "sns_dat1.bin", 0x000000, CRC(b44cc656) SHA1(7126ef28bf174c6c560469fa6dc4cfb439811850) )
+ NAMCOS2_DATA_LOAD_E_128K( "sns_dat2.bin", 0x100000, CRC(ca2ae645) SHA1(8addc8ed8244d0ff4c03909e865e3f15934963f1) )
+ NAMCOS2_DATA_LOAD_O_128K( "sns_dat3.bin", 0x100000, CRC(203bb018) SHA1(36e20ab81ed69a941e13518ff2ae52acd6b22a78) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "sns_voi1.bin", 0x000000, 0x080000, CRC(219c97f7) SHA1(d4b1d81e3d0e2585bc2fa305c0d80beef15b2a9f) )
@@ -4719,10 +4708,10 @@ ROM_START( sgunner2j )
ROM_LOAD( "sns_sha0.bin", 0x000000, 0x80000, CRC(0374fd67) SHA1(2f09536ef4f8e1aa719108e73642feb376d6efff) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "sns_dat0.13s", 0x000000, CRC(48295d93) SHA1(2b314128d5ed7d30895967dbd2ecd8f1dfdc61ca) )
- NAMCOS2_DATA_LOAD_O_128K( "sns_dat1.13p", 0x000000, CRC(b44cc656) SHA1(7126ef28bf174c6c560469fa6dc4cfb439811850) )
- NAMCOS2_DATA_LOAD_E_128K( "sns_dat2.13r", 0x100000, CRC(ca2ae645) SHA1(8addc8ed8244d0ff4c03909e865e3f15934963f1) )
- NAMCOS2_DATA_LOAD_O_128K( "sns_dat3.13n", 0x100000, CRC(203bb018) SHA1(36e20ab81ed69a941e13518ff2ae52acd6b22a78) )
+ NAMCOS2_DATA_LOAD_E_128K( "sns_dat0.bin", 0x000000, CRC(48295d93) SHA1(2b314128d5ed7d30895967dbd2ecd8f1dfdc61ca) )
+ NAMCOS2_DATA_LOAD_O_128K( "sns_dat1.bin", 0x000000, CRC(b44cc656) SHA1(7126ef28bf174c6c560469fa6dc4cfb439811850) )
+ NAMCOS2_DATA_LOAD_E_128K( "sns_dat2.bin", 0x100000, CRC(ca2ae645) SHA1(8addc8ed8244d0ff4c03909e865e3f15934963f1) )
+ NAMCOS2_DATA_LOAD_O_128K( "sns_dat3.bin", 0x100000, CRC(203bb018) SHA1(36e20ab81ed69a941e13518ff2ae52acd6b22a78) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "sns_voi1.bin", 0x000000, 0x080000, CRC(219c97f7) SHA1(d4b1d81e3d0e2585bc2fa305c0d80beef15b2a9f) )
@@ -4809,8 +4798,8 @@ ROM_START( sws92 )
ROM_LOAD( "sss_sha0.bin", 0x000000, 0x80000, CRC(b71a731a) SHA1(29eab0ad5618f54e6c790d20f7dc895afae6c709) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_256K( "sss1dat0.13s", 0x000000, CRC(db3e6aec) SHA1(928960e3dc9c8225e695d12e9b18fbb7f151c151) )
- NAMCOS2_DATA_LOAD_O_256K( "sss1dat1.13p", 0x000000, CRC(463b5ba8) SHA1(029dce2e7ee50181392b6ef409bbd192105fb065) )
+ NAMCOS2_DATA_LOAD_E_256K( "sss1dat0.bin", 0x000000, CRC(db3e6aec) SHA1(928960e3dc9c8225e695d12e9b18fbb7f151c151) )
+ NAMCOS2_DATA_LOAD_O_256K( "sss1dat1.bin", 0x000000, CRC(463b5ba8) SHA1(029dce2e7ee50181392b6ef409bbd192105fb065) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "ss_voi1.bin", 0x000000, 0x080000, CRC(503e51b7) SHA1(2e159fcc9bb0bef9a3476ae233bc8d61fabbb4bd) )
@@ -4852,10 +4841,10 @@ ROM_START( sws92g )
ROM_LOAD( "sss_sha0.bin", 0x000000, 0x80000, CRC(b71a731a) SHA1(29eab0ad5618f54e6c790d20f7dc895afae6c709) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_256K( "sss1dat0.13s", 0x000000, CRC(db3e6aec) SHA1(928960e3dc9c8225e695d12e9b18fbb7f151c151) )
- NAMCOS2_DATA_LOAD_O_256K( "sss1dat1.13p", 0x000000, CRC(463b5ba8) SHA1(029dce2e7ee50181392b6ef409bbd192105fb065) )
- NAMCOS2_DATA_LOAD_E_256K( "ssg1dat2.13r", 0x080000, CRC(754128aa) SHA1(459ffb08bcd905644d6019e5b25870dcb1e2b418) )
- NAMCOS2_DATA_LOAD_O_256K( "ssg1dat3.13n", 0x080000, CRC(cb3fed01) SHA1(68887d46fd07cd8fb67d58f37e74a6aefdae4328) )
+ NAMCOS2_DATA_LOAD_E_256K( "sss1dat0.bin", 0x000000, CRC(db3e6aec) SHA1(928960e3dc9c8225e695d12e9b18fbb7f151c151) )
+ NAMCOS2_DATA_LOAD_O_256K( "sss1dat1.bin", 0x000000, CRC(463b5ba8) SHA1(029dce2e7ee50181392b6ef409bbd192105fb065) )
+ NAMCOS2_DATA_LOAD_E_256K( "ssg1dat2.bin", 0x080000, CRC(754128aa) SHA1(459ffb08bcd905644d6019e5b25870dcb1e2b418) )
+ NAMCOS2_DATA_LOAD_O_256K( "ssg1dat3.bin", 0x080000, CRC(cb3fed01) SHA1(68887d46fd07cd8fb67d58f37e74a6aefdae4328) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "ss_voi1.bin", 0x000000, 0x080000, CRC(503e51b7) SHA1(2e159fcc9bb0bef9a3476ae233bc8d61fabbb4bd) )
@@ -4897,8 +4886,8 @@ ROM_START( sws93 )
ROM_LOAD( "sst_sha0.bin", 0x000000, 0x80000, CRC(4f64d4bd) SHA1(0eb5311448cfd91b1e139b64b2f35b5179237e58) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_512K( "sst1dat0.13s", 0x000000, CRC(b99c9656) SHA1(ac9e6bf46204dad70caf0d75614a20af0269a07f) )
- NAMCOS2_DATA_LOAD_O_512K( "sst1dat1.13p", 0x000000, CRC(60cf6281) SHA1(c02a5bf8f4f94cbe8b0448c9457af53cd1c043d0) )
+ NAMCOS2_DATA_LOAD_E_512K( "sst1dat0.bin", 0x000000, CRC(b99c9656) SHA1(ac9e6bf46204dad70caf0d75614a20af0269a07f) )
+ NAMCOS2_DATA_LOAD_O_512K( "sst1dat1.bin", 0x000000, CRC(60cf6281) SHA1(c02a5bf8f4f94cbe8b0448c9457af53cd1c043d0) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "ss_voi1.bin", 0x000000, 0x080000, CRC(503e51b7) SHA1(2e159fcc9bb0bef9a3476ae233bc8d61fabbb4bd) )
@@ -4939,9 +4928,9 @@ ROM_START( suzuka8h )
ROM_LOAD( "eh2-sha0.bin", 0x000000, 0x80000, CRC(7f24619c) SHA1(0d19ab621cb42c5315be9a6b56f6711fc46ffff7) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_256K( "eh1-d0.13s", 0x000000, CRC(b43e5dfa) SHA1(7e24ee46169532cdb5c504239f7961f8d17e86e4) )
- NAMCOS2_DATA_LOAD_O_256K( "eh1-d1.13p", 0x000000, CRC(9825d5bf) SHA1(720f0e90c69a2e0c48889d510a15102768226a67) )
- NAMCOS2_DATA_LOAD_O_256K( "eh1-d3.13n", 0x100000, CRC(f46d301f) SHA1(70797fd584735844539553efcad53e11239ec10e) )
+ NAMCOS2_DATA_LOAD_E_256K( "eh1-d0.bin", 0x000000, CRC(b43e5dfa) SHA1(7e24ee46169532cdb5c504239f7961f8d17e86e4) )
+ NAMCOS2_DATA_LOAD_O_256K( "eh1-d1.bin", 0x000000, CRC(9825d5bf) SHA1(720f0e90c69a2e0c48889d510a15102768226a67) )
+ NAMCOS2_DATA_LOAD_O_256K( "eh1-d3.bin", 0x100000, CRC(f46d301f) SHA1(70797fd584735844539553efcad53e11239ec10e) )
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
ROM_LOAD( "ehs1_landdt.10w", 0, 0x100, CRC(cde7e8a6) SHA1(860273daf2e649418746adf50a67ae33f9f3740c) )
@@ -4986,9 +4975,9 @@ ROM_START( suzuka8hj )
ROM_LOAD( "eh1-sha0.bin", 0x000000, 0x80000, CRC(39585cf9) SHA1(8cc18b5745ab2cf50d4df0a17fc1a57771db28ab) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_256K( "eh1-d0.13s", 0x000000, CRC(b43e5dfa) SHA1(7e24ee46169532cdb5c504239f7961f8d17e86e4) )
- NAMCOS2_DATA_LOAD_O_256K( "eh1-d1.13p", 0x000000, CRC(9825d5bf) SHA1(720f0e90c69a2e0c48889d510a15102768226a67) )
- NAMCOS2_DATA_LOAD_O_256K( "eh1-d3.13n", 0x100000, CRC(f46d301f) SHA1(70797fd584735844539553efcad53e11239ec10e) )
+ NAMCOS2_DATA_LOAD_E_256K( "eh1-d0.bin", 0x000000, CRC(b43e5dfa) SHA1(7e24ee46169532cdb5c504239f7961f8d17e86e4) )
+ NAMCOS2_DATA_LOAD_O_256K( "eh1-d1.bin", 0x000000, CRC(9825d5bf) SHA1(720f0e90c69a2e0c48889d510a15102768226a67) )
+ NAMCOS2_DATA_LOAD_O_256K( "eh1-d3.bin", 0x100000, CRC(f46d301f) SHA1(70797fd584735844539553efcad53e11239ec10e) )
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
ROM_LOAD( "ehs1_landdt.10w", 0, 0x100, CRC(cde7e8a6) SHA1(860273daf2e649418746adf50a67ae33f9f3740c) )
@@ -5039,8 +5028,8 @@ ROM_START( suzuk8h2 )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
NAMCOS2_DATA_LOAD_E_512K( "ehs1-dat0.13s", 0x000000, CRC(12a202fb) SHA1(dca1b88cb524d54a699d4f6003854cfc980e084b) )
- NAMCOS2_DATA_LOAD_O_512K( "ehs1-dat1.13p", 0x000000, CRC(91790905) SHA1(988af294959dbb8636f808347b44897a133d3203) )
- NAMCOS2_DATA_LOAD_E_512K( "ehs1-dat2.13r", 0x100000, CRC(087da1f3) SHA1(e9c4ba0383e883502c0f45ae6e6d5daba4eccb01) )
+ NAMCOS2_DATA_LOAD_O_512K( "ehs1-dat1.13r", 0x000000, CRC(91790905) SHA1(988af294959dbb8636f808347b44897a133d3203) )
+ NAMCOS2_DATA_LOAD_E_512K( "ehs1-dat2.13p", 0x100000, CRC(087da1f3) SHA1(e9c4ba0383e883502c0f45ae6e6d5daba4eccb01) )
NAMCOS2_DATA_LOAD_O_512K( "ehs1-dat3.13n", 0x100000, CRC(85aecb3f) SHA1(00ab6104dee0cd0fbdb0235b88b41e4d26794f98) )
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
@@ -5092,8 +5081,8 @@ ROM_START( suzuk8h2j )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
NAMCOS2_DATA_LOAD_E_512K( "ehs1-dat0.13s", 0x000000, CRC(12a202fb) SHA1(dca1b88cb524d54a699d4f6003854cfc980e084b) )
- NAMCOS2_DATA_LOAD_O_512K( "ehs1-dat1.13p", 0x000000, CRC(91790905) SHA1(988af294959dbb8636f808347b44897a133d3203) )
- NAMCOS2_DATA_LOAD_E_512K( "ehs1-dat2.13r", 0x100000, CRC(087da1f3) SHA1(e9c4ba0383e883502c0f45ae6e6d5daba4eccb01) )
+ NAMCOS2_DATA_LOAD_O_512K( "ehs1-dat1.13r", 0x000000, CRC(91790905) SHA1(988af294959dbb8636f808347b44897a133d3203) )
+ NAMCOS2_DATA_LOAD_E_512K( "ehs1-dat2.13p", 0x100000, CRC(087da1f3) SHA1(e9c4ba0383e883502c0f45ae6e6d5daba4eccb01) )
NAMCOS2_DATA_LOAD_O_512K( "ehs1-dat3.13n", 0x100000, CRC(85aecb3f) SHA1(00ab6104dee0cd0fbdb0235b88b41e4d26794f98) )
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
@@ -5148,8 +5137,8 @@ ROM_START( valkyrie )
NAMCOS2_GFXROM_LOAD_128K( "wdshape.bin", 0x000000, CRC(3b5e0249) SHA1(259bbabf57a8ad739c646c56aad6d0b92e10adcd) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "wd1dat0.13s", 0x000000, CRC(ea209f48) SHA1(5e73a745dc2faaa4ce6c633d4072d41e9e494276) )
- NAMCOS2_DATA_LOAD_O_128K( "wd1dat1.13p", 0x000000, CRC(04b48ada) SHA1(aa046f8856bdd5b56d481c2c12ad2808c6517a5f) )
+ NAMCOS2_DATA_LOAD_E_128K( "wd1dat0.bin", 0x000000, CRC(ea209f48) SHA1(5e73a745dc2faaa4ce6c633d4072d41e9e494276) )
+ NAMCOS2_DATA_LOAD_O_128K( "wd1dat1.bin", 0x000000, CRC(04b48ada) SHA1(aa046f8856bdd5b56d481c2c12ad2808c6517a5f) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "wd1voi1.bin", 0x000000, 0x040000, CRC(f1ace193) SHA1(dd13bdf4b99c6bf4e356d623ff2e3da72db331dd) )
@@ -5198,10 +5187,10 @@ ROM_START( kyukaidk )
NAMCOS2_GFXROM_LOAD_128K( "ky1_sha.bin", 0x000000, CRC(380a20d7) SHA1(9627d2e0192779d50bfb25d5c19976275818c310) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "ky1_d0.13s", 0x000000, CRC(c9cf399d) SHA1(90cba42781b1e03ecc3f5b802d740ace6b88baaa) )
- NAMCOS2_DATA_LOAD_O_128K( "ky1_d1.13p", 0x000000, CRC(6d4f21b9) SHA1(f234a785f61969be684d2a4aed59616f125d72fc) )
- NAMCOS2_DATA_LOAD_E_128K( "ky1_d2.13r", 0x100000, CRC(eb6d19c8) SHA1(c9fdb33fe191d3c4d284db7cbb05d852551a998d) )
- NAMCOS2_DATA_LOAD_O_128K( "ky1_d3.13n", 0x100000, CRC(95674701) SHA1(9a8832837b9a3f8b75437717ea84d86261bfce59) )
+ NAMCOS2_DATA_LOAD_E_128K( "ky1_d0.bin", 0x000000, CRC(c9cf399d) SHA1(90cba42781b1e03ecc3f5b802d740ace6b88baaa) )
+ NAMCOS2_DATA_LOAD_O_128K( "ky1_d1.bin", 0x000000, CRC(6d4f21b9) SHA1(f234a785f61969be684d2a4aed59616f125d72fc) )
+ NAMCOS2_DATA_LOAD_E_128K( "ky1_d2.bin", 0x100000, CRC(eb6d19c8) SHA1(c9fdb33fe191d3c4d284db7cbb05d852551a998d) )
+ NAMCOS2_DATA_LOAD_O_128K( "ky1_d3.bin", 0x100000, CRC(95674701) SHA1(9a8832837b9a3f8b75437717ea84d86261bfce59) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "ky1_v1.bin", 0x000000, 0x080000, CRC(5ff81aec) SHA1(0535eda474de0a4aa3b48649b04afe2b7a8619c9) )
@@ -5245,10 +5234,10 @@ ROM_START( kyukaidko )
NAMCOS2_GFXROM_LOAD_128K( "ky1_sha.bin", 0x000000, CRC(380a20d7) SHA1(9627d2e0192779d50bfb25d5c19976275818c310) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
- NAMCOS2_DATA_LOAD_E_128K( "ky1_d0.13s", 0x000000, CRC(c9cf399d) SHA1(90cba42781b1e03ecc3f5b802d740ace6b88baaa) )
- NAMCOS2_DATA_LOAD_O_128K( "ky1_d1.13p", 0x000000, CRC(6d4f21b9) SHA1(f234a785f61969be684d2a4aed59616f125d72fc) )
- NAMCOS2_DATA_LOAD_E_128K( "ky1_d2.13r", 0x100000, CRC(eb6d19c8) SHA1(c9fdb33fe191d3c4d284db7cbb05d852551a998d) )
- NAMCOS2_DATA_LOAD_O_128K( "ky1_d3.13n", 0x100000, CRC(95674701) SHA1(9a8832837b9a3f8b75437717ea84d86261bfce59) )
+ NAMCOS2_DATA_LOAD_E_128K( "ky1_d0.bin", 0x000000, CRC(c9cf399d) SHA1(90cba42781b1e03ecc3f5b802d740ace6b88baaa) )
+ NAMCOS2_DATA_LOAD_O_128K( "ky1_d1.bin", 0x000000, CRC(6d4f21b9) SHA1(f234a785f61969be684d2a4aed59616f125d72fc) )
+ NAMCOS2_DATA_LOAD_E_128K( "ky1_d2.bin", 0x100000, CRC(eb6d19c8) SHA1(c9fdb33fe191d3c4d284db7cbb05d852551a998d) )
+ NAMCOS2_DATA_LOAD_O_128K( "ky1_d3.bin", 0x100000, CRC(95674701) SHA1(9a8832837b9a3f8b75437717ea84d86261bfce59) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "ky1_v1.bin", 0x000000, 0x080000, CRC(5ff81aec) SHA1(0535eda474de0a4aa3b48649b04afe2b7a8619c9) )
diff --git a/src/mame/drivers/namcos21.cpp b/src/mame/drivers/namcos21.cpp
index d4b0b2b385b..656a683bc33 100644
--- a/src/mame/drivers/namcos21.cpp
+++ b/src/mame/drivers/namcos21.cpp
@@ -291,6 +291,11 @@ Filter Board
#include "sound/c140.h"
#include "sound/ym2151.h"
+
+// TODO: basic parameters to get 60.606060 Hz, x2 is for interlace
+#define MCFG_SCREEN_RAW_PARAMS_NAMCO480I \
+ MCFG_SCREEN_RAW_PARAMS(12288000*2, 768, 0, 496, 264*2,0,480)
+
#define ENABLE_LOGGING 0
#define NAMCOS21_NUM_COLORS 0x8000
@@ -853,41 +858,39 @@ void namcos21_state::configure_c148_standard(machine_config &config)
m_slave_intc->link_c148_device(m_master_intc);
}
-void namcos21_state::winrun(machine_config &config)
-{
- M68000(config, m_maincpu, 12288000); /* Master */
- m_maincpu->set_addrmap(AS_PROGRAM, &namcos21_state::winrun_master_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(namcos21_state::screen_scanline), "screen", 0, 1);
+MACHINE_CONFIG_START(namcos21_state::winrun)
+ MCFG_DEVICE_ADD("maincpu", M68000,12288000) /* Master */
+ MCFG_DEVICE_PROGRAM_MAP(winrun_master_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos21_state, screen_scanline, "screen", 0, 1)
- M68000(config, m_slave, 12288000); /* Slave */
- m_slave->set_addrmap(AS_PROGRAM, &namcos21_state::winrun_slave_map);
+ MCFG_DEVICE_ADD("slave", M68000,12288000) /* Slave */
+ MCFG_DEVICE_PROGRAM_MAP(winrun_slave_map)
- MC6809E(config, m_audiocpu, 3072000); /* Sound */
- m_audiocpu->set_addrmap(AS_PROGRAM, &namcos21_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(namcos21_state::irq0_line_hold), attotime::from_hz(2*60));
- m_audiocpu->set_periodic_int(FUNC(namcos21_state::irq1_line_hold), attotime::from_hz(120));
+ MCFG_DEVICE_ADD("audiocpu", MC6809E, 3072000) /* Sound */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos21_state, irq0_line_hold, 2*60)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos21_state, irq1_line_hold, 120)
configure_c65_namcos21(config);
NAMCOS21_DSP(config, m_namcos21_dsp, 0);
m_namcos21_dsp->set_renderer_tag("namcos21_3d");
- m68000_device &gpu(M68000(config, "gpu", 12288000)); /* graphics coprocessor */
- gpu.set_addrmap(AS_PROGRAM, &namcos21_state::winrun_gpu_map);
+ MCFG_DEVICE_ADD("gpu", M68000,12288000) /* graphics coprocessor */
+ MCFG_DEVICE_PROGRAM_MAP(winrun_gpu_map)
configure_c148_standard(config);
NAMCO_C148(config, m_gpu_intc, 0, "gpu", false);
NAMCO_C139(config, m_sci, 0);
- config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame */
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- // TODO: basic parameters to get 60.606060 Hz, x2 is for interlace
- m_screen->set_raw(12288000*2, 768, 0, 496, 264*2, 0, 480);
- m_screen->set_screen_update(FUNC(namcos21_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS_NAMCO480I
+ MCFG_SCREEN_UPDATE_DRIVER(namcos21_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xBRG_888, NAMCOS21_NUM_COLORS);
@@ -906,7 +909,7 @@ void namcos21_state::winrun(machine_config &config)
m_c140->add_route(1, "rspeaker", 0.50);
YM2151(config, "ymsnd", 3579580).add_route(0, "lspeaker", 0.30).add_route(1, "rspeaker", 0.30);
-}
+MACHINE_CONFIG_END
ROM_START( winrun )
diff --git a/src/mame/drivers/namcos21_c67.cpp b/src/mame/drivers/namcos21_c67.cpp
index 51cee217c0c..dc2c5a0adbb 100644
--- a/src/mame/drivers/namcos21_c67.cpp
+++ b/src/mame/drivers/namcos21_c67.cpp
@@ -271,6 +271,10 @@ Namco System 21 Video Hardware
#include "sound/ym2151.h"
#include "emupal.h"
+// TODO: basic parameters to get 60.606060 Hz, x2 is for interlace
+#define MCFG_SCREEN_RAW_PARAMS_NAMCO480I \
+ MCFG_SCREEN_RAW_PARAMS(12288000*2, 768, 0, 496, 264*2,0,480)
+
#define ENABLE_LOGGING 0
#define NAMCOS21_NUM_COLORS 0x8000
@@ -806,34 +810,32 @@ void namcos21_c67_state::configure_c148_standard(machine_config &config)
}
// starblad, solvalou, aircomb, cybsled base state
-void namcos21_c67_state::namcos21(machine_config &config)
-{
- M68000(config, m_maincpu, 12288000); /* Master */
- m_maincpu->set_addrmap(AS_PROGRAM, &namcos21_c67_state::master_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(namcos21_c67_state::screen_scanline), "screen", 0, 1);
+MACHINE_CONFIG_START(namcos21_c67_state::namcos21)
+ MCFG_DEVICE_ADD("maincpu", M68000,12288000) /* Master */
+ MCFG_DEVICE_PROGRAM_MAP(master_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos21_c67_state, screen_scanline, "screen", 0, 1)
- M68000(config, m_slave, 12288000); /* Slave */
- m_slave->set_addrmap(AS_PROGRAM, &namcos21_c67_state::slave_map);
+ MCFG_DEVICE_ADD("slave", M68000,12288000) /* Slave */
+ MCFG_DEVICE_PROGRAM_MAP(slave_map)
- MC6809E(config, m_audiocpu, 3072000); /* Sound */
- m_audiocpu->set_addrmap(AS_PROGRAM, &namcos21_c67_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(namcos21_c67_state::irq0_line_hold), attotime::from_hz(2*60));
- m_audiocpu->set_periodic_int(FUNC(namcos21_c67_state::irq1_line_hold), attotime::from_hz(120));
+ MCFG_DEVICE_ADD("audiocpu", MC6809E, 3072000) /* Sound */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos21_c67_state, irq0_line_hold, 2*60)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos21_c67_state, irq1_line_hold, 120)
configure_c68_namcos21(config);
NAMCOS21_DSP_C67(config, m_namcos21_dsp_c67, 0);
m_namcos21_dsp_c67->set_renderer_tag("namcos21_3d");
- config.m_minimum_quantum = attotime::from_hz(12000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(12000))
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- // TODO: basic parameters to get 60.606060 Hz, x2 is for interlace
- m_screen->set_raw(12288000*2, 768, 0, 496, 264*2, 0, 480);
- m_screen->set_screen_update(FUNC(namcos21_c67_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS_NAMCO480I
+ MCFG_SCREEN_UPDATE_DRIVER(namcos21_c67_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
NAMCOS21_3D(config, m_namcos21_3d, 0);
m_namcos21_3d->set_zz_shift_mult(11, 0x200);
@@ -863,37 +865,33 @@ void namcos21_c67_state::namcos21(machine_config &config)
m_c140->add_route(1, "rspeaker", 0.50);
YM2151(config, "ymsnd", 3579580).add_route(0, "lspeaker", 0.30).add_route(1, "rspeaker", 0.30);
-}
+MACHINE_CONFIG_END
-void namcos21_c67_state::aircomb(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos21_c67_state::aircomb)
namcos21(config);
m_namcos21_dsp_c67->set_gametype(namcos21_dsp_c67_device::NAMCOS21_AIRCOMBAT);
-}
+MACHINE_CONFIG_END
-void namcos21_c67_state::starblad(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos21_c67_state::starblad)
namcos21(config);
m_namcos21_dsp_c67->set_gametype(namcos21_dsp_c67_device::NAMCOS21_STARBLADE);
-}
+MACHINE_CONFIG_END
-void namcos21_c67_state::cybsled(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos21_c67_state::cybsled)
namcos21(config);
m_namcos21_dsp_c67->set_gametype(namcos21_dsp_c67_device::NAMCOS21_CYBERSLED);
-}
+MACHINE_CONFIG_END
WRITE_LINE_MEMBER(namcos21_c67_state::yield_hack)
{
m_maincpu->yield();
}
-void namcos21_c67_state::solvalou(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos21_c67_state::solvalou)
namcos21(config);
m_namcos21_dsp_c67->set_gametype(namcos21_dsp_c67_device::NAMCOS21_SOLVALOU);
m_namcos21_dsp_c67->yield_hack_callback().set(FUNC(namcos21_c67_state::yield_hack)); // VCK function
-}
+MACHINE_CONFIG_END
ROM_START( starblad )
diff --git a/src/mame/drivers/namcos21_de.cpp b/src/mame/drivers/namcos21_de.cpp
index 7b1d98d4bcc..f06353186cd 100644
--- a/src/mame/drivers/namcos21_de.cpp
+++ b/src/mame/drivers/namcos21_de.cpp
@@ -48,6 +48,9 @@ Driver's Eyes works,
#include "sound/c140.h"
#include "emupal.h"
+// TODO: basic parameters to get 60.606060 Hz, x2 is for interlace
+#define MCFG_SCREEN_RAW_PARAMS_NAMCO480I \
+ MCFG_SCREEN_RAW_PARAMS(12288000*2, 768, 0, 496, 264*2,0,480)
#define ENABLE_LOGGING 0
@@ -180,37 +183,35 @@ static GFXDECODE_START( gfx_namcos21 )
GFXDECODE_END
-void namco_de_pcbstack_device::device_add_mconfig(machine_config &config)
-{
- M68000(config, m_maincpu, 12288000); /* Master */
- m_maincpu->set_addrmap(AS_PROGRAM, &namco_de_pcbstack_device::driveyes_master_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(namco_de_pcbstack_device::screen_scanline), "screen", 0, 1);
+MACHINE_CONFIG_START(namco_de_pcbstack_device::device_add_mconfig)
+ MCFG_DEVICE_ADD("maincpu", M68000,12288000) /* Master */
+ MCFG_DEVICE_PROGRAM_MAP(driveyes_master_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namco_de_pcbstack_device, screen_scanline, "screen", 0, 1)
- M68000(config, m_slave, 12288000); /* Slave */
- m_slave->set_addrmap(AS_PROGRAM, &namco_de_pcbstack_device::driveyes_slave_map);
+ MCFG_DEVICE_ADD("slave", M68000,12288000) /* Slave */
+ MCFG_DEVICE_PROGRAM_MAP(driveyes_slave_map)
- MC6809E(config, m_audiocpu, 3072000); /* Sound */
- m_audiocpu->set_addrmap(AS_PROGRAM, &namco_de_pcbstack_device::sound_map);
- m_audiocpu->set_periodic_int(FUNC(namco_de_pcbstack_device::irq0_line_hold), attotime::from_hz(2*60));
- m_audiocpu->set_periodic_int(FUNC(namco_de_pcbstack_device::irq1_line_hold), attotime::from_hz(120));
+ MCFG_DEVICE_ADD("audiocpu", MC6809E, 3072000) /* Sound */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namco_de_pcbstack_device, irq0_line_hold, 2*60)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(namco_de_pcbstack_device, irq1_line_hold, 120)
configure_c68_namcos21(config);
NAMCOS21_DSP(config, m_namcos21_dsp, 0);
m_namcos21_dsp->set_renderer_tag("namcos21_3d");
- config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame */
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
configure_c148_standard(config);
NAMCO_C139(config, m_sci, 0);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- // TODO: basic parameters to get 60.606060 Hz, x2 is for interlace
- m_screen->set_raw(12288000*2, 768, 0, 496, 264*2, 0, 480);
- m_screen->set_screen_update(FUNC(namco_de_pcbstack_device::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS_NAMCO480I
+ MCFG_SCREEN_UPDATE_DRIVER(namco_de_pcbstack_device, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, "gfxdecode", m_palette, gfx_namcos21);
PALETTE(config, m_palette).set_format(palette_device::xBRG_888, NAMCOS21_NUM_COLORS);
@@ -238,7 +239,7 @@ void namco_de_pcbstack_device::device_add_mconfig(machine_config &config)
m_c140->add_route(1, "rspeaker", 0.50);
YM2151(config, "ymsnd", 3579580).add_route(0, "lspeaker", 0.30).add_route(1, "rspeaker", 0.30);
-}
+MACHINE_CONFIG_END
uint32_t namco_de_pcbstack_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/drivers/namcos22.cpp b/src/mame/drivers/namcos22.cpp
index c91fc4628c6..9fdb6eeeed2 100644
--- a/src/mame/drivers/namcos22.cpp
+++ b/src/mame/drivers/namcos22.cpp
@@ -3377,8 +3377,8 @@ static INPUT_PORTS_START( alpiner )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START1 ) // Decision / View Change
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_16WAY // L Selection
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_16WAY // R Selection
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, namcos22_state, alpine_motor_read, 0) // steps are free
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, namcos22_state, alpine_motor_read, 1) // steps are locked
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, namcos22_state, alpine_motor_read, (void *)0) // steps are free
+ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, namcos22_state, alpine_motor_read, (void *)1) // steps are locked
PORT_BIT( 0xfe00, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("ADC.0")
@@ -3877,12 +3877,12 @@ void namcos22_state::machine_start()
}
// System22
-void namcos22_state::namcos22(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos22_state::namcos22)
+
/* basic machine hardware */
- M68020(config, m_maincpu, 49.152_MHz_XTAL/2); // MC68020RP25E
- m_maincpu->set_addrmap(AS_PROGRAM, &namcos22_state::namcos22_am);
- m_maincpu->set_vblank_int("screen", FUNC(namcos22_state::namcos22_interrupt));
+ MCFG_DEVICE_ADD("maincpu", M68020, 49.152_MHz_XTAL/2) // MC68020RP25E
+ MCFG_DEVICE_PROGRAM_MAP(namcos22_am)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos22_state, namcos22_interrupt)
tms32025_device& master(TMS32025(config, m_master, 40_MHz_XTAL));
master.set_addrmap(AS_PROGRAM, &namcos22_state::master_dsp_program);
@@ -3894,7 +3894,7 @@ void namcos22_state::namcos22(machine_config &config)
master.xf_out_cb().set(FUNC(namcos22_state::dsp_xf_output_w));
master.dr_in_cb().set(FUNC(namcos22_state::master_serial_io_r));
master.set_vblank_int("screen", FUNC(namcos22_state::dsp_vblank_irq));
- TIMER(config, "dsp_serial").configure_periodic(FUNC(namcos22_state::dsp_serial_pulse), attotime::from_hz(SERIAL_IO_PERIOD));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("dsp_serial", namcos22_state, dsp_serial_pulse, attotime::from_hz(SERIAL_IO_PERIOD))
tms32025_device& slave(TMS32025(config, m_slave, 40_MHz_XTAL));
slave.set_addrmap(AS_PROGRAM, &namcos22_state::slave_dsp_program);
@@ -3906,141 +3906,140 @@ void namcos22_state::namcos22(machine_config &config)
slave.xf_out_cb().set(FUNC(namcos22_state::dsp_xf_output_w));
slave.dx_out_cb().set(FUNC(namcos22_state::slave_serial_io_w));
- NAMCO_C74(config, m_mcu, 49.152_MHz_XTAL/3); // C74 on the CPU board has no periodic interrupts, it runs entirely off Timer A0
- m_mcu->set_addrmap(AS_PROGRAM, &namcos22_state::mcu_s22_program);
- m_mcu->set_addrmap(AS_IO, &namcos22_state::mcu_s22_io);
+ MCFG_DEVICE_ADD("mcu", NAMCO_C74, 49.152_MHz_XTAL/3) // C74 on the CPU board has no periodic interrupts, it runs entirely off Timer A0
+ MCFG_DEVICE_PROGRAM_MAP(mcu_s22_program)
+ MCFG_DEVICE_IO_MAP(mcu_s22_io)
- NAMCO_C74(config, m_iomcu, 6.144_MHz_XTAL);
- m_iomcu->set_addrmap(AS_PROGRAM, &namcos22_state::iomcu_s22_program);
- m_iomcu->set_addrmap(AS_IO, &namcos22_state::iomcu_s22_io);
+ MCFG_DEVICE_ADD("iomcu", NAMCO_C74, 6.144_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(iomcu_s22_program)
+ MCFG_DEVICE_IO_MAP(iomcu_s22_io)
EEPROM_2864(config, "eeprom").write_time(attotime::zero);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- //m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(namcos22_state::screen_update_namcos22));
- m_screen->screen_vblank().set(FUNC(namcos22_state::screen_vblank));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ //MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos22_state, screen_update_namcos22)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, namcos22_state, screen_vblank))
- PALETTE(config, m_palette).set_entries(0x8000);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_namcos22);
+ MCFG_PALETTE_ADD("palette", 0x8000)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_namcos22)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- C352(config, m_c352, 49.152_MHz_XTAL/2, 288);
- m_c352->add_route(0, "lspeaker", 1.00);
- m_c352->add_route(1, "rspeaker", 1.00);
-}
+ MCFG_DEVICE_ADD("c352", C352, 49.152_MHz_XTAL/2, 288)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
+MACHINE_CONFIG_END
-void namcos22_state::cybrcomm(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos22_state::cybrcomm)
namcos22(config);
SPEAKER(config, "rear_left").rear_left();
SPEAKER(config, "rear_right").rear_right();
- m_c352->add_route(2, "rear_left", 1.00);
- m_c352->add_route(3, "rear_right", 1.00);
-}
+ MCFG_DEVICE_MODIFY("c352")
+ MCFG_SOUND_ROUTE(2, "rear_left", 1.00)
+ MCFG_SOUND_ROUTE(3, "rear_right", 1.00)
+MACHINE_CONFIG_END
// System Super22
-void namcos22_state::namcos22s(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos22_state::namcos22s)
namcos22(config);
/* basic machine hardware */
- M68EC020(config.replace(), m_maincpu, 49.152_MHz_XTAL/2); // MC68EC020FG25
- m_maincpu->set_addrmap(AS_PROGRAM, &namcos22_state::namcos22s_am);
- m_maincpu->set_vblank_int("screen", FUNC(namcos22_state::namcos22s_interrupt));
+ MCFG_DEVICE_REPLACE("maincpu", M68EC020, 49.152_MHz_XTAL/2) // MC68EC020FG25
+ MCFG_DEVICE_PROGRAM_MAP(namcos22s_am)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos22_state, namcos22s_interrupt)
- M37710S4(config.replace(), m_mcu, 49.152_MHz_XTAL/3);
- m_mcu->set_addrmap(AS_PROGRAM, &namcos22_state::mcu_program);
- m_mcu->set_addrmap(AS_IO, &namcos22_state::mcu_io);
- TIMER(config, "mcu_irq").configure_scanline(FUNC(namcos22_state::mcu_irq), "screen", 0, 240);
- config.m_minimum_quantum = attotime::from_hz(9000); // erratic inputs otherwise, probably mcu vs maincpu shareram
+ MCFG_DEVICE_REPLACE("mcu", M37710S4, 49.152_MHz_XTAL/3)
+ MCFG_DEVICE_PROGRAM_MAP(mcu_program)
+ MCFG_DEVICE_IO_MAP(mcu_io)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("mcu_irq", namcos22_state, mcu_irq, "screen", 0, 240)
+ MCFG_QUANTUM_TIME(attotime::from_hz(9000)) // erratic inputs otherwise, probably mcu vs maincpu shareram
- config.device_remove("iomcu");
+ MCFG_DEVICE_REMOVE("iomcu")
MB87078(config, m_mb87078);
m_mb87078->gain_changed().set(FUNC(namcos22_state::mb87078_gain_changed));
/* video hardware */
- m_screen->set_screen_update(FUNC(namcos22_state::screen_update_namcos22s));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(namcos22_state, screen_update_namcos22s)
- GFXDECODE(config.replace(), m_gfxdecode, m_palette, gfx_super);
-}
+ MCFG_DEVICE_REPLACE("gfxdecode", GFXDECODE, "palette", gfx_super)
+MACHINE_CONFIG_END
-void namcos22_state::airco22b(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos22_state::airco22b)
namcos22s(config);
SPEAKER(config, "bodysonic").subwoofer();
- m_c352->add_route(2, "bodysonic", 0.50); // to subwoofer
-}
+ MCFG_DEVICE_MODIFY("c352")
+ MCFG_SOUND_ROUTE(2, "bodysonic", 0.50) // to subwoofer
+MACHINE_CONFIG_END
-void namcos22_state::alpine(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos22_state::alpine)
namcos22s(config);
- m_mcu->set_addrmap(AS_IO, &namcos22_state::alpine_io_map);
+ MCFG_DEVICE_MODIFY("mcu")
+ MCFG_DEVICE_IO_MAP(alpine_io_map)
- TIMER(config, m_motor_timer).configure_generic(FUNC(namcos22_state::alpine_steplock_callback));
-}
+ MCFG_TIMER_DRIVER_ADD("motor_timer", namcos22_state, alpine_steplock_callback)
+MACHINE_CONFIG_END
-void namcos22_state::alpinesa(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos22_state::alpinesa)
alpine(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &namcos22_state::alpinesa_am);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(alpinesa_am)
+MACHINE_CONFIG_END
-void namcos22_state::cybrcycc(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos22_state::cybrcycc)
namcos22s(config);
SPEAKER(config, "tank", 0.0, 0.0, 0.0);
- m_c352->add_route(2, "tank", 1.00);
-}
+ MCFG_DEVICE_MODIFY("c352")
+ MCFG_SOUND_ROUTE(2, "tank", 1.00)
+MACHINE_CONFIG_END
-void namcos22_state::dirtdash(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos22_state::dirtdash)
namcos22s(config);
SPEAKER(config, "road", 0.0, 0.0, 0.0);
- m_c352->add_route(3, "road", 1.00);
-}
+ MCFG_DEVICE_MODIFY("c352")
+ MCFG_SOUND_ROUTE(3, "road", 1.00)
+MACHINE_CONFIG_END
-void namcos22_state::timecris(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos22_state::timecris)
namcos22s(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &namcos22_state::timecris_am);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(timecris_am)
+MACHINE_CONFIG_END
-void namcos22_state::tokyowar(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos22_state::tokyowar)
namcos22s(config);
SPEAKER(config, "vibration").subwoofer();
SPEAKER(config, "seat").rear_center();
- m_c352->add_route(2, "vibration", 0.50); // to "bass shaker"
- m_c352->add_route(3, "seat", 1.00);
-}
+ MCFG_DEVICE_MODIFY("c352")
+ MCFG_SOUND_ROUTE(2, "vibration", 0.50) // to "bass shaker"
+ MCFG_SOUND_ROUTE(3, "seat", 1.00)
+MACHINE_CONFIG_END
-void namcos22_state::propcycl(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos22_state::propcycl)
namcos22s(config);
- TIMER(config, "pc_p_upd").configure_periodic(FUNC(namcos22_state::propcycl_pedal_update), attotime::from_msec(20));
- TIMER(config, m_pc_pedal_interrupt).configure_generic(FUNC(namcos22_state::propcycl_pedal_interrupt));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("pc_p_upd", namcos22_state, propcycl_pedal_update, attotime::from_msec(20))
+ MCFG_TIMER_DRIVER_ADD("pc_p_int", namcos22_state, propcycl_pedal_interrupt)
+MACHINE_CONFIG_END
MACHINE_START_MEMBER(namcos22_state,adillor)
{
@@ -4050,13 +4049,12 @@ MACHINE_START_MEMBER(namcos22_state,adillor)
elem = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(namcos22_state::adillor_trackball_interrupt),this));
}
-void namcos22_state::adillor(machine_config &config)
-{
+MACHINE_CONFIG_START(namcos22_state::adillor)
namcos22s(config);
- TIMER(config, "ar_tb_upd").configure_periodic(FUNC(namcos22_state::adillor_trackball_update), attotime::from_msec(20));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("ar_tb_upd", namcos22_state, adillor_trackball_update, attotime::from_msec(20))
MCFG_MACHINE_START_OVERRIDE(namcos22_state,adillor)
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/nanos.cpp b/src/mame/drivers/nanos.cpp
index 4e982e40032..a2198847cad 100644
--- a/src/mame/drivers/nanos.cpp
+++ b/src/mame/drivers/nanos.cpp
@@ -466,8 +466,7 @@ static GFXDECODE_START( gfx_nanos )
GFXDECODE_ENTRY( "chargen", 0x0000, nanos_charlayout, 0, 1 )
GFXDECODE_END
-void nanos_state::nanos(machine_config &config)
-{
+MACHINE_CONFIG_START(nanos_state::nanos)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(4'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &nanos_state::mem_map);
@@ -475,15 +474,15 @@ void nanos_state::nanos(machine_config &config)
m_maincpu->set_daisy_config(nanos_daisy_chain);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(nanos_state::screen_update));
- screen.set_size(80*8, 25*10);
- screen.set_visarea(0,80*8-1,0,25*10-1);
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_nanos);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(nanos_state, screen_update)
+ MCFG_SCREEN_SIZE(80*8, 25*10)
+ MCFG_SCREEN_VISIBLE_AREA(0,80*8-1,0,25*10-1)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_nanos)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* devices */
@@ -518,13 +517,13 @@ void nanos_state::nanos(machine_config &config)
/* UPD765 */
UPD765A(config, m_fdc, 8'000'000, false, true);
- FLOPPY_CONNECTOR(config, m_floppy, nanos_floppies, "525hd", nanos_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy, nanos_floppies, "525hd", nanos_state::floppy_formats)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K");
- TIMER(config, "keyboard_timer").configure_periodic(FUNC(nanos_state::keyboard_callback), attotime::from_hz(24000));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", nanos_state, keyboard_callback, attotime::from_hz(24000))
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( nanos )
diff --git a/src/mame/drivers/naomi.cpp b/src/mame/drivers/naomi.cpp
index e159a5eeddd..62ac2911252 100644
--- a/src/mame/drivers/naomi.cpp
+++ b/src/mame/drivers/naomi.cpp
@@ -321,29 +321,25 @@ Games known to use this PCB include....
Sticker EPROM FLASHROMs X76F100 EPM7064S 315-5881
Game on cart IC22# # of SOP56 IC37# IC41# IC42# Notes
----------------------------------------------------------------------------------------------------------------------------------
-Club Kart: European Session (2003, prototype) no cart * 21 (64Mb)** present 315-6206 not present * flash-PCB ** game data ROMs is not dumped
+Club Kart: European Session (2003, prototype) no cart * 21 (64Mb) present 315-6206 not present * instead of EPROM have tiny PCB with 2 flashroms on it
Crackin' DJ part 2 840-0068C 23674 20 (64Mb) present 315-6206 317-0311-COM PCB have label 840-0068B-01 837-14124, requires regular 837-13551 and 837-13938 rotary JVS boards, and turntable simulation
Crazy Taxi 840-0002C ? 13 (64Mb) ? 315-6206 ? not dumped, likely same as regular 171-7919A cart
Ferrari F355 Challenge (twin/deluxe, preview) no cart 22848P* 21 (64Mb) present 315-6206 317-0267-COM * other ROM board we've seen had 2x flashroms PCB instead of IC22 EEPROM, contents is the same.
/Ferrari F355 Challenge 2 - International
\Course Edition (twin/deluxe, prototype) no cart 23399 21 (64Mb) present 315-6206 317-0287-COM content is the same as regular 171-7919A cart
+Mushiking (MUSHIUSA '04 1ST, Prototype) no sticker none 11*(64Mb) present 315-6206 not present * only first 7 flash roms contain game data, PCB have label 840-0150B-FLS.
Inu No Osanpo / Dog Walking (Rev A) 840-0073C 22294A 16 (64Mb) present 315-6206 317-0316-JPN requires 837-13844 JVS IO with DIPSW 1 ON
-/Mushiking The King Of Beetle
-\(MUSHIUSA '04 1ST, Prototype) not present none 11*(64Mb) present 315-6206 not present * only first 7 flash roms contain game data, PCB have label 840-0150B-FLS.
-Samba de Amigo (prototype) no cart ** 21*(64Mb) present 315-6206 317-0270-COM * only first 14 flash roms contain game data, ** instead of EPROM have tiny PCB with 2 flashroms on it
-/Shootout Pool Prize (Export) / Shootout
-\Pool The Medal (Japan) Version B (prototype) 840-0136C ** 21*(64Mb) present 317-6206 not present * only first 4 flash roms contain game data, ** instead of EPROM have tiny PCB with 2 flashroms on it
+Samba de Amigo (prototype) no cart * 21*(64Mb) present 315-6206 317-0270-COM * only first 14 flash roms contain game data, instead of EPROM have tiny PCB with 2 flashroms on it
+Shootout Pool Prize Ver.B -P 840-0136C ** 21*(64Mb) present 317-6206 not present * only first 4 flash roms contain game data, ** instead of EPROM have tiny PCB with 2 flashroms on it
Soul Surfer (Rev A) 840-0095C 23838C 21 (64Mb) present 315-6206 not present
Star Horse (live and backup) 840-0055B 23626 17 (64Mb) present 315-6206 not present requires 837-13785 ARCNET&IO BD
-Star Horse Progress (backup data) 840-0034B - 2 (64Mb) present 315-6206 not present not contain game data, used in stack with 840-0121(sound&backup) ROM board as game backup data storage, have JP3 and JP4 in position 2-3
+Horse Data 840-0034B - 2 (64Mb) present 315-6206 not present not contain game data, used in stack with 840-0121(sound&backup) ROM board as game backup data storage, have JP3 and JP4 in position 2-3
The House of the Dead 2 (prototype) no cart A1E2 21 (64Mb) present 315-6206 present no label on IC42
-The King of Route 66 (prototype) no cart 23819* 21 (64Mb) present 315-6206 not present * flash-PCB with printed label "EPR-23819 IC22 0109 CHK" handwritten "1/11" - it is assumed that only 20 flash roms are used
-The King of Route 66 (Rev A) 840-0087C 23819A 20 (64Mb) present 315-6206 not present content is the same as regular 171-8132B cart
+The King of Route 66 (Rev A) 840-0087C 23819A 20 (64Mb) present 315-6206 not present content is the same as regular 171-8132A cart
The Maze of the Kings (prototype) no cart * 21 (64Mb) present 315-6206 FRI * flash-PCB, not dumped but known to exist
Tokyo Bus Guide (Rev A) 840-0045C 23468A 18 (64Mb) present 315-6206 317-0290-COM requires 837-13844 JVS IO
-Virtua Athletics / Virtua Athlete (prototype) no cart none 21*(64Mb) present 315-6206 present * only first 14 flash roms contain game data, have Japan text label "Overseas sales (NA & EU)"
+Virtua Athletics (prototype) no cart none 21*(64Mb) present 315-6206 present * only first 14 flash roms contain game data, have Japan text label "Overseas sales (NA & EU)"
Virtua NBA (prototype) no cart * 21 (64Mb) present 315-6206 317-0271-COM * instead of EPROM have tiny PCB with 2 flashroms on it
-Virtua NBA (prototype, 15.11) no cart * 21 (64Mb) present 315-6206 317-0271-COM * instead of EPROM have tiny PCB with 2 flashroms on it
Virtua Tennis / Power Smash (prototype) no cart * 21 (64Mb) present 315-6206 317-0263-COM * flash-PCB, title screen have label "SOFT R&D Dept.#3", not dumped but known to exist
Wave Runner GP (USA, Rev A) 840-0064C 23725A 12 (64Mb) present 315-6206 317-0306-COM PCB s/n is 840-0064B-01
@@ -381,9 +377,7 @@ Games known to use this PCB include....
Sticker EPROM mask ROMs X76F100 XC9536 315-5881
Game on cart IC22# # of SOP44 IC37# IC41# IC42# Notes
------------------------------------------------------------------------------------------------------------------------------
-18 Wheeler (deluxe) ? 22185 20 (64Mb) ? ? ?
-18 Wheeler (deluxe, Rev A) 840-0023C 22185A 20 (64Mb) present 315-6213 317-0273-COM
-18 Wheeler (deluxe, Rev T) ? 22185T 20 (64Mb) ? ? ?
+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 (World, Rev B) ? 21787B 11 (64Mb) present 315-6213 317-0251-COM 2 known BIOS 21801 (USA), 21802 (EXP)
@@ -395,17 +389,16 @@ Dead Or Alive 2 (Rev A) 841-0003C 22121A 21 (64Mb)
Dead Or Alive 2 841-0003C-01 22207 21 (64Mb) present 315-6213 317-5048-COM have unlocked Tag and Survival game modes, possible USA or international release
Dead Or Alive 2 Millennium 841-0003C DOA2 Ver.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
-Death Crimson OX (Rev A) 841-0016C 23524A 10 (64Mb) present 315-6213 317-5066-COM cart case had no revision label
+Death Crimson OX 841-0016C 23524A 10 (64Mb) present 315-6213 317-5066-COM cart case had no revision label
Dengen Tenshi Taisen Janshi Shangri-La 841-0004C 22060 12 (64Mb) ? 315-6213 317-5050-JPN
-Derby Owners Club (Japan, Rev B) 840-0016C 22099B 14 (64Mb) ? 315-6213 317-0262-JPN touch panel + 2 buttons + card reader
+Derby Owners Club (Japan) (Rev B) 840-0016C 22099B 14 (64Mb) ? 315-6213 317-0262-JPN touch panel + 2 buttons + card reader
Derby Owners Club 2000 (Japan) * 22222 16 (64Mb) present 315-6213 not present * no cart, master unit stickers: 833-13937-01, DOC 4050-01, DOC S. not dumped.
-Derby Owners Club 2000 Ver.2 (Japan, Rev A) 840-0052C 22284A 16 (64Mb) present 315-6213 not present
-Dynamite Baseball '99 (Japan, Rev B) 840-0019C 22141B 19 (64Mb) ? 315-6213 317-0269-JPN requires special panel (joystick + 2 buttons + bat controller for each player)
+Derby Owners Club 2000 Ver.2 (Japan) (Rev A) 840-0052C 22284A 16 (64Mb) present 315-6213 not present
+Dynamite Baseball '99 (Japan) (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 (Japan) 840-0001C 21575 21 (64Mb) ? 315-6213 317-0246-JPN requires special panel (joystick + 2 buttons + bat controller for each player)
Ferrari F355 Challenge (deluxe, no link) 834-13842 21902 21 (64Mb) present 315-6213 317-0254-COM BIOS 21862 (JPN), 21863 (USA), 21864 (EXP)
Ferrari F355 Challenge (twin/deluxe) 834-13950 22848 21 (64Mb) present 315-6213 317-0267-COM BIOS 22849 (JPN), 22850 (USA), 22851 (EXP)
-/Ferrari F355 Challenge 2 - International
-\Course Edition (twin/deluxe) 840-0042C 23399 21 (64Mb) present 315-6213 317-0287-COM BIOS 22849 (JPN), 22850 (USA), 22851 (EXP)
+Ferrari F355 Challenge 2 (twin/deluxe) 840-0042C 23399 21 (64Mb) present 315-6213 317-0287-COM BIOS 22849 (JPN), 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) present 315-6213 317-5063-COM
Gun Spike 841-0012C 23210 12 (64Mb) present 315-6213 317-5060-COM \same ROM board
@@ -414,15 +407,13 @@ Heavy Metal Geomatrix (Rev B) HMG016007 23716A 11 (64Mb)
Idol Janshi Suchie-Pai 3 841-0002C 21979 14 (64Mb) ? 315-6213 317-5047-JPN requires 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-0274-JPN
-Marvel Vs. Capcom 2 (USA, Rev A) 841-0007C-01 23062A 14 (64Mb) present 315-6213 317-5053-COM
+Marvel Vs. Capcom 2 (USA) (Rev A) 841-0007C-01 23062A 14 (64Mb) present 315-6213 317-5053-COM
OutTrigger 840-0017C 22163 19 (64Mb) ? 315-6213 317-0266-COM requires regular 837-13551 and 837-13938 rotary JVS boards, and 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) ? 315-6213 317-5052-COM
-Ring Out 4x4 ? 21779 10 (64Mb) ? ? ?
-Ring Out 4x4 (Rev A) 840-0004C 21779A 10 (64Mb) present 315-6213 317-0250-COM requires 2 JVS boards
-Samba de Amigo (Rev A) 840-0020C 22966A 16 (64Mb) present 315-6213 317-0270-COM will boot but requires special controller to play it
-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
+Ring Out 4x4 840-0004C 21779 10 (64Mb) present 315-6213 317-0250-COM requires 2 JVS boards
+Samba de Amigo (Rev B) (Rev A) 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 837-13844 JVS IO with all DIPSW Off and fishing controller
Sega Strike Fighter (Rev A) 840-0035C 23323A 20 (64Mb) present 315-6213 317-0281-COM have "Rev. A" label on case
Sega Strike Fighter (Rev A, no training mode) 840-0035C 23786A 20 (64Mb) present 315-6213 317-0281-COM have no training mode, "Rev. A" label on PCB, cart case have no revision label
@@ -432,20 +423,17 @@ Spawn In the Demon's Hand (Rev B) 841-0005C 22977B 10 (64Mb)
World Series 99 840-0012C 22059 21 (64Mb) ? 315-6213 317-0259-COM \same ROM board
Super Major League 99 840-0012C-01 22059 21 (64Mb) ? 315-6213 317-0259-COM /
The House of the Dead 2 834-13636 21385 20 (64Mb) not present not present \ ROM board type is 837-13390
-The House of the Dead 2 (Export) ? 21805 20 (64Mb) ? not present | uses Lattice ispLSI 2032 80LJ instead of Xilinx
-The House of the Dead 2 (USA) 834-13636-01 21585 20 (64Mb) not present not present /
+The House of the Dead 2 (USA) 834-13636-01 21585 20 (64Mb) not present not present / uses Lattice ispLSI 2032 80LJ instead of Xilinx
The Typing of the Dead 840-0026C 23021 20 (64Mb) present 315-6213 not present
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 requires 837-13844 JVS IO with DIPSW 5 On, ELO AccuTouch-compatible touch screen controller and special printer.
+Touch de UNO! / Unou Nouryoku Check Machine 840-0008C 22073 4 (64Mb) present 315-6213 317-0255-JPN requires 837-13844 JVS IO with DIPSW 5 On, ELO AccuTouch-compatible touch screen controller and special printer.
Toy Fighter 840-0011C 22035 10 (64Mb) present 315-6212 317-0257-COM joystick + 3 buttons
Virtua NBA 840-0021C 22949 21 (64Mb) present 315-6213 317-0271-COM
Virtua NBA (USA) 840-0021C-01 23073 21 (64Mb) present 315-6213 not present PCB s/n is 840-0021B-01
-Virtua Striker 2 Ver. 2000 840-0010C 21929 14 (64Mb) ? ? ?
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
Virtual On Oratorio Tangram M.S.B.S. ver5.66 840-0028C 23198 13 (64Mb) ? 315-6213 317-0279-COM
Zombie Revenge 840-0003C 21707 19 (64Mb) ? 315-6213 317-0249-COM joystick + 3 buttons
-Zombie Revenge (Export) ? 21834 19 (64Mb) ? ? ?
Zombie Revenge (Rev A) 840-0003C 21707A 19 (64Mb) present 315-6213 317-0249-COM joystick + 3 buttons
@@ -487,7 +475,7 @@ Notes:
JP6 - JUMPER Unknown function (1-2)
SW1 - PUSHBUTTON
SW2 - 8X2 DIPswitch
- SCSI-CTRL - SCSI-II controller MB86604A (ic45)
+ SCSI-CTRL - SCSI-II controller MB86604A
CNDB25 - DB-25 SCSI-II connector
IC17S-IC38S - Intel DA28F640J5 FlashROM (SOP56), 64Mb.
IC16 - EPROM (DIP42), not populated.
@@ -539,7 +527,7 @@ Notes:
On the end of the number, -JPN means it requires Japanese BIOS, -COM will run with any BIOS
IC11 - EPROM (DIP42), either 27C160 or 27C322
JP1 - JUMPER Sets the size of the EPROM. 1-2 = 32M, 2-3 = 16M
- IC13S - EEPROM (SOIC8) 25LC040 serial EEPROM (on PCB etched as AT25010)
+ IC13S - EEPROM (SOIC8) 25LC040 serial EEPROM
IC14 - 256 x 9 AsyncFIFO, 5.0V (SOP28)
IC15 - SRAM (SOJ28) 32kx8, IDT71256
IC17S-IC38S - MaskROM (SOP44), either 32Mb or 64Mb. Not all positions are populated
@@ -550,27 +538,25 @@ from NAOMI side it read as X76F100-type, probably simulated by ACTEL FPGA.
Actual data is shuffled, address bits 3 to 6 have reversed order, i.e. 8 7 3 4 5 6 2 1 0.
Games known to use this PCB include....
- Sticker EPROM mask ROMs 25LC040 A54SX32
-Game on cart IC11# # of SOP44 IC13S# IC1# Notes
-------------------------------------------------------------------------------------------------------------------------------------------
-Club Kart: European Session (2003, Rev A) 840-0139C 24173A 18 (64Mb) present 317-0382-COM
-Club Kart Prize (Export, Japan, Rev A) 840-0129C 24082A 16 (64Mb) present 317-0368-COM requires Naomi-based hopper controller (Naomi bd + 840-0130 cart + 837-14381 "G2 EXPANSION BD")
-Club Kart Prize Version B (Export, Japan) 840-0137C 24149 16 (64Mb) present 317-0368-COM requires Naomi-based or 837-14438 hopper controller (selected by P1 BUTTON1 bit)
-Giant Gram 2000 840-0039C 23377 20 (64Mb) present 317-0296-COM
-Kick '4' Cash 840-0140C 24212 16 (64Mb) present 317-0397-COM requires 837-14438 "SH I/O BD" hopper controller
-Marvel Vs. Capcom 2 New Age of Heroes (Export, Rev A) 841-0007C-02 23085A 14 (64Mb)* present 317-5058-COM *(+2x 32Mb) have factory wire-mod connecting IC13S serial EEPROM CLK pin to IC11 ROM /OE pin
-Marvel Vs. Capcom 2 New Age of Heroes (Korea, Rev A) 841-0007C-03 23085A 14 (64Mb)* present 317-5058-COM *(+2x 32Mb) have factory wire-mod connecting IC13S serial EEPROM CLK pin to IC11 ROM /OE pin
-MushiKing The King of Beetles 2K3 2ND 840-0150C 24217 6 (64Mb) present 317-0394-COM requires 610-0669 barcode reader, 838-14245-92 "MAPLE/232C CONVERT BD" (MIE-based), 838-14243 "RFID CHIP R/W BD" and RFID chip
-Quiz Ah Megamisama 840-0030C 23227 16 (64Mb) present 317-0280-JPN
-Shootout Pool 840-0098C 23844 4 (64Mb) present 317-0336-COM requires regular 837-13551 and 837-13938 rotary JVS boards
-/Shootout Pool Prize (Export) /
-\Shootout Pool The Medal (Japan, Rev A) 840-0128C 24065A 4 (64Mb) present 317-0367-COM requires Naomi-based hopper controller
-/Shootout Pool Prize (Export) /
-\Shootout Pool The Medal (Japan) Version B 840-0136C 24148 4 (64Mb) present 317-0367-COM requires Naomi-based or 837-14438 hopper controller (selected by P1 BUTTON1 bit)
-SWP Hopper Board 840-0130C 24083 20 (64Mb) present 317-0339-COM reused VF4 Evo ROM board with all maskROMs still in place; there is an additional 837-14381 IO board
-Touch de Uno! 2 840-0022C 23071 6 (64Mb) present 317-0276-JPN requires 837-13844 JVS IO with DIPSW 5 On, ELO AccuTouch-compatible touch screen controller and special printer.
-Virtua Fighter 4 Evolution (World) 840-0106B 23934 20 (64Mb) present 317-0339-COM
-Virtua Tennis 2 / Power Smash 2 (Rev A) 840-0084C 22327A 18 (64Mb) present 317-0320-COM
+ Sticker EPROM mask ROMs 25LC040 A54SX32
+Game on cart IC11# # of SOP44 IC13S# IC1# Notes
+-----------------------------------------------------------------------------------------------------------------------------------------------
+Club Kart: European Session (2003, Rev A) 840-0139C 24173A 18 (64Mb) present 317-0382-COM
+Club Kart Prize (Rev A) 840-0129C 24082A 16 (64Mb) present 317-0368-COM requires Naomi-based hopper controller (Naomi bd + 840-0130 cart + 837-14381 "G2 EXPANSION BD")
+Club Kart Prize Version B 840-0137C 24149 16 (64Mb) present 317-0368-COM requires Naomi-based or 837-14438 hopper controller (selected by P1 BUTTON1 bit)
+Giant Gram 2000 840-0039C 23377 20 (64Mb) present 317-0296-COM
+Kick '4' Cash 840-0140C 24212 16 (64Mb) present 317-0397-COM requires 837-14438 "SH I/O BD" hopper controller
+Marvel Vs. Capcom 2 New Age of Heroes (Export) (Rev A) 841-0007C-02 23085A 14 (64Mb)* present 317-5058-COM *(+2x 32Mb) have factory wire-mod connecting IC13S serial EEPROM CLK pin to IC11 ROM /OE pin
+Marvel Vs. Capcom 2 New Age of Heroes (Korea) (Rev A) 841-0007C-03 23085A 14 (64Mb)* present 317-5058-COM *(+2x 32Mb) have factory wire-mod connecting IC13S serial EEPROM CLK pin to IC11 ROM /OE pin
+MushiKing The King of Beetles 2K3 2ND 840-0150C 24217 6 (64Mb) present 317-0394-COM requires 610-0669 barcode reader, 838-14245-92 "MAPLE/232C CONVERT BD" (MIE-based), 838-14243 "RFID CHIP R/W BD" and RFID chip
+Quiz Ah Megamisama 840-0030C 23227 16 (64Mb) present 317-0280-JPN
+Shootout Pool 840-0098C 23844 4 (64Mb) present 317-0336-COM requires regular 837-13551 and 837-13938 rotary JVS boards
+Shootout Pool Prize / Shootout Pool The Medal (Rev A) 840-0128C 24065A 4 (64Mb) present 317-0367-COM requires Naomi-based hopper controller
+Shootout Pool Prize Ver. B / Shootout Pool The Medal Ver. B 840-0136C 24148 4 (64Mb) present 317-0367-COM requires Naomi-based or 837-14438 hopper controller (selected by P1 BUTTON1 bit)
+SWP Hopper Board 840-0130C 24083 20 (64Mb) present 317-0339-COM reused VF4 Evo ROM board with all maskroms still in place; there is an additional 837-14381 IO board
+Touch de UNO! 2 840-0022C 23071 6 (64Mb) present 317-0276-JPN requires 837-13844 JVS IO with DIPSW 5 On, ELO AccuTouch-compatible touch screen controller and special printer.
+Virtua Fighter 4 Evolution 840-0106B 23934 20 (64Mb) present 317-0339-COM
+Virtua Tennis 2 / Power Smash 2 (Rev A) 840-0084C 22327A 18 (64Mb) present 317-0320-COM
PFSB 128M Mask ROM board
@@ -614,11 +600,10 @@ 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 315-6213 317-5059-COM ? Date on screen: 000804
Capcom Vs. SNK Millennium Fight 2000 (Rev C) 841-0011C 23511C 7 (128Mb) 315-6319 315-6213 317-5059-COM ? Date on screen: 000904
Club Kart: European Session 840-0062C 23704 11 (128Mb) 315-6319A 315-6213 317-0313-COM present
-Club Kart: European Session (Rev A) 840-0062C * 11 (128Mb) 315-6319A 315-6213 317-0313-COM present * EPR have handwritten Japanese label possibly readable as 'teteto 74 lcl'
-Club Kart: European Session (Rev C) ? 23704C 11 (128Mb) ? ? ? ?
+Club Kart: European Session (Rev C) 840-0062C * 11 (128Mb) 315-6319A 315-6213 317-0313-COM present * EPR have handwritten Japanese label possibly readable as 'teteto 74 lcl'
Club Kart: European Session (Rev D) 840-0062C 23704D 11 (128Mb) 315-6319A 315-6213 317-0313-COM present
Crackin' DJ 840-0043C 23450 10 (128Mb) 315-6319 315-6213 317-0288-COM ? requires regular 837-13551 and 837-13938 rotary JVS boards, and turntable simulation
-Derby Owners Club II Ver.2.1 (Japan, Rev B) 840-0083C 22306B 11 (128Mb) 315-6319A 315-6213 317-0327-JPN present
+Derby Owners Club II Ver.2.1 (Japan) (Rev B) 840-0083C 22306B 11 (128Mb) 315-6319A 315-6213 317-0327-JPN present
Derby Owners Club World Edition (Rev B) 840-0088C 22336B 7 (128Mb) 315-6319A 315-6213 not present present
Derby Owners Club World Edition (Rev C) 840-0088C 22336C 7 (128Mb) 315-6319A 315-6213 not present not present
Derby Owners Club World Edition EX (Rev D) 840-0088C 22336D 7 (128Mb) 315-6319A 315-6213 not present not present 2 MaskROM are different from Rev C
@@ -627,19 +612,19 @@ 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 315-6213 317-5065-COM present
MushiKing The King Of Beetles 2004 Second (Jpn) 840-0152C 24241 5 (128Mb) 315-6319A 315-6213 not present not present requires 610-0669 barcode reader
MushiKing The King Of Beetles 2005 First (Jpn) 840-0158C 24286 7 (128Mb) 315-6319A 315-6213 not present not present requires 610-0669 barcode reader
-Oinori-daimyoujin Matsuri 840-0126B 24053 5 (128Mb) 315-6319A 315-6213 not present not present no cart, requires 837-14274 "G2 EXPANSION BD" (similar to hopper 837-14381 but with ARC NET chip)
+Oinori-daimyoujin Matsuri 840-0126B 24053 5 (128Mb) 315-6319A 315-6213 not present not present requires 837-14274 "G2 EXPANSION BD" (similar to hopper 837-14381 but with ARC NET chip)
Samba de Amigo Ver. 2000 840-0047C 23600 11 (128Mb) 315-6319A 315-6213 317-0295-COM ?
Star Horse (main screens) 840-0054C 23625 4 (128Mb) 315-6319 315-6213 not present present requires 837-13785 ARCNET&IO BD
Star Horse (satellite) 840-0056C 23627 6 (128Mb)* 315-6319 315-6213 not present present * +1 (64Mb), requires 837-13785 ARCNET&IO BD
-Star Horse 2001 (satellite, Rev B) 840-0078B 23739B 7 (128Mb) 315-6319A 315-6213 not present present requires 837-13785 ARCNET&IO BD
+Star Horse 2001 (satellite) (Rev B) 840-0078B 23739B 7 (128Mb) 315-6319 315-6213 not present present requires 837-13785 ARCNET&IO BD
Star Horse Progress (main screen, Rev B) 840-0120B 24087B 6 (128Mb) 315-6319A 315-6213 not present not present requires 837-13785 ARCNET&IO BD
Star Horse Progress (sound & backup, Rev A) 840-0121B 24097A 6 (128Mb) 315-6319A 315-6213 not present not present requires 837-13785 ARCNET&IO BD
Star Horse Progress (live, Rev A) 840-0122B 24107A 11 (128Mb) 315-6319A 315-6213 not present not present requires 837-13785 ARCNET&IO BD
Star Horse Progress (satellite, Rev A) 840-0123B 24122A 7 (128Mb) 315-6319A 315-6213 not present not present requires 837-13785 ARCNET&IO BD
The King of Route 66 (Rev A) 840-0087C 23819A 10 (128Mb) 315-6319A 315-6213 not present present
-Virtua Fighter 4 (World) 840-0080C 23785 11 (128Mb) ? ? 317-0324-COM ?
-Virtua Striker 3 (World) 840-0061C 23663 11 (128Mb) 315-6319A 315-6213 317-0310-COM present
-Virtua Striker 3 (World, Rev B) 840-0061C 23663B 11 (128Mb) 315-6319A 315-6213 317-0310-COM present
+Virtua Fighter 4 840-0080C 23785 11 (128Mb) ? ? 317-0324-COM ?
+Virtua Striker 3 840-0061C 23663 11 (128Mb) 315-6319A 315-6213 317-0310-COM ?
+Virtua Striker 3 (Rev B) 840-0061C 23663B 11 (128Mb) 315-6319A 315-6213 317-0310-COM present
Wave Runner GP 840-0064C 24059 6 (128Mb) 315-6319A 315-6213 not present present
Wild Riders 840-0046C 23622 10 (128Mb) 315-6319A 315-6213 317-0301-COM ?
WWF Royal Rumble 840-0040C 22261 8 (128Mb) 315-6319 315-6213 317-0285-COM ?
@@ -680,23 +665,20 @@ Notes:
CN4 - 6 legs connector for ISP programming
Games known to use this PCB include....
- Sticker EPROM FLASHROMs XC3S50 PIC16C621A XCF01S
-Game on cart IC7# # of SOP56 IC2# IC3# IC4# Notes
+ Sticker EPROM FLASHROMs XC3S50 PIC16C621A XCF01S
+Game on cart IC7# # of SOP56 IC2# IC3# IC4# Notes
-------------------------------------------------------------------------------------------------------------------------------------------
Akatsuki Blitzkampf Ausf. Achse 841-0058C not present 4 (512Mb) present 317-5130-JPN present IC2# is labeled "VER.2" - IC4# is marked "5A" - IC#10 & IC#11 are empty
-Asian Dynamite / Dynamite Deka EX 840-0175C not present 4 (512Mb) present 317-0495-COM present IC2# is labeled "VER.2"
-Asian Dynamite / Dynamite Deka EX (older) 840-0175C not present 4 (512Mb) present 317-0495-COM present 2x PCBs dumped, 840-0175B and 840-0168B, contents is the same.
+Dynamite Deka EX / Asian Dynamite 840-0175C not present 4 (512Mb) present 317-0495-COM present IC2# is labeled "VER.2"
+Dynamite Deka EX / Asian Dynamite (older) 840-0175C not present 4 (512Mb) present 317-0495-COM present 2x PCBs dumped, 840-0175B and 840-0168B, contents is the same.
Illvelo (Illmatic Envelope) 841-0059C not present 4 (512Mb) present 317-5131-JPN present IC2# is labeled "VER.2" - IC#11 is empty
Mamoru-kun wa Norowarete Shimatta 841-0060C not present 4 (512Mb) present 317-5132-JPN present IC2# is labeled "VER.2"
Manic Panic Ghost! (USA) 840-0170C-01 not present 5 (512Mb) present 317-0461-COM present requires 837-14672 sensor board (SH4 based) - PCB s/n is 840-0170B-01
-Melty Blood Actress Again (Japan) 841-0061C not present 6 (512Mb) present 317-5133-JPN present IC2# is labeled "REV.A" - IC4# is marked "5A"
+Melty Blood Actress Again 841-0061C not present 6 (512Mb) present 317-5133-JPN present IC2# is labeled "REV.A" - IC4# is marked "5A"
Melty Blood Actress Again Version A (Rev A) 841-0061C 24455 6 (512Mb) present 317-5133-JPN present IC2# is labeled "REV.A" - IC4# is marked "5A"
-/Mushiking The King Of Beetles
-\Mushiking II / III / III+ (Ver. 1.001) (World) 840-0164C not present 2 (512Mb) present 317-0437-COM present requires 610-0669 barcode reader, 838-14245-92 "MAPLE/232C CONVERT BD" (MIE-based), 838-14243 "RFID CHIP R/W BD" and RFID chip
-/Mushiking The King Of Beetles
-\Mushiking II / III / III+ (Ver. 2.001) (World) 840-0164C 24357 2 (512Mb) present 317-0437-COM present IC4# is marked "18"
-/Mushiking The King Of Beetles
-\Mushiking IV / V / VI (World) 840-0180C not present 2 (512Mb) present 317-0437-COM present IC2# is labeled "VER.1", IC4# is marked "8A", requires 610-0669 barcode reader, 838-14245-92 "MAPLE/232C CONVERT BD" (MIE-based), 838-14243 "RFID CHIP R/W BD" and RFID chip
+Mushiking - The King Of Beetles II ENG (Ver. 1.001) 840-0164C not present 2 (512Mb) present 317-0437-COM present requires 610-0669 barcode reader, 838-14245-92 "MAPLE/232C CONVERT BD" (MIE-based), 838-14243 "RFID CHIP R/W BD" and RFID chip
+Mushiking - The King Of Beetles II ENG (Ver. 2.001) 840-0164C 24357 2 (512Mb) present 317-0437-COM present IC4# is marked "18"
+Mushiking - The King Of Beetles IV ENG 840-0180C not present 2 (512Mb) present 317-0437-COM present IC2# is labeled "VER.1", IC4# is marked "8A", requires 610-0669 barcode reader, 838-14245-92 "MAPLE/232C CONVERT BD" (MIE-based), 838-14243 "RFID CHIP R/W BD" and RFID chip
Pokasuka Ghost! 840-0170C not present 5 (512Mb) present 317-0461-COM present requires 837-14672 sensor board (SH4 based)
Radirgy Noa 841-0062C not present 4 (512Mb) present 317-5138-JPN present IC2# is labeled "VER.2" - IC4# is marked "8A"
Rhythm Tengoku 841-0177C not present 4 (512Mb) present 317-0503-JPN present IC2# is labeled "VER.2" - IC4# is marked "8A"
@@ -746,23 +728,22 @@ Notes:
CN1/2/3 - connectors joining to main board
Games known to use this PCB include....
- Cart Sticker FL0-FL3 FLASHROMs X76F100 EPM7064 EPM7064 315-5881 Known Game
- Game Type on cart FLASHROM # of SOP48 IC @ 1F IC @ 1H IC @ 2K IC @ 1M code (1) Notes
---------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Cart Sticker FL0-FL3 FLASHROMs X76F100 EPM7064 EPM7064 315-5881 Known Game
+ Game Type on cart FLASHROM # of SOP48 IC @ 1F IC @ 1H IC @ 2K IC @ 1M code (1) Notes
+-------------------------------------------------------------------------------------------------------------------------------------------------------------
/Gun Survivor 2 Biohazard
-\Code: Veronica (Japan, BHF1 Ver.E) F1X 25709801 1 (64Mb) 14 (128Mb) not present NAODEC2A NAODEC1B 317-5075-COM BHF1 uses Namco FCA JVS I/O (not dumped), will crash if COMM.BOARD not present
+\Code: Veronica (Japan, Ver.E) F1X 25709801 1 (64Mb) 14 (128Mb) not present NAODEC2A NAODEC1B 317-5075-COM BHF1 uses Namco FCA JVS I/O (not dumped), will crash if COMM.BOARD not present
/Gun Survivor 2 Biohazard
-\Code: Veronica (World, BHF2 Ver.E) F1X 25709801 1 (64Mb) 14 (128Mb) not present NAODEC2A NAODEC1B 317-5075-COM BHF2
-/Shin Nihon Prowrestling Toukon Retsuden 4 /FL0 & FL1 have pin55 raised from PCB.
-\Arcade Edition (Japan, TRF1 Ver.A) F2X 25349801 2 (64Mb) 15 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM TRF1 \They are connected together and go to pin89 on 2K.
-World Kicks PCB (Japan, WKC1 Ver.A) F2 25509801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM WKC1 uses Namco V226 JVS I/O (not dumped)
-World Kicks PCB (World, WKC2 Ver.A) F2 25509801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM WKC2 uses Namco V226 JVS I/O (not dumped)
-World Kicks (Japan, WK1 Ver.A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK1
-World Kicks (World, WK2 Ver.A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK2
-World Kicks (US, WK3 Ver.A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK3
+\Code: Veronica (World, Ver.E) F1X 25709801 1 (64Mb) 14 (128Mb) not present NAODEC2A NAODEC1B 317-5075-COM BHF2
+/Shin Nihon Prowrestling Toukon /FL0 & FL1 have pin55 raised from PCB.
+\Retsuden 4 Arcade Edition (Japan, Ver.A) F2X 25349801 2 (64Mb) 15 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM TRF1 \They are connected together and go to pin89 on 2K.
+World Kicks PCB (Japan, WKC1 Ver.A) F2 25509801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM WKC1 uses Namco V226 JVS I/O (not dumped)
+World Kicks PCB (World, WKC2 Ver.A) F2 25509801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM WKC2
+World Kicks (Japan, WK1 Ver.A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK1
+World Kicks (World, WK2 Ver.A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK2
+World Kicks (US, WK3 Ver.A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK3
-(1) note: the number in the game code has the following meaning: 1 = Japan, 2 = World, 3 = US, 4 = Asia.
- real meaning of 2 and 4 is not clear, it can be like "some other part of World", also possible Europe
+(1) note: the number in the game code has the following meaning: 1 = Japan, 2 = Asia, 3 = US, 4 = World.
MASK C (C) Namco 2000
@@ -803,18 +784,17 @@ Notes:
CN1/2/3 - connectors joining to main board
Games known to use this PCB include....
- Cart Sticker FL0-FL3 FLASHROMs X76F100 CY37128 315-5881 Known Game
- Game Type on cart FLASHROM # of SOP48 IC @ 1F IC @ 2J IC @ 1M code (1) Notes
+ Cart Sticker FL0-FL3 FLASHROMs X76F100 CY37128 315-5881 Known Game
+ Game Type on cart FLASHROM # of SOP48 IC @ 1F IC @ 2J IC @ 1M code (1) Notes
----------------------------------------------------------------------------------------------------------------------------------------
-Mazan: Flash of the Blade (World, MAZ2 Ver.A) F1X 25869812 1 (64Mb) 8 (128Mb) present NAODEC3 317-0266-COM MAZ2 uses 2x Namco FCB JVS I/O (not dumped)
-Mazan: Flash of the Blade (US, MAZ3 Ver.A) F1X 25869812 1 (64Mb) 8 (128Mb) present NAODEC3 317-0266-COM MAZ3
-Ninja Assault (Japan, NJA1 Ver.A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA1 uses Namco JYU JVS I/O
-Ninja Assault (World, NJA2 Ver.A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA2
-Ninja Assault (US, NJA3 Ver.A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA3
-Ninja Assault (Asia, NJA4 Ver.A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA4
+Mazan: Flash of the Blade (World, Ver.A) F1X 25869812 1 (64Mb) 8 (128Mb) present NAODEC3 317-0266-COM MAZ2 uses 2x Namco FCB JVS I/O (not dumped)
+Mazan: Flash of the Blade (US, Ver.A) F1X 25869812 1 (64Mb) 8 (128Mb) present NAODEC3 317-0266-COM MAZ3
+Ninja Assault (Japan, Ver.A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA1 uses Namco JYU JVS I/O
+Ninja Assault (World, Ver.A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA2
+Ninja Assault (US, Ver.A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA3
+Ninja Assault (Asia, Ver.A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA4
-(1) note: the number in the game code has the following meaning: 1 = Japan, 2 = World, 3 = US, 4 = Asia.
- real meaning of 2 and 4 is not clear, it can be like "some other part of World", also possible Europe
+(1) note: the number in the game code has the following meaning: 1 = Japan, 2 = Asia, 3 = US, 4 = World.
Note! Generally, games that require a special I/O board or controller will not boot at all with a
standard NAOMI I/O board. Usually they display a message saying the I/O board is not acceptable
@@ -1843,8 +1823,8 @@ void naomi_state::naomi_port(address_map &map)
READ64_MEMBER(atomiswave_state::aw_flash_r)
{
- return (uint64_t)m_awflash->read(offset*8) | (uint64_t)m_awflash->read((offset*8)+1)<<8 | (uint64_t)m_awflash->read((offset*8)+2)<<16 | (uint64_t)m_awflash->read((offset*8)+3)<<24 |
- (uint64_t)m_awflash->read((offset*8)+4)<<32 | (uint64_t)m_awflash->read((offset*8)+5)<<40 | (uint64_t)m_awflash->read((offset*8)+6)<<48 | (uint64_t)m_awflash->read((offset*8)+7)<<56;
+ return (uint64_t)m_awflash->read(space, offset*8) | (uint64_t)m_awflash->read(space, (offset*8)+1)<<8 | (uint64_t)m_awflash->read(space, (offset*8)+2)<<16 | (uint64_t)m_awflash->read(space, (offset*8)+3)<<24 |
+ (uint64_t)m_awflash->read(space, (offset*8)+4)<<32 | (uint64_t)m_awflash->read(space, (offset*8)+5)<<40 | (uint64_t)m_awflash->read(space, (offset*8)+6)<<48 | (uint64_t)m_awflash->read(space, (offset*8)+7)<<56;
}
WRITE64_MEMBER(atomiswave_state::aw_flash_w)
@@ -1863,7 +1843,7 @@ WRITE64_MEMBER(atomiswave_state::aw_flash_w)
data >>= (i*8);
- m_awflash->write(addr, data);
+ m_awflash->write(space, addr, data);
}
// TODO: don't we have a common function for this?
@@ -3115,12 +3095,12 @@ void naomi_state::naomigd_kb(machine_config &config)
* Naomi 2
*/
/*
-void naomi2_state::naomi2(machine_config &config)
-{
+MACHINE_CONFIG_START((naomi2_state::naomi2)
naomi(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &naomi2_state::naomi2_map);
- m_maincpu->set_addrmap(AS_IO, &naomi2_state::naomi_port);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(naomi2_map)
+ MCFG_DEVICE_IO_MAP(naomi_port)
+MACHINE_CONFIG_END
*/
/*
* Naomi 2 GD-Rom
@@ -3455,7 +3435,6 @@ OFF OFF ON Australia
Gun board info:
"838-13143-nn IC BD GUN SENSE xxx" board, D78213 MCU based, was used in big number of Model2 / Model3 / NAOMI / Chihiro / Lindbergh games.
known firmwares:
- EPR-20006A oldest revision?
EPR-21262 - older revision, used in: 04 HOD (House of the Dead), 06 JPT (Jurassic Park The Lost World).
TG12 - newer revision, used in: 08 SPY, 09 SPY UR, 11 SPY UR EXTRA - Confidential Mission and later games, backward compatible with older games as well.
*/
@@ -3472,7 +3451,6 @@ OFF OFF ON Australia
ROM_SYSTEM_BIOS( 3, "bios3", "HOTD2 (Proto)" ) \
ROM_LOAD16_WORD_SWAP_BIOS( 3, "hotd2biosproto.ic27", 0x000000, 0x200000, CRC(ea74e967) SHA1(e4d037480eb6555d335a8ab9cd6c56122335586d) ) \
ROM_REGION( 0x10000, "gunboard", 0 ) \
- ROM_LOAD( "epr-20006a.ic2",0x00000, 0x10000, CRC(45f310dc) SHA1(b7cf40a1671dc351b607d8d6bba0d51ea128eb75) ) \
ROM_LOAD( "epr-21262.ic2", 0x00000, 0x10000, CRC(c9adf9b6) SHA1(fc2a331430ef2f009f653b242220599c824cd1d2) ) \
ROM_LOAD( "tg12.ic2", 0x00000, 0x10000, CRC(2c9600b1) SHA1(91813a43851c48d400fde41b1198dabf55bade2d) )
@@ -5505,7 +5483,7 @@ ROM_START( 18wheelro )
ROM_PARAMETER( ":rom_board:segam2crypt:key", "2807cf54" )
ROM_END
-/* 18 Wheeler (deluxe, Rev A) */
+/* 18 Wheeler (deluxe) (Rev A) */
ROM_START( 18wheelr )
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
@@ -5549,7 +5527,7 @@ ROM_START( 18wheelr )
ROM_PARAMETER( ":rom_board:segam2crypt:key", "2807cf54" )
ROM_END
-/* 18 Wheeler (deluxe, Rev T) */
+/* 18 Wheeler (deluxe) (Rev T) */
ROM_START( 18wheelrt )
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
@@ -6103,9 +6081,6 @@ ROM_START( qmegamis )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
- /* ROM_REGION(0x200, "some_eeprom", 0)
- ROM_LOAD( "25lc040.ic13s", 0x000, 0x200, NO_DUMP ) */
-
// 840-0030 2000 317-0280-JPN Naomi
ROM_PARAMETER( ":rom_board:key", "cd9b4896" )
ROM_END
@@ -6166,33 +6141,6 @@ ROM_START( samba )
ROM_PARAMETER( ":rom_board:segam2crypt:key", "280a8b5d" )
ROM_END
-ROM_START( sambaa )
- NAOMI_BIOS
- NAOMI_DEFAULT_EEPROM
-
- ROM_REGION( 0x8800000, "rom_board", ROMREGION_ERASEFF)
- ROM_LOAD("epr-22966a.ic22",0x0000000, 0x0400000, CRC(ad99ba06) SHA1(91a984853ac7a66316ae71fad7b5645c77962df3) )
- ROM_LOAD("mpr-22950.ic1", 0x0800000, 0x0800000, CRC(16dee15c) SHA1(b46849e492756ff406bf8956303472255fcf55a5) )
- ROM_LOAD("mpr-22951.ic2", 0x1000000, 0x0800000, CRC(f509496f) SHA1(41281576f7d58c8ede9c0a89bfd46a98d5b97033) )
- ROM_LOAD("mpr-22952.ic3", 0x1800000, 0x0800000, CRC(fb9b3ef0) SHA1(e9d44b673c273e97445a12186496a0594e291542) )
- ROM_LOAD("mpr-22953.ic4", 0x2000000, 0x0800000, CRC(07207ce0) SHA1(b802bb4e78f3737a4e333f819b9a4e0249037288) )
- ROM_LOAD("mpr-22954.ic5", 0x2800000, 0x0800000, CRC(c8e797d1) SHA1(fadbd1e24882787634229003245293ce79ba2617) )
- ROM_LOAD("mpr-22955.ic6", 0x3000000, 0x0800000, CRC(064ef007) SHA1(8325f9aa537ce329e71dce2b588a3d4fc176c37b) )
- ROM_LOAD("mpr-22956.ic7", 0x3800000, 0x0800000, CRC(fe8f2964) SHA1(3a33162f797cd93b7dbb313b531215e340719110) )
- ROM_LOAD("mpr-22957.ic8", 0x4000000, 0x0800000, CRC(74842c01) SHA1(b02884925270edb66831ab502a0aa2f9430adc9f) )
- ROM_LOAD("mpr-22958.ic9", 0x4800000, 0x0800000, CRC(b1ead447) SHA1(06b848eb7f592763768050a1ae82b4cac9499684) )
- ROM_LOAD("mpr-22959.ic10", 0x5000000, 0x0800000, CRC(d32d7983) SHA1(86a9e5eae4598b6998f0ea578d6152e66c1a0df1) )
- ROM_LOAD("mpr-22960.ic11", 0x5800000, 0x0800000, CRC(6c3b228e) SHA1(782c0fda106222be75b1973586c8bf78fd2186e7) )
- ROM_LOAD("mpr-22961.ic12s",0x6000000, 0x0800000, CRC(d6d26a8d) SHA1(7d416f8ac9fbbeb9bfe217ccc8eccf1644511110) )
- ROM_LOAD("mpr-22962.ic13s",0x6800000, 0x0800000, CRC(c2f41101) SHA1(0bf87cbffb7d6a5ab32543cef56c9759f475419a) )
- ROM_LOAD("mpr-22963.ic14s",0x7000000, 0x0800000, CRC(a53e9919) SHA1(d81eb79bc706f85ebfbc56a9b2889ae62d629e8e) )
- ROM_LOAD("mpr-22964.ic15s",0x7800000, 0x0800000, CRC(f581d5a3) SHA1(8cf769f5b0a48951246bb60e9cf58232bcee7bc8) )
- ROM_LOAD("mpr-22965.ic16s",0x8000000, 0x0800000, CRC(8f7bfa8a) SHA1(19f137b1552978d232785c4408805b71835585c6) )
-
- // 840-0020 1999 317-0270-COM Naomi
- ROM_PARAMETER( ":rom_board:segam2crypt:key", "280a8b5d" )
-ROM_END
-
// prototype - boots on USA BIOS only, have fewer regular songs, but have several sound tracks from Sega games instead (Afterburner, Outrun, Sonic, etc)
ROM_START( sambap )
NAOMI_BIOS
@@ -6267,9 +6215,6 @@ ROM_START( shootopl )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
- /* ROM_REGION(0x200, "some_eeprom", 0)
- ROM_LOAD( "25lc040.ic13s", 0x000, 0x200, NO_DUMP ) */
-
// 840-0098 2002 317-0336-COM Naomi
ROM_PARAMETER( ":rom_board:key", "a0f37ca7" )
ROM_END
@@ -6309,9 +6254,6 @@ ROM_START( shootplm )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
- /* ROM_REGION(0x200, "some_eeprom", 0)
- ROM_LOAD( "25lc040.ic13s", 0x000, 0x200, NO_DUMP ) */
-
// 840-0136 2002 317-0367-COM Naomi
ROM_PARAMETER( ":rom_board:key", "9dbde9cd" )
ROM_END
@@ -6599,39 +6541,6 @@ ROM_START( virnbap )
ROM_PARAMETER( ":rom_board:segam2crypt:key", "28068b58" )
ROM_END
-// IC22 ROM header contains IC1-21 sums which match regular mask ROM data, however actual 1-21 ROMs contain quite different data, probably from earlier version.
-ROM_START( virnbapa )
- NAOMI_BIOS
- NAOMI_DEFAULT_EEPROM
-
- ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
- ROM_LOAD("11-15.ic22", 0x0000000, 0x0400000, CRC(b389295a) SHA1(9c96cd85373fa69c99085c1f1591e7df02861bac) )
- ROM_LOAD("rom1.ic1s", 0x0800000, 0x0800000, CRC(f77b588d) SHA1(6f1cdd48e1d1f60bb95253ed204346d8fdc06265) )
- ROM_LOAD("rom2.ic2s", 0x1000000, 0x0800000, CRC(90851aa4) SHA1(6f60956e70a315c619d07d7635f9136f0e4f6563) )
- ROM_LOAD("rom3.ic3s", 0x1800000, 0x0800000, CRC(1fc5cd0d) SHA1(0249fc398e93ed4871c53aec585e49ac42924b9a) )
- ROM_LOAD("rom4.ic4s", 0x2000000, 0x0800000, CRC(bb0922b1) SHA1(77597298e8a0ec9b33b4b776f0bebe41b9d07029) )
- ROM_LOAD("rom5.ic5s", 0x2800000, 0x0800000, CRC(ba187afe) SHA1(0a951ba7feae31f439b37c970fe0f7bf3bacdd79) )
- ROM_LOAD("rom6.ic6s", 0x3000000, 0x0800000, CRC(91c452ab) SHA1(9239cb0d49f8f8cb6cbc2aa57c3037d71a832bee) )
- ROM_LOAD("rom7.ic7s", 0x3800000, 0x0800000, CRC(11e4c24b) SHA1(ef78e093ed4eae1659513e3fd7d26d313fca4943) )
- ROM_LOAD("rom8.ic8s", 0x4000000, 0x0800000, CRC(72629663) SHA1(735590adfc837d399d6b2f3763299018215adab6) )
- ROM_LOAD("rom9.ic9s", 0x4800000, 0x0800000, CRC(54b660e6) SHA1(34c1f46fb8eb92a21b94c9a4e9952cc13413fe99) )
- ROM_LOAD("rom10.ic10s", 0x5000000, 0x0800000, CRC(8fc00425) SHA1(61da4ad778ce627f7e76d8f583edf6a8822cc98f) )
- ROM_LOAD("rom11.ic11s", 0x5800000, 0x0800000, CRC(352eacfa) SHA1(9588f3abcdc11afb19facf84e937650faf672432) )
- ROM_LOAD("rom12.ic12s", 0x6000000, 0x0800000, CRC(4b42b46d) SHA1(7893ed9412e69ba6ee075ff8721c0d7e8558091a) )
- ROM_LOAD("rom13.ic13s", 0x6800000, 0x0800000, CRC(6edbb058) SHA1(f00047b910033fc198dd3876a7c1fa7402d8d38a) )
- ROM_LOAD("rom14.ic14s", 0x7000000, 0x0800000, CRC(aa3885d5) SHA1(7280927ff7493fd1810c445b27e7de22528d545f) )
- ROM_LOAD("rom15.ic15s", 0x7800000, 0x0800000, CRC(293293d8) SHA1(0cbc4df3e958c3c3bae06afcf04f73823b888fec) )
- ROM_LOAD("rom16.ic16s", 0x8000000, 0x0800000, CRC(83ea7a33) SHA1(8be818d12382c74f85c95bf55f3cacf6c0a5cfaf) )
- ROM_LOAD("rom17.ic17s", 0x8800000, 0x0800000, CRC(97be8db7) SHA1(ef4cf816c78cc6a9f9fbc80f42d7de1fd0434039) )
- ROM_LOAD("rom18.ic18s", 0x9000000, 0x0800000, CRC(20c2bc4d) SHA1(b3c94bda80ec821c3bd16f69be11313612f3d484) )
- ROM_LOAD("rom19.ic19s", 0x9800000, 0x0800000, CRC(195d646f) SHA1(43add13d4a96fb2a23e1c8d8a2b143bdc22a64c7) )
- ROM_LOAD("rom20.ic20s", 0xa000000, 0x0800000, CRC(df62f303) SHA1(c5ad85d86079efa3dd233e10a68442ca03e532f1) )
- ROM_LOAD("rom21.ic21s", 0xa800000, 0x0800000, CRC(194594f2) SHA1(aa19dfa37b90bb00362808d1319a29bf55d7d3eb) )
-
- // 840-0021 2000 317-0271-COM Naomi
- ROM_PARAMETER( ":rom_board:segam2crypt:key", "28068b58" )
-ROM_END
-
// 1999/07/01 07:48
ROM_START( vs2_2ko )
NAOMI_BIOS
@@ -7534,9 +7443,6 @@ ROM_START( vtenis2c )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
- /* ROM_REGION(0x200, "some_eeprom", 0)
- ROM_LOAD( "25lc040.ic13s", 0x000, 0x200, NO_DUMP ) */
-
// 840-0084 2001 317-0320-COM Naomi
ROM_PARAMETER( ":rom_board:key", "2d2d4743" )
ROM_END
@@ -9128,23 +9034,12 @@ ROM_START( keyboard )
ROM_END
-ROM_START( lupinshoo )
- NAOMIGD_BIOS
- NAOMI_DEFAULT_EEPROM
-
- DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "gds-0018", 0, SHA1(3b7d5dd917b9a2cc9b7b51aad22f8e75383c3301) )
-
- ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
- ROM_LOAD("317-0325-jpn.pic", 0x00, 0x4000, CRC(f71cb2fc) SHA1(281b3b3b03edf9a39e380976de528b7c9674de53) )
-ROM_END
-
ROM_START( lupinsho )
NAOMIGD_BIOS
NAOMI_DEFAULT_EEPROM
DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "gds-0018a", 0, SHA1(c4ed336d4be039bd6673fccd097579f3500d6eca) )
+ DISK_IMAGE_READONLY( "gds-0018", 0, SHA1(3b7d5dd917b9a2cc9b7b51aad22f8e75383c3301) )
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
ROM_LOAD("317-0325-jpn.pic", 0x00, 0x4000, CRC(f71cb2fc) SHA1(281b3b3b03edf9a39e380976de528b7c9674de53) )
@@ -9398,7 +9293,8 @@ ROM_START( dragntr3 )
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16F628A
- ROM_LOAD("317-0426-jpn.pic", 0x00, 0x4000, CRC(8df4d33a) SHA1(0d27ec46a64af60b1e46ad4b3d34b6df5448f81a) )
+ // copy, original labels unknown
+ ROM_LOAD("317-xxxx-com.pic", 0x00, 0x4000, CRC(8df4d33a) SHA1(0d27ec46a64af60b1e46ad4b3d34b6df5448f81a) )
ROM_REGION(0x4000, "satl_pic", ROMREGION_ERASEFF)
//PIC16C621A (317-0390-COM)
@@ -9535,29 +9431,6 @@ ROM_START( kingrt66 )
ROM_PARAMETER( ":rom_board:segam2crypt:key", "-1") // 315-5881 not populated
ROM_END
-// 171-7885A type flash ROM board, handwritten "RTS ATEI 3/6" "RT66", possible preview/demo version for ATEI 2002 show.
-ROM_START( kingrt66p )
- NAOMI2_BIOS
- NAOMI_DEFAULT_EEPROM
-
- ROM_REGION( 0xa800000, "rom_board", ROMREGION_ERASEFF)
- // flash ROM module, printed label "EPR-23819 IC22 0109 CHK" handwritten "1/11", which probably means build date 11 Jan 2002.
- ROM_LOAD( "epr-23819-1-11.ic22", 0x0000000, 0x00400000, CRC(a9602240) SHA1(feb2fd5c1d2fe8a58be1440ddad4bdd1d7f2d850) )
- // IC 1-21 ROMs not dumped, but checksums in IC22 header match data from release version.
- 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_PARAMETER( ":rom_board:segam2crypt:key", "-1") // 315-5881 not populated
-ROM_END
-
ROM_START( soulsurf )
NAOMI2_BIOS
NAOMI_DEFAULT_EEPROM
@@ -9619,9 +9492,6 @@ ROM_START( vf4evoct )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
- /* ROM_REGION(0x200, "some_eeprom", 0)
- ROM_LOAD( "25lc040.ic13s", 0x000, 0x200, NO_DUMP ) */
-
// 840-0106 2002 317-0339-COM Naomi 2
ROM_PARAMETER( ":rom_board:key", "1e5bb0cd" )
ROM_END
@@ -9826,21 +9696,17 @@ ROM_START( clubk2k3 )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
-/* ROM_REGION(0x200, "some_eeprom", 0)
- ROM_LOAD( "25lc040.ic13s", 0x000, 0x200, NO_DUMP ) */
-
// 840-0139 2003 317-0382-COM Naomi 2
ROM_PARAMETER( ":rom_board:key", "d8b0fa4c" )
ROM_END
-// 171-7885A type flash ROM board
+// uses the same mask roms data as clubk2k3, but 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
ROM_REGION( 0xa000000, "rom_board", ROMREGION_ERASEFF)
- ROM_LOAD( "ic22.bin", 0x0000000, 0x400000, CRC(334fc561) SHA1(e8c8707b0d13216ec7071da05823e330deb810d4) ) // flash ROM module
- // game data ROMs not dumped, not the same as regular revision. technically, all below should be marked as NO_DUMP.
+ ROM_LOAD( "ic22.bin", 0x0000000, 0x400000, CRC(1e601d98) SHA1(70d244c1b7cde236d833585b8d2064ba6d727825) )
ROM_LOAD32_WORD( "opr-24151.ic17s", 0x1000000, 0x800000, CRC(91594439) SHA1(a195bfe0c70a0c7048b547af0a92c98d126230c6) )
ROM_LOAD32_WORD( "opr-24152.ic18", 0x1000002, 0x800000, CRC(fd131f88) SHA1(bc27b3ab5b41a3fe33b541b7cca28d6baed157b3) )
ROM_LOAD32_WORD( "opr-24153.ic19s", 0x2000000, 0x800000, CRC(795df2a6) SHA1(80f740806dcaacc28752cea98b254cbee51972a4) )
@@ -10090,18 +9956,6 @@ ROM_START( initdv2jo )
ROM_LOAD( "317-0345-jpn.pic", 0x000000, 0x004000, CRC(56e1274a) SHA1(735a6071226f3297de64bc0a38be741e87f5d023) )
ROM_END
-ROM_START( initdv2ja )
- NAOMI2_BIOS
- NAOMI_DEFAULT_EEPROM
-
- DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "gds-0026a", 0, SHA1(f56a85ebb842838561c15cb53ce81eb341e91300) )
-
- ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
- //PIC16C622A (317-0345-JPN)
- //(sticker 253-5508-0345J)
- ROM_LOAD( "317-0345-jpn.pic", 0x000000, 0x004000, CRC(56e1274a) SHA1(735a6071226f3297de64bc0a38be741e87f5d023) )
-ROM_END
ROM_START( initdv2e )
NAOMI2_BIOS
@@ -10115,35 +9969,6 @@ ROM_START( initdv2e )
ROM_LOAD( "317-0357-exp.pic", 0x000000, 0x004000, CRC(38f84b4d) SHA1(03c12d8580da1a4b3a554e62fd8b1f3447b7ebbd) )
ROM_END
-ROM_START( clubkcyco )
- NAOMI2_BIOS
- NAOMI_DEFAULT_EEPROM
-
- DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "gds-0029", 0, SHA1(e73317c459b7f3e966c1be8784c55cbdfe230b88) )
-
- ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
- //PIC16C622A (317-0358-COM)
- //(sticker 253-5508-0358)
- ROM_LOAD( "317-0358-com.pic", 0x000000, 0x004000, CRC(dd33e50f) SHA1(c51712754022fc3adc350fa0714bf60fd0d163cf) )
-
-/*
- Cycraft Motion PC:
- Mainboard Advantech PCM-5820
- CAN Module PCM-3680
- IO Module PCM-3724
- 128mb PC133 Ram
-
- SanDisk CF With Linux:
- Simuline CYCRAFT
- SMCP: V1.65
- GAME: Club-Kart
- (c) 2003 Simuline Inc.
-*/
- DISK_REGION( "cycraft" )
- DISK_IMAGE( "cycraft_clubkart_smcp_v1.65", 0, SHA1(c77df6eaf425e4e86f871914aa024debc1940713) )
-ROM_END
-
ROM_START( clubkcyc )
NAOMI2_BIOS
NAOMI_DEFAULT_EEPROM
@@ -10757,7 +10582,7 @@ ROM_START( ggisuka )
ROM_REGION( 0x9000000, "rom_board", ROMREGION_ERASE)
ROM_LOAD( "ax1201p01.ic18", 0x0000000, 0x0800000, CRC(0a78d52c) SHA1(e9006dc43cd11d5ba49a092a1dff31dc10700c28) )
- ROM_LOAD( "ax1201m01.ic10", 0x0800000, 0x1000000, CRC(df96ce30) SHA1(25a9f743b1c2b11896d0c7a2dc1c198fc977aaca) ) // 2x mirrored 8MB data, TODO: check if IC10 mask ROM not 16MB but 8MB
+ ROM_LOAD( "ax1201m01.ic10", 0x0800000, 0x1000000, CRC(df96ce30) SHA1(25a9f743b1c2b11896d0c7a2dc1c198fc977aaca) ) // 2x mirrored 8MB data, TODO: check is IC10 Mask ROM not 16MB but 8MB
ROM_LOAD( "ax1202m01.ic11", 0x1000000, 0x1000000, CRC(dfc6fd67) SHA1(f9d35b18a03d22f70feda42d314b0f9dd54eea55) )
ROM_LOAD( "ax1203m01.ic12", 0x2000000, 0x1000000, CRC(bf623df9) SHA1(8b9a8e8100ff6d2ce9a982ab8eb1d542f1c7af03) )
ROM_LOAD( "ax1204m01.ic13", 0x3000000, 0x1000000, CRC(c80c3930) SHA1(5c39fde36e2ebbfe72967d7d0202eb454a8d3bbe) )
@@ -11113,17 +10938,15 @@ ROM_END
/* 0017 */ GAME( 1999, otrigger, naomi, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "OutTrigger", GAME_FLAGS )
/* 0018 */ GAME( 1999, sgtetris, naomi, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Sega Tetris", GAME_FLAGS )
/* 0019 */ GAME( 1999, dybb99, naomi, naomim2, dybbnao, naomi_state, init_naomi, ROT0, "Sega", "Dynamite Baseball '99 (Japan, Rev B)", GAME_FLAGS )
-/* 0020 */ GAME( 1999, sambaa, samba, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Samba De Amigo (Rev A)", GAME_FLAGS )
/* 0020 */ GAME( 1999, samba, naomi, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Samba De Amigo (Rev B)", GAME_FLAGS )
/* none */ GAME( 1999, sambap, samba, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Samba De Amigo (USA, prototype)", GAME_FLAGS )
-/* none */ GAME( 1999, virnbap, virnba, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Virtua NBA (prototype)", GAME_FLAGS )
-/* none */ GAME( 1999, virnbapa, virnba, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Virtua NBA (prototype, 15.11)", GAME_FLAGS )
+/* none */ GAME( 2000, virnbap, virnba, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Virtua NBA (prototype)", GAME_FLAGS )
/* 0021 */ GAME( 2000, virnbao, virnba, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Virtua NBA", GAME_FLAGS )
/* 0021-01 */ GAME( 2000, virnba, naomi, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Virtua NBA (USA)", GAME_FLAGS )
/* 0022 */ GAME( 2000, tduno2, naomi, naomim1, naomi, naomi_state, init_naomi, ROT0, "Sega", "Touch de Uno! 2 (Japan)", GAME_FLAGS )
/* 0023 */ GAME( 2000, 18wheelro, 18wheelr, naomim2, 18wheelr,naomi_state, init_naomi, ROT0, "Sega", "18 Wheeler (deluxe)", GAME_FLAGS )
-/* 0023 */ GAME( 2000, 18wheelr, naomi, naomim2, 18wheelr,naomi_state, init_naomi, ROT0, "Sega", "18 Wheeler (deluxe, Rev A)", GAME_FLAGS )
-/* 0023 */ GAME( 2000, 18wheelrt, 18wheelr, naomim2, 18wheelr,naomi_state, init_naomi, ROT0, "Sega", "18 Wheeler (deluxe, Rev T)", GAME_FLAGS )
+/* 0023 */ GAME( 2000, 18wheelr, naomi, naomim2, 18wheelr,naomi_state, init_naomi, ROT0, "Sega", "18 Wheeler (deluxe) (Rev A)", GAME_FLAGS )
+/* 0023 */ GAME( 2000, 18wheelrt, 18wheelr, naomim2, 18wheelr,naomi_state, init_naomi, ROT0, "Sega", "18 Wheeler (deluxe) (Rev T)", GAME_FLAGS )
/* 0025 */ GAME( 1999, marstv, naomi, naomim2, marstv, naomi_state, init_naomi, ROT0, "Sega", "Mars TV (Japan)", GAME_FLAGS )
/* 0026 */ GAME( 2000, totdo, totd, naomim2_kb, naomi_kb, naomi_state, init_naomi, ROT0, "Sega", "The Typing of the Dead", GAME_FLAGS )
/* 0026 */ GAME( 2000, totd, naomi, naomim2_kb, naomi_kb, naomi_state, init_naomi, ROT0, "Sega", "The Typing of the Dead (Rev A)", GAME_FLAGS )
@@ -11153,7 +10976,7 @@ ROM_END
/* 0064 */ GAME( 2001, wrungpo, wrungp, naomim2, naomi, naomi_state, init_naomi, ROT0, "CRI / Sega", "Wave Runner GP (USA, Rev A)", GAME_FLAGS )
/* 0064 */ GAME( 2001, wrungp, naomi, naomim2, naomi, naomi_state, init_naomi, ROT0, "CRI / Sega", "Wave Runner GP", GAME_FLAGS )
/* 0068 */ GAME( 2001, crakndj2, naomi, naomim2, crackndj,naomi_state, init_naomi, ROT0, "Sega", "Crackin' DJ Part 2 (Japan)", GAME_FLAGS )
-/* 0073 */ GAME( 2001, inunoos, naomi, naomim2, naomi, naomi_state, init_naomi, ROT0, "Wow Entertainment / Sega", "Inu No Osanpo / Dog Walking (Japan, Export, Rev A)", GAME_FLAGS )
+/* 0073 */ GAME( 2001, inunoos, naomi, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega / Cave", "Inu No Osanpo / Dog Walking (Japan, Export, Rev A)", GAME_FLAGS )
/* 0078 */ GAME( 2002, shors2k1, naomi, naomim2, naomi, naomi_state, init_naomi, ROT270,"Sega", "Star Horse 2001 (satellite, Rev B)", GAME_FLAGS )
/* 0083 */ GAME( 2001, derbyoc2, naomi, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Derby Owners Club II Ver.2.1 (Japan, Rev B)", GAME_FLAGS )
/* 0084 */ GAME( 2001, vtenis2c, naomi, naomim1, naomi, naomi_state, init_naomi, ROT0, "Sega", "Virtua Tennis 2 / Power Smash 2 (Rev A)", GAME_FLAGS )
@@ -11166,7 +10989,7 @@ ROM_END
/* 0122 */ GAME( 2003, shorsepl, shorsep, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Star Horse Progress (live, Rev A)", GAME_FLAGS )
/* 0123 */ GAME( 2003, shorsep, naomi, naomim2, naomi, naomi_state, init_naomi, ROT270,"Sega", "Star Horse Progress (satellite, Rev A)", GAME_FLAGS )
/* 0126 */ GAME( 2003, oinori, naomi, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Oinori-daimyoujin Matsuri", GAME_FLAGS )
-/* 0128 */ GAME( 2003, shootpl, naomi, naomim1, naomi, naomi_state, init_naomi, ROT0, "Sega", "Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan, Rev A)", GAME_FLAGS )
+/* 0128 */ GAME( 2003, shootpl, naomi, naomim1, naomi, naomi_state, init_naomi, ROT0, "Sega", "Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan) (Rev A)", GAME_FLAGS )
/* 0130 */ GAME( 2002, hopper, naomi, naomi, naomi, naomi_state, init_naomi, ROT0, "Sega", "SWP Hopper Board", GAME_FLAGS )
// 0132 Mushiking 2K3 2ND (Japan)
/* 0136 */ GAME( 2004, shootplm, naomi, naomim1, naomi, naomi_state, init_naomi, ROT0, "Sega", "Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan) Version B", GAME_FLAGS ) // Build: 23 Jan 2004
@@ -11181,41 +11004,40 @@ ROM_END
/* 0166 */ GAME( 2006, zunou, naomi, naomim4, naomi, naomi_state, init_naomi, ROT0, "Sega", "Touch De Zunou (Japan, Rev A)", GAME_FLAGS )
/* 0170-01 */ GAME( 2007, manicpnc, naomi, naomim4, naomi, naomi_state, init_naomi, ROT0, "Sega", "Manic Panic Ghosts! (USA, Export)", GAME_FLAGS )
/* 0170 */ GAME( 2007, pokasuka, manicpnc, naomim4, naomi, naomi_state, init_naomi, ROT0, "Sega", "Pokasuka Ghost! (Japan)", GAME_FLAGS )
-// 0171 Mushiking 2K6 2ND (Japan) note: starting from ver 2K6 was moved to SystemSP platform and later to PC-based hardware
+// 0171 Mushiking 2K6 2ND (Japan)
/* 0175 */ GAME( 2007, asndynmt, naomi, naomim4, naomi, naomi_state, init_naomi, ROT0, "Sega", "Asian Dynamite / Dynamite Deka EX", GAME_FLAGS )
/* 0175 */ GAME( 2007, asndynmto, asndynmt, naomim4, naomi, naomi_state, init_naomi, ROT0, "Sega", "Asian Dynamite / Dynamite Deka EX (older)", GAME_FLAGS ) // no revision stickers, presumably older revision but might be release for Asian market
/* 0177 */ GAME( 2007, rhytngk, naomi, naomim4, naomi, naomi_state, init_naomi, ROT0, "Sega / Nintendo - J.P ROOM", "Rhythm Tengoku (Japan)", GAME_FLAGS )
/* 0180 */ GAME( 2007, mushik4e, naomi, naomim4, naomi, naomi_state, init_naomi, ROT0, "Sega", "Mushiking The King Of Beetles - Mushiking IV / V / VI (World)", GAME_FLAGS ) // not for Japan or Korea, version can be changed in secret menu, ~equivalent of Japanese 2K6 versions.
/* 0186 */ GAME( 2009, shorsepr, naomi, naomim4, naomi, naomi_state, init_naomi, ROT270,"Sega", "Star Horse Progress Returns (satellite)", GAME_FLAGS )
-// 00xx Mayjinsen (Formation Battle in May) - prototype, never released
-// 01xx Mushiking 2K3 1ST (Japan)
-// 01xx Mushiking 2K4 1ST (Japan)
-// 01xx Mushiking 2K5 2ND (Japan)
+// 0xxx Mushiking 2K3 1ST (Japan)
+// 0xxx Mushiking 2K4 1ST (Japan)
+// 0xxx Mushiking 2K5 2ND (Japan) note: starting from ver 2K6 2ND was moved to SystemSP platform and later to PC-based hardware
// 0xxx Star Horse 2001 (main screens, server)
// 0xxx Star Horse 2002 (whole set)
// 0xxx Star Horse Progress Returns (main screens, server)
+// 00xx Mayjinsen (Formation Battle in May) - prototype, never released
/* Cartridge prototypes of games released on GD-ROM */
/* none */ GAME( 2003, puyofevp, puyofev, naomim1, naomi, naomi_state, init_naomi, ROT0, "Sega", "Puyo Puyo Fever (prototype ver 0.01)", GAME_FLAGS )
/* none */ GAME( 2001, vathletep, vathlete, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Virtua Athletics / Virtua Athlete (prototype)", GAME_FLAGS )
/* 840-xxxxx (Sega Naomi 2 cart games) */
-/* 0046 */ GAME( 2001, wldrider, naomi2, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Wow Entertainment / Sega", "Wild Riders", GAME_FLAGS )
-/* 0061 */ GAME( 2001, vstrik3co,vstrik3c,naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Amusement Vision / Sega", "Virtua Striker 3 (World)", GAME_FLAGS ) // not for Japan
-/* 0061 */ GAME( 2001, vstrik3c, naomi2, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Amusement Vision / Sega", "Virtua Striker 3 (World, Rev B)", GAME_FLAGS ) // not for Japan
-/* 0062 */ GAME( 2001, clubkrto, clubkrt, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart: European Session", GAME_FLAGS )
-/* 0062 */ GAME( 2001, clubkrta, clubkrt, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart: European Session (Rev A)", GAME_FLAGS )
-/* 0062 */ GAME( 2001, clubkrtc, clubkrt, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart: European Session (Rev C)", GAME_FLAGS )
-/* 0062 */ GAME( 2001, clubkrt, naomi2, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart: European Session (Rev D)", GAME_FLAGS )
-/* 0080 */ GAME( 2002, vf4cart, naomi2, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Fighter 4 (World)", GAME_FLAGS ) // not for Japan
-/* none */ GAME( 2002, kingrt66p,kingrt66,naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "The King of Route 66 (prototype)", GAME_FLAGS )
-/* 0087 */ GAME( 2002, kingrt66, naomi2, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "The King of Route 66 (Rev A)", GAME_FLAGS )
-/* 0095 */ GAME( 2002, soulsurf, naomi2, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Soul Surfer (Rev A)", GAME_FLAGS )
-/* 0106 */ GAME( 2002, vf4evoct, naomi2, naomi2m1, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Fighter 4 Evolution (World)", GAME_FLAGS ) // not for Japan
-/* 0129 */ GAME( 2003, clubkprz, naomi2, naomi2m1, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart Prize (Export, Japan, Rev A)", GAME_FLAGS )
-/* 0137 */ GAME( 2004, clubkpzb, naomi2, naomi2m1, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart Prize Version B (Export, Japan)", GAME_FLAGS )
-/* 0139 */ GAME( 2003, clubk2k3, naomi2, naomi2m1, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart: European Session (2003, Rev A)", GAME_FLAGS )
-/* none */ GAME( 2003, clubk2kp, clubk2k3,naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart: European Session (2003, prototype)", GAME_FLAGS )
+/* 0046 */ GAME( 2001, wldrider, naomi2, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Wild Riders", GAME_FLAGS )
+/* 0061 */ GAME( 2001, vstrik3co,vstrik3c,naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Striker 3 (World)", GAME_FLAGS ) // not for Japan
+/* 0061 */ GAME( 2001, vstrik3c, naomi2, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Striker 3 (World, Rev B)", GAME_FLAGS ) // not for Japan
+/* 0062 */ GAME( 2001, clubkrto, clubkrt, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart: European Session", GAME_FLAGS )
+/* 0062 */ GAME( 2001, clubkrta, clubkrt, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart: European Session (Rev A)", GAME_FLAGS )
+/* 0062 */ GAME( 2001, clubkrtc, clubkrt, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart: European Session (Rev C)", GAME_FLAGS )
+/* 0062 */ GAME( 2001, clubkrt, naomi2, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart: European Session (Rev D)", GAME_FLAGS )
+/* 0080 */ GAME( 2002, vf4cart, naomi2, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Fighter 4 (World)", GAME_FLAGS ) // not for Japan
+/* 0087 */ GAME( 2002, kingrt66, naomi2, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "The King of Route 66 (Rev A)", GAME_FLAGS )
+/* 0095 */ GAME( 2002, soulsurf, naomi2, naomi2m2, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Soul Surfer (Rev A)", GAME_FLAGS )
+/* 0106 */ GAME( 2002, vf4evoct, naomi2, naomi2m1, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Fighter 4 Evolution (World)", GAME_FLAGS ) // not for Japan
+/* 0129 */ GAME( 2003, clubkprz, naomi2, naomi2m1, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart Prize (Export, Japan)", GAME_FLAGS )
+/* 0137 */ GAME( 2004, clubkpzb, naomi2, naomi2m1, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart Prize Version B (Export, Japan)", GAME_FLAGS )
+/* 0139 */ GAME( 2003, clubk2k3, naomi2, naomi2m1, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart: European Session (2003, Rev A)", GAME_FLAGS )
+/* none */ GAME( 2003, clubk2kp, clubk2k3,naomi2m2, naomi, naomi2_state, init_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, init_naomi, ROT0, "Capcom", "Power Stone", GAME_FLAGS )
@@ -11245,9 +11067,9 @@ ROM_END
/* 0058 */ GAME( 2008, ausfache, naomi, naomim4, naomi, naomi_state, init_naomi, ROT0, "Subtle Style", "Akatsuki Blitzkampf Ausf. Achse (Japan)", GAME_FLAGS )
/* 0059 */ GAME( 2008, illvelo, naomi, naomim4, naomi, naomi_state, init_naomi, ROT270,"Milestone", "Illvelo (Illmatic Envelope) (Japan)", GAME_FLAGS )
/* 0060 */ GAME( 2008, mamonoro, naomi, naomim4, naomi, naomi_state, init_naomi, ROT270,"G.Rev", "Mamoru-kun wa Norowarete Shimatta! (Japan)", GAME_FLAGS )
-/* 0061 */ GAME( 2008, mbaao, mbaa, naomim4, naomi, naomi_state, init_naomi, ROT0, "Type-Moon / Ecole", "Melty Blood Actress Again (Japan)", GAME_FLAGS )
-/* 0061 */ GAME( 2008, mbaa, naomi, naomim4, naomi, naomi_state, init_naomi, ROT0, "Type-Moon / Ecole", "Melty Blood Actress Again Version A (Japan, Rev A)", GAME_FLAGS )
-/* 0062 */ GAME( 2009, radirgyn, naomi, naomim4, naomi, naomi_state, init_naomi, ROT0, "Milestone / Lucky", "Radirgy Noa (Japan)", GAME_FLAGS )
+/* 0061 */ GAME( 2008, mbaao, mbaa, naomim4, naomi, naomi_state, init_naomi, ROT0, "Type-Moon/Ecole", "Melty Blood Actress Again (Japan)", GAME_FLAGS )
+/* 0061 */ GAME( 2008, mbaa, naomi, naomim4, naomi, naomi_state, init_naomi, ROT0, "Type-Moon/Ecole", "Melty Blood Actress Again Version A (Japan, Rev A)", GAME_FLAGS )
+/* 0062 */ GAME( 2009, radirgyn, naomi, naomim4, naomi, naomi_state, init_naomi, ROT0, "Milestone/Lucky", "Radirgy Noa (Japan)", GAME_FLAGS )
/* HMG016007 */ GAME( 2001, hmgeo, naomi, naomim2, naomi, naomi_state, init_naomi, ROT0, "Capcom", "Heavy Metal Geomatrix (Rev B)", GAME_FLAGS )
/* Cart games on Namco custom ROM board
@@ -11287,23 +11109,23 @@ ROM_END
// 0009 Dynamic Golf / Virtua Golf (GDS-0009)
/* 0009A */ GAME( 2001, dygolf, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Virtua Golf / Dynamic Golf (Rev A) (GDS-0009A)", GAME_FLAGS )
/* 0010 */ GAME( 2001, wsbbgd, naomigd, naomigd, dybbnao, naomi_state, init_naomigd, ROT0, "Sega", "World Series Baseball / Super Major League (GDS-0010)", GAME_FLAGS )
-/* 0011 */ GAME( 2001, vtennisg, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Virtua Tennis / Power Smash (GDS-0011)", GAME_FLAGS )
+/* 0011 */ GAME( 1999, vtennisg, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Virtua Tennis / Power Smash (GDS-0011)", GAME_FLAGS )
/* 0012 */ GAME( 2001, vf4o, vf4, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Fighter 4 (GDS-0012)", GAME_FLAGS )
// 0012A Virtua Fighter 4 (Rev A) (GDS-0012A)
-/* 0012B */ GAME( 2001, vf4b, vf4, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Fighter 4 (Rev B) (GDS-0012B)", GAME_FLAGS )
-/* 0012C */ GAME( 2001, vf4, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Fighter 4 Version C (GDS-0012C)", GAME_FLAGS )
+/* 0012B */ GAME( 2001, vf4b, vf4, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Fighter 4 (Rev B) (GDS-0012B)", GAME_FLAGS )
+/* 0012C */ GAME( 2001, vf4, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Fighter 4 Version C (GDS-0012C)", GAME_FLAGS )
/* 0013 */ GAME( 2001, shaktmsp, naomigd, naomigd, shaktamb, naomi_state, init_naomigd, ROT0, "Sega", "Shakatto Tambourine Motto Norinori Shinkyoku Tsuika (2K1 SPR) (GDS-0013)", GAME_FLAGS )
-/* 0014 */ GAME( 2001, beachspi, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "CRI / Sega", "Beach Spikers (GDS-0014)", GAME_FLAGS )
+/* 0014 */ GAME( 2001, beachspi, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Beach Spikers (GDS-0014)", GAME_FLAGS )
// 0015 Virtua Tennis 2 / Power Smash 2 (GDS-0015)
/* 0015A */ GAME( 2001, vtennis2, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Virtua Tennis 2 / Power Smash 2 (Rev A) (GDS-0015A)", GAME_FLAGS )
/* 0016 */ GAME( 2001, shaktamb, naomigd, naomigd, shaktamb, naomi_state, init_naomigd, ROT0, "Sega", "Shakatto Tambourine Cho Powerup Chu (2K1 AUT) (GDS-0016)", GAME_FLAGS )
/* 0017 */ GAME( 2001, keyboard, naomigd, naomigd_kb, naomi_kb, naomi_state, init_naomigd, ROT0, "Sega", "La Keyboard (GDS-0017)", GAME_FLAGS )
-/* 0018 */ GAME( 2001, lupinshoo,lupinsho,naomigd, hotd2, naomi_state, init_naomigd, ROT0, "Sega / Eighting", "Lupin The Third - The Shooting (GDS-0018)", GAME_FLAGS )
-/* 0018A */ GAME( 2001, lupinsho, naomigd, naomigd, hotd2, naomi_state, init_naomigd, ROT0, "Sega / Eighting", "Lupin The Third - The Shooting (Rev A) (GDS-0018A)", GAME_FLAGS )
+/* 0018 */ GAME( 2001, lupinsho, naomigd, naomigd, hotd2, naomi_state, init_naomigd, ROT0, "Sega / Eighting", "Lupin The Third - The Shooting (GDS-0018)", GAME_FLAGS )
+// 0018A Lupin The Third - The Shooting (Rev A) (GDS-0018A) known to exists
/* 0019 */ GAME( 2001, vathlete, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Virtua Athletics / Virtua Athlete (GDS-0019)", GAME_FLAGS )
/* 0020 */ GAME( 2002, initdo, initd, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage (Japan) (GDS-0020)", GAME_FLAGS )
-// 0020A Initial D Arcade Stage (Japan, Rev A) (GDS-0020A)
-/* 0020B */ GAME( 2002, initd, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage (Japan, Rev B) (GDS-0020B)", GAME_FLAGS )
+// 0020A Initial D Arcade Stage (Rev A) (GDS-0020A)
+/* 0020B */ GAME( 2002, initd, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage (Rev B) (Japan) (GDS-0020B)", GAME_FLAGS )
// 0021 Lupin The Third - The Typing (GDS-0021)
/* 0021A */ GAME( 2002, luptype, naomigd, naomigd_kb, naomi_kb, naomi_state, init_naomigd, ROT0, "Sega", "Lupin The Third - The Typing (Rev A) (GDS-0021A)", GAME_FLAGS )
/* 0022 */ GAME( 2002, mok, naomigd, naomigd, hotd2, naomi_state, init_naomigd, ROT0, "Sega", "The Maze of the Kings (GDS-0022)", GAME_FLAGS )
@@ -11318,44 +11140,44 @@ ROM_END
/* 0024B */ GAME( 2002, vf4evob, vf4evo, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Fighter 4 Evolution (Version B) (Japan) (GDS-0024B)", GAME_FLAGS )
/* 0024C */ GAME( 2002, vf4evo, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Fighter 4 Evolution (Version B) (Japan) (GDS-0024C)", GAME_FLAGS )
/* 0025 */ GAME( 2002, initdexpo,initdexp,naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage (Export) (GDS-0025)", GAME_FLAGS )
-/* 0025A */ GAME( 2002, initdexp, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage (Export, Rev A) (GDS-0025A)", GAME_FLAGS )
+/* 0025A */ GAME( 2002, initdexp, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage (Export) (Rev A) (GDS-0025A)", GAME_FLAGS )
/* 0026 */ GAME( 2002, initdv2jo,initdv2j,naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 2 (Japan) (GDS-0026)", GAME_FLAGS )
-/* 0026A */ GAME( 2002, initdv2ja,initdv2j,naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 2 (Japan, Rev A) (GDS-0026A)", GAME_FLAGS )
-/* 0026B */ GAME( 2003, initdv2j, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 2 (Japan, Rev B) (GDS-0026B)", GAME_FLAGS )
+// 0026A Initial D Arcade Stage Ver. 2 (Japan) (Rev A) (GDS-0026A)
+/* 0026B */ GAME( 2003, initdv2j, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 2 (Japan) (Rev B) (GDS-0026B)", GAME_FLAGS )
/* 0027 */ GAME( 2003, initdv2e, initdv2j,naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 2 (Export) (GDS-0027)", GAME_FLAGS )
-// 0028 Shakka to Tambourine 4EVER (GD SOFT TMB 4EVER)
-/* 0029 */ GAME( 2003, clubkcyco,clubkcyc,naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart for Cycraft (GDS-0029)", GAME_FLAGS )
+// 0028
+// 0029 Club Kart for Cycraft (GDS-0029)
/* 0029A */ GAME( 2003, clubkcyc, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Club Kart for Cycraft (Rev A) (GDS-0029A)", GAME_FLAGS )
/* 0030A */ GAME( 2003, dragntra, dragntr, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Dragon Treasure (Rev A) (GDS-0030A)", GAME_FLAGS )
/* 0030B */ GAME( 2003, dragntr, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Dragon Treasure (Rev B) (GDS-0030B)", GAME_FLAGS )
/* 0031 */ GAME( 2003, puyofevj, puyofev, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Puyo Puyo Fever (Japan) (GDS-0031)", GAME_FLAGS )
// 0032 Initial D Arcade Stage Ver. 3 (Japan) (GDS-0032)
-// 0032A Initial D Arcade Stage Ver. 3 (Japan, Rev A) (GDS-0032A)
-/* 0032B */ GAME( 2004, initdv3jb,initdv3j,naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 (Japan, Rev B) (GDS-0032B)", GAME_FLAGS )
-/* 0032C */ GAME( 2004, initdv3j, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 (Japan, Rev C) (GDS-0032C)", GAME_FLAGS )
+// 0032A Initial D Arcade Stage Ver. 3 (Japan) (Rev A) (GDS-0032A)
+/* 0032B */ GAME( 2004, initdv3jb,initdv3j,naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 (Japan) (Rev B) (GDS-0032B)", GAME_FLAGS )
+/* 0032C */ GAME( 2004, initdv3j, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 (Japan) (Rev C) (GDS-0032C)", GAME_FLAGS )
/* 0033 */ GAME( 2004, initdv3e, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 (Export) (GDS-0033)", GAME_FLAGS )
/* 0034 */ GAME( 2003, puyofev, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Puyo Pop Fever (World) (GDS-0034)", GAME_FLAGS )
-// 0035 GD SOFT KIT DKG
+// 0035
// 0036 Virtua Fighter 4 Final Tuned (GDS-0036)
-/* 0036A */ GAME( 2004, vf4tuneda,vf4tuned,naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Fighter 4 Final Tuned (Rev A) (GDS-0036A)", GAME_FLAGS )
-// 0036B Virtua Fighter 4 Final Tuned (Rev B) (GDS-0036B)
-// 0036C Virtua Fighter 4 Final Tuned (Rev C) (GDS-0036C)
+/* 0036A */ GAME( 2004, vf4tuneda,vf4tuned,naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Fighter 4 Final Tuned (GDS-0036A)", GAME_FLAGS )
+// 0036B Virtua Fighter 4 Final Tuned (GDS-0036B)
+// 0036C Virtua Fighter 4 Final Tuned (GDS-0036C)
/* 0036D */ GAME( 2004, vf4tunedd,vf4tuned,naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Fighter 4 Final Tuned (Ver. A) (GDS-0036D)", GAME_FLAGS )
-// 0036E Virtua Fighter 4 Final Tuned (Rev E) (GDS-0036E)
+// 0036E Virtua Fighter 4 Final Tuned (GDS-0036E)
/* 0036F */ GAME( 2004, vf4tuned, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Virtua Fighter 4 Final Tuned (Ver. B) (GDS-0036F)", GAME_FLAGS )
// 0037 Dragon Treasure 2 (GDS-0037)
/* 0037A */ GAME( 2004, dragntr2, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Dragon Treasure 2 (Rev A) (GDS-0037A)", GAME_FLAGS )
-// 0038 Initial D Arcade Stage Ver. 3 Cycraft Edition (Japan) (NAOMI2 GDROM TOS SP)
-// 0039 Initial D Arcade Stage Ver. 3 Cycraft Edition (Export) (GDS-0039)
-/* 0039A */ GAME( 2004, inidv3ca, inidv3cy,naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 Cycraft Edition (Export, Rev A) (GDS-0039A)", GAME_FLAGS )
-/* 0039B */ GAME( 2006, inidv3cy, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 Cycraft Edition (Export, Rev B) (GDS-0039B)", GAME_FLAGS )
-// 0040 NAOMI2 GDROM MTG
+// 0038
+// 0039 Initial D Arcade Stage Ver. 3 Cycraft Edition (GDS-0039)
+/* 0039A */ GAME( 2006, inidv3ca, inidv3cy,naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 Cycraft Edition (Rev A) (GDS-0039A)", GAME_FLAGS )
+/* 0039B */ GAME( 2006, inidv3cy, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 Cycraft Edition (Rev B) (GDS-0039B)", GAME_FLAGS )
+// 0040
// 0041 Dragon Treasure 3 (GDS-0041)
/* 0041A */ GAME( 2005, dragntr3, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Dragon Treasure 3 (Rev A) (GDS-0041A)", GAME_FLAGS )
// 0042 NAOMI DIMM Firm Update for CF-BOX (GDS-0042)
-/* 0042A */ GAME( 2009, ndcfboxa, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Naomi DIMM Firmware Update for CF-BOX (4.01) (GDS-0042A)", GAME_FLAGS )
+/* 0042A */ GAME( 2001, ndcfboxa, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Naomi DIMM Firmware Update for CF-BOX (4.01) (GDS-0042A)", GAME_FLAGS )
// 00?? Get Bass 2 (GDS-00xx)
-// 00?? Yonin Uchi Mahjong MJ, not sure it was released on GD-ROM, might be satellite CD/DVD, or even not for NAOMI but other hardware.
+// 00?? Pochinya (GDS-00xx)
/* GDL-xxxx ("licensed by Sega" GD-ROM games) */
/* 0001 */ GAME( 2001, gundmgd, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0,"Capcom / Banpresto","Mobile Suit Gundam: Federation Vs. Zeon (GDL-0001)", GAME_FLAGS )
@@ -11364,18 +11186,18 @@ ROM_END
/* 0004 */ GAME( 2001, cvsgd, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Capcom / SNK", "Capcom Vs. SNK Millennium Fight 2000 Pro (Japan) (GDL-0004)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND )
/* 0005 */ GAME( 2001, starseek, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "G.Rev", "Doki Doki Idol Star Seeker (GDL-0005)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND )
/* 0006 */ GAME( 2001, gundmxgd, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Capcom", "Mobile Suit Gundam: Federation Vs. Zeon DX (USA, Japan) (GDL-0006)", GAME_FLAGS )
-// 0007 Capcom Vs. SNK 2 (Japan) (GDL-0007)
-/* 0007A */ GAME( 2001, cvs2mf, cvs2, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Capcom / SNK", "Capcom Vs. SNK 2 Millionaire Fighting 2001 (Japan, Rev A) (GDL-0007A)", GAME_FLAGS )
-/* 0008 */ GAME( 2001, cvs2, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Capcom / SNK", "Capcom Vs. SNK 2 Mark Of The Millennium 2001 (USA) (GDL-0008)", GAME_FLAGS )
-// 0009 Capcom Vs. SNK 2 (Export)
+// 0007 Capcom Vs. SNK 2 (GDL-0007)
+/* 0007A */ GAME( 2001, cvs2mf, cvs2, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Capcom / SNK", "Capcom Vs. SNK 2 Millionaire Fighting 2001 (Rev A) (GDL-0007A)", GAME_FLAGS )
+/* 0008 */ GAME( 2001, cvs2, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Capcom / SNK", "Capcom Vs. SNK 2 Mark Of The Millennium 2001 (GDL-0008)", GAME_FLAGS )
+// 0009
/* 0010 */ GAME( 2001, ikaruga, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT270, "Treasure", "Ikaruga (GDL-0010)", GAME_FLAGS )
/* 0011 */ GAME( 2002, ggxx, naomigd, naomigd, naomi, naomi_state, init_ggxx, ROT0,"Arc System Works","Guilty Gear XX (GDL-0011)", GAME_FLAGS )
-/* 0012 */ GAME( 2002, cleoftp, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Altron / Taito", "Cleopatra Fortune Plus (GDL-0012)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND )
+/* 0012 */ GAME( 2002, cleoftp, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Altron", "Cleopatra Fortune Plus (GDL-0012)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND )
/* 0013 */ GAME( 2002, moeru, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Altron", "Moeru Casinyo (Japan) (GDL-0013)", GAME_FLAGS )
// 0014 Musapey's Choco Marker (GDL-0014)
/* 0014A */ GAME( 2002, chocomk, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Ecole Software", "Musapey's Choco Marker (Rev A) (GDL-0014A)", GAME_FLAGS )
-// 0015 GD SOFT MOGACHO
-// 0016 GD SOFT POCHI (Pochinya ?)
+// 0015
+// 0016 Yonin Uchi Mahjong MJ (GDL-0016)
/* 0017 */ GAME( 2002, quizqgd, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT270, "Amedio (Taito license)","Quiz Keitai Q mode (GDL-0017)", GAME_FLAGS )
/* 0018 */ GAME( 2002, azumanga, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "MOSS (Taito license)","Azumanga Daioh Puzzle Bobble (GDL-0018)", GAME_FLAGS )
/* 0019 */ GAME( 2003, ggxxrlo, ggxxrl, naomigd, naomi, naomi_state, init_ggxxrl, ROT0, "Arc System Works","Guilty Gear XX #Reload (Japan) (GDL-0019)", GAME_FLAGS )
@@ -11388,12 +11210,12 @@ ROM_END
/* 0024 */ GAME( 2003, psyvar2, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT270, "Success", "Psyvariar 2 - The Will To Fabricate (Japan) (GDL-0024)", GAME_FLAGS )
/* 0025 */ GAME( 2004, cfield, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Able", "Chaos Field (Japan) (GDL-0025)", GAME_FLAGS )
/* 0026 */ GAME( 2004, trizeal, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT270, "Triangle Service", "Trizeal (Japan) (GDL-0026)", GAME_FLAGS )
-// 0027 Chaos Field (Export)
+// 0027
/* 0028 */ GAME( 2005, meltyblo, meltybld,naomigd, naomi, naomi_state, init_naomigd, ROT0, "Ecole Software", "Melty Blood Act Cadenza (Japan) (GDL-0028)", GAME_FLAGS )
// 0028A Melty Blood Act Cadenza (Rev A) (GDL-0028A)
// 0028B Melty Blood Act Cadenza (Rev B) (GDL-0028B)
/* 0028C */ GAME( 2005, meltybld, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Ecole Software", "Melty Blood Act Cadenza Ver. A (Japan) (GDL-0028C)", GAME_FLAGS )
-// 0029 ExZeus - game was planned as GD-ROM release but was canceled, no GD discs was manufactured, only few prototype cartridges owned by game developer(s) known to exists
+// 0029
/* 0030 */ GAME( 2005, senkoo, senko, naomigd, naomi, naomi_state, init_naomigd, ROT0, "G.Rev", "Senko No Ronde (Japan) (GDL-0030)", GAME_FLAGS )
/* 0030A */ GAME( 2005, senko, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "G.Rev", "Senko No Ronde (Japan, Rev A) (GDL-0030A)", GAME_FLAGS )
/* 0031 */ GAME( 2005, ss2005o, ss2005, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Starfish", "Super Shanghai 2005 (Japan) (GDL-0031)", GAME_FLAGS )
@@ -11413,28 +11235,23 @@ ROM_END
/* 0040 */ GAME( 2006, karous, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT270, "Milestone", "Karous (Japan) (GDL-0040)", GAME_FLAGS )
/* 0041 */ GAME( 2006, ggxxac, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0,"Arc System Works","Guilty Gear XX Accent Core (Japan) (GDL-0041)", GAME_FLAGS )
/* 0042 */ GAME( 2006, takoron, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Compile", "Noukone Puzzle Takoron (Japan) (GDL-0042)", GAME_FLAGS )
+// 00?? ExZeus - game was planned as GD-ROM release but was canceled, no GD discs was manufactured, only few prototype cartridges owned by game developer(s) known to exists
/* CDP-xxxxx and CDV-xxxxx (CD-ROM and DVD-ROM for Naomi 2 Satellite Terminal) */
-// CDP-10001?- World Club Champion Football Serie A 2001-2002 (Sega, 2002)
-// CDP-10001?- World Club Champion Football Serie A 2001-2002 Ver.1.2 (Sega, 2002)
/* CDP-10001C*/ GAME( 2003, wccf116, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Hitmaker / Sega", "World Club Champion Football Serie A 2001-2002 Ver.2 (Japan) (CDP-10001C)", GAME_FLAGS )
/* CDP-10003 */ GAME( 2002, wccf1dup, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Hitmaker / Sega", "World Club Champion Football Serie A 2001-2002 DIMM FIRM Ver.3.03 (CDP-10003)", GAME_FLAGS )
-// CDV-10001 - World Club Champion Football Serie A 2001-2002 Ver.2.11 (Japan) (Sega, 2002)
-/* CDV-10002 */ GAME( 2004, wccf212e, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Hitmaker / Sega", "World Club Champion Football Serie A 2002-2003 Ver.2.12 (Italy) (CDV-10002)", GAME_FLAGS )
-// CDV-10003 - World Club Champion Football Serie A 2002-2003 Ver.2 (Japan) (Sega, 2004)
-// CDV-10004 - World Club Champion Football Serie A 2002-2003 Ver.2 (Korea) (Sega, 2004)
+/* CDV-10002 */ GAME( 2004, wccf212e, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Hitmaker / Sega", "World Club Champion Football Serie A 2002-2003 Ver.2.12 (Export) (CDV-10002)", GAME_FLAGS )
/* CDV-10007 */ GAME( 2004, wccf2chk, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Hitmaker / Sega", "World Club Champion Football Serie A 2002-2003 Drive Checker (CDV-10007)", GAME_FLAGS ) // actually just disc ejector
/* CDV-10008 */ GAME( 2004, wccf234j, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Hitmaker / Sega", "World Club Champion Football Serie A 2002-2003 Ver.2.34 (Japan) (CDV-10008)", GAME_FLAGS )
-// CDV-10011 - World Club Champion Football European Clubs 2004-2005 (Sega, 2005)
-// CDV-10011P- World Club Champion Football European Clubs 2004-2005 (Sega, 2005)
-/* CDV-10013 */ GAME( 2005, wccf310j, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "World Club Champion Football European Clubs 2004-2005 (Asia) (CDV-10013)", GAME_FLAGS )
+/* CDV-10013 */ GAME( 2005, wccf310j, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "World Club Champion Football European Clubs 2004-2005 (Japan) (CDV-10013)", GAME_FLAGS )
/* CDV-10015 */ GAME( 2005, wccf331e, wccf322e,naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "World Club Champion Football European Clubs 2004-2005 Ver.1.1 (Export) (CDV-10015)", GAME_FLAGS )
/* CDV-10015P*/ GAME( 2005, wccf322e, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "World Club Champion Football European Clubs 2004-2005 Ver.3.22 (Export) (CDV-10015P)", GAME_FLAGS )
-// CDV-10020 - World Club Champion Football European Clubs 2004-2005 Ver.1.1 (Sega, 2005)
-// CDV-10021 - World Club Champion Football European Clubs 2004-2005 Ver.1.2 (Sega, 2005)
-// CDV-10025 - World Club Champion Football European Clubs 2005-2006 (Sega, 2006)
-// CDV-10025A- World Club Champion Football European Clubs 2005-2006 (Sega, 2006)
/* CDV-10027 */ GAME( 2006, wccf420e, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "World Club Champion Football European Clubs 2005-2006 (Export) (CDV-10027)", GAME_FLAGS )
+// CD?-????? - World Club Champion Football Serie A 2001-2002 (Sega, 2002)
+// CD?-????? - World Club Champion Football Serie A 2001-2002 Ver.1.2 (Sega, 2002)
+// CD?-????? - World Club Champion Football Serie A 2002-2003 Ver.2 (Sega, 2004)
+// CD?-????? - World Club Champion Football European Clubs 2004-2005 Ver.1.2 (Sega, 2005)
+// CD?-????? - 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)
diff --git a/src/mame/drivers/nascom1.cpp b/src/mame/drivers/nascom1.cpp
index 547d8ff98fe..b03189cd72e 100644
--- a/src/mame/drivers/nascom1.cpp
+++ b/src/mame/drivers/nascom1.cpp
@@ -14,7 +14,6 @@
#include "imagedev/cassette.h"
#include "imagedev/snapquik.h"
#include "machine/ay31015.h"
-#include "machine/clock.h"
#include "machine/ram.h"
#include "machine/z80pio.h"
@@ -86,7 +85,8 @@ private:
DECLARE_WRITE_LINE_MEMBER(nascom1_hd6402_so);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( nascom1_cassette );
DECLARE_DEVICE_IMAGE_UNLOAD_MEMBER( nascom1_cassette );
- template<int Dest> DECLARE_SNAPSHOT_LOAD_MEMBER( nascom );
+ DECLARE_SNAPSHOT_LOAD_MEMBER( nascom1 );
+ DECLARE_SNAPSHOT_LOAD_MEMBER( charrom );
};
class nascom1_state : public nascom_state
@@ -110,7 +110,7 @@ class nascom2_state : public nascom_state
public:
nascom2_state(const machine_config &mconfig, device_type type, const char *tag) :
nascom_state(mconfig, type, tag),
- m_nasbus(*this, NASBUS_TAG),
+ m_nasbus(*this, "nasbus"),
m_socket1(*this, "socket1"),
m_socket2(*this, "socket2"),
m_lsw1(*this, "lsw1")
@@ -119,6 +119,7 @@ public:
void nascom2(machine_config &config);
void nascom2c(machine_config &config);
+ void init_nascom2();
void init_nascom2c();
private:
@@ -230,10 +231,9 @@ DEVICE_IMAGE_UNLOAD_MEMBER( nascom_state, nascom1_cassette )
// SNAPSHOTS
//**************************************************************************
-template<int Dest>
-SNAPSHOT_LOAD_MEMBER( nascom_state, nascom )
+SNAPSHOT_LOAD_MEMBER( nascom_state, nascom1 )
{
- uint8_t line[29];
+ uint8_t line[28];
while (image.fread(&line, sizeof(line)) == sizeof(line))
{
@@ -244,15 +244,38 @@ SNAPSHOT_LOAD_MEMBER( nascom_state, nascom )
{
for (int i = 0; i < 8; i++)
{
- switch (Dest)
- {
- case 0: // snapshot
- m_maincpu->space(AS_PROGRAM).write_byte(addr++, b[i]);
- break;
- case 1: // character rom
- m_gfx1_region->base()[addr++] = b[i];
- break;
- }
+ m_maincpu->space(AS_PROGRAM).write_byte(addr++, b[i]);
+ }
+ }
+ else
+ {
+ image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported file format");
+ return image_init_result::FAIL;
+ }
+ dummy = 0x00;
+ while (!image.image_feof() && dummy != 0x0a && dummy != 0x1f)
+ {
+ image.fread(&dummy, 1);
+ }
+ }
+
+ return image_init_result::PASS;
+}
+
+SNAPSHOT_LOAD_MEMBER(nascom_state, charrom)
+{
+ uint8_t line[28];
+
+ while (image.fread(&line, sizeof(line)) == sizeof(line))
+ {
+ unsigned int addr, b[8], dummy;
+
+ if (sscanf((char *)line, "%4x %x %x %x %x %x %x %x %x",
+ &addr, &b[0], &b[1], &b[2], &b[3], &b[4], &b[5], &b[6], &b[7]) == 9)
+ {
+ for (int i = 0; i < 8; i++)
+ {
+ m_gfx1_region->base()[addr++] = b[i];
}
}
else
@@ -370,6 +393,15 @@ void nascom2_state::machine_reset()
m_maincpu->set_state_int(Z80_PC, m_lsw1->read() << 12);
}
+void nascom2_state::init_nascom2()
+{
+ init_nascom();
+
+ // setup nasbus
+ m_nasbus->set_program_space(&m_maincpu->space(AS_PROGRAM));
+ m_nasbus->set_io_space(&m_maincpu->space(AS_IO));
+}
+
// since we don't know for which regions we should disable ram, we just let other devices
// overwrite the region they need, and re-install our ram when they are disabled
WRITE_LINE_MEMBER( nascom2_state::ram_disable_w )
@@ -385,6 +417,10 @@ void nascom2_state::init_nascom2c()
{
// install memory
m_maincpu->space(AS_PROGRAM).install_ram(0x0000, 0x0000 + m_ram->size() - 1, m_ram->pointer());
+
+ // setup nasbus
+ m_nasbus->set_program_space(&m_maincpu->space(AS_PROGRAM));
+ m_nasbus->set_io_space(&m_maincpu->space(AS_IO));
}
WRITE_LINE_MEMBER( nascom2_state::ram_disable_cpm_w )
@@ -665,13 +701,11 @@ void nascom_state::nascom(machine_config &config)
// uart
AY31015(config, m_hd6402);
+ m_hd6402->set_tx_clock((16_MHz_XTAL / 16) / 256);
+ m_hd6402->set_rx_clock((16_MHz_XTAL / 16) / 256);
m_hd6402->read_si_callback().set(FUNC(nascom_state::nascom1_hd6402_si));
m_hd6402->write_so_callback().set(FUNC(nascom_state::nascom1_hd6402_so));
- clock_device &uart_clock(CLOCK(config, "uart_clock", (16_MHz_XTAL / 16) / 256));
- uart_clock.signal_handler().set(m_hd6402, FUNC(ay31015_device::write_tcp));
- uart_clock.signal_handler().append(m_hd6402, FUNC(ay31015_device::write_rcp));
-
// cassette is connected to the uart
CASSETTE(config, m_cassette);
m_cassette->set_interface("nascom_cass");
@@ -683,11 +717,11 @@ void nascom_state::nascom(machine_config &config)
RAM(config, m_ram).set_default_size("48K").set_extra_options("8K,16K,32K");
// devices
- snapshot_image_device &snapshot(SNAPSHOT(config, "snapshot"));
- snapshot.set_handler(snapquick_load_delegate(&SNAPSHOT_LOAD_NAME(nascom_state, nascom<0>), this), "nas", attotime::from_msec(500));
+ snapshot_image_device &snapshot(SNAPSHOT(config, "snapshot", 0));
+ snapshot.set_handler(snapquick_load_delegate(&SNAPSHOT_LOAD_NAME(nascom_state, nascom1), this), "nas", 0.5);
snapshot.set_interface("nascom_snap");
- snapshot_image_device &snapchar(SNAPSHOT(config, "snapchar"));
- snapchar.set_handler(snapquick_load_delegate(&SNAPSHOT_LOAD_NAME(nascom_state, nascom<1>), this), "chr", attotime::from_msec(500));
+ snapshot_image_device &snapchar(SNAPSHOT(config, "snapchar", 0));
+ snapchar.set_handler(snapquick_load_delegate(&SNAPSHOT_LOAD_NAME(nascom_state, charrom), this), "chr", 0.5);
snapchar.set_interface("nascom_char");
}
@@ -703,8 +737,7 @@ void nascom1_state::nascom1(machine_config &config)
SOFTWARE_LIST(config, "snap_list").set_original("nascom_snap").set_filter("NASCOM1");
}
-void nascom2_state::nascom2(machine_config &config)
-{
+MACHINE_CONFIG_START(nascom2_state::nascom2)
nascom(config);
Z80(config, m_maincpu, 16_MHz_XTAL / 4);
@@ -725,32 +758,31 @@ void nascom2_state::nascom2(machine_config &config)
m_socket2->set_device_load(device_image_load_delegate(&nascom2_state::device_image_load_socket2, this));
// nasbus expansion bus
- nasbus_device &nasbus(NASBUS(config, NASBUS_TAG));
- nasbus.ram_disable().set(FUNC(nascom2_state::ram_disable_w));
- nasbus.set_program_space(m_maincpu, AS_PROGRAM);
- nasbus.set_io_space(m_maincpu, AS_IO);
- NASBUS_SLOT(config, "nasbus1", nasbus_slot_cards, nullptr);
- NASBUS_SLOT(config, "nasbus2", nasbus_slot_cards, nullptr);
- NASBUS_SLOT(config, "nasbus3", nasbus_slot_cards, nullptr);
- NASBUS_SLOT(config, "nasbus4", nasbus_slot_cards, nullptr);
+ MCFG_NASBUS_ADD(NASBUS_TAG)
+ MCFG_NASBUS_RAM_DISABLE_HANDLER(WRITELINE(*this, nascom2_state, ram_disable_w))
+ MCFG_NASBUS_SLOT_ADD("nasbus1", nasbus_slot_cards, nullptr)
+ MCFG_NASBUS_SLOT_ADD("nasbus2", nasbus_slot_cards, nullptr)
+ MCFG_NASBUS_SLOT_ADD("nasbus3", nasbus_slot_cards, nullptr)
+ MCFG_NASBUS_SLOT_ADD("nasbus4", nasbus_slot_cards, nullptr)
// software
SOFTWARE_LIST(config, "snap_list").set_original("nascom_snap").set_filter("NASCOM2");
SOFTWARE_LIST(config, "socket_list").set_original("nascom_socket");
SOFTWARE_LIST(config, "floppy_list").set_original("nascom_flop");
-}
+MACHINE_CONFIG_END
-void nascom2_state::nascom2c(machine_config &config)
-{
+MACHINE_CONFIG_START(nascom2_state::nascom2c)
nascom2(config);
m_maincpu->set_addrmap(AS_PROGRAM, &nascom2_state::nascom2c_mem);
m_ram->set_default_size("60K");
- subdevice<nasbus_device>(NASBUS_TAG)->ram_disable().set(FUNC(nascom2_state::ram_disable_cpm_w));
- subdevice<nasbus_slot_device>("nasbus1")->set_default_option("floppy");
-}
+ MCFG_DEVICE_MODIFY(NASBUS_TAG)
+ MCFG_NASBUS_RAM_DISABLE_HANDLER(WRITELINE(*this, nascom2_state, ram_disable_cpm_w))
+ MCFG_DEVICE_MODIFY("nasbus1")
+ MCFG_SLOT_DEFAULT_OPTION("floppy")
+MACHINE_CONFIG_END
//**************************************************************************
@@ -813,5 +845,5 @@ ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
COMP( 1978, nascom1, 0, 0, nascom1, nascom1, nascom1_state, init_nascom, "Nascom Microcomputers", "Nascom 1", MACHINE_NO_SOUND_HW )
-COMP( 1979, nascom2, 0, 0, nascom2, nascom2, nascom2_state, init_nascom, "Nascom Microcomputers", "Nascom 2", MACHINE_NO_SOUND_HW )
+COMP( 1979, nascom2, 0, 0, nascom2, nascom2, nascom2_state, init_nascom2, "Nascom Microcomputers", "Nascom 2", MACHINE_NO_SOUND_HW )
COMP( 1980, nascom2c, nascom2, 0, nascom2c, nascom2c, nascom2_state, init_nascom2c, "Nascom Microcomputers", "Nascom 2 (CP/M)", MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/nbmj8688.cpp b/src/mame/drivers/nbmj8688.cpp
index bbb4bbd7773..d4ebe4c45ed 100644
--- a/src/mame/drivers/nbmj8688.cpp
+++ b/src/mame/drivers/nbmj8688.cpp
@@ -2453,23 +2453,23 @@ READ8_MEMBER(nbmj8688_state::dipsw2_r)
return m_nb1413m3->dipsw2_r(space,offset);
}
-void nbmj8688_state::NBMJDRV_4096(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::NBMJDRV_4096)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 5000000); /* 5.00 MHz */
- m_maincpu->set_vblank_int("screen", FUNC(nbmj8688_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 5000000) /* 5.00 MHz */
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nbmj8688_state, irq0_line_hold)
NB1413M3(config, m_nb1413m3, 0);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 16, 240-1);
- screen.set_screen_update(FUNC(nbmj8688_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(nbmj8688_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(nbmj8688_state::mbmj8688_12bit), 4096);
@@ -2483,14 +2483,12 @@ void nbmj8688_state::NBMJDRV_4096(machine_config &config)
psg.port_b_read_callback().set(FUNC(nbmj8688_state::dipsw2_r)); // DIPSW-B read
psg.add_route(ALL_OUTPUTS, "speaker", 0.35);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void nbmj8688_state::NBMJDRV_256(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::NBMJDRV_256)
NBMJDRV_4096(config);
/* basic machine hardware */
@@ -2499,10 +2497,9 @@ void nbmj8688_state::NBMJDRV_256(machine_config &config)
subdevice<palette_device>("palette")->set_entries(256).set_init(FUNC(nbmj8688_state::mbmj8688_8bit));
MCFG_VIDEO_START_OVERRIDE(nbmj8688_state,mbmj8688_8bit)
-}
+MACHINE_CONFIG_END
-void nbmj8688_state::NBMJDRV_65536(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::NBMJDRV_65536)
NBMJDRV_4096(config);
/* basic machine hardware */
@@ -2511,20 +2508,20 @@ void nbmj8688_state::NBMJDRV_65536(machine_config &config)
subdevice<palette_device>("palette")->set_entries(65536).set_init(FUNC(nbmj8688_state::mbmj8688_16bit));
MCFG_VIDEO_START_OVERRIDE(nbmj8688_state,mbmj8688_hybrid_16bit)
-}
+MACHINE_CONFIG_END
// --------------------------------------------------------------------------------
-void nbmj8688_state::crystalg(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::crystalg)
NBMJDRV_256(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8688_state::secolove_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8688_state::crystalg_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(secolove_map)
+ MCFG_DEVICE_IO_MAP(crystalg_io_map)
m_nb1413m3->set_type(NB1413M3_CRYSTALG);
-}
+MACHINE_CONFIG_END
void nbmj8688_state::crystal2(machine_config &config)
{
@@ -2540,28 +2537,28 @@ void nbmj8688_state::nightlov(machine_config &config)
m_nb1413m3->set_type(NB1413M3_NIGHTLOV);
}
-void nbmj8688_state::apparel(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::apparel)
NBMJDRV_256(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8688_state::secolove_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8688_state::secolove_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(secolove_map)
+ MCFG_DEVICE_IO_MAP(secolove_io_map)
m_nb1413m3->set_type(NB1413M3_APPAREL);
-}
+MACHINE_CONFIG_END
-void nbmj8688_state::mbmj_h12bit(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::mbmj_h12bit)
NBMJDRV_4096(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8688_state::secolove_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8688_state::secolove_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(secolove_map)
+ MCFG_DEVICE_IO_MAP(secolove_io_map)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(nbmj8688_state,mbmj8688_hybrid_12bit)
-}
+MACHINE_CONFIG_END
void nbmj8688_state::citylove(machine_config &config)
{
@@ -2585,40 +2582,42 @@ void nbmj8688_state::secolove(machine_config &config)
}
/*Same as h12bit HW with different sound HW + NMI enable bit*/
-void nbmj8688_state::barline(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::barline)
mbmj_h12bit(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &nbmj8688_state::barline_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(barline_io_map)
m_nb1413m3->set_type(NB1413M3_BARLINE);
- YM3812(config.replace(), "psg", 20000000/8).add_route(ALL_OUTPUTS, "speaker", 0.35);
+ MCFG_DEVICE_REPLACE("psg", YM3812, 20000000/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.35)
config.device_remove("dac");
config.device_remove("vref");
-}
+MACHINE_CONFIG_END
-void nbmj8688_state::mbmj_p16bit(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::mbmj_p16bit)
NBMJDRV_65536(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8688_state::secolove_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8688_state::secolove_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(secolove_map)
+ MCFG_DEVICE_IO_MAP(secolove_io_map)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(nbmj8688_state,mbmj8688_pure_16bit)
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(nbmj8688_state::mbmj_p16bit_LCD)
-void nbmj8688_state::mbmj_p16bit_LCD(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 5000000); /* 5.00 MHz */
- m_maincpu->set_vblank_int("screen", FUNC(nbmj8688_state::irq0_line_hold));
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8688_state::secolove_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8688_state::p16bit_LCD_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 5000000) /* 5.00 MHz */
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nbmj8688_state, irq0_line_hold)
+ MCFG_DEVICE_PROGRAM_MAP(secolove_map)
+ MCFG_DEVICE_IO_MAP(secolove_io_map)
+ MCFG_DEVICE_IO_MAP(p16bit_LCD_io_map)
NB1413M3(config, m_nb1413m3, 0);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -2627,13 +2626,13 @@ void nbmj8688_state::mbmj_p16bit_LCD(machine_config &config)
PALETTE(config, "palette", FUNC(nbmj8688_state::mbmj8688_16bit), 65536);
config.set_default_layout(layout_nbmj8688);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 16, 240-1);
- screen.set_screen_update(FUNC(nbmj8688_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(nbmj8688_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette_lcd", FUNC(nbmj8688_state::mbmj8688_lcd), 2);
@@ -2646,8 +2645,8 @@ void nbmj8688_state::mbmj_p16bit_LCD(machine_config &config)
lcd0.set_visarea(0, 480-1, 0, 64-1);
lcd0.set_screen_update("lcdc0", FUNC(hd61830_device::screen_update));
lcd0.set_palette("palette_lcd");
- HD61830B(config, m_lcdc0, 5000000/2); // ???
- m_lcdc0->set_screen("lcd0");
+ MCFG_DEVICE_ADD("lcdc0", HD61830B, 5000000/2) // ???
+ MCFG_VIDEO_SET_SCREEN("lcd0")
screen_device &lcd1(SCREEN(config, "lcd1", SCREEN_TYPE_LCD));
lcd1.set_physical_aspect(15, 3);
@@ -2658,8 +2657,8 @@ void nbmj8688_state::mbmj_p16bit_LCD(machine_config &config)
lcd1.set_visarea(0, 480-1, 0, 64-1);
lcd1.set_screen_update("lcdc1", FUNC(hd61830_device::screen_update));
lcd1.set_palette("palette_lcd");
- HD61830B(config, m_lcdc1, 5000000/2); // ???
- m_lcdc1->set_screen("lcd1");
+ MCFG_DEVICE_ADD("lcdc1", HD61830B, 5000000/2) // ???
+ MCFG_VIDEO_SET_SCREEN("lcd1")
MCFG_VIDEO_START_OVERRIDE(nbmj8688_state,mbmj8688_pure_16bit_LCD)
@@ -2671,11 +2670,10 @@ void nbmj8688_state::mbmj_p16bit_LCD(machine_config &config)
psg.port_b_read_callback().set(FUNC(nbmj8688_state::dipsw2_r)); // DIPSW-B read
psg.add_route(ALL_OUTPUTS, "speaker", 0.35);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
void nbmj8688_state::bijokkoy(machine_config &config)
{
@@ -2733,16 +2731,16 @@ void nbmj8688_state::vipclub(machine_config &config)
m_nb1413m3->set_type(NB1413M3_VIPCLUB);
}
-void nbmj8688_state::seiha(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::seiha)
NBMJDRV_65536(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8688_state::secolove_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8688_state::seiha_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(secolove_map)
+ MCFG_DEVICE_IO_MAP(seiha_io_map)
m_nb1413m3->set_type(NB1413M3_SEIHA);
-}
+MACHINE_CONFIG_END
void nbmj8688_state::seiham(machine_config &config)
{
@@ -2751,39 +2749,39 @@ void nbmj8688_state::seiham(machine_config &config)
m_nb1413m3->set_type(NB1413M3_SEIHAM);
}
-void nbmj8688_state::mjgaiden(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::mjgaiden)
NBMJDRV_4096(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8688_state::ojousan_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8688_state::mjgaiden_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ojousan_map)
+ MCFG_DEVICE_IO_MAP(mjgaiden_io_map)
m_nb1413m3->set_type(NB1413M3_OJOUSAN);
-}
+MACHINE_CONFIG_END
-void nbmj8688_state::iemoto(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::iemoto)
NBMJDRV_65536(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8688_state::secolove_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8688_state::iemoto_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(secolove_map)
+ MCFG_DEVICE_IO_MAP(iemoto_io_map)
m_nb1413m3->set_type(NB1413M3_IEMOTO);
-}
+MACHINE_CONFIG_END
-void nbmj8688_state::ojousan(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::ojousan)
NBMJDRV_65536(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8688_state::ojousan_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8688_state::iemoto_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ojousan_map)
+ MCFG_DEVICE_IO_MAP(iemoto_io_map)
m_nb1413m3->set_type(NB1413M3_OJOUSAN);
-}
+MACHINE_CONFIG_END
void nbmj8688_state::ojousanm(machine_config &config)
{
@@ -2792,13 +2790,13 @@ void nbmj8688_state::ojousanm(machine_config &config)
m_nb1413m3->set_type(NB1413M3_OJOUSANM);
}
-void nbmj8688_state::swinggal(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::swinggal)
ojousan(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8688_state::secolove_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8688_state::iemoto_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(secolove_map)
+ MCFG_DEVICE_IO_MAP(iemoto_io_map)
+MACHINE_CONFIG_END
void nbmj8688_state::iemotom(machine_config &config)
{
@@ -2828,14 +2826,14 @@ void nbmj8688_state::korinaim(machine_config &config)
m_nb1413m3->set_type(NB1413M3_KORINAIM);
}
-void nbmj8688_state::mbmj_p12bit(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::mbmj_p12bit)
NBMJDRV_4096(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8688_state::mjsikaku_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8688_state::kaguya_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mjsikaku_map)
+ MCFG_DEVICE_IO_MAP(kaguya_io_map)
+MACHINE_CONFIG_END
void nbmj8688_state::kaguya(machine_config &config)
{
@@ -2872,40 +2870,41 @@ void nbmj8688_state::idhimitu(machine_config &config)
m_nb1413m3->set_type(NB1413M3_IDHIMITU);
}
-void nbmj8688_state::mjsikaku(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::mjsikaku)
NBMJDRV_4096(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8688_state::mjsikaku_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8688_state::mjsikaku_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mjsikaku_map)
+ MCFG_DEVICE_IO_MAP(mjsikaku_io_map)
m_nb1413m3->set_type(NB1413M3_MJSIKAKU);
/* sound hardware */
- YM3812(config.replace(), "psg", 20000000/8).add_route(ALL_OUTPUTS, "speaker", 0.7);
-}
+ MCFG_DEVICE_REPLACE("psg", YM3812, 20000000/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.7)
+MACHINE_CONFIG_END
-void nbmj8688_state::mmsikaku(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::mmsikaku)
NBMJDRV_4096(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8688_state::secolove_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8688_state::mmsikaku_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(secolove_map)
+ MCFG_DEVICE_IO_MAP(mmsikaku_io_map)
m_nb1413m3->set_type(NB1413M3_MMSIKAKU);
-}
+MACHINE_CONFIG_END
-void nbmj8688_state::otonano(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8688_state::otonano)
mjsikaku(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &nbmj8688_state::otonano_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(otonano_io_map)
m_nb1413m3->set_type(NB1413M3_OTONANO);
-}
+MACHINE_CONFIG_END
void nbmj8688_state::mjcamera(machine_config &config)
{
diff --git a/src/mame/drivers/nbmj8891.cpp b/src/mame/drivers/nbmj8891.cpp
index 760357e048e..233225b3b3e 100644
--- a/src/mame/drivers/nbmj8891.cpp
+++ b/src/mame/drivers/nbmj8891.cpp
@@ -2189,26 +2189,26 @@ static INPUT_PORTS_START( taiwanmb )
INPUT_PORTS_END
-void nbmj8891_state::gionbana(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::gionbana)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 20000000/4); /* 5.00 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8891_state::gionbana_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8891_state::gionbana_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(nbmj8891_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 20000000/4) /* 5.00 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(gionbana_map)
+ MCFG_DEVICE_IO_MAP(gionbana_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nbmj8891_state, irq0_line_hold)
NB1413M3(config, m_nb1413m3, 0, NB1413M3_GIONBANA);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 8, 248-1);
- m_screen->set_screen_update(FUNC(nbmj8891_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 8, 248-1)
+ MCFG_SCREEN_UPDATE_DRIVER(nbmj8891_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
@@ -2216,32 +2216,31 @@ void nbmj8891_state::gionbana(machine_config &config)
YM3812(config, "fmsnd", 2500000).add_route(ALL_OUTPUTS, "speaker", 0.5);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.37); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.37) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void nbmj8891_state::mgion(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::mgion)
gionbana(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8891_state::mgion_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8891_state::mgion_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mgion_map)
+ MCFG_DEVICE_IO_MAP(mgion_io_map)
m_nb1413m3->set_type(NB1413M3_MGION);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void nbmj8891_state::omotesnd(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::omotesnd)
gionbana(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8891_state::omotesnd_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8891_state::omotesnd_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(omotesnd_map)
+ MCFG_DEVICE_IO_MAP(omotesnd_io_map)
m_nb1413m3->set_type(NB1413M3_OMOTESND);
@@ -2252,7 +2251,7 @@ void nbmj8891_state::omotesnd(machine_config &config)
fmsnd.port_a_read_callback().set_ioport("DSWA");
fmsnd.port_b_read_callback().set_ioport("DSWB");
fmsnd.add_route(ALL_OUTPUTS, "speaker", 0.35);
-}
+MACHINE_CONFIG_END
void nbmj8891_state::abunai(machine_config &config)
{
@@ -2262,74 +2261,76 @@ void nbmj8891_state::abunai(machine_config &config)
}
/* NBMJDRV2 */
-void nbmj8891_state::mjcamerb(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::mjcamerb)
gionbana(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &nbmj8891_state::hanamomo_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(hanamomo_io_map)
m_nb1413m3->set_type(NB1413M3_MJCAMERB);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- m_screen->set_visarea(0, 512-1, 16, 240-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,_1layer)
-}
+MACHINE_CONFIG_END
-void nbmj8891_state::mmcamera(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::mmcamera)
gionbana(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &nbmj8891_state::hanamomo_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(hanamomo_io_map)
m_nb1413m3->set_type(NB1413M3_MMCAMERA);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- m_screen->set_visarea(0, 512-1, 16, 240-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,_1layer)
-}
+MACHINE_CONFIG_END
-void nbmj8891_state::hanamomo(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::hanamomo)
gionbana(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8891_state::hanamomo_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8891_state::hanamomo_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hanamomo_map)
+ MCFG_DEVICE_IO_MAP(hanamomo_io_map)
m_nb1413m3->set_type(NB1413M3_HANAMOMO);
/* video hardware */
- m_screen->set_visarea(0, 512-1, 16, 240-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,_1layer)
-}
+MACHINE_CONFIG_END
-void nbmj8891_state::msjiken(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::msjiken)
hanamomo(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8891_state::gionbana_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8891_state::msjiken_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(gionbana_map)
+ MCFG_DEVICE_IO_MAP(msjiken_io_map)
m_nb1413m3->set_type(NB1413M3_MSJIKEN);
-}
+MACHINE_CONFIG_END
/* NBMJDRV3 */
-void nbmj8891_state::telmahjn(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::telmahjn)
gionbana(config);
m_nb1413m3->set_type(NB1413M3_TELMAHJN);
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,_1layer)
-}
+MACHINE_CONFIG_END
void nbmj8891_state::mgmen89(machine_config &config)
{
@@ -2339,8 +2340,7 @@ void nbmj8891_state::mgmen89(machine_config &config)
}
/* NBMJDRV4 */
-void nbmj8891_state::mjfocus(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::mjfocus)
gionbana(config);
/* basic machine hardware */
@@ -2349,7 +2349,7 @@ void nbmj8891_state::mjfocus(machine_config &config)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,_1layer)
-}
+MACHINE_CONFIG_END
void nbmj8891_state::pairsnb(machine_config &config)
{
@@ -2366,105 +2366,105 @@ void nbmj8891_state::pairsten(machine_config &config)
}
/* NBMJDRV5 */
-void nbmj8891_state::mjnanpas(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::mjnanpas)
gionbana(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8891_state::club90s_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(club90s_map)
m_nb1413m3->set_type(NB1413M3_MJNANPAS);
-}
+MACHINE_CONFIG_END
-void nbmj8891_state::maiko(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::maiko)
mjnanpas(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8891_state::maiko_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8891_state::maiko_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(maiko_map)
+ MCFG_DEVICE_IO_MAP(maiko_io_map)
m_nb1413m3->set_type(NB1413M3_MAIKO);
-}
+MACHINE_CONFIG_END
-void nbmj8891_state::mmaiko(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::mmaiko)
maiko(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8891_state::mmaiko_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mmaiko_map)
m_nb1413m3->set_type(NB1413M3_MMAIKO);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void nbmj8891_state::lovehous(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::lovehous)
mjnanpas(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8891_state::lovehous_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8891_state::lovehous_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(lovehous_map)
+ MCFG_DEVICE_IO_MAP(lovehous_io_map)
m_nb1413m3->set_type(NB1413M3_LOVEHOUS);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void nbmj8891_state::hanaoji(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::hanaoji)
maiko(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8891_state::hanaoji_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hanaoji_map)
m_nb1413m3->set_type(NB1413M3_HANAOJI);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void nbmj8891_state::hnxmasev(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::hnxmasev)
maiko(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8891_state::hnxmasev_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8891_state::maiko_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hnxmasev_map)
+ MCFG_DEVICE_IO_MAP(maiko_io_map)
+MACHINE_CONFIG_END
-void nbmj8891_state::hnageman(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::hnageman)
maiko(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8891_state::hnageman_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8891_state::maiko_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hnageman_map)
+ MCFG_DEVICE_IO_MAP(maiko_io_map)
+MACHINE_CONFIG_END
-void nbmj8891_state::scandal(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::scandal)
hanamomo(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8891_state::scandalm_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8891_state::scandal_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scandalm_map)
+ MCFG_DEVICE_IO_MAP(scandal_io_map)
m_nb1413m3->set_type(NB1413M3_SCANDAL);
-}
+MACHINE_CONFIG_END
-void nbmj8891_state::bananadr(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::bananadr)
mjnanpas(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8891_state::scandalm_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8891_state::bananadr_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scandalm_map)
+ MCFG_DEVICE_IO_MAP(bananadr_io_map)
m_nb1413m3->set_type(NB1413M3_BANANADR);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
void nbmj8891_state::club90s(machine_config &config)
{
@@ -2488,20 +2488,21 @@ void nbmj8891_state::chinmoku(machine_config &config)
}
/* NBMJDRV6 */
-void nbmj8891_state::mjfocusm(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::mjfocusm)
gionbana(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8891_state::scandalm_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8891_state::scandalm_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scandalm_map)
+ MCFG_DEVICE_IO_MAP(scandalm_io_map)
m_nb1413m3->set_type(NB1413M3_MJFOCUSM);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- m_screen->set_visarea(0, 512-1, 16, 240-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,_1layer)
/* sound hardware */
@@ -2509,7 +2510,7 @@ void nbmj8891_state::mjfocusm(machine_config &config)
fmsnd.port_a_read_callback().set_ioport("DSWA");
fmsnd.port_b_read_callback().set_ioport("DSWB");
fmsnd.add_route(ALL_OUTPUTS, "speaker", 0.7);
-}
+MACHINE_CONFIG_END
void nbmj8891_state::scandalm(machine_config &config)
{
@@ -2518,21 +2519,22 @@ void nbmj8891_state::scandalm(machine_config &config)
m_nb1413m3->set_type(NB1413M3_SCANDALM);
}
-void nbmj8891_state::taiwanmb(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8891_state::taiwanmb)
gionbana(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8891_state::taiwanmb_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8891_state::taiwanmb_io_map);
-// m_maincpu->set_vblank_int("screen", FUNC(nbmj8891_state::irq0_line_hold));
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(taiwanmb_map)
+ MCFG_DEVICE_IO_MAP(taiwanmb_io_map)
+// MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nbmj8891_state, irq0_line_hold)
m_nb1413m3->set_type(NB1413M3_TAIWANMB);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- m_screen->set_visarea(0, 512-1, 16, 240-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,_1layer)
/* sound hardware */
@@ -2540,7 +2542,7 @@ void nbmj8891_state::taiwanmb(machine_config &config)
fmsnd.port_a_read_callback().set_ioport("DSWA");
fmsnd.port_b_read_callback().set_ioport("DSWB");
fmsnd.add_route(ALL_OUTPUTS, "speaker", 0.7);
-}
+MACHINE_CONFIG_END
ROM_START( gionbana )
diff --git a/src/mame/drivers/nbmj8900.cpp b/src/mame/drivers/nbmj8900.cpp
index 6f6d794fc0f..1280f139ddc 100644
--- a/src/mame/drivers/nbmj8900.cpp
+++ b/src/mame/drivers/nbmj8900.cpp
@@ -304,48 +304,48 @@ INPUT_PORTS_END
-void nbmj8900_state::ohpaipee(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8900_state::ohpaipee)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 20000000/4); /* 5.00 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8900_state::ohpaipee_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8900_state::ohpaipee_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(nbmj8900_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 20000000/4) /* 5.00 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(ohpaipee_map)
+ MCFG_DEVICE_IO_MAP(ohpaipee_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nbmj8900_state, irq0_line_hold)
NB1413M3(config, m_nb1413m3, 0, NB1413M3_OHPAIPEE);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 8, 248-1);
- m_screen->set_screen_update(FUNC(nbmj8900_state::screen_update));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 8, 248-1)
+ MCFG_SCREEN_UPDATE_DRIVER(nbmj8900_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, "palette").set_entries(256);
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- YM3812(config, "ymsnd", 2500000).add_route(ALL_OUTPUTS, "speaker", 0.7);
+ MCFG_DEVICE_ADD("ymsnd", YM3812, 2500000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.7)
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.42); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.42) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void nbmj8900_state::togenkyo(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8900_state::togenkyo)
ohpaipee(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8900_state::togenkyo_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(togenkyo_map)
m_nb1413m3->set_type(NB1413M3_TOGENKYO);
-}
+MACHINE_CONFIG_END
ROM_START( ohpaipee )
diff --git a/src/mame/drivers/nbmj8991.cpp b/src/mame/drivers/nbmj8991.cpp
index c42bd8cae89..5e0a6d0f0e2 100644
--- a/src/mame/drivers/nbmj8991.cpp
+++ b/src/mame/drivers/nbmj8991.cpp
@@ -1327,77 +1327,77 @@ static INPUT_PORTS_START( av2mj2rg )
INPUT_PORTS_END
-void nbmj8991_state::nbmjdrv1(machine_config &config) // galkoku
-{
+MACHINE_CONFIG_START(nbmj8991_state::nbmjdrv1) // galkoku
+
/* basic machine hardware */
- Z80(config, m_maincpu, 25000000/5); /* 5.00 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8991_state::galkoku_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8991_state::galkoku_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(nbmj8991_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 25000000/5) /* 5.00 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(galkoku_map)
+ MCFG_DEVICE_IO_MAP(galkoku_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nbmj8991_state, irq0_line_hold)
NB1413M3(config, m_nb1413m3, 0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(1024, 512);
- m_screen->set_visarea(0, 640-1, 0, 240-1);
- m_screen->set_screen_update(FUNC(nbmj8991_state::screen_update_type1));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(1024, 512)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(nbmj8991_state, screen_update_type1)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
YM3812(config, "fmsnd", 25000000/10).add_route(ALL_OUTPUTS, "speaker", 0.7);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void nbmj8991_state::nbmjdrv2(machine_config &config) // pstadium
-{
+MACHINE_CONFIG_START(nbmj8991_state::nbmjdrv2) // pstadium
+
/* basic machine hardware */
- Z80(config, m_maincpu, 6000000/2); /* 3.00 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8991_state::pstadium_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8991_state::pstadium_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(nbmj8991_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 6000000/2) /* 3.00 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(pstadium_map)
+ MCFG_DEVICE_IO_MAP(pstadium_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nbmj8991_state, irq0_line_hold)
NB1413M3(config, m_nb1413m3, 0);
- Z80(config, m_audiocpu, 4000000); /* 4.00 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &nbmj8991_state::nbmj8991_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &nbmj8991_state::nbmj8991_sound_io_map);
- m_audiocpu->set_periodic_int(FUNC(nbmj8991_state::irq0_line_hold), attotime::from_hz(128*60)); // ?
+ MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* 4.00 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(nbmj8991_sound_map)
+ MCFG_DEVICE_IO_MAP(nbmj8991_sound_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(nbmj8991_state, irq0_line_hold, 128*60) // ?
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(1024, 512);
- m_screen->set_visarea(0, 640-1, 0, 240-1);
- m_screen->set_screen_update(FUNC(nbmj8991_state::screen_update_type2));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(1024, 512)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(nbmj8991_state, screen_update_type2)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
GENERIC_LATCH_8(config, m_soundlatch);
- YM3812(config, "fmsnd", 25000000/6.25).add_route(ALL_OUTPUTS, "speaker", 0.7);
+ MCFG_DEVICE_ADD("fmsnd", YM3812, 25000000/6.25)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.7)
- DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
void nbmj8991_state::nbmjdrv3(machine_config &config)
@@ -1422,39 +1422,39 @@ void nbmj8991_state::galkoku(machine_config &config)
}
-void nbmj8991_state::galkaika(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8991_state::galkaika)
nbmjdrv1(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8991_state::galkaika_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(galkaika_map)
m_nb1413m3->set_type(NB1413M3_GALKAIKA);
-}
+MACHINE_CONFIG_END
-void nbmj8991_state::tokyogal(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8991_state::tokyogal)
nbmjdrv1(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8991_state::tokyogal_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tokyogal_map)
m_nb1413m3->set_type(NB1413M3_TOKYOGAL);
-}
+MACHINE_CONFIG_END
-void nbmj8991_state::tokimbsj(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8991_state::tokimbsj)
nbmjdrv1(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8991_state::galkaika_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(galkaika_map)
m_nb1413m3->set_type(NB1413M3_TOKIMBSJ);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
void nbmj8991_state::mcontest(machine_config &config)
@@ -1473,17 +1473,17 @@ void nbmj8991_state::uchuuai(machine_config &config)
}
-void nbmj8991_state::hyouban(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8991_state::hyouban)
nbmjdrv3(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &nbmj8991_state::hyouban_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(hyouban_io_map)
m_nb1413m3->set_type(NB1413M3_HYOUBAN);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
void nbmj8991_state::pstadium(machine_config &config)
@@ -1494,26 +1494,26 @@ void nbmj8991_state::pstadium(machine_config &config)
}
-void nbmj8991_state::triplew1(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8991_state::triplew1)
nbmjdrv2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8991_state::triplew1_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(triplew1_map)
m_nb1413m3->set_type(NB1413M3_TRIPLEW1);
-}
+MACHINE_CONFIG_END
-void nbmj8991_state::triplew2(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8991_state::triplew2)
nbmjdrv2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8991_state::triplew2_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(triplew2_map)
m_nb1413m3->set_type(NB1413M3_TRIPLEW2);
-}
+MACHINE_CONFIG_END
void nbmj8991_state::ntopstar(machine_config &config)
@@ -1524,15 +1524,15 @@ void nbmj8991_state::ntopstar(machine_config &config)
}
-void nbmj8991_state::mjlstory(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8991_state::mjlstory)
nbmjdrv2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8991_state::mjlstory_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mjlstory_map)
m_nb1413m3->set_type(NB1413M3_MJLSTORY);
-}
+MACHINE_CONFIG_END
void nbmj8991_state::vanilla(machine_config &config)
@@ -1543,15 +1543,14 @@ void nbmj8991_state::vanilla(machine_config &config)
}
-void nbmj8991_state::finalbny(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8991_state::finalbny)
nbmjdrv2(config);
/* basic machine hardware */
m_nb1413m3->set_type(NB1413M3_FINALBNY);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
void nbmj8991_state::qmhayaku(machine_config &config)
@@ -1562,41 +1561,41 @@ void nbmj8991_state::qmhayaku(machine_config &config)
}
-void nbmj8991_state::mjgottub(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8991_state::mjgottub)
nbmjdrv2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8991_state::triplew1_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(triplew1_map)
m_nb1413m3->set_type(NB1413M3_MJGOTTUB);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void nbmj8991_state::av2mj1bb(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8991_state::av2mj1bb)
nbmjdrv2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8991_state::av2mj1bb_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8991_state::av2mj1bb_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(av2mj1bb_map)
+ MCFG_DEVICE_IO_MAP(av2mj1bb_io_map)
m_nb1413m3->set_type(NB1413M3_AV2MJ1BB);
-}
+MACHINE_CONFIG_END
-void nbmj8991_state::av2mj2rg(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj8991_state::av2mj2rg)
nbmjdrv2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8991_state::av2mj2rg_map);
- m_maincpu->set_addrmap(AS_IO, &nbmj8991_state::av2mj1bb_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(av2mj2rg_map)
+ MCFG_DEVICE_IO_MAP(av2mj1bb_io_map)
m_nb1413m3->set_type(NB1413M3_AV2MJ2RG);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/nbmj9195.cpp b/src/mame/drivers/nbmj9195.cpp
index 6d113bd3ddf..8c1a270fe72 100644
--- a/src/mame/drivers/nbmj9195.cpp
+++ b/src/mame/drivers/nbmj9195.cpp
@@ -2507,8 +2507,8 @@ static const z80_daisy_config daisy_chain_sound[] =
m_maincpu->out_pd_callback().set(FUNC(nbmj9195_state::clutsel_w)); \
m_maincpu->out_pe_callback().set(FUNC(nbmj9195_state::outcoin_flag_w));
-void nbmj9195_state::NBMJDRV1_base(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::NBMJDRV1_base)
+
/* basic machine hardware */
TMPZ84C011(config, m_maincpu, 12000000/2); /* TMPZ84C011, 6.00 MHz */
m_maincpu->set_daisy_config(daisy_chain_main);
@@ -2536,33 +2536,32 @@ void nbmj9195_state::NBMJDRV1_base(machine_config &config)
m_screen->set_palette(m_palette);
m_screen->screen_vblank().set(m_maincpu, FUNC(tmpz84c011_device::trg1)).invert();
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_PALETTE_ADD(m_palette, 256)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
GENERIC_LATCH_8(config, m_soundlatch);
- YM3812(config, "ymsnd", 4000000).add_route(ALL_OUTPUTS, "speaker", 0.7);
+ MCFG_DEVICE_ADD("ymsnd", YM3812, 4000000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.7)
- DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void nbmj9195_state::NBMJDRV1(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::NBMJDRV1)
NBMJDRV1_base(config);
/* basic machine hardware */
OTHERS_TMZ84C011_MAIN_PORTS
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::NBMJDRV2(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::NBMJDRV2)
NBMJDRV1_base(config);
/* basic machine hardware */
@@ -2570,64 +2569,59 @@ void nbmj9195_state::NBMJDRV2(machine_config &config)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(nbmj9195_state,_1layer)
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::NBMJDRV3(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::NBMJDRV3)
NBMJDRV1_base(config);
/* basic machine hardware */
MSCOUTM_TMZ84C011_MAIN_PORTS
/* video hardware */
- m_palette->set_entries(512);
+ MCFG_DEVICE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(512)
MCFG_VIDEO_START_OVERRIDE(nbmj9195_state,nb22090)
-}
+MACHINE_CONFIG_END
//-------------------------------------------------------------------------
-void nbmj9195_state::mjuraden(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::mjuraden)
NBMJDRV1(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &nbmj9195_state::mjuraden_map);
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::mjuraden_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::koinomp(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::koinomp)
NBMJDRV1(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &nbmj9195_state::koinomp_map);
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::koinomp_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::patimono(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::patimono)
NBMJDRV1(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::patimono_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::janbari(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::janbari)
patimono(config);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::mmehyou(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::mmehyou)
NBMJDRV1(config);
/* basic machine hardware */
@@ -2635,227 +2629,205 @@ void nbmj9195_state::mmehyou(machine_config &config)
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::mmehyou_io_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::ultramhm(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::ultramhm)
koinomp(config);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::gal10ren(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::gal10ren)
NBMJDRV1(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::gal10ren_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::renaiclb(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::renaiclb)
NBMJDRV1(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::renaiclb_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::mjlaman(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::mjlaman)
NBMJDRV1(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::mjlaman_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::mkeibaou(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::mkeibaou)
NBMJDRV1(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::mkeibaou_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::pachiten(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::pachiten)
NBMJDRV1(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::pachiten_io_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::sailorws(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::sailorws)
NBMJDRV1(config);
/* basic machine hardware */
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::sailorwr(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::sailorwr)
NBMJDRV1(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::sailorwr_io_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::psailor1(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::psailor1)
NBMJDRV1(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::psailor1_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::psailor2(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::psailor2)
NBMJDRV1(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::psailor2_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::otatidai(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::otatidai)
NBMJDRV1(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::otatidai_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::yosimoto(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::yosimoto)
NBMJDRV1(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::yosimoto_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::yosimotm(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::yosimotm)
NBMJDRV1(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::yosimotm_io_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::jituroku(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::jituroku)
NBMJDRV1(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::jituroku_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::ngpgal(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::ngpgal)
NBMJDRV2(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &nbmj9195_state::ngpgal_map);
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::ngpgal_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::mjgottsu(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::mjgottsu)
NBMJDRV2(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &nbmj9195_state::ngpgal_map);
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::mjgottsu_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::bakuhatu(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::bakuhatu)
NBMJDRV2(config);
/* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
m_maincpu->set_addrmap(AS_PROGRAM, &nbmj9195_state::ngpgal_map);
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::mjgottsu_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::cmehyou(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::cmehyou)
NBMJDRV2(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &nbmj9195_state::ngpgal_map);
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::cmehyou_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::mjkoiura(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::mjkoiura)
NBMJDRV2(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &nbmj9195_state::mjuraden_map);
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::mjkoiura_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::mkoiuraa(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::mkoiuraa)
NBMJDRV2(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &nbmj9195_state::mjuraden_map);
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::mkoiuraa_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::mscoutm(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::mscoutm)
NBMJDRV3(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &nbmj9195_state::mscoutm_map);
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::mscoutm_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::imekura(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::imekura)
NBMJDRV3(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &nbmj9195_state::mjegolf_map);
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::imekura_io_map);
-}
+MACHINE_CONFIG_END
-void nbmj9195_state::mjegolf(machine_config &config)
-{
+MACHINE_CONFIG_START(nbmj9195_state::mjegolf)
NBMJDRV3(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &nbmj9195_state::mjegolf_map);
m_maincpu->set_addrmap(AS_IO, &nbmj9195_state::mjegolf_io_map);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/nc.cpp b/src/mame/drivers/nc.cpp
index a6be3546a7b..48f562c3dee 100644
--- a/src/mame/drivers/nc.cpp
+++ b/src/mame/drivers/nc.cpp
@@ -1378,35 +1378,36 @@ INPUT_PORTS_END
MACHINE_CONFIG_START(nc_state::nc_base)
/* basic machine hardware */
- Z80(config, m_maincpu, /*6000000*/ 4606000); /* Russell Marks says this is more accurate */
- m_maincpu->set_addrmap(AS_PROGRAM, &nc_state::nc_map);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD("maincpu", Z80, /*6000000*/ 4606000) /* Russell Marks says this is more accurate */
+ MCFG_DEVICE_PROGRAM_MAP(nc_map)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(nc_state::nc_colours), NC_NUM_COLOURS);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beeper1, 0).add_route(ALL_OUTPUTS, "mono", 0.50);
- BEEP(config, m_beeper2, 0).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("beep.1", BEEP, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MCFG_DEVICE_ADD("beep.2", BEEP, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* printer */
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(nc_state::write_centronics_busy));
+ MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, nc_state, write_centronics_busy))
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
/* uart */
I8251(config, m_uart, 0);
- clock_device &uart_clock(CLOCK(config, "uart_clock", 19200));
- uart_clock.signal_handler().set(FUNC(nc_state::write_uart_clock));
+ MCFG_DEVICE_ADD("uart_clock", CLOCK, 19200)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, nc_state, write_uart_clock))
/* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cardslot", generic_plain_slot, nullptr)
@@ -1418,23 +1419,24 @@ MACHINE_CONFIG_START(nc_state::nc_base)
NVRAM(config, "nvram", nvram_device::DEFAULT_NONE);
/* dummy timer */
- TIMER(config, "dummy_timer").configure_periodic(FUNC(nc_state::dummy_timer_callback), attotime::from_hz(50));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("dummy_timer", nc_state, dummy_timer_callback, attotime::from_hz(50))
MACHINE_CONFIG_END
-void nc100_state::nc100(machine_config &config)
-{
+MACHINE_CONFIG_START(nc100_state::nc100)
nc_base(config);
- m_maincpu->set_addrmap(AS_IO, &nc100_state::nc100_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(nc100_io)
/* video hardware */
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_size(480, 64);
- screen.set_visarea(0, 480-1, 0, 64-1);
- screen.set_screen_update(FUNC(nc100_state::screen_update_nc100));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(480, 64)
+ MCFG_SCREEN_VISIBLE_AREA(0, 480-1, 0, 64-1)
+ MCFG_SCREEN_UPDATE_DRIVER(nc100_state, screen_update_nc100)
/* printer */
- m_centronics->ack_handler().set(FUNC(nc100_state::write_nc100_centronics_ack));
+ MCFG_DEVICE_MODIFY("centronics")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, nc100_state, write_nc100_centronics_ack))
/* uart */
m_uart->rxrdy_handler().set(FUNC(nc100_state::nc100_rxrdy_callback));
@@ -1443,7 +1445,7 @@ void nc100_state::nc100(machine_config &config)
/* rtc */
tc8521_device &rtc(TC8521(config, "rtc", XTAL(32'768)));
rtc.out_alarm_callback().set(FUNC(nc100_state::nc100_tc8521_alarm_callback));
-}
+MACHINE_CONFIG_END
static const floppy_format_type ibmpc_floppy_formats[] = {
FLOPPY_PC_FORMAT,
@@ -1456,24 +1458,25 @@ static void ibmpc_floppies(device_slot_interface &device)
device.option_add("525dd", FLOPPY_525_DD);
}
-void nc200_state::nc200(machine_config &config)
-{
+MACHINE_CONFIG_START(nc200_state::nc200)
nc_base(config);
- m_maincpu->set_addrmap(AS_IO, &nc200_state::nc200_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(nc200_io)
/* video hardware */
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_size(NC200_SCREEN_WIDTH, NC200_SCREEN_HEIGHT);
- screen.set_visarea(0, NC200_SCREEN_WIDTH-1, 0, NC200_SCREEN_HEIGHT-1);
- screen.set_screen_update(FUNC(nc200_state::screen_update_nc200));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(NC200_SCREEN_WIDTH, NC200_SCREEN_HEIGHT)
+ MCFG_SCREEN_VISIBLE_AREA(0, NC200_SCREEN_WIDTH-1, 0, NC200_SCREEN_HEIGHT-1)
+ MCFG_SCREEN_UPDATE_DRIVER(nc200_state, screen_update_nc200)
palette_device &palette(*subdevice<palette_device>("palette"));
palette.set_entries(NC200_NUM_COLOURS);
palette.set_init(FUNC(nc200_state::nc_colours));
/* printer */
- m_centronics->ack_handler().set(FUNC(nc200_state::write_nc200_centronics_ack));
+ MCFG_DEVICE_MODIFY("centronics")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, nc200_state, write_nc200_centronics_ack))
/* uart */
m_uart->rxrdy_handler().set(FUNC(nc200_state::nc200_rxrdy_callback));
@@ -1481,14 +1484,14 @@ void nc200_state::nc200(machine_config &config)
UPD765A(config, m_fdc, 8'000'000, true, true);
m_fdc->intrq_wr_callback().set(FUNC(nc200_state::nc200_fdc_interrupt));
- FLOPPY_CONNECTOR(config, "upd765:0", ibmpc_floppies, "525dd", ibmpc_floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765:1", ibmpc_floppies, "525dd", ibmpc_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("upd765:0", ibmpc_floppies, "525dd", ibmpc_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765:1", ibmpc_floppies, "525dd", ibmpc_floppy_formats)
- MC146818(config, "mc", 4.194304_MHz_XTAL);
+ MCFG_DEVICE_ADD("mc", MC146818, 4.194304_MHz_XTAL)
/* internal ram */
m_ram->set_default_size("128K");
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/neogeo.cpp b/src/mame/drivers/neogeo.cpp
index 3832b156820..a472b602d20 100644
--- a/src/mame/drivers/neogeo.cpp
+++ b/src/mame/drivers/neogeo.cpp
@@ -572,8 +572,6 @@ public:
}
// mainboard configurations
- void cartslot_config(machine_config &config, unsigned count);
- void cartslot_fixed(machine_config &config, char const *dflt);
void mv1fz(machine_config &config);
// fixed software configurations
@@ -1593,6 +1591,7 @@ void mvs_state::machine_start()
ngarcade_base_state::machine_start();
m_sprgen->m_fixed_layer_bank_type = 0;
+ m_sprgen->set_screen(m_screen);
m_curr_slot = -1;
set_slot_idx(0);
@@ -1908,8 +1907,8 @@ INPUT_CHANGED_MEMBER(aes_base_state::aes_jp1)
*
*************************************/
-void neogeo_base_state::neogeo_base(machine_config &config)
-{
+MACHINE_CONFIG_START(neogeo_base_state::neogeo_base)
+
/* basic machine hardware */
M68000(config, m_maincpu, NEOGEO_MAIN_CPU_CLOCK);
@@ -1928,14 +1927,14 @@ void neogeo_base_state::neogeo_base(machine_config &config)
/* video hardware */
config.set_default_layout(layout_neogeo);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(NEOGEO_PIXEL_CLOCK, NEOGEO_HTOTAL, NEOGEO_HBEND, NEOGEO_HBSTART, NEOGEO_VTOTAL, NEOGEO_VBEND, NEOGEO_VBSTART);
- m_screen->set_screen_update(FUNC(neogeo_base_state::screen_update));
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_RAW_PARAMS(NEOGEO_PIXEL_CLOCK, NEOGEO_HTOTAL, NEOGEO_HBEND, NEOGEO_HBSTART, NEOGEO_VTOTAL, NEOGEO_VBEND, NEOGEO_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(neogeo_base_state, screen_update)
/* 4096 colors * two banks * normal and shadow */
- PALETTE(config, m_palette, palette_device::BLACK, 4096*2*2);
+ MCFG_DEVICE_ADD(m_palette, PALETTE, palette_device::BLACK, 4096*2*2)
- NEOGEO_SPRITE_OPTIMZIED(config, m_sprgen, 0).set_screen(m_screen);
+ MCFG_DEVICE_ADD(m_sprgen, NEOGEO_SPRITE_OPTIMZIED, 0)
/* audio hardware */
INPUT_MERGER_ALL_HIGH(config, m_audionmi);
@@ -1949,11 +1948,10 @@ void neogeo_base_state::neogeo_base(machine_config &config)
YM2610(config, m_ym, NEOGEO_YM2610_CLOCK);
m_ym->irq_handler().set_inputline(m_audiocpu, 0);
-}
+MACHINE_CONFIG_END
-void neogeo_base_state::neogeo_stereo(machine_config &config)
-{
+MACHINE_CONFIG_START(neogeo_base_state::neogeo_stereo)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
@@ -1961,7 +1959,7 @@ void neogeo_base_state::neogeo_stereo(machine_config &config)
m_ym->add_route(0, "rspeaker", 0.28);
m_ym->add_route(1, "lspeaker", 0.98);
m_ym->add_route(2, "rspeaker", 0.98);
-}
+MACHINE_CONFIG_END
void ngarcade_base_state::neogeo_arcade(machine_config &config)
@@ -1981,129 +1979,134 @@ void ngarcade_base_state::neogeo_arcade(machine_config &config)
}
-void ngarcade_base_state::neogeo_mono(machine_config &config)
-{
+MACHINE_CONFIG_START(ngarcade_base_state::neogeo_mono)
SPEAKER(config, "speaker").front_center();
m_ym->add_route(0, "speaker", 0.28);
m_ym->add_route(1, "speaker", 0.49);
m_ym->add_route(2, "speaker", 0.49);
-}
+MACHINE_CONFIG_END
+
// configurable slot
-void mvs_state::cartslot_config(machine_config &config, unsigned count)
-{
- for (unsigned i = 0; i < count; i++)
- NEOGEO_CART_SLOT(config, m_slots[i], neogeo_cart, nullptr);
-}
+#define NEOGEO_CONFIG_CARTSLOT(_tag) \
+ MCFG_NEOGEO_CARTRIDGE_ADD(_tag, neogeo_cart, nullptr)
-void mvs_led_state::mv1(machine_config &config)
-{
+// non-configurable slot (to be used for non-softlist sets, until we introduce some 'template' concept)
+// a single cart in slot 1, with pre-defined cart type
+#define NEOGEO_CONFIG_ONE_FIXED_CARTSLOT(_default) \
+ MCFG_NEOGEO_CARTRIDGE_ADD("cslot1", neogeo_cart, _default) \
+ MCFG_SET_IMAGE_LOADABLE(false)
+
+MACHINE_CONFIG_START(mvs_led_state::mv1)
neogeo_arcade(config);
neogeo_stereo(config);
NG_MEMCARD(config, m_memcard, 0);
- NEOGEO_CTRL_EDGE_CONNECTOR(config, m_edge, neogeo_arc_edge, "joy", false);
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge, "joy", false)
- NEOGEO_CONTROL_PORT(config, m_ctrl1, neogeo_arc_pin15, "", false);
- NEOGEO_CONTROL_PORT(config, m_ctrl2, neogeo_arc_pin15, "", false);
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl1", neogeo_arc_pin15, "", false)
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl2", neogeo_arc_pin15, "", false)
- cartslot_config(config, 1);
+ NEOGEO_CONFIG_CARTSLOT("cslot1")
- SOFTWARE_LIST(config, "cart_list").set_type("neogeo", SOFTWARE_LIST_ORIGINAL_SYSTEM);
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "neogeo")
+MACHINE_CONFIG_END
-void mvs_led_state::mv1f(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::mv1f)
neogeo_arcade(config);
neogeo_stereo(config);
- NEOGEO_CTRL_EDGE_CONNECTOR(config, m_edge, neogeo_arc_edge, "joy", false);
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge, "joy", false)
- NEOGEO_CONTROL_PORT(config, m_ctrl1, neogeo_arc_pin15, "", false);
- NEOGEO_CONTROL_PORT(config, m_ctrl2, neogeo_arc_pin15, "", false);
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl1", neogeo_arc_pin15, "", false)
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl2", neogeo_arc_pin15, "", false)
- cartslot_config(config, 1);
+ NEOGEO_CONFIG_CARTSLOT("cslot1")
- SOFTWARE_LIST(config, "cart_list").set_type("neogeo", SOFTWARE_LIST_ORIGINAL_SYSTEM);
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "neogeo")
+MACHINE_CONFIG_END
-void mvs_state::mv1fz(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_state::mv1fz)
neogeo_arcade(config);
neogeo_mono(config);
- NEOGEO_CTRL_EDGE_CONNECTOR(config, m_edge, neogeo_arc_edge, "joy", false);
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge, "joy", false)
- cartslot_config(config, 1);
+ NEOGEO_CONFIG_CARTSLOT("cslot1")
- SOFTWARE_LIST(config, "cart_list").set_type("neogeo", SOFTWARE_LIST_ORIGINAL_SYSTEM);
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "neogeo")
+MACHINE_CONFIG_END
-void mvs_led_el_state::mv2f(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_el_state::mv2f)
neogeo_arcade(config);
neogeo_stereo(config);
NG_MEMCARD(config, m_memcard, 0);
- NEOGEO_CTRL_EDGE_CONNECTOR(config, m_edge, neogeo_arc_edge, "joy", false);
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge, "joy", false)
- NEOGEO_CONTROL_PORT(config, m_ctrl1, neogeo_arc_pin15, "", false);
- NEOGEO_CONTROL_PORT(config, m_ctrl2, neogeo_arc_pin15, "", false);
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl1", neogeo_arc_pin15, "", false)
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl2", neogeo_arc_pin15, "", false)
- cartslot_config(config, 2);
+ NEOGEO_CONFIG_CARTSLOT("cslot1")
+ NEOGEO_CONFIG_CARTSLOT("cslot2")
- SOFTWARE_LIST(config, "cart_list").set_type("neogeo", SOFTWARE_LIST_ORIGINAL_SYSTEM);
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "neogeo")
+MACHINE_CONFIG_END
-void mvs_led_el_state::mv4f(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_el_state::mv4f)
neogeo_arcade(config);
neogeo_stereo(config);
NG_MEMCARD(config, m_memcard, 0);
- NEOGEO_CTRL_EDGE_CONNECTOR(config, m_edge, neogeo_arc_edge, "joy", false);
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge, "joy", false)
- NEOGEO_CONTROL_PORT(config, m_ctrl1, neogeo_arc_pin15, "", false);
- NEOGEO_CONTROL_PORT(config, m_ctrl2, neogeo_arc_pin15, "", false);
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl1", neogeo_arc_pin15, "", false)
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl2", neogeo_arc_pin15, "", false)
- cartslot_config(config, 4);
+ NEOGEO_CONFIG_CARTSLOT("cslot1")
+ NEOGEO_CONFIG_CARTSLOT("cslot2")
+ NEOGEO_CONFIG_CARTSLOT("cslot3")
+ NEOGEO_CONFIG_CARTSLOT("cslot4")
- SOFTWARE_LIST(config, "cart_list").set_type("neogeo", SOFTWARE_LIST_ORIGINAL_SYSTEM);
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "neogeo")
+MACHINE_CONFIG_END
-void mvs_led_el_state::mv6f(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_el_state::mv6f)
neogeo_arcade(config);
neogeo_stereo(config);
NG_MEMCARD(config, m_memcard, 0);
- NEOGEO_CTRL_EDGE_CONNECTOR(config, m_edge, neogeo_arc_edge, "joy", false);
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge, "joy", false)
- NEOGEO_CONTROL_PORT(config, m_ctrl1, neogeo_arc_pin15, "", false);
- NEOGEO_CONTROL_PORT(config, m_ctrl2, neogeo_arc_pin15, "", false);
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl1", neogeo_arc_pin15, "", false)
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl2", neogeo_arc_pin15, "", false)
- cartslot_config(config, 6);
+ NEOGEO_CONFIG_CARTSLOT("cslot1")
+ NEOGEO_CONFIG_CARTSLOT("cslot2")
+ NEOGEO_CONFIG_CARTSLOT("cslot3")
+ NEOGEO_CONFIG_CARTSLOT("cslot4")
+ NEOGEO_CONFIG_CARTSLOT("cslot5")
+ NEOGEO_CONFIG_CARTSLOT("cslot6")
- SOFTWARE_LIST(config, "cart_list").set_type("neogeo", SOFTWARE_LIST_ORIGINAL_SYSTEM);
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "neogeo")
+MACHINE_CONFIG_END
-void mvs_led_state::mv1_fixed(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::mv1_fixed)
neogeo_arcade(config);
neogeo_stereo(config);
NG_MEMCARD(config, m_memcard, 0);
- NEOGEO_CTRL_EDGE_CONNECTOR(config, m_edge, neogeo_arc_edge, "joy", true);
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge, "joy", true)
- NEOGEO_CONTROL_PORT(config, m_ctrl1, neogeo_arc_pin15, "", true);
- NEOGEO_CONTROL_PORT(config, m_ctrl2, neogeo_arc_pin15, "", true);
-}
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl1", neogeo_arc_pin15, "", true)
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl2", neogeo_arc_pin15, "", true)
+MACHINE_CONFIG_END
@@ -2112,6 +2115,7 @@ void aes_base_state::machine_start()
neogeo_base_state::machine_start();
m_sprgen->m_fixed_layer_bank_type = 0;
+ m_sprgen->set_screen(m_screen);
}
void aes_state::machine_start()
@@ -2134,8 +2138,7 @@ void aes_state::device_post_load()
}
-void aes_state::aes(machine_config &config)
-{
+MACHINE_CONFIG_START(aes_state::aes)
neogeo_base(config);
neogeo_stereo(config);
@@ -2143,13 +2146,14 @@ void aes_state::aes(machine_config &config)
NG_MEMCARD(config, m_memcard, 0);
- NEOGEO_CART_SLOT(config, m_slots[0], neogeo_cart, nullptr);
+ MCFG_NEOGEO_CARTRIDGE_ADD("cslot1", neogeo_cart, nullptr)
- NEOGEO_CONTROL_PORT(config, m_ctrl1, neogeo_controls, "joy", false);
- NEOGEO_CONTROL_PORT(config, m_ctrl2, neogeo_controls, "joy", false);
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl1", neogeo_controls, "joy", false)
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl2", neogeo_controls, "joy", false)
- SOFTWARE_LIST(config, "cart_list").set_type("neogeo", SOFTWARE_LIST_ORIGINAL_SYSTEM).set_filter("AES");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list","neogeo")
+ MCFG_SOFTWARE_LIST_FILTER("cart_list","AES")
+MACHINE_CONFIG_END
@@ -2349,7 +2353,7 @@ void aes_state::aes(machine_config &config)
ROM_Y_ZOOM
#define ROM_Y_ZOOM \
- ROM_REGION( 0x20000, "spritegen:zoomy", 0 ) \
+ ROM_REGION( 0x20000, "zoomy", 0 ) \
ROM_LOAD( "000-lo.lo", 0x00000, 0x20000, CRC(5a86cff2) SHA1(5992277debadeb64d1c1c64b0a92d9293eaf7e4a) )
@@ -2396,7 +2400,7 @@ ROM_START( aes )
ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF )
- ROM_REGION( 0x20000, "spritegen:zoomy", 0 )
+ ROM_REGION( 0x20000, "zoomy", 0 )
ROM_LOAD( "000-lo.lo", 0x00000, 0x20000, CRC(5a86cff2) SHA1(5992277debadeb64d1c1c64b0a92d9293eaf7e4a) )
ROM_REGION( 0x20000, "fixed", ROMREGION_ERASEFF )
@@ -2420,438 +2424,373 @@ CONS( 1990, aes, 0, 0, aes, aes, aes_state, e
// non-configurable slot (to be used for non-softlist sets, until we introduce some 'template' concept)
// a single cart in slot 1, with pre-defined cart type
-void mvs_state::cartslot_fixed(machine_config &config, char const *dflt)
-{
- NEOGEO_CART_SLOT(config, m_slots[0], neogeo_cart, dflt).set_user_loadable(false);
-}
+#define NEOGEO_CONFIG_ONE_FIXED_CARTSLOT(_default) \
+ MCFG_NEOGEO_CARTRIDGE_ADD("cslot1", neogeo_cart, _default) \
+ MCFG_SET_IMAGE_LOADABLE(false)
+
// machine config for one-game fixed config, loaded without using softlists
-void mvs_led_state::neobase(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::neobase)
mv1_fixed(config);
- cartslot_fixed(config, "rom");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom")
+MACHINE_CONFIG_END
// used by fatfury2 & ssideki
-void mvs_led_state::fatfur2(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::fatfur2)
mv1_fixed(config);
- cartslot_fixed(config, "rom_fatfur2");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom_fatfur2")
+MACHINE_CONFIG_END
-void mvs_state::kizuna4p(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_state::kizuna4p)
neogeo_arcade(config);
neogeo_mono(config);
- NEOGEO_CTRL_EDGE_CONNECTOR(config, m_edge, neogeo_arc_edge_fixed, "kiz4p", true);
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge_fixed, "kiz4p", true)
- cartslot_fixed(config, "rom");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom")
+MACHINE_CONFIG_END
-void mvs_led_state::kof97oro(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kof97oro)
mv1_fixed(config);
- cartslot_fixed(config, "boot_kof97oro");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kof97oro")
+MACHINE_CONFIG_END
-void mvs_led_state::kog(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kog)
mv1_fixed(config);
- cartslot_fixed(config, "boot_kog");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kog")
+MACHINE_CONFIG_END
-void mvs_state::irrmaze(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_state::irrmaze)
neogeo_arcade(config);
neogeo_mono(config);
- NEOGEO_CTRL_EDGE_CONNECTOR(config, m_edge, neogeo_arc_edge_fixed, "irrmaze", true);
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge_fixed, "irrmaze", true)
config.set_default_layout(layout_irrmaze);
- cartslot_fixed(config, "rom");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom")
+MACHINE_CONFIG_END
-void mvs_led_state::kof98(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kof98)
mv1_fixed(config);
- cartslot_fixed(config, "rom_kof98");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom_kof98")
+MACHINE_CONFIG_END
-void mvs_led_state::mslugx(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::mslugx)
mv1_fixed(config);
- cartslot_fixed(config, "rom_mslugx");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom_mslugx")
+MACHINE_CONFIG_END
-void mvs_led_state::kof99(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kof99)
mv1_fixed(config);
- cartslot_fixed(config, "sma_kof99");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("sma_kof99")
+MACHINE_CONFIG_END
-void mvs_led_state::kof99k(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kof99k)
mv1_fixed(config);
- cartslot_fixed(config, "cmc42_kof99k");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_kof99k")
+MACHINE_CONFIG_END
-void mvs_led_state::garou(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::garou)
mv1_fixed(config);
- cartslot_fixed(config, "sma_garou");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("sma_garou")
+MACHINE_CONFIG_END
-void mvs_led_state::garouh(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::garouh)
mv1_fixed(config);
- cartslot_fixed(config, "sma_garouh");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("sma_garouh")
+MACHINE_CONFIG_END
-void mvs_led_state::garoubl(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::garoubl)
mv1_fixed(config);
- cartslot_fixed(config, "boot_garoubl");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_garoubl")
+MACHINE_CONFIG_END
-void mvs_led_state::mslug3(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::mslug3)
mv1_fixed(config);
- cartslot_fixed(config, "sma_mslug3");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("sma_mslug3")
+MACHINE_CONFIG_END
-void mvs_led_state::mslug3a(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::mslug3a)
mv1_fixed(config);
- cartslot_fixed(config, "sma_mslug3a");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("sma_mslug3a")
+MACHINE_CONFIG_END
-void mvs_led_state::mslug3h(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::mslug3h)
mv1_fixed(config);
- cartslot_fixed(config, "cmc42_mslug3h");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_mslug3h")
+MACHINE_CONFIG_END
-void mvs_led_state::mslug3b6(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::mslug3b6)
mv1_fixed(config);
- cartslot_fixed(config, "boot_mslug3b6");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_mslug3b6")
+MACHINE_CONFIG_END
-void mvs_led_state::kof2000(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kof2000)
mv1_fixed(config);
- cartslot_fixed(config, "sma_kof2k");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("sma_kof2k")
+MACHINE_CONFIG_END
-void mvs_led_state::kof2000n(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kof2000n)
mv1_fixed(config);
- cartslot_fixed(config, "cmc50_kof2000n");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc50_kof2000n")
+MACHINE_CONFIG_END
-void mvs_led_state::zupapa(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::zupapa)
mv1_fixed(config);
- cartslot_fixed(config, "cmc42_zupapa");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_zupapa")
+MACHINE_CONFIG_END
-void mvs_led_state::sengoku3(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::sengoku3)
mv1_fixed(config);
- cartslot_fixed(config, "cmc42_sengoku3");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_sengoku3")
+MACHINE_CONFIG_END
-void mvs_led_state::kof2001(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kof2001)
mv1_fixed(config);
- cartslot_fixed(config, "cmc50_kof2001");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc50_kof2001")
+MACHINE_CONFIG_END
-void mvs_led_state::cthd2k3(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::cthd2k3)
mv1_fixed(config);
- cartslot_fixed(config, "boot_cthd2k3");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_cthd2k3")
+MACHINE_CONFIG_END
-void mvs_led_state::ct2k3sp(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::ct2k3sp)
mv1_fixed(config);
- cartslot_fixed(config, "boot_ct2k3sp");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_ct2k3sp")
+MACHINE_CONFIG_END
-void mvs_led_state::ct2k3sa(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::ct2k3sa)
mv1_fixed(config);
- cartslot_fixed(config, "boot_ct2k3sa");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_ct2k3sa")
+MACHINE_CONFIG_END
-void mvs_led_state::kof2002(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kof2002)
mv1_fixed(config);
- cartslot_fixed(config, "k2k2_kof2k2");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("k2k2_kof2k2")
+MACHINE_CONFIG_END
-void mvs_led_state::kof2002b(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kof2002b)
mv1_fixed(config);
- cartslot_fixed(config, "boot_kf2k2b");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf2k2b")
+MACHINE_CONFIG_END
-void mvs_led_state::kf2k2pls(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kf2k2pls)
mv1_fixed(config);
- cartslot_fixed(config, "k2k2_kf2k2p");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("k2k2_kf2k2p")
+MACHINE_CONFIG_END
-void mvs_led_state::kf2k2mp(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kf2k2mp)
mv1_fixed(config);
- cartslot_fixed(config, "boot_kf2k2mp");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf2k2mp")
+MACHINE_CONFIG_END
-void mvs_led_state::kf2k2mp2(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kf2k2mp2)
mv1_fixed(config);
- cartslot_fixed(config, "boot_kf2k2mp2");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf2k2mp2")
+MACHINE_CONFIG_END
-void mvs_led_state::kof10th(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kof10th)
mv1_fixed(config);
- cartslot_fixed(config, "boot_kf10th");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf10th")
+MACHINE_CONFIG_END
-void mvs_led_state::kf10thep(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kf10thep)
mv1_fixed(config);
- cartslot_fixed(config, "boot_kf10thep");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf10thep")
+MACHINE_CONFIG_END
-void mvs_led_state::kf2k5uni(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kf2k5uni)
mv1_fixed(config);
- cartslot_fixed(config, "boot_kf2k5uni");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf2k5uni")
+MACHINE_CONFIG_END
-void mvs_led_state::kof2k4se(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kof2k4se)
mv1_fixed(config);
- cartslot_fixed(config, "boot_kf2k4se");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf2k4se")
+MACHINE_CONFIG_END
-void mvs_led_state::mslug5(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::mslug5)
mv1_fixed(config);
- cartslot_fixed(config, "pvc_mslug5");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("pvc_mslug5")
+MACHINE_CONFIG_END
-void mvs_led_state::ms5plus(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::ms5plus)
mv1_fixed(config);
- cartslot_fixed(config, "boot_ms5plus");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_ms5plus")
+MACHINE_CONFIG_END
-void mvs_led_state::svc(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::svc)
mv1_fixed(config);
- cartslot_fixed(config, "pvc_svc");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("pvc_svc")
+MACHINE_CONFIG_END
-void mvs_led_state::svcboot(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::svcboot)
mv1_fixed(config);
- cartslot_fixed(config, "boot_svcboot");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_svcboot")
+MACHINE_CONFIG_END
-void mvs_led_state::svcplus(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::svcplus)
mv1_fixed(config);
- cartslot_fixed(config, "boot_svcplus");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_svcplus")
+MACHINE_CONFIG_END
-void mvs_led_state::svcplusa(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::svcplusa)
mv1_fixed(config);
- cartslot_fixed(config, "boot_svcplusa");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_svcplusa")
+MACHINE_CONFIG_END
-void mvs_led_state::svcsplus(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::svcsplus)
mv1_fixed(config);
- cartslot_fixed(config, "boot_svcsplus");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_svcsplus")
+MACHINE_CONFIG_END
-void mvs_led_state::samsho5(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::samsho5)
mv1_fixed(config);
- cartslot_fixed(config, "k2k2_samsh5");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("k2k2_samsh5")
+MACHINE_CONFIG_END
-void mvs_led_state::samsho5b(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::samsho5b)
mv1_fixed(config);
- cartslot_fixed(config, "boot_samsho5b");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_samsho5b")
+MACHINE_CONFIG_END
-void mvs_led_state::kof2003(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kof2003)
mv1_fixed(config);
- cartslot_fixed(config, "pvc_kf2k3");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("pvc_kf2k3")
+MACHINE_CONFIG_END
-void mvs_led_state::kof2003h(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kof2003h)
mv1_fixed(config);
- cartslot_fixed(config, "pvc_kf2k3h");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("pvc_kf2k3h")
+MACHINE_CONFIG_END
-void mvs_led_state::kf2k3bl(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kf2k3bl)
mv1_fixed(config);
- cartslot_fixed(config, "boot_kf2k3bl");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf2k3bl")
+MACHINE_CONFIG_END
-void mvs_led_state::kf2k3pl(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kf2k3pl)
mv1_fixed(config);
- cartslot_fixed(config, "boot_kf2k3pl");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf2k3pl")
+MACHINE_CONFIG_END
-void mvs_led_state::kf2k3upl(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::kf2k3upl)
mv1_fixed(config);
- cartslot_fixed(config, "boot_kf2k3upl");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf2k3upl")
+MACHINE_CONFIG_END
-void mvs_led_state::samsh5sp(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::samsh5sp)
mv1_fixed(config);
- cartslot_fixed(config, "k2k2_sams5s");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("k2k2_sams5s")
+MACHINE_CONFIG_END
-void mvs_led_state::neogeo_mj(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::neogeo_mj)
mv1_fixed(config);
set_default_bios_tag("japan");
- // no joystick panel
- m_edge->set_default_option("");
- m_edge->set_fixed(false);
+ //no joystick panel
+ MCFG_DEVICE_REMOVE("edge")
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge, "", false)
- // P1 mahjong controller
- m_ctrl1->set_default_option("mahjong");
- m_ctrl1->set_fixed(false);
+ //P1 mahjong controller
+ MCFG_DEVICE_REMOVE("ctrl1")
+ MCFG_DEVICE_REMOVE("ctrl2")
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl1", neogeo_arc_pin15, "mahjong", false)
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl2", neogeo_arc_pin15, "", true)
- cartslot_fixed(config, "rom");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom")
+MACHINE_CONFIG_END
-void mvs_led_state::preisle2(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::preisle2)
mv1_fixed(config);
- cartslot_fixed(config, "cmc42_preisle2");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_preisle2")
+MACHINE_CONFIG_END
-void mvs_led_state::nitd(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::nitd)
mv1_fixed(config);
- cartslot_fixed(config, "cmc42_nitd");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_nitd")
+MACHINE_CONFIG_END
-void mvs_led_state::s1945p(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::s1945p)
mv1_fixed(config);
- cartslot_fixed(config, "cmc42_s1945p");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_s1945p")
+MACHINE_CONFIG_END
-void mvs_led_state::lans2004(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::lans2004)
mv1_fixed(config);
- cartslot_fixed(config, "boot_lans2004");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_lans2004")
+MACHINE_CONFIG_END
-void mvs_led_state::pnyaa(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::pnyaa)
mv1_fixed(config);
- cartslot_fixed(config, "pcm2_pnyaa");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("pcm2_pnyaa")
+MACHINE_CONFIG_END
-void mvs_led_state::popbounc(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::popbounc)
mv1_fixed(config);
+ MCFG_DEVICE_REMOVE("edge")
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge_fixed, "dial", true)
- NEOGEO_CTRL_EDGE_CONNECTOR(config.replace(), m_edge, neogeo_arc_edge_fixed, "dial", true);
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom")
+MACHINE_CONFIG_END
- cartslot_fixed(config, "rom");
-}
-
-void mvs_led_state::ganryu(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::ganryu)
mv1_fixed(config);
- cartslot_fixed(config, "cmc42_ganryu");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_ganryu")
+MACHINE_CONFIG_END
-void mvs_led_state::bangbead(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::bangbead)
mv1_fixed(config);
- cartslot_fixed(config, "cmc42_bangbead");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_bangbead")
+MACHINE_CONFIG_END
-void mvs_led_state::mslug4(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::mslug4)
mv1_fixed(config);
- cartslot_fixed(config, "pcm2_mslug4");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("pcm2_mslug4")
+MACHINE_CONFIG_END
-void mvs_led_state::ms4plus(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::ms4plus)
mv1_fixed(config);
- cartslot_fixed(config, "pcm2_ms4p");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("pcm2_ms4p")
+MACHINE_CONFIG_END
-void mvs_led_state::rotd(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::rotd)
mv1_fixed(config);
- cartslot_fixed(config, "pcm2_rotd");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("pcm2_rotd")
+MACHINE_CONFIG_END
-void mvs_led_state::matrim(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::matrim)
mv1_fixed(config);
- cartslot_fixed(config, "k2k2_matrim");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("k2k2_matrim")
+MACHINE_CONFIG_END
-void mvs_led_state::matrimbl(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::matrimbl)
mv1_fixed(config);
- cartslot_fixed(config, "boot_matrimbl");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_matrimbl")
+MACHINE_CONFIG_END
-void mvs_led_state::jockeygp(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::jockeygp)
mv1_fixed(config);
- cartslot_fixed(config, "cmc50_jockeygp");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc50_jockeygp")
+MACHINE_CONFIG_END
-void mvs_led_state::vliner(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::vliner)
mv1_fixed(config);
-
// input handlers are installed at DRIVER_INIT...
- config.device_remove("edge");
- config.device_remove("ctrl1");
- config.device_remove("ctrl2");
+ MCFG_DEVICE_REMOVE("edge")
+ MCFG_DEVICE_REMOVE("ctrl1")
+ MCFG_DEVICE_REMOVE("ctrl2")
- cartslot_fixed(config, "rom_vliner");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom_vliner")
+MACHINE_CONFIG_END
-void mvs_led_state::sbp(machine_config &config)
-{
+MACHINE_CONFIG_START(mvs_led_state::sbp)
mv1_fixed(config);
- cartslot_fixed(config, "boot_sbp");
-}
+ NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_sbp")
+MACHINE_CONFIG_END
@@ -6693,7 +6632,7 @@ ROM_END
The following ID's are used by Korean releases:
ID-0122 - Pae Wang Jeon Seol / Legend of a Warrior (Korean censored Samurai Shodown IV)
- ID-0123 - Quiz Salibtamjeong - The Last Count Down (Korean localized Quiz Daisousa Sen)
+ ID-0123 - Quiz Daisousa Sen - The Last Count Down (Korean release)
ID-0124 - Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special (Korean release)
ID-0134 - The Last Soldier (Korean release of The Last Blade)
ID-0140 - Real Bout Fatal Fury 2 - The Newcomers (Korean release)
@@ -11704,7 +11643,7 @@ GAME( 1991, gpilotsh, gpilots, neobase, neogeo, mvs_led_state, empty_ini
GAME( 1991, gpilotsp, gpilots, neobase, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Ghost Pilots (prototype)", MACHINE_SUPPORTS_SAVE )
GAME( 1990, joyjoy, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Puzzled / Joy Joy Kid (NGM-021 ~ NGH-021)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, quizdais, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Quiz Daisousa Sen - The Last Count Down (NGM-023 ~ NGH-023)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, quizdaisk, quizdais, neobase, neogeo, mvs_led_state, empty_init, ROT0, "SNK / Viccom", "Quiz Salibtamjeong - The Last Count Down (Korean localized Quiz Daisousa Sen)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, quizdaisk, quizdais, neobase, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Quiz Daisousa Sen - The Last Count Down (Korean release)", MACHINE_SUPPORTS_SAVE )
GAME( 1992, lresort, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Last Resort", MACHINE_SUPPORTS_SAVE )
GAME( 1992, lresortp, lresort, neobase, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Last Resort (prototype)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, eightman, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "SNK / Pallas", "Eight Man (NGM-025 ~ NGH-025)", MACHINE_SUPPORTS_SAVE )
@@ -11801,7 +11740,7 @@ GAME( 1999, garoubl, garou, garoubl, neogeo, mvs_led_state, empty_ini
GAME( 2000, mslug3, neogeo, mslug3, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Metal Slug 3 (NGM-2560)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
GAME( 2000, mslug3a, mslug3, mslug3a, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Metal Slug 3 (NGM-2560, earlier)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX - revision Mar/17/2000 1:36 (from SMA rom) */
GAME( 2000, mslug3h, mslug3, mslug3h, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Metal Slug 3 (NGH-2560)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
-GAME( 2000, mslug3b6, mslug3, mslug3b6, neogeo, mvs_led_state, empty_init, ROT0, "bootleg", "Metal Slug 6 (Metal Slug 3 bootleg)", MACHINE_SUPPORTS_SAVE ) /* real Metal Slug 6 is an Atomiswave HW game, see naomi.cpp ;-) */
+GAME( 2000, mslug3b6, mslug3, mslug3b6, neogeo, mvs_led_state, empty_init, ROT0, "bootleg", "Metal Slug 6 (Metal Slug 3 bootleg)", MACHINE_SUPPORTS_SAVE ) /* real Metal Slug 6 is an Atomiswave HW game, see naomi.c ;-) */
GAME( 2000, kof2000, neogeo, kof2000, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "The King of Fighters 2000 (NGM-2570 ~ NGH-2570)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
GAME( 2000, kof2000n, kof2000, kof2000n, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "The King of Fighters 2000 (not encrypted)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
GAME( 2001, zupapa, neogeo, zupapa, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Zupapa!" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
@@ -11825,7 +11764,7 @@ GAME( 2004, kof2k4se, kof2002, kof2k4se, neogeo, mvs_led_state, empty_ini
GAME( 2003, mslug5, neogeo, mslug5, neogeo, mvs_led_state, empty_init, ROT0, "SNK Playmore", "Metal Slug 5 (NGM-2680)", MACHINE_SUPPORTS_SAVE )
GAME( 2003, mslug5h, mslug5, mslug5, neogeo, mvs_led_state, empty_init, ROT0, "SNK Playmore", "Metal Slug 5 (NGH-2680)", MACHINE_SUPPORTS_SAVE ) /* Also found in later MVS carts */
GAME( 2003, ms5plus, mslug5, ms5plus, neogeo, mvs_led_state, empty_init, ROT0, "bootleg", "Metal Slug 5 Plus (bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, svc, neogeo, svc, neogeo, mvs_led_state, empty_init, ROT0, "Playmore / Capcom", "SNK vs. Capcom - SVC Chaos (NGM-2690 ~ NGH-2690)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svc, neogeo, svc, neogeo, mvs_led_state, empty_init, ROT0, "SNK Playmore", "SNK vs. Capcom - SVC Chaos (NGM-2690 ~ NGH-2690)", MACHINE_SUPPORTS_SAVE )
GAME( 2003, svcboot, svc, svcboot, neogeo, mvs_led_state, empty_init, ROT0, "bootleg", "SNK vs. Capcom - SVC Chaos (bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 2003, svcplus, svc, svcplus, neogeo, mvs_led_state, empty_init, ROT0, "bootleg", "SNK vs. Capcom - SVC Chaos Plus (bootleg set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 2003, svcplusa, svc, svcplusa, neogeo, mvs_led_state, empty_init, ROT0, "bootleg", "SNK vs. Capcom - SVC Chaos Plus (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
@@ -11875,7 +11814,7 @@ GAME( 1992, viewpoin, neogeo, neobase, neogeo, mvs_led_state, empty_ini
GAME( 1994, janshin, neogeo, neogeo_mj, neogeo_mj, mvs_led_state, empty_init, ROT0, "Aicom", "Janshin Densetsu - Quest of Jongmaster", MACHINE_SUPPORTS_SAVE )
GAME( 1995, pulstar, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Aicom", "Pulstar", MACHINE_SUPPORTS_SAVE )
GAME( 1998, blazstar, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Yumekobo", "Blazing Star", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, preisle2, neogeo, preisle2, neogeo, mvs_led_state, empty_init, ROT0, "Yumekobo / Saurus", "Prehistoric Isle 2" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 1999, preisle2, neogeo, preisle2, neogeo, mvs_led_state, empty_init, ROT0, "Yumekobo", "Prehistoric Isle 2" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
// Data East Corporation
GAME( 1993, spinmast, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Data East Corporation", "Spin Master / Miracle Adventure", MACHINE_SUPPORTS_SAVE )
@@ -11916,14 +11855,14 @@ GAME( 1994, zedblade, neogeo, neobase, neogeo, mvs_led_state, empty_ini
GAME( 1999, s1945p, neogeo, s1945p, neogeo, mvs_led_state, empty_init, ROT0, "Psikyo", "Strikers 1945 Plus" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
// Saurus
-GAME( 1995, quizkof, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Saurus (SNK license)", "Quiz King of Fighters (SAM-080 ~ SAH-080)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, quizkofk, quizkof, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Saurus / Viccom (SNK license)", "Quiz King of Fighters (Korea)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, quizkof, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Saurus", "Quiz King of Fighters (SAM-080 ~ SAH-080)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, quizkofk, quizkof, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Saurus", "Quiz King of Fighters (Korean release)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, stakwin, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Saurus", "Stakes Winner / Stakes Winner - GI Kinzen Seiha e no Michi", MACHINE_SUPPORTS_SAVE )
GAME( 1995, stakwindev, stakwin, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Saurus", "Stakes Winner / Stakes Winner - GI Kinzen Seiha e no Michi (early development board)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_IS_INCOMPLETE )
GAME( 1996, ragnagrd, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Saurus", "Ragnagard / Shin-Oh-Ken", MACHINE_SUPPORTS_SAVE )
GAME( 1996, pgoal, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Saurus", "Pleasure Goal / Futsal - 5 on 5 Mini Soccer (NGM-219)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, ironclad, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Saurus", "Choutetsu Brikin'ger / Iron Clad (prototype)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, ironclado, ironclad, neobase, neogeo, mvs_led_state, empty_init, ROT0, "bootleg", "Choutetsu Brikin'ger / Iron Clad (prototype, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ironclad, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Saurus", "Choutetsu Brikin'ger - Iron Clad (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ironclado, ironclad, neobase, neogeo, mvs_led_state, empty_init, ROT0, "bootleg", "Choutetsu Brikin'ger - Iron Clad (prototype, bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1996, stakwin2, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Saurus", "Stakes Winner 2", MACHINE_SUPPORTS_SAVE )
GAME( 1997, shocktro, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Saurus", "Shock Troopers (set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1997, shocktroa, shocktro, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Saurus", "Shock Troopers (set 2)", MACHINE_SUPPORTS_SAVE )
@@ -11953,8 +11892,8 @@ GAME( 1996, sdodgeb, neogeo, neobase, neogeo, mvs_led_state, empty_ini
GAME( 1996, twsoc96, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Tecmo", "Tecmo World Soccer '96", MACHINE_SUPPORTS_SAVE )
// Viccom
-GAME( 1994, fightfev, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Viccom", "Fight Fever / Wang Jung Wang (set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, fightfeva, fightfev, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Viccom", "Fight Fever / Wang Jung Wang (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, fightfev, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Viccom", "Fight Fever (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, fightfeva, fightfev, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Viccom", "Fight Fever (set 2)", MACHINE_SUPPORTS_SAVE )
// Video System Co.
GAME( 1994, pspikes2, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "Video System Co.", "Power Spikes II (NGM-068)", MACHINE_SUPPORTS_SAVE )
@@ -12016,7 +11955,7 @@ GAME( 2005, lasthope, neogeo, neobase, neogeo, mvs_led_state, empty_ini
// Fast Striker 1.5 (c)2010 - MVS/AES
// GunLord (c)2012 - MVS/AES
// Neo XYX (c)2013 - MVS/AES
-// Razion (c)2014 - MVS/AES
+// Razion (c)2014 - MVS/AES?
// Kraut Buster (c)2016 - MVS/AES
// N.C.I - LE CORTEX
diff --git a/src/mame/drivers/neogeocd.cpp b/src/mame/drivers/neogeocd.cpp
index 8b7787dab4a..6f6a6910f0a 100644
--- a/src/mame/drivers/neogeocd.cpp
+++ b/src/mame/drivers/neogeocd.cpp
@@ -1033,8 +1033,7 @@ uint32_t ngcd_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
}
-void ngcd_state::neocd(machine_config &config)
-{
+MACHINE_CONFIG_START(ngcd_state::neocd)
neogeo_base(config);
neogeo_stereo(config);
@@ -1046,7 +1045,8 @@ void ngcd_state::neocd(machine_config &config)
subdevice<hc259_device>("systemlatch")->q_out_cb<1>().set_log("NeoCD: write to regular vector change address?"); // what IS going on with "neocdz doubledr" and why do games write here if it's hooked up to nothing?
- m_screen->set_screen_update(FUNC(ngcd_state::screen_update));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(ngcd_state, screen_update)
// temporary until things are cleaned up
LC89510_TEMP(config, m_tempcdc, 0); // cd controller
@@ -1057,14 +1057,15 @@ void ngcd_state::neocd(machine_config &config)
NVRAM(config, "saveram", nvram_device::DEFAULT_ALL_0);
- NEOGEO_CONTROL_PORT(config, m_ctrl1, neogeo_controls, "joy", false);
- NEOGEO_CONTROL_PORT(config, m_ctrl2, neogeo_controls, "joy", false);
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl1", neogeo_controls, "joy", false)
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl2", neogeo_controls, "joy", false)
- CDROM(config, "cdrom").set_interface("neocd_cdrom");
- SOFTWARE_LIST(config, "cd_list").set_type("neocd", SOFTWARE_LIST_ORIGINAL_SYSTEM);
+ MCFG_CDROM_ADD( "cdrom" )
+ MCFG_CDROM_INTERFACE("neocd_cdrom")
+ MCFG_SOFTWARE_LIST_ADD("cd_list","neocd")
m_ym->set_addrmap(0, &ngcd_state::neocd_ym_map);
-}
+MACHINE_CONFIG_END
@@ -1086,7 +1087,7 @@ ROM_START( neocd )
ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASE00 )
/* 2MB of 68K RAM */
- ROM_REGION( 0x20000, "spritegen:zoomy", 0 )
+ ROM_REGION( 0x20000, "zoomy", 0 )
ROM_LOAD( "000-lo.lo", 0x00000, 0x20000, CRC(5a86cff2) SHA1(5992277debadeb64d1c1c64b0a92d9293eaf7e4a) )
ROM_END
@@ -1100,7 +1101,7 @@ ROM_START( neocdz )
ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASE00 )
/* 2MB of 68K RAM */
- ROM_REGION( 0x20000, "spritegen:zoomy", 0 )
+ ROM_REGION( 0x20000, "zoomy", 0 )
ROM_LOAD( "000-lo.lo", 0x00000, 0x20000, CRC(5a86cff2) SHA1(5992277debadeb64d1c1c64b0a92d9293eaf7e4a) )
ROM_END
diff --git a/src/mame/drivers/neopcb.cpp b/src/mame/drivers/neopcb.cpp
index 9f1a460ae08..18c0ed85e85 100644
--- a/src/mame/drivers/neopcb.cpp
+++ b/src/mame/drivers/neopcb.cpp
@@ -69,17 +69,16 @@ void neopcb_state::device_post_load()
membank("cpu_bank")->set_base(m_region_maincpu->base() + m_bank_base);
}
-void neopcb_state::neopcb(machine_config &config)
-{
+MACHINE_CONFIG_START(neopcb_state::neopcb)
neogeo_arcade(config);
neogeo_mono(config);
- NEOGEO_CTRL_EDGE_CONNECTOR(config, m_edge, neogeo_arc_edge, "joy", true);
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge, "joy", true)
- NG_CMC_PROT(config, "cmc50", 0);
- NG_PCM2_PROT(config, "pcm2", 0);
- NG_PVC_PROT(config, "pvc", 0);
-}
+ MCFG_CMC_PROT_ADD("cmc50")
+ MCFG_PCM2_PROT_ADD("pcm2")
+ MCFG_PVC_PROT_ADD("pvc")
+MACHINE_CONFIG_END
// Game specific input definitions
@@ -107,7 +106,7 @@ INPUT_PORTS_END
*************************************/
#define ROM_Y_ZOOM \
- ROM_REGION( 0x20000, "spritegen:zoomy", 0 ) \
+ ROM_REGION( 0x20000, "zoomy", 0 ) \
ROM_LOAD( "000-lo.lo", 0x00000, 0x20000, CRC(5a86cff2) SHA1(5992277debadeb64d1c1c64b0a92d9293eaf7e4a) )
@@ -476,7 +475,7 @@ void neopcb_state::install_common()
m_bank_base = 0;
init_audio();
m_audiocpu->reset();
- m_ym->reset();
+ init_ym();
init_sprites();
}
@@ -553,6 +552,6 @@ void neopcb_state::init_kf2k3pcb()
GAME( 2003, ms5pcb, 0, neopcb, dualbios, neopcb_state, init_ms5pcb, ROT0, "SNK Playmore", "Metal Slug 5 (JAMMA PCB)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, svcpcb, 0, neopcb, dualbios, neopcb_state, init_svcpcb, ROT0, "Playmore / Capcom", "SNK vs. Capcom - SVC Chaos (JAMMA PCB, set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, svcpcba, svcpcb, neopcb, dualbios, neopcb_state, init_svcpcb, ROT0, "Playmore / Capcom", "SNK vs. Capcom - SVC Chaos (JAMMA PCB, set 2)", MACHINE_SUPPORTS_SAVE ) /* Encrypted Code */
+GAME( 2003, svcpcb, 0, neopcb, dualbios, neopcb_state, init_svcpcb, ROT0, "SNK Playmore", "SNK vs. Capcom - SVC Chaos (JAMMA PCB, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcpcba, svcpcb, neopcb, dualbios, neopcb_state, init_svcpcb, ROT0, "SNK Playmore", "SNK vs. Capcom - SVC Chaos (JAMMA PCB, set 2)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code */
GAME( 2003, kf2k3pcb, 0, neopcb, neogeo, neopcb_state, init_kf2k3pcb, ROT0, "SNK Playmore", "The King of Fighters 2003 (Japan, JAMMA PCB)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/neoprint.cpp b/src/mame/drivers/neoprint.cpp
index 2a86c3a906f..97f1886528c 100644
--- a/src/mame/drivers/neoprint.cpp
+++ b/src/mame/drivers/neoprint.cpp
@@ -55,13 +55,8 @@ public:
void nprsp(machine_config &config);
void init_98best44();
- void init_npmillen();
void init_npcartv1();
- void init_npotogib();
void init_nprsp();
- void init_npscv1();
- void init_npskv();
- void init_npsprgv4();
void init_unkneo();
protected:
@@ -504,8 +499,7 @@ void neoprint_state::machine_start()
m_upd4990a->c2_w(1);
}
-void neoprint_state::neoprint(machine_config &config)
-{
+MACHINE_CONFIG_START(neoprint_state::neoprint)
M68000(config, m_maincpu, 12000000);
m_maincpu->set_addrmap(AS_PROGRAM, &neoprint_state::neoprint_map);
m_maincpu->set_periodic_int(FUNC(neoprint_state::irq3_line_hold), attotime::from_hz(45)); /* camera / printer irq, unknown timing */
@@ -592,7 +586,7 @@ void neoprint_state::nprsp(machine_config &config)
// uses NEO-MVS PROGBK1 (Same as NeoGeo MVS cart)
// and PSTM-ROMC (unique to NeoPrint) (has ZMC chip)
-ROM_START( neoprint ) // NP 1.21 19961210 string
+ROM_START( neoprint )
ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "ep1.bin", 0x000000, 0x80000, CRC(271da3ee) SHA1(50132d2ac5524e880ec0c2ba3617bf516fd36e7d) )
// ROM_RELOAD( 0x100000, 0x80000 ) /* checks the same string from above to be present there? Why? */
@@ -610,7 +604,7 @@ ROM_START( neoprint ) // NP 1.21 19961210 string
ROM_LOAD32_BYTE( "c4.bin", 0x200001, 0x80000, CRC(c7e5e6ce) SHA1(f1e37732446ae6146b3cb51a9714c5edd539d7e4) )
ROM_END
-ROM_START( npcartv1 ) // NP 1.11 19961018 string
+ROM_START( npcartv1 )
ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "ep1.bin", 0x000000, 0x80000, CRC(18606198) SHA1(d968e09131c22769e22c7310aca1f02e739f38f1) )
// ROM_RELOAD( 0x100000, 0x80000 ) /* checks the same string from above to be present there? Why? */
@@ -626,27 +620,12 @@ ROM_START( npcartv1 ) // NP 1.11 19961018 string
ROM_LOAD32_BYTE( "c2.bin", 0x00001, 0x80000, CRC(7ce39dc2) SHA1(c5be90657350258b670b55dd9c77f7899133ced3) )
ROM_END
-ROM_START( npsprgv4 ) // NP 1.30 19970228 string
- ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD16_WORD_SWAP( "p004-ep1 neo-mvs progbk1.ep1", 0x000000, 0x80000, CRC(4a322439) SHA1(4478f0e20d2c892a2c8e67ccc1173fd5edaa42e3) )
-
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 program */
- ROM_LOAD( "p004-m1 neo-pstm cha136.m1", 0x00000, 0x20000, CRC(6d77cdaa) SHA1(f88a93b3085b18b6663b4e51fccaa41958aafae1) ) // same as 98best44
-
- ROM_REGION( 0x200000, "ymsnd", 0 ) /* Samples */
- ROM_LOAD( "p004-v1 neo-mvs progbk1.v1", 0x000000, 0x200000, CRC(118a84fd) SHA1(9059297a42a329eca47a82327c301853219013bd) ) // same as 98best44
-
- ROM_REGION( 0x800000, "gfx1", ROMREGION_ERASE00 )
- ROM_LOAD32_BYTE( "p004-c1 neo-pstm cha136.c1", 0x000000, 0x200000, CRC(3654d45c) SHA1(f2f770d090e45008da682775847fdb3433163eae) )
- ROM_LOAD32_BYTE( "p004-c2 neo-pstm cha136.c2", 0x000001, 0x200000, CRC(de75f729) SHA1(b8880c8b358aa4b59d79493458d27a0a13d80094) )
-ROM_END
-
/* logo: Neo Print
small text: Cassette supporting Neo Print and Neo Print Multi
(cassette=cartridge)
title: '98 NeoPri Best 44 version */
-ROM_START( 98best44 ) // NP 1.30 19970430 string
+ROM_START( 98best44 )
ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "p060-ep1", 0x000000, 0x080000, CRC(d42e505d) SHA1(0ad6b0288f36c339832730a03e53cbc07dab4f82))
// ROM_RELOAD( 0x100000, 0x80000 ) /* checks the same string from above to be present there? Why? */
@@ -662,86 +641,7 @@ ROM_START( 98best44 ) // NP 1.30 19970430 string
ROM_LOAD32_BYTE( "pt060-c2", 0x000001, 0x100000, CRC(66a8e56a) SHA1(adfd1e52d52806a785f1e9b1ae2ac969b6ed60af) )
ROM_END
-ROM_START( npsprg98 ) // NP 1.30 19970430 string
- ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD16_WORD_SWAP( "p042-p1 neo-mvs progbk1.p1", 0x000000, 0x100000, CRC(c0621456) SHA1(eb615a11f909a680aed2d99c641b3c47be4fc56e) )
-
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 program */
- ROM_LOAD( "pt004-m1 neo-pstm cha136.m1", 0x00000, 0x20000, CRC(6d77cdaa) SHA1(f88a93b3085b18b6663b4e51fccaa41958aafae1) ) // same as 98best44
-
- ROM_REGION( 0x200000, "ymsnd", 0 ) /* Samples */
- ROM_LOAD( "pt004-v1 neo-mvs progbk1.v1", 0x000000, 0x200000, CRC(118a84fd) SHA1(9059297a42a329eca47a82327c301853219013bd) ) // same as 98best44
-
- ROM_REGION( 0x400000, "gfx1", ROMREGION_ERASE00 )
- ROM_LOAD32_BYTE( "p042-c1 neo-pstm cha136.c1", 0x000000, 0x100000, CRC(bc822f3f) SHA1(a24e0a556d2f15a61fd80a049b7b31d61cb0596e) )
- ROM_LOAD32_BYTE( "p042-c2 neo-pstm cha136.c2", 0x000001, 0x100000, CRC(95a4a0a9) SHA1(2e07006af6c84c98a5b5ab3191e3278766e91faa) )
-ROM_END
-
-ROM_START( npskv ) // NP 1.30 19970430 string
- ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD16_WORD_SWAP( "p012-p1 neo-mvs progbk1.p1", 0x000000, 0x100000, CRC(de8996f6) SHA1(8fb2bc78206ec543148740f94c19bcdb50ad3271) )
-
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 program */
- ROM_LOAD( "p004-m1 neo-pstm cha136.m1", 0x00000, 0x20000, CRC(6d77cdaa) SHA1(f88a93b3085b18b6663b4e51fccaa41958aafae1) ) // same as 98best44
-
- ROM_REGION( 0x200000, "ymsnd", 0 ) /* Samples */
- ROM_LOAD( "p04-v1 neo-mvs progbk1.v1", 0x000000, 0x200000, CRC(118a84fd) SHA1(9059297a42a329eca47a82327c301853219013bd) ) // same as 98best44
-
- ROM_REGION( 0x400000, "gfx1", ROMREGION_ERASE00 )
- ROM_LOAD32_BYTE( "p012-c1 neo-pstm cha136.c1", 0x000000, 0x100000, CRC(315f27c0) SHA1(889c82073ac0fb94e5bd7b6ff11f19261d79f011) )
- ROM_LOAD32_BYTE( "p012-c2 neo-pstm cha136.c2", 0x000001, 0x100000, CRC(0711f184) SHA1(4ab860c5e200fec70374ab552c97b59a35ca73c3) )
-ROM_END
-
-ROM_START( npusagif ) // NP 1.30 19970430 string
- ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD16_WORD_SWAP( "p061-ep1 neo-mvs progbk1.ep1", 0x000000, 0x080000, CRC(ec6d7fda) SHA1(f219f8a9763f92ef952236ea3e01fe9b684823df) )
-
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 program */
- ROM_LOAD( "pt004-m1 neo-pstm cha136.m1", 0x00000, 0x20000, CRC(6d77cdaa) SHA1(f88a93b3085b18b6663b4e51fccaa41958aafae1) ) // same as 98best44
-
- ROM_REGION( 0x200000, "ymsnd", 0 ) /* Samples */
- ROM_LOAD( "pt004-v1 neo-mvs progbk1.v1", 0x000000, 0x200000, CRC(118a84fd) SHA1(9059297a42a329eca47a82327c301853219013bd) ) // same as 98best44
-
- ROM_REGION( 0x400000, "gfx1", ROMREGION_ERASE00 )
- ROM_LOAD32_BYTE( "p061-c1 neo-pstm cha136.c1", 0x000000, 0x100000, CRC(9686c78d) SHA1(a72a191540bbe3121e3be9e05e683ba9f2714aba) )
- ROM_LOAD32_BYTE( "p061-c2 neo-pstm cha136.c2", 0x000001, 0x100000, CRC(f354b86b) SHA1(1058465af35fef6923f7fbe2cccf4c01509528d6) )
-ROM_END
-
-ROM_START( npotogib ) // NP 1.30 19970430 string
- ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD16_WORD_SWAP( "p0025-ep1 neo-mvs progbk1.ep1", 0x000000, 0x080000, CRC(eaefe748) SHA1(9facab7e70901a9030d40b823473e46cfa5389ad) )
-
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 program */
- ROM_LOAD( "pt004-m1 neo-pstm cha136.m1", 0x00000, 0x20000, CRC(6d77cdaa) SHA1(f88a93b3085b18b6663b4e51fccaa41958aafae1) ) // same as 98best44
-
- ROM_REGION( 0x200000, "ymsnd", 0 ) /* Samples */
- ROM_LOAD( "pt004-v1 neo-mvs progbk1.v1", 0x000000, 0x200000, CRC(118a84fd) SHA1(9059297a42a329eca47a82327c301853219013bd) ) // same as 98best44
-
- ROM_REGION( 0x400000, "gfx1", ROMREGION_ERASE00 )
- ROM_LOAD32_BYTE( "p0025-c1 pstm-romc.c1", 0x000000, 0x80000, CRC(585451c5) SHA1(288d1f725c8747d260f46ed7ef8f380c991e8b33) )
- ROM_LOAD32_BYTE( "p0025-c2 pstm-romc.c2", 0x000001, 0x80000, CRC(74468a3d) SHA1(55b85c02d033636e8f7feda79bb3c0b29408f361) )
- ROM_LOAD32_BYTE( "p0025-c3 pstm-romc.c3", 0x200001, 0x80000, CRC(ef1854e7) SHA1(e254bcf03845b61d9f40efeaba7fba133aaad79d) )
- ROM_LOAD32_BYTE( "p0025-c4 pstm-romc.c4", 0x200002, 0x80000, CRC(a2261905) SHA1(cb05a11ed4c302448c3e6779cb5428dd0c907e18) )
-ROM_END
-
-ROM_START( npfpit ) // NP 1.30 19990225 string
- ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD16_WORD_SWAP( "po97-ep1 neo-mvs progbk1.ep1", 0x000000, 0x080000, CRC(d2940f25) SHA1(d65e719d9df993e1433e580797bf0580d564c9a2) )
-
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 program */
- ROM_LOAD( "pt004-m1 neo-pstm cha136.m1", 0x00000, 0x20000, CRC(6d77cdaa) SHA1(f88a93b3085b18b6663b4e51fccaa41958aafae1) ) // same as 98best44
-
- ROM_REGION( 0x200000, "ymsnd", 0 ) /* Samples */
- ROM_LOAD( "pt004-v1 neo-mvs progbk1.v1", 0x000000, 0x200000, CRC(118a84fd) SHA1(9059297a42a329eca47a82327c301853219013bd) ) // same as 98best44
-
- ROM_REGION( 0x400000, "gfx1", ROMREGION_ERASE00 )
- ROM_LOAD32_BYTE( "p097-c1 pstm-romc.c1", 0x000000, 0x80000, CRC(60163d90) SHA1(3707be8064c083814a0c4a31bccc7150aa250891) )
- ROM_LOAD32_BYTE( "p097-c2 pstm-romc.c2", 0x000001, 0x80000, CRC(29f59ff7) SHA1(acb427383bb2f7fd675d7f5b97fea7f092bdc8d5) )
- ROM_LOAD32_BYTE( "p097-c3 pstm-romc.c3", 0x200001, 0x80000, CRC(8ceddebf) SHA1(2d11721f3b9724358cc528e8028b091972506b91) )
- ROM_LOAD32_BYTE( "p097-c4 pstm-romc.c4", 0x200002, 0x80000, CRC(88d0fb2e) SHA1(78bd4262e009ede7c179b783ab2b9bd1662a6f56) )
-ROM_END
-
-ROM_START( nprsp ) // STAFYAMA19980925 string
+ROM_START( nprsp )
ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "s038a-ep1.bin", 0x000000, 0x080000, CRC(529fb4fa) SHA1(f31ba8998bb01458f43df1934222995f22d590a1) ) // program ROM
ROM_LOAD16_WORD_SWAP( "s046-ep2.bin", 0x080000, 0x080000, CRC(846ae929) SHA1(e5544cde32794865e17d7dffd4e603ad5418d91e) ) // data ROM
@@ -759,73 +659,6 @@ ROM_START( nprsp ) // STAFYAMA19980925 string
// 8bpp might be possible with another ROM?
ROM_END
-ROM_START( npssr2 ) // STAFYAMA19980925 string
- ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD16_WORD_SWAP( "s038a-ep1 nps-prg1.ep1", 0x000000, 0x080000, CRC(529fb4fa) SHA1(f31ba8998bb01458f43df1934222995f22d590a1) ) // program ROM, same as nprsp
- ROM_LOAD16_WORD_SWAP( "s072-ep2 nps-prg1.ep2", 0x080000, 0x080000, CRC(5514e29f) SHA1(fd508b6b4b2ed587b5dfd4a186865c72181612e6) ) // data ROM
-
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 program */
- ROM_LOAD( "s001-m1 neo-pstm cha64c.m1", 0x00000, 0x20000, CRC(ea8111c1) SHA1(69e6bb7ad9a8d61db4513a762c0ce9e9da2a1785) )
-
- ROM_REGION( 0x200000, "ymsnd", 0 ) /* Samples */
- ROM_LOAD( "s001-v1 nps-prg1.v1", 0x000000, 0x100000, CRC(13d63625) SHA1(4a9e3b1192a4a7e405becfd5d2a95ffc14ae6e79) )
-
- ROM_REGION( 0x800000, "gfx1", ROMREGION_ERASE00 )
- ROM_LOAD32_BYTE( "s072-c1 neo-pstm cha64c.c1", 0x000000, 0x200000, CRC(c5f72b00) SHA1(b81a9d6025e79f98bdfd55d630ede181ef821132) )
- ROM_LOAD32_BYTE( "s072-c2 neo-pstm cha64c.c2", 0x000001, 0x200000, CRC(3153db5a) SHA1(2166f452131f64e3806d177b5c5a6ddcd312adfd) )
- ROM_LOAD32_BYTE( "s072-c3 neo-pstm cha64c.c3", 0x000002, 0x200000, CRC(57e8888f) SHA1(59acb22b2744bb798dd4779d9413d01bee79b43e) )
-
- ROM_REGION( 0x100, "eeprom", ROMREGION_ERASE00 )
- ROM_LOAD( "br9020 nps-prg1.u5", 0x000, 0x100, NO_DUMP ) // dump provided was 0xff filled
-ROM_END
-
-ROM_START( npmillen ) // NP 1.30 19990225 string
- ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD16_WORD_SWAP( "p093-ep1.bin", 0x000000, 0x080000, CRC(47783f56) SHA1(1845e90b05a58010054c4158ef08e167e61ea370) )
-
- ROM_REGION( 0x20000, "audiocpu", 0 )
- ROM_LOAD( "p016-m1.bin", 0x00000, 0x20000, CRC(f40cf036) SHA1(63041318d8bec144a4688cc5f45107f8331809bf) )
-
- ROM_REGION( 0x200000, "ymsnd", 0 )
- ROM_LOAD( "p016-v1.bin", 0x000000, 0x200000, CRC(400ca9ce) SHA1(f8636a4600200ef9000a25e80cf20f252703ad37) )
-
- ROM_REGION( 0x400000, "gfx1", ROMREGION_ERASE00 )
- ROM_LOAD32_BYTE( "p093-c1.bin", 0x000000, 0x80000, CRC(bbb8266b) SHA1(3cbe8c9a6a82d9927910833b5874fe0a4a8c8384) )
- ROM_LOAD32_BYTE( "p093-c2.bin", 0x000001, 0x80000, CRC(a82e79f4) SHA1(cc3a0171d488167212c2baaeda7c6cf13bb19611) )
- ROM_LOAD32_BYTE( "p093-c3.bin", 0x200001, 0x80000, CRC(11554065) SHA1(4a75dbcc04b5f6bf82cf22093ed3d29ae8ee4c5d) )
- ROM_LOAD32_BYTE( "p093-c4.bin", 0x200002, 0x80000, CRC(01d9c22a) SHA1(bf3f40de7f70cb5bb0fe487021ab110192c3b247) )
-ROM_END
-
-ROM_START( npscv1 ) // NP 1.10 19961015 string
- ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD16_WORD_SWAP( "np-jp1 neo-mvs progbk1.ep1", 0x000000, 0x080000, CRC(c4648dfa) SHA1(ca7770f363027e3fe2f47d77085464486c024d2a) )
-
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 program */
- ROM_LOAD( "np-m1 pstm-romc.m1", 0x00000, 0x20000, CRC(adbcad85) SHA1(76ebecea081a47b9fb133ef7793b48b51ef2f5c5) )
-
- ROM_REGION( 0x80000, "ymsnd", 0 ) /* Samples */
- ROM_LOAD( "np-v1 neo-mvs progbk1.v1", 0x000000, 0x80000, CRC(99d414e8) SHA1(5aecb09c7f18fca18f61e67047dfca06744928ed) )
-
- ROM_REGION( 0x200000, "gfx1", ROMREGION_ERASE00 )
- ROM_LOAD32_BYTE( "np-jc1 pstm-romc.c1", 0x000000, 0x080000, CRC(a729d3d4) SHA1(b0a8dfd2fc5c6707e5dd2a6d702a5d43a927c716) )
- ROM_LOAD32_BYTE( "np-jc2 pstm-romc.c2", 0x000001, 0x080000, CRC(c9687cd8) SHA1(809d9efd7ea76de0884ad76effb71217e9068f89) )
-ROM_END
-
-ROM_START( npcramen ) // ? string
- ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD16_WORD_SWAP( "l009-ep1 neo-mvs progbk1.ep1", 0x000000, 0x080000, BAD_DUMP CRC(ff470ded) SHA1(d33dd90f9ac1cc7f2dcadb6a855d9cd5f3260d00) ) // 111111111xxxxxxxxxx = 0xFF, reads were consistent, but..
-
- ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* Z80 program */
- // empty (removed or never populated)?
-
- ROM_REGION( 0x80000, "ymsnd", ROMREGION_ERASEFF ) /* Samples */
- // empty (removed or never populated)?
-
- ROM_REGION( 0x200000, "gfx1", ROMREGION_ERASE00 )
- ROM_LOAD32_BYTE( "l009-c1 pstm-romc.c1", 0x000000, 0x080000, CRC(d6b44550) SHA1(d402ffe372646b93344f7e36d29e4fe913f2479a) )
- ROM_LOAD32_BYTE( "l009-c2 pstm-romc.c2", 0x000001, 0x080000, CRC(d63dea34) SHA1(cf2dbf982ed955fe5a4c737d1752cdb66ab5f84a) )
-ROM_END
-
/* FIXME: get rid of these two, probably something to do with irq3 and camera / printer devices */
void neoprint_state::init_npcartv1()
{
@@ -844,33 +677,6 @@ void neoprint_state::init_98best44()
ROM[0x1312/2] = 0x4e71;
}
-void neoprint_state::init_npmillen()
-{
- uint16_t *ROM = (uint16_t *)memregion( "maincpu" )->base();
-
- ROM[0x1312/2] = 0x4e71;
-
- ROM[0x42a8/2] = 0x4e71; //ROM checksum
-}
-
-void neoprint_state::init_npsprgv4()
-{
- uint16_t *ROM = (uint16_t *)memregion( "maincpu" )->base();
-
- ROM[0x12e8/2] = 0x4e71;
-
- ROM[0x3ba0/2] = 0x4e71; //ROM checksum
-}
-
-void neoprint_state::init_npskv()
-{
- uint16_t *ROM = (uint16_t *)memregion( "maincpu" )->base();
-
- ROM[0x130a/2] = 0x4e71;
-
- ROM[0x3bf4/2] = 0x4e71; //ROM checksum
-}
-
void neoprint_state::init_nprsp()
{
uint16_t *ROM = (uint16_t *)memregion( "maincpu" )->base();
@@ -889,33 +695,7 @@ void neoprint_state::init_unkneo()
ROM[0x12c2/2] = 0x4e71;
}
-void neoprint_state::init_npscv1()
-{
- uint16_t *ROM = (uint16_t *)memregion( "maincpu" )->base();
- ROM[0x1242/2] = 0x4e71;
-
- ROM[0x4390/2] = 0x4e71; //ROM checksum
-}
-
-void neoprint_state::init_npotogib()
-{
- uint16_t *ROM = (uint16_t *)memregion( "maincpu" )->base();
- ROM[0x1312/2] = 0x4e71;
-
- ROM[0x3f4e/2] = 0x4e71; //ROM checksum
-}
-
-GAME( 1996, neoprint, 0, neoprint, neoprint, neoprint_state, init_unkneo, ROT0, "SNK", "Neo Print (Japan) (T2d)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
-GAME( 1996, npcartv1, 0, neoprint, neoprint, neoprint_state, init_npcartv1, ROT0, "SNK", "Neo Print V1 (World) (E1a)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
-GAME( 1996, npscv1, 0, neoprint, neoprint, neoprint_state, init_npscv1, ROT0, "SNK", "Neo Print - Senyou Cassette Ver. 1 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
-GAME( 1996, npcramen, 0, neoprint, neoprint, neoprint_state, empty_init, ROT0, "SNK", "Neo Print - Chicken Ramen (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
-GAME( 1997, npsprgv4, 0, neoprint, neoprint, neoprint_state, init_npsprgv4, ROT0, "SNK", "Neo Print - Spring Ver. 4 (Japan) (T4f 1.00)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
-GAME( 1997, npskv, 0, neoprint, neoprint, neoprint_state, init_npskv, ROT0, "SNK", "Neo Print - Suizokukan Version (Japan) (T4i 2.00)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
-GAME( 1997, npotogib, 0, neoprint, neoprint, neoprint_state, init_npotogib, ROT0, "SNK", "Neo Print - Otogibanashi (Japan) (T4i 3.00)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
-GAME( 1997, npusagif, 0, neoprint, neoprint, neoprint_state, init_98best44, ROT0, "SNK", "Neo Print - Usagi Frame (Japan) (T4i 3.07)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
-GAME( 1998, 98best44, 0, neoprint, neoprint, neoprint_state, init_98best44, ROT0, "SNK", "Neo Print - '98 NeoPri Best 44 (Japan) (T4i 3.07)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
-GAME( 1998, npsprg98, 0, neoprint, neoprint, neoprint_state, init_npmillen, ROT0, "SNK", "Neo Print - Spring '98 (T4i 3.07)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
-GAME( 1999, npmillen, 0, neoprint, neoprint, neoprint_state, init_npmillen, ROT0, "SNK", "Neo Print - Millennium Multi Shot Edition (World) (T4i 3.07)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
-GAME( 1999, npfpit, 0, neoprint, neoprint, neoprint_state, init_npmillen, ROT0, "SNK", "Neo Print - Fuyo Pri Iitoko Tori (Japan) (T4i 3.07)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
-GAME( 1996, nprsp, 0, nprsp, neoprint, neoprint_state, init_nprsp, ROT0, "SNK", "NeopriSP Retro Collection (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
-GAME( 1996, npssr2, 0, nprsp, neoprint, neoprint_state, init_nprsp, ROT0, "SNK", "Neo Print Special: Sekai Ryokou 2 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
+GAME( 1996, neoprint, 0, neoprint, neoprint, neoprint_state, init_unkneo, ROT0, "SNK", "Neo Print (Japan) (T2d)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
+GAME( 1996, npcartv1, 0, neoprint, neoprint, neoprint_state, init_npcartv1, ROT0, "SNK", "Neo Print V1 (World) (E1a)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
+GAME( 1998, 98best44, 0, neoprint, neoprint, neoprint_state, init_98best44, ROT0, "SNK", "Neo Print - '98 NeoPri Best 44 (Japan) (T4i 3.07)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
+GAME( 1996, nprsp, 0, nprsp, neoprint, neoprint_state, init_nprsp, ROT0, "SNK", "NeopriSP Retro Collection (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/neptunp2.cpp b/src/mame/drivers/neptunp2.cpp
index 3e2bc25b33d..6baed13488f 100644
--- a/src/mame/drivers/neptunp2.cpp
+++ b/src/mame/drivers/neptunp2.cpp
@@ -99,29 +99,30 @@ static GFXDECODE_START( gfx_neptunp2 )
// GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 8 )
GFXDECODE_END
-void neptunp2_state::neptunp2(machine_config &config)
-{
+MACHINE_CONFIG_START(neptunp2_state::neptunp2)
+
/* basic machine hardware */
- I80188(config, m_maincpu, 20000000); // N80C188-20 AMD
- m_maincpu->set_addrmap(AS_PROGRAM, &neptunp2_state::neptunp2_map);
- m_maincpu->set_addrmap(AS_IO, &neptunp2_state::neptunp2_io);
- m_maincpu->set_vblank_int("screen", FUNC(neptunp2_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu",I80188,20000000) // N80C188-20 AMD
+ MCFG_DEVICE_PROGRAM_MAP(neptunp2_map)
+ MCFG_DEVICE_IO_MAP(neptunp2_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", neptunp2_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_screen_update(FUNC(neptunp2_state::screen_update));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_UPDATE_DRIVER(neptunp2_state, screen_update)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, "gfxdecode", "palette", gfx_neptunp2);
- PALETTE(config, "palette").set_entries(512);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_neptunp2)
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
SPEAKER(config, "mono").front_center();
-}
+
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/nes.cpp b/src/mame/drivers/nes.cpp
index 090834d40db..34acda1dcef 100644
--- a/src/mame/drivers/nes.cpp
+++ b/src/mame/drivers/nes.cpp
@@ -165,21 +165,21 @@ void nes_state::setup_disk(nes_disksys_device *slot)
address_space &space = m_maincpu->space(AS_PROGRAM);
// Set up memory handlers
- space.install_read_handler(0x4020, 0x40ff, read8sm_delegate(FUNC(nes_disksys_device::read_ex), (nes_disksys_device *)slot));
- space.install_write_handler(0x4020, 0x40ff, write8sm_delegate(FUNC(nes_disksys_device::write_ex), (nes_disksys_device *)slot));
- space.install_read_handler(0x4100, 0x5fff, read8sm_delegate(FUNC(device_nes_cart_interface::read_l), (device_nes_cart_interface *)slot));
- space.install_write_handler(0x4100, 0x5fff, write8sm_delegate(FUNC(device_nes_cart_interface::write_l), (device_nes_cart_interface *)slot));
- space.install_read_handler(0x6000, 0x7fff, read8sm_delegate(FUNC(nes_disksys_device::read_m), (nes_disksys_device *)slot));
- space.install_write_handler(0x6000, 0x7fff, write8sm_delegate(FUNC(nes_disksys_device::write_m), (nes_disksys_device *)slot));
- space.install_read_handler(0x8000, 0xffff, read8sm_delegate(FUNC(nes_disksys_device::read_h), (nes_disksys_device *)slot));
- space.install_write_handler(0x8000, 0xffff, write8sm_delegate(FUNC(nes_disksys_device::write_h), (nes_disksys_device *)slot));
+ space.install_read_handler(0x4020, 0x40ff, read8_delegate(FUNC(nes_disksys_device::read_ex), (nes_disksys_device *)slot));
+ space.install_write_handler(0x4020, 0x40ff, write8_delegate(FUNC(nes_disksys_device::write_ex), (nes_disksys_device *)slot));
+ space.install_read_handler(0x4100, 0x5fff, read8_delegate(FUNC(device_nes_cart_interface::read_l), (device_nes_cart_interface *)slot));
+ space.install_write_handler(0x4100, 0x5fff, write8_delegate(FUNC(device_nes_cart_interface::write_l), (device_nes_cart_interface *)slot));
+ space.install_read_handler(0x6000, 0x7fff, read8_delegate(FUNC(nes_disksys_device::read_m), (nes_disksys_device *)slot));
+ space.install_write_handler(0x6000, 0x7fff, write8_delegate(FUNC(nes_disksys_device::write_m), (nes_disksys_device *)slot));
+ space.install_read_handler(0x8000, 0xffff, read8_delegate(FUNC(nes_disksys_device::read_h), (nes_disksys_device *)slot));
+ space.install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(nes_disksys_device::write_h), (nes_disksys_device *)slot));
slot->vram_alloc(0x2000);
slot->prgram_alloc(0x8000);
slot->pcb_start(machine(), m_ciram.get(), false);
- m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8sm_delegate(FUNC(device_nes_cart_interface::chr_r),(device_nes_cart_interface *)slot), write8sm_delegate(FUNC(device_nes_cart_interface::chr_w),(device_nes_cart_interface *)slot));
- m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8sm_delegate(FUNC(device_nes_cart_interface::nt_r),(device_nes_cart_interface *)slot), write8sm_delegate(FUNC(device_nes_cart_interface::nt_w),(device_nes_cart_interface *)slot));
+ m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8_delegate(FUNC(device_nes_cart_interface::chr_r),(device_nes_cart_interface *)slot), write8_delegate(FUNC(device_nes_cart_interface::chr_w),(device_nes_cart_interface *)slot));
+ m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(device_nes_cart_interface::nt_r),(device_nes_cart_interface *)slot), write8_delegate(FUNC(device_nes_cart_interface::nt_w),(device_nes_cart_interface *)slot));
m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate(FUNC(device_nes_cart_interface::scanline_irq),(device_nes_cart_interface *)slot));
m_ppu->set_hblank_callback(ppu2c0x_device::hblank_delegate(FUNC(nes_disksys_device::hblank_irq),(nes_disksys_device *)slot));
m_ppu->set_latch(ppu2c0x_device::latch_delegate(FUNC(device_nes_cart_interface::ppu_latch),(device_nes_cart_interface *)slot));
diff --git a/src/mame/drivers/nes_vt.cpp b/src/mame/drivers/nes_vt.cpp
index 9f5ef1b4f27..ba74fe07ae0 100644
--- a/src/mame/drivers/nes_vt.cpp
+++ b/src/mame/drivers/nes_vt.cpp
@@ -1506,14 +1506,14 @@ static INPUT_PORTS_START( nes_vt_fp )
PORT_DIPNAME( 0x06, 0x00, "Cartridge Select" ) PORT_CODE(KEYCODE_3) PORT_TOGGLE
PORT_DIPSETTING( 0x00, "472-in-1" )
PORT_DIPSETTING( 0x06, "128-in-1" )
-INPUT_PORTS_END
+MACHINE_CONFIG_END
static INPUT_PORTS_START( nes_vt_fa )
PORT_START("CARTSEL")
PORT_DIPNAME( 0x01, 0x00, "Cartridge Select" ) PORT_CODE(KEYCODE_3) PORT_TOGGLE
PORT_DIPSETTING( 0x00, "508-in-1" )
PORT_DIPSETTING( 0x01, "130-in-1" )
-INPUT_PORTS_END
+MACHINE_CONFIG_END
ROM_START( vdogdeme )
@@ -1581,16 +1581,6 @@ ROM_START( mc_sp69 )
ROM_LOAD( "sports game 69-in-1.prg", 0x00000, 0x400000, CRC(1242da7f) SHA1(bb8f99b1f4a4783b3f7e54d74f1f2a6a628da154) )
ROM_END
-ROM_START( polmega )
- ROM_REGION( 0x400000, "mainrom", 0 )
- ROM_LOAD( "megamax.bin", 0x00000, 0x400000, CRC(ef3aade3) SHA1(0c130080ace000cbe43e70a805d4301e05840294) )
-ROM_END
-
-ROM_START( silv35 )
- ROM_REGION( 0x400000, "mainrom", 0 )
- ROM_LOAD( "silverlit35.bin", 0x00000, 0x400000, CRC(7540e350) SHA1(a0cb456136560fa4d8a365dd44d815ec0e9fc2e7) )
-ROM_END
-
ROM_START( pjoyn50 )
ROM_REGION( 0x400000, "mainrom", 0 )
ROM_LOAD( "power joy navigator 50-in-1.prg", 0x00000, 0x400000, CRC(d1bbadd4) SHA1(2186c71bcedf6c2eedf58233faa26fca9586aa40) )
@@ -1842,10 +1832,6 @@ CONS( 200?, ii32in1, 0, 0, nes_vt, nes_vt, nes_vt_state, empty_init, "Int
// this has 'Shark' and 'Octopus' etc. like mc_dgear but uses scrambled bank registers
CONS( 200?, mc_sp69, 0, 0, nes_vt_sp69, nes_vt, nes_vt_state, empty_init, "<unknown>", "Sports Game 69 in 1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND)
-// CPU die is marked 'VH2009' There's also a 62256 RAM chip on the PCB, some scrambled opcodes?
-CONS( 200?, polmega, 0, 0, nes_vt, nes_vt, nes_vt_state, empty_init, "Polaroid", "Megamax GPD001SDG", MACHINE_NOT_WORKING )
-CONS( 200?, silv35, 0, 0, nes_vt, nes_vt, nes_vt_state, empty_init, "SilverLit", "35 in 1 Super Twins", MACHINE_NOT_WORKING )
-
// Hummer systems, scrambled bank register
CONS( 200?, mc_sam60, 0, 0, nes_vt_hum, nes_vt, nes_vt_state, empty_init, "Hummer Technology Co., Ltd.", "Samuri (60 in 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
CONS( 200?, zdog, 0, 0, nes_vt_hum, nes_vt, nes_vt_state, empty_init, "Hummer Technology Co., Ltd.", "ZDog (44 in 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/newbrain.cpp b/src/mame/drivers/newbrain.cpp
index f8ae3adb39d..24516b7d654 100644
--- a/src/mame/drivers/newbrain.cpp
+++ b/src/mame/drivers/newbrain.cpp
@@ -92,7 +92,7 @@ READ8_MEMBER( newbrain_state::mreq_r )
{
bool romov = 1, raminh = 0;
int exrm = 0;
- uint8_t data = m_exp->mreq_r(offset, 0xff, romov, exrm, raminh);
+ uint8_t data = m_exp->mreq_r(space, offset, 0xff, romov, exrm, raminh);
int rom0 = 1, rom1 = 1, rom2 = 1;
int a15_14_13 = romov ? (offset >> 13) : exrm;
@@ -138,7 +138,7 @@ WRITE8_MEMBER( newbrain_state::mreq_w )
{
bool romov = 1, raminh = 0;
int exrm = 0;
- m_exp->mreq_w(offset, data, romov, exrm, raminh);
+ m_exp->mreq_w(space, offset, data, romov, exrm, raminh);
int a15_14_13 = romov ? (offset >> 13) : exrm;
if (!m_pwrup) a15_14_13 = 7;
@@ -158,7 +158,7 @@ WRITE8_MEMBER( newbrain_state::mreq_w )
READ8_MEMBER( newbrain_state::iorq_r )
{
bool prtov = 0;
- uint8_t data = m_exp->iorq_r(offset, 0xff, prtov);
+ uint8_t data = m_exp->iorq_r(space, offset, 0xff, prtov);
if (!prtov)
{
@@ -201,7 +201,7 @@ READ8_MEMBER( newbrain_state::iorq_r )
WRITE8_MEMBER( newbrain_state::iorq_w )
{
bool prtov = 0;
- m_exp->iorq_w(offset, 0xff, prtov);
+ m_exp->iorq_w(space, offset, 0xff, prtov);
if (!prtov)
{
@@ -806,11 +806,10 @@ void newbrain_state::device_timer(emu_timer &timer, device_timer_id id, int para
//**************************************************************************
//-------------------------------------------------
-// machine_config( newbrain )
+// MACHINE_CONFIG( newbrain )
//-------------------------------------------------
-void newbrain_state::newbrain(machine_config &config)
-{
+MACHINE_CONFIG_START(newbrain_state::newbrain)
// basic system hardware
Z80(config, m_maincpu, XTAL(16'000'000)/4);
m_maincpu->set_addrmap(AS_PROGRAM, &newbrain_state::newbrain_mreq);
@@ -830,7 +829,7 @@ void newbrain_state::newbrain(machine_config &config)
newbrain_video(config);
// devices
- NEWBRAIN_EXPANSION_SLOT(config, m_exp, XTAL(16'000'000)/4, newbrain_expansion_cards, "eim");
+ MCFG_NEWBRAIN_EXPANSION_SLOT_ADD(NEWBRAIN_EXPANSION_SLOT_TAG, XTAL(16'000'000)/4, newbrain_expansion_cards, "eim")
CASSETTE(config, m_cassette1);
m_cassette1->set_default_state((cassette_state)(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED));
@@ -843,11 +842,11 @@ void newbrain_state::newbrain(machine_config &config)
// internal ram
RAM(config, RAM_TAG).set_default_size("32K");
-}
+MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( newbrain_ad )
+// MACHINE_CONFIG( newbrain_ad )
//-------------------------------------------------
void newbrain_state::newbrain_ad(machine_config &config)
@@ -858,7 +857,7 @@ void newbrain_state::newbrain_ad(machine_config &config)
//-------------------------------------------------
-// machine_config( newbrain_a )
+// MACHINE_CONFIG( newbrain_a )
//-------------------------------------------------
void newbrain_state::newbrain_a(machine_config &config)
@@ -869,7 +868,7 @@ void newbrain_state::newbrain_a(machine_config &config)
//-------------------------------------------------
-// machine_config( newbrain_md )
+// MACHINE_CONFIG( newbrain_md )
//-------------------------------------------------
void newbrain_state::newbrain_md(machine_config &config)
diff --git a/src/mame/drivers/news.cpp b/src/mame/drivers/news.cpp
index 28029890885..f3314c0a476 100644
--- a/src/mame/drivers/news.cpp
+++ b/src/mame/drivers/news.cpp
@@ -130,22 +130,22 @@ void news_state::machine_reset()
m_bgpic = 0;
}
-void news_state::news(machine_config &config)
-{
+MACHINE_CONFIG_START(news_state::news)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 8000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &news_state::news_map);
- m_maincpu->set_vblank_int("screen", FUNC(news_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,8000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(news_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", news_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 16, 256-16-1);
- screen.set_screen_update(FUNC(news_state::screen_update_news));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(news_state, screen_update_news)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_news);
PALETTE(config, "palette").set_format(palette_device::xRGB_444, 0x100).set_endianness(ENDIANNESS_BIG);
@@ -153,8 +153,9 @@ void news_state::news(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/next.cpp b/src/mame/drivers/next.cpp
index c7fe7db08a9..c35c99d64dd 100644
--- a/src/mame/drivers/next.cpp
+++ b/src/mame/drivers/next.cpp
@@ -995,28 +995,28 @@ static void next_scsi_devices(device_slot_interface &device)
void next_state::ncr5390(device_t *device)
{
- ncr5390_device &adapter = downcast<ncr5390_device &>(*device);
-
- adapter.set_clock(10000000);
- adapter.irq_handler_cb().set(*this, FUNC(next_state::scsi_irq));
- adapter.drq_handler_cb().set(*this, FUNC(next_state::scsi_drq));
+ devcb_base *devcb;
+ (void)devcb;
+ MCFG_DEVICE_CLOCK(10000000)
+ MCFG_NCR5390_IRQ_HANDLER(WRITELINE(*this, next_state, scsi_irq))
+ MCFG_NCR5390_DRQ_HANDLER(WRITELINE(*this, next_state, scsi_drq))
}
-void next_state::next_base(machine_config &config)
-{
+MACHINE_CONFIG_START(next_state::next_base)
+
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(next_state::screen_update));
- screen.set_size(1120, 900);
- screen.set_visarea(0, 1120-1, 0, 832-1);
- screen.screen_vblank().set(FUNC(next_state::vblank_w));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(next_state, screen_update)
+ MCFG_SCREEN_SIZE(1120, 900)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1120-1, 0, 832-1)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, next_state, vblank_w))
// devices
- NSCSI_BUS(config, "scsibus");
+ MCFG_NSCSI_BUS_ADD("scsibus")
- MCCS1850(config, rtc, XTAL(32'768));
+ MCFG_DEVICE_ADD("rtc", MCCS1850, XTAL(32'768))
SCC8530(config, scc, XTAL(25'000'000));
scc->intrq_callback().set(FUNC(next_state::scc_irq));
@@ -1026,14 +1026,15 @@ void next_state::next_base(machine_config &config)
keyboard->int_power_wr_callback().set(FUNC(next_state::power_irq));
keyboard->int_nmi_wr_callback().set(FUNC(next_state::nmi_irq));
- NSCSI_CONNECTOR(config, "scsibus:0", next_scsi_devices, "harddisk");
- NSCSI_CONNECTOR(config, "scsibus:1", next_scsi_devices, "cdrom");
- NSCSI_CONNECTOR(config, "scsibus:2", next_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:3", next_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:4", next_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:5", next_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:6", next_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:7", next_scsi_devices, "ncr5390", true).set_option_machine_config("ncr5390", [this] (device_t *device) { ncr5390(device); });
+ MCFG_NSCSI_ADD("scsibus:0", next_scsi_devices, "harddisk", false)
+ MCFG_NSCSI_ADD("scsibus:1", next_scsi_devices, "cdrom", false)
+ MCFG_NSCSI_ADD("scsibus:2", next_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:3", next_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:4", next_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:5", next_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:6", next_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:7", next_scsi_devices, "ncr5390", true)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("ncr5390", [this] (device_t *device) { ncr5390(device); })
MB8795(config, net, 0);
net->tx_irq().set(FUNC(next_state::net_tx_irq));
@@ -1044,77 +1045,70 @@ void next_state::next_base(machine_config &config)
NEXTMO(config, mo, 0);
mo->irq_wr_callback().set(FUNC(next_state::mo_irq));
mo->drq_wr_callback().set(FUNC(next_state::mo_drq));
-}
+MACHINE_CONFIG_END
-void next_state::next(machine_config &config)
-{
+MACHINE_CONFIG_START(next_state::next)
next_base(config);
- M68030(config, maincpu, XTAL(25'000'000));
- maincpu->set_addrmap(AS_PROGRAM, &next_state::next_0b_m_nofdc_mem);
-}
+ MCFG_DEVICE_ADD("maincpu", M68030, XTAL(25'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(next_0b_m_nofdc_mem)
+MACHINE_CONFIG_END
-void next_state::next_fdc_base(machine_config &config)
-{
+MACHINE_CONFIG_START(next_state::next_fdc_base)
next_base(config);
N82077AA(config, fdc, n82077aa_device::MODE_PS2);
fdc->intrq_wr_callback().set(FUNC(next_state::fdc_irq));
fdc->drq_wr_callback().set(FUNC(next_state::fdc_drq));
- FLOPPY_CONNECTOR(config, "fdc:0", next_floppies, "35ed", next_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", next_floppies, "35ed", next_state::floppy_formats)
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("next");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "next")
+MACHINE_CONFIG_END
-void next_state::nexts(machine_config &config)
-{
+MACHINE_CONFIG_START(next_state::nexts)
next_fdc_base(config);
- M68040(config, maincpu, XTAL(25'000'000));
- maincpu->set_addrmap(AS_PROGRAM, &next_state::next_0b_m_mem);
-}
+ MCFG_DEVICE_ADD("maincpu", M68040, XTAL(25'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(next_0b_m_mem)
+MACHINE_CONFIG_END
-void next_state::nexts2(machine_config &config)
-{
+MACHINE_CONFIG_START(next_state::nexts2)
next_fdc_base(config);
- M68040(config, maincpu, XTAL(25'000'000));
- maincpu->set_addrmap(AS_PROGRAM, &next_state::next_0b_m_mem);
-}
+ MCFG_DEVICE_ADD("maincpu", M68040, XTAL(25'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(next_0b_m_mem)
+MACHINE_CONFIG_END
-void next_state::nextsc(machine_config &config)
-{
+MACHINE_CONFIG_START(next_state::nextsc)
next_fdc_base(config);
- M68040(config, maincpu, XTAL(25'000'000));
- maincpu->set_addrmap(AS_PROGRAM, &next_state::next_2c_c_mem);
-}
+ MCFG_DEVICE_ADD("maincpu", M68040, XTAL(25'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(next_2c_c_mem)
+MACHINE_CONFIG_END
-void next_state::nextst(machine_config &config)
-{
+MACHINE_CONFIG_START(next_state::nextst)
next_fdc_base(config);
- M68040(config, maincpu, XTAL(33'000'000));
- maincpu->set_addrmap(AS_PROGRAM, &next_state::next_0b_m_mem);
-}
+ MCFG_DEVICE_ADD("maincpu", M68040, XTAL(33'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(next_0b_m_mem)
+MACHINE_CONFIG_END
-void next_state::nextstc(machine_config &config)
-{
+MACHINE_CONFIG_START(next_state::nextstc)
next_fdc_base(config);
- M68040(config, maincpu, XTAL(33'000'000));
- maincpu->set_addrmap(AS_PROGRAM, &next_state::next_0c_c_mem);
- subdevice<screen_device>("screen")->set_visarea(0, 832-1, 0, 624-1);
-}
+ MCFG_DEVICE_ADD("maincpu", M68040, XTAL(33'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(next_0c_c_mem)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 832-1, 0, 624-1)
+MACHINE_CONFIG_END
-void next_state::nextct(machine_config &config)
-{
+MACHINE_CONFIG_START(next_state::nextct)
next_fdc_base(config);
- M68040(config, maincpu, XTAL(33'000'000));
- maincpu->set_addrmap(AS_PROGRAM, &next_state::next_0c_m_mem);
-}
+ MCFG_DEVICE_ADD("maincpu", M68040, XTAL(33'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(next_0c_m_mem)
+MACHINE_CONFIG_END
-void next_state::nextctc(machine_config &config)
-{
+MACHINE_CONFIG_START(next_state::nextctc)
next_fdc_base(config);
- M68040(config, maincpu, XTAL(33'000'000));
- maincpu->set_addrmap(AS_PROGRAM, &next_state::next_0c_c_mem);
- subdevice<screen_device>("screen")->set_visarea(0, 832-1, 0, 624-1);
-}
+ MCFG_DEVICE_ADD("maincpu", M68040, XTAL(33'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(next_0c_c_mem)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 832-1, 0, 624-1)
+MACHINE_CONFIG_END
/* ROM definition */
#define ROM_NEXT_V1 \
diff --git a/src/mame/drivers/nexus3d.cpp b/src/mame/drivers/nexus3d.cpp
index 14d04558fd8..d8b1622050f 100644
--- a/src/mame/drivers/nexus3d.cpp
+++ b/src/mame/drivers/nexus3d.cpp
@@ -122,23 +122,24 @@ void nexus3d_state::machine_reset()
{
}
-void nexus3d_state::nexus3d(machine_config &config)
-{
+MACHINE_CONFIG_START(nexus3d_state::nexus3d)
+
/* basic machine hardware */
- ARM920T(config, m_maincpu, 200000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &nexus3d_state::nexus3d_map);
+ MCFG_DEVICE_ADD("maincpu", ARM920T, 200000000)
+ MCFG_DEVICE_PROGRAM_MAP(nexus3d_map)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(320, 256);
- screen.set_visarea(0, 320-1, 0, 256-1);
- screen.set_screen_update(FUNC(nexus3d_state::screen_update_nexus3d));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(320, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(nexus3d_state, screen_update_nexus3d)
- PALETTE(config, "palette").set_entries(256);
+ MCFG_PALETTE_ADD("palette", 256)
SERFLASH(config, m_serflash, 0);
-}
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/nforcepc.cpp b/src/mame/drivers/nforcepc.cpp
index 3bb38d17b8b..9eeba267bc5 100644
--- a/src/mame/drivers/nforcepc.cpp
+++ b/src/mame/drivers/nforcepc.cpp
@@ -4,7 +4,7 @@
/*
Computer based on a motherboard utilizing the nForce chipset (also known as CRUSH11 or CRUSH12)
- Start with the following components:
+ Start with the following compoents:
- An Asus A7N266-C motherboard using:
- nForce 415-D northbridge
- nForce MCP-D southbridge (with integrated APU)
@@ -14,7 +14,6 @@
- An IDE hard disk
- A floppy disk drive
- A keyboard
- - A ddr dimm memory module
Later add:
- A Nvidia NV25 based AGP video card
@@ -25,29 +24,18 @@
#include "cpu/i386/i386.h"
#include "machine/pci.h"
#include "machine/pci-ide.h"
-#include "includes/xbox_pci.h"
#include "includes/nforcepc.h"
-// for now let's use this as the contents of the spd chip in the ddr dimm memory module
-static const uint8_t test_spd_data[] = {
- 0x80,0x08,0x07,0x0D,0x0A,0x01,0x40,0x00,0x04,0x75,0x75,0x00,0x82,0x10,0x00,0x01,0x0E,0x04,0x0C,0x01,0x02,0x20,0xC0,0xA0,0x75,0x00,
- 0x00,0x50,0x3C,0x50,0x2D,0x40,0x90,0x90,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x41,0x4B,0x30,0x32,0x75,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEA,0xAD,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x59,0x4D,0x44,0x35,
- 0x33,0x32,0x4D,0x36,0x34,0x36,0x43,0x36,0x2D,0x48,0x20,0x20,0x20
-};
-
/*
Pci devices
*/
-// NVIDIA Corporation nForce CPU bridge
-
DEFINE_DEVICE_TYPE(CRUSH11, crush11_host_device, "crush11", "NVIDIA Corporation nForce CPU bridge")
void crush11_host_device::config_map(address_map &map)
{
pci_host_device::config_map(map);
- map(0xf0, 0xf0).rw(FUNC(crush11_host_device::test_r), FUNC(crush11_host_device::test_w));
+ map(0x50, 0x50).rw(FUNC(crush11_host_device::test_r), FUNC(crush11_host_device::test_w));
}
crush11_host_device::crush11_host_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
@@ -102,7 +90,7 @@ void crush11_host_device::map_extra(uint64_t memory_window_start, uint64_t memor
READ8_MEMBER(crush11_host_device::test_r)
{
- return 4;
+ return 0;
}
WRITE8_MEMBER(crush11_host_device::test_w)
@@ -111,156 +99,13 @@ WRITE8_MEMBER(crush11_host_device::test_w)
}
/*
- Ddevices connected to SMBus
-*/
-
-// access logger
-
-DEFINE_DEVICE_TYPE(SMBUS_LOGGER, smbus_logger_device, "smbus_logger", "SMBUS LOGGER")
-
-smbus_logger_device::smbus_logger_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SMBUS_LOGGER, tag, owner, clock)
-{
-}
-
-int smbus_logger_device::execute_command(int command, int rw, int data)
-{
- if (rw == 1)
- {
- logerror("smbus read from %02x R %02x\n", command, buffer[command]);
- return buffer[command];
- }
- buffer[command] = (uint8_t)data;
- logerror("smbus write to %02x W %02x\n", command, data);
- return 0;
-}
-
-void smbus_logger_device::device_start()
-{
- memset(buffer, 0, sizeof(buffer));
-}
-
-void smbus_logger_device::device_reset()
-{
-}
-
-// read-only data
-
-DEFINE_DEVICE_TYPE(SMBUS_ROM, smbus_rom_device, "smbus_rom", "SMBUS ROM")
-
-smbus_rom_device::smbus_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SMBUS_ROM, tag, owner, clock)
-{
-}
-
-smbus_rom_device::smbus_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, const uint8_t *data, int size) :
- smbus_rom_device(mconfig, tag, owner, clock)
-{
- buffer = data;
- buffer_size = size;
-}
-
-int smbus_rom_device::execute_command(int command, int rw, int data)
-{
- if ((rw == 1) && (command < buffer_size) && (buffer != nullptr))
- {
- logerror("smbus rom read from %02x %02x\n", command, buffer[command]);
- return buffer[command];
- }
- return 0;
-}
-
-void smbus_rom_device::device_start()
-{
-}
-
-void smbus_rom_device::device_reset()
-{
-}
-
-// Asus AS99127F chip
-
-DEFINE_DEVICE_TYPE(AS99127F, as99127f_device, "as99127f", "Asus AS99127F")
-
-as99127f_device::as99127f_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, AS99127F, tag, owner, clock)
-{
-}
-
-int as99127f_device::execute_command(int command, int rw, int data)
-{
- if (rw == 1)
- {
- logerror("smbus read from %02x R %02x\n", command, buffer[command]);
- return buffer[command];
- }
- buffer[command] = (uint8_t)data;
- logerror("smbus write to %02x W %02x\n", command, data);
- return 0;
-}
-
-void as99127f_device::device_start()
-{
- memset(buffer, 0, sizeof(buffer));
-}
-
-DEFINE_DEVICE_TYPE(AS99127F_SENSOR2, as99127f_sensor2_device, "as99127f_sensor2", "Asus AS99127F temperature sensor 2")
-
-as99127f_sensor2_device::as99127f_sensor2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, AS99127F_SENSOR2, tag, owner, clock)
-{
-}
-
-int as99127f_sensor2_device::execute_command(int command, int rw, int data)
-{
- if (rw == 1)
- {
- logerror("smbus read from %02x R %02x\n", command, buffer[command]);
- return buffer[command];
- }
- buffer[command] = (uint8_t)data;
- logerror("smbus write to %02x W %02x\n", command, data);
- return 0;
-}
-
-void as99127f_sensor2_device::device_start()
-{
- memset(buffer, 0, sizeof(buffer));
-}
-
-DEFINE_DEVICE_TYPE(AS99127F_SENSOR3, as99127f_sensor3_device, "as99127f_sensor3", "Asus AS99127F temperature sensor 3")
-
-as99127f_sensor3_device::as99127f_sensor3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, AS99127F_SENSOR3, tag, owner, clock)
-{
-}
-
-int as99127f_sensor3_device::execute_command(int command, int rw, int data)
-{
- if (rw == 1)
- {
- logerror("smbus read from %02x R %02x\n", command, buffer[command]);
- return buffer[command];
- }
- buffer[command] = (uint8_t)data;
- logerror("smbus write to %02x W %02x\n", command, data);
- return 0;
-}
-
-void as99127f_sensor3_device::device_start()
-{
- memset(buffer, 0, sizeof(buffer));
-}
-
-/*
Machine state
*/
class nforcepc_state : public driver_device
{
public:
- struct boot_state_info
- {
+ struct boot_state_info {
uint8_t val;
const char *const message;
};
@@ -275,28 +120,17 @@ private:
void nforce_map(address_map &map);
void nforce_map_io(address_map &map);
DECLARE_WRITE8_MEMBER(boot_state_award_w);
- IRQ_CALLBACK_MEMBER(irq_callback);
- DECLARE_WRITE_LINE_MEMBER(maincpu_interrupt);
virtual void machine_start() override;
virtual void machine_reset() override;
-
- required_device<cpu_device> m_maincpu;
- required_device<mcpx_isalpc_device> isalpc;
- required_device<as99127f_device> m_as99127f;
};
-nforcepc_state::nforcepc_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- isalpc(*this, ":pci:01.0"),
- m_as99127f(*this, ":pci:01.1:12d")
+nforcepc_state::nforcepc_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag)
{
}
void nforcepc_state::machine_start()
{
- m_as99127f->get_buffer()[0x4f] = 0x12;
}
void nforcepc_state::machine_reset()
@@ -304,30 +138,19 @@ void nforcepc_state::machine_reset()
}
const nforcepc_state::boot_state_info nforcepc_state::boot_state_infos_award[] = {
- { 0xC0, "Turn off chipset cache" },
{ 0, nullptr }
};
WRITE8_MEMBER(nforcepc_state::boot_state_award_w)
{
const char *desc = "";
- for (int i = 0; boot_state_infos_award[i].message; i++)
- if (boot_state_infos_award[i].val == data)
- {
+ for(int i=0; boot_state_infos_award[i].message; i++)
+ if(boot_state_infos_award[i].val == data) {
desc = boot_state_infos_award[i].message;
break;
}
logerror("Boot state %02x - %s\n", data, desc);
-}
-
-IRQ_CALLBACK_MEMBER(nforcepc_state::irq_callback)
-{
- return isalpc->acknowledge();
-}
-WRITE_LINE_MEMBER(nforcepc_state::maincpu_interrupt)
-{
- m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
}
void nforcepc_state::nforce_map(address_map &map)
@@ -349,33 +172,14 @@ void nforcepc_state::nforcepc(machine_config &config)
athlonxp_device &maincpu(ATHLONXP(config, "maincpu", 90000000));
maincpu.set_addrmap(AS_PROGRAM, &nforcepc_state::nforce_map);
maincpu.set_addrmap(AS_IO, &nforcepc_state::nforce_map_io);
- maincpu.set_irq_acknowledge_callback(FUNC(nforcepc_state::irq_callback));
-
PCI_ROOT(config, ":pci", 0);
- CRUSH11(config, ":pci:00.0", 0, "maincpu", 2 * 1024 * 1024); /* 10de:01a4 NVIDIA Corporation nForce CPU bridge
- 10de:01ac NVIDIA Corporation nForce 220/420 Memory Controller
- 10de:01ad NVIDIA Corporation nForce 220/420 Memory Controller
- 10de:01ab NVIDIA Corporation nForce 420 Memory Controller (DDR)*/
- mcpx_isalpc_device &isa(MCPX_ISALPC(config, ":pci:01.0", 0, 0x10430c11)); // 10de:01b2 NVIDIA Corporation nForce ISA Bridge (LPC bus)
- isa.boot_state_hook().set(FUNC(nforcepc_state::boot_state_award_w));
- isa.interrupt_output().set(FUNC(nforcepc_state::maincpu_interrupt));
- MCPX_SMBUS(config, ":pci:01.1", 0); // 10de:01b4 NVIDIA Corporation nForce PCI System Management (SMBus)
- SMBUS_ROM(config, ":pci:01.1:050", 0, test_spd_data, sizeof(test_spd_data)); // these 3 are on smbus number 0
- SMBUS_LOGGER(config, ":pci:01.1:051", 0);
- SMBUS_LOGGER(config, ":pci:01.1:052", 0);
- SMBUS_LOGGER(config, ":pci:01.1:108", 0); // these 4 are on smbus number 1
- AS99127F(config, ":pci:01.1:12d", 0);
- AS99127F_SENSOR2(config, ":pci:01.1:148", 0);
- AS99127F_SENSOR3(config, ":pci:01.1:149", 0);
- /*10de:01c2 NVIDIA Corporation nForce USB Controller
- 10de:01c2 NVIDIA Corporation nForce USB Controller
- 10de:01b0 NVIDIA Corporation nForce Audio Processing Unit
- 10de:01b1 NVIDIA Corporation nForce AC'97 Audio Controller
- 10de:01b8 NVIDIA Corporation nForce PCI-to-PCI bridge
- 10de:01bc NVIDIA Corporation nForce IDE
- 10de:01b7 NVIDIA Corporation nForce AGP to PCI Bridge
- */
- /* maincpu.smiact().set("pci:00.0", FUNC(i82439hx_host_device::smi_act_w));
+ CRUSH11(config, ":pci:00.0", 0, "maincpu", 2 * 1024 * 1024);
+ /* maincpu.set_irq_acknowledge_callback("pci:07.0:pic8259_master", FUNC(pic8259_device::inta_cb));
+ maincpu.smiact().set("pci:00.0", FUNC(i82439hx_host_device::smi_act_w));
+
+ i82371sb_isa_device &isa(I82371SB_ISA(config, ":pci:07.0", 0));
+ isa.boot_state_hook().set(FUNC(nforcepc_state::boot_state_phoenix_ver40_rev6_w));
+ isa.smi().set_inputline(":maincpu", INPUT_LINE_SMI);
i82371sb_ide_device &ide(I82371SB_IDE(config, ":pci:07.1", 0));
ide.irq_pri().set(":pci:07.0", FUNC(i82371sb_isa_device::pc_irq14_w));
@@ -385,9 +189,9 @@ void nforcepc_state::nforcepc(machine_config &config)
ROM_START(nforcepc)
ROM_REGION32_LE(0x40000, ":pci:00.0", 0) /* PC bios */
ROM_SYSTEM_BIOS(0, "a7n266c", "a7n266c") // Motherboard dump. Chip: SST49LF020 Package: PLCC32 Label had 3 lines of text: "A7NC3" "1001.D" "GSQ98"
- ROMX_LOAD("a7n266c.bin", 0, 0x40000, CRC(f4f0e4fc) SHA1(87f11545db178914623e41fb51e328da479a2efc), ROM_BIOS(0))
- ROM_SYSTEM_BIOS(1, "a7n266c1001d", "a7n266c1001d") // bios version 1001.D downloaded from Asus website
- ROMX_LOAD("a7nc101d.awd", 0, 0x40000, CRC(ead1147c) SHA1(27227df98e0c5fb9fecdb4bb6ef72df19766c330), ROM_BIOS(1))
+ ROMX_LOAD("a7n266c.bin", 0, 0x40000, CRC(F4F0E4FC), ROM_BIOS(0))
+ ROM_SYSTEM_BIOS(1, "a7n266c1001d", "a7n266c1001d") // bios version 1001.D dwonloaded from Asus website
+ ROMX_LOAD("a7nc101d.awd", 0, 0x40000, CRC(EAD1147C), ROM_BIOS(1))
ROM_END
static INPUT_PORTS_START(nforcepc)
diff --git a/src/mame/drivers/ngen.cpp b/src/mame/drivers/ngen.cpp
index c250242658d..eb8c8ad9804 100644
--- a/src/mame/drivers/ngen.cpp
+++ b/src/mame/drivers/ngen.cpp
@@ -307,7 +307,7 @@ WRITE16_MEMBER(ngen_state::peripheral_w)
case 0x0e:
case 0x0f:
if(ACCESSING_BITS_0_7)
- m_dmac->write(offset,data & 0xff);
+ m_dmac->write(space,offset,data & 0xff);
break;
case 0x80: // DMA page offset?
case 0x81:
@@ -340,11 +340,11 @@ WRITE16_MEMBER(ngen_state::peripheral_w)
break;
case 0x144:
if(ACCESSING_BITS_0_7)
- m_crtc->address_w(data & 0xff);
+ m_crtc->address_w(space,0,data & 0xff);
break;
case 0x145:
if(ACCESSING_BITS_0_7)
- m_crtc->register_w(data & 0xff);
+ m_crtc->register_w(space,0,data & 0xff);
break;
case 0x146:
case 0x147:
@@ -381,7 +381,7 @@ READ16_MEMBER(ngen_state::peripheral_r)
case 0x0e:
case 0x0f:
if(ACCESSING_BITS_0_7)
- ret = m_dmac->read(offset);
+ ret = m_dmac->read(space,offset);
logerror("DMA read offset %04x mask %04x returning %04x\n",offset,mem_mask,ret);
break;
case 0x80: // DMA page offset?
@@ -411,11 +411,11 @@ READ16_MEMBER(ngen_state::peripheral_r)
break;
case 0x144:
if(ACCESSING_BITS_0_7)
- ret = m_crtc->status_r();
+ ret = m_crtc->status_r(space,0);
break;
case 0x145:
if(ACCESSING_BITS_0_7)
- ret = m_crtc->register_r();
+ ret = m_crtc->register_r(space,0);
break;
case 0x146:
case 0x147: // keyboard UART
@@ -534,7 +534,7 @@ WRITE16_MEMBER(ngen_state::hfd_w)
case 0x16:
case 0x17:
if(ACCESSING_BITS_0_7)
- m_hdc->write(offset-0x10,data & 0xff);
+ m_hdc->write(space,offset-0x10,data & 0xff);
logerror("WD1010 register %i write %02x mask %04x\n",offset-0x10,data & 0xff,mem_mask);
break;
case 0x18:
@@ -583,7 +583,7 @@ READ16_MEMBER(ngen_state::hfd_r)
case 0x16:
case 0x17:
if(ACCESSING_BITS_0_7)
- ret = m_hdc->read(offset-0x10);
+ ret = m_hdc->read(space,offset-0x10);
logerror("WD1010 register %i read, mask %04x\n",offset-0x10,mem_mask);
break;
case 0x18:
@@ -814,7 +814,7 @@ READ16_MEMBER( ngen_state::b38_crtc_r )
{
case 0:
if(ACCESSING_BITS_0_7)
- ret = m_crtc->register_r();
+ ret = m_crtc->register_r(space,0);
break;
case 1:
if(ACCESSING_BITS_0_7)
@@ -830,11 +830,11 @@ WRITE16_MEMBER( ngen_state::b38_crtc_w )
{
case 0:
if(ACCESSING_BITS_0_7)
- m_crtc->address_w(data & 0xff);
+ m_crtc->address_w(space,0,data & 0xff);
break;
case 1:
if(ACCESSING_BITS_0_7)
- m_crtc->register_w(data & 0xff);
+ m_crtc->register_w(space,0,data & 0xff);
break;
}
}
diff --git a/src/mame/drivers/ngp.cpp b/src/mame/drivers/ngp.cpp
index 567969f18b7..2d383252057 100644
--- a/src/mame/drivers/ngp.cpp
+++ b/src/mame/drivers/ngp.cpp
@@ -168,12 +168,12 @@ private:
emu_timer* m_seconds_timer;
struct {
- int present;
+ int present;
uint8_t manufacturer_id;
uint8_t device_id;
uint8_t *data;
uint8_t org_data[16];
- int state;
+ int state;
uint8_t command[2];
} m_flash_chip[2];
@@ -186,27 +186,27 @@ private:
required_shared_ptr<uint8_t> m_mainram;
required_device<k1ge_device> m_k1ge;
- uint8_t ngp_io_r(offs_t offset);
- void ngp_io_w(offs_t offset, uint8_t data);
+ DECLARE_READ8_MEMBER( ngp_io_r );
+ DECLARE_WRITE8_MEMBER( ngp_io_w );
- template <int Which> void flash_w(offs_t offset, uint8_t data);
- void flash0_w(offs_t offset, uint8_t data);
- void flash1_w(offs_t offset, uint8_t data);
+ void flash_w( int which, offs_t offset, uint8_t data );
+ DECLARE_WRITE8_MEMBER( flash0_w );
+ DECLARE_WRITE8_MEMBER( flash1_w );
- uint8_t ngp_z80_comm_r();
- void ngp_z80_comm_w(uint8_t data);
- void ngp_z80_signal_main_w(uint8_t data);
+ DECLARE_READ8_MEMBER( ngp_z80_comm_r );
+ DECLARE_WRITE8_MEMBER( ngp_z80_comm_w );
+ DECLARE_WRITE8_MEMBER( ngp_z80_signal_main_w );
- void ngp_z80_clear_irq(uint8_t data);
+ DECLARE_WRITE8_MEMBER( ngp_z80_clear_irq );
- DECLARE_WRITE_LINE_MEMBER(ngp_vblank_pin_w);
- DECLARE_WRITE_LINE_MEMBER(ngp_hblank_pin_w);
- void ngp_tlcs900_porta(offs_t offset, uint8_t data);
+ DECLARE_WRITE_LINE_MEMBER( ngp_vblank_pin_w );
+ DECLARE_WRITE_LINE_MEMBER( ngp_hblank_pin_w );
+ DECLARE_WRITE8_MEMBER( ngp_tlcs900_porta );
uint32_t screen_update_ngp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(ngp_seconds_callback);
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER(ngp_cart);
- DECLARE_DEVICE_IMAGE_UNLOAD_MEMBER(ngp_cart);
+ DECLARE_DEVICE_IMAGE_LOAD_MEMBER( ngp_cart);
+ DECLARE_DEVICE_IMAGE_UNLOAD_MEMBER( ngp_cart );
void ngp_mem(address_map &map);
void z80_io(address_map &map);
@@ -225,28 +225,28 @@ private:
TIMER_CALLBACK_MEMBER(ngp_state::ngp_seconds_callback)
{
m_io_reg[0x16] += 1;
- if ((m_io_reg[0x16] & 0x0f) == 0x0a)
+ if ( ( m_io_reg[0x16] & 0x0f ) == 0x0a )
{
m_io_reg[0x16] += 0x06;
}
- if (m_io_reg[0x16] >= 0x60)
+ if ( m_io_reg[0x16] >= 0x60 )
{
m_io_reg[0x16] = 0;
m_io_reg[0x15] += 1;
- if ((m_io_reg[0x15] & 0x0f) == 0x0a) {
+ if ( ( m_io_reg[0x15] & 0x0f ) == 0x0a ) {
m_io_reg[0x15] += 0x06;
}
- if (m_io_reg[0x15] >= 0x60)
+ if ( m_io_reg[0x15] >= 0x60 )
{
m_io_reg[0x15] = 0;
m_io_reg[0x14] += 1;
- if ((m_io_reg[0x14] & 0x0f) == 0x0a) {
+ if ( ( m_io_reg[0x14] & 0x0f ) == 0x0a ) {
m_io_reg[0x14] += 0x06;
}
- if (m_io_reg[0x14] == 0x24)
+ if ( m_io_reg[0x14] == 0x24 )
{
m_io_reg[0x14] = 0;
}
@@ -255,11 +255,11 @@ TIMER_CALLBACK_MEMBER(ngp_state::ngp_seconds_callback)
}
-uint8_t ngp_state::ngp_io_r(offs_t offset)
+READ8_MEMBER( ngp_state::ngp_io_r )
{
uint8_t data = m_io_reg[offset];
- switch (offset)
+ switch( offset )
{
case 0x30: /* Read controls */
data = m_io_controls->read();
@@ -274,15 +274,15 @@ uint8_t ngp_state::ngp_io_r(offs_t offset)
}
-void ngp_state::ngp_io_w(offs_t offset, uint8_t data)
+WRITE8_MEMBER( ngp_state::ngp_io_w )
{
- switch (offset)
+ switch( offset )
{
case 0x20: /* t6w28 "right" */
case 0x21: /* t6w28 "left" */
- if (m_io_reg[0x38] == 0x55 && m_io_reg[0x39] == 0xAA)
+ if ( m_io_reg[0x38] == 0x55 && m_io_reg[0x39] == 0xAA )
{
- m_t6w28->write(0, data);
+ m_t6w28->write( space, 0, data );
}
break;
@@ -298,27 +298,27 @@ void ngp_state::ngp_io_w(offs_t offset, uint8_t data)
case 0x37:
break;
case 0x38: /* Sound enable/disable. */
- switch (data)
+ switch( data )
{
case 0x55: /* Enabled sound */
- m_t6w28->set_enable(true);
+ m_t6w28->set_enable( true );
break;
case 0xAA: /* Disable sound */
- m_t6w28->set_enable(false);
+ m_t6w28->set_enable( false );
break;
}
break;
case 0x39: /* Z80 enable/disable. */
- switch (data)
+ switch( data )
{
case 0x55: /* Enable Z80 */
- m_z80->resume(SUSPEND_REASON_HALT);
+ m_z80->resume(SUSPEND_REASON_HALT );
m_z80->reset();
- m_z80->set_input_line(0, CLEAR_LINE);
+ m_z80->set_input_line(0, CLEAR_LINE );
break;
case 0xAA: /* Disable Z80 */
- m_z80->suspend(SUSPEND_REASON_HALT, 1);
+ m_z80->suspend(SUSPEND_REASON_HALT, 1 );
break;
}
break;
@@ -331,226 +331,226 @@ void ngp_state::ngp_io_w(offs_t offset, uint8_t data)
}
-template <int Which> void ngp_state::flash_w(offs_t offset, uint8_t data)
+void ngp_state::flash_w( int which, offs_t offset, uint8_t data )
{
- if (!m_flash_chip[Which].present)
+ if ( ! m_flash_chip[which].present )
return;
- switch (m_flash_chip[Which].state)
+ switch( m_flash_chip[which].state )
{
case F_READ:
- if (offset == 0x5555 && data == 0xaa)
- m_flash_chip[Which].state = F_PROG1;
- m_flash_chip[Which].command[0] = 0;
+ if ( offset == 0x5555 && data == 0xaa )
+ m_flash_chip[which].state = F_PROG1;
+ m_flash_chip[which].command[0] = 0;
break;
case F_PROG1:
- if (offset == 0x2aaa && data == 0x55)
- m_flash_chip[Which].state = F_PROG2;
+ if ( offset == 0x2aaa && data == 0x55 )
+ m_flash_chip[which].state = F_PROG2;
else
- m_flash_chip[Which].state = F_READ;
+ m_flash_chip[which].state = F_READ;
break;
case F_PROG2:
- if (data == 0x30)
+ if ( data == 0x30 )
{
- if (m_flash_chip[Which].command[0] == 0x80)
+ if ( m_flash_chip[which].command[0] == 0x80 )
{
int size = 0x10000;
- uint8_t *block = m_flash_chip[Which].data;
+ uint8_t *block = m_flash_chip[which].data;
- m_flash_chip[Which].state = F_AUTO_BLOCK_ERASE;
- switch (m_flash_chip[Which].device_id)
+ m_flash_chip[which].state = F_AUTO_BLOCK_ERASE;
+ switch( m_flash_chip[which].device_id )
{
case 0xab:
- if (offset < 0x70000)
- block = m_flash_chip[Which].data + (offset & 0x70000);
+ if ( offset < 0x70000 )
+ block = m_flash_chip[which].data + ( offset & 0x70000 );
else
{
- if (offset & 0x8000)
+ if ( offset & 0x8000 )
{
- if (offset & 0x4000)
+ if ( offset & 0x4000 )
{
- block = m_flash_chip[Which].data + (offset & 0x7c000);
+ block = m_flash_chip[which].data + ( offset & 0x7c000 );
size = 0x4000;
}
else
{
- block = m_flash_chip[Which].data + (offset & 0x7e000);
+ block = m_flash_chip[which].data + ( offset & 0x7e000 );
size = 0x2000;
}
}
else
{
- block = m_flash_chip[Which].data + (offset & 0x78000);
+ block = m_flash_chip[which].data + ( offset & 0x78000 );
size = 0x8000;
}
}
break;
case 0x2c:
- if (offset < 0xf0000)
- block = m_flash_chip[Which].data + (offset & 0xf0000);
+ if ( offset < 0xf0000 )
+ block = m_flash_chip[which].data + ( offset & 0xf0000 );
else
{
- if (offset & 0x8000)
+ if ( offset & 0x8000 )
{
- if (offset & 0x4000)
+ if ( offset & 0x4000 )
{
- block = m_flash_chip[Which].data + (offset & 0xfc000);
+ block = m_flash_chip[which].data + ( offset & 0xfc000 );
size = 0x4000;
}
else
{
- block = m_flash_chip[Which].data + (offset & 0xfe000);
+ block = m_flash_chip[which].data + ( offset & 0xfe000 );
size = 0x2000;
}
}
else
{
- block = m_flash_chip[Which].data + (offset & 0xf8000);
+ block = m_flash_chip[which].data + ( offset & 0xf8000 );
size = 0x8000;
}
}
break;
case 0x2f:
- if (offset < 0x1f0000)
- block = m_flash_chip[Which].data + (offset & 0x1f0000);
+ if ( offset < 0x1f0000 )
+ block = m_flash_chip[which].data + ( offset & 0x1f0000 );
else
{
- if (offset & 0x8000)
+ if ( offset & 0x8000 )
{
- if (offset & 0x4000)
+ if ( offset & 0x4000 )
{
- block = m_flash_chip[Which].data + (offset & 0x1fc000);
+ block = m_flash_chip[which].data + ( offset & 0x1fc000 );
size = 0x4000;
}
else
{
- block = m_flash_chip[Which].data + (offset & 0x1fe000);
+ block = m_flash_chip[which].data + ( offset & 0x1fe000 );
size = 0x2000;
}
}
else
{
- block = m_flash_chip[Which].data + (offset & 0x1f8000);
+ block = m_flash_chip[which].data + ( offset & 0x1f8000 );
size = 0x8000;
}
}
break;
}
- memset(block, 0xFF, size);
+ memset( block, 0xFF, size );
}
else
- m_flash_chip[Which].state = F_READ;
+ m_flash_chip[which].state = F_READ;
}
- else if (offset == 0x5555)
+ else if ( offset == 0x5555 )
{
- switch (data)
+ switch( data )
{
case 0x80:
- m_flash_chip[Which].command[0] = 0x80;
- m_flash_chip[Which].state = F_COMMAND;
+ m_flash_chip[which].command[0] = 0x80;
+ m_flash_chip[which].state = F_COMMAND;
break;
case 0x90:
- m_flash_chip[Which].data[0x1fc000] = m_flash_chip[Which].manufacturer_id;
- m_flash_chip[Which].data[0xfc000] = m_flash_chip[Which].manufacturer_id;
- m_flash_chip[Which].data[0x7c000] = m_flash_chip[Which].manufacturer_id;
- m_flash_chip[Which].data[0] = m_flash_chip[Which].manufacturer_id;
- m_flash_chip[Which].data[0x1fc001] = m_flash_chip[Which].device_id;
- m_flash_chip[Which].data[0xfc001] = m_flash_chip[Which].device_id;
- m_flash_chip[Which].data[0x7c001] = m_flash_chip[Which].device_id;
- m_flash_chip[Which].data[1] = m_flash_chip[Which].device_id;
- m_flash_chip[Which].data[0x1fc002] = 0x02;
- m_flash_chip[Which].data[0xfc002] = 0x02;
- m_flash_chip[Which].data[0x7c002] = 0x02;
- m_flash_chip[Which].data[2] = 0x02;
- m_flash_chip[Which].data[0x1fc003] = 0x80;
- m_flash_chip[Which].data[0xfc003] = 0x80;
- m_flash_chip[Which].data[0x7c003] = 0x80;
- m_flash_chip[Which].data[3] = 0x80;
- m_flash_chip[Which].state = F_ID_READ;
+ m_flash_chip[which].data[0x1fc000] = m_flash_chip[which].manufacturer_id;
+ m_flash_chip[which].data[0xfc000] = m_flash_chip[which].manufacturer_id;
+ m_flash_chip[which].data[0x7c000] = m_flash_chip[which].manufacturer_id;
+ m_flash_chip[which].data[0] = m_flash_chip[which].manufacturer_id;
+ m_flash_chip[which].data[0x1fc001] = m_flash_chip[which].device_id;
+ m_flash_chip[which].data[0xfc001] = m_flash_chip[which].device_id;
+ m_flash_chip[which].data[0x7c001] = m_flash_chip[which].device_id;
+ m_flash_chip[which].data[1] = m_flash_chip[which].device_id;
+ m_flash_chip[which].data[0x1fc002] = 0x02;
+ m_flash_chip[which].data[0xfc002] = 0x02;
+ m_flash_chip[which].data[0x7c002] = 0x02;
+ m_flash_chip[which].data[2] = 0x02;
+ m_flash_chip[which].data[0x1fc003] = 0x80;
+ m_flash_chip[which].data[0xfc003] = 0x80;
+ m_flash_chip[which].data[0x7c003] = 0x80;
+ m_flash_chip[which].data[3] = 0x80;
+ m_flash_chip[which].state = F_ID_READ;
break;
case 0x9a:
- if (m_flash_chip[Which].command[0] == 0x9a)
- m_flash_chip[Which].state = F_BLOCK_PROTECT;
+ if ( m_flash_chip[which].command[0] == 0x9a )
+ m_flash_chip[which].state = F_BLOCK_PROTECT;
else
{
- m_flash_chip[Which].command[0] = 0x9a;
- m_flash_chip[Which].state = F_COMMAND;
+ m_flash_chip[which].command[0] = 0x9a;
+ m_flash_chip[which].state = F_COMMAND;
}
break;
case 0xa0:
- m_flash_chip[Which].state = F_AUTO_PROGRAM;
+ m_flash_chip[which].state = F_AUTO_PROGRAM;
break;
case 0xf0:
default:
- m_flash_chip[Which].state = F_READ;
+ m_flash_chip[which].state = F_READ;
break;
}
}
else
- m_flash_chip[Which].state = F_READ;
+ m_flash_chip[which].state = F_READ;
break;
case F_COMMAND:
- if (offset == 0x5555 && data == 0xaa)
- m_flash_chip[Which].state = F_PROG1;
+ if ( offset == 0x5555 && data == 0xaa )
+ m_flash_chip[which].state = F_PROG1;
else
- m_flash_chip[Which].state = F_READ;
+ m_flash_chip[which].state = F_READ;
break;
case F_ID_READ:
- if (offset == 0x5555 && data == 0xaa)
- m_flash_chip[Which].state = F_PROG1;
+ if ( offset == 0x5555 && data == 0xaa )
+ m_flash_chip[which].state = F_PROG1;
else
- m_flash_chip[Which].state = F_READ;
- m_flash_chip[Which].command[0] = 0;
+ m_flash_chip[which].state = F_READ;
+ m_flash_chip[which].command[0] = 0;
break;
case F_AUTO_PROGRAM:
/* Only 1 -> 0 changes can be programmed */
- m_flash_chip[Which].data[offset] = m_flash_chip[Which].data[offset] & data;
- m_flash_chip[Which].state = F_READ;
+ m_flash_chip[which].data[offset] = m_flash_chip[which].data[offset] & data;
+ m_flash_chip[which].state = F_READ;
break;
case F_AUTO_CHIP_ERASE:
- m_flash_chip[Which].state = F_READ;
+ m_flash_chip[which].state = F_READ;
break;
case F_AUTO_BLOCK_ERASE:
- m_flash_chip[Which].state = F_READ;
+ m_flash_chip[which].state = F_READ;
break;
case F_BLOCK_PROTECT:
- m_flash_chip[Which].state = F_READ;
+ m_flash_chip[which].state = F_READ;
break;
}
- if (m_flash_chip[Which].state == F_READ)
+ if ( m_flash_chip[which].state == F_READ )
{
/* Exit command/back to normal operation*/
- m_flash_chip[Which].data[0] = m_flash_chip[Which].org_data[0];
- m_flash_chip[Which].data[1] = m_flash_chip[Which].org_data[1];
- m_flash_chip[Which].data[2] = m_flash_chip[Which].org_data[2];
- m_flash_chip[Which].data[3] = m_flash_chip[Which].org_data[3];
- m_flash_chip[Which].data[0x7c000] = m_flash_chip[Which].org_data[4];
- m_flash_chip[Which].data[0x7c001] = m_flash_chip[Which].org_data[5];
- m_flash_chip[Which].data[0x7c002] = m_flash_chip[Which].org_data[6];
- m_flash_chip[Which].data[0x7c003] = m_flash_chip[Which].org_data[7];
- m_flash_chip[Which].data[0xfc000] = m_flash_chip[Which].org_data[8];
- m_flash_chip[Which].data[0xfc001] = m_flash_chip[Which].org_data[9];
- m_flash_chip[Which].data[0xfc002] = m_flash_chip[Which].org_data[10];
- m_flash_chip[Which].data[0xfc003] = m_flash_chip[Which].org_data[11];
- m_flash_chip[Which].data[0x1fc000] = m_flash_chip[Which].org_data[12];
- m_flash_chip[Which].data[0x1fc001] = m_flash_chip[Which].org_data[13];
- m_flash_chip[Which].data[0x1fc002] = m_flash_chip[Which].org_data[14];
- m_flash_chip[Which].data[0x1fc003] = m_flash_chip[Which].org_data[15];
- m_flash_chip[Which].command[0] = 0;
+ m_flash_chip[which].data[0] = m_flash_chip[which].org_data[0];
+ m_flash_chip[which].data[1] = m_flash_chip[which].org_data[1];
+ m_flash_chip[which].data[2] = m_flash_chip[which].org_data[2];
+ m_flash_chip[which].data[3] = m_flash_chip[which].org_data[3];
+ m_flash_chip[which].data[0x7c000] = m_flash_chip[which].org_data[4];
+ m_flash_chip[which].data[0x7c001] = m_flash_chip[which].org_data[5];
+ m_flash_chip[which].data[0x7c002] = m_flash_chip[which].org_data[6];
+ m_flash_chip[which].data[0x7c003] = m_flash_chip[which].org_data[7];
+ m_flash_chip[which].data[0xfc000] = m_flash_chip[which].org_data[8];
+ m_flash_chip[which].data[0xfc001] = m_flash_chip[which].org_data[9];
+ m_flash_chip[which].data[0xfc002] = m_flash_chip[which].org_data[10];
+ m_flash_chip[which].data[0xfc003] = m_flash_chip[which].org_data[11];
+ m_flash_chip[which].data[0x1fc000] = m_flash_chip[which].org_data[12];
+ m_flash_chip[which].data[0x1fc001] = m_flash_chip[which].org_data[13];
+ m_flash_chip[which].data[0x1fc002] = m_flash_chip[which].org_data[14];
+ m_flash_chip[which].data[0x1fc003] = m_flash_chip[which].org_data[15];
+ m_flash_chip[which].command[0] = 0;
}
}
-void ngp_state::flash0_w(offs_t offset, uint8_t data)
+WRITE8_MEMBER( ngp_state::flash0_w )
{
- flash_w<0>(offset, data);
+ flash_w( 0, offset, data );
}
-void ngp_state::flash1_w(offs_t offset, uint8_t data)
+WRITE8_MEMBER( ngp_state::flash1_w )
{
- flash_w<1>(offset, data);
+ flash_w( 1, offset, data );
}
@@ -566,21 +566,21 @@ void ngp_state::ngp_mem(address_map &map)
}
-uint8_t ngp_state::ngp_z80_comm_r()
+READ8_MEMBER( ngp_state::ngp_z80_comm_r )
{
return m_io_reg[0x3c];
}
-void ngp_state::ngp_z80_comm_w(uint8_t data)
+WRITE8_MEMBER( ngp_state::ngp_z80_comm_w )
{
m_io_reg[0x3c] = data;
}
-void ngp_state::ngp_z80_signal_main_w(uint8_t data)
+WRITE8_MEMBER( ngp_state::ngp_z80_signal_main_w )
{
- m_maincpu->set_input_line(TLCS900_INT5, ASSERT_LINE);
+ m_maincpu->set_input_line(TLCS900_INT5, ASSERT_LINE );
}
@@ -593,12 +593,12 @@ void ngp_state::z80_mem(address_map &map)
}
-void ngp_state::ngp_z80_clear_irq(uint8_t data)
+WRITE8_MEMBER( ngp_state::ngp_z80_clear_irq )
{
- m_z80->set_input_line(0, CLEAR_LINE);
+ m_z80->set_input_line(0, CLEAR_LINE );
/* I am not exactly sure what causes the maincpu INT5 signal to be cleared. This will do for now. */
- m_maincpu->set_input_line(TLCS900_INT5, CLEAR_LINE);
+ m_maincpu->set_input_line(TLCS900_INT5, CLEAR_LINE );
}
@@ -610,46 +610,46 @@ void ngp_state::z80_io(address_map &map)
INPUT_CHANGED_MEMBER(ngp_state::power_callback)
{
- if (m_io_reg[0x33] & 0x04)
+ if ( m_io_reg[0x33] & 0x04 )
{
- m_maincpu->set_input_line(TLCS900_NMI, (m_io_power->read() & 0x01 ) ? CLEAR_LINE : ASSERT_LINE);
+ m_maincpu->set_input_line(TLCS900_NMI, (m_io_power->read() & 0x01 ) ? CLEAR_LINE : ASSERT_LINE );
}
}
-static INPUT_PORTS_START(ngp)
+static INPUT_PORTS_START( ngp )
PORT_START("Controls")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_NAME("Up")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_NAME("Down")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT) PORT_NAME("Left")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_NAME("Right")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Button A")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME("Button B")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_SELECT) PORT_NAME("Option")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("Up")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("Down")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_NAME("Left")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("Right")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Button A")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME("Button B")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SELECT) PORT_NAME("Option")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("Power")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_POWER_ON) PORT_CHANGED_MEMBER(DEVICE_SELF, ngp_state, power_callback, nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, ngp_state, power_callback, nullptr)
INPUT_PORTS_END
-WRITE_LINE_MEMBER(ngp_state::ngp_vblank_pin_w)
+WRITE_LINE_MEMBER( ngp_state::ngp_vblank_pin_w )
{
- m_maincpu->set_input_line(TLCS900_INT4, state ? ASSERT_LINE : CLEAR_LINE);
+ m_maincpu->set_input_line(TLCS900_INT4, state ? ASSERT_LINE : CLEAR_LINE );
}
-WRITE_LINE_MEMBER(ngp_state::ngp_hblank_pin_w)
+WRITE_LINE_MEMBER( ngp_state::ngp_hblank_pin_w )
{
- m_maincpu->set_input_line(TLCS900_TIO, state ? ASSERT_LINE : CLEAR_LINE);
+ m_maincpu->set_input_line(TLCS900_TIO, state ? ASSERT_LINE : CLEAR_LINE );
}
-void ngp_state::ngp_tlcs900_porta(offs_t offset, uint8_t data)
+WRITE8_MEMBER( ngp_state::ngp_tlcs900_porta )
{
int to3 = BIT(data,3);
- if (to3 && ! m_old_to3)
- m_z80->set_input_line(0, ASSERT_LINE);
+ if ( to3 && ! m_old_to3 )
+ m_z80->set_input_line(0, ASSERT_LINE );
m_old_to3 = to3;
}
@@ -710,7 +710,7 @@ void ngp_state::machine_start()
}
m_seconds_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ngp_state::ngp_seconds_callback),this));
- m_seconds_timer->adjust(attotime::from_seconds(1), 0, attotime::from_seconds(1));
+ m_seconds_timer->adjust( attotime::from_seconds(1), 0, attotime::from_seconds(1) );
save_item(NAME(m_io_reg));
save_item(NAME(m_old_to3));
@@ -737,7 +737,7 @@ void ngp_state::machine_reset()
m_z80->suspend(SUSPEND_REASON_HALT, 1);
m_z80->set_input_line(0, CLEAR_LINE);
- if (m_nvram_loaded)
+ if ( m_nvram_loaded )
{
m_maincpu->set_state_int(TLCS900_PC, 0xFF1800);
}
@@ -746,12 +746,12 @@ void ngp_state::machine_reset()
uint32_t ngp_state::screen_update_ngp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- m_k1ge->update(bitmap, cliprect);
+ m_k1ge->update( bitmap, cliprect );
return 0;
}
-DEVICE_IMAGE_LOAD_MEMBER(ngp_state, ngp_cart)
+DEVICE_IMAGE_LOAD_MEMBER( ngp_state, ngp_cart )
{
uint32_t size = m_cart->common_get_size("rom");
@@ -798,7 +798,7 @@ DEVICE_IMAGE_LOAD_MEMBER(ngp_state, ngp_cart)
}
-DEVICE_IMAGE_UNLOAD_MEMBER(ngp_state, ngp_cart)
+DEVICE_IMAGE_UNLOAD_MEMBER( ngp_state, ngp_cart )
{
m_flash_chip[0].present = 0;
m_flash_chip[0].state = F_READ;
@@ -826,45 +826,46 @@ void ngp_state::nvram_write(emu_file &file)
}
-void ngp_state::ngp_common(machine_config &config)
-{
+MACHINE_CONFIG_START(ngp_state::ngp_common)
+
TMP95C061(config, m_maincpu, 6.144_MHz_XTAL);
m_maincpu->set_am8_16(1);
m_maincpu->set_addrmap(AS_PROGRAM, &ngp_state::ngp_mem);
m_maincpu->porta_write().set(FUNC(ngp_state::ngp_tlcs900_porta));
- z80_device &soundcpu(Z80(config, "soundcpu", 6.144_MHz_XTAL/2));
- soundcpu.set_addrmap(AS_PROGRAM, &ngp_state::z80_mem);
- soundcpu.set_addrmap(AS_IO, &ngp_state::z80_io);
+ MCFG_DEVICE_ADD( "soundcpu", Z80, 6.144_MHz_XTAL/2 )
+ MCFG_DEVICE_PROGRAM_MAP( z80_mem)
+ MCFG_DEVICE_IO_MAP( z80_io)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_raw(6.144_MHz_XTAL, 515, 0, 160 /*480*/, 199, 0, 152);
- screen.set_screen_update(FUNC(ngp_state::screen_update_ngp));
+ MCFG_SCREEN_ADD( "screen", LCD )
+ MCFG_SCREEN_RAW_PARAMS( 6.144_MHz_XTAL, 515, 0, 160 /*480*/, 199, 0, 152 )
+ MCFG_SCREEN_UPDATE_DRIVER(ngp_state, screen_update_ngp)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- T6W28(config, m_t6w28, 6.144_MHz_XTAL/2);
- m_t6w28->add_route(0, "lspeaker", 0.50);
- m_t6w28->add_route(1, "rspeaker", 0.50);
+ MCFG_DEVICE_ADD( "t6w28", T6W28, 6.144_MHz_XTAL/2 )
+ MCFG_SOUND_ROUTE( 0, "lspeaker", 0.50 )
+ MCFG_SOUND_ROUTE( 1, "rspeaker", 0.50 )
- DAC_8BIT_R2R(config, m_ldac, 0).add_route(ALL_OUTPUTS, "lspeaker", 0.25); // unknown DAC
- DAC_8BIT_R2R(config, m_rdac, 0).add_route(ALL_OUTPUTS, "rspeaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("ldac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("rdac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
MACHINE_CONFIG_START(ngp_state::ngp)
ngp_common(config);
- K1GE(config, m_k1ge, 6.144_MHz_XTAL, "screen");
+ K1GE(config , m_k1ge, 6.144_MHz_XTAL, "screen");
m_k1ge->vblank_callback().set(FUNC(ngp_state::ngp_vblank_pin_w));
m_k1ge->hblank_callback().set(FUNC(ngp_state::ngp_hblank_pin_w));
- subdevice<screen_device>("screen")->set_palette("k1ge:palette");
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_PALETTE("k1ge:palette")
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "ngp_cart")
MCFG_GENERIC_EXTENSIONS("bin,ngp,npc,ngc")
@@ -872,18 +873,19 @@ MACHINE_CONFIG_START(ngp_state::ngp)
MCFG_GENERIC_UNLOAD(ngp_state, ngp_cart)
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("ngp");
- SOFTWARE_LIST(config, "ngpc_list").set_compatible("ngpc");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","ngp")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("ngpc_list","ngpc")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(ngp_state::ngpc)
ngp_common(config);
- K2GE(config, m_k1ge, 6.144_MHz_XTAL, "screen");
+ K2GE(config , m_k1ge, 6.144_MHz_XTAL, "screen");
m_k1ge->vblank_callback().set(FUNC(ngp_state::ngp_vblank_pin_w));
m_k1ge->hblank_callback().set(FUNC(ngp_state::ngp_hblank_pin_w));
- subdevice<screen_device>("screen")->set_palette("k1ge:palette");
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_PALETTE("k1ge:palette")
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "ngp_cart")
MCFG_GENERIC_EXTENSIONS("bin,ngp,npc,ngc")
@@ -891,23 +893,23 @@ MACHINE_CONFIG_START(ngp_state::ngpc)
MCFG_GENERIC_UNLOAD(ngp_state, ngp_cart)
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("ngpc");
- SOFTWARE_LIST(config, "ngp_list").set_compatible("ngp");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","ngpc")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("ngp_list","ngp")
MACHINE_CONFIG_END
-ROM_START(ngp)
- ROM_REGION(0x10000, "maincpu" , 0)
- ROM_LOAD("ngp_bios.ngp", 0x0000, 0x10000, CRC(6232df8d) SHA1(2f6429b68446536d8b03f35d02f1e98beb6460a0))
+ROM_START( ngp )
+ ROM_REGION( 0x10000, "maincpu" , 0 )
+ ROM_LOAD( "ngp_bios.ngp", 0x0000, 0x10000, CRC(6232df8d) SHA1(2f6429b68446536d8b03f35d02f1e98beb6460a0) )
ROM_END
-ROM_START(ngpc)
- ROM_REGION(0x10000, "maincpu", 0)
- ROM_LOAD("ngpcbios.rom", 0x0000, 0x10000, CRC(6eeb6f40) SHA1(edc13192054a59be49c6d55f83b70e2510968e86))
+ROM_START( ngpc )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ngpcbios.rom", 0x0000, 0x10000, CRC(6eeb6f40) SHA1(edc13192054a59be49c6d55f83b70e2510968e86) )
ROM_END
-// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
-CONS(1998, ngp, 0, 0, ngp, ngp, ngp_state, empty_init, "SNK", "NeoGeo Pocket", MACHINE_SUPPORTS_SAVE)
-CONS(1999, ngpc, ngp, 0, ngpc, ngp, ngp_state, empty_init, "SNK", "NeoGeo Pocket Color", MACHINE_SUPPORTS_SAVE)
+// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
+CONS( 1998, ngp, 0, 0, ngp, ngp, ngp_state, empty_init, "SNK", "NeoGeo Pocket", MACHINE_SUPPORTS_SAVE )
+CONS( 1999, ngpc, ngp, 0, ngpc, ngp, ngp_state, empty_init, "SNK", "NeoGeo Pocket Color", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/nibble.cpp b/src/mame/drivers/nibble.cpp
index c510a5daeb5..76710cc0714 100644
--- a/src/mame/drivers/nibble.cpp
+++ b/src/mame/drivers/nibble.cpp
@@ -333,20 +333,20 @@ GFXDECODE_END
* Machine Drivers *
*************************/
-void nibble_state::nibble(machine_config &config)
-{
+MACHINE_CONFIG_START(nibble_state::nibble)
+
UPD7811(config, m_maincpu, MASTER_CLOCK / 3); // type guessed; clock not verified
m_maincpu->set_addrmap(AS_PROGRAM, &nibble_state::nibble_map);
//m_maincpu->set_vblank_int("screen", FUNC(nibble_state::nibble_interrupt));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(nibble_state::screen_update_nibble));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(nibble_state, screen_update_nibble)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_nibble);
@@ -367,7 +367,7 @@ void nibble_state::nibble(machine_config &config)
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd", MASTER_CLOCK/8).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/nichild.cpp b/src/mame/drivers/nichild.cpp
index 7f150a625a7..a2873212d43 100644
--- a/src/mame/drivers/nichild.cpp
+++ b/src/mame/drivers/nichild.cpp
@@ -230,8 +230,8 @@ INTERRUPT_GEN_MEMBER(nichild_state::vdp_irq)
}
-void nichild_state::nichild(machine_config &config)
-{
+MACHINE_CONFIG_START(nichild_state::nichild)
+
/* basic machine hardware */
TMPZ84C011(config, m_maincpu, MAIN_CLOCK/4);
//m_maincpu->set_daisy_config(daisy_chain_main);
@@ -256,7 +256,7 @@ void nichild_state::nichild(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
// YM3812(config, "fmsnd", SOUND_CLOCK).add_route(ALL_OUTPUTS, "speaker", 0.7);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/nightgal.cpp b/src/mame/drivers/nightgal.cpp
index 67d47158bcc..6e1440b4a66 100644
--- a/src/mame/drivers/nightgal.cpp
+++ b/src/mame/drivers/nightgal.cpp
@@ -216,18 +216,18 @@ void nightgal_state::nightgal_palette(palette_device &palette) const
bit0 = BIT(color_prom[i], 0);
bit1 = BIT(color_prom[i], 1);
bit2 = BIT(color_prom[i], 2);
- int const r = combine_weights(weights_rg, bit0, bit1, bit2);
+ int const r = combine_3_weights(weights_rg, bit0, bit1, bit2);
// green component
bit0 = BIT(color_prom[i], 3);
bit1 = BIT(color_prom[i], 4);
bit2 = BIT(color_prom[i], 5);
- int const g = combine_weights(weights_rg, bit0, bit1, bit2);
+ int const g = combine_3_weights(weights_rg, bit0, bit1, bit2);
// blue component
bit0 = BIT(color_prom[i], 6);
bit1 = BIT(color_prom[i], 7);
- int const b = combine_weights(weights_b, bit0, bit1);
+ int const b = combine_2_weights(weights_b, bit0, bit1);
palette.set_pen_color(i, rgb_t(r, g, b));
}
@@ -788,26 +788,26 @@ void nightgal_state::machine_reset()
memset(m_blit_raw_data, 0, ARRAY_LENGTH(m_blit_raw_data));
}
-void nightgal_state::royalqn(machine_config &config)
-{
+MACHINE_CONFIG_START(nightgal_state::royalqn)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK / 8); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &nightgal_state::royalqn_map);
- m_maincpu->set_addrmap(AS_IO, &nightgal_state::royalqn_io);
- m_maincpu->set_vblank_int("screen", FUNC(nightgal_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,MASTER_CLOCK / 8) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(royalqn_map)
+ MCFG_DEVICE_IO_MAP(royalqn_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nightgal_state, irq0_line_hold)
- NSC8105(config, m_subcpu, MASTER_CLOCK / 8);
- m_subcpu->set_addrmap(AS_PROGRAM, &nightgal_state::royalqn_nsc_map);
+ MCFG_DEVICE_ADD("sub", NSC8105, MASTER_CLOCK / 8)
+ MCFG_DEVICE_PROGRAM_MAP(royalqn_nsc_map)
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
- JANGOU_BLITTER(config, m_blitter, MASTER_CLOCK/4);
+ MCFG_JANGOU_BLITTER_ADD("blitter", MASTER_CLOCK/4)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(MASTER_CLOCK/4,320,0,256,264,16,240);
- screen.set_screen_update(FUNC(nightgal_state::screen_update_nightgal));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4,320,0,256,264,16,240)
+ MCFG_SCREEN_UPDATE_DRIVER(nightgal_state, screen_update_nightgal)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(nightgal_state::nightgal_palette), 0x20);
@@ -818,65 +818,67 @@ void nightgal_state::royalqn(machine_config &config)
aysnd.port_a_read_callback().set(FUNC(nightgal_state::input_1p_r));
aysnd.port_b_read_callback().set(FUNC(nightgal_state::input_2p_r));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.40);
-}
+MACHINE_CONFIG_END
-void nightgal_state::sexygal(machine_config &config)
-{
+MACHINE_CONFIG_START(nightgal_state::sexygal)
royalqn(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &nightgal_state::sexygal_map);
- m_maincpu->set_addrmap(AS_IO, &nightgal_state::sexygal_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sexygal_map)
+ MCFG_DEVICE_IO_MAP(sexygal_io)
- m_subcpu->set_addrmap(AS_PROGRAM, &nightgal_state::sexygal_nsc_map);
- m_subcpu->set_vblank_int("screen", FUNC(nightgal_state::irq0_line_hold));
+ MCFG_DEVICE_MODIFY("sub")
+ MCFG_DEVICE_PROGRAM_MAP(sexygal_nsc_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nightgal_state, irq0_line_hold)
- NSC8105(config, m_audiocpu, MASTER_CLOCK / 8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &nightgal_state::sexygal_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", NSC8105, MASTER_CLOCK / 8)
+ MCFG_DEVICE_PROGRAM_MAP(sexygal_audio_map)
- clock_device &sampleclk(CLOCK(config, "sampleclk", 6000)); // quite a wild guess
- sampleclk.signal_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI);
+ MCFG_DEVICE_ADD("sampleclk", CLOCK, 6000) // quite a wild guess
+ MCFG_CLOCK_SIGNAL_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "mono", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
- config.device_remove("aysnd");
+ MCFG_DEVICE_REMOVE("aysnd")
ym2203_device &ymsnd(YM2203(config, "ymsnd", MASTER_CLOCK / 8));
ymsnd.port_a_read_callback().set(FUNC(nightgal_state::input_1p_r));
ymsnd.port_b_read_callback().set(FUNC(nightgal_state::input_2p_r));
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.40);
-}
+MACHINE_CONFIG_END
-void nightgal_state::sweetgal(machine_config &config)
-{
+MACHINE_CONFIG_START(nightgal_state::sweetgal)
sexygal(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &nightgal_state::sweetgal_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sweetgal_map)
// doesn't have the extra NSC8105 (so how does this play samples?)
- config.device_remove("audiocpu");
- config.device_remove("sampleclk");
-}
+ MCFG_DEVICE_REMOVE("audiocpu")
+ MCFG_DEVICE_REMOVE("sampleclk")
+MACHINE_CONFIG_END
-void nightgal_state::ngalsumr(machine_config &config)
-{
+MACHINE_CONFIG_START(nightgal_state::ngalsumr)
royalqn(config);
+ MCFG_DEVICE_MODIFY("maincpu")
// TODO: happens from protection device
- m_maincpu->set_periodic_int(FUNC(nightgal_state::nmi_line_pulse), attotime::from_hz(60));
-}
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(nightgal_state, nmi_line_pulse, 60)
-void nightgal_state::sgaltrop(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(nightgal_state::sgaltrop)
sexygal(config);
- m_maincpu->set_addrmap(AS_IO, &nightgal_state::sgaltrop_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(sgaltrop_io)
- m_subcpu->set_addrmap(AS_PROGRAM, &nightgal_state::sgaltrop_nsc_map);
+ MCFG_DEVICE_MODIFY("sub")
+ MCFG_DEVICE_PROGRAM_MAP(sgaltrop_nsc_map)
- config.device_remove("audiocpu");
- config.device_remove("sampleclk");
-}
+ MCFG_DEVICE_REMOVE("audiocpu")
+ MCFG_DEVICE_REMOVE("sampleclk")
+MACHINE_CONFIG_END
/*
Night Gal
diff --git a/src/mame/drivers/nightmare.cpp b/src/mame/drivers/nightmare.cpp
index e3b89a4614d..9310db538fd 100644
--- a/src/mame/drivers/nightmare.cpp
+++ b/src/mame/drivers/nightmare.cpp
@@ -347,11 +347,13 @@ void nightmare_state::nightmare_map(address_map &map)
void nightmare_state::nightmare_io_map(address_map &map)
{
- map(1, 1).r("ic8", FUNC(cdp1852_device::read)).w(FUNC(nightmare_state::unkout_w));
- map(2, 2).r("ic9", FUNC(cdp1852_device::read)).w("ic10", FUNC(cdp1852_device::write));
+ map(0x0001, 0x0001).r("ic8", FUNC(cdp1852_device::read)).w(FUNC(nightmare_state::unkout_w));
+ map(0x0002, 0x0002).r("ic9", FUNC(cdp1852_device::read)).w("ic10", FUNC(cdp1852_device::write));
- map(4, 5).rw(m_vdc, FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
- map(6, 7).rw(m_vdc2, FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
+ map(0x0004, 0x0004).rw(m_vdc, FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0x0005, 0x0005).rw(m_vdc, FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
+ map(0x0006, 0x0006).rw(m_vdc2, FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0x0007, 0x0007).rw(m_vdc2, FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
}
void nightmare_state::nightmare_sound_map(address_map &map)
diff --git a/src/mame/drivers/ninjaw.cpp b/src/mame/drivers/ninjaw.cpp
index c25bc3d0bd6..c34b15683e1 100644
--- a/src/mame/drivers/ninjaw.cpp
+++ b/src/mame/drivers/ninjaw.cpp
@@ -751,7 +751,7 @@ void ninjaw_state::ninjaw(machine_config &config)
// Let's use a better timer (was 6000 before) based off actual CPU timing.
// Might as well bump the divider in case the bug still occurs before resorting to perfect CPU.
config.m_minimum_quantum = attotime::from_hz(16000000/1024); /* CPU slices */
- //config.m_perfect_cpu_quantum = subtag("maincpu");
+ //MCFG_QUANTUM_PERFECT_CPU("maincpu")
tc0040ioc_device &tc0040ioc(TC0040IOC(config, "tc0040ioc", 0));
tc0040ioc.read_0_callback().set_ioport("DSWA");
diff --git a/src/mame/drivers/nitedrvr.cpp b/src/mame/drivers/nitedrvr.cpp
index 8cb9572a515..9d8a10441bf 100644
--- a/src/mame/drivers/nitedrvr.cpp
+++ b/src/mame/drivers/nitedrvr.cpp
@@ -140,33 +140,34 @@ GFXDECODE_END
/* Machine Driver */
-void nitedrvr_state::nitedrvr(machine_config &config)
-{
+MACHINE_CONFIG_START(nitedrvr_state::nitedrvr)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 12.096_MHz_XTAL / 12); // 1 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &nitedrvr_state::nitedrvr_map);
- m_maincpu->set_vblank_int("screen", FUNC(nitedrvr_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M6502, 12.096_MHz_XTAL / 12) // 1 MHz
+ MCFG_DEVICE_PROGRAM_MAP(nitedrvr_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nitedrvr_state, irq0_line_hold)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 3);
- TIMER(config, "crash_timer").configure_periodic(FUNC(nitedrvr_state::nitedrvr_crash_toggle_callback), PERIOD_OF_555_ASTABLE(RES_K(180), 330, CAP_U(1)));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("crash_timer", nitedrvr_state, nitedrvr_crash_toggle_callback, PERIOD_OF_555_ASTABLE(RES_K(180), 330, CAP_U(1)))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(12.096_MHz_XTAL / 2, 384, 0, 256, 278, 0, 256); // ~57 Hz
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(12.096_MHz_XTAL / 2, 384, 0, 256, 278, 0, 256) // ~57 Hz
// PROM derives VRESET, VBLANK, VSYNC, IRQ from vertical scan count and last VBLANK
- screen.set_screen_update(FUNC(nitedrvr_state::screen_update_nitedrvr));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_UPDATE_DRIVER(nitedrvr_state, screen_update_nitedrvr)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_nitedrvr);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_nitedrvr)
PALETTE(config, m_palette, palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- DISCRETE(config, m_discrete, nitedrvr_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, nitedrvr_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/niyanpai.cpp b/src/mame/drivers/niyanpai.cpp
index 5cdbd6a3f82..74ea1878ff3 100644
--- a/src/mame/drivers/niyanpai.cpp
+++ b/src/mame/drivers/niyanpai.cpp
@@ -154,6 +154,8 @@ void niyanpai_state::niyanpai_map(address_map &map)
map(0x240a01, 0x240a01).w(FUNC(niyanpai_state::clutsel_0_w));
map(0x240c01, 0x240c01).w(FUNC(niyanpai_state::clutsel_1_w));
map(0x240e01, 0x240e01).w(FUNC(niyanpai_state::clutsel_2_w));
+
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
void niyanpai_state::musobana_map(address_map &map)
@@ -191,6 +193,8 @@ void niyanpai_state::musobana_map(address_map &map)
map(0x280000, 0x280001).r(FUNC(niyanpai_state::dipsw_r));
map(0x280200, 0x280201).r(FUNC(niyanpai_state::musobana_inputport_0_r));
map(0x280400, 0x280401).portr("SYSTEM");
+
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
void niyanpai_state::mhhonban_map(address_map &map)
@@ -230,6 +234,8 @@ void niyanpai_state::mhhonban_map(address_map &map)
map(0x280000, 0x280001).r(FUNC(niyanpai_state::dipsw_r));
map(0x280200, 0x280201).r(FUNC(niyanpai_state::musobana_inputport_0_r));
map(0x280400, 0x280401).portr("SYSTEM");
+
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
void niyanpai_state::zokumahj_map(address_map &map)
@@ -268,6 +274,8 @@ void niyanpai_state::zokumahj_map(address_map &map)
map(0x280000, 0x280001).r(FUNC(niyanpai_state::dipsw_r));
map(0x280200, 0x280201).r(FUNC(niyanpai_state::musobana_inputport_0_r));
map(0x280400, 0x280401).portr("SYSTEM");
+
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -679,60 +687,64 @@ INPUT_PORTS_END
WRITE_LINE_MEMBER(niyanpai_state::vblank_irq)
{
if (state)
- m_maincpu->external_interrupt_0();
+ m_tmp68301->external_interrupt_0();
}
-void niyanpai_state::niyanpai(machine_config &config)
-{
+MACHINE_CONFIG_START(niyanpai_state::niyanpai)
+
/* basic machine hardware */
- TMP68301(config, m_maincpu, 12288000/2); /* TMP68301, 6.144 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &niyanpai_state::niyanpai_map);
- m_maincpu->out_parallel_callback().set(FUNC(niyanpai_state::tmp68301_parallel_port_w));
+ MCFG_DEVICE_ADD(m_maincpu, M68000, 12288000/2) /* TMP68301, 6.144 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(niyanpai_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("tmp68301",tmp68301_device,irq_callback)
+
+ TMP68301(config, m_tmp68301, 0);
+ m_tmp68301->set_cputag(m_maincpu);
+ m_tmp68301->out_parallel_callback().set(FUNC(niyanpai_state::tmp68301_parallel_port_w));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(1024, 512);
- m_screen->set_visarea(0, 640-1, 0, 240-1);
- m_screen->set_screen_update(FUNC(niyanpai_state::screen_update));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(niyanpai_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(1024, 512)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(niyanpai_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, niyanpai_state, vblank_irq))
- PALETTE(config, m_palette).set_entries(256*3);
+ MCFG_PALETTE_ADD("palette", 256*3)
/* sound hardware */
NICHISND(config, "nichisnd", 0);
-}
+MACHINE_CONFIG_END
-void niyanpai_state::musobana(machine_config &config)
-{
+MACHINE_CONFIG_START(niyanpai_state::musobana)
niyanpai(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &niyanpai_state::musobana_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(musobana_map)
MCFG_MACHINE_START_OVERRIDE(niyanpai_state, musobana)
-}
+MACHINE_CONFIG_END
-void niyanpai_state::mhhonban(machine_config &config)
-{
+MACHINE_CONFIG_START(niyanpai_state::mhhonban)
musobana(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &niyanpai_state::mhhonban_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mhhonban_map)
+MACHINE_CONFIG_END
-void niyanpai_state::zokumahj(machine_config &config)
-{
+MACHINE_CONFIG_START(niyanpai_state::zokumahj)
musobana(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &niyanpai_state::zokumahj_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(zokumahj_map)
+MACHINE_CONFIG_END
ROM_START( niyanpai )
diff --git a/src/mame/drivers/nmg5.cpp b/src/mame/drivers/nmg5.cpp
index 29f0938e8b5..86024675c58 100644
--- a/src/mame/drivers/nmg5.cpp
+++ b/src/mame/drivers/nmg5.cpp
@@ -978,14 +978,14 @@ void nmg5_state::machine_reset()
m_input_data = 0;
}
-void nmg5_state::nmg5(machine_config &config)
-{
+MACHINE_CONFIG_START(nmg5_state::nmg5)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 16000000); /* 16 MHz */
+ M68000(config, m_maincpu, 16000000); /* 16 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &nmg5_state::nmg5_map);
m_maincpu->set_vblank_int("screen", FUNC(nmg5_state::irq6_line_hold));
- Z80(config, m_soundcpu, 4000000); /* 4 MHz */
+ Z80(config, m_soundcpu, 4000000); /* 4 MHz */
m_soundcpu->set_addrmap(AS_PROGRAM, &nmg5_state::nmg5_sound_map);
m_soundcpu->set_addrmap(AS_IO, &nmg5_state::sound_io_map);
diff --git a/src/mame/drivers/nmk16.cpp b/src/mame/drivers/nmk16.cpp
index 027d15ebbc6..c0e7a2a8a5c 100644
--- a/src/mame/drivers/nmk16.cpp
+++ b/src/mame/drivers/nmk16.cpp
@@ -41,7 +41,7 @@ Action is simply a hack of USSAF Mustang.
The NMK004 CPU is a Toshiba TMP90C840 with internal ROM.
The dumped internal ROM has a date string of 900315 in ROM and a version number of V-00
-The later games (from GunNail onwards) have a higher resolution (384x224 instead
+The later games (from GunNail onwards) have an higher resolution (384x224 instead
of 256x224) but the hardware is pretty much the same. It's obvious that the higher
res is an afterthought, because the tilemap layout is weird (the left 8 screen
columns have to be taken from the rightmost 8 columns of the tilemap), and the
@@ -7324,7 +7324,7 @@ Other: Lattice pLSI 1032 x 2
void nmk16_state::init_redhawk()
{
- decryptcode( machine(), 23, 22, 21, 20, 19, 18, 16, 15, 14, 17, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
+ decryptcode( machine(), 23, 22, 21, 20, 19, 18, 16, 15, 14, 17, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
}
ROM_START( redhawk ) /* U.S.A., Canada & South America, (c) 1997 */
@@ -7666,7 +7666,12 @@ ROM_END
void nmk16_state::init_grdnstrmg()
{
- decryptcode( machine(), 23, 22, 21, 20, 19, 18, 13, 16, 15 ,14, 17, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
+ // todo collapse to one bitswap
+ decryptcode( machine(),23, 22, 21, 20, 19, 18, 13,17, 16,15, 14, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
+ decryptcode( machine(),23, 22, 21, 20, 19, 18, 17,16, 14,15, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
+ decryptcode( machine(),23, 22, 21, 20, 19, 18, 17,15, 16,14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
+ decryptcode( machine(),23, 22, 21, 20, 19, 18, 16,17, 15,14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
+
}
ROM_START( grdnstrmg ) /* Germany */
@@ -7683,7 +7688,7 @@ ROM_START( grdnstrmg ) /* Germany */
ROM_LOAD16_BYTE( "gs10_br4.uc11",0x100001, 0x080000, CRC(1d3b57e1) SHA1(a2da598d6cbe257de5b66905a5ad9de90711ccc7) )
ROM_LOAD16_BYTE( "gs9_br2.uc4", 0x100000, 0x080000, CRC(4d2c220b) SHA1(066067f7e80973ba0483559ac04f99292cc82dce) )
- // some other sets have larger regions here because they contain 2 sets of tiles in the ROMs, one for each orientation.
+ // the other sets have larger regions here because they contain 2 sets of tiles in the ROMs, one for each orientation.
// this set only contains the tile data for the required orientation.
ROM_REGION( 0x200000, "bgtile", 0 ) /* Layer 0, 16x16x8 */
ROM_LOAD( "gs10_cr5.uc15", 0x000000, 0x080000, CRC(2c8c23e3) SHA1(4c1a460dfc250f9aea77e2ddd82278ee816365be) )
@@ -7698,38 +7703,6 @@ ROM_START( grdnstrmg ) /* Germany */
ROM_LOAD( "gs2_s2.uc18", 0x00000, 0x40000, CRC(e911ce33) SHA1(a29c4dea98a22235122303325c63c15fadd3431d) ) //
ROM_END
-void nmk16_state::init_grdnstrmau()
-{
- decryptcode( machine(), 23, 22, 21, 20, 19, 18, 13, 16, 14, 15, 17, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
-}
-
-ROM_START( grdnstrmau )
- ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 Code */
- ROM_LOAD16_BYTE( "uc9_27c020.10", 0x000000, 0x040000, CRC(548932b4) SHA1(c90c7e769235d12b07b24deac436202c650cf3e8) )
- ROM_LOAD16_BYTE( "uc1_27c020.9", 0x000001, 0x040000, CRC(269e2fbc) SHA1(17c3511a44f044927c23f2e5bb8e75c29e3fbcc2) )
-
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 Code */
- ROM_LOAD( "uc14_27c512.8", 0x00000, 0x10000, CRC(5d8cf28e) SHA1(2a440bf5136f95af137b6688e566a14e65be94b1) )
-
- ROM_REGION( 0x200000, "sprites", 0 ) /* Sprites, 16x16x4 */
- ROM_LOAD16_BYTE( "uc3_27c040.8", 0x000000, 0x80000, CRC(9fc36932) SHA1(bc1617b1c4452114171b0d4fc4478346e8db4e00) )
- ROM_LOAD16_BYTE( "uc10_27c040.9", 0x000001, 0x80000, CRC(6e809d09) SHA1(c884b387a30930df7cd60b9bd80431577de9f356) )
- ROM_LOAD16_BYTE( "uc4_27c040.10", 0x100000, 0x80000, CRC(73bd6451) SHA1(a620d115f9c1b33f2c37a5263d6e53255af87cfb) )
- ROM_LOAD16_BYTE( "uc11_27c040.8", 0x100001, 0x80000, CRC(e699a3c9) SHA1(db9337581a8231c72c8dd5e05b0a35121c3a1552) )
-
- ROM_REGION( 0x200000, "bgtile", 0 ) /* Layer 0, 16x16x8 */
- ROM_LOAD( "uc15_27c040.10", 0x000000, 0x80000, CRC(0822f7e0) SHA1(b6ce51bbeeea021d4f8678e35df4e14166bd4d8b) )
- ROM_LOAD( "uc19_27c040.8", 0x080000, 0x80000, CRC(fa078e35) SHA1(e65175cc5a5e7214068b3f4686e37b872396424d) )
- ROM_LOAD( "uc6_27c040.9", 0x100000, 0x80000, CRC(ec288b95) SHA1(59e3728ce553d1af81bd023700669345b114c8e3) )
- ROM_LOAD( "uc12_27c040.10", 0x180000, 0x80000, CRC(a9ceec33) SHA1(d4f76f7a8203755fe756a9e17100f830db34eaab) )
-
- ROM_REGION( 0x10000, "fgtile", 0 ) /* Layer 1, 8x8x4 */
- ROM_LOAD( "uc2_27c512.9", 0x00000, 0x10000, CRC(b38d8446) SHA1(b2c8efb3db71b7428fcadc0d7098f8bc77dd6670) )
-
- ROM_REGION( 0x40000, "oki1", 0 ) /* Samples */
- ROM_LOAD( "uc18_27c020.9", 0x00000, 0x40000, CRC(e911ce33) SHA1(a29c4dea98a22235122303325c63c15fadd3431d) )
-ROM_END
-
// 紅狐戰機 II (Hóng Hú Zhànjī II)
ROM_START( redfoxwp2 )
ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 Code */
@@ -7755,7 +7728,10 @@ ROM_END
void nmk16_state::init_redfoxwp2a()
{
- decryptcode( machine(), 23, 22, 21, 20, 19, 18, 16, 17, 13, 14, 15, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
+ // todo collapse to one bitswap
+ decryptcode( machine(),23, 22, 21, 20, 19, 18, 17, 16, /* */ 13,15, 14, /* */ 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
+ decryptcode( machine(),23, 22, 21, 20, 19, 18, 17, 16, /* */14,15, /* */ 13,12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
+ decryptcode( machine(),23, 22, 21, 20, 19, 18, /* */ 16, 17, /* */ 15,14,13,12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
}
// 紅狐戰機 II (Hóng Hú Zhànjī II)
@@ -8263,7 +8239,7 @@ UC1, UC2 & UC3 have solder pads for both MX29F1610 Flash & 27C160 EPROMs
void nmk16_state::init_spec2k()
{
- decryptcode( machine(), 23, 22, 21, 20, 19, 18, 17, 13, 14, 15, 16, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
+ decryptcode( machine(), 23, 22, 21, 20, 19, 18, 17, 13, 14, 15, 16, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
}
ROM_START( spec2kh )
@@ -8471,7 +8447,6 @@ GAME( 1998, grdnstrmk, grdnstrm, grdnstrmk, grdnstrk, nmk16_state, init_
GAME( 1998, redfoxwp2, grdnstrm, grdnstrmk, grdnstrk, nmk16_state, init_grdnstrm, ROT270, "Afega", "Hong Hu Zhanji II (China, set 1)", 0 )
GAME( 1998, redfoxwp2a, grdnstrm, grdnstrmk, grdnstrk, nmk16_state, init_redfoxwp2a, ROT270, "Afega", "Hong Hu Zhanji II (China, set 2)", 0 )
GAME( 1998, grdnstrmg, grdnstrm, grdnstrmk, grdnstrk, nmk16_state, init_grdnstrmg, ROT270, "Afega", "Guardian Storm (Germany)", 0 )
-GAME( 1998, grdnstrmau, grdnstrm, grdnstrm, grdnstrm, nmk16_state, init_grdnstrmau, ORIENTATION_FLIP_Y, "Afega", "Guardian Storm (horizontal, Australia)", 0 )
// is there a 'bubble 2000' / 'hot bubble' version with Afega copyright, or is the only Afega release dolmen above, this seems like a sequel, not a clone?
GAME( 1998, bubl2000, 0, popspops, bubl2000, nmk16_state, init_bubl2000, ROT0, "Afega (Tuning license)", "Bubble 2000", 0 ) // on a tuning board - Has a Demo Sound DSW
diff --git a/src/mame/drivers/nmkmedal.cpp b/src/mame/drivers/nmkmedal.cpp
index 91fea27838e..ec7e3d196bd 100644
--- a/src/mame/drivers/nmkmedal.cpp
+++ b/src/mame/drivers/nmkmedal.cpp
@@ -55,14 +55,14 @@ void nmkmedal_state::mem_map(address_map &map)
static INPUT_PORTS_START( trocana )
INPUT_PORTS_END
-void nmkmedal_state::trocana(machine_config &config)
-{
- TMP90841(config, m_maincpu, 16500000 / 2); // actually TMP90C041AN
- m_maincpu->set_addrmap(AS_PROGRAM, &nmkmedal_state::mem_map);
+MACHINE_CONFIG_START(nmkmedal_state::trocana)
+ MCFG_DEVICE_ADD("maincpu", TMP90841, 16500000 / 2) // actually TMP90C041AN
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
SPEAKER(config, "mono").front_center();
- OKIM6376(config, "oki", 16500000 / 16).add_route(ALL_OUTPUTS, "mono", 1.0); // actually MSM6650
-}
+ MCFG_DEVICE_ADD("oki", OKIM6376, 16500000 / 16) // actually MSM6650
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( trocana)
ROM_REGION(0x10000, "maincpu", 0)
diff --git a/src/mame/drivers/nokia_3310.cpp b/src/mame/drivers/nokia_3310.cpp
index ea7919f0682..86cbbd2d2b8 100644
--- a/src/mame/drivers/nokia_3310.cpp
+++ b/src/mame/drivers/nokia_3310.cpp
@@ -262,7 +262,7 @@ void noki3310_state::machine_reset()
m_timer_fiq8->adjust(attotime::from_hz(1000), 0, attotime::from_hz(1000));
// simulate power-on input
- if (machine().system().name[4] == '8' || machine().system().name[4] == '5')
+ if (machine().system().name && (machine().system().name[4] == '8' || machine().system().name[4] == '5'))
m_power_on = ~0x10;
else
m_power_on = ~0x02;
@@ -700,56 +700,60 @@ static INPUT_PORTS_START( noki3310 )
INPUT_PORTS_END
-void noki3310_state::noki3310(machine_config &config)
-{
+MACHINE_CONFIG_START(noki3310_state::noki3310)
+
/* basic machine hardware */
- ARM7_BE(config, m_maincpu, 26000000 / 2); // MAD2WD1 13 MHz, clock internally supplied to ARM core can be divided by 2, in sleep mode a 32768 Hz clock is used
- m_maincpu->set_addrmap(AS_PROGRAM, &noki3310_state::noki3310_map);
+ MCFG_DEVICE_ADD("maincpu", ARM7_BE, 26000000 / 2) // MAD2WD1 13 MHz, clock internally supplied to ARM core can be divided by 2, in sleep mode a 32768 Hz clock is used
+ MCFG_DEVICE_PROGRAM_MAP(noki3310_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD, rgb_t::white()));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(84, 48);
- screen.set_visarea(0, 84-1, 0, 48-1);
- screen.set_screen_update("pcd8544", FUNC(pcd8544_device::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD_MONOCHROME("screen", LCD, rgb_t::white())
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(84, 48)
+ MCFG_SCREEN_VISIBLE_AREA(0, 84-1, 0, 48-1)
+ MCFG_SCREEN_UPDATE_DEVICE("pcd8544", pcd8544_device, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED);
- PCD8544(config, m_pcd8544, 0);
- m_pcd8544->set_screen_update_cb(FUNC(noki3310_state::pcd8544_screen_update), this);
+ MCFG_PCD8544_ADD("pcd8544")
+ MCFG_PCD8544_SCREEN_UPDATE_CALLBACK(noki3310_state, pcd8544_screen_update)
INTEL_TE28F160(config, "flash");
-}
-void noki3310_state::noki3330(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(noki3310_state::noki3330)
noki3310(config);
INTEL_TE28F320(config.replace(), "flash");
-}
-void noki3310_state::noki3410(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(noki3310_state::noki3410)
noki3330(config);
- subdevice<screen_device>("screen")->set_size(96, 65); // Philips OM6206
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(96, 65) // Philips OM6206
-void noki3310_state::noki7110(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(noki3310_state::noki7110)
noki3330(config);
- subdevice<screen_device>("screen")->set_size(96, 65); // Epson SED1565
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(96, 65) // Epson SED1565
-void noki3310_state::noki6210(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(noki3310_state::noki6210)
noki3330(config);
- subdevice<screen_device>("screen")->set_size(96, 60);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(96, 60)
+
+MACHINE_CONFIG_END
// MAD2 internal ROMS
diff --git a/src/mame/drivers/notechan.cpp b/src/mame/drivers/notechan.cpp
index e70841aa0d0..cc6f1cd901d 100644
--- a/src/mame/drivers/notechan.cpp
+++ b/src/mame/drivers/notechan.cpp
@@ -505,21 +505,21 @@ INPUT_PORTS_END
* Machine Config *
*********************************************/
-void notechan_state::notechan(machine_config &config)
-{
+MACHINE_CONFIG_START(notechan_state::notechan)
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK); // unknown...
- m_maincpu->set_addrmap(AS_PROGRAM, &notechan_state::notechan_map);
- m_maincpu->set_addrmap(AS_IO, &notechan_state::notechan_port_map);
- m_maincpu->set_periodic_int(FUNC(driver_device::irq0_line_hold), attotime::from_hz(60));
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK) // unknown...
+ MCFG_DEVICE_PROGRAM_MAP(notechan_map)
+ MCFG_DEVICE_IO_MAP(notechan_port_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(driver_device, irq0_line_hold, 60)
/* NO VIDEO */
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- OKIM6295(config, m_oki, SND_CLOCK, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "speaker", 1.0); // match the real sounds
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, SND_CLOCK, okim6295_device::PIN7_HIGH) // match the real sounds
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
/*********************************************
diff --git a/src/mame/drivers/notetaker.cpp b/src/mame/drivers/notetaker.cpp
index e1936339928..65a1d53ab0b 100644
--- a/src/mame/drivers/notetaker.cpp
+++ b/src/mame/drivers/notetaker.cpp
@@ -104,7 +104,6 @@ DONE:
#include "cpu/i86/i86.h"
#include "imagedev/floppy.h"
#include "machine/ay31015.h"
-#include "machine/clock.h"
#include "machine/pic8259.h"
#include "machine/wd_fdc.h"
#include "sound/dac.h"
@@ -799,8 +798,7 @@ void notetaker_state::ep_reset()
static INPUT_PORTS_START( notetakr )
INPUT_PORTS_END
-void notetaker_state::notetakr(machine_config &config)
-{
+MACHINE_CONFIG_START(notetaker_state::notetakr)
/* basic machine hardware */
/* IO CPU: 8086@8MHz */
I8086(config, m_iop_cpu, 24_MHz_XTAL / 3); /* iD8086-2 @ E4A; 24Mhz crystal divided down to 8Mhz by i8284 clock generator */
@@ -822,13 +820,13 @@ void notetaker_state::notetakr(machine_config &config)
m_ep_pic->out_int_callback().set_inputline(m_ep_cpu, 0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60.975);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(250));
- screen.set_screen_update(FUNC(notetaker_state::screen_update));
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60.975)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(250))
+ MCFG_SCREEN_UPDATE_DRIVER(notetaker_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -849,32 +847,27 @@ void notetaker_state::notetakr(machine_config &config)
m_crtc->set_screen("screen");
AY31015(config, m_kbduart); // HD6402, == AY-3-1015D
+ m_kbduart->set_rx_clock(960_kHz_XTAL); // hard-wired to 960KHz xtal #f11 (60000 baud, 16 clocks per baud)
+ m_kbduart->set_tx_clock(960_kHz_XTAL); // hard-wired to 960KHz xtal #f11 (60000 baud, 16 clocks per baud)
m_kbduart->write_dav_callback().set(m_iop_pic, FUNC(pic8259_device::ir6_w)); // DataRecvd = KbdInt
- clock_device &kbdclock(CLOCK(config, "kbdclock", 960_kHz_XTAL)); // hard-wired to 960KHz xtal #f11 (60000 baud, 16 clocks per baud)
- kbdclock.signal_handler().set(m_kbduart, FUNC(ay31015_device::write_rcp));
- kbdclock.signal_handler().append(m_kbduart, FUNC(ay31015_device::write_tcp));
-
AY31015(config, m_eiauart); // HD6402, == AY-3-1015D
+ m_eiauart->set_rx_clock(((960_kHz_XTAL/10)/4)/5); // hard-wired through an mc14568b divider set to divide by 4, the result set to divide by 5; this resulting 4800hz signal being 300 baud (16 clocks per baud)
+ m_eiauart->set_tx_clock(((960_kHz_XTAL/10)/4)/5); // hard-wired through an mc14568b divider set to divide by 4, the result set to divide by 5; this resulting 4800hz signal being 300 baud (16 clocks per baud)
m_eiauart->write_dav_callback().set(m_iop_pic, FUNC(pic8259_device::ir3_w)); // EIADataReady = EIAInt
- clock_device &eiaclock(CLOCK(config, "eiaclock", ((960_kHz_XTAL/10)/4)/5)); // hard-wired through an mc14568b divider set to divide by 4, the result set to divide by 5; this resulting 4800hz signal being 300 baud (16 clocks per baud)
- eiaclock.signal_handler().set(m_eiauart, FUNC(ay31015_device::write_rcp));
- eiaclock.signal_handler().append(m_eiauart, FUNC(ay31015_device::write_tcp));
-
/* Floppy */
FD1791(config, m_fdc, (((24_MHz_XTAL/3)/2)/2)); // 2mhz, from 24mhz ip clock divided by 6 via 8284, an additional 2 by LS161 at #e1 on display/floppy board
- FLOPPY_CONNECTOR(config, "wd1791:0", notetaker_floppies, "525dd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("wd1791:0", notetaker_floppies, "525dd", floppy_image_device::default_floppy_formats)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
// TODO: hook DAC up to two HA2425 (sample and hold) chips and hook those up to the speakers
- DAC1200(config, m_dac, 0).add_route(ALL_OUTPUTS, "lspeaker", 0.5).add_route(ALL_OUTPUTS, "rspeaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC1200, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
void notetaker_state::init_notetakr()
{
diff --git a/src/mame/drivers/nova2001.cpp b/src/mame/drivers/nova2001.cpp
index e19726fc8c1..70cd70d8a2a 100644
--- a/src/mame/drivers/nova2001.cpp
+++ b/src/mame/drivers/nova2001.cpp
@@ -124,6 +124,7 @@ e000 - e7ff R/W Work RAM
#include "emu.h"
#include "includes/nova2001.h"
+#include "cpu/z80/z80.h"
#include "machine/watchdog.h"
#include "sound/ay8910.h"
#include "screen.h"
@@ -182,7 +183,7 @@ MACHINE_START_MEMBER(nova2001_state,ninjakun)
void nova2001_state::nova2001_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
- map(0xa000, 0xa7ff).ram().w(FUNC(nova2001_state::fg_videoram_w)).share("fg_videoram");
+ map(0xa000, 0xa7ff).ram().w(FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram");
map(0xa800, 0xafff).ram().w(FUNC(nova2001_state::nova2001_bg_videoram_w)).share("bg_videoram");
map(0xb000, 0xb7ff).ram().share("spriteram");
map(0xb800, 0xbfff).w(FUNC(nova2001_state::nova2001_flipscreen_w));
@@ -198,38 +199,42 @@ void nova2001_state::nova2001_map(address_map &map)
}
-void nova2001_state::ninjakun_shared_map(address_map &map)
+void nova2001_state::ninjakun_cpu1_map(address_map &map)
{
- map(0x2000, 0x7fff).rom().region("maincpu", 0x2000);
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x7fff).rom();
map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w));
map(0x8001, 0x8001).r("ay1", FUNC(ay8910_device::data_r));
map(0x8002, 0x8003).w("ay2", FUNC(ay8910_device::address_data_w));
map(0x8003, 0x8003).r("ay2", FUNC(ay8910_device::data_r));
map(0xa000, 0xa000).portr("IN0");
map(0xa001, 0xa001).portr("IN1");
- map(0xa002, 0xa002).portr("IN2");
- map(0xc000, 0xc7ff).ram().w(FUNC(nova2001_state::fg_videoram_w)).share("fg_videoram");
+ map(0xa002, 0xa002).portr("IN2").w(FUNC(nova2001_state::ninjakun_cpu1_io_A002_w));
+ map(0xa003, 0xa003).w(FUNC(nova2001_state::pkunwar_flipscreen_w));
+ map(0xc000, 0xc7ff).ram().w(FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram");
map(0xc800, 0xcfff).rw(FUNC(nova2001_state::ninjakun_bg_videoram_r), FUNC(nova2001_state::ninjakun_bg_videoram_w)).share("bg_videoram");
map(0xd000, 0xd7ff).ram().share("spriteram");
- map(0xd800, 0xd9ff).ram().w(FUNC(nova2001_state::paletteram_w)).share("palette");
-}
-
-void nova2001_state::ninjakun_cpu1_map(address_map &map)
-{
- ninjakun_shared_map(map);
- map(0x0000, 0x1fff).rom().region("maincpu", 0);
- map(0xa002, 0xa002).w(FUNC(nova2001_state::ninjakun_cpu1_io_A002_w));
- map(0xa003, 0xa003).w(FUNC(nova2001_state::pkunwar_flipscreen_w));
+ map(0xd800, 0xd9ff).ram().w(FUNC(nova2001_state::ninjakun_paletteram_w)).share("palette");
map(0xe000, 0xe3ff).ram().share("share1");
map(0xe400, 0xe7ff).ram().share("share2");
}
void nova2001_state::ninjakun_cpu2_map(address_map &map)
{
- ninjakun_shared_map(map);
- map(0x0000, 0x1fff).rom().region("sub", 0);
- map(0xa002, 0xa002).w(FUNC(nova2001_state::ninjakun_cpu2_io_A002_w));
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x7fff).rom().region("maincpu", 0x2000);
+ map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x8001, 0x8001).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x8002, 0x8003).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x8003, 0x8003).r("ay2", FUNC(ay8910_device::data_r));
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa001, 0xa001).portr("IN1");
+ map(0xa002, 0xa002).portr("IN2").w(FUNC(nova2001_state::ninjakun_cpu2_io_A002_w));
map(0xa003, 0xa003).w(FUNC(nova2001_state::nova2001_flipscreen_w));
+ map(0xc000, 0xc7ff).ram().w(FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram");
+ map(0xc800, 0xcfff).rw(FUNC(nova2001_state::ninjakun_bg_videoram_r), FUNC(nova2001_state::ninjakun_bg_videoram_w)).share("bg_videoram");
+ map(0xd000, 0xd7ff).ram().share("spriteram");
+ map(0xd800, 0xd9ff).ram().w(FUNC(nova2001_state::ninjakun_paletteram_w)).share("palette");
map(0xe000, 0xe3ff).ram().share("share2"); /* swapped wrt CPU1 */
map(0xe400, 0xe7ff).ram().share("share1"); /* swapped wrt CPU1 */
}
@@ -259,16 +264,16 @@ void nova2001_state::raiders5_cpu1_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
map(0x8000, 0x87ff).ram().share("spriteram");
- map(0x8800, 0x8fff).ram().w(FUNC(nova2001_state::fg_videoram_w)).share("fg_videoram");
+ map(0x8800, 0x8fff).ram().w(FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram");
map(0x9000, 0x97ff).rw(FUNC(nova2001_state::ninjakun_bg_videoram_r), FUNC(nova2001_state::ninjakun_bg_videoram_w)).share("bg_videoram");
- map(0xa000, 0xa000).w(FUNC(nova2001_state::scroll_x_w));
- map(0xa001, 0xa001).w(FUNC(nova2001_state::scroll_y_w));
+ map(0xa000, 0xa000).w(FUNC(nova2001_state::nova2001_scroll_x_w));
+ map(0xa001, 0xa001).w(FUNC(nova2001_state::nova2001_scroll_y_w));
map(0xa002, 0xa002).w(FUNC(nova2001_state::pkunwar_flipscreen_w));
map(0xc000, 0xc001).w("ay1", FUNC(ay8910_device::address_data_w));
map(0xc001, 0xc001).r("ay1", FUNC(ay8910_device::data_r));
map(0xc002, 0xc003).w("ay2", FUNC(ay8910_device::address_data_w));
map(0xc003, 0xc003).r("ay2", FUNC(ay8910_device::data_r));
- map(0xd000, 0xd1ff).ram().w(FUNC(nova2001_state::paletteram_w)).share("palette");
+ map(0xd000, 0xd1ff).ram().w(FUNC(nova2001_state::ninjakun_paletteram_w)).share("palette");
map(0xe000, 0xe7ff).ram().share("share1");
}
@@ -284,8 +289,8 @@ void nova2001_state::raiders5_cpu2_map(address_map &map)
map(0xc000, 0xc000).nopr(); /* unknown */
map(0xc800, 0xc800).nopr(); /* unknown */
map(0xd000, 0xd000).nopr(); /* unknown */
- map(0xe000, 0xe000).w(FUNC(nova2001_state::scroll_x_w));
- map(0xe001, 0xe001).w(FUNC(nova2001_state::scroll_y_w));
+ map(0xe000, 0xe000).w(FUNC(nova2001_state::nova2001_scroll_x_w));
+ map(0xe001, 0xe001).w(FUNC(nova2001_state::nova2001_scroll_y_w));
map(0xe002, 0xe002).w(FUNC(nova2001_state::pkunwar_flipscreen_w));
}
@@ -641,22 +646,22 @@ GFXDECODE_END
*
*************************************/
-void nova2001_state::nova2001(machine_config &config)
-{
+MACHINE_CONFIG_START(nova2001_state::nova2001)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLOCK/4); // 3 MHz verified on schematics
- m_maincpu->set_addrmap(AS_PROGRAM, &nova2001_state::nova2001_map);
- m_maincpu->set_vblank_int("screen", FUNC(nova2001_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CLOCK/4) // 3 MHz verified on schematics
+ MCFG_DEVICE_PROGRAM_MAP(nova2001_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nova2001_state, irq0_line_hold)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 4*8, 28*8-1);
- screen.set_screen_update(FUNC(nova2001_state::screen_update_nova2001));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(nova2001_state, screen_update_nova2001)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_nova2001);
PALETTE(config, m_palette, FUNC(nova2001_state::nova2001_palette)).set_format(1, &nova2001_state::BBGGRRII, 512);
@@ -667,38 +672,39 @@ void nova2001_state::nova2001(machine_config &config)
SPEAKER(config, "mono").front_center();
ay8910_device &ay1(AY8910(config, "ay1", MAIN_CLOCK/6)); // 2 MHz verified on schematics
- ay1.port_a_write_callback().set(FUNC(nova2001_state::scroll_x_w));
- ay1.port_b_write_callback().set(FUNC(nova2001_state::scroll_y_w));
+ ay1.port_a_write_callback().set(FUNC(nova2001_state::nova2001_scroll_x_w));
+ ay1.port_b_write_callback().set(FUNC(nova2001_state::nova2001_scroll_y_w));
ay1.add_route(ALL_OUTPUTS, "mono", 0.25);
ay8910_device &ay2(AY8910(config, "ay2", MAIN_CLOCK/6));
ay2.port_a_read_callback().set_ioport("DSW1");
ay2.port_b_read_callback().set_ioport("DSW2");
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(nova2001_state::ninjakun)
-void nova2001_state::ninjakun(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLOCK/4); // 3 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &nova2001_state::ninjakun_cpu1_map);
- m_maincpu->set_vblank_int("screen", FUNC(nova2001_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CLOCK/4) // 3 MHz
+ MCFG_DEVICE_PROGRAM_MAP(ninjakun_cpu1_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nova2001_state, irq0_line_hold)
- z80_device &subcpu(Z80(config, "sub", MAIN_CLOCK/4)); // 3 MHz
- subcpu.set_addrmap(AS_PROGRAM, &nova2001_state::ninjakun_cpu2_map);
- subcpu.set_periodic_int(FUNC(nova2001_state::irq0_line_hold), attotime::from_hz(4*60)); /* ? */
+ MCFG_DEVICE_ADD("sub", Z80, MAIN_CLOCK/4) // 3 MHz
+ MCFG_DEVICE_PROGRAM_MAP(ninjakun_cpu2_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(nova2001_state, irq0_line_hold, 4*60) /* ? */
- config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame */
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame */
MCFG_MACHINE_START_OVERRIDE(nova2001_state,ninjakun)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 4*8, 28*8-1);
- screen.set_screen_update(FUNC(nova2001_state::screen_update_ninjakun));
- screen.set_palette(m_palette);
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(nova2001_state, screen_update_ninjakun)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ninjakun);
PALETTE(config, m_palette).set_format(1, &nova2001_state::BBGGRRII, 768);
@@ -714,26 +720,26 @@ void nova2001_state::ninjakun(machine_config &config)
ay1.add_route(ALL_OUTPUTS, "mono", 0.20);
ay8910_device &ay2(AY8910(config, "ay2", MAIN_CLOCK/4)); // 3 MHz
- ay2.port_a_write_callback().set(FUNC(nova2001_state::scroll_x_w));
- ay2.port_b_write_callback().set(FUNC(nova2001_state::scroll_y_w));
+ ay2.port_a_write_callback().set(FUNC(nova2001_state::nova2001_scroll_x_w));
+ ay2.port_b_write_callback().set(FUNC(nova2001_state::nova2001_scroll_y_w));
ay2.add_route(ALL_OUTPUTS, "mono", 0.20);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(nova2001_state::pkunwar)
-void nova2001_state::pkunwar(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLOCK/4); // 3 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &nova2001_state::pkunwar_map);
- m_maincpu->set_addrmap(AS_IO, &nova2001_state::pkunwar_io);
- m_maincpu->set_vblank_int("screen", FUNC(nova2001_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CLOCK/4) // 3 MHz
+ MCFG_DEVICE_PROGRAM_MAP(pkunwar_map)
+ MCFG_DEVICE_IO_MAP(pkunwar_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nova2001_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 4*8, 28*8-1);
- screen.set_screen_update(FUNC(nova2001_state::screen_update_pkunwar));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(nova2001_state, screen_update_pkunwar)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pkunwar);
PALETTE(config, m_palette, FUNC(nova2001_state::nova2001_palette)).set_format(1, &nova2001_state::BBGGRRII, 512);
@@ -752,29 +758,29 @@ void nova2001_state::pkunwar(machine_config &config)
ay2.port_a_read_callback().set_ioport("IN2");
ay2.port_b_read_callback().set_ioport("DSW1");
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(nova2001_state::raiders5)
-void nova2001_state::raiders5(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLOCK/4); // 3 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &nova2001_state::raiders5_cpu1_map);
- m_maincpu->set_addrmap(AS_IO, &nova2001_state::raiders5_io);
- m_maincpu->set_vblank_int("screen", FUNC(nova2001_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CLOCK/4) // 3 MHz
+ MCFG_DEVICE_PROGRAM_MAP(raiders5_cpu1_map)
+ MCFG_DEVICE_IO_MAP(raiders5_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nova2001_state, irq0_line_hold)
- z80_device &subcpu(Z80(config, "sub", MAIN_CLOCK/4)); // 3 MHz
- subcpu.set_addrmap(AS_PROGRAM, &nova2001_state::raiders5_cpu2_map);
- subcpu.set_periodic_int(FUNC(nova2001_state::irq0_line_hold), attotime::from_hz(4*60)); /* ? */
+ MCFG_DEVICE_ADD("sub", Z80, MAIN_CLOCK/4) // 3 MHz
+ MCFG_DEVICE_PROGRAM_MAP(raiders5_cpu2_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(nova2001_state, irq0_line_hold, 4*60) /* ? */
- config.m_minimum_quantum = attotime::from_hz(24000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(24000))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 4*8, 28*8-1);
- screen.set_screen_update(FUNC(nova2001_state::screen_update_raiders5));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(nova2001_state, screen_update_raiders5)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_raiders5);
PALETTE(config, m_palette).set_format(1, &nova2001_state::BBGGRRII, 768);
@@ -793,7 +799,7 @@ void nova2001_state::raiders5(machine_config &config)
ay2.port_a_read_callback().set_ioport("IN2");
ay2.port_b_read_callback().set_ioport("DSW1");
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
@@ -860,13 +866,13 @@ ROM_START( nova2001u )
ROM_END
ROM_START( ninjakun ) /* Original Board? */
- ROM_REGION( 0x8000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "ninja-1.7a", 0x0000, 0x02000, CRC(1c1dc141) SHA1(423d3ed35e73a8d5bfce075a889b0322b207bd0d) )
ROM_LOAD( "ninja-2.7b", 0x2000, 0x02000, CRC(39cc7d37) SHA1(7f0d0e1e92cb6a57f15eb7fc51a67112f1c5fc8e) )
ROM_LOAD( "ninja-3.7d", 0x4000, 0x02000, CRC(d542bfe3) SHA1(3814d8f5b1acda21438fff4f71670fa653dc7b30) )
ROM_LOAD( "ninja-4.7e", 0x6000, 0x02000, CRC(a57385c6) SHA1(77925a281e64889bfe967c3d42a388529aaf7eb6) )
- ROM_REGION( 0x2000, "sub", 0 )
+ ROM_REGION( 0x10000, "sub", 0 )
ROM_LOAD( "ninja-5.7h", 0x0000, 0x02000, CRC(164a42c4) SHA1(16b434b33b76b878514f67c23315d4c6da7bfc9e) )
ROM_REGION( 0x08000, "gfx1", 0 )
@@ -915,11 +921,11 @@ ROM_START( pkunwarj )
ROM_END
ROM_START( raiders5 )
- ROM_REGION( 0x8000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "raiders5.1", 0x0000, 0x4000, CRC(47cea11f) SHA1(0499e6627ad9c16775fdc59f2ff56dfdfc23490a) )
ROM_LOAD( "raiders5.2", 0x4000, 0x4000, CRC(eb2ff410) SHA1(5c995b66b6301cd3cd58efd173481deaa036f842) )
- ROM_REGION( 0x4000, "sub", 0 )
+ ROM_REGION( 0x10000, "sub", 0 )
ROM_LOAD( "raiders5.2", 0x0000, 0x4000, CRC(eb2ff410) SHA1(5c995b66b6301cd3cd58efd173481deaa036f842) )
ROM_REGION( 0x8000, "gfx1", 0 ) // (need lineswapping)
@@ -931,11 +937,11 @@ ROM_START( raiders5 )
ROM_END
ROM_START( raiders5t )
- ROM_REGION( 0x8000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "raiders1.4c", 0x0000, 0x4000, CRC(4e2d5679) SHA1(a1c1603ba98814a83b92ad024ca4422aea872111) )
ROM_LOAD( "raiders2.4d", 0x4000, 0x4000, CRC(c8604be1) SHA1(6d23f26174bb9b2f7db3a5fa6b39674fe237135b) )
- ROM_REGION( 0x4000, "sub", 0 )
+ ROM_REGION( 0x10000, "sub", 0 )
ROM_LOAD( "raiders2.4d", 0x0000, 0x4000, CRC(c8604be1) SHA1(6d23f26174bb9b2f7db3a5fa6b39674fe237135b) )
ROM_REGION( 0x8000, "gfx1", 0 ) // (need lineswapping)
@@ -967,7 +973,7 @@ To make it possible to decode graphics without resorting to ROM_CONTINUE
trickery, this function makes an address line rotation, bringing bit "bit" to
bit 0 and shifting left by one place all the intervening bits.
-This code is overly generic because it is used for several games in ninjakd2.cpp
+This code is overly generic because it is used for several games in ninjakd2.c
******************************************************************************/
@@ -975,9 +981,9 @@ void nova2001_state::lineswap_gfx_roms(const char *region, const int bit)
{
const int length = memregion(region)->bytes();
- u8* const src = memregion(region)->base();
+ uint8_t* const src = memregion(region)->base();
- std::vector<u8> temp(length);
+ std::vector<uint8_t> temp(length);
const int mask = (1 << (bit + 1)) - 1;
@@ -1022,7 +1028,7 @@ void nova2001_state::init_raiders5()
// many of these don't explicitly state Japan, eg. Nova 2001 could easily be used anywhere.
-// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY,FULLNAME,FLAGS
+// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY,FULLNAME,FLAGS
GAME( 1983, nova2001, 0, nova2001, nova2001, nova2001_state, empty_init, ROT0, "UPL", "Nova 2001 (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, nova2001h, nova2001, nova2001, nova2001, nova2001_state, empty_init, ROT0, "UPL", "Nova 2001 (Japan, hack?)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, nova2001u, nova2001, nova2001, nova2001, nova2001_state, empty_init, ROT0, "UPL (Universal license)", "Nova 2001 (US)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/novag6502.cpp b/src/mame/drivers/novag6502.cpp
new file mode 100644
index 00000000000..0b01b43c99d
--- /dev/null
+++ b/src/mame/drivers/novag6502.cpp
@@ -0,0 +1,1078 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+// thanks-to:Berger
+/******************************************************************************
+
+ Novag generic 6502 based chess computer driver
+
+ NOTE: MAME doesn't include a generalized implementation for boardpieces yet,
+ greatly affecting user playability of emulated electronic board games.
+ As workaround for the chess games, use an external chess GUI on the side,
+ such as Arena(in editmode).
+
+ TODO:
+ - cforte ACIA?
+ - verify supercon IRQ and beeper frequency
+ - sforte irq active time (21.5us is too long)
+ - sforte/sexpert led handling is correct?
+ - printer port
+
+******************************************************************************
+
+Super Constellation Chess Computer (model 844):
+- UMC UM6502C @ 4 MHz (8MHz XTAL), 600Hz? IRQ(source unknown?)
+- 2*2KB RAM TC5516APL-2 battery-backed, 2*32KB ROM custom label
+- TTL, buzzer, 24 LEDs, 8*8 chessboard buttons
+- external ports for clock and printer, not emulated here
+
+
+******************************************************************************
+
+Constellation Forte:
+- R65C02P4 @ 5MHz (10MHz XTAL)
+- 2*2KB RAM(NEC D449C-3), 2*32KB ROM(27C256)
+- HLCD0538P, 10-digit 7seg LCD display
+- TTL, 18 LEDs, 8*8 chessboard buttons
+
+When it was first added to MAME as skeleton driver in mmodular.c, cforteb romset
+was assumed to be Super Forte B, but it definitely isn't. I/O is similar to supercon.
+
+
+******************************************************************************
+
+Super Expert (model 878/887/902):
+- 65C02 @ 5MHz or 6MHz (10MHz or 12MHz XTAL)
+- 8KB RAM battery-backed, 3*32KB ROM
+- HD44780 LCD controller (16x1)
+- beeper(32KHz/32), IRQ(32KHz/128) via MC14060
+- optional R65C51P2 ACIA @ 1.8432MHz, for IBM PC interface (only works in version C?)
+- printer port, magnetic sensors, 8*8 chessboard leds
+
+I/O via TTL, hardware design was very awkward.
+Super Forte is very similar, just a cheaper plastic case and chessboard buttons
+instead of magnet sensors.
+
+******************************************************************************/
+
+#include "emu.h"
+#include "includes/novagbase.h"
+
+#include "bus/rs232/rs232.h"
+#include "cpu/m6502/m6502.h"
+#include "cpu/m6502/m65c02.h"
+#include "cpu/m6502/r65c02.h"
+#include "machine/mos6551.h"
+#include "machine/nvram.h"
+#include "video/hlcd0538.h"
+#include "screen.h"
+#include "speaker.h"
+
+// internal artwork
+#include "novag_cforte.lh" // clickable
+#include "novag_sexpert.lh" // clickable
+#include "novag_sforte.lh" // clickable
+#include "novag_supercon.lh" // clickable
+
+
+class novag6502_state : public novagbase_state
+{
+public:
+ novag6502_state(const machine_config &mconfig, device_type type, const char *tag) :
+ novagbase_state(mconfig, type, tag),
+ m_hlcd0538(*this, "hlcd0538"),
+ m_rombank(*this, "rombank")
+ { }
+
+ void supercon(machine_config &config);
+ void cforte(machine_config &config);
+ void sforte_map(address_map &map);
+ void sexpert(machine_config &config);
+ void sforte(machine_config &config);
+
+ void init_sexpert();
+
+ DECLARE_INPUT_CHANGED_MEMBER(sexpert_cpu_freq);
+
+private:
+ optional_device<hlcd0538_device> m_hlcd0538;
+ optional_memory_bank m_rombank;
+
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE); }
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE); }
+
+ // Super Constellation
+ DECLARE_WRITE8_MEMBER(supercon_mux_w);
+ DECLARE_WRITE8_MEMBER(supercon_control_w);
+ DECLARE_READ8_MEMBER(supercon_input1_r);
+ DECLARE_READ8_MEMBER(supercon_input2_r);
+ void supercon_map(address_map &map);
+
+ // Constellation Forte
+ void cforte_prepare_display();
+ DECLARE_WRITE64_MEMBER(cforte_lcd_output_w);
+ DECLARE_WRITE8_MEMBER(cforte_mux_w);
+ DECLARE_WRITE8_MEMBER(cforte_control_w);
+ void cforte_map(address_map &map);
+
+ // Super Expert
+ DECLARE_WRITE8_MEMBER(sexpert_leds_w);
+ DECLARE_WRITE8_MEMBER(sexpert_mux_w);
+ DECLARE_WRITE8_MEMBER(sexpert_lcd_control_w);
+ DECLARE_WRITE8_MEMBER(sexpert_lcd_data_w);
+ DECLARE_READ8_MEMBER(sexpert_input1_r);
+ DECLARE_READ8_MEMBER(sexpert_input2_r);
+ DECLARE_MACHINE_RESET(sexpert);
+ void sexpert_map(address_map &map);
+ void sexpert_set_cpu_freq();
+
+ // Super Forte
+ DECLARE_WRITE8_MEMBER(sforte_lcd_control_w);
+ DECLARE_WRITE8_MEMBER(sforte_lcd_data_w);
+};
+
+
+// machine start/reset
+
+void novagbase_state::machine_start()
+{
+ // resolve handlers
+ m_out_x.resolve();
+ m_out_a.resolve();
+ m_out_digit.resolve();
+
+ // zerofill
+ memset(m_display_state, 0, sizeof(m_display_state));
+ memset(m_display_decay, 0, sizeof(m_display_decay));
+ memset(m_display_segmask, 0, sizeof(m_display_segmask));
+
+ m_inp_mux = 0;
+ m_led_select = 0;
+ m_led_data = 0;
+ m_lcd_control = 0;
+ m_lcd_data = 0;
+
+ // register for savestates
+ save_item(NAME(m_display_maxy));
+ save_item(NAME(m_display_maxx));
+ save_item(NAME(m_display_wait));
+
+ save_item(NAME(m_display_state));
+ save_item(NAME(m_display_decay));
+ save_item(NAME(m_display_segmask));
+
+ save_item(NAME(m_inp_mux));
+ save_item(NAME(m_led_select));
+ save_item(NAME(m_led_data));
+ save_item(NAME(m_lcd_control));
+ save_item(NAME(m_lcd_data));
+}
+
+void novagbase_state::machine_reset()
+{
+}
+
+
+
+/***************************************************************************
+
+ Helper Functions
+
+***************************************************************************/
+
+// The device may strobe the outputs very fast, it is unnoticeable to the user.
+// To prevent flickering here, we need to simulate a decay.
+
+void novagbase_state::display_update()
+{
+ for (int y = 0; y < m_display_maxy; y++)
+ {
+ u32 active_state = 0;
+
+ for (int x = 0; x <= m_display_maxx; x++)
+ {
+ // turn on powered segments
+ if (m_display_state[y] >> x & 1)
+ m_display_decay[y][x] = m_display_wait;
+
+ // determine active state
+ u32 ds = (m_display_decay[y][x] != 0) ? 1 : 0;
+ active_state |= (ds << x);
+
+ // output to y.x, or y.a when always-on
+ if (x != m_display_maxx)
+ m_out_x[y][x] = ds;
+ else
+ m_out_a[y] = ds;
+ }
+
+ // output to digity
+ if (m_display_segmask[y] != 0)
+ m_out_digit[y] = active_state & m_display_segmask[y];
+ }
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(novagbase_state::display_decay_tick)
+{
+ // slowly turn off unpowered segments
+ for (int y = 0; y < m_display_maxy; y++)
+ for (int x = 0; x <= m_display_maxx; x++)
+ if (m_display_decay[y][x] != 0)
+ m_display_decay[y][x]--;
+
+ display_update();
+}
+
+void novagbase_state::set_display_size(int maxx, int maxy)
+{
+ m_display_maxx = maxx;
+ m_display_maxy = maxy;
+}
+
+void novagbase_state::set_display_segmask(u32 digits, u32 mask)
+{
+ // set a segment mask per selected digit, but leave unselected ones alone
+ for (int i = 0; i < 0x20; i++)
+ {
+ if (digits & 1)
+ m_display_segmask[i] = mask;
+ digits >>= 1;
+ }
+}
+
+void novagbase_state::display_matrix(int maxx, int maxy, u32 setx, u32 sety, bool update)
+{
+ set_display_size(maxx, maxy);
+
+ // update current state
+ u32 mask = (1 << maxx) - 1;
+ for (int y = 0; y < maxy; y++)
+ m_display_state[y] = (sety >> y & 1) ? ((setx & mask) | (1 << maxx)) : 0;
+
+ if (update)
+ display_update();
+}
+
+
+// LCD
+
+void novagbase_state::novag_lcd_palette(palette_device &palette) const
+{
+ palette.set_pen_color(0, rgb_t(138, 146, 148)); // background
+ palette.set_pen_color(1, rgb_t(92, 83, 88)); // lcd pixel on
+ palette.set_pen_color(2, rgb_t(131, 136, 139)); // lcd pixel off
+}
+
+HD44780_PIXEL_UPDATE(novagbase_state::novag_lcd_pixel_update)
+{
+ // char size is 5x8
+ if (x > 4 || y > 7)
+ return;
+
+ if (line < 2 && pos < 8)
+ {
+ // internal: (8+8)*1, external: 1*16
+ bitmap.pix16(1 + y, 1 + line*8*6 + pos*6 + x) = state ? 1 : 2;
+ }
+}
+
+
+// generic input handlers
+
+u16 novagbase_state::read_inputs(int columns)
+{
+ u16 ret = 0;
+
+ // read selected input rows
+ for (int i = 0; i < columns; i++)
+ if (m_inp_mux >> i & 1)
+ ret |= m_inp_matrix[i]->read();
+
+ return ret;
+}
+
+
+
+// Devices, I/O
+
+/******************************************************************************
+ Super Constellation
+******************************************************************************/
+
+// TTL
+
+WRITE8_MEMBER(novag6502_state::supercon_mux_w)
+{
+ // d0-d7: input mux, led data
+ m_inp_mux = m_led_data = data;
+ display_matrix(8, 3, m_led_data, m_led_select);
+}
+
+WRITE8_MEMBER(novag6502_state::supercon_control_w)
+{
+ // d0-d3: ?
+ // d4-d6: select led row
+ m_led_select = data >> 4 & 7;
+ display_matrix(8, 3, m_led_data, m_led_select);
+
+ // d7: enable beeper
+ m_beeper->set_state(data >> 7 & 1);
+}
+
+READ8_MEMBER(novag6502_state::supercon_input1_r)
+{
+ // d0-d7: multiplexed inputs (chessboard squares)
+ return ~read_inputs(8) & 0xff;
+}
+
+READ8_MEMBER(novag6502_state::supercon_input2_r)
+{
+ // d0-d5: ?
+ // d6,d7: multiplexed inputs (side panel)
+ return (read_inputs(8) >> 2 & 0xc0) ^ 0xff;
+}
+
+
+
+/******************************************************************************
+ Constellation Forte
+******************************************************************************/
+
+// TTL/generic
+
+void novag6502_state::cforte_prepare_display()
+{
+ // 3 led rows
+ display_matrix(8, 3, m_led_data, m_led_select, false);
+
+ // lcd panel (mostly handled in cforte_lcd_output_w)
+ set_display_segmask(0x3ff0, 0xff);
+ set_display_size(8, 3+13);
+ display_update();
+}
+
+WRITE64_MEMBER(novag6502_state::cforte_lcd_output_w)
+{
+ // 4 rows used
+ u32 rowdata[4];
+ for (int i = 0; i < 4; i++)
+ rowdata[i] = (data >> i & 1) ? u32(data >> 8) : 0;
+
+ // 2 segments per row
+ for (int dig = 0; dig < 13; dig++)
+ {
+ m_display_state[dig+3] = 0;
+ for (int i = 0; i < 4; i++)
+ m_display_state[dig+3] |= ((rowdata[i] >> (2*dig) & 3) << (2*i));
+
+ m_display_state[dig+3] = bitswap<8>(m_display_state[dig+3],7,2,0,4,6,5,3,1);
+ }
+
+ cforte_prepare_display();
+}
+
+WRITE8_MEMBER(novag6502_state::cforte_mux_w)
+{
+ // d0-d7: input mux, led data
+ m_inp_mux = m_led_data = data;
+ cforte_prepare_display();
+}
+
+WRITE8_MEMBER(novag6502_state::cforte_control_w)
+{
+ // d0: HLCD0538 data in
+ // d1: HLCD0538 clk
+ // d2: HLCD0538 lcd
+ m_hlcd0538->write_data(data & 1);
+ m_hlcd0538->write_clk(data >> 1 & 1);
+ m_hlcd0538->write_lcd(data >> 2 & 1);
+
+ // d3: unused?
+
+ // d4-d6: select led row
+ m_led_select = data >> 4 & 7;
+ cforte_prepare_display();
+
+ // d7: enable beeper
+ m_beeper->set_state(data >> 7 & 1);
+}
+
+
+
+/******************************************************************************
+ Super Expert
+******************************************************************************/
+
+// TTL/generic
+
+WRITE8_MEMBER(novag6502_state::sexpert_lcd_control_w)
+{
+ // d0: HD44780 RS
+ // d1: HD44780 R/W
+ // d2: HD44780 E
+ if (m_lcd_control & ~data & 4 && ~data & 2)
+ m_lcd->write(m_lcd_control & 1, m_lcd_data);
+ m_lcd_control = data & 7;
+}
+
+WRITE8_MEMBER(novag6502_state::sexpert_lcd_data_w)
+{
+ // d0-d7: HD44780 data
+ m_lcd_data = data;
+}
+
+WRITE8_MEMBER(novag6502_state::sexpert_leds_w)
+{
+ // d0-d7: chessboard leds
+ m_led_data = data;
+}
+
+WRITE8_MEMBER(novag6502_state::sexpert_mux_w)
+{
+ // d0: rom bankswitch
+ m_rombank->set_entry(data & 1);
+
+ // d3: enable beeper
+ m_beeper->set_state(data >> 3 & 1);
+
+ // d4-d7: 74145 to input mux/led select
+ m_inp_mux = 1 << (data >> 4 & 0xf) & 0xff;
+ display_matrix(8, 8, m_led_data, m_inp_mux);
+ m_led_data = 0; // ?
+}
+
+READ8_MEMBER(novag6502_state::sexpert_input1_r)
+{
+ // d0-d7: multiplexed inputs (chessboard squares)
+ return ~read_inputs(8) & 0xff;
+}
+
+READ8_MEMBER(novag6502_state::sexpert_input2_r)
+{
+ // d0-d2: printer port
+ // d5-d7: multiplexed inputs (side panel)
+ return ~read_inputs(8) >> 3 & 0xe0;
+}
+
+void novag6502_state::sexpert_set_cpu_freq()
+{
+ // machines were released with either 5MHz or 6MHz CPU
+ m_maincpu->set_unscaled_clock((ioport("FAKE")->read() & 1) ? (12_MHz_XTAL/2) : (10_MHz_XTAL/2));
+}
+
+MACHINE_RESET_MEMBER(novag6502_state, sexpert)
+{
+ novagbase_state::machine_reset();
+
+ sexpert_set_cpu_freq();
+ m_rombank->set_entry(0);
+}
+
+void novag6502_state::init_sexpert()
+{
+ m_rombank->configure_entries(0, 2, memregion("maincpu")->base() + 0x8000, 0x8000);
+}
+
+
+
+/******************************************************************************
+ Super Forte
+******************************************************************************/
+
+WRITE8_MEMBER(novag6502_state::sforte_lcd_control_w)
+{
+ // d3: rom bankswitch
+ m_rombank->set_entry(data >> 3 & 1);
+
+ // assume same as sexpert
+ sexpert_lcd_control_w(space, 0, data);
+}
+
+WRITE8_MEMBER(novag6502_state::sforte_lcd_data_w)
+{
+ // d0-d2: input mux/led select
+ m_inp_mux = 1 << (data & 7);
+
+ // if lcd is disabled, misc control
+ if (~m_lcd_control & 4)
+ {
+ // d5,d6: led data, but not both at same time?
+ if ((data & 0x60) != 0x60)
+ display_matrix(2, 8, data >> 5 & 3, m_inp_mux);
+
+ // d7: enable beeper
+ m_beeper->set_state(data >> 7 & 1);
+ }
+
+ // assume same as sexpert
+ sexpert_lcd_data_w(space, 0, data);
+}
+
+
+
+/******************************************************************************
+ Address Maps
+******************************************************************************/
+
+// Super Constellation / Constellation Forte
+
+void novag6502_state::supercon_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("nvram");
+ map(0x1c00, 0x1c00).nopw(); // printer/clock?
+ map(0x1d00, 0x1d00).nopw(); // printer/clock?
+ map(0x1e00, 0x1e00).rw(FUNC(novag6502_state::supercon_input2_r), FUNC(novag6502_state::supercon_mux_w));
+ map(0x1f00, 0x1f00).rw(FUNC(novag6502_state::supercon_input1_r), FUNC(novag6502_state::supercon_control_w));
+ map(0x2000, 0xffff).rom();
+}
+
+void novag6502_state::cforte_map(address_map &map)
+{
+ supercon_map(map);
+ map(0x1e00, 0x1e00).rw(FUNC(novag6502_state::supercon_input2_r), FUNC(novag6502_state::cforte_mux_w));
+ map(0x1f00, 0x1f00).rw(FUNC(novag6502_state::supercon_input1_r), FUNC(novag6502_state::cforte_control_w));
+}
+
+
+// Super Expert / Super Forte
+
+void novag6502_state::sforte_map(address_map &map)
+{
+ map(0x0000, 0x1fef).ram().share("nvram"); // 8KB RAM, but RAM CE pin is deactivated on $1ff0-$1fff
+ map(0x1ff0, 0x1ff0).r(FUNC(novag6502_state::sexpert_input1_r));
+ map(0x1ff1, 0x1ff1).r(FUNC(novag6502_state::sexpert_input2_r));
+ map(0x1ff2, 0x1ff2).nopw(); // printer
+ map(0x1ff3, 0x1ff3).nopw(); // printer
+ map(0x1ff6, 0x1ff6).w(FUNC(novag6502_state::sforte_lcd_control_w));
+ map(0x1ff7, 0x1ff7).w(FUNC(novag6502_state::sforte_lcd_data_w));
+ map(0x1ffc, 0x1fff).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0x2000, 0x7fff).rom();
+ map(0x8000, 0xffff).bankr("rombank");
+}
+
+void novag6502_state::sexpert_map(address_map &map)
+{
+ sforte_map(map);
+ map(0x1ff4, 0x1ff4).w(FUNC(novag6502_state::sexpert_leds_w));
+ map(0x1ff5, 0x1ff5).w(FUNC(novag6502_state::sexpert_mux_w));
+ map(0x1ff6, 0x1ff6).w(FUNC(novag6502_state::sexpert_lcd_control_w));
+ map(0x1ff7, 0x1ff7).w(FUNC(novag6502_state::sexpert_lcd_data_w));
+}
+
+
+
+/******************************************************************************
+ Input Ports
+******************************************************************************/
+
+INPUT_PORTS_START( novag_cb_buttons )
+ PORT_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.4")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.5")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.6")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+INPUT_PORTS_END
+
+INPUT_PORTS_START( novag_cb_magnets )
+ PORT_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.4")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.5")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.6")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+
+ PORT_START("IN.7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( supercon )
+ PORT_INCLUDE( novag_cb_buttons )
+
+ PORT_MODIFY("IN.0")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("New Game")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("Multi Move / Player/Player / King")
+
+ PORT_MODIFY("IN.1")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) PORT_NAME("Verify / Set Up")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_NAME("Best Move/Random / Training Level / Queen")
+
+ PORT_MODIFY("IN.2")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Change Color")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_NAME("Sound / Depth Search / Bishop")
+
+ PORT_MODIFY("IN.3")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Clear Board")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("Solve Mate / Knight")
+
+ PORT_MODIFY("IN.4")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Print Moves")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("Print Board / Rook")
+
+ PORT_MODIFY("IN.5")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Form Size")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("Print List / Acc. Time / Pawn")
+
+ PORT_MODIFY("IN.6")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Hint")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("Set Level")
+
+ PORT_MODIFY("IN.7")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Go")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Take Back")
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( cforte )
+ PORT_INCLUDE( novag_cb_buttons )
+
+ PORT_MODIFY("IN.0")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("New Game")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("Player/Player / Gambit/Large / King")
+
+ PORT_MODIFY("IN.1")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) PORT_NAME("Verify/Set Up / Pro-Op")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_NAME("Random/Tour/Normal / Training Level / Queen")
+
+ PORT_MODIFY("IN.2")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Change Color / Time Control / Priority")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_NAME("Sound / Depth Search / Bishop")
+
+ PORT_MODIFY("IN.3")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Flip Display / Clear Board / Clear Book")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("Solve Mate / Infinite / Knight")
+
+ PORT_MODIFY("IN.4")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Print Moves / Print Evaluations / Print Book")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("Print Board / Interface / Rook")
+
+ PORT_MODIFY("IN.5")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Trace Forward / Auto Play / No/End")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("Print List / Acc. Time / Pawn")
+
+ PORT_MODIFY("IN.6")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Hint / Next Best / Yes/Start")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("Set Level")
+
+ PORT_MODIFY("IN.7")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Go / ->")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Take Back / Restore / <-")
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( sexy_shared )
+ PORT_MODIFY("IN.0")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Go")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Take Back / Analyze Games")
+ PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("->")
+
+ PORT_MODIFY("IN.1")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Set Level")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Flip Display / Time Control")
+ PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("<-")
+
+ PORT_MODIFY("IN.2")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_NAME("Hint / Next Best")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Priority / Tournament Book / Pawn")
+ PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("Yes/Start / Start of Game")
+
+ PORT_MODIFY("IN.3")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("Trace Forward / AutoPlay")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Pro-Op / Restore Game / Rook")
+ PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("No/End / End of Game")
+
+ PORT_MODIFY("IN.4")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Clear Board / Delete Pro-Op")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Best Move/Random / Review / Knight")
+ PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("Print Book / Store Game")
+
+ PORT_MODIFY("IN.5")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("Change Color")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Sound / Info / Bishop")
+ PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_NAME("Print Moves / Print Evaluations")
+
+ PORT_MODIFY("IN.6")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_J) PORT_NAME("Verify/Set Up / Pro-Op Book/Both Books")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) PORT_NAME("Solve Mate / Infinite / Queen")
+ PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_NAME("Print List / Acc. Time")
+
+ PORT_MODIFY("IN.7")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_K) PORT_NAME("New Game")
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("Player/Player / Gambit Book / King")
+ PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("Print Board / Interface")
+
+ PORT_START("FAKE")
+ PORT_CONFNAME( 0x01, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, novag6502_state, sexpert_cpu_freq, nullptr) // factory set
+ PORT_CONFSETTING( 0x00, "5MHz" )
+ PORT_CONFSETTING( 0x01, "6MHz" )
+INPUT_PORTS_END
+
+INPUT_CHANGED_MEMBER(novag6502_state::sexpert_cpu_freq)
+{
+ sexpert_set_cpu_freq();
+}
+
+static INPUT_PORTS_START( sexpert )
+ PORT_INCLUDE( novag_cb_magnets )
+ PORT_INCLUDE( sexy_shared )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sforte )
+ PORT_INCLUDE( novag_cb_buttons )
+ PORT_INCLUDE( sexy_shared )
+INPUT_PORTS_END
+
+
+
+/******************************************************************************
+ Machine Drivers
+******************************************************************************/
+
+MACHINE_CONFIG_START(novag6502_state::supercon)
+
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", M6502, 8_MHz_XTAL/2)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(novag6502_state, irq0_line_hold, 600) // guessed
+ MCFG_DEVICE_PROGRAM_MAP(supercon_map)
+
+ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", novag6502_state, display_decay_tick, attotime::from_msec(1))
+ config.set_default_layout(layout_novag_supercon);
+
+ /* sound hardware */
+ SPEAKER(config, "mono").front_center();
+ BEEP(config, m_beeper, 1024); // guessed
+ m_beeper->add_route(ALL_OUTPUTS, "mono", 0.25);
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(novag6502_state::cforte)
+
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", R65C02, 10_MHz_XTAL/2)
+ MCFG_DEVICE_PROGRAM_MAP(cforte_map)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", novag6502_state, irq_on, attotime::from_hz(32.768_kHz_XTAL/128)) // 256Hz
+ MCFG_TIMER_START_DELAY(attotime::from_hz(32.768_kHz_XTAL/128) - attotime::from_usec(11)) // active for 11us
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", novag6502_state, irq_off, attotime::from_hz(32.768_kHz_XTAL/128))
+
+ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
+
+ /* video hardware */
+ HLCD0538(config, m_hlcd0538, 0);
+ m_hlcd0538->write_cols_callback().set(FUNC(novag6502_state::cforte_lcd_output_w));
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", novag6502_state, display_decay_tick, attotime::from_msec(1))
+ config.set_default_layout(layout_novag_cforte);
+
+ /* sound hardware */
+ SPEAKER(config, "mono").front_center();
+ BEEP(config, m_beeper, 32.768_kHz_XTAL/32); // 1024Hz
+ m_beeper->add_route(ALL_OUTPUTS, "mono", 0.25);
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(novag6502_state::sexpert)
+
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", M65C02, 10_MHz_XTAL/2) // or 12_MHz_XTAL/2
+ MCFG_DEVICE_PROGRAM_MAP(sexpert_map)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", novag6502_state, irq_on, attotime::from_hz(32.768_kHz_XTAL/128)) // 256Hz
+ MCFG_TIMER_START_DELAY(attotime::from_hz(32.768_kHz_XTAL/128) - attotime::from_nsec(21500)) // active for 21.5us
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", novag6502_state, irq_off, attotime::from_hz(32.768_kHz_XTAL/128))
+
+ mos6551_device &acia(MOS6551(config, "acia", 0)); // R65C51P2 - RTS to CTS, DCD to GND
+ acia.set_xtal(1.8432_MHz_XTAL);
+ acia.irq_handler().set_inputline("maincpu", m65c02_device::NMI_LINE);
+ acia.rts_handler().set("acia", FUNC(mos6551_device::write_cts));
+ acia.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
+ acia.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr));
+
+ rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr));
+ rs232.rxd_handler().set("acia", FUNC(mos6551_device::write_rxd));
+ rs232.dsr_handler().set("acia", FUNC(mos6551_device::write_dsr));
+
+ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
+
+ MCFG_MACHINE_RESET_OVERRIDE(novag6502_state, sexpert)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60) // arbitrary
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(6*16+1, 10)
+ MCFG_SCREEN_VISIBLE_AREA(0, 6*16, 0, 10-1)
+ MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+ PALETTE(config, "palette", FUNC(novag6502_state::novag_lcd_palette), 3);
+
+ MCFG_HD44780_ADD("hd44780")
+ MCFG_HD44780_LCD_SIZE(2, 8)
+ MCFG_HD44780_PIXEL_UPDATE_CB(novag6502_state, novag_lcd_pixel_update)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", novag6502_state, display_decay_tick, attotime::from_msec(1))
+ config.set_default_layout(layout_novag_sexpert);
+
+ /* sound hardware */
+ SPEAKER(config, "mono").front_center();
+ BEEP(config, m_beeper, 32.768_kHz_XTAL/32); // 1024Hz
+ m_beeper->add_route(ALL_OUTPUTS, "mono", 0.25);
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(novag6502_state::sforte)
+ sexpert(config);
+
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sforte_map)
+ MCFG_TIMER_MODIFY("irq_on")
+ MCFG_TIMER_START_DELAY(attotime::from_hz(32.768_kHz_XTAL/128) - attotime::from_usec(11)) // active for ?us (assume same as cforte)
+
+ config.set_default_layout(layout_novag_sforte);
+MACHINE_CONFIG_END
+
+
+
+/******************************************************************************
+ ROM Definitions
+******************************************************************************/
+
+ROM_START( supercon )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("novag_8441", 0x0000, 0x8000, CRC(b853cf6e) SHA1(1a759072a5023b92c07f1fac01b7a21f7b5b45d0) ) // label obscured by Q.C. sticker
+ ROM_LOAD("novag_8442", 0x8000, 0x8000, CRC(c8f82331) SHA1(f7fd039f9a3344db9749931490ded9e9e309cfbe) )
+ROM_END
+
+
+ROM_START( cfortea )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("a_903_l", 0x0000, 0x8000, CRC(01e7e306) SHA1(6a2b982bb0f412a63f5d3603958dd863e38669d9) ) // NEC D27C256AD-12
+ ROM_LOAD("a_903_h", 0x8000, 0x8000, CRC(c5a5573f) SHA1(7e11eb2f3d96bc41386a14a19635427a386ec1ec) ) // "
+ROM_END
+
+ROM_START( cforteb )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("forte_b_l.bin", 0x0000, 0x8000, CRC(e3d194a1) SHA1(80457580d7c57e07895fd14bfdaf14b30952afca) )
+ ROM_LOAD("forte_b_h.bin", 0x8000, 0x8000, CRC(dd824be8) SHA1(cd8666b6b525887f9fc48a730b71ceabcf07f3b9) )
+ROM_END
+
+
+ROM_START( sfortea )
+ ROM_REGION( 0x18000, "maincpu", 0 )
+ ROM_LOAD("sfalo.u3", 0x0000, 0x8000, CRC(86e0230a) SHA1(0d6e18a17e636b8c7292c8f331349d361892d1a8) )
+ ROM_LOAD("sfahi.u1", 0x8000, 0x8000, CRC(81c02746) SHA1(0bf68b68ade5a3263bead88da0a8965fc71483c1) )
+ ROM_LOAD("sfabook.u2", 0x10000, 0x8000, CRC(3e42cf7c) SHA1(b2faa36a127e08e5755167a25ed4a07f12d62957) )
+ROM_END
+
+ROM_START( sfortea1 )
+ ROM_REGION( 0x18000, "maincpu", 0 )
+ ROM_LOAD("sfa_lo.u3", 0x0000, 0x8000, CRC(78734bfd) SHA1(b6d8e9efccee6f6d0b0cd257a82162bf8ccec719) )
+ ROM_LOAD("sfa_hi_1.u1", 0x8000, 0x8000, CRC(e5e84580) SHA1(bae55c3da7b720bf6ccfb450e383c53cebd5e9ef) )
+ ROM_LOAD("sfa_hi_0.u2", 0x10000, 0x8000, CRC(3e42cf7c) SHA1(b2faa36a127e08e5755167a25ed4a07f12d62957) )
+ROM_END
+
+ROM_START( sforteb )
+ ROM_REGION( 0x18000, "maincpu", 0 )
+ ROM_LOAD("forte_b_lo.u3", 0x0000, 0x8000, CRC(48bfe5d6) SHA1(323642686b6d2fb8db2b7d50c6cd431058078ce1) )
+ ROM_LOAD("forte_b_hi1.u1", 0x8000, 0x8000, CRC(9778ca2c) SHA1(d8b88b9768a1a9171c68cbb0892b817d68d78351) )
+ ROM_LOAD("forte_b_hi0.u2", 0x10000, 0x8000, CRC(bb07ad52) SHA1(30cf9005021ab2d7b03facdf2d3588bc94dc68a6) )
+ROM_END
+
+ROM_START( sfortec )
+ ROM_REGION( 0x18000, "maincpu", 0 )
+ ROM_LOAD("sfl_c_111.u3", 0x0000, 0x8000, CRC(f040cf30) SHA1(1fc1220b8ed67cdffa3866d230ce001721cf684f) ) // Toshiba TC57256AD-12
+ ROM_LOAD("sfh_c_111.u1", 0x8000, 0x8000, CRC(0f926b32) SHA1(9c7270ecb3f41dd9172a9a7928e6e04e64b2a340) ) // NEC D27C256AD-12
+ ROM_LOAD("h0_c_c26.u2", 0x10000, 0x8000, CRC(c6a1419a) SHA1(017a0ffa9aa59438c879624a7ddea2071d1524b8) ) // Toshiba TC57256AD-12
+ROM_END
+
+
+ROM_START( sexperta )
+ ROM_REGION( 0x18000, "maincpu", 0 )
+ ROM_LOAD("se_lo_b15.u3", 0x0000, 0x8000, CRC(6cc9527c) SHA1(29bab809399f2863a88a9c41535ecec0a4fd65ea) )
+ ROM_LOAD("se_hi1_b15.u1", 0x8000, 0x8000, CRC(6e57f0c0) SHA1(ea44769a6f54721fd4543366bda932e86e497d43) )
+ ROM_LOAD("sef_hi0_a23.u2", 0x10000, 0x8000, CRC(7d4e1528) SHA1(53c7d458a5571afae402f00ae3d0f5066634b068) )
+ROM_END
+
+ROM_START( sexpertb )
+ ROM_REGION( 0x18000, "maincpu", 0 )
+ ROM_LOAD("se_lo_619.u3", 0x0000, 0x8000, CRC(92002eb6) SHA1(ed8ca16701e00b48fa55c856fa4a8c6613079c02) )
+ ROM_LOAD("se_hi1_619.u1", 0x8000, 0x8000, CRC(814b4420) SHA1(c553e6a8c048dcc1cf48d410111a86e06b99d356) )
+ ROM_LOAD("sef_hi0_605.u2", 0x10000, 0x8000, CRC(bb07ad52) SHA1(30cf9005021ab2d7b03facdf2d3588bc94dc68a6) )
+ROM_END
+
+ROM_START( sexpertc )
+ ROM_REGION( 0x18000, "maincpu", 0 )
+ ROM_LOAD("se_lo_v3.6.u3", 0x0000, 0x8000, CRC(5a29105e) SHA1(be37bb29b530dbba847a5e8d27d81b36525e47f7) )
+ ROM_LOAD("se_hi1.u1", 0x8000, 0x8000, CRC(0085c2c4) SHA1(d84bf4afb022575db09dd9dc12e9b330acce35fa) )
+ ROM_LOAD("se_hi0.u2", 0x10000, 0x8000, CRC(2d085064) SHA1(76162322aa7d23a5c07e8356d0bbbb33816419af) )
+ROM_END
+
+ROM_START( sexpertc1 )
+ ROM_REGION( 0x18000, "maincpu", 0 )
+ ROM_LOAD("se_lo_v1.2.u3", 0x0000, 0x8000, CRC(43ed7a9e) SHA1(273c485e5be6b107b6c5c448003ba7686d4a6d06) )
+ ROM_LOAD("se_hi1.u1", 0x8000, 0x8000, CRC(0085c2c4) SHA1(d84bf4afb022575db09dd9dc12e9b330acce35fa) )
+ ROM_LOAD("se_hi0.u2", 0x10000, 0x8000, CRC(2d085064) SHA1(76162322aa7d23a5c07e8356d0bbbb33816419af) )
+ROM_END
+
+
+
+/******************************************************************************
+ Drivers
+******************************************************************************/
+
+// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
+CONS( 1984, supercon, 0, 0, supercon, supercon, novag6502_state, empty_init, "Novag", "Super Constellation", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1986, cfortea, 0, 0, cforte, cforte, novag6502_state, empty_init, "Novag", "Constellation Forte (version A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1986, cforteb, cfortea, 0, cforte, cforte, novag6502_state, empty_init, "Novag", "Constellation Forte (version B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1987, sfortea, 0, 0, sforte, sforte, novag6502_state, init_sexpert, "Novag", "Super Forte (version A, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1987, sfortea1, sfortea, 0, sforte, sforte, novag6502_state, init_sexpert, "Novag", "Super Forte (version A, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1988, sforteb, sfortea, 0, sforte, sforte, novag6502_state, init_sexpert, "Novag", "Super Forte (version B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1990, sfortec, sfortea, 0, sforte, sforte, novag6502_state, init_sexpert, "Novag", "Super Forte (version C)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1987, sexperta, 0, 0, sexpert, sexpert, novag6502_state, init_sexpert, "Novag", "Super Expert (version A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1988, sexpertb, sexperta, 0, sexpert, sexpert, novag6502_state, init_sexpert, "Novag", "Super Expert (version B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1990, sexpertc, sexperta, 0, sexpert, sexpert, novag6502_state, init_sexpert, "Novag", "Super Expert (version C, V3.6)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1990, sexpertc1, sexperta, 0, sexpert, sexpert, novag6502_state, init_sexpert, "Novag", "Super Expert (version C, V1.2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/novag_diablo.cpp b/src/mame/drivers/novag68k.cpp
index 9b9086401f5..358e41755d6 100644
--- a/src/mame/drivers/novag_diablo.cpp
+++ b/src/mame/drivers/novag68k.cpp
@@ -2,15 +2,20 @@
// copyright-holders:hap
// thanks-to:yoyo_chessboard
/******************************************************************************
-*
-* novag_diablo.cpp, subdriver of machine/novagbase.cpp, machine/chessbase.cpp
-TODO:
-- hook up RS232 port (when connected, I'm only getting "New Game")
+ Novag generic 68000 based chess computer driver
-*******************************************************************************
+ NOTE: MAME doesn't include a generalized implementation for boardpieces yet,
+ greatly affecting user playability of emulated electronic board games.
+ As workaround for the chess games, use an external chess GUI on the side,
+ such as Arena(in editmode).
-Novag Diablo 68000 overview:
+ TODO:
+ - RS232 port
+
+******************************************************************************
+
+Diablo 68000:
- M68000 @ 16MHz, IPL1 256Hz, IPL2 from ACIA IRQ(always high)
- 2*8KB RAM TC5565 battery-backed, 2*32KB hashtable RAM TC55257 3*32KB ROM
- HD44780 LCD controller (16x1)
@@ -24,7 +29,6 @@ Scorpio 68000 hardware is very similar, but with chessboard buttons and side led
#include "emu.h"
#include "includes/novagbase.h"
-#include "bus/rs232/rs232.h"
#include "cpu/m68000/m68000.h"
#include "machine/mos6551.h"
#include "machine/nvram.h"
@@ -36,48 +40,44 @@ Scorpio 68000 hardware is very similar, but with chessboard buttons and side led
#include "novag_scorpio68k.lh" // clickable
-namespace {
-
-class diablo_state : public novagbase_state
+class novag68k_state : public novagbase_state
{
public:
- diablo_state(const machine_config &mconfig, device_type type, const char *tag) :
- novagbase_state(mconfig, type, tag),
- m_screen(*this, "screen"),
- m_acia(*this, "acia"),
- m_rs232(*this, "rs232")
+ novag68k_state(const machine_config &mconfig, device_type type, const char *tag)
+ : novagbase_state(mconfig, type, tag)
{ }
- // machine drivers
void diablo68k(machine_config &config);
void scorpio68k(machine_config &config);
private:
- // devices/pointers
- required_device<screen_device> m_screen;
- required_device<mos6551_device> m_acia;
- required_device<rs232_port_device> m_rs232;
-
- // address maps
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(M68K_IRQ_2, ASSERT_LINE); }
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(M68K_IRQ_2, CLEAR_LINE); }
+
+ // Diablo 68000
+ DECLARE_WRITE8_MEMBER(diablo68k_control_w);
+ DECLARE_WRITE8_MEMBER(diablo68k_lcd_data_w);
+ DECLARE_WRITE8_MEMBER(diablo68k_leds_w);
+ DECLARE_READ8_MEMBER(diablo68k_input1_r);
+ DECLARE_READ8_MEMBER(diablo68k_input2_r);
void diablo68k_map(address_map &map);
- void scorpio68k_map(address_map &map);
- // I/O handlers
- DECLARE_WRITE8_MEMBER(control_w);
- DECLARE_WRITE8_MEMBER(lcd_data_w);
- DECLARE_WRITE8_MEMBER(leds_w);
- DECLARE_READ8_MEMBER(input1_r);
- DECLARE_READ8_MEMBER(input2_r);
+ // Scorpio 68000
+ DECLARE_WRITE8_MEMBER(scorpio68k_control_w);
+ void scorpio68k_map(address_map &map);
};
+
+// Devices, I/O
+
/******************************************************************************
- Devices, I/O
+ Diablo 68000
******************************************************************************/
// TTL
-WRITE8_MEMBER(diablo_state::control_w)
+WRITE8_MEMBER(novag68k_state::diablo68k_control_w)
{
// d0: HD44780 E
// d1: HD44780 RS
@@ -88,34 +88,31 @@ WRITE8_MEMBER(diablo_state::control_w)
// d7: enable beeper
m_beeper->set_state(data >> 7 & 1);
- // d2,d3: side leds(scorpio)
- u8 leds2 = ~data >> 2 & 3;
-
// d4-d6: input mux, led select
m_inp_mux = 1 << (data >> 4 & 0x7) & 0xff;
- display_matrix(8+2, 8, m_led_data | leds2 << 8, m_inp_mux);
+ display_matrix(8, 8, m_led_data, m_inp_mux);
m_led_data = 0; // ?
}
-WRITE8_MEMBER(diablo_state::lcd_data_w)
+WRITE8_MEMBER(novag68k_state::diablo68k_lcd_data_w)
{
// d0-d7: HD44780 data
m_lcd_data = data;
}
-WRITE8_MEMBER(diablo_state::leds_w)
+WRITE8_MEMBER(novag68k_state::diablo68k_leds_w)
{
// d0-d7: chessboard leds
m_led_data = data;
}
-READ8_MEMBER(diablo_state::input1_r)
+READ8_MEMBER(novag68k_state::diablo68k_input1_r)
{
// d0-d7: multiplexed inputs (chessboard squares)
return ~read_inputs(8) & 0xff;
}
-READ8_MEMBER(diablo_state::input2_r)
+READ8_MEMBER(novag68k_state::diablo68k_input2_r)
{
// d0-d2: multiplexed inputs (side panel)
// other: ?
@@ -125,27 +122,52 @@ READ8_MEMBER(diablo_state::input2_r)
/******************************************************************************
+ Scorpio 68000
+******************************************************************************/
+
+WRITE8_MEMBER(novag68k_state::scorpio68k_control_w)
+{
+ // d0: HD44780 E
+ // d1: HD44780 RS
+ if (m_lcd_control & ~data & 1)
+ m_lcd->write(m_lcd_control >> 1 & 1, m_lcd_data);
+ m_lcd_control = data & 3;
+
+ // d7: enable beeper
+ m_beeper->set_state(data >> 7 & 1);
+
+ // d4-d6: input mux, led select
+ // d2,d3: led data
+ m_inp_mux = 1 << (data >> 4 & 0x7) & 0xff;
+ display_matrix(2, 8, ~data >> 2 & 3, m_inp_mux);
+}
+
+
+
+/******************************************************************************
Address Maps
******************************************************************************/
-void diablo_state::diablo68k_map(address_map &map)
+// Diablo 68000 / Scorpio 68000
+
+void novag68k_state::diablo68k_map(address_map &map)
{
map(0x000000, 0x00ffff).rom();
map(0x200000, 0x20ffff).rom().region("maincpu", 0x10000);
map(0x280000, 0x28ffff).ram();
map(0x300000, 0x300007).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write)).umask16(0xff00);
map(0x380000, 0x380001).nopr();
- map(0x380000, 0x380000).w(FUNC(diablo_state::leds_w));
- map(0x3a0000, 0x3a0000).w(FUNC(diablo_state::lcd_data_w));
- map(0x3c0000, 0x3c0000).rw(FUNC(diablo_state::input2_r), FUNC(diablo_state::control_w));
- map(0x3e0000, 0x3e0000).r(FUNC(diablo_state::input1_r));
+ map(0x380000, 0x380000).w(FUNC(novag68k_state::diablo68k_leds_w));
+ map(0x3a0000, 0x3a0000).w(FUNC(novag68k_state::diablo68k_lcd_data_w));
+ map(0x3c0000, 0x3c0000).rw(FUNC(novag68k_state::diablo68k_input2_r), FUNC(novag68k_state::diablo68k_control_w));
+ map(0x3e0000, 0x3e0000).r(FUNC(novag68k_state::diablo68k_input1_r));
map(0xff8000, 0xffbfff).ram().share("nvram");
}
-void diablo_state::scorpio68k_map(address_map &map)
+void novag68k_state::scorpio68k_map(address_map &map)
{
diablo68k_map(map);
- map(0x380000, 0x380000).w(FUNC(diablo_state::control_w));
+ map(0x380000, 0x380000).w(FUNC(novag68k_state::scorpio68k_control_w));
map(0x3c0000, 0x3c0001).nopw();
}
@@ -198,12 +220,12 @@ static INPUT_PORTS_START( diablo68k_sidepanel )
INPUT_PORTS_END
static INPUT_PORTS_START( diablo68k )
- PORT_INCLUDE( generic_cb_magnets )
+ PORT_INCLUDE( novag_cb_magnets )
PORT_INCLUDE( diablo68k_sidepanel )
INPUT_PORTS_END
static INPUT_PORTS_START( scorpio68k )
- PORT_INCLUDE( generic_cb_buttons )
+ PORT_INCLUDE( novag_cb_buttons )
PORT_INCLUDE( diablo68k_sidepanel )
INPUT_PORTS_END
@@ -213,54 +235,52 @@ INPUT_PORTS_END
Machine Drivers
******************************************************************************/
-void diablo_state::diablo68k(machine_config &config)
-{
- /* basic machine hardware */
- M68000(config, m_maincpu, 16_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &diablo_state::diablo68k_map);
+MACHINE_CONFIG_START(novag68k_state::diablo68k)
- const attotime irq_period = attotime::from_hz(32.768_kHz_XTAL/128); // 256Hz
- TIMER(config, m_irq_on).configure_periodic(FUNC(diablo_state::irq_on<M68K_IRQ_2>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_nsec(1100)); // active for 1.1us
- TIMER(config, "irq_off").configure_periodic(FUNC(diablo_state::irq_off<M68K_IRQ_2>), irq_period);
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(diablo68k_map)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", novag68k_state, irq_on, attotime::from_hz(32.768_kHz_XTAL/128)) // 256Hz
+ MCFG_TIMER_START_DELAY(attotime::from_hz(32.768_kHz_XTAL/128) - attotime::from_nsec(1100)) // active for 1.1us
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", novag68k_state, irq_off, attotime::from_hz(32.768_kHz_XTAL/128))
- MOS6551(config, m_acia).set_xtal(1.8432_MHz_XTAL);
- RS232_PORT(config, m_rs232, default_rs232_devices, nullptr);
+ mos6551_device &acia(MOS6551(config, "acia", 0));
+ acia.set_xtal(1.8432_MHz_XTAL);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_LCD);
- m_screen->set_refresh_hz(60); // arbitrary
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- m_screen->set_size(6*16+1, 10);
- m_screen->set_visarea_full();
- m_screen->set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
- m_screen->set_palette("palette");
-
- PALETTE(config, "palette", FUNC(diablo_state::novag_lcd_palette), 3);
-
- HD44780(config, m_lcd, 0);
- m_lcd->set_lcd_size(2, 8);
- m_lcd->set_pixel_update_cb(FUNC(diablo_state::novag_lcd_pixel_update), this);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(diablo_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60) // arbitrary
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(6*16+1, 10)
+ MCFG_SCREEN_VISIBLE_AREA(0, 6*16, 0, 10-1)
+ MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+ PALETTE(config, "palette", FUNC(novag68k_state::novag_lcd_palette), 3);
+
+ MCFG_HD44780_ADD("hd44780")
+ MCFG_HD44780_LCD_SIZE(2, 8)
+ MCFG_HD44780_PIXEL_UPDATE_CB(novag68k_state, novag_lcd_pixel_update)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", novag68k_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_novag_diablo68k);
/* sound hardware */
SPEAKER(config, "mono").front_center();
BEEP(config, m_beeper, 32.768_kHz_XTAL/32); // 1024Hz
m_beeper->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
-void diablo_state::scorpio68k(machine_config &config)
-{
+MACHINE_CONFIG_START(novag68k_state::scorpio68k)
diablo68k(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &diablo_state::scorpio68k_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scorpio68k_map)
+
config.set_default_layout(layout_novag_scorpio68k);
-}
+MACHINE_CONFIG_END
@@ -283,15 +303,12 @@ ROM_START( scorpio68 )
ROM_LOAD16_BYTE("502.u4", 0x10000, 0x8000, CRC(553a5c8c) SHA1(ccb5460ff10766a5ca8008ae2cffcff794318108) ) // no odd rom
ROM_END
-} // anonymous namespace
-
/******************************************************************************
Drivers
******************************************************************************/
-// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
-CONS( 1991, diablo68, 0, 0, diablo68k, diablo68k, diablo_state, empty_init, "Novag", "Diablo 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-
-CONS( 1991, scorpio68, 0, 0, scorpio68k, scorpio68k, diablo_state, empty_init, "Novag", "Scorpio 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
+CONS( 1991, diablo68, 0, 0, diablo68k, diablo68k, novag68k_state, empty_init, "Novag", "Diablo 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1991, scorpio68, 0, 0, scorpio68k, scorpio68k, novag68k_state, empty_init, "Novag", "Scorpio 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/novag_cforte.cpp b/src/mame/drivers/novag_cforte.cpp
deleted file mode 100644
index 64c0564f214..00000000000
--- a/src/mame/drivers/novag_cforte.cpp
+++ /dev/null
@@ -1,259 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:Berger
-/******************************************************************************
-*
-* novag_cforte.cpp, subdriver of machine/novagbase.cpp, machine/chessbase.cpp
-
-TODO:
-- RS232 port?
-
-*******************************************************************************
-
-Novag Constellation Forte overview:
-- R65C02P4 @ 5MHz (10MHz XTAL)
-- 2*2KB RAM(NEC D449C-3), 2*32KB ROM(27C256)
-- HLCD0538P, 10-digit 7seg LCD display
-- TTL, 18 LEDs, 8*8 chessboard buttons
-
-I/O is similar to supercon
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/novagbase.h"
-
-#include "cpu/m6502/r65c02.h"
-#include "machine/nvram.h"
-#include "video/hlcd0538.h"
-#include "speaker.h"
-
-// internal artwork
-#include "novag_cforte.lh" // clickable
-
-
-namespace {
-
-class cforte_state : public novagbase_state
-{
-public:
- cforte_state(const machine_config &mconfig, device_type type, const char *tag) :
- novagbase_state(mconfig, type, tag),
- m_hlcd0538(*this, "hlcd0538")
- { }
-
- // machine drivers
- void cforte(machine_config &config);
-
-private:
- // devices/pointers
- optional_device<hlcd0538_device> m_hlcd0538;
-
- // address maps
- void main_map(address_map &map);
-
- // I/O handlers
- void prepare_display();
- DECLARE_WRITE64_MEMBER(lcd_output_w);
- DECLARE_WRITE8_MEMBER(mux_w);
- DECLARE_WRITE8_MEMBER(control_w);
- DECLARE_READ8_MEMBER(input1_r);
- DECLARE_READ8_MEMBER(input2_r);
-};
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// TTL/generic
-
-void cforte_state::prepare_display()
-{
- // 3 led rows
- display_matrix(8, 3, m_led_data, m_led_select, false);
-
- // lcd panel (mostly handled in lcd_output_w)
- set_display_segmask(0x3ff0, 0xff);
- set_display_size(8, 3+13);
- display_update();
-}
-
-WRITE64_MEMBER(cforte_state::lcd_output_w)
-{
- // 4 rows used
- u32 rowdata[4];
- for (int i = 0; i < 4; i++)
- rowdata[i] = (data >> i & 1) ? u32(data >> 8) : 0;
-
- // 2 segments per row
- for (int dig = 0; dig < 13; dig++)
- {
- m_display_state[dig+3] = 0;
- for (int i = 0; i < 4; i++)
- m_display_state[dig+3] |= ((rowdata[i] >> (2*dig) & 3) << (2*i));
-
- m_display_state[dig+3] = bitswap<8>(m_display_state[dig+3],7,2,0,4,6,5,3,1);
- }
-
- prepare_display();
-}
-
-WRITE8_MEMBER(cforte_state::mux_w)
-{
- // d0-d7: input mux, led data
- m_inp_mux = m_led_data = data;
- prepare_display();
-}
-
-WRITE8_MEMBER(cforte_state::control_w)
-{
- // d0: HLCD0538 data in
- // d1: HLCD0538 clk
- // d2: HLCD0538 lcd
- m_hlcd0538->data_w(data & 1);
- m_hlcd0538->clk_w(data >> 1 & 1);
- m_hlcd0538->lcd_w(data >> 2 & 1);
-
- // d3: unused?
-
- // d4-d6: select led row
- m_led_select = data >> 4 & 7;
- prepare_display();
-
- // d7: enable beeper
- m_beeper->set_state(data >> 7 & 1);
-}
-
-READ8_MEMBER(cforte_state::input1_r)
-{
- // d0-d7: multiplexed inputs (chessboard squares)
- return ~read_inputs(8) & 0xff;
-}
-
-READ8_MEMBER(cforte_state::input2_r)
-{
- // d0-d5: ?
- // d6,d7: multiplexed inputs (side panel)
- return (read_inputs(8) >> 2 & 0xc0) ^ 0xff;
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void cforte_state::main_map(address_map &map)
-{
- map(0x0000, 0x0fff).ram().share("nvram");
- map(0x1c00, 0x1c00).nopw(); // printer?
- map(0x1d00, 0x1d00).nopw(); // printer?
- map(0x1e00, 0x1e00).rw(FUNC(cforte_state::input2_r), FUNC(cforte_state::mux_w));
- map(0x1f00, 0x1f00).rw(FUNC(cforte_state::input1_r), FUNC(cforte_state::control_w));
- map(0x2000, 0xffff).rom();
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( cforte )
- PORT_INCLUDE( generic_cb_buttons )
-
- PORT_MODIFY("IN.0")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("New Game")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("Player/Player / Gambit/Large / King")
-
- PORT_MODIFY("IN.1")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) PORT_NAME("Verify/Set Up / Pro-Op")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_NAME("Random/Tour/Normal / Training Level / Queen")
-
- PORT_MODIFY("IN.2")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Change Color / Time Control / Priority")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_NAME("Sound / Depth Search / Bishop")
-
- PORT_MODIFY("IN.3")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Flip Display / Clear Board / Clear Book")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("Solve Mate / Infinite / Knight")
-
- PORT_MODIFY("IN.4")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Print Moves / Print Evaluations / Print Book")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("Print Board / Interface / Rook")
-
- PORT_MODIFY("IN.5")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Trace Forward / Auto Play / No/End")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("Print List / Acc. Time / Pawn")
-
- PORT_MODIFY("IN.6")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Hint / Next Best / Yes/Start")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("Set Level")
-
- PORT_MODIFY("IN.7")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Go / ->")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Take Back / Restore / <-")
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void cforte_state::cforte(machine_config &config)
-{
- /* basic machine hardware */
- R65C02(config, m_maincpu, 10_MHz_XTAL/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &cforte_state::main_map);
-
- const attotime irq_period = attotime::from_hz(32.768_kHz_XTAL/128); // 256Hz
- TIMER(config, m_irq_on).configure_periodic(FUNC(cforte_state::irq_on<M6502_IRQ_LINE>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_usec(11)); // active for 11us
- TIMER(config, "irq_off").configure_periodic(FUNC(cforte_state::irq_off<M6502_IRQ_LINE>), irq_period);
-
- NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
-
- /* video hardware */
- HLCD0538(config, m_hlcd0538);
- m_hlcd0538->write_cols().set(FUNC(cforte_state::lcd_output_w));
-
- TIMER(config, "display_decay").configure_periodic(FUNC(cforte_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_novag_cforte);
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- BEEP(config, m_beeper, 32.768_kHz_XTAL/32); // 1024Hz
- m_beeper->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( cfortea )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("a_903_l", 0x0000, 0x8000, CRC(01e7e306) SHA1(6a2b982bb0f412a63f5d3603958dd863e38669d9) ) // NEC D27C256AD-12
- ROM_LOAD("a_903_h", 0x8000, 0x8000, CRC(c5a5573f) SHA1(7e11eb2f3d96bc41386a14a19635427a386ec1ec) ) // "
-ROM_END
-
-ROM_START( cforteb )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("forte_b_l.bin", 0x0000, 0x8000, CRC(e3d194a1) SHA1(80457580d7c57e07895fd14bfdaf14b30952afca) )
- ROM_LOAD("forte_b_h.bin", 0x8000, 0x8000, CRC(dd824be8) SHA1(cd8666b6b525887f9fc48a730b71ceabcf07f3b9) )
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1986, cfortea, 0, 0, cforte, cforte, cforte_state, empty_init, "Novag", "Constellation Forte (version A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1986, cforteb, cfortea, 0, cforte, cforte, cforte_state, empty_init, "Novag", "Constellation Forte (version B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/novag_scon.cpp b/src/mame/drivers/novag_scon.cpp
deleted file mode 100644
index b4b3ee4772f..00000000000
--- a/src/mame/drivers/novag_scon.cpp
+++ /dev/null
@@ -1,195 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-/******************************************************************************
-*
-* novag_scon.cpp, subdriver of machine/novagbase.cpp, machine/chessbase.cpp
-
-TODO:
-- verify IRQ and beeper frequency
-
-*******************************************************************************
-
-Novag Super Constellation Chess Computer (model 844) overview:
-- UMC UM6502C @ 4 MHz (8MHz XTAL), 600Hz? IRQ(source unknown?)
-- 2*2KB RAM TC5516APL-2 battery-backed, 2*32KB ROM custom label
-- TTL, buzzer, 24 LEDs, 8*8 chessboard buttons
-- external ports for clock and printer, not emulated here
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/novagbase.h"
-
-#include "cpu/m6502/m6502.h"
-#include "machine/nvram.h"
-#include "speaker.h"
-
-// internal artwork
-#include "novag_supercon.lh" // clickable
-
-
-namespace {
-
-class scon_state : public novagbase_state
-{
-public:
- scon_state(const machine_config &mconfig, device_type type, const char *tag) :
- novagbase_state(mconfig, type, tag)
- { }
-
- // machine drivers
- void scon(machine_config &config);
-
-private:
- // address maps
- void main_map(address_map &map);
-
- // I/O handlers
- DECLARE_WRITE8_MEMBER(mux_w);
- DECLARE_WRITE8_MEMBER(control_w);
- DECLARE_READ8_MEMBER(input1_r);
- DECLARE_READ8_MEMBER(input2_r);
-};
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// TTL
-
-WRITE8_MEMBER(scon_state::mux_w)
-{
- // d0-d7: input mux, led data
- m_inp_mux = m_led_data = data;
- display_matrix(8, 3, m_led_data, m_led_select);
-}
-
-WRITE8_MEMBER(scon_state::control_w)
-{
- // d0-d3: ?
- // d4-d6: select led row
- m_led_select = data >> 4 & 7;
- display_matrix(8, 3, m_led_data, m_led_select);
-
- // d7: enable beeper
- m_beeper->set_state(data >> 7 & 1);
-}
-
-READ8_MEMBER(scon_state::input1_r)
-{
- // d0-d7: multiplexed inputs (chessboard squares)
- return ~read_inputs(8) & 0xff;
-}
-
-READ8_MEMBER(scon_state::input2_r)
-{
- // d0-d5: ?
- // d6,d7: multiplexed inputs (side panel)
- return (read_inputs(8) >> 2 & 0xc0) ^ 0xff;
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void scon_state::main_map(address_map &map)
-{
- map(0x0000, 0x0fff).ram().share("nvram");
- map(0x1c00, 0x1c00).nopw(); // printer/clock?
- map(0x1d00, 0x1d00).nopw(); // printer/clock?
- map(0x1e00, 0x1e00).rw(FUNC(scon_state::input2_r), FUNC(scon_state::mux_w));
- map(0x1f00, 0x1f00).rw(FUNC(scon_state::input1_r), FUNC(scon_state::control_w));
- map(0x2000, 0xffff).rom();
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( scon )
- PORT_INCLUDE( generic_cb_buttons )
-
- PORT_MODIFY("IN.0")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("New Game")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("Multi Move / Player/Player / King")
-
- PORT_MODIFY("IN.1")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) PORT_NAME("Verify / Set Up")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_NAME("Best Move/Random / Training Level / Queen")
-
- PORT_MODIFY("IN.2")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Change Color")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_NAME("Sound / Depth Search / Bishop")
-
- PORT_MODIFY("IN.3")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Clear Board")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("Solve Mate / Knight")
-
- PORT_MODIFY("IN.4")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Print Moves")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("Print Board / Rook")
-
- PORT_MODIFY("IN.5")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Form Size")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("Print List / Acc. Time / Pawn")
-
- PORT_MODIFY("IN.6")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Hint")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("Set Level")
-
- PORT_MODIFY("IN.7")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Go")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Take Back")
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void scon_state::scon(machine_config &config)
-{
- /* basic machine hardware */
- M6502(config, m_maincpu, 8_MHz_XTAL/2); // UM6502C
- m_maincpu->set_addrmap(AS_PROGRAM, &scon_state::main_map);
- m_maincpu->set_periodic_int(FUNC(scon_state::irq0_line_hold), attotime::from_hz(600)); // guessed
-
- NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(scon_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_novag_supercon);
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- BEEP(config, m_beeper, 1024); // guessed
- m_beeper->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( supercon )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("novag_8441", 0x0000, 0x8000, CRC(b853cf6e) SHA1(1a759072a5023b92c07f1fac01b7a21f7b5b45d0) ) // label obscured by Q.C. sticker
- ROM_LOAD("novag_8442", 0x8000, 0x8000, CRC(c8f82331) SHA1(f7fd039f9a3344db9749931490ded9e9e309cfbe) )
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1984, supercon, 0, 0, scon, scon, scon_state, empty_init, "Novag", "Super Constellation", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/novag_sexpert.cpp b/src/mame/drivers/novag_sexpert.cpp
deleted file mode 100644
index 7980386c952..00000000000
--- a/src/mame/drivers/novag_sexpert.cpp
+++ /dev/null
@@ -1,450 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap
-// thanks-to:Berger
-/******************************************************************************
-*
-* novag_sexpert.cpp, subdriver of machine/novagbase.cpp, machine/chessbase.cpp
-
-TODO:
-- sforte irq active time (21.5us is too long)
-- led handling is correct?
-
-*******************************************************************************
-
-Novag Super Expert (model 878/887/902) overview:
-- 65C02 @ 5MHz or 6MHz (10MHz or 12MHz XTAL)
-- 8KB RAM battery-backed, 3*32KB ROM
-- HD44780 LCD controller (16x1)
-- beeper(32KHz/32), IRQ(32KHz/128) via MC14060
-- optional R65C51P2 ACIA @ 1.8432MHz, for IBM PC interface (only works in version C?)
-- printer port, magnetic sensors, 8*8 chessboard leds
-
-I/O via TTL, hardware design was very awkward.
-
-Super Forte is very similar, just a cheaper plastic case and chessboard buttons
-instead of magnet sensors.
-
-******************************************************************************/
-
-#include "emu.h"
-#include "includes/novagbase.h"
-
-#include "bus/rs232/rs232.h"
-#include "cpu/m6502/m65c02.h"
-#include "machine/mos6551.h"
-#include "machine/nvram.h"
-#include "screen.h"
-#include "speaker.h"
-
-// internal artwork
-#include "novag_sexpert.lh" // clickable
-#include "novag_sforte.lh" // clickable
-
-
-namespace {
-
-class sexpert_state : public novagbase_state
-{
-public:
- sexpert_state(const machine_config &mconfig, device_type type, const char *tag) :
- novagbase_state(mconfig, type, tag),
- m_screen(*this, "screen"),
- m_acia(*this, "acia"),
- m_rs232(*this, "rs232")
- { }
-
- // machine drivers
- void sexpert(machine_config &config);
-
- void init_sexpert();
-
- DECLARE_INPUT_CHANGED_MEMBER(sexpert_cpu_freq) { sexpert_set_cpu_freq(); }
-
-protected:
- // devices/pointers
- required_device<screen_device> m_screen;
- required_device<mos6551_device> m_acia;
- required_device<rs232_port_device> m_rs232;
-
- virtual void machine_reset() override;
-
- void sexpert_set_cpu_freq();
-
- // address maps
- void sexpert_map(address_map &map);
-
- // I/O handlers
- virtual DECLARE_WRITE8_MEMBER(lcd_control_w);
- virtual DECLARE_WRITE8_MEMBER(lcd_data_w);
- DECLARE_WRITE8_MEMBER(leds_w);
- DECLARE_WRITE8_MEMBER(mux_w);
- DECLARE_READ8_MEMBER(input1_r);
- DECLARE_READ8_MEMBER(input2_r);
-};
-
-class sforte_state : public sexpert_state
-{
-public:
- sforte_state(const machine_config &mconfig, device_type type, const char *tag) :
- sexpert_state(mconfig, type, tag)
- { }
-
- // machine drivers
- void sforte(machine_config &config);
-
-private:
- // address maps
- void sforte_map(address_map &map);
-
- // I/O handlers
- virtual DECLARE_WRITE8_MEMBER(lcd_control_w) override;
- virtual DECLARE_WRITE8_MEMBER(lcd_data_w) override;
-};
-
-void sexpert_state::sexpert_set_cpu_freq()
-{
- // machines were released with either 5MHz or 6MHz CPU
- m_maincpu->set_unscaled_clock((ioport("FAKE")->read() & 1) ? (12_MHz_XTAL/2) : (10_MHz_XTAL/2));
-}
-
-void sexpert_state::machine_reset()
-{
- novagbase_state::machine_reset();
-
- sexpert_set_cpu_freq();
- m_rombank->set_entry(0);
-}
-
-void sexpert_state::init_sexpert()
-{
- m_rombank->configure_entries(0, 2, memregion("maincpu")->base() + 0x8000, 0x8000);
-}
-
-
-/******************************************************************************
- Devices, I/O
-******************************************************************************/
-
-// TTL/generic
-
-WRITE8_MEMBER(sexpert_state::lcd_control_w)
-{
- // d0: HD44780 RS
- // d1: HD44780 R/W
- // d2: HD44780 E
- if (m_lcd_control & ~data & 4 && ~data & 2)
- m_lcd->write(m_lcd_control & 1, m_lcd_data);
- m_lcd_control = data & 7;
-}
-
-WRITE8_MEMBER(sexpert_state::lcd_data_w)
-{
- // d0-d7: HD44780 data
- m_lcd_data = data;
-}
-
-WRITE8_MEMBER(sexpert_state::leds_w)
-{
- // d0-d7: chessboard leds
- m_led_data = data;
-}
-
-WRITE8_MEMBER(sexpert_state::mux_w)
-{
- // d0: rom bankswitch
- m_rombank->set_entry(data & 1);
-
- // d3: enable beeper
- m_beeper->set_state(data >> 3 & 1);
-
- // d4-d7: 74145 to input mux/led select
- m_inp_mux = 1 << (data >> 4 & 0xf) & 0xff;
- display_matrix(8, 8, m_led_data, m_inp_mux);
- m_led_data = 0; // ?
-}
-
-READ8_MEMBER(sexpert_state::input1_r)
-{
- // d0-d7: multiplexed inputs (chessboard squares)
- return ~read_inputs(8) & 0xff;
-}
-
-READ8_MEMBER(sexpert_state::input2_r)
-{
- // d0-d2: printer port
- // d5-d7: multiplexed inputs (side panel)
- return ~read_inputs(8) >> 3 & 0xe0;
-}
-
-
-// sforte-specific
-
-WRITE8_MEMBER(sforte_state::lcd_control_w)
-{
- // d3: rom bankswitch
- m_rombank->set_entry(data >> 3 & 1);
-
- // assume same as sexpert
- sexpert_state::lcd_control_w(space, offset, data);
-}
-
-WRITE8_MEMBER(sforte_state::lcd_data_w)
-{
- // d0-d2: input mux/led select
- m_inp_mux = 1 << (data & 7);
-
- // if lcd is disabled, misc control
- if (~m_lcd_control & 4)
- {
- // d5,d6: led data, but not both at same time?
- if ((data & 0x60) != 0x60)
- display_matrix(2, 8, data >> 5 & 3, m_inp_mux);
-
- // d7: enable beeper
- m_beeper->set_state(data >> 7 & 1);
- }
-
- // assume same as sexpert
- sexpert_state::lcd_data_w(space, offset, data);
-}
-
-
-
-/******************************************************************************
- Address Maps
-******************************************************************************/
-
-void sexpert_state::sexpert_map(address_map &map)
-{
- map(0x0000, 0x1fef).ram().share("nvram"); // 8KB RAM, but RAM CE pin is deactivated on $1ff0-$1fff
- map(0x1ff0, 0x1ff0).r(FUNC(sexpert_state::input1_r));
- map(0x1ff1, 0x1ff1).r(FUNC(sexpert_state::input2_r));
- map(0x1ff2, 0x1ff2).nopw(); // printer
- map(0x1ff3, 0x1ff3).nopw(); // printer
- map(0x1ff4, 0x1ff4).w(FUNC(sexpert_state::leds_w));
- map(0x1ff5, 0x1ff5).w(FUNC(sexpert_state::mux_w));
- map(0x1ff6, 0x1ff6).w(FUNC(sexpert_state::lcd_control_w));
- map(0x1ff7, 0x1ff7).w(FUNC(sexpert_state::lcd_data_w));
- map(0x1ffc, 0x1fff).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
- map(0x2000, 0x7fff).rom();
- map(0x8000, 0xffff).bankr("rombank");
-}
-
-void sforte_state::sforte_map(address_map &map)
-{
- sexpert_map(map);
- map(0x1ff4, 0x1ff4).nopw();
- map(0x1ff5, 0x1ff5).nopw();
- map(0x1ff6, 0x1ff6).w(FUNC(sforte_state::lcd_control_w));
- map(0x1ff7, 0x1ff7).w(FUNC(sforte_state::lcd_data_w));
-}
-
-
-
-/******************************************************************************
- Input Ports
-******************************************************************************/
-
-static INPUT_PORTS_START( sexy_shared )
- PORT_MODIFY("IN.0")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Go")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Take Back / Analyze Games")
- PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("->")
-
- PORT_MODIFY("IN.1")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Set Level")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Flip Display / Time Control")
- PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("<-")
-
- PORT_MODIFY("IN.2")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_NAME("Hint / Next Best")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Priority / Tournament Book / Pawn")
- PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("Yes/Start / Start of Game")
-
- PORT_MODIFY("IN.3")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("Trace Forward / AutoPlay")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Pro-Op / Restore Game / Rook")
- PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("No/End / End of Game")
-
- PORT_MODIFY("IN.4")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Clear Board / Delete Pro-Op")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Best Move/Random / Review / Knight")
- PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("Print Book / Store Game")
-
- PORT_MODIFY("IN.5")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("Change Color")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Sound / Info / Bishop")
- PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_NAME("Print Moves / Print Evaluations")
-
- PORT_MODIFY("IN.6")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_J) PORT_NAME("Verify/Set Up / Pro-Op Book/Both Books")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) PORT_NAME("Solve Mate / Infinite / Queen")
- PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_NAME("Print List / Acc. Time")
-
- PORT_MODIFY("IN.7")
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_K) PORT_NAME("New Game")
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("Player/Player / Gambit Book / King")
- PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("Print Board / Interface")
-
- PORT_START("FAKE")
- PORT_CONFNAME( 0x01, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, sexpert_state, sexpert_cpu_freq, nullptr) // factory set
- PORT_CONFSETTING( 0x00, "5MHz" )
- PORT_CONFSETTING( 0x01, "6MHz" )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( sexpert )
- PORT_INCLUDE( generic_cb_magnets )
- PORT_INCLUDE( sexy_shared )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( sforte )
- PORT_INCLUDE( generic_cb_buttons )
- PORT_INCLUDE( sexy_shared )
-INPUT_PORTS_END
-
-
-
-/******************************************************************************
- Machine Drivers
-******************************************************************************/
-
-void sexpert_state::sexpert(machine_config &config)
-{
- /* basic machine hardware */
- M65C02(config, m_maincpu, 10_MHz_XTAL/2); // or 12_MHz_XTAL/2
- m_maincpu->set_addrmap(AS_PROGRAM, &sexpert_state::sexpert_map);
-
- const attotime irq_period = attotime::from_hz(32.768_kHz_XTAL/128); // 256Hz
- TIMER(config, m_irq_on).configure_periodic(FUNC(sexpert_state::irq_on<M6502_IRQ_LINE>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_nsec(21500)); // active for 21.5us
- TIMER(config, "irq_off").configure_periodic(FUNC(sexpert_state::irq_off<M6502_IRQ_LINE>), irq_period);
-
- MOS6551(config, m_acia).set_xtal(1.8432_MHz_XTAL); // R65C51P2 - RTS to CTS, DCD to GND
- m_acia->irq_handler().set_inputline("maincpu", m65c02_device::NMI_LINE);
- m_acia->rts_handler().set("acia", FUNC(mos6551_device::write_cts));
- m_acia->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
- m_acia->dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr));
-
- RS232_PORT(config, m_rs232, default_rs232_devices, nullptr);
- m_rs232->rxd_handler().set("acia", FUNC(mos6551_device::write_rxd));
- m_rs232->dsr_handler().set("acia", FUNC(mos6551_device::write_dsr));
-
- NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
-
- /* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_LCD);
- m_screen->set_refresh_hz(60); // arbitrary
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- m_screen->set_size(6*16+1, 10);
- m_screen->set_visarea_full();
- m_screen->set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
- m_screen->set_palette("palette");
-
- PALETTE(config, "palette", FUNC(sexpert_state::novag_lcd_palette), 3);
-
- HD44780(config, m_lcd, 0);
- m_lcd->set_lcd_size(2, 8);
- m_lcd->set_pixel_update_cb(FUNC(sexpert_state::novag_lcd_pixel_update), this);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(sexpert_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_novag_sexpert);
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- BEEP(config, m_beeper, 32.768_kHz_XTAL/32); // 1024Hz
- m_beeper->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-void sforte_state::sforte(machine_config &config)
-{
- sexpert(config);
-
- /* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &sforte_state::sforte_map);
-
- m_irq_on->set_start_delay(m_irq_on->period() - attotime::from_usec(11)); // active for ?us (assume same as cforte)
-
- config.set_default_layout(layout_novag_sforte);
-}
-
-
-
-/******************************************************************************
- ROM Definitions
-******************************************************************************/
-
-ROM_START( sexperta )
- ROM_REGION( 0x18000, "maincpu", 0 )
- ROM_LOAD("se_lo_b15.u3", 0x0000, 0x8000, CRC(6cc9527c) SHA1(29bab809399f2863a88a9c41535ecec0a4fd65ea) )
- ROM_LOAD("se_hi1_b15.u1", 0x8000, 0x8000, CRC(6e57f0c0) SHA1(ea44769a6f54721fd4543366bda932e86e497d43) )
- ROM_LOAD("sef_hi0_a23.u2", 0x10000, 0x8000, CRC(7d4e1528) SHA1(53c7d458a5571afae402f00ae3d0f5066634b068) )
-ROM_END
-
-ROM_START( sexpertb )
- ROM_REGION( 0x18000, "maincpu", 0 )
- ROM_LOAD("se_lo_619.u3", 0x0000, 0x8000, CRC(92002eb6) SHA1(ed8ca16701e00b48fa55c856fa4a8c6613079c02) )
- ROM_LOAD("se_hi1_619.u1", 0x8000, 0x8000, CRC(814b4420) SHA1(c553e6a8c048dcc1cf48d410111a86e06b99d356) )
- ROM_LOAD("sef_hi0_605.u2", 0x10000, 0x8000, CRC(bb07ad52) SHA1(30cf9005021ab2d7b03facdf2d3588bc94dc68a6) )
-ROM_END
-
-ROM_START( sexpertc )
- ROM_REGION( 0x18000, "maincpu", 0 )
- ROM_LOAD("se_lo_v3.6.u3", 0x0000, 0x8000, CRC(5a29105e) SHA1(be37bb29b530dbba847a5e8d27d81b36525e47f7) )
- ROM_LOAD("se_hi1.u1", 0x8000, 0x8000, CRC(0085c2c4) SHA1(d84bf4afb022575db09dd9dc12e9b330acce35fa) )
- ROM_LOAD("se_hi0.u2", 0x10000, 0x8000, CRC(2d085064) SHA1(76162322aa7d23a5c07e8356d0bbbb33816419af) )
-ROM_END
-
-ROM_START( sexpertc1 )
- ROM_REGION( 0x18000, "maincpu", 0 )
- ROM_LOAD("se_lo_v1.2.u3", 0x0000, 0x8000, CRC(43ed7a9e) SHA1(273c485e5be6b107b6c5c448003ba7686d4a6d06) )
- ROM_LOAD("se_hi1.u1", 0x8000, 0x8000, CRC(0085c2c4) SHA1(d84bf4afb022575db09dd9dc12e9b330acce35fa) )
- ROM_LOAD("se_hi0.u2", 0x10000, 0x8000, CRC(2d085064) SHA1(76162322aa7d23a5c07e8356d0bbbb33816419af) )
-ROM_END
-
-
-ROM_START( sfortea )
- ROM_REGION( 0x18000, "maincpu", 0 )
- ROM_LOAD("sfalo.u3", 0x0000, 0x8000, CRC(86e0230a) SHA1(0d6e18a17e636b8c7292c8f331349d361892d1a8) )
- ROM_LOAD("sfahi.u1", 0x8000, 0x8000, CRC(81c02746) SHA1(0bf68b68ade5a3263bead88da0a8965fc71483c1) )
- ROM_LOAD("sfabook.u2", 0x10000, 0x8000, CRC(3e42cf7c) SHA1(b2faa36a127e08e5755167a25ed4a07f12d62957) )
-ROM_END
-
-ROM_START( sfortea1 )
- ROM_REGION( 0x18000, "maincpu", 0 )
- ROM_LOAD("sfa_lo.u3", 0x0000, 0x8000, CRC(78734bfd) SHA1(b6d8e9efccee6f6d0b0cd257a82162bf8ccec719) )
- ROM_LOAD("sfa_hi_1.u1", 0x8000, 0x8000, CRC(e5e84580) SHA1(bae55c3da7b720bf6ccfb450e383c53cebd5e9ef) )
- ROM_LOAD("sfa_hi_0.u2", 0x10000, 0x8000, CRC(3e42cf7c) SHA1(b2faa36a127e08e5755167a25ed4a07f12d62957) )
-ROM_END
-
-ROM_START( sforteb )
- ROM_REGION( 0x18000, "maincpu", 0 )
- ROM_LOAD("forte_b_lo.u3", 0x0000, 0x8000, CRC(48bfe5d6) SHA1(323642686b6d2fb8db2b7d50c6cd431058078ce1) )
- ROM_LOAD("forte_b_hi1.u1", 0x8000, 0x8000, CRC(9778ca2c) SHA1(d8b88b9768a1a9171c68cbb0892b817d68d78351) )
- ROM_LOAD("forte_b_hi0.u2", 0x10000, 0x8000, CRC(bb07ad52) SHA1(30cf9005021ab2d7b03facdf2d3588bc94dc68a6) )
-ROM_END
-
-ROM_START( sfortec )
- ROM_REGION( 0x18000, "maincpu", 0 )
- ROM_LOAD("sfl_c_111.u3", 0x0000, 0x8000, CRC(f040cf30) SHA1(1fc1220b8ed67cdffa3866d230ce001721cf684f) ) // Toshiba TC57256AD-12
- ROM_LOAD("sfh_c_111.u1", 0x8000, 0x8000, CRC(0f926b32) SHA1(9c7270ecb3f41dd9172a9a7928e6e04e64b2a340) ) // NEC D27C256AD-12
- ROM_LOAD("h0_c_c26.u2", 0x10000, 0x8000, CRC(c6a1419a) SHA1(017a0ffa9aa59438c879624a7ddea2071d1524b8) ) // Toshiba TC57256AD-12
-ROM_END
-
-} // anonymous namespace
-
-
-
-/******************************************************************************
- Drivers
-******************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1987, sexperta, 0, 0, sexpert, sexpert, sexpert_state, init_sexpert, "Novag", "Super Expert (version A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1988, sexpertb, sexperta, 0, sexpert, sexpert, sexpert_state, init_sexpert, "Novag", "Super Expert (version B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1990, sexpertc, sexperta, 0, sexpert, sexpert, sexpert_state, init_sexpert, "Novag", "Super Expert (version C, V3.6)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1990, sexpertc1, sexperta, 0, sexpert, sexpert, sexpert_state, init_sexpert, "Novag", "Super Expert (version C, V1.2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-
-CONS( 1987, sfortea, 0, 0, sforte, sforte, sforte_state, init_sexpert, "Novag", "Super Forte (version A, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1987, sfortea1, sfortea, 0, sforte, sforte, sforte_state, init_sexpert, "Novag", "Super Forte (version A, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1988, sforteb, sfortea, 0, sforte, sforte, sforte_state, init_sexpert, "Novag", "Super Forte (version B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1990, sfortec, sfortea, 0, sforte, sforte, sforte_state, init_sexpert, "Novag", "Super Forte (version C)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/novag_delta1.cpp b/src/mame/drivers/novagf8.cpp
index e8882ce902b..37f5553ec80 100644
--- a/src/mame/drivers/novag_delta1.cpp
+++ b/src/mame/drivers/novagf8.cpp
@@ -2,11 +2,17 @@
// copyright-holders:hap
// thanks-to:Berger
/******************************************************************************
-*
-* novag_delta1.cpp, subdriver of machine/novagbase.cpp, machine/chessbase.cpp
-Novag Delta-1, the chess engine seems similar to Boris (see aci_boris.cpp)
+ Novag generic F8 based chess computer driver
+ TODO:
+ - ccdelta1 doesn't work, goes bonkers when you press Enter. CPU core bug?
+ - hardware is similar to MK I, the drivers can be merged in theory.
+ But I prefer my source code to be licensed BSD3, mk1.cpp is GPL2.
+
+******************************************************************************
+
+Delta-1:
- 3850PK CPU at ~2MHz, 3853PK memory interface
- 4KB ROM(2332A), 256 bytes RAM(2*2111A-4)
- 4-digit 7seg panel, no sound, no chessboard
@@ -20,60 +26,59 @@ Novag Delta-1, the chess engine seems similar to Boris (see aci_boris.cpp)
#include "machine/f3853.h"
// internal artwork
-#include "novag_delta1.lh" // clickable
-
+#include "novag_delta1.lh"
-namespace {
-class delta1_state : public novagbase_state
+class novagf8_state : public novagbase_state
{
public:
- delta1_state(const machine_config &mconfig, device_type type, const char *tag) :
- novagbase_state(mconfig, type, tag)
+ novagf8_state(const machine_config &mconfig, device_type type, const char *tag)
+ : novagbase_state(mconfig, type, tag)
{ }
- // machine drivers
void delta1(machine_config &config);
-protected:
- virtual void machine_start() override;
+ DECLARE_INPUT_CHANGED_MEMBER(reset_button);
private:
- // address maps
- void main_map(address_map &map);
- void main_io(address_map &map);
+ u8 m_io[2]; // F8 CPU I/O ports
- // I/O handlers
- DECLARE_WRITE8_MEMBER(mux_w);
- DECLARE_WRITE8_MEMBER(digit_w);
- DECLARE_READ8_MEMBER(input_r);
+ // Delta-1
+ DECLARE_WRITE8_MEMBER(delta1_io0_w);
+ DECLARE_WRITE8_MEMBER(delta1_io1_w);
+ DECLARE_READ8_MEMBER(delta1_io0_r);
+ DECLARE_READ8_MEMBER(delta1_io1_r);
+ void delta1_io(address_map &map);
+ void delta1_map(address_map &map);
- TIMER_DEVICE_CALLBACK_MEMBER(blink) { m_blink = !m_blink; }
- bool m_blink;
+ virtual void machine_start() override;
};
-void delta1_state::machine_start()
+void novagf8_state::machine_start()
{
novagbase_state::machine_start();
- // zerofill/register for savestates
- m_blink = false;
- save_item(NAME(m_blink));
+ // zerofill
+ memset(m_io, 0, sizeof(m_io));
- // game reads from uninitialized RAM while it's thinking
- for (int i = 0; i < 0x100; i++)
- m_maincpu->space(AS_PROGRAM).write_byte(i + 0x2000, machine().rand());
+ // register for savestates
+ save_item(NAME(m_io));
}
+
+// Devices, I/O
+
/******************************************************************************
- Devices, I/O
+ Delta-1
******************************************************************************/
// CPU I/O ports
-WRITE8_MEMBER(delta1_state::mux_w)
+WRITE8_MEMBER(novagf8_state::delta1_io0_w)
{
+ m_io[0] = data;
+
// IO00-02: MC14028B A-C (IO03: GND)
// MC14028B Q3-Q7: input mux
// MC14028B Q4-Q7: digit select through 75492
@@ -82,23 +87,29 @@ WRITE8_MEMBER(delta1_state::mux_w)
// update display here
set_display_segmask(0xf, 0x7f);
- display_matrix(7, 4, m_7seg_data, sel >> 4);
-
- m_led_select = data;
+ display_matrix(7, 4, m_led_data, sel >> 4);
}
-READ8_MEMBER(delta1_state::input_r)
+READ8_MEMBER(novagf8_state::delta1_io0_r)
{
// IO04-07: multiplexed inputs
- return read_inputs(5) << 4 | m_led_select;
+ return read_inputs(5) << 4 | m_io[0];
}
-WRITE8_MEMBER(delta1_state::digit_w)
+WRITE8_MEMBER(novagf8_state::delta1_io1_w)
{
- // IO17: R/C circuit to segment commons (for automated blinking)
+ m_io[1] = data;
+
+ // IO17: segment commons, active low (always 0?)
// IO10-16: digit segments A-G
- data = (data & 0x80 && m_blink) ? 0 : (data & 0x7f);
- m_7seg_data = bitswap<7>(data, 0,1,2,3,4,5,6);
+ data = (data & 0x80) ? 0 : (data & 0x7f);
+ m_led_data = bitswap<7>(data, 0,1,2,3,4,5,6);
+}
+
+READ8_MEMBER(novagf8_state::delta1_io1_r)
+{
+ // unused?
+ return m_io[1];
}
@@ -107,18 +118,20 @@ WRITE8_MEMBER(delta1_state::digit_w)
Address Maps
******************************************************************************/
-void delta1_state::main_map(address_map &map)
+// Delta-1
+
+void novagf8_state::delta1_map(address_map &map)
{
map.global_mask(0x3fff);
map(0x0000, 0x0fff).mirror(0x1000).rom(); // _A13
map(0x2000, 0x20ff).mirror(0x1f00).ram(); // A13
}
-void delta1_state::main_io(address_map &map)
+void novagf8_state::delta1_io(address_map &map)
{
- map(0x00, 0x00).rw(FUNC(delta1_state::input_r), FUNC(delta1_state::mux_w));
- map(0x01, 0x01).w(FUNC(delta1_state::digit_w));
- map(0x0c, 0x0f).rw("f3853", FUNC(f3853_device::read), FUNC(f3853_device::write));
+ map(0x0, 0x0).rw(FUNC(novagf8_state::delta1_io0_r), FUNC(novagf8_state::delta1_io0_w));
+ map(0x1, 0x1).rw(FUNC(novagf8_state::delta1_io1_r), FUNC(novagf8_state::delta1_io1_w));
+ map(0xc, 0xf).rw("f3853", FUNC(f3853_device::read), FUNC(f3853_device::write));
}
@@ -127,9 +140,15 @@ void delta1_state::main_io(address_map &map)
Input Ports
******************************************************************************/
+INPUT_CHANGED_MEMBER(novagf8_state::reset_button)
+{
+ // wired directly to CPU reset pin
+ m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
+}
+
static INPUT_PORTS_START( delta1 )
PORT_START("IN.0")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Time Set")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Time Set")
PORT_BIT(0x0d, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("IN.1")
@@ -153,11 +172,11 @@ static INPUT_PORTS_START( delta1 )
PORT_START("IN.4")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) PORT_NAME("FP / Black Bishop") // find position
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("EP / Black Knight") // enter position
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("Change Color / Black Pawn")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("Color / Black Pawn")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter")
PORT_START("RESET") // not on matrix
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_CHANGED_MEMBER(DEVICE_SELF, delta1_state, reset_button, nullptr) PORT_NAME("New Game")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_CHANGED_MEMBER(DEVICE_SELF, novagf8_state, reset_button, nullptr) PORT_NAME("New Game")
INPUT_PORTS_END
@@ -166,21 +185,20 @@ INPUT_PORTS_END
Machine Drivers
******************************************************************************/
-void delta1_state::delta1(machine_config &config)
-{
+MACHINE_CONFIG_START(novagf8_state::delta1)
+
/* basic machine hardware */
- F8(config, m_maincpu, 2000000); // LC circuit, measured 2MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &delta1_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &delta1_state::main_io);
- m_maincpu->set_irq_acknowledge_callback("f3853", FUNC(f3853_device::int_acknowledge));
+ MCFG_DEVICE_ADD("maincpu", F8, 2000000) // LC circuit, measured 2MHz
+ MCFG_DEVICE_PROGRAM_MAP(delta1_map)
+ MCFG_DEVICE_IO_MAP(delta1_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("f3853", f3853_device, int_acknowledge)
f3853_device &f3853(F3853(config, "f3853", 2000000));
f3853.int_req_callback().set_inputline("maincpu", F8_INPUT_LINE_INT_REQ);
- TIMER(config, "display_blink").configure_periodic(FUNC(delta1_state::blink), attotime::from_msec(250)); // approximation
- TIMER(config, "display_decay").configure_periodic(FUNC(delta1_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", novagf8_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_novag_delta1);
-}
+MACHINE_CONFIG_END
@@ -193,13 +211,11 @@ ROM_START( ccdelta1 )
ROM_LOAD("ma_winke_y1d", 0x0000, 0x1000, CRC(ddc04aca) SHA1(bbf334c82bc89b2f131f5a50f0a617bc3bc4c329) ) // 2332a
ROM_END
-} // anonymous namespace
-
/******************************************************************************
Drivers
******************************************************************************/
-// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
-CONS( 1979, ccdelta1, 0, 0, delta1, delta1, delta1_state, empty_init, "Novag", "Chess Champion: Delta-1", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_CLICKABLE_ARTWORK )
+// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
+CONS( 1979, ccdelta1, 0, 0, delta1, delta1, novagf8_state, empty_init, "Novag", "Chess Champion: Delta-1", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/novag_presto.cpp b/src/mame/drivers/novagmcs48.cpp
index bb0522d9fa9..6066c821f14 100644
--- a/src/mame/drivers/novag_presto.cpp
+++ b/src/mame/drivers/novagmcs48.cpp
@@ -2,20 +2,26 @@
// copyright-holders:hap
// thanks-to:Berger
/******************************************************************************
-*
-* novag_presto.cpp, subdriver of machine/novagbase.cpp, machine/chessbase.cpp
-TODO:
-- is led handling correct? mux data needs to be auto cleared
- similar to diablo/sexpert
+ Novag generic MCS-48 based chess computer driver
-*******************************************************************************
+ NOTE: MAME doesn't include a generalized implementation for boardpieces yet,
+ greatly affecting user playability of emulated electronic board games.
+ As workaround for the chess games, use an external chess GUI on the side,
+ such as Arena(in editmode).
-Novag Presto overview:
+ TODO:
+ - is presto led handling correct? mux data needs to be auto cleared
+ similar to diablo/sexpert
+
+******************************************************************************
+
+Presto:
- NEC D80C49C MCU(serial 186), OSC from LC circuit measured ~6MHz
- buzzer, 16+4 LEDs, 8*8 chessboard buttons
-Octo has a NEC D80C49HC MCU(serial 111), OSC from LC circuit measured ~12MHz
+Octo:
+- NEC D80C49HC MCU(serial 111), OSC from LC circuit measured ~12MHz
The buzzer has a little electronic circuit going on, not sure whatfor.
Otherwise, it's identical to Presto. The MCU internal ROM is same too.
@@ -32,71 +38,45 @@ Otherwise, it's identical to Presto. The MCU internal ROM is same too.
#include "novag_presto.lh" // clickable
-namespace {
-
-class presto_state : public novagbase_state
+class novagmcs48_state : public novagbase_state
{
public:
- presto_state(const machine_config &mconfig, device_type type, const char *tag) :
- novagbase_state(mconfig, type, tag),
- m_maincpu(*this, "maincpu")
+ novagmcs48_state(const machine_config &mconfig, device_type type, const char *tag)
+ : novagbase_state(mconfig, type, tag)
{ }
- // machine drivers
void presto(machine_config &config);
void octo(machine_config &config);
-protected:
- // devices/pointers
- required_device<mcs48_cpu_device> m_maincpu;
-
- // I/O handlers
- DECLARE_WRITE8_MEMBER(mux_w);
- DECLARE_WRITE8_MEMBER(control_w);
- DECLARE_READ8_MEMBER(input_r);
-};
-
-class octo_state : public presto_state
-{
-public:
- octo_state(const machine_config &mconfig, device_type type, const char *tag) :
- presto_state(mconfig, type, tag)
- { }
-
- DECLARE_INPUT_CHANGED_MEMBER(octo_cpu_freq) { octo_set_cpu_freq(); }
+ DECLARE_INPUT_CHANGED_MEMBER(octo_cpu_freq);
-protected:
- virtual void machine_reset() override;
+private:
+ // Presto/Octo
+ DECLARE_WRITE8_MEMBER(presto_mux_w);
+ DECLARE_WRITE8_MEMBER(presto_control_w);
+ DECLARE_READ8_MEMBER(presto_input_r);
+ DECLARE_MACHINE_RESET(octo);
void octo_set_cpu_freq();
};
-void octo_state::machine_reset()
-{
- presto_state::machine_reset();
- octo_set_cpu_freq();
-}
-void octo_state::octo_set_cpu_freq()
-{
- // Octo was released with either 12MHz or 15MHz CPU
- m_maincpu->set_unscaled_clock((ioport("FAKE")->read() & 1) ? (15000000) : (12000000));
-}
+// Devices, I/O
/******************************************************************************
- Devices, I/O
+ Presto/Octo
******************************************************************************/
// MCU ports/generic
-WRITE8_MEMBER(presto_state::mux_w)
+WRITE8_MEMBER(novagmcs48_state::presto_mux_w)
{
// D0-D7: input mux low, led data
m_inp_mux = (m_inp_mux & ~0xff) | (~data & 0xff);
display_matrix(8, 3, m_inp_mux, m_led_select);
}
-WRITE8_MEMBER(presto_state::control_w)
+WRITE8_MEMBER(novagmcs48_state::presto_control_w)
{
// P21: input mux high
m_inp_mux = (m_inp_mux & 0xff) | (~data << 7 & 0x100);
@@ -109,12 +89,24 @@ WRITE8_MEMBER(presto_state::control_w)
m_inp_mux &= ~0xff; // ?
}
-READ8_MEMBER(presto_state::input_r)
+READ8_MEMBER(novagmcs48_state::presto_input_r)
{
// P10-P17: multiplexed inputs
return ~read_inputs(9) & 0xff;
}
+void novagmcs48_state::octo_set_cpu_freq()
+{
+ // Octo was released with either 12MHz or 15MHz CPU
+ m_maincpu->set_unscaled_clock((ioport("FAKE")->read() & 1) ? (15000000) : (12000000));
+}
+
+MACHINE_RESET_MEMBER(novagmcs48_state, octo)
+{
+ novagbase_state::machine_reset();
+ octo_set_cpu_freq();
+}
+
/******************************************************************************
@@ -122,7 +114,7 @@ READ8_MEMBER(presto_state::input_r)
******************************************************************************/
static INPUT_PORTS_START( presto )
- PORT_INCLUDE( generic_cb_buttons )
+ PORT_INCLUDE( novag_cb_buttons )
PORT_START("IN.8")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Black/White") // Octo calls it "Change Color"
@@ -139,41 +131,49 @@ static INPUT_PORTS_START( octo )
PORT_INCLUDE( presto )
PORT_START("FAKE")
- PORT_CONFNAME( 0x01, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, octo_state, octo_cpu_freq, nullptr) // factory set
+ PORT_CONFNAME( 0x01, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, novagmcs48_state, octo_cpu_freq, nullptr) // factory set
PORT_CONFSETTING( 0x00, "12MHz" )
PORT_CONFSETTING( 0x01, "15MHz" )
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(novagmcs48_state::octo_cpu_freq)
+{
+ octo_set_cpu_freq();
+}
+
/******************************************************************************
Machine Drivers
******************************************************************************/
-void presto_state::presto(machine_config &config)
-{
+MACHINE_CONFIG_START(novagmcs48_state::presto)
+
/* basic machine hardware */
- I8049(config, m_maincpu, 6000000); // LC circuit, measured 6MHz
- m_maincpu->p1_in_cb().set(FUNC(presto_state::input_r));
- m_maincpu->p2_out_cb().set(FUNC(presto_state::control_w));
- m_maincpu->bus_out_cb().set(FUNC(presto_state::mux_w));
+ i8049_device &maincpu(I8049(config, m_maincpu, 6000000)); // LC circuit, measured 6MHz
+ maincpu.p1_in_cb().set(FUNC(novagmcs48_state::presto_input_r));
+ maincpu.p2_out_cb().set(FUNC(novagmcs48_state::presto_control_w));
+ maincpu.bus_out_cb().set(FUNC(novagmcs48_state::presto_mux_w));
- TIMER(config, "display_decay").configure_periodic(FUNC(presto_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", novagmcs48_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_novag_presto);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
-void presto_state::octo(machine_config &config)
-{
+MACHINE_CONFIG_START(novagmcs48_state::octo)
presto(config);
/* basic machine hardware */
- m_maincpu->set_clock(12000000); // LC circuit, measured, see octo_set_cpu_freq
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(12000000) // LC circuit, measured, see octo_set_cpu_freq
+
+ MCFG_MACHINE_RESET_OVERRIDE(novagmcs48_state, octo)
+MACHINE_CONFIG_END
@@ -191,14 +191,12 @@ ROM_START( nocto )
ROM_LOAD("d80c49hc_111", 0x0000, 0x0800, CRC(29a0eb4c) SHA1(e058d6018e53ddcaa3b5ec25b33b8bff091b04db) ) // same program as npresto
ROM_END
-} // anonymous namespace
-
/******************************************************************************
Drivers
******************************************************************************/
-// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
-CONS( 1984, npresto, 0, 0, presto, presto, presto_state, empty_init, "Novag", "Presto (Novag)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1987, nocto, npresto, 0, octo, octo, octo_state, empty_init, "Novag", "Octo (Novag)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
+CONS( 1984, npresto, 0, 0, presto, presto, novagmcs48_state, empty_init, "Novag", "Presto (Novag)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1987, nocto, npresto, 0, octo, octo, novagmcs48_state, empty_init, "Novag", "Octo (Novag)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/nsm.cpp b/src/mame/drivers/nsm.cpp
index 817578bebd7..d8f10617a91 100644
--- a/src/mame/drivers/nsm.cpp
+++ b/src/mame/drivers/nsm.cpp
@@ -65,18 +65,18 @@ void nsm_state::nsm_map(address_map &map)
void nsm_state::nsm_io_map(address_map &map)
{
// 00-71 selected by IC600 (74LS151)
- map(0x0000, 0x001f).r(FUNC(nsm_state::ff_r)); // 5v supply
- map(0x0100, 0x011f).nopr(); // antenna
- map(0x0200, 0x021f).nopr(); // reset circuit
- map(0x0300, 0x031f).r(FUNC(nsm_state::ff_r)); // service plug
- map(0x0400, 0x041f).r(FUNC(nsm_state::ff_r)); // service plug
- map(0x0500, 0x051f).r(FUNC(nsm_state::ff_r)); // test of internal battery
- map(0x0600, 0x061f).r(FUNC(nsm_state::ff_r)); // sum of analog outputs of ay2
- //map(0x0700, 0x071f).nopr(); // serial data in
- map(0x1ee0, 0x1efb).nopw();
- map(0xfe40, 0xffff).nopr();
- map(0xff60, 0xff7f).w(FUNC(nsm_state::cru_w));
- map(0xffa0, 0xffa3).w(FUNC(nsm_state::oe_w));
+ map(0x0000, 0x0001).r(FUNC(nsm_state::ff_r)); // 5v supply
+ map(0x0010, 0x0011).nopr(); // antenna
+ map(0x0020, 0x0021).nopr(); // reset circuit
+ map(0x0030, 0x0031).r(FUNC(nsm_state::ff_r)); // service plug
+ map(0x0040, 0x0041).r(FUNC(nsm_state::ff_r)); // service plug
+ map(0x0050, 0x0051).r(FUNC(nsm_state::ff_r)); // test of internal battery
+ map(0x0060, 0x0061).r(FUNC(nsm_state::ff_r)); // sum of analog outputs of ay2
+ //AM_RANGE(0x0070, 0x0071) AM_READNOP // serial data in
+ map(0x0f70, 0x0f7d).nopw();
+ map(0x0fe4, 0x0fff).nopr();
+ map(0x7fb0, 0x7fbf).w(FUNC(nsm_state::cru_w));
+ map(0x7fd0, 0x7fd1).w(FUNC(nsm_state::oe_w));
}
static INPUT_PORTS_START( nsm )
diff --git a/src/mame/drivers/nsmpoker.cpp b/src/mame/drivers/nsmpoker.cpp
index a9f4e995120..3245fade5a9 100644
--- a/src/mame/drivers/nsmpoker.cpp
+++ b/src/mame/drivers/nsmpoker.cpp
@@ -175,7 +175,7 @@ INTERRUPT_GEN_MEMBER(nsmpoker_state::nsmpoker_interrupt)
READ8_MEMBER(nsmpoker_state::debug_r)
{
- return BIT(machine().rand(), offset);
+ return machine().rand() & 0xff;
}
@@ -194,8 +194,8 @@ void nsmpoker_state::nsmpoker_map(address_map &map)
void nsmpoker_state::nsmpoker_portmap(address_map &map)
{
- map.global_mask(0xfff);
- map(0xf00, 0xf0f).r(FUNC(nsmpoker_state::debug_r)); // kind of trap at beginning
+ map.global_mask(0xff);
+ map(0xf0, 0xf0).r(FUNC(nsmpoker_state::debug_r)); // kind of trap at beginning
}
/* I/O byte R/W
@@ -419,8 +419,8 @@ void nsmpoker_state::machine_reset()
* Machine Drivers *
*************************/
-void nsmpoker_state::nsmpoker(machine_config &config)
-{
+MACHINE_CONFIG_START(nsmpoker_state::nsmpoker)
+
// CPU TMS9995, standard variant; no line connections
TMS9995(config, m_maincpu, MASTER_CLOCK/2);
m_maincpu->set_addrmap(AS_PROGRAM, &nsmpoker_state::nsmpoker_map);
@@ -428,17 +428,18 @@ void nsmpoker_state::nsmpoker(machine_config &config)
m_maincpu->set_vblank_int("screen", FUNC(nsmpoker_state::nsmpoker_interrupt));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(nsmpoker_state::screen_update_nsmpoker));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(nsmpoker_state, screen_update_nsmpoker)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_nsmpoker);
PALETTE(config, "palette", FUNC(nsmpoker_state::nsmpoker_palette), 16);
-}
+
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/nss.cpp b/src/mame/drivers/nss.cpp
index 0586a8d61a8..2071ad6b0cc 100644
--- a/src/mame/drivers/nss.cpp
+++ b/src/mame/drivers/nss.cpp
@@ -832,24 +832,24 @@ void nss_state::machine_reset()
m_joy_flag = 1;
}
-void nss_state::nss(machine_config &config)
-{
+MACHINE_CONFIG_START(nss_state::nss)
+
/* base snes hardware */
- _5A22(config, m_maincpu, MCLK_NTSC); /* 2.68Mhz, also 3.58Mhz */
- m_maincpu->set_addrmap(AS_PROGRAM, &nss_state::snes_map);
+ MCFG_DEVICE_ADD("maincpu", _5A22, MCLK_NTSC) /* 2.68Mhz, also 3.58Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(snes_map)
// runs at 24.576 MHz / 12 = 2.048 MHz
- SPC700(config, m_soundcpu, XTAL(24'576'000) / 12);
- m_soundcpu->set_addrmap(AS_PROGRAM, &nss_state::spc_mem);
+ MCFG_DEVICE_ADD("soundcpu", SPC700, XTAL(24'576'000) / 12)
+ MCFG_DEVICE_PROGRAM_MAP(spc_mem)
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
/* nss hardware */
- Z80(config, m_bioscpu, 4000000);
- m_bioscpu->set_addrmap(AS_PROGRAM, &nss_state::bios_map);
- m_bioscpu->set_addrmap(AS_IO, &nss_state::bios_io_map);
+ MCFG_DEVICE_ADD("bios", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(bios_map)
+ MCFG_DEVICE_IO_MAP(bios_io_map)
- M50458(config, m_m50458, 4000000, "osd"); /* TODO: correct clock */
+ MCFG_M50458_ADD("m50458", 4000000, "osd") /* TODO: correct clock */
S3520CF(config, m_s3520cf); /* RTC */
RP5H01(config, m_rp5h01, 0);
M6M80011AP(config, "m6m80011ap");
@@ -857,32 +857,32 @@ void nss_state::nss(machine_config &config)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- SNES_SOUND(config, m_spc700);
- m_spc700->add_route(0, "lspeaker", 1.00);
- m_spc700->add_route(1, "rspeaker", 1.00);
+ MCFG_DEVICE_ADD("spc700", SNES_SOUND)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
/* video hardware */
/* TODO: the screen should actually superimpose, but for the time being let's just separate outputs */
config.set_default_layout(layout_dualhsxs);
// SNES PPU
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(DOTCLK_NTSC, SNES_HTOTAL, 0, SNES_SCR_WIDTH, SNES_VTOTAL_NTSC, 0, SNES_SCR_HEIGHT_NTSC);
- m_screen->set_screen_update(FUNC(snes_state::screen_update));
- m_screen->screen_vblank().set(FUNC(nss_state::nss_vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(DOTCLK_NTSC, SNES_HTOTAL, 0, SNES_SCR_WIDTH, SNES_VTOTAL_NTSC, 0, SNES_SCR_HEIGHT_NTSC)
+ MCFG_SCREEN_UPDATE_DRIVER( snes_state, screen_update )
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, nss_state, nss_vblank_irq))
SNES_PPU(config, m_ppu, MCLK_NTSC);
m_ppu->open_bus_callback().set([this] { return snes_open_bus_r(); }); // lambda because overloaded function name
m_ppu->set_screen("screen");
// NSS
- screen_device &osd(SCREEN(config, "osd", SCREEN_TYPE_RASTER));
- osd.set_refresh_hz(60);
- osd.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- osd.set_size(288+22, 216+22);
- osd.set_visarea(0, 288-1, 0, 216-1);
- osd.set_screen_update(FUNC(nss_state::screen_update));
-}
+ MCFG_SCREEN_ADD("osd", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(288+22, 216+22)
+ MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 216-1)
+ MCFG_SCREEN_UPDATE_DRIVER(nss_state,screen_update)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/nycaptor.cpp b/src/mame/drivers/nycaptor.cpp
index c522d0aead7..722a9e3853a 100644
--- a/src/mame/drivers/nycaptor.cpp
+++ b/src/mame/drivers/nycaptor.cpp
@@ -798,6 +798,7 @@ void nycaptor_state::nycaptor(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
@@ -867,6 +868,7 @@ void nycaptor_state::cyclshtg(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
@@ -934,6 +936,7 @@ void nycaptor_state::bronx(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/nyny.cpp b/src/mame/drivers/nyny.cpp
index 70c933ae030..c8f9650be34 100644
--- a/src/mame/drivers/nyny.cpp
+++ b/src/mame/drivers/nyny.cpp
@@ -415,8 +415,8 @@ READ8_MEMBER(nyny_state::nyny_pia_1_2_r)
uint8_t ret = 0;
/* the address bits are directly connected to the chip selects */
- if (BIT(offset, 2)) ret = m_pia1->read(offset & 0x03);
- if (BIT(offset, 3)) ret = m_pia2->read_alt(offset & 0x03);
+ if (BIT(offset, 2)) ret = m_pia1->read(space, offset & 0x03);
+ if (BIT(offset, 3)) ret = m_pia2->read_alt(space, offset & 0x03);
return ret;
}
@@ -425,8 +425,8 @@ READ8_MEMBER(nyny_state::nyny_pia_1_2_r)
WRITE8_MEMBER(nyny_state::nyny_pia_1_2_w)
{
/* the address bits are directly connected to the chip selects */
- if (BIT(offset, 2)) m_pia1->write(offset & 0x03, data);
- if (BIT(offset, 3)) m_pia2->write_alt(offset & 0x03, data);
+ if (BIT(offset, 2)) m_pia1->write(space, offset & 0x03, data);
+ if (BIT(offset, 3)) m_pia2->write_alt(space, offset & 0x03, data);
}
@@ -596,25 +596,25 @@ void nyny_state::machine_reset()
*
*************************************/
-void nyny_state::nyny(machine_config &config)
-{
+MACHINE_CONFIG_START(nyny_state::nyny)
+
/* basic machine hardware */
- MC6809(config, m_maincpu, 5600000); /* 1.40 MHz? The clock signal is generated by analog chips */
- m_maincpu->set_addrmap(AS_PROGRAM, &nyny_state::nyny_main_map);
- m_maincpu->set_periodic_int(FUNC(nyny_state::update_pia_1), attotime::from_hz(25));
+ MCFG_DEVICE_ADD("maincpu", MC6809, 5600000) /* 1.40 MHz? The clock signal is generated by analog chips */
+ MCFG_DEVICE_PROGRAM_MAP(nyny_main_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(nyny_state, update_pia_1, 25)
- M6802(config, m_audiocpu, AUDIO_CPU_1_CLOCK);
- m_audiocpu->set_addrmap(AS_PROGRAM, &nyny_state::nyny_audio_1_map);
+ MCFG_DEVICE_ADD("audiocpu", M6802, AUDIO_CPU_1_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(nyny_audio_1_map)
- M6802(config, m_audiocpu2, AUDIO_CPU_2_CLOCK);
- m_audiocpu2->set_addrmap(AS_PROGRAM, &nyny_state::nyny_audio_2_map);
+ MCFG_DEVICE_ADD("audio2", M6802, AUDIO_CPU_2_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(nyny_audio_2_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(PIXEL_CLOCK, 256, 0, 256, 256, 0, 256); /* temporary, CRTC will configure screen */
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 256, 0, 256, 256, 0, 256) /* temporary, CRTC will configure screen */
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
PALETTE(config, m_palette, palette_device::RGB_3BIT);
@@ -668,11 +668,10 @@ void nyny_state::nyny(machine_config &config)
AY8910(config, "ay3", AUDIO_CPU_2_CLOCK).add_route(ALL_OUTPUTS, "speaker", 0.03);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ob68k1a.cpp b/src/mame/drivers/ob68k1a.cpp
index e7efa1696fe..6b3f02220eb 100644
--- a/src/mame/drivers/ob68k1a.cpp
+++ b/src/mame/drivers/ob68k1a.cpp
@@ -76,9 +76,9 @@ Notes:
READ8_MEMBER( ob68k1a_state::pia_r )
{
if (offset) {
- return m_pia1->read(0);
+ return m_pia1->read(space,0);
} else {
- return m_pia0->read(0);
+ return m_pia0->read(space,0);
}
}
@@ -90,9 +90,9 @@ READ8_MEMBER( ob68k1a_state::pia_r )
WRITE8_MEMBER( ob68k1a_state::pia_w )
{
if (offset) {
- m_pia1->write(0,data);
+ m_pia1->write(space,0,data);
} else {
- m_pia0->write(0,data);
+ m_pia0->write(space,0,data);
}
}
@@ -160,8 +160,8 @@ void ob68k1a_state::machine_start()
void ob68k1a_state::machine_reset()
{
// initialize COM8116
- m_dbrg->stt_w(0x0e);
- m_dbrg->str_w(0x0e);
+ m_dbrg->write_stt(0x0e);
+ m_dbrg->write_str(0x0e);
// set reset vector
void *ram = m_maincpu->space(AS_PROGRAM).get_write_ptr(0);
@@ -179,7 +179,7 @@ void ob68k1a_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( ob68k1a )
+// MACHINE_CONFIG( ob68k1a )
//-------------------------------------------------
void ob68k1a_state::ob68k1a(machine_config &config)
diff --git a/src/mame/drivers/octopus.cpp b/src/mame/drivers/octopus.cpp
index 7b9f7686b27..ce0d1e97811 100644
--- a/src/mame/drivers/octopus.cpp
+++ b/src/mame/drivers/octopus.cpp
@@ -524,9 +524,9 @@ READ8_MEMBER(octopus_state::rtc_r)
uint8_t ret = 0xff;
if(m_rtc_data)
- ret = m_rtc->read(1);
+ ret = m_rtc->read(space,1);
else if(m_rtc_address)
- ret = m_rtc->read(0);
+ ret = m_rtc->read(space,0);
return ret;
}
@@ -534,9 +534,9 @@ READ8_MEMBER(octopus_state::rtc_r)
WRITE8_MEMBER(octopus_state::rtc_w)
{
if(m_rtc_data)
- m_rtc->write(1,data);
+ m_rtc->write(space,1,data);
else if(m_rtc_address)
- m_rtc->write(0,data);
+ m_rtc->write(space,0,data);
}
// RTC/FDC control - PPI port B
@@ -895,17 +895,16 @@ void octopus_centronics_devices(device_slot_interface &device)
device.option_add("printer", CENTRONICS_PRINTER);
}
-void octopus_state::octopus(machine_config &config)
-{
+MACHINE_CONFIG_START(octopus_state::octopus)
/* basic machine hardware */
- I8088(config, m_maincpu, 24_MHz_XTAL / 3); // 8MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &octopus_state::octopus_mem);
- m_maincpu->set_addrmap(AS_IO, &octopus_state::octopus_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(octopus_state::x86_irq_cb));
+ MCFG_DEVICE_ADD("maincpu",I8088, 24_MHz_XTAL / 3) // 8MHz
+ MCFG_DEVICE_PROGRAM_MAP(octopus_mem)
+ MCFG_DEVICE_IO_MAP(octopus_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(octopus_state, x86_irq_cb)
- Z80(config, m_subcpu, 24_MHz_XTAL / 4); // 6MHz
- m_subcpu->set_addrmap(AS_PROGRAM, &octopus_state::octopus_sub_mem);
- m_subcpu->set_addrmap(AS_IO, &octopus_state::octopus_sub_io);
+ MCFG_DEVICE_ADD("subcpu",Z80, 24_MHz_XTAL / 4) // 6MHz
+ MCFG_DEVICE_PROGRAM_MAP(octopus_sub_mem)
+ MCFG_DEVICE_IO_MAP(octopus_sub_io)
AM9517A(config, m_dma1, 24_MHz_XTAL / 6); // 4MHz
m_dma1->out_hreq_callback().set(m_dma2, FUNC(am9517a_device::dreq0_w));
@@ -969,17 +968,17 @@ void octopus_state::octopus(machine_config &config)
m_kb_uart->rts_handler().set(FUNC(octopus_state::beep_w));
rs232_port_device &keyboard_port(RS232_PORT(config, "keyboard_port", keyboard, "octopus"));
keyboard_port.rxd_handler().set(m_kb_uart, FUNC(i8251_device::write_rxd));
- clock_device &keyboard_clock_rx(CLOCK(config, "keyboard_clock_rx", 9600 * 64));
- keyboard_clock_rx.signal_handler().set(m_kb_uart, FUNC(i8251_device::write_rxc));
- clock_device &keyboard_clock_tx(CLOCK(config, "keyboard_clock_tx", 1200 * 64));
- keyboard_clock_tx.signal_handler().set(m_kb_uart, FUNC(i8251_device::write_txc));
+ MCFG_DEVICE_ADD("keyboard_clock_rx", CLOCK, 9600 * 64)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(m_kb_uart,i8251_device,write_rxc))
+ MCFG_DEVICE_ADD("keyboard_clock_tx", CLOCK, 1200 * 64)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(m_kb_uart,i8251_device,write_txc))
FD1793(config, m_fdc, 16_MHz_XTAL / 8);
m_fdc->intrq_wr_callback().set(m_pic1, FUNC(pic8259_device::ir5_w));
m_fdc->drq_wr_callback().set(m_dma2, FUNC(am9517a_device::dreq1_w));
- FLOPPY_CONNECTOR(config, "fdc:0", octopus_floppies, "525dd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", octopus_floppies, "525dd", floppy_image_device::default_floppy_formats);
- SOFTWARE_LIST(config, "fd_list").set_original("octopus");
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", octopus_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", octopus_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_SOFTWARE_LIST_ADD("fd_list","octopus")
PIT8253(config, m_pit, 0);
m_pit->set_clk<0>(4.9152_MHz_XTAL / 2); // DART channel A
@@ -990,7 +989,8 @@ void octopus_state::octopus(machine_config &config)
m_pit->out_handler<2>().set(FUNC(octopus_state::spk_freq_w));
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
Z80SIO(config, m_serial, 16_MHz_XTAL / 4); // clock rate not mentioned in tech manual
m_serial->out_int_callback().set(m_pic1, FUNC(pic8259_device::ir1_w));
@@ -1008,9 +1008,9 @@ void octopus_state::octopus(machine_config &config)
serial_b.cts_handler().set(m_serial, FUNC(z80sio_device::ctsb_w)).invert();
//serial_b.ri_handler().set(m_serial, FUNC(z80sio_device::rib_w)).invert();
- CENTRONICS(config, m_parallel, octopus_centronics_devices, "printer");
- m_parallel->busy_handler().set(FUNC(octopus_state::parallel_busy_w));
- m_parallel->select_handler().set(FUNC(octopus_state::parallel_slctout_w));
+ MCFG_DEVICE_ADD(m_parallel, CENTRONICS, octopus_centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, octopus_state, parallel_busy_w))
+ MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, octopus_state, parallel_slctout_w))
// TODO: Winchester HD controller (Xebec/SASI compatible? uses TTL logic)
/* video hardware */
@@ -1029,7 +1029,8 @@ void octopus_state::octopus(machine_config &config)
ADDRESS_MAP_BANK(config, "z80_bank").set_map(&octopus_state::octopus_mem).set_options(ENDIANNESS_LITTLE, 8, 32, 0x10000);
RAM(config, "ram").set_default_size("256K").set_extra_options("128K,512K,768K");
-}
+
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( octopus )
diff --git a/src/mame/drivers/odyssey.cpp b/src/mame/drivers/odyssey.cpp
index 628fe45caa9..7e88e16b326 100644
--- a/src/mame/drivers/odyssey.cpp
+++ b/src/mame/drivers/odyssey.cpp
@@ -133,20 +133,20 @@ void odyssey_state::machine_reset()
* Machine Config *
**************************************/
-void odyssey_state::odyssey(machine_config &config)
-{
+MACHINE_CONFIG_START(odyssey_state::odyssey)
+
/* basic machine hardware */
- PENTIUM(config, m_maincpu, 133000000); // a Celeron at 1.70 GHz on the MB I checked.
- m_maincpu->set_addrmap(AS_PROGRAM, &odyssey_state::odyssey_map);
+ MCFG_DEVICE_ADD("maincpu", PENTIUM, 133000000) // a Celeron at 1.70 GHz on the MB I checked.
+ MCFG_DEVICE_PROGRAM_MAP(odyssey_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_screen_update(FUNC(odyssey_state::screen_update));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(odyssey_state, screen_update)
+MACHINE_CONFIG_END
/**************************************
diff --git a/src/mame/drivers/odyssey2.cpp b/src/mame/drivers/odyssey2.cpp
index edd3f07a9b8..514a9ec6228 100644
--- a/src/mame/drivers/odyssey2.cpp
+++ b/src/mame/drivers/odyssey2.cpp
@@ -673,16 +673,14 @@ GFXDECODE_END
-void odyssey2_state::odyssey2_cartslot(machine_config &config)
-{
- O2_CART_SLOT(config, m_cart, o2_cart, nullptr);
+MACHINE_CONFIG_START(odyssey2_state::odyssey2_cartslot)
+ MCFG_O2_CARTRIDGE_ADD("cartslot", o2_cart, nullptr)
- SOFTWARE_LIST(config, "cart_list").set_original("odyssey2");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list","odyssey2")
+MACHINE_CONFIG_END
-void odyssey2_state::odyssey2(machine_config &config)
-{
+MACHINE_CONFIG_START(odyssey2_state::odyssey2)
/* basic machine hardware */
I8048(config, m_maincpu, ((XTAL(7'159'090) * 3) / 4));
m_maincpu->set_addrmap(AS_PROGRAM, &odyssey2_state::odyssey2_mem);
@@ -696,67 +694,53 @@ void odyssey2_state::odyssey2(machine_config &config)
m_maincpu->t0_in_cb().set("cartslot", FUNC(o2_cart_slot_device::t0_read));
m_maincpu->t1_in_cb().set(FUNC(odyssey2_state::t1_read));
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(odyssey2_state::screen_update_odyssey2));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS( XTAL(7'159'090)/2 * 2, i8244_device::LINE_CLOCKS, i8244_device::START_ACTIVE_SCAN, i8244_device::END_ACTIVE_SCAN, i8244_device::LINES, i8244_device::START_Y, i8244_device::START_Y + i8244_device::SCREEN_HEIGHT )
+ MCFG_SCREEN_UPDATE_DRIVER(odyssey2_state, screen_update_odyssey2)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_odyssey2);
PALETTE(config, "palette", FUNC(odyssey2_state::odyssey2_palette), 32);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- I8244(config, m_i8244, XTAL(7'159'090)/2 * 2);
- m_i8244->set_screen("screen");
- m_i8244->irq_cb().set_inputline(m_maincpu, MCS48_INPUT_IRQ);
- m_i8244->postprocess_cb().set(FUNC(odyssey2_state::scanline_postprocess));
- m_i8244->add_route(ALL_OUTPUTS, "mono", 0.40);
+ MCFG_I8244_ADD( "i8244", XTAL(7'159'090)/2 * 2, "screen", INPUTLINE( "maincpu", 0 ), WRITE16( *this, odyssey2_state, scanline_postprocess ) )
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
odyssey2_cartslot(config);
-}
+MACHINE_CONFIG_END
-void odyssey2_state::videopac(machine_config &config)
-{
+MACHINE_CONFIG_START(odyssey2_state::videopac)
/* basic machine hardware */
I8048(config, m_maincpu, (XTAL(17'734'470) / 3));
m_maincpu->set_addrmap(AS_PROGRAM, &odyssey2_state::odyssey2_mem);
m_maincpu->set_addrmap(AS_IO, &odyssey2_state::odyssey2_io);
- m_maincpu->p1_in_cb().set(FUNC(odyssey2_state::p1_read));
- m_maincpu->p1_out_cb().set(FUNC(odyssey2_state::p1_write));
- m_maincpu->p2_in_cb().set(FUNC(odyssey2_state::p2_read));
- m_maincpu->p2_out_cb().set(FUNC(odyssey2_state::p2_write));
- m_maincpu->bus_in_cb().set(FUNC(odyssey2_state::bus_read));
- m_maincpu->bus_out_cb().set(FUNC(odyssey2_state::bus_write));
- m_maincpu->t0_in_cb().set("cartslot", FUNC(o2_cart_slot_device::t0_read));
- m_maincpu->t1_in_cb().set(FUNC(odyssey2_state::t1_read));
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(odyssey2_state::screen_update_odyssey2));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS( XTAL(17'734'470)/5 * 2, i8244_device::LINE_CLOCKS, i8244_device::START_ACTIVE_SCAN, i8244_device::END_ACTIVE_SCAN, i8245_device::LINES, i8244_device::START_Y, i8244_device::START_Y + i8244_device::SCREEN_HEIGHT )
+ MCFG_SCREEN_UPDATE_DRIVER(odyssey2_state, screen_update_odyssey2)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_odyssey2);
PALETTE(config, "palette", FUNC(odyssey2_state::odyssey2_palette), 16);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- I8245(config, m_i8244, XTAL(17'734'470)/5 * 2);
- m_i8244->set_screen("screen");
- m_i8244->irq_cb().set_inputline(m_maincpu, MCS48_INPUT_IRQ);
- m_i8244->postprocess_cb().set(FUNC(odyssey2_state::scanline_postprocess));
- m_i8244->add_route(ALL_OUTPUTS, "mono", 0.40);
+ MCFG_I8245_ADD( "i8244", XTAL(17'734'470)/5 * 2, "screen", INPUTLINE( "maincpu", 0 ), WRITE16( *this, odyssey2_state, scanline_postprocess ) )
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
odyssey2_cartslot(config);
-}
+MACHINE_CONFIG_END
-void g7400_state::g7400(machine_config &config)
-{
+MACHINE_CONFIG_START(g7400_state::g7400)
/* basic machine hardware */
I8048(config, m_maincpu, XTAL(5'911'000));
m_maincpu->set_addrmap(AS_PROGRAM, &g7400_state::odyssey2_mem);
@@ -771,12 +755,13 @@ void g7400_state::g7400(machine_config &config)
m_maincpu->t1_in_cb().set(FUNC(g7400_state::t1_read));
m_maincpu->prog_out_cb().set(m_i8243, FUNC(i8243_device::prog_w));
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(odyssey2_state::screen_update_odyssey2));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(3540000 * 2, i8244_device::LINE_CLOCKS, i8244_device::START_ACTIVE_SCAN, i8244_device::END_ACTIVE_SCAN, i8245_device::LINES, i8244_device::START_Y, i8244_device::START_Y + i8244_device::SCREEN_HEIGHT)
+ MCFG_SCREEN_UPDATE_DRIVER(odyssey2_state, screen_update_odyssey2)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_odyssey2);
PALETTE(config, "palette", FUNC(g7400_state::g7400_palette), 16);
@@ -787,23 +772,20 @@ void g7400_state::g7400(machine_config &config)
m_i8243->p6_out_cb().set(FUNC(g7400_state::i8243_p6_w));
m_i8243->p7_out_cb().set(FUNC(g7400_state::i8243_p7_w));
- EF9340_1(config, m_ef9340_1, 3540000, "screen");
+ MCFG_EF9340_1_ADD("ef9340_1", 3540000, "screen")
SPEAKER(config, "mono").front_center();
- I8245(config, m_i8244, 3540000 * 2);
- m_i8244->set_screen("screen");
- m_i8244->irq_cb().set_inputline(m_maincpu, MCS48_INPUT_IRQ);
- m_i8244->postprocess_cb().set(FUNC(g7400_state::scanline_postprocess));
- m_i8244->add_route(ALL_OUTPUTS, "mono", 0.40);
+ MCFG_I8245_ADD("i8244", 3540000 * 2, "screen", INPUTLINE("maincpu", 0), WRITE16(*this, g7400_state, scanline_postprocess))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
odyssey2_cartslot(config);
- SOFTWARE_LIST(config.replace(), "cart_list").set_original("g7400");
- SOFTWARE_LIST(config, "ody2_list").set_compatible("odyssey2");
-}
+ MCFG_DEVICE_REMOVE("cart_list")
+ MCFG_SOFTWARE_LIST_ADD("cart_list","g7400")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("ody2_list","odyssey2")
+MACHINE_CONFIG_END
-void g7400_state::odyssey3(machine_config &config)
-{
+MACHINE_CONFIG_START(g7400_state::odyssey3)
/* basic machine hardware */
I8048(config, m_maincpu, XTAL(5'911'000));
m_maincpu->set_addrmap(AS_PROGRAM, &g7400_state::odyssey2_mem);
@@ -818,12 +800,13 @@ void g7400_state::odyssey3(machine_config &config)
m_maincpu->t1_in_cb().set(FUNC(g7400_state::t1_read));
m_maincpu->prog_out_cb().set(m_i8243, FUNC(i8243_device::prog_w));
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(odyssey2_state::screen_update_odyssey2));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(3540000 * 2, i8244_device::LINE_CLOCKS, i8244_device::START_ACTIVE_SCAN, i8244_device::END_ACTIVE_SCAN, i8244_device::LINES, i8244_device::START_Y, i8244_device::START_Y + i8244_device::SCREEN_HEIGHT)
+ MCFG_SCREEN_UPDATE_DRIVER(odyssey2_state, screen_update_odyssey2)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_odyssey2);
PALETTE(config, "palette", FUNC(g7400_state::g7400_palette), 16);
@@ -834,19 +817,17 @@ void g7400_state::odyssey3(machine_config &config)
m_i8243->p6_out_cb().set(FUNC(g7400_state::i8243_p6_w));
m_i8243->p7_out_cb().set(FUNC(g7400_state::i8243_p7_w));
- EF9340_1(config, m_ef9340_1, 3540000, "screen");
+ MCFG_EF9340_1_ADD("ef9340_1", 3540000, "screen")
SPEAKER(config, "mono").front_center();
- I8244(config, m_i8244, 3540000 * 2);
- m_i8244->set_screen("screen");
- m_i8244->irq_cb().set_inputline(m_maincpu, MCS48_INPUT_IRQ);
- m_i8244->postprocess_cb().set(FUNC(g7400_state::scanline_postprocess));
- m_i8244->add_route(ALL_OUTPUTS, "mono", 0.40);
+ MCFG_I8244_ADD("i8244", 3540000 * 2, "screen", INPUTLINE("maincpu", 0), WRITE16(*this, g7400_state, scanline_postprocess))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
odyssey2_cartslot(config);
- SOFTWARE_LIST(config.replace(), "cart_list").set_original("g7400");
- SOFTWARE_LIST(config, "ody2_list").set_compatible("odyssey2");
-}
+ MCFG_DEVICE_REMOVE("cart_list")
+ MCFG_SOFTWARE_LIST_ADD("cart_list","g7400")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("ody2_list","odyssey2")
+MACHINE_CONFIG_END
ROM_START (odyssey2)
diff --git a/src/mame/drivers/offtwall.cpp b/src/mame/drivers/offtwall.cpp
index 9cbc03d71a9..4ccdaba7da1 100644
--- a/src/mame/drivers/offtwall.cpp
+++ b/src/mame/drivers/offtwall.cpp
@@ -336,18 +336,18 @@ GFXDECODE_END
*
*************************************/
-void offtwall_state::offtwall(machine_config &config)
-{
+MACHINE_CONFIG_START(offtwall_state::offtwall)
+
/* basic machine hardware */
- M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &offtwall_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
EEPROM_2816(config, "eeprom").lock_after_write(true);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- GFXDECODE(config, "gfxdecode", "palette", gfx_offtwall);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_offtwall)
PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 2048);
ATARI_VAD(config, m_vad, 0, "screen");
@@ -355,13 +355,13 @@ void offtwall_state::offtwall(machine_config &config)
TILEMAP(config, "vad:playfield", "gfxdecode", 2, 8, 8, TILEMAP_SCAN_COLS, 64, 64).set_info_callback(DEVICE_SELF_OWNER, FUNC(offtwall_state::get_playfield_tile_info));
ATARI_MOTION_OBJECTS(config, "vad:mob", 0, "screen", offtwall_state::s_mob_config).set_gfxdecode("gfxdecode");
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses a VAD chip to generate video signals */
- screen.set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- screen.set_screen_update(FUNC(offtwall_state::screen_update_offtwall));
- screen.set_palette("palette");
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(offtwall_state, screen_update_offtwall)
+ MCFG_SCREEN_PALETTE("palette")
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -371,7 +371,7 @@ void offtwall_state::offtwall(machine_config &config)
m_jsa->test_read_cb().set_ioport("260010").bit(6);
m_jsa->add_route(ALL_OUTPUTS, "mono", 1.0);
config.device_remove("jsa:oki1");
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ohmygod.cpp b/src/mame/drivers/ohmygod.cpp
index 23cc72d956d..bc50df1fd15 100644
--- a/src/mame/drivers/ohmygod.cpp
+++ b/src/mame/drivers/ohmygod.cpp
@@ -320,36 +320,36 @@ void ohmygod_state::machine_reset()
m_scrolly = 0;
}
-void ohmygod_state::ohmygod(machine_config &config)
-{
+MACHINE_CONFIG_START(ohmygod_state::ohmygod)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &ohmygod_state::ohmygod_map);
- m_maincpu->set_vblank_int("screen", FUNC(ohmygod_state::irq1_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(ohmygod_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ohmygod_state, irq1_line_hold)
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(3)); /* a guess, and certainly wrong */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(12*8, (64-12)*8-1, 0*8, 30*8-1 );
- screen.set_screen_update(FUNC(ohmygod_state::screen_update_ohmygod));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 0*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(ohmygod_state, screen_update_ohmygod)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_ohmygod);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ohmygod)
PALETTE(config, m_palette).set_format(palette_device::xGRB_555, 1024);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- okim6295_device &oki(OKIM6295(config, "oki", 14000000/8, okim6295_device::PIN7_HIGH));
- oki.set_addrmap(0, &ohmygod_state::oki_map);
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 14000000/8, okim6295_device::PIN7_HIGH)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/ojankohs.cpp b/src/mame/drivers/ojankohs.cpp
index 4170bea8dae..07afdc92e42 100644
--- a/src/mame/drivers/ojankohs.cpp
+++ b/src/mame/drivers/ojankohs.cpp
@@ -712,26 +712,25 @@ void ojankohs_state::machine_reset()
m_screen_refresh = 0;
}
-void ojankohs_state::ojankohs(machine_config &config)
-{
+MACHINE_CONFIG_START(ojankohs_state::ojankohs)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 12000000/2); /* 6.00 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankohs_map);
- m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ojankohs_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6.00 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(ojankohs_map)
+ MCFG_DEVICE_IO_MAP(ojankohs_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ojankohs_state, irq0_line_hold)
MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankohs)
-
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 512);
- m_screen->set_visarea(0, 288-1, 0, 224-1);
- m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankohs));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 512)
+ MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ojankohs);
PALETTE(config, m_palette).set_entries(1024);
@@ -748,32 +747,31 @@ void ojankohs_state::ojankohs(machine_config &config)
aysnd.port_b_read_callback().set(FUNC(ojankohs_state::ojankohs_dipsw2_r));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.15);
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(ojankohs_state::ojankoy)
-void ojankohs_state::ojankoy(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 12000000/2); /* 6.00 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankoy_map);
- m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ojankoy_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6.00 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(ojankoy_map)
+ MCFG_DEVICE_IO_MAP(ojankoy_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ojankohs_state, irq0_line_hold)
MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankoy)
-
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 512);
- m_screen->set_visarea(0, 288-1, 0, 224-1);
- m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankohs));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 512)
+ MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ojankohs);
PALETTE(config, m_palette, FUNC(ojankohs_state::ojankoy_palette), 1024);
@@ -788,32 +786,31 @@ void ojankohs_state::ojankoy(machine_config &config)
aysnd.port_b_read_callback().set_ioport("dsw2");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.15);
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(ojankohs_state::ccasino)
-void ojankohs_state::ccasino(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 12000000/2); /* 6.00 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankoy_map);
- m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ccasino_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6.00 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(ojankoy_map)
+ MCFG_DEVICE_IO_MAP(ccasino_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ojankohs_state, irq0_line_hold)
MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankohs)
-
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 512);
- m_screen->set_visarea(0, 288-1, 0, 224-1);
- m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankohs));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 512)
+ MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ojankohs);
PALETTE(config, m_palette).set_entries(1024);
@@ -830,32 +827,31 @@ void ojankohs_state::ccasino(machine_config &config)
aysnd.port_b_read_callback().set_ioport("dsw2");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.15);
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(ojankohs_state::ojankoc)
-void ojankohs_state::ojankoc(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 8000000/2); /* 4.00 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankoc_map);
- m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ojankoc_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,8000000/2) /* 4.00 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(ojankoc_map)
+ MCFG_DEVICE_IO_MAP(ojankoc_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ojankohs_state, irq0_line_hold)
MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankoc)
-
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0, 256-1, 8, 248-1);
- m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankoc));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 8, 248-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankoc)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_entries(16);
@@ -869,11 +865,11 @@ void ojankohs_state::ojankoc(machine_config &config)
aysnd.port_b_read_callback().set_ioport("dsw2");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.15);
- MSM5205(config, m_msm, 8000000/22);
- m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 8000000/22)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
ROM_START( ojankohs )
diff --git a/src/mame/drivers/okean240.cpp b/src/mame/drivers/okean240.cpp
index a12bee1167d..ce1a6af84e8 100644
--- a/src/mame/drivers/okean240.cpp
+++ b/src/mame/drivers/okean240.cpp
@@ -507,12 +507,11 @@ static GFXDECODE_START( gfx_okean240a )
GFXDECODE_END
-void okean240_state::okean240t(machine_config &config)
-{
+MACHINE_CONFIG_START(okean240_state::okean240t)
/* basic machine hardware */
- I8080(config, m_maincpu, XTAL(12'000'000) / 6);
- m_maincpu->set_addrmap(AS_PROGRAM, &okean240_state::okean240_mem);
- m_maincpu->set_addrmap(AS_IO, &okean240_state::okean240t_io);
+ MCFG_DEVICE_ADD("maincpu",I8080, XTAL(12'000'000) / 6)
+ MCFG_DEVICE_PROGRAM_MAP(okean240_mem)
+ MCFG_DEVICE_IO_MAP(okean240t_io)
i8251_device &uart(I8251(config, "uart", 0));
uart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
@@ -542,22 +541,22 @@ void okean240_state::okean240t(machine_config &config)
PIC8259(config, "pic", 0);
/* video hardware */
- screen_device &screen1(SCREEN(config, "screen1", SCREEN_TYPE_RASTER));
- screen1.set_refresh_hz(50);
- screen1.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen1.set_size(256, 256);
- screen1.set_visarea(0, 255, 0, 255);
- screen1.set_screen_update(FUNC(okean240_state::screen_update_okean240));
- screen1.set_palette("palette");
+ MCFG_SCREEN_ADD("screen1", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 255)
+ MCFG_SCREEN_UPDATE_DRIVER(okean240_state, screen_update_okean240)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
-}
+MACHINE_CONFIG_END
-void okean240_state::okean240a(machine_config &config)
-{
+MACHINE_CONFIG_START(okean240_state::okean240a)
okean240t(config);
- m_maincpu->set_addrmap(AS_IO, &okean240_state::okean240a_io);
- GFXDECODE(config, "gfxdecode", "palette", gfx_okean240a);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(okean240a_io)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_okean240a)
subdevice<rs232_port_device>("rs232")->set_default_option("keyboard");
m_ppikbd->in_pa_callback().set(FUNC(okean240_state::okean240a_port40_r));
@@ -565,19 +564,19 @@ void okean240_state::okean240a(machine_config &config)
m_ppikbd->in_pc_callback().set(FUNC(okean240_state::okean240a_port42_r));
subdevice<pit8253_device>("pit")->set_clk<1>(1536000); // artificial rate
-}
+MACHINE_CONFIG_END
-void okean240_state::okean240(machine_config &config)
-{
+MACHINE_CONFIG_START(okean240_state::okean240)
okean240t(config);
- m_maincpu->set_addrmap(AS_IO, &okean240_state::okean240_io);
- GFXDECODE(config, "gfxdecode", "palette", gfx_okean240);
- config.device_remove("uart");
- config.device_remove("rs232");
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(okean240_io)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_okean240)
+ MCFG_DEVICE_REMOVE("uart")
+ MCFG_DEVICE_REMOVE("rs232")
subdevice<pit8253_device>("pit")->out_handler<1>().set_nop();
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
keyboard.set_keyboard_callback(FUNC(okean240_state::kbd_put));
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( okean240 )
diff --git a/src/mame/drivers/olibochu.cpp b/src/mame/drivers/olibochu.cpp
index 8f3db209f83..c2e3866edd9 100644
--- a/src/mame/drivers/olibochu.cpp
+++ b/src/mame/drivers/olibochu.cpp
@@ -459,29 +459,29 @@ TIMER_DEVICE_CALLBACK_MEMBER(olibochu_state::olibochu_scanline)
m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xcf); /* RST 08h */
}
-void olibochu_state::olibochu(machine_config &config)
-{
+MACHINE_CONFIG_START(olibochu_state::olibochu)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* 4 MHz ?? */
- m_maincpu->set_addrmap(AS_PROGRAM, &olibochu_state::olibochu_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(olibochu_state::olibochu_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz ?? */
+ MCFG_DEVICE_PROGRAM_MAP(olibochu_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", olibochu_state, olibochu_scanline, "screen", 0, 1)
- z80_device &audiocpu(Z80(config, "audiocpu", 4000000)); /* 4 MHz ?? */
- audiocpu.set_addrmap(AS_PROGRAM, &olibochu_state::olibochu_sound_map);
- audiocpu.set_periodic_int(FUNC(olibochu_state::irq0_line_hold), attotime::from_hz(60)); //???
+ MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* 4 MHz ?? */
+ MCFG_DEVICE_PROGRAM_MAP(olibochu_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(olibochu_state, irq0_line_hold, 60) //???
-// config.m_perfect_cpu_quantum = subtag("maincpu");
+// MCFG_QUANTUM_PERFECT_CPU("maincpu")
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(olibochu_state::screen_update_olibochu));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_olibochu);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(olibochu_state, screen_update_olibochu)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_olibochu)
PALETTE(config, m_palette, FUNC(olibochu_state::olibochu_palette), 512);
/* sound hardware */
@@ -490,7 +490,7 @@ void olibochu_state::olibochu(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
AY8910(config, "aysnd", 2'000'000).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/olytext.cpp b/src/mame/drivers/olytext.cpp
index 2d2d717cbc7..0512ddb6f52 100644
--- a/src/mame/drivers/olytext.cpp
+++ b/src/mame/drivers/olytext.cpp
@@ -148,31 +148,32 @@ static void olytext_floppies(device_slot_interface &device)
// MACHINE CONFIGURATION
//**************************************************************************
-void olytext_state::olytext(machine_config &config)
-{
- Z80(config, m_maincpu, 16_MHz_XTAL / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &olytext_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &olytext_state::io_map);
+MACHINE_CONFIG_START( olytext_state::olytext )
+ MCFG_DEVICE_ADD("maincpu", Z80, 16_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(80*8, 28*11);
- screen.set_visarea(0, (80*8)-1, 0, (28*11)-1);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(olytext_state::screen_update));
- //screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(80*8, 28*11)
+ MCFG_SCREEN_VISIBLE_AREA(0, (80*8)-1, 0, (28*11)-1)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(olytext_state, screen_update)
+ //MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
/* devices */
WD1772(config, "fdc", 16_MHz_XTAL / 8); // divisor guess
- FLOPPY_CONNECTOR(config, "fdc:0", olytext_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", olytext_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", olytext_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", olytext_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
/* keyboard */
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
keyboard.set_keyboard_callback(FUNC(olytext_state::keyboard_put));
-}
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/omegrace.cpp b/src/mame/drivers/omegrace.cpp
index e1533bfd65a..a9cbe0c208c 100644
--- a/src/mame/drivers/omegrace.cpp
+++ b/src/mame/drivers/omegrace.cpp
@@ -513,38 +513,38 @@ INPUT_PORTS_END
*
*************************************/
-void omegrace_state::omegrace(machine_config &config)
-{
+MACHINE_CONFIG_START(omegrace_state::omegrace)
+
/* basic machine hardware */
/* main CPU */
/* XTAL101 Crystal @ 12mhz */
/* through 74LS161, Pin 13 = divide by 4 */
- Z80(config, m_maincpu, XTAL(12'000'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &omegrace_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &omegrace_state::port_map);
- m_maincpu->set_periodic_int(FUNC(omegrace_state::irq0_line_hold), attotime::from_hz(250));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(port_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(omegrace_state, irq0_line_hold, 250)
/* audio CPU */
/* XTAL101 Crystal @ 12mhz */
/* through 74LS161, Pin 12 = divide by 8 */
/* Fed to CPU as 1.5mhz though line J4-D */
- Z80(config, m_audiocpu, XTAL(12'000'000)/8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &omegrace_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &omegrace_state::sound_port);
- m_audiocpu->set_periodic_int(FUNC(omegrace_state::nmi_line_pulse), attotime::from_hz(250));
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(12'000'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_port)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(omegrace_state, nmi_line_pulse, 250)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- VECTOR(config, "vector", 0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_VECTOR));
- screen.set_refresh_hz(40);
- screen.set_size(400, 300);
- screen.set_visarea(522, 1566, 522, 1566);
- screen.set_screen_update("vector", FUNC(vector_device::screen_update));
+ MCFG_VECTOR_ADD("vector")
+ MCFG_SCREEN_ADD("screen", VECTOR)
+ MCFG_SCREEN_REFRESH_RATE(40)
+ MCFG_SCREEN_SIZE(400, 300)
+ MCFG_SCREEN_VISIBLE_AREA(522, 1566, 522, 1566)
+ MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
DVG(config, m_dvg, 0);
m_dvg->set_vector_tag("vector");
@@ -559,7 +559,7 @@ void omegrace_state::omegrace(machine_config &config)
AY8912(config, "ay1", XTAL(12'000'000)/12).add_route(ALL_OUTPUTS, "mono", 0.25);
AY8912(config, "ay2", XTAL(12'000'000)/12).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ondra.cpp b/src/mame/drivers/ondra.cpp
index 040e09fb591..12c9f073cd2 100644
--- a/src/mame/drivers/ondra.cpp
+++ b/src/mame/drivers/ondra.cpp
@@ -122,39 +122,38 @@ WRITE_LINE_MEMBER(ondra_state::vblank_irq)
}
/* Machine driver */
-void ondra_state::ondra(machine_config &config)
-{
+MACHINE_CONFIG_START(ondra_state::ondra)
/* basic machine hardware */
- Z80(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &ondra_state::ondra_mem);
- m_maincpu->set_addrmap(AS_IO, &ondra_state::ondra_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(ondra_mem)
+ MCFG_DEVICE_IO_MAP(ondra_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(320, 256);
- screen.set_visarea(0, 320-1, 0, 256-1);
- screen.set_screen_update(FUNC(ondra_state::screen_update_ondra));
- screen.set_palette("palette");
- screen.screen_vblank().set(FUNC(ondra_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(320, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ondra_state, screen_update_ondra)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, ondra_state, vblank_irq))
PALETTE(config, "palette", palette_device::MONOCHROME);
// sound hardware
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("ondra_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("ondra_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("ondra");
+ MCFG_SOFTWARE_LIST_ADD("cass_list","ondra")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K").set_default_value(0x00);
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/oneshot.cpp b/src/mame/drivers/oneshot.cpp
index 22a79edfefa..695db6e8ae9 100644
--- a/src/mame/drivers/oneshot.cpp
+++ b/src/mame/drivers/oneshot.cpp
@@ -35,85 +35,6 @@ NOTE: An eBay auction of the PCB shows "1996.9.16 PROMAT" on the JAMMA+ adapter
One Shot One Kill. This information was used for the year & manufacturer.
Also listed in an Approved Game list on a HK government site as "Promet"
-
-Main board:
-+---------------------------------------------+
-| 5MHz +------------+ |
-|VOL YM3812 Z80A M6295 |25x6 row pin| |
-| YM3014 6116 PAL +------------+ |
-| PAL |
-| +---------+ |
-| KM681000LP | ACTEL | |
-| | A1020A | |
-| KM681000LP | PL84C | |
-|J +---------+ |
-|A |
-|M +---------++---------+ |
-|M MB.ROM | Cypress || ACTEL | |
-|A KM6264 | CY7C384A|| A1020A | |
-| KM6264 PAL | -XJC || PL84C | |
-| +---------++---------+ |
-| PAL PAL KM681000LP |
-| DSW2 6 6116 KM681000LP PAL |
-| 8 6116 PAL |
-| DSW1 0 +------------+ |
-| 27MHz 0 CXK58256 |25x4 row pin| |
-|LED 12MHz 0 CXK58256 +------------+ |
-+---------------------------------------------+
-
- CPU: 68000, Z80A
-Sound: YM2812/YM3014 + OKI M6295 (badged as K-666/K-664 + AD-65)
- OSC: 27MHz, 12MHz & 5MHz
- RAM: Samsung KM681000LP-10 128Kx8 Low power SRAM x 4
- Samsung KM6264AL-10 8Kx8 Low power SRAM x 2
- Sony CXK58256-10L 32Kx8 High speed SRAM x 2
- UMC UM6116K-2 2Kx8 SRAM x 3
-Other: Cypress CY7C384A 2K Very high speed Gate CMOS FPGA
- Actel A1020A FPGA
- DSW 8 position dipswitch x 2
- LED - Power LED
- VOL - Volume adjust pot
-Connectors to ROM board:
- 25 pins by 6 rows & 25 pins by 4 rows
-
-Rom board:
-+-----------------------+
-| +------------+ |
-| |25x6 row pin| |
-| +------------+ |
-| U15* UI8 |
-| |
-| UA2 UI8A |
-| |
-| U14* UI11 |
-| |
-| UA22 UI11A |
-| |
-| UA24 UI13 |
-| |
-| +---------+ UI13A |
-| | ACTEL | |
-| | A1020A | UI16 |
-| | PL84C | |
-| +---------+ UI16A |
-| +------------+ |
-| |25x4 row pin| |
-| +------------+ |
-+-----------------------+
-
-Note: * denotes unpopulated
-
-Other: Actel A1020A FPGA
-Connectors to main board:
- 25 pins by 6 rows & 25 pins by 4 rows
-
-For One Shot One Kill:
- There is an additional board that connects to the JAMMA connector that has some logic chips,
- a JAMMA edge connector and two 4 pin headers to connect the light guns as well as a 2 wire jumper
- that connects to some ROM board logic chips (assumed) for light gun input. Also the YM3812 sound
- chip appears to be unpopulated for One Shot One Kill.
- The ROM board for One Shot One Kill has 8 additional logic chips along the front edge of the PCB
-
*/
#include "emu.h"
@@ -129,9 +50,9 @@ For One Shot One Kill:
#include "speaker.h"
-u16 oneshot_state::oneshot_in0_word_r()
+READ16_MEMBER(oneshot_state::oneshot_in0_word_r)
{
- const u16 data = m_io_dsw1->read();
+ int data = ioport("DSW1")->read();
switch (data & 0x0c)
{
@@ -152,7 +73,7 @@ u16 oneshot_state::oneshot_in0_word_r()
return data;
}
-u16 oneshot_state::oneshot_gun_x_p1_r()
+READ16_MEMBER(oneshot_state::oneshot_gun_x_p1_r)
{
/* shots must be in a different location to register */
m_p1_wobble ^= 1;
@@ -160,12 +81,12 @@ u16 oneshot_state::oneshot_gun_x_p1_r()
return m_gun_x_p1 ^ m_p1_wobble;
}
-u16 oneshot_state::oneshot_gun_y_p1_r()
+READ16_MEMBER(oneshot_state::oneshot_gun_y_p1_r)
{
return m_gun_y_p1;
}
-u16 oneshot_state::oneshot_gun_x_p2_r()
+READ16_MEMBER(oneshot_state::oneshot_gun_x_p2_r)
{
/* shots must be in a different location to register */
m_p2_wobble ^= 1;
@@ -173,32 +94,34 @@ u16 oneshot_state::oneshot_gun_x_p2_r()
return m_gun_x_p2 ^ m_p2_wobble;
}
-u16 oneshot_state::oneshot_gun_y_p2_r()
+READ16_MEMBER(oneshot_state::oneshot_gun_y_p2_r)
{
return m_gun_y_p2;
}
-void oneshot_state::soundbank_w(u8 data)
+WRITE16_MEMBER(oneshot_state::soundbank_w)
{
- m_oki->set_rom_bank((data & 0x03) ^ 0x03);
+ if (ACCESSING_BITS_0_7)
+ {
+ m_oki->set_rom_bank((data & 0x03) ^ 0x03);
+ }
}
-void oneshot_state::mem_map(address_map &map)
+void oneshot_state::oneshot_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
map(0x080000, 0x087fff).ram();
map(0x0c0000, 0x0c07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
- map(0x120000, 0x120fff).ram().share("spriteram");
- //map(0x13f000, 0x13f000).noprw(); // Unknown read / writes
- map(0x180000, 0x180fff).ram().w(FUNC(oneshot_state::mid_videoram_w)).share("mid_videoram"); // some people , girl etc.
- map(0x181000, 0x181fff).ram().w(FUNC(oneshot_state::fg_videoram_w)).share("fg_videoram"); // credits etc.
- map(0x182000, 0x182fff).ram().w(FUNC(oneshot_state::bg_videoram_w)).share("bg_videoram"); // credits etc.
+ map(0x120000, 0x120fff).ram().share("sprites");
+ map(0x180000, 0x180fff).ram().w(FUNC(oneshot_state::oneshot_mid_videoram_w)).share("mid_videoram"); // some people , girl etc.
+ map(0x181000, 0x181fff).ram().w(FUNC(oneshot_state::oneshot_fg_videoram_w)).share("fg_videoram"); // credits etc.
+ map(0x182000, 0x182fff).ram().w(FUNC(oneshot_state::oneshot_bg_videoram_w)).share("bg_videoram"); // credits etc.
map(0x188000, 0x18800f).writeonly().share("scroll"); // scroll registers
map(0x190003, 0x190003).r("soundlatch", FUNC(generic_latch_8_device::read));
map(0x190011, 0x190011).w("soundlatch", FUNC(generic_latch_8_device::write));
- map(0x190019, 0x190019).w(FUNC(oneshot_state::soundbank_w));
+ map(0x190018, 0x190019).w(FUNC(oneshot_state::soundbank_w));
map(0x190026, 0x190027).r(FUNC(oneshot_state::oneshot_gun_x_p1_r));
map(0x19002e, 0x19002f).r(FUNC(oneshot_state::oneshot_gun_x_p2_r));
map(0x190036, 0x190037).r(FUNC(oneshot_state::oneshot_gun_y_p1_r));
@@ -210,7 +133,7 @@ void oneshot_state::mem_map(address_map &map)
map(0x19c034, 0x19c035).portr("P2");
}
-void oneshot_state::sound_map(address_map &map)
+void oneshot_state::oneshot_sound_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
map(0x8000, 0x8000).rw("soundlatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::write));
@@ -393,8 +316,10 @@ static const gfx_layout oneshot16x16_layout =
RGN_FRAC(1,8),
8,
{ RGN_FRAC(0,8),RGN_FRAC(1,8),RGN_FRAC(2,8),RGN_FRAC(3,8),RGN_FRAC(4,8),RGN_FRAC(5,8),RGN_FRAC(6,8),RGN_FRAC(7,8) },
- { STEP8(0,1), STEP8(8*8,1) },
- { STEP8(0,8), STEP8(8*8*2,8) },
+ { 0,1,2,3,4,5,6,7,
+ 64+0,64+1,64+2,64+3,64+4,64+5,64+6,64+7 },
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
+ 128+0*8, 128+1*8, 128+2*8, 128+3*8, 128+4*8, 128+5*8, 128+6*8, 128+7*8 },
16*16
};
@@ -404,15 +329,15 @@ static const gfx_layout oneshot8x8_layout =
RGN_FRAC(1,8),
8,
{ RGN_FRAC(0,8),RGN_FRAC(1,8),RGN_FRAC(2,8),RGN_FRAC(3,8),RGN_FRAC(4,8),RGN_FRAC(5,8),RGN_FRAC(6,8),RGN_FRAC(7,8) },
- { STEP8(0,1) },
- { STEP8(0,8) },
+ { 0,1,2,3,4,5,6,7 },
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
8*8
};
static GFXDECODE_START( gfx_oneshot )
- GFXDECODE_ENTRY( "gfx1", 0, oneshot16x16_layout, 0, 4 ) /* sprites */
- GFXDECODE_ENTRY( "gfx1", 0, oneshot8x8_layout, 0, 4 ) /* sprites */
+ GFXDECODE_ENTRY( "gfx1", 0, oneshot16x16_layout, 0x00, 4 ) /* sprites */
+ GFXDECODE_ENTRY( "gfx1", 0, oneshot8x8_layout, 0x00, 4 ) /* sprites */
GFXDECODE_END
void oneshot_state::machine_start()
@@ -440,11 +365,11 @@ void oneshot_state::machine_reset()
void oneshot_state::oneshot(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 12_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &oneshot_state::mem_map);
+ M68000(config, m_maincpu, 12000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &oneshot_state::oneshot_map);
m_maincpu->set_vblank_int("screen", FUNC(oneshot_state::irq4_line_hold));
- Z80(config, "audiocpu", 5_MHz_XTAL).set_addrmap(AS_PROGRAM, &oneshot_state::sound_map); // Not verified
+ Z80(config, "audiocpu", 5000000).set_addrmap(AS_PROGRAM, &oneshot_state::oneshot_sound_map);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -462,11 +387,11 @@ void oneshot_state::oneshot(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- ym3812_device &ymsnd(YM3812(config, "ymsnd", 5_MHz_XTAL/2)); // 2.5MHz or 3MHz (12MHz/4)
+ ym3812_device &ymsnd(YM3812(config, "ymsnd", 3500000));
ymsnd.irq_handler().set_inputline("audiocpu", 0);
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
- OKIM6295(config, m_oki, 5_MHz_XTAL/4, okim6295_device::PIN7_HIGH); // 1.25MHz??? - clock frequency & pin 7 not verified
+ OKIM6295(config, m_oki, 1056000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
}
@@ -476,13 +401,6 @@ void oneshot_state::maddonna(machine_config &config)
subdevice<screen_device>("screen")->set_screen_update(FUNC(oneshot_state::screen_update_maddonna));
}
-void oneshot_state::komocomo(machine_config &config)
-{
- oneshot(config);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(oneshot_state::screen_update_komocomo));
-}
-
-
ROM_START( oneshot )
ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 Code */
@@ -493,21 +411,21 @@ ROM_START( oneshot )
ROM_LOAD( "1shot.ua2", 0x00000, 0x010000, CRC(f655b80e) SHA1(2574a812c35801755c187a47f46ccdb0983c5feb) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
- ROM_LOAD( "1shot-ui.16a", 0x000000, 0x080000, CRC(f765f9a2) SHA1(f6c386e0421fcb0e420585dd27d9dad951bb2556) )
- ROM_LOAD( "1shot-ui.13a", 0x080000, 0x080000, CRC(3361b5d8) SHA1(f7db674d479765d4e58fb663aa5e13dde2abcce7) )
- ROM_LOAD( "1shot-ui.11a", 0x100000, 0x080000, CRC(8f8bd027) SHA1(fbec952ab5604c8e20c5e7cfd2844f4fe5441186) )
- ROM_LOAD( "1shot-ui.08a", 0x180000, 0x080000, CRC(254b1701) SHA1(163bfa70508fca20be70dd0af8b768ab6bf211b9) )
- ROM_LOAD( "1shot-ui.16", 0x200000, 0x080000, CRC(ff246b27) SHA1(fef6029030268174ef9648b8f437aeda68475346) )
- ROM_LOAD( "1shot-ui.13", 0x280000, 0x080000, CRC(80342e83) SHA1(2ac2b300382a607a539d2b0982ab596f05be3ad3) )
- ROM_LOAD( "1shot-ui.11", 0x300000, 0x080000, CRC(b8938345) SHA1(318cf0d070db786680a45811bbd765fa37caaf62) )
- ROM_LOAD( "1shot-ui.08", 0x380000, 0x080000, CRC(c9953bef) SHA1(21917a9dcc0afaeec20672ad863d0c9d583369e3) )
+ ROM_LOAD( "1shot-ui.16a",0x000000, 0x080000, CRC(f765f9a2) SHA1(f6c386e0421fcb0e420585dd27d9dad951bb2556) )
+ ROM_LOAD( "1shot-ui.13a",0x080000, 0x080000, CRC(3361b5d8) SHA1(f7db674d479765d4e58fb663aa5e13dde2abcce7) )
+ ROM_LOAD( "1shot-ui.11a",0x100000, 0x080000, CRC(8f8bd027) SHA1(fbec952ab5604c8e20c5e7cfd2844f4fe5441186) )
+ ROM_LOAD( "1shot-ui.08a",0x180000, 0x080000, CRC(254b1701) SHA1(163bfa70508fca20be70dd0af8b768ab6bf211b9) )
+ ROM_LOAD( "1shot-ui.16", 0x200000, 0x080000, CRC(ff246b27) SHA1(fef6029030268174ef9648b8f437aeda68475346) )
+ ROM_LOAD( "1shot-ui.13", 0x280000, 0x080000, CRC(80342e83) SHA1(2ac2b300382a607a539d2b0982ab596f05be3ad3) )
+ ROM_LOAD( "1shot-ui.11", 0x300000, 0x080000, CRC(b8938345) SHA1(318cf0d070db786680a45811bbd765fa37caaf62) )
+ ROM_LOAD( "1shot-ui.08", 0x380000, 0x080000, CRC(c9953bef) SHA1(21917a9dcc0afaeec20672ad863d0c9d583369e3) )
ROM_REGION( 0x100000, "oki", 0 ) /* Samples */
ROM_LOAD( "1shot.u15", 0x000000, 0x080000, CRC(e3759a47) SHA1(1159335924a6d68a0a24bfbe0c9182107f3f05f8) )
ROM_LOAD( "1shot.u14", 0x080000, 0x080000, CRC(222e33f8) SHA1(2665afdf4cb1a29325df62efc1843a4b2cf34a4e) )
ROM_REGION( 0x10000, "user1", 0 )
- ROM_LOAD( "1shot.mb", 0x00000, 0x10000, CRC(6b213183) SHA1(599c59d155d11edb151bfaed1d24ef964462a447) ) // motherboard rom, unknown purpose
+ ROM_LOAD( "1shot.mb", 0x00000, 0x10000, CRC(6b213183) SHA1(599c59d155d11edb151bfaed1d24ef964462a447) ) // motherboard rom, zooming?
ROM_END
ROM_START( maddonna )
@@ -523,54 +441,28 @@ ROM_START( maddonna )
ROM_LOAD( "maddonna.b7", 0x080000, 0x080000, CRC(4920d2ec) SHA1(e72a374bca81ffa4f925326455e007df7227ae08) )
ROM_LOAD( "maddonna.b9", 0x100000, 0x080000, CRC(3a8a3feb) SHA1(832654902963c163644134431fd1221e1895cfec) )
ROM_LOAD( "maddonna.b11", 0x180000, 0x080000, CRC(6f9b7fdf) SHA1(14ced1d43eae3b6db4a0a4c12fb26cbd13eb7428) )
- ROM_LOAD( "maddonna.b6", 0x200000, 0x080000, CRC(b02e9e0e) SHA1(6e527a2bfda0f4f420c10139c75dac2704e08d08) )
- ROM_LOAD( "maddonna.b8", 0x280000, 0x080000, CRC(03f1de40) SHA1(bb0c0525155404c0740ac5f048f71ae7651a5941) )
- ROM_LOAD( "maddonna.b10", 0x300000, 0x080000, CRC(87936423) SHA1(dda42f3685427edad7686d9712ff07d2fd9bf57e) )
- ROM_LOAD( "maddonna.b12", 0x380000, 0x080000, CRC(879ab23c) SHA1(5288016542a10e60ccb28a930d8dfe4db41c6fc6) )
+ ROM_LOAD( "maddonna.b6", 0x200000, 0x080000, CRC(b02e9e0e) SHA1(6e527a2bfda0f4f420c10139c75dac2704e08d08) )
+ ROM_LOAD( "maddonna.b8", 0x280000, 0x080000, CRC(03f1de40) SHA1(bb0c0525155404c0740ac5f048f71ae7651a5941) )
+ ROM_LOAD( "maddonna.b10", 0x300000, 0x080000, CRC(87936423) SHA1(dda42f3685427edad7686d9712ff07d2fd9bf57e) )
+ ROM_LOAD( "maddonna.b12", 0x380000, 0x080000, CRC(879ab23c) SHA1(5288016542a10e60ccb28a930d8dfe4db41c6fc6) )
ROM_REGION( 0x100000, "oki", ROMREGION_ERASE00 ) /* Samples */
/* no samples for this game */
ROM_REGION( 0x10000, "user1", 0 )
- ROM_LOAD( "x1", 0x00000, 0x10000, CRC(6b213183) SHA1(599c59d155d11edb151bfaed1d24ef964462a447) ) // motherboard rom, unknown purpose
+ ROM_LOAD( "x1", 0x00000, 0x10000, CRC(6b213183) SHA1(599c59d155d11edb151bfaed1d24ef964462a447) ) // motherboard rom, zooming?
ROM_END
-ROM_START( komocomo ) // ROM PCB marked : GAME B/D TOPnew1 002
- ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 Code */
- ROM_LOAD16_BYTE( "11.ua24", 0x00000, 0x10000, CRC(31c18579) SHA1(da97207afced0cf844b111752e9f634a49bc7115) )
- ROM_LOAD16_BYTE( "10.ua22", 0x00001, 0x10000, CRC(fa839c0f) SHA1(53aee489e694e5777bd5ac20aa2b51c2c9e5493a) )
-
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 Code */
- ROM_LOAD( "9.ua2", 0x00000, 0x010000, CRC(f2080071) SHA1(68cbae9559879b2dc19c41a7efbd13ab4a569d3f) )
-
- ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
- ROM_LOAD( "8.ui16a", 0x000000, 0x080000, CRC(11ac04ab) SHA1(321a7af3bdf47fa0ec1f7bbd758dd1023b409a06) )
- ROM_LOAD( "6.ui13a", 0x080000, 0x080000, CRC(bb498592) SHA1(f7946a40d35ae0726860dd65f1aaf1c145d51afd) )
- ROM_LOAD( "4.ui11a", 0x100000, 0x080000, CRC(d22dd6d8) SHA1(f466167d088275cdc973535401895272d48c8079) )
- ROM_LOAD( "2.ui8a", 0x180000, 0x080000, CRC(cc5360f8) SHA1(61670b970a71af8f008052a98c10127f8b412a85) )
- ROM_LOAD( "7.ui16", 0x200000, 0x080000, CRC(dc71de75) SHA1(adc8f51acf34e41b94a740dc2b7a66b23a7ffcf5) )
- ROM_LOAD( "5.ui13", 0x280000, 0x080000, CRC(56bc3719) SHA1(947d7fe45273052fbd666ad8e9bef9818c6e3104) )
- ROM_LOAD( "3.ui11", 0x300000, 0x080000, CRC(646073d1) SHA1(87593ccbe9419da2ea70763784acc12221b5bed8) )
- ROM_LOAD( "1.ui8", 0x380000, 0x080000, CRC(58ba6622) SHA1(ee5a759ab22a663da5bba1db5fec23958bfee771) )
-
- ROM_REGION( 0x100000, "oki", ROMREGION_ERASE00 ) /* Samples */
- /* no samples for this game */
-
- ROM_REGION( 0x10000, "user1", 0 )
- ROM_LOAD( "12.bin", 0x00000, 0x10000, CRC(6b213183) SHA1(599c59d155d11edb151bfaed1d24ef964462a447) ) // motherboard rom, unknown purpose
-ROM_END
-
-
-/* The tiles containing the copyright string (tiles 0x3979 onwards) differ in this set.
- Both versions have tiles containing the 'Tuning - Germany' copyright messages, but
- the parent set has additional tiles containing the '(c)Copyright 1995' which is shown
- on the title screen.
-
- The lack of these tiles in this set causes all subsequent tiles to be shifted. It is
- likely that the correct program roms for this set either don't show '(c)Copyright 1995'
- or display it using the regular font instead. */
+// The tiles containing the copyright string (tiles 0x3979 onwards) differ in this set.
+// Both versions have tiles containing the 'Tuning - Germany' copyright messages, but
+// the parent set has additional tiles containing the '(c)Copyright 1995' which is shown
+// on the title screen.
+//
+// The lack of these tiles in this set causes all subsequent tiles to be shifted. It is
+// likely that the correct program roms for this set either don't show '(c)Copyright 1995'
+// or display it using the regular font instead.
-ROM_START( maddonnab )
+ROM_START( maddonnb )
ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 Code */
/* program roms missing in this dump, gfx don't seem 100% correct for other ones */
ROM_LOAD16_BYTE( "maddonnb.b16", 0x00000, 0x20000, NO_DUMP )
@@ -593,13 +485,11 @@ ROM_START( maddonnab )
/* no samples for this game */
ROM_REGION( 0x10000, "user1", 0 )
- ROM_LOAD( "x1", 0x00000, 0x10000, CRC(6b213183) SHA1(599c59d155d11edb151bfaed1d24ef964462a447) ) // motherboard rom, unknown purpose
+ ROM_LOAD( "x1", 0x00000, 0x10000, CRC(6b213183) SHA1(599c59d155d11edb151bfaed1d24ef964462a447) ) // motherboard rom, zooming?
ROM_END
-// all sets have a large (unused) PROMAT logo in them
-GAME( 1995, maddonna, 0, maddonna, maddonna, oneshot_state, empty_init, ROT0, "Promat (Tuning license)", "Mad Donna (Tuning, set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, maddonnab,maddonna, maddonna, maddonna, oneshot_state, empty_init, ROT0, "Promat (Tuning license)", "Mad Donna (Tuning, set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1995, komocomo, maddonna, komocomo, maddonna, oneshot_state, empty_init, ROT0, "bootleg", "Komo Como (Topmar, bootleg?)", MACHINE_SUPPORTS_SAVE ) // shows TOPMAR (an anagram of PROMAT) on the side, possibly a hack of the original PROMAT version
+GAME( 1995, maddonna, 0, maddonna, maddonna, oneshot_state, empty_init, ROT0, "Tuning", "Mad Donna (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, maddonnb, maddonna, maddonna, maddonna, oneshot_state, empty_init, ROT0, "Tuning", "Mad Donna (set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
GAME( 1996, oneshot, 0, oneshot, oneshot , oneshot_state, empty_init, ROT0, "Promat", "One Shot One Kill", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/opwolf.cpp b/src/mame/drivers/opwolf.cpp
index 432b2145c76..71f6202ef6c 100644
--- a/src/mame/drivers/opwolf.cpp
+++ b/src/mame/drivers/opwolf.cpp
@@ -933,35 +933,35 @@ TIMER_DEVICE_CALLBACK_MEMBER(opwolf_state::cchip_irq_clear_cb)
// MACHINE DEFINTIONS
//**************************************************************************
-void opwolf_state::opwolf(machine_config &config)
-{
+MACHINE_CONFIG_START(opwolf_state::opwolf)
+
/* basic machine hardware */
- M68000(config, m_maincpu, CPU_CLOCK); /* 8 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolf_map);
- m_maincpu->set_vblank_int("screen", FUNC(opwolf_state::interrupt));
+ MCFG_DEVICE_ADD("maincpu", M68000, CPU_CLOCK ) /* 8 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(opwolf_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", opwolf_state, interrupt)
- Z80(config, m_audiocpu, SOUND_CPU_CLOCK); /* 4 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolf_sound_z80_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CPU_CLOCK ) /* 4 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(opwolf_sound_z80_map)
TAITO_CCHIP(config, m_cchip, 12_MHz_XTAL); /* 12MHz measured on pin 20 */
m_cchip->in_pb_callback().set_ioport("IN0");
m_cchip->in_pc_callback().set_ioport("IN1");
m_cchip->out_pb_callback().set(FUNC(opwolf_state::counters_w));
- TIMER(config, "cchip_irq_clear").configure_generic(FUNC(opwolf_state::cchip_irq_clear_cb));
+ MCFG_TIMER_DRIVER_ADD("cchip_irq_clear", opwolf_state, cchip_irq_clear_cb)
- config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
+ MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
MCFG_MACHINE_RESET_OVERRIDE(opwolf_state,opwolf)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(opwolf_state::screen_update_opwolf));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(opwolf_state, screen_update_opwolf)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_opwolf);
PALETTE(config, "palette").set_format(palette_device::xRGB_444, 2048);
@@ -984,58 +984,58 @@ void opwolf_state::opwolf(machine_config &config)
ymsnd.add_route(0, "lspeaker", 1.0);
ymsnd.add_route(1, "rspeaker", 1.0);
- MSM5205(config, m_msm[0], 384000);
- m_msm[0]->vck_legacy_callback().set(FUNC(opwolf_state::msm5205_vck_w<0>));
- m_msm[0]->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
- m_msm[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_msm[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("msm0", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<0>))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
- MSM5205(config, m_msm[1], 384000);
- m_msm[1]->vck_legacy_callback().set(FUNC(opwolf_state::msm5205_vck_w<1>));
- m_msm[1]->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
- m_msm[1]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_msm[1]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("msm1", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<1>))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
pc060ha_device &ciu(PC060HA(config, "ciu", 0));
ciu.set_master_tag(m_maincpu);
ciu.set_slave_tag(m_audiocpu);
-}
+MACHINE_CONFIG_END
-void opwolf_state::opwolfp(machine_config &config)
-{
+MACHINE_CONFIG_START(opwolf_state::opwolfp)
opwolf(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolfp_map);
+ MCFG_DEVICE_MODIFY("maincpu") /* 8 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(opwolfp_map)
- config.device_remove("cchip");
- config.device_remove("cchip_irq_clear");
-}
+ MCFG_DEVICE_REMOVE("cchip")
+ MCFG_DEVICE_REMOVE("cchip_irq_clear")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(opwolf_state::opwolfb) /* OSC clocks unknown for the bootleg, but changed to match original sets */
-void opwolf_state::opwolfb(machine_config &config) /* OSC clocks unknown for the bootleg, but changed to match original sets */
-{
/* basic machine hardware */
- M68000(config, m_maincpu, CPU_CLOCK); /* 8 MHz ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolfb_map);
- m_maincpu->set_vblank_int("screen", FUNC(opwolf_state::irq5_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, CPU_CLOCK ) /* 8 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(opwolfb_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", opwolf_state, irq5_line_hold)
- Z80(config, m_audiocpu, SOUND_CPU_CLOCK); /* 4 MHz ??? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolf_sound_z80_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CPU_CLOCK ) /* 4 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(opwolf_sound_z80_map)
- z80_device &sub(Z80(config, "sub", SOUND_CPU_CLOCK)); /* 4 MHz ??? */
- sub.set_addrmap(AS_PROGRAM, &opwolf_state::opwolfb_sub_z80_map);
- sub.set_vblank_int("screen", FUNC(opwolf_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("sub", Z80, SOUND_CPU_CLOCK ) /* 4 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(opwolfb_sub_z80_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", opwolf_state, irq0_line_hold)
- config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
+ MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(opwolf_state::screen_update_opwolf));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(opwolf_state, screen_update_opwolf)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_opwolfb);
PALETTE(config, "palette").set_format(palette_device::xRGB_444, 2048);
@@ -1058,22 +1058,22 @@ void opwolf_state::opwolfb(machine_config &config) /* OSC clocks unknown for the
ymsnd.add_route(0, "lspeaker", 1.0);
ymsnd.add_route(1, "rspeaker", 1.0);
- MSM5205(config, m_msm[0], 384000);
- m_msm[0]->vck_legacy_callback().set(FUNC(opwolf_state::msm5205_vck_w<0>));
- m_msm[0]->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
- m_msm[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_msm[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("msm0", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<0>))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
- MSM5205(config, m_msm[1], 384000);
- m_msm[1]->vck_legacy_callback().set(FUNC(opwolf_state::msm5205_vck_w<1>));
- m_msm[1]->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
- m_msm[1]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_msm[1]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("msm1", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<1>))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
pc060ha_device &ciu(PC060HA(config, "ciu", 0));
ciu.set_master_tag(m_maincpu);
ciu.set_slave_tag(m_audiocpu);
-}
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/orao.cpp b/src/mame/drivers/orao.cpp
index 7d7bf272614..f8f98b1934e 100644
--- a/src/mame/drivers/orao.cpp
+++ b/src/mame/drivers/orao.cpp
@@ -171,20 +171,19 @@ static INPUT_PORTS_START( orao )
INPUT_PORTS_END
/* Machine driver */
-void orao_state::orao(machine_config &config)
-{
+MACHINE_CONFIG_START(orao_state::orao)
/* basic machine hardware */
- M6502(config, m_maincpu, 1000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &orao_state::orao_mem);
+ MCFG_DEVICE_ADD("maincpu", M6502, 1000000)
+ MCFG_DEVICE_PROGRAM_MAP(orao_mem)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 0, 256-1);
- screen.set_screen_update(FUNC(orao_state::screen_update_orao));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(orao_state, screen_update_orao)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -194,13 +193,13 @@ void orao_state::orao(machine_config &config)
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(orao_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
- m_cassette->set_interface("orao_cass");
+ MCFG_CASSETTE_ADD( "cassette")
+ MCFG_CASSETTE_FORMATS(orao_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
+ MCFG_CASSETTE_INTERFACE("orao_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("orao");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list","orao")
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( orao )
diff --git a/src/mame/drivers/orbit.cpp b/src/mame/drivers/orbit.cpp
index 1cd1a45117e..41097621386 100644
--- a/src/mame/drivers/orbit.cpp
+++ b/src/mame/drivers/orbit.cpp
@@ -265,14 +265,14 @@ void orbit_state::machine_reset()
*
*************************************/
-void orbit_state::orbit(machine_config &config)
-{
+MACHINE_CONFIG_START(orbit_state::orbit)
+
/* basic machine hardware */
- M6800(config, m_maincpu, MASTER_CLOCK / 16);
- m_maincpu->set_addrmap(AS_PROGRAM, &orbit_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(orbit_state::interrupt));
+ MCFG_DEVICE_ADD(m_maincpu, M6800, MASTER_CLOCK / 16)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", orbit_state, interrupt)
- TIMER(config, "32v").configure_scanline(FUNC(orbit_state::nmi_32v), "screen", 0, 32);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("32v", orbit_state, nmi_32v, "screen", 0, 32)
F9334(config, m_latch); // M6
/* BIT0 => UNUSED */
@@ -291,12 +291,12 @@ void orbit_state::orbit(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MASTER_CLOCK*2, 384*2, 0, 256*2, 261*2, 0, 240*2);
- m_screen->set_screen_update(FUNC(orbit_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK*2, 384*2, 0, 256*2, 261*2, 0, 240*2)
+ MCFG_SCREEN_UPDATE_DRIVER(orbit_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_orbit);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_orbit)
PALETTE(config, m_palette, palette_device::MONOCHROME);
@@ -304,10 +304,10 @@ void orbit_state::orbit(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- DISCRETE(config, m_discrete, orbit_discrete);
- m_discrete->add_route(0, "lspeaker", 1.0);
- m_discrete->add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD(m_discrete, DISCRETE, orbit_discrete)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/oric.cpp b/src/mame/drivers/oric.cpp
index f37c11748c0..2f931263de7 100644
--- a/src/mame/drivers/oric.cpp
+++ b/src/mame/drivers/oric.cpp
@@ -87,7 +87,6 @@ public:
TIMER_CALLBACK_MEMBER(update_tape);
virtual void machine_start() override;
- virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update_oric(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(vblank_w);
@@ -307,11 +306,11 @@ void oric_state::update_psg(address_space &space)
{
if(m_via_ca2)
if(m_via_cb2)
- m_psg->address_w(m_via_a);
+ m_psg->address_w(space, 0, m_via_a);
else
- m_via->write_pa(space, 0, m_psg->data_r());
+ m_via->write_pa(space, 0, m_psg->data_r(space, 0));
else if(m_via_cb2)
- m_psg->data_w(m_via_a);
+ m_psg->data_w(space, 0, m_via_a);
}
void oric_state::update_irq()
@@ -412,11 +411,6 @@ void oric_state::machine_start()
}
-void oric_state::machine_reset()
-{
- m_tape_timer->adjust(attotime::from_hz(4800), 0, attotime::from_hz(4800));
-}
-
void telestrat_state::machine_start()
{
machine_start_common();
@@ -434,7 +428,6 @@ void telestrat_state::machine_start()
void telestrat_state::machine_reset()
{
- m_tape_timer->adjust(attotime::from_hz(4800), 0, attotime::from_hz(4800));
m_port_314 = 0x00;
m_via2_a = 0xff;
remap();
diff --git a/src/mame/drivers/orion.cpp b/src/mame/drivers/orion.cpp
index d3c78eb099e..fdde04dd27a 100644
--- a/src/mame/drivers/orion.cpp
+++ b/src/mame/drivers/orion.cpp
@@ -123,7 +123,7 @@ void orion_state::orion128(machine_config &config)
cassette.set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
cassette.set_interface("orion_cass");
- SOFTWARE_LIST(config, "cass_list").set_original("orion_cass");
+ SOFTWARE_LIST(config, "cass_list").set_type("orion_cass", SOFTWARE_LIST_ORIGINAL_SYSTEM);
FD1793(config, m_fdc, 8_MHz_XTAL / 8);
@@ -131,13 +131,13 @@ void orion_state::orion128(machine_config &config)
FLOPPY_CONNECTOR(config, "fd1", "525qd", FLOPPY_525_QD, true, orion_floppy_formats);
FLOPPY_CONNECTOR(config, "fd2", "525qd", FLOPPY_525_QD, true, orion_floppy_formats);
FLOPPY_CONNECTOR(config, "fd3", "525qd", FLOPPY_525_QD, true, orion_floppy_formats);
- SOFTWARE_LIST(config, "flop_list").set_original("orion_flop");
+ SOFTWARE_LIST(config, "flop_list").set_type("orion_flop", SOFTWARE_LIST_ORIGINAL_SYSTEM);
auto &cart(GENERIC_CARTSLOT(config, "cartslot"));
generic_plain_slot(cart);
cart.set_interface("orion_cart");
- SOFTWARE_LIST(config, "cart_list").set_original("orion_cart");
+ SOFTWARE_LIST(config, "cart_list").set_type("orion_cart", SOFTWARE_LIST_ORIGINAL_SYSTEM);
/* internal ram */
RAM(config, m_ram);
@@ -199,7 +199,7 @@ void orion_z80_state::orionz80(machine_config &config)
cassette.set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
cassette.set_interface("orion_cass");
- SOFTWARE_LIST(config, "cass_list").set_original("orion_cass");
+ SOFTWARE_LIST(config, "cass_list").set_type("orion_cass", SOFTWARE_LIST_ORIGINAL_SYSTEM);
FD1793(config, m_fdc, 8_MHz_XTAL / 8);
@@ -207,13 +207,13 @@ void orion_z80_state::orionz80(machine_config &config)
FLOPPY_CONNECTOR(config, "fd1", "525qd", FLOPPY_525_QD, true, orion_floppy_formats);
FLOPPY_CONNECTOR(config, "fd2", "525qd", FLOPPY_525_QD, true, orion_floppy_formats);
FLOPPY_CONNECTOR(config, "fd3", "525qd", FLOPPY_525_QD, true, orion_floppy_formats);
- SOFTWARE_LIST(config, "flop_list").set_original("orion_flop");
+ SOFTWARE_LIST(config, "flop_list").set_type("orion_flop", SOFTWARE_LIST_ORIGINAL_SYSTEM);
auto &cart(GENERIC_CARTSLOT(config, "cartslot"));
generic_plain_slot(cart);
cart.set_interface("orion_cart");
- SOFTWARE_LIST(config, "cart_list").set_original("orion_cart");
+ SOFTWARE_LIST(config, "cart_list").set_type("orion_cart", SOFTWARE_LIST_ORIGINAL_SYSTEM);
/* internal ram */
RAM(config, m_ram);
@@ -271,7 +271,7 @@ void orion_pro_state::orionpro(machine_config &config)
cassette.set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
cassette.set_interface("orion_cass");
- SOFTWARE_LIST(config, "cass_list").set_original("orion_cass");
+ SOFTWARE_LIST(config, "cass_list").set_type("orion_cass", SOFTWARE_LIST_ORIGINAL_SYSTEM);
FD1793(config, m_fdc, 8_MHz_XTAL / 8);
@@ -279,14 +279,13 @@ void orion_pro_state::orionpro(machine_config &config)
FLOPPY_CONNECTOR(config, "fd1", "525qd", FLOPPY_525_QD, true, orion_floppy_formats);
FLOPPY_CONNECTOR(config, "fd2", "525qd", FLOPPY_525_QD, true, orion_floppy_formats);
FLOPPY_CONNECTOR(config, "fd3", "525qd", FLOPPY_525_QD, true, orion_floppy_formats);
- SOFTWARE_LIST(config, "flop_list").set_original("orionpro_flop");
- SOFTWARE_LIST(config, "flop128_list").set_compatible("orion_flop");
+ SOFTWARE_LIST(config, "flop_list").set_type("orion_flop", SOFTWARE_LIST_ORIGINAL_SYSTEM);
auto &cart(GENERIC_CARTSLOT(config, "cartslot"));
generic_plain_slot(cart);
cart.set_interface("orion_cart");
- SOFTWARE_LIST(config, "cart_list").set_original("orion_cart");
+ SOFTWARE_LIST(config, "cart_list").set_type("orion_cart", SOFTWARE_LIST_ORIGINAL_SYSTEM);
/* internal ram */
RAM(config, m_ram);
diff --git a/src/mame/drivers/osbexec.cpp b/src/mame/drivers/osbexec.cpp
index 09303009a4f..0c2b1e31d79 100644
--- a/src/mame/drivers/osbexec.cpp
+++ b/src/mame/drivers/osbexec.cpp
@@ -528,8 +528,7 @@ static const z80_daisy_config osbexec_daisy_config[] =
};
-void osbexec_state::osbexec(machine_config &config)
-{
+MACHINE_CONFIG_START(osbexec_state::osbexec)
Z80(config, m_maincpu, MAIN_CLOCK/6);
m_maincpu->set_addrmap(AS_PROGRAM, &osbexec_state::osbexec_mem);
m_maincpu->set_addrmap(AS_IO, &osbexec_state::osbexec_io);
@@ -546,7 +545,8 @@ void osbexec_state::osbexec(machine_config &config)
PALETTE(config, "palette", palette_device::MONOCHROME_HIGHLIGHT);
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD(m_speaker, SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
PIA6821(config, m_pia[0], 0);
m_pia[0]->readpa_handler().set(FUNC(osbexec_state::osbexec_pia0_a_r));
@@ -558,7 +558,7 @@ void osbexec_state::osbexec(machine_config &config)
m_pia[0]->irqa_handler().set("mainirq", FUNC(input_merger_device::in_w<0>));
m_pia[0]->irqb_handler().set("mainirq", FUNC(input_merger_device::in_w<1>));
- PIA6821(config, m_pia[1], 0);
+ MCFG_DEVICE_ADD(m_pia[1], PIA6821, 0)
m_pia[1]->irqa_handler().set("mainirq", FUNC(input_merger_device::in_w<2>));
m_pia[1]->irqb_handler().set("mainirq", FUNC(input_merger_device::in_w<3>));
@@ -601,15 +601,15 @@ void osbexec_state::osbexec(machine_config &config)
MB8877(config, m_mb8877, MAIN_CLOCK/24);
m_mb8877->intrq_wr_callback().set(m_pia[1], FUNC(pia6821_device::cb1_w));
- FLOPPY_CONNECTOR(config, "mb8877:0", osborne2_floppies, "525ssdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "mb8877:1", osborne2_floppies, "525ssdd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("mb8877:0", osborne2_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("mb8877:1", osborne2_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("136K"); /* 128KB Main RAM + RAM in ROM bank (8) */
/* software lists */
- SOFTWARE_LIST(config, "flop_list").set_original("osborne2");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "osborne2")
+MACHINE_CONFIG_END
ROM_START( osbexec )
diff --git a/src/mame/drivers/othello.cpp b/src/mame/drivers/othello.cpp
index b7588ab04c4..7e2d26959c6 100644
--- a/src/mame/drivers/othello.cpp
+++ b/src/mame/drivers/othello.cpp
@@ -251,14 +251,14 @@ WRITE8_MEMBER(othello_state::ack_w)
WRITE8_MEMBER(othello_state::ay_address_w)
{
- if (m_ay_select & 1) m_ay[0]->address_w(data);
- if (m_ay_select & 2) m_ay[1]->address_w(data);
+ if (m_ay_select & 1) m_ay[0]->address_w(space, 0, data);
+ if (m_ay_select & 2) m_ay[1]->address_w(space, 0, data);
}
WRITE8_MEMBER(othello_state::ay_data_w)
{
- if (m_ay_select & 1) m_ay[0]->data_w(data);
- if (m_ay_select & 2) m_ay[1]->data_w(data);
+ if (m_ay_select & 1) m_ay[0]->data_w(space, 0, data);
+ if (m_ay_select & 2) m_ay[1]->data_w(space, 0, data);
}
void othello_state::audio_map(address_map &map)
@@ -435,6 +435,7 @@ void othello_state::othello(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.3); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/otomedius.cpp b/src/mame/drivers/otomedius.cpp
index 04b1646fe53..0e71a41f04c 100644
--- a/src/mame/drivers/otomedius.cpp
+++ b/src/mame/drivers/otomedius.cpp
@@ -67,20 +67,20 @@ void konami_pc_state::machine_reset()
{
}
-void konami_pc_state::konami_pc(machine_config &config)
-{
+MACHINE_CONFIG_START(konami_pc_state::konami_pc)
+
/* basic machine hardware */
- PENTIUM3(config, m_maincpu, 100000000); // not correct, but why bother?
- m_maincpu->set_addrmap(AS_PROGRAM, &konami_pc_state::konami_pc_map);
+ MCFG_DEVICE_ADD("maincpu", PENTIUM3, 100000000) // not correct, but why bother?
+ MCFG_DEVICE_PROGRAM_MAP(konami_pc_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_screen_update(FUNC(konami_pc_state::screen_update_konami_pc));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(konami_pc_state, screen_update_konami_pc)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/p112.cpp b/src/mame/drivers/p112.cpp
index 7b4c6cb4ad3..178c57f5d9d 100644
--- a/src/mame/drivers/p112.cpp
+++ b/src/mame/drivers/p112.cpp
@@ -90,24 +90,25 @@ uint32_t p112_state::screen_update_p112(screen_device &screen, bitmap_ind16 &bit
return 0;
}
-void p112_state::p112(machine_config &config)
-{
+MACHINE_CONFIG_START(p112_state::p112)
/* basic machine hardware */
- Z180(config, m_maincpu, XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &p112_state::p112_mem);
- m_maincpu->set_addrmap(AS_IO, &p112_state::p112_io);
+ MCFG_DEVICE_ADD("maincpu",Z180, XTAL(16'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(p112_mem)
+ MCFG_DEVICE_IO_MAP(p112_io)
+
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(240, 320);
- screen.set_visarea(0, 240-1, 0, 320-1);
- screen.set_screen_update(FUNC(p112_state::screen_update_p112));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(240, 320)
+ MCFG_SCREEN_VISIBLE_AREA(0, 240-1, 0, 320-1)
+ MCFG_SCREEN_UPDATE_DRIVER(p112_state, screen_update_p112)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
-}
+
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( p112 )
diff --git a/src/mame/drivers/p2000t.cpp b/src/mame/drivers/p2000t.cpp
index 1f5a0fccc51..67d0cb832a7 100644
--- a/src/mame/drivers/p2000t.cpp
+++ b/src/mame/drivers/p2000t.cpp
@@ -221,50 +221,49 @@ READ8_MEMBER( p2000t_state::videoram_r )
}
/* Machine definition */
-void p2000t_state::p2000t(machine_config &config)
-{
+MACHINE_CONFIG_START(p2000t_state::p2000t)
/* basic machine hardware */
- Z80(config, m_maincpu, 2500000);
- m_maincpu->set_addrmap(AS_PROGRAM, &p2000t_state::p2000t_mem);
- m_maincpu->set_addrmap(AS_IO, &p2000t_state::p2000t_io);
- m_maincpu->set_vblank_int("screen", FUNC(p2000t_state::p2000_interrupt));
+ MCFG_DEVICE_ADD("maincpu", Z80, 2500000)
+ MCFG_DEVICE_PROGRAM_MAP(p2000t_mem)
+ MCFG_DEVICE_IO_MAP(p2000t_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", p2000t_state, p2000_interrupt)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(40 * 12, 24 * 20);
- screen.set_visarea(0, 40 * 12 - 1, 0, 24 * 20 - 1);
- screen.set_screen_update("saa5050", FUNC(saa5050_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(40 * 12, 24 * 20)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40 * 12 - 1, 0, 24 * 20 - 1)
+ MCFG_SCREEN_UPDATE_DEVICE("saa5050", saa5050_device, screen_update)
- saa5050_device &saa5050(SAA5050(config, "saa5050", 6000000));
- saa5050.d_cb().set(FUNC(p2000t_state::videoram_r));
- saa5050.set_screen_size(40, 24, 80);
+ MCFG_DEVICE_ADD("saa5050", SAA5050, 6000000)
+ MCFG_SAA5050_D_CALLBACK(READ8(*this, p2000t_state, videoram_r))
+ MCFG_SAA5050_SCREEN_SIZE(40, 24, 80)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
/* Machine definition */
-void p2000m_state::p2000m(machine_config &config)
-{
+MACHINE_CONFIG_START(p2000m_state::p2000m)
/* basic machine hardware */
- Z80(config, m_maincpu, 2500000);
- m_maincpu->set_addrmap(AS_PROGRAM, &p2000m_state::p2000m_mem);
- m_maincpu->set_addrmap(AS_IO, &p2000m_state::p2000t_io);
- m_maincpu->set_vblank_int("screen", FUNC(p2000m_state::p2000_interrupt));
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD("maincpu", Z80, 2500000)
+ MCFG_DEVICE_PROGRAM_MAP(p2000m_mem)
+ MCFG_DEVICE_IO_MAP(p2000t_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", p2000m_state, p2000_interrupt)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(80 * 12, 24 * 20);
- screen.set_visarea(0, 80 * 12 - 1, 0, 24 * 20 - 1);
- screen.set_screen_update(FUNC(p2000m_state::screen_update_p2000m));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(80 * 12, 24 * 20)
+ MCFG_SCREEN_VISIBLE_AREA(0, 80 * 12 - 1, 0, 24 * 20 - 1)
+ MCFG_SCREEN_UPDATE_DRIVER(p2000m_state, screen_update_p2000m)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_p2000m);
PALETTE(config, m_palette, FUNC(p2000m_state::p2000m_palette), 4);
@@ -272,7 +271,7 @@ void p2000m_state::p2000m(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
ROM_START(p2000t)
diff --git a/src/mame/drivers/p8k.cpp b/src/mame/drivers/p8k.cpp
index 79efb9f0aae..a5302baf1aa 100644
--- a/src/mame/drivers/p8k.cpp
+++ b/src/mame/drivers/p8k.cpp
@@ -416,8 +416,7 @@ GFXDECODE_END
****************************************************************************/
-void p8k_state::p8k(machine_config &config)
-{
+MACHINE_CONFIG_START(p8k_state::p8k)
/* basic machine hardware */
z80_device& maincpu(Z80(config, "maincpu", 16_MHz_XTAL / 4));
maincpu.set_daisy_config(p8k_daisy_chain);
@@ -474,25 +473,25 @@ void p8k_state::p8k(machine_config &config)
m_pio2->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
m_pio2->in_pa_callback().set_ioport("DSW");
- I8272A(config, m_i8272, 16_MHz_XTAL / 2, true);
+ I8272A(config, m_i8272, 16_MHz_XTAL / 8, true);
m_i8272->drq_wr_callback().set("dma", FUNC(z80dma_device::rdy_w));
- FLOPPY_CONNECTOR(config, "i8272:0", p8k_floppies, "525hd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "i8272:1", p8k_floppies, "525hd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("i8272:0", p8k_floppies, "525hd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("i8272:1", p8k_floppies, "525hd", floppy_image_device::default_floppy_formats)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, "beeper", 3250).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+ MCFG_DEVICE_ADD("beeper", BEEP, 3250)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
-void p8k_state::p8k_16(machine_config &config)
-{
+MACHINE_CONFIG_START(p8k_state::p8k_16)
/* basic machine hardware */
- Z8001(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &p8k_state::p8k_16_memmap);
- m_maincpu->set_addrmap(AS_DATA, &p8k_state::p8k_16_datamap);
- m_maincpu->set_addrmap(AS_IO, &p8k_state::p8k_16_iomap);
- m_maincpu->set_irq_acknowledge_callback("p8k_16_daisy", FUNC(p8k_16_daisy_device::irq_callback));
+ MCFG_DEVICE_ADD("maincpu", Z8001, XTAL(4'000'000) )
+ MCFG_DEVICE_PROGRAM_MAP(p8k_16_memmap)
+ MCFG_DEVICE_DATA_MAP(p8k_16_datamap)
+ MCFG_DEVICE_IO_MAP(p8k_16_iomap)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("p8k_16_daisy", p8k_16_daisy_device, irq_callback)
P8K_16_DAISY(config, m_daisy, 0);
m_daisy->set_daisy_config(p8k_16_daisy_chain);
@@ -532,8 +531,9 @@ void p8k_state::p8k_16(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, "beeper", 3250).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+ MCFG_DEVICE_ADD("beeper", BEEP, 3250)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( p8000 )
diff --git a/src/mame/drivers/pachifev.cpp b/src/mame/drivers/pachifev.cpp
index f10fb475d3e..dda8e0b9c67 100644
--- a/src/mame/drivers/pachifev.cpp
+++ b/src/mame/drivers/pachifev.cpp
@@ -155,10 +155,10 @@ void pachifev_state::pachifev_map(address_map &map)
map(0xff04, 0xff04).portr("DSW1");
map(0xff06, 0xff06).portr("DSW2");
map(0xff08, 0xff08).portr("DSW3");
- map(0xff10, 0xff10).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write));
- map(0xff12, 0xff12).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));
- map(0xff20, 0xff20).w("y2404_1", FUNC(y2404_device::write));
- map(0xff30, 0xff30).w("y2404_2", FUNC(y2404_device::write));
+ map(0xff10, 0xff10).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0xff12, 0xff12).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
+ map(0xff20, 0xff20).w("y2404_1", FUNC(y2404_device::command_w));
+ map(0xff30, 0xff30).w("y2404_2", FUNC(y2404_device::command_w));
map(0xff40, 0xff40).w(FUNC(pachifev_state::controls_w));
map(0xff50, 0xff50).nopw(); /* unknown */
map(0xfffa, 0xfffb).noprw(); /* decrementer */
@@ -167,7 +167,7 @@ void pachifev_state::pachifev_map(address_map &map)
void pachifev_state::pachifev_cru(address_map &map)
{
- map(0x0000, 0x0001).r(FUNC(pachifev_state::controls_r));
+ map(0x000, 0x000).r(FUNC(pachifev_state::controls_r));
}
@@ -350,8 +350,8 @@ void pachifev_state::machine_start()
save_item(NAME(m_cnt));
}
-void pachifev_state::pachifev(machine_config &config)
-{
+MACHINE_CONFIG_START(pachifev_state::pachifev)
+
// CPU TMS9995, standard variant; no line connections
TMS9995(config, m_maincpu, XTAL(12'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &pachifev_state::pachifev_map);
@@ -368,14 +368,16 @@ void pachifev_state::pachifev(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
#if USE_MSM
- msm5205_device &adpcm(MSM5205(config, "adpcm", XTAL(384'000))); /* guess */
- adpcm.vck_legacy_callback().set(FUNC(pachifev_state::pf_adpcm_int)); /* interrupt function */
- adpcm.set_prescaler_selector(msm5205_device::S48_4B); /* 8kHz */
- adpcm.add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("adpcm", MSM5205, XTAL(384'000)) /* guess */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, pachifev_state,pf_adpcm_int)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8kHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
#endif
- Y2404(config, "y2404_1", XTAL(10'738'635)/3).add_route(ALL_OUTPUTS, "mono", 0.30); /* guess */
- Y2404(config, "y2404_2", XTAL(10'738'635)/3).add_route(ALL_OUTPUTS, "mono", 0.30); /* guess */
-}
+ MCFG_DEVICE_ADD("y2404_1", Y2404, XTAL(10'738'635)/3) /* guess */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+ MCFG_DEVICE_ADD("y2404_2", Y2404, XTAL(10'738'635)/3) /* guess */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
ROM_START( pachifev )
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/pacman.cpp b/src/mame/drivers/pacman.cpp
index ed05527b38f..a7f551473d0 100644
--- a/src/mame/drivers/pacman.cpp
+++ b/src/mame/drivers/pacman.cpp
@@ -1376,8 +1376,8 @@ void pacman_state::writeport(address_map &map)
void pacman_state::vanvan_portmap(address_map &map)
{
map.global_mask(0xff);
- map(0x01, 0x01).w("sn1", FUNC(sn76496_device::write));
- map(0x02, 0x02).w("sn2", FUNC(sn76496_device::write));
+ map(0x01, 0x01).w("sn1", FUNC(sn76496_device::command_w));
+ map(0x02, 0x02).w("sn2", FUNC(sn76496_device::command_w));
}
void pacman_state::dremshpr_portmap(address_map &map)
@@ -1417,7 +1417,7 @@ void pacman_state::bigbucks_portmap(address_map &map)
void pacman_state::s2650games_dataport(address_map &map)
{
- map(S2650_DATA_PORT, S2650_DATA_PORT).w("sn1", FUNC(sn76496_device::write));
+ map(S2650_DATA_PORT, S2650_DATA_PORT).w("sn1", FUNC(sn76496_device::command_w));
}
void pacman_state::drivfrcp_portmap(address_map &map)
@@ -3564,33 +3564,31 @@ void pacman_state::pacman(machine_config &config, bool latch)
m_namco_sound->add_route(ALL_OUTPUTS, "mono", 1.0);
}
-void pacman_state::maketrax(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::maketrax)
pacman(config);
MCFG_MACHINE_RESET_OVERRIDE(pacman_state,maketrax)
-}
+MACHINE_CONFIG_END
-void pacman_state::korosuke(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::korosuke)
maketrax(config);
// 8K on original boards
m_mainlatch->q_out_cb<7>().set_nop(); // outputs 4-7 go to protection chip at 6P
-}
+MACHINE_CONFIG_END
-void pacman_state::pengojpm(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::pengojpm)
pacman(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::pengojpm_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(pengojpm_map)
+MACHINE_CONFIG_END
-void pacman_state::birdiy(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::birdiy)
pacman(config);
/* basic machine hardware */
- Z80(config.replace(), m_maincpu, MASTER_CLOCK/6);
- m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::birdiy_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(birdiy_map)
+ MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_IO)
// 74LS259 at 8K or 4099 at 7K
m_mainlatch->q_out_cb<0>().set_nop();
@@ -3599,56 +3597,58 @@ void pacman_state::birdiy(machine_config &config)
m_mainlatch->q_out_cb<7>().set(FUNC(pacman_state::coin_counter_w));
MCFG_VIDEO_START_OVERRIDE(pacman_state,birdiy)
-}
+MACHINE_CONFIG_END
-void pacman_state::piranha(machine_config &config)
-{
+
+
+MACHINE_CONFIG_START(pacman_state::piranha)
pacman(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &pacman_state::piranha_portmap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(piranha_portmap)
+MACHINE_CONFIG_END
-void pacman_state::nmouse(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::nmouse)
pacman(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &pacman_state::nmouse_portmap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(nmouse_portmap)
+MACHINE_CONFIG_END
-void pacman_state::mspacman(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::mspacman)
pacman(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::mspacman_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mspacman_map)
m_mainlatch->q_out_cb<6>().set(FUNC(pacman_state::coin_lockout_global_w));
-}
+MACHINE_CONFIG_END
-void pacman_state::woodpek(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::woodpek)
pacman(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::woodpek_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(woodpek_map)
+MACHINE_CONFIG_END
-void pacman_state::numcrash(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::numcrash)
pacman(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::numcrash_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(numcrash_map)
m_mainlatch->q_out_cb<3>().set_nop(); // ???
m_mainlatch->q_out_cb<7>().set_nop(); // ???
-}
+MACHINE_CONFIG_END
void pacman_state::alibaba(machine_config &config)
{
@@ -3669,104 +3669,107 @@ void pacman_state::alibaba(machine_config &config)
latch2.q_out_cb<2>().set(FUNC(pacman_state::irq_mask_w));
}
-void pacman_state::dremshpr(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::dremshpr)
pacman(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::dremshpr_map);
- m_maincpu->set_addrmap(AS_IO, &pacman_state::dremshpr_portmap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dremshpr_map)
+ MCFG_DEVICE_IO_MAP(dremshpr_portmap)
- subdevice<screen_device>("screen")->screen_vblank().set(FUNC(pacman_state::vblank_nmi));
+ MCFG_DEVICE_MODIFY("screen")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pacman_state, vblank_nmi))
/* sound hardware */
config.device_remove("namco");
AY8910(config, "ay8910", 14318000/8).add_route(ALL_OUTPUTS, "mono", 0.50);
m_mainlatch->q_out_cb<1>().set_nop();
-}
+MACHINE_CONFIG_END
-void pacman_state::theglobp(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::theglobp)
pacman(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::epos_map);
- m_maincpu->set_addrmap(AS_IO, &pacman_state::epos_portmap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(epos_map)
+ MCFG_DEVICE_IO_MAP(epos_portmap)
MCFG_MACHINE_START_OVERRIDE(pacman_state,theglobp)
MCFG_MACHINE_RESET_OVERRIDE(pacman_state,theglobp)
-}
+MACHINE_CONFIG_END
-void pacman_state::acitya(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::acitya)
pacman(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::epos_map);
- m_maincpu->set_addrmap(AS_IO, &pacman_state::epos_portmap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(epos_map)
+ MCFG_DEVICE_IO_MAP(epos_portmap)
MCFG_MACHINE_START_OVERRIDE(pacman_state,acitya)
MCFG_MACHINE_RESET_OVERRIDE(pacman_state,acitya)
-}
+MACHINE_CONFIG_END
-void pacman_state::eeekk(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::eeekk)
pacman(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::epos_map);
- m_maincpu->set_addrmap(AS_IO, &pacman_state::epos_portmap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(epos_map)
+ MCFG_DEVICE_IO_MAP(epos_portmap)
MCFG_MACHINE_START_OVERRIDE(pacman_state,eeekk)
MCFG_MACHINE_RESET_OVERRIDE(pacman_state,eeekk)
-}
+MACHINE_CONFIG_END
-void pacman_state::vanvan(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::vanvan)
pacman(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::dremshpr_map);
- m_maincpu->set_addrmap(AS_IO, &pacman_state::vanvan_portmap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dremshpr_map)
+ MCFG_DEVICE_IO_MAP(vanvan_portmap)
/* video hardware */
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_visarea(2*8, 34*8-1, 0*8, 28*8-1);
- screen.screen_vblank().set(FUNC(pacman_state::vblank_nmi));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(2*8, 34*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pacman_state, vblank_nmi))
/* sound hardware */
- config.device_remove("namco");
+ MCFG_DEVICE_REMOVE("namco")
+ MCFG_DEVICE_ADD("sn1", SN76496, 1789750)
- SN76496(config, "sn1", 1789750).add_route(ALL_OUTPUTS, "mono", 0.75);
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+ MCFG_DEVICE_ADD("sn2", SN76496, 1789750)
- SN76496(config, "sn2", 1789750).add_route(ALL_OUTPUTS, "mono", 0.75);
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
m_mainlatch->q_out_cb<1>().set_nop();
-}
+MACHINE_CONFIG_END
-void pacman_state::bigbucks(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::bigbucks)
pacman(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::bigbucks_map);
- m_maincpu->set_addrmap(AS_IO, &pacman_state::bigbucks_portmap);
- m_maincpu->set_periodic_int(FUNC(pacman_state::periodic_irq), attotime::from_hz(20*60));
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(bigbucks_map)
+ MCFG_DEVICE_IO_MAP(bigbucks_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(pacman_state, periodic_irq, 20*60)
- subdevice<screen_device>("screen")->set_visarea(0*8, 36*8-1, 0*8, 28*8-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
m_mainlatch->q_out_cb<7>().set_nop(); /*?*/
-}
+MACHINE_CONFIG_END
-void pacman_state::s2650games(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::s2650games)
pacman(config);
/* basic machine hardware */
@@ -3784,110 +3787,110 @@ void pacman_state::s2650games(machine_config &config)
m_mainlatch->q_out_cb<6>().set_nop();
m_mainlatch->q_out_cb<7>().set(FUNC(pacman_state::coin_counter_w));
- m_gfxdecode->set_info(gfx_s2650games);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_s2650games)
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(pacman_state::screen_update_s2650games));
- screen.screen_vblank().set(FUNC(pacman_state::s2650_interrupt));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_UPDATE_DRIVER(pacman_state, screen_update_s2650games)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pacman_state, s2650_interrupt))
MCFG_VIDEO_START_OVERRIDE(pacman_state,s2650games)
/* sound hardware */
- config.device_remove("namco");
- SN76496(config, "sn1", MASTER_CLOCK/6).add_route(ALL_OUTPUTS, "mono", 0.75); /* 1H */
-}
+ MCFG_DEVICE_REMOVE("namco")
+ MCFG_DEVICE_ADD("sn1", SN76496, MASTER_CLOCK/6) /* 1H */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+MACHINE_CONFIG_END
-void pacman_state::drivfrcp(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::drivfrcp)
s2650games(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &pacman_state::drivfrcp_portmap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(drivfrcp_portmap)
+MACHINE_CONFIG_END
-void pacman_state::_8bpm(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::_8bpm )
s2650games(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &pacman_state::_8bpm_portmap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(_8bpm_portmap)
+MACHINE_CONFIG_END
-void pacman_state::porky(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::porky)
s2650games(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &pacman_state::porky_portmap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(porky_portmap)
+MACHINE_CONFIG_END
-void pacman_state::rocktrv2(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::rocktrv2)
pacman(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::rocktrv2_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(rocktrv2_map)
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_visarea(0*8, 36*8-1, 0*8, 28*8-1);
- screen.screen_vblank().set(FUNC(pacman_state::rocktrv2_vblank_irq));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pacman_state, rocktrv2_vblank_irq))
+MACHINE_CONFIG_END
-void pacman_state::mschamp(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::mschamp)
pacman(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::mschamp_map);
- m_maincpu->set_addrmap(AS_IO, &pacman_state::mschamp_portmap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mschamp_map)
+ MCFG_DEVICE_IO_MAP(mschamp_portmap)
MCFG_MACHINE_RESET_OVERRIDE(pacman_state,mschamp)
-}
+MACHINE_CONFIG_END
-void pacman_state::superabc(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::superabc)
pacman(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::superabc_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(superabc_map)
NVRAM(config, "28c16.u17", nvram_device::DEFAULT_ALL_0);
MCFG_MACHINE_RESET_OVERRIDE(pacman_state,superabc)
/* video hardware */
- m_gfxdecode->set_info(gfx_superabc);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_superabc)
+MACHINE_CONFIG_END
-void pacman_state::crush4(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::crush4)
mschamp(config);
/* basic machine hardware */
- m_gfxdecode->set_info(gfx_crush4);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_crush4)
+MACHINE_CONFIG_END
-void pacman_state::crushs(machine_config &config)
-{
+MACHINE_CONFIG_START(pacman_state::crushs)
pacman(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::crushs_map);
- m_maincpu->set_addrmap(AS_IO, &pacman_state::crushs_portmap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(crushs_map)
+ MCFG_DEVICE_IO_MAP(crushs_portmap)
/* sound hardware */
AY8912(config, "ay8912", 1789750).add_route(ALL_OUTPUTS, "mono", 0.75);
-}
+MACHINE_CONFIG_END
@@ -6334,27 +6337,6 @@ ROM_START( sprglbpg )
ROM_END
-// 2 PCB set (G-GA-2 and G-GB-2). It was modified to use one 27128 instead of eight 2716 for the program ROMs.
-ROM_START( theglobme )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "globo_1-8_a.6e", 0x0000, 0x4000, CRC(57252220) SHA1(ee02a1f8817cb5c55d67653391f4509bb5a30403) )
-
- ROM_REGION( 0x2000, "gfx1", 0 )
- ROM_LOAD( "globo-10_b.5e", 0x0000, 0x0800, CRC(36408c76) SHA1(f5bb18e38de57adc2aed6211048d9f0ee0e58df7) )
- ROM_LOAD( "globo-12_b.5h", 0x0800, 0x0800, CRC(b8ba069c) SHA1(f8d8e40afd8214a6d951af8de2761703b0651f79) )
- ROM_LOAD( "globo-11_b.5f", 0x1000, 0x0800, CRC(890b8ebf) SHA1(1bf64f4ca1fca8efd35ac3d414d2bb755c5e44cc) )
- ROM_LOAD( "globo-13_b.5j", 0x1800, 0x0800, CRC(7c4456a4) SHA1(74f55ae921cdf8f1f7a866d75a63244187426f17) )
-
- ROM_REGION( 0x0120, "proms", 0 )
- ROM_LOAD( "n82s123an_a.7f", 0x0000, 0x0020, CRC(1f617527) SHA1(448845cab63800a05fcb106897503d994377f78f) )
- ROM_LOAD( "n82s129n_b.4a", 0x0020, 0x0100, CRC(28faa769) SHA1(7588889f3102d4e0ca7918f536556209b2490ea1) )
-
- ROM_REGION( 0x0200, "namco", 0 ) /* sound PROMs, Harris 63S141J */
- ROM_LOAD( "63s141_b.1m", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) )
- ROM_LOAD( "63s141_b.3m", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
-ROM_END
-
-
ROM_START( beastfp )
ROM_REGION( 0x20000, "maincpu", 0 )
ROM_LOAD( "bf-u2.bin", 0x0000, 0x2000, CRC(3afc517b) SHA1(5b74bca9e9cd4d8bcf94a340f8f0e53fe1dcfc1d) )
@@ -7654,7 +7636,6 @@ GAME( 1983, acitya, bwcasino, acitya, acitya, pacman_state, empty_init,
GAME( 1983, theglobp, suprglob, theglobp, theglobp, pacman_state, empty_init, ROT90, "Epos Corporation", "The Glob (Pac-Man hardware)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, sprglobp, suprglob, theglobp, theglobp, pacman_state, empty_init, ROT90, "Epos Corporation", "Super Glob (Pac-Man hardware)", MACHINE_SUPPORTS_SAVE )
GAME( 1984, sprglbpg, suprglob, pacman, theglobp, pacman_state, empty_init, ROT90, "bootleg (Software Labor)", "Super Glob (Pac-Man hardware) (German bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, theglobme,suprglob, woodpek, theglobp, pacman_state, empty_init, ROT90, "Magic Electronics Inc.", "The Glob (Pacman hardware, Magic Electronics Inc. license)", MACHINE_SUPPORTS_SAVE )
GAME( 1984, beastfp, suprglob, theglobp, theglobp, pacman_state, empty_init, ROT90, "Epos Corporation", "Beastie Feastie (conversion kit)", MACHINE_SUPPORTS_SAVE )
GAME( 1984, eeekk, 0, eeekk, eeekk, pacman_state, empty_init, ROT90, "Epos Corporation", "Eeekk!", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/palestra.cpp b/src/mame/drivers/palestra.cpp
deleted file mode 100644
index a4c188675fd..00000000000
--- a/src/mame/drivers/palestra.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Sergey Svishchev
-
-/***************************************************************************
-
- Palestra-02 (a Pong clone)
-
- https://www.mobygames.com/game/dedicated-console/palestra-02
- database entry
- http://www.ccjvq.com/slydc/palestra02.rar
- schematics
- http://discreteconsoles.blogspot.com/2015/10/emulation-of-ay-3-8500-1-and-clones-soon.html
- photos
- https://www.youtube.com/watch?v=3XZxkTvOF4Y
- gameplay video
-
- To do:
- - write 74H53 device
- - trace the boards (schematic contains several errors)
- - hook up inputs
-
-***************************************************************************/
-
-#include "emu.h"
-
-#include "machine/netlist.h"
-
-#include "video/fixfreq.h"
-
-#include "netlist/devices/net_lib.h"
-
-#include "machine/nl_palestra.h"
-
-#include "screen.h"
-
-#include <cmath>
-
-
-#define MASTER_CLOCK (4000000)
-#define V_TOTAL_PONG 315
-#define H_TOTAL_PONG 256 // tbc
-
-class palestra_state : public driver_device
-{
-public:
- palestra_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_video(*this, "fixfreq")
- {
- }
-
- // devices
- required_device<netlist_mame_device> m_maincpu;
- required_device<fixedfreq_device> m_video;
-
- void palestra(machine_config &config);
-
-protected:
- // driver_device overrides
- virtual void machine_start() override { };
- virtual void machine_reset() override { };
-
- virtual void video_start() override { };
-
-private:
-};
-
-
-static INPUT_PORTS_START(palestra)
-INPUT_PORTS_END
-
-
-MACHINE_CONFIG_START(palestra_state::palestra)
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_palestra);
-
- MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "vid0", "videomix", fixedfreq_device, update_composite_monochrome, "fixfreq")
-
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL_PONG-64,H_TOTAL_PONG-40,H_TOTAL_PONG-8,H_TOTAL_PONG);
- m_video->set_vert_params(V_TOTAL_PONG-19,V_TOTAL_PONG-16,V_TOTAL_PONG-12,V_TOTAL_PONG);
- m_video->set_fieldcount(1);
- m_video->set_threshold(1);
- m_video->set_gain(0.36);
-MACHINE_CONFIG_END
-
-
-ROM_START( palestra ) /* dummy to satisfy game entry*/
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
-ROM_END
-
-CONS( 1978, palestra, 0, 0, palestra, palestra, palestra_state, empty_init, "LPO", "Palestra-02", MACHINE_IS_SKELETON)
diff --git a/src/mame/drivers/palm.cpp b/src/mame/drivers/palm.cpp
index 1b69491e78a..21643b58ecd 100644
--- a/src/mame/drivers/palm.cpp
+++ b/src/mame/drivers/palm.cpp
@@ -182,32 +182,31 @@ void palm_state::palm_map(address_map &map)
MACHINE DRIVERS
***************************************************************************/
-void palm_state::palm(machine_config &config)
-{
+MACHINE_CONFIG_START(palm_state::palm)
/* basic machine hardware */
- M68000(config, m_maincpu, 32768*506); /* 16.580608 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &palm_state::palm_map);
- m_maincpu->set_dasm_override(FUNC(palm_state::palm_dasm_override));
+ MCFG_DEVICE_ADD( "maincpu", M68000, 32768*506 ) /* 16.580608 MHz */
+ MCFG_DEVICE_PROGRAM_MAP( palm_map)
+ MCFG_DEVICE_DISASSEMBLE_OVERRIDE(palm_state, palm_dasm_override)
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME( attotime::from_hz(60) )
+ MCFG_SCREEN_ADD( "screen", LCD )
+ MCFG_SCREEN_REFRESH_RATE( 60 )
+ MCFG_SCREEN_VBLANK_TIME( ATTOSECONDS_IN_USEC(1260) )
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(1260));
- screen.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
- screen.set_size(160, 220);
- screen.set_visarea(0, 159, 0, 219);
- screen.set_screen_update(MC68328_TAG, FUNC(mc68328_device::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_VIDEO_ATTRIBUTES( VIDEO_UPDATE_BEFORE_VBLANK )
+ MCFG_SCREEN_SIZE( 160, 220 )
+ MCFG_SCREEN_VISIBLE_AREA( 0, 159, 0, 219 )
+ MCFG_SCREEN_UPDATE_DEVICE(MC68328_TAG, mc68328_device, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(palm_state::palm_palette), 2);
/* audio hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
MC68328(config, m_lsi, 0, "maincpu"); // on-board peripherals
m_lsi->out_port_f().set(FUNC(palm_state::palm_port_f_out));
@@ -217,7 +216,7 @@ void palm_state::palm(machine_config &config)
m_lsi->out_spim().set(FUNC(palm_state::palm_spim_out));
m_lsi->in_spim().set(FUNC(palm_state::palm_spim_in));
m_lsi->spim_xch_trigger().set(FUNC(palm_state::palm_spim_exchange));
-}
+MACHINE_CONFIG_END
static INPUT_PORTS_START( palm )
PORT_START( "PENX" )
diff --git a/src/mame/drivers/palmz22.cpp b/src/mame/drivers/palmz22.cpp
index 9afea7cc2c3..a0548582971 100644
--- a/src/mame/drivers/palmz22.cpp
+++ b/src/mame/drivers/palmz22.cpp
@@ -288,19 +288,19 @@ void palmz22_state::init_palmz22()
{
}
-void palmz22_state::palmz22(machine_config &config)
-{
- ARM920T(config, m_maincpu, 266000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &palmz22_state::map);
+MACHINE_CONFIG_START(palmz22_state::palmz22)
+ MCFG_DEVICE_ADD(m_maincpu, ARM920T, 266000000)
+ MCFG_DEVICE_PROGRAM_MAP(map)
+
+ MCFG_PALETTE_ADD("palette", 32768)
- PALETTE(config, "palette").set_entries(32768);
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(160, 160)
+ MCFG_SCREEN_VISIBLE_AREA(0, 160 - 1, 0, 160 - 1)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(160, 160);
- screen.set_visarea(0, 160 - 1, 0, 160 - 1);
- screen.set_screen_update("s3c2410", FUNC(s3c2410_device::screen_update));
+ MCFG_SCREEN_UPDATE_DEVICE("s3c2410", s3c2410_device, screen_update)
S3C2410(config, m_s3c2410, 12000000);
m_s3c2410->set_palette_tag("palette");
@@ -317,7 +317,7 @@ void palmz22_state::palmz22(machine_config &config)
NAND(config, m_nand, 0);
m_nand->set_nand_type(nand_device::chip::K9F5608U0D_J);
m_nand->rnb_wr_callback().set(m_s3c2410, FUNC(s3c2410_device::frnb_w));
-}
+MACHINE_CONFIG_END
static INPUT_PORTS_START( palmz22 )
PORT_START( "PENB" )
diff --git a/src/mame/drivers/pandoras.cpp b/src/mame/drivers/pandoras.cpp
index c617c02f6c6..a6ceb3c40f6 100644
--- a/src/mame/drivers/pandoras.cpp
+++ b/src/mame/drivers/pandoras.cpp
@@ -305,8 +305,8 @@ READ8_MEMBER(pandoras_state::pandoras_portB_r)
return (m_audiocpu->total_cycles() / 512) & 0x0f;
}
-void pandoras_state::pandoras(machine_config &config)
-{
+MACHINE_CONFIG_START(pandoras_state::pandoras)
+
/* basic machine hardware */
MC6809E(config, m_maincpu, MASTER_CLOCK/6); /* CPU A */
m_maincpu->set_addrmap(AS_PROGRAM, &pandoras_state::pandoras_master_map);
@@ -323,7 +323,7 @@ void pandoras_state::pandoras(machine_config &config)
m_mcu->p1_out_cb().set("dac", FUNC(dac_byte_interface::data_w));
m_mcu->p2_out_cb().set(FUNC(pandoras_state::i8039_irqen_and_status_w));
- config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - needed for correct synchronization of the sound CPUs */
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - needed for correct synchronization of the sound CPUs */
ls259_device &mainlatch(LS259(config, "mainlatch")); // C3
mainlatch.q_out_cb<0>().set(FUNC(pandoras_state::cpua_irq_enable_w)); // ENA
@@ -337,14 +337,14 @@ void pandoras_state::pandoras(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(pandoras_state::screen_update_pandoras));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(pandoras_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pandoras_state, screen_update_pandoras)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pandoras_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pandoras);
PALETTE(config, m_palette, FUNC(pandoras_state::pandoras_palette), 16*16+16*16, 32);
@@ -360,11 +360,10 @@ void pandoras_state::pandoras(machine_config &config)
aysnd.port_b_read_callback().set(FUNC(pandoras_state::pandoras_portB_r));
aysnd.add_route(ALL_OUTPUTS, "speaker", 0.4);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.12); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.12) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/pangofun.cpp b/src/mame/drivers/pangofun.cpp
index cf2895b11bd..fb0478d8aa8 100644
--- a/src/mame/drivers/pangofun.cpp
+++ b/src/mame/drivers/pangofun.cpp
@@ -179,21 +179,21 @@ void pangofun_state::machine_start()
{
}
-void pangofun_state::pangofun(machine_config &config)
-{
+MACHINE_CONFIG_START(pangofun_state::pangofun)
/* basic machine hardware */
- I486(config, m_maincpu, 25000000); /* I486 ?? Mhz (25 according to POST) */
- m_maincpu->set_addrmap(AS_PROGRAM, &pangofun_state::pcat_map);
- m_maincpu->set_addrmap(AS_IO, &pangofun_state::pcat_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I486, 25000000 ) /* I486 ?? Mhz (25 according to POST) */
+ MCFG_DEVICE_PROGRAM_MAP(pcat_map)
+ MCFG_DEVICE_IO_MAP(pcat_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
/* video hardware */
pcvideo_vga(config);
- subdevice<screen_device>("screen")->set_refresh_hz(60);
- subdevice<screen_device>("screen")->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
pcat_common(config);
-}
+MACHINE_CONFIG_END
ROM_START(pangofun)
diff --git a/src/mame/drivers/panicr.cpp b/src/mame/drivers/panicr.cpp
index b22d278d528..a4cef282692 100644
--- a/src/mame/drivers/panicr.cpp
+++ b/src/mame/drivers/panicr.cpp
@@ -602,22 +602,22 @@ TIMER_DEVICE_CALLBACK_MEMBER(panicr_state::scanline)
m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xc8/4);
}
-void panicr_state::panicr(machine_config &config)
-{
- V20(config, m_maincpu, MASTER_CLOCK/2); /* Sony 8623h9 CXQ70116D-8 (V20 compatible) */
- m_maincpu->set_addrmap(AS_PROGRAM, &panicr_state::panicr_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(panicr_state::scanline), "screen", 0, 1);
+MACHINE_CONFIG_START(panicr_state::panicr)
+ MCFG_DEVICE_ADD("maincpu", V20,MASTER_CLOCK/2) /* Sony 8623h9 CXQ70116D-8 (V20 compatible) */
+ MCFG_DEVICE_PROGRAM_MAP(panicr_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", panicr_state, scanline, "screen", 0, 1)
+
+ MCFG_DEVICE_ADD("t5182", T5182, 0)
- T5182(config, m_t5182, 0);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(32*8, 32*8);
-// m_screen->set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(panicr_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(panicr_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_panicr);
PALETTE(config, m_palette, FUNC(panicr_state::panicr_palette), 256 * 4, 256);
@@ -629,7 +629,7 @@ void panicr_state::panicr(machine_config &config)
ymsnd.irq_handler().set(m_t5182, FUNC(t5182_device::ym2151_irq_handler));
ymsnd.add_route(0, "mono", 1.0);
ymsnd.add_route(1, "mono", 1.0);
-}
+MACHINE_CONFIG_END
ROM_START( panicr )
diff --git a/src/mame/drivers/paradise.cpp b/src/mame/drivers/paradise.cpp
index 4c73aef6164..0db6858a5d7 100644
--- a/src/mame/drivers/paradise.cpp
+++ b/src/mame/drivers/paradise.cpp
@@ -731,23 +731,23 @@ INTERRUPT_GEN_MEMBER(paradise_state::irq)
m_maincpu->set_input_line(INPUT_LINE_IRQ0, HOLD_LINE);
}
-void paradise_state::paradise(machine_config &config)
-{
+MACHINE_CONFIG_START(paradise_state::paradise)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/2); /* Z8400B - 6mhz Verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &paradise_state::paradise_map);
- m_maincpu->set_addrmap(AS_IO, &paradise_state::paradise_io_map);
- m_maincpu->set_periodic_int(FUNC(paradise_state::irq), attotime::from_hz(4*54)); /* No nmi routine, timing is confirmed (i.e. three timing irqs for each vblank irq */
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* Z8400B - 6mhz Verified */
+ MCFG_DEVICE_PROGRAM_MAP(paradise_map)
+ MCFG_DEVICE_IO_MAP(paradise_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(paradise_state, irq, 4*54) /* No nmi routine, timing is confirmed (i.e. three timing irqs for each vblank irq */
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(54); /* 54 verified */
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* we're using PORT_VBLANK */);
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 256-1, 0+16, 256-1-16);
- m_screen->set_screen_update(FUNC(paradise_state::screen_update_paradise));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(54) /* 54 verified */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* we're using PORT_VBLANK */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-1-16)
+ MCFG_SCREEN_UPDATE_DRIVER(paradise_state, screen_update_paradise)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_paradise);
PALETTE(config, m_palette).set_entries(0x800 + 16);
@@ -756,60 +756,62 @@ void paradise_state::paradise(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki1", XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.50); /* verified on pcb */
+ MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- OKIM6295(config, m_oki2, XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.50); /* verified on pcb */
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
-void paradise_state::tgtball(machine_config &config)
-{
+MACHINE_CONFIG_START(paradise_state::tgtball)
paradise(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &paradise_state::tgtball_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tgtball_map)
+MACHINE_CONFIG_END
-void paradise_state::torus(machine_config &config)
-{
+MACHINE_CONFIG_START(paradise_state::torus)
paradise(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &paradise_state::torus_map);
- m_maincpu->set_addrmap(AS_IO, &paradise_state::torus_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(torus_map)
+ MCFG_DEVICE_IO_MAP(torus_io_map)
- m_gfxdecode->set_info(gfx_torus);
- m_screen->set_screen_update(FUNC(paradise_state::screen_update_torus));
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_torus)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(paradise_state, screen_update_torus)
- config.device_remove("oki2");
-}
+ MCFG_DEVICE_REMOVE("oki2")
+MACHINE_CONFIG_END
-void paradise_state::madball(machine_config &config)
-{
+MACHINE_CONFIG_START(paradise_state::madball)
torus(config);
- m_gfxdecode->set_info(gfx_madball);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_madball)
- m_screen->set_screen_update(FUNC(paradise_state::screen_update_madball));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(paradise_state, screen_update_madball)
+MACHINE_CONFIG_END
-void paradise_state::penky(machine_config &config)
-{
+MACHINE_CONFIG_START(paradise_state::penky)
paradise(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &paradise_state::torus_map);
- m_maincpu->set_addrmap(AS_IO, &paradise_state::torus_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(torus_map)
+ MCFG_DEVICE_IO_MAP(torus_io_map)
+MACHINE_CONFIG_END
-void paradise_state::penkyi(machine_config &config)
-{
+MACHINE_CONFIG_START(paradise_state::penkyi)
penky(config);
// TODO add ticket dispenser
- config.device_remove("oki2");
-}
+ MCFG_DEVICE_REMOVE("oki2")
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/paranoia.cpp b/src/mame/drivers/paranoia.cpp
index affe48db73e..e51b1d7e0bd 100644
--- a/src/mame/drivers/paranoia.cpp
+++ b/src/mame/drivers/paranoia.cpp
@@ -165,8 +165,7 @@ WRITE_LINE_MEMBER(paranoia_state::i8155_timer_out)
//logerror("Timer out %d\n", state);
}
-void paranoia_state::paranoia(machine_config &config)
-{
+MACHINE_CONFIG_START(paranoia_state::paranoia)
/* basic machine hardware */
H6280(config, m_maincpu, PCE_MAIN_CLOCK/3);
m_maincpu->set_addrmap(AS_PROGRAM, &paranoia_state::pce_mem);
@@ -176,15 +175,15 @@ void paranoia_state::paranoia(machine_config &config)
m_maincpu->add_route(0, "lspeaker", 1.00);
m_maincpu->add_route(1, "rspeaker", 1.00);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
- i8085a_cpu_device &sub(I8085A(config, "sub", 18000000/3));
- sub.set_addrmap(AS_PROGRAM, &paranoia_state::paranoia_8085_map);
- sub.set_addrmap(AS_IO, &paranoia_state::paranoia_8085_io_map);
+ MCFG_DEVICE_ADD("sub", I8085A, 18000000/3)
+ MCFG_DEVICE_PROGRAM_MAP(paranoia_8085_map)
+ MCFG_DEVICE_IO_MAP(paranoia_8085_io_map)
- z80_device &sub2(Z80(config, "sub2", 18000000/6));
- sub2.set_addrmap(AS_PROGRAM, &paranoia_state::paranoia_z80_map);
- sub2.set_addrmap(AS_IO, &paranoia_state::paranoia_z80_io_map);
+ MCFG_DEVICE_ADD("sub2", Z80, 18000000/6)
+ MCFG_DEVICE_PROGRAM_MAP(paranoia_z80_map)
+ MCFG_DEVICE_IO_MAP(paranoia_z80_io_map)
i8155_device &i8155(I8155(config, "i8155", 1000000 /*?*/));
i8155.out_pa_callback().set(FUNC(paranoia_state::i8155_a_w));
@@ -193,24 +192,23 @@ void paranoia_state::paranoia(machine_config &config)
i8155.out_to_callback().set(FUNC(paranoia_state::i8155_timer_out));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(PCE_MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242);
- screen.set_screen_update(FUNC(pce_common_state::screen_update));
- screen.set_palette(m_huc6260);
-
- HUC6260(config, m_huc6260, PCE_MAIN_CLOCK);
- m_huc6260->next_pixel_data().set("huc6270", FUNC(huc6270_device::next_pixel));
- m_huc6260->time_til_next_event().set("huc6270", FUNC(huc6270_device::time_until_next_event));
- m_huc6260->vsync_changed().set("huc6270", FUNC(huc6270_device::vsync_changed));
- m_huc6260->hsync_changed().set("huc6270", FUNC(huc6270_device::hsync_changed));
-
- huc6270_device &huc6270(HUC6270(config, "huc6270", 0));
- huc6270.set_vram_size(0x10000);
- huc6270.irq().set_inputline(m_maincpu, 0);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242)
+ MCFG_SCREEN_UPDATE_DRIVER( pce_common_state, screen_update )
+ MCFG_SCREEN_PALETTE("huc6260")
+
+ MCFG_DEVICE_ADD( "huc6260", HUC6260, PCE_MAIN_CLOCK )
+ MCFG_HUC6260_NEXT_PIXEL_DATA_CB(READ16("huc6270", huc6270_device, next_pixel))
+ MCFG_HUC6260_TIME_TIL_NEXT_EVENT_CB(READ16("huc6270", huc6270_device, time_until_next_event))
+ MCFG_HUC6260_VSYNC_CHANGED_CB(WRITELINE("huc6270", huc6270_device, vsync_changed))
+ MCFG_HUC6260_HSYNC_CHANGED_CB(WRITELINE("huc6270", huc6270_device, hsync_changed))
+ MCFG_DEVICE_ADD( "huc6270", HUC6270, 0 )
+ MCFG_HUC6270_VRAM_SIZE(0x10000)
+ MCFG_HUC6270_IRQ_CHANGED_CB(INPUTLINE("maincpu", 0))
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
-}
+MACHINE_CONFIG_END
ROM_START(paranoia)
ROM_REGION( 0x40000, "maincpu", 0 )
diff --git a/src/mame/drivers/pasha2.cpp b/src/mame/drivers/pasha2.cpp
index 5885b1c6aba..9acbc634bb2 100644
--- a/src/mame/drivers/pasha2.cpp
+++ b/src/mame/drivers/pasha2.cpp
@@ -398,39 +398,41 @@ void pasha2_state::machine_reset()
m_vbuffer = 0;
}
-void pasha2_state::pasha2(machine_config &config)
-{
+MACHINE_CONFIG_START(pasha2_state::pasha2)
+
/* basic machine hardware */
- E116XT(config, m_maincpu, 20000000*4); /* 4x internal multiplier */
- m_maincpu->set_addrmap(AS_PROGRAM, &pasha2_state::pasha2_map);
- m_maincpu->set_addrmap(AS_IO, &pasha2_state::pasha2_io);
- m_maincpu->set_vblank_int("screen", FUNC(pasha2_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", E116XT, 20000000*4) /* 4x internal multiplier */
+ MCFG_DEVICE_PROGRAM_MAP(pasha2_map)
+ MCFG_DEVICE_IO_MAP(pasha2_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pasha2_state, irq0_line_hold)
- AT89C52(config, m_audiocpu, 12000000); /* clock from docs */
+ MCFG_DEVICE_ADD("audiocpu", AT89C52, 12000000) /* clock from docs */
/* TODO : ports are unimplemented; P0,P1,P2,P3 and Serial Port Used */
EEPROM_93C46_16BIT(config, "eeprom");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 512);
- screen.set_visarea(0, 383, 0, 239);
- screen.set_screen_update(FUNC(pasha2_state::screen_update_pasha2));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 512)
+ MCFG_SCREEN_VISIBLE_AREA(0, 383, 0, 239)
+ MCFG_SCREEN_UPDATE_DRIVER(pasha2_state, screen_update_pasha2)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_entries(0x200);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki[0], 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 1000000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- OKIM6295(config, m_oki[1], 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 1000000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
//and ATMEL DREAM SAM9773
-}
+MACHINE_CONFIG_END
ROM_START( pasha2 )
ROM_REGION16_BE( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
diff --git a/src/mame/drivers/paso1600.cpp b/src/mame/drivers/paso1600.cpp
index e01e46d17c4..694e1e8b3c1 100644
--- a/src/mame/drivers/paso1600.cpp
+++ b/src/mame/drivers/paso1600.cpp
@@ -188,23 +188,23 @@ WRITE8_MEMBER( paso1600_state::paso1600_pcg_w )
WRITE8_MEMBER( paso1600_state::paso1600_6845_address_w )
{
m_crtc_index = data;
- m_crtc->address_w(data);
+ m_crtc->address_w(space, offset, data);
}
WRITE8_MEMBER( paso1600_state::paso1600_6845_data_w )
{
m_crtc_vreg[m_crtc_index] = data;
- m_crtc->register_w(data);
+ m_crtc->register_w(space, offset, data);
}
READ8_MEMBER( paso1600_state::paso1600_6845_data_r )
{
- return m_crtc->register_r();
+ return m_crtc->register_r(space, offset);
}
READ8_MEMBER( paso1600_state::paso1600_6845_status_r )
{
- return m_crtc->status_r();
+ return m_crtc->status_r(space, offset);
}
READ8_MEMBER( paso1600_state::key_r )
@@ -304,25 +304,25 @@ WRITE8_MEMBER(paso1600_state::pc_dma_write_byte)
space.write_byte(offset, data);
}
-void paso1600_state::paso1600(machine_config &config)
-{
+MACHINE_CONFIG_START(paso1600_state::paso1600)
/* basic machine hardware */
- I8086(config, m_maincpu, 16000000/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &paso1600_state::paso1600_map);
- m_maincpu->set_addrmap(AS_IO, &paso1600_state::paso1600_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I8086, 16000000/2)
+ MCFG_DEVICE_PROGRAM_MAP(paso1600_map)
+ MCFG_DEVICE_IO_MAP(paso1600_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_screen_update(FUNC(paso1600_state::screen_update_paso1600));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_paso1600);
- PALETTE(config, m_palette).set_entries(8);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(paso1600_state, screen_update_paso1600)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_paso1600)
+ MCFG_PALETTE_ADD("palette", 8)
+// MCFG_PALETTE_INIT(black_and_white)
/* Devices */
h46505_device &crtc(H46505(config, "crtc", 16000000/4)); /* unknown clock, hand tuned to get ~60 fps */
@@ -336,7 +336,7 @@ void paso1600_state::paso1600(machine_config &config)
AM9517A(config, m_dma, 16000000/4);
m_dma->in_memr_callback().set(FUNC(paso1600_state::pc_dma_read_byte));
m_dma->out_memw_callback().set(FUNC(paso1600_state::pc_dma_write_byte));
-}
+MACHINE_CONFIG_END
ROM_START( paso1600 )
ROM_REGION16_LE(0x2000,"ipl", 0)
diff --git a/src/mame/drivers/pasogo.cpp b/src/mame/drivers/pasogo.cpp
index 3ad45975fb5..a5058fa31aa 100644
--- a/src/mame/drivers/pasogo.cpp
+++ b/src/mame/drivers/pasogo.cpp
@@ -141,12 +141,12 @@ private:
required_shared_ptr<uint16_t> m_vram;
required_device<palette_device> m_palette;
- uint16_t ems_r(offs_t offset, uint16_t mem_mask);
- void ems_w(offs_t offset, uint16_t data, uint16_t mem_mask);
- uint16_t emsram_r(offs_t offset, uint16_t mem_mask);
- void emsram_w(offs_t offset, uint16_t data, uint16_t mem_mask);
- uint8_t vg230_io_r(offs_t offset);
- void vg230_io_w(offs_t offset, uint8_t data);
+ DECLARE_READ16_MEMBER(ems_r);
+ DECLARE_WRITE16_MEMBER(ems_w);
+ DECLARE_READ16_MEMBER(emsram_r);
+ DECLARE_WRITE16_MEMBER(emsram_w);
+ DECLARE_READ8_MEMBER(vg230_io_r);
+ DECLARE_WRITE8_MEMBER(vg230_io_w);
struct
{
@@ -229,7 +229,7 @@ void pasogo_state::machine_start()
m_vg230.bios_timer.data=0x7200; // HACK
}
-uint8_t pasogo_state::vg230_io_r(offs_t offset)
+READ8_MEMBER( pasogo_state::vg230_io_r )
{
int log = true;
uint8_t data = 0;
@@ -315,7 +315,7 @@ uint8_t pasogo_state::vg230_io_r(offs_t offset)
}
-void pasogo_state::vg230_io_w(offs_t offset, uint8_t data)
+WRITE8_MEMBER( pasogo_state::vg230_io_w )
{
int log = true;
@@ -387,7 +387,7 @@ void pasogo_state::vg230_io_w(offs_t offset, uint8_t data)
}
-uint16_t pasogo_state::ems_r(offs_t offset, uint16_t mem_mask)
+READ16_MEMBER( pasogo_state::ems_r )
{
uint8_t data = 0;
uint8_t index;
@@ -407,7 +407,7 @@ uint16_t pasogo_state::ems_r(offs_t offset, uint16_t mem_mask)
}
-void pasogo_state::ems_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+WRITE16_MEMBER( pasogo_state::ems_w )
{
uint8_t index;
@@ -434,16 +434,16 @@ void pasogo_state::ems_w(offs_t offset, uint16_t data, uint16_t mem_mask)
}
}
-uint16_t pasogo_state::emsram_r(offs_t offset, uint16_t mem_mask)
+READ16_MEMBER( pasogo_state::emsram_r )
{
m_ems->set_bank(m_ems_bank[(offset >> 13) & 0x1f] & 0x7fff);
- return m_ems->read16(offset & 0x1fff, mem_mask);
+ return m_ems->read16(space, offset & 0x1fff, mem_mask);
}
-void pasogo_state::emsram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+WRITE16_MEMBER( pasogo_state::emsram_w )
{
m_ems->set_bank(m_ems_bank[(offset >> 13) & 0x1f] & 0x7fff);
- m_ems->write16(offset & 0x1fff, data, mem_mask);
+ m_ems->write16(space, offset & 0x1fff, data, mem_mask);
}
void pasogo_state::emsbank_map(address_map &map)
@@ -544,38 +544,38 @@ void pasogo_state::machine_reset()
contrast(*color->fields().first(), nullptr, 0, color->read());
}
-void pasogo_state::pasogo(machine_config &config)
-{
- V30(config, m_maincpu, XTAL(32'220'000)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &pasogo_state::pasogo_mem);
- m_maincpu->set_addrmap(AS_IO, &pasogo_state::pasogo_io);
- m_maincpu->set_vblank_int("screen", FUNC(pasogo_state::pasogo_interrupt));
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(pasogo_state::pasogo)
+
+ MCFG_DEVICE_ADD("maincpu", V30, XTAL(32'220'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(pasogo_mem)
+ MCFG_DEVICE_IO_MAP(pasogo_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pasogo_state, pasogo_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
ADDRESS_MAP_BANK(config, "ems").set_map(&pasogo_state::emsbank_map).set_options(ENDIANNESS_LITTLE, 16, 32, 0x4000);
- IBM5160_MOTHERBOARD(config, "mb", 0).set_cputag(m_maincpu);
+ MCFG_IBM5160_MOTHERBOARD_ADD("mb", "maincpu")
RAM(config, RAM_TAG).set_default_size("512K");
// It's a CGA device right so lets use isa_cga! Well, not so much.
// The carts use vg230 specific registers and mostly ignore the mc6845.
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(60);
- screen.set_size(320, 240);
- screen.set_visarea(0, 320-1, 0, 240-1);
- screen.set_screen_update(FUNC(pasogo_state::screen_update_pasogo));
- screen.set_palette(m_palette);
- PALETTE(config, m_palette).set_entries(2);
-
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "pasogo_cart");
- m_cart->set_width(GENERIC_ROM16_WIDTH);
- m_cart->set_must_be_loaded(true);
-
- SOFTWARE_LIST(config, "cart_list").set_original("pasogo");
-
- TIMER(config, "vg230_timer").configure_periodic(FUNC(pasogo_state::vg230_timer), attotime::from_hz(1));
-}
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(320, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pasogo_state, screen_update_pasogo)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_PALETTE_ADD("palette", 2)
+
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "pasogo_cart")
+ MCFG_GENERIC_WIDTH(GENERIC_ROM16_WIDTH)
+ MCFG_GENERIC_MANDATORY
+
+ MCFG_SOFTWARE_LIST_ADD("cart_list","pasogo")
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("vg230_timer", pasogo_state, vg230_timer, attotime::from_hz(1))
+MACHINE_CONFIG_END
ROM_START( pasogo )
ROM_REGION( 0x10000, "empty", ROMREGION_ERASEFF )
diff --git a/src/mame/drivers/pasopia.cpp b/src/mame/drivers/pasopia.cpp
index 3ce53dbc8a5..31600cc2d50 100644
--- a/src/mame/drivers/pasopia.cpp
+++ b/src/mame/drivers/pasopia.cpp
@@ -286,8 +286,7 @@ We preset all banks here, so that bankswitching will incur no speed penalty.
m_pio_timer->adjust(attotime::from_hz(50), 0, attotime::from_hz(50));
}
-void pasopia_state::pasopia(machine_config &config)
-{
+MACHINE_CONFIG_START(pasopia_state::pasopia)
/* basic machine hardware */
Z80(config, m_maincpu, 4000000);
@@ -296,14 +295,14 @@ void pasopia_state::pasopia(machine_config &config)
m_maincpu->set_daisy_config(pasopia_daisy);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_screen_update("crtc", FUNC(h46505_device::screen_update));
- GFXDECODE(config, "gfxdecode", m_palette, gfx_pasopia);
- PALETTE(config, m_palette).set_entries(8);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", h46505_device, screen_update)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pasopia)
+ MCFG_PALETTE_ADD("palette", 8)
/* Devices */
H46505(config, m_crtc, XTAL(4'000'000)/4); /* unknown clock, hand tuned to get ~60 fps */
@@ -335,7 +334,7 @@ void pasopia_state::pasopia(machine_config &config)
m_pio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
m_pio->out_pa_callback().set(FUNC(pasopia_state::mux_w));
m_pio->in_pb_callback().set(FUNC(pasopia_state::keyb_r));
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( pasopia )
diff --git a/src/mame/drivers/pasopia7.cpp b/src/mame/drivers/pasopia7.cpp
index 96ba59b0c1c..ce1d0834d02 100644
--- a/src/mame/drivers/pasopia7.cpp
+++ b/src/mame/drivers/pasopia7.cpp
@@ -535,7 +535,7 @@ WRITE8_MEMBER( pasopia7_state::pasopia7_6845_w )
if(offset == 0)
{
m_addr_latch = data;
- m_crtc->address_w(data);
+ m_crtc->address_w(space, offset, data);
}
else
{
@@ -547,7 +547,7 @@ WRITE8_MEMBER( pasopia7_state::pasopia7_6845_w )
else if(m_addr_latch == 0x0f)
m_cursor_addr = (m_cursor_addr & 0x3f00) | (data & 0xff);
- m_crtc->register_w(data);
+ m_crtc->register_w(space, offset, data);
/* double pump the pixel clock if we are in 640 x 200 mode */
if(m_screen_type == 1) // raster
@@ -572,8 +572,8 @@ READ8_MEMBER( pasopia7_state::pasopia7_fdc_r )
{
switch(offset)
{
- case 4: return m_fdc->msr_r();
- case 5: return m_fdc->fifo_r();
+ case 4: return m_fdc->msr_r(space, 0, 0xff);
+ case 5: return m_fdc->fifo_r(space, 0, 0xff);
//case 6: bit 7 interrupt bit
}
@@ -586,7 +586,7 @@ WRITE8_MEMBER( pasopia7_state::pasopia7_fdc_w )
{
case 0: m_fdc->tc_w(false); break;
case 2: m_fdc->tc_w(true); break;
- case 5: m_fdc->fifo_w(data); break;
+ case 5: m_fdc->fifo_w(space, 0, data, 0xff); break;
case 6:
if(data & 0x80)
m_fdc->reset();
@@ -919,8 +919,7 @@ static void pasopia7_floppies(device_slot_interface &device)
device.option_add("525hd", FLOPPY_525_HD);
}
-void pasopia7_state::p7_base(machine_config &config)
-{
+MACHINE_CONFIG_START(pasopia7_state::p7_base)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(4'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &pasopia7_state::pasopia7_mem);
@@ -930,9 +929,11 @@ void pasopia7_state::p7_base(machine_config &config)
/* Audio */
SPEAKER(config, "mono").front_center();
- SN76489A(config, m_sn1, 1996800).add_route(ALL_OUTPUTS, "mono", 0.50); // unknown clock / divider
+ MCFG_DEVICE_ADD("sn1", SN76489A, 1996800) // unknown clock / divider
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- SN76489A(config, m_sn2, 1996800).add_route(ALL_OUTPUTS, "mono", 0.50); // unknown clock / divider
+ MCFG_DEVICE_ADD("sn2", SN76489A, 1996800) // unknown clock / divider
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
Z80CTC(config, m_ctc, XTAL(4'000'000));
@@ -964,54 +965,50 @@ void pasopia7_state::p7_base(machine_config &config)
m_ppi2->out_pc_callback().set(FUNC(pasopia7_state::nmi_reg_w));
UPD765A(config, m_fdc, 8'000'000, true, true);
- FLOPPY_CONNECTOR(config, "fdc:0", pasopia7_floppies, "525hd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", pasopia7_floppies, "525hd", floppy_image_device::default_floppy_formats);
-}
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", pasopia7_floppies, "525hd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", pasopia7_floppies, "525hd", floppy_image_device::default_floppy_formats)
+MACHINE_CONFIG_END
-void pasopia7_state::p7_raster(machine_config &config)
-{
+MACHINE_CONFIG_START(pasopia7_state::p7_raster)
p7_base(config);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(640, 480);
- m_screen->set_visarea(0, 640-1, 0, 32-1);
- m_screen->set_palette(m_palette);
- m_screen->set_screen_update(FUNC(pasopia7_state::screen_update_pasopia7));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 32-1)
+ MCFG_SCREEN_PALETTE(m_palette)
MCFG_VIDEO_START_OVERRIDE(pasopia7_state,pasopia7)
-
+ MCFG_SCREEN_UPDATE_DRIVER(pasopia7_state, screen_update_pasopia7)
PALETTE(config, m_palette, palette_device::BRG_3BIT);
GFXDECODE(config, "gfxdecode", m_palette, gfx_pasopia7);
H46505(config, m_crtc, VDP_CLOCK); /* unknown clock, hand tuned to get ~60 fps */
- m_crtc->set_screen(m_screen);
+ m_crtc->set_screen("screen");
m_crtc->set_show_border_area(false);
m_crtc->set_char_width(8);
-}
+MACHINE_CONFIG_END
-void pasopia7_state::p7_lcd(machine_config &config)
-{
+MACHINE_CONFIG_START(pasopia7_state::p7_lcd)
p7_base(config);
- SCREEN(config, m_screen, SCREEN_TYPE_LCD);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(640, 480);
- m_screen->set_visarea(0, 640-1, 0, 200-1);
- m_screen->set_screen_update(FUNC(pasopia7_state::screen_update_pasopia7));
- m_screen->set_palette(m_palette);
-
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_VIDEO_START_OVERRIDE(pasopia7_state,pasopia7)
+ MCFG_SCREEN_UPDATE_DRIVER(pasopia7_state, screen_update_pasopia7)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(pasopia7_state::p7_lcd_palette), 8);
GFXDECODE(config, "gfxdecode", m_palette, gfx_pasopia7);
H46505(config, m_crtc, LCD_CLOCK); /* unknown clock, hand tuned to get ~60 fps */
- m_crtc->set_screen(m_screen);
+ m_crtc->set_screen("screen");
m_crtc->set_show_border_area(false);
m_crtc->set_char_width(8);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( pasopia7 )
diff --git a/src/mame/drivers/pass.cpp b/src/mame/drivers/pass.cpp
index da1d72c0a06..4bc1a2f511f 100644
--- a/src/mame/drivers/pass.cpp
+++ b/src/mame/drivers/pass.cpp
@@ -241,26 +241,26 @@ static GFXDECODE_START( gfx_pass )
GFXDECODE_END
/* todo : is this correct? */
-void pass_state::pass(machine_config &config)
-{
+MACHINE_CONFIG_START(pass_state::pass)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 14318180/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &pass_state::pass_map);
- m_maincpu->set_vblank_int("screen", FUNC(pass_state::irq1_line_hold)); /* all the same */
+ MCFG_DEVICE_ADD("maincpu", M68000, 14318180/2 )
+ MCFG_DEVICE_PROGRAM_MAP(pass_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pass_state, irq1_line_hold) /* all the same */
- z80_device &audiocpu(Z80(config, "audiocpu", 14318180/4));
- audiocpu.set_addrmap(AS_PROGRAM, &pass_state::pass_sound_map);
- audiocpu.set_addrmap(AS_IO, &pass_state::pass_sound_io_map);
- audiocpu.set_periodic_int(FUNC(pass_state::irq0_line_hold), attotime::from_hz(60)); /* probably not accurate, unknown timing and generation (ym2203 sound chip?). */
+ MCFG_DEVICE_ADD("audiocpu", Z80, 14318180/4 )
+ MCFG_DEVICE_PROGRAM_MAP(pass_sound_map)
+ MCFG_DEVICE_IO_MAP(pass_sound_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(pass_state, irq0_line_hold, 60) /* probably not accurate, unknown timing and generation (ym2203 sound chip?). */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, 48*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(pass_state::screen_update_pass));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pass_state, screen_update_pass)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x200);
GFXDECODE(config, m_gfxdecode, "palette", gfx_pass);
@@ -271,10 +271,12 @@ void pass_state::pass(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- YM2203(config, "ymsnd", 14318180/4).add_route(ALL_OUTPUTS, "mono", 0.60);
+ MCFG_DEVICE_ADD("ymsnd", YM2203, 14318180/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
- OKIM6295(config, "oki", 792000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 792000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+MACHINE_CONFIG_END
ROM_START( pass )
diff --git a/src/mame/drivers/pastelg.cpp b/src/mame/drivers/pastelg.cpp
index 5a253adb99d..84d48465236 100644
--- a/src/mame/drivers/pastelg.cpp
+++ b/src/mame/drivers/pastelg.cpp
@@ -397,26 +397,26 @@ static INPUT_PORTS_START( galds )
INPUT_PORTS_END
-void pastelg_state::pastelg(machine_config &config)
-{
+MACHINE_CONFIG_START(pastelg_state::pastelg)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 19968000/4); /* unknown divider, galds definitely relies on this for correct voice pitch */
- m_maincpu->set_addrmap(AS_PROGRAM, &pastelg_state::pastelg_map);
- m_maincpu->set_addrmap(AS_IO, &pastelg_state::pastelg_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(pastelg_state::irq0_line_assert)); // nmiclock not written, chip is 1411M1 instead of 1413M3
+ MCFG_DEVICE_ADD("maincpu", Z80, 19968000/4) /* unknown divider, galds definitely relies on this for correct voice pitch */
+ MCFG_DEVICE_PROGRAM_MAP(pastelg_map)
+ MCFG_DEVICE_IO_MAP(pastelg_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pastelg_state, irq0_line_assert) // nmiclock not written, chip is 1411M1 instead of 1413M3
NB1413M3(config, m_nb1413m3, 0, NB1413M3_PASTELG);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 256-1, 16, 240-1);
- m_screen->set_screen_update(FUNC(pastelg_state::screen_update_pastelg));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pastelg_state, screen_update_pastelg)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(pastelg_state::pastelg_palette), 32);
@@ -428,11 +428,10 @@ void pastelg_state::pastelg(machine_config &config)
aysnd.port_b_read_callback().set_ioport("DSWB");
aysnd.add_route(ALL_OUTPUTS, "speaker", 0.35);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
/*
@@ -457,25 +456,25 @@ Note
*/
-void pastelg_state::threeds(machine_config &config)
-{
+MACHINE_CONFIG_START(pastelg_state::threeds)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 19968000/4); /* unknown divider, galds definitely relies on this for correct voice pitch */
- m_maincpu->set_addrmap(AS_PROGRAM, &pastelg_state::pastelg_map);
- m_maincpu->set_addrmap(AS_IO, &pastelg_state::threeds_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(pastelg_state::irq0_line_assert));
+ MCFG_DEVICE_ADD("maincpu", Z80, 19968000/4) /* unknown divider, galds definitely relies on this for correct voice pitch */
+ MCFG_DEVICE_PROGRAM_MAP(pastelg_map)
+ MCFG_DEVICE_IO_MAP(threeds_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pastelg_state, irq0_line_assert)
NB1413M3(config, m_nb1413m3, 0);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 256-1, 16, 240-1);
- m_screen->set_screen_update(FUNC(pastelg_state::screen_update_pastelg));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pastelg_state, screen_update_pastelg)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(pastelg_state::pastelg_palette), 32);
@@ -487,11 +486,10 @@ void pastelg_state::threeds(machine_config &config)
aysnd.port_b_read_callback().set_ioport("DSWA");
aysnd.add_route(ALL_OUTPUTS, "speaker", 0.35);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
ROM_START( pastelg )
diff --git a/src/mame/drivers/patapata.cpp b/src/mame/drivers/patapata.cpp
index 9638f33ef2b..21386d69fa7 100644
--- a/src/mame/drivers/patapata.cpp
+++ b/src/mame/drivers/patapata.cpp
@@ -285,36 +285,37 @@ TIMER_DEVICE_CALLBACK_MEMBER(patapata_state::scanline)
if (param==128) m_maincpu->set_input_line(1, HOLD_LINE);
}
-void patapata_state::patapata(machine_config &config)
-{
- M68000(config, m_maincpu, 16_MHz_XTAL); // 16 MHz XTAL, 16 MHz CPU
- m_maincpu->set_addrmap(AS_PROGRAM, &patapata_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(patapata_state::irq4_line_hold)); // 1 + 4 valid? (4 main VBL)
+MACHINE_CONFIG_START(patapata_state::patapata)
- TIMER(config, "scantimer").configure_scanline(FUNC(patapata_state::scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL) // 16 MHz XTAL, 16 MHz CPU
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", patapata_state, irq4_line_hold) // 1 + 4 valid? (4 main VBL)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", patapata_state, scanline, "screen", 0, 1)
- GFXDECODE(config, m_gfxdecode, "palette", gfx_patapata);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, "palette", gfx_patapata)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 60*8-1, 0*8, 44*8-1);
- screen.set_screen_update(FUNC(patapata_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 60*8-1, 0*8, 44*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(patapata_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::RRRRGGGGBBBBRGBx, 0x600/2);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki1", 16_MHz_XTAL / 4, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 0.40); // not verified
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 16_MHz_XTAL / 4, okim6295_device::PIN7_LOW) // not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
- OKIM6295(config, "oki2", 16_MHz_XTAL / 4, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 0.40); // not verified
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 16_MHz_XTAL / 4, okim6295_device::PIN7_LOW) // not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
nmk112_device &nmk112(NMK112(config, "nmk112", 0)); // or 212? difficult to read (maybe 212 is 2* 112?)
nmk112.set_rom0_tag("oki1");
nmk112.set_rom1_tag("oki2");
-}
+MACHINE_CONFIG_END
ROM_START( patapata )
ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
diff --git a/src/mame/drivers/patinho_feio.cpp b/src/mame/drivers/patinho_feio.cpp
index 2e4697a8186..3dc8ebb7cc7 100644
--- a/src/mame/drivers/patinho_feio.cpp
+++ b/src/mame/drivers/patinho_feio.cpp
@@ -85,7 +85,7 @@ void patinho_feio_state::update_panel(uint8_t ACC, uint8_t opcode, uint8_t mem_d
WRITE8_MEMBER(patinho_feio_state::decwriter_data_w)
{
- m_decwriter->write(data);
+ m_decwriter->write(space, 0, data);
m_maincpu->set_iodev_status(0xA, IODEV_BUSY);
@@ -113,7 +113,7 @@ void patinho_feio_state::decwriter_kbd_input(u8 data)
WRITE8_MEMBER(patinho_feio_state::teletype_data_w)
{
- m_tty->write(data);
+ m_tty->write(space, 0, data);
m_maincpu->set_iodev_status(0xB, IODEV_READY);
m_teletype_timer->adjust(attotime::from_hz(10)); //10 characters per second
diff --git a/src/mame/drivers/pbaction.cpp b/src/mame/drivers/pbaction.cpp
index e327f926ff3..0e12ebdd703 100644
--- a/src/mame/drivers/pbaction.cpp
+++ b/src/mame/drivers/pbaction.cpp
@@ -448,8 +448,8 @@ static const z80_daisy_config daisy_chain[] =
{ nullptr }
};
-void pbaction_state::pbaction(machine_config &config)
-{
+MACHINE_CONFIG_START(pbaction_state::pbaction)
+
/* basic machine hardware */
Z80(config, m_maincpu, 4_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &pbaction_state::pbaction_map);
@@ -463,14 +463,14 @@ void pbaction_state::pbaction(machine_config &config)
m_ctc->intr_callback().set_inputline(m_audiocpu, 0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(pbaction_state::screen_update_pbaction));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(pbaction_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pbaction_state, screen_update_pbaction)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pbaction_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pbaction);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 256);
@@ -483,7 +483,7 @@ void pbaction_state::pbaction(machine_config &config)
AY8910(config, "ay1", 12_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 0.25);
AY8910(config, "ay2", 12_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 0.25);
AY8910(config, "ay3", 12_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
void pbaction_state::pbactionx(machine_config &config)
{
diff --git a/src/mame/drivers/pc.cpp b/src/mame/drivers/pc.cpp
index 64e490b327e..61336c9c9c9 100644
--- a/src/mame/drivers/pc.cpp
+++ b/src/mame/drivers/pc.cpp
@@ -203,25 +203,24 @@ MACHINE_CONFIG_START(pc_state::pccga)
/* basic machine hardware */
MCFG_CPU_PC(pc8, pc8, I8088, 4772720) /* 4,77 MHz */
- ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
- mb.set_cputag(m_maincpu);
- mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(pccga));
+ MCFG_IBM5160_MOTHERBOARD_ADD("mb", "maincpu")
+ MCFG_DEVICE_INPUT_DEFAULTS(pccga)
// FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "cga", false);
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, "fdc_xt", false);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, "lpt", false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "com", false);
- ISA8_SLOT(config, "isa5", 0, "mb:isa", pc_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "cga", false)
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "lpt", false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", false)
+ MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
/* keyboard */
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
+ MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
/* software lists */
- SOFTWARE_LIST(config, "disk_list").set_original("ibm5150");
+ MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
MACHINE_CONFIG_END
@@ -254,12 +253,13 @@ Expansion: 8087 FPU
******************************************************************************/
-void pc_state::ataripc1(machine_config &config)
-{
+MACHINE_CONFIG_START(pc_state::ataripc1)
pccga(config);
- subdevice<isa8_slot_device>("isa1")->set_default_option("ega");
- subdevice<isa8_slot_device>("isa2")->set_option_machine_config("fdc_xt", cfg_single_360K);
-}
+ MCFG_DEVICE_MODIFY("isa1")
+ MCFG_SLOT_DEFAULT_OPTION("ega")
+ MCFG_DEVICE_MODIFY("isa2")
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc_xt", cfg_single_360K)
+MACHINE_CONFIG_END
ROM_START ( ataripc1 )
ROM_REGION(0x10000,"bios", 0)
@@ -329,7 +329,7 @@ INPUT_PORTS_END
MACHINE_CONFIG_START(pc_state::bondwell)
pccga(config);
- config.device_remove("maincpu");
+ MCFG_DEVICE_REMOVE("maincpu")
MCFG_CPU_PC(pc8, pc8, I8088, 4772720) // turbo?
MACHINE_CONFIG_END
@@ -355,14 +355,13 @@ ToDo: The ROM for the CGA is available (see ROM section)
******************************************************************************/
-void pc_state::mpc1600(machine_config &config)
-{
+MACHINE_CONFIG_START(pc_state::mpc1600)
pccga(config);
- ISA8_SLOT(config, "isa6", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa7", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa8", 0, "mb:isa", pc_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa6", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa7", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa8", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
subdevice<ram_device>(RAM_TAG)->set_default_size("128K").set_extra_options("256K, 512K, 640K");
-}
+MACHINE_CONFIG_END
ROM_START( mpc1600 )
ROM_REGION(0x10000,"bios", 0)
@@ -408,12 +407,12 @@ CPU:
******************************************************************************/
-void pc_state::comport(machine_config &config)
-{
+MACHINE_CONFIG_START(pc_state::comport)
pccga(config);
- subdevice<isa8_slot_device>("isa1")->set_default_option("ega");
+ MCFG_DEVICE_MODIFY("isa1")
+ MCFG_SLOT_DEFAULT_OPTION("ega")
subdevice<ram_device>(RAM_TAG)->set_default_size("128K").set_extra_options("256K, 512K, 640K");
-}
+MACHINE_CONFIG_END
ROM_START( comport )
ROM_REGION(0x10000, "bios", 0)
@@ -424,7 +423,7 @@ ROM_START( comport )
ROMX_LOAD("compaq_portable_rev_c.bin", 0xe000, 0x2000, CRC(1d1f7c38) SHA1(d9782eb46cd1a7d40f3e8b37eb48db04ac588acb), ROM_BIOS(1))
ROM_REGION(0x8000,"gfx1", 0)
- ROM_LOAD("compaq_portable_video_cpqvid.bin", 0x0000, 0x1ffe, BAD_DUMP CRC(3ae64565) SHA1(6eeb06620e588a2f7bfab72eb4fadbd70503ea94))
+ ROM_LOAD("compaq_portable_video_cpqvid.bin", 0x0000, 0x2000, BAD_DUMP CRC(3ae64565) SHA1(6eeb06620e588a2f7bfab72eb4fadbd70503ea94))
ROM_END
@@ -446,11 +445,11 @@ Expansion: Expansion box, with 5 ISA slots and space for a 5.25" drive and a har
******************************************************************************/
-void pc_state::dgone(machine_config &config)
-{
+MACHINE_CONFIG_START(pc_state::dgone)
pccga(config);
- subdevice<isa8_slot_device>("isa2")->set_option_machine_config("fdc_xt", cfg_dual_720K);
-}
+ MCFG_DEVICE_MODIFY("isa2")
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc_xt", cfg_dual_720K)
+MACHINE_CONFIG_END
ROM_START( dgone )
ROM_REGION(0x10000,"bios", 0)
@@ -486,7 +485,7 @@ Options: 8087 FPU, EagleNet File server, EightPort serial card, High Resolution
MACHINE_CONFIG_START(pc_state::eagle1600)
pccga(config);
- config.device_remove("maincpu");
+ MCFG_DEVICE_REMOVE("maincpu")
MCFG_CPU_PC(pc16, pc16, I8086, 8000000)
MACHINE_CONFIG_END
@@ -556,10 +555,11 @@ void pc_state::epc_io(address_map &map)
MACHINE_CONFIG_START(pc_state::epc)
pccga(config);
- config.device_remove("maincpu");
+ MCFG_DEVICE_REMOVE("maincpu")
MCFG_CPU_PC(pc8, epc, I8088, 4772720)
- subdevice<isa8_slot_device>("isa1")->set_default_option("ega");
- I8251(config, "i8251", 0); // clock?
+ MCFG_DEVICE_MODIFY("isa1")
+ MCFG_SLOT_DEFAULT_OPTION("ega")
+ MCFG_DEVICE_ADD("i8251", I8251, 0) // clock?
MACHINE_CONFIG_END
ROM_START( epc )
@@ -617,18 +617,17 @@ MACHINE_CONFIG_START(pc_state::ibm5550)
/* basic machine hardware */
MCFG_CPU_PC(pc16, ibm5550, I8086, 8000000)
- ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
- mb.set_cputag(m_maincpu);
- mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(pccga));
+ MCFG_IBM5160_MOTHERBOARD_ADD("mb", "maincpu")
+ MCFG_DEVICE_INPUT_DEFAULTS(pccga)
// FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "cga", false);
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, "fdc_xt", false);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, "lpt", false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "com", false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "cga", false)
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "lpt", false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", false)
/* keyboard */
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
+ MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
@@ -680,16 +679,20 @@ Misc: A Kaypro 16/2 is a configuration without harddisk but with two floppy disk
******************************************************************************/
-void pc_state::kaypro16(machine_config &config)
-{
+MACHINE_CONFIG_START(pc_state::kaypro16)
pccga(config);
- subdevice<isa8_slot_device>("isa1")->set_fixed(true);
- subdevice<isa8_slot_device>("isa2")->set_fixed(true);
- subdevice<isa8_slot_device>("isa3")->set_fixed(true);
- subdevice<isa8_slot_device>("isa4")->set_fixed(true);
- subdevice<isa8_slot_device>("isa5")->set_default_option(nullptr);
+ MCFG_DEVICE_MODIFY("isa1")
+ MCFG_SLOT_FIXED(true)
+ MCFG_DEVICE_MODIFY("isa2")
+ MCFG_SLOT_FIXED(true)
+ MCFG_DEVICE_MODIFY("isa3")
+ MCFG_SLOT_FIXED(true)
+ MCFG_DEVICE_MODIFY("isa4")
+ MCFG_SLOT_FIXED(true)
+ MCFG_DEVICE_MODIFY("isa5")
+ MCFG_SLOT_DEFAULT_OPTION(nullptr)
subdevice<ram_device>(RAM_TAG)->set_default_size("256K").set_extra_options("512K, 640K");
-}
+MACHINE_CONFIG_END
ROM_START( kaypro16 )
ROM_REGION(0x10000, "bios", 0)
@@ -701,11 +704,11 @@ ROM_END
******************************************************************************/
// MK-88
-void pc_state::mk88(machine_config &config)
-{
+MACHINE_CONFIG_START(pc_state::mk88)
poisk2(config);
- subdevice<isa8_slot_device>("isa1")->set_default_option("cga_ec1841");
-}
+ MCFG_DEVICE_MODIFY("isa1")
+ MCFG_SLOT_DEFAULT_OPTION("cga_ec1841")
+MACHINE_CONFIG_END
// MK-88
ROM_START( mk88 )
@@ -746,15 +749,14 @@ Options: 8087 FPU, K101 memory upgrade in 64K steps, 1.2MB floppy and controller
******************************************************************************/
-void pc_state::ncrpc4i(machine_config & config)
-{
+MACHINE_CONFIG_START(pc_state::ncrpc4i)
pccga(config);
//MCFG_DEVICE_MODIFY("mb:isa")
- ISA8_SLOT(config, "isa6", 0, "mb:isa", pc_isa8_cards, nullptr, false); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa7", 0, "mb:isa", pc_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa6", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false) // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa7", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
subdevice<ram_device>(RAM_TAG)->set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
-}
+MACHINE_CONFIG_END
ROM_START( ncrpc4i )
ROM_REGION(0x10000,"bios", 0)
@@ -785,14 +787,15 @@ static DEVICE_INPUT_DEFAULTS_START( m15 )
DEVICE_INPUT_DEFAULTS("DSW0", 0x01, 0x00)
DEVICE_INPUT_DEFAULTS_END
-void pc_state::m15(machine_config &config)
-{
+MACHINE_CONFIG_START(pc_state::m15)
pccga(config);
- subdevice<ibm5160_mb_device>("mb")->set_input_default(DEVICE_INPUT_DEFAULTS_NAME(m15));
- subdevice<isa8_slot_device>("isa2")->set_option_machine_config("fdc_xt", cfg_dual_720K);
+ MCFG_DEVICE_MODIFY("mb")
+ MCFG_DEVICE_INPUT_DEFAULTS(m15)
+ MCFG_DEVICE_MODIFY("isa2")
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc_xt", cfg_dual_720K)
subdevice<ram_device>(RAM_TAG)->set_default_size("448K").set_extra_options("16K, 160K, 304K");
-}
+MACHINE_CONFIG_END
ROM_START( olivm15 )
ROM_REGION(0x10000,"bios", 0)
@@ -819,11 +822,14 @@ Options: 8087 FPU
MACHINE_CONFIG_START(pc_state::olytext30)
pccga(config);
- config.device_remove("maincpu");
+ MCFG_DEVICE_REMOVE("maincpu")
MCFG_CPU_PC(pc8, pc8, V20, XTAL(14'318'181)/3) /* 4,77 MHz */
- subdevice<isa8_slot_device>("isa2")->set_option_machine_config("fdc_xt", cfg_single_720K);
- subdevice<isa8_slot_device>("isa3")->set_default_option("");
- subdevice<isa8_slot_device>("isa5")->set_default_option("hdc");
+ MCFG_DEVICE_MODIFY("isa2")
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc_xt", cfg_single_720K)
+ MCFG_DEVICE_MODIFY("isa3")
+ MCFG_SLOT_DEFAULT_OPTION("")
+ MCFG_DEVICE_MODIFY("isa5")
+ MCFG_SLOT_DEFAULT_OPTION("hdc")
subdevice<ram_device>(RAM_TAG)->set_default_size("768K");
MACHINE_CONFIG_END
@@ -841,17 +847,16 @@ MACHINE_CONFIG_START(pc_state::poisk2)
/* basic machine hardware */
MCFG_CPU_PC(pc16, pc16, I8086, 4772720)
- ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
- mb.set_cputag(m_maincpu);
- mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(pccga));
+ MCFG_IBM5160_MOTHERBOARD_ADD("mb", "maincpu")
+ MCFG_DEVICE_INPUT_DEFAULTS(pccga)
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "cga_poisk2", false); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, "fdc_xt", false);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, "lpt", false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "com", false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "cga_poisk2", false) // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "lpt", false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", false)
/* keyboard */
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
+ MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
@@ -933,17 +938,18 @@ MACHINE_CONFIG_START(pc_state::iskr3104)
/* basic machine hardware */
MCFG_CPU_PC(pc16, pc16, I8086, 4772720)
- ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
- mb.set_cputag(m_maincpu);
- mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(iskr3104));
+ MCFG_IBM5160_MOTHERBOARD_ADD("mb", "maincpu")
+ MCFG_DEVICE_INPUT_DEFAULTS(iskr3104)
+
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "ega", false) // FIXME: determine ISA bus clock
+ MCFG_SLOT_OPTION_DEFAULT_BIOS("ega", "iskr3104")
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "ega", false).set_option_default_bios("ega", "iskr3104"); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, "fdc_xt", false);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, "lpt", false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "com", false);
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "lpt", false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", false)
/* keyboard */
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
+ MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
@@ -1008,20 +1014,19 @@ MACHINE_CONFIG_START(pc_state::siemens)
/* basic machine hardware */
MCFG_CPU_PC(pc8, pc8, I8088, XTAL(14'318'181)/3) /* 4,77 MHz */
- ibm5150_mb_device &mb(IBM5150_MOTHERBOARD(config, "mb", 0));
- mb.set_cputag(m_maincpu);
- mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(siemens));
+ MCFG_IBM5150_MOTHERBOARD_ADD("mb", "maincpu")
+ MCFG_DEVICE_INPUT_DEFAULTS(siemens)
// FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "hercules", false);
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, "fdc_xt", false);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, "lpt", false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "com", false);
- ISA8_SLOT(config, "isa5", 0, "mb:isa", pc_isa8_cards, "hdc", false);
- ISA8_SLOT(config, "isa6", 0, "mb:isa", pc_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "hercules", false)
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "lpt", false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", false)
+ MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "hdc", false)
+ MCFG_DEVICE_ADD("isa6", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
/* keyboard */
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
+ MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
@@ -1052,28 +1057,27 @@ Options: 8087 FPU
MACHINE_CONFIG_START(pc_state::laser_turbo_xt)
MCFG_CPU_PC(pc8, pc8, I8088, XTAL(14'318'181)/3) /* 4,77 MHz */
- ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
- mb.set_cputag(m_maincpu);
- mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(pccga));
+ MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu")
+ MCFG_DEVICE_INPUT_DEFAULTS(pccga)
// FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "cga", false);
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, "com", false); // Multi I/O card (includes FDC)
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, "fdc_xt", false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa5", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa6", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa7", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa8", 0, "mb:isa", pc_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "cga", false)
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", false) // Multi I/O card (includes FDC)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa6", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa7", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa8", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
/* keyboard */
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
+ MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("512K,768K,896K,1024K,1408K,1536K,1664K");
/* software lists */
- SOFTWARE_LIST(config, "disk_list").set_original("ibm5150");
+ MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
MACHINE_CONFIG_END
ROM_START( laser_turbo_xt )
@@ -1132,23 +1136,23 @@ MACHINE_CONFIG_START(pc_state::zenith)
/* basic machine hardware */
MCFG_CPU_PC(zenith, pc8, I8088, XTAL(14'318'181)/3) /* 4,77 MHz */
- ibm5150_mb_device &mb(IBM5150_MOTHERBOARD(config, "mb", 0));
- mb.set_cputag(m_maincpu);
- mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(pccga));
+ MCFG_IBM5150_MOTHERBOARD_ADD("mb", "maincpu")
+ MCFG_DEVICE_INPUT_DEFAULTS(pccga)
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "cga", false); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, "fdc_xt", false).set_option_machine_config("fdc_xt", cfg_dual_720K);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, "lpt", false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "com", false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "cga", false) // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", false)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc_xt", cfg_dual_720K)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "lpt", false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", false)
/* keyboard */
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
+ MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("128K, 256K, 512K");
/* software lists */
- SOFTWARE_LIST(config, "disk_list").set_original("ibm5150");
+ MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
MACHINE_CONFIG_END
ROM_START( zdsupers )
diff --git a/src/mame/drivers/pc100.cpp b/src/mame/drivers/pc100.cpp
index c4c446ed822..5faf9330f26 100644
--- a/src/mame/drivers/pc100.cpp
+++ b/src/mame/drivers/pc100.cpp
@@ -634,8 +634,7 @@ static void pc100_floppies(device_slot_interface &device)
#define MASTER_CLOCK 6988800
-void pc100_state::pc100(machine_config &config)
-{
+MACHINE_CONFIG_START(pc100_state::pc100)
/* basic machine hardware */
I8086(config, m_maincpu, MASTER_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &pc100_state::pc100_map);
@@ -643,10 +642,10 @@ void pc100_state::pc100(machine_config &config)
m_maincpu->set_vblank_int("screen", FUNC(pc100_state::pc100_vblank_irq));
m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
- TIMER(config, "600hz").configure_periodic(FUNC(pc100_state::pc100_600hz_irq), attotime::from_hz(MASTER_CLOCK/600));
- TIMER(config, "100hz").configure_periodic(FUNC(pc100_state::pc100_100hz_irq), attotime::from_hz(MASTER_CLOCK/100));
- TIMER(config, "50hz").configure_periodic(FUNC(pc100_state::pc100_50hz_irq), attotime::from_hz(MASTER_CLOCK/50));
- TIMER(config, "10hz").configure_periodic(FUNC(pc100_state::pc100_10hz_irq), attotime::from_hz(MASTER_CLOCK/10));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("600hz", pc100_state, pc100_600hz_irq, attotime::from_hz(MASTER_CLOCK/600))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("100hz", pc100_state, pc100_100hz_irq, attotime::from_hz(MASTER_CLOCK/100))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("50hz", pc100_state, pc100_50hz_irq, attotime::from_hz(MASTER_CLOCK/50))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("10hz", pc100_state, pc100_10hz_irq, attotime::from_hz(MASTER_CLOCK/10))
i8255_device &ppi1(I8255(config, "ppi8255_1"));
ppi1.out_pa_callback().set(FUNC(pc100_state::rtc_porta_w));
@@ -672,21 +671,21 @@ void pc100_state::pc100(machine_config &config)
m_fdc->intrq_wr_callback().set(FUNC(pc100_state::irqnmi_w));
m_fdc->drq_wr_callback().set(FUNC(pc100_state::drqnmi_w));
- MSM58321(config, m_rtc, XTAL(32'768));
- m_rtc->d0_handler().set(FUNC(pc100_state::rtc_portc_0_w));
- m_rtc->d1_handler().set(FUNC(pc100_state::rtc_portc_1_w));
- m_rtc->d2_handler().set(FUNC(pc100_state::rtc_portc_2_w));
- m_rtc->d3_handler().set(FUNC(pc100_state::rtc_portc_3_w));
+ MCFG_DEVICE_ADD("rtc", MSM58321, XTAL(32'768))
+ MCFG_MSM58321_D0_HANDLER(WRITELINE(*this, pc100_state, rtc_portc_0_w))
+ MCFG_MSM58321_D1_HANDLER(WRITELINE(*this, pc100_state, rtc_portc_1_w))
+ MCFG_MSM58321_D2_HANDLER(WRITELINE(*this, pc100_state, rtc_portc_2_w))
+ MCFG_MSM58321_D3_HANDLER(WRITELINE(*this, pc100_state, rtc_portc_3_w))
- FLOPPY_CONNECTOR(config, "upd765:0", pc100_floppies, "525dd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765:1", pc100_floppies, "525dd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("upd765:0", pc100_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765:1", pc100_floppies, "525dd", floppy_image_device::default_floppy_formats)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ MCFG_SCREEN_ADD("screen", RASTER)
/* TODO: Unknown Pixel Clock and CRTC is dynamic */
- screen.set_raw(MASTER_CLOCK*4, 1024, 0, 768, 264*2, 0, 512);
- screen.set_screen_update(FUNC(pc100_state::screen_update_pc100));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK*4, 1024, 0, 768, 264*2, 0, 512)
+ MCFG_SCREEN_UPDATE_DRIVER(pc100_state, screen_update_pc100)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", m_palette, gfx_pc100);
PALETTE(config, m_palette).set_format(palette_device::xBGR_333, 16);
@@ -694,7 +693,7 @@ void pc100_state::pc100(machine_config &config)
SPEAKER(config, "mono").front_center();
BEEP(config, m_beeper, 2400).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( pc100 )
diff --git a/src/mame/drivers/pc1512.cpp b/src/mame/drivers/pc1512.cpp
index 6063960ff70..c523b83473b 100644
--- a/src/mame/drivers/pc1512.cpp
+++ b/src/mame/drivers/pc1512.cpp
@@ -558,16 +558,16 @@ READ8_MEMBER( pc1640_state::io_r )
offs_t addr = offset & 0x3ff;
bool decoded = false;
- if ( addr <= 0x00f) { data = m_dmac->read(offset & 0x0f); decoded = true; }
+ if ( addr <= 0x00f) { data = m_dmac->read(space, offset & 0x0f); decoded = true; }
else if (addr >= 0x020 && addr <= 0x021) { data = m_pic->read(offset & 0x01); decoded = true; }
else if (addr >= 0x040 && addr <= 0x043) { data = m_pit->read(offset & 0x03); decoded = true; }
else if (addr >= 0x060 && addr <= 0x06f) { data = system_r(space, offset & 0x0f); decoded = true; }
- else if (addr >= 0x070 && addr <= 0x073) { data = m_rtc->read(offset & 0x01); decoded = true; }
+ else if (addr >= 0x070 && addr <= 0x073) { data = m_rtc->read(space, offset & 0x01); decoded = true; }
else if (addr >= 0x078 && addr <= 0x07f) { data = mouse_r(space, offset & 0x07); decoded = true; }
else if (addr >= 0x378 && addr <= 0x37b) { data = printer_r(space, offset & 0x03); decoded = true; }
else if (addr >= 0x3b0 && addr <= 0x3df) { decoded = true; }
- else if (addr >= 0x3f4 && addr <= 0x3f4) { data = m_fdc->fdc->msr_r(); decoded = true; }
- else if (addr >= 0x3f5 && addr <= 0x3f5) { data = m_fdc->fdc->fifo_r(); decoded = true; }
+ else if (addr >= 0x3f4 && addr <= 0x3f4) { data = m_fdc->fdc->msr_r(space, offset & 0x01); decoded = true; }
+ else if (addr >= 0x3f5 && addr <= 0x3f5) { data = m_fdc->fdc->fifo_r(space, offset & 0x01); decoded = true; }
else if (addr >= 0x3f8 && addr <= 0x3ff) { data = m_uart->ins8250_r(space, offset & 0x07); decoded = true; }
if (decoded)
@@ -1152,15 +1152,14 @@ void pc1640_state::machine_start()
//**************************************************************************
//-------------------------------------------------
-// machine_config( pc1512 )
+// MACHINE_CONFIG( pc1512 )
//-------------------------------------------------
-void pc1512_state::pc1512(machine_config &config)
-{
- I8086(config, m_maincpu, 24_MHz_XTAL / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &pc1512_state::pc1512_mem);
- m_maincpu->set_addrmap(AS_IO, &pc1512_state::pc1512_io);
- m_maincpu->set_irq_acknowledge_callback(I8259A2_TAG, FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(pc1512_state::pc1512)
+ MCFG_DEVICE_ADD(I8086_TAG, I8086, 24_MHz_XTAL / 3)
+ MCFG_DEVICE_PROGRAM_MAP(pc1512_mem)
+ MCFG_DEVICE_IO_MAP(pc1512_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(I8259A2_TAG, pic8259_device, inta_cb)
// video
pc1512_video(config);
@@ -1174,11 +1173,11 @@ void pc1512_state::pc1512(machine_config &config)
m_kb->clock_wr_callback().set(FUNC(pc1512_state::kbclk_w));
m_kb->data_wr_callback().set(FUNC(pc1512_state::kbdata_w));
- pc1512_mouse_port_device &mouse(PC1512_MOUSE_PORT(config, PC1512_MOUSE_PORT_TAG, pc1512_mouse_port_devices, "mouse"));
- mouse.x_wr_callback().set(FUNC(pc1512_base_state::mouse_x_w));
- mouse.y_wr_callback().set(FUNC(pc1512_base_state::mouse_y_w));
- mouse.m1_wr_callback().set(m_kb, FUNC(pc1512_keyboard_device::m1_w));
- mouse.m2_wr_callback().set(m_kb, FUNC(pc1512_keyboard_device::m2_w));
+ MCFG_PC1512_MOUSE_PORT_ADD(PC1512_MOUSE_PORT_TAG, pc1512_mouse_port_devices, "mouse")
+ MCFG_PC1512_MOUSE_PORT_X_CB(WRITE8(*this, pc1512_state, mouse_x_w))
+ MCFG_PC1512_MOUSE_PORT_Y_CB(WRITE8(*this, pc1512_state, mouse_y_w))
+ MCFG_PC1512_MOUSE_PORT_M1_CB(WRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m1_w))
+ MCFG_PC1512_MOUSE_PORT_M2_CB(WRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m2_w))
AM9517A(config, m_dmac, 24_MHz_XTAL / 6);
m_dmac->out_hreq_callback().set(FUNC(pc1512_state::hrq_w));
@@ -1197,10 +1196,10 @@ void pc1512_state::pc1512(machine_config &config)
m_dmac->out_dack_callback<2>().set(FUNC(pc1512_state::dack2_w));
m_dmac->out_dack_callback<3>().set(FUNC(pc1512_state::dack3_w));
- PIC8259(config, m_pic);
+ PIC8259(config, m_pic, 0);
m_pic->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- PIT8253(config, m_pit);
+ PIT8253(config, m_pit, 0);
m_pit->set_clk<0>(28.636363_MHz_XTAL / 24);
m_pit->out_handler<0>().set(m_pic, FUNC(pic8259_device::ir0_w));
m_pit->set_clk<1>(28.636363_MHz_XTAL / 24);
@@ -1214,8 +1213,8 @@ void pc1512_state::pc1512(machine_config &config)
PC_FDC_XT(config, m_fdc, 0);
m_fdc->intrq_wr_callback().set(FUNC(pc1512_state::fdc_int_w));
m_fdc->drq_wr_callback().set(FUNC(pc1512_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, PC_FDC_XT_TAG ":0", pc1512_floppies, "525dd", pc1512_base_state::floppy_formats);
- FLOPPY_CONNECTOR(config, PC_FDC_XT_TAG ":1", pc1512_floppies, nullptr, pc1512_base_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(PC_FDC_XT_TAG ":0", pc1512_floppies, "525dd", pc1512_base_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(PC_FDC_XT_TAG ":1", pc1512_floppies, nullptr, pc1512_base_state::floppy_formats)
INS8250(config, m_uart, 1.8432_MHz_XTAL);
m_uart->out_tx_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
@@ -1223,15 +1222,13 @@ void pc1512_state::pc1512(machine_config &config)
m_uart->out_rts_callback().set(RS232_TAG, FUNC(rs232_port_device::write_rts));
m_uart->out_int_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(FUNC(pc1512_state::write_centronics_ack));
- m_centronics->busy_handler().set(FUNC(pc1512_state::write_centronics_busy));
- m_centronics->perror_handler().set(FUNC(pc1512_state::write_centronics_perror));
- m_centronics->select_handler().set(FUNC(pc1512_state::write_centronics_select));
- m_centronics->fault_handler().set(FUNC(pc1512_state::write_centronics_fault));
-
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, pc1512_state, write_centronics_ack))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, pc1512_state, write_centronics_busy))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, pc1512_state, write_centronics_perror))
+ MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, pc1512_state, write_centronics_select))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, pc1512_state, write_centronics_fault))
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr));
rs232.rxd_handler().set(m_uart, FUNC(ins8250_uart_device::rx_w));
@@ -1242,8 +1239,7 @@ void pc1512_state::pc1512(machine_config &config)
// ISA8 bus
isa8_device &isa(ISA8(config, ISA_BUS_TAG, 0));
- isa.set_memspace(m_maincpu, AS_PROGRAM);
- isa.set_iospace(m_maincpu, AS_IO);
+ isa.set_cputag(I8086_TAG);
isa.irq2_callback().set(m_pic, FUNC(pic8259_device::ir2_w));
isa.irq3_callback().set(m_pic, FUNC(pic8259_device::ir3_w));
isa.irq4_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
@@ -1253,52 +1249,51 @@ void pc1512_state::pc1512(machine_config &config)
isa.drq1_callback().set(I8237A5_TAG, FUNC(am9517a_device::dreq1_w));
isa.drq2_callback().set(I8237A5_TAG, FUNC(am9517a_device::dreq2_w));
isa.drq3_callback().set(I8237A5_TAG, FUNC(am9517a_device::dreq3_w));
- ISA8_SLOT(config, "isa1", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false); // FIXME: determine ISA clock
- ISA8_SLOT(config, "isa2", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa3", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false) // FIXME: determine ISA clock
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false)
// internal ram
RAM(config, RAM_TAG).set_default_size("512K").set_extra_options("544K,576K,608K,640K");
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("pc1512_flop");
- SOFTWARE_LIST(config, "hdd_list").set_original("pc1512_hdd");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "pc1512_flop")
+ MCFG_SOFTWARE_LIST_ADD("hdd_list", "pc1512_hdd")
+MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( pc1512dd )
+// MACHINE_CONFIG( pc1512dd )
//-------------------------------------------------
-void pc1512_state::pc1512dd(machine_config &config)
-{
+MACHINE_CONFIG_START(pc1512_state::pc1512dd)
pc1512(config);
- subdevice<floppy_connector>(PC_FDC_XT_TAG ":1")->set_default_option("525dd");
-}
+ MCFG_DEVICE_MODIFY(PC_FDC_XT_TAG ":1")
+ MCFG_SLOT_DEFAULT_OPTION("525dd")
+MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( pc1512hd )
+// MACHINE_CONFIG( pc1512hd )
//-------------------------------------------------
-void pc1512_state::pc1512hd(machine_config &config)
-{
+MACHINE_CONFIG_START(pc1512_state::pc1512hd)
pc1512(config);
- //subdevice<isa8_slot_device>("isa1")->set_default_option("wdxt_gen");
- subdevice<isa8_slot_device>("isa1")->set_default_option("hdc");
-}
+ MCFG_DEVICE_MODIFY("isa1")
+ //MCFG_SLOT_DEFAULT_OPTION("wdxt_gen")
+ MCFG_SLOT_DEFAULT_OPTION("hdc")
+MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( pc1640 )
+// MACHINE_CONFIG( pc1640 )
//-------------------------------------------------
-void pc1640_state::pc1640(machine_config &config)
-{
- I8086(config, m_maincpu, 24_MHz_XTAL / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &pc1640_state::pc1640_mem);
- m_maincpu->set_addrmap(AS_IO, &pc1640_state::pc1640_io);
- m_maincpu->set_irq_acknowledge_callback(I8259A2_TAG, FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(pc1640_state::pc1640)
+ MCFG_DEVICE_ADD(I8086_TAG, I8086, 24_MHz_XTAL / 3)
+ MCFG_DEVICE_PROGRAM_MAP(pc1640_mem)
+ MCFG_DEVICE_IO_MAP(pc1640_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(I8259A2_TAG, pic8259_device, inta_cb)
// sound
SPEAKER(config, "mono").front_center();
@@ -1309,11 +1304,11 @@ void pc1640_state::pc1640(machine_config &config)
m_kb->clock_wr_callback().set(FUNC(pc1512_base_state::kbclk_w));
m_kb->data_wr_callback().set(FUNC(pc1512_base_state::kbdata_w));
- pc1512_mouse_port_device &mouse(PC1512_MOUSE_PORT(config, PC1512_MOUSE_PORT_TAG, pc1512_mouse_port_devices, "mouse"));
- mouse.x_wr_callback().set(FUNC(pc1512_base_state::mouse_x_w));
- mouse.y_wr_callback().set(FUNC(pc1512_base_state::mouse_y_w));
- mouse.m1_wr_callback().set(m_kb, FUNC(pc1512_keyboard_device::m1_w));
- mouse.m2_wr_callback().set(m_kb, FUNC(pc1512_keyboard_device::m2_w));
+ MCFG_PC1512_MOUSE_PORT_ADD(PC1512_MOUSE_PORT_TAG, pc1512_mouse_port_devices, "mouse")
+ MCFG_PC1512_MOUSE_PORT_X_CB(WRITE8(*this, pc1512_base_state, mouse_x_w))
+ MCFG_PC1512_MOUSE_PORT_Y_CB(WRITE8(*this, pc1512_base_state, mouse_y_w))
+ MCFG_PC1512_MOUSE_PORT_M1_CB(WRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m1_w))
+ MCFG_PC1512_MOUSE_PORT_M2_CB(WRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m2_w))
AM9517A(config, m_dmac, 24_MHz_XTAL / 6);
m_dmac->out_hreq_callback().set(FUNC(pc1640_state::hrq_w));
@@ -1349,8 +1344,8 @@ void pc1640_state::pc1640(machine_config &config)
PC_FDC_XT(config, m_fdc, 0);
m_fdc->intrq_wr_callback().set(FUNC(pc1512_base_state::fdc_int_w));
m_fdc->drq_wr_callback().set(FUNC(pc1512_base_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, PC_FDC_XT_TAG ":0", pc1512_floppies, "525dd", pc1512_base_state::floppy_formats);
- FLOPPY_CONNECTOR(config, PC_FDC_XT_TAG ":1", pc1512_floppies, nullptr, pc1512_base_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(PC_FDC_XT_TAG ":0", pc1512_floppies, "525dd", pc1512_base_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(PC_FDC_XT_TAG ":1", pc1512_floppies, nullptr, pc1512_base_state::floppy_formats)
INS8250(config, m_uart, 1.8432_MHz_XTAL);
m_uart->out_tx_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
@@ -1358,15 +1353,13 @@ void pc1640_state::pc1640(machine_config &config)
m_uart->out_rts_callback().set(RS232_TAG, FUNC(rs232_port_device::write_rts));
m_uart->out_int_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(FUNC(pc1512_state::write_centronics_ack));
- m_centronics->busy_handler().set(FUNC(pc1512_state::write_centronics_busy));
- m_centronics->perror_handler().set(FUNC(pc1512_state::write_centronics_perror));
- m_centronics->select_handler().set(FUNC(pc1512_state::write_centronics_select));
- m_centronics->fault_handler().set(FUNC(pc1512_state::write_centronics_fault));
-
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, pc1512_base_state, write_centronics_ack))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, pc1512_base_state, write_centronics_busy))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, pc1512_base_state, write_centronics_perror))
+ MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, pc1512_base_state, write_centronics_select))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, pc1512_base_state, write_centronics_fault))
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr));
rs232.rxd_handler().set(m_uart, FUNC(ins8250_uart_device::rx_w));
@@ -1377,8 +1370,7 @@ void pc1640_state::pc1640(machine_config &config)
// ISA8 bus
isa8_device &isa(ISA8(config, ISA_BUS_TAG, 0));
- isa.set_memspace(m_maincpu, AS_PROGRAM);
- isa.set_iospace(m_maincpu, AS_IO);
+ isa.set_cputag(I8086_TAG);
isa.irq2_callback().set(m_pic, FUNC(pic8259_device::ir2_w));
isa.irq3_callback().set(m_pic, FUNC(pic8259_device::ir3_w));
isa.irq4_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
@@ -1388,42 +1380,42 @@ void pc1640_state::pc1640(machine_config &config)
isa.drq1_callback().set(I8237A5_TAG, FUNC(am9517a_device::dreq1_w));
isa.drq2_callback().set(I8237A5_TAG, FUNC(am9517a_device::dreq2_w));
isa.drq3_callback().set(I8237A5_TAG, FUNC(am9517a_device::dreq3_w));
- ISA8_SLOT(config, "isa1", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa2", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa3", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa4", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa5", 0, ISA_BUS_TAG, pc1640_isa8_cards, "iga", false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false) // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, ISA_BUS_TAG, pc1640_isa8_cards, "iga", false)
// internal ram
RAM(config, RAM_TAG).set_default_size("640K");
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("pc1640_flop");
- SOFTWARE_LIST(config, "hdd_list").set_original("pc1640_hdd");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "pc1640_flop")
+ MCFG_SOFTWARE_LIST_ADD("hdd_list", "pc1640_hdd")
+MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( pc1640dd )
+// MACHINE_CONFIG( pc1640dd )
//-------------------------------------------------
-void pc1640_state::pc1640dd(machine_config &config)
-{
+MACHINE_CONFIG_START(pc1640_state::pc1640dd)
pc1640(config);
- subdevice<floppy_connector>(PC_FDC_XT_TAG ":1")->set_default_option("525dd");
-}
+ MCFG_DEVICE_MODIFY(PC_FDC_XT_TAG ":1")
+ MCFG_SLOT_DEFAULT_OPTION("525dd")
+MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( pc1640hd )
+// MACHINE_CONFIG( pc1640hd )
//-------------------------------------------------
-void pc1640_state::pc1640hd(machine_config &config)
-{
+MACHINE_CONFIG_START(pc1640_state::pc1640hd)
pc1640(config);
- //subdevice<isa8_slot_device>("isa1")->set_default_option("wdxt_gen");
- subdevice<isa8_slot_device>("isa1")->set_default_option("hdc");
-}
+ MCFG_DEVICE_MODIFY("isa1")
+ //MCFG_SLOT_DEFAULT_OPTION("wdxt_gen")
+ MCFG_SLOT_DEFAULT_OPTION("hdc")
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pc2000.cpp b/src/mame/drivers/pc2000.cpp
index 9f111f5e8b3..0cf410cf845 100644
--- a/src/mame/drivers/pc2000.cpp
+++ b/src/mame/drivers/pc2000.cpp
@@ -957,7 +957,7 @@ void gl3000s_state::gl3000s(machine_config &config)
SOFTWARE_LIST(config, "gl2000_cart").set_compatible("gl2000");
SOFTWARE_LIST(config, "misterx_cart").set_compatible("misterx");
-}
+MACHINE_CONFIG_END
void gl4004_state::gl4000(machine_config &config)
{
diff --git a/src/mame/drivers/pc4.cpp b/src/mame/drivers/pc4.cpp
index ffdfd572770..a2661b1aa1c 100644
--- a/src/mame/drivers/pc4.cpp
+++ b/src/mame/drivers/pc4.cpp
@@ -217,20 +217,19 @@ void pc4_state::machine_start()
m_blink = 0;
}
-void pc4_state::pc4(machine_config &config)
-{
+MACHINE_CONFIG_START(pc4_state::pc4)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &pc4_state::pc4_mem);
- m_maincpu->set_addrmap(AS_IO, &pc4_state::pc4_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(pc4_mem)
+ MCFG_DEVICE_IO_MAP(pc4_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(72);
- screen.set_screen_update(FUNC(pc4_state::screen_update));
- screen.set_size(240, 36);
- screen.set_visarea(0, 240-1, 0, 36-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(72)
+ MCFG_SCREEN_UPDATE_DRIVER(pc4_state, screen_update)
+ MCFG_SCREEN_SIZE(240, 36)
+ MCFG_SCREEN_VISIBLE_AREA(0, 240-1, 0, 36-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(pc4_state::pc4_palette), 2);
GFXDECODE(config, "gfxdecode", "palette", gfx_pc4);
@@ -240,7 +239,7 @@ void pc4_state::pc4(machine_config &config)
BEEP(config, m_beep, 3250).add_route(ALL_OUTPUTS, "mono", 1.00);
RP5C01(config, "rtc", XTAL(32'768));
-}
+MACHINE_CONFIG_END
ROM_START( pc4 )
ROM_REGION( 0x20000, "maincpu", 0 )
diff --git a/src/mame/drivers/pc6001.cpp b/src/mame/drivers/pc6001.cpp
index 38fcea1268d..8ce0970755b 100644
--- a/src/mame/drivers/pc6001.cpp
+++ b/src/mame/drivers/pc6001.cpp
@@ -1287,7 +1287,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(pc6001_state::cassette_callback)
else
cas_data_i>>=1;
#else
- m_cur_keycode = m_cas_hack->read_rom(m_cas_offset++);
+ address_space &space = m_maincpu->space(AS_PROGRAM);
+ m_cur_keycode = m_cas_hack->read_rom(space, m_cas_offset++);
popmessage("%04x %04x", m_cas_offset, m_cas_maxsize);
if(m_cas_offset > m_cas_maxsize)
{
@@ -1349,7 +1350,7 @@ void pc6001_state::machine_reset()
set_videoram_bank(0xc000);
if (m_cart->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x5fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x5fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
std::string region_tag;
m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
@@ -1439,6 +1440,16 @@ void pc6001sr_state::machine_reset()
}
+#if 0
+static const cassette_interface pc6001_cassette_interface =
+{
+ pc6001_cassette_formats,
+ nullptr,
+ (cassette_state)(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED),
+ nullptr
+};
+#endif
+
static const gfx_layout char_layout =
{
8, 16,
@@ -1470,26 +1481,25 @@ GFXDECODE_END
#define PC6001_MAIN_CLOCK 7987200
-void pc6001_state::pc6001(machine_config &config)
-{
+MACHINE_CONFIG_START(pc6001_state::pc6001)
/* basic machine hardware */
- Z80(config, m_maincpu, PC6001_MAIN_CLOCK / 2); // PD 780C-1, ~4 Mhz
- m_maincpu->set_addrmap(AS_PROGRAM, &pc6001_state::pc6001_map);
- m_maincpu->set_addrmap(AS_IO, &pc6001_state::pc6001_io);
- m_maincpu->set_vblank_int("screen", FUNC(pc6001_state::vrtc_irq));
- m_maincpu->set_irq_acknowledge_callback(FUNC(pc6001_state::irq_callback));
+ MCFG_DEVICE_ADD("maincpu",Z80, PC6001_MAIN_CLOCK / 2) // PD 780C-1, ~4 Mhz
+ MCFG_DEVICE_PROGRAM_MAP(pc6001_map)
+ MCFG_DEVICE_IO_MAP(pc6001_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pc6001_state, vrtc_irq)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(pc6001_state, irq_callback)
-// I8049(config, "subcpu", 7987200);
+// MCFG_DEVICE_ADD("subcpu", I8049, 7987200)
GFXDECODE(config, "gfxdecode", m_palette, gfx_pc6001m2);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_screen_update(FUNC(pc6001_state::screen_update_pc6001));
- m_screen->set_size(320, 25+192+26);
- m_screen->set_visarea(0, 319, 0, 239);
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_UPDATE_DRIVER(pc6001_state, screen_update_pc6001)
+ MCFG_SCREEN_SIZE(320, 25+192+26)
+ MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(pc6001_state::pc6001_palette), 16+4);
@@ -1502,14 +1512,13 @@ void pc6001_state::pc6001(machine_config &config)
m_ppi->out_pc_callback().set(FUNC(pc6001_state::ppi_portc_w));
/* uart */
- I8251(config, "uart", 0);
+ MCFG_DEVICE_ADD("uart", I8251, 0)
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "pc6001_cart");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "pc6001_cart")
-// CASSETTE(config, m_cassette);
-// m_cassette->set_formats(pc6001_cassette_formats);
-// m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- GENERIC_CARTSLOT(config, m_cas_hack, generic_plain_slot, "pc6001_cass", "cas,p6");
+// MCFG_CASSETTE_ADD("cassette", pc6001_cassette_interface)
+ MCFG_GENERIC_CARTSLOT_ADD("cas_hack", generic_plain_slot, "pc6001_cass")
+ MCFG_GENERIC_EXTENSIONS("cas,p6")
SPEAKER(config, "mono").front_center();
ay8910_device &ay8910(AY8910(config, "ay8910", PC6001_MAIN_CLOCK/4));
@@ -1519,59 +1528,61 @@ void pc6001_state::pc6001(machine_config &config)
// WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
/* TODO: accurate timing on this */
- TIMER(config, "keyboard_timer").configure_periodic(FUNC(pc6001_state::keyboard_callback), attotime::from_hz(250));
- TIMER(config, "cassette_timer").configure_periodic(FUNC(pc6001_state::cassette_callback), attotime::from_hz(1200/12));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", pc6001_state, keyboard_callback, attotime::from_hz(250))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("cassette_timer", pc6001_state, cassette_callback, attotime::from_hz(1200/12))
+MACHINE_CONFIG_END
-void pc6001mk2_state::pc6001mk2(machine_config &config)
-{
+MACHINE_CONFIG_START(pc6001mk2_state::pc6001mk2)
pc6001(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &pc6001mk2_state::pc6001mk2_map);
- m_maincpu->set_addrmap(AS_IO, &pc6001mk2_state::pc6001mk2_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(pc6001mk2_map)
+ MCFG_DEVICE_IO_MAP(pc6001mk2_io)
// MCFG_MACHINE_RESET_OVERRIDE(pc6001mk2_state,pc6001mk2)
- m_screen->set_screen_update(FUNC(pc6001mk2_state::screen_update_pc6001mk2));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(pc6001mk2_state, screen_update_pc6001mk2)
m_palette->set_entries(16+16);
m_palette->set_init(FUNC(pc6001mk2_state::pc6001mk2_palette));
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_pc6001m2);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_pc6001m2)
- UPD7752(config, "upd7752", PC6001_MAIN_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+ MCFG_DEVICE_ADD("upd7752", UPD7752, PC6001_MAIN_CLOCK/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
-void pc6601_state::pc6601(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(pc6601_state::pc6601)
pc6001mk2(config);
/* basic machine hardware */
- Z80(config.replace(), m_maincpu, PC6001_MAIN_CLOCK / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &pc6601_state::pc6001mk2_map);
- m_maincpu->set_addrmap(AS_IO, &pc6601_state::pc6601_io);
- m_maincpu->set_vblank_int("screen", FUNC(pc6001_state::vrtc_irq));
- m_maincpu->set_irq_acknowledge_callback(FUNC(pc6001_state::irq_callback));
-}
-
-void pc6001sr_state::pc6001sr(machine_config &config)
-{
+ MCFG_DEVICE_REPLACE("maincpu", Z80, PC6001_MAIN_CLOCK / 2)
+ MCFG_DEVICE_PROGRAM_MAP(pc6001mk2_map)
+ MCFG_DEVICE_IO_MAP(pc6601_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pc6001_state, vrtc_irq)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(pc6001_state, irq_callback)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(pc6001sr_state::pc6001sr)
pc6001mk2(config);
/* basic machine hardware */
//*Yes*, PC-6001 SR Z80 CPU is actually slower than older models (better waitstates tho?)
- Z80(config.replace(), m_maincpu, XTAL(3'579'545));
- m_maincpu->set_addrmap(AS_PROGRAM, &pc6001sr_state::pc6001sr_map);
- m_maincpu->set_addrmap(AS_IO, &pc6001sr_state::pc6001sr_io);
- m_maincpu->set_vblank_int("screen", FUNC(pc6001sr_state::sr_vrtc_irq));
- m_maincpu->set_irq_acknowledge_callback(FUNC(pc6001_state::irq_callback));
+ MCFG_DEVICE_REPLACE("maincpu", Z80, XTAL(3'579'545))
+ MCFG_DEVICE_PROGRAM_MAP(pc6001sr_map)
+ MCFG_DEVICE_IO_MAP(pc6001sr_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pc6001sr_state, sr_vrtc_irq)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(pc6001_state, irq_callback)
// MCFG_MACHINE_RESET_OVERRIDE(pc6001sr_state,pc6001sr)
- m_screen->set_screen_update(FUNC(pc6001sr_state::screen_update_pc6001sr));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(pc6001sr_state, screen_update_pc6001sr)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( pc6001 )
diff --git a/src/mame/drivers/pc8001.cpp b/src/mame/drivers/pc8001.cpp
index c13e1f13755..acbdbed71b0 100644
--- a/src/mame/drivers/pc8001.cpp
+++ b/src/mame/drivers/pc8001.cpp
@@ -479,101 +479,99 @@ void pc8001_state::machine_start()
/* Machine Drivers */
-void pc8001_state::pc8001(machine_config &config)
-{
+MACHINE_CONFIG_START(pc8001_state::pc8001)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &pc8001_state::pc8001_mem);
- m_maincpu->set_addrmap(AS_IO, &pc8001_state::pc8001_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(pc8001_mem)
+ MCFG_DEVICE_IO_MAP(pc8001_io)
/* video hardware */
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_screen_update(UPD3301_TAG, FUNC(upd3301_device::screen_update));
- screen.set_size(640, 220);
- screen.set_visarea(0, 640-1, 0, 200-1);
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_UPDATE_DEVICE(UPD3301_TAG, upd3301_device, screen_update)
+ MCFG_SCREEN_SIZE(640, 220)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beep, 2000).add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("beeper", BEEP, 2000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
/* devices */
- I8251(config, I8251_TAG, 0);
+ MCFG_DEVICE_ADD(I8251_TAG, I8251, 0)
- I8255A(config, I8255A_TAG, 0);
+ MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0)
I8257(config, m_dma, XTAL(4'000'000));
m_dma->out_hrq_cb().set(FUNC(pc8001_state::hrq_w));
m_dma->in_memr_cb().set(FUNC(pc8001_state::dma_mem_r));
- m_dma->out_iow_cb<2>().set(m_crtc, FUNC(upd3301_device::dack_w));
+ m_dma->out_iow_cb<2>().set(UPD3301_TAG, FUNC(upd3301_device::dack_w));
UPD1990A(config, m_rtc);
- UPD3301(config, m_crtc, XTAL(14'318'181));
- m_crtc->set_character_width(8);
- m_crtc->set_display_callback(FUNC(pc8001_state::pc8001_display_pixels), this);
- m_crtc->drq_wr_callback().set(m_dma, FUNC(i8257_device::dreq2_w));
- m_crtc->set_screen(SCREEN_TAG);
+ MCFG_DEVICE_ADD(UPD3301_TAG, UPD3301, XTAL(14'318'181))
+ MCFG_UPD3301_CHARACTER_WIDTH(8)
+ MCFG_UPD3301_DRAW_CHARACTER_CALLBACK_OWNER(pc8001_state, pc8001_display_pixels)
+ MCFG_UPD3301_DRQ_CALLBACK(WRITELINE(m_dma, i8257_device, dreq2_w))
+ MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(FUNC(pc8001_state::write_centronics_ack));
- m_centronics->busy_handler().set(FUNC(pc8001_state::write_centronics_busy));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, pc8001_state, write_centronics_ack))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, pc8001_state, write_centronics_busy))
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
RAM(config, RAM_TAG).set_default_size("16K").set_extra_options("32K,64K");
-}
+MACHINE_CONFIG_END
-void pc8001mk2_state::pc8001mk2(machine_config &config)
-{
+MACHINE_CONFIG_START(pc8001mk2_state::pc8001mk2)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &pc8001mk2_state::pc8001mk2_mem);
- m_maincpu->set_addrmap(AS_IO, &pc8001mk2_state::pc8001mk2_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(pc8001mk2_mem)
+ MCFG_DEVICE_IO_MAP(pc8001mk2_io)
/* video hardware */
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_screen_update(UPD3301_TAG, FUNC(upd3301_device::screen_update));
- screen.set_size(640, 220);
- screen.set_visarea(0, 640-1, 0, 200-1);
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_UPDATE_DEVICE(UPD3301_TAG, upd3301_device, screen_update)
+ MCFG_SCREEN_SIZE(640, 220)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beep, 2000).add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("beeper", BEEP, 2000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
/* devices */
- I8251(config, I8251_TAG, 0);
+ MCFG_DEVICE_ADD(I8251_TAG, I8251, 0)
- I8255A(config, I8255A_TAG, 0);
+ MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0)
I8257(config, m_dma, XTAL(4'000'000));
m_dma->out_hrq_cb().set(FUNC(pc8001_state::hrq_w));
m_dma->in_memr_cb().set(FUNC(pc8001_state::dma_mem_r));
- m_dma->out_iow_cb<2>().set(m_crtc, FUNC(upd3301_device::dack_w));
+ m_dma->out_iow_cb<2>().set(UPD3301_TAG, FUNC(upd3301_device::dack_w));
UPD1990A(config, m_rtc);
- UPD3301(config, m_crtc, XTAL(14'318'181));
- m_crtc->set_character_width(8);
- m_crtc->set_display_callback(FUNC(pc8001_state::pc8001_display_pixels), this);
- m_crtc->drq_wr_callback().set(m_dma, FUNC(i8257_device::dreq2_w));
- m_crtc->set_screen(SCREEN_TAG);
+ MCFG_DEVICE_ADD(UPD3301_TAG, UPD3301, XTAL(14'318'181))
+ MCFG_UPD3301_CHARACTER_WIDTH(8)
+ MCFG_UPD3301_DRAW_CHARACTER_CALLBACK_OWNER(pc8001_state, pc8001_display_pixels)
+ MCFG_UPD3301_DRQ_CALLBACK(WRITELINE(m_dma, i8257_device, dreq2_w))
+ MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
RAM(config, RAM_TAG).set_default_size("64K");
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/pc8401a.cpp b/src/mame/drivers/pc8401a.cpp
index 7de2b1b5d45..aa97d5b96c9 100644
--- a/src/mame/drivers/pc8401a.cpp
+++ b/src/mame/drivers/pc8401a.cpp
@@ -267,7 +267,7 @@ WRITE8_MEMBER( pc8401a_state::rtc_ctrl_w )
READ8_MEMBER( pc8401a_state::io_rom_data_r )
{
//logerror("I/O ROM read from %05x\n", m_io_addr);
- return m_io_cart->read_rom(m_io_addr);
+ return m_io_cart->read_rom(space, m_io_addr);
}
WRITE8_MEMBER( pc8401a_state::io_rom_addr_w )
@@ -570,15 +570,14 @@ WRITE8_MEMBER( pc8401a_state::ppi_pc_w )
/* Machine Drivers */
-void pc8401a_state::pc8401a(machine_config &config)
-{
+MACHINE_CONFIG_START(pc8401a_state::pc8401a)
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); // NEC uPD70008C
- m_maincpu->set_addrmap(AS_PROGRAM, &pc8401a_state::pc8401a_mem);
- m_maincpu->set_addrmap(AS_IO, &pc8401a_state::pc8401a_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, 4000000) // NEC uPD70008C
+ MCFG_DEVICE_PROGRAM_MAP(pc8401a_mem)
+ MCFG_DEVICE_IO_MAP(pc8401a_io)
/* fake keyboard */
- TIMER(config, "keyboard").configure_periodic(FUNC(pc8401a_state::pc8401a_keyboard_tick), attotime::from_hz(64));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", pc8401a_state, pc8401a_keyboard_tick, attotime::from_hz(64))
/* devices */
UPD1990A(config, m_rtc);
@@ -600,24 +599,25 @@ void pc8401a_state::pc8401a(machine_config &config)
pc8401a_video(config);
/* option ROM cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, nullptr, "bin,rom");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, nullptr)
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
/* I/O ROM cartridge */
- GENERIC_CARTSLOT(config, m_io_cart, generic_linear_slot, nullptr, "bin,rom");
+ MCFG_GENERIC_CARTSLOT_ADD("io_cart", generic_linear_slot, nullptr)
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K").set_extra_options("96K");
-}
+MACHINE_CONFIG_END
-void pc8500_state::pc8500(machine_config &config)
-{
+MACHINE_CONFIG_START(pc8500_state::pc8500)
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); // NEC uPD70008C
- m_maincpu->set_addrmap(AS_PROGRAM, &pc8500_state::pc8401a_mem);
- m_maincpu->set_addrmap(AS_IO, &pc8500_state::pc8500_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, 4000000) // NEC uPD70008C
+ MCFG_DEVICE_PROGRAM_MAP(pc8401a_mem)
+ MCFG_DEVICE_IO_MAP(pc8500_io)
/* fake keyboard */
- TIMER(config, "keyboard").configure_periodic(FUNC(pc8401a_state::pc8401a_keyboard_tick), attotime::from_hz(64));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", pc8401a_state, pc8401a_keyboard_tick, attotime::from_hz(64))
/* devices */
UPD1990A(config, m_rtc);
@@ -639,14 +639,16 @@ void pc8500_state::pc8500(machine_config &config)
pc8500_video(config);
/* option ROM cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, nullptr, "bin,rom");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, nullptr)
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
/* I/O ROM cartridge */
- GENERIC_CARTSLOT(config, m_io_cart, generic_linear_slot, nullptr, "bin,rom");
+ MCFG_GENERIC_CARTSLOT_ADD("io_cart", generic_linear_slot, nullptr)
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K").set_extra_options("96K");
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/pc8801.cpp b/src/mame/drivers/pc8801.cpp
index 327f2044fe4..874ffa4b93d 100644
--- a/src/mame/drivers/pc8801.cpp
+++ b/src/mame/drivers/pc8801.cpp
@@ -1476,23 +1476,23 @@ WRITE8_MEMBER(pc8801_state::pc8801_rtc_w)
READ8_MEMBER(pc8801_state::pc8801_sound_board_r)
{
if(m_has_opna)
- return m_opna->read(offset);
+ return m_opna->read(space, offset);
- return (offset & 2) ? 0xff : m_opn->read(offset);
+ return (offset & 2) ? 0xff : m_opn->read(space, offset);
}
WRITE8_MEMBER(pc8801_state::pc8801_sound_board_w)
{
if(m_has_opna)
- m_opna->write(offset,data);
+ m_opna->write(space, offset,data);
else if((offset & 2) == 0)
- m_opn->write(offset, data);
+ m_opn->write(space, offset, data);
}
READ8_MEMBER(pc8801_state::pc8801_opna_r)
{
if(m_has_opna && (offset & 2) == 0)
- return m_opna->read((offset & 1) | ((offset & 4) >> 1));
+ return m_opna->read(space, (offset & 1) | ((offset & 4) >> 1));
return 0xff;
}
@@ -1500,7 +1500,7 @@ READ8_MEMBER(pc8801_state::pc8801_opna_r)
WRITE8_MEMBER(pc8801_state::pc8801_opna_w)
{
if(m_has_opna && (offset & 2) == 0)
- m_opna->write((offset & 1) | ((offset & 4) >> 1),data);
+ m_opna->write(space, (offset & 1) | ((offset & 4) >> 1),data);
else if(m_has_opna && offset == 2)
{
m_sound_irq_mask = ((data & 0x80) == 0);
@@ -2340,22 +2340,21 @@ WRITE_LINE_MEMBER( pc8801_state::rxrdy_w )
// ...
}
-void pc8801_state::pc8801(machine_config &config)
-{
+MACHINE_CONFIG_START(pc8801_state::pc8801)
/* main CPU */
- Z80(config, m_maincpu, MASTER_CLOCK); /* 4 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &pc8801_state::pc8801_mem);
- m_maincpu->set_addrmap(AS_IO, &pc8801_state::pc8801_io);
- m_maincpu->set_vblank_int("screen", FUNC(pc8801_state::pc8801_vrtc_irq));
- m_maincpu->set_irq_acknowledge_callback(FUNC(pc8801_state::pc8801_irq_callback));
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK) /* 4 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(pc8801_mem)
+ MCFG_DEVICE_IO_MAP(pc8801_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pc8801_state, pc8801_vrtc_irq)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(pc8801_state,pc8801_irq_callback)
/* sub CPU(5 inch floppy drive) */
- Z80(config, m_fdccpu, MASTER_CLOCK); /* 4 MHz */
- m_fdccpu->set_addrmap(AS_PROGRAM, &pc8801_state::pc8801fdc_mem);
- m_fdccpu->set_addrmap(AS_IO, &pc8801_state::pc8801fdc_io);
+ MCFG_DEVICE_ADD(m_fdccpu, Z80, MASTER_CLOCK) /* 4 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(pc8801fdc_mem)
+ MCFG_DEVICE_IO_MAP(pc8801fdc_io)
- //config.m_minimum_quantum = attotime::from_hz(300000);
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ //MCFG_QUANTUM_TIME(attotime::from_hz(300000))
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
i8255_device &d8255_master(I8255(config, "d8255_master"));
d8255_master.in_pa_callback().set("d8255_slave", FUNC(i8255_device::pb_r));
@@ -2376,25 +2375,25 @@ void pc8801_state::pc8801(machine_config &config)
I8214(config, I8214_TAG, MASTER_CLOCK);
#endif
UPD1990A(config, m_rtc);
- //CENTRONICS(config, "centronics", centronics_devices, "printer");
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ //MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
- SOFTWARE_LIST(config, "tape_list").set_original("pc8801_cass");
+ MCFG_SOFTWARE_LIST_ADD("tape_list","pc8801_cass")
i8251_device &i8251(I8251(config, I8251_TAG, 0));
i8251.txd_handler().set(FUNC(pc8801_state::txdata_callback));
i8251.rts_handler().set(FUNC(pc8801_state::rxrdy_w));
- FLOPPY_CONNECTOR(config, "upd765:0", pc88_floppies, "525hd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765:1", pc88_floppies, "525hd", floppy_image_device::default_floppy_formats);
- SOFTWARE_LIST(config, "disk_list").set_original("pc8801_flop");
+ MCFG_FLOPPY_DRIVE_ADD("upd765:0", pc88_floppies, "525hd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765:1", pc88_floppies, "525hd", floppy_image_device::default_floppy_formats)
+ MCFG_SOFTWARE_LIST_ADD("disk_list","pc8801_flop")
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK_24KHz,848,0,640,448,0,400);
- m_screen->set_screen_update(FUNC(pc8801_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK_24KHz,848,0,640,448,0,400)
+ MCFG_SCREEN_UPDATE_DRIVER(pc8801_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, "gfxdecode", m_palette, gfx_pc8801);
PALETTE(config, m_palette, FUNC(pc8801_state::pc8801_palette), 0x10);
@@ -2415,28 +2414,26 @@ void pc8801_state::pc8801(machine_config &config)
m_opna->port_b_read_callback().set(FUNC(pc8801_state::opn_portb_r));
m_opna->add_route(ALL_OUTPUTS, "mono", 1.00);
- BEEP(config, m_beeper, 2400).add_route(ALL_OUTPUTS, "mono", 0.10);
+ MCFG_DEVICE_ADD("beeper", BEEP, 2400)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
- TIMER(config, "rtc_timer").configure_periodic(FUNC(pc8801_state::pc8801_rtc_irq), attotime::from_hz(600));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("rtc_timer", pc8801_state, pc8801_rtc_irq, attotime::from_hz(600))
+MACHINE_CONFIG_END
-void pc8801_state::pc8801fh(machine_config &config)
-{
+MACHINE_CONFIG_START(pc8801_state::pc8801fh)
pc8801(config);
MCFG_MACHINE_RESET_OVERRIDE(pc8801_state, pc8801_clock_speed )
-}
+MACHINE_CONFIG_END
-void pc8801_state::pc8801ma(machine_config &config)
-{
+MACHINE_CONFIG_START(pc8801_state::pc8801ma)
pc8801(config);
MCFG_MACHINE_RESET_OVERRIDE(pc8801_state, pc8801_dic )
-}
+MACHINE_CONFIG_END
-void pc8801_state::pc8801mc(machine_config &config)
-{
+MACHINE_CONFIG_START(pc8801_state::pc8801mc)
pc8801(config);
MCFG_MACHINE_RESET_OVERRIDE(pc8801_state, pc8801_cdrom )
-}
+MACHINE_CONFIG_END
/* TODO: clean this up */
diff --git a/src/mame/drivers/pc88va.cpp b/src/mame/drivers/pc88va.cpp
index 508edd48ccd..5906ed879ce 100644
--- a/src/mame/drivers/pc88va.cpp
+++ b/src/mame/drivers/pc88va.cpp
@@ -1585,31 +1585,31 @@ WRITE8_MEMBER(pc88va_state::dma_memw_cb)
}
-void pc88va_state::pc88va(machine_config &config)
-{
- V30(config, m_maincpu, 8000000); /* 8 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &pc88va_state::pc88va_map);
- m_maincpu->set_addrmap(AS_IO, &pc88va_state::pc88va_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(pc88va_state::pc88va_vrtc_irq));
- m_maincpu->set_irq_acknowledge_callback("pic8259_master", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(pc88va_state::pc88va)
+
+ MCFG_DEVICE_ADD("maincpu", V30, 8000000) /* 8 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(pc88va_map)
+ MCFG_DEVICE_IO_MAP(pc88va_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pc88va_state, pc88va_vrtc_irq)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_master", pic8259_device, inta_cb)
#if TEST_SUBFDC
- z80_device &fdccpu(Z80(config, "fdccpu", 8000000)); /* 8 MHz */
- fdccpu.set_addrmap(AS_PROGRAM, &pc88va_state::pc88va_z80_map);
- fdccpu.set_addrmap(AS_IO, &pc88va_state::pc88va_z80_io_map);
+ MCFG_DEVICE_ADD("fdccpu", Z80, 8000000) /* 8 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(pc88va_z80_map)
+ MCFG_DEVICE_IO_MAP(pc88va_z80_io_map)
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
#endif
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(640, 480);
- m_screen->set_visarea(0, 640-1, 0, 200-1);
- m_screen->set_screen_update(FUNC(pc88va_state::screen_update_pc88va));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pc88va_state, screen_update_pc88va)
- PALETTE(config, m_palette).set_entries(32);
-// m_palette->set_init(FUNC(pc88va_state::pc8801));
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_pc88va);
+ MCFG_PALETTE_ADD("palette", 32)
+// MCFG_PALETTE_INIT_OWNER(pc88va_state, pc8801 )
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pc88va)
i8255_device &d8255_2(I8255(config, "d8255_2"));
d8255_2.in_pa_callback().set("d8255_2s", FUNC(i8255_device::pb_r));
@@ -1653,7 +1653,7 @@ void pc88va_state::pc88va(machine_config &config)
m_fdc->drq_wr_callback().set(FUNC(pc88va_state::fdc_drq));
FLOPPY_CONNECTOR(config, m_fdd[0], pc88va_floppies, "525hd", pc88va_state::floppy_formats);
FLOPPY_CONNECTOR(config, m_fdd[1], pc88va_floppies, "525hd", pc88va_state::floppy_formats);
- SOFTWARE_LIST(config, "disk_list").set_original("pc88va");
+ MCFG_SOFTWARE_LIST_ADD("disk_list","pc88va")
pit8253_device &pit8253(PIT8253(config, "pit8253", 0));
pit8253.set_clk<0>(8000000); /* general purpose timer 1 */
@@ -1664,12 +1664,12 @@ void pc88va_state::pc88va(machine_config &config)
ADDRESS_MAP_BANK(config, "sysbank").set_map(&pc88va_state::sysbank_map).set_options(ENDIANNESS_LITTLE, 16, 18+4, 0x40000);
SPEAKER(config, "mono").front_center();
- ym2203_device &ym(YM2203(config, "ym", 3993600)); //unknown clock / divider
- ym.add_route(0, "mono", 0.25);
- ym.add_route(1, "mono", 0.25);
- ym.add_route(2, "mono", 0.50);
- ym.add_route(3, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("ym", YM2203, 3993600) //unknown clock / divider
+ MCFG_SOUND_ROUTE(0, "mono", 0.25)
+ MCFG_SOUND_ROUTE(1, "mono", 0.25)
+ MCFG_SOUND_ROUTE(2, "mono", 0.50)
+ MCFG_SOUND_ROUTE(3, "mono", 0.50)
+MACHINE_CONFIG_END
ROM_START( pc88va2 )
diff --git a/src/mame/drivers/pc9801.cpp b/src/mame/drivers/pc9801.cpp
index 3d776a7ce23..63a1b75d4ad 100644
--- a/src/mame/drivers/pc9801.cpp
+++ b/src/mame/drivers/pc9801.cpp
@@ -2228,9 +2228,7 @@ void pc9801_state::pc9801_mouse(machine_config &config)
void pc9801_state::pc9801_cbus(machine_config &config)
{
- pc9801_slot_device &cbus0(PC9801CBUS_SLOT(config, "cbus0", pc9801_cbus_devices, "pc9801_26"));
- cbus0.set_memspace(m_maincpu, AS_PROGRAM);
- cbus0.set_iospace(m_maincpu, AS_IO);
+ pc9801_slot_device &cbus0(PC9801CBUS_SLOT(config, "cbus0", m_maincpu, pc9801_cbus_devices, "pc9801_26"));
cbus0.int_cb<0>().set("ir3", FUNC(input_merger_device::in_w<0>));
cbus0.int_cb<1>().set("ir5", FUNC(input_merger_device::in_w<0>));
cbus0.int_cb<2>().set("ir6", FUNC(input_merger_device::in_w<0>));
@@ -2239,9 +2237,7 @@ void pc9801_state::pc9801_cbus(machine_config &config)
cbus0.int_cb<5>().set("ir12", FUNC(input_merger_device::in_w<0>));
cbus0.int_cb<6>().set("ir13", FUNC(input_merger_device::in_w<0>));
- pc9801_slot_device &cbus1(PC9801CBUS_SLOT(config, "cbus1", pc9801_cbus_devices, nullptr));
- cbus1.set_memspace(m_maincpu, AS_PROGRAM);
- cbus1.set_iospace(m_maincpu, AS_IO);
+ pc9801_slot_device &cbus1(PC9801CBUS_SLOT(config, "cbus1", m_maincpu, pc9801_cbus_devices, nullptr));
cbus1.int_cb<0>().set("ir3", FUNC(input_merger_device::in_w<1>));
cbus1.int_cb<1>().set("ir5", FUNC(input_merger_device::in_w<1>));
cbus1.int_cb<2>().set("ir6", FUNC(input_merger_device::in_w<1>));
@@ -2317,8 +2313,8 @@ void pc9801_state::pc9801_common(machine_config &config)
m_dmac->out_eop_callback().set(FUNC(pc9801_state::tc_w));
m_dmac->in_memr_callback().set(FUNC(pc9801_state::dma_read_byte));
m_dmac->out_memw_callback().set(FUNC(pc9801_state::dma_write_byte));
- m_dmac->in_ior_callback<2>().set(m_fdc_2hd, FUNC(upd765a_device::dma_r));
- m_dmac->out_iow_callback<2>().set(m_fdc_2hd, FUNC(upd765a_device::dma_w));
+ m_dmac->in_ior_callback<2>().set(m_fdc_2hd, FUNC(upd765a_device::mdma_r));
+ m_dmac->out_iow_callback<2>().set(m_fdc_2hd, FUNC(upd765a_device::mdma_w));
m_dmac->out_dack_callback<0>().set(FUNC(pc9801_state::dack0_w));
m_dmac->out_dack_callback<1>().set(FUNC(pc9801_state::dack1_w));
m_dmac->out_dack_callback<2>().set(FUNC(pc9801_state::dack2_w));
@@ -2371,12 +2367,12 @@ void pc9801_state::pc9801_common(machine_config &config)
UPD7220(config, m_hgdc1, 21.0526_MHz_XTAL / 8);
m_hgdc1->set_addrmap(0, &pc9801_state::upd7220_1_map);
- m_hgdc1->set_draw_text(FUNC(pc9801_state::hgdc_draw_text));
+ m_hgdc1->set_draw_text_callback(FUNC(pc9801_state::hgdc_draw_text), this);
m_hgdc1->vsync_wr_callback().set(m_hgdc2, FUNC(upd7220_device::ext_sync_w));
UPD7220(config, m_hgdc2, 21.0526_MHz_XTAL / 8);
m_hgdc2->set_addrmap(0, &pc9801_state::upd7220_2_map);
- m_hgdc2->set_display_pixels(FUNC(pc9801_state::hgdc_display_pixels));
+ m_hgdc2->set_display_pixels_callback(FUNC(pc9801_state::hgdc_display_pixels), this);
SPEAKER(config, "mono").front_center();
@@ -2408,8 +2404,8 @@ void pc9801_state::pc9801(machine_config &config)
pc9801_sasi(config);
UPD1990A(config, m_rtc);
- m_dmac->in_ior_callback<3>().set(m_fdc_2dd, FUNC(upd765a_device::dma_r));
- m_dmac->out_iow_callback<3>().set(m_fdc_2dd, FUNC(upd765a_device::dma_w));
+ m_dmac->in_ior_callback<3>().set(m_fdc_2dd, FUNC(upd765a_device::mdma_r));
+ m_dmac->out_iow_callback<3>().set(m_fdc_2dd, FUNC(upd765a_device::mdma_w));
PALETTE(config, m_palette, FUNC(pc9801_state::pc9801_palette), 16);
}
@@ -2950,7 +2946,7 @@ void pc9801_state::init_pc9801vm_kanji()
uint8_t *chargen = memregion("chargen")->base();
uint8_t *raw_kanji = memregion("raw_kanji")->base();
uint8_t *kanji = memregion("kanji")->base();
-
+
/* swap bits for 8x8 characters, discard 8x8 "graphics" characters */
/* TODO: should we keep and use the "graphics" characters? */
for( uint32_t i = 0; i < 0x100; i++ )
diff --git a/src/mame/drivers/pcat_dyn.cpp b/src/mame/drivers/pcat_dyn.cpp
index 416b0fa45af..292ebb90a9e 100644
--- a/src/mame/drivers/pcat_dyn.cpp
+++ b/src/mame/drivers/pcat_dyn.cpp
@@ -206,8 +206,7 @@ void pcat_dyn_state::pcat_dyn(machine_config &config)
serport.cts_handler().set("ns16550", FUNC(ins8250_uart_device::cts_w));
ISA8(config, m_isabus, 0);
- m_isabus->set_memspace("maincpu", AS_PROGRAM);
- m_isabus->set_iospace("maincpu", AS_IO);
+ m_isabus->set_cputag("maincpu");
m_isabus->irq2_callback().set("pic8259_2", FUNC(pic8259_device::ir2_w));
m_isabus->irq3_callback().set("pic8259_1", FUNC(pic8259_device::ir3_w));
//m_isabus->irq4_callback().set("pic8259_1", FUNC(pic8259_device::ir4_w));
diff --git a/src/mame/drivers/pcat_nit.cpp b/src/mame/drivers/pcat_nit.cpp
index 16e3f1a1a0e..5966c54379e 100644
--- a/src/mame/drivers/pcat_nit.cpp
+++ b/src/mame/drivers/pcat_nit.cpp
@@ -231,13 +231,12 @@ void pcat_nit_state::machine_start()
membank("rombank")->set_entry(0);
}
-void pcat_nit_state::pcat_nit(machine_config &config)
-{
+MACHINE_CONFIG_START(pcat_nit_state::pcat_nit)
/* basic machine hardware */
- I386(config, m_maincpu, 14318180*2); /* I386 ?? Mhz */
- m_maincpu->set_addrmap(AS_PROGRAM, &pcat_nit_state::pcat_map);
- m_maincpu->set_addrmap(AS_IO, &pcat_nit_state::pcat_nit_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I386, 14318180*2) /* I386 ?? Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(pcat_map)
+ MCFG_DEVICE_IO_MAP(pcat_nit_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
/* video hardware */
pcvideo_vga(config);
@@ -248,18 +247,17 @@ void pcat_nit_state::pcat_nit(machine_config &config)
uart.out_tx_callback().set("microtouch", FUNC(microtouch_device::rx));
uart.out_int_callback().set("pic8259_1", FUNC(pic8259_device::ir4_w));
- MICROTOUCH(config, m_microtouch, 9600).stx().set(uart, FUNC(ins8250_uart_device::rx_w)); // rate?
+ MCFG_MICROTOUCH_ADD( "microtouch", 9600, WRITELINE(uart, ins8250_uart_device, rx_w) ) // rate?
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void pcat_nit_state::bonanza(machine_config &config)
-{
+MACHINE_CONFIG_START(pcat_nit_state::bonanza)
/* basic machine hardware */
- I386(config, m_maincpu, 14318180*2); /* I386 ?? Mhz */
- m_maincpu->set_addrmap(AS_PROGRAM, &pcat_nit_state::bonanza_map);
- m_maincpu->set_addrmap(AS_IO, &pcat_nit_state::bonanza_io_map);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I386, 14318180*2) /* I386 ?? Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(bonanza_map)
+ MCFG_DEVICE_IO_MAP(bonanza_io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
/* video hardware */
pcvideo_cirrus_gd5428(config);
@@ -269,10 +267,10 @@ void pcat_nit_state::bonanza(machine_config &config)
uart.out_tx_callback().set("microtouch", FUNC(microtouch_device::rx));
uart.out_int_callback().set("pic8259_1", FUNC(pic8259_device::ir4_w));
- MICROTOUCH(config, m_microtouch, 9600).stx().set(uart, FUNC(ins8250_uart_device::rx_w)); // rate?
+ MCFG_MICROTOUCH_ADD( "microtouch", 9600, WRITELINE(uart, ins8250_uart_device, rx_w) ) // rate?
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
/***************************************
*
diff --git a/src/mame/drivers/pcd.cpp b/src/mame/drivers/pcd.cpp
index dce3bd79b43..65c8328b54a 100644
--- a/src/mame/drivers/pcd.cpp
+++ b/src/mame/drivers/pcd.cpp
@@ -50,6 +50,7 @@ public:
, m_scsi_data_out(*this, "scsi_data_out")
, m_scsi_data_in(*this, "scsi_data_in")
, m_ram(*this, "ram")
+ , m_req_hack(nullptr)
{ }
void pcx(machine_config &config);
@@ -62,6 +63,8 @@ private:
DECLARE_READ8_MEMBER( nmi_io_r );
DECLARE_WRITE8_MEMBER( nmi_io_w );
+ DECLARE_READ8_MEMBER( rtc_r );
+ DECLARE_WRITE8_MEMBER( rtc_w );
DECLARE_READ8_MEMBER( stat_r );
DECLARE_WRITE8_MEMBER( stat_w );
DECLARE_READ8_MEMBER( led_r );
@@ -90,6 +93,7 @@ private:
// driver_device overrides
virtual void machine_start() override;
virtual void machine_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
required_device<i80186_cpu_device> m_maincpu;
required_device<pic8259_device> m_pic1;
@@ -104,6 +108,7 @@ private:
required_device<ram_device> m_ram;
uint8_t m_stat, m_led;
int m_msg, m_bsy, m_io, m_cd, m_req, m_rst;
+ emu_timer *m_req_hack;
uint16_t m_dskctl;
struct {
uint16_t ctl;
@@ -120,8 +125,16 @@ private:
// MACHINE EMULATION
//**************************************************************************
+void pcd_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ // TODO: remove this hack
+ if(m_req)
+ m_maincpu->drq0_w(1);
+}
+
void pcd_state::machine_start()
{
+ m_req_hack = timer_alloc();
save_item(NAME(m_mmu.ctl));
save_item(NAME(m_mmu.regs));
}
@@ -176,6 +189,18 @@ WRITE8_MEMBER( pcd_state::nmi_io_w )
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
+READ8_MEMBER( pcd_state::rtc_r )
+{
+ m_rtc->write(space, 0, offset);
+ return m_rtc->read(space, 1);
+}
+
+WRITE8_MEMBER( pcd_state::rtc_w )
+{
+ m_rtc->write(space, 0, offset);
+ m_rtc->write(space, 1, data);
+}
+
READ8_MEMBER( pcd_state::stat_r )
{
return m_stat;
@@ -352,6 +377,7 @@ WRITE_LINE_MEMBER(pcd_state::write_scsi_req)
if(!m_cd)
{
m_maincpu->drq0_w(1);
+ m_req_hack->adjust(attotime::from_msec(10)); // poke the dmac
}
else if(m_msg)
{
@@ -361,6 +387,8 @@ WRITE_LINE_MEMBER(pcd_state::write_scsi_req)
}
else
{
+ if(m_req_hack) // this might be called before machine_start
+ m_req_hack->adjust(attotime::never);
m_scsi->write_ack(0);
}
check_scsi_irq();
@@ -429,7 +457,7 @@ void pcd_state::pcd_io(address_map &map)
map(0xf820, 0xf821).rw(m_pic2, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
map(0xf840, 0xf840).rw(FUNC(pcd_state::stat_r), FUNC(pcd_state::stat_w));
map(0xf841, 0xf841).rw(FUNC(pcd_state::led_r), FUNC(pcd_state::led_w));
- map(0xf880, 0xf8bf).rw(m_rtc, FUNC(mc146818_device::read_direct), FUNC(mc146818_device::write_direct));
+ map(0xf880, 0xf8bf).rw(FUNC(pcd_state::rtc_r), FUNC(pcd_state::rtc_w));
map(0xf900, 0xf903).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write));
map(0xf904, 0xf905).rw(FUNC(pcd_state::dskctl_r), FUNC(pcd_state::dskctl_w));
map(0xf940, 0xf943).rw(FUNC(pcd_state::scsi_r), FUNC(pcd_state::scsi_w));
@@ -567,8 +595,6 @@ void pcd_state::pcx(machine_config &config)
subdevice<pcd_keyboard_device>("keyboard")->out_tx_handler().set("video", FUNC(pcx_video_device::rx_w));
m_usart[1]->txd_handler().set_nop();
-
- SOFTWARE_LIST(config, "flop_ls").set_original("pcx_flop");
}
//**************************************************************************
diff --git a/src/mame/drivers/pce.cpp b/src/mame/drivers/pce.cpp
index 29b365e6443..36d86941249 100644
--- a/src/mame/drivers/pce.cpp
+++ b/src/mame/drivers/pce.cpp
@@ -305,8 +305,7 @@ static void pce_cart(device_slot_interface &device)
device.option_add_internal("sf2", PCE_ROM_SF2);
}
-void pce_state::pce_common(machine_config &config)
-{
+MACHINE_CONFIG_START(pce_state::pce_common)
/* basic machine hardware */
H6280(config, m_maincpu, MAIN_CLOCK/3);
m_maincpu->set_addrmap(AS_PROGRAM, &pce_state::pce_mem);
@@ -316,54 +315,51 @@ void pce_state::pce_common(machine_config &config)
m_maincpu->add_route(0, "lspeaker", 1.00);
m_maincpu->add_route(1, "rspeaker", 1.00);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
MCFG_MACHINE_START_OVERRIDE(pce_state, pce )
MCFG_MACHINE_RESET_OVERRIDE(pce_state, mess_pce )
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242);
- screen.set_screen_update(FUNC(pce_state::screen_update));
- screen.set_palette(m_huc6260);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242)
+ MCFG_SCREEN_UPDATE_DRIVER( pce_state, screen_update )
+ MCFG_SCREEN_PALETTE("huc6260")
- HUC6260(config, m_huc6260, MAIN_CLOCK);
- m_huc6260->next_pixel_data().set("huc6270", FUNC(huc6270_device::next_pixel));
- m_huc6260->time_til_next_event().set("huc6270", FUNC(huc6270_device::time_until_next_event));
- m_huc6260->vsync_changed().set("huc6270", FUNC(huc6270_device::vsync_changed));
- m_huc6260->hsync_changed().set("huc6270", FUNC(huc6270_device::hsync_changed));
+ MCFG_DEVICE_ADD( "huc6260", HUC6260, MAIN_CLOCK )
+ MCFG_HUC6260_NEXT_PIXEL_DATA_CB(READ16("huc6270", huc6270_device, next_pixel))
+ MCFG_HUC6260_TIME_TIL_NEXT_EVENT_CB(READ16("huc6270", huc6270_device, time_until_next_event))
+ MCFG_HUC6260_VSYNC_CHANGED_CB(WRITELINE("huc6270", huc6270_device, vsync_changed))
+ MCFG_HUC6260_HSYNC_CHANGED_CB(WRITELINE("huc6270", huc6270_device, hsync_changed))
- huc6270_device &huc6270(HUC6270(config, "huc6270", 0));
- huc6270.set_vram_size(0x10000);
- huc6270.irq().set_inputline(m_maincpu, 0);
+ MCFG_DEVICE_ADD( "huc6270", HUC6270, 0 )
+ MCFG_HUC6270_VRAM_SIZE(0x10000)
+ MCFG_HUC6270_IRQ_CHANGED_CB(INPUTLINE("maincpu", 0))
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
PCE_CD(config, m_cd, 0);
- SOFTWARE_LIST(config, "cd_list").set_original("pcecd");
-}
+ MCFG_SOFTWARE_LIST_ADD("cd_list","pcecd")
+MACHINE_CONFIG_END
-void pce_state::pce(machine_config &config)
-{
+MACHINE_CONFIG_START(pce_state::pce)
pce_common(config);
- PCE_CART_SLOT(config, m_cartslot, pce_cart, nullptr, "pce_cart");
- SOFTWARE_LIST(config, "cart_list").set_original("pce");
-}
+ MCFG_PCE_CARTRIDGE_ADD("cartslot", pce_cart, nullptr)
+ MCFG_SOFTWARE_LIST_ADD("cart_list","pce")
+MACHINE_CONFIG_END
-void pce_state::tg16(machine_config &config)
-{
+MACHINE_CONFIG_START(pce_state::tg16)
pce_common(config);
- PCE_CART_SLOT(config, m_cartslot, pce_cart, nullptr, "tg16_cart");
- SOFTWARE_LIST(config, "cart_list").set_original("tg16");
-}
+ MCFG_TG16_CARTRIDGE_ADD("cartslot", pce_cart, nullptr)
+ MCFG_SOFTWARE_LIST_ADD("cart_list","tg16")
+MACHINE_CONFIG_END
-void pce_state::sgx(machine_config &config)
-{
+MACHINE_CONFIG_START(pce_state::sgx)
/* basic machine hardware */
H6280(config, m_maincpu, MAIN_CLOCK/3);
m_maincpu->set_addrmap(AS_PROGRAM, &pce_state::sgx_mem);
@@ -373,56 +369,53 @@ void pce_state::sgx(machine_config &config)
m_maincpu->add_route(0, "lspeaker", 1.00);
m_maincpu->add_route(1, "rspeaker", 1.00);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
MCFG_MACHINE_START_OVERRIDE(pce_state, pce )
MCFG_MACHINE_RESET_OVERRIDE(pce_state, mess_pce )
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242);
- screen.set_screen_update(FUNC(pce_state::screen_update));
- screen.set_palette(m_huc6260);
-
- HUC6260(config, m_huc6260, MAIN_CLOCK);
- m_huc6260->next_pixel_data().set("huc6202", FUNC(huc6202_device::next_pixel));
- m_huc6260->time_til_next_event().set("huc6202", FUNC(huc6202_device::time_until_next_event));
- m_huc6260->vsync_changed().set("huc6202", FUNC(huc6202_device::vsync_changed));
- m_huc6260->hsync_changed().set("huc6202", FUNC(huc6202_device::hsync_changed));
-
- huc6270_device &huc6270_0(HUC6270(config, "huc6270_0", 0));
- huc6270_0.set_vram_size(0x10000);
- huc6270_0.irq().set_inputline(m_maincpu, 0);
-
- huc6270_device &huc6270_1(HUC6270(config, "huc6270_1", 0));
- huc6270_1.set_vram_size(0x10000);
- huc6270_1.irq().set_inputline(m_maincpu, 0);
-
- huc6202_device &huc6202(HUC6202(config, "huc6202", 0 ));
- huc6202.next_pixel_0_callback().set("huc6270_0", FUNC(huc6270_device::next_pixel));
- huc6202.time_til_next_event_0_callback().set("huc6270_0", FUNC(huc6270_device::time_until_next_event));
- huc6202.vsync_changed_0_callback().set("huc6270_0", FUNC(huc6270_device::vsync_changed));
- huc6202.hsync_changed_0_callback().set("huc6270_0", FUNC(huc6270_device::hsync_changed));
- huc6202.read_0_callback().set("huc6270_0", FUNC(huc6270_device::read));
- huc6202.write_0_callback().set("huc6270_0", FUNC(huc6270_device::write));
- huc6202.next_pixel_1_callback().set("huc6270_1", FUNC(huc6270_device::next_pixel));
- huc6202.time_til_next_event_1_callback().set("huc6270_1", FUNC(huc6270_device::time_until_next_event));
- huc6202.vsync_changed_1_callback().set("huc6270_1", FUNC(huc6270_device::vsync_changed));
- huc6202.hsync_changed_1_callback().set("huc6270_1", FUNC(huc6270_device::hsync_changed));
- huc6202.read_1_callback().set("huc6270_1", FUNC(huc6270_device::read));
- huc6202.write_1_callback().set("huc6270_1", FUNC(huc6270_device::write));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242)
+ MCFG_SCREEN_UPDATE_DRIVER( pce_state, screen_update )
+ MCFG_SCREEN_PALETTE("huc6260")
+
+ MCFG_DEVICE_ADD( "huc6260", HUC6260, MAIN_CLOCK )
+ MCFG_HUC6260_NEXT_PIXEL_DATA_CB(READ16("huc6202", huc6202_device, next_pixel))
+ MCFG_HUC6260_TIME_TIL_NEXT_EVENT_CB(READ16("huc6202", huc6202_device, time_until_next_event))
+ MCFG_HUC6260_VSYNC_CHANGED_CB(WRITELINE("huc6202", huc6202_device, vsync_changed))
+ MCFG_HUC6260_HSYNC_CHANGED_CB(WRITELINE("huc6202", huc6202_device, hsync_changed))
+ MCFG_DEVICE_ADD( "huc6270_0", HUC6270, 0 )
+ MCFG_HUC6270_VRAM_SIZE(0x10000)
+ MCFG_HUC6270_IRQ_CHANGED_CB(INPUTLINE("maincpu", 0))
+ MCFG_DEVICE_ADD( "huc6270_1", HUC6270, 0 )
+ MCFG_HUC6270_VRAM_SIZE(0x10000)
+ MCFG_HUC6270_IRQ_CHANGED_CB(INPUTLINE("maincpu", 0))
+ MCFG_DEVICE_ADD( "huc6202", HUC6202, 0 )
+ MCFG_HUC6202_NEXT_PIXEL_0_CB(READ16("huc6270_0", huc6270_device, next_pixel))
+ MCFG_HUC6202_TIME_TIL_NEXT_EVENT_0_CB(READ16("huc6270_0", huc6270_device, time_until_next_event))
+ MCFG_HUC6202_VSYNC_CHANGED_0_CB(WRITELINE("huc6270_0", huc6270_device, vsync_changed))
+ MCFG_HUC6202_HSYNC_CHANGED_0_CB(WRITELINE("huc6270_0", huc6270_device, hsync_changed))
+ MCFG_HUC6202_READ_0_CB(READ8("huc6270_0", huc6270_device, read))
+ MCFG_HUC6202_WRITE_0_CB(WRITE8("huc6270_0", huc6270_device, write))
+ MCFG_HUC6202_NEXT_PIXEL_1_CB(READ16("huc6270_1", huc6270_device, next_pixel))
+ MCFG_HUC6202_TIME_TIL_NEXT_EVENT_1_CB(READ16("huc6270_1", huc6270_device, time_until_next_event))
+ MCFG_HUC6202_VSYNC_CHANGED_1_CB(WRITELINE("huc6270_1", huc6270_device, vsync_changed))
+ MCFG_HUC6202_HSYNC_CHANGED_1_CB(WRITELINE("huc6270_1", huc6270_device, hsync_changed))
+ MCFG_HUC6202_READ_1_CB(READ8("huc6270_1", huc6270_device, read))
+ MCFG_HUC6202_WRITE_1_CB(WRITE8("huc6270_1", huc6270_device, write))
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- PCE_CART_SLOT(config, m_cartslot, pce_cart, nullptr, "pce_cart");
- SOFTWARE_LIST(config, "cart_list").set_original("sgx");
- SOFTWARE_LIST(config, "pce_list").set_compatible("pce");
+ MCFG_PCE_CARTRIDGE_ADD("cartslot", pce_cart, nullptr)
+ MCFG_SOFTWARE_LIST_ADD("cart_list","sgx")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("pce_list","pce")
PCE_CD(config, m_cd, 0);
- SOFTWARE_LIST(config, "cd_list").set_original("pcecd");
-}
+ MCFG_SOFTWARE_LIST_ADD("cd_list","pcecd")
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/pce220.cpp b/src/mame/drivers/pce220.cpp
index 80d62bea1c0..fbc1dee727b 100644
--- a/src/mame/drivers/pce220.cpp
+++ b/src/mame/drivers/pce220.cpp
@@ -944,22 +944,21 @@ void pce220_state::pce220_palette(palette_device &palette) const
}
-void pce220_state::pce220(machine_config &config)
-{
+MACHINE_CONFIG_START(pce220_state::pce220)
/* basic machine hardware */
- Z80(config, m_maincpu, 3072000); // CMOS-SC7852
- m_maincpu->set_addrmap(AS_PROGRAM, &pce220_state::pce220_mem);
- m_maincpu->set_addrmap(AS_IO, &pce220_state::pce220_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, 3072000 ) // CMOS-SC7852
+ MCFG_DEVICE_PROGRAM_MAP(pce220_mem)
+ MCFG_DEVICE_IO_MAP(pce220_io)
/* video hardware */
// 4 lines x 24 characters, resp. 144 x 32 pixel
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(pce220_state::screen_update));
- screen.set_size(24*6, 4*8);
- screen.set_visarea(0, 24*6-1, 0, 4*8-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(pce220_state, screen_update)
+ MCFG_SCREEN_SIZE(24*6, 4*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 24*6-1, 0, 4*8-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(pce220_state::pce220_palette), 2);
@@ -967,7 +966,7 @@ void pce220_state::pce220(machine_config &config)
SPEAKER(config, "mono").front_center();
BEEP(config, m_beep, 3250).add_route(ALL_OUTPUTS, "mono", 0.50);
- TIMER(config, "pce220_timer").configure_periodic(FUNC(pce220_state::pce220_timer_callback), attotime::from_msec(468));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("pce220_timer", pce220_state, pce220_timer_callback, attotime::from_msec(468))
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -975,24 +974,23 @@ void pce220_state::pce220(machine_config &config)
RAM(config, RAM_TAG).set_default_size("64K"); // 32K internal + 32K external card
PCE220SERIAL(config, m_serial, 0);
-}
+MACHINE_CONFIG_END
-void pcg850v_state::pcg815(machine_config &config)
-{
+MACHINE_CONFIG_START(pcg850v_state::pcg815)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000)); // 3.54MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &pcg850v_state::pce220_mem);
- m_maincpu->set_addrmap(AS_IO, &pcg850v_state::pcg850v_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(4'000'000) ) // 3.54MHz
+ MCFG_DEVICE_PROGRAM_MAP(pce220_mem)
+ MCFG_DEVICE_IO_MAP(pcg850v_io)
/* video hardware */
// 4 lines x 24 characters, resp. 144 x 32 pixel
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(pcg850v_state::screen_update));
- screen.set_size(144, 32);
- screen.set_visarea(0, 144-1, 0, 32-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(pcg850v_state, screen_update)
+ MCFG_SCREEN_SIZE(144, 32)
+ MCFG_SCREEN_VISIBLE_AREA(0, 144-1, 0, 32-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(pcg850v_state::pce220_palette), 2);
@@ -1000,7 +998,7 @@ void pcg850v_state::pcg815(machine_config &config)
SPEAKER(config, "mono").front_center();
BEEP(config, m_beep, 3250).add_route(ALL_OUTPUTS, "mono", 0.50);
- TIMER(config, "pce220_timer").configure_periodic(FUNC(pcg850v_state::pce220_timer_callback), attotime::from_msec(468));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("pce220_timer", pcg850v_state, pce220_timer_callback, attotime::from_msec(468))
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -1008,24 +1006,23 @@ void pcg850v_state::pcg815(machine_config &config)
RAM(config, RAM_TAG).set_default_size("64K"); // 32K internal + 32K external card
PCE220SERIAL(config, m_serial, 0);
-}
+MACHINE_CONFIG_END
-void pcg850v_state::pcg850v(machine_config &config)
-{
+MACHINE_CONFIG_START(pcg850v_state::pcg850v)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(8'000'000)); // CMOS-SC7852
- m_maincpu->set_addrmap(AS_PROGRAM, &pcg850v_state::pce220_mem);
- m_maincpu->set_addrmap(AS_IO, &pcg850v_state::pcg850v_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(8'000'000) ) // CMOS-SC7852
+ MCFG_DEVICE_PROGRAM_MAP(pce220_mem)
+ MCFG_DEVICE_IO_MAP(pcg850v_io)
/* video hardware */
// 6 lines x 24 characters, resp. 144 x 48 pixel
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(pcg850v_state::screen_update));
- screen.set_size(144, 48);
- screen.set_visarea(0, 144-1, 0, 48-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(pcg850v_state, screen_update)
+ MCFG_SCREEN_SIZE(144, 48)
+ MCFG_SCREEN_VISIBLE_AREA(0, 144-1, 0, 48-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(pcg850v_state::pce220_palette), 2);
@@ -1033,7 +1030,7 @@ void pcg850v_state::pcg850v(machine_config &config)
SPEAKER(config, "mono").front_center();
BEEP(config, m_beep, 3250).add_route(ALL_OUTPUTS, "mono", 0.50);
- TIMER(config, "pce220_timer").configure_periodic(FUNC(pcg850v_state::pce220_timer_callback), attotime::from_msec(468));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("pce220_timer", pcg850v_state, pce220_timer_callback, attotime::from_msec(468))
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -1041,7 +1038,7 @@ void pcg850v_state::pcg850v(machine_config &config)
RAM(config, RAM_TAG).set_default_size("64K"); // 32K internal + 32K external card
PCE220SERIAL(config, m_serial, 0);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( pce220 )
diff --git a/src/mame/drivers/pcfx.cpp b/src/mame/drivers/pcfx.cpp
index b478d2c5ebd..4562f434752 100644
--- a/src/mame/drivers/pcfx.cpp
+++ b/src/mame/drivers/pcfx.cpp
@@ -417,36 +417,35 @@ uint32_t pcfx_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
}
-void pcfx_state::pcfx(machine_config &config)
-{
- V810(config, m_maincpu, XTAL(21'477'272));
- m_maincpu->set_addrmap(AS_PROGRAM, &pcfx_state::pcfx_mem);
- m_maincpu->set_addrmap(AS_IO, &pcfx_state::pcfx_io);
+MACHINE_CONFIG_START(pcfx_state::pcfx)
+ MCFG_DEVICE_ADD( "maincpu", V810, XTAL(21'477'272) )
+ MCFG_DEVICE_PROGRAM_MAP( pcfx_mem)
+ MCFG_DEVICE_IO_MAP( pcfx_io)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(pcfx_state::screen_update));
- screen.set_raw(XTAL(21'477'272), huc6261_device::WPF, 64, 64 + 1024 + 64, huc6261_device::LPF, 18, 18 + 242);
+ MCFG_SCREEN_ADD( "screen", RASTER )
+ MCFG_SCREEN_UPDATE_DRIVER(pcfx_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(21'477'272), huc6261_device::WPF, 64, 64 + 1024 + 64, huc6261_device::LPF, 18, 18 + 242)
- huc6270_device &huc6270_a(HUC6270(config, "huc6270_a", 0));
- huc6270_a.set_vram_size(0x20000);
- huc6270_a.irq().set(FUNC(pcfx_state::irq12_w));
+ MCFG_DEVICE_ADD( "huc6270_a", HUC6270, 0 )
+ MCFG_HUC6270_VRAM_SIZE(0x20000)
+ MCFG_HUC6270_IRQ_CHANGED_CB(WRITELINE(*this, pcfx_state, irq12_w))
- huc6270_device &huc6270_b(HUC6270(config, "huc6270_b", 0));
- huc6270_b.set_vram_size(0x20000);
- huc6270_b.irq().set(FUNC(pcfx_state::irq14_w));
+ MCFG_DEVICE_ADD( "huc6270_b", HUC6270, 0 )
+ MCFG_HUC6270_VRAM_SIZE(0x20000)
+ MCFG_HUC6270_IRQ_CHANGED_CB(WRITELINE(*this, pcfx_state, irq14_w))
- HUC6261(config, m_huc6261, XTAL(21'477'272));
- m_huc6261->set_vdc1_tag("huc6270_a");
- m_huc6261->set_vdc2_tag("huc6270_b");
- m_huc6261->set_king_tag("huc6272");
+ MCFG_DEVICE_ADD("huc6261", HUC6261, XTAL(21'477'272))
+ MCFG_HUC6261_VDC1("huc6270_a")
+ MCFG_HUC6261_VDC2("huc6270_b")
+ MCFG_HUC6261_KING("huc6272")
- huc6272_device &huc6272(HUC6272(config, "huc6272", XTAL(21'477'272)));
- huc6272.irq_changed_callback().set(FUNC(pcfx_state::irq13_w));
- huc6272.set_rainbow_tag("huc6271");
+ MCFG_DEVICE_ADD( "huc6272", HUC6272, XTAL(21'477'272) )
+ MCFG_HUC6272_IRQ_CHANGED_CB(WRITELINE(*this, pcfx_state, irq13_w))
+ MCFG_HUC6272_RAINBOW("huc6271")
- HUC6271(config, "huc6271", XTAL(21'477'272));
+ MCFG_DEVICE_ADD( "huc6271", HUC6271, XTAL(21'477'272) )
- SOFTWARE_LIST(config, "cd_list").set_original("pcfx");
+ MCFG_SOFTWARE_LIST_ADD("cd_list", "pcfx")
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -458,7 +457,7 @@ void pcfx_state::pcfx(machine_config &config)
huc6230.cdda_cb().set("huc6272", FUNC(huc6272_device::cdda_update));
huc6230.add_route(0, "lspeaker", 1.0);
huc6230.add_route(1, "rspeaker", 1.0);
-}
+MACHINE_CONFIG_END
ROM_START( pcfx )
diff --git a/src/mame/drivers/pcktgal.cpp b/src/mame/drivers/pcktgal.cpp
index 5a2c05a40d0..405055488ab 100644
--- a/src/mame/drivers/pcktgal.cpp
+++ b/src/mame/drivers/pcktgal.cpp
@@ -223,26 +223,26 @@ void pcktgal_state::machine_start()
save_item(NAME(m_toggle));
}
-void pcktgal_state::pcktgal(machine_config &config)
-{
+MACHINE_CONFIG_START(pcktgal_state::pcktgal)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &pcktgal_state::pcktgal_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(pcktgal_map)
- DECO_222(config, m_audiocpu, 1500000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &pcktgal_state::pcktgal_sound_map);
- /* IRQs are caused by the ADPCM chip */
- /* NMIs are caused by the main CPU */
+ MCFG_DEVICE_ADD("audiocpu", DECO_222, 1500000)
+ MCFG_DEVICE_PROGRAM_MAP(pcktgal_sound_map)
+ /* IRQs are caused by the ADPCM chip */
+ /* NMIs are caused by the main CPU */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(pcktgal_state::screen_update_pcktgal));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pcktgal_state, screen_update_pcktgal)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
GFXDECODE(config, m_gfxdecode, "palette", gfx_pcktgal);
PALETTE(config, m_palette, FUNC(pcktgal_state::pcktgal_palette), 512);
@@ -256,28 +256,32 @@ void pcktgal_state::pcktgal(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- YM2203(config, "ym1", 1500000).add_route(ALL_OUTPUTS, "mono", 0.60);
- YM3812(config, "ym2", 3000000).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("ym1", YM2203, 1500000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(pcktgal_state::adpcm_int));
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); // 8kHz
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.70);
-}
+ MCFG_DEVICE_ADD("ym2", YM3812, 3000000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-void pcktgal_state::bootleg(machine_config &config)
-{
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, pcktgal_state, adpcm_int)) // interrupt function
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) // 8kHz
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_START(pcktgal_state::bootleg)
pcktgal(config);
- m_gfxdecode->set_info(gfx_bootleg);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(pcktgal_state::screen_update_pcktgalb));
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_bootleg)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(pcktgal_state, screen_update_pcktgalb)
+MACHINE_CONFIG_END
-void pcktgal_state::pcktgal2(machine_config &config)
-{
+MACHINE_CONFIG_START(pcktgal_state::pcktgal2)
pcktgal(config);
- M6502(config.replace(), m_audiocpu, 1500000); /* doesn't use the encrypted 222 */
- m_audiocpu->set_addrmap(AS_PROGRAM, &pcktgal_state::pcktgal_sound_map);
-}
+ MCFG_DEVICE_REMOVE("audiocpu")
+ MCFG_DEVICE_ADD("audiocpu", M6502, 1500000) /* doesn't use the encrypted 222 */
+ MCFG_DEVICE_PROGRAM_MAP(pcktgal_sound_map)
+MACHINE_CONFIG_END
/***************************************************************************/
diff --git a/src/mame/drivers/pcm.cpp b/src/mame/drivers/pcm.cpp
index 02d5f704f9e..e8dc1e64561 100644
--- a/src/mame/drivers/pcm.cpp
+++ b/src/mame/drivers/pcm.cpp
@@ -256,8 +256,7 @@ static GFXDECODE_START( gfx_pcm )
GFXDECODE_ENTRY( "chargen", 0x0000, pcm_charlayout, 0, 1 )
GFXDECODE_END
-void pcm_state::pcm(machine_config &config)
-{
+MACHINE_CONFIG_START(pcm_state::pcm)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(10'000'000) /4);
m_maincpu->set_addrmap(AS_PROGRAM, &pcm_state::pcm_mem);
@@ -265,15 +264,15 @@ void pcm_state::pcm(machine_config &config)
m_maincpu->set_daisy_config(pcm_daisy_chain);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(pcm_state::screen_update));
- screen.set_size(64*8, 16*8);
- screen.set_visarea(0, 64*8-1, 0, 16*8-1);
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_pcm);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(pcm_state, screen_update)
+ MCFG_SCREEN_SIZE(64*8, 16*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 16*8-1)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pcm)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* Sound */
@@ -283,7 +282,7 @@ void pcm_state::pcm(machine_config &config)
/* Devices */
K7659_KEYBOARD(config, K7659_KEYBOARD_TAG, 0);
- CASSETTE(config, m_cass);
+ MCFG_CASSETTE_ADD("cassette")
Z80PIO(config, m_pio_u, XTAL(10'000'000)/4);
m_pio_u->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
@@ -305,7 +304,7 @@ void pcm_state::pcm(machine_config &config)
m_ctc_s->zc_callback<0>().append("sio", FUNC(z80sio_device::txca_w));
m_ctc_s->zc_callback<1>().set("sio", FUNC(z80sio_device::rxtxcb_w));
m_ctc_s->zc_callback<2>().set(FUNC(pcm_state::pcm_82_w)); // speaker
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( pcm )
diff --git a/src/mame/drivers/pcw.cpp b/src/mame/drivers/pcw.cpp
index 1cb0b1f986d..43f851910ec 100644
--- a/src/mame/drivers/pcw.cpp
+++ b/src/mame/drivers/pcw.cpp
@@ -1242,7 +1242,7 @@ void pcw_state::pcw(machine_config &config)
m_keyboard_mcu->t0_in_cb().set(FUNC(pcw_state::mcu_kb_t0_r));
m_keyboard_mcu->bus_in_cb().set(FUNC(pcw_state::mcu_kb_data_r));
-// config.m_minimum_quantum = attotime::from_hz(50);
+// MCFG_QUANTUM_TIME(attotime::from_hz(50))
config.m_perfect_cpu_quantum = subtag("maincpu");
/* video hardware */
diff --git a/src/mame/drivers/pcw16.cpp b/src/mame/drivers/pcw16.cpp
index 58d7340d28e..c527eb293d7 100644
--- a/src/mame/drivers/pcw16.cpp
+++ b/src/mame/drivers/pcw16.cpp
@@ -167,11 +167,11 @@ uint8_t pcw16_state::read_bank_data(uint8_t type, uint16_t offset)
}
if(type < 0x40) // first flash
{
- return m_flash0->read(((type & 0x3f)*0x4000)+offset);
+ return m_flash0->read(machine().dummy_space(), ((type & 0x3f)*0x4000)+offset);
}
else // second flash
{
- return m_flash1->read(((type & 0x3f)*0x4000)+offset);
+ return m_flash1->read(machine().dummy_space(), ((type & 0x3f)*0x4000)+offset);
}
}
}
@@ -188,11 +188,11 @@ void pcw16_state::write_bank_data(uint8_t type, uint16_t offset, uint8_t data)
return; // first four sectors are write protected
if(type < 0x40) // first flash
{
- m_flash0->write(((type & 0x3f)*0x4000)+offset, data);
+ m_flash0->write(machine().dummy_space(), ((type & 0x3f)*0x4000)+offset, data);
}
else // second flash
{
- m_flash1->write(((type & 0x3f)*0x4000)+offset, data);
+ m_flash1->write(machine().dummy_space(), ((type & 0x3f)*0x4000)+offset, data);
}
}
}
@@ -1010,13 +1010,12 @@ static void pcw16_com(device_slot_interface &device)
device.option_add("msystems_mouse", MSYSTEMS_HLE_SERIAL_MOUSE);
}
-void pcw16_state::pcw16(machine_config &config)
-{
+MACHINE_CONFIG_START(pcw16_state::pcw16)
/* basic machine hardware */
- Z80(config, m_maincpu, 16000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &pcw16_state::pcw16_map);
- m_maincpu->set_addrmap(AS_IO, &pcw16_state::pcw16_io);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD("maincpu", Z80, 16000000)
+ MCFG_DEVICE_PROGRAM_MAP(pcw16_map)
+ MCFG_DEVICE_IO_MAP(pcw16_io)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
ns16550_device &uart1(NS16550(config, "ns16550_1", XTAL(1'843'200))); /* TODO: Verify uart model */
uart1.out_tx_callback().set("serport1", FUNC(rs232_port_device::write_txd));
@@ -1044,13 +1043,13 @@ void pcw16_state::pcw16(machine_config &config)
serport2.cts_handler().set(m_uart2, FUNC(ins8250_uart_device::cts_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(PCW16_SCREEN_WIDTH, PCW16_SCREEN_HEIGHT);
- screen.set_visarea(0, PCW16_SCREEN_WIDTH-1, 0, PCW16_SCREEN_HEIGHT-1);
- screen.set_screen_update(FUNC(pcw16_state::screen_update_pcw16));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(PCW16_SCREEN_WIDTH, PCW16_SCREEN_HEIGHT)
+ MCFG_SCREEN_VISIBLE_AREA(0, PCW16_SCREEN_WIDTH-1, 0, PCW16_SCREEN_HEIGHT-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pcw16_state, screen_update_pcw16)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(pcw16_state::pcw16_colours), PCW16_NUM_COLOURS);
@@ -1064,10 +1063,10 @@ void pcw16_state::pcw16(machine_config &config)
PC_FDC_SUPERIO(config, m_fdc, 48_MHz_XTAL / 2);
m_fdc->intrq_wr_callback().set(FUNC(pcw16_state::fdc_interrupt));
- FLOPPY_CONNECTOR(config, "fdc:0", pcw16_floppies, "35hd", pcw16_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", pcw16_floppies, "35hd", pcw16_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", pcw16_floppies, "35hd", pcw16_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", pcw16_floppies, "35hd", pcw16_state::floppy_formats)
- SOFTWARE_LIST(config, "disk_list").set_original("pcw16");
+ MCFG_SOFTWARE_LIST_ADD("disk_list","pcw16")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("2M");
@@ -1075,14 +1074,13 @@ void pcw16_state::pcw16(machine_config &config)
INTEL_E28F008SA(config, "flash0");
INTEL_E28F008SA(config, "flash1");
- AT_KEYB(config, m_keyboard, pc_keyboard_device::KEYBOARD_TYPE::AT, 3);
- m_keyboard->keypress().set(FUNC(pcw16_state::pcw16_keyboard_callback));
+ MCFG_AT_KEYB_ADD("at_keyboard", 3, WRITELINE(*this, pcw16_state, pcw16_keyboard_callback))
/* video ints */
- TIMER(config, "video_timer").configure_periodic(FUNC(pcw16_state::pcw16_timer_callback), attotime::from_usec(5830));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("video_timer", pcw16_state, pcw16_timer_callback, attotime::from_usec(5830))
/* rtc timer */
- TIMER(config, "rtc_timer").configure_periodic(FUNC(pcw16_state::rtc_timer_callback), attotime::from_hz(256));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("rtc_timer", pcw16_state, rtc_timer_callback, attotime::from_hz(256))
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/pcxt.cpp b/src/mame/drivers/pcxt.cpp
index db4b48940a3..31105722580 100644
--- a/src/mame/drivers/pcxt.cpp
+++ b/src/mame/drivers/pcxt.cpp
@@ -494,34 +494,33 @@ static void filetto_isa8_cards(device_slot_interface &device)
}
-void pcxt_state::filetto(machine_config &config)
-{
- I8088(config, m_maincpu, XTAL(14'318'181)/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &pcxt_state::filetto_map);
- m_maincpu->set_addrmap(AS_IO, &pcxt_state::filetto_io);
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
- PCNOPPI_MOTHERBOARD(config, "mb", 0).set_cputag(m_maincpu);
- ISA8_SLOT(config, "isa1", 0, "mb:isa", filetto_isa8_cards, "filetto", true); // FIXME: determine ISA bus clock
+MACHINE_CONFIG_START(pcxt_state::filetto)
+ MCFG_DEVICE_ADD("maincpu", I8088, XTAL(14'318'181)/3)
+ MCFG_DEVICE_PROGRAM_MAP(filetto_map)
+ MCFG_DEVICE_IO_MAP(filetto_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
+ MCFG_PCNOPPI_MOTHERBOARD_ADD("mb","maincpu")
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", filetto_isa8_cards, "filetto", true) // FIXME: determine ISA bus clock
- HC55516(config, "voice", 8000000/4).add_route(ALL_OUTPUTS, "mb:mono", 0.60); //8923S-UM5100 is a HC55536 with ROM hook-up
+ MCFG_DEVICE_ADD("voice", HC55516, 8000000/4)//8923S-UM5100 is a HC55536 with ROM hook-up
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mb:mono", 0.60)
RAM(config, RAM_TAG).set_default_size("640K");
ADDRESS_MAP_BANK(config, "bank").set_map(&pcxt_state::bank_map).set_options(ENDIANNESS_LITTLE, 8, 18, 0x10000);
-}
+MACHINE_CONFIG_END
-void pcxt_state::tetriskr(machine_config &config)
-{
- I8088(config, m_maincpu, XTAL(14'318'181)/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &pcxt_state::tetriskr_map);
- m_maincpu->set_addrmap(AS_IO, &pcxt_state::tetriskr_io);
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
- PCNOPPI_MOTHERBOARD(config, "mb", 0).set_cputag(m_maincpu);
+MACHINE_CONFIG_START(pcxt_state::tetriskr)
+ MCFG_DEVICE_ADD("maincpu", I8088, XTAL(14'318'181)/3)
+ MCFG_DEVICE_PROGRAM_MAP(tetriskr_map)
+ MCFG_DEVICE_IO_MAP(tetriskr_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
+ MCFG_PCNOPPI_MOTHERBOARD_ADD("mb","maincpu")
- ISA8_SLOT(config, "isa1", 0, "mb:isa", filetto_isa8_cards, "tetriskr", true); // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", filetto_isa8_cards, "tetriskr", true) // FIXME: determine ISA bus clock
RAM(config, RAM_TAG).set_default_size("640K");
-}
+MACHINE_CONFIG_END
ROM_START( filetto )
ROM_REGION( 0x10000, "bios", 0 )
diff --git a/src/mame/drivers/pdp11.cpp b/src/mame/drivers/pdp11.cpp
index ec0cac1ed4f..aa8dcbc9811 100644
--- a/src/mame/drivers/pdp11.cpp
+++ b/src/mame/drivers/pdp11.cpp
@@ -156,7 +156,7 @@ WRITE16_MEMBER(pdp11_state::teletype_ctrl_w)
switch(offset)
{
case 3:
- m_terminal->write(data);
+ m_terminal->write(space, 0, data);
break;
}
}
@@ -367,20 +367,18 @@ void pdp11_state::pdp11(machine_config &config)
RX01(config, "rx01", 0);
}
-void pdp11_state::pdp11ub2(machine_config &config)
-{
+MACHINE_CONFIG_START(pdp11_state::pdp11ub2)
pdp11(config);
MCFG_MACHINE_RESET_OVERRIDE(pdp11_state,pdp11ub2)
-}
+MACHINE_CONFIG_END
-void pdp11_state::pdp11qb(machine_config &config)
-{
+MACHINE_CONFIG_START(pdp11_state::pdp11qb)
pdp11(config);
MCFG_MACHINE_RESET_OVERRIDE(pdp11_state,pdp11qb)
m_maincpu->set_initial_mode(0 << 13);
m_maincpu->set_addrmap(AS_PROGRAM, &pdp11_state::pdp11qb_mem);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( pdp11ub )
diff --git a/src/mame/drivers/pegasus.cpp b/src/mame/drivers/pegasus.cpp
index 77ddc422697..74bce94db65 100644
--- a/src/mame/drivers/pegasus.cpp
+++ b/src/mame/drivers/pegasus.cpp
@@ -463,15 +463,15 @@ image_init_result pegasus_state::load_cart(device_image_interface &image, generi
void pegasus_state::machine_start()
{
if (m_exp_00->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_exp_00));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_exp_00));
if (m_exp_01->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_exp_01));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_exp_01));
if (m_exp_02->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0x2fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_exp_02));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0x2fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_exp_02));
if (m_exp_0c->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000, 0xcfff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_exp_0c));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000, 0xcfff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_exp_0c));
if (m_exp_0d->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0xd000, 0xdfff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_exp_0d));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0xd000, 0xdfff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_exp_0d));
}
void pegasus_state::machine_reset()
@@ -490,25 +490,25 @@ void pegasus_state::init_pegasus()
MACHINE_CONFIG_START(pegasus_state::pegasus)
/* basic machine hardware */
- MC6809(config, m_maincpu, XTAL(4'000'000)); // actually a 6809C - 4MHZ clock coming in, 1MHZ internally
- m_maincpu->set_addrmap(AS_PROGRAM, &pegasus_state::pegasus_mem);
+ MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(4'000'000)) // actually a 6809C - 4MHZ clock coming in, 1MHZ internally
+ MCFG_DEVICE_PROGRAM_MAP(pegasus_mem)
- TIMER(config, "pegasus_firq").configure_periodic(FUNC(pegasus_state::pegasus_firq), attotime::from_hz(400));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("pegasus_firq", pegasus_state, pegasus_firq, attotime::from_hz(400))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(pegasus_state::screen_update));
- screen.set_size(32*8, 16*16);
- screen.set_visarea(0, 32*8-1, 0, 16*16-1);
- screen.set_palette("palette");
- GFXDECODE(config, "gfxdecode", "palette", gfx_pegasus);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(pegasus_state, screen_update)
+ MCFG_SCREEN_SIZE(32*8, 16*16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 16*16-1)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pegasus)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.05);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05);
/* devices */
PIA6821(config, m_pia_s, 0);
@@ -541,18 +541,18 @@ MACHINE_CONFIG_START(pegasus_state::pegasus)
MCFG_GENERIC_SOCKET_ADD("exp0d", generic_plain_slot, "pegasus_cart")
MCFG_GENERIC_LOAD(pegasus_state, exp0d_load)
- CASSETTE(config, m_cass);
- m_cass->set_default_state(CASSETTE_STOPPED|CASSETTE_MOTOR_ENABLED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED|CASSETTE_MOTOR_ENABLED)
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("pegasus_cart");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "pegasus_cart")
MACHINE_CONFIG_END
-void pegasus_state::pegasusm(machine_config &config)
-{
+MACHINE_CONFIG_START(pegasus_state::pegasusm)
pegasus(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &pegasus_state::pegasusm_mem);
-}
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(pegasusm_mem)
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/pencil2.cpp b/src/mame/drivers/pencil2.cpp
index 435f8cd3056..624e697cc44 100644
--- a/src/mame/drivers/pencil2.cpp
+++ b/src/mame/drivers/pencil2.cpp
@@ -149,9 +149,10 @@ void pencil2_state::io_map(address_map &map)
map(0x10, 0x1f).w(FUNC(pencil2_state::port10_w));
map(0x30, 0x3f).w(FUNC(pencil2_state::port30_w));
map(0x80, 0x9f).w(FUNC(pencil2_state::port80_w));
- map(0xa0, 0xa1).mirror(0x1e).rw("tms9928a", FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
+ map(0xa0, 0xa0).mirror(0x1e).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0xa1, 0xa1).mirror(0x1e).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
map(0xc0, 0xdf).w(FUNC(pencil2_state::portc0_w));
- map(0xe0, 0xff).w("sn76489a", FUNC(sn76489a_device::write));
+ map(0xe0, 0xff).w("sn76489a", FUNC(sn76489a_device::command_w));
map(0xe0, 0xe0).portr("E0");
map(0xe1, 0xe1).portr("E1");
map(0xe2, 0xe2).r(FUNC(pencil2_state::porte2_r));
@@ -307,15 +308,14 @@ INPUT_PORTS_END
void pencil2_state::machine_start()
{
if (m_cart->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xffff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xffff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
}
-void pencil2_state::pencil2(machine_config &config)
-{
+MACHINE_CONFIG_START(pencil2_state::pencil2)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(10'738'635)/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &pencil2_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &pencil2_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(10'738'635)/3)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/* video hardware */
tms9929a_device &vdp(TMS9929A(config, "tms9928a", XTAL(10'738'635)));
@@ -325,27 +325,27 @@ void pencil2_state::pencil2(machine_config &config)
// sound hardware
SPEAKER(config, "mono").front_center();
- SN76489A(config, "sn76489a", XTAL(10'738'635)/3).add_route(ALL_OUTPUTS, "mono", 1.00); // guess
- WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("sn76489a", SN76489A, XTAL(10'738'635)/3) // guess
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
/* cassette */
- CASSETTE(config, m_cass);
- m_cass->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
/* cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "pencil2_cart");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "pencil2_cart")
/* printer */
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(FUNC(pencil2_state::write_centronics_ack));
- m_centronics->busy_handler().set(FUNC(pencil2_state::write_centronics_busy));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, pencil2_state, write_centronics_ack))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, pencil2_state, write_centronics_busy))
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("pencil2");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "pencil2")
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( pencil2 )
diff --git a/src/mame/drivers/pengadvb.cpp b/src/mame/drivers/pengadvb.cpp
index efc6dd434c5..66ca6bbaf9e 100644
--- a/src/mame/drivers/pengadvb.cpp
+++ b/src/mame/drivers/pengadvb.cpp
@@ -54,15 +54,15 @@ public:
void init_pengadvb();
private:
- uint8_t mem_r(offs_t offset);
- void mem_w(offs_t offset, uint8_t data);
- void megarom_bank_w(offs_t offset, uint8_t data);
+ DECLARE_READ8_MEMBER(mem_r);
+ DECLARE_WRITE8_MEMBER(mem_w);
+ DECLARE_WRITE8_MEMBER(megarom_bank_w);
- void psg_port_b_w(uint8_t data);
- uint8_t ppi_port_a_r();
- void ppi_port_a_w(uint8_t data);
- uint8_t ppi_port_b_r();
- void ppi_port_c_w(uint8_t data);
+ DECLARE_WRITE8_MEMBER(pengadvb_psg_port_b_w);
+ DECLARE_READ8_MEMBER(pengadvb_ppi_port_a_r);
+ DECLARE_WRITE8_MEMBER(pengadvb_ppi_port_a_w);
+ DECLARE_READ8_MEMBER(pengadvb_ppi_port_b_r);
+ DECLARE_WRITE8_MEMBER(pengadvb_ppi_port_c_w);
virtual void machine_start() override;
virtual void machine_reset() override;
@@ -86,17 +86,17 @@ private:
***************************************************************************/
-uint8_t pengadvb_state::mem_r(offs_t offset)
+READ8_MEMBER(pengadvb_state::mem_r)
{
- return m_page[offset >> 14 & 3]->read8(offset);
+ return m_page[offset >> 14 & 3]->read8(space, offset);
}
-void pengadvb_state::mem_w(offs_t offset, uint8_t data)
+WRITE8_MEMBER(pengadvb_state::mem_w)
{
- m_page[offset >> 14 & 3]->write8(offset, data);
+ m_page[offset >> 14 & 3]->write8(space, offset, data);
}
-void pengadvb_state::megarom_bank_w(offs_t offset, uint8_t data)
+WRITE8_MEMBER(pengadvb_state::megarom_bank_w)
{
m_bank[offset >> 13 & 3]->set_entry(data & 0xf);
}
@@ -126,7 +126,8 @@ void pengadvb_state::io_mem(address_map &map)
{
map.unmap_value_high();
map.global_mask(0xff);
- map(0x98, 0x99).rw("tms9128", FUNC(tms9128_device::read), FUNC(tms9128_device::write));
+ map(0x98, 0x98).rw("tms9128", FUNC(tms9128_device::vram_r), FUNC(tms9128_device::vram_w));
+ map(0x99, 0x99).rw("tms9128", FUNC(tms9128_device::register_r), FUNC(tms9128_device::register_w));
map(0xa0, 0xa1).w("aysnd", FUNC(ay8910_device::address_data_w));
map(0xa2, 0xa2).r("aysnd", FUNC(ay8910_device::data_r));
map(0xa8, 0xab).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
@@ -164,7 +165,7 @@ INPUT_PORTS_END
***************************************************************************/
// AY8910
-void pengadvb_state::psg_port_b_w(uint8_t data)
+WRITE8_MEMBER(pengadvb_state::pengadvb_psg_port_b_w)
{
// leftover from msx ver?
}
@@ -172,12 +173,12 @@ void pengadvb_state::psg_port_b_w(uint8_t data)
/**************************************************************************/
// I8255
-uint8_t pengadvb_state::ppi_port_a_r()
+READ8_MEMBER(pengadvb_state::pengadvb_ppi_port_a_r)
{
return m_primary_slot_reg;
}
-void pengadvb_state::ppi_port_a_w(uint8_t data)
+WRITE8_MEMBER(pengadvb_state::pengadvb_ppi_port_a_w)
{
if (data != m_primary_slot_reg)
{
@@ -188,7 +189,7 @@ void pengadvb_state::ppi_port_a_w(uint8_t data)
}
}
-uint8_t pengadvb_state::ppi_port_b_r()
+READ8_MEMBER(pengadvb_state::pengadvb_ppi_port_b_r)
{
// TODO: dipswitch
switch (m_kb_matrix_row)
@@ -203,7 +204,7 @@ uint8_t pengadvb_state::ppi_port_b_r()
return 0xff;
}
-void pengadvb_state::ppi_port_c_w(uint8_t data)
+WRITE8_MEMBER(pengadvb_state::pengadvb_ppi_port_c_w)
{
m_kb_matrix_row = data & 0x0f;
}
@@ -226,10 +227,10 @@ void pengadvb_state::pengadvb(machine_config &config)
ADDRESS_MAP_BANK(config, "page3").set_map(&pengadvb_state::bank_mem).set_options(ENDIANNESS_LITTLE, 8, 18, 0x10000);
i8255_device &ppi(I8255(config, "ppi8255"));
- ppi.in_pa_callback().set(FUNC(pengadvb_state::ppi_port_a_r));
- ppi.out_pa_callback().set(FUNC(pengadvb_state::ppi_port_a_w));
- ppi.in_pb_callback().set(FUNC(pengadvb_state::ppi_port_b_r));
- ppi.out_pc_callback().set(FUNC(pengadvb_state::ppi_port_c_w));
+ ppi.in_pa_callback().set(FUNC(pengadvb_state::pengadvb_ppi_port_a_r));
+ ppi.out_pa_callback().set(FUNC(pengadvb_state::pengadvb_ppi_port_a_w));
+ ppi.in_pb_callback().set(FUNC(pengadvb_state::pengadvb_ppi_port_b_r));
+ ppi.out_pc_callback().set(FUNC(pengadvb_state::pengadvb_ppi_port_c_w));
/* video hardware */
tms9128_device &vdp(TMS9128(config, "tms9128", XTAL(10'738'635)));
@@ -242,7 +243,7 @@ void pengadvb_state::pengadvb(machine_config &config)
SPEAKER(config, "mono").front_center();
ay8910_device &aysnd(AY8910(config, "aysnd", XTAL(10'738'635)/6));
aysnd.port_a_read_callback().set_ioport("IN0");
- aysnd.port_b_write_callback().set(FUNC(pengadvb_state::psg_port_b_w));
+ aysnd.port_b_write_callback().set(FUNC(pengadvb_state::pengadvb_psg_port_b_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
}
diff --git a/src/mame/drivers/pengo.cpp b/src/mame/drivers/pengo.cpp
index 0c9efb42b7e..650bfb08e38 100644
--- a/src/mame/drivers/pengo.cpp
+++ b/src/mame/drivers/pengo.cpp
@@ -68,9 +68,7 @@
#include "cpu/z80/z80.h"
#include "machine/74259.h"
-#include "machine/gen_latch.h"
#include "machine/segacrpt_device.h"
-#include "sound/ay8910.h"
#include "screen.h"
#include "speaker.h"
@@ -88,7 +86,6 @@ public:
void pengoe(machine_config &config);
void pengou(machine_config &config);
void pengo(machine_config &config);
- void schick(machine_config &config);
void init_penta();
@@ -103,9 +100,6 @@ private:
void decrypted_opcodes_map(address_map &map);
void jrpacmbl_map(address_map &map);
void pengo_map(address_map &map);
- void schick_map(address_map &map);
- void schick_audio_map(address_map &map);
- void schick_audio_io_map(address_map &map);
};
@@ -195,30 +189,7 @@ void pengo_state::jrpacmbl_map(address_map &map)
map(0x90c0, 0x90ff).portr("P1");
}
-void pengo_state::schick_map(address_map &map) // everything needs to be verified
-{
- map(0x0000, 0x7fff).rom();
- map(0x8000, 0x83ff).ram().w(FUNC(pengo_state::pacman_videoram_w)).share("videoram");
- map(0x8400, 0x87ff).ram().w(FUNC(pengo_state::pacman_colorram_w)).share("colorram");
- map(0x8800, 0x8fef).ram().share("mainram");
- map(0x8ff0, 0x8fff).ram().share("spriteram");
- map(0x9020, 0x902f).writeonly().share("spriteram2");
-}
-void pengo_state::schick_audio_map(address_map &map)
-{
- map(0x0000, 0x1fff).rom();
- map(0x4000, 0x43ff).ram();
- map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read));
-}
-
-void pengo_state::schick_audio_io_map(address_map &map)
-{
- map.global_mask(0xff);
- map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w));
- map(0x10, 0x11).w("ay2", FUNC(ay8910_device::address_data_w));
- map(0x80, 0x81).w("ay3", FUNC(ay8910_device::address_data_w));
-}
/*************************************
*
@@ -315,49 +286,6 @@ static INPUT_PORTS_START( pengo )
INPUT_PORTS_END
-static INPUT_PORTS_START( schick )
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("SW1")
- 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")
-
- PORT_START("SW2")
- PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW2:1")
- PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW2:2")
- PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW2:3")
- PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW2:4")
- PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW2:5")
- PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW2:6")
- PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW2:7")
- PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW2:8")
-INPUT_PORTS_END
-
-
static INPUT_PORTS_START( jrpacmbl )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
@@ -524,44 +452,7 @@ void pengo_state::jrpacmbl(machine_config &config)
MCFG_VIDEO_START_OVERRIDE(pengo_state,jrpacman)
}
-void pengo_state::schick(machine_config &config) // all dividers unknown
-{
- /* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/6);
- m_maincpu->set_addrmap(AS_PROGRAM, &pengo_state::schick_map);
- m_maincpu->set_addrmap(AS_OPCODES, &pengo_state::decrypted_opcodes_map);
-
- z80_device &audiocpu(Z80(config, "audiocpu", MASTER_CLOCK/6));
- audiocpu.set_addrmap(AS_PROGRAM, &pengo_state::schick_audio_map);
- audiocpu.set_addrmap(AS_IO, &pengo_state::schick_audio_io_map);
- GENERIC_LATCH_8(config, "soundlatch");
-
- WATCHDOG_TIMER(config, m_watchdog);
-
- LS259(config, m_latch); // 3I
-
- /* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_pengo);
- PALETTE(config, m_palette).set_entries(128); // wrong
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); // to be verified
- screen.set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- screen.set_screen_update(FUNC(pengo_state::screen_update_pacman));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(pengo_state::vblank_irq));
-
- MCFG_VIDEO_START_OVERRIDE(pengo_state, pengo)
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
-
- AY8910(config, "ay1", MASTER_CLOCK/12).add_route(ALL_OUTPUTS, "mono", 0.13);
-
- AY8910(config, "ay2", MASTER_CLOCK/12).add_route(ALL_OUTPUTS, "mono", 0.13);
-
- AY8910(config, "ay3", MASTER_CLOCK/12).add_route(ALL_OUTPUTS, "mono", 0.13);
-}
/*************************************
*
@@ -780,24 +671,6 @@ ROM_START( penta )
ROM_LOAD( "pr1636.70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
ROM_END
-// MH032288 PCB. LC ('lato componenti', components side in Italian) so maybe produced in Italy?
-// A plastic block in a corner covers probably the main CPU and the decryption logic.
-// Might fit better in a different driver once decrypted
-ROM_START( schick )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "27c512.8d", 0x0000, 0x10000, CRC(38986329) SHA1(bfd62d6a49d25acc582e5f076833c3b22c1a7fd7) )
-
- ROM_REGION( 0x8000, "audiocpu", 0 )
- ROM_LOAD( "27c256.7m", 0x0000, 0x8000, CRC(694dadca) SHA1(65d436d6c8ebf6a9b5af286122e7391973d463e0) ) // identical to bombjack, but 4x
-
- ROM_REGION( 0x10000, "gfx1", 0 )
- ROM_LOAD( "27c256.4e", 0x0000, 0x8000, CRC(edb4a243) SHA1(64f35b5142ffb3bfbd6a2899af9d1d719b83e2a1) )
- ROM_LOAD( "4.27c256.4f", 0x8000, 0x8000, CRC(f666a52a) SHA1(877e1112c9c9a39b55934f6a382ad35fc9bf6859) ) // only labeled ROM
-
- ROM_REGION( 0x0400, "proms", ROMREGION_ERASEFF )
- // currently not dumped
-ROM_END
-
ROM_START( jrpacmbl )
ROM_REGION( 0x10000, "maincpu", 0 )
@@ -917,4 +790,3 @@ GAME( 1982, pengo5, pengo, pengoe, pengo, pengo_state, empty_init, ROT
GAME( 1982, pengob, pengo, pengo, pengo, pengo_state, init_penta, ROT90, "bootleg", "Pengo (bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, penta, pengo, pengo, pengo, pengo_state, init_penta, ROT90, "bootleg (Grinbee Shouji)", "Penta", MACHINE_SUPPORTS_SAVE ) // Grinbee Shouji was a subsidiary of Orca
GAME( 1983, jrpacmbl, jrpacman, jrpacmbl, jrpacmbl, pengo_state, empty_init, ROT90, "bootleg", "Jr. Pac-Man (Pengo hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
-GAME( 1988, schick, 0, schick, schick, pengo_state, empty_init, ROT90, "Microhard", "Super Chick", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // encrypted, scheme suspected similar to the Penta one
diff --git a/src/mame/drivers/pentagon.cpp b/src/mame/drivers/pentagon.cpp
index 54ee980e21a..82c56cac504 100644
--- a/src/mame/drivers/pentagon.cpp
+++ b/src/mame/drivers/pentagon.cpp
@@ -276,22 +276,23 @@ GFXDECODE_END
-void pentagon_state::pentagon(machine_config &config)
-{
+MACHINE_CONFIG_START(pentagon_state::pentagon)
spectrum_128(config);
- m_maincpu->set_clock(XTAL(14'000'000) / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &pentagon_state::pentagon_mem);
- m_maincpu->set_addrmap(AS_IO, &pentagon_state::pentagon_io);
- m_maincpu->set_addrmap(AS_OPCODES, &pentagon_state::pentagon_switch);
- m_maincpu->set_vblank_int("screen", FUNC(pentagon_state::pentagon_interrupt));
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(XTAL(14'000'000) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(pentagon_mem)
+ MCFG_DEVICE_IO_MAP(pentagon_io)
+ MCFG_DEVICE_OPCODES_MAP(pentagon_switch)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pentagon_state, pentagon_interrupt)
MCFG_MACHINE_RESET_OVERRIDE(pentagon_state, pentagon )
- //m_screen->set_raw(XTAL(14'000'000) / 2, 448, 0, 352, 320, 0, 304);
- m_screen->set_raw(XTAL(14'000'000) / 2, 448, 0, 352, 320, 0, 287);
+ MCFG_SCREEN_MODIFY("screen")
+ //MCFG_SCREEN_RAW_PARAMS(XTAL(14'000'000) / 2, 448, 0, 352, 320, 0, 304)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(14'000'000) / 2, 448, 0, 352, 320, 0, 287)
MCFG_VIDEO_START_OVERRIDE(pentagon_state, pentagon )
BETA_DISK(config, m_beta, 0);
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_pentagon);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_pentagon)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
@@ -302,10 +303,10 @@ void pentagon_state::pentagon(machine_config &config)
ay8912.add_route(1, "rspeaker", 0.25);
ay8912.add_route(2, "rspeaker", 0.50);
- config.device_remove("exp");
+ MCFG_DEVICE_REMOVE("exp")
- SOFTWARE_LIST(config, "cass_list_pen").set_original("pentagon_cass");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list_pen","pentagon_cass")
+MACHINE_CONFIG_END
void pentagon_state::pent1024(machine_config &config)
{
diff --git a/src/mame/drivers/peoplepc.cpp b/src/mame/drivers/peoplepc.cpp
index 4d01fbce79e..7b426d6057a 100644
--- a/src/mame/drivers/peoplepc.cpp
+++ b/src/mame/drivers/peoplepc.cpp
@@ -243,8 +243,7 @@ static DEVICE_INPUT_DEFAULTS_START(keyboard)
DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 )
DEVICE_INPUT_DEFAULTS_END
-void peoplepc_state::olypeopl(machine_config &config)
-{
+MACHINE_CONFIG_START(peoplepc_state::olypeopl)
/* basic machine hardware */
I8086(config, m_maincpu, XTAL(14'745'600)/3);
m_maincpu->set_addrmap(AS_PROGRAM, &peoplepc_state::peoplepc_map);
@@ -270,11 +269,11 @@ void peoplepc_state::olypeopl(machine_config &config)
I8255(config, "ppi8255");
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_raw(XTAL(22'000'000), 640, 0, 640, 475, 0, 475);
- screen.set_screen_update("h46505", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_RAW_PARAMS(XTAL(22'000'000),640,0,640,475,0,475)
+ MCFG_SCREEN_UPDATE_DEVICE( "h46505", mc6845_device, screen_update )
- GFXDECODE(config, m_gfxdecode, m_palette, gfxdecode_device::empty);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfxdecode_device::empty)
PALETTE(config, m_palette, palette_device::MONOCHROME);
h46505_device &crtc(H46505(config, "h46505", XTAL(22'000'000)/8));
@@ -288,14 +287,14 @@ void peoplepc_state::olypeopl(machine_config &config)
m_dmac->out_tc_cb().set(FUNC(peoplepc_state::tc_w));
m_dmac->in_memr_cb().set(FUNC(peoplepc_state::memory_read_byte));
m_dmac->out_memw_cb().set(FUNC(peoplepc_state::memory_write_byte));
- m_dmac->in_ior_cb<0>().set("upd765", FUNC(upd765a_device::dma_r));
- m_dmac->out_iow_cb<0>().set("upd765", FUNC(upd765a_device::dma_w));
+ m_dmac->in_ior_cb<0>().set("upd765", FUNC(upd765a_device::mdma_r));
+ m_dmac->out_iow_cb<0>().set("upd765", FUNC(upd765a_device::mdma_w));
UPD765A(config, m_fdc, 8'000'000, true, true);
m_fdc->intrq_wr_callback().set("pic8259_0", FUNC(pic8259_device::ir2_w));
m_fdc->drq_wr_callback().set(m_dmac, FUNC(i8257_device::dreq0_w));
- FLOPPY_CONNECTOR(config, "upd765:0", peoplepc_floppies, "525qd", peoplepc_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765:1", peoplepc_floppies, "525qd", peoplepc_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("upd765:0", peoplepc_floppies, "525qd", peoplepc_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765:1", peoplepc_floppies, "525qd", peoplepc_state::floppy_formats)
I8251(config, m_8251key, 0);
m_8251key->rxrdy_handler().set("pic8259_1", FUNC(pic8259_device::ir1_w));
@@ -306,7 +305,7 @@ void peoplepc_state::olypeopl(machine_config &config)
kbd.set_option_device_input_defaults("keyboard", DEVICE_INPUT_DEFAULTS_NAME(keyboard));
I8251(config, m_8251ser, 0);
-}
+MACHINE_CONFIG_END
ROM_START( olypeopl )
ROM_REGION(0x2000,"maincpu", 0)
diff --git a/src/mame/drivers/peplus.cpp b/src/mame/drivers/peplus.cpp
index ac6296de55e..e4fed0a6e15 100644
--- a/src/mame/drivers/peplus.cpp
+++ b/src/mame/drivers/peplus.cpp
@@ -459,7 +459,7 @@ WRITE8_MEMBER(peplus_state::crtc_display_w)
m_bg_tilemap->mark_tile_dirty(m_vid_address);
/* An access here triggers a device read !*/
- m_crtc->register_r();
+ m_crtc->register_r(space, 0);
}
WRITE8_MEMBER(peplus_state::duart_w)
@@ -978,10 +978,10 @@ void peplus_state::peplus_palette(palette_device &palette) const
uint8_t const *const color_prom = memregion("proms")->base();
uint32_t const proms_size = memregion("proms")->bytes();
/* prom bits
- 7654 3210
- ---- -xxx red component.
- --xx x--- green component.
- xx-- ---- blue component.
+ 7654 3210
+ ---- -xxx red component.
+ --xx x--- green component.
+ xx-- ---- blue component.
*/
for (int i = 0; i < palette.entries(); i++)
@@ -1371,8 +1371,7 @@ void peplus_state::machine_start()
* Machine Driver *
*************************/
-void peplus_state::peplus(machine_config &config)
-{
+MACHINE_CONFIG_START(peplus_state::peplus)
// basic machine hardware
I80C32(config, m_maincpu, XTAL(20'000'000)/2); // 10MHz
m_maincpu->set_addrmap(AS_PROGRAM, &peplus_state::main_map);
@@ -1400,7 +1399,7 @@ void peplus_state::peplus(machine_config &config)
m_crtc->set_on_update_addr_change_callback(FUNC(peplus_state::crtc_addr), this);
m_crtc->out_vsync_callback().set(FUNC(peplus_state::crtc_vsync));
- I2C_X2404P(config, m_i2cmem);
+ X2404P(config, m_i2cmem);
// sound hardware
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/drivers/perq.cpp b/src/mame/drivers/perq.cpp
index 9e92fad8353..c067da028b7 100644
--- a/src/mame/drivers/perq.cpp
+++ b/src/mame/drivers/perq.cpp
@@ -29,9 +29,8 @@ private:
static INPUT_PORTS_START( perq )
INPUT_PORTS_END
-void perq_state::perq(machine_config &config)
-{
-}
+MACHINE_CONFIG_START(perq_state::perq)
+MACHINE_CONFIG_END
ROM_START( perq )
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/pes.cpp b/src/mame/drivers/pes.cpp
index eac3d5b4f8a..1e51fe6a583 100644
--- a/src/mame/drivers/pes.cpp
+++ b/src/mame/drivers/pes.cpp
@@ -110,7 +110,7 @@ READ8_MEMBER( pes_state::data_to_i8031)
WRITE8_MEMBER(pes_state::data_from_i8031)
{
- m_terminal->write(data);
+ m_terminal->write(space,0,data);
#ifdef DEBUG_SERIAL_CB
fprintf(stderr,"callback: output from i8031/pes to pc/terminal: %02X\n",data);
#endif
diff --git a/src/mame/drivers/pet.cpp b/src/mame/drivers/pet.cpp
index c6597fcc414..bc66b62bb8e 100644
--- a/src/mame/drivers/pet.cpp
+++ b/src/mame/drivers/pet.cpp
@@ -530,10 +530,10 @@ void pet_state::update_speaker()
READ8_MEMBER( pet_state::read )
{
int sel = offset >> 12;
- int norom = m_exp->norom_r(offset, sel);
+ int norom = m_exp->norom_r(space, offset, sel);
uint8_t data = 0;
- data = m_exp->read(offset, data, sel);
+ data = m_exp->read(space, offset, data, sel);
switch (sel)
{
@@ -555,7 +555,7 @@ READ8_MEMBER( pet_state::read )
if (norom)
{
if (m_cart_9000 && m_cart_9000->exists())
- data = m_cart_9000->read_rom(offset & 0xfff);
+ data = m_cart_9000->read_rom(space, offset & 0xfff);
else
data = m_rom->base()[offset - 0x9000];
}
@@ -565,7 +565,7 @@ READ8_MEMBER( pet_state::read )
if (norom)
{
if (m_cart_a000 && m_cart_a000->exists())
- data = m_cart_a000->read_rom(offset & 0xfff);
+ data = m_cart_a000->read_rom(space, offset & 0xfff);
else
data = m_rom->base()[offset - 0x9000];
}
@@ -575,7 +575,7 @@ READ8_MEMBER( pet_state::read )
if (norom)
{
if (m_cart_b000 && m_cart_b000->exists())
- data = m_cart_b000->read_rom(offset & 0xfff);
+ data = m_cart_b000->read_rom(space, offset & 0xfff);
else
data = m_rom->base()[offset - 0x9000];
}
@@ -595,11 +595,11 @@ READ8_MEMBER( pet_state::read )
if (BIT(offset, 4))
{
- data &= m_pia1->read(offset & 0x03);
+ data &= m_pia1->read(space, offset & 0x03);
}
if (BIT(offset, 5))
{
- data &= m_pia2->read(offset & 0x03);
+ data &= m_pia2->read(space, offset & 0x03);
}
if (BIT(offset, 6))
{
@@ -607,7 +607,7 @@ READ8_MEMBER( pet_state::read )
}
if (m_crtc && BIT(offset, 7) && BIT(offset, 0))
{
- data &= m_crtc->register_r();
+ data &= m_crtc->register_r(space, 0);
}
}
else if (norom)
@@ -629,7 +629,7 @@ WRITE8_MEMBER( pet_state::write )
{
int sel = offset >> 12;
- m_exp->write(offset, data, sel);
+ m_exp->write(space, offset, data, sel);
switch (sel)
{
@@ -652,11 +652,11 @@ WRITE8_MEMBER( pet_state::write )
{
if (BIT(offset, 4))
{
- m_pia1->write(offset & 0x03, data);
+ m_pia1->write(space, offset & 0x03, data);
}
if (BIT(offset, 5))
{
- m_pia2->write(offset & 0x03, data);
+ m_pia2->write(space, offset & 0x03, data);
}
if (BIT(offset, 6))
{
@@ -666,11 +666,11 @@ WRITE8_MEMBER( pet_state::write )
{
if (BIT(offset, 0))
{
- m_crtc->register_w(data);
+ m_crtc->register_w(space, 0, data);
}
else
{
- m_crtc->address_w(data);
+ m_crtc->address_w(space, 0, data);
}
}
}
@@ -758,7 +758,7 @@ void cbm8296_state::read_pla2_eprom(offs_t offset, int phi2, int brw, int casena
READ8_MEMBER( cbm8296_state::read )
{
- int norom = m_exp->norom_r(offset, offset >> 12) && !BIT(m_cr, 7);
+ int norom = m_exp->norom_r(space, offset, offset >> 12) && !BIT(m_cr, 7);
int phi2 = 1, brw = 1, noscreen = 1, noio = BIT(m_cr, 6);
int ramsela = BIT(m_via_pa, 0), ramsel9 = BIT(m_via_pa, 1), ramon = BIT(m_via_pa, 2);
int cswff = 1, cs9 = 1, csa = 1, csio = 1, cse = 1, cskb = 1, fa12 = 1, fa15 = 1, casena1 = 1, casena2 = 1, endra = 1;
@@ -788,14 +788,14 @@ READ8_MEMBER( cbm8296_state::read )
if (!cs9)
{
if (m_cart_9000 && m_cart_9000->exists())
- data = m_cart_9000->read_rom(offset & 0xfff);
+ data = m_cart_9000->read_rom(space, offset & 0xfff);
else
data = m_rom->base()[offset & 0xfff];
}
if (!csa)
{
if (m_cart_a000 && m_cart_a000->exists())
- data = m_cart_a000->read_rom(offset & 0xfff);
+ data = m_cart_a000->read_rom(space, offset & 0xfff);
else
data = m_rom->base()[0x1000 | (offset & 0xfff)];
}
@@ -813,11 +813,11 @@ READ8_MEMBER( cbm8296_state::read )
if (BIT(offset, 4))
{
- data &= m_pia1->read(offset & 0x03);
+ data &= m_pia1->read(space, offset & 0x03);
}
if (BIT(offset, 5))
{
- data &= m_pia2->read(offset & 0x03);
+ data &= m_pia2->read(space, offset & 0x03);
}
if (BIT(offset, 6))
{
@@ -825,7 +825,7 @@ READ8_MEMBER( cbm8296_state::read )
}
if (BIT(offset, 7) && BIT(offset, 0))
{
- data &= m_crtc->register_r();
+ data &= m_crtc->register_r(space, 0);
}
}
@@ -839,7 +839,7 @@ READ8_MEMBER( cbm8296_state::read )
WRITE8_MEMBER( cbm8296_state::write )
{
- int norom = m_exp->norom_r(offset, offset >> 12) && !BIT(m_cr, 7);
+ int norom = m_exp->norom_r(space, offset, offset >> 12) && !BIT(m_cr, 7);
int phi2 = 1, brw = 0, noscreen = 1, noio = BIT(m_cr, 6);
int ramsela = BIT(m_via_pa, 0), ramsel9 = BIT(m_via_pa, 1), ramon = BIT(m_via_pa, 2);
int cswff = 1, cs9 = 1, csa = 1, csio = 1, cse = 1, cskb = 1, fa12 = 1, fa15 = 1, casena1 = 1, casena2 = 1, endra = 1;
@@ -868,11 +868,11 @@ WRITE8_MEMBER( cbm8296_state::write )
{
if (BIT(offset, 4))
{
- m_pia1->write(offset & 0x03, data);
+ m_pia1->write(space, offset & 0x03, data);
}
if (BIT(offset, 5))
{
- m_pia2->write(offset & 0x03, data);
+ m_pia2->write(space, offset & 0x03, data);
}
if (BIT(offset, 6))
{
@@ -882,11 +882,11 @@ WRITE8_MEMBER( cbm8296_state::write )
{
if (BIT(offset, 0))
{
- m_crtc->register_w(data);
+ m_crtc->register_w(space, 0, data);
}
else
{
- m_crtc->address_w(data);
+ m_crtc->address_w(space, 0, data);
}
}
}
@@ -1783,8 +1783,8 @@ void pet_state::base_pet_devices(machine_config &config, const char *default_dri
m_user->pl_handler().set(m_via, FUNC(via6522_device::write_pa7));
m_user->pm_handler().set(m_via, FUNC(via6522_device::write_cb2));
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(pet_state, cbm_pet), this), "p00,prg", CBM_QUICKLOAD_DELAY);
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(pet_state, cbm_pet), this), "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS);
quickload.set_interface("cbm_quik");
SOFTWARE_LIST(config, "cass_list").set_original("pet_cass");
diff --git a/src/mame/drivers/peyper.cpp b/src/mame/drivers/peyper.cpp
index f3dc37a2f57..c81928a9184 100644
--- a/src/mame/drivers/peyper.cpp
+++ b/src/mame/drivers/peyper.cpp
@@ -601,13 +601,12 @@ void peyper_state::machine_reset()
}
-void peyper_state::peyper(machine_config &config)
-{
+MACHINE_CONFIG_START(peyper_state::peyper)
/* basic machine hardware */
- Z80(config, m_maincpu, 2'500'000);
- m_maincpu->set_addrmap(AS_PROGRAM, &peyper_state::peyper_map);
- m_maincpu->set_addrmap(AS_IO, &peyper_state::peyper_io);
- m_maincpu->set_periodic_int(FUNC(peyper_state::irq0_line_hold), attotime::from_hz(1250));
+ MCFG_DEVICE_ADD("maincpu", Z80, 2'500'000)
+ MCFG_DEVICE_PROGRAM_MAP(peyper_map)
+ MCFG_DEVICE_IO_MAP(peyper_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(peyper_state, irq0_line_hold, 1250)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
@@ -632,7 +631,7 @@ void peyper_state::peyper(machine_config &config)
kbdc.in_rl_callback().set(FUNC(peyper_state::sw_r)); // kbd RL lines
kbdc.in_shift_callback().set_constant(1); // Shift key
kbdc.in_ctrl_callback().set_constant(1);
-}
+MACHINE_CONFIG_END
// Not allowed to set up an array all at once, so we have this mess
void peyper_state::init_peyper()
diff --git a/src/mame/drivers/pg685.cpp b/src/mame/drivers/pg685.cpp
index fc4beba17ad..2778847fd66 100644
--- a/src/mame/drivers/pg685.cpp
+++ b/src/mame/drivers/pg685.cpp
@@ -422,12 +422,11 @@ void pg685_state::pg685_module(machine_config &config)
MM58167(config, "rtc", XTAL(32'768));
}
-void pg685_state::pg675(machine_config &config)
-{
+MACHINE_CONFIG_START(pg685_state::pg675)
// main cpu
- I8088(config, m_maincpu, XTAL(15'000'000) / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &pg685_state::pg675_mem);
- m_maincpu->set_irq_acknowledge_callback("mainpic", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I8088, XTAL(15'000'000) / 3)
+ MCFG_DEVICE_PROGRAM_MAP(pg675_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mainpic", pic8259_device, inta_cb)
pic8259_device &mainpic(PIC8259(config, "mainpic", 0));
mainpic.out_int_callback().set_inputline(m_maincpu, 0);
@@ -438,9 +437,9 @@ void pg685_state::pg675(machine_config &config)
// ram
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(12288000, 882, 0, 720, 370, 0, 350 ); // not real values
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(12288000, 882, 0, 720, 370, 0, 350 ) // not real values
+ MCFG_SCREEN_UPDATE_DEVICE( "crtc", mc6845_device, screen_update )
mc6845_device &crtc(MC6845(config, "crtc", 12288000));
crtc.set_screen("screen");
@@ -453,7 +452,7 @@ void pg685_state::pg675(machine_config &config)
// devices
pg685_module(config);
- I8251(config, "mainuart", XTAL(12'288'000) / 6); // divider guessed
+ MCFG_DEVICE_ADD("mainuart", I8251, XTAL(12'288'000) / 6) // divider guessed
// rs232 port
@@ -466,16 +465,18 @@ void pg685_state::pg675(machine_config &config)
// floppy
// m_fdc->intrq_wr_callback(FUNC(zorba_state::fdc_intrq_w));
// m_fdc->drq_wr_callback(FUNC(zorba_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, "fdc:0", pg675_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", pg675_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
-}
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", pg675_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", pg675_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
-void pg685_state::pg685(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(pg685_state::pg685)
// main cpu
- V20(config, m_maincpu, XTAL(15'000'000) / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &pg685_state::pg685_mem);
- m_maincpu->set_irq_acknowledge_callback("mainpic", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", V20, XTAL(15'000'000) / 3)
+ MCFG_DEVICE_PROGRAM_MAP(pg685_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mainpic", pic8259_device, inta_cb)
pic8259_device &mainpic(PIC8259(config, "mainpic", 0));
mainpic.out_int_callback().set_inputline(m_maincpu, 0);
@@ -486,9 +487,9 @@ void pg685_state::pg685(machine_config &config)
// ram
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(12288000, 882, 0, 720, 370, 0, 350 ); // not real values
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(12288000, 882, 0, 720, 370, 0, 350 ) // not real values
+ MCFG_SCREEN_UPDATE_DEVICE( "crtc", mc6845_device, screen_update )
mc6845_device &crtc(MC6845(config, "crtc", 12288000));
crtc.set_screen("screen");
@@ -502,7 +503,7 @@ void pg685_state::pg685(machine_config &config)
pg685_backplane(config);
pg685_module(config);
- I8251(config, "mainuart", XTAL(12'288'000) / 6); // divider guessed
+ MCFG_DEVICE_ADD("mainuart", I8251, XTAL(12'288'000) / 6) // divider guessed
// rs232 port
@@ -515,19 +516,19 @@ void pg685_state::pg685(machine_config &config)
// floppy
// m_fdc->drq_wr_callback(FUNC(zorba_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, "fdc:0", pg685_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", pg685_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
// harddisk
wd2010_device& hdc(WD2010(config, "hdc", XTAL(10'000'000) / 2)); // divider guessed
hdc.out_intrq_callback().set("mainpic", FUNC(pic8259_device::ir3_w));
-}
+MACHINE_CONFIG_END
-void pg685_state::pg685oua12(machine_config &config)
-{
+MACHINE_CONFIG_START(pg685_state::pg685oua12)
// main cpu
- I80286(config, m_maincpu, XTAL(20'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &pg685_state::pg685oua12_mem);
- m_maincpu->set_irq_acknowledge_callback("mainpic", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I80286, XTAL(20'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(pg685oua12_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mainpic", pic8259_device, inta_cb)
pic8259_device &mainpic(PIC8259(config, "mainpic", 0));
mainpic.out_int_callback().set_inputline(m_maincpu, 0);
@@ -538,9 +539,9 @@ void pg685_state::pg685oua12(machine_config &config)
// ram
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(12288000, 882, 0, 720, 370, 0, 350 ); // not real values
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(12288000, 882, 0, 720, 370, 0, 350 ) // not real values
+ MCFG_SCREEN_UPDATE_DEVICE( "crtc", mc6845_device, screen_update )
mc6845_device &crtc(MC6845(config, "crtc", 12288000));
crtc.set_screen("screen");
@@ -554,7 +555,7 @@ void pg685_state::pg685oua12(machine_config &config)
pg685_backplane(config);
pg685_module(config);
- I8251(config, "mainuart", 12288000 / 6); // wrong
+ MCFG_DEVICE_ADD("mainuart", I8251, 12288000 / 6) // wrong
// rs232 port
@@ -566,12 +567,14 @@ void pg685_state::pg685oua12(machine_config &config)
// floppy
// m_fdc->drq_wr_callback(FUNC(zorba_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, "fdc:0", pg685_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", pg685_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
// harddisk
wd2010_device& hdc(WD2010(config, "hdc", XTAL(10'000'000) / 2)); // divider guessed
hdc.out_intrq_callback().set("mainpic", FUNC(pic8259_device::ir3_w));
-}
+
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/pgm.cpp b/src/mame/drivers/pgm.cpp
index 2f3ac8a9cf8..188c1103104 100644
--- a/src/mame/drivers/pgm.cpp
+++ b/src/mame/drivers/pgm.cpp
@@ -490,7 +490,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(pgm_state::pgm_interrupt)
{
int scanline = param;
-// already being generated by m_maincpu->set_vblank_int("screen", FUNC(pgm_state::irq6_line_hold));
+// already being generated by MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pgm_state, irq6_line_hold)
// if(scanline == 224)
// m_maincpu->set_input_line(6, HOLD_LINE);
diff --git a/src/mame/drivers/pgm3.cpp b/src/mame/drivers/pgm3.cpp
index ba95a80a902..4d3fa198943 100644
--- a/src/mame/drivers/pgm3.cpp
+++ b/src/mame/drivers/pgm3.cpp
@@ -104,25 +104,25 @@ void pgm3_state::machine_reset()
{
}
-void pgm3_state::pgm3(machine_config &config)
-{
+MACHINE_CONFIG_START(pgm3_state::pgm3)
+
/* basic machine hardware */
- ARM9(config, m_maincpu, 800000000); // wrong, see notes at top of driver
- m_maincpu->set_addrmap(AS_PROGRAM, &pgm3_state::pgm3_map);
- m_maincpu->set_disable();
+ MCFG_DEVICE_ADD("maincpu", ARM9, 800000000) // wrong, see notes at top of driver
+ MCFG_DEVICE_PROGRAM_MAP(pgm3_map)
+ MCFG_DEVICE_DISABLE()
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(1280, 720);
- screen.set_visarea(0, 1280-1, 0, 720-1);
- screen.set_screen_update(FUNC(pgm3_state::screen_update_pgm3));
- screen.screen_vblank().set(FUNC(pgm3_state::screen_vblank_pgm3));
- screen.set_palette("palette");
-
- PALETTE(config, "palette").set_entries(0x1000);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(1280, 720)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1280-1, 0, 720-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pgm3_state, screen_update_pgm3)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pgm3_state, screen_vblank_pgm3))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 0x1000)
+MACHINE_CONFIG_END
ROM_START( kov3hd )
ROM_REGION( 0x04000, "maincpu", ROMREGION_ERASE00 )
diff --git a/src/mame/drivers/phc25.cpp b/src/mame/drivers/phc25.cpp
index ce75201c8c5..ca346dd36c0 100644
--- a/src/mame/drivers/phc25.cpp
+++ b/src/mame/drivers/phc25.cpp
@@ -308,12 +308,11 @@ void phc25_state::video_start()
/* Machine Driver */
-void phc25_state::phc25(machine_config &config)
-{
+MACHINE_CONFIG_START(phc25_state::phc25)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &phc25_state::phc25_mem);
- m_maincpu->set_addrmap(AS_IO, &phc25_state::phc25_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(phc25_mem)
+ MCFG_DEVICE_IO_MAP(phc25_io)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -321,56 +320,51 @@ void phc25_state::phc25(machine_config &config)
psg.port_a_read_callback().set_ioport("JOY0");
psg.port_b_read_callback().set_ioport("JOY1");
psg.add_route(ALL_OUTPUTS, "mono", 1.00);
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.15);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.15);
/* devices */
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(phc25_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("phc25_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(phc25_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("phc25_cass")
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(phc25_state::write_centronics_busy));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, phc25_state, write_centronics_busy))
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("16K");
/* software lists */
- SOFTWARE_LIST(config, "cass_list").set_original("phc25_cass");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "phc25_cass")
+MACHINE_CONFIG_END
-void phc25_state::pal(machine_config &config)
-{
+MACHINE_CONFIG_START(phc25_state::pal)
phc25(config);
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
-
- MC6847_PAL(config, m_vdg, XTAL(4'433'619));
- m_vdg->set_screen("screen");
- m_vdg->fsync_wr_callback().set(FUNC(phc25_state::irq_w));
- m_vdg->input_callback().set(FUNC(phc25_state::video_ram_r));
- m_vdg->set_get_char_rom(FUNC(phc25_state::pal_char_rom_r));
- m_vdg->set_get_fixed_mode(mc6847_pal_device::MODE_GM2 | mc6847_pal_device::MODE_GM1 | mc6847_pal_device::MODE_INTEXT);
+ MCFG_SCREEN_MC6847_PAL_ADD(SCREEN_TAG, MC6847_TAG)
+
+ MCFG_DEVICE_ADD(MC6847_TAG, MC6847_PAL, XTAL(4'433'619))
+ MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(*this, phc25_state, irq_w))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(*this, phc25_state, video_ram_r))
+ MCFG_MC6847_CHARROM_CALLBACK(phc25_state, pal_char_rom_r)
+ MCFG_MC6847_FIXED_MODE(mc6847_pal_device::MODE_GM2 | mc6847_pal_device::MODE_GM1 | mc6847_pal_device::MODE_INTEXT)
// other lines not connected
-}
+MACHINE_CONFIG_END
-void phc25_state::ntsc(machine_config &config)
-{
+MACHINE_CONFIG_START(phc25_state::ntsc)
phc25(config);
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
-
- MC6847_NTSC(config, m_vdg, XTAL(3'579'545));
- m_vdg->set_screen("screen");
- m_vdg->fsync_wr_callback().set(FUNC(phc25_state::irq_w));
- m_vdg->input_callback().set(FUNC(phc25_state::video_ram_r));
- m_vdg->set_get_char_rom(FUNC(phc25_state::ntsc_char_rom_r));
- m_vdg->set_get_fixed_mode(mc6847_ntsc_device::MODE_GM2 | mc6847_ntsc_device::MODE_GM1 | mc6847_ntsc_device::MODE_INTEXT);
+ MCFG_SCREEN_MC6847_NTSC_ADD(SCREEN_TAG, MC6847_TAG)
+
+ MCFG_DEVICE_ADD(MC6847_TAG, MC6847_NTSC, XTAL(3'579'545))
+ MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(*this, phc25_state, irq_w))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(*this, phc25_state, video_ram_r))
+ MCFG_MC6847_CHARROM_CALLBACK(phc25_state, ntsc_char_rom_r)
+ MCFG_MC6847_FIXED_MODE(mc6847_ntsc_device::MODE_GM2 | mc6847_ntsc_device::MODE_GM1 | mc6847_ntsc_device::MODE_INTEXT)
// other lines not connected
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/photon.cpp b/src/mame/drivers/photon.cpp
index 8dcb71f8453..a895d38de4c 100644
--- a/src/mame/drivers/photon.cpp
+++ b/src/mame/drivers/photon.cpp
@@ -214,23 +214,23 @@ uint32_t photon_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
return video_update(screen, bitmap, cliprect, memregion("maincpu")->base());
}
-void photon_state::photon(machine_config &config)
-{
+MACHINE_CONFIG_START(photon_state::photon)
+
/* basic machine hardware */
- I8080(config, m_maincpu, 1780000);
- m_maincpu->set_addrmap(AS_PROGRAM, &photon_state::pk8000_mem);
- m_maincpu->set_addrmap(AS_IO, &photon_state::pk8000_io);
- m_maincpu->set_vblank_int("screen", FUNC(photon_state::interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(photon_state::irq_callback));
+ MCFG_DEVICE_ADD("maincpu",I8080, 1780000)
+ MCFG_DEVICE_PROGRAM_MAP(pk8000_mem)
+ MCFG_DEVICE_IO_MAP(pk8000_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", photon_state, interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(photon_state, irq_callback)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(256+32, 192+32);
- screen.set_visarea(0, 256+32-1, 0, 192+32-1);
- screen.set_screen_update(FUNC(photon_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(256+32, 192+32)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256+32-1, 0, 192+32-1)
+ MCFG_SCREEN_UPDATE_DRIVER(photon_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(photon_state::pk8000_palette), 16);
@@ -247,7 +247,7 @@ void photon_state::photon(machine_config &config)
/* audio hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/*
Dump was made using custom adaptor, hence it is marked as bad dump.
diff --git a/src/mame/drivers/photon2.cpp b/src/mame/drivers/photon2.cpp
index 9d4f207ee6d..2ca17daaecf 100644
--- a/src/mame/drivers/photon2.cpp
+++ b/src/mame/drivers/photon2.cpp
@@ -358,30 +358,29 @@ void photon2_state::machine_start()
save_item(NAME(m_nmi_enable));
}
-void photon2_state::photon2(machine_config &config)
-{
+MACHINE_CONFIG_START(photon2_state::photon2)
/* basic machine hardware */
- Z80(config, m_maincpu, 3500000); /* 3.5 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &photon2_state::spectrum_mem);
- m_maincpu->set_addrmap(AS_IO, &photon2_state::spectrum_io);
- TIMER(config, "scantimer").configure_scanline(FUNC(photon2_state::spec_interrupt_hack), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", Z80, 3500000) /* 3.5 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(spectrum_mem)
+ MCFG_DEVICE_IO_MAP(spectrum_io)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", photon2_state, spec_interrupt_hack, "screen", 0, 1)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50.08);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(SPEC_SCREEN_WIDTH, SPEC_SCREEN_HEIGHT);
- screen.set_visarea(0, SPEC_SCREEN_WIDTH-1, 0, SPEC_SCREEN_HEIGHT-1);
- screen.set_screen_update(FUNC(photon2_state::screen_update_spectrum));
- screen.screen_vblank().set(FUNC(photon2_state::screen_vblank_spectrum));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50.08)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(SPEC_SCREEN_WIDTH, SPEC_SCREEN_HEIGHT)
+ MCFG_SCREEN_VISIBLE_AREA(0, SPEC_SCREEN_WIDTH-1, 0, SPEC_SCREEN_HEIGHT-1)
+ MCFG_SCREEN_UPDATE_DRIVER(photon2_state, screen_update_spectrum)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, photon2_state, screen_vblank_spectrum))
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(photon2_state::photon2_palette), 16);
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/photoply.cpp b/src/mame/drivers/photoply.cpp
index 0e8e8d69e10..9d911acd4fb 100644
--- a/src/mame/drivers/photoply.cpp
+++ b/src/mame/drivers/photoply.cpp
@@ -302,14 +302,14 @@ GFXDECODE_END
MACHINE_CONFIG_START(photoply_state::photoply)
/* basic machine hardware */
- I486DX4(config, m_maincpu, 75000000); /* I486DX4, 75 or 100 Mhz */
- m_maincpu->set_addrmap(AS_PROGRAM, &photoply_state::photoply_map);
- m_maincpu->set_addrmap(AS_IO, &photoply_state::photoply_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I486DX4, 75000000) /* I486DX4, 75 or 100 Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(photoply_map)
+ MCFG_DEVICE_IO_MAP(photoply_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
pcat_common(config);
- GFXDECODE(config, "gfxdecode", "vga", gfx_photoply);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "vga", gfx_photoply)
ide_controller_32_device &ide(IDE_CONTROLLER_32(config, "ide").options(ata_devices, "hdd", nullptr, true));
ide.irq_handler().set("pic8259_2", FUNC(pic8259_device::ir6_w));
@@ -320,11 +320,12 @@ MACHINE_CONFIG_START(photoply_state::photoply)
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE(5, DEVICE_SELF, photoply_state, sis_pcm_r, sis_pcm_w)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(25'174'800),900,0,640,526,0,480);
- screen.set_screen_update("vga", FUNC(cirrus_gd5446_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480)
+ MCFG_SCREEN_UPDATE_DEVICE("vga", cirrus_gd5446_device, screen_update)
- CIRRUS_GD5446(config, "vga", 0).set_screen("screen");
+ MCFG_DEVICE_ADD("vga", CIRRUS_GD5446, 0)
+ MCFG_VIDEO_SET_SCREEN("screen")
EEPROM_93C46_16BIT(config, "eeprom")
.write_time(attotime::from_usec(1))
diff --git a/src/mame/drivers/phunsy.cpp b/src/mame/drivers/phunsy.cpp
index fc48c97ea3b..53bf403f95d 100644
--- a/src/mame/drivers/phunsy.cpp
+++ b/src/mame/drivers/phunsy.cpp
@@ -373,8 +373,8 @@ void phunsy_state::phunsy(machine_config &config)
CASSETTE(config, m_cass);
/* quickload */
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(phunsy_state, phunsy), this), "bin", attotime::from_seconds(2));
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(phunsy_state, phunsy), this), "bin", 2);
}
diff --git a/src/mame/drivers/picno.cpp b/src/mame/drivers/picno.cpp
index 035943a0648..497525bd842 100644
--- a/src/mame/drivers/picno.cpp
+++ b/src/mame/drivers/picno.cpp
@@ -66,21 +66,20 @@ void picno_state::io_map(address_map &map)
static INPUT_PORTS_START( picno )
INPUT_PORTS_END
-void picno_state::picno(machine_config &config)
-{
+MACHINE_CONFIG_START(picno_state::picno)
/* basic machine hardware */
- H83002(config, m_maincpu, XTAL(20'000'000)); /* TODO: correct CPU type (H8/532), crystal is a guess, divided by 2 in the cpu */
- m_maincpu->set_addrmap(AS_PROGRAM, &picno_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &picno_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", H83002, XTAL(20'000'000)) /* TODO: correct CPU type (H8/532), crystal is a guess, divided by 2 in the cpu */
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
//MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") // no speaker in the unit, but there's a couple of sockets on the back
//MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
//MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
- GENERIC_CARTSLOT(config, "cartslot", generic_linear_slot, "picno_cart");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_linear_slot, "picno_cart")
- SOFTWARE_LIST(config, "cart_list").set_original("picno");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "picno")
+MACHINE_CONFIG_END
ROM_START( picno )
ROM_REGION(0x88000, "roms", 0)
diff --git a/src/mame/drivers/piggypas.cpp b/src/mame/drivers/piggypas.cpp
index 400d87a235b..3d5493df5cb 100644
--- a/src/mame/drivers/piggypas.cpp
+++ b/src/mame/drivers/piggypas.cpp
@@ -204,7 +204,7 @@ HD44780_PIXEL_UPDATE(piggypas_state::piggypas_pixel_update)
void piggypas_state::piggypas(machine_config &config)
{
/* basic machine hardware */
- I80C31(config, m_maincpu, 8.448_MHz_XTAL); // OKI M80C31F or M80C154S
+ I80C31(config, m_maincpu, XTAL(8'448'000)); // OKI M80C31F or M80C154S
m_maincpu->set_addrmap(AS_PROGRAM, &piggypas_state::piggypas_map);
m_maincpu->set_addrmap(AS_IO, &piggypas_state::piggypas_io);
m_maincpu->port_out_cb<1>().set(FUNC(piggypas_state::led_strobe_w));
@@ -231,7 +231,7 @@ void piggypas_state::piggypas(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- okim6295_device &oki(OKIM6295(config, "oki", 8.448_MHz_XTAL / 8, okim6295_device::PIN7_HIGH)); // clock not verified
+ okim6295_device &oki(OKIM6295(config, "oki", XTAL(8'448'000) / 8, okim6295_device::PIN7_HIGH)); // clock and pin 7 not verified
oki.add_route(ALL_OUTPUTS, "mono", 1.0);
i8255_device &ppi(I8255A(config, "ppi")); // OKI M82C55A-2
@@ -291,42 +291,6 @@ ROM_START( fidlstix )
ROM_LOAD( "fiddle.u14", 0x00000, 0x40000, CRC(baf4e1cd) SHA1(ae153f832cbd188e9f3f357a1a1f68cc8264d346) )
ROM_END
-/*
-
-8.448MHz Crystal
-P-80C31-16 cpu
-M6295 (Verified with DMM that Pin 7 tied to VCC)
-DS1220AD-150
-M82C55A-2
-UCN5832A
-2 Line Display LCD
-HD44780A00 (underneath board the LCD is mounted to)
-
------------------------------------------------------------------------------
-
-Factory Wire Mods
-
-
-Parts Side:
-
- - Pin 1 of U25 (74LS373) pulled up and jumper wired to pin 5 of U2 (CM1232P)
-
-Solder Side:
-
- - Ground test point near C32 jumper wired to pin 2 of J8
- (pin 2 of J8 connected to pins 5 and 6 of L6 (CM1232P))
-
- - Pin 1 of J1 jumper wired with a 1K +/-5% 1/4 watt resistor to pin 10 of J1
-
-*/
-ROM_START( hoopitup )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "us a05449-01c.u6", 0x00000, 0x08000, CRC(8fc6a07d) SHA1(c1c7ad708eb84e9801fb5acea0b3b797923886c3) )
-
- ROM_REGION( 0x40000, "oki", 0 )
- ROM_LOAD( "sound ad5.u14", 0x00000, 0x40000, CRC(e6f647c3) SHA1(8f208af76e5f94b5db479ecbd65922fd834250cf) )
-ROM_END
-
// bad dump of program rom
ROM_START( jackbean )
ROM_REGION( 0x10000, "maincpu", 0 )
@@ -359,18 +323,16 @@ ROM_END
// COPYRIGHT (c) 1990, 1991, 1992, DOYLE & ASSOC., INC. VERSION 04.40
-GAME( 1992, piggypas, 0, piggypas, piggypas, piggypas_state, empty_init, ROT0, "Doyle & Assoc.", "Piggy Pass (version 04.40)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL )
+GAME( 1992, piggypas, 0, piggypas, piggypas, piggypas_state, empty_init, ROT0, "Doyle & Assoc.", "Piggy Pass (version 04.40)", MACHINE_IS_SKELETON_MECHANICAL )
// COPYRIGHT (c) 1990, 1991, 1992, DOYLE & ASSOC., INC. VERSION 05.22
-GAME( 1992, hoopshot, 0, piggypas, piggypas, piggypas_state, empty_init, ROT0, "Doyle & Assoc.", "Hoop Shot (version 05.22)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL )
+GAME( 1992, hoopshot, 0, piggypas, piggypas, piggypas_state, empty_init, ROT0, "Doyle & Assoc.", "Hoop Shot (version 05.22)", MACHINE_IS_SKELETON_MECHANICAL )
// Quick $ilver Development Co. 10/08/96 ROUND REV 6
-GAME( 1996, rndrndqs, 0, fidlstix, piggypas, piggypas_state, empty_init, ROT0, "Quick $ilver Development Co.", "Round and Round (Rev 6) (Quick $ilver)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL )
+GAME( 1996, rndrndqs, 0, fidlstix, piggypas, piggypas_state, empty_init, ROT0, "Quick $ilver Development Co.", "Round and Round (Rev 6) (Quick $ilver)", MACHINE_IS_SKELETON_MECHANICAL )
// Quick$ilver Development Co. 10/02/95 -FIDDLESTIX- REV 15T
-GAME( 1995, fidlstix, 0, fidlstix, piggypas, piggypas_state, empty_init, ROT0, "Quick $ilver Development Co.", "Fiddle Stix (1st Rev)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL )
-// Quick $ilver Development Co. 11/20/95 HoopItUp REV 23
-GAME( 1995, hoopitup, 0, fidlstix, piggypas, piggypas_state, empty_init, ROT0, "Atari Games", "Hoop it Up World Tour - 3 on 3 (Rev 23)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL )
+GAME( 1995, fidlstix, 0, fidlstix, piggypas, piggypas_state, empty_init, ROT0, "Quick $ilver Development Co.", "Fiddle Stix (1st Rev)", MACHINE_IS_SKELETON_MECHANICAL )
// bad dump, so version unknown
-GAME( 199?, jackbean, 0, piggypas, piggypas, piggypas_state, empty_init, ROT0, "Doyle & Assoc.", "Jack & The Beanstalk (Doyle & Assoc.?)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL )
+GAME( 199?, jackbean, 0, piggypas, piggypas, piggypas_state, empty_init, ROT0, "Doyle & Assoc.", "Jack & The Beanstalk (Doyle & Assoc.?)", MACHINE_IS_SKELETON_MECHANICAL )
// bad dump, so version unknown
-GAME( 199?, dumpump, 0, piggypas, piggypas, piggypas_state, empty_init, ROT0, "Doyle & Assoc.", "Dump The Ump", MACHINE_NOT_WORKING | MACHINE_MECHANICAL )
+GAME( 199?, dumpump, 0, piggypas, piggypas, piggypas_state, empty_init, ROT0, "Doyle & Assoc.", "Dump The Ump", MACHINE_IS_SKELETON_MECHANICAL )
// bad dump, so version unknown
-GAME( 199?, 3lilpigs, 0, piggypas, piggypas, piggypas_state, empty_init, ROT0, "Doyle & Assoc.", "3 Lil' Pigs", MACHINE_NOT_WORKING | MACHINE_MECHANICAL )
+GAME( 199?, 3lilpigs, 0, piggypas, piggypas, piggypas_state, empty_init, ROT0, "Doyle & Assoc.", "3 Lil' Pigs", MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/pinball2k.cpp b/src/mame/drivers/pinball2k.cpp
index eda9e7d8e0d..cfda2c12e4b 100644
--- a/src/mame/drivers/pinball2k.cpp
+++ b/src/mame/drivers/pinball2k.cpp
@@ -605,10 +605,10 @@ void pinball2k_state::ramdac_map(address_map &map)
MACHINE_CONFIG_START(pinball2k_state::mediagx)
/* basic machine hardware */
- MEDIAGX(config, m_maincpu, 166000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &pinball2k_state::mediagx_map);
- m_maincpu->set_addrmap(AS_IO, &pinball2k_state::mediagx_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", MEDIAGX, 166000000)
+ MCFG_DEVICE_PROGRAM_MAP(mediagx_map)
+ MCFG_DEVICE_IO_MAP(mediagx_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
pcat_common(config);
@@ -622,14 +622,14 @@ MACHINE_CONFIG_START(pinball2k_state::mediagx)
m_ramdac->set_addrmap(0, &pinball2k_state::ramdac_map);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(640, 480);
- m_screen->set_visarea(0, 639, 0, 239);
- m_screen->set_screen_update(FUNC(pinball2k_state::screen_update_mediagx));
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cga);
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
+ MCFG_SCREEN_UPDATE_DRIVER(pinball2k_state, screen_update_mediagx)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cga)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
diff --git a/src/mame/drivers/pingpong.cpp b/src/mame/drivers/pingpong.cpp
index bd86b6567a6..9f03d6454fb 100644
--- a/src/mame/drivers/pingpong.cpp
+++ b/src/mame/drivers/pingpong.cpp
@@ -103,7 +103,7 @@ void pingpong_state::pingpong_map(address_map &map)
map(0xa980, 0xa980).portr("DSW2");
map(0xa000, 0xa000).w(FUNC(pingpong_state::coin_w)); /* coin counters + irq enables */
map(0xa200, 0xa200).nopw(); /* SN76496 data latch */
- map(0xa400, 0xa400).w("snsnd", FUNC(sn76496_device::write)); /* trigger read */
+ map(0xa400, 0xa400).w("snsnd", FUNC(sn76496_device::command_w)); /* trigger read */
map(0xa600, 0xa600).w("watchdog", FUNC(watchdog_timer_device::reset_w));
}
@@ -125,7 +125,7 @@ void pingpong_state::merlinmm_map(address_map &map)
map(0xa100, 0xa100).portr("IN2");
map(0xa180, 0xa180).portr("IN3");
map(0xa200, 0xa200).nopw(); /* SN76496 data latch */
- map(0xa400, 0xa400).w("snsnd", FUNC(sn76496_device::write)); /* trigger read */
+ map(0xa400, 0xa400).w("snsnd", FUNC(sn76496_device::command_w)); /* trigger read */
map(0xa600, 0xa600).w("watchdog", FUNC(watchdog_timer_device::reset_w));
}
@@ -448,22 +448,22 @@ static GFXDECODE_START( gfx_pingpong )
GFXDECODE_END
-void pingpong_state::pingpong(machine_config &config)
-{
+MACHINE_CONFIG_START(pingpong_state::pingpong)
+
/* basic machine hardware */
- Z80(config, m_maincpu,18432000/6); /* 3.072 MHz (probably) */
- m_maincpu->set_addrmap(AS_PROGRAM, &pingpong_state::pingpong_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(pingpong_state::pingpong_interrupt), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu",Z80,18432000/6) /* 3.072 MHz (probably) */
+ MCFG_DEVICE_PROGRAM_MAP(pingpong_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", pingpong_state, pingpong_interrupt, "screen", 0, 1)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(456, 262);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(pingpong_state::screen_update_pingpong));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(456, 262)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pingpong_state, screen_update_pingpong)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pingpong);
PALETTE(config, m_palette, FUNC(pingpong_state::pingpong_palette), 64*4+64*4, 32);
@@ -471,18 +471,20 @@ void pingpong_state::pingpong(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76496(config, "snsnd", 18432000/8).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("snsnd", SN76496, 18432000/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/* too fast! */
-void pingpong_state::merlinmm(machine_config &config)
-{
+MACHINE_CONFIG_START(pingpong_state::merlinmm)
pingpong(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &pingpong_state::merlinmm_map);
- subdevice<timer_device>("scantimer")->set_callback(FUNC(pingpong_state::merlinmm_interrupt));
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(merlinmm_map)
+ MCFG_TIMER_MODIFY("scantimer")
+ MCFG_TIMER_DRIVER_CALLBACK(pingpong_state, merlinmm_interrupt)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/pinkiri8.cpp b/src/mame/drivers/pinkiri8.cpp
index d5ad19d1baa..e7c9c751a72 100644
--- a/src/mame/drivers/pinkiri8.cpp
+++ b/src/mame/drivers/pinkiri8.cpp
@@ -1106,31 +1106,32 @@ static GFXDECODE_START( gfx_pinkiri8 )
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 0x100 )
GFXDECODE_END
-void pinkiri8_state::pinkiri8(machine_config &config)
-{
- Z180(config, m_maincpu, XTAL(32'000'000)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &pinkiri8_state::pinkiri8_map);
- m_maincpu->set_addrmap(AS_IO, &pinkiri8_state::pinkiri8_io);
- m_maincpu->set_vblank_int("screen", FUNC(pinkiri8_state::nmi_line_assert));
+MACHINE_CONFIG_START(pinkiri8_state::pinkiri8)
+ MCFG_DEVICE_ADD("maincpu",Z180,XTAL(32'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(pinkiri8_map)
+ MCFG_DEVICE_IO_MAP(pinkiri8_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pinkiri8_state, nmi_line_assert)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 62*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pinkiri8_state, screen_update_pinkiri8)
+ MCFG_SCREEN_PALETTE("palette")
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 62*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(pinkiri8_state::screen_update_pinkiri8));
- screen.set_palette(m_palette);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pinkiri8)
+ MCFG_PALETTE_ADD("palette", 0x2000)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_pinkiri8);
- PALETTE(config, m_palette).set_entries(0x2000);
- JANSHIVDP(config, m_vdp, 0);
+ MCFG_DEVICE_ADD("janshivdp", JANSHIVDP, 0)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/pipbug.cpp b/src/mame/drivers/pipbug.cpp
index b045abfa294..d63fdb2149c 100644
--- a/src/mame/drivers/pipbug.cpp
+++ b/src/mame/drivers/pipbug.cpp
@@ -174,8 +174,8 @@ void pipbug_state::pipbug(machine_config &config)
m_rs232->set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
/* quickload */
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(pipbug_state, pipbug), this), "pgm", attotime::from_seconds(1));
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(pipbug_state, pipbug), this), "pgm", 1);
}
diff --git a/src/mame/drivers/pirates.cpp b/src/mame/drivers/pirates.cpp
index aa543f63141..07595c472c4 100644
--- a/src/mame/drivers/pirates.cpp
+++ b/src/mame/drivers/pirates.cpp
@@ -252,30 +252,32 @@ GFXDECODE_END
/* Machine Driver + Related bits */
-void pirates_state::pirates(machine_config &config)
-{
- M68000(config, m_maincpu, 32_MHz_XTAL / 2); // 16MHz verified on PCB
- m_maincpu->set_addrmap(AS_PROGRAM, &pirates_state::pirates_map);
- m_maincpu->set_vblank_int("screen", FUNC(pirates_state::irq1_line_hold));
+MACHINE_CONFIG_START(pirates_state::pirates)
+ MCFG_DEVICE_ADD("maincpu", M68000, 16000000) /* 16mhz */
+ MCFG_DEVICE_PROGRAM_MAP(pirates_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pirates_state, irq1_line_hold)
EEPROM_93C46_16BIT(config, "eeprom");
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pirates);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(36*8, 32*8);
- screen.set_visarea(0*8, 36*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(pirates_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(36*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pirates_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x2000);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, 24_MHz_XTAL / 18, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 1.0); // 1.3333333MHz verified on PCB
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1333333, okim6295_device::PIN7_LOW)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+
/* Rom Loading */
@@ -323,25 +325,27 @@ ROM_START( piratesb )
ROM_END
+
+
ROM_START( genix )
ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code (encrypted) */
- ROM_LOAD16_BYTE( "11.u15.15c", 0x00000, 0x80000, CRC(d26abfb0) SHA1(4a89ba7504f86cb612796c376f359ab61ec3d902) )
- ROM_LOAD16_BYTE( "12.u16.16c", 0x00001, 0x80000, CRC(a14a25b4) SHA1(9fa64c6514bdee56b5654b001f8367283b461e8a) )
+ ROM_LOAD16_BYTE( "1.15", 0x00000, 0x80000, CRC(d26abfb0) SHA1(4a89ba7504f86cb612796c376f359ab61ec3d902) )
+ ROM_LOAD16_BYTE( "2.16", 0x00001, 0x80000, CRC(a14a25b4) SHA1(9fa64c6514bdee56b5654b001f8367283b461e8a) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* GFX (encrypted) */
- ROM_LOAD( "17.u34.12g", 0x000000, 0x040000, CRC(58da8aac) SHA1(bfc8449ba842f8ceac62ebdf6005d8f19d96afa6) )
- ROM_LOAD( "19.u35.12h", 0x080000, 0x040000, CRC(96bad9a8) SHA1(4e757cca0ab157f0c935087c9702c88741bf7a79) )
- ROM_LOAD( "18.u48.13g", 0x100000, 0x040000, CRC(0ddc58b6) SHA1(d52437607695ddebfe8494fd214efd20ba72d549) )
- ROM_LOAD( "20.u49.13h", 0x180000, 0x040000, CRC(2be308c5) SHA1(22fc0991557643c22f6763f186b74900a33a39e0) )
+ ROM_LOAD( "7.34", 0x000000, 0x040000, CRC(58da8aac) SHA1(bfc8449ba842f8ceac62ebdf6005d8f19d96afa6) )
+ ROM_LOAD( "9.35", 0x080000, 0x040000, CRC(96bad9a8) SHA1(4e757cca0ab157f0c935087c9702c88741bf7a79) )
+ ROM_LOAD( "8.48", 0x100000, 0x040000, CRC(0ddc58b6) SHA1(d52437607695ddebfe8494fd214efd20ba72d549) )
+ ROM_LOAD( "10.49",0x180000, 0x040000, CRC(2be308c5) SHA1(22fc0991557643c22f6763f186b74900a33a39e0) )
ROM_REGION( 0x200000, "gfx2", 0 ) /* GFX (encrypted) */
- ROM_LOAD( "16.u69.6g", 0x000000, 0x040000, CRC(b8422af7) SHA1(d3290fc6ea2670c445731e2b493205874dc4b319) )
- ROM_LOAD( "15.u70.4g", 0x080000, 0x040000, CRC(e46125c5) SHA1(73d9a51f30a9c1a8397145d2a4397696ef37f4e5) )
- ROM_LOAD( "14.u71.3g", 0x100000, 0x040000, CRC(7a8ed21b) SHA1(f380156c44de2fc316f390adee09b6a3cd404dec) )
- ROM_LOAD( "13.u72.1g", 0x180000, 0x040000, CRC(f78bd6ca) SHA1(c70857b8053f9a6e3e15bbc9f7d13354b0966b30) )
+ ROM_LOAD( "6.69", 0x000000, 0x040000, CRC(b8422af7) SHA1(d3290fc6ea2670c445731e2b493205874dc4b319) )
+ ROM_LOAD( "5.70", 0x080000, 0x040000, CRC(e46125c5) SHA1(73d9a51f30a9c1a8397145d2a4397696ef37f4e5) )
+ ROM_LOAD( "4.71", 0x100000, 0x040000, CRC(7a8ed21b) SHA1(f380156c44de2fc316f390adee09b6a3cd404dec) )
+ ROM_LOAD( "3.72", 0x180000, 0x040000, CRC(f78bd6ca) SHA1(c70857b8053f9a6e3e15bbc9f7d13354b0966b30) )
ROM_REGION( 0x080000, "oki", 0) /* OKI samples (encrypted) */
- ROM_LOAD( "10.u31.1b", 0x000000, 0x080000, CRC(80d087bc) SHA1(04d1aacc273c7ffa57b48bd043d55b5b3d993f74) )
+ ROM_LOAD( "0.31", 0x000000, 0x080000, CRC(80d087bc) SHA1(04d1aacc273c7ffa57b48bd043d55b5b3d993f74) )
ROM_END
/* Init */
diff --git a/src/mame/drivers/piratesh.cpp b/src/mame/drivers/piratesh.cpp
index 5933f7d580c..0dfc7b2a8bb 100644
--- a/src/mame/drivers/piratesh.cpp
+++ b/src/mame/drivers/piratesh.cpp
@@ -616,7 +616,7 @@ void piratesh_state::piratesh(machine_config &config)
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
-// screen.set_refresh_hz(60);
+// MCFG_SCREEN_REFRESH_RATE(60)
screen.set_raw(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223); // TODO
screen.set_vblank_time(ATTOSECONDS_IN_USEC(600));
screen.set_size(64*8, 32*8);
diff --git a/src/mame/drivers/pitagjr.cpp b/src/mame/drivers/pitagjr.cpp
index 9c9be7f61b7..f2b30986bfc 100644
--- a/src/mame/drivers/pitagjr.cpp
+++ b/src/mame/drivers/pitagjr.cpp
@@ -209,23 +209,22 @@ uint32_t pitagjr_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
return 0;
}
-void pitagjr_state::pitajr(machine_config &config)
-{
+MACHINE_CONFIG_START(pitagjr_state::pitajr)
/* basic machine hardware */
- HD63705(config, m_maincpu, XTAL(2'000'000)); // probably a m6805-based MCU with internal boot ROM
- m_maincpu->set_addrmap(AS_PROGRAM, &pitagjr_state::pitajr_mem);
+ MCFG_DEVICE_ADD("maincpu", HD63705, XTAL(2'000'000)) // probably a m6805-based MCU with internal boot ROM
+ MCFG_DEVICE_PROGRAM_MAP(pitajr_mem)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(pitagjr_state::screen_update));
- screen.set_size(200, 100); // FIXME
- screen.set_visarea(0, 200-1, 0, 100-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(pitagjr_state, screen_update)
+ MCFG_SCREEN_SIZE( 200, 100 ) // FIXME
+ MCFG_SCREEN_VISIBLE_AREA( 0, 200-1, 0, 100-1 )
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(pitagjr_state::pitagjr_palette), 2);
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/pk8000.cpp b/src/mame/drivers/pk8000.cpp
index b0a4c204aeb..941ad1c568f 100644
--- a/src/mame/drivers/pk8000.cpp
+++ b/src/mame/drivers/pk8000.cpp
@@ -360,23 +360,22 @@ uint32_t pk8000_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
return video_update(screen, bitmap, cliprect, m_ram->pointer());
}
-void pk8000_state::pk8000(machine_config &config)
-{
+MACHINE_CONFIG_START(pk8000_state::pk8000)
/* basic machine hardware */
- I8080(config, m_maincpu, 1780000);
- m_maincpu->set_addrmap(AS_PROGRAM, &pk8000_state::pk8000_mem);
- m_maincpu->set_addrmap(AS_IO, &pk8000_state::pk8000_io);
- m_maincpu->set_vblank_int("screen", FUNC(pk8000_state::interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(pk8000_state::irq_callback));
+ MCFG_DEVICE_ADD("maincpu",I8080, 1780000)
+ MCFG_DEVICE_PROGRAM_MAP(pk8000_mem)
+ MCFG_DEVICE_IO_MAP(pk8000_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pk8000_state, interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(pk8000_state, irq_callback)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(256+32, 192+32);
- screen.set_visarea(0, 256+32-1, 0, 192+32-1);
- screen.set_screen_update(FUNC(pk8000_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(256+32, 192+32)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256+32-1, 0, 192+32-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pk8000_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(pk8000_state::pk8000_palette), 16);
@@ -393,15 +392,15 @@ void pk8000_state::pk8000(machine_config &config)
/* audio hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(fmsx_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(fmsx_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K");
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( vesta )
diff --git a/src/mame/drivers/pk8020.cpp b/src/mame/drivers/pk8020.cpp
index 734ce7c32a6..c845ad68667 100644
--- a/src/mame/drivers/pk8020.cpp
+++ b/src/mame/drivers/pk8020.cpp
@@ -189,25 +189,24 @@ static void pk8020_floppies(device_slot_interface &device)
* 7 floppy
*/
/* Machine driver */
-void pk8020_state::pk8020(machine_config &config)
-{
+MACHINE_CONFIG_START(pk8020_state::pk8020)
/* basic machine hardware */
- I8080(config, m_maincpu, 20_MHz_XTAL / 8);
- m_maincpu->set_addrmap(AS_PROGRAM, &pk8020_state::pk8020_mem);
- m_maincpu->set_addrmap(AS_IO, &pk8020_state::pk8020_io);
- m_maincpu->set_vblank_int("screen", FUNC(pk8020_state::pk8020_interrupt));
- m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I8080, 20_MHz_XTAL / 8)
+ MCFG_DEVICE_PROGRAM_MAP(pk8020_mem)
+ MCFG_DEVICE_IO_MAP(pk8020_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pk8020_state, pk8020_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(pk8020_state::screen_update_pk8020));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, "gfxdecode", m_palette, gfx_pk8020);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pk8020_state, screen_update_pk8020)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_pk8020)
PALETTE(config, m_palette, FUNC(pk8020_state::pk8020_palette), 16);
I8255(config, m_ppi8255_1);
@@ -247,23 +246,24 @@ void pk8020_state::pk8020(machine_config &config)
FD1793(config, m_wd1793, 20_MHz_XTAL / 20);
m_wd1793->intrq_wr_callback().set(m_pic8259, FUNC(pic8259_device::ir7_w));
- FLOPPY_CONNECTOR(config, "wd1793:0", pk8020_floppies, "qd", pk8020_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "wd1793:1", pk8020_floppies, "qd", pk8020_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "wd1793:2", pk8020_floppies, "qd", pk8020_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "wd1793:3", pk8020_floppies, "qd", pk8020_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("wd1793:0", pk8020_floppies, "qd", pk8020_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1793:1", pk8020_floppies, "qd", pk8020_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1793:2", pk8020_floppies, "qd", pk8020_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1793:3", pk8020_floppies, "qd", pk8020_state::floppy_formats)
- SOFTWARE_LIST(config, "flop_list").set_original("korvet_flop");
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "korvet_flop")
/* audio hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25);
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
- CASSETTE(config, "cassette").set_default_state(CASSETTE_PLAY);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("258K").set_default_value(0x00); // 64 + 4*48 + 2 = 258
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/pktgaldx.cpp b/src/mame/drivers/pktgaldx.cpp
index 2bbb8596766..242f251ce0c 100644
--- a/src/mame/drivers/pktgaldx.cpp
+++ b/src/mame/drivers/pktgaldx.cpp
@@ -338,26 +338,26 @@ void pktgaldx_state::machine_start()
{
}
-void pktgaldx_state::pktgaldx(machine_config &config)
-{
+MACHINE_CONFIG_START(pktgaldx_state::pktgaldx)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 28_MHz_XTAL / 2); // The clock input is 14.000MHz on pin 6
- m_maincpu->set_addrmap(AS_PROGRAM, &pktgaldx_state::pktgaldx_map);
- m_maincpu->set_addrmap(AS_OPCODES, &pktgaldx_state::decrypted_opcodes_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, 28_MHz_XTAL / 2) // The clock input is 14.000MHz on pin 6
+ MCFG_DEVICE_PROGRAM_MAP(pktgaldx_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(pktgaldx_state::screen_update_pktgaldx));
- screen.screen_vblank().set(FUNC(pktgaldx_state::vblank_w));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pktgaldx_state, screen_update_pktgaldx)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pktgaldx_state, vblank_w))
+ MCFG_SCREEN_PALETTE(m_palette)
- PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 4096);
+ PALETTE(config, "palette").set_format(palette_device::xBGR_888, 4096);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_pktgaldx);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pktgaldx)
DECO16IC(config, m_deco_tilegen, 0);
m_deco_tilegen->set_split(0);
@@ -389,48 +389,48 @@ void pktgaldx_state::pktgaldx(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- okim6295_device &oki1(OKIM6295(config, "oki1", 32.22_MHz_XTAL / 32, okim6295_device::PIN7_HIGH));
- oki1.add_route(ALL_OUTPUTS, "lspeaker", 0.75);
- oki1.add_route(ALL_OUTPUTS, "rspeaker", 0.75);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 32.22_MHz_XTAL / 32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75)
- OKIM6295(config, m_oki2, 32.22_MHz_XTAL / 16, okim6295_device::PIN7_HIGH);
- m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 0.60);
- m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 0.60);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 32.22_MHz_XTAL / 16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60)
+MACHINE_CONFIG_END
-void pktgaldx_state::pktgaldb(machine_config &config)
-{
+MACHINE_CONFIG_START(pktgaldx_state::pktgaldb)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 16000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &pktgaldx_state::pktgaldb_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, 16000000)
+ MCFG_DEVICE_PROGRAM_MAP(pktgaldb_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(pktgaldx_state::screen_update_pktgaldb));
- screen.screen_vblank().set(FUNC(pktgaldx_state::vblank_w));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pktgaldx_state, screen_update_pktgaldb)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pktgaldx_state, vblank_w))
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 4096);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_bootleg);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_bootleg)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- okim6295_device &oki1(OKIM6295(config, "oki1", 32220000/32, okim6295_device::PIN7_HIGH));
- oki1.add_route(ALL_OUTPUTS, "lspeaker", 0.75);
- oki1.add_route(ALL_OUTPUTS, "rspeaker", 0.75);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75)
- OKIM6295(config, m_oki2, 32220000/16, okim6295_device::PIN7_HIGH);
- m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 0.60);
- m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 0.60);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 32220000/16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60)
+MACHINE_CONFIG_END
ROM_START( pktgaldx )
diff --git a/src/mame/drivers/plan80.cpp b/src/mame/drivers/plan80.cpp
index 65adfc6b469..773d2f2ebe0 100644
--- a/src/mame/drivers/plan80.cpp
+++ b/src/mame/drivers/plan80.cpp
@@ -233,25 +233,24 @@ static GFXDECODE_START( gfx_plan80 )
GFXDECODE_END
-void plan80_state::plan80(machine_config &config)
-{
+MACHINE_CONFIG_START(plan80_state::plan80)
/* basic machine hardware */
- I8080(config, m_maincpu, 2048000);
- m_maincpu->set_addrmap(AS_PROGRAM, &plan80_state::plan80_mem);
- m_maincpu->set_addrmap(AS_IO, &plan80_state::plan80_io);
+ MCFG_DEVICE_ADD("maincpu",I8080, 2048000)
+ MCFG_DEVICE_PROGRAM_MAP(plan80_mem)
+ MCFG_DEVICE_IO_MAP(plan80_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(plan80_state::screen_update));
- screen.set_size(48*6, 32*8);
- screen.set_visarea(0, 48*6-1, 0, 32*8-1);
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_plan80);
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(plan80_state, screen_update)
+ MCFG_SCREEN_SIZE(48*6, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 48*6-1, 0, 32*8-1)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_plan80)
PALETTE(config, "palette", palette_device::MONOCHROME);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( plan80 )
diff --git a/src/mame/drivers/play_1.cpp b/src/mame/drivers/play_1.cpp
index babe72507cb..8bc2377518b 100644
--- a/src/mame/drivers/play_1.cpp
+++ b/src/mame/drivers/play_1.cpp
@@ -470,8 +470,7 @@ WRITE_LINE_MEMBER( play_1_state::clock_w )
}
}
-void play_1_state::play_1(machine_config &config)
-{
+MACHINE_CONFIG_START(play_1_state::play_1)
/* basic machine hardware */
CDP1802(config, m_maincpu, 400000); // 2 gates, 1 cap, 1 resistor oscillating somewhere between 350 to 450 kHz
m_maincpu->set_addrmap(AS_PROGRAM, &play_1_state::play_1_map);
@@ -487,22 +486,23 @@ void play_1_state::play_1(machine_config &config)
/* Video */
config.set_default_layout(layout_play_1);
- clock_device &xpoint(CLOCK(config, "xpoint", 100)); // crossing-point detector
- xpoint.signal_handler().set(FUNC(play_1_state::clock_w));
+ MCFG_DEVICE_ADD("xpoint", CLOCK, 100) // crossing-point detector
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, play_1_state, clock_w))
/* Sound */
genpin_audio(config);
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
- CLOCK(config, m_monotone, 0); // sound device
- m_monotone->signal_handler().set("speaker", FUNC(speaker_sound_device::level_w));
-}
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MCFG_DEVICE_ADD("monotone", CLOCK, 0) // sound device
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE("speaker", speaker_sound_device, level_w))
+MACHINE_CONFIG_END
-void play_1_state::chance(machine_config &config)
-{
+MACHINE_CONFIG_START(play_1_state::chance)
play_1(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &play_1_state::chance_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(chance_map)
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
/ Space Gambler (03/78)
diff --git a/src/mame/drivers/play_2.cpp b/src/mame/drivers/play_2.cpp
index c8c99938b6d..19acc54fb22 100644
--- a/src/mame/drivers/play_2.cpp
+++ b/src/mame/drivers/play_2.cpp
@@ -324,15 +324,15 @@ WRITE8_MEMBER( play_2_state::sound_g_w )
switch (data)
{
case 0x01:
- m_aysnd1->data_w(m_psg_latch);
+ m_aysnd1->data_w(space, 0, m_psg_latch);
break;
case 0x02:
- m_psg_latch = m_aysnd1->data_r();
+ m_psg_latch = m_aysnd1->data_r(space, 0);
break;
case 0x03:
- m_aysnd1->address_w(m_psg_latch);
+ m_aysnd1->address_w(space, 0, m_psg_latch);
break;
}
}
diff --git a/src/mame/drivers/play_3.cpp b/src/mame/drivers/play_3.cpp
index fc80f44261c..2bbedc27b12 100644
--- a/src/mame/drivers/play_3.cpp
+++ b/src/mame/drivers/play_3.cpp
@@ -475,8 +475,7 @@ WRITE_LINE_MEMBER( play_3_state::q4013a_w )
m_clockcnt = 0;
}
-void play_3_state::play_3(machine_config &config)
-{
+MACHINE_CONFIG_START(play_3_state::play_3)
/* basic machine hardware */
CDP1802(config, m_maincpu, 3.579545_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &play_3_state::play_3_map);
@@ -494,8 +493,8 @@ void play_3_state::play_3(machine_config &config)
config.set_default_layout(layout_play_3);
// Devices
- clock_device &xpoint(CLOCK(config, "xpoint", 60)); // crossing-point detector
- xpoint.signal_handler().set(FUNC(play_3_state::clock2_w));
+ MCFG_DEVICE_ADD("xpoint", CLOCK, 60) // crossing-point detector
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, play_3_state, clock2_w))
// This is actually a 4013 chip (has 2 RS flipflops)
TTL7474(config, m_4013a, 0);
@@ -519,29 +518,28 @@ void play_3_state::play_3(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
AY8910(config, m_aysnd1, 3.579545_MHz_XTAL / 2).add_route(ALL_OUTPUTS, "lspeaker", 0.75);
AY8910(config, m_aysnd2, 3.579545_MHz_XTAL / 2).add_route(ALL_OUTPUTS, "rspeaker", 0.75);
-}
+MACHINE_CONFIG_END
-void play_3_state::megaaton(machine_config &config)
-{
+MACHINE_CONFIG_START(play_3_state::megaaton)
play_3(config);
m_maincpu->set_clock(2.95_MHz_XTAL);
m_maincpu->set_addrmap(AS_IO, &play_3_state::megaaton_io);
-}
+MACHINE_CONFIG_END
-void play_3_state::sklflite(machine_config &config)
-{
+MACHINE_CONFIG_START(play_3_state::sklflite)
play_3(config);
- m_maincpu->set_addrmap(AS_IO, &play_3_state::sklflite_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(sklflite_io)
- config.device_remove("audiocpu");
- config.device_remove("aysnd1");
- config.device_remove("aysnd2");
- config.device_remove("lspeaker");
- config.device_remove("rspeaker");
+ MCFG_DEVICE_REMOVE("audiocpu")
+ MCFG_DEVICE_REMOVE("aysnd1")
+ MCFG_DEVICE_REMOVE("aysnd2")
+ MCFG_DEVICE_REMOVE("lspeaker")
+ MCFG_DEVICE_REMOVE("rspeaker")
EFO_ZSU1(config, m_zsu, 0);
-}
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
diff --git a/src/mame/drivers/playmark.cpp b/src/mame/drivers/playmark.cpp
index e3043157202..818ab320eff 100644
--- a/src/mame/drivers/playmark.cpp
+++ b/src/mame/drivers/playmark.cpp
@@ -186,7 +186,7 @@ READ8_MEMBER(playmark_state::playmark_snd_command_r)
}
else if ((m_oki_control & 0x38) == 0x28)
{
- data = (m_oki->read() & 0x0f);
+ data = (m_oki->read(space, 0) & 0x0f);
// logerror("PC$%03x PortB reading %02x from the OKI status port\n", m_maincpu->pcbase(), data);
}
@@ -238,7 +238,7 @@ WRITE8_MEMBER(playmark_state::playmark_snd_control_w)
if ((data & 0x38) == 0x18)
{
// logerror("PC$%03x Writing %02x to OKI1, PortC=%02x, Code=%02x\n",m_maincpu->pcbase(),m_oki_command,m_oki_control,m_snd_command);
- m_oki->write(m_oki_command);
+ m_oki->write(space, 0, m_oki_command);
}
}
@@ -254,7 +254,7 @@ WRITE8_MEMBER(playmark_state::hrdtimes_snd_control_w)
if ((data & 0x38) == 0x18)
{
// logerror("PC$%03x Writing %02x to OKI1, PortC=%02x, Code=%02x\n",m_maincpu->pcbase(),m_oki_command,m_oki_control,m_snd_command);
- m_oki->write(m_oki_command);
+ m_oki->write(space, 0, m_oki_command);
}
}
@@ -1041,12 +1041,12 @@ MACHINE_RESET_MEMBER(playmark_state,playmark)
m_dispenser_latch = 0;
}
-void playmark_state::bigtwin(machine_config &config)
-{
+MACHINE_CONFIG_START(playmark_state::bigtwin)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000); /* 12 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &playmark_state::bigtwin_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(playmark_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000) /* 12 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(bigtwin_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", playmark_state, irq2_line_hold)
PIC16C57(config, m_audiocpu, 12000000);
m_audiocpu->write_a().set(FUNC(playmark_state::playmark_oki_banking_w));
@@ -1059,13 +1059,13 @@ void playmark_state::bigtwin(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(playmark_state,playmark)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(playmark_state::screen_update_bigtwin));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_bigtwin)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_bigtwin);
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024);
@@ -1075,17 +1075,17 @@ void playmark_state::bigtwin(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH);
- m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
- m_oki->set_addrmap(0, &playmark_state::oki_map);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(playmark_state::bigtwinb)
-void playmark_state::bigtwinb(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &playmark_state::bigtwinb_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(playmark_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(bigtwinb_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", playmark_state, irq2_line_hold)
PIC16C57(config, m_audiocpu, XTAL(24'000'000)/2);
m_audiocpu->write_a().set(FUNC(playmark_state::playmark_oki_banking_w));
@@ -1098,13 +1098,13 @@ void playmark_state::bigtwinb(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(playmark_state,playmark)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(playmark_state::screen_update_bigtwinb));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_bigtwinb)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_bigtwinb);
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024);
@@ -1114,17 +1114,17 @@ void playmark_state::bigtwinb(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH);
- m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
- m_oki->set_addrmap(0, &playmark_state::oki_map);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(playmark_state::wbeachvl)
-void playmark_state::wbeachvl(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000); /* 12 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &playmark_state::wbeachvl_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(playmark_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000) /* 12 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(wbeachvl_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", playmark_state, irq2_line_hold)
PIC16C57(config, m_audiocpu, XTAL(24'000'000)/2); /* 12MHz with internal 4x divisor */
m_audiocpu->write_a().set(FUNC(playmark_state::playmark_oki_banking_w)); // wrong?
@@ -1140,13 +1140,13 @@ void playmark_state::wbeachvl(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(playmark_state,playmark)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(playmark_state::screen_update_wbeachvl));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_wbeachvl)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_wbeachvl);
PALETTE(config, m_palette).set_format(palette_device::RGBx_555, 2048);
@@ -1156,17 +1156,17 @@ void playmark_state::wbeachvl(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH);
- m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
- m_oki->set_addrmap(0, &playmark_state::oki_map);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(playmark_state::excelsr)
-void playmark_state::excelsr(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000)/2); /* 12 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &playmark_state::excelsr_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(playmark_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) /* 12 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(excelsr_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", playmark_state, irq2_line_hold)
PIC16C57(config, m_audiocpu, XTAL(24'000'000)/2); /* 12MHz with internal 4x divisor */
m_audiocpu->write_a().set(FUNC(playmark_state::playmark_oki_banking_w));
@@ -1179,13 +1179,13 @@ void playmark_state::excelsr(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(playmark_state,playmark)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(playmark_state::screen_update_excelsr));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_excelsr)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_excelsr);
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024);
@@ -1195,17 +1195,17 @@ void playmark_state::excelsr(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(1'000'000), okim6295_device::PIN7_HIGH); /* 1MHz resonator */
- m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
- m_oki->set_addrmap(0, &playmark_state::oki_map);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(1'000'000), okim6295_device::PIN7_HIGH) /* 1MHz resonator */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(playmark_state::hrdtimes)
-void playmark_state::hrdtimes(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &playmark_state::hrdtimes_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(playmark_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(hrdtimes_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", playmark_state, irq6_line_hold)
PIC16C57(config, m_audiocpu, XTAL(24'000'000)/2); /* verified on pcb */
// m_audiocpu->write_a().set(FUNC(playmark_state::playmark_oki_banking_w)); // Banking data output but not wired. Port C is wired to the OKI banking instead
@@ -1219,13 +1219,13 @@ void playmark_state::hrdtimes(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(playmark_state,playmark)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(playmark_state::screen_update_hrdtimes));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_hrdtimes)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_hrdtimes);
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024);
@@ -1235,17 +1235,17 @@ void playmark_state::hrdtimes(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(1'000'000), okim6295_device::PIN7_HIGH); /* verified on pcb */
- m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
- m_oki->set_addrmap(0, &playmark_state::oki_map);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(1'000'000), okim6295_device::PIN7_HIGH) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(playmark_state::hotmind)
-void playmark_state::hotmind(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &playmark_state::hotmind_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(playmark_state::irq6_line_hold)); // irq 2 and 6 point to the same location on hotmind
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(hotmind_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", playmark_state, irq6_line_hold) // irq 2 and 6 point to the same location on hotmind
PIC16C57(config, m_audiocpu, XTAL(24'000'000)/2); /* verified on pcb */
// m_audiocpu->write_a().set(FUNC(playmark_state::playmark_oki_banking_w)); // Banking data output but not wired. Port C is wired to the OKI banking instead
@@ -1260,36 +1260,36 @@ void playmark_state::hotmind(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(playmark_state,playmark)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(playmark_state::screen_update_hrdtimes));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_hrdtimes)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_hotmind);
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024);
MCFG_VIDEO_START_OVERRIDE(playmark_state,hotmind)
- TICKET_DISPENSER(config, m_ticket, attotime::from_msec(350), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
- TICKET_DISPENSER(config, m_token, attotime::from_msec(350), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(350), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )
+ MCFG_TICKET_DISPENSER_ADD("token", attotime::from_msec(350), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(1'000'000), okim6295_device::PIN7_HIGH); /* verified on pcb */
- m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
- m_oki->set_addrmap(0, &playmark_state::oki_map);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(1'000'000), okim6295_device::PIN7_HIGH) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(playmark_state::luckboomh)
-void playmark_state::luckboomh(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &playmark_state::luckboomh_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(playmark_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(luckboomh_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", playmark_state, irq6_line_hold)
PIC16C57(config, m_audiocpu, XTAL(24'000'000)/2); /* verified on pcb */
// m_audiocpu->write_a().set(FUNC(playmark_state::playmark_oki_banking_w)); // Banking data output but not wired. Port C is wired to the OKI banking instead
@@ -1304,29 +1304,29 @@ void playmark_state::luckboomh(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(playmark_state,playmark)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(playmark_state::screen_update_hrdtimes));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_hrdtimes)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_luckboomh);
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024);
MCFG_VIDEO_START_OVERRIDE(playmark_state,luckboomh)
- TICKET_DISPENSER(config, m_ticket, attotime::from_msec(350), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
- TICKET_DISPENSER(config, m_token, attotime::from_msec(350), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(350), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )
+ MCFG_TICKET_DISPENSER_ADD("token", attotime::from_msec(350), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(1'000'000), okim6295_device::PIN7_HIGH); /* verified on pcb */
- m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
- m_oki->set_addrmap(0, &playmark_state::oki_map);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(1'000'000), okim6295_device::PIN7_HIGH) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/plus4.cpp b/src/mame/drivers/plus4.cpp
index 95fc4a8b922..3f7866dcd5b 100644
--- a/src/mame/drivers/plus4.cpp
+++ b/src/mame/drivers/plus4.cpp
@@ -295,7 +295,7 @@ uint8_t plus4_state::read_memory(address_space &space, offs_t offset, int ba, in
}
else if (!_6551 && m_acia)
{
- data = m_acia->read(offset & 0x03);
+ data = m_acia->read(space, offset & 0x03);
}
else if (!keyport)
{
@@ -371,7 +371,7 @@ uint8_t plus4_state::read_memory(address_space &space, offs_t offset, int ba, in
data = m_ram->pointer()[offset & m_ram->mask()];
}
- return m_exp->cd_r(offset, data, ba, cs0, c1l, c1h, cs1, c2l, c2h);
+ return m_exp->cd_r(space, offset, data, ba, cs0, c1l, c1h, cs1, c2l, c2h);
}
@@ -416,7 +416,7 @@ WRITE8_MEMBER( plus4_state::write )
}
else if (!_6551 && m_acia)
{
- m_acia->write(offset & 0x03, data);
+ m_acia->write(space, offset & 0x03, data);
}
else if (!addr_clk)
{
@@ -431,7 +431,7 @@ WRITE8_MEMBER( plus4_state::write )
m_ram->pointer()[offset & m_ram->mask()] = data;
}
- m_exp->cd_w(offset, data, ba, cs0, c1l, c1h, cs1, c2l, c2h);
+ m_exp->cd_w(space, offset, data, ba, cs0, c1l, c1h, cs1, c2l, c2h);
}
@@ -837,7 +837,7 @@ void plus4_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( plus4 )
+// MACHINE_CONFIG( plus4 )
//-------------------------------------------------
void plus4_state::plus4(machine_config &config)
@@ -930,8 +930,8 @@ void plus4_state::plus4(machine_config &config)
m_exp->cd_wr_callback().set(FUNC(plus4_state::write));
m_exp->aec_wr_callback().set_inputline(MOS7501_TAG, INPUT_LINE_HALT);
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(plus4_state, cbm_c16), this), "p00,prg", CBM_QUICKLOAD_DELAY);
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(plus4_state, cbm_c16), this), "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS);
// internal ram
RAM(config, m_ram).set_default_size("64K");
@@ -939,7 +939,7 @@ void plus4_state::plus4(machine_config &config)
//-------------------------------------------------
-// machine_config( plus4p )
+// MACHINE_CONFIG( plus4p )
//-------------------------------------------------
void c16_state::plus4p(machine_config &config)
@@ -958,7 +958,7 @@ void c16_state::plus4p(machine_config &config)
}
//-------------------------------------------------
-// machine_config( plus4n )
+// MACHINE_CONFIG( plus4n )
//-------------------------------------------------
void c16_state::plus4n(machine_config &config)
@@ -978,7 +978,7 @@ void c16_state::plus4n(machine_config &config)
//-------------------------------------------------
-// machine_config( c16n )
+// MACHINE_CONFIG( c16n )
//-------------------------------------------------
void c16_state::c16n(machine_config &config)
@@ -999,7 +999,7 @@ void c16_state::c16n(machine_config &config)
//-------------------------------------------------
-// machine_config( c16p )
+// MACHINE_CONFIG( c16p )
//-------------------------------------------------
void c16_state::c16p(machine_config &config)
@@ -1027,7 +1027,7 @@ void c16_state::c232(machine_config &config)
//-------------------------------------------------
-// machine_config( v364 )
+// MACHINE_CONFIG( v364 )
//-------------------------------------------------
void c16_state::v364(machine_config &config)
diff --git a/src/mame/drivers/pmi80.cpp b/src/mame/drivers/pmi80.cpp
index 93a6f48aa8a..86ace8c1736 100644
--- a/src/mame/drivers/pmi80.cpp
+++ b/src/mame/drivers/pmi80.cpp
@@ -168,17 +168,16 @@ void pmi80_state::machine_start()
}
-void pmi80_state::pmi80(machine_config &config)
-{
+MACHINE_CONFIG_START(pmi80_state::pmi80)
/* basic machine hardware */
- I8080(config, m_maincpu, XTAL(1'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &pmi80_state::pmi80_mem);
- m_maincpu->set_addrmap(AS_IO, &pmi80_state::pmi80_io);
+ MCFG_DEVICE_ADD("maincpu",I8080, XTAL(1'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(pmi80_mem)
+ MCFG_DEVICE_IO_MAP(pmi80_io)
/* video hardware */
config.set_default_layout(layout_pmi80);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( pmi80 )
diff --git a/src/mame/drivers/pntnpuzl.cpp b/src/mame/drivers/pntnpuzl.cpp
index bd4695a2963..e8272f42498 100644
--- a/src/mame/drivers/pntnpuzl.cpp
+++ b/src/mame/drivers/pntnpuzl.cpp
@@ -353,10 +353,9 @@ static INPUT_PORTS_START( pntnpuzl )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D)
INPUT_PORTS_END
-void pntnpuzl_state::pntnpuzl(machine_config &config)
-{
- M68000(config, m_maincpu, 12_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &pntnpuzl_state::pntnpuzl_map);
+MACHINE_CONFIG_START(pntnpuzl_state::pntnpuzl)
+ MCFG_DEVICE_ADD("maincpu", M68000, 12_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(pntnpuzl_map)
EEPROM_93C46_16BIT(config, "eeprom");
@@ -374,12 +373,13 @@ void pntnpuzl_state::pntnpuzl(machine_config &config)
mcu.ach7_cb().set_constant(0x180); // ?
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(25'174'800),900,0,640,526,0,480);
- screen.set_screen_update("vga", FUNC(vga_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480)
+ MCFG_SCREEN_UPDATE_DEVICE("vga", vga_device, screen_update)
- VGA(config, "vga", 0).set_screen("screen");
-}
+ MCFG_DEVICE_ADD("vga", VGA, 0)
+ MCFG_VIDEO_SET_SCREEN("screen")
+MACHINE_CONFIG_END
ROM_START( pntnpuzl )
ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 Code */
diff --git a/src/mame/drivers/pockchal.cpp b/src/mame/drivers/pockchal.cpp
index f0a699cd39d..0d4a900e346 100644
--- a/src/mame/drivers/pockchal.cpp
+++ b/src/mame/drivers/pockchal.cpp
@@ -92,7 +92,7 @@ void pockchalv1_state::machine_start()
{
address_space &space = m_maincpu->space(AS_PROGRAM);
if (m_cart->exists())
- space.install_read_handler(0x0000, 0x7fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
+ space.install_read_handler(0x0000, 0x7fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
}
void pockchalv1_state::machine_reset()
@@ -101,29 +101,31 @@ void pockchalv1_state::machine_reset()
MACHINE_CONFIG_START(pockchalv1_state::pockchalv1)
+
/* basic machine hardware */
- TMP90845(config, m_maincpu, 8000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &pockchalv1_state::pockchalv1_map);
-// m_maincpu->->set_vblank_int("screen", FUNC(pockchalv1_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", TMP90845,8000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(pockchalv1_map)
+// MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pockchalv1_state, irq0_line_hold)
// wrong, it's a b&w / greyscale thing
PALETTE(config, "palette").set_format(palette_device::xRGB_444, 0x100).set_endianness(ENDIANNESS_BIG);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 16, 256-16-1);
- screen.set_screen_update(FUNC(pockchalv1_state::screen_update_pockchalv1));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pockchalv1_state, screen_update_pockchalv1)
+ MCFG_SCREEN_PALETTE("palette")
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "pockchalw_cart")
MCFG_GENERIC_EXTENSIONS("bin")
MCFG_GENERIC_LOAD(pockchalv1_state, pockchalv1_cart)
MCFG_GENERIC_MANDATORY
- SOFTWARE_LIST(config, "pc1_list").set_compatible("pockchalw");
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("pc1_list","pockchalw")
+
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pockstat.cpp b/src/mame/drivers/pockstat.cpp
index f78ee0d9f40..869cfc9bc0e 100644
--- a/src/mame/drivers/pockstat.cpp
+++ b/src/mame/drivers/pockstat.cpp
@@ -795,11 +795,11 @@ READ32_MEMBER(pockstat_state::ps_rombank_r)
if (m_ftlb_regs.entry[index] == bank)
{
//printf( "Address %08x is assigned to %08x in entry %d\n", 0x02000000 + (offset << 2), index * 0x2000 + ((offset << 2) & 0x1fff), index );
- return m_cart->read32_rom(index * (0x2000/4) + (offset & (0x1fff/4)), mem_mask);
+ return m_cart->read32_rom(space, index * (0x2000/4) + (offset & (0x1fff/4)), mem_mask);
}
}
}
- return m_cart->read32_rom(offset & 0x7fff, mem_mask);
+ return m_cart->read32_rom(space, offset & 0x7fff, mem_mask);
}
@@ -831,7 +831,7 @@ WRITE32_MEMBER(pockstat_state::ps_flash_w)
READ32_MEMBER(pockstat_state::ps_flash_r)
{
- return m_cart->read32_rom(offset, mem_mask);
+ return m_cart->read32_rom(space, offset, mem_mask);
}
READ32_MEMBER(pockstat_state::ps_audio_r)
@@ -981,24 +981,23 @@ DEVICE_IMAGE_LOAD_MEMBER( pockstat_state, pockstat_flash )
MACHINE_CONFIG_START(pockstat_state::pockstat)
/* basic machine hardware */
- ARM7(config, m_maincpu, DEFAULT_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &pockstat_state::pockstat_mem);
+ MCFG_DEVICE_ADD("maincpu", ARM7, DEFAULT_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(pockstat_mem)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(32, 32);
- screen.set_visarea(0, 32-1, 0, 32-1);
- screen.set_screen_update(FUNC(pockstat_state::screen_update_pockstat));
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(32, 32)
+ MCFG_SCREEN_VISIBLE_AREA(0, 32-1, 0, 32-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pockstat_state, screen_update_pockstat)
PALETTE(config, "palette", palette_device::MONOCHROME);
SPEAKER(config, "speaker").front_center();
- DAC_16BIT_R2R_TWOS_COMPLEMENT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_16BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
/* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "pockstat_cart")
diff --git a/src/mame/drivers/pofo.cpp b/src/mame/drivers/pofo.cpp
index 01a62f67877..582d7baaaf8 100644
--- a/src/mame/drivers/pofo.cpp
+++ b/src/mame/drivers/pofo.cpp
@@ -590,7 +590,7 @@ READ8_MEMBER( portfolio_state::mem_r )
case CCM_A:
if (LOG) logerror("%s %s CCM0 read %05x\n", machine().time().as_string(), machine().describe_context(), offset & 0x1ffff);
- data = m_ccm->nrdi_r(offset & 0x1ffff);
+ data = m_ccm->nrdi_r(space, offset & 0x1ffff);
break;
case CCM_B:
@@ -607,7 +607,7 @@ READ8_MEMBER( portfolio_state::mem_r )
data = m_rom[offset & 0x3ffff];
}
- data = m_exp->nrdi_r(offset, data, iom, bcom, ncc1);
+ data = m_exp->nrdi_r(space, offset, data, iom, bcom, ncc1);
return data;
}
@@ -638,7 +638,7 @@ WRITE8_MEMBER( portfolio_state::mem_w )
case CCM_A:
if (LOG) logerror("%s %s CCM0 write %05x:%02x\n", machine().time().as_string(), machine().describe_context(), offset & 0x1ffff, data);
- m_ccm->nwri_w(offset & 0x1ffff, data);
+ m_ccm->nwri_w(space, offset & 0x1ffff, data);
break;
case CCM_B:
@@ -647,7 +647,7 @@ WRITE8_MEMBER( portfolio_state::mem_w )
}
}
- m_exp->nwri_w(offset, data, iom, bcom, ncc1);
+ m_exp->nwri_w(space, offset, data, iom, bcom, ncc1);
}
@@ -703,7 +703,7 @@ READ8_MEMBER( portfolio_state::io_r )
}
}
- data = m_exp->nrdi_r(offset, data, iom, bcom, ncc1);
+ data = m_exp->nrdi_r(space, offset, data, iom, bcom, ncc1);
return data;
}
@@ -767,7 +767,7 @@ WRITE8_MEMBER( portfolio_state::io_w )
}
}
- m_exp->nwri_w(offset, data, iom, bcom, ncc1);
+ m_exp->nwri_w(space, offset, data, iom, bcom, ncc1);
}
@@ -1011,60 +1011,60 @@ void portfolio_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( portfolio )
+// MACHINE_CONFIG( portfolio )
//-------------------------------------------------
-void portfolio_state::portfolio(machine_config &config)
-{
+MACHINE_CONFIG_START(portfolio_state::portfolio)
// basic machine hardware
- I8088(config, m_maincpu, XTAL(4'915'200));
- m_maincpu->set_addrmap(AS_PROGRAM, &portfolio_state::portfolio_mem);
- m_maincpu->set_addrmap(AS_IO, &portfolio_state::portfolio_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(portfolio_state::portfolio_int_ack));
+ MCFG_DEVICE_ADD(M80C88A_TAG, I8088, XTAL(4'915'200))
+ MCFG_DEVICE_PROGRAM_MAP(portfolio_mem)
+ MCFG_DEVICE_IO_MAP(portfolio_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(portfolio_state,portfolio_int_ack)
// video hardware
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_LCD));
- screen.set_refresh_hz(72);
- screen.set_screen_update(HD61830_TAG, FUNC(hd61830_device::screen_update));
- screen.set_size(240, 64);
- screen.set_visarea(0, 240-1, 0, 64-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD(SCREEN_TAG, LCD)
+ MCFG_SCREEN_REFRESH_RATE(72)
+ MCFG_SCREEN_UPDATE_DEVICE(HD61830_TAG, hd61830_device, screen_update)
+ MCFG_SCREEN_SIZE(240, 64)
+ MCFG_SCREEN_VISIBLE_AREA(0, 240-1, 0, 64-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(portfolio_state::portfolio_palette), 2);
GFXDECODE(config, "gfxdecode", "palette", gfx_portfolio);
- HD61830(config, m_lcdc, XTAL(4'915'200)/2/2);
- m_lcdc->set_addrmap(0, &portfolio_state::portfolio_lcdc);
- m_lcdc->rd_rd_callback().set(FUNC(portfolio_state::hd61830_rd_r));
- m_lcdc->set_screen(SCREEN_TAG);
+ MCFG_DEVICE_ADD(HD61830_TAG, HD61830, XTAL(4'915'200)/2/2)
+ MCFG_DEVICE_ADDRESS_MAP(0, portfolio_lcdc)
+ MCFG_HD61830_RD_CALLBACK(READ8(*this, portfolio_state, hd61830_rd_r))
+ MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
// sound hardware
SPEAKER(config, "mono").front_center();
- PCD3311(config, m_dtmf, XTAL(3'578'640)).add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD(PCD3311T_TAG, PCD3311, XTAL(3'578'640))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
// devices
- PORTFOLIO_MEMORY_CARD_SLOT(config, m_ccm, portfolio_memory_cards, nullptr);
+ MCFG_PORTFOLIO_MEMORY_CARD_SLOT_ADD(PORTFOLIO_MEMORY_CARD_SLOT_A_TAG, portfolio_memory_cards, nullptr)
- PORTFOLIO_EXPANSION_SLOT(config, m_exp, XTAL(4'915'200), portfolio_expansion_cards, nullptr);
- m_exp->eint_wr_callback().set(FUNC(portfolio_state::eint_w));
- m_exp->nmio_wr_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
- m_exp->wake_wr_callback().set(FUNC(portfolio_state::wake_w));
+ MCFG_PORTFOLIO_EXPANSION_SLOT_ADD(PORTFOLIO_EXPANSION_SLOT_TAG, XTAL(4'915'200), portfolio_expansion_cards, nullptr)
+ MCFG_PORTFOLIO_EXPANSION_SLOT_EINT_CALLBACK(WRITELINE(*this, portfolio_state, eint_w))
+ MCFG_PORTFOLIO_EXPANSION_SLOT_NMIO_CALLBACK(INPUTLINE(M80C88A_TAG, INPUT_LINE_NMI))
+ MCFG_PORTFOLIO_EXPANSION_SLOT_WAKE_CALLBACK(WRITELINE(*this, portfolio_state, wake_w))
- TIMER(config, "counter").configure_periodic(FUNC(portfolio_state::counter_tick), attotime::from_hz(XTAL(32'768)/16384));
- TIMER(config, TIMER_TICK_TAG).configure_periodic(FUNC(portfolio_state::system_tick), attotime::from_hz(XTAL(32'768)/32768));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("counter", portfolio_state, counter_tick, attotime::from_hz(XTAL(32'768)/16384))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC(TIMER_TICK_TAG, portfolio_state, system_tick, attotime::from_hz(XTAL(32'768)/32768))
// fake keyboard
- TIMER(config, "keyboard").configure_periodic(FUNC(portfolio_state::keyboard_tick), attotime::from_usec(2500));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", portfolio_state, keyboard_tick, attotime::from_usec(2500))
// software list
- SOFTWARE_LIST(config, "cart_list").set_original("pofo");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "pofo")
// internal ram
RAM(config, RAM_TAG).set_default_size("128K");
NVRAM(config, "nvram", nvram_device::DEFAULT_RANDOM);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/poisk1.cpp b/src/mame/drivers/poisk1.cpp
index d7cf7be86f4..ccb3a81dda8 100644
--- a/src/mame/drivers/poisk1.cpp
+++ b/src/mame/drivers/poisk1.cpp
@@ -41,27 +41,26 @@
#include "speaker.h"
-//#define LOG_GENERAL (1U << 0) //defined in logmacro.h already
-#define LOG_KEYBOARD (1U << 1)
-#define LOG_DEBUG (1U << 2)
-
-//#define VERBOSE (LOG_DEBUG)
-//#define LOG_OUTPUT_FUNC printf
-#include "logmacro.h"
-
-#define LOGKBD(...) LOGMASKED(LOG_KEYBOARD, __VA_ARGS__)
-#define LOGDBG(...) LOGMASKED(LOG_DEBUG, __VA_ARGS__)
-
-
#define CGA_PALETTE_SETS 83
/* one for colour, one for mono, 81 for colour composite */
#define BG_COLOR(x) (((x)&7) | (((x)&0x10) >> 1))
+#define VERBOSE_DBG 0
+
+#define DBG_LOG(N,M,A) \
+ do { \
+ if(VERBOSE_DBG>=N) \
+ { \
+ if( M ) \
+ logerror("%11.6f at %s: %-10s",machine().time().as_double(),machine().describe_context(),(char*)M ); \
+ logerror A; \
+ } \
+ } while (0)
+
#define POISK1_UPDATE_ROW(name) \
void name(bitmap_rgb32 &bitmap, const rectangle &cliprect, uint8_t *videoram, uint16_t ma, uint8_t ra, uint8_t stride)
-
class p1_state : public driver_device
{
public:
@@ -168,21 +167,21 @@ private:
READ8_MEMBER(p1_state::p1_trap_r)
{
uint8_t data = m_video.trap[offset];
- LOG("trap R %.2x $%02x\n", 0x28 + offset, data);
+ DBG_LOG(1, "trap", ("R %.2x $%02x\n", 0x28 + offset, data));
if (offset == 0) m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
return data;
}
WRITE8_MEMBER(p1_state::p1_trap_w)
{
- LOG("trap W %.2x $%02x\n", 0x28 + offset, data);
+ DBG_LOG(1, "trap", ("W %.2x $%02x\n", 0x28 + offset, data));
}
READ8_MEMBER(p1_state::p1_cga_r)
{
uint16_t port = offset + 0x3d0;
- LOG("cga R %.4x\n", port);
+ DBG_LOG(1, "cga", ("R %.4x\n", port));
m_video.trap[1] = 0x40 | ((port >> 8) & 0x3f);
m_video.trap[0] = port & 255;
m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
@@ -193,7 +192,7 @@ WRITE8_MEMBER(p1_state::p1_cga_w)
{
uint16_t port = offset + 0x3d0;
- LOG("cga W %.4x $%02x\n", port, data);
+ DBG_LOG(1, "cga", ("W %.4x $%02x\n", port, data));
m_video.trap[2] = data;
m_video.trap[1] = 0xC0 | ((port >> 8) & 0x3f);
m_video.trap[0] = port & 255;
@@ -202,7 +201,7 @@ WRITE8_MEMBER(p1_state::p1_cga_w)
WRITE8_MEMBER(p1_state::p1_vram_w)
{
- LOG("vram W %.4x $%02x\n", offset, data);
+ DBG_LOG(1, "vram", ("W %.4x $%02x\n", offset, data));
if (m_video.videoram_base) m_video.videoram_base[offset] = data;
m_video.trap[2] = data;
m_video.trap[1] = 0x80 | ((offset >> 8) & 0x3f);
@@ -224,7 +223,7 @@ WRITE8_MEMBER(p1_state::p1_ppi2_porta_w)
{
address_space &program = m_maincpu->space(AS_PROGRAM);
- LOG("color_select_68 W $%02x\n", data);
+ DBG_LOG(1, "color_select_68", ("W $%02x\n", data));
// NMI DISABLE
if (BIT((data ^ m_video.color_select_68), 3))
@@ -267,7 +266,7 @@ WRITE8_MEMBER(p1_state::p1_ppi2_porta_w)
WRITE8_MEMBER(p1_state::p1_ppi_portc_w)
{
- LOG("mode_control_6a W $%02x\n", data);
+ DBG_LOG(1, "mode_control_6a", ("W $%02x\n", data));
m_video.mode_control_6a = data;
set_palette_luts();
@@ -325,7 +324,7 @@ POISK1_UPDATE_ROW(p1_state::cga_gfx_2bpp_update_row)
uint16_t odd, offset;
int i;
- if (ra == 0) LOG("cga_gfx_2bpp_update_row\n");
+ if (ra == 0) DBG_LOG(1, "cga_gfx_2bpp_update_row", ("\n"));
odd = (ra & 1) << 13;
offset = (ma & 0x1fff) | odd;
for (i = 0; i < stride; i++)
@@ -353,7 +352,7 @@ POISK1_UPDATE_ROW(p1_state::cga_gfx_1bpp_update_row)
uint16_t odd, offset;
int i;
- if (ra == 0) LOG("cga_gfx_1bpp_update_row bg %d\n", bg);
+ if (ra == 0) DBG_LOG(1, "cga_gfx_1bpp_update_row", ("bg %d\n", bg));
odd = (ra & 1) << 13;
offset = (ma & 0x1fff) | odd;
for (i = 0; i < stride; i++)
@@ -385,7 +384,7 @@ POISK1_UPDATE_ROW(p1_state::poisk1_gfx_1bpp_update_row)
uint16_t odd, offset;
int i;
- if (ra == 0) LOG("poisk1_gfx_1bpp_update_row bg %d\n", bg);
+ if (ra == 0) DBG_LOG(1, "poisk1_gfx_1bpp_update_row", ("bg %d\n", bg));
odd = (ra & 1) << 13;
offset = (ma & 0x1fff) | odd;
for (i = 0; i < stride; i++)
@@ -407,6 +406,8 @@ POISK1_UPDATE_ROW(p1_state::poisk1_gfx_1bpp_update_row)
// Initialise the cga palette
void p1_state::p1_palette(palette_device &palette) const
{
+ DBG_LOG(0, "init", ("palette_init()\n"));
+
for (int i = 0; i < CGA_PALETTE_SETS * 16; i++)
palette.set_pen_color(i, cga_palette[i][0], cga_palette[i][1], cga_palette[i][2]);
}
@@ -415,6 +416,8 @@ void p1_state::video_start()
{
address_space &space = m_maincpu->space(AS_PROGRAM);
+ DBG_LOG(0, "init", ("video_start()\n"));
+
memset(&m_video, 0, sizeof(m_video));
m_video.videoram_base = std::make_unique<uint8_t[]>(0x8000);
m_video.videoram = m_video.videoram_base.get();
@@ -475,7 +478,7 @@ WRITE_LINE_MEMBER(p1_state::p1_pit8253_out2_changed)
WRITE8_MEMBER(p1_state::p1_ppi_porta_w)
{
m_kbpoll_mask = data;
- LOGDBG("p1_ppi_porta_w %02X <- %02X\n", m_kbpoll_mask, data);
+ DBG_LOG(2, "p1_ppi_porta_w", ("( %02X -> %02X )\n", data, m_kbpoll_mask));
}
READ8_MEMBER(p1_state::p1_ppi_porta_r)
@@ -483,7 +486,7 @@ READ8_MEMBER(p1_state::p1_ppi_porta_r)
uint8_t ret;
ret = m_kbpoll_mask;
- LOG("p1_ppi_porta_r = %02X\n", ret);
+ DBG_LOG(1, "p1_ppi_porta_r", ("= %02X\n", ret));
return ret;
}
@@ -501,7 +504,7 @@ READ8_MEMBER(p1_state::p1_ppi_portb_r)
}
ret = key & 0xff;
-// LOG("p1_ppi_portb_r = %02X\n", ret);
+// DBG_LOG(1,"p1_ppi_portb_r",("= %02X\n", ret));
return ret;
}
@@ -519,7 +522,7 @@ READ8_MEMBER(p1_state::p1_ppi_portc_r)
}
ret = (key >> 8) & 0xff;
- LOGDBG("p1_ppi_portc_r = %02X\n", ret);
+ DBG_LOG(2,"p1_ppi_portc_r",("= %02X\n", ret));
return ret;
}
@@ -532,7 +535,7 @@ READ8_MEMBER(p1_state::p1_ppi2_portc_r)
data = (data & ~0x10) | (tap_val < 0 ? 0x10 : 0x00);
- LOGDBG("p1_ppi_portc_r = %02X (tap_val %f) at %s\n", data, tap_val, machine().describe_context());
+ DBG_LOG(2, "p1_ppi_portc_r", ("= %02X (tap_val %f) at %s\n", data, tap_val, machine().describe_context()));
return data;
}
@@ -559,7 +562,7 @@ READ8_MEMBER(p1_state::p1_ppi_r)
case 3:
return m_ppi8255n2->read(offset);
default:
- LOG("p1ppi R %.2x (unimp)\n", 0x60 + offset);
+ DBG_LOG(1, "p1ppi", ("R %.2x (unimp)\n", 0x60 + offset));
return 0xff;
}
}
@@ -581,7 +584,7 @@ WRITE8_MEMBER(p1_state::p1_ppi_w)
case 3:
return m_ppi8255n2->write(offset, data);
default:
- LOG("p1ppi W %.2x $%02x (unimp)\n", 0x60 + offset, data);
+ DBG_LOG(1, "p1ppi", ("W %.2x $%02x (unimp)\n", 0x60 + offset, data));
return;
}
}
@@ -596,16 +599,21 @@ void p1_state::init_poisk1()
{
address_space &program = m_maincpu->space(AS_PROGRAM);
+ DBG_LOG(0, "init", ("driver_init()\n"));
+
program.install_readwrite_bank(0, m_ram->size() - 1, "bank10");
membank("bank10")->set_base(m_ram->pointer());
}
void p1_state::machine_start()
{
+ DBG_LOG(0, "init", ("machine_start()\n"));
}
void p1_state::machine_reset()
{
+ DBG_LOG(0, "init", ("machine_reset()\n"));
+
m_kbpoll_mask = 0;
}
@@ -634,15 +642,14 @@ static INPUT_PORTS_START( poisk1 )
PORT_INCLUDE( poisk1_keyboard_v91 )
INPUT_PORTS_END
-void p1_state::poisk1(machine_config &config)
-{
+MACHINE_CONFIG_START(p1_state::poisk1)
/* basic machine hardware */
I8088(config, m_maincpu, 5000000);
m_maincpu->set_addrmap(AS_PROGRAM, &p1_state::poisk1_map);
m_maincpu->set_addrmap(AS_IO, &p1_state::poisk1_io);
m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
- PIT8253(config, m_pit8253);
+ PIT8253(config, m_pit8253, 0);
m_pit8253->set_clk<0>(XTAL(15'000'000)/12); /* heartbeat IRQ */
m_pit8253->out_handler<0>().set(m_pic8259, FUNC(pic8259_device::ir0_w));
m_pit8253->set_clk<1>(XTAL(15'000'000)/12); /* keyboard poll -- XXX edge or level triggered? */
@@ -650,7 +657,7 @@ void p1_state::poisk1(machine_config &config)
m_pit8253->set_clk<2>(XTAL(15'000'000)/12); /* pio port c pin 4, and speaker polling enough */
m_pit8253->out_handler<2>().set(FUNC(p1_state::p1_pit8253_out2_changed));
- PIC8259(config, m_pic8259);
+ PIC8259(config, m_pic8259, 0);
m_pic8259->out_int_callback().set_inputline(m_maincpu, 0);
I8255A(config, m_ppi8255n1);
@@ -666,38 +673,38 @@ void p1_state::poisk1(machine_config &config)
m_ppi8255n2->in_pc_callback().set(FUNC(p1_state::p1_ppi2_portc_r)); /*62H*/
ISA8(config, m_isabus, 0);
- m_isabus->set_memspace("maincpu", AS_PROGRAM);
- m_isabus->set_iospace("maincpu", AS_IO);
+ m_isabus->set_cputag("maincpu");
m_isabus->irq2_callback().set(m_pic8259, FUNC(pic8259_device::ir2_w));
m_isabus->irq3_callback().set(m_pic8259, FUNC(pic8259_device::ir3_w));
m_isabus->irq4_callback().set(m_pic8259, FUNC(pic8259_device::ir4_w));
m_isabus->irq5_callback().set(m_pic8259, FUNC(pic8259_device::ir5_w));
m_isabus->irq7_callback().set(m_pic8259, FUNC(pic8259_device::ir7_w));
- ISA8_SLOT(config, "isa1", 0, m_isabus, p1_isa8_cards, "fdc", false); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa2", 0, m_isabus, p1_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa3", 0, m_isabus, p1_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa4", 0, m_isabus, p1_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "isa", p1_isa8_cards, "fdc", false) // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "isa", p1_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "isa", p1_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "isa", p1_isa8_cards, nullptr, false)
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
- SOFTWARE_LIST(config, "flop_list").set_original("poisk1_flop");
-// SOFTWARE_LIST(config, "cass_list").set_original("poisk1_cass");
+ MCFG_SOFTWARE_LIST_ADD("flop_list","poisk1_flop")
+// MCFG_SOFTWARE_LIST_ADD("cass_list","poisk1_cass")
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD( "speaker", SPEAKER_SOUND )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(15'000'000), 912,0,640, 262,0,200);
- m_screen->set_screen_update(FUNC(p1_state::screen_update));
+ MCFG_SCREEN_ADD( "screen", RASTER )
+ MCFG_SCREEN_RAW_PARAMS( XTAL(15'000'000), 912,0,640, 262,0,200 )
+ MCFG_SCREEN_UPDATE_DRIVER( p1_state, screen_update )
/* XXX verify palette */
PALETTE(config, m_palette, FUNC(p1_state::p1_palette), CGA_PALETTE_SETS * 16);
/* internal ram */
RAM(config, RAM_TAG).set_default_size("512K");
-}
+MACHINE_CONFIG_END
ROM_START( poisk1 )
ROM_REGION16_LE(0x10000,"bios", 0)
diff --git a/src/mame/drivers/pokechmp.cpp b/src/mame/drivers/pokechmp.cpp
index 11662fdc8c7..9dcdfdc4add 100644
--- a/src/mame/drivers/pokechmp.cpp
+++ b/src/mame/drivers/pokechmp.cpp
@@ -226,8 +226,8 @@ WRITE_LINE_MEMBER(pokechmp_state::sound_irq)
m_audiocpu->set_input_line(0, HOLD_LINE);
}
-void pokechmp_state::pokechmp(machine_config &config)
-{
+MACHINE_CONFIG_START(pokechmp_state::pokechmp)
+
/* basic machine hardware */
M6502(config, m_maincpu, 4_MHz_XTAL/4);
m_maincpu->set_addrmap(AS_PROGRAM, &pokechmp_state::pokechmp_map);
@@ -246,7 +246,7 @@ void pokechmp_state::pokechmp(machine_config &config)
screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
screen.screen_vblank().append(FUNC(pokechmp_state::sound_irq));
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_pokechmp);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pokechmp)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x400);
/* sound hardware */
@@ -254,15 +254,17 @@ void pokechmp_state::pokechmp(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- YM2203(config, "ym1", XTAL(4'000'000)/4).add_route(ALL_OUTPUTS, "mono", 0.60);
+ MCFG_DEVICE_ADD("ym1", YM2203, XTAL(4'000'000)/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
- YM3812(config, "ym2", XTAL(24'000'000)/16).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("ym2", YM3812, XTAL(24'000'000)/16)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(24'000'000)/16, okim6295_device::PIN7_LOW));
- oki.add_route(ALL_OUTPUTS, "mono", 0.50); /* sound fx */
- oki.add_route(ALL_OUTPUTS, "mono", 0.50);
- oki.set_addrmap(0, &pokechmp_state::pokechmp_oki_map);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(24'000'000)/16, okim6295_device::PIN7_LOW)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) /* sound fx */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MCFG_DEVICE_ADDRESS_MAP(0, pokechmp_oki_map)
+MACHINE_CONFIG_END
void pokechmp_state::init_pokechmp()
{
diff --git a/src/mame/drivers/pokemini.cpp b/src/mame/drivers/pokemini.cpp
index 7b369fe7b87..8fe2547852c 100644
--- a/src/mame/drivers/pokemini.cpp
+++ b/src/mame/drivers/pokemini.cpp
@@ -126,7 +126,7 @@ private:
READ8_MEMBER( pokemini_state::rom_r )
{
offset += 0x2100;
- return m_cart->read_rom(offset & 0x1fffff);
+ return m_cart->read_rom(space, offset & 0x1fffff);
}
void pokemini_state::pokemini_mem_map(address_map &map)
diff --git a/src/mame/drivers/poker72.cpp b/src/mame/drivers/poker72.cpp
index 96522df743a..ff8c55b240a 100644
--- a/src/mame/drivers/poker72.cpp
+++ b/src/mame/drivers/poker72.cpp
@@ -371,21 +371,20 @@ void poker72_state::machine_reset()
membank("bank1")->set_entry(0);
}
-void poker72_state::poker72(machine_config &config)
-{
+MACHINE_CONFIG_START(poker72_state::poker72)
/* basic machine hardware */
- Z80(config, m_maincpu, 8000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &poker72_state::poker72_map);
- m_maincpu->set_vblank_int("screen", FUNC(poker72_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,8000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(poker72_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", poker72_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0, 64*8-1, 0, 32*8-1);
- screen.set_screen_update(FUNC(poker72_state::screen_update_poker72));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(poker72_state, screen_update_poker72)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_poker72);
PALETTE(config, m_palette, FUNC(poker72_state::poker72_palette), 0xe00);
@@ -396,7 +395,7 @@ void poker72_state::poker72(machine_config &config)
ay.port_a_read_callback().set_ioport("SW2");
ay.port_b_read_callback().set_ioport("SW3");
ay.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/polepos.cpp b/src/mame/drivers/polepos.cpp
index 583ca54b1a4..85a32760f35 100644
--- a/src/mame/drivers/polepos.cpp
+++ b/src/mame/drivers/polepos.cpp
@@ -1053,6 +1053,7 @@ void polepos_state::topracern(machine_config &config)
dac.add_route(ALL_OUTPUTS, "rspeaker", 0.12);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/poly.cpp b/src/mame/drivers/poly.cpp
index 06d9be0e9cf..9853ee4f05c 100644
--- a/src/mame/drivers/poly.cpp
+++ b/src/mame/drivers/poly.cpp
@@ -248,35 +248,36 @@ static void poly_floppies(device_slot_interface &device)
}
-void poly_state::poly(machine_config &config)
-{
+MACHINE_CONFIG_START(poly_state::poly)
/* basic machine hardware */
- MC6809(config, m_maincpu, 12.0576_MHz_XTAL / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &poly_state::poly_mem);
+ MCFG_DEVICE_ADD("maincpu", MC6809, 12.0576_MHz_XTAL / 3)
+ MCFG_DEVICE_PROGRAM_MAP(poly_mem)
ADDRESS_MAP_BANK(config, "bankdev").set_map(&poly_state::poly_bank).set_options(ENDIANNESS_LITTLE, 8, 17, 0x10000);
- INPUT_MERGER_ANY_HIGH(config, "irqs").output_handler().set_inputline(m_maincpu, M6809_IRQ_LINE);
+ MCFG_INPUT_MERGER_ANY_HIGH("irqs")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", M6809_IRQ_LINE))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(40 * 12, 24 * 20);
- screen.set_visarea(0, 40 * 12 - 1, 0, 24 * 20 - 1);
- screen.set_screen_update(FUNC(poly_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(40 * 12, 24 * 20)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40 * 12 - 1, 0, 24 * 20 - 1)
+ MCFG_SCREEN_UPDATE_DRIVER(poly_state, screen_update)
- SAA5050(config, m_trom[0], 12.0576_MHz_XTAL / 2);
- m_trom[0]->d_cb().set(FUNC(poly_state::videoram_1_r));
- m_trom[0]->set_screen_size(40, 24, 40);
+ MCFG_DEVICE_ADD("saa5050_1", SAA5050, 12.0576_MHz_XTAL / 2)
+ MCFG_SAA5050_D_CALLBACK(READ8(*this, poly_state, videoram_1_r))
+ MCFG_SAA5050_SCREEN_SIZE(40, 24, 40)
- SAA5050(config, m_trom[1], 12.0576_MHz_XTAL / 2);
- m_trom[1]->d_cb().set(FUNC(poly_state::videoram_2_r));
- m_trom[1]->set_screen_size(40, 24, 40);
+ MCFG_DEVICE_ADD("saa5050_2", SAA5050, 12.0576_MHz_XTAL / 2)
+ MCFG_SAA5050_D_CALLBACK(READ8(*this, poly_state, videoram_2_r))
+ MCFG_SAA5050_SCREEN_SIZE(40, 24, 40)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* internal ram */
RAM(config, m_ram).set_default_size("128K").set_extra_options("64K");
@@ -342,23 +343,21 @@ void poly_state::poly(machine_config &config)
/* software lists */
SOFTWARE_LIST(config, "flop_list").set_original("poly_flop").set_filter("POLY1");
-}
+MACHINE_CONFIG_END
-void poly_state::poly2(machine_config &config)
-{
+MACHINE_CONFIG_START(poly_state::poly2)
poly(config);
/* internal ram */
m_ram->set_default_size("128K");
/* software lists */
- subdevice<software_list_device>("flop_list")->set_filter("POLY2");
-}
+ MCFG_SOFTWARE_LIST_FILTER("flop_list", "POLY2")
+MACHINE_CONFIG_END
-void polydev_state::polydev(machine_config &config)
-{
+MACHINE_CONFIG_START(polydev_state::polydev)
poly(config);
/* fdc */
@@ -366,13 +365,15 @@ void polydev_state::polydev(machine_config &config)
m_fdc->hld_wr_callback().set(FUNC(polydev_state::motor_w));
m_fdc->set_force_ready(true);
- FLOPPY_CONNECTOR(config, "fdc:0", poly_floppies, "525sd", polydev_state::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", poly_floppies, nullptr, polydev_state::floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", poly_floppies, "525sd", polydev_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", poly_floppies, nullptr, polydev_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
/* remove devices*/
- //config.device_remove("netup");
- //config.device_remove("netdown");
-}
+ //MCFG_DEVICE_REMOVE("netup")
+ //MCFG_DEVICE_REMOVE("netdown")
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/poly88.cpp b/src/mame/drivers/poly88.cpp
index 60ea6f60a35..3d24a4bf349 100644
--- a/src/mame/drivers/poly88.cpp
+++ b/src/mame/drivers/poly88.cpp
@@ -197,33 +197,33 @@ GFXDECODE_END
MACHINE_CONFIG_START(poly88_state::poly88)
/* basic machine hardware */
- I8080A(config, m_maincpu, XTAL(16'588'800) / 9); // uses 8224 clock generator
- m_maincpu->set_addrmap(AS_PROGRAM, &poly88_state::poly88_mem);
- m_maincpu->set_addrmap(AS_IO, &poly88_state::poly88_io);
- m_maincpu->set_vblank_int("screen", FUNC(poly88_state::poly88_interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(poly88_state::poly88_irq_callback));
+ MCFG_DEVICE_ADD("maincpu", I8080A, XTAL(16'588'800) / 9) // uses 8224 clock generator
+ MCFG_DEVICE_PROGRAM_MAP(poly88_mem)
+ MCFG_DEVICE_IO_MAP(poly88_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", poly88_state, poly88_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(poly88_state,poly88_irq_callback)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(64*10, 16*15);
- screen.set_visarea(0, 64*10-1, 0, 16*15-1);
- screen.set_screen_update(FUNC(poly88_state::screen_update_poly88));
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_poly88);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(64*10, 16*15)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*10-1, 0, 16*15-1)
+ MCFG_SCREEN_UPDATE_DRIVER(poly88_state, screen_update_poly88)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_poly88)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* audio hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
/* cassette */
- CASSETTE(config, m_cassette);
- m_cassette->set_create_opts(&poly88_cassette_options);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_CREATE_OPTS(&poly88_cassette_options)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED)
/* uart */
I8251(config, m_uart, XTAL(16'588'800) / 9);
@@ -231,15 +231,15 @@ MACHINE_CONFIG_START(poly88_state::poly88)
m_uart->rxrdy_handler().set(FUNC(poly88_state::poly88_usart_rxready));
/* snapshot */
- MCFG_SNAPSHOT_ADD("snapshot", poly88_state, poly88, "img", attotime::from_seconds(2))
+ MCFG_SNAPSHOT_ADD("snapshot", poly88_state, poly88, "img", 2)
MACHINE_CONFIG_END
-void poly88_state::poly8813(machine_config &config)
-{
+MACHINE_CONFIG_START(poly88_state::poly8813)
poly88(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &poly88_state::poly8813_mem);
- m_maincpu->set_addrmap(AS_IO, &poly88_state::poly8813_io);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(poly8813_mem)
+ MCFG_DEVICE_IO_MAP(poly8813_io)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( poly88 )
diff --git a/src/mame/drivers/poly880.cpp b/src/mame/drivers/poly880.cpp
index d079ba13e65..30b9b44df64 100644
--- a/src/mame/drivers/poly880.cpp
+++ b/src/mame/drivers/poly880.cpp
@@ -245,12 +245,11 @@ void poly880_state::machine_start()
/* Machine Driver */
-void poly880_state::poly880(machine_config &config)
-{
+MACHINE_CONFIG_START(poly880_state::poly880)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(7'372'800)/8);
- m_maincpu->set_addrmap(AS_PROGRAM, &poly880_state::poly880_mem);
- m_maincpu->set_addrmap(AS_IO, &poly880_state::poly880_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(7'372'800)/8)
+ MCFG_DEVICE_PROGRAM_MAP(poly880_mem)
+ MCFG_DEVICE_IO_MAP(poly880_io)
/* video hardware */
config.set_default_layout(layout_poly880);
@@ -271,12 +270,12 @@ void poly880_state::poly880(machine_config &config)
z80pio_device& pio2(Z80PIO(config, Z80PIO2_TAG, XTAL(7'372'800)/16));
pio2.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("1K");
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/polyplay.cpp b/src/mame/drivers/polyplay.cpp
index e1c572457b9..276dec717b0 100644
--- a/src/mame/drivers/polyplay.cpp
+++ b/src/mame/drivers/polyplay.cpp
@@ -276,8 +276,7 @@ GFXDECODE_END
/* the machine driver */
-void polyplay_state::polyplay_zre(machine_config &config)
-{
+MACHINE_CONFIG_START(polyplay_state::polyplay_zre)
/* basic machine hardware */
Z80(config, m_maincpu, POLYPLAY_MAIN_CLOCK / 4); /* UB880D */
m_maincpu->set_daisy_config(daisy_chain_zre);
@@ -300,12 +299,12 @@ void polyplay_state::polyplay_zre(machine_config &config)
m_z80pio->out_pb_callback().set(FUNC(polyplay_state::pio_portb_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(polyplay_state::screen_update_polyplay));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(polyplay_state, screen_update_polyplay)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_polyplay);
PALETTE(config, m_palette, FUNC(polyplay_state::polyplay_palette), 10);
@@ -314,7 +313,7 @@ void polyplay_state::polyplay_zre(machine_config &config)
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker1).add_route(ALL_OUTPUTS, "mono", 0.5);
SPEAKER_SOUND(config, m_speaker2).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+MACHINE_CONFIG_END
void polyplay_state::polyplay_zrepp(machine_config &config)
{
diff --git a/src/mame/drivers/pong.cpp b/src/mame/drivers/pong.cpp
index 515789872e3..0f7c0b87957 100644
--- a/src/mame/drivers/pong.cpp
+++ b/src/mame/drivers/pong.cpp
@@ -4,7 +4,6 @@
Pong (c) 1972 Atari
Pong Doubles (c) 1973 Atari
-Rebound (c) 1974 Atari
Breakout (c) 1976 Atari
driver by Couriersud
@@ -28,7 +27,6 @@ driver by Couriersud
TM-0?? Dr. Pong/Puppy Pong/Snoopy Pong (1974) A001433? NO
422,TM-029 Superpong (1974) A000423 NO
TM-014,029 Pong Doubles/Coupe Davis (1973) A000785 NO
- TM-001,023,029,032 Rebound/Spike/Volleyball (1974) A000517,A000846,SPIKE-(A or B) NO
TM-058 Breakout/Breakout Cocktail/Consolette (1976) A004533 NO
Notes:
@@ -43,7 +41,6 @@ TODO: Dr. Pong, Pong In-A-Barrel, Puppy Pong, Snoopy Pong, and Cocktail Pong are
be verified.
TODO: Superpong is believed to use the Pong (Rev E) PCB with some minor modifications, this
needs to be verified.
-TODO: Volleyball...
***************************************************************************/
@@ -61,12 +58,10 @@ TODO: Volleyball...
#include "machine/nl_breakout.h"
#include "machine/nl_pong.h"
#include "machine/nl_pongd.h"
-#include "machine/nl_rebound.h"
#include "screen.h"
#include "speaker.h"
-#include "rebound.lh"
#include "breakout.lh"
#include <cmath>
@@ -120,6 +115,13 @@ TODO: Volleyball...
#define V_TOTAL_BREAKOUT (0xFC) // 252
#define H_TOTAL_BREAKOUT (448) // 448
+#if 0
+#define HBSTART (H_TOTAL_PONG)
+#define HBEND (80)
+#define VBSTART (V_TOTAL_PONG)
+#define VBEND (16)
+#endif
+
enum input_changed_enum
{
IC_PADDLE1,
@@ -182,15 +184,6 @@ public:
void pongd(machine_config &config);
void pong(machine_config &config);
void pongf(machine_config &config);
-
- NETLIST_START(pong)
-
- MEMREGION_SOURCE("maincpu")
- PARAM(NETLIST.USE_DEACTIVATE, 1)
- INCLUDE(pong_schematics)
-
- NETLIST_END()
-
protected:
// driver_device overrides
@@ -267,56 +260,13 @@ private:
};
-class rebound_state : public ttl_mono_state
-{
-public:
- rebound_state(const machine_config &mconfig, device_type type, const char *tag)
- : ttl_mono_state(mconfig, type, tag)
- , m_sw1a(*this, "maincpu:dsw1a")
- , m_sw1b(*this, "maincpu:dsw1b")
- {
- }
-
- // sub devices
- required_device<netlist_mame_logic_input_device> m_sw1a;
- required_device<netlist_mame_logic_input_device> m_sw1b;
-
- DECLARE_INPUT_CHANGED_MEMBER(input_changed);
-
- NETDEV_ANALOG_CALLBACK_MEMBER(led_credit_cb)
- {
- output().set_value("credit_led", (data < 3.5) ? 1 : 0);
- }
-
- NETDEV_ANALOG_CALLBACK_MEMBER(coin_counter_cb)
- {
- machine().bookkeeping().coin_counter_w(0, (data < 1.0));
- }
-
- void rebound(machine_config &config);
-
- NETLIST_START(rebound)
-
- //MEMREGION_SOURCE("maincpu")
- LOCAL_SOURCE(rebound_schematics)
- PARAM(NETLIST.USE_DEACTIVATE, 1)
- //FIXME: unknown name causes segmentation fault
- //INCLUDE(rebound)
- INCLUDE(rebound_schematics)
-
- NETLIST_END()
-
-protected:
+static NETLIST_START(pong)
- // driver_device overrides
- virtual void machine_start() override { };
- virtual void machine_reset() override { };
- virtual void video_start() override { };
-
-private:
-
-};
+ MEMREGION_SOURCE("maincpu")
+ PARAM(NETLIST.USE_DEACTIVATE, 1)
+ INCLUDE(pong_schematics)
+NETLIST_END()
INPUT_CHANGED_MEMBER(pong_state::input_changed)
{
@@ -331,20 +281,6 @@ INPUT_CHANGED_MEMBER(pong_state::input_changed)
}
}
-INPUT_CHANGED_MEMBER(rebound_state::input_changed)
-{
- int numpad = uintptr_t(param);
-
- switch (numpad)
- {
- case IC_SWITCH:
- m_sw1a->write(newval ? 1 : 0);
- m_sw1b->write(newval ? 1 : 0);
- break;
- }
-}
-
-
static INPUT_PORTS_START( pong )
PORT_START( "PADDLE0" ) /* fake input port for player 1 paddle */
PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_SENSITIVITY(2) PORT_KEYDELTA(100) PORT_CENTERDELTA(0) NETLIST_ANALOG_PORT_CHANGED("maincpu", "pot0")
@@ -439,36 +375,11 @@ static INPUT_PORTS_START( breakout )
INPUT_PORTS_END
-static INPUT_PORTS_START( rebound )
-// FIXME later
- PORT_START( "PADDLE0" ) /* fake input port for player 1 paddle */
- PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_SENSITIVITY(1) PORT_KEYDELTA(100) PORT_CENTERDELTA(0) NETLIST_ANALOG_PORT_CHANGED("maincpu", "pot1")
-
- PORT_START( "PADDLE1" ) /* fake input port for player 2 paddle */
- PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_SENSITIVITY(1) PORT_KEYDELTA(100) PORT_CENTERDELTA(0) PORT_PLAYER(2) NETLIST_ANALOG_PORT_CHANGED("maincpu", "pot2")
-
- PORT_START("IN0") /* fake as well */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) NETLIST_LOGIC_PORT_CHANGED("maincpu", "coinsw")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 ) NETLIST_LOGIC_PORT_CHANGED("maincpu", "startsw")
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Antenna") NETLIST_LOGIC_PORT_CHANGED("maincpu", "antenna")
-
- PORT_START("DIPS")
- PORT_DIPNAME( 0x03, 0x00, "Game Won" ) PORT_DIPLOCATION("SW1A:1,SW1A:2") PORT_CHANGED_MEMBER(DEVICE_SELF, rebound_state, input_changed, IC_SWITCH)
- PORT_DIPSETTING( 0x00, "11" )
- PORT_DIPSETTING( 0x03, "15" )
-
- PORT_DIPNAME( 0x04, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1A:3") NETLIST_LOGIC_PORT_CHANGED("maincpu", "dsw2")
- PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) )
-INPUT_PORTS_END
-
-
MACHINE_CONFIG_START(pong_state::pong)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
- //MCFG_NETLIST_SETUP(pong)
- MCFG_NETLIST_SETUP_MEMBER(this, &pong_state::NETLIST_NAME(pong))
+ MCFG_NETLIST_SETUP(pong)
MCFG_NETLIST_ANALOG_INPUT("maincpu", "vr0", "ic_b9_R.R")
MCFG_NETLIST_ANALOG_MULT_OFFSET(1.0 / 100.0 * RES_K(50), RES_K(56) )
@@ -482,23 +393,21 @@ MACHINE_CONFIG_START(pong_state::pong)
MCFG_NETLIST_LOGIC_INPUT("maincpu", "antenna", "antenna.IN", 0)
MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "snd0", "sound", pong_state, sound_cb, "")
- MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "vid0", "videomix", fixedfreq_device, update_composite_monochrome, "fixfreq")
+ MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "vid0", "videomix", fixedfreq_device, update_vid, "fixfreq")
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL_PONG-67,H_TOTAL_PONG-40,H_TOTAL_PONG-8,H_TOTAL_PONG);
- m_video->set_vert_params(V_TOTAL_PONG-22,V_TOTAL_PONG-19,V_TOTAL_PONG-12,V_TOTAL_PONG);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.11);
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL_PONG-67,H_TOTAL_PONG-40,H_TOTAL_PONG-8,H_TOTAL_PONG)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL_PONG-22,V_TOTAL_PONG-19,V_TOTAL_PONG-12,V_TOTAL_PONG)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.11)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_16BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(breakout_state::breakout)
@@ -526,7 +435,7 @@ MACHINE_CONFIG_START(breakout_state::breakout)
MCFG_NETLIST_LOGIC_INPUT("maincpu", "antenna", "antenna.IN", 0)
MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "snd0", "sound", breakout_state, sound_cb, "")
- MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "vid0", "videomix", fixedfreq_device, update_composite_monochrome, "fixfreq")
+ MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "vid0", "videomix", fixedfreq_device, update_vid, "fixfreq")
// Leds and lamps
@@ -536,24 +445,22 @@ MACHINE_CONFIG_START(breakout_state::breakout)
MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "coin_counter", "CON_T", breakout_state, coin_counter_cb, "")
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
/* The Pixel width is a 2,1,2,1,2,1,1,1 repeating pattern
* Thus we must use double resolution horizontally
*/
- m_video->set_monitor_clock(MASTER_CLOCK_BREAKOUT*2);
- m_video->set_horz_params((H_TOTAL_BREAKOUT-104)*2,(H_TOTAL_BREAKOUT-72)*2,(H_TOTAL_BREAKOUT-8)*2, (H_TOTAL_BREAKOUT)*2);
- m_video->set_vert_params(V_TOTAL_BREAKOUT-22,V_TOTAL_BREAKOUT-23,V_TOTAL_BREAKOUT-4, V_TOTAL_BREAKOUT);
- m_video->set_fieldcount(1);
- m_video->set_threshold(1.0);
- m_video->set_gain(1.5);
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK_BREAKOUT*2)
+ MCFG_FIXFREQ_HORZ_PARAMS((H_TOTAL_BREAKOUT-104)*2,(H_TOTAL_BREAKOUT-72)*2,(H_TOTAL_BREAKOUT-8)*2, (H_TOTAL_BREAKOUT)*2)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL_BREAKOUT-22,V_TOTAL_BREAKOUT-23,V_TOTAL_BREAKOUT-4, V_TOTAL_BREAKOUT)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(1.0)
+ MCFG_FIXFREQ_GAIN(1.5)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_16BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(pong_state::pongf)
@@ -579,78 +486,28 @@ MACHINE_CONFIG_START(pong_state::pongd)
MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw1b", "DIPSW2.POS", 0)
MCFG_NETLIST_LOGIC_INPUT("maincpu", "coinsw", "COIN_SW.POS", 0)
MCFG_NETLIST_LOGIC_INPUT("maincpu", "startsw", "START_SW.POS", 0)
-
#if 0
MCFG_NETLIST_LOGIC_INPUT("maincpu", "antenna", "antenna.IN", 0, 0x01)
#endif
MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "snd0", "AUDIO", pong_state, sound_cb, "")
- MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "vid0", "videomix", fixedfreq_device, update_composite_monochrome, "fixfreq")
+ MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "vid0", "videomix", fixedfreq_device, update_vid, "fixfreq")
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL_PONG-67,H_TOTAL_PONG-52,H_TOTAL_PONG-8,H_TOTAL_PONG);
- m_video->set_vert_params(V_TOTAL_PONG-22,V_TOTAL_PONG-19,V_TOTAL_PONG-12,V_TOTAL_PONG);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.11);
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL_PONG-67,H_TOTAL_PONG-52,H_TOTAL_PONG-8,H_TOTAL_PONG)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL_PONG-22,V_TOTAL_PONG-19,V_TOTAL_PONG-12,V_TOTAL_PONG)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.11)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_16BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(rebound_state::rebound)
-
- /* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
- MCFG_NETLIST_SETUP(rebound_schematics)
- //FIXME: doesn't work - segmentation fault
- //MCFG_NETLIST_SETUP_MEMBER(this, &rebound_state::NETLIST_NAME(rebound))
-
- // FIXME: Later
- MCFG_NETLIST_ANALOG_INPUT("maincpu", "pot1", "POTP1.DIAL")
- MCFG_NETLIST_ANALOG_INPUT("maincpu", "pot2", "POTP2.DIAL")
- MCFG_NETLIST_LOGIC_INPUT("maincpu", "antenna", "antenna.IN", 0)
- MCFG_NETLIST_LOGIC_INPUT("maincpu", "coinsw", "COIN1_SW.POS", 0)
- MCFG_NETLIST_LOGIC_INPUT("maincpu", "startsw", "START_SW.POS", 0)
-
- MCFG_NETLIST_LOGIC_INPUT("maincpu", "dsw1a", "DSW1a.POS", 0)
- MCFG_NETLIST_LOGIC_INPUT("maincpu", "dsw1b", "DSW1b.POS", 0)
- MCFG_NETLIST_LOGIC_INPUT("maincpu", "dsw2", "DSW2.POS", 0)
-
- MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "snd0", "sound", rebound_state, sound_cb, "")
- MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "vid0", "videomix", fixedfreq_device, update_composite_monochrome, "fixfreq")
-
- MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "led_credit", "CON11", rebound_state, led_credit_cb, "")
- MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "coin_counter", "CON10", rebound_state, coin_counter_cb, "")
-
- /* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- //m_video->set_horz_params(H_TOTAL_PONG-67,H_TOTAL_PONG-40,H_TOTAL_PONG-8,H_TOTAL_PONG);
- m_video->set_horz_params(H_TOTAL_PONG-51,H_TOTAL_PONG-40,H_TOTAL_PONG-8,H_TOTAL_PONG);
- m_video->set_vert_params(V_TOTAL_PONG-22,V_TOTAL_PONG-19,V_TOTAL_PONG-12,V_TOTAL_PONG);
- m_video->set_fieldcount(1);
- m_video->set_threshold(1.0);
- m_video->set_gain(0.6);
- m_video->set_horz_scale(2);
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- //FIXME: this is not related to reality at all.
- DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-MACHINE_CONFIG_END
-
-
/***************************************************************************
Game driver(s)
@@ -674,11 +531,6 @@ ROM_START( pongd ) /* dummy to satisfy game entry*/
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
ROM_END
-ROM_START( rebound ) /* dummy to satisfy game entry*/
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
-ROM_END
-
-
/* // 100% TTL - NO ROMS
ROM_START( pongbarl ) // dummy to satisfy game entry
@@ -721,18 +573,15 @@ ROM_END
GAME( 1972, pong, 0, pong, pong, pong_state, empty_init, ROT0, "Atari", "Pong (Rev E) external [TTL]", MACHINE_SUPPORTS_SAVE)
GAME( 1972, pongf, 0, pongf, pong, pong_state, empty_init, ROT0, "Atari", "Pong (Rev E) [TTL]", MACHINE_SUPPORTS_SAVE)
GAME( 1973, pongd, 0, pongd, pongd, pong_state, empty_init, ROT0, "Atari", "Pong Doubles [TTL]", MACHINE_SUPPORTS_SAVE)
-GAMEL( 1974, rebound, 0, rebound, rebound, rebound_state, empty_init, ROT0, "Atari", "Rebound (Rev B) [TTL]", MACHINE_SUPPORTS_SAVE, layout_rebound)
GAMEL( 1976, breakout, 0, breakout, breakout, breakout_state, empty_init, ROT90, "Atari", "Breakout [TTL]", MACHINE_SUPPORTS_SAVE, layout_breakout)
// 100% TTL
-//GAMEL(1974, spike, rebound, rebound, rebound, rebound_state, empty_init, ROT0, "Atari/Kee", "Spike [TTL]", MACHINE_IS_SKELETON)
-//GAMEL(1974, volleyball, rebound, rebound, rebound, rebound_state, empty_init, ROT0, "Atari", "Volleyball [TTL]", MACHINE_IS_SKELETON)
-//GAME( 1973, coupedav, pongd, pongd, pongd, pong_state, empty_init, ROT0, "Atari France", "Coupe Davis [TTL]", MACHINE_SUPPORTS_SAVE)
-//GAME( 1973, pongbarl, pong, pong, pong, pong_state, empty_init, ROT0, "Atari", "Pong In-A-Barrel [TTL]", MACHINE_SUPPORTS_SAVE)
-//GAME( 1974, cktpong, pong, pong, pong, pong_state, empty_init, ROT0, "Atari / National Entertainment Co.", "Cocktail Pong [TTL]", MACHINE_SUPPORTS_SAVE)
-//GAME( 1974, drpong, pong, pong, pong, pong_state, empty_init, ROT0, "Atari", "Dr. Pong [TTL]", MACHINE_SUPPORTS_SAVE)
-//GAME( 1974, pupppong, pong, pong, pong, pong_state, empty_init, ROT0, "Atari", "Puppy Pong [TTL]", MACHINE_SUPPORTS_SAVE)
-//GAME( 1974, snoopong, pong, pong, pong, pong_state, empty_init, ROT0, "Atari", "Snoopy Pong [TTL]", MACHINE_SUPPORTS_SAVE)
-//GAME( 1974, suprpong, 0, suprpong, pong, pong_state, empty_init, ROT0, "Atari", "Superpong [TTL]", MACHINE_SUPPORTS_SAVE)
-//GAMEL( 1976, breakckt, breakout, breakout, breakout, breakout_state, empty_init, ROT90, "Atari", "Breakout Cocktail [TTL]", MACHINE_SUPPORTS_SAVE, layout_breakckt)
-//GAMEL( 1976, consolet, breakout, breakout, breakout, breakout_state, empty_init, ROT90, "Atari Europe", "Consolette [TTL]", MACHINE_SUPPORTS_SAVE, layout_consolet)
+//GAME( 1973, coupedav, pongd, pongd, pongd, driver_device, empty_init, ROT0, "Atari France", "Coupe Davis [TTL]", MACHINE_SUPPORTS_SAVE)
+//GAME( 1973, pongbarl, pong, pong, pong, driver_device, empty_init, ROT0, "Atari", "Pong In-A-Barrel [TTL]", MACHINE_SUPPORTS_SAVE)
+//GAME( 1974, cktpong, pong, pong, pong, driver_device, empty_init, ROT0, "Atari / National Entertainment Co.", "Cocktail Pong [TTL]", MACHINE_SUPPORTS_SAVE)
+//GAME( 1974, drpong, pong, pong, pong, driver_device, empty_init, ROT0, "Atari", "Dr. Pong [TTL]", MACHINE_SUPPORTS_SAVE)
+//GAME( 1974, pupppong, pong, pong, pong, driver_device, empty_init, ROT0, "Atari", "Puppy Pong [TTL]", MACHINE_SUPPORTS_SAVE)
+//GAME( 1974, snoopong, pong, pong, pong, driver_device, empty_init, ROT0, "Atari", "Snoopy Pong [TTL]", MACHINE_SUPPORTS_SAVE)
+//GAME( 1974, suprpong, 0, suprpong, pong, driver_device, empty_init, ROT0, "Atari", "Superpong [TTL]", MACHINE_SUPPORTS_SAVE)
+//GAMEL( 1976, breakckt, breakout, breakout, breakout, driver_device, empty_init, ROT90, "Atari", "Breakout Cocktail [TTL]", MACHINE_SUPPORTS_SAVE, layout_breakckt)
+//GAMEL( 1976, consolet, breakout, breakout, breakout, driver_device, empty_init, ROT90, "Atari Europe", "Consolette [TTL]", MACHINE_SUPPORTS_SAVE, layout_consolet)
diff --git a/src/mame/drivers/poolshrk.cpp b/src/mame/drivers/poolshrk.cpp
index 106d142f315..ce6ca8118fb 100644
--- a/src/mame/drivers/poolshrk.cpp
+++ b/src/mame/drivers/poolshrk.cpp
@@ -216,31 +216,32 @@ void poolshrk_state::poolshrk_palette(palette_device &palette) const
}
-void poolshrk_state::poolshrk(machine_config &config)
-{
+MACHINE_CONFIG_START(poolshrk_state::poolshrk)
+
/* basic machine hardware */
- M6800(config, m_maincpu, 11055000 / 8); /* ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &poolshrk_state::poolshrk_cpu_map);
- m_maincpu->set_vblank_int("screen", FUNC(poolshrk_state::irq0_line_assert));
+ MCFG_DEVICE_ADD("maincpu", M6800, 11055000 / 8) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(poolshrk_cpu_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", poolshrk_state, irq0_line_assert)
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(256, 256);
- screen.set_visarea(1, 255, 24, 255);
- screen.set_screen_update(FUNC(poolshrk_state::screen_update));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_poolshrk);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(1, 255, 24, 255)
+ MCFG_SCREEN_UPDATE_DRIVER(poolshrk_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_poolshrk)
PALETTE(config, m_palette, FUNC(poolshrk_state::poolshrk_palette), 4);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- DISCRETE(config, m_discrete, poolshrk_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, poolshrk_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( poolshrk )
diff --git a/src/mame/drivers/pooyan.cpp b/src/mame/drivers/pooyan.cpp
index 284134f4ad0..6bc9f9a649c 100644
--- a/src/mame/drivers/pooyan.cpp
+++ b/src/mame/drivers/pooyan.cpp
@@ -193,11 +193,11 @@ void pooyan_state::machine_start()
}
-void pooyan_state::pooyan(machine_config &config)
-{
+MACHINE_CONFIG_START(pooyan_state::pooyan)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/3/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &pooyan_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/3/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
ls259_device &mainlatch(LS259(config, "mainlatch")); // B2
mainlatch.q_out_cb<0>().set(FUNC(pooyan_state::irq_enable_w));
@@ -211,20 +211,20 @@ void pooyan_state::pooyan(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(pooyan_state::screen_update));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(pooyan_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pooyan_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pooyan_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pooyan);
PALETTE(config, m_palette, FUNC(pooyan_state::pooyan_palette), 16*16+16*16, 32);
/* sound hardware */
TIMEPLT_AUDIO(config, "timeplt_audio");
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/popobear.cpp b/src/mame/drivers/popobear.cpp
index 672c799b83e..a9f1823e99c 100644
--- a/src/mame/drivers/popobear.cpp
+++ b/src/mame/drivers/popobear.cpp
@@ -642,33 +642,35 @@ TIMER_DEVICE_CALLBACK_MEMBER(popobear_state::irq)
m_maincpu->set_input_line(2, ASSERT_LINE);
}
-void popobear_state::popobear(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(42'000'000)/4); // XTAL CORRECT, DIVISOR GUESSED
- m_maincpu->set_addrmap(AS_PROGRAM, &popobear_state::popobear_mem);
+MACHINE_CONFIG_START(popobear_state::popobear)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(42'000'000)/4) // XTAL CORRECT, DIVISOR GUESSED
+ MCFG_DEVICE_PROGRAM_MAP(popobear_mem)
// levels 2,3,5 look interesting
- //->set_vblank_int("screen", popobear_state, irq5_line_assert)
- //->set_periodic_int(FUNC(popobear_state, irq2_line_assert, 120)
- TIMER(config, "scantimer").configure_scanline(FUNC(popobear_state::irq), "screen", 0, 1);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(popobear_state::screen_update));
- screen.set_palette(m_palette);
- screen.set_size(128*8, 32*8);
- screen.set_visarea(0, 479, 0, 239);
+ //MCFG_DEVICE_VBLANK_INT_DRIVER("screen", popobear_state, irq5_line_assert)
+ //MCFG_DEVICE_PERIODIC_INT_DRIVER(popobear_state, irq2_line_assert, 120)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", popobear_state, irq, "screen", 0, 1)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(popobear_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_SCREEN_SIZE(128*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 479, 0, 239)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 256*2);
SPEAKER(config, "mono").front_center();
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_popobear);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_popobear)
- YM2413(config, "ymsnd", XTAL(42'000'000)/16).add_route(ALL_OUTPUTS, "mono", 1.0); // XTAL CORRECT, DIVISOR GUESSED
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(42'000'000)/16) // XTAL CORRECT, DIVISOR GUESSED
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- OKIM6295(config, "oki", XTAL(42'000'000)/32, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 1.0); // XTAL CORRECT, DIVISOR GUESSED
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(42'000'000)/32, okim6295_device::PIN7_LOW) // XTAL CORRECT, DIVISOR GUESSED
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( popobear )
diff --git a/src/mame/drivers/popper.cpp b/src/mame/drivers/popper.cpp
index 93bd11f34ab..40ee2ae1cfb 100644
--- a/src/mame/drivers/popper.cpp
+++ b/src/mame/drivers/popper.cpp
@@ -479,7 +479,7 @@ WRITE8_MEMBER( popper_state::ay1_w )
m_ay[1]->reset();
}
- m_ay[0]->write_bc1_bc2(offset, data);
+ m_ay[0]->write_bc1_bc2(space, offset, data);
}
@@ -534,21 +534,20 @@ void popper_state::machine_reset()
// MACHINE DEFINTIONS
//**************************************************************************
-void popper_state::popper(machine_config &config)
-{
- Z80(config, m_maincpu, XTAL(18'432'000)/3/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &popper_state::main_map);
+MACHINE_CONFIG_START(popper_state::popper)
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'432'000)/3/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- Z80(config, m_subcpu, XTAL(18'432'000)/3/2);
- m_subcpu->set_addrmap(AS_PROGRAM, &popper_state::sub_map);
+ MCFG_DEVICE_ADD("subcpu", Z80, XTAL(18'432'000)/3/2)
+ MCFG_DEVICE_PROGRAM_MAP(sub_map)
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
// video hardware
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(18'432'000)/3, 384, 48, 328, 264, 16, 240);
- m_screen->set_screen_update(FUNC(popper_state::screen_update));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(18'432'000)/3, 384, 48, 328, 264, 16, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(popper_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_popper);
@@ -560,7 +559,7 @@ void popper_state::popper(machine_config &config)
AY8910(config, m_ay[0], XTAL(18'432'000)/3/2/2).add_route(ALL_OUTPUTS, "mono", 0.25);
AY8910(config, m_ay[1], XTAL(18'432'000)/3/2/2).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/portrait.cpp b/src/mame/drivers/portrait.cpp
index 5f0ea95b14e..385f5720e95 100644
--- a/src/mame/drivers/portrait.cpp
+++ b/src/mame/drivers/portrait.cpp
@@ -254,24 +254,23 @@ static GFXDECODE_START( gfx_portrait )
GFXDECODE_END
-void portrait_state::portrait(machine_config &config)
-{
- Z80(config, m_maincpu, 4000000); /* 4 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &portrait_state::portrait_map);
- m_maincpu->set_vblank_int("screen", FUNC(portrait_state::irq0_line_hold));
+MACHINE_CONFIG_START(portrait_state::portrait)
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(portrait_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", portrait_state, irq0_line_hold)
- i8039_device &audiocpu(I8039(config, "audiocpu", 3120000)); /* ? */
- audiocpu.set_addrmap(AS_PROGRAM, &portrait_state::portrait_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", I8039, 3120000) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(portrait_sound_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0*8, 54*8-1, 0*8, 40*8-1);
- screen.set_screen_update(FUNC(portrait_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 54*8-1, 0*8, 40*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(portrait_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_portrait);
PALETTE(config, m_palette, FUNC(portrait_state::portrait_palette), 0x800, 0x40);
@@ -282,7 +281,7 @@ void portrait_state::portrait(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
TMS5200(config, m_tms, 640000).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
ROM_START( portrait )
diff --git a/src/mame/drivers/potgoldu.cpp b/src/mame/drivers/potgoldu.cpp
index 3eb610b779f..f6e19d70af8 100644
--- a/src/mame/drivers/potgoldu.cpp
+++ b/src/mame/drivers/potgoldu.cpp
@@ -78,8 +78,8 @@ static INPUT_PORTS_START( potgold )
INPUT_PORTS_END
-void potgold_state::potgold(machine_config &config)
-{
+MACHINE_CONFIG_START(potgold_state::potgold)
+
/* basic machine hardware */
TMS34010(config, m_maincpu, XTAL(40'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &potgold_state::potgold_map);
@@ -88,13 +88,13 @@ void potgold_state::potgold(machine_config &config)
m_maincpu->set_pixels_per_clock(1);
m_maincpu->set_scanline_rgb32_callback(FUNC(potgold_state::scanline_update));
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(VIDEO_CLOCK/2, 444, 0, 320, 233, 0, 200);
- screen.set_screen_update("maincpu", FUNC(tms34010_device::tms340x0_rgb32));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 444, 0, 320, 233, 0, 200)
+ MCFG_SCREEN_UPDATE_DEVICE("maincpu", tms34010_device, tms340x0_rgb32)
/* sound hardware */
/* YM2413 */
-}
+MACHINE_CONFIG_END
ROM_START( potgoldu )
ROM_REGION16_LE( 0x400000, "user1", 0 ) /* 34010 code */
diff --git a/src/mame/drivers/powerbal.cpp b/src/mame/drivers/powerbal.cpp
index d5ae925c83e..09cca74a673 100644
--- a/src/mame/drivers/powerbal.cpp
+++ b/src/mame/drivers/powerbal.cpp
@@ -626,24 +626,24 @@ MACHINE_RESET_MEMBER(powerbal_state,powerbal)
configure_oki_banks();
}
-void powerbal_state::powerbal(machine_config &config)
-{
+MACHINE_CONFIG_START(powerbal_state::powerbal)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000); /* 12 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &powerbal_state::powerbal_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(powerbal_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000) /* 12 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(powerbal_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", powerbal_state, irq2_line_hold)
MCFG_MACHINE_START_OVERRIDE(powerbal_state,powerbal)
MCFG_MACHINE_RESET_OVERRIDE(powerbal_state,powerbal)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(61);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(128*8, 64*8);
- screen.set_visarea(0*8, 40*8-1, 0*8, 30*8-1);
- screen.set_screen_update(FUNC(powerbal_state::screen_update_powerbal));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(61)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(128*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(powerbal_state, screen_update_powerbal)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_powerbal);
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 512);
@@ -653,17 +653,17 @@ void powerbal_state::powerbal(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH);
- m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
- m_oki->set_addrmap(0, &powerbal_state::oki_map);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(powerbal_state::magicstk)
-void powerbal_state::magicstk(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000); /* 12 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &powerbal_state::magicstk_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(powerbal_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000) /* 12 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(magicstk_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", powerbal_state, irq2_line_hold)
EEPROM_93C46_16BIT(config, "eeprom").default_value(0);
@@ -671,13 +671,13 @@ void powerbal_state::magicstk(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(powerbal_state,powerbal)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(61);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(128*8, 64*8);
- screen.set_visarea(0*8, 40*8-1, 0*8, 30*8-1);
- screen.set_screen_update(FUNC(powerbal_state::screen_update_powerbal));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(61)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(128*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(powerbal_state, screen_update_powerbal)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_powerbal);
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 512);
@@ -687,23 +687,25 @@ void powerbal_state::magicstk(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH);
- m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
- m_oki->set_addrmap(0, &powerbal_state::oki_map);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(powerbal_state::atombjt)
-void powerbal_state::atombjt(machine_config &config)
-{
powerbal(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &powerbal_state::atombjt_map);
- m_maincpu->set_vblank_int("screen", FUNC(powerbal_state::irq6_line_hold));
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(atombjt_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", powerbal_state, irq6_line_hold)
- subdevice<screen_device>("screen")->set_size(512, 256);
- subdevice<screen_device>("screen")->set_visarea(0*8, 48*8-1, 2*8, 30*8-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(512, 256) \
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1) \
MCFG_VIDEO_START_OVERRIDE(powerbal_state,atombjt)
-}
+MACHINE_CONFIG_END
/*
Power Balls
diff --git a/src/mame/drivers/powerstack.cpp b/src/mame/drivers/powerstack.cpp
index d5444770d65..8f25734b9c3 100644
--- a/src/mame/drivers/powerstack.cpp
+++ b/src/mame/drivers/powerstack.cpp
@@ -27,11 +27,10 @@ private:
static INPUT_PORTS_START( powerstack )
INPUT_PORTS_END
-void powerstack_state::powerstack(machine_config &config)
-{
-// ppc604_device &maincpu(PPC604(config, "maincpu", 300'000'000)); // PPC604E @ 300MHz
-// maincpu.set_addrmap(AS_PROGRAM, &powerstack_state::mem_map);
-}
+MACHINE_CONFIG_START(powerstack_state::powerstack)
+// MCFG_DEVICE_ADD("maincpu", PPC604, 300'000'000) // PPC604E @ 300MHz
+// MCFG_DEVICE_PROGRAM_MAP(mem_map)
+MACHINE_CONFIG_END
ROM_START( powerstk )
ROM_REGION( 0x80000, "roms", 0 )
diff --git a/src/mame/drivers/pp01.cpp b/src/mame/drivers/pp01.cpp
index 21f0d21d743..22386146fac 100644
--- a/src/mame/drivers/pp01.cpp
+++ b/src/mame/drivers/pp01.cpp
@@ -199,21 +199,20 @@ static INPUT_PORTS_START( pp01 )
INPUT_PORTS_END
/* Machine driver */
-void pp01_state::pp01(machine_config &config)
-{
+MACHINE_CONFIG_START(pp01_state::pp01)
/* basic machine hardware */
- I8080(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &pp01_state::pp01_mem);
- m_maincpu->set_addrmap(AS_IO, &pp01_state::pp01_io);
+ MCFG_DEVICE_ADD("maincpu", I8080, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(pp01_mem)
+ MCFG_DEVICE_IO_MAP(pp01_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 0, 256-1);
- screen.set_screen_update(FUNC(pp01_state::screen_update_pp01));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pp01_state, screen_update_pp01)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(pp01_state::pp01_palette), 8);
@@ -223,7 +222,7 @@ void pp01_state::pp01(machine_config &config)
//WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
/* Devices */
- I8251(config, "uart", 0);
+ MCFG_DEVICE_ADD("uart", I8251, 0)
// when rts and dtr are both high, the uart is being used for cassette operations
PIT8253(config, m_pit, 0);
@@ -244,7 +243,7 @@ void pp01_state::pp01(machine_config &config)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K").set_default_value(0x00);
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/ppmast93.cpp b/src/mame/drivers/ppmast93.cpp
index 5294c66c52f..ed8d38628d9 100644
--- a/src/mame/drivers/ppmast93.cpp
+++ b/src/mame/drivers/ppmast93.cpp
@@ -373,29 +373,28 @@ uint32_t ppmast93_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
return 0;
}
-void ppmast93_state::ppmast93(machine_config &config)
-{
+MACHINE_CONFIG_START(ppmast93_state::ppmast93)
/* basic machine hardware */
- Z80(config, m_maincpu, 5000000); /* 5 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &ppmast93_state::ppmast93_cpu1_map);
- m_maincpu->set_addrmap(AS_IO, &ppmast93_state::ppmast93_cpu1_io);
- m_maincpu->set_vblank_int("screen", FUNC(ppmast93_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,5000000) /* 5 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(ppmast93_cpu1_map)
+ MCFG_DEVICE_IO_MAP(ppmast93_cpu1_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ppmast93_state, irq0_line_hold)
- z80_device &sub(Z80(config, "sub", 5000000)); /* 5 MHz */
- sub.set_addrmap(AS_PROGRAM, &ppmast93_state::ppmast93_cpu2_map);
- sub.set_addrmap(AS_IO, &ppmast93_state::ppmast93_cpu2_io);
- sub.set_periodic_int(FUNC(ppmast93_state::irq0_line_hold), attotime::from_hz(8000));
+ MCFG_DEVICE_ADD("sub", Z80,5000000) /* 5 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(ppmast93_cpu2_map)
+ MCFG_DEVICE_IO_MAP(ppmast93_cpu2_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(ppmast93_state, irq0_line_hold, 8000)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(55);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 0, 256-1);
- screen.set_screen_update(FUNC(ppmast93_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(55)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ppmast93_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, "palette", gfx_ppmast93);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ppmast93)
PALETTE(config, "palette", palette_device::RGB_444_PROMS, "proms", 0x100);
@@ -404,13 +403,13 @@ void ppmast93_state::ppmast93(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- YM2413(config, "ymsnd", 5000000/2).add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD("ymsnd", YM2413, 5000000/2)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.3); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.3) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
ROM_START( ppmast93 )
ROM_REGION( 0x20000, "maincpu", 0 )
diff --git a/src/mame/drivers/prestige.cpp b/src/mame/drivers/prestige.cpp
index eb89d393fc1..fbc565d4fd6 100644
--- a/src/mame/drivers/prestige.cpp
+++ b/src/mame/drivers/prestige.cpp
@@ -743,110 +743,104 @@ TIMER_DEVICE_CALLBACK_MEMBER(prestige_state::irq_timer)
m_maincpu->set_input_line(0, ASSERT_LINE);
}
-void prestige_state::prestige_base(machine_config &config)
-{
+MACHINE_CONFIG_START(prestige_state::prestige_base)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(8'000'000)); // Z84C008
- m_maincpu->set_addrmap(AS_PROGRAM, &prestige_state::prestige_mem);
- m_maincpu->set_addrmap(AS_IO, &prestige_state::prestige_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(prestige_state::prestige_int_ack));
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(8'000'000)) // Z84C008
+ MCFG_DEVICE_PROGRAM_MAP(prestige_mem)
+ MCFG_DEVICE_IO_MAP(prestige_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(prestige_state,prestige_int_ack)
- TIMER(config, "irq_timer").configure_periodic(FUNC(prestige_state::irq_timer), attotime::from_hz(200));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", prestige_state, irq_timer, attotime::from_hz(200))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(prestige_state::screen_update_1bpp));
- screen.set_size(240, 100);
- screen.set_visarea(0, 240-1, 0, 100-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(prestige_state, screen_update_1bpp)
+ MCFG_SCREEN_SIZE( 240, 100 )
+ MCFG_SCREEN_VISIBLE_AREA( 0, 240-1, 0, 100-1 )
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(prestige_state::prestige_palette), 2);
/* cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "genius_cart");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "genius_cart")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("32K").set_extra_options("64K");
-}
+MACHINE_CONFIG_END
-void prestige_state::glcolor(machine_config &config)
-{
+MACHINE_CONFIG_START(prestige_state::glcolor)
prestige_base(config);
- m_maincpu->set_addrmap(AS_IO, &prestige_state::glcolor_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(glcolor_io)
/* video hardware */
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_screen_update(FUNC(prestige_state::screen_update_2bpp));
- screen.set_size(160, 80);
- screen.set_visarea(0, 160-1, 0, 80-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(prestige_state, screen_update_2bpp)
+ MCFG_SCREEN_SIZE( 160, 80 )
+ MCFG_SCREEN_VISIBLE_AREA( 0, 160-1, 0, 80-1 )
subdevice<palette_device>("palette")->set_entries(4).set_init(FUNC(prestige_state::glcolor_palette));
- SOFTWARE_LIST(config, "cart_list").set_original("glcolor");
- SOFTWARE_LIST(config, "snotec_cart").set_compatible("snotec");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "glcolor")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("snotec_cart", "snotec")
+MACHINE_CONFIG_END
-void prestige_state::glmcolor(machine_config &config)
-{
+MACHINE_CONFIG_START(prestige_state::glmcolor)
glcolor(config);
- m_maincpu->set_addrmap(AS_IO, &prestige_state::prestige_io);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(prestige_io)
+MACHINE_CONFIG_END
-void prestige_state::snotec(machine_config &config)
-{
+MACHINE_CONFIG_START(prestige_state::snotec)
glcolor(config);
- config.device_remove("snotec_cart");
- SOFTWARE_LIST(config.replace(), "cart_list").set_original("snotec");
- SOFTWARE_LIST(config, "glcolor_cart").set_compatible("glcolor");
-}
+ MCFG_SOFTWARE_LIST_REMOVE("cart_list")
+ MCFG_SOFTWARE_LIST_REMOVE("snotec_cart")
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "snotec")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("glcolor_cart", "glcolor")
+MACHINE_CONFIG_END
-void prestige_state::prestige(machine_config &config)
-{
+MACHINE_CONFIG_START(prestige_state::prestige)
prestige_base(config);
- SOFTWARE_LIST(config, "gl6000sl_cart").set_compatible("gl6000sl");
- SOFTWARE_LIST(config, "misterx_cart").set_compatible("misterx");
- SOFTWARE_LIST(config, "gl2000_cart").set_compatible("gl2000");
-}
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl6000sl_cart", "gl6000sl")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl2000_cart", "gl2000")
+MACHINE_CONFIG_END
-void prestige_state::gl6000sl(machine_config &config)
-{
+MACHINE_CONFIG_START(prestige_state::gl6000sl)
prestige_base(config);
- SOFTWARE_LIST(config, "cart_list").set_original("gl6000sl");
- SOFTWARE_LIST(config, "misterx_cart").set_compatible("misterx");
- SOFTWARE_LIST(config, "gl2000_cart").set_compatible("gl2000");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "gl6000sl")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl2000_cart", "gl2000")
+MACHINE_CONFIG_END
-void prestige_state::gl7007sl(machine_config &config)
-{
+MACHINE_CONFIG_START(prestige_state::gl7007sl)
prestige_base(config);
- SOFTWARE_LIST(config, "gl6000sl_cart").set_compatible("gl6000sl");
- SOFTWARE_LIST(config, "gl2000_cart").set_compatible("gl2000");
- SOFTWARE_LIST(config, "misterx_cart").set_compatible("misterx");
-}
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl6000sl_cart", "gl6000sl")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl2000_cart", "gl2000")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
+MACHINE_CONFIG_END
-void prestige_state::gjmovie(machine_config &config)
-{
+MACHINE_CONFIG_START(prestige_state::gjmovie)
prestige_base(config);
- SOFTWARE_LIST(config, "cart_list").set_original("gjmovie");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "gjmovie")
+MACHINE_CONFIG_END
-void prestige_state::princ(machine_config &config)
-{
+MACHINE_CONFIG_START(prestige_state::princ)
prestige_base(config);
- config.device_remove("cartslot");
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "princ_cart");
- SOFTWARE_LIST(config, "cart_list").set_original("princ");
-}
+ MCFG_DEVICE_REMOVE("cartslot")
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "princ_cart")
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "princ")
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( gl6000sl )
diff --git a/src/mame/drivers/primo.cpp b/src/mame/drivers/primo.cpp
index 01d473632fe..803f97bcb58 100644
--- a/src/mame/drivers/primo.cpp
+++ b/src/mame/drivers/primo.cpp
@@ -248,87 +248,89 @@ static const struct CassetteOptions primo_cassette_options = {
MACHINE_CONFIG_START(primo_state::primoa32)
/* basic machine hardware */
- Z80(config, m_maincpu, 2500000);
- m_maincpu->set_addrmap(AS_PROGRAM, &primo_state::primo32_mem);
- m_maincpu->set_addrmap(AS_IO, &primo_state::primoa_port);
+ MCFG_DEVICE_ADD( "maincpu", Z80, 2500000 )
+ MCFG_DEVICE_PROGRAM_MAP( primo32_mem)
+ MCFG_DEVICE_IO_MAP( primoa_port)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(50);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(256, 192);
- m_screen->set_visarea(0, 256-1, 0, 192-1);
- m_screen->set_screen_update(FUNC(primo_state::screen_update_primo));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set(FUNC(primo_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE( 50 )
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE( 256, 192 )
+ MCFG_SCREEN_VISIBLE_AREA( 0, 256-1, 0, 192-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(primo_state, screen_update_primo)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, primo_state, vblank_irq))
PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
/* snapshot/quickload */
- MCFG_SNAPSHOT_ADD("snapshot", primo_state, primo, "pss")
- MCFG_QUICKLOAD_ADD("quickload", primo_state, primo, "pp")
+ MCFG_SNAPSHOT_ADD("snapshot", primo_state, primo, "pss", 0)
+ MCFG_QUICKLOAD_ADD("quickload", primo_state, primo, "pp", 0)
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(primo_ptp_format);
- m_cassette->set_create_opts(&primo_cassette_options);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(primo_ptp_format)
+ MCFG_CASSETTE_CREATE_OPTS(&primo_cassette_options)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED)
/* floppy from serial bus */
- cbm_iec_slot_device::add(config, m_iec, nullptr);
+ MCFG_CBM_IEC_ADD(nullptr)
/* cartridge */
- GENERIC_CARTSLOT(config, m_cart1, generic_plain_slot, nullptr, "bin,rom");
- GENERIC_CARTSLOT(config, m_cart2, generic_plain_slot, nullptr, "bin,rom");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot1", generic_plain_slot, nullptr)
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot2", generic_plain_slot, nullptr)
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
MACHINE_CONFIG_END
-void primo_state::primoa48(machine_config &config)
-{
+MACHINE_CONFIG_START(primo_state::primoa48)
primoa32(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &primo_state::primo48_mem);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(primo48_mem)
+MACHINE_CONFIG_END
-void primo_state::primoa64(machine_config &config)
-{
+MACHINE_CONFIG_START(primo_state::primoa64)
primoa32(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &primo_state::primo64_mem);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(primo64_mem)
+MACHINE_CONFIG_END
-void primo_state::primob32(machine_config &config)
-{
+MACHINE_CONFIG_START(primo_state::primob32)
primoa32(config);
- m_maincpu->set_addrmap(AS_IO, &primo_state::primob_port);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(primob_port)
MCFG_MACHINE_RESET_OVERRIDE(primo_state, primob)
-}
+MACHINE_CONFIG_END
-void primo_state::primob48(machine_config &config)
-{
+MACHINE_CONFIG_START(primo_state::primob48)
primoa48(config);
- m_maincpu->set_addrmap(AS_IO, &primo_state::primob_port);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(primob_port)
MCFG_MACHINE_RESET_OVERRIDE(primo_state, primob)
-}
+MACHINE_CONFIG_END
-void primo_state::primob64(machine_config &config)
-{
+MACHINE_CONFIG_START(primo_state::primob64)
primoa64(config);
- m_maincpu->set_addrmap(AS_IO, &primo_state::primob_port);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(primob_port)
MCFG_MACHINE_RESET_OVERRIDE(primo_state, primob)
-}
+MACHINE_CONFIG_END
-void primo_state::primoc64(machine_config &config)
-{
+MACHINE_CONFIG_START(primo_state::primoc64)
primoa64(config);
- m_maincpu->set_addrmap(AS_IO, &primo_state::primob_port);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(primob_port)
MCFG_MACHINE_RESET_OVERRIDE(primo_state, primob)
-}
+MACHINE_CONFIG_END
ROM_START( primoa32 )
ROM_REGION( 0x14000, "maincpu", ROMREGION_ERASEFF )
diff --git a/src/mame/drivers/pro80.cpp b/src/mame/drivers/pro80.cpp
index 8b15dee23d9..67643c7a06a 100644
--- a/src/mame/drivers/pro80.cpp
+++ b/src/mame/drivers/pro80.cpp
@@ -175,12 +175,11 @@ void pro80_state::machine_reset()
m_cass_in = 0;
}
-void pro80_state::pro80(machine_config &config)
-{
+MACHINE_CONFIG_START(pro80_state::pro80)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &pro80_state::pro80_mem);
- m_maincpu->set_addrmap(AS_IO, &pro80_state::pro80_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(4'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(pro80_mem)
+ MCFG_DEVICE_IO_MAP(pro80_io)
/* video hardware */
config.set_default_layout(layout_pro80);
@@ -190,10 +189,10 @@ void pro80_state::pro80(machine_config &config)
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05);
/* Devices */
- CASSETTE(config, m_cass);
+ MCFG_CASSETTE_ADD( "cassette" )
Z80PIO(config, "pio", XTAL(4'000'000) / 2);
- TIMER(config, "timer_p").configure_periodic(FUNC(pro80_state::timer_p), attotime::from_hz(40000)); // cass read
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_p", pro80_state, timer_p, attotime::from_hz(40000)) // cass read
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( pro80 )
diff --git a/src/mame/drivers/proconn.cpp b/src/mame/drivers/proconn.cpp
index 949c1cc24f4..72b46428cdc 100644
--- a/src/mame/drivers/proconn.cpp
+++ b/src/mame/drivers/proconn.cpp
@@ -59,7 +59,7 @@ public:
void init_proconn();
private:
- template <unsigned N> DECLARE_WRITE8_MEMBER( ay_w ) { m_ay->address_data_w(N, data); }
+ template <unsigned N> DECLARE_WRITE8_MEMBER( ay_w ) { m_ay->address_data_w(space, N, data); }
template <unsigned N> DECLARE_WRITE8_MEMBER( ctc_w ) { m_z80ctc->write(space, N, data); }
@@ -71,6 +71,8 @@ private:
template <unsigned N> DECLARE_WRITE8_MEMBER( pio4_w ) { m_z80pio[3]->write(space, N, data); }
template <unsigned N> DECLARE_WRITE8_MEMBER( pio5_w ) { m_z80pio[4]->write(space, N, data); }
+ template <unsigned N> DECLARE_READ8_MEMBER( ay_r ) { return m_ay->data_r(space, N); }
+
template <unsigned N> DECLARE_READ8_MEMBER( ctc_r ) { return m_z80ctc->read(space, N); }
template <unsigned N> DECLARE_READ8_MEMBER( sio_r ) { return m_z80sio->cd_ba_r(space, N); }
@@ -174,7 +176,7 @@ void proconn_state::proconn_portmap(address_map &map)
map(0x03fe, 0x03fe).rw(FUNC(proconn_state::ctc_r<3>), FUNC(proconn_state::ctc_w<3>));
// ay (meters connected to it?)
- map(0x00fd, 0x00fd).r(m_ay, FUNC(ay8910_device::data_r)).w(FUNC(proconn_state::ay_w<0>));
+ map(0x00fd, 0x00fd).rw(FUNC(proconn_state::ay_r<0>), FUNC(proconn_state::ay_w<0>));
map(0x00fc, 0x00fc).w(FUNC(proconn_state::ay_w<1>));
// ??
@@ -333,7 +335,7 @@ void proconn_state::proconn(machine_config &config)
m_ay->add_route(ALL_OUTPUTS, "rspeaker", 0.33);
METERS(config, m_meters, 0);
- m_meters->set_number(8);
+ m_meters->set_number_meters(8);
}
diff --git a/src/mame/drivers/prof180x.cpp b/src/mame/drivers/prof180x.cpp
index 6deb8e8301e..5c50a37cf6c 100644
--- a/src/mame/drivers/prof180x.cpp
+++ b/src/mame/drivers/prof180x.cpp
@@ -196,7 +196,7 @@ void prof180x_state::prof180x_io(address_map &map)
{
map(0x08, 0x08).mirror(0xff00).w(FUNC(prof180x_state::flr_w));
map(0x09, 0x09).select(0xff00).r(FUNC(prof180x_state::status_r));
- map(0x0a, 0x0a).mirror(0xff00).rw(FDC9268_TAG, FUNC(upd765a_device::dma_r), FUNC(upd765a_device::dma_w));
+ map(0x0a, 0x0a).mirror(0xff00).rw(FDC9268_TAG, FUNC(upd765a_device::mdma_r), FUNC(upd765a_device::mdma_w));
map(0x0b, 0x0b).mirror(0xff00).w("cent_data_out", FUNC(output_latch_device::bus_w));
map(0x0c, 0x0d).mirror(0xff00).m(FDC9268_TAG, FUNC(upd765a_device::map));
}
@@ -238,41 +238,38 @@ void prof180x_state::machine_reset()
}
}
-void prof180x_state::prof180x(machine_config &config)
-{
+MACHINE_CONFIG_START(prof180x_state::prof180x)
/* basic machine hardware */
- z80_device &maincpu(Z80(config, HD64180_TAG, XTAL(9'216'000)));
- maincpu.set_addrmap(AS_PROGRAM, &prof180x_state::prof180x_mem);
- maincpu.set_addrmap(AS_IO, &prof180x_state::prof180x_io);
+ MCFG_DEVICE_ADD(HD64180_TAG, Z80, XTAL(9'216'000))
+ MCFG_DEVICE_PROGRAM_MAP(prof180x_mem)
+ MCFG_DEVICE_IO_MAP(prof180x_io)
/* video hardware */
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(prof180x_state::screen_update));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(prof180x_state, screen_update)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
/* devices */
UPD765A(config, FDC9268_TAG, 8'000'000, false, true);
- FLOPPY_CONNECTOR(config, FDC9268_TAG ":0", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, FDC9268_TAG ":1", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, FDC9268_TAG ":2", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, FDC9268_TAG ":3", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats);
-
- //RTC8583(config, MK3835_TAG, rtc_intf);
+ MCFG_FLOPPY_DRIVE_ADD(FDC9268_TAG ":0", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC9268_TAG ":1", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC9268_TAG ":2", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC9268_TAG ":3", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats)
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
+ //MCFG_RTC8583_ADD(MK3835_TAG, rtc_intf)
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
- output_latch_device &latch(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(latch);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("128K").set_extra_options("256K,512K");
/* software lists */
- SOFTWARE_LIST(config, "flop_list").set_original("prof180");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "prof180")
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/prof80.cpp b/src/mame/drivers/prof80.cpp
index 21426bd4a5e..32c63660a2f 100644
--- a/src/mame/drivers/prof80.cpp
+++ b/src/mame/drivers/prof80.cpp
@@ -447,15 +447,14 @@ void prof80_state::machine_start()
//**************************************************************************
//-------------------------------------------------
-// machine_config( prof80 )
+// MACHINE_CONFIG( prof80 )
//-------------------------------------------------
-void prof80_state::prof80(machine_config &config)
-{
+MACHINE_CONFIG_START(prof80_state::prof80)
// basic machine hardware
- Z80(config, m_maincpu, XTAL(6'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &prof80_state::prof80_mem);
- m_maincpu->set_addrmap(AS_IO, &prof80_state::prof80_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(6'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(prof80_mem)
+ MCFG_DEVICE_IO_MAP(prof80_io)
// MMU
PROF80_MMU(config, m_mmu, 0);
@@ -466,10 +465,10 @@ void prof80_state::prof80(machine_config &config)
// FDC
UPD765A(config, m_fdc, 8'000'000, true, true);
- FLOPPY_CONNECTOR(config, UPD765_TAG ":0", prof80_floppies, "525qd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, UPD765_TAG ":1", prof80_floppies, "525qd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, UPD765_TAG ":2", prof80_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, UPD765_TAG ":3", prof80_floppies, nullptr, floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", prof80_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", prof80_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":2", prof80_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":3", prof80_floppies, nullptr, floppy_image_device::default_floppy_formats)
// DEMUX latches
LS259(config, m_flra);
@@ -493,12 +492,12 @@ void prof80_state::prof80(machine_config &config)
m_flrb->q_out_cb<7>().set(m_mmu, FUNC(prof80_mmu_device::mme_w)); // MME
// ECB bus
- ECBBUS(config, m_ecb);
- ECBBUS_SLOT(config, "ecb_1", 1, ecbbus_cards, "grip21");
- ECBBUS_SLOT(config, "ecb_2", 2, ecbbus_cards, nullptr);
- ECBBUS_SLOT(config, "ecb_3", 3, ecbbus_cards, nullptr);
- ECBBUS_SLOT(config, "ecb_4", 4, ecbbus_cards, nullptr);
- ECBBUS_SLOT(config, "ecb_5", 5, ecbbus_cards, nullptr);
+ MCFG_ECBBUS_ADD()
+ MCFG_ECBBUS_SLOT_ADD(1, "ecb_1", ecbbus_cards, "grip21")
+ MCFG_ECBBUS_SLOT_ADD(2, "ecb_2", ecbbus_cards, nullptr)
+ MCFG_ECBBUS_SLOT_ADD(3, "ecb_3", ecbbus_cards, nullptr)
+ MCFG_ECBBUS_SLOT_ADD(4, "ecb_4", ecbbus_cards, nullptr)
+ MCFG_ECBBUS_SLOT_ADD(5, "ecb_5", ecbbus_cards, nullptr)
// V24
RS232_PORT(config, m_rs232a, default_rs232_devices, nullptr);
@@ -508,8 +507,8 @@ void prof80_state::prof80(machine_config &config)
RAM(config, RAM_TAG).set_default_size("128K");
// software lists
- SOFTWARE_LIST(config, "flop_list").set_original("prof80");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "prof80")
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/progolf.cpp b/src/mame/drivers/progolf.cpp
index b40a1b5018e..e84624d7d4f 100644
--- a/src/mame/drivers/progolf.cpp
+++ b/src/mame/drivers/progolf.cpp
@@ -418,31 +418,30 @@ void progolf_state::progolf_palette(palette_device &palette) const
}
}
-void progolf_state::progolf(machine_config &config)
-{
+MACHINE_CONFIG_START(progolf_state::progolf)
/* basic machine hardware */
- DECO_222(config, m_maincpu, 3000000/2); /* guess, 3 Mhz makes the game to behave worse? */
- m_maincpu->set_addrmap(AS_PROGRAM, &progolf_state::main_cpu);
+ MCFG_DEVICE_ADD("maincpu", DECO_222, 3000000/2) /* guess, 3 Mhz makes the game to behave worse? */
+ MCFG_DEVICE_PROGRAM_MAP(main_cpu)
- M6502(config, m_audiocpu, 500000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &progolf_state::sound_cpu);
+ MCFG_DEVICE_ADD("audiocpu", M6502, 500000)
+ MCFG_DEVICE_PROGRAM_MAP(sound_cpu)
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
generic_latch_8_device &soundlatch(GENERIC_LATCH_8(config, "soundlatch"));
soundlatch.data_pending_callback().set_inputline(m_audiocpu, 0);
soundlatch.set_separate_acknowledge(true);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(3072));
- screen.set_size(256, 256);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(progolf_state::screen_update));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_progolf);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3072))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(progolf_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_progolf)
PALETTE(config, m_palette, FUNC(progolf_state::progolf_palette), 32 * 3);
mc6845_device &crtc(MC6845(config, "crtc", 3000000/4)); /* hand tuned to get ~57 fps */
@@ -456,15 +455,14 @@ void progolf_state::progolf(machine_config &config)
AY8910(config, "ay1", 12000000/8).add_route(ALL_OUTPUTS, "mono", 0.23);
AY8910(config, "ay2", 12000000/8).add_route(ALL_OUTPUTS, "mono", 0.23);
-}
+MACHINE_CONFIG_END
-void progolf_state::progolfa(machine_config &config)
-{
+MACHINE_CONFIG_START(progolf_state::progolfa)
progolf(config);
- /* different encrypted cpu to progolf */
- DECO_CPU6(config.replace(), m_maincpu, 3000000/2); /* guess, 3 Mhz makes the game to behave worse? */
- m_maincpu->set_addrmap(AS_PROGRAM, &progolf_state::main_cpu);
-}
+ MCFG_DEVICE_REMOVE("maincpu") /* different encrypted cpu to progolf */
+ MCFG_DEVICE_ADD("maincpu", DECO_CPU6, 3000000/2) /* guess, 3 Mhz makes the game to behave worse? */
+ MCFG_DEVICE_PROGRAM_MAP(main_cpu)
+MACHINE_CONFIG_END
ROM_START( progolf )
diff --git a/src/mame/drivers/prophet600.cpp b/src/mame/drivers/prophet600.cpp
index ff4c48f87ba..d4b8201f856 100644
--- a/src/mame/drivers/prophet600.cpp
+++ b/src/mame/drivers/prophet600.cpp
@@ -271,11 +271,10 @@ void prophet600_state::machine_start()
}
// master crystal is 8 MHz, all clocks derived from there
-void prophet600_state::prophet600(machine_config &config)
-{
- Z80(config, m_maincpu, XTAL(8'000'000)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &prophet600_state::cpu_map);
- m_maincpu->set_addrmap(AS_IO, &prophet600_state::io_map);
+MACHINE_CONFIG_START(prophet600_state::prophet600)
+ MCFG_DEVICE_ADD(MAINCPU_TAG, Z80, XTAL(8'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(cpu_map)
+ MCFG_DEVICE_IO_MAP(io_map)
config.set_default_layout(layout_prophet600);
@@ -290,13 +289,15 @@ void prophet600_state::prophet600(machine_config &config)
m_acia->txd_handler().set("mdout", FUNC(midi_port_device::write_txd));
m_acia->irq_handler().set(FUNC(prophet600_state::acia_irq_w));
- MIDI_PORT(config, "mdin", midiin_slot, "midiin").rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd));
+ MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
+ MCFG_MIDI_RX_HANDLER(WRITELINE(UART_TAG, acia6850_device, write_rxd))
- MIDI_PORT(config, "mdout", midiout_slot, "midiout");
+ MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout")
- clock_device &acia_clock(CLOCK(config, "acia_clock", XTAL(8'000'000)/16)); // 500kHz = 16 times the MIDI rate
- acia_clock.signal_handler().set(FUNC(prophet600_state::acia_clock_w));
-}
+ MCFG_DEVICE_ADD("acia_clock", CLOCK, XTAL(8'000'000)/16) // 500kHz = 16 times the MIDI rate
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, prophet600_state, acia_clock_w))
+
+MACHINE_CONFIG_END
static INPUT_PORTS_START( prophet600 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/proteus.cpp b/src/mame/drivers/proteus.cpp
index fbdd9ecf67c..17d6ef67eff 100644
--- a/src/mame/drivers/proteus.cpp
+++ b/src/mame/drivers/proteus.cpp
@@ -162,12 +162,12 @@ WRITE_LINE_MEMBER(proteus_state::ptm_o3_callback)
READ8_MEMBER(proteus_state::network_r)
{
- return m_adlc->read(offset >> 1);
+ return m_adlc->read(space, offset >> 1);
}
WRITE8_MEMBER(proteus_state::network_w)
{
- m_adlc->write(offset >> 1, data);
+ m_adlc->write(space, offset >> 1, data);
}
@@ -321,15 +321,14 @@ static void proteus_floppies(device_slot_interface &device)
}
-void proteus_state::proteus(machine_config &config)
-{
+MACHINE_CONFIG_START(proteus_state::proteus)
/* basic machine hardware */
- MC6809(config, m_maincpu, 4_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &proteus_state::proteus_6809_mem);
+ MCFG_DEVICE_ADD("maincpu", MC6809, 4_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(proteus_6809_mem)
- Z80(config, m_z80, 4_MHz_XTAL);
- m_z80->set_addrmap(AS_PROGRAM, &proteus_state::proteus_z80_mem);
- m_z80->set_addrmap(AS_IO, &proteus_state::proteus_z80_io);
+ MCFG_DEVICE_ADD("z80", Z80, 4_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(proteus_z80_mem)
+ MCFG_DEVICE_IO_MAP(proteus_z80_io)
INPUT_MERGER_ANY_HIGH(config, m_irqs);
m_irqs->output_handler().set_inputline(m_maincpu, M6809_IRQ_LINE);
@@ -340,8 +339,10 @@ void proteus_state::proteus(machine_config &config)
m_fdc->hld_wr_callback().set(FUNC(proteus_state::motor_w));
m_fdc->set_force_ready(true);
- FLOPPY_CONNECTOR(config, "fdc:0", proteus_floppies, "8dssd", proteus_state::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", proteus_floppies, "8dssd", proteus_state::floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", proteus_floppies, "8dssd", proteus_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", proteus_floppies, "8dssd", proteus_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
/* ram */
RAM(config, RAM_TAG).set_default_size("64K");
@@ -365,10 +366,9 @@ void proteus_state::proteus(machine_config &config)
m_pia->irqa_handler().set("irqs", FUNC(input_merger_device::in_w<2>));
m_pia->irqb_handler().set("irqs", FUNC(input_merger_device::in_w<3>));
- centronics_device &parallel(CENTRONICS(config, "parallel", centronics_devices, "printer"));
- parallel.ack_handler().set(m_pia, FUNC(pia6821_device::ca1_w));
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- parallel.set_output_latch(cent_data_out);
+ MCFG_DEVICE_ADD("parallel", CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE("pia", pia6821_device, ca1_w))
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "parallel")
/* terminal port */
ACIA6850(config, m_acia[0], 0);
@@ -413,8 +413,9 @@ void proteus_state::proteus(machine_config &config)
acia2_clock.signal_handler().append(m_acia[2], FUNC(acia6850_device::write_rxc));
/* software lists */
- SOFTWARE_LIST(config, "flop_list").set_original("poly_flop").set_filter("PROTEUS");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "poly_flop")
+ MCFG_SOFTWARE_LIST_FILTER("flop_list", "PROTEUS")
+MACHINE_CONFIG_END
ROM_START(proteus)
diff --git a/src/mame/drivers/proteus3.cpp b/src/mame/drivers/proteus3.cpp
index c18892408bf..f6d8a4bb0af 100644
--- a/src/mame/drivers/proteus3.cpp
+++ b/src/mame/drivers/proteus3.cpp
@@ -380,21 +380,20 @@ void proteus3_state::machine_reset()
Machine Drivers
******************************************************************************/
-void proteus3_state::proteus3(machine_config &config)
-{
+MACHINE_CONFIG_START(proteus3_state::proteus3)
/* basic machine hardware */
- M6800(config, m_maincpu, XTAL(3'579'545)); /* Divided by 4 internally */
- m_maincpu->set_addrmap(AS_PROGRAM, &proteus3_state::proteus3_mem);
+ MCFG_DEVICE_ADD("maincpu", M6800, XTAL(3'579'545)) /* Divided by 4 internally */
+ MCFG_DEVICE_PROGRAM_MAP(proteus3_mem)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(200));
- screen.set_size(64*8, 16*12);
- screen.set_visarea(0, 64*8-1, 0, 16*12-1);
- screen.set_screen_update(FUNC(proteus3_state::screen_update_proteus3));
- screen.set_palette("palette");
- GFXDECODE(config, "gfxdecode", "palette", gfx_proteus3);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(200))
+ MCFG_SCREEN_SIZE(64*8, 16*12)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 16*12-1)
+ MCFG_SCREEN_UPDATE_DRIVER(proteus3_state, screen_update_proteus3)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_proteus3)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* Devices */
@@ -410,12 +409,12 @@ void proteus3_state::proteus3(machine_config &config)
ACIA6850(config, m_acia1, 0);
m_acia1->txd_handler().set(FUNC(proteus3_state::acia1_txdata_w));
- CASSETTE(config, m_cass);
- m_cass->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.25);
- TIMER(config, "timer_c").configure_periodic(FUNC(proteus3_state::timer_c), attotime::from_hz(4800));
- TIMER(config, "timer_p").configure_periodic(FUNC(proteus3_state::timer_p), attotime::from_hz(40000));
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_c", proteus3_state, timer_c, attotime::from_hz(4800))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_p", proteus3_state, timer_p, attotime::from_hz(40000))
// optional tty keyboard
ACIA6850(config, m_acia2, 0);
@@ -443,7 +442,7 @@ void proteus3_state::proteus3(machine_config &config)
m_brg->out_f<13>().set(FUNC(proteus3_state::write_f13_clock));
m_brg->out_f<14>().set(FUNC(proteus3_state::write_f14_clock));
m_brg->out_f<15>().set(FUNC(proteus3_state::write_f15_clock));
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pse.cpp b/src/mame/drivers/pse.cpp
index 7dfb6a595b2..f4d72e12467 100644
--- a/src/mame/drivers/pse.cpp
+++ b/src/mame/drivers/pse.cpp
@@ -99,21 +99,20 @@ void pse_state::video_start()
{
}
-void pse_state::pse(machine_config &config)
-{
+MACHINE_CONFIG_START(pse_state::pse)
+
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_pse);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(pse)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL);
- m_video->set_vert_params(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.30);
-}
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/psikyo.cpp b/src/mame/drivers/psikyo.cpp
index ca2e2365af8..5492b3ce37c 100644
--- a/src/mame/drivers/psikyo.cpp
+++ b/src/mame/drivers/psikyo.cpp
@@ -97,7 +97,7 @@ CUSTOM_INPUT_MEMBER(psikyo_state::mcu_status_r)
01A550: andi.b #$4, D0
01A554: bne $1a54e
- Interestingly, s1945nj has the code that spins on this bit,
+ Interestingly, s1945jn has the code that spins on this bit,
but said code is never reached. Prototype? */
if (m_mcu_status)
ret = 0x01;
@@ -107,19 +107,19 @@ CUSTOM_INPUT_MEMBER(psikyo_state::mcu_status_r)
return ret;
}
-static const u8 s1945_table[256] = {
+static const uint8_t s1945_table[256] = {
0x00, 0x00, 0x64, 0xae, 0x00, 0x00, 0x26, 0x2c, 0x00, 0x00, 0x2c, 0xda, 0x00, 0x00, 0x2c, 0xbc,
0x00, 0x00, 0x2c, 0x9e, 0x00, 0x00, 0x2f, 0x0e, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0xc5, 0x1e,
0x00, 0x00, 0x32, 0x90, 0x00, 0x00, 0xac, 0x5c, 0x00, 0x00, 0x2b, 0xc0
};
-static const u8 s1945a_table[256] = {
+static const uint8_t s1945a_table[256] = {
0x00, 0x00, 0x64, 0xbe, 0x00, 0x00, 0x26, 0x2c, 0x00, 0x00, 0x2c, 0xda, 0x00, 0x00, 0x2c, 0xbc,
0x00, 0x00, 0x2c, 0x9e, 0x00, 0x00, 0x2f, 0x0e, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0xc7, 0x2a,
0x00, 0x00, 0x32, 0x90, 0x00, 0x00, 0xad, 0x4c, 0x00, 0x00, 0x2b, 0xc0
};
-static const u8 s1945j_table[256] = {
+static const uint8_t s1945j_table[256] = {
0x00, 0x00, 0x64, 0xb6, 0x00, 0x00, 0x26, 0x2c, 0x00, 0x00, 0x2c, 0xda, 0x00, 0x00, 0x2c, 0xbc,
0x00, 0x00, 0x2c, 0x9e, 0x00, 0x00, 0x2f, 0x0e, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0xc5, 0x92,
0x00, 0x00, 0x32, 0x90, 0x00, 0x00, 0xac, 0x64, 0x00, 0x00, 0x2b, 0xc0
@@ -148,8 +148,8 @@ WRITE32_MEMBER(psikyo_state::s1945_mcu_w)
m_s1945_mcu_direction = data;
break;
case 0x07:
- switch_bgbanks(1, (data >> 6) & 3);
- switch_bgbanks(0, (data >> 4) & 3);
+ psikyo_switch_banks(1, (data >> 6) & 3);
+ psikyo_switch_banks(0, (data >> 4) & 3);
m_s1945_mcu_bctrl = data;
break;
case 0x0b:
@@ -201,7 +201,7 @@ READ32_MEMBER(psikyo_state::s1945_mcu_r)
{
case 0:
{
- u32 res;
+ uint32_t res;
if (m_s1945_mcu_control & 16)
{
res = m_s1945_mcu_latching & 4 ? 0x0000ff00 : m_s1945_mcu_latch1 << 8;
@@ -250,16 +250,16 @@ WRITE32_MEMBER(psikyo_state::vram_w)
void psikyo_state::psikyo_map(address_map &map)
{
- map(0x000000, 0x0fffff).rom(); // ROM (not all used)
+ map(0x000000, 0x0fffff).rom(); // ROM (not all used)
map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites, buffered by two frames (list buffered + fb buffered)
map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // Palette
- map(0x800000, 0x801fff).ram().w(FUNC(psikyo_state::vram_w<0>)).share("vram_0"); // Layer 0
- map(0x802000, 0x803fff).ram().w(FUNC(psikyo_state::vram_w<1>)).share("vram_1"); // Layer 1
- map(0x804000, 0x807fff).ram().share("vregs"); // RAM + Vregs
-// map(0xc00000, 0xc0000b).r(FUNC(psikyo_state::input_r)); // Depends on board
-// map(0xc00004, 0xc0000b).w(FUNC(psikyo_state::s1945_mcu_w)); // MCU on sh404
-// map(0xc00010, 0xc00013).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // Depends on board
- map(0xfe0000, 0xffffff).ram(); // RAM
+ map(0x800000, 0x801fff).ram().w(FUNC(psikyo_state::vram_w<0>)).share("vram_0"); // Layer 0
+ map(0x802000, 0x803fff).ram().w(FUNC(psikyo_state::vram_w<1>)).share("vram_1"); // Layer 1
+ map(0x804000, 0x807fff).ram().share("vregs"); // RAM + Vregs
+// AM_RANGE(0xc00000, 0xc0000b) AM_READ(psikyo_input_r) // Depends on board
+// AM_RANGE(0xc00004, 0xc0000b) AM_WRITE(s1945_mcu_w) // MCU on sh404
+// AM_RANGE(0xc00010, 0xc00013) AM_WRITE(psikyo_soundlatch_w) // Depends on board
+ map(0xfe0000, 0xffffff).ram(); // RAM
}
template<int Shift>
@@ -268,11 +268,32 @@ WRITE8_MEMBER(psikyo_state::sound_bankswitch_w)
m_audiobank->set_entry((data >> Shift) & 0x03);
}
-WRITE8_MEMBER(psikyo_state::s1945bl_okibank_w)
+READ32_MEMBER(psikyo_state::s1945bl_oki_r)
{
- // not at all sure about this, it seems to write 0 too often
- if (data < 5)
- m_okibank->set_entry(data);
+ uint8_t dat = m_oki->read(space, 0);
+ return dat << 24;
+}
+
+WRITE32_MEMBER(psikyo_state::s1945bl_oki_w)
+{
+ if (ACCESSING_BITS_24_31)
+ {
+ m_oki->write(space, 0, data >> 24);
+ }
+
+ if (ACCESSING_BITS_16_23)
+ {
+ // not at all sure about this, it seems to write 0 too often
+ uint8_t bank = (data & 0x00ff0000) >> 16;
+ if (bank < 4)
+ m_okibank->set_entry(bank);
+ }
+
+ if (ACCESSING_BITS_8_15)
+ printf("ACCESSING_BITS_8_15 ?? %08x %08x\n", data & 0x0000ff00, mem_mask);
+
+ if (ACCESSING_BITS_0_7)
+ printf("ACCESSING_BITS_0_7 ?? %08x %08x\n", data & 0x000000ff, mem_mask);
}
void psikyo_state::s1945bl_oki_map(address_map &map)
@@ -283,20 +304,19 @@ void psikyo_state::s1945bl_oki_map(address_map &map)
void psikyo_state::psikyo_bootleg_map(address_map &map)
{
- map(0x000000, 0x0fffff).rom(); // ROM (not all used)
+ map(0x000000, 0x0fffff).rom(); // ROM (not all used)
map(0x200000, 0x200fff).ram().share("boot_spritebuf"); // RAM (it copies the spritelist here, the HW probably doesn't have automatic buffering like the originals?
map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites, buffered by two frames (list buffered + fb buffered)
map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // Palette
- map(0x800000, 0x801fff).ram().w(FUNC(psikyo_state::vram_w<0>)).share("vram_0"); // Layer 0
- map(0x802000, 0x803fff).ram().w(FUNC(psikyo_state::vram_w<1>)).share("vram_1"); // Layer 1
- map(0x804000, 0x807fff).ram().share("vregs"); // RAM + Vregs
- map(0xc00000, 0xc0000b).r(FUNC(psikyo_state::gunbird_input_r)); // input ports
+ map(0x800000, 0x801fff).ram().w(FUNC(psikyo_state::vram_w<0>)).share("vram_0"); // Layer 0
+ map(0x802000, 0x803fff).ram().w(FUNC(psikyo_state::vram_w<1>)).share("vram_1"); // Layer 1
+ map(0x804000, 0x807fff).ram().share("vregs"); // RAM + Vregs
+ map(0xc00000, 0xc0000b).r(FUNC(psikyo_state::gunbird_input_r)); // input ports
- map(0xc00018, 0xc00018).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- map(0xc00019, 0xc00019).w(FUNC(psikyo_state::s1945bl_okibank_w));
+ map(0xc00018, 0xc0001b).rw(FUNC(psikyo_state::s1945bl_oki_r), FUNC(psikyo_state::s1945bl_oki_w));
- map(0xfe0000, 0xffffff).ram(); // RAM
+ map(0xfe0000, 0xffffff).ram(); // RAM
}
@@ -362,7 +382,7 @@ void psikyo_state::gunbird_map(address_map &map)
map(0xc00013, 0xc00013).w(m_soundlatch, FUNC(generic_latch_8_device::write));
}
-void psikyo_state::s1945n_map(address_map &map)
+void psikyo_state::s1945jn_map(address_map &map)
{
psikyo_map(map);
map(0xc00000, 0xc0000b).r(FUNC(psikyo_state::gunbird_input_r));
@@ -686,31 +706,6 @@ static INPUT_PORTS_START( btlkroad )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
INPUT_PORTS_END
-static INPUT_PORTS_START( btlkroadk )
- PORT_INCLUDE( btlkroad )
-
- PORT_MODIFY("DSW") /* c00004 -> c00007 */
- /***********************************************
-
- Bit 0 1 2 3
- 1 1 1 1 Japan
-
- 0 1 1 1 USA & Canada
- 0 0 1 1 Korea
- 0 1 0 1 Hong Kong
- 0 1 1 0 Taiwan
- Other World
-
- ************************************************/
- PORT_CONFNAME( 0x0000000f, 0x0000000c, DEF_STR( Region ) ) // Game code supports multi-region, but set default to Korea
- PORT_CONFSETTING( 0x0000000f, DEF_STR( Japan ) )
- PORT_CONFSETTING( 0x0000000e, "USA & Canada (Jaleco license)" )
- PORT_CONFSETTING( 0x0000000c, DEF_STR( Korea ) )
- PORT_CONFSETTING( 0x0000000a, DEF_STR( Hong_Kong ) )
- PORT_CONFSETTING( 0x00000006, DEF_STR( Taiwan ) )
- PORT_CONFSETTING( 0x00000000, DEF_STR( World ) )
-INPUT_PORTS_END
-
/***************************************************************************
Gun Bird
@@ -1045,14 +1040,13 @@ void psikyo_state::sngkace(machine_config &config)
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ // we're using PORT_VBLANK
m_screen->set_size(320, 256);
m_screen->set_visarea(0, 320-1, 0, 256-32-1);
- m_screen->set_screen_update(FUNC(psikyo_state::screen_update));
- m_screen->screen_vblank().set(FUNC(psikyo_state::screen_vblank));
+ m_screen->set_screen_update(FUNC(psikyo_state::screen_update_psikyo));
+ m_screen->screen_vblank().set(FUNC(psikyo_state::screen_vblank_psikyo));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_psikyo);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1000);
- BUFFERED_SPRITERAM32(config, m_spriteram);
MCFG_VIDEO_START_OVERRIDE(psikyo_state,sngkace)
/* sound hardware */
@@ -1091,14 +1085,13 @@ void psikyo_state::gunbird(machine_config &config)
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ // we're using PORT_VBLANK
m_screen->set_size(320, 256);
m_screen->set_visarea(0, 320-1, 0, 256-32-1);
- m_screen->set_screen_update(FUNC(psikyo_state::screen_update));
- m_screen->screen_vblank().set(FUNC(psikyo_state::screen_vblank));
+ m_screen->set_screen_update(FUNC(psikyo_state::screen_update_psikyo));
+ m_screen->screen_vblank().set(FUNC(psikyo_state::screen_vblank_psikyo));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_psikyo);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1000);
- BUFFERED_SPRITERAM32(config, m_spriteram);
MCFG_VIDEO_START_OVERRIDE(psikyo_state,psikyo)
/* sound hardware */
@@ -1113,10 +1106,10 @@ void psikyo_state::gunbird(machine_config &config)
m_soundlatch->set_separate_acknowledge(true);
}
-void psikyo_state::s1945n(machine_config &config)
+void psikyo_state::s1945jn(machine_config &config)
{
gunbird(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &psikyo_state::s1945n_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &psikyo_state::s1945jn_map);
}
void psikyo_state::s1945bl(machine_config &config) /* Bootleg hardware based on the unprotected Japanese Strikers 1945 set */
@@ -1132,14 +1125,13 @@ void psikyo_state::s1945bl(machine_config &config) /* Bootleg hardware based on
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ // we're using PORT_VBLANK
m_screen->set_size(320, 256);
m_screen->set_visarea(0, 320-1, 0, 256-32-1);
- m_screen->set_screen_update(FUNC(psikyo_state::screen_update_bootleg));
- m_screen->screen_vblank().set(FUNC(psikyo_state::screen_vblank_bootleg));
+ m_screen->set_screen_update(FUNC(psikyo_state::screen_update_psikyo_bootleg));
+ m_screen->screen_vblank().set(FUNC(psikyo_state::screen_vblank_psikyo));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_psikyo);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1000);
- BUFFERED_SPRITERAM32(config, m_spriteram);
MCFG_VIDEO_START_OVERRIDE(psikyo_state,psikyo)
/* sound hardware */
@@ -1175,14 +1167,13 @@ void psikyo_state::s1945(machine_config &config)
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ // we're using PORT_VBLANK
m_screen->set_size(320, 256);
m_screen->set_visarea(0, 320-1, 0, 256-32-1);
- m_screen->set_screen_update(FUNC(psikyo_state::screen_update));
- m_screen->screen_vblank().set(FUNC(psikyo_state::screen_vblank));
+ m_screen->set_screen_update(FUNC(psikyo_state::screen_update_psikyo));
+ m_screen->screen_vblank().set(FUNC(psikyo_state::screen_vblank_psikyo));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_psikyo);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1000);
- BUFFERED_SPRITERAM32(config, m_spriteram);
MCFG_VIDEO_START_OVERRIDE(psikyo_state,psikyo)
/* sound hardware */
@@ -1430,7 +1421,7 @@ ROM_END
ROM_START( btlkroadk )
ROM_REGION( 0x100000, "maincpu", 0 ) /* Main CPU Code */
ROM_LOAD32_WORD_SWAP( "4,dot.u46", 0x000000, 0x040000, CRC(e724d429) SHA1(8b5f80366fd22d6f7e7d8a9623de4fe231303267) ) // 1&0
- ROM_LOAD32_WORD_SWAP( "5,dot.u39", 0x000002, 0x040000, CRC(c0d65765) SHA1(a6a26e6b9693a2ef245e9aaa4c9daa888aebb360) ) // 3&2
+ ROM_LOAD32_WORD_SWAP( "5,dot.u39", 0x000002, 0x040000, CRC(c0d65765) SHA1(a6a26e6b9693a2ef245e9aaa4c9daa888aebb360)) // 3&2
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU Code */
ROM_LOAD( "3,k.u71", 0x00000, 0x20000, CRC(e0f0c597) SHA1(cc337633f1f579baf0f8ba1dd65c5d51122a7e97) )
@@ -1501,7 +1492,7 @@ ROM_START( s1945n )
ROM_LOAD( "u1.bin", 0x000000, 0x040000, CRC(dee22654) SHA1(5df05b0029ff7b1f7f04b41da7823d2aa8034bd2) )
ROM_END
-ROM_START( s1945nj )
+ROM_START( s1945jn )
ROM_REGION( 0x100000, "maincpu", 0 ) /* Main CPU Code */
ROM_LOAD32_WORD_SWAP( "1-u46.bin", 0x000000, 0x040000, CRC(95028132) SHA1(6ed8e53efb0511dca37c35a7da17217f5aa83734) ) // 1&0
ROM_LOAD32_WORD_SWAP( "2-u39.bin", 0x000002, 0x040000, CRC(3df79a16) SHA1(6184f27579d846a40313fd11b57c46ac0d02fc76) ) // 3&2
@@ -1528,7 +1519,8 @@ ROM_START( s1945nj )
ROM_LOAD( "u1.bin", 0x000000, 0x040000, CRC(dee22654) SHA1(5df05b0029ff7b1f7f04b41da7823d2aa8034bd2) )
ROM_END
-ROM_START( s1945bl ) /* closely based on s1945nj set, unsurprising because it's unprotected */
+/* closely based on s1945jn set, unsurprising because it's unprotected */
+ROM_START( s1945bl )
ROM_REGION( 0x100000, "maincpu", 0 ) /* Main CPU Code */
ROM_LOAD32_BYTE( "27c010-1", 0x000000, 0x020000, CRC(d3361536) SHA1(430df1c98645603c17333222834d344efd4fb584) ) // 1-u46.bin [odd 1/2] 99.797821%
ROM_LOAD32_BYTE( "27c010-2", 0x000001, 0x020000, CRC(1d1916b1) SHA1(4e200454c16d0bd45c4146ee41902a811a55c008) ) // 1-u46.bin [even 1/2] 99.793243%
@@ -1547,9 +1539,8 @@ ROM_START( s1945bl ) /* closely based on s1945nj set, unsurprising because it's
ROM_LOAD( "rv27c040.m6", 0x000000, 0x080000, CRC(c22e5b65) SHA1(d807bd7c136d6b51f54258b44ebf3eecbd5b35fa) )
ROM_REGION( 0x040000, "spritelut", 0 ) /* */
- // in 27c010-a 0x460E:01 but should 0x00. Might be bit rot or error when bootleggers copied U1 as all other graphics data matches.
- ROM_LOAD16_BYTE( "27c010-b", 0x000000, 0x020000, CRC(e38d5ab7) SHA1(73a708ebc305cb6297efd3296da23c87898e805e) ) // u1.bin [even] IDENTICAL
- ROM_LOAD16_BYTE( "27c010-a", 0x000001, 0x020000, CRC(cb8c65ec) SHA1(a55c5c5067b50a1243e7ba60fa1f9569bfed5de8) ) // u1.bin [odd] 99.999237%
+ ROM_LOAD16_BYTE( "27c010-b", 0x000000, 0x020000, CRC(e38d5ab7) SHA1(73a708ebc305cb6297efd3296da23c87898e805e) ) // u1.bin [even] IDENTICAL
+ ROM_LOAD16_BYTE( "27c010-a", 0x000001, 0x020000, CRC(cb8c65ec) SHA1(a55c5c5067b50a1243e7ba60fa1f9569bfed5de8) ) // u1.bin [odd] 99.999237%
ROM_REGION( 0x080000, "unknown", 0 ) /* unknown - matches Semicom's Dream World */
ROM_LOAD( "27c512", 0x000000, 0x010000, CRC(0da8db45) SHA1(7d5bd71c5b0b28ff74c732edd7c662f46f2ab25b) )
@@ -1831,7 +1822,7 @@ ROM_END
void psikyo_state::init_sngkace()
{
{
- u8 *RAM = memregion("ymsnd")->base();
+ uint8_t *RAM = memregion("ymsnd")->base();
int len = memregion("ymsnd")->bytes();
/* Bit 6&7 of the samples are swapped. Naughty, naughty... */
@@ -1842,7 +1833,7 @@ void psikyo_state::init_sngkace()
}
}
- m_ka302c_banking = false; // SH201B doesn't have any gfx banking
+ m_ka302c_banking = 0; // SH201B doesn't have any gfx banking
/* setup audiocpu banks */
m_audiobank->configure_entries(0, 4, memregion("audiocpu")->base(), 0x8000);
@@ -1851,7 +1842,7 @@ void psikyo_state::init_sngkace()
#if 0
if (!strcmp(machine().system().name,"sngkace"))
{
- u8 *ROM = memregion("maincpu")->base();
+ uint8_t *ROM = memregion("maincpu")->base();
ROM[0x995] = 0x4e;
ROM[0x994] = 0x71;
ROM[0x997] = 0x4e;
@@ -1861,7 +1852,7 @@ void psikyo_state::init_sngkace()
#endif
}
-void psikyo_state::s1945_mcu_init()
+void psikyo_state::s1945_mcu_init( )
{
m_s1945_mcu_direction = 0x00;
m_s1945_mcu_inlatch = 0xff;
@@ -1889,7 +1880,7 @@ void psikyo_state::init_tengai()
s1945_mcu_init();
m_s1945_mcu_table = nullptr;
- m_ka302c_banking = false; // Banking is controlled by mcu
+ m_ka302c_banking = 0; // Banking is controlled by mcu
/* setup audiocpu banks */
/* The banked rom is seen at 8200-ffff, so the last 0x200 bytes of the rom not reachable. */
@@ -1898,7 +1889,7 @@ void psikyo_state::init_tengai()
void psikyo_state::init_gunbird()
{
- m_ka302c_banking = true;
+ m_ka302c_banking = 1;
/* setup audiocpu banks */
/* The banked rom is seen at 8200-ffff, so the last 0x200 bytes of the rom not reachable. */
@@ -1911,7 +1902,7 @@ void psikyo_state::init_s1945()
s1945_mcu_init();
m_s1945_mcu_table = s1945_table;
- m_ka302c_banking = false; // Banking is controlled by mcu
+ m_ka302c_banking = 0; // Banking is controlled by mcu
/* setup audiocpu banks */
/* The banked rom is seen at 8200-ffff, so the last 0x200 bytes of the rom not reachable. */
@@ -1923,7 +1914,7 @@ void psikyo_state::init_s1945a()
s1945_mcu_init();
m_s1945_mcu_table = s1945a_table;
- m_ka302c_banking = false; // Banking is controlled by mcu
+ m_ka302c_banking = 0; // Banking is controlled by mcu
/* setup audiocpu banks */
/* The banked rom is seen at 8200-ffff, so the last 0x200 bytes of the rom not reachable. */
@@ -1935,7 +1926,7 @@ void psikyo_state::init_s1945j()
s1945_mcu_init();
m_s1945_mcu_table = s1945j_table;
- m_ka302c_banking = false; // Banking is controlled by mcu
+ m_ka302c_banking = 0; // Banking is controlled by mcu
/* setup audiocpu banks */
/* The banked rom is seen at 8200-ffff, so the last 0x200 bytes of the rom not reachable. */
@@ -1944,9 +1935,9 @@ void psikyo_state::init_s1945j()
void psikyo_state::init_s1945bl()
{
- m_ka302c_banking = true;
+ m_ka302c_banking = 1;
- m_okibank->configure_entries(0, 5, memregion("oki")->base() + 0x30000, 0x10000);
+ m_okibank->configure_entries(0, 4, memregion("oki")->base() + 0x30000, 0x10000);
m_okibank->set_entry(0);
}
@@ -1959,24 +1950,24 @@ void psikyo_state::init_s1945bl()
***************************************************************************/
-GAME( 1993, samuraia, 0, sngkace, samuraia, psikyo_state, init_sngkace, ROT270, "Psikyo", "Samurai Aces (World)", MACHINE_SUPPORTS_SAVE ) // Banpresto?
-GAME( 1993, sngkace, samuraia, sngkace, sngkace, psikyo_state, init_sngkace, ROT270, "Psikyo", "Sengoku Ace (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) // Banpresto?
-GAME( 1993, sngkacea, samuraia, sngkace, sngkace, psikyo_state, init_sngkace, ROT270, "Psikyo", "Sengoku Ace (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) // Banpresto?
+GAME( 1993, samuraia, 0, sngkace, samuraia, psikyo_state, init_sngkace, ROT270, "Psikyo", "Samurai Aces (World)", MACHINE_SUPPORTS_SAVE ) // Banpresto?
+GAME( 1993, sngkace, samuraia, sngkace, sngkace, psikyo_state, init_sngkace, ROT270, "Psikyo", "Sengoku Ace (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) // Banpresto?
+GAME( 1993, sngkacea, samuraia, sngkace, sngkace, psikyo_state, init_sngkace, ROT270, "Psikyo", "Sengoku Ace (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) // Banpresto?
-GAME( 1994, gunbird, 0, gunbird, gunbird, psikyo_state, init_gunbird, ROT270, "Psikyo", "Gunbird (World)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, gunbirdk, gunbird, gunbird, gunbirdj, psikyo_state, init_gunbird, ROT270, "Psikyo", "Gunbird (Korea)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, gunbirdj, gunbird, gunbird, gunbirdj, psikyo_state, init_gunbird, ROT270, "Psikyo", "Gunbird (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, gunbird, 0, gunbird, gunbird, psikyo_state, init_gunbird, ROT270, "Psikyo", "Gunbird (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, gunbirdk, gunbird, gunbird, gunbirdj, psikyo_state, init_gunbird, ROT270, "Psikyo", "Gunbird (Korea)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, gunbirdj, gunbird, gunbird, gunbirdj, psikyo_state, init_gunbird, ROT270, "Psikyo", "Gunbird (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, btlkroad, 0, gunbird, btlkroad, psikyo_state, init_gunbird, ROT0, "Psikyo", "Battle K-Road", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, btlkroadk, btlkroad, gunbird, btlkroadk, psikyo_state, init_gunbird, ROT0, "Psikyo", "Battle K-Road (Korea)", MACHINE_SUPPORTS_SAVE ) // game code is still multi-region, but sound rom appears to be Korea specific at least
+GAME( 1994, btlkroad, 0, gunbird, btlkroad, psikyo_state, init_gunbird, ROT0, "Psikyo", "Battle K-Road", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, btlkroadk, btlkroad, gunbird, btlkroad, psikyo_state, init_gunbird, ROT0, "Psikyo", "Battle K-Road (Korean PCB)", MACHINE_SUPPORTS_SAVE ) // game code is still multi-region, but sound rom appears to be Korea specific at least
-GAME( 1995, s1945, 0, s1945, s1945, psikyo_state, init_s1945, ROT270, "Psikyo", "Strikers 1945 (World)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, s1945a, s1945, s1945, s1945a, psikyo_state, init_s1945a, ROT270, "Psikyo", "Strikers 1945 (Japan / World)", MACHINE_SUPPORTS_SAVE ) // Region dip - 0x0f=Japan, anything else=World
-GAME( 1995, s1945j, s1945, s1945, s1945j, psikyo_state, init_s1945j, ROT270, "Psikyo", "Strikers 1945 (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, s1945n, s1945, s1945n, s1945, psikyo_state, init_gunbird, ROT270, "Psikyo", "Strikers 1945 (World, unprotected)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, s1945nj, s1945, s1945n, s1945j, psikyo_state, init_gunbird, ROT270, "Psikyo", "Strikers 1945 (Japan, unprotected)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, s1945k, s1945, s1945, s1945j, psikyo_state, init_s1945, ROT270, "Psikyo", "Strikers 1945 (Korea)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, s1945bl, s1945, s1945bl, s1945bl, psikyo_state, init_s1945bl, ROT270, "bootleg", "Strikers 1945 (Hong Kong, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, s1945, 0, s1945, s1945, psikyo_state, init_s1945, ROT270, "Psikyo", "Strikers 1945 (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, s1945a, s1945, s1945, s1945a, psikyo_state, init_s1945a, ROT270, "Psikyo", "Strikers 1945 (Japan / World)", MACHINE_SUPPORTS_SAVE ) // Region dip - 0x0f=Japan, anything else=World
+GAME( 1995, s1945j, s1945, s1945, s1945j, psikyo_state, init_s1945j, ROT270, "Psikyo", "Strikers 1945 (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, s1945n, s1945, s1945jn, s1945, psikyo_state, init_gunbird, ROT270, "Psikyo", "Strikers 1945 (World, unprotected)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, s1945jn, s1945, s1945jn, s1945j, psikyo_state, init_gunbird, ROT270, "Psikyo", "Strikers 1945 (Japan, unprotected)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, s1945k, s1945, s1945, s1945j, psikyo_state, init_s1945, ROT270, "Psikyo", "Strikers 1945 (Korea)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, s1945bl, s1945, s1945bl, s1945bl, psikyo_state, init_s1945bl, ROT270, "bootleg", "Strikers 1945 (Hong Kong, bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, tengai, 0, s1945, tengai, psikyo_state, init_tengai, ROT0, "Psikyo", "Tengai (World)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, tengaij, tengai, s1945, tengaij, psikyo_state, init_tengai, ROT0, "Psikyo", "Sengoku Blade: Sengoku Ace Episode II / Tengai", MACHINE_SUPPORTS_SAVE ) // Region dip - 0x0f=Japan, anything else=World
+GAME( 1996, tengai, 0, s1945, tengai, psikyo_state, init_tengai, ROT0, "Psikyo", "Tengai (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, tengaij, tengai, s1945, tengaij, psikyo_state, init_tengai, ROT0, "Psikyo", "Sengoku Blade: Sengoku Ace Episode II / Tengai", MACHINE_SUPPORTS_SAVE ) // Region dip - 0x0f=Japan, anything else=World
diff --git a/src/mame/drivers/psion.cpp b/src/mame/drivers/psion.cpp
index ae92011d2a4..7396377a534 100644
--- a/src/mame/drivers/psion.cpp
+++ b/src/mame/drivers/psion.cpp
@@ -569,25 +569,24 @@ static GFXDECODE_START( gfx_psion )
GFXDECODE_END
/* basic configuration for 2 lines display */
-void psion_state::psion_2lines(machine_config &config)
-{
+MACHINE_CONFIG_START(psion_state::psion_2lines)
/* basic machine hardware */
- HD63701(config, m_maincpu, 980000); // should be HD6303 at 0.98MHz
+ MCFG_DEVICE_ADD("maincpu", HD63701, 980000) // should be HD6303 at 0.98MHz
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
- screen.set_size(6*16, 9*2);
- screen.set_visarea(0, 6*16-1, 0, 9*2-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
+ MCFG_SCREEN_SIZE(6*16, 9*2)
+ MCFG_SCREEN_VISIBLE_AREA(0, 6*16-1, 0, 9*2-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(psion_state::psion_palette), 2);
GFXDECODE(config, "gfxdecode", "palette", gfx_psion);
- HD44780(config, m_lcdc, 0);
- m_lcdc->set_lcd_size(2, 16);
+ MCFG_HD44780_ADD("hd44780")
+ MCFG_HD44780_LCD_SIZE(2, 16)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -596,83 +595,88 @@ void psion_state::psion_2lines(machine_config &config)
NVRAM(config, "nvram1").set_custom_handler(FUNC(psion_state::nvram_init)); // sys_regs
NVRAM(config, "nvram2", nvram_device::DEFAULT_ALL_0); // RAM
- TIMER(config, "nmi_timer").configure_periodic(FUNC(psion_state::nmi_timer), attotime::from_seconds(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", psion_state, nmi_timer, attotime::from_seconds(1))
/* Datapack */
PSION_DATAPACK(config, m_pack1, 0);
PSION_DATAPACK(config, m_pack2, 0);
/* Software lists */
- SOFTWARE_LIST(config, "pack_list").set_original("psion2");
-}
+ MCFG_SOFTWARE_LIST_ADD("pack_list", "psion2")
+MACHINE_CONFIG_END
/* basic configuration for 4 lines display */
-void psion_state::psion_4lines(machine_config &config)
-{
+MACHINE_CONFIG_START(psion_state::psion_4lines)
psion_2lines(config);
/* video hardware */
- subdevice<screen_device>("screen")->set_size(6*20, 9*4);
- subdevice<screen_device>("screen")->set_visarea(0, 6*20-1, 0, 9*4-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(6*20, 9*4)
+ MCFG_SCREEN_VISIBLE_AREA(0, 6*20-1, 0, 9*4-1)
- m_lcdc->set_lcd_size(4, 20);
- m_lcdc->set_pixel_update_cb(FUNC(psion_state::lz_pixel_update), this);
-}
+ MCFG_DEVICE_MODIFY("hd44780")
+ MCFG_HD44780_LCD_SIZE(4, 20)
+ MCFG_HD44780_PIXEL_UPDATE_CB(psion_state,lz_pixel_update)
+MACHINE_CONFIG_END
-void psion1_state::psion1(machine_config &config)
-{
+MACHINE_CONFIG_START(psion1_state::psion1)
psion_2lines(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &psion1_state::psion1_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(psion1_mem)
- subdevice<timer_device>("nmi_timer")->set_start_delay(attotime::from_seconds(1));
+ MCFG_DEVICE_MODIFY("nmi_timer")
+ MCFG_TIMER_START_DELAY(attotime::from_seconds(1))
- subdevice<screen_device>("screen")->set_size(6*16, 1*8);
- subdevice<screen_device>("screen")->set_visarea(0, 6*16-1, 0, 8*1-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(6*16, 1*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 6*16-1, 0, 8*1-1)
- m_lcdc->set_lcd_size(1, 16);
- m_lcdc->set_pixel_update_cb(FUNC(psion1_state::psion1_pixel_update), this);
+ MCFG_DEVICE_MODIFY("hd44780")
+ MCFG_HD44780_LCD_SIZE(1, 16)
+ MCFG_HD44780_PIXEL_UPDATE_CB(psion1_state,psion1_pixel_update)
/* Software lists */
- SOFTWARE_LIST(config.replace(), "pack_list").set_original("psion1");
-}
+ MCFG_SOFTWARE_LIST_REMOVE("pack_list")
+ MCFG_SOFTWARE_LIST_ADD("pack_list", "psion1")
+MACHINE_CONFIG_END
-void psion_state::psioncm(machine_config &config)
-{
+MACHINE_CONFIG_START(psion_state::psioncm)
psion_2lines(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &psion_state::psioncm_mem);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(psioncm_mem)
+MACHINE_CONFIG_END
-void psion_state::psionla(machine_config &config)
-{
+MACHINE_CONFIG_START(psion_state::psionla)
psion_2lines(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &psion_state::psionla_mem);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(psionla_mem)
+MACHINE_CONFIG_END
-void psion_state::psionlam(machine_config &config)
-{
+MACHINE_CONFIG_START(psion_state::psionlam)
psion_2lines(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &psion_state::psionlam_mem);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(psionlam_mem)
+MACHINE_CONFIG_END
-void psion_state::psionp350(machine_config &config)
-{
+MACHINE_CONFIG_START(psion_state::psionp350)
psion_2lines(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &psion_state::psionp350_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(psionp350_mem)
NVRAM(config, "nvram3", nvram_device::DEFAULT_ALL_0); // paged RAM
-}
+MACHINE_CONFIG_END
-void psion_state::psionlz(machine_config &config)
-{
+MACHINE_CONFIG_START(psion_state::psionlz)
psion_4lines(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &psion_state::psionlz_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(psionlz_mem)
NVRAM(config, "nvram3", nvram_device::DEFAULT_ALL_0); // paged RAM
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/psx.cpp b/src/mame/drivers/psx.cpp
index e5e313c67b6..e7f09bb3d00 100644
--- a/src/mame/drivers/psx.cpp
+++ b/src/mame/drivers/psx.cpp
@@ -29,15 +29,17 @@
#include <zlib.h>
+#define PSXCD_TAG "psxcd"
+
class psx1_state : public driver_device
{
public:
- psx1_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
+ psx1_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_ram(*this, "maincpu:ram"),
m_parallel(*this, "parallel"),
- m_psxcd(*this, "psxcd")
+ m_psxcd(*this, PSXCD_TAG)
{
}
@@ -519,8 +521,8 @@ void psx1_state::subcpu_map(address_map &map)
void psx1_state::psx_base(machine_config &config)
{
m_maincpu->set_addrmap(AS_PROGRAM, &psx1_state::psx_map);
- m_maincpu->cd_read().set(m_psxcd, FUNC(psxcd_device::read));
- m_maincpu->cd_write().set(m_psxcd, FUNC(psxcd_device::write));
+ m_maincpu->cd_read().set(PSXCD_TAG, FUNC(psxcd_device::read));
+ m_maincpu->cd_write().set(PSXCD_TAG, FUNC(psxcd_device::write));
m_maincpu->subdevice<ram_device>("ram")->set_default_size("2M");
psxcontrollerports_device &controllers(PSXCONTROLLERPORTS(config, "controllers", 0));
@@ -543,8 +545,8 @@ void psx1_state::psx_base(machine_config &config)
spu.add_route(0, "lspeaker", 1.00);
spu.add_route(1, "rspeaker", 1.00);
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(psx1_state, psx_exe_load), this), "cpe,exe,psf,psx");
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(psx1_state, psx_exe_load), this), "cpe,exe,psf,psx", 0);
PSX_PARALLEL_SLOT(config, "parallel", psx_parallel_devices, nullptr);
diff --git a/src/mame/drivers/pt68k4.cpp b/src/mame/drivers/pt68k4.cpp
index b28086c04f3..b5b7727e9f6 100644
--- a/src/mame/drivers/pt68k4.cpp
+++ b/src/mame/drivers/pt68k4.cpp
@@ -403,82 +403,84 @@ void pt68k4_isa8_cards(device_slot_interface &device)
device.option_add("xtide", ISA8_XTIDE); // Monk only
}
-void pt68k4_state::pt68k2(machine_config &config)
-{
+MACHINE_CONFIG_START(pt68k4_state::pt68k2)
/* basic machine hardware */
- M68000(config, m_maincpu, 16_MHz_XTAL / 2); // 68k2 came in 8, 10, and 12 MHz versions
- m_maincpu->set_addrmap(AS_PROGRAM, &pt68k4_state::pt68k2_mem);
+ MCFG_DEVICE_ADD(M68K_TAG, M68000, 16_MHz_XTAL / 2) // 68k2 came in 8, 10, and 12 MHz versions
+ MCFG_DEVICE_PROGRAM_MAP(pt68k2_mem)
- MC68681(config, m_duart1, 3.6864_MHz_XTAL);
- m_duart1->irq_cb().set(FUNC(pt68k4_state::duart1_irq));
- m_duart1->outport_cb().set(FUNC(pt68k4_state::duart1_out));
+ MCFG_DEVICE_ADD("duart1", MC68681, 3.6864_MHz_XTAL)
+ MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, pt68k4_state, duart1_irq))
+ MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, pt68k4_state, duart1_out))
- MC68681(config, m_duart2, 3.6864_MHz_XTAL);
+ MCFG_DEVICE_ADD("duart2", MC68681, 3.6864_MHz_XTAL)
- pc_kbdc_device &pc_kbdc(PC_KBDC(config, KBDC_TAG, 0));
- pc_kbdc.out_clock_cb().set(FUNC(pt68k4_state::keyboard_clock_w));
- pc_kbdc.out_data_cb().set(FUNC(pt68k4_state::keyboard_data_w));
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(&pc_kbdc);
+ MCFG_DEVICE_ADD(KBDC_TAG, PC_KBDC, 0)
+ MCFG_PC_KBDC_OUT_CLOCK_CB(WRITELINE(*this, pt68k4_state, keyboard_clock_w))
+ MCFG_PC_KBDC_OUT_DATA_CB(WRITELINE(*this, pt68k4_state, keyboard_data_w))
+ MCFG_PC_KBDC_SLOT_ADD(KBDC_TAG, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83)
- M48T02(config, TIMEKEEPER_TAG, 0);
+ MCFG_DEVICE_ADD(TIMEKEEPER_TAG, M48T02, 0)
WD1772(config, m_wdfdc, 16_MHz_XTAL / 2);
- FLOPPY_CONNECTOR(config, m_floppy_connector[0], pt68k_floppies, "525dd", pt68k4_state::floppy_formats);
- FLOPPY_CONNECTOR(config, m_floppy_connector[1], pt68k_floppies, "525dd", pt68k4_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy_connector[0], pt68k_floppies, "525dd", pt68k4_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy_connector[1], pt68k_floppies, "525dd", pt68k4_state::floppy_formats)
ISA8(config, m_isa, 0);
+ m_isa->set_cputag(M68K_TAG);
m_isa->set_custom_spaces();
m_isa->irq5_callback().set(FUNC(pt68k4_state::irq5_w));
- ISA8_SLOT(config, "isa1", 0, m_isa, pt68k4_isa8_cards, "cga", false); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa2", 0, m_isa, pt68k4_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa3", 0, m_isa, pt68k4_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa4", 0, m_isa, pt68k4_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa5", 0, m_isa, pt68k4_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa6", 0, m_isa, pt68k4_isa8_cards, nullptr, false),
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, ISABUS_TAG, pt68k4_isa8_cards, "cga", false) // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, ISABUS_TAG, pt68k4_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, ISABUS_TAG, pt68k4_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, ISABUS_TAG, pt68k4_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, ISABUS_TAG, pt68k4_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa6", ISA8_SLOT, 0, ISABUS_TAG, pt68k4_isa8_cards, nullptr, false)
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD(SPEAKER_TAG, SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
- SOFTWARE_LIST(config, "flop525_list").set_original("pt68k2");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop525_list", "pt68k2")
+MACHINE_CONFIG_END
-void pt68k4_state::pt68k4(machine_config &config)
-{
+MACHINE_CONFIG_START(pt68k4_state::pt68k4)
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &pt68k4_state::pt68k4_mem);
+ MCFG_DEVICE_ADD(M68K_TAG, M68000, XTAL(16'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(pt68k4_mem)
// add the DUARTS. first one has the console on channel A at 19200.
- MC68681(config, m_duart1, XTAL(16'000'000) / 4);
- m_duart1->irq_cb().set(FUNC(pt68k4_state::duart1_irq));
- m_duart1->outport_cb().set(FUNC(pt68k4_state::duart1_out));
+ MCFG_DEVICE_ADD("duart1", MC68681, XTAL(16'000'000) / 4)
+ MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, pt68k4_state, duart1_irq))
+ MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, pt68k4_state, duart1_out))
- MC68681(config, m_duart2, XTAL(16'000'000) / 4);
+ MCFG_DEVICE_ADD("duart2", MC68681, XTAL(16'000'000) / 4)
- pc_kbdc_device &pc_kbdc(PC_KBDC(config, KBDC_TAG, 0));
- pc_kbdc.out_clock_cb().set(FUNC(pt68k4_state::keyboard_clock_w));
- pc_kbdc.out_data_cb().set(FUNC(pt68k4_state::keyboard_data_w));
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(&pc_kbdc);
+ MCFG_DEVICE_ADD(KBDC_TAG, PC_KBDC, 0)
+ MCFG_PC_KBDC_OUT_CLOCK_CB(WRITELINE(*this, pt68k4_state, keyboard_clock_w))
+ MCFG_PC_KBDC_OUT_DATA_CB(WRITELINE(*this, pt68k4_state, keyboard_data_w))
+ MCFG_PC_KBDC_SLOT_ADD(KBDC_TAG, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83)
- M48T02(config, TIMEKEEPER_TAG, 0);
+ MCFG_DEVICE_ADD(TIMEKEEPER_TAG, M48T02, 0)
ISA8(config, m_isa, 0);
+ m_isa->set_cputag(M68K_TAG);
m_isa->set_custom_spaces();
- ISA8_SLOT(config, "isa1", 0, m_isa, pt68k4_isa8_cards, "fdc_at", false); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa2", 0, m_isa, pt68k4_isa8_cards, "cga", false);
- ISA8_SLOT(config, "isa3", 0, m_isa, pt68k4_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa4", 0, m_isa, pt68k4_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa5", 0, m_isa, pt68k4_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa6", 0, m_isa, pt68k4_isa8_cards, nullptr, false),
- ISA8_SLOT(config, "isa7", 0, m_isa, pt68k4_isa8_cards, nullptr, false),
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, ISABUS_TAG, pt68k4_isa8_cards, "fdc_at", false) // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, ISABUS_TAG, pt68k4_isa8_cards, "cga", false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, ISABUS_TAG, pt68k4_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, ISABUS_TAG, pt68k4_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, ISABUS_TAG, pt68k4_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa6", ISA8_SLOT, 0, ISABUS_TAG, pt68k4_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa7", ISA8_SLOT, 0, ISABUS_TAG, pt68k4_isa8_cards, nullptr, false)
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD(SPEAKER_TAG, SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
- SOFTWARE_LIST(config, "flop525_list").set_original("pt68k2");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop525_list", "pt68k2")
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( pt68k2 )
diff --git a/src/mame/drivers/ptcsol.cpp b/src/mame/drivers/ptcsol.cpp
index 750a85a6842..381e6361a31 100644
--- a/src/mame/drivers/ptcsol.cpp
+++ b/src/mame/drivers/ptcsol.cpp
@@ -121,7 +121,6 @@
//#include "bus/s100/s100.h"
#include "imagedev/cassette.h"
#include "machine/ay31015.h"
-#include "machine/clock.h"
#include "machine/keyboard.h"
#include "sound/spkrdev.h"
#include "sound/wave.h"
@@ -158,8 +157,6 @@ public:
, m_cass2(*this, "cassette2")
, m_uart(*this, "uart")
, m_uart_s(*this, "uart_s")
- , m_uart_clock(*this, "uart_clock")
- , m_uart_s_clock(*this, "uart_s_clock")
, m_rs232(*this, "rs232")
, m_p_videoram(*this, "videoram")
, m_p_chargen(*this, "chargen")
@@ -214,8 +211,6 @@ private:
required_device<cassette_image_device> m_cass2;
required_device<ay31015_device> m_uart;
required_device<ay31015_device> m_uart_s;
- required_device<clock_device> m_uart_clock;
- required_device<clock_device> m_uart_s_clock;
required_device<rs232_port_device> m_rs232;
required_shared_ptr<uint8_t> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
@@ -425,7 +420,8 @@ WRITE8_MEMBER( sol20_state::sol20_fa_w )
m_cassette_timer->adjust(attotime::zero);
// bit 5 baud rate */
- m_uart_clock->set_unscaled_clock(BIT(data, 5) ? 4800 : 19200);
+ m_uart->set_receiver_clock((BIT(data, 5)) ? 4800.0 : 19200.0);
+ m_uart->set_transmitter_clock((BIT(data, 5)) ? 4800.0 : 19200.0);
}
WRITE8_MEMBER( sol20_state::sol20_fd_w )
@@ -617,7 +613,8 @@ void sol20_state::machine_reset()
s_clock = s_bauds[s_count] << 4;
// these lines could be commented out for now if you want better performance
- m_uart_s_clock->set_unscaled_clock(s_clock);
+ m_uart_s->set_receiver_clock(s_clock);
+ m_uart_s->set_transmitter_clock(s_clock);
// boot-bank
membank("boot")->set_entry(1);
@@ -772,23 +769,19 @@ void sol20_state::sol20(machine_config &config)
m_cass2->set_interface("sol20_cass");
AY51013(config, m_uart); // TMS6011NC
+ m_uart->set_tx_clock(4800.0);
+ m_uart->set_rx_clock(4800.0);
m_uart->set_auto_rdav(true); // ROD (pin 4) tied to RDD (pin 18)
- CLOCK(config, m_uart_clock, 4800);
- m_uart_clock->signal_handler().set(m_uart, FUNC(ay51013_device::write_rcp));
- m_uart_clock->signal_handler().append(m_uart, FUNC(ay51013_device::write_tcp));
-
RS232_PORT(config, m_rs232, default_rs232_devices, nullptr);
AY51013(config, m_uart_s); // TMS6011NC
m_uart_s->read_si_callback().set(m_rs232, FUNC(rs232_port_device::rxd_r));
m_uart_s->write_so_callback().set(m_rs232, FUNC(rs232_port_device::write_txd));
+ m_uart_s->set_tx_clock(4800.0);
+ m_uart_s->set_rx_clock(4800.0);
m_uart_s->set_auto_rdav(true); // ROD (pin 4) tied to RDD (pin 18)
- CLOCK(config, m_uart_s_clock, 4800);
- m_uart_s_clock->signal_handler().set(m_uart_s, FUNC(ay51013_device::write_rcp));
- m_uart_s_clock->signal_handler().append(m_uart_s, FUNC(ay51013_device::write_tcp));
-
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
keyboard.set_keyboard_callback(FUNC(sol20_state::kbd_put));
diff --git a/src/mame/drivers/pturn.cpp b/src/mame/drivers/pturn.cpp
index 14d50a76a92..1f23febb9d2 100644
--- a/src/mame/drivers/pturn.cpp
+++ b/src/mame/drivers/pturn.cpp
@@ -517,15 +517,14 @@ void pturn_state::machine_reset()
m_nmi_sub = false;
}
-void pturn_state::pturn(machine_config &config)
-{
- Z80(config, m_maincpu, 12000000/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &pturn_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(pturn_state::main_intgen));
+MACHINE_CONFIG_START(pturn_state::pturn)
+ MCFG_DEVICE_ADD("maincpu", Z80, 12000000/3)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pturn_state, main_intgen)
- Z80(config, m_audiocpu, 12000000/3);
- m_audiocpu->set_addrmap(AS_PROGRAM, &pturn_state::sub_map);
- m_audiocpu->set_periodic_int(FUNC(pturn_state::sub_intgen), attotime::from_hz(3*60));
+ MCFG_DEVICE_ADD("audiocpu", Z80, 12000000/3)
+ MCFG_DEVICE_PROGRAM_MAP(sub_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(pturn_state, sub_intgen, 3*60)
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set(FUNC(pturn_state::flip_w));
@@ -536,17 +535,17 @@ void pturn_state::pturn(machine_config &config)
mainlatch.q_out_cb<5>().set(FUNC(pturn_state::fgbank_w));
mainlatch.q_out_cb<6>().set_nop(); // toggles frequently during gameplay
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(pturn_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pturn_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 0x100);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_pturn);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pturn)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -556,7 +555,7 @@ void pturn_state::pturn(machine_config &config)
AY8910(config, "ay1", 2000000).add_route(ALL_OUTPUTS, "mono", 0.25);
AY8910(config, "ay2", 2000000).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
ROM_START( pturn )
diff --git a/src/mame/drivers/puckpkmn.cpp b/src/mame/drivers/puckpkmn.cpp
index 23a81639696..ff51a3480e4 100644
--- a/src/mame/drivers/puckpkmn.cpp
+++ b/src/mame/drivers/puckpkmn.cpp
@@ -278,34 +278,36 @@ void md_boot_state::puckpkmna_map(address_map &map)
map(0x70001c, 0x70001d).r(FUNC(md_boot_state::puckpkmna_70001c_r));
}
-void md_boot_state::puckpkmn(machine_config &config)
-{
+MACHINE_CONFIG_START(md_boot_state::puckpkmn)
md_ntsc(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &md_boot_state::puckpkmn_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(puckpkmn_map)
MCFG_MACHINE_START_OVERRIDE(md_boot_state, md_bootleg)
- config.device_remove("genesis_snd_z80");
+ MCFG_DEVICE_REMOVE("genesis_snd_z80")
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(4'000'000) / 4, okim6295_device::PIN7_HIGH));
- oki.add_route(ALL_OUTPUTS, "lspeaker", 0.25);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 0.25);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(4'000'000) / 4, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker",0.25)
+MACHINE_CONFIG_END
-void md_boot_state::puckpkmna(machine_config &config)
-{
+MACHINE_CONFIG_START(md_boot_state::puckpkmna)
puckpkmn(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &md_boot_state::puckpkmna_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(puckpkmna_map)
-void md_boot_state::jzth(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(md_boot_state::jzth)
puckpkmn(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &md_boot_state::jzth_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(jzth_map)
+
+MACHINE_CONFIG_END
/* Genie's Hardware (contains no real sega parts) */
diff --git a/src/mame/drivers/punchout.cpp b/src/mame/drivers/punchout.cpp
index b9faf70cad0..344dd66a340 100644
--- a/src/mame/drivers/punchout.cpp
+++ b/src/mame/drivers/punchout.cpp
@@ -622,15 +622,15 @@ MACHINE_RESET_MEMBER(punchout_state, spnchout)
}
-void punchout_state::punchout(machine_config &config)
-{
+MACHINE_CONFIG_START(punchout_state::punchout)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(8'000'000)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &punchout_state::punchout_map);
- m_maincpu->set_addrmap(AS_IO, &punchout_state::punchout_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(8'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(punchout_map)
+ MCFG_DEVICE_IO_MAP(punchout_io_map)
- N2A03(config, m_audiocpu, NTSC_APU_CLOCK);
- m_audiocpu->set_addrmap(AS_PROGRAM, &punchout_state::punchout_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", N2A03, NTSC_APU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(punchout_sound_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -645,8 +645,8 @@ void punchout_state::punchout(machine_config &config)
mainlatch.q_out_cb<7>().set_nop(); // enable NVRAM?
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_punchout);
- PALETTE(config, m_palette).set_entries(0x200);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_punchout)
+ MCFG_PALETTE_ADD("palette", 0x200)
config.set_default_layout(layout_dualhovu);
screen_device &top(SCREEN(config, "top", SCREEN_TYPE_RASTER));
@@ -659,13 +659,13 @@ void punchout_state::punchout(machine_config &config)
top.screen_vblank().set(FUNC(punchout_state::vblank_irq));
top.screen_vblank().append_inputline(m_audiocpu, INPUT_LINE_NMI);
- screen_device &bottom(SCREEN(config, "bottom", SCREEN_TYPE_RASTER));
- bottom.set_refresh_hz(60);
- bottom.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- bottom.set_size(32*8, 32*8);
- bottom.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- bottom.set_screen_update(FUNC(punchout_state::screen_update_punchout_bottom));
- bottom.set_palette(m_palette);
+ MCFG_SCREEN_ADD("bottom", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(punchout_state, screen_update_punchout_bottom)
+ MCFG_SCREEN_PALETTE("palette")
/* sound hardware */
// FIXME: this makes no sense - "lspeaker" on left and "mono" on right, with nothing routed to "mono"
@@ -675,41 +675,43 @@ void punchout_state::punchout(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
GENERIC_LATCH_8(config, "soundlatch2");
- VLM5030(config, m_vlm, N2A03_NTSC_XTAL/6);
- m_vlm->set_addrmap(0, &punchout_state::punchout_vlm_map);
- m_vlm->add_route(ALL_OUTPUTS, "lspeaker", 0.50);
-}
+ MCFG_DEVICE_ADD("vlm", VLM5030, N2A03_NTSC_XTAL/6)
+ MCFG_DEVICE_ADDRESS_MAP(0, punchout_vlm_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+MACHINE_CONFIG_END
-void punchout_state::spnchout(machine_config &config)
-{
+MACHINE_CONFIG_START(punchout_state::spnchout)
punchout(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &punchout_state::spnchout_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(spnchout_io_map)
RP5C01(config, m_rtc, 0); // OSCIN -> Vcc
m_rtc->remove_battery();
RP5H01(config, m_rp5h01, 0);
MCFG_MACHINE_RESET_OVERRIDE(punchout_state, spnchout)
-}
+MACHINE_CONFIG_END
-void punchout_state::armwrest(machine_config &config)
-{
+MACHINE_CONFIG_START(punchout_state::armwrest)
punchout(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &punchout_state::armwrest_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(armwrest_map)
/* video hardware */
- m_gfxdecode->set_info(gfx_armwrest);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_armwrest)
MCFG_VIDEO_START_OVERRIDE(punchout_state, armwrest)
- subdevice<screen_device>("top")->set_screen_update(FUNC(punchout_state::screen_update_armwrest_top));
- subdevice<screen_device>("bottom")->set_screen_update(FUNC(punchout_state::screen_update_armwrest_bottom));
-}
+ MCFG_SCREEN_MODIFY("top")
+ MCFG_SCREEN_UPDATE_DRIVER(punchout_state, screen_update_armwrest_top)
+ MCFG_SCREEN_MODIFY("bottom")
+ MCFG_SCREEN_UPDATE_DRIVER(punchout_state, screen_update_armwrest_bottom)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pv1000.cpp b/src/mame/drivers/pv1000.cpp
index abc184e8645..5b3c23d7c52 100644
--- a/src/mame/drivers/pv1000.cpp
+++ b/src/mame/drivers/pv1000.cpp
@@ -177,12 +177,12 @@ private:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
- void pv1000_mem(address_map &map);
+ void pv1000(address_map &map);
void pv1000_io(address_map &map);
};
-void pv1000_state::pv1000_mem(address_map &map)
+void pv1000_state::pv1000(address_map &map)
{
//AM_RANGE(0x0000, 0x7fff) // mapped by the cartslot
map(0xb800, 0xbbff).ram().share("videoram");
@@ -395,7 +395,7 @@ void pv1000_state::machine_start()
if (m_cart->exists())
{
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x7fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x7fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
// FIXME: this is needed for gfx decoding, but there is probably a cleaner solution!
std::string region_tag;
@@ -441,9 +441,11 @@ GFXDECODE_END
MACHINE_CONFIG_START(pv1000_state::pv1000)
- Z80(config, m_maincpu, 17897725/5);
- m_maincpu->set_addrmap(AS_PROGRAM, &pv1000_state::pv1000_mem);
- m_maincpu->set_addrmap(AS_IO, &pv1000_state::pv1000_io);
+
+ MCFG_DEVICE_ADD( "maincpu", Z80, 17897725/5 )
+ MCFG_DEVICE_PROGRAM_MAP( pv1000 )
+ MCFG_DEVICE_IO_MAP( pv1000_io )
+
/* D65010G031 - Video & sound chip */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
@@ -453,7 +455,7 @@ MACHINE_CONFIG_START(pv1000_state::pv1000)
PALETTE(config, m_palette, palette_device::BGR_3BIT);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_pv1000);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pv1000)
SPEAKER(config, "mono").front_center();
PV1000(config, m_sound, 17897725).add_route(ALL_OUTPUTS, "mono", 1.00);
@@ -464,7 +466,7 @@ MACHINE_CONFIG_START(pv1000_state::pv1000)
MCFG_GENERIC_LOAD(pv1000_state, pv1000_cart)
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("pv1000");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","pv1000")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pv2000.cpp b/src/mame/drivers/pv2000.cpp
index f286ff9fd9d..faaa9c7159d 100644
--- a/src/mame/drivers/pv2000.cpp
+++ b/src/mame/drivers/pv2000.cpp
@@ -184,7 +184,8 @@ void pv2000_state::pv2000_map(address_map &map)
{
map(0x0000, 0x3fff).rom();
- map(0x4000, 0x4001).rw("tms9928a", FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
+ map(0x4000, 0x4000).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0x4001, 0x4001).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
map(0x7000, 0x7fff).ram();
//AM_RANGE(0x8000, 0xbfff) ext ram?
@@ -204,7 +205,7 @@ void pv2000_state::pv2000_io_map(address_map &map)
map(0x20, 0x20).rw(FUNC(pv2000_state::keys_lo_r), FUNC(pv2000_state::keys_w));
//sn76489a
- map(0x40, 0x40).r(FUNC(pv2000_state::keys_mod_r)).w("sn76489a", FUNC(sn76489a_device::write));
+ map(0x40, 0x40).r(FUNC(pv2000_state::keys_mod_r)).w("sn76489a", FUNC(sn76489a_device::command_w));
/* Cassette input. Gets hit a lot after a GLOAD command */
map(0x60, 0x60).rw(FUNC(pv2000_state::cass_in), FUNC(pv2000_state::cass_out));
@@ -355,7 +356,7 @@ WRITE_LINE_MEMBER( pv2000_state::pv2000_vdp_interrupt )
void pv2000_state::machine_start()
{
if (m_cart->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000, 0xffff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000, 0xffff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
}
void pv2000_state::machine_reset()
@@ -386,10 +387,11 @@ DEVICE_IMAGE_LOAD_MEMBER( pv2000_state, pv2000_cart )
/* Machine Drivers */
MACHINE_CONFIG_START(pv2000_state::pv2000)
+
// basic machine hardware
- Z80(config, m_maincpu, XTAL(7'159'090)/2); // 3.579545 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &pv2000_state::pv2000_map);
- m_maincpu->set_addrmap(AS_IO, &pv2000_state::pv2000_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(7'159'090)/2) // 3.579545 MHz
+ MCFG_DEVICE_PROGRAM_MAP(pv2000_map)
+ MCFG_DEVICE_IO_MAP(pv2000_io_map)
// video hardware
tms9928a_device &vdp(TMS9928A(config, "tms9928a", XTAL(10'738'635)));
@@ -401,13 +403,14 @@ MACHINE_CONFIG_START(pv2000_state::pv2000)
// sound hardware
SPEAKER(config, "mono").front_center();
- SN76489A(config, "sn76489a", XTAL(7'159'090)/2).add_route(ALL_OUTPUTS, "mono", 1.00); /* 3.579545 MHz */
+ MCFG_DEVICE_ADD("sn76489a", SN76489A, XTAL(7'159'090)/2) /* 3.579545 MHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
- WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
/* cassette */
- CASSETTE(config, m_cass);
- m_cass->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED)
/* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "pv2000_cart")
@@ -415,7 +418,7 @@ MACHINE_CONFIG_START(pv2000_state::pv2000)
MCFG_GENERIC_LOAD(pv2000_state, pv2000_cart)
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("pv2000");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","pv2000")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pv9234.cpp b/src/mame/drivers/pv9234.cpp
index 39cb02f1cac..a3ff1a54d85 100644
--- a/src/mame/drivers/pv9234.cpp
+++ b/src/mame/drivers/pv9234.cpp
@@ -149,23 +149,23 @@ uint32_t pv9234_state::screen_update_pv9234(screen_device &screen, bitmap_ind16
return 0;
}
-void pv9234_state::pv9234(machine_config &config)
-{
+MACHINE_CONFIG_START(pv9234_state::pv9234)
/* basic machine hardware */
- ARM7(config, m_maincpu, 4915000); //probably a more powerful clone.
- m_maincpu->set_addrmap(AS_PROGRAM, &pv9234_state::pv9234_map);
+ MCFG_DEVICE_ADD("maincpu", ARM7, 4915000) //probably a more powerful clone.
+ MCFG_DEVICE_PROGRAM_MAP(pv9234_map)
+
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_screen_update(FUNC(pv9234_state::screen_update_pv9234));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pv9234_state, screen_update_pv9234)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( pv9234 )
diff --git a/src/mame/drivers/pwrview.cpp b/src/mame/drivers/pwrview.cpp
index 2c9d76c2c62..f9295d7d81c 100644
--- a/src/mame/drivers/pwrview.cpp
+++ b/src/mame/drivers/pwrview.cpp
@@ -404,16 +404,15 @@ static void pwrview_floppies(device_slot_interface &device)
device.option_add("525dd", FLOPPY_525_DD);
}
-void pwrview_state::pwrview(machine_config &config)
-{
- I80186(config, m_maincpu, XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &pwrview_state::pwrview_map);
- m_maincpu->set_addrmap(AS_OPCODES, &pwrview_state::pwrview_fetch_map);
- m_maincpu->set_addrmap(AS_IO, &pwrview_state::pwrview_io);
+MACHINE_CONFIG_START(pwrview_state::pwrview)
+ MCFG_DEVICE_ADD("maincpu", I80186, XTAL(16'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(pwrview_map)
+ MCFG_DEVICE_OPCODES_MAP(pwrview_fetch_map)
+ MCFG_DEVICE_IO_MAP(pwrview_io)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(64'000'000)/8, 480, 0, 384, 1040, 0, 960); // clock unknown
- screen.set_screen_update("crtc", FUNC(hd6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(64'000'000)/8, 480, 0, 384, 1040, 0, 960) // clock unknown
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", hd6845_device, screen_update)
PIT8253(config, m_pit, 0);
m_pit->set_clk<0>(XTAL(16'000'000)/16); // clocks unknown, fix above when found
@@ -424,8 +423,8 @@ void pwrview_state::pwrview(machine_config &config)
UPD765A(config, "fdc", 8'000'000, true, true); // Rockwell R7675P
//fdc.intrq_wr_callback().set("pic1", FUNC(pic8259_device::ir6_w));
//fdc.drq_wr_callback().set(m_maincpu, FUNC(i80186_cpu_device::drq1_w));
- FLOPPY_CONNECTOR(config, "fdc:0", pwrview_floppies, "525dd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", pwrview_floppies, "525dd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", pwrview_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", pwrview_floppies, "525dd", floppy_image_device::default_floppy_formats)
I8251(config, "uart", 0);
@@ -436,7 +435,7 @@ void pwrview_state::pwrview(machine_config &config)
crtc.set_update_row_callback(FUNC(pwrview_state::update_row), this);
ADDRESS_MAP_BANK(config, "bios_bank").set_map(&pwrview_state::bios_bank).set_options(ENDIANNESS_LITTLE, 16, 17, 0x8000);
-}
+MACHINE_CONFIG_END
ROM_START(pwrview)
ROM_REGION(0x8000, "bios", 0)
diff --git a/src/mame/drivers/px4.cpp b/src/mame/drivers/px4.cpp
index 66f62a566cb..e3df0086904 100644
--- a/src/mame/drivers/px4.cpp
+++ b/src/mame/drivers/px4.cpp
@@ -1146,7 +1146,7 @@ READ8_MEMBER( px4p_state::ramdisk_data_r )
else if (m_ramdisk_address < 0x40000)
{
// read from rom
- ret = m_rdsocket->read_rom(m_ramdisk_address);
+ ret = m_rdsocket->read_rom(space, m_ramdisk_address);
}
m_ramdisk_address = (m_ramdisk_address & 0xffff00) | ((m_ramdisk_address & 0xff) + 1);
@@ -1485,20 +1485,19 @@ void px4p_state::px4p_palette(palette_device &palette) const
// MACHINE DRIVERS
//**************************************************************************
-void px4_state::px4(machine_config &config)
-{
+MACHINE_CONFIG_START(px4_state::px4)
// basic machine hardware
- Z80(config, m_z80, XTAL(7'372'800) / 2); // uPD70008
- m_z80->set_addrmap(AS_PROGRAM, &px4_state::px4_mem);
- m_z80->set_addrmap(AS_IO, &px4_state::px4_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(7'372'800) / 2) // uPD70008
+ MCFG_DEVICE_PROGRAM_MAP(px4_mem)
+ MCFG_DEVICE_IO_MAP(px4_io)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(72);
- screen.set_size(240, 64);
- screen.set_visarea(0, 239, 0, 63);
- screen.set_screen_update(FUNC(px4_state::screen_update_px4));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(72)
+ MCFG_SCREEN_SIZE(240, 64)
+ MCFG_SCREEN_VISIBLE_AREA(0, 239, 0, 63)
+ MCFG_SCREEN_UPDATE_DRIVER(px4_state, screen_update_px4)
+ MCFG_SCREEN_PALETTE("palette")
config.set_default_layout(layout_px4);
@@ -1508,31 +1507,30 @@ void px4_state::px4(machine_config &config)
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.0);
- TIMER(config, "one_sec").configure_periodic(FUNC(px4_state::upd7508_1sec_callback), attotime::from_seconds(1));
- TIMER(config, "frc").configure_periodic(FUNC(px4_state::frc_tick), attotime::from_hz(XTAL(7'372'800) / 2 / 6));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("one_sec", px4_state, upd7508_1sec_callback, attotime::from_seconds(1))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("frc", px4_state, frc_tick, attotime::from_hz(XTAL(7'372'800) / 2 / 6))
// internal ram
RAM(config, RAM_TAG).set_default_size("64K");
NVRAM(config, "nvram", nvram_device::DEFAULT_NONE);
// centronics printer
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(px4_state::centronics_busy_w));
- m_centronics->perror_handler().set(FUNC(px4_state::centronics_perror_w));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, px4_state, centronics_busy_w))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, px4_state, centronics_perror_w))
- output_latch_device &latch(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(latch);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
// external cassette
- CASSETTE(config, m_ext_cas);
- m_ext_cas->set_default_state(CASSETTE_PLAY | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED);
+ MCFG_CASSETTE_ADD("extcas")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED)
- TIMER(config, m_ext_cas_timer).configure_generic(FUNC(px4_state::ext_cassette_read));
+ MCFG_TIMER_DRIVER_ADD("extcas_timer", px4_state, ext_cassette_read)
// sio port
- EPSON_SIO(config, m_sio, nullptr);
- m_sio->rx_callback().set(FUNC(px4_state::sio_rx_w));
- m_sio->pin_callback().set(FUNC(px4_state::sio_pin_w));
+ MCFG_EPSON_SIO_ADD("sio", nullptr)
+ MCFG_EPSON_SIO_RX(WRITELINE(*this, px4_state, sio_rx_w))
+ MCFG_EPSON_SIO_PIN(WRITELINE(*this, px4_state, sio_pin_w))
// rs232 port
RS232_PORT(config, m_rs232, default_rs232_devices, nullptr);
@@ -1542,25 +1540,25 @@ void px4_state::px4(machine_config &config)
m_rs232->cts_handler().set(FUNC(px4_state::rs232_cts_w));
// rom capsules
- GENERIC_CARTSLOT(config, m_caps1, generic_plain_slot, "px4_cart");
- GENERIC_CARTSLOT(config, m_caps2, generic_plain_slot, "px4_cart");
+ MCFG_GENERIC_CARTSLOT_ADD("capsule1", generic_plain_slot, "px4_cart")
+ MCFG_GENERIC_CARTSLOT_ADD("capsule2", generic_plain_slot, "px4_cart")
// software list
- SOFTWARE_LIST(config, "cart_list").set_original("px4_cart");
- SOFTWARE_LIST(config, "epson_cpm_list").set_original("epson_cpm");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "px4_cart")
+ MCFG_SOFTWARE_LIST_ADD("epson_cpm_list", "epson_cpm")
+MACHINE_CONFIG_END
-void px4p_state::px4p(machine_config &config)
-{
+MACHINE_CONFIG_START(px4p_state::px4p)
px4(config);
- m_z80->set_addrmap(AS_IO, &px4p_state::px4p_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(px4p_io)
NVRAM(config, "rdnvram", nvram_device::DEFAULT_ALL_0);
subdevice<palette_device>("palette")->set_init(FUNC(px4p_state::px4p_palette));
- GENERIC_CARTSLOT(config, m_rdsocket, generic_plain_slot, "px4_cart");
-}
+ MCFG_GENERIC_CARTSLOT_ADD("ramdisk_socket", generic_plain_slot, "px4_cart")
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/px8.cpp b/src/mame/drivers/px8.cpp
index 73e4213b248..fdb96f8cb75 100644
--- a/src/mame/drivers/px8.cpp
+++ b/src/mame/drivers/px8.cpp
@@ -737,58 +737,59 @@ void px8_state::machine_reset()
MACHINE DRIVERS
***************************************************************************/
-void px8_state::px8(machine_config &config)
-{
+MACHINE_CONFIG_START(px8_state::px8)
/* main cpu (uPD70008) */
- Z80(config, m_maincpu, XTAL_CR1 / 4); /* 2.45 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &px8_state::px8_mem);
- m_maincpu->set_addrmap(AS_IO, &px8_state::px8_io);
+ MCFG_DEVICE_ADD(UPD70008_TAG, Z80, XTAL_CR1 / 4) /* 2.45 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(px8_mem)
+ MCFG_DEVICE_IO_MAP(px8_io)
/* slave cpu (HD6303) */
- m6803_cpu_device &slave(M6803(config, HD6303_TAG, XTAL_CR1 / 4)); /* 614 kHz */
- slave.set_addrmap(AS_PROGRAM, &px8_state::px8_slave_mem);
- slave.set_disable();
+ MCFG_DEVICE_ADD(HD6303_TAG, M6803, XTAL_CR1 / 4) /* 614 kHz */
+ MCFG_DEVICE_PROGRAM_MAP(px8_slave_mem)
+ MCFG_DEVICE_DISABLE()
/* sub CPU (uPD7508) */
-// upd7508_device &sub(UPD7508(config, UPD7508_TAG, 200000)); /* 200 kHz */
-// sub.set_addrmap(AS_IO, &px8_state::px8_sub_io);
-// sub.set_disable();
+// MCFG_DEVICE_ADD(UPD7508_TAG, UPD7508, 200000) /* 200 kHz */
+// MCFG_DEVICE_IO_MAP(px8_sub_io)
+// MCFG_DEVICE_DISABLE()
/* video hardware */
config.set_default_layout(layout_px8);
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_LCD));
- screen.set_refresh_hz(72);
- screen.set_screen_update(FUNC(px8_state::screen_update));
- screen.set_size(480, 64);
- screen.set_visarea(0, 479, 0, 63);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD(SCREEN_TAG, LCD)
+ MCFG_SCREEN_REFRESH_RATE(72)
+ MCFG_SCREEN_UPDATE_DRIVER(px8_state, screen_update)
+ MCFG_SCREEN_SIZE(480, 64)
+ MCFG_SCREEN_VISIBLE_AREA(0, 479, 0, 63)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, "gfxdecode", "palette", gfx_px8);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_px8)
PALETTE(config, "palette", FUNC(px8_state::px8_palette), 2);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette).add_route(0, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(0, "mono", 0.25);
/* cartridge */
- GENERIC_CARTSLOT(config, "capsule1", generic_plain_slot, "px8_cart", "bin,rom");
+ MCFG_GENERIC_CARTSLOT_ADD("capsule1", generic_plain_slot, "px8_cart")
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
- GENERIC_CARTSLOT(config, "capsule2", generic_plain_slot, "px8_cart", "bin,rom");
+ MCFG_GENERIC_CARTSLOT_ADD("capsule2", generic_plain_slot, "px8_cart")
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
/* devices */
- I8251(config, I8251_TAG, 0);
+ MCFG_DEVICE_ADD(I8251_TAG, I8251, 0)
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K");
// software
- SOFTWARE_LIST(config, "cart_list").set_original("px8_cart");
- SOFTWARE_LIST(config, "epson_cpm_list").set_original("epson_cpm");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "px8_cart")
+ MCFG_SOFTWARE_LIST_ADD("epson_cpm_list", "epson_cpm")
+MACHINE_CONFIG_END
/***************************************************************************
ROMS
diff --git a/src/mame/drivers/pyl601.cpp b/src/mame/drivers/pyl601.cpp
index 5a16c67a810..13c06294886 100644
--- a/src/mame/drivers/pyl601.cpp
+++ b/src/mame/drivers/pyl601.cpp
@@ -544,53 +544,52 @@ static GFXDECODE_START( gfx_pyl601a )
GFXDECODE_ENTRY( "chargen", 0x0000, pyl601a_charlayout, 0, 1 )
GFXDECODE_END
-void pyl601_state::pyl601(machine_config &config)
-{
+MACHINE_CONFIG_START(pyl601_state::pyl601)
/* basic machine hardware */
- M6800(config, m_maincpu, 1_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &pyl601_state::pyl601_mem);
- m_maincpu->set_vblank_int("screen", FUNC(pyl601_state::pyl601_interrupt));
+ MCFG_DEVICE_ADD("maincpu",M6800, XTAL(1'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(pyl601_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pyl601_state, pyl601_interrupt)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 200);
- screen.set_visarea(0, 640 - 1, 0, 200 - 1);
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
- GFXDECODE(config, "gfxdecode", m_palette, gfx_pyl601);
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 200)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640 - 1, 0, 200 - 1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pyl601)
PALETTE(config, m_palette, palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
- mc6845_device &crtc(MC6845(config, "crtc", 2_MHz_XTAL));
+ mc6845_device &crtc(MC6845(config, "crtc", XTAL(2'000'000)));
crtc.set_screen("screen");
crtc.set_show_border_area(false);
crtc.set_char_width(8); /* ? */
crtc.set_update_row_callback(FUNC(pyl601_state::pyl601_update_row), this);
UPD765A(config, m_fdc, 8'000'000, true, true);
- FLOPPY_CONNECTOR(config, "upd765:0", pyl601_floppies, "525hd", pyl601_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765:1", pyl601_floppies, "525hd", pyl601_state::floppy_formats);
- SOFTWARE_LIST(config, "flop_list").set_original("pyl601");
+ MCFG_FLOPPY_DRIVE_ADD("upd765:0", pyl601_floppies, "525hd", pyl601_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765:1", pyl601_floppies, "525hd", pyl601_state::floppy_formats)
+ MCFG_SOFTWARE_LIST_ADD("flop_list","pyl601")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("576K"); // 64 + 512
-}
+MACHINE_CONFIG_END
-void pyl601_state::pyl601a(machine_config &config)
-{
+MACHINE_CONFIG_START(pyl601_state::pyl601a)
pyl601(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK( XTAL(2'000'000))
- m_maincpu->set_clock(2_MHz_XTAL);
-
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_pyl601a);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_pyl601a)
subdevice<mc6845_device>("crtc")->set_update_row_callback(FUNC(pyl601_state::pyl601a_update_row), this);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( pyl601 )
diff --git a/src/mame/drivers/pzletime.cpp b/src/mame/drivers/pzletime.cpp
index 0366ad0a56d..53a3015f514 100644
--- a/src/mame/drivers/pzletime.cpp
+++ b/src/mame/drivers/pzletime.cpp
@@ -334,21 +334,21 @@ void pzletime_state::machine_reset()
m_ticket = 0;
}
-void pzletime_state::pzletime(machine_config &config)
-{
+MACHINE_CONFIG_START(pzletime_state::pzletime)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 10000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &pzletime_state::pzletime_map);
- m_maincpu->set_vblank_int("screen", FUNC(pzletime_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu",M68000,10000000)
+ MCFG_DEVICE_PROGRAM_MAP(pzletime_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pzletime_state, irq4_line_hold)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(0*8, 48*8-1, 0*8, 28*8-1);
- m_screen->set_screen_update(FUNC(pzletime_state::screen_update_pzletime));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(pzletime_state, screen_update_pzletime)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pzletime);
PALETTE(config, m_palette, FUNC(pzletime_state::pzletime_palette));
@@ -360,7 +360,7 @@ void pzletime_state::pzletime(machine_config &config)
SPEAKER(config, "mono").front_center();
OKIM6295(config, m_oki, 937500, okim6295_device::PIN7_HIGH); //freq & pin7 taken from stlforce
m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/ql.cpp b/src/mame/drivers/ql.cpp
index d7c00923d23..080bf1d724a 100644
--- a/src/mame/drivers/ql.cpp
+++ b/src/mame/drivers/ql.cpp
@@ -254,15 +254,15 @@ READ8_MEMBER( ql_state::read )
}
if (m_qimi_enabled)
{
- data = m_qimi->read(offset, data);
+ data = m_qimi->read(space, offset, data);
}
m_cart->romoeh_w(cart_romoeh);
- data = m_cart->read(offset & 0x7fff, data);
+ data = m_cart->read(space, offset & 0x7fff, data);
m_cart->romoeh_w(0);
m_exp->romoeh_w(exp_romoeh);
- data = m_exp->read(offset, data);
+ data = m_exp->read(space, offset, data);
m_exp->romoeh_w(0);
return data;
@@ -309,14 +309,14 @@ WRITE8_MEMBER( ql_state::write )
}
if (m_qimi_enabled)
{
- m_qimi->write(offset, data);
+ m_qimi->write(space, offset, data);
}
m_cart->romoeh_w(0);
- m_cart->write(offset & 0x7fff, data);
+ m_cart->write(space, offset & 0x7fff, data);
m_exp->romoeh_w(0);
- m_exp->write(offset, data);
+ m_exp->write(space, offset, data);
}
@@ -895,14 +895,13 @@ void ql_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( ql )
+// MACHINE_CONFIG( ql )
//-------------------------------------------------
-void ql_state::ql(machine_config &config)
-{
+MACHINE_CONFIG_START(ql_state::ql)
// basic machine hardware
- M68008(config, m_maincpu, X1/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &ql_state::ql_mem);
+ MCFG_DEVICE_ADD(m_maincpu, M68008, X1/2)
+ MCFG_DEVICE_PROGRAM_MAP(ql_mem)
I8749(config, m_ipc, X4);
m_ipc->set_addrmap(AS_IO, &ql_state::ipc_io);
@@ -913,16 +912,17 @@ void ql_state::ql(machine_config &config)
m_ipc->bus_in_cb().set(FUNC(ql_state::ipc_bus_r));
// video hardware
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50.08);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
- screen.set_screen_update(ZX8301_TAG, FUNC(zx8301_device::screen_update));
- screen.set_size(960, 312);
- screen.set_visarea(0, 512-1, 0, 256-1);
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50.08)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
+ MCFG_SCREEN_UPDATE_DEVICE(ZX8301_TAG, zx8301_device, screen_update)
+ MCFG_SCREEN_SIZE(960, 312)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
// sound hardware
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
// devices
ZX8301(config, m_zx8301, X1, m_maincpu);
@@ -954,44 +954,43 @@ void ql_state::ql(machine_config &config)
RS232_PORT(config, m_ser2, default_rs232_devices, nullptr); // wired as DTE
m_ser2->cts_handler().set(m_zx8302, FUNC(zx8302_device::write_cts2));
- QL_EXPANSION_SLOT(config, m_exp, 0, ql_expansion_cards, nullptr); // FIXME: what's the clock on the slot?
- //m_exp->ipl0l_wr_callback().set();
- //m_exp->ipl1l_wr_callback().set();(
- //m_exp->berrl_wr_callback().set();
- m_exp->extintl_wr_callback().set(FUNC(ql_state::exp_extintl_w));
+ MCFG_DEVICE_ADD("exp", QL_EXPANSION_SLOT, 0, ql_expansion_cards, nullptr) // FIXME: what's the clock on the slot?
+ //MCFG_QL_EXPANSION_SLOT_IPL0L_CALLBACK()
+ //MCFG_QL_EXPANSION_SLOT_IPL1L_CALLBACK()
+ //MCFG_QL_EXPANSION_SLOT_BERRL_CALLBACK()
+ MCFG_QL_EXPANSION_SLOT_EXTINTL_CALLBACK(WRITELINE(*this, ql_state, exp_extintl_w))
- QL_ROM_CARTRIDGE_SLOT(config, m_cart, ql_rom_cartridge_cards, nullptr);
+ MCFG_DEVICE_ADD("rom", QL_ROM_CARTRIDGE_SLOT, ql_rom_cartridge_cards, nullptr)
QIMI(config, m_qimi, 0);
m_qimi->extint_wr_callback().set(FUNC(ql_state::qimi_extintl_w));
// software lists
- SOFTWARE_LIST(config, "cart_list").set_original("ql_cart");
- SOFTWARE_LIST(config, "cass_list").set_original("ql_cass");
- SOFTWARE_LIST(config, "flop_list").set_original("ql_flop");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "ql_cart")
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "ql_cass")
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "ql_flop")
// internal ram
RAM(config, m_ram).set_default_size("128K");
-}
+MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( ql_ntsc )
+// MACHINE_CONFIG( ql_ntsc )
//-------------------------------------------------
-void ql_state::ql_ntsc(machine_config &config)
-{
+MACHINE_CONFIG_START(ql_state::ql_ntsc)
ql(config);
// video hardware
- screen_device &screen(*subdevice<screen_device>(SCREEN_TAG));
- screen.set_refresh_hz(60);
- screen.set_size(960, 262);
- screen.set_visarea(0, 512-1, 0, 256-1);
- }
+ MCFG_SCREEN_MODIFY(SCREEN_TAG)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(960, 262)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( opd )
+// MACHINE_CONFIG( opd )
//-------------------------------------------------
void ql_state::opd(machine_config &config)
@@ -1004,7 +1003,7 @@ void ql_state::opd(machine_config &config)
/*
//-------------------------------------------------
-// machine_config( megaopd )
+// MACHINE_CONFIG( megaopd )
//-------------------------------------------------
void ql_state::megaopd(machine_config &config)
diff --git a/src/mame/drivers/quakeat.cpp b/src/mame/drivers/quakeat.cpp
index 5b575462c74..e7738bcf74d 100644
--- a/src/mame/drivers/quakeat.cpp
+++ b/src/mame/drivers/quakeat.cpp
@@ -124,27 +124,27 @@ void quakeat_state::machine_start()
}
/*************************************************************/
-void quakeat_state::quake(machine_config &config)
-{
+MACHINE_CONFIG_START(quakeat_state::quake)
/* basic machine hardware */
- PENTIUM2(config, m_maincpu, 233000000); /* Pentium II, 233MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &quakeat_state::quake_map);
- m_maincpu->set_addrmap(AS_IO, &quakeat_state::quake_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", PENTIUM2, 233000000) /* Pentium II, 233MHz */
+ MCFG_DEVICE_PROGRAM_MAP(quake_map)
+ MCFG_DEVICE_IO_MAP(quake_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
pcat_common(config);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(quakeat_state::screen_update_quake));
- screen.set_palette("palette");
-
- PALETTE(config, "palette").set_entries(0x100);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(quakeat_state, screen_update_quake)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 0x100)
+
+MACHINE_CONFIG_END
ROM_START(quake)
diff --git a/src/mame/drivers/quasar.cpp b/src/mame/drivers/quasar.cpp
index 3edcfd88703..d52d2abefa1 100644
--- a/src/mame/drivers/quasar.cpp
+++ b/src/mame/drivers/quasar.cpp
@@ -343,6 +343,7 @@ void quasar_state::quasar(machine_config &config)
SPEAKER(config, "speaker").front_center();
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/queen.cpp b/src/mame/drivers/queen.cpp
index 2d4e875db57..ff1e9cf2af0 100644
--- a/src/mame/drivers/queen.cpp
+++ b/src/mame/drivers/queen.cpp
@@ -283,10 +283,10 @@ void queen_state::machine_reset()
MACHINE_CONFIG_START(queen_state::queen)
- PENTIUM3(config, m_maincpu, 533000000/16); // Celeron or Pentium 3, 533 Mhz
- m_maincpu->set_addrmap(AS_PROGRAM, &queen_state::queen_map);
- m_maincpu->set_addrmap(AS_IO, &queen_state::queen_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", PENTIUM3, 533000000/16) // Celeron or Pentium 3, 533 Mhz
+ MCFG_DEVICE_PROGRAM_MAP(queen_map)
+ MCFG_DEVICE_IO_MAP(queen_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
pcat_common(config);
diff --git a/src/mame/drivers/quickpick5.cpp b/src/mame/drivers/quickpick5.cpp
index 597dc1de381..a71f39a66c9 100644
--- a/src/mame/drivers/quickpick5.cpp
+++ b/src/mame/drivers/quickpick5.cpp
@@ -119,11 +119,11 @@ READ8_MEMBER(quickpick5_state::vram_r)
offset |= 0x800;
if ((offset >= 0x800) && (offset <= 0x880))
{
- return m_k051649->k051649_waveform_r(offset & 0x7f);
+ return m_k051649->k051649_waveform_r(space, offset & 0x7f);
}
else if ((offset >= 0x8e0) && (offset <= 0x8ff))
{
- return m_k051649->k051649_test_r();
+ return m_k051649->k051649_test_r(space, offset-0x8e0);
}
}
@@ -143,26 +143,26 @@ WRITE8_MEMBER(quickpick5_state::vram_w)
offset |= 0x800;
if ((offset >= 0x800) && (offset < 0x880))
{
- m_k051649->k051649_waveform_w(offset-0x800, data);
+ m_k051649->k051649_waveform_w(space, offset-0x800, data);
return;
}
else if (offset < 0x88a)
{
- m_k051649->k051649_frequency_w(offset-0x880, data);
+ m_k051649->k051649_frequency_w(space, offset-0x880, data);
return;
}
else if (offset < 0x88f)
{
- m_k051649->k051649_volume_w(offset-0x88a, data);
+ m_k051649->k051649_volume_w(space, offset-0x88a, data);
return;
}
else if (offset < 0x890)
{
- m_k051649->k051649_keyonoff_w(data);
+ m_k051649->k051649_keyonoff_w(space, 0, data);
return;
}
- m_k051649->k051649_test_w(data);
+ m_k051649->k051649_test_w(space, offset-0x8e0, data);
return;
}
diff --git a/src/mame/drivers/quizdna.cpp b/src/mame/drivers/quizdna.cpp
index f4ed0324cc1..eb46cf5ba49 100644
--- a/src/mame/drivers/quizdna.cpp
+++ b/src/mame/drivers/quizdna.cpp
@@ -440,25 +440,25 @@ void quizdna_state::machine_start()
}
-void quizdna_state::quizdna(machine_config &config)
-{
+MACHINE_CONFIG_START(quizdna_state::quizdna)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MCLK/2); /* 8.000 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &quizdna_state::quizdna_map);
- m_maincpu->set_addrmap(AS_IO, &quizdna_state::quizdna_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(quizdna_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, MCLK/2) /* 8.000 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(quizdna_map)
+ MCFG_DEVICE_IO_MAP(quizdna_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", quizdna_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, 56*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(quizdna_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, 56*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(quizdna_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_quizdna);
- PALETTE(config, m_palette).set_entries(2048);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_quizdna)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
@@ -472,27 +472,30 @@ void quizdna_state::quizdna(machine_config &config)
ymsnd.add_route(2, "mono", 0.10);
ymsnd.add_route(3, "mono", 0.40);
- OKIM6295(config, "oki", (MCLK/1024)*132, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, (MCLK/1024)*132, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
-void quizdna_state::gakupara(machine_config &config)
-{
+MACHINE_CONFIG_START(quizdna_state::gakupara)
quizdna(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &quizdna_state::gakupara_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(gakupara_io_map)
-void quizdna_state::gekiretu(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(quizdna_state::gekiretu)
quizdna(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &quizdna_state::gekiretu_map);
- m_maincpu->set_addrmap(AS_IO, &quizdna_state::gekiretu_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(gekiretu_map)
+ MCFG_DEVICE_IO_MAP(gekiretu_io_map)
+
+MACHINE_CONFIG_END
/****************************************************************************/
diff --git a/src/mame/drivers/quizo.cpp b/src/mame/drivers/quizo.cpp
index 4ff533680ee..25843af8f95 100644
--- a/src/mame/drivers/quizo.cpp
+++ b/src/mame/drivers/quizo.cpp
@@ -217,29 +217,29 @@ static INPUT_PORTS_START( quizo )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END
-void quizo_state::quizo(machine_config &config)
-{
+MACHINE_CONFIG_START(quizo_state::quizo)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL1/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &quizo_state::memmap);
- m_maincpu->set_addrmap(AS_IO, &quizo_state::portmap);
- m_maincpu->set_vblank_int("screen", FUNC(quizo_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,XTAL1/2)
+ MCFG_DEVICE_PROGRAM_MAP(memmap)
+ MCFG_DEVICE_IO_MAP(portmap)
+
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", quizo_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(320, 200);
- screen.set_visarea(0*8, 320-1, 0*8, 200-1);
- screen.set_screen_update(FUNC(quizo_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(320, 200)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 320-1, 0*8, 200-1)
+ MCFG_SCREEN_UPDATE_DRIVER(quizo_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(quizo_state::quizo_palette), 16);
/* sound hardware */
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd", XTAL2 / 16).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
ROM_START( quizo )
diff --git a/src/mame/drivers/quizpani.cpp b/src/mame/drivers/quizpani.cpp
index d9431d663ff..2e694e4cfeb 100644
--- a/src/mame/drivers/quizpani.cpp
+++ b/src/mame/drivers/quizpani.cpp
@@ -195,31 +195,32 @@ static GFXDECODE_START( gfx_quizpani )
GFXDECODE_END
-void quizpani_state::quizpani(machine_config &config)
-{
- M68000(config, m_maincpu, 10000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &quizpani_state::quizpani_map);
- m_maincpu->set_vblank_int("screen", FUNC(quizpani_state::irq4_line_hold));
- m_maincpu->set_periodic_int(FUNC(quizpani_state::irq1_line_hold), attotime::from_hz(164)); // music tempo
+MACHINE_CONFIG_START(quizpani_state::quizpani)
+ MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
+ MCFG_DEVICE_PROGRAM_MAP(quizpani_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", quizpani_state, irq4_line_hold)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(quizpani_state, irq1_line_hold, 164) // music tempo
GFXDECODE(config, m_gfxdecode, "palette", gfx_quizpani);
PALETTE(config, "palette").set_format(palette_device::RRRRGGGGBBBBRGBx, 0x200);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 48*8-1, 0*8, 28*8-1);
- screen.set_screen_update(FUNC(quizpani_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(quizpani_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 16000000/4, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("oki", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
nmk112_device &nmk112(NMK112(config, "nmk112", 0));
nmk112.set_rom0_tag("oki");
-}
+MACHINE_CONFIG_END
ROM_START( quizpani )
ROM_REGION( 0x340000, "maincpu", 0 ) /* 68000 Code */
diff --git a/src/mame/drivers/quizshow.cpp b/src/mame/drivers/quizshow.cpp
index c71362a31ff..1cada31386d 100644
--- a/src/mame/drivers/quizshow.cpp
+++ b/src/mame/drivers/quizshow.cpp
@@ -414,6 +414,7 @@ void quizshow_state::quizshow(machine_config &config)
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}
diff --git a/src/mame/drivers/qvt201.cpp b/src/mame/drivers/qvt201.cpp
index 660628f8057..13c232924db 100644
--- a/src/mame/drivers/qvt201.cpp
+++ b/src/mame/drivers/qvt201.cpp
@@ -99,10 +99,9 @@ void qvt201_state::mem_map(address_map &map)
static INPUT_PORTS_START( qvt201 )
INPUT_PORTS_END
-void qvt201_state::qvt201(machine_config &config)
-{
- Z80(config, m_maincpu, 3.6864_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &qvt201_state::mem_map); // IORQ is not used at all
+MACHINE_CONFIG_START(qvt201_state::qvt201)
+ MCFG_DEVICE_ADD("maincpu", Z80, 3.6864_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map) // IORQ is not used at all
input_merger_device &mainint(INPUT_MERGER_ANY_HIGH(config, "mainint")); // open collector
mainint.output_handler().set_inputline("maincpu", INPUT_LINE_IRQ0);
@@ -110,11 +109,11 @@ void qvt201_state::qvt201(machine_config &config)
input_merger_device &mainnmi(INPUT_MERGER_ALL_HIGH(config, "mainnmi"));
mainnmi.output_handler().set_inputline("maincpu", INPUT_LINE_NMI);
- scn2681_device &duart(SCN2681(config, "duart", 3.6864_MHz_XTAL)); // XTAL not directly connected
- duart.irq_cb().set("mainint", FUNC(input_merger_device::in_w<1>));
- duart.a_tx_cb().set(m_eia, FUNC(rs232_port_device::write_txd));
- duart.b_tx_cb().set("aux", FUNC(rs232_port_device::write_txd));
- duart.outport_cb().set(FUNC(qvt201_state::duart_out_w));
+ MCFG_DEVICE_ADD("duart", SCN2681, 3.6864_MHz_XTAL) // XTAL not directly connected
+ MCFG_MC68681_IRQ_CALLBACK(WRITELINE("mainint", input_merger_device, in_w<1>))
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE(m_eia, rs232_port_device, write_txd))
+ MCFG_MC68681_B_TX_CALLBACK(WRITELINE("aux", rs232_port_device, write_txd))
+ MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, qvt201_state, duart_out_w))
RS232_PORT(config, m_eia, default_rs232_devices, nullptr);
m_eia->rxd_handler().set("duart", FUNC(scn2681_device::rx_a_w));
@@ -135,7 +134,7 @@ void qvt201_state::qvt201(machine_config &config)
crtc.intr_callback().set("mainint", FUNC(input_merger_device::in_w<0>));
crtc.breq_callback().set("mainnmi", FUNC(input_merger_device::in_w<0>));
crtc.set_screen("screen");
-}
+MACHINE_CONFIG_END
/**************************************************************************************************************
diff --git a/src/mame/drivers/qvt70.cpp b/src/mame/drivers/qvt70.cpp
index 1af2ab9274d..28843e0e806 100644
--- a/src/mame/drivers/qvt70.cpp
+++ b/src/mame/drivers/qvt70.cpp
@@ -32,11 +32,10 @@ void qvt70_state::mem_map(address_map &map)
static INPUT_PORTS_START( qvt70 )
INPUT_PORTS_END
-void qvt70_state::qvt70(machine_config &config)
-{
- Z80(config, m_maincpu, 2'000'000);
- m_maincpu->set_addrmap(AS_PROGRAM, &qvt70_state::mem_map);
-}
+MACHINE_CONFIG_START(qvt70_state::qvt70)
+ MCFG_DEVICE_ADD("maincpu", Z80, 2'000'000)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+MACHINE_CONFIG_END
/**************************************************************************************************************
diff --git a/src/mame/drivers/qx10.cpp b/src/mame/drivers/qx10.cpp
index 7a90afdfec6..d391bf7047e 100644
--- a/src/mame/drivers/qx10.cpp
+++ b/src/mame/drivers/qx10.cpp
@@ -471,12 +471,12 @@ WRITE8_MEMBER(qx10_state::memory_write_byte)
WRITE8_MEMBER(qx10_state::mc146818_w)
{
- m_rtc->write(!offset, data);
+ m_rtc->write(space, !offset, data);
}
READ8_MEMBER(qx10_state::mc146818_r)
{
- return m_rtc->read(!offset);
+ return m_rtc->read(space, !offset);
}
WRITE_LINE_MEMBER(qx10_state::keyboard_irq)
@@ -723,10 +723,10 @@ static void keyboard(device_slot_interface &device)
MACHINE_CONFIG_START(qx10_state::qx10)
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLK / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &qx10_state::qx10_mem);
- m_maincpu->set_addrmap(AS_IO, &qx10_state::qx10_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_master", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu",Z80, MAIN_CLK / 4)
+ MCFG_DEVICE_PROGRAM_MAP(qx10_mem)
+ MCFG_DEVICE_IO_MAP(qx10_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_master", pic8259_device, inta_cb)
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
@@ -735,7 +735,7 @@ MACHINE_CONFIG_START(qx10_state::qx10)
m_screen->set_screen_update(FUNC(qx10_state::screen_update));
m_screen->set_size(640, 480);
m_screen->set_visarea(0, 640-1, 0, 480-1);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_qx10);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_qx10)
PALETTE(config, m_palette, FUNC(qx10_state::qx10_palette), 8);
/* Devices */
@@ -801,8 +801,8 @@ MACHINE_CONFIG_START(qx10_state::qx10)
UPD7220(config, m_hgdc, MAIN_CLK/6); // unk clock
m_hgdc->set_addrmap(0, &qx10_state::upd7220_map);
- m_hgdc->set_display_pixels(FUNC(qx10_state::hgdc_display_pixels));
- m_hgdc->set_draw_text(FUNC(qx10_state::hgdc_draw_text));
+ m_hgdc->set_display_pixels_callback(FUNC(qx10_state::hgdc_display_pixels), this);
+ m_hgdc->set_draw_text_callback(FUNC(qx10_state::hgdc_draw_text), this);
m_hgdc->set_screen("screen");
MC146818(config, m_rtc, 32.768_kHz_XTAL);
@@ -824,9 +824,9 @@ MACHINE_CONFIG_START(qx10_state::qx10)
RAM(config, RAM_TAG).set_default_size("256K");
// software lists
- SOFTWARE_LIST(config, "flop_list").set_original("qx10_flop");
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "qx10_flop")
- MCFG_QUICKLOAD_ADD("quickload", qx10_state, qx10, "com,cpm", attotime::from_seconds(3))
+ MCFG_QUICKLOAD_ADD("quickload", qx10_state, qx10, "com,cpm", 3)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/r2dtank.cpp b/src/mame/drivers/r2dtank.cpp
index dff5a7cfa5a..7714c7d9f44 100644
--- a/src/mame/drivers/r2dtank.cpp
+++ b/src/mame/drivers/r2dtank.cpp
@@ -30,9 +30,6 @@ other = M5L8226 (x2)
RAM = 4116 (x11)
----------------------------------------------------
-
-XTAL values appear to be 3579.545 (X1) and 11.200 (X2).
-
********************************************************************/
#include "emu.h"
@@ -52,7 +49,7 @@ XTAL values appear to be 3579.545 (X1) and 11.200 (X2).
#define LOG_AUDIO_COMM (0)
-#define MAIN_CPU_MASTER_CLOCK (11.2_MHz_XTAL)
+#define MAIN_CPU_MASTER_CLOCK (11200000)
#define PIXEL_CLOCK (MAIN_CPU_MASTER_CLOCK / 2)
#define CRTC_CLOCK (MAIN_CPU_MASTER_CLOCK / 16)
@@ -201,10 +198,10 @@ READ8_MEMBER(r2dtank_state::AY8910_port_r)
uint8_t ret = 0;
if (m_AY8910_selected & 0x08)
- ret = m_ay1->data_r();
+ ret = m_ay1->data_r(space, 0);
if (m_AY8910_selected & 0x10)
- ret = m_ay2->data_r();
+ ret = m_ay2->data_r(space, 0);
return ret;
}
@@ -213,10 +210,10 @@ READ8_MEMBER(r2dtank_state::AY8910_port_r)
WRITE8_MEMBER(r2dtank_state::AY8910_port_w)
{
if (m_AY8910_selected & 0x08)
- m_ay1->data_address_w(m_AY8910_selected >> 2, data);
+ m_ay1->data_address_w(space, m_AY8910_selected >> 2, data);
if (m_AY8910_selected & 0x10)
- m_ay2->data_address_w(m_AY8910_selected >> 2, data);
+ m_ay2->data_address_w(space, m_AY8910_selected >> 2, data);
}
@@ -327,7 +324,7 @@ MC6845_UPDATE_ROW( r2dtank_state::crtc_update_row )
WRITE8_MEMBER(r2dtank_state::pia_comp_w)
{
- m_pia_main->write(offset, ~data);
+ m_pia_main->write(machine().dummy_space(), offset, ~data);
}
@@ -445,20 +442,19 @@ INPUT_PORTS_END
*
*************************************/
-void r2dtank_state::r2dtank(machine_config &config)
-{
- MC6809(config, m_maincpu, MAIN_CPU_MASTER_CLOCK / 4); // divider guessed
- m_maincpu->set_addrmap(AS_PROGRAM, &r2dtank_state::r2dtank_main_map);
+MACHINE_CONFIG_START(r2dtank_state::r2dtank)
+ MCFG_DEVICE_ADD("maincpu", M6809,3000000) /* ?? too fast ? */
+ MCFG_DEVICE_PROGRAM_MAP(r2dtank_main_map)
- M6802(config, m_audiocpu, 3.579545_MHz_XTAL);
- m_audiocpu->set_addrmap(AS_PROGRAM, &r2dtank_state::r2dtank_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6802,3000000) /* ?? */
+ MCFG_DEVICE_PROGRAM_MAP(r2dtank_audio_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(PIXEL_CLOCK, 360, 0, 256, 276, 0, 224);
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 256, 0, 256, 256, 0, 256) /* temporary, CRTC will configure screen */
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
PALETTE(config, m_palette, palette_device::BGR_3BIT);
@@ -500,15 +496,16 @@ void r2dtank_state::r2dtank(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
GENERIC_LATCH_8(config, m_soundlatch2);
- AY8910(config, m_ay1, 3.579545_MHz_XTAL / 4); // probably E clock from MC6802
+ AY8910(config, m_ay1, (4000000 / 4));
m_ay1->port_a_read_callback().set_ioport("DSWB");
m_ay1->add_route(ALL_OUTPUTS, "mono", 0.25);
- AY8910(config, m_ay2, 3.579545_MHz_XTAL / 4);
+ AY8910(config, m_ay2, (4000000 / 4));
m_ay2->port_a_read_callback().set_ioport("IN1");
m_ay2->port_b_read_callback().set_ioport("DSWA");
m_ay2->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/r9751.cpp b/src/mame/drivers/r9751.cpp
index 72b20893e84..6ad473ad72d 100644
--- a/src/mame/drivers/r9751.cpp
+++ b/src/mame/drivers/r9751.cpp
@@ -52,11 +52,8 @@
#include "cpu/m68000/m68000.h"
#include "machine/terminal.h"
-#include "machine/nscsi_bus.h"
-#include "machine/nscsi_cd.h"
-#include "machine/nscsi_hd.h"
-
-#include "machine/wd33c9x.h"
+#include "bus/scsi/scsi.h"
+#include "machine/wd33c93.h"
#include "machine/pdc.h"
#include "machine/smioc.h"
@@ -88,7 +85,7 @@ public:
m_maincpu(*this, "maincpu"),
m_pdc(*this, "pdc"),
m_smioc(*this, "smioc"),
- m_wd33c93(*this, "scsi:7:wd33c93"),
+ m_wd33c93(*this, "wd33c93"),
m_main_ram(*this, "main_ram")
{
device_trace_init();
@@ -169,9 +166,6 @@ private:
void device_trace_disable(int device);
void* system_trace_context;
-
- static void scsi_devices(device_slot_interface &device);
- void wd33c93(device_t *device);
};
#if ENABLE_TRACE_ALL_DEVICES
@@ -963,25 +957,11 @@ INPUT_PORTS_END
Machine Drivers
******************************************************************************/
-void r9751_state::scsi_devices(device_slot_interface &device)
-{
- device.option_add("cdrom", NSCSI_CDROM);
- device.option_add("harddisk", NSCSI_HARDDISK);
-}
-
-void r9751_state::wd33c93(device_t *device)
-{
- device->set_clock(10000000);
- // downcast<wd33c93a_device *>(device)->irq_cb().set(*this, FUNC(r9751_state::scsi_irq_w));
- // downcast<wd33c93a_device *>(device)->drq_cb().set(*this, FUNC(r9751_state::scsi_drq_w));
-}
-
-void r9751_state::r9751(machine_config &config)
-{
+MACHINE_CONFIG_START(r9751_state::r9751)
/* basic machine hardware */
- M68030(config, m_maincpu, 20000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &r9751_state::r9751_mem);
- config.m_minimum_quantum = attotime::from_hz(1000);
+ MCFG_DEVICE_ADD("maincpu", M68030, 20000000)
+ MCFG_DEVICE_PROGRAM_MAP(r9751_mem)
+ MCFG_QUANTUM_TIME(attotime::from_hz(1000))
/* i/o hardware */
SMIOC(config, m_smioc, 0);
@@ -992,20 +972,13 @@ void r9751_state::r9751(machine_config &config)
PDC(config, m_pdc, 0);
m_pdc->m68k_r_callback().set(FUNC(r9751_state::pdc_dma_r));
m_pdc->m68k_w_callback().set(FUNC(r9751_state::pdc_dma_w));
-
- NSCSI_BUS(config, "scsi", 0);
- NSCSI_CONNECTOR(config, "scsi:0", scsi_devices, nullptr, false);
- NSCSI_CONNECTOR(config, "scsi:1", scsi_devices, "harddisk", false);
- NSCSI_CONNECTOR(config, "scsi:3", scsi_devices, nullptr, false);
- NSCSI_CONNECTOR(config, "scsi:4", scsi_devices, "cdrom", false);
- NSCSI_CONNECTOR(config, "scsi:5", scsi_devices, nullptr, false);
- NSCSI_CONNECTOR(config, "scsi:6", scsi_devices, nullptr, false);
- NSCSI_CONNECTOR(config, "scsi:7").option_set("wd33c93", WD33C93)
- .machine_config([this](device_t *device) { wd33c93(device); });
+ MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
+ WD33C93(config, m_wd33c93);
+ m_wd33c93->set_scsi_port("scsi");
/* software list */
- SOFTWARE_LIST(config, "flop_list").set_original("r9751");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list","r9751")
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/rad_eu3a05.cpp b/src/mame/drivers/rad_eu3a05.cpp
index 4c9c33be6b3..b2f7b73f1b0 100644
--- a/src/mame/drivers/rad_eu3a05.cpp
+++ b/src/mame/drivers/rad_eu3a05.cpp
@@ -1146,27 +1146,27 @@ INTERRUPT_GEN_MEMBER(radica_eu3a05_state::interrupt)
*/
}
-void radica_eu3a05_state::radicasi(machine_config &config)
-{
+MACHINE_CONFIG_START(radica_eu3a05_state::radicasi)
+
/* basic machine hardware */
- M6502(config, m_maincpu, XTAL(21'281'370)/2); // Tetris has a XTAL(21'281'370), not confirmed on Space Invaders, actual CPU clock unknown.
- m_maincpu->set_addrmap(AS_PROGRAM, &radica_eu3a05_state::radicasi_map);
- m_maincpu->set_vblank_int("screen", FUNC(radica_eu3a05_state::interrupt));
+ MCFG_DEVICE_ADD("maincpu",M6502,XTAL(21'281'370)/2) // Tetris has a XTAL(21'281'370), not confirmed on Space Invaders, actual CPU clock unknown.
+ MCFG_DEVICE_PROGRAM_MAP(radicasi_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", radica_eu3a05_state, interrupt)
ADDRESS_MAP_BANK(config, "bank").set_map(&radica_eu3a05_state::radicasi_bank_map).set_options(ENDIANNESS_LITTLE, 8, 24, 0x8000);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_screen_update(FUNC(radica_eu3a05_state::screen_update));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_UPDATE_DRIVER(radica_eu3a05_state, screen_update)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_PALETTE_ADD("palette", 256)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_radicasi_fake);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_radicasi_fake)
radica6502_gpio_device &gpio(RADICA6502_GPIO(config, "gpio", 0));
gpio.read_0_callback().set_ioport("IN0");
@@ -1176,7 +1176,7 @@ void radica_eu3a05_state::radicasi(machine_config &config)
radica6502_sound_device &sound(RADICA6502_SOUND(config, "6ch_sound", 8000));
sound.space_read_callback().set(FUNC(radica_eu3a05_state::read_full_space));
sound.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
ROM_START( rad_tetr )
diff --git a/src/mame/drivers/rad_eu3a14.cpp b/src/mame/drivers/rad_eu3a14.cpp
index 7b0c664f2e4..10533b5ca2d 100644
--- a/src/mame/drivers/rad_eu3a14.cpp
+++ b/src/mame/drivers/rad_eu3a14.cpp
@@ -10,25 +10,22 @@
Known to be on this hardware
- name PCB ID ROM width TSOP pads ROM size SEEPROM die markings
- Golden Tee Golf Home Edition ? x16 48 4MB no ELAN EU3A14 (developed by FarSight Studios)
- Real Swing Golf 74037 x16 48 4MB no ELAN EU3A14 (developed by FarSight Studios)
- Baseball 3 ? x16 48 4MB no ELAN EU3A14 (developed by FarSight Studios)
- Connectv Football ? x16 48 4MB no ELAN EU3A14 (developed by Medialink)
- Huntin’3 ? x16 48 4MB no Elan ? (developed by V-Tac Technology Co Ltd.)
- Play TV Basketball 75029 x16 48 4MB no ELAN EU3A14
+ Golden Tee Golf Home Edition (developed by FarSight Studios)
+ Connectv Football (developed by Medialink)
- In many ways this is similar to the rad_eu3a05.cpp hardware
- but the video system has changed, here the sprites are more traditional non-tile based, rather
- than coming from 'pages'
+ Also on this hardware
+
+ name PCB ID ROM width TSOP pads ROM size SEEPROM die markings
- --
+ Real Swing Golf 74037 x16 48 not dumped no ELAN EU3A14
+ Play TV Basketball 75029 x16 48 not dumped no ELAN EU3A14
+ Baseball 3 ? x16 48 not dumped no ELAN EU3A14
- Compared to the XaviXport games camera hookups, Real Swing Golf just has 6 wires, Its camera PCB is the only one with a ceramic resonator.
- Maybe the CU5502 chip offloads some processing from the CPU?
+ Huntin’3 ? x16 48 not dumped no Elan ?
- The Basketball camera also uses an ETOMS CU5502. It’s different from the others (XaviXport + Real Swing Golf) in that the sensor is on a small PCB with
- a 3.58MHz resonator with 16 wires going to another small PCB that has a glob and a 4MHz resonator. 6 wires go from that PCB to the main game PCB.
+ In many ways this is similar to the rad_eu3a05.cpp hardware
+ but the video system has changed, here the sprites are more traditional non-tile based, rather
+ than coming from 'pages'
*/
@@ -76,29 +73,24 @@ public:
radica_eu3a14_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
- m_mainregion(*this, "maincpu"),
m_palram(*this, "palram"),
m_scrollregs(*this, "scrollregs"),
m_tilecfg(*this, "tilecfg"),
m_tilebase(*this, "tilebase"),
- m_spriteaddr(*this, "spriteaddr"),
m_spritebase(*this, "spritebase"),
m_mainram(*this, "mainram"),
m_dmaparams(*this, "dmaparams"),
m_bank(*this, "bank"),
m_palette(*this, "palette"),
- m_gfxdecode(*this, "gfxdecode"),
- m_tvtype(*this, "TV")
+ m_gfxdecode(*this, "gfxdecode")
{ }
void radica_eu3a14(machine_config &config);
void radica_eu3a14_adc(machine_config &config);
- void radica_eu3a14p(machine_config &config);
void init_rad_gtg();
void init_rad_foot();
- void init_rad_hnt3();
private:
READ8_MEMBER(irq_vector_r);
@@ -120,17 +112,6 @@ private:
DECLARE_WRITE8_MEMBER(radicasi_rombank_lo_w);
DECLARE_WRITE8_MEMBER(radicasi_rombank_hi_w);
- DECLARE_WRITE8_MEMBER(porta_dir_w);
- DECLARE_WRITE8_MEMBER(portb_dir_w);
- DECLARE_WRITE8_MEMBER(portc_dir_w);
-
- DECLARE_WRITE8_MEMBER(porta_dat_w);
- DECLARE_WRITE8_MEMBER(portb_dat_w);
- DECLARE_WRITE8_MEMBER(portc_dat_w);
-
-
- DECLARE_READ8_MEMBER(radica_5009_unk_r) { return machine().rand(); };
-
DECLARE_READ8_MEMBER(random_r) { return machine().rand(); };
TIMER_DEVICE_CALLBACK_MEMBER(scanline_cb);
@@ -150,35 +131,25 @@ private:
double hue2rgb(double p, double q, double t);
required_device<cpu_device> m_maincpu;
- required_region_ptr<uint8_t> m_mainregion;
required_shared_ptr<uint8_t> m_palram;
required_shared_ptr<uint8_t> m_scrollregs;
required_shared_ptr<uint8_t> m_tilecfg;
required_shared_ptr<uint8_t> m_tilebase;
- required_shared_ptr<uint8_t> m_spriteaddr;
required_shared_ptr<uint8_t> m_spritebase;
required_shared_ptr<uint8_t> m_mainram;
required_shared_ptr<uint8_t> m_dmaparams;
required_device<address_map_bank_device> m_bank;
required_device<palette_device> m_palette;
required_device<gfxdecode_device> m_gfxdecode;
- required_ioport m_tvtype;
uint8_t m_rombank_hi;
uint8_t m_rombank_lo;
int m_tilerambase;
int m_spriterambase;
- int m_pagewidth;
- int m_pageheight;
- int m_bytespertile;
-
- uint8_t m_portdir[3];
- void draw_tile(bitmap_ind16 &bitmap, const rectangle &cliprect, int gfxno, int tileno, int base, int palette, int flipx, int flipy, int xpos, int ypos, int transpen, int size);
void handle_palette(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_page(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int xbase, int ybase, int size);
void draw_background(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void draw_sprite_line(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int offset, int count, int pal, int flipx, int xpos, int ypos, int gfxno);
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -236,117 +207,42 @@ void radica_eu3a14_state::handle_palette(screen_device &screen, bitmap_ind16 &bi
}
}
-void radica_eu3a14_state::draw_tile(bitmap_ind16 &bitmap, const rectangle &cliprect, int gfxno, int tileno, int base, int palette, int flipx, int flipy, int xpos, int ypos, int transpen, int size)
-{
- int bppdiv = 1;
- int baseaddr = base * 256;
-
- switch (gfxno)
- {
- case 0x03: bppdiv = 1; baseaddr += tileno * 256; break; // 16x16 8bpp
- case 0x04: bppdiv = 2; baseaddr += tileno * 128; break; // 16x16 4bpp
- case 0x05: bppdiv = 1; baseaddr += tileno * 64; break; // 8x8 8bpp
- case 0x06: bppdiv = 2; baseaddr += tileno * 64; break; // 8x8 4bpp
- default: break;
- }
- const uint8_t *gfxdata = &m_mainregion[baseaddr & 0x3fffff];
-
- int xstride = size / bppdiv;
-
- int count = 0;
- for (int y = 0; y < size; y++)
- {
- int realy = ypos + y;
- uint16_t* dst = &bitmap.pix16(ypos + y);
-
- for (int x = 0; x < xstride; x++)
- {
- int pix = gfxdata[count];
-
- if (realy >= cliprect.min_y && realy <= cliprect.max_y)
- {
- if (bppdiv == 1) // 8bpp
- {
- int realx = x + xpos;
- if (realx >= cliprect.min_x && realx <= cliprect.max_x)
- {
- if (pix)
- dst[realx] = pix;
- }
- }
- else if (bppdiv == 2) // 4bpp
- {
- int realx = (x * 2) + xpos;
- if (realx >= cliprect.min_x && realx <= cliprect.max_x)
- {
- if (pix & 0xf0)
- dst[realx] = (pix & 0xf0) >> 4;
- }
-
- realx++;
-
- if (realx >= cliprect.min_x && realx <= cliprect.max_x)
- {
- if (pix & 0x0f)
- dst[realx] = pix & 0x0f;
- }
- }
- }
- count++;
- }
- }
-}
-
void radica_eu3a14_state::draw_page(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int xbase, int ybase, int size)
{
- int gfxno = 0;
-
- int pagesize = m_pagewidth * m_pageheight * 2;
+ gfx_element *gfx;
int base = (m_tilebase[1] << 8) | m_tilebase[0];
- if (m_tilecfg[2] & 0x04) // 4bpp selection
+ if (m_tilecfg[2] & 0x04)
{
- gfxno = 4; // 16x16 4bpp
+ gfx = m_gfxdecode->gfx(4);
+ base <<= 1;
if (size == 8)
{
- gfxno = 6; // 8x8 4bpp
+ gfx = m_gfxdecode->gfx(5);
+ base <<= 2;
}
}
- else // 8bpp selection
+ else
{
- gfxno = 3; // 16x16 8bpp
-
- if (size == 8)
- {
- gfxno = 5; // 8x8 8bpp
- }
+ gfx = m_gfxdecode->gfx(3);
}
int xdraw = xbase;
int ydraw = ybase;
int count = 0;
- for (int i = m_tilerambase + pagesize * which; i < m_tilerambase + pagesize * (which + 1); i += m_bytespertile)
+ for (int i = m_tilerambase+0x1c0*which; i < m_tilerambase+0x1c0*(which+1); i+=2)
{
- int tile = 0;
- if (m_bytespertile == 2)
- {
- tile = m_mainram[i + 0] | (m_mainram[i + 1] << 8);
- }
- else if (m_bytespertile == 4) // rad_foot hidden test mode, rad_hnt3 shooting range (not yet correct)
- {
- tile = m_mainram[i + 0] | (m_mainram[i + 1] << 8);// | (m_mainram[i + 2] << 16) | | (m_mainram[i + 3] << 24);
- }
+ int tile = m_mainram[i+0] | (m_mainram[i+1] << 8);
- draw_tile(bitmap, cliprect, gfxno, tile, base, 0, 0, 0, xdraw, ydraw, 0, size);
-
- xdraw += size;
+ gfx->transpen(bitmap, cliprect, tile+base, 0, 0, 0, xdraw, ydraw, 0);
+ xdraw+=size;
count++;
- if (((count % m_pagewidth) == 0))
+ if (((count % 16) == 0))
{
- xdraw -= size * m_pagewidth;
+ xdraw -= size*16;
ydraw += size;
}
}
@@ -357,87 +253,34 @@ void radica_eu3a14_state::draw_background(screen_device &screen, bitmap_ind16 &b
int xscroll = m_scrollregs[0] | (m_scrollregs[1] << 8);
int yscroll = m_scrollregs[2] | (m_scrollregs[3] << 8);
- int size;
-
- // m_tilecfg[0] b-as ?-hh b = bytes per tile s = tilesize / page size? a = always set when tilemaps are in use - check? h = related to page positions, when set uses 2x2 pages? ? = used
- // m_tilecfg[1] ---- ---? ? = used foot
- // m_tilecfg[2] ---- -B-- B = 4bpp tiles
-
- if (m_tilecfg[0] & 0x10)
- {
- size = 8;
- m_pagewidth = 32;
- m_pageheight = 28;
- }
- else
- {
- size = 16;
- m_pagewidth = 16;
- m_pageheight = 14;
- }
-
+ int size = 16;
+ // or 0x10?
if (m_tilecfg[0] & 0x80)
{
- m_bytespertile = 4;
- }
- else
- {
- m_bytespertile = 2;
+ size = 8;
}
+ draw_page(screen, bitmap, cliprect, 0, 0 - xscroll, 0 - yscroll, size);
+ draw_page(screen, bitmap, cliprect, 1, (size * 16) - xscroll, 0 - yscroll, size);
+ draw_page(screen, bitmap, cliprect, 2, 0 - xscroll, (size * 14) - yscroll, size);
+ draw_page(screen, bitmap, cliprect, 3, (size * 16) - xscroll, (size * 14) - yscroll, size);
- if ((m_tilecfg[0] & 0x03) == 0x00) // tilemaps arranged as 2x2 pages?
- {
- // normal
- draw_page(screen, bitmap, cliprect, 0, 0 - xscroll, 0 - yscroll, size);
- draw_page(screen, bitmap, cliprect, 1, (size * m_pagewidth) - xscroll, 0 - yscroll, size);
- draw_page(screen, bitmap, cliprect, 2, 0 - xscroll, (size * m_pageheight) - yscroll, size);
- draw_page(screen, bitmap, cliprect, 3, (size * m_pagewidth) - xscroll, (size * m_pageheight) - yscroll, size);
-
- // wrap x
- draw_page(screen, bitmap, cliprect, 0, (size * m_pagewidth * 2) + 0 - xscroll, 0 - yscroll, size);
- draw_page(screen, bitmap, cliprect, 1, (size * m_pagewidth * 3) - xscroll, 0 - yscroll, size);
- draw_page(screen, bitmap, cliprect, 2, (size * m_pagewidth * 2) + 0 - xscroll, (size * m_pageheight) - yscroll, size);
- draw_page(screen, bitmap, cliprect, 3, (size * m_pagewidth * 3) - xscroll, (size * m_pageheight) - yscroll, size);
-
- // wrap y
- draw_page(screen, bitmap, cliprect, 0, 0 - xscroll, (size * m_pageheight * 2) + 0 - yscroll, size);
- draw_page(screen, bitmap, cliprect, 1, (size * m_pagewidth) - xscroll, (size * m_pageheight * 2) + 0 - yscroll, size);
- draw_page(screen, bitmap, cliprect, 2, 0 - xscroll, (size * m_pageheight * 3) - yscroll, size);
- draw_page(screen, bitmap, cliprect, 3, (size * m_pagewidth) - xscroll, (size * m_pageheight * 3) - yscroll, size);
-
- // wrap x+y
- draw_page(screen, bitmap, cliprect, 0, (size * m_pagewidth * 2) + 0 - xscroll, (size * m_pageheight * 2) + 0 - yscroll, size);
- draw_page(screen, bitmap, cliprect, 1, (size * m_pagewidth * 3) - xscroll, (size * m_pageheight * 2) + 0 - yscroll, size);
- draw_page(screen, bitmap, cliprect, 2, (size * m_pagewidth * 2) + 0 - xscroll, (size * m_pageheight * 3) - yscroll, size);
- draw_page(screen, bitmap, cliprect, 3, (size * m_pagewidth * 3) - xscroll, (size * m_pageheight * 3) - yscroll, size);
- }
- else if ((m_tilecfg[0] & 0x03) == 0x03) // individual tilemaps? multiple layers?
- {
- // normal
- draw_page(screen, bitmap, cliprect, 0, 0 - xscroll, 0 - yscroll, size);
- // wrap x
- draw_page(screen, bitmap, cliprect, 0, (size * m_pagewidth) + 0 - xscroll, 0 - yscroll, size);
- // wrap y
- draw_page(screen, bitmap, cliprect, 0, 0 - xscroll, (size * m_pageheight) + 0 - yscroll, size);
- // wrap x+y
- draw_page(screen, bitmap, cliprect, 0, (size * m_pagewidth) + 0 - xscroll, (size * m_pageheight) + 0 - yscroll, size);
- }
- else
- {
- popmessage("m_tilecfg[0] & 0x03 unknown config");
- }
+ draw_page(screen, bitmap, cliprect, 0, (size * 16 * 2) + 0 - xscroll, 0 - yscroll, size);
+ draw_page(screen, bitmap, cliprect, 1, (size * 16 * 3) - xscroll, 0 - yscroll, size);
+ draw_page(screen, bitmap, cliprect, 2, (size * 16 * 2) + 0 - xscroll, (size * 14) - yscroll, size);
+ draw_page(screen, bitmap, cliprect, 3, (size * 16 * 3) - xscroll, (size * 14) - yscroll, size);
-}
+ draw_page(screen, bitmap, cliprect, 0, 0 - xscroll, (size * 14 * 2) + 0 - yscroll, size);
+ draw_page(screen, bitmap, cliprect, 1, (size * 16) - xscroll, (size * 14 * 2) + 0 - yscroll, size);
+ draw_page(screen, bitmap, cliprect, 2, 0 - xscroll, (size * 14 * 3) - yscroll, size);
+ draw_page(screen, bitmap, cliprect, 3, (size * 16) - xscroll, (size * 14 * 3) - yscroll, size);
-void radica_eu3a14_state::draw_sprite_line(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int offset, int count, int pal, int flipx, int xpos, int ypos, int gfxno)
-{
- int tileno = offset + count;
- gfx_element *gfx = m_gfxdecode->gfx(gfxno);
- gfx->transpen(bitmap, cliprect, tileno, pal, flipx, 0, xpos, ypos, 0);
+ draw_page(screen, bitmap, cliprect, 0, (size * 16 * 2) + 0 - xscroll, (size * 14 * 2) + 0 - yscroll, size);
+ draw_page(screen, bitmap, cliprect, 1, (size * 16 * 3) - xscroll, (size * 14 * 2) + 0 - yscroll, size);
+ draw_page(screen, bitmap, cliprect, 2, (size * 16 * 2) + 0 - xscroll, (size * 14 * 3) - yscroll, size);
+ draw_page(screen, bitmap, cliprect, 3, (size * 16 * 3) - xscroll, (size * 14 * 3) - yscroll, size);
}
-
void radica_eu3a14_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// first 4 sprite entries seem to be garbage sprites, so we start at 0x20
@@ -500,7 +343,8 @@ void radica_eu3a14_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitm
int offset = ((m_mainram[i + 5] << 8) + (m_mainram[i + 4] << 0));
int extra = m_mainram[i + 6];
- int gfxno = 1;
+ gfx_element *gfx;
+ gfx = m_gfxdecode->gfx(1);
int spritebase = (m_spritebase[1] << 8) | m_spritebase[0];
@@ -513,17 +357,16 @@ void radica_eu3a14_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitm
case 0x00: // 8bpp
case 0x07: // 8bpp
offset >>= 1;
- gfxno = 2;
+ gfx = m_gfxdecode->gfx(2);
break;
case 0x02: // 2bpp
offset <<= 1;
- gfxno = 0;
+ gfx = m_gfxdecode->gfx(0);
pal = 0;
break;
case 0x04: // 4bpp
- gfxno = 1;
break;
case 0x01: // unknowns
@@ -543,7 +386,7 @@ void radica_eu3a14_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitm
{
for (int xx = 0; xx < width; xx++)
{
- draw_sprite_line(screen, bitmap, cliprect, offset, count, pal, flipx, x + xx * 8, y + yy, gfxno);
+ gfx->transpen(bitmap, cliprect, offset + count, pal, flipx, 0, x + xx * 8, y + yy, 0);
count++;
}
}
@@ -555,8 +398,6 @@ void radica_eu3a14_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitm
uint32_t radica_eu3a14_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- m_spriterambase = (m_spriteaddr[0] * 0x200) - 0x200;
-
bitmap.fill(0, cliprect);
handle_palette(screen, bitmap, cliprect);
@@ -632,41 +473,10 @@ READ8_MEMBER(radica_eu3a14_state::radicasi_pal_ntsc_r)
// how best to handle this, we probably need to run the PAL machine at 50hz
// the text under the radica logo differs between regions
logerror("%s: radicasi_pal_ntsc_r (region + more?)\n", machine().describe_context());
- return m_tvtype->read();
-}
-
-WRITE8_MEMBER(radica_eu3a14_state::porta_dir_w)
-{
- m_portdir[0] = data;
- // update state
-}
-
-WRITE8_MEMBER(radica_eu3a14_state::portb_dir_w)
-{
- m_portdir[1] = data;
- // update state
-}
-
-WRITE8_MEMBER(radica_eu3a14_state::portc_dir_w)
-{
- m_portdir[2] = data;
- // update state
-}
-
-WRITE8_MEMBER(radica_eu3a14_state::porta_dat_w)
-{
-}
-
-WRITE8_MEMBER(radica_eu3a14_state::portb_dat_w)
-{
-}
-
-WRITE8_MEMBER(radica_eu3a14_state::portc_dat_w)
-{
+ return 0xff; // NTSC
+ //return 0x00; // PAL
}
-
-
void radica_eu3a14_state::bank_map(address_map &map)
{
map(0x000000, 0x3fffff).rom().region("maincpu", 0);
@@ -680,12 +490,9 @@ void radica_eu3a14_state::radica_eu3a14_map(address_map &map)
map(0x4800, 0x4bff).ram().share("palram");
// similar to eu3a05, at least for pal flags and rom banking
- // 5001 write
- // 5004 write
- // 5006 write
map(0x5007, 0x5007).noprw();
- map(0x5008, 0x5008).nopw(); // startup (read too)
- map(0x5009, 0x5009).r(FUNC(radica_eu3a14_state::radica_5009_unk_r)); // rad_hnt3 polls this on startup
+ map(0x5008, 0x5008).nopw(); // startup
+ map(0x5009, 0x5009).noprw();
map(0x500a, 0x500a).nopw(); // startup
map(0x500b, 0x500b).r(FUNC(radica_eu3a14_state::radicasi_pal_ntsc_r)).nopw(); // PAL / NTSC flag at least
map(0x500c, 0x500c).w(FUNC(radica_eu3a14_state::radicasi_rombank_hi_w));
@@ -694,23 +501,18 @@ void radica_eu3a14_state::radica_eu3a14_map(address_map &map)
// DMA is similar to, but not the same as eu3a05
map(0x500f, 0x5017).ram().share("dmaparams");
map(0x5018, 0x5018).rw(FUNC(radica_eu3a14_state::dma_trigger_r), FUNC(radica_eu3a14_state::dma_trigger_w));
- // 5019 - 46 on startup (hnt3) 22 (bb3, foot) na (gtg) 09 (rsg)
- // 501a - 01 on startup (hnt3) 03 (bb3, foot) na (gtg) 02,01 (rsg)
// probably GPIO like eu3a05, although it access 47/48 as unknown instead of 48/49/4a
- map(0x5040, 0x5040).w(FUNC(radica_eu3a14_state::porta_dir_w));
- map(0x5041, 0x5041).portr("IN0").w(FUNC(radica_eu3a14_state::porta_dat_w));
- map(0x5042, 0x5042).w(FUNC(radica_eu3a14_state::portb_dir_w));
- map(0x5043, 0x5043).portr("IN1").w(FUNC(radica_eu3a14_state::portb_dat_w));
- map(0x5044, 0x5044).w(FUNC(radica_eu3a14_state::portc_dir_w));
- map(0x5045, 0x5045).portr("IN2").w(FUNC(radica_eu3a14_state::portc_dat_w));
-
+ map(0x5040, 0x5040).nopw();
+ map(0x5041, 0x5041).portr("IN0");
+ map(0x5042, 0x5042).nopw();
+ map(0x5043, 0x5043).noprw();
+ map(0x5044, 0x5044).nopw();
+ map(0x5045, 0x5045).portr("IN1").nopw();
map(0x5046, 0x5046).nopw();
map(0x5047, 0x5047).nopw();
map(0x5048, 0x5048).nopw();
- // 5060 - 506e r/w during startup on foot
-
// sound appears to be the same as eu3a05
map(0x5080, 0x5091).rw("6ch_sound", FUNC(radica6502_sound_device::radicasi_sound_addr_r), FUNC(radica6502_sound_device::radicasi_sound_addr_w));
map(0x5092, 0x50a3).rw("6ch_sound", FUNC(radica6502_sound_device::radicasi_sound_size_r), FUNC(radica6502_sound_device::radicasi_sound_size_w));
@@ -719,22 +521,19 @@ void radica_eu3a14_state::radica_eu3a14_map(address_map &map)
map(0x50a6, 0x50a6).nopw(); // startup
map(0x50a7, 0x50a7).nopw(); // startup
map(0x50a8, 0x50a8).r("6ch_sound", FUNC(radica6502_sound_device::radicasi_50a8_r));
- map(0x50a9, 0x50a9).nopw(); // startup, read foot
+ map(0x50a9, 0x50a9).nopw(); // startup
// video regs are here this time
map(0x5100, 0x5100).ram();
- map(0x5101, 0x5101).ram();
- map(0x5102, 0x5102).ram();
map(0x5103, 0x5106).ram();
map(0x5107, 0x5107).ram(); // on transitions, maybe layer disables?
+
map(0x5110, 0x5112).ram().share("tilecfg");
map(0x5113, 0x5113).ram(); // written with tilebase?
map(0x5114, 0x5115).ram().share("tilebase");
map(0x5116, 0x5117).ram();
map(0x5121, 0x5124).ram().share("scrollregs");
-
- map(0x5140, 0x5140).ram();
- map(0x5150, 0x5150).ram().share("spriteaddr"); // startup 01 bb3,gtg,rsg, (na) foot 0c hnt3
+ map(0x5150, 0x5150).ram(); // startup
map(0x5151, 0x5152).ram().share("spritebase");
map(0x5153, 0x5153).ram(); // startup
@@ -790,36 +589,10 @@ static INPUT_PORTS_START( rad_gtg )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) // up and down in the menus should be the trackball
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) // up and down in the menus should be the trackball, maybe these are leftovers from real swing golf or just from development?
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
PORT_START("IN1")
- PORT_DIPNAME( 0x01, 0x01, "IN1" )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("IN2")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_DIPNAME( 0x08, 0x08, "Track Y test" ) // trackball up/down direction bit? (read in interrupt, increases / decreases a counter)
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
@@ -829,93 +602,10 @@ static INPUT_PORTS_START( rad_gtg )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("TV")
- PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( rad_rsg ) // base unit just has 4 directions + enter and a sensor to swing the club over
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) // aiming
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) // select in menus?
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) // previous in menus?
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) // next in menus?
- PORT_DIPNAME( 0x20, 0x20, "IN0" )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("IN1")
- PORT_DIPNAME( 0x01, 0x01, "IN1" )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("IN2")
- PORT_DIPNAME( 0x01, 0x01, "IN2" )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("TV")
- PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( rad_rsgp )
- PORT_INCLUDE(rad_rsg)
-
- PORT_MODIFY("TV")
- PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
// hold enter and left during power on for test mode
-static INPUT_PORTS_START( radica_foot )
+static INPUT_PORTS_START( radica_eu3a14 )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
@@ -961,268 +651,6 @@ static INPUT_PORTS_START( radica_foot )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("IN2")
- PORT_DIPNAME( 0x01, 0x01, "IN2" )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("TV")
- PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( radica_hnt3 )
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Menu Previous")
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Menu Next")
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Menu Select")
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON4 ) // pause?
-
- PORT_START("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Fire Gun") // maybe
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Safety") PORT_TOGGLE
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Fire Gun (alt)") // maybe
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("IN2")
- PORT_DIPNAME( 0x01, 0x01, "IN2" )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("TV")
- PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( radica_hnt3p )
- PORT_INCLUDE(radica_hnt3)
-
- PORT_MODIFY("TV")
- PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( radica_bask )
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
- PORT_DIPNAME( 0x08, 0x08, "IN0" )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("IN1")
- PORT_DIPNAME( 0x01, 0x01, "IN1" )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("IN2")
- PORT_DIPNAME( 0x01, 0x01, "IN2" )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("TV")
- PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( radica_baskp )
- PORT_INCLUDE(radica_bask)
-
- PORT_MODIFY("TV")
- PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( radica_bb3 )
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("IN1")
- PORT_DIPNAME( 0x01, 0x01, "IN1" )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("IN2")
- PORT_DIPNAME( 0x01, 0x01, "IN2" )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("TV")
- PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( radica_bb3p )
- PORT_INCLUDE(radica_bb3)
-
- PORT_MODIFY("TV")
- PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
void radica_eu3a14_state::machine_start()
@@ -1235,12 +663,6 @@ void radica_eu3a14_state::machine_reset()
m_maincpu->set_state_int(M6502_S, 0x1ff);
m_bank->set_bank(0x01);
-
- m_portdir[0] = 0x00;
- m_portdir[1] = 0x00;
- m_portdir[2] = 0x00;
-
- m_spriteaddr[0] = 0x14; // ?? rad_foot never writes, other games seem to use it to se sprite location
}
@@ -1330,17 +752,6 @@ static const gfx_layout helper16x16x4_layout =
16 * 16 * 4
};
-static const gfx_layout helper8x8x8_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 8,
- { STEP8(0,1) },
- { STEP8(0,8) },
- { STEP8(0,8*8) },
- 8 * 8 * 8
-};
-
static const gfx_layout helper8x8x4_layout =
{
8,8,
@@ -1357,143 +768,75 @@ static GFXDECODE_START( gfx_helper )
GFXDECODE_ENTRY( "maincpu", 0, helper8x1x2_layout, 0x0, 128 )
GFXDECODE_ENTRY( "maincpu", 0, helper8x1x4_layout, 0x0, 32 )
GFXDECODE_ENTRY( "maincpu", 0, helper8x1x8_layout, 0x0, 2 )
- // standard decodes
GFXDECODE_ENTRY( "maincpu", 0, helper16x16x8_layout, 0x0, 2 )
GFXDECODE_ENTRY( "maincpu", 0, helper16x16x4_layout, 0x0, 32 )
- GFXDECODE_ENTRY( "maincpu", 0, helper8x8x8_layout, 0x0, 2 )
GFXDECODE_ENTRY( "maincpu", 0, helper8x8x4_layout, 0x0, 32 )
GFXDECODE_END
-void radica_eu3a14_state::radica_eu3a14(machine_config &config)
-{
+MACHINE_CONFIG_START(radica_eu3a14_state::radica_eu3a14)
/* basic machine hardware */
- M6502(config, m_maincpu, XTAL(21'477'272)/2); // marked as 21'477'270
- m_maincpu->set_addrmap(AS_PROGRAM, &radica_eu3a14_state::radica_eu3a14_map);
- m_maincpu->set_vblank_int("screen", FUNC(radica_eu3a14_state::interrupt));
+ MCFG_DEVICE_ADD("maincpu",M6502,XTAL(21'477'272)/2) // marked as 21'477'270
+ MCFG_DEVICE_PROGRAM_MAP(radica_eu3a14_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", radica_eu3a14_state, interrupt)
ADDRESS_MAP_BANK(config, "bank").set_map(&radica_eu3a14_state::bank_map).set_options(ENDIANNESS_LITTLE, 8, 24, 0x8000);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_helper);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_helper)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_screen_update(FUNC(radica_eu3a14_state::screen_update));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_UPDATE_DRIVER(radica_eu3a14_state, screen_update)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
+
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(512);
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
SPEAKER(config, "mono").front_center();
radica6502_sound_device &sound(RADICA6502_SOUND(config, "6ch_sound", 8000));
sound.space_read_callback().set(FUNC(radica_eu3a14_state::read_full_space));
sound.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
-void radica_eu3a14_state::radica_eu3a14_adc(machine_config &config)
-{
- radica_eu3a14(config);
-
- TIMER(config, "scantimer").configure_scanline(FUNC(radica_eu3a14_state::scanline_cb), "screen", 0, 1);
-}
+MACHINE_CONFIG_END
-
-void radica_eu3a14_state::radica_eu3a14p(machine_config &config) // TODO, clocks differ too, what are they on PAL?
-{
+MACHINE_CONFIG_START(radica_eu3a14_state::radica_eu3a14_adc)
radica_eu3a14(config);
- subdevice<screen_device>("screen")->set_refresh_hz(50);
-}
-
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", radica_eu3a14_state, scanline_cb, "screen", 0, 1)
+MACHINE_CONFIG_END
void radica_eu3a14_state::init_rad_gtg()
{
// must be registers to control this
m_tilerambase = 0x0a00 - 0x200;
+ m_spriterambase = 0x0220 - 0x200;
}
void radica_eu3a14_state::init_rad_foot()
{
// must be registers to control this
m_tilerambase = 0x0200 - 0x200;
-}
-
-void radica_eu3a14_state::init_rad_hnt3()
-{
- // must be registers to control this
- m_tilerambase = 0x0200 - 0x200;
+ m_spriterambase = 0x2800 - 0x200;
}
ROM_START( rad_gtg )
ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "goldentee.bin", 0x000000, 0x400000, CRC(2d6cdb85) SHA1(ce6ed39d692ff16ea407f39c37b6e731f952b9d5) )
-ROM_END
-
-ROM_START( rad_rsg )
- ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "realswinggolf.bin", 0x000000, 0x400000, CRC(89e5b6a6) SHA1(0b14aa84d7e7ae7190cd64e3eb125de2104342bc) )
+ ROM_LOAD16_WORD_SWAP( "goldentee.bin", 0x000000, 0x400000, CRC(b1985c63) SHA1(c42a59fcb665eb801d9ca5312b90e39333e52de4) )
ROM_END
-ROM_START( rad_rsgp )
- ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "realswinggolf.bin", 0x000000, 0x400000, CRC(89e5b6a6) SHA1(0b14aa84d7e7ae7190cd64e3eb125de2104342bc) )
-ROM_END
-
-
ROM_START( rad_foot )
ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "connectvfootball.bin", 0x000000, 0x400000, CRC(00ac4fc0) SHA1(2b60ae5c6bc7e9ef7cdbd3f6a0a0657ed3ab5afe) )
ROM_END
-ROM_START( rad_bb3 )
- ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "baseball3.bin", 0x000000, 0x400000, CRC(af86aab0) SHA1(5fed48a295f045ca839f87b0f9b78ecc51104cdc) )
-ROM_END
-
-ROM_START( rad_bb3p )
- ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "baseball3.bin", 0x000000, 0x400000, CRC(af86aab0) SHA1(5fed48a295f045ca839f87b0f9b78ecc51104cdc) )
-ROM_END
-
-ROM_START( rad_hnt3 )
- ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "huntin3.bin", 0x000000, 0x400000, CRC(c8e3e40b) SHA1(81eb16ac5ab6d93525fcfadbc6703b2811d7de7f) )
-ROM_END
-
-ROM_START( rad_hnt3p )
- ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "huntin3.bin", 0x000000, 0x400000, CRC(c8e3e40b) SHA1(81eb16ac5ab6d93525fcfadbc6703b2811d7de7f) )
-ROM_END
-
-ROM_START( rad_bask )
- ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "basketball.bin", 0x000000, 0x400000, CRC(7d6ff53c) SHA1(1c75261d55e0107a3b8e8d4c1eb2854750f2d0e8) )
-ROM_END
-
-ROM_START( rad_baskp )
- ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "basketball.bin", 0x000000, 0x400000, CRC(7d6ff53c) SHA1(1c75261d55e0107a3b8e8d4c1eb2854750f2d0e8) )
-ROM_END
-
-CONS( 2006, rad_gtg, 0, 0, radica_eu3a14_adc, rad_gtg, radica_eu3a14_state, init_rad_gtg, "Radica / FarSight Studios (licensed from Incredible Technologies)", "Golden Tee Golf: Home Edition", MACHINE_NOT_WORKING )
-
-CONS( 2005, rad_rsg, 0, 0, radica_eu3a14, rad_rsg, radica_eu3a14_state, init_rad_gtg, "Radica / FarSight Studios", "Play TV Real Swing Golf", MACHINE_NOT_WORKING )
-CONS( 2005, rad_rsgp, rad_rsg, 0, radica_eu3a14p, rad_rsgp, radica_eu3a14_state, init_rad_gtg, "Radica / FarSight Studios", "Connectv Real Swing Golf", MACHINE_NOT_WORKING )
+CONS( 2006, rad_gtg, 0, 0, radica_eu3a14_adc, rad_gtg, radica_eu3a14_state, init_rad_gtg, "Radica (licensed from Incredible Technologies)", "Golden Tee Golf: Home Edition", MACHINE_NOT_WORKING )
// also has a Connectv Real Soccer logo in the roms, apparently unused, maybe that was to be the US title (without the logo being changed to Play TV) but Play TV Soccer ended up being a different game licensed from Epoch instead.
-CONS( 2006, rad_foot, 0, 0, radica_eu3a14p, radica_foot, radica_eu3a14_state, init_rad_foot, "Radica / Medialink", "Connectv Football", MACHINE_NOT_WORKING )
-
-CONS( 2005, rad_bb3, 0, 0, radica_eu3a14, radica_bb3, radica_eu3a14_state, init_rad_gtg, "Radica / FarSight Studios", "Play TV Baseball 3", MACHINE_NOT_WORKING )
-CONS( 2005, rad_bb3p, rad_bb3, 0, radica_eu3a14p, radica_bb3p, radica_eu3a14_state, init_rad_gtg, "Radica / FarSight Studios", "Connectv Baseball 3", MACHINE_NOT_WORKING )
-
-CONS( 2005, rad_hnt3, 0, 0, radica_eu3a14, radica_hnt3, radica_eu3a14_state, init_rad_hnt3, "Radica / V-Tac Technology Co Ltd.", "Play TV Huntin' 3", MACHINE_NOT_WORKING )
-CONS( 2005, rad_hnt3p,rad_hnt3, 0, radica_eu3a14p, radica_hnt3p, radica_eu3a14_state, init_rad_hnt3, "Radica / V-Tac Technology Co Ltd.", "Connectv Huntin' 3", MACHINE_NOT_WORKING )
-
-CONS( 2005, rad_bask, 0, 0, radica_eu3a14, radica_bask, radica_eu3a14_state, init_rad_gtg, "Radica / FarSight Studios", "Play TV Basketball", MACHINE_NOT_WORKING )
-CONS( 2005, rad_baskp,rad_bask, 0, radica_eu3a14, radica_baskp, radica_eu3a14_state, init_rad_gtg, "Radica / FarSight Studios", "Connectv Basketball", MACHINE_NOT_WORKING )
+CONS( 2006, rad_foot, 0, 0, radica_eu3a14, radica_eu3a14, radica_eu3a14_state, init_rad_foot, "Radica", "Connectv Football", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/radio86.cpp b/src/mame/drivers/radio86.cpp
index c66612c34f2..808a14f5161 100644
--- a/src/mame/drivers/radio86.cpp
+++ b/src/mame/drivers/radio86.cpp
@@ -462,8 +462,7 @@ GFXDECODE_END
/* Machine driver */
-void radio86_state::radio86(machine_config &config)
-{
+MACHINE_CONFIG_START(radio86_state::radio86)
/* basic machine hardware */
I8080(config, m_maincpu, XTAL(16'000'000) / 9);
m_maincpu->set_addrmap(AS_PROGRAM, &radio86_state::radio86_mem);
@@ -481,9 +480,9 @@ void radio86_state::radio86(machine_config &config)
crtc.drq_wr_callback().set(m_dma8257, FUNC(i8257_device::dreq2_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update("i8275", FUNC(i8275_device::screen_update));
- screen.set_raw(XTAL(16'000'000) / 2, 516, 0, 78*6, 310, 0, 30*10);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DEVICE("i8275", i8275_device, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(16'000'000) / 2, 516, 0, 78*6, 310, 0, 30*10)
GFXDECODE(config, "gfxdecode", m_palette, gfx_radio86);
PALETTE(config, m_palette, FUNC(radio86_state::radio86_palette), 3);
@@ -497,13 +496,13 @@ void radio86_state::radio86(machine_config &config)
m_dma8257->out_iow_cb<2>().set("i8275", FUNC(i8275_device::dack_w));
m_dma8257->set_reverse_rw_mode(1);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(rkr_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
- m_cassette->set_interface("radio86_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(rkr_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
+ MCFG_CASSETTE_INTERFACE("radio86_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("radio86_cass");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "radio86_cass")
+MACHINE_CONFIG_END
void radio86_state::kr03(machine_config &config)
@@ -517,80 +516,81 @@ void radio86_state::kr03(machine_config &config)
m_ppi8255_1->out_pc_callback().set(FUNC(radio86_state::radio86_8255_portc_w2));
}
-void radio86_state::radio16(machine_config &config)
-{
+MACHINE_CONFIG_START(radio86_state::radio16)
radio86(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &radio86_state::radio86_16_mem);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(radio86_16_mem)
+MACHINE_CONFIG_END
-void radio86_state::radiorom(machine_config &config)
-{
+MACHINE_CONFIG_START(radio86_state::radiorom)
radio86(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &radio86_state::radio86rom_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(radio86rom_mem)
I8255(config, m_ppi8255_2);
m_ppi8255_2->in_pa_callback().set(FUNC(radio86_state::radio86rom_romdisk_porta_r));
m_ppi8255_2->out_pb_callback().set(FUNC(radio86_state::radio86_romdisk_portb_w));
m_ppi8255_2->out_pc_callback().set(FUNC(radio86_state::radio86_romdisk_portc_w));
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "radio86_cart", "bin,rom");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "radio86_cart")
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
- SOFTWARE_LIST(config, "cart_list").set_original("radio86_cart");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "radio86_cart")
+MACHINE_CONFIG_END
-void radio86_state::radioram(machine_config &config)
-{
+MACHINE_CONFIG_START(radio86_state::radioram)
radio86(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &radio86_state::radio86ram_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(radio86ram_mem)
I8255(config, m_ppi8255_2);
m_ppi8255_2->in_pa_callback().set(FUNC(radio86_state::radio86ram_romdisk_porta_r));
m_ppi8255_2->out_pb_callback().set(FUNC(radio86_state::radio86_romdisk_portb_w));
m_ppi8255_2->out_pc_callback().set(FUNC(radio86_state::radio86_romdisk_portc_w));
-}
+MACHINE_CONFIG_END
-void radio86_state::rk7007(machine_config &config)
-{
+MACHINE_CONFIG_START(radio86_state::rk7007)
radio86(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &radio86_state::rk7007_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(rk7007_io)
i8255_device &ms7007(I8255(config, "ms7007"));
ms7007.out_pa_callback().set(FUNC(radio86_state::radio86_8255_porta_w2));
ms7007.in_pb_callback().set(FUNC(radio86_state::radio86_8255_portb_r2));
ms7007.in_pc_callback().set(FUNC(radio86_state::rk7007_8255_portc_r));
ms7007.out_pc_callback().set(FUNC(radio86_state::radio86_8255_portc_w2));
-}
+MACHINE_CONFIG_END
-void radio86_state::rk700716(machine_config &config)
-{
+MACHINE_CONFIG_START(radio86_state::rk700716)
radio16(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &radio86_state::rk7007_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(rk7007_io)
i8255_device &ms7007(I8255(config, "ms7007"));
ms7007.out_pa_callback().set(FUNC(radio86_state::radio86_8255_porta_w2));
ms7007.in_pb_callback().set(FUNC(radio86_state::radio86_8255_portb_r2));
ms7007.in_pc_callback().set(FUNC(radio86_state::rk7007_8255_portc_r));
ms7007.out_pc_callback().set(FUNC(radio86_state::radio86_8255_portc_w2));
-}
+MACHINE_CONFIG_END
-void radio86_state::mikron2(machine_config &config)
-{
+MACHINE_CONFIG_START(radio86_state::mikron2)
radio86(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &radio86_state::mikron2_mem);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mikron2_mem)
+MACHINE_CONFIG_END
-void radio86_state::impuls03(machine_config &config)
-{
+MACHINE_CONFIG_START(radio86_state::impuls03)
radio86(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &radio86_state::impuls03_mem);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(impuls03_mem)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( radio86 )
diff --git a/src/mame/drivers/raiden.cpp b/src/mame/drivers/raiden.cpp
index fcbbf23e00b..1b05b5b2421 100644
--- a/src/mame/drivers/raiden.cpp
+++ b/src/mame/drivers/raiden.cpp
@@ -728,42 +728,6 @@ ROM_START( raidenb )/* Different hardware, Main & Sub CPU code not encrypted. */
ROM_LOAD( "jj3010.u0116", 0x0000, 0x0100, NO_DUMP )
ROM_END
-ROM_START( raidenub ) // only region bits differ from raidenb
- ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */
- ROM_LOAD16_BYTE( "1.u0253", 0x0a0000, 0x10000, CRC(a4b12785) SHA1(446314e82ce01315cb3e3d1f323eaa2ad6fb48dd) )
- ROM_LOAD16_BYTE( "2.u0252", 0x0a0001, 0x10000, CRC(17640bd5) SHA1(5bbc99900426b1a072b52537ae9a50220c378a0d) )
- ROM_LOAD16_BYTE( "3u.u022", 0x0c0000, 0x20000, CRC(9d735bf5) SHA1(531981eac2ef0c0635f067a649899f98738d5c67) ) /* Simply labeled as 3u */
- ROM_LOAD16_BYTE( "4u.u023", 0x0c0001, 0x20000, CRC(95c110ef) SHA1(e6aea374ca63cdd851af66240e51461882d170e8) ) /* Simply labeled as 4u */
-
- ROM_REGION( 0x100000, "sub", 0 ) /* v30 sub cpu */
- ROM_LOAD16_BYTE( "5__,raidenb.u042", 0x0c0000, 0x20000, CRC(7aca6d61) SHA1(4d80ec87e54d7495b9bdf819b9985b1c8183c80d) ) /* Simply labeled as 5 */
- ROM_LOAD16_BYTE( "6__,raidenb.u043", 0x0c0001, 0x20000, CRC(e3d35cc2) SHA1(4329865985aaf3fb524618e2e958563c8fa6ead5) ) /* Simply labeled as 6 */
-
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* 64k code for sound Z80 */
- ROM_LOAD( "rai6.u212", 0x000000, 0x08000, CRC(723a483b) SHA1(50e67945e83ea1748fb748de3287d26446d4e0a0) ) /* Should be labeled "8" ??? */
- ROM_CONTINUE( 0x010000, 0x08000 )
- ROM_COPY( "audiocpu", 0x000000, 0x018000, 0x08000 )
-
- ROM_REGION( 0x010000, "gfx1", 0 ) /* Chars */
- ROM_LOAD( "9", 0x00000, 0x08000, CRC(1922b25e) SHA1(da27122dd1c43770e7385ad602ef397c64d2f754) ) /* On some PCBs there is no explicit */
- ROM_LOAD( "10", 0x08000, 0x08000, CRC(5f90786a) SHA1(4f63b07c6afbcf5196a433f3356bef984fe303ef) ) /* U location for these two roms */
-
- ROM_REGION( 0x080000, "gfx2", 0 ) /* tiles */
- ROM_LOAD( "sei420", 0x00000, 0x80000, CRC(da151f0b) SHA1(02682497caf5f058331f18c652471829fa08d54f) ) /* U919 on this PCB */
-
- ROM_REGION( 0x080000, "gfx3", 0 ) /* tiles */
- ROM_LOAD( "sei430", 0x00000, 0x80000, CRC(ac1f57ac) SHA1(1de926a0db73b99904ef119ac816c53d1551156a) ) /* U920 on this PCB */
-
- ROM_REGION( 0x090000, "gfx4", 0 ) /* Sprites */
- ROM_LOAD( "sei440", 0x00000, 0x80000, CRC(946d7bde) SHA1(30e8755c2b1ca8bff6278710b8422b51f75eec10) ) /* U165 on this PCB */
-
- ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
- ROM_LOAD( "7.u203", 0x00000, 0x10000, CRC(8f927822) SHA1(592f2719f2c448c3b4b239eeaec078b411e12dbb) )
-
- ROM_REGION( 0x0100, "proms", 0 ) // N82S135N bipolar PROM
- ROM_LOAD( "jj3010.u0116", 0x0000, 0x0100, NO_DUMP )
-ROM_END
-
ROM_START( raidenua )/* Different hardware, Main, Sub & sound CPU code not encrypted. */
ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */
ROM_LOAD16_BYTE( "1.c8", 0x0a0000, 0x10000, CRC(a4b12785) SHA1(446314e82ce01315cb3e3d1f323eaa2ad6fb48dd) )
@@ -860,4 +824,3 @@ GAME( 1990, raidenua, raiden, raidenu, raiden, raiden_state, empty_init, ROT
/* Alternate hardware. Main, Sub & Sound CPU code not encrypted. It also sports Seibu custom CRTC. */
GAME( 1990, raidenb, raiden, raidenb, raiden, raiden_state, empty_init, ROT270, "Seibu Kaihatsu", "Raiden (set 3)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, raidenub, raiden, raidenb, raiden, raiden_state, empty_init, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden (US set 3)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp
index 8a5a415c846..440f474545b 100644
--- a/src/mame/drivers/rainbow.cpp
+++ b/src/mame/drivers/rainbow.cpp
@@ -12,7 +12,7 @@ To unlock floppy drives A-D compile with WORKAROUND_RAINBOW_B (prevents a side e
Native single sided 5.25" images with 80 tracks, 10 sectors are well tested (*.IMD / *.TD0=TeleDisk / *.IMG with 400 K).
VT180 images (184.320 Bytes) are very unreliable in CP/M - though a real machine can read them.
5.25 MFM PC style drives and 720 K (3.5 " DS-DD MFM PC formatted disks) (on slots 3 + 4) show regressions / bugs
- as of Dec.2018 (file content bad while dir is OK, seek errors, write fault errors when copying _to_ hard disk).
+ as of Dec.2018 (file content bad while dir is OK, seek errors, write fault errors when copying _to_ hard disk).
ALWAYS USE THE RIGHT SLOT AND SAVE YOUR DATA BEFORE MOUNTING FOREIGN DISK FORMATS!
@@ -27,7 +27,7 @@ The public domain file RBCONVERT.ZIP documents how model 'A' differs from versio
NVRAM files from -A and -B machines are not interchangeable. If problems arise, delete the NVRAM file.
Venix 86-R (BSW) is working, just follow https://github.com/bsdimp/venix/blob/master/doc/MESS-RB-INSTALL.md
-
+
CPM 2.1 / DOS2.11 / DOS 3.x / diag disks boot. UCSD systems (fort_sys, pas_sys) boot, but expect 4 QD drives
loaded with disks (reassign slots, reset and mount three empty 400 K images before startup at #2, #3, #4).
@@ -802,7 +802,7 @@ private:
UPD7220_DISPLAY_PIXELS_MEMBER( rainbow_state::hgdc_display_pixels )
{
- if(m_inp7->read() == 0)
+ if(m_inp7->read() == 0)
return;
const rgb_t *paletteX = m_palette2->palette()->entry_list_raw();
@@ -1417,10 +1417,10 @@ WRITE_LINE_MEMBER(rainbow_state::mpsc_irq)
// PORT 0x06 : Communication bit rates (see page 21 of PC 100 SPEC)
WRITE8_MEMBER(rainbow_state::comm_bitrate_w)
{
- m_dbrg->str_w(data & 0x0f); // PDF is wrong, low nibble is RECEIVE clock (verified in SETUP).
+ m_dbrg->write_str(data & 0x0f); // PDF is wrong, low nibble is RECEIVE clock (verified in SETUP).
logerror("\n(COMM.) receive bitrate = %d ($%02x)\n", comm_rates[data & 0x0f] , data & 0x0f);
- m_dbrg->stt_w( ((data & 0xf0) >> 4) );
+ m_dbrg->write_stt( ((data & 0xf0) >> 4) );
logerror("(COMM.) transmit bitrate = %d ($%02x)\n", comm_rates[((data & 0xf0) >> 4)] ,(data & 0xf0) >> 4);
}
@@ -1548,16 +1548,16 @@ WRITE8_MEMBER(rainbow_state::rtc_w)
{
case 0x00: // Write to 0xED0FE
if (m_rtc->chip_enable())
- m_rtc->write_data(offset & 0x01); // Transfer data to DS1315 (data = offset):
+ m_rtc->write_data(space, offset & 0x01); // Transfer data to DS1315 (data = offset):
else
- m_rtc->read_0(); // (RTC ACTIVATION) read magic pattern 0
+ m_rtc->read_0(space, 0); // (RTC ACTIVATION) read magic pattern 0
break;
case 0x01: // Write to 0xED0FF
if (m_rtc->chip_enable())
- m_rtc->write_data(offset & 0x01); // Transfer data to DS1315 (data = offset):
+ m_rtc->write_data(space, offset & 0x01); // Transfer data to DS1315 (data = offset):
else
- m_rtc->read_1(); // (RTC ACTIVATION) read magic pattern 1
+ m_rtc->read_1(space, 0); // (RTC ACTIVATION) read magic pattern 1
break;
}
}
@@ -1576,7 +1576,7 @@ READ8_MEMBER(rainbow_state::rtc_r)
#ifdef ASSUME_RAINBOW_A_HARDWARE
case 0x00: // read time/date from 0xED000 (ClikClok for 100-A)
if (m_rtc->chip_enable())
- return m_rtc->read_data() & 0x01;
+ return m_rtc->read_data(space, 0) & 0x01;
else
m_rtc->chip_reset();
#else
@@ -1586,25 +1586,25 @@ READ8_MEMBER(rainbow_state::rtc_r)
case 0x0001: // RTC_WRITE_DATA_1 0xFC001
case 0x2001: // RTC_WRITE_DATA_1 0xFE001 (MIRROR)
- m_rtc->write_data(offset & 0x01);
+ m_rtc->write_data(space, offset & 0x01);
break;
// Read actual time/date from ClikClok:
case 0x0004: // 0xFC004
case 0x2004: // 0xFE004 (MIRROR)
if (m_rtc->chip_enable())
- return (m_rtc->read_data() & 0x01);
+ return (m_rtc->read_data(space, 0) & 0x01);
// (RTC ACTIVATION) read magic pattern 0
case 0x0100: // 0xFC100
case 0x2100: // 0xFE100 (MIRROR)
- m_rtc->read_0();
+ m_rtc->read_0(space, 0);
break;
// (RTC ACTIVATION) read magic pattern 1
case 0x0101: // 0xFC101
case 0x2101: // 0xFE101 (MIRROR)
- m_rtc->read_1();
+ m_rtc->read_1(space, 0);
break;
// RESET
@@ -1741,7 +1741,7 @@ WRITE_LINE_MEMBER(rainbow_state::hdc_read_sector)
if (!m_hdc_write_gate) // do not read when WRITE GATE is on
{
- uint8_t sdh = (m_hdc->read(0x06));
+ uint8_t sdh = (m_hdc->read(generic_space(), 0x06));
int drv = (sdh & (8 + 16)) >> 3; // get DRIVE from SDH register
if ((state == 0) && (last_state == 1) && (drv == 0))
@@ -1750,9 +1750,9 @@ WRITE_LINE_MEMBER(rainbow_state::hdc_read_sector)
output().set_value("led1", 0);
switch_off_timer->adjust(attotime::from_msec(500));
- int hi = (m_hdc->read(0x05)) & 0x07;
- uint16_t cylinder = (m_hdc->read(0x04)) | (hi << 8);
- uint8_t sector_number = m_hdc->read(0x03);
+ int hi = (m_hdc->read(generic_space(), 0x05)) & 0x07;
+ uint16_t cylinder = (m_hdc->read(generic_space(), 0x04)) | (hi << 8);
+ uint8_t sector_number = m_hdc->read(generic_space(), 0x03);
hard_disk_file *local_hard_disk;
local_hard_disk = rainbow_hdc_file(0); // one hard disk for now.
@@ -1812,7 +1812,7 @@ WRITE_LINE_MEMBER(rainbow_state::hdc_write_sector)
else
m_hdc_write_gate = true;
- int drv = ((m_hdc->read(0x06)) & (8 + 16)) >> 3; // get DRIVE from SDH register
+ int drv = ((m_hdc->read(generic_space(), 0x06)) & (8 + 16)) >> 3; // get DRIVE from SDH register
if (state == 0 && wg_last == 1 && drv == 0) // Check correct state transition and DRIVE 0 ....
{
@@ -1866,13 +1866,13 @@ int rainbow_state::do_write_sector()
feedback = 10;
output().set_value("led1", 1); // OFF
- uint8_t sdh = (m_hdc->read(0x06));
+ uint8_t sdh = (m_hdc->read(generic_space(), 0x06));
- int hi = (m_hdc->read(0x05)) & 0x07;
- uint16_t cylinder = (m_hdc->read(0x04)) | (hi << 8);
+ int hi = (m_hdc->read(generic_space(), 0x05)) & 0x07;
+ uint16_t cylinder = (m_hdc->read(generic_space(), 0x04)) | (hi << 8);
- int sector_number = m_hdc->read(0x03);
- int sector_count = m_hdc->read(0x02); // (1 = single sector)
+ int sector_number = m_hdc->read(generic_space(), 0x03);
+ int sector_count = m_hdc->read(generic_space(), 0x02); // (1 = single sector)
if (!(cylinder <= info->cylinders && // filter invalid cylinders
SECTOR_SIZES[(sdh >> 5) & 0x03] == info->sectorbytes // 512, may not vary
@@ -1943,7 +1943,7 @@ READ8_MEMBER(rainbow_state::hd_status_68_r)
data = 0xa0; // A0 : OK, DRIVE IS READY (!)
int my_offset = 0x07;
- int stat = m_hdc->read(my_offset);
+ int stat = m_hdc->read(space, my_offset);
// logerror("(x68) WD1010 register %04x (STATUS) read, result : %04x\n", my_offset, stat);
// NOTE: SEEK COMPLETE IS CURRENTLY HARD WIRED / NOT FULLY EMULATED -
@@ -2043,14 +2043,14 @@ positioned over cylinder 0 (the data track furthest away from the spindle).
*/
READ8_MEMBER(rainbow_state::hd_status_69_r)
{
- int hs = m_hdc->read(0x06) & (1 + 2 + 4); // SDH bits 0-2 = HEAD #
+ int hs = m_hdc->read(space, 0x06) & (1 + 2 + 4); // SDH bits 0-2 = HEAD #
// logerror("(x69 READ) %i = HEAD SELECT WD1010\n", hs);
uint8_t data = (hs << 1);
// DRIVE SELECT: 2 bits in SDH register of WDx010 could address 4 drives.
// External circuit supports 1 drive here (DRIVE 0 selected or deselected)
- int drv = ((m_hdc->read(0x06) >> 3) & 0x01); // 0x03 gives error R6 with DIAG.DISK
+ int drv = ((m_hdc->read(space, 0x06) >> 3) & 0x01); // 0x03 gives error R6 with DIAG.DISK
if (drv == 0)
data |= 1; // logerror("(x69 READ) %i = _DRIVE # 0_ SELECT! \n", drv);
@@ -2064,7 +2064,7 @@ READ8_MEMBER(rainbow_state::hd_status_69_r)
data |= 64;
// Fake TRACK 0 signal (normally FROM DRIVE)
- if ((m_hdc->read(0x04) == 0) && (m_hdc->read(0x05) == 0)) // CYL.LO - CYL.HI
+ if ((m_hdc->read(space, 0x04) == 0) && (m_hdc->read(space, 0x05) == 0)) // CYL.LO - CYL.HI
data |= 128; // logerror("(x69 READ) TRACK 00 detected\n");
return data;
@@ -2947,8 +2947,11 @@ READ8_MEMBER(rainbow_state::GDC_EXTRA_REGISTER_r)
break;
case 6:
+ data = m_hgdc->read(space, offset & 0x00);
+ break;
+
case 7:
- data = m_hgdc->read(offset & 0x01);
+ data = m_hgdc->read(space, offset & 0x01);
break;
default:
@@ -3166,7 +3169,7 @@ WRITE8_MEMBER(rainbow_state::GDC_EXTRA_REGISTER_w)
case 6:
case 7:
- m_hgdc->write(offset & 0x01, data);
+ m_hgdc->write(space, offset & 0x01, data);
break;
} // switch
@@ -3197,26 +3200,26 @@ void rainbow_state::upd7220_map(address_map &map)
map(0x00000, 0x3ffff).rw(FUNC(rainbow_state::vram_r), FUNC(rainbow_state::vram_w)).share("vram");
}
-void rainbow_state::rainbow(machine_config &config)
-{
+MACHINE_CONFIG_START(rainbow_state::rainbow)
config.set_default_layout(layout_rainbow);
/* basic machine hardware */
- I8088(config, m_i8088, 24.0734_MHz_XTAL / 5); // approximately 4.815 MHz
- m_i8088->set_addrmap(AS_PROGRAM, &rainbow_state::rainbow8088_map);
- m_i8088->set_addrmap(AS_IO, &rainbow_state::rainbow8088_io);
- m_i8088->set_irq_acknowledge_callback(FUNC(rainbow_state::irq_callback));
+ MCFG_DEVICE_ADD("maincpu", I8088, 24.0734_MHz_XTAL / 5) // approximately 4.815 MHz
+ MCFG_DEVICE_PROGRAM_MAP(rainbow8088_map)
+ MCFG_DEVICE_IO_MAP(rainbow8088_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(rainbow_state, irq_callback)
- Z80(config, m_z80, 24.0734_MHz_XTAL / 6);
- m_z80->set_addrmap(AS_PROGRAM, &rainbow_state::rainbowz80_mem);
- m_z80->set_addrmap(AS_IO, &rainbow_state::rainbowz80_io);
+ MCFG_DEVICE_ADD("subcpu", Z80, 24.0734_MHz_XTAL / 6)
+ MCFG_DEVICE_PROGRAM_MAP(rainbowz80_mem)
+ MCFG_DEVICE_IO_MAP(rainbowz80_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(24.0734_MHz_XTAL / 6, 442, 0, 400, 264, 0, 240); // ~NTSC compatible video timing (?)
- screen.set_screen_update(FUNC(rainbow_state::screen_update_rainbow));
- screen.set_palette("vt100_video:palette");
- GFXDECODE(config, "gfxdecode", "vt100_video:palette", gfx_rainbow);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(24.0734_MHz_XTAL / 6, 442, 0, 400, 264, 0, 240) // ~NTSC compatible video timing (?)
+
+ MCFG_SCREEN_UPDATE_DRIVER(rainbow_state, screen_update_rainbow)
+ MCFG_SCREEN_PALETTE("vt100_video:palette")
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "vt100_video:palette", gfx_rainbow)
RAINBOW_VIDEO(config, m_crtc, 24.0734_MHz_XTAL);
m_crtc->set_screen("screen");
@@ -3230,31 +3233,31 @@ void rainbow_state::rainbow(machine_config &config)
m_hgdc->vsync_wr_callback().set(FUNC(rainbow_state::GDC_vblank_irq)); // "The vsync callback line needs to be below the 7220 DEVICE_ADD line."
m_hgdc->set_addrmap(0, &rainbow_state::upd7220_map);
- m_hgdc->set_display_pixels(FUNC(rainbow_state::hgdc_display_pixels));
+ m_hgdc->set_display_pixels_callback(FUNC(rainbow_state::hgdc_display_pixels), this);
m_hgdc->set_screen(m_screen2); // set_screen needs to be added after 7720 device in the machine config, not after the screen.
- PALETTE(config, m_palette2).set_entries(32);
+ MCFG_PALETTE_ADD("palette2", 32)
- SCREEN(config, m_screen2, SCREEN_TYPE_RASTER);
- m_screen2->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE);
+ MCFG_SCREEN_ADD("screen2", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE)
// VR241 color monitor is specified for 20 MHz bandwidth ( 60 Hz / 15.72 kHz horizontal rate )
// - sufficient for 800 x 240 non-interlaced at 60 Hz (non interlaced).
- //m_screen2->set_raw(31188000 / 2 , 992, 0, 800, 262, 0, 240);
+ //MCFG_SCREEN_RAW_PARAMS(31188000 / 2 , 992, 0, 800, 262, 0, 240)
// Alternate configuration:
- m_screen2->set_raw(31188000 / 4 , 496, 0, 400, 262, 0, 240);
+ MCFG_SCREEN_RAW_PARAMS(31188000 / 4 , 496, 0, 400, 262, 0, 240)
- m_screen2->set_screen_update("upd7220", FUNC(upd7220_device::screen_update));
+ MCFG_SCREEN_UPDATE_DEVICE("upd7220", upd7220_device, screen_update)
FD1793(config, m_fdc, 24.0734_MHz_XTAL / 24); // no separate 1 Mhz quartz
- FLOPPY_CONNECTOR(config, FD1793_TAG ":0", rainbow_floppies, "525qd", rainbow_state::floppy_formats);
- FLOPPY_CONNECTOR(config, FD1793_TAG ":1", rainbow_floppies, "525qd", rainbow_state::floppy_formats);
- FLOPPY_CONNECTOR(config, FD1793_TAG ":2", rainbow_floppies, "525qd", rainbow_state::floppy_formats);
- FLOPPY_CONNECTOR(config, FD1793_TAG ":3", rainbow_floppies, "525qd", rainbow_state::floppy_formats);
- //FLOPPY_CONNECTOR(config, FD1793_TAG ":2", rainbow_floppies, "525dd", rainbow_state::floppy_formats);
- //FLOPPY_CONNECTOR(config, FD1793_TAG ":3", rainbow_floppies, "35dd", rainbow_state::floppy_formats);
- SOFTWARE_LIST(config, "flop_list").set_original("rainbow");
+ MCFG_FLOPPY_DRIVE_ADD(FD1793_TAG ":0", rainbow_floppies, "525qd", rainbow_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FD1793_TAG ":1", rainbow_floppies, "525qd", rainbow_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FD1793_TAG ":2", rainbow_floppies, "525qd", rainbow_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FD1793_TAG ":3", rainbow_floppies, "525qd", rainbow_state::floppy_formats)
+ //MCFG_FLOPPY_DRIVE_ADD(FD1793_TAG ":2", rainbow_floppies, "525dd", rainbow_state::floppy_formats)
+ //MCFG_FLOPPY_DRIVE_ADD(FD1793_TAG ":3", rainbow_floppies, "35dd", rainbow_state::floppy_formats)
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "rainbow")
/// ********************************* HARD DISK CONTROLLER *****************************************
WD2010(config, m_hdc, 5000000); // 10 Mhz quartz on controller (divided by 2 for WCLK)
@@ -3277,14 +3280,18 @@ void rainbow_state::rainbow(machine_config &config)
m_hdc->in_sc_callback().set_constant(1); // SEEK COMPLETE (VCC = complete)
m_hdc->in_tk000_callback().set_constant(1); // TRACK 00 signal (= from drive)
- HARDDISK(config, "decharddisk1");
+ MCFG_HARDDISK_ADD("decharddisk1")
/// ******************************** / HARD DISK CONTROLLER ****************************************
- CORVUS_HDC(config, m_corvus_hdc, 0);
- HARDDISK(config, "harddisk1", "corvus_hdd");
- HARDDISK(config, "harddisk2", "corvus_hdd");
- HARDDISK(config, "harddisk3", "corvus_hdd");
- HARDDISK(config, "harddisk4", "corvus_hdd");
+ MCFG_DEVICE_ADD("corvus", CORVUS_HDC, 0)
+ MCFG_HARDDISK_ADD("harddisk1")
+ MCFG_HARDDISK_INTERFACE("corvus_hdd")
+ MCFG_HARDDISK_ADD("harddisk2")
+ MCFG_HARDDISK_INTERFACE("corvus_hdd")
+ MCFG_HARDDISK_ADD("harddisk3")
+ MCFG_HARDDISK_INTERFACE("corvus_hdd")
+ MCFG_HARDDISK_ADD("harddisk4")
+ MCFG_HARDDISK_INTERFACE("corvus_hdd")
DS1315(config, m_rtc, 0); // DS1315 (ClikClok for DEC-100 B) * OPTIONAL *
@@ -3328,10 +3335,10 @@ void rainbow_state::rainbow(machine_config &config)
prtbrg.set_stages(8);
prtbrg.count_out_cb().set(FUNC(rainbow_state::bitrate_counter_w));
- TIMER(config, "motor").configure_periodic(FUNC(rainbow_state::hd_motor_tick), attotime::from_hz(60));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("motor", rainbow_state, hd_motor_tick, attotime::from_hz(60))
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
//----------------------------------------------------------------------------------------
// 'Rainbow 100-A' (system module 70-19974-00, PSU H7842-A)
diff --git a/src/mame/drivers/rampart.cpp b/src/mame/drivers/rampart.cpp
index 4d414967a9a..be3258d26c3 100644
--- a/src/mame/drivers/rampart.cpp
+++ b/src/mame/drivers/rampart.cpp
@@ -338,11 +338,11 @@ GFXDECODE_END
*
*************************************/
-void rampart_state::rampart(machine_config &config)
-{
+MACHINE_CONFIG_START(rampart_state::rampart)
+
/* basic machine hardware */
- M68000(config, m_maincpu, MASTER_CLOCK/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &rampart_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, MASTER_CLOCK/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
SLAPSTIC(config, m_slapstic_device, 118, true);
@@ -351,28 +351,30 @@ void rampart_state::rampart(machine_config &config)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
/* video hardware */
- GFXDECODE(config, m_gfxdecode, "palette", gfx_rampart);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rampart)
PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 512).set_membits(8);
ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, rampart_state::s_mob_config);
m_mob->set_gfxdecode(m_gfxdecode);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
- m_screen->set_raw(MASTER_CLOCK/2, 456, 0+12, 336+12, 262, 0, 240);
- m_screen->set_screen_update(FUNC(rampart_state::screen_update_rampart));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set(FUNC(rampart_state::video_int_write_line));
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 456, 0+12, 336+12, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(rampart_state, screen_update_rampart)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, rampart_state, video_int_write_line))
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, MASTER_CLOCK/4/3, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 0.60);
+ MCFG_DEVICE_ADD("oki", OKIM6295, MASTER_CLOCK/4/3, okim6295_device::PIN7_LOW)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
- YM2413(config, m_ym2413, MASTER_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2413, MASTER_CLOCK/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ramtek.cpp b/src/mame/drivers/ramtek.cpp
index b87e632ee69..5dfa5b77d83 100644
--- a/src/mame/drivers/ramtek.cpp
+++ b/src/mame/drivers/ramtek.cpp
@@ -110,21 +110,20 @@ void ramtek_state::video_start()
{
}
-void ramtek_state::ramtek(machine_config &config)
-{
+MACHINE_CONFIG_START(ramtek_state::ramtek)
+
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_ramtek);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(ramtek)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL);
- m_video->set_vert_params(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.30);
-}
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/rastan.cpp b/src/mame/drivers/rastan.cpp
index 66367df97c9..55e0f454b82 100644
--- a/src/mame/drivers/rastan.cpp
+++ b/src/mame/drivers/rastan.cpp
@@ -184,7 +184,7 @@ WRITE_LINE_MEMBER(rastan_state::rastan_msm5205_vck)
if (m_adpcm_ff)
{
- m_adpcm_sel->ba_w(m_adpcm_data[m_adpcm_pos]);
+ m_adpcm_sel->write_ba(m_adpcm_data[m_adpcm_pos]);
m_adpcm_pos = (m_adpcm_pos + 1) & 0xffff;
}
}
@@ -365,28 +365,28 @@ void rastan_state::machine_reset()
}
-void rastan_state::rastan(machine_config &config)
-{
+MACHINE_CONFIG_START(rastan_state::rastan)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &rastan_state::rastan_map);
- m_maincpu->set_vblank_int("screen", FUNC(rastan_state::irq5_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(rastan_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rastan_state, irq5_line_hold)
- Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &rastan_state::rastan_s_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/4) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(rastan_s_map)
- config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
+ MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(rastan_state::screen_update_rastan));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(rastan_state, screen_update_rastan)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_rastan);
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 2048);
@@ -408,18 +408,18 @@ void rastan_state::rastan(machine_config &config)
ymsnd.add_route(0, "mono", 0.50);
ymsnd.add_route(1, "mono", 0.50);
- MSM5205(config, m_msm, XTAL(384'000)); /* verified on pcb */
- m_msm->vck_legacy_callback().set(FUNC(rastan_state::rastan_msm5205_vck)); /* VCK function */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.60);
+ MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000)) /* verified on pcb */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, rastan_state, rastan_msm5205_vck)) /* VCK function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
LS157(config, m_adpcm_sel, 0);
- m_adpcm_sel->out_callback().set(m_msm, FUNC(msm5205_device::data_w));
+ m_adpcm_sel->out_callback().set("msm", FUNC(msm5205_device::data_w));
pc060ha_device &ciu(PC060HA(config, "ciu", 0));
ciu.set_master_tag(m_maincpu);
ciu.set_slave_tag(m_audiocpu);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/rastersp.cpp b/src/mame/drivers/rastersp.cpp
index 411c4cdff64..3161972b8e6 100644
--- a/src/mame/drivers/rastersp.cpp
+++ b/src/mame/drivers/rastersp.cpp
@@ -920,6 +920,7 @@ void rastersp_state::rastersp(machine_config &config)
m_rdac->add_route(ALL_OUTPUTS, "rspeaker", 0.5); // unknown DAC
voltage_regulator_device &vreg(VOLTAGE_REGULATOR(config, "vref"));
+ vreg.set_output(5.0);
vreg.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT);
vreg.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT);
vreg.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
@@ -953,24 +954,6 @@ ROM_START( rotr )
ROM_END
-ROM_START( rotra )
- ROM_REGION(0x100000, "bios", 0)
- ROM_LOAD( "rasterspeed2.1_bootrom4.u10", 0x00000, 0x10000, CRC(6da142d1) SHA1(e2dbd479034677726fc26fd1ba85c4458d89286c) )
-
- ROM_REGION(0x1000000, "dspboot", 0)
- ROM_LOAD32_BYTE( "rasterspeed2.1_bootrom4.u10", 0x00000, 0x10000, CRC(6da142d1) SHA1(e2dbd479034677726fc26fd1ba85c4458d89286c) )
-
- ROM_REGION(0x8000, "proms", 0) /* Xilinx FPGA PROMs */
- ROM_LOAD( "17128dpc.u72", 0x0000, 0x4000, CRC(5ddf6ee3) SHA1(f3d15b649b5641374a9e14877cea84ba9c57ef3c) )
- ROM_LOAD( "17128dpc.u73", 0x2000, 0x4000, CRC(9e274cea) SHA1(e974cad4e4b965bf2c9df7d3d0b4eec64629eeb0) )
-
- ROM_REGION(0x8000, "nvram", 0) /* Default NVRAM */
- ROM_LOAD( "rotr.nv", 0x0000, 0x8000, CRC(62543517) SHA1(a4bf3431cdab956839bb155c4a8c140d30e5c7ec) )
-
- DISK_REGION( "scsibus:0:harddisk:image" )
- DISK_IMAGE( "rotra", 0, SHA1(570d402e5e9bba123edf7dfa9db7a0e6bdb23823) )
-ROM_END
-
/*
Football Crazy runs on the (c)1997 "RASTERSPEED 2.1 31-599-001 ISS 4" PCB, which seems to be a more modern production version.
a PCB photo with the rom sticker showing the text below has also been seen
@@ -1008,6 +991,5 @@ ROM_END
*
*************************************/
-GAME( 1994, rotr, 0, rastersp, rotr, rastersp_state, empty_init, ROT0, "BFM/Mirage", "Rise of the Robots (prototype)", 0 )
-GAME( 1994, rotra, rotr, rastersp, rotr, rastersp_state, empty_init, ROT0, "BFM/Mirage", "Rise of the Robots (prototype, older)", 0 )
-GAME( 1997, fbcrazy, 0, rastersp, rotr, rastersp_state, empty_init, ROT0, "BFM", "Football Crazy (Video Quiz)", MACHINE_NOT_WORKING )
+GAME( 1994, rotr, 0, rastersp, rotr, rastersp_state, empty_init, ROT0, "BFM/Mirage", "Rise of the Robots (prototype)", 0 )
+GAME( 1997, fbcrazy, 0, rastersp, rotr, rastersp_state, empty_init, ROT0, "BFM", "Football Crazy (Video Quiz)", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/ravens.cpp b/src/mame/drivers/ravens.cpp
index b564fd76a0b..38ea7c159e1 100644
--- a/src/mame/drivers/ravens.cpp
+++ b/src/mame/drivers/ravens.cpp
@@ -196,7 +196,7 @@ WRITE8_MEMBER( ravens_state::port1b_w )
else
data = m_term_char;
- m_terminal->write(data);
+ m_terminal->write(space, 0, data);
}
WRITE8_MEMBER( ravens_state::port1c_w )
@@ -351,8 +351,8 @@ void ravens_state::ravens(machine_config &config)
config.set_default_layout(layout_ravens);
/* quickload */
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(ravens_state, ravens), this), "pgm", attotime::from_seconds(1));
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(ravens_state, ravens), this), "pgm", 1);
/* cassette */
CASSETTE(config, m_cass);
@@ -376,8 +376,8 @@ void ravens_state::ravens2(machine_config &config)
m_terminal->set_keyboard_callback(FUNC(ravens_state::kbd_put));
/* quickload */
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(ravens_state, ravens), this), "pgm", attotime::from_seconds(1));
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(ravens_state, ravens), this), "pgm", 1);
/* cassette */
CASSETTE(config, m_cass);
diff --git a/src/mame/drivers/rbisland.cpp b/src/mame/drivers/rbisland.cpp
index e3bdc534b22..38a9e8f2cc8 100644
--- a/src/mame/drivers/rbisland.cpp
+++ b/src/mame/drivers/rbisland.cpp
@@ -653,15 +653,15 @@ WRITE8_MEMBER(rbisland_state::counters_w)
machine().bookkeeping().coin_counter_w(0, data & 0x10);
}
-void rbisland_state::rbisland(machine_config &config)
-{
+MACHINE_CONFIG_START(rbisland_state::rbisland)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &rbisland_state::rbisland_map);
- m_maincpu->set_vblank_int("screen", FUNC(rbisland_state::interrupt));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(rbisland_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rbisland_state, interrupt)
- Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &rbisland_state::rbisland_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/4) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(rbisland_sound_map)
TAITO_CCHIP(config, m_cchip, 12_MHz_XTAL); // 12MHz OSC next to C-Chip
m_cchip->in_pa_callback().set_ioport("800007");
@@ -670,18 +670,18 @@ void rbisland_state::rbisland(machine_config &config)
m_cchip->in_ad_callback().set_ioport("80000D");
m_cchip->out_pb_callback().set(FUNC(rbisland_state::counters_w));
- TIMER(config, m_cchip_irq_clear).configure_generic(FUNC(rbisland_state::cchip_irq_clear_cb));
+ MCFG_TIMER_DRIVER_ADD("cchip_irq_clear", rbisland_state, cchip_irq_clear_cb)
- config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
+ MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(rbisland_state::screen_update_rainbow));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(rbisland_state, screen_update_rainbow)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_rbisland);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 2048);
@@ -706,31 +706,31 @@ void rbisland_state::rbisland(machine_config &config)
pc060ha_device &ciu(PC060HA(config, "ciu", 0));
ciu.set_master_tag(m_maincpu);
ciu.set_slave_tag(m_audiocpu);
-}
+MACHINE_CONFIG_END
/* Jumping: The PCB has 2 Xtals, 18.432MHz and 24MHz */
-void rbisland_state::jumping(machine_config &config)
-{
+MACHINE_CONFIG_START(rbisland_state::jumping)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(18'432'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &rbisland_state::jumping_map);
- m_maincpu->set_vblank_int("screen", FUNC(rbisland_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(18'432'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(jumping_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rbisland_state, irq4_line_hold)
- Z80(config, m_audiocpu, XTAL(24'000'000)/4); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &rbisland_state::jumping_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(24'000'000)/4) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(jumping_sound_map)
- config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - enough unless otherwise */
+ MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* 10 CPU slices per frame - enough unless otherwise */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(rbisland_state::screen_update_jumping));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(rbisland_state, screen_update_jumping)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_jumping);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 2048);
@@ -745,18 +745,21 @@ void rbisland_state::jumping(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM2203(config, "ym1", XTAL(24'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.30); /* verified on pcb */
+ MCFG_DEVICE_ADD("ym1", YM2203, XTAL(24'000'000)/8) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
- YM2203(config, "ym2", XTAL(24'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.30); /* verified on pcb */
-}
+ MCFG_DEVICE_ADD("ym2", YM2203, XTAL(24'000'000)/8) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
/* Imnoe PCB uses 16MHz CPU crystal instead of 18.432 for CPU */
-void rbisland_state::jumpingi(machine_config &config)
-{
+MACHINE_CONFIG_START(rbisland_state::jumpingi)
jumping(config);
- m_maincpu->set_clock(XTAL(16'000'000)/2); /* verified on pcb */
-}
+ MCFG_DEVICE_REPLACE("maincpu", M68000, XTAL(16'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(jumping_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rbisland_state, irq4_line_hold)
+MACHINE_CONFIG_END
/***************************************************************************
DRIVERS
diff --git a/src/mame/drivers/rbmk.cpp b/src/mame/drivers/rbmk.cpp
index e462f197e72..dc15e500eb0 100644
--- a/src/mame/drivers/rbmk.cpp
+++ b/src/mame/drivers/rbmk.cpp
@@ -214,7 +214,7 @@ READ8_MEMBER(rbmk_state::mcu_io_r)
{
if(m_mux_data & 8)
{
- return m_ymsnd->read(offset & 1);
+ return m_ymsnd->read(space, offset & 1);
}
else if(m_mux_data & 4)
{
@@ -230,7 +230,7 @@ READ8_MEMBER(rbmk_state::mcu_io_r)
WRITE8_MEMBER(rbmk_state::mcu_io_w)
{
- if(m_mux_data & 8) { m_ymsnd->write(offset & 1, data); }
+ if(m_mux_data & 8) { m_ymsnd->write(space, offset & 1, data); }
else if(m_mux_data & 4)
{
//printf("%02x %02x W\n",offset,data);
@@ -565,11 +565,10 @@ uint32_t rbmk_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
return 0;
}
-void rbmk_state::rbmk(machine_config &config)
-{
- M68000(config, m_maincpu, 22000000 /2);
- m_maincpu->set_addrmap(AS_PROGRAM, &rbmk_state::rbmk_mem);
- m_maincpu->set_vblank_int("screen", FUNC(rbmk_state::irq1_line_hold));
+MACHINE_CONFIG_START(rbmk_state::rbmk)
+ MCFG_DEVICE_ADD("maincpu", M68000, 22000000 /2)
+ MCFG_DEVICE_PROGRAM_MAP(rbmk_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rbmk_state, irq1_line_hold)
AT89C4051(config, m_mcu, 22000000 / 4); // frequency isn't right
m_mcu->set_addrmap(AS_PROGRAM, &rbmk_state::mcu_mem);
@@ -578,13 +577,13 @@ void rbmk_state::rbmk(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_rbmk);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(rbmk_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(rbmk_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x800);
@@ -593,24 +592,25 @@ void rbmk_state::rbmk(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- okim6295_device &oki(OKIM6295(config, "oki", 1122000, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
- oki.add_route(ALL_OUTPUTS, "lspeaker", 0.47);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 0.47);
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1122000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47)
YM2151(config, m_ymsnd, 22000000 / 8);
m_ymsnd->add_route(0, "lspeaker", 0.60);
m_ymsnd->add_route(1, "rspeaker", 0.60);
-}
+MACHINE_CONFIG_END
-void rbmk_state::rbspm(machine_config &config)
-{
+MACHINE_CONFIG_START(rbmk_state::rbspm)
rbmk(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &rbmk_state::rbspm_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(rbspm_mem)
- m_mcu->set_disable(); // until decapped
+ MCFG_DEVICE_MODIFY("mcu")
+ MCFG_DEVICE_DISABLE() // until decapped
// PIC16F84 but no CPU core available
-}
+MACHINE_CONFIG_END
// 实战麻将王 (Shízhàn Májiàng Wáng)
ROM_START( rbmk )
diff --git a/src/mame/drivers/rc702.cpp b/src/mame/drivers/rc702.cpp
index 65ae7b0dc50..3f4984c0f63 100644
--- a/src/mame/drivers/rc702.cpp
+++ b/src/mame/drivers/rc702.cpp
@@ -331,8 +331,7 @@ static void floppies(device_slot_interface &device)
device.option_add("525qd", FLOPPY_525_QD);
}
-void rc702_state::rc702(machine_config &config)
-{
+MACHINE_CONFIG_START(rc702_state::rc702)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(8'000'000) / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &rc702_state::rc702_mem);
@@ -359,8 +358,8 @@ void rc702_state::rc702(machine_config &config)
m_dma->out_eop_callback().set(FUNC(rc702_state::eop_w)).invert(); // real line is active low, mame has it backwards
m_dma->in_memr_callback().set(FUNC(rc702_state::memory_read_byte));
m_dma->out_memw_callback().set(FUNC(rc702_state::memory_write_byte));
- m_dma->in_ior_callback<1>().set(m_fdc, FUNC(upd765a_device::dma_r));
- m_dma->out_iow_callback<1>().set(m_fdc, FUNC(upd765a_device::dma_w));
+ m_dma->in_ior_callback<1>().set(m_fdc, FUNC(upd765a_device::mdma_r));
+ m_dma->out_iow_callback<1>().set(m_fdc, FUNC(upd765a_device::mdma_w));
m_dma->out_iow_callback<2>().set("crtc", FUNC(i8275_device::dack_w));
m_dma->out_iow_callback<3>().set("crtc", FUNC(i8275_device::dack_w));
m_dma->out_dack_callback<1>().set(FUNC(rc702_state::dack1_w));
@@ -368,7 +367,8 @@ void rc702_state::rc702(machine_config &config)
UPD765A(config, m_fdc, 8_MHz_XTAL, true, true);
m_fdc->intrq_wr_callback().set(m_ctc1, FUNC(z80ctc_device::trg3));
m_fdc->drq_wr_callback().set(m_dma, FUNC(am9517a_device::dreq1_w));
- FLOPPY_CONNECTOR(config, "fdc:0", floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
/* Keyboard */
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
@@ -379,11 +379,11 @@ void rc702_state::rc702(machine_config &config)
m_7474->comp_output_cb().set(FUNC(rc702_state::qbar_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_size(272*2, 200+4*8);
- screen.set_visarea(0, 272*2-1, 0, 200-1);
- screen.set_screen_update("crtc", FUNC(i8275_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(272*2, 200+4*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 272*2-1, 0, 200-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", i8275_device, screen_update)
i8275_device &crtc(I8275(config, "crtc", 11640000/7));
crtc.set_character_width(7);
@@ -397,7 +397,7 @@ void rc702_state::rc702(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
BEEP(config, m_beep, 1000).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/rc759.cpp b/src/mame/drivers/rc759.cpp
index e5db39cbf0a..85161519be8 100644
--- a/src/mame/drivers/rc759.cpp
+++ b/src/mame/drivers/rc759.cpp
@@ -482,7 +482,7 @@ void rc759_state::rc759_io(address_map &map)
map(0x000, 0x003).mirror(0x0c).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
map(0x020, 0x020).r(FUNC(rc759_state::keyboard_r));
map(0x056, 0x057).noprw(); // in reality, access to sound and rtc is a bit more involved
- map(0x05a, 0x05a).w(m_snd, FUNC(sn76489a_device::write));
+ map(0x05a, 0x05a).w(m_snd, FUNC(sn76489a_device::command_w));
map(0x05c, 0x05c).rw(FUNC(rc759_state::rtc_r), FUNC(rc759_state::rtc_w));
// AM_RANGE(0x060, 0x06f) AM_WRITE8(crt_control_w, 0x00ff)
map(0x070, 0x077).mirror(0x08).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
diff --git a/src/mame/drivers/rcorsair.cpp b/src/mame/drivers/rcorsair.cpp
index cff08bd03b0..6eb45d37e5d 100644
--- a/src/mame/drivers/rcorsair.cpp
+++ b/src/mame/drivers/rcorsair.cpp
@@ -156,30 +156,30 @@ uint32_t rcorsair_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
return 0;
}
-void rcorsair_state::rcorsair(machine_config &config)
-{
+MACHINE_CONFIG_START(rcorsair_state::rcorsair)
+
/* Main CPU is probably inside Custom Block with
program code, unknown type */
- Z80(config, m_maincpu, 8000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &rcorsair_state::rcorsair_main_map);
- //m_maincpu->set_vblank_int("screen", FUNC(rcorsair_state::irq0_line_hold));
-
- I8035(config, m_subcpu, 8000000);
- m_subcpu->set_addrmap(AS_PROGRAM, &rcorsair_state::rcorsair_sub_map);
- m_subcpu->set_addrmap(AS_IO, &rcorsair_state::rcorsair_sub_io_map);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_screen_update(FUNC(rcorsair_state::screen_update));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 0, 256-1);
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_rcorsair);
- PALETTE(config, "palette").set_entries(0x100);
-}
+ MCFG_DEVICE_ADD("maincpu", Z80, 8000000)
+ MCFG_DEVICE_PROGRAM_MAP(rcorsair_main_map)
+ //MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rcorsair_state, irq0_line_hold)
+
+ MCFG_DEVICE_ADD("subcpu", I8035, 8000000)
+ MCFG_DEVICE_PROGRAM_MAP(rcorsair_sub_map)
+ MCFG_DEVICE_IO_MAP(rcorsair_sub_io_map)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_UPDATE_DRIVER(rcorsair_state, screen_update)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rcorsair)
+ MCFG_PALETTE_ADD("palette", 0x100)
+MACHINE_CONFIG_END
ROM_START( rcorsair )
ROM_REGION( 0x6000, "maincpu", 0 )
diff --git a/src/mame/drivers/rd100.cpp b/src/mame/drivers/rd100.cpp
index ef6a9076d93..881f999e2c1 100644
--- a/src/mame/drivers/rd100.cpp
+++ b/src/mame/drivers/rd100.cpp
@@ -101,28 +101,27 @@ MACHINE_RESET_MEMBER( rd100_state, rd100 )
{
}
-void rd100_state::rd100(machine_config &config)
-{
+MACHINE_CONFIG_START(rd100_state::rd100)
// basic machine hardware
- MC6809(config, m_maincpu, XTAL(4'000'000)); // MC6809P???
- m_maincpu->set_addrmap(AS_PROGRAM, &rd100_state::mem_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(4'000'000)) // MC6809P???
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
MCFG_MACHINE_RESET_OVERRIDE(rd100_state, rd100)
- PIA6821(config, "pia1", 0);
+ MCFG_DEVICE_ADD("pia1", PIA6821, 0)
- PIA6821(config, "pia2", 0);
+ MCFG_DEVICE_ADD("pia2", PIA6821, 0)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(250));
- screen.set_screen_update(FUNC(rd100_state::screen_update));
- screen.set_size(64*6, 32*8);
- screen.set_visarea(0, 64*6-1, 0, 32*8-1);
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(250))
+ MCFG_SCREEN_UPDATE_DRIVER(rd100_state, screen_update)
+ MCFG_SCREEN_SIZE(64*6, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*6-1, 0, 32*8-1)
PALETTE(config, "palette", palette_device::MONOCHROME);
- //GFXDECODE(config, "gfxdecode", "palette", gfx_rd100);
-}
+ //MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rd100)
+MACHINE_CONFIG_END
ROM_START( rd100 )
ROM_REGION( 0x8000, "roms", 0 )
diff --git a/src/mame/drivers/rd110.cpp b/src/mame/drivers/rd110.cpp
index b9a9f62cd9e..2b42e238061 100644
--- a/src/mame/drivers/rd110.cpp
+++ b/src/mame/drivers/rd110.cpp
@@ -233,8 +233,7 @@ void d110_state::d110_map(address_map &map)
map(0xc000, 0xffff).bankrw("fixed");
}
-void d110_state::d110(machine_config &config)
-{
+MACHINE_CONFIG_START(d110_state::d110)
P8098(config, m_maincpu, 12_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &d110_state::d110_map);
m_maincpu->serial_tx_cb().set(FUNC(d110_state::midi_w));
@@ -248,22 +247,22 @@ void d110_state::d110(machine_config &config)
RAM( config, m_memc ).set_default_size( "32K" );
NVRAM( config, m_memcs, nvram_device::DEFAULT_ALL_0 );
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_screen_update(FUNC(d110_state::screen_update));
-// screen.set_size(20*6-1, 2*9-1);
- screen.set_size(16*6-1, (16*6-1)*3/4);
- screen.set_visarea(0, 16*6-2, 0, (16*6-1)*3/4-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD( "screen", LCD )
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_UPDATE_DRIVER(d110_state, screen_update)
+// MCFG_SCREEN_SIZE(20*6-1, 2*9-1)
+ MCFG_SCREEN_SIZE(16*6-1, (16*6-1)*3/4)
+ MCFG_SCREEN_VISIBLE_AREA(0, 16*6-2, 0, (16*6-1)*3/4-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(d110_state::d110_palette), 2);
- MSM6222B_01(config, m_lcd, 0);
+ MCFG_MSM6222B_01_ADD( m_lcd )
- TIMER(config, m_midi_timer).configure_generic(FUNC(d110_state::midi_timer_cb));
+ MCFG_TIMER_DRIVER_ADD( m_midi_timer, d110_state, midi_timer_cb )
- TIMER(config, "samples_timer").configure_periodic(FUNC(d110_state::samples_timer_cb), attotime::from_hz(32000*2) );
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC( "samples_timer", d110_state, samples_timer_cb, attotime::from_hz(32000*2) )
+MACHINE_CONFIG_END
ROM_START( d110 )
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/re900.cpp b/src/mame/drivers/re900.cpp
index f0727f18cb0..4c98a94c6c1 100644
--- a/src/mame/drivers/re900.cpp
+++ b/src/mame/drivers/re900.cpp
@@ -264,7 +264,8 @@ void re900_state::mem_io(address_map &map)
map(0x0000, 0xbfff).r(FUNC(re900_state::rom_r));
map(0xc000, 0xdfff).ram().share("nvram");
map(0xe000, 0xefff).w(FUNC(re900_state::watchdog_reset_w));
- map(0xe000, 0xe001).w("tms9128", FUNC(tms9928a_device::write));
+ map(0xe000, 0xe000).w("tms9128", FUNC(tms9928a_device::vram_w));
+ map(0xe001, 0xe001).w("tms9128", FUNC(tms9928a_device::register_w));
map(0xe800, 0xe801).w("ay_re900", FUNC(ay8910_device::address_data_w));
map(0xe802, 0xe802).r("ay_re900", FUNC(ay8910_device::data_r));
}
diff --git a/src/mame/drivers/realbrk.cpp b/src/mame/drivers/realbrk.cpp
index 5bcc5ab632a..464402e08dc 100644
--- a/src/mame/drivers/realbrk.cpp
+++ b/src/mame/drivers/realbrk.cpp
@@ -174,6 +174,7 @@ void realbrk_state::base_mem(address_map &map)
map(0x606000, 0x60600f).ram().w(FUNC(realbrk_state::vregs_w)).share("vregs"); // Scroll + Video Regs
map(0x800000, 0x800003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0xff00); // YMZ280
map(0xfe0000, 0xfeffff).ram(); // RAM
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
/*realbrk specific memory map*/
@@ -217,6 +218,7 @@ void realbrk_state::dai2kaku_mem(address_map &map)
map(0xc00002, 0xc00003).portr("IN1"); // Coins
map(0xc00004, 0xc00005).ram().r(FUNC(realbrk_state::realbrk_dsw_r)).share("dsw_select"); // DSW select
map(0xff0000, 0xfffbff).ram(); // RAM
+ map(0xfffd0a, 0xfffd0b).w(FUNC(realbrk_state::dai2kaku_flipscreen_w)); // Hack! Parallel port data register
}
/***************************************************************************
@@ -762,67 +764,69 @@ WRITE_LINE_MEMBER(realbrk_state::vblank_irq)
{
/* VBlank is connected to INT1 (external interrupts pin 1) */
if (state)
- m_maincpu->external_interrupt_1();
+ m_tmp68301->external_interrupt_1();
}
-void realbrk_state::realbrk(machine_config &config)
-{
+MACHINE_CONFIG_START(realbrk_state::realbrk)
+
/* basic machine hardware */
- TMP68301(config, m_maincpu, XTAL(32'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &realbrk_state::realbrk_mem);
- m_maincpu->out_parallel_callback().set(FUNC(realbrk_state::realbrk_flipscreen_w));
+ MCFG_DEVICE_ADD(m_maincpu, M68000, XTAL(32'000'000) / 2) /* !! TMP68301 !! */
+ MCFG_DEVICE_PROGRAM_MAP(realbrk_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("tmp68301",tmp68301_device,irq_callback)
+
+ TMP68301(config, m_tmp68301, 0);
+ m_tmp68301->set_cputag(m_maincpu);
+ m_tmp68301->out_parallel_callback().set(FUNC(realbrk_state::realbrk_flipscreen_w));
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(0x140, 0xe0);
- m_screen->set_visarea(0, 0x140-1, 0, 0xe0-1);
- m_screen->set_screen_update(FUNC(realbrk_state::screen_update));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(realbrk_state::vblank_irq));
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_realbrk);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x140, 0xe0)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
+ MCFG_SCREEN_UPDATE_DRIVER(realbrk_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, realbrk_state, vblank_irq))
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_realbrk)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x8000);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ymz280b_device &ymz(YMZ280B(config, "ymz", XTAL(33'868'800) / 2));
- ymz.add_route(0, "lspeaker", 0.50);
- ymz.add_route(1, "rspeaker", 0.50);
+ MCFG_DEVICE_ADD("ymz", YMZ280B, XTAL(33'868'800) / 2)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
- ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(3'579'545)));
- ymsnd.add_route(ALL_OUTPUTS, "lspeaker", 0.50);
- ymsnd.add_route(ALL_OUTPUTS, "rspeaker", 0.50);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
+MACHINE_CONFIG_END
-void realbrk_state::pkgnsh(machine_config &config)
-{
+MACHINE_CONFIG_START(realbrk_state::pkgnsh)
realbrk(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(pkgnsh_mem)
- m_maincpu->set_addrmap(AS_PROGRAM, &realbrk_state::pkgnsh_mem);
- m_maincpu->out_parallel_callback().set_nop();
-}
+ m_tmp68301->out_parallel_callback().set_nop();
+MACHINE_CONFIG_END
-void realbrk_state::pkgnshdx(machine_config &config)
-{
+MACHINE_CONFIG_START(realbrk_state::pkgnshdx)
pkgnsh(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(pkgnshdx_mem)
+MACHINE_CONFIG_END
- m_maincpu->set_addrmap(AS_PROGRAM, &realbrk_state::pkgnshdx_mem);
-}
-
-void realbrk_state::dai2kaku(machine_config &config)
-{
+MACHINE_CONFIG_START(realbrk_state::dai2kaku)
realbrk(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dai2kaku_mem)
- m_maincpu->set_addrmap(AS_PROGRAM, &realbrk_state::dai2kaku_mem);
- m_maincpu->out_parallel_callback().set(FUNC(realbrk_state::dai2kaku_flipscreen_w));
-
- m_gfxdecode->set_info(gfx_dai2kaku);
- m_screen->set_screen_update(FUNC(realbrk_state::screen_update_dai2kaku));
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_dai2kaku)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(realbrk_state, screen_update_dai2kaku)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/redalert.cpp b/src/mame/drivers/redalert.cpp
index a677afeae6f..85d587ecf1e 100644
--- a/src/mame/drivers/redalert.cpp
+++ b/src/mame/drivers/redalert.cpp
@@ -391,61 +391,61 @@ INPUT_PORTS_END
*
*************************************/
-void redalert_state::redalert(machine_config &config)
-{
+MACHINE_CONFIG_START(redalert_state::redalert)
+
/* basic machine hardware */
- M6502(config, m_maincpu, MAIN_CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &redalert_state::redalert_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(redalert_state::redalert_vblank_interrupt));
+ MCFG_DEVICE_ADD("maincpu", M6502, MAIN_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(redalert_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", redalert_state, redalert_vblank_interrupt)
/* video hardware */
redalert_video(config);
/* audio hardware */
redalert_audio(config);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(redalert_state::ww3)
-void redalert_state::ww3(machine_config &config)
-{
/* basic machine hardware */
- M6502(config, m_maincpu, MAIN_CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &redalert_state::ww3_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(redalert_state::redalert_vblank_interrupt));
+ MCFG_DEVICE_ADD("maincpu", M6502, MAIN_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(ww3_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", redalert_state, redalert_vblank_interrupt)
/* video hardware */
ww3_video(config);
/* audio hardware */
ww3_audio(config);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(redalert_state::panther)
-void redalert_state::panther(machine_config &config)
-{
/* basic machine hardware */
- M6502(config, m_maincpu, MAIN_CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &redalert_state::panther_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(redalert_state::redalert_vblank_interrupt));
+ MCFG_DEVICE_ADD("maincpu", M6502, MAIN_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(panther_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", redalert_state, redalert_vblank_interrupt)
/* video hardware */
panther_video(config);
/* audio hardware */
ww3_audio(config);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(redalert_state::demoneye)
-void redalert_state::demoneye(machine_config &config)
-{
/* basic machine hardware */
- M6502(config, m_maincpu, MAIN_CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &redalert_state::demoneye_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(redalert_state::redalert_vblank_interrupt));
+ MCFG_DEVICE_ADD("maincpu", M6502, MAIN_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(demoneye_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", redalert_state, redalert_vblank_interrupt)
/* video hardware */
demoneye_video(config);
/* audio hardware */
demoneye_audio(config);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/redclash.cpp b/src/mame/drivers/redclash.cpp
index 0442a7ef404..6ce9e4ee47a 100644
--- a/src/mame/drivers/redclash.cpp
+++ b/src/mame/drivers/redclash.cpp
@@ -36,7 +36,7 @@ WRITE8_MEMBER( redclash_state::irqack_w )
m_maincpu->set_input_line(0, CLEAR_LINE);
}
-template <unsigned B> WRITE8_MEMBER(redclash_state::star_w)
+template <unsigned B> WRITE8_MEMBER(redclash_state::redclash_star_w)
{
m_stars->set_speed(BIT(data, 0) << B, 1U << B);
}
@@ -45,41 +45,41 @@ void redclash_state::zerohour_map(address_map &map)
{
map(0x0000, 0x2fff).rom();
map(0x3000, 0x37ff).ram();
- map(0x3800, 0x3bff).ram().share(m_spriteram);
- map(0x4000, 0x43ff).ram().w(FUNC(redclash_state::videoram_w)).share(m_videoram);
+ map(0x3800, 0x3bff).ram().share("spriteram");
+ map(0x4000, 0x43ff).ram().w(FUNC(redclash_state::redclash_videoram_w)).share("videoram");
map(0x4800, 0x4800).portr("IN0"); /* IN0 */
map(0x4801, 0x4801).portr("IN1"); /* IN1 */
map(0x4802, 0x4802).portr("DSW1"); /* DSW0 */
map(0x4803, 0x4803).portr("DSW2"); /* DSW1 */
map(0x5000, 0x5007).nopw(); /* to sound board */
- map(0x5800, 0x5800).w(FUNC(redclash_state::star_w<0>));
+ map(0x5800, 0x5800).w(FUNC(redclash_state::redclash_star_w<0>));
map(0x5801, 0x5804).nopw(); /* to sound board */
- map(0x5805, 0x5805).w(FUNC(redclash_state::star_w<1>));
- map(0x5806, 0x5806).w(FUNC(redclash_state::star_w<2>));
- map(0x5807, 0x5807).w(FUNC(redclash_state::flipscreen_w));
- map(0x7000, 0x7000).w(FUNC(redclash_state::star_reset_w));
+ map(0x5805, 0x5805).w(FUNC(redclash_state::redclash_star_w<1>));
+ map(0x5806, 0x5806).w(FUNC(redclash_state::redclash_star_w<2>));
+ map(0x5807, 0x5807).w(FUNC(redclash_state::redclash_flipscreen_w));
+ map(0x7000, 0x7000).w(FUNC(redclash_state::redclash_star_reset_w));
map(0x7800, 0x7800).w(FUNC(redclash_state::irqack_w));
}
void redclash_state::redclash_map(address_map &map)
{
map(0x0000, 0x2fff).rom();
-// map(0x3000, 0x3000).set_nopw();
-// map(0x3800, 0x3800).set_nopw();
- map(0x4000, 0x43ff).ram().w(FUNC(redclash_state::videoram_w)).share(m_videoram);
+// AM_RANGE(0x3000, 0x3000) AM_WRITENOP
+// AM_RANGE(0x3800, 0x3800) AM_WRITENOP
+ map(0x4000, 0x43ff).ram().w(FUNC(redclash_state::redclash_videoram_w)).share("videoram");
map(0x4800, 0x4800).portr("IN0"); /* IN0 */
map(0x4801, 0x4801).portr("IN1"); /* IN1 */
map(0x4802, 0x4802).portr("DSW1"); /* DSW0 */
map(0x4803, 0x4803).portr("DSW2"); /* DSW1 */
map(0x5000, 0x5007).nopw(); /* to sound board */
- map(0x5800, 0x5800).w(FUNC(redclash_state::star_w<0>));
- map(0x5801, 0x5801).w(FUNC(redclash_state::gfxbank_w));
- map(0x5805, 0x5805).w(FUNC(redclash_state::star_w<1>));
- map(0x5806, 0x5806).w(FUNC(redclash_state::star_w<2>));
- map(0x5807, 0x5807).w(FUNC(redclash_state::flipscreen_w));
+ map(0x5800, 0x5800).w(FUNC(redclash_state::redclash_star_w<0>));
+ map(0x5801, 0x5801).w(FUNC(redclash_state::redclash_gfxbank_w));
+ map(0x5805, 0x5805).w(FUNC(redclash_state::redclash_star_w<1>));
+ map(0x5806, 0x5806).w(FUNC(redclash_state::redclash_star_w<2>));
+ map(0x5807, 0x5807).w(FUNC(redclash_state::redclash_flipscreen_w));
map(0x6000, 0x67ff).ram();
- map(0x6800, 0x6bff).ram().share(m_spriteram);
- map(0x7000, 0x7000).w(FUNC(redclash_state::star_reset_w));
+ map(0x6800, 0x6bff).ram().share("spriteram");
+ map(0x7000, 0x7000).w(FUNC(redclash_state::redclash_star_reset_w));
map(0x7800, 0x7800).w(FUNC(redclash_state::irqack_w));
}
@@ -119,7 +119,7 @@ static INPUT_PORTS_START( redclash )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
/* Note that there are TWO VBlank inputs, one is active low, the other active */
- /* high. There are probably other differences in the hardware, but emulating */
+ /* high. There are probably other differencies in the hardware, but emulating */
/* them this way is enough to get the game running. */
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
@@ -213,7 +213,7 @@ static INPUT_PORTS_START( zerohour )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
/* Note that there are TWO VBlank inputs, one is active low, the other active */
- /* high. There are probably other differences in the hardware, but emulating */
+ /* high. There are probably other differencies in the hardware, but emulating */
/* them this way is enough to get the game running. */
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
@@ -345,37 +345,54 @@ void redclash_state::machine_reset()
m_gfxbank = 0;
}
-void redclash_state::zerohour(machine_config &config)
-{
+MACHINE_CONFIG_START(redclash_state::zerohour)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* 4 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &redclash_state::zerohour_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(zerohour_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(32*8, 32*8);
- screen.set_visarea(1*8, 31*8-1, 4*8, 28*8-1);
- screen.set_screen_update(FUNC(redclash_state::screen_update));
- screen.screen_vblank().set(FUNC(redclash_state::screen_vblank));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(redclash_state, screen_update_redclash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, redclash_state, screen_vblank_redclash))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_redclash);
- PALETTE(config, m_palette, FUNC(redclash_state::palette), 4*8 + 4*16 + 32, 32 + 32);
+ PALETTE(config, m_palette, FUNC(redclash_state::redclash_palette), 4*8 + 4*16 + 32, 32 + 32);
ZEROHOUR_STARS(config, m_stars, 0);
/* sound hardware */
-}
+MACHINE_CONFIG_END
-void redclash_state::redclash(machine_config &config)
-{
- zerohour(config);
+MACHINE_CONFIG_START(redclash_state::redclash)
- m_maincpu->set_addrmap(AS_PROGRAM, &redclash_state::redclash_map);
-}
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(redclash_map)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(redclash_state, screen_update_redclash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, redclash_state, screen_vblank_redclash))
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_redclash);
+ PALETTE(config, m_palette, FUNC(redclash_state::redclash_palette), 4*8 + 4*16 + 32, 32 + 32);
+
+ ZEROHOUR_STARS(config, m_stars, 0);
+
+ /* sound hardware */
+MACHINE_CONFIG_END
@@ -543,30 +560,6 @@ ROM_START( redclashk )
ROM_LOAD( "3.11e", 0x0040, 0x0020, CRC(27fa3a50) SHA1(7cf59b7a37c156640d6ea91554d1c4276c1780e0) ) /* 6331.6w */
ROM_END
-// 2 PCB set (K-00A and K-00B)
-ROM_START( redclashs )
- ROM_REGION(0x10000, "maincpu", 0 )
- ROM_LOAD( "1.11c", 0x0000, 0x1000, CRC(62275f85) SHA1(8f5d7113a012cc29e3729d54c4a0319c838a7c0d) )
- ROM_LOAD( "3.7c", 0x1000, 0x1000, CRC(c2090318) SHA1(71725cdf51aedf5f29fa1dd1a41ad5e62c9a580d) )
- ROM_LOAD( "2.9c", 0x2000, 0x1000, CRC(b60e5ada) SHA1(37440f382c5e8852d804fa9837c36cc1e9d94d1d) )
-
- ROM_REGION(0x0800, "gfx1", 0 )
- ROM_LOAD( "6.a12", 0x0000, 0x0800, CRC(da9bbcc2) SHA1(4cbe03c7f5e99cc2f124e0089ea3c392156b5d92) )
-
- ROM_REGION( 0x2000, "gfx2", 0 )
- ROM_LOAD( "4.3e", 0x0000, 0x0800, CRC(483a1293) SHA1(e7812475c7509389bcf8fee35598e9894428eb37) )
- ROM_CONTINUE( 0x1000, 0x0800 )
- ROM_LOAD( "5.3d", 0x0800, 0x0800, CRC(c45d9601) SHA1(2f156ad61161d65284df0cc55eb1b3b990eb41cb) )
- ROM_CONTINUE( 0x1800, 0x0800 )
-
- ROM_REGION( 0x2000, "gfx3", ROMREGION_ERASE00 )
- /* gfx data will be rearranged here for 8x8 sprites */
-
- ROM_REGION( 0x0060, "proms", 0 ) // not dumped for this set
- ROM_LOAD( "1.12f", 0x0000, 0x0020, CRC(43989681) SHA1(0d471e6f499294f2f62f27392b8370e2af8e38a3) ) /* palette */
- ROM_LOAD( "2.4a", 0x0020, 0x0020, CRC(9adabf46) SHA1(f3538fdbc4280b6be46a4d7ebb4c34bd1a1ce2b7) ) /* sprite color lookup table */
- ROM_LOAD( "3.11e", 0x0040, 0x0020, CRC(27fa3a50) SHA1(7cf59b7a37c156640d6ea91554d1c4276c1780e0) ) /* ?? */
-ROM_END
void redclash_state::init_redclash()
{
@@ -583,10 +576,9 @@ void redclash_state::init_redclash()
}
-GAME( 1980, zerohour, 0, zerohour, zerohour, redclash_state, init_redclash, ROT270, "Universal", "Zero Hour (set 1)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1980, zerohoura, zerohour, zerohour, zerohour, redclash_state, init_redclash, ROT270, "Universal", "Zero Hour (set 2)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1980, zerohouri, zerohour, zerohour, zerohour, redclash_state, init_redclash, ROT270, "bootleg (Inder SA)", "Zero Hour (Inder)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1981, redclash, 0, redclash, redclash, redclash_state, init_redclash, ROT270, "Tehkan", "Red Clash (set 1)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1981, redclasha, redclash, redclash, redclash, redclash_state, init_redclash, ROT270, "Tehkan", "Red Clash (set 2)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1981, redclashk, redclash, redclash, redclash, redclash_state, init_redclash, ROT270, "Tehkan (Kaneko license)", "Red Clash (Kaneko)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1982, redclashs, redclash, redclash, redclash, redclash_state, init_redclash, ROT270, "Tehkan (Suntronics license)", "Red Clash (Suntronics)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, zerohour, 0, zerohour, zerohour, redclash_state, init_redclash, ROT270, "Universal", "Zero Hour (set 1)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, zerohoura, zerohour, zerohour, zerohour, redclash_state, init_redclash, ROT270, "Universal", "Zero Hour (set 2)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, zerohouri, zerohour, zerohour, zerohour, redclash_state, init_redclash, ROT270, "bootleg (Inder SA)", "Zero Hour (Inder)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, redclash, 0, redclash, redclash, redclash_state, init_redclash, ROT270, "Tehkan", "Red Clash (set 1)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, redclasha, redclash, redclash, redclash, redclash_state, init_redclash, ROT270, "Tehkan", "Red Clash (set 2)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, redclashk, redclash, redclash, redclash, redclash_state, init_redclash, ROT270, "Tehkan (Kaneko license)", "Red Clash (Kaneko)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/relief.cpp b/src/mame/drivers/relief.cpp
index 3f55fbc6d43..8b84b2f0999 100644
--- a/src/mame/drivers/relief.cpp
+++ b/src/mame/drivers/relief.cpp
@@ -255,18 +255,18 @@ GFXDECODE_END
*
*************************************/
-void relief_state::relief(machine_config &config)
-{
+MACHINE_CONFIG_START(relief_state::relief)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 14.318181_MHz_XTAL/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &relief_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, 14.318181_MHz_XTAL/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
EEPROM_2816(config, "eeprom").lock_after_write(true);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- GFXDECODE(config, m_gfxdecode, "palette", gfx_relief);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_relief)
PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 2048);
ATARI_VAD(config, m_vad, 0, m_screen);
@@ -275,23 +275,24 @@ void relief_state::relief(machine_config &config)
TILEMAP(config, "vad:playfield2", m_gfxdecode, 2, 8, 8, TILEMAP_SCAN_COLS, 64, 64, 0).set_info_callback(DEVICE_SELF_OWNER, FUNC(relief_state::get_playfield2_tile_info));
ATARI_MOTION_OBJECTS(config, "vad:mob", 0, m_screen, relief_state::s_mob_config).set_gfxdecode(m_gfxdecode);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses a VAD chip to generate video signals */
- m_screen->set_raw(14.318181_MHz_XTAL/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(relief_state::screen_update_relief));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_RAW_PARAMS(14.318181_MHz_XTAL/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(relief_state, screen_update_relief)
+ MCFG_SCREEN_PALETTE("palette")
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, 14.318181_MHz_XTAL/4/3, okim6295_device::PIN7_LOW);
- m_oki->add_route(ALL_OUTPUTS, "mono", 0.50);
- m_oki->set_addrmap(0, &relief_state::oki_map);
+ MCFG_DEVICE_ADD("oki", OKIM6295, 14.318181_MHz_XTAL/4/3, okim6295_device::PIN7_LOW)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
- YM2413(config, m_ym2413, 14.318181_MHz_XTAL/4).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2413, 14.318181_MHz_XTAL/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/replicator.cpp b/src/mame/drivers/replicator.cpp
index 972be03daf0..ac92256b446 100644
--- a/src/mame/drivers/replicator.cpp
+++ b/src/mame/drivers/replicator.cpp
@@ -643,6 +643,7 @@ void replicator_state::replicator(machine_config &config)
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(0, "speaker", 0.5);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}
diff --git a/src/mame/drivers/retofinv.cpp b/src/mame/drivers/retofinv.cpp
index bb0be85c97b..1a7f11b9174 100644
--- a/src/mame/drivers/retofinv.cpp
+++ b/src/mame/drivers/retofinv.cpp
@@ -220,8 +220,8 @@ void retofinv_state::sound_map(address_map &map)
map(0x2000, 0x27ff).ram(); /* 6116 sram at IC28 */
map(0x4000, 0x4000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
map(0x6000, 0x6000).w(FUNC(retofinv_state::cpu2_m6000_w));
- map(0x8000, 0x8000).w("sn1", FUNC(sn76489a_device::write));
- map(0xa000, 0xa000).w("sn2", FUNC(sn76489a_device::write));
+ map(0x8000, 0x8000).w("sn1", FUNC(sn76489a_device::command_w));
+ map(0xa000, 0xa000).w("sn2", FUNC(sn76489a_device::command_w));
map(0xe000, 0xffff).rom(); /* space for diagnostic ROM */
}
@@ -412,24 +412,24 @@ INTERRUPT_GEN_MEMBER(retofinv_state::sub_vblank_irq)
}
-void retofinv_state::retofinv(machine_config &config)
-{
+MACHINE_CONFIG_START(retofinv_state::retofinv)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'432'000)/6); /* XTAL and divider verified, 3.072 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &retofinv_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(retofinv_state::main_vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'432'000)/6) /* XTAL and divider verified, 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", retofinv_state, main_vblank_irq)
- Z80(config, m_subcpu, XTAL(18'432'000)/6); /* XTAL and divider verified, 3.072 MHz */
- m_subcpu->set_addrmap(AS_PROGRAM, &retofinv_state::sub_map);
- m_subcpu->set_vblank_int("screen", FUNC(retofinv_state::sub_vblank_irq));
+ MCFG_DEVICE_ADD("sub", Z80, XTAL(18'432'000)/6) /* XTAL and divider verified, 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sub_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", retofinv_state, sub_vblank_irq)
- Z80(config, m_audiocpu, XTAL(18'432'000)/6); /* XTAL and divider verified, 3.072 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &retofinv_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(retofinv_state::nmi_line_pulse), attotime::from_hz(2*60)); // wrong, should be ~128-132 per frame, not 120.
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(18'432'000)/6) /* XTAL and divider verified, 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(retofinv_state, nmi_line_pulse, 2*60) // wrong, should be ~128-132 per frame, not 120.
- TAITO68705_MCU(config, m_68705, XTAL(18'432'000)/6); /* XTAL and divider verified, 3.072 MHz */
+ MCFG_DEVICE_ADD("68705", TAITO68705_MCU, XTAL(18'432'000)/6) /* XTAL and divider verified, 3.072 MHz */
- config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - enough for the sound CPU to read all commands */
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - enough for the sound CPU to read all commands */
LS259(config, m_mainlatch); // IC72 - probably shared between CPUs
m_mainlatch->q_out_cb<0>().set(FUNC(retofinv_state::irq0_ack_w));
@@ -442,13 +442,13 @@ void retofinv_state::retofinv(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60.58); // vsync measured at 60.58hz
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); // not accurate
- screen.set_size(36*8, 28*8);
- screen.set_visarea(0*8, 36*8-1, 0*8, 28*8-1);
- screen.set_screen_update(FUNC(retofinv_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60.58) // vsync measured at 60.58hz
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) // not accurate
+ MCFG_SCREEN_SIZE(36*8, 28*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(retofinv_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_retofinv);
PALETTE(config, m_palette, FUNC(retofinv_state::retofinv_palette), 256*2 + 64*16 + 64*16, 256);
@@ -458,41 +458,42 @@ void retofinv_state::retofinv(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- SN76489A(config, "sn1", XTAL(18'432'000)/6).add_route(ALL_OUTPUTS, "mono", 0.80); /* @IC5?; XTAL, chip type, and divider verified, 3.072 MHz */
+ MCFG_DEVICE_ADD("sn1", SN76489A, XTAL(18'432'000)/6) /* @IC5?; XTAL, chip type, and divider verified, 3.072 MHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
- SN76489A(config, "sn2", XTAL(18'432'000)/6).add_route(ALL_OUTPUTS, "mono", 0.80); /* @IC6?; XTAL, chip type, and divider verified, 3.072 MHz */
-}
+ MCFG_DEVICE_ADD("sn2", SN76489A, XTAL(18'432'000)/6) /* @IC6?; XTAL, chip type, and divider verified, 3.072 MHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
/* bootleg which has different palette clut */
-void retofinv_state::retofinvb1(machine_config &config)
-{
+MACHINE_CONFIG_START(retofinv_state::retofinvb1)
retofinv(config);
m_palette->set_init(FUNC(retofinv_state::retofinv_bl_palette));
-}
+MACHINE_CONFIG_END
/* bootleg which has no mcu */
-void retofinv_state::retofinvb_nomcu(machine_config &config)
-{
+MACHINE_CONFIG_START(retofinv_state::retofinvb_nomcu)
retofinv(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &retofinv_state::bootleg_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(bootleg_map)
m_mainlatch->q_out_cb<3>().set_nop();
- config.device_remove("68705");
-}
+ MCFG_DEVICE_REMOVE("68705")
+MACHINE_CONFIG_END
-/* bootleg which has different palette clut and also has no mcu */
-void retofinv_state::retofinvb1_nomcu(machine_config &config)
-{
+/* bootleg which has different pallete clut and also has no mcu */
+MACHINE_CONFIG_START(retofinv_state::retofinvb1_nomcu)
retofinvb1(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &retofinv_state::bootleg_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(bootleg_map)
m_mainlatch->q_out_cb<3>().set_nop();
- config.device_remove("68705");
-}
+ MCFG_DEVICE_REMOVE("68705")
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/rex6000.cpp b/src/mame/drivers/rex6000.cpp
index e97c01ba358..43c3a8b6209 100644
--- a/src/mame/drivers/rex6000.cpp
+++ b/src/mame/drivers/rex6000.cpp
@@ -897,22 +897,22 @@ GFXDECODE_END
MACHINE_CONFIG_START(rex6000_state::rex6000)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000)); //Toshiba microprocessor Z80 compatible at 4.3MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &rex6000_state::rex6000_mem);
- m_maincpu->set_addrmap(AS_IO, &rex6000_state::rex6000_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(4'000'000)) //Toshiba microprocessor Z80 compatible at 4.3MHz
+ MCFG_DEVICE_PROGRAM_MAP(rex6000_mem)
+ MCFG_DEVICE_IO_MAP(rex6000_io)
- TIMER(config, "sec_timer").configure_periodic(FUNC(rex6000_state::sec_timer), attotime::from_hz(1));
- TIMER(config, "irq_timer1").configure_periodic(FUNC(rex6000_state::irq_timer1), attotime::from_hz(32));
- TIMER(config, "irq_timer2").configure_periodic(FUNC(rex6000_state::irq_timer2), attotime::from_hz(4096));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("sec_timer", rex6000_state, sec_timer, attotime::from_hz(1))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer1", rex6000_state, irq_timer1, attotime::from_hz(32))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer2", rex6000_state, irq_timer2, attotime::from_hz(4096))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(rex6000_state::screen_update));
- screen.set_size(240, 120);
- screen.set_visarea(0, 240-1, 0, 120-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(rex6000_state, screen_update)
+ MCFG_SCREEN_SIZE(240, 120)
+ MCFG_SCREEN_VISIBLE_AREA(0, 240-1, 0, 120-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(rex6000_state::rex6000_palettte), 2);
GFXDECODE(config, "gfxdecode", "palette", gfx_rex6000);
@@ -934,7 +934,7 @@ MACHINE_CONFIG_START(rex6000_state::rex6000)
serport.cts_handler().set(m_uart, FUNC(ins8250_uart_device::cts_w));
/* quickload */
- MCFG_QUICKLOAD_ADD("quickload", rex6000_state, rex6000, "rex,ds2")
+ MCFG_QUICKLOAD_ADD("quickload", rex6000_state, rex6000, "rex,ds2", 0)
tc8521_device &rtc(TC8521(config, TC8521_TAG, XTAL(32'768)));
rtc.out_alarm_callback().set(FUNC(rex6000_state::alarm_irq));
@@ -956,18 +956,19 @@ MACHINE_CONFIG_START(rex6000_state::rex6000)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beep, 0).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD( "beeper", BEEP, 0 )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
MACHINE_CONFIG_END
MACHINE_CONFIG_START(oz750_state::oz750)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(9'830'400)); //Toshiba microprocessor Z80 compatible at 9.8MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &oz750_state::rex6000_mem);
- m_maincpu->set_addrmap(AS_IO, &oz750_state::oz750_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(9'830'400)) //Toshiba microprocessor Z80 compatible at 9.8MHz
+ MCFG_DEVICE_PROGRAM_MAP(rex6000_mem)
+ MCFG_DEVICE_IO_MAP(oz750_io)
- TIMER(config, "sec_timer").configure_periodic(FUNC(rex6000_state::sec_timer), attotime::from_hz(1));
- TIMER(config, "irq_timer1").configure_periodic(FUNC(rex6000_state::irq_timer1), attotime::from_hz(64));
- TIMER(config, "irq_timer2").configure_periodic(FUNC(rex6000_state::irq_timer2), attotime::from_hz(8192));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("sec_timer", rex6000_state, sec_timer, attotime::from_hz(1))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer1", rex6000_state, irq_timer1, attotime::from_hz(64))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer2", rex6000_state, irq_timer2, attotime::from_hz(8192))
NS16550(config, m_uart, XTAL(9'830'400) / 4);
m_uart->out_tx_callback().set("serport", FUNC(rs232_port_device::write_txd));
@@ -983,13 +984,13 @@ MACHINE_CONFIG_START(oz750_state::oz750)
//serport.cts_handler().set(m_uart, FUNC(ins8250_uart_device::cts_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(oz750_state::screen_update_oz));
- screen.set_size(240, 80);
- screen.set_visarea(0, 240-1, 0, 80-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(oz750_state, screen_update_oz)
+ MCFG_SCREEN_SIZE(240, 80)
+ MCFG_SCREEN_VISIBLE_AREA(0, 240-1, 0, 80-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(rex6000_state::rex6000_palettte), 2);
@@ -997,7 +998,7 @@ MACHINE_CONFIG_START(oz750_state::oz750)
ADDRESS_MAP_BANK(config, "bank1").set_map(&oz750_state::oz750_banked_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x2000);
/* quickload */
- MCFG_QUICKLOAD_ADD("quickload", oz750_state, oz750, "wzd")
+ MCFG_QUICKLOAD_ADD("quickload", oz750_state, oz750, "wzd", 0)
tc8521_device &rtc(TC8521(config, TC8521_TAG, XTAL(32'768)));
rtc.out_alarm_callback().set(FUNC(rex6000_state::alarm_irq));
@@ -1010,7 +1011,8 @@ MACHINE_CONFIG_START(oz750_state::oz750)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beep, 0).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD( "beeper", BEEP, 0 )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/rgum.cpp b/src/mame/drivers/rgum.cpp
index 71a606245ab..70a10ed5f30 100644
--- a/src/mame/drivers/rgum.cpp
+++ b/src/mame/drivers/rgum.cpp
@@ -245,20 +245,19 @@ static GFXDECODE_START( gfx_rgum )
GFXDECODE_END
-void rgum_state::rgum(machine_config &config)
-{
+MACHINE_CONFIG_START(rgum_state::rgum)
/* basic machine hardware */
- M65C02(config, m_maincpu, 24000000/16); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &rgum_state::rgum_map);
+ MCFG_DEVICE_ADD("maincpu", M65C02,24000000/16) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(rgum_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 0, 256-1);
- screen.set_screen_update(FUNC(rgum_state::screen_update_royalgum));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(rgum_state, screen_update_royalgum)
+ MCFG_SCREEN_PALETTE("palette")
mc6845_device &crtc(MC6845(config, "crtc", 24000000/16)); /* unknown clock & type, hand tuned to get ~50 fps (?) */
crtc.set_screen("screen");
@@ -271,13 +270,13 @@ void rgum_state::rgum(machine_config &config)
ppi.in_pb_callback().set_ioport("IN1");
ppi.in_pc_callback().set_ioport("IN2");
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_rgum);
- PALETTE(config, m_palette).set_entries(0x100);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rgum)
+ MCFG_PALETTE_ADD("palette", 0x100)
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd", 24000000/16).add_route(ALL_OUTPUTS, "mono", 0.50); /* guessed to use the same xtal as the crtc */
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/risc2500.cpp b/src/mame/drivers/risc2500.cpp
index 86eea5d52a4..e84ed89901a 100644
--- a/src/mame/drivers/risc2500.cpp
+++ b/src/mame/drivers/risc2500.cpp
@@ -341,6 +341,7 @@ void risc2500_state::risc2500(machine_config &config)
SPEAKER(config, "speaker").front_center();
DAC_2BIT_BINARY_WEIGHTED_ONES_COMPLEMENT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/riscpc.cpp b/src/mame/drivers/riscpc.cpp
index 055e68225a8..b08056fdbfa 100644
--- a/src/mame/drivers/riscpc.cpp
+++ b/src/mame/drivers/riscpc.cpp
@@ -814,91 +814,86 @@ void riscpc_state::machine_reset()
m_flyback_timer->adjust( attotime::never);
}
-void riscpc_state::rpc600(machine_config &config)
-{
+MACHINE_CONFIG_START(riscpc_state::rpc600)
/* Basic machine hardware */
- ARM7(config, m_maincpu, 60_MHz_XTAL/2); // ARM610
- m_maincpu->set_addrmap(AS_PROGRAM, &riscpc_state::a7000_mem);
+ MCFG_DEVICE_ADD( "maincpu", ARM7, 60_MHz_XTAL/2) // ARM610
+ MCFG_DEVICE_PROGRAM_MAP(a7000_mem)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(1900, 1080); //max available size
- m_screen->set_visarea(0, 1900-1, 0, 1080-1);
- m_screen->set_screen_update(FUNC(riscpc_state::screen_update));
- PALETTE(config, m_palette).set_entries(0x200);
-}
-
-void riscpc_state::rpc700(machine_config &config)
-{
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(1900, 1080) //max available size
+ MCFG_SCREEN_VISIBLE_AREA(0, 1900-1, 0, 1080-1)
+ MCFG_SCREEN_UPDATE_DRIVER(riscpc_state, screen_update)
+ MCFG_PALETTE_ADD("palette", 0x200)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(riscpc_state::rpc700)
/* Basic machine hardware */
- ARM7(config, m_maincpu, 80_MHz_XTAL/2); // ARM710
- m_maincpu->set_addrmap(AS_PROGRAM, &riscpc_state::a7000_mem);
+ MCFG_DEVICE_ADD( "maincpu", ARM7, 80_MHz_XTAL/2) // ARM710
+ MCFG_DEVICE_PROGRAM_MAP(a7000_mem)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(1900, 1080); //max available size
- m_screen->set_visarea(0, 1900-1, 0, 1080-1);
- m_screen->set_screen_update(FUNC(riscpc_state::screen_update));
- PALETTE(config, m_palette).set_entries(0x200);
-}
-
-void riscpc_state::a7000(machine_config &config)
-{
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(1900, 1080) //max available size
+ MCFG_SCREEN_VISIBLE_AREA(0, 1900-1, 0, 1080-1)
+ MCFG_SCREEN_UPDATE_DRIVER(riscpc_state, screen_update)
+ MCFG_PALETTE_ADD("palette", 0x200)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(riscpc_state::a7000)
/* Basic machine hardware */
- ARM7(config, m_maincpu, XTAL(32'000'000)); // ARM7500
- m_maincpu->set_addrmap(AS_PROGRAM, &riscpc_state::a7000_mem);
+ MCFG_DEVICE_ADD( "maincpu", ARM7, XTAL(32'000'000) ) // ARM7500
+ MCFG_DEVICE_PROGRAM_MAP(a7000_mem)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(1900, 1080); //max available size
- m_screen->set_visarea(0, 1900-1, 0, 1080-1);
- m_screen->set_screen_update(FUNC(riscpc_state::screen_update));
- PALETTE(config, m_palette).set_entries(0x200);
-}
-
-void riscpc_state::a7000p(machine_config &config)
-{
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(1900, 1080) //max available size
+ MCFG_SCREEN_VISIBLE_AREA(0, 1900-1, 0, 1080-1)
+ MCFG_SCREEN_UPDATE_DRIVER(riscpc_state, screen_update)
+ MCFG_PALETTE_ADD("palette", 0x200)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(riscpc_state::a7000p)
a7000(config);
- m_maincpu->set_clock(XTAL(48'000'000)); // ARM7500FE
-}
+ MCFG_DEVICE_MODIFY("maincpu") // ARM7500FE
+ MCFG_DEVICE_CLOCK(XTAL(48'000'000))
+MACHINE_CONFIG_END
-void riscpc_state::sarpc(machine_config &config)
-{
+MACHINE_CONFIG_START(riscpc_state::sarpc)
/* Basic machine hardware */
- ARM7(config, m_maincpu, 202000000); // StrongARM
- m_maincpu->set_addrmap(AS_PROGRAM, &riscpc_state::a7000_mem);
+ MCFG_DEVICE_ADD( "maincpu", ARM7, 202000000 ) // StrongARM
+ MCFG_DEVICE_PROGRAM_MAP(a7000_mem)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(1900, 1080); //max available size
- m_screen->set_visarea(0, 1900-1, 0, 1080-1);
- m_screen->set_screen_update(FUNC(riscpc_state::screen_update));
- PALETTE(config, m_palette).set_entries(0x200);
-}
-
-void riscpc_state::sarpc_j233(machine_config &config)
-{
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(1900, 1080) //max available size
+ MCFG_SCREEN_VISIBLE_AREA(0, 1900-1, 0, 1080-1)
+ MCFG_SCREEN_UPDATE_DRIVER(riscpc_state, screen_update)
+ MCFG_PALETTE_ADD("palette", 0x200)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(riscpc_state::sarpc_j233)
/* Basic machine hardware */
- ARM7(config, m_maincpu, 233000000); // StrongARM
- m_maincpu->set_addrmap(AS_PROGRAM, &riscpc_state::a7000_mem);
+ MCFG_DEVICE_ADD( "maincpu", ARM7, 233000000 ) // StrongARM
+ MCFG_DEVICE_PROGRAM_MAP(a7000_mem)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(1900, 1080); //max available size
- m_screen->set_visarea(0, 1900-1, 0, 1080-1);
- m_screen->set_screen_update(FUNC(riscpc_state::screen_update));
- PALETTE(config, m_palette).set_entries(0x200);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(1900, 1080) //max available size
+ MCFG_SCREEN_VISIBLE_AREA(0, 1900-1, 0, 1080-1)
+ MCFG_SCREEN_UPDATE_DRIVER(riscpc_state, screen_update)
+ MCFG_PALETTE_ADD("palette", 0x200)
+MACHINE_CONFIG_END
ROM_START(rpc600)
ROM_REGION( 0x800000, "user1", ROMREGION_ERASEFF )
diff --git a/src/mame/drivers/rltennis.cpp b/src/mame/drivers/rltennis.cpp
index 9803fba9585..7f120374402 100644
--- a/src/mame/drivers/rltennis.cpp
+++ b/src/mame/drivers/rltennis.cpp
@@ -181,20 +181,20 @@ void rltennis_state::ramdac_map(address_map &map)
map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb888_w));
}
-void rltennis_state::rltennis(machine_config &config)
-{
- M68000(config, m_maincpu, RLT_XTAL/2); /* 68000P8 ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &rltennis_state::rltennis_main);
- m_maincpu->set_vblank_int("screen", FUNC(rltennis_state::interrupt));
+MACHINE_CONFIG_START(rltennis_state::rltennis)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, RLT_XTAL/2) /* 68000P8 ??? */
+ MCFG_DEVICE_PROGRAM_MAP(rltennis_main)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rltennis_state, interrupt)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(RLT_REFRESH_RATE);
- screen.set_size(320, 240);
- screen.set_visarea(0, 319, 0, 239);
- screen.set_screen_update(FUNC(rltennis_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE( RLT_REFRESH_RATE )
+ MCFG_SCREEN_SIZE(320, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0,319, 0, 239)
+ MCFG_SCREEN_UPDATE_DRIVER(rltennis_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, "palette").set_entries(256);
+ MCFG_PALETTE_ADD("palette", 256)
EEPROM_2864(config, "eeprom");
@@ -204,12 +204,12 @@ void rltennis_state::rltennis(machine_config &config)
SPEAKER(config, "speaker").front_center();
- DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
ROM_START( rltennis )
ROM_REGION( 0x100000, "maincpu", 0 )
diff --git a/src/mame/drivers/rm380z.cpp b/src/mame/drivers/rm380z.cpp
index 7b648e24133..e2215a65ba4 100644
--- a/src/mame/drivers/rm380z.cpp
+++ b/src/mame/drivers/rm380z.cpp
@@ -234,30 +234,29 @@ uint32_t rm380z_state::screen_update_rm380z(screen_device &screen, bitmap_ind16
return 0;
}
-void rm380z_state::rm380z(machine_config &config)
-{
+MACHINE_CONFIG_START(rm380z_state::rm380z)
/* basic machine hardware */
- Z80(config, m_maincpu, 16_MHz_XTAL / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &rm380z_state::rm380z_mem);
- m_maincpu->set_addrmap(AS_IO, &rm380z_state::rm380z_io);
+ MCFG_DEVICE_ADD(RM380Z_MAINCPU_TAG, Z80, 16_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(rm380z_mem)
+ MCFG_DEVICE_IO_MAP(rm380z_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
// according to videos and pictures of the real hardware, chars are spaced of at least 1 pixel
// and there is at least 1 pixel between each row of characters
- screen.set_size((RM380Z_SCREENCOLS*(RM380Z_CHDIMX+1)), (RM380Z_SCREENROWS*(RM380Z_CHDIMY+1)));
- screen.set_visarea(0, (RM380Z_SCREENCOLS*(RM380Z_CHDIMX+1))-1, 0, (RM380Z_SCREENROWS*(RM380Z_CHDIMY+1))-1);
- screen.set_screen_update(FUNC(rm380z_state::screen_update_rm380z));
- screen.set_palette("palette");
+ MCFG_SCREEN_SIZE((RM380Z_SCREENCOLS*(RM380Z_CHDIMX+1)), (RM380Z_SCREENROWS*(RM380Z_CHDIMY+1)))
+ MCFG_SCREEN_VISIBLE_AREA(0, (RM380Z_SCREENCOLS*(RM380Z_CHDIMX+1))-1, 0, (RM380Z_SCREENROWS*(RM380Z_CHDIMY+1))-1)
+ MCFG_SCREEN_UPDATE_DRIVER(rm380z_state, screen_update_rm380z)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
/* cassette */
- CASSETTE(config, m_cassette);
-// m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+// MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED)
//m_cassette->change_state((BIT(data,x)) ? CASSETTE_MOTOR_DISABLED : CASSETTE_MOTOR_ENABLED, CASSETTE_MASK_MOTOR);
/* RAM configurations */
@@ -266,37 +265,36 @@ void rm380z_state::rm380z(machine_config &config)
/* floppy disk */
FD1771(config, m_fdc, 1_MHz_XTAL);
- FLOPPY_CONNECTOR(config, "wd1771:0", rm380z_floppies, "sssd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "wd1771:1", rm380z_floppies, "sssd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("wd1771:0", rm380z_floppies, "sssd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1771:1", rm380z_floppies, "sssd", floppy_image_device::default_floppy_formats)
/* keyboard */
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
keyboard.set_keyboard_callback(FUNC(rm380z_state::keyboard_put));
-}
+MACHINE_CONFIG_END
-void rm380z_state::rm480z(machine_config &config)
-{
+MACHINE_CONFIG_START(rm380z_state::rm480z)
/* basic machine hardware */
- Z80(config, m_maincpu, 16_MHz_XTAL / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &rm380z_state::rm480z_mem);
- m_maincpu->set_addrmap(AS_IO, &rm380z_state::rm480z_io);
+ MCFG_DEVICE_ADD(RM380Z_MAINCPU_TAG, Z80, 16_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(rm480z_mem)
+ MCFG_DEVICE_IO_MAP(rm480z_io)
MCFG_MACHINE_RESET_OVERRIDE(rm380z_state, rm480z)
/* video hardware */
-// screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
-// screen.set_refresh_hz(50);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
-// screen.set_size((RM380Z_SCREENCOLS*(RM380Z_CHDIMX+1)), (RM380Z_SCREENROWS*(RM380Z_CHDIMY+1)));
-// screen.set_visarea(0, (RM380Z_SCREENCOLS*(RM380Z_CHDIMX+1))-1, 0, (RM380Z_SCREENROWS*(RM380Z_CHDIMY+1))-1);
-// screen.set_screen_update(FUNC(rm380z_state::screen_update_rm480z));
-// screen.set_palette("palette");
+// MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_REFRESH_RATE(50)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+// MCFG_SCREEN_SIZE((RM380Z_SCREENCOLS*(RM380Z_CHDIMX+1)), (RM380Z_SCREENROWS*(RM380Z_CHDIMY+1)))
+// MCFG_SCREEN_VISIBLE_AREA(0, (RM380Z_SCREENCOLS*(RM380Z_CHDIMX+1))-1, 0, (RM380Z_SCREENROWS*(RM380Z_CHDIMY+1))-1)
+// MCFG_SCREEN_UPDATE_DRIVER(rm380z_state, screen_update_rm480z)
+// MCFG_SCREEN_PALETTE("palette")
-// PALETTE(config, "palette", palette_device::MONOCHROME);
+// MCFG_PALETTE_ADD_MONOCHROME("palette")
/* keyboard */
// generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
// keyboard.set_keyboard_callback(FUNC(rm380z_state::keyboard_put));
-}
+MACHINE_CONFIG_END
/* ROM definitions */
diff --git a/src/mame/drivers/rmhaihai.cpp b/src/mame/drivers/rmhaihai.cpp
index 5bd7aeb155c..be4b0356e2b 100644
--- a/src/mame/drivers/rmhaihai.cpp
+++ b/src/mame/drivers/rmhaihai.cpp
@@ -71,6 +71,7 @@ protected:
void rmhaihai_io_map(address_map &map);
void rmhaihai_map(address_map &map);
+private:
required_device<cpu_device> m_maincpu;
required_device<msm5205_device> m_msm;
required_device<gfxdecode_device> m_gfxdecode;
@@ -503,26 +504,27 @@ static GFXDECODE_START( gfx_themj )
GFXDECODE_END
-void rmhaihai_state::rmhaihai(machine_config &config)
-{
+MACHINE_CONFIG_START(rmhaihai_state::rmhaihai)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 20000000/4); /* 5 MHz ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &rmhaihai_state::rmhaihai_map);
- m_maincpu->set_addrmap(AS_IO, &rmhaihai_state::rmhaihai_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(rmhaihai_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu",Z80,20000000/4) /* 5 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(rmhaihai_map)
+ MCFG_DEVICE_IO_MAP(rmhaihai_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rmhaihai_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(4*8, 60*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(rmhaihai_state::screen_update));
- screen.set_palette("palette");
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_rmhaihai);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(4*8, 60*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(rmhaihai_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rmhaihai)
+
PALETTE(config, "palette", palette_device::RGB_444_PROMS, "proms", 0x100);
/* sound hardware */
@@ -533,34 +535,38 @@ void rmhaihai_state::rmhaihai(machine_config &config)
aysnd.port_b_read_callback().set_ioport("DSW1");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.30);
- MSM5205(config, m_msm, 500000);
- m_msm->set_prescaler_selector(msm5205_device::SEX_4B);
- m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 500000)
+ MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void rmhaisei_state::rmhaisei(machine_config &config)
-{
+MACHINE_CONFIG_START(rmhaisei_state::rmhaisei)
rmhaihai(config);
+ /* basic machine hardware */
+
/* video hardware */
- m_gfxdecode->set_info(gfx_themj);
- subdevice<palette_device>("palette")->set_entries(0x200);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_themj)
+ MCFG_DEVICE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(0x200)
+MACHINE_CONFIG_END
-void themj_state::themj(machine_config &config)
-{
+MACHINE_CONFIG_START(themj_state::themj)
rmhaihai(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &themj_state::themj_map);
- m_maincpu->set_addrmap(AS_IO, &themj_state::themj_io_map);
- config.device_remove("nvram");
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(themj_map)
+ MCFG_DEVICE_IO_MAP(themj_io_map)
+
+ MCFG_DEVICE_REMOVE("nvram")
/* video hardware */
- m_gfxdecode->set_info(gfx_themj);
- subdevice<palette_device>("palette")->set_entries(0x200);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_themj)
+ MCFG_DEVICE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(0x200)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/rmnimbus.cpp b/src/mame/drivers/rmnimbus.cpp
index 5c9c3cffe24..f8e367dda5d 100644
--- a/src/mame/drivers/rmnimbus.cpp
+++ b/src/mame/drivers/rmnimbus.cpp
@@ -127,7 +127,7 @@ void rmnimbus_state::nimbus(machine_config &config)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(4.433619_MHz_XTAL * 2, 650, 0, 640, 260, 0, 250);
m_screen->set_screen_update(FUNC(rmnimbus_state::screen_update_nimbus));
- //m_screen->set_video_attributes(VIDEO_UPDATE_SCANLINE);
+ //MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE)
m_screen->set_palette(m_palette);
PALETTE(config, m_palette).set_entries(16);
diff --git a/src/mame/drivers/rmt32.cpp b/src/mame/drivers/rmt32.cpp
index 3e93698e165..c704d07b21f 100644
--- a/src/mame/drivers/rmt32.cpp
+++ b/src/mame/drivers/rmt32.cpp
@@ -349,32 +349,31 @@ void mt32_state::mt32_map(address_map &map)
map(0xc000, 0xffff).bankrw("fixed");
}
-void mt32_state::mt32(machine_config &config)
-{
- i8x9x_device &maincpu(P8098(config, cpu, 12_MHz_XTAL));
+MACHINE_CONFIG_START(mt32_state::mt32)
+ i8x9x_device &maincpu(P8098(config, "maincpu", 12_MHz_XTAL));
maincpu.set_addrmap(AS_PROGRAM, &mt32_state::mt32_map);
maincpu.ach7_cb().set_ioport("A7");
maincpu.serial_tx_cb().set(FUNC(mt32_state::midi_w));
maincpu.in_p0_cb().set(FUNC(mt32_state::port0_r));
- RAM(config, ram).set_default_size("32K");
+ RAM( config, "ram" ).set_default_size( "32K" );
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_screen_update(FUNC(mt32_state::screen_update));
-// screen.set_size(20*6-1, 9);
- screen.set_size(20*6-1, (20*6-1)*3/4);
- screen.set_visarea(0, 20*6-2, 0, (20*6-1)*3/4-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD( "screen", LCD )
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_UPDATE_DRIVER(mt32_state, screen_update)
+// MCFG_SCREEN_SIZE(20*6-1, 9)
+ MCFG_SCREEN_SIZE(20*6-1, (20*6-1)*3/4)
+ MCFG_SCREEN_VISIBLE_AREA(0, 20*6-2, 0, (20*6-1)*3/4-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(mt32_state::mt32_palette), 2);
- SED1200D0A(config, lcd, 0);
+ MCFG_SED1200D0A_ADD( "lcd" )
- TIMER(config, midi_timer).configure_generic(FUNC(mt32_state::midi_timer_cb));
+ MCFG_TIMER_DRIVER_ADD( "midi_timer", mt32_state, midi_timer_cb )
- TIMER(config, "samples_timer").configure_periodic(FUNC(mt32_state::samples_timer_cb), attotime::from_hz(32000*2));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC( "samples_timer", mt32_state, samples_timer_cb, attotime::from_hz(32000*2) )
+MACHINE_CONFIG_END
ROM_START( mt32 )
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/rockrage.cpp b/src/mame/drivers/rockrage.cpp
index 803b9859ffa..81abbeb1508 100644
--- a/src/mame/drivers/rockrage.cpp
+++ b/src/mame/drivers/rockrage.cpp
@@ -248,26 +248,26 @@ void rockrage_state::machine_reset()
m_vreg = 0;
}
-void rockrage_state::rockrage(machine_config &config)
-{
+MACHINE_CONFIG_START(rockrage_state::rockrage)
+
/* basic machine hardware */
- HD6309E(config, m_maincpu, XTAL(24'000'000) / 8);
- m_maincpu->set_addrmap(AS_PROGRAM, &rockrage_state::rockrage_map);
+ MCFG_DEVICE_ADD("maincpu", HD6309E, XTAL(24'000'000) / 8)
+ MCFG_DEVICE_PROGRAM_MAP(rockrage_map)
- MC6809E(config, m_audiocpu, XTAL(24'000'000) / 16);
- m_audiocpu->set_addrmap(AS_PROGRAM, &rockrage_state::rockrage_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", MC6809E, XTAL(24'000'000) / 16)
+ MCFG_DEVICE_PROGRAM_MAP(rockrage_sound_map)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(rockrage_state::screen_update_rockrage));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(rockrage_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(rockrage_state, screen_update_rockrage)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, rockrage_state, vblank_irq))
K007342(config, m_k007342, 0);
m_k007342->set_gfxnum(0);
@@ -292,11 +292,11 @@ void rockrage_state::rockrage(machine_config &config)
YM2151(config, "ymsnd", 3579545).add_route(0, "lspeaker", 0.60).add_route(1, "rspeaker", 0.60);
- VLM5030(config, m_vlm, 3579545);
- m_vlm->set_addrmap(0, &rockrage_state::rockrage_vlm_map);
- m_vlm->add_route(ALL_OUTPUTS, "lspeaker", 0.60);
- m_vlm->add_route(ALL_OUTPUTS, "rspeaker", 0.60);
-}
+ MCFG_DEVICE_ADD("vlm", VLM5030, 3579545)
+ MCFG_DEVICE_ADDRESS_MAP(0, rockrage_vlm_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/rocnrope.cpp b/src/mame/drivers/rocnrope.cpp
index 2518a36dfab..d112e720d84 100644
--- a/src/mame/drivers/rocnrope.cpp
+++ b/src/mame/drivers/rocnrope.cpp
@@ -206,11 +206,11 @@ WRITE_LINE_MEMBER(rocnrope_state::vblank_irq)
m_maincpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
}
-void rocnrope_state::rocnrope(machine_config &config)
-{
+MACHINE_CONFIG_START(rocnrope_state::rocnrope)
+
/* basic machine hardware */
- KONAMI1(config, m_maincpu, MASTER_CLOCK / 3 / 4); /* Verified in schematics */
- m_maincpu->set_addrmap(AS_PROGRAM, &rocnrope_state::rocnrope_map);
+ MCFG_DEVICE_ADD("maincpu", KONAMI1, MASTER_CLOCK / 3 / 4) /* Verified in schematics */
+ MCFG_DEVICE_PROGRAM_MAP(rocnrope_map)
ls259_device &mainlatch(LS259(config, "mainlatch")); // B2
mainlatch.q_out_cb<0>().set(FUNC(rocnrope_state::flip_screen_w));
@@ -223,21 +223,21 @@ void rocnrope_state::rocnrope(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(rocnrope_state::screen_update_rocnrope));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(rocnrope_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(rocnrope_state, screen_update_rocnrope)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, rocnrope_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_rocnrope);
PALETTE(config, m_palette, FUNC(rocnrope_state::rocnrope_palette), 16*16+16*16, 32);
/* sound hardware */
TIMEPLT_AUDIO(config, "timeplt_audio");
-}
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/rohga.cpp b/src/mame/drivers/rohga.cpp
index da1d4c8d39d..00bafa5cc90 100644
--- a/src/mame/drivers/rohga.cpp
+++ b/src/mame/drivers/rohga.cpp
@@ -871,12 +871,12 @@ DECOSPR_COLOUR_CB_MEMBER(rohga_state::schmeisr_col_callback)
return colour;
}
-void rohga_state::rohga(machine_config &config)
-{
+MACHINE_CONFIG_START(rohga_state::rohga)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 14000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &rohga_state::rohga_map);
- m_maincpu->set_vblank_int("screen", FUNC(rohga_state::irq6_line_assert));
+ MCFG_DEVICE_ADD("maincpu", M68000, 14000000)
+ MCFG_DEVICE_PROGRAM_MAP(rohga_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rohga_state, irq6_line_assert)
H6280(config, m_audiocpu, 32220000/4/3); /* verified on pcb (8.050Mhz is XIN on pin 10 of H6280 */
m_audiocpu->set_addrmap(AS_PROGRAM, &rohga_state::sound_map);
@@ -884,18 +884,18 @@ void rohga_state::rohga(machine_config &config)
m_audiocpu->add_route(ALL_OUTPUTS, "rspeaker", 0);
/* video hardware */
- BUFFERED_SPRITERAM16(config, m_spriteram[0]);
+ MCFG_DEVICE_ADD("spriteram1", BUFFERED_SPRITERAM16)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(529));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(rohga_state::screen_update_rohga));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(rohga_state, screen_update_rohga)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, "gfxdecode", m_palette, gfx_rohga);
- PALETTE(config, m_palette).set_entries(2048);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rohga)
+ MCFG_PALETTE_ADD("palette", 2048)
DECOCOMN(config, m_decocomn, 0);
m_decocomn->set_palette_tag(m_palette);
@@ -954,21 +954,21 @@ void rohga_state::rohga(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.78);
ymsnd.add_route(1, "rspeaker", 0.78);
- OKIM6295(config, m_oki[0], 32220000/32, okim6295_device::PIN7_HIGH);
- m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
- OKIM6295(config, m_oki[1], 32220000/16, okim6295_device::PIN7_HIGH);
- m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.40);
- m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.40);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 32220000/16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(rohga_state::wizdfire)
-void rohga_state::wizdfire(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, 14000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &rohga_state::wizdfire_map);
- m_maincpu->set_vblank_int("screen", FUNC(rohga_state::irq6_line_assert));
+ MCFG_DEVICE_ADD("maincpu", M68000, 14000000)
+ MCFG_DEVICE_PROGRAM_MAP(wizdfire_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rohga_state, irq6_line_assert)
H6280(config, m_audiocpu, 32220000/4/3); /* verified on pcb (8.050Mhz is XIN on pin 10 of H6280 */
m_audiocpu->set_addrmap(AS_PROGRAM, &rohga_state::sound_map);
@@ -976,18 +976,18 @@ void rohga_state::wizdfire(machine_config &config)
m_audiocpu->add_route(ALL_OUTPUTS, "rspeaker", 0);
/* video hardware */
- BUFFERED_SPRITERAM16(config, m_spriteram[0]);
- BUFFERED_SPRITERAM16(config, m_spriteram[1]);
+ MCFG_DEVICE_ADD("spriteram1", BUFFERED_SPRITERAM16)
+ MCFG_DEVICE_ADD("spriteram2", BUFFERED_SPRITERAM16)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(529));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(rohga_state::screen_update_wizdfire));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(rohga_state, screen_update_wizdfire)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_wizdfire);
- PALETTE(config, m_palette).set_entries(2048);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_wizdfire)
+ MCFG_PALETTE_ADD("palette", 2048)
DECOCOMN(config, m_decocomn, 0);
m_decocomn->set_palette_tag(m_palette);
@@ -1051,21 +1051,21 @@ void rohga_state::wizdfire(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.80);
ymsnd.add_route(1, "rspeaker", 0.80);
- OKIM6295(config, m_oki[0], 32220000/32, okim6295_device::PIN7_HIGH);
- m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
- OKIM6295(config, m_oki[1], 32220000/16, okim6295_device::PIN7_HIGH);
- m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.40);
- m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.40);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 32220000/16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(rohga_state::nitrobal)
-void rohga_state::nitrobal(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, 14000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &rohga_state::nitrobal_map);
- m_maincpu->set_vblank_int("screen", FUNC(rohga_state::irq6_line_assert));
+ MCFG_DEVICE_ADD("maincpu", M68000, 14000000)
+ MCFG_DEVICE_PROGRAM_MAP(nitrobal_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rohga_state, irq6_line_assert)
H6280(config, m_audiocpu, 32220000/4/3); /* verified on pcb (8.050Mhz is XIN on pin 10 of H6280 */
m_audiocpu->set_addrmap(AS_PROGRAM, &rohga_state::sound_map);
@@ -1073,18 +1073,18 @@ void rohga_state::nitrobal(machine_config &config)
m_audiocpu->add_route(ALL_OUTPUTS, "rspeaker", 0);
/* video hardware */
- BUFFERED_SPRITERAM16(config, m_spriteram[0]);
- BUFFERED_SPRITERAM16(config, m_spriteram[1]);
+ MCFG_DEVICE_ADD("spriteram1", BUFFERED_SPRITERAM16)
+ MCFG_DEVICE_ADD("spriteram2", BUFFERED_SPRITERAM16)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(529));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(rohga_state::screen_update_nitrobal));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(rohga_state, screen_update_nitrobal)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_wizdfire);
- PALETTE(config, m_palette).set_entries(2048);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_wizdfire)
+ MCFG_PALETTE_ADD("palette", 2048)
DECOCOMN(config, m_decocomn, 0);
m_decocomn->set_palette_tag(m_palette);
@@ -1149,21 +1149,21 @@ void rohga_state::nitrobal(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.80);
ymsnd.add_route(1, "rspeaker", 0.80);
- OKIM6295(config, m_oki[0], 32220000/32, okim6295_device::PIN7_HIGH);
- m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
- OKIM6295(config, m_oki[1], 32220000/16, okim6295_device::PIN7_HIGH);
- m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.40);
- m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.40);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 32220000/16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(rohga_state::schmeisr)
-void rohga_state::schmeisr(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, 14000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &rohga_state::schmeisr_map);
- m_maincpu->set_vblank_int("screen", FUNC(rohga_state::irq6_line_assert));
+ MCFG_DEVICE_ADD("maincpu", M68000, 14000000)
+ MCFG_DEVICE_PROGRAM_MAP(schmeisr_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rohga_state, irq6_line_assert)
H6280(config, m_audiocpu, 32220000/4/3); /* verified on pcb (8.050Mhz is XIN on pin 10 of H6280 */
m_audiocpu->set_addrmap(AS_PROGRAM, &rohga_state::sound_map);
@@ -1171,18 +1171,18 @@ void rohga_state::schmeisr(machine_config &config)
m_audiocpu->add_route(ALL_OUTPUTS, "rspeaker", 0);
/* video hardware */
- BUFFERED_SPRITERAM16(config, m_spriteram[0]);
+ MCFG_DEVICE_ADD("spriteram1", BUFFERED_SPRITERAM16)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(529));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(rohga_state::screen_update_rohga));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(rohga_state, screen_update_rohga)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, "gfxdecode", m_palette, gfx_schmeisr);
- PALETTE(config, m_palette).set_entries(2048);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_schmeisr)
+ MCFG_PALETTE_ADD("palette", 2048)
DECOCOMN(config, m_decocomn, 0);
m_decocomn->set_palette_tag(m_palette);
@@ -1241,24 +1241,24 @@ void rohga_state::schmeisr(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.80);
ymsnd.add_route(1, "rspeaker", 0.80);
- OKIM6295(config, m_oki[0], 32220000/32, okim6295_device::PIN7_HIGH);
- m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
- OKIM6295(config, m_oki[1], 32220000/16, okim6295_device::PIN7_HIGH);
- m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.40);
- m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.40);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, 32220000/16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
+MACHINE_CONFIG_END
-void rohga_state::hangzo(machine_config &config)
-{
+MACHINE_CONFIG_START(rohga_state::hangzo)
schmeisr(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &rohga_state::hangzo_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hangzo_map)
+MACHINE_CONFIG_END
/**********************************************************************************/
diff --git a/src/mame/drivers/rollext.cpp b/src/mame/drivers/rollext.cpp
index 8a5af16a441..5fdda435c6b 100644
--- a/src/mame/drivers/rollext.cpp
+++ b/src/mame/drivers/rollext.cpp
@@ -543,26 +543,25 @@ void rollext_state::machine_start()
}
-void rollext_state::rollext(machine_config &config)
-{
- TMS32082_MP(config, m_maincpu, 60000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &rollext_state::memmap);
- //m_maincpu->set_vblank_int("screen", FUNC(rollext_state::vblank_interrupt));
- m_maincpu->set_periodic_int(FUNC(rollext_state::irq1_line_assert), attotime::from_hz(60));
- //m_maincpu->set_periodic_int(FUNC(rollext_state::irq3_line_assert), attotime::from_hz(500));
-
- tms32082_pp_device &pp0(TMS32082_PP(config, "pp0", 60000000));
- pp0.set_addrmap(AS_PROGRAM, &rollext_state::memmap);
-
- config.m_minimum_quantum = attotime::from_hz(100);
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 384);
- m_screen->set_visarea(0, 511, 0, 383);
- m_screen->set_screen_update(FUNC(rollext_state::screen_update));
-}
+MACHINE_CONFIG_START(rollext_state::rollext)
+ MCFG_DEVICE_ADD("maincpu", TMS32082_MP, 60000000)
+ MCFG_DEVICE_PROGRAM_MAP(memmap)
+ //MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rollext_state, vblank_interrupt)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(rollext_state, irq1_line_assert, 60)
+ //MCFG_DEVICE_PERIODIC_INT_DRIVER(rollext_state, irq3_line_assert, 500)
+
+ MCFG_DEVICE_ADD("pp0", TMS32082_PP, 60000000)
+ MCFG_DEVICE_PROGRAM_MAP(memmap);
+
+ MCFG_QUANTUM_TIME(attotime::from_hz(100))
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 384)
+ MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
+ MCFG_SCREEN_UPDATE_DRIVER(rollext_state, screen_update)
+MACHINE_CONFIG_END
INTERRUPT_GEN_MEMBER(rollext_state::vblank_interrupt)
diff --git a/src/mame/drivers/rollrace.cpp b/src/mame/drivers/rollrace.cpp
index b05c7776697..b9e4655c71c 100644
--- a/src/mame/drivers/rollrace.cpp
+++ b/src/mame/drivers/rollrace.cpp
@@ -249,15 +249,15 @@ INTERRUPT_GEN_MEMBER(rollrace_state::sound_timer_irq)
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
-void rollrace_state::rollrace(machine_config &config)
-{
+MACHINE_CONFIG_START(rollrace_state::rollrace)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(24'000'000)/8); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &rollrace_state::rollrace_map);
+ MCFG_DEVICE_ADD("maincpu", Z80,XTAL(24'000'000)/8) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(rollrace_map)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(24'000'000)/16)); /* verified on pcb */
- audiocpu.set_addrmap(AS_PROGRAM, &rollrace_state::rollrace_sound_map);
- audiocpu.set_periodic_int(FUNC(rollrace_state::sound_timer_irq), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("audiocpu", Z80,XTAL(24'000'000)/16) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(rollrace_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(rollrace_state, sound_timer_irq, 4*60)
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set(FUNC(rollrace_state::flipx_w));
@@ -269,14 +269,14 @@ void rollrace_state::rollrace(machine_config &config)
mainlatch.q_out_cb<6>().set(FUNC(rollrace_state::spritebank_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 16, 255-16);
- screen.set_screen_update(FUNC(rollrace_state::screen_update));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(rollrace_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0,256-1,16, 255-16)
+ MCFG_SCREEN_UPDATE_DRIVER(rollrace_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, rollrace_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_rollrace);
PALETTE(config, m_palette, FUNC(rollrace_state::rollrace_palette), 256);
@@ -292,16 +292,16 @@ void rollrace_state::rollrace(machine_config &config)
AY8910(config, "ay2", XTAL(24'000'000)/16).add_route(ALL_OUTPUTS, "rspeaker", 0.10); /* verified on pcb */
AY8910(config, "ay3", XTAL(24'000'000)/16).add_route(ALL_OUTPUTS, "lspeaker", 0.10); /* verified on pcb */
-}
+MACHINE_CONFIG_END
-void rollrace_state::rollace2(machine_config &config)
-{
+MACHINE_CONFIG_START(rollrace_state::rollace2)
rollrace(config);
/* basic machine hardware */
-// subdevice<screen_device>("screen")->set_visarea(0, 256-1, 16, 255-16);
-}
+// MCFG_SCREEN_MODIFY("screen")
+// MCFG_SCREEN_VISIBLE_AREA(0,256-1,16, 255-16)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/ron.cpp b/src/mame/drivers/ron.cpp
index a2f6d8d91b2..0a1197e77fc 100644
--- a/src/mame/drivers/ron.cpp
+++ b/src/mame/drivers/ron.cpp
@@ -451,9 +451,9 @@ WRITE8_MEMBER(ron_state::audio_p1_w)
//machine().debug_break();
if(m_ay_address_sel == true)
- m_ay->address_w(data);
+ m_ay->address_w(space, 0, data);
else
- m_ay->data_w(data);
+ m_ay->data_w(space, 0, data);
}
WRITE8_MEMBER(ron_state::audio_p2_w)
@@ -486,12 +486,12 @@ WRITE8_MEMBER(ron_state::ay_pa_w)
{
}
-void ron_state::ron(machine_config &config)
-{
+MACHINE_CONFIG_START(ron_state::ron)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &ron_state::ron_map);
- m_maincpu->set_addrmap(AS_IO, &ron_state::ron_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(ron_map)
+ MCFG_DEVICE_IO_MAP(ron_io)
I8035(config, m_audiocpu, SOUND_CLOCK);
m_audiocpu->set_addrmap(AS_PROGRAM, &ron_state::ron_audio_map);
@@ -503,11 +503,11 @@ void ron_state::ron(machine_config &config)
m_audiocpu->t1_in_cb().set(FUNC(ron_state::audio_t1_r));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(ron_state::screen_update));
- screen.set_raw(VIDEO_CLOCK, 320, 0, 256, 264, 0, 240);
- screen.set_palette("palette");
- screen.screen_vblank().set(FUNC(ron_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(ron_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK, 320, 0, 256, 264, 0, 240)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, ron_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, "palette", gfx_ron);
@@ -519,7 +519,7 @@ void ron_state::ron(machine_config &config)
AY8910(config, m_ay, 0); // T0 CLK from I8035 (not verified)
m_ay->add_route(ALL_OUTPUTS, "mono", 0.30);
m_ay->port_a_write_callback().set(FUNC(ron_state::ay_pa_w));
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/roul.cpp b/src/mame/drivers/roul.cpp
index 51e23dcbb38..1857d4bb465 100644
--- a/src/mame/drivers/roul.cpp
+++ b/src/mame/drivers/roul.cpp
@@ -312,28 +312,27 @@ static INPUT_PORTS_START( roul )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
-void roul_state::roul(machine_config &config)
-{
+MACHINE_CONFIG_START(roul_state::roul)
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &roul_state::roul_map);
- m_maincpu->set_addrmap(AS_IO, &roul_state::roul_cpu_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(roul_map)
+ MCFG_DEVICE_IO_MAP(roul_cpu_io_map)
- Z80(config, m_soundcpu, 4000000);
- m_soundcpu->set_addrmap(AS_PROGRAM, &roul_state::sound_map);
- m_soundcpu->set_addrmap(AS_IO, &roul_state::sound_cpu_io_map);
+ MCFG_DEVICE_ADD("soundcpu", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_cpu_io_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(roul_state::screen_update));
- screen.set_palette("palette");
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(roul_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
PALETTE(config, "palette", FUNC(roul_state::roul_palette), 0x100);
@@ -342,7 +341,7 @@ void roul_state::roul(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
AY8910(config, "aysnd", 1000000).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
ROM_START(roul)
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/route16.cpp b/src/mame/drivers/route16.cpp
index f733a91e597..fdd8eb2fc1d 100644
--- a/src/mame/drivers/route16.cpp
+++ b/src/mame/drivers/route16.cpp
@@ -660,6 +660,7 @@ void route16_state::stratvox(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/rowamet.cpp b/src/mame/drivers/rowamet.cpp
index cf734674e2b..19b6f39b9af 100644
--- a/src/mame/drivers/rowamet.cpp
+++ b/src/mame/drivers/rowamet.cpp
@@ -222,28 +222,24 @@ TIMER_DEVICE_CALLBACK_MEMBER( rowamet_state::timer_a )
m_digits[++digit] = patterns[m_p_ram[m_out_offs++]&15];
}
-void rowamet_state::rowamet(machine_config &config)
-{
+MACHINE_CONFIG_START(rowamet_state::rowamet)
/* basic machine hardware */
- Z80(config, m_maincpu, 1888888);
- m_maincpu->set_addrmap(AS_PROGRAM, &rowamet_state::rowamet_map);
-
- Z80(config, m_cpu2, 1888888);
- m_cpu2->set_addrmap(AS_PROGRAM, &rowamet_state::rowamet_sub_map);
- m_cpu2->set_addrmap(AS_IO, &rowamet_state::rowamet_sub_io);
-
- TIMER(config, "timer_a").configure_periodic(FUNC(rowamet_state::timer_a), attotime::from_hz(200));
+ MCFG_DEVICE_ADD("maincpu", Z80, 1888888)
+ MCFG_DEVICE_PROGRAM_MAP(rowamet_map)
+ MCFG_DEVICE_ADD("cpu2", Z80, 1888888)
+ MCFG_DEVICE_PROGRAM_MAP(rowamet_sub_map)
+ MCFG_DEVICE_IO_MAP(rowamet_sub_io)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_a", rowamet_state, timer_a, attotime::from_hz(200))
/* Video */
config.set_default_layout(layout_rowamet);
/* Sound */
SPEAKER(config, "speaker").front_center();
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
/ Conan (1983)
diff --git a/src/mame/drivers/royalmah.cpp b/src/mame/drivers/royalmah.cpp
index e7911dd960b..c8f71683e66 100644
--- a/src/mame/drivers/royalmah.cpp
+++ b/src/mame/drivers/royalmah.cpp
@@ -1074,7 +1074,7 @@ READ8_MEMBER(royalmah_state::mjifb_rom_io_r)
{
case 0x8000: return ioport("DSW4")->read(); // dsw 4
case 0x8200: return ioport("DSW3")->read(); // dsw 3
- case 0x9001: return m_ay->data_r(); // inputs
+ case 0x9001: return m_ay->data_r(space, 0); // inputs
case 0x9011: return ioport("SYSTEM")->read();
}
@@ -1095,8 +1095,8 @@ WRITE8_MEMBER(royalmah_state::mjifb_rom_io_w)
switch(offset)
{
case 0x8e00: m_palette_base = data & 0x1f; return;
- case 0x9002: m_ay->data_w(data); return;
- case 0x9003: m_ay->address_w(data); return;
+ case 0x9002: m_ay->data_w(space,0,data); return;
+ case 0x9003: m_ay->address_w(space,0,data); return;
case 0x9010:
mjifb_coin_counter_w(space,0,data);
return;
@@ -1173,7 +1173,7 @@ READ8_MEMBER(royalmah_state::mjdejavu_rom_io_r)
{
case 0x8000: return ioport("DSW2")->read(); // dsw 2
case 0x8001: return ioport("DSW1")->read(); // dsw 1
- case 0x9001: return m_ay->data_r(); // inputs
+ case 0x9001: return m_ay->data_r(space, 0); // inputs
case 0x9011: return ioport("SYSTEM")->read();
}
@@ -1192,10 +1192,10 @@ WRITE8_MEMBER(royalmah_state::mjdejavu_rom_io_w)
offset += 0x8000;
switch(offset)
{
- case 0x8802: m_palette_base = data & 0x1f; return;
- case 0x9002: m_ay->data_w(data); return;
- case 0x9003: m_ay->address_w(data); return;
- case 0x9010: janptr96_coin_counter_w(space,0,data); return;
+ case 0x8802: m_palette_base = data & 0x1f; return;
+ case 0x9002: m_ay->data_w(space,0,data); return;
+ case 0x9003: m_ay->address_w(space,0,data); return;
+ case 0x9010: janptr96_coin_counter_w(space,0,data); return;
case 0x9011: input_port_select_w(space,0,data); return;
case 0x9013:
// if (data) popmessage("%02x",data);
@@ -3532,26 +3532,26 @@ static INPUT_PORTS_START( mjvegasa )
INPUT_PORTS_END
-void royalmah_state::royalmah(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::royalmah)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 18432000/6); /* 3.072 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &royalmah_state::royalmah_map);
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::royalmah_iomap);
- m_maincpu->set_vblank_int("screen", FUNC(royalmah_state::irq0_line_hold));
+ MCFG_DEVICE_ADD(m_maincpu, Z80, 18432000/6) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(royalmah_map)
+ MCFG_DEVICE_IO_MAP(royalmah_iomap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", royalmah_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
PALETTE(config, "palette", FUNC(royalmah_state::royalmah_palette), 16*4);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_size(256, 256);
- screen.set_visarea(0, 255, 8, 247);
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_screen_update(FUNC(royalmah_state::screen_update_royalmah));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 247)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_UPDATE_DRIVER(royalmah_state, screen_update_royalmah)
+ MCFG_SCREEN_PALETTE("palette")
/* sound hardware */
SPEAKER(config, "speaker").front_center();
@@ -3560,107 +3560,106 @@ void royalmah_state::royalmah(machine_config &config)
m_ay->port_a_read_callback().set(FUNC(royalmah_state::player_1_port_r));
m_ay->port_b_read_callback().set(FUNC(royalmah_state::player_2_port_r));
m_ay->add_route(ALL_OUTPUTS, "speaker", 0.33);
-}
+MACHINE_CONFIG_END
-void royalmah_state::janoh(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::janoh)
royalmah(config);
- m_maincpu->set_clock(8000000/2); /* 4 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &royalmah_state::janoh_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(8000000/2) /* 4 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(janoh_map)
- z80_device &sub(Z80(config, "sub", 4000000)); /* 4 MHz ? */
- sub.set_addrmap(AS_PROGRAM, &royalmah_state::janoh_sub_map);
- sub.set_addrmap(AS_IO, &royalmah_state::janoh_sub_iomap);
- sub.set_vblank_int("screen", FUNC(royalmah_state::irq0_line_hold));
-}
+ MCFG_DEVICE_ADD("sub", Z80, 4000000) /* 4 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(janoh_sub_map)
+ MCFG_DEVICE_IO_MAP(janoh_sub_iomap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", royalmah_state, irq0_line_hold)
+MACHINE_CONFIG_END
-void royalmah_state::jansou(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::jansou)
royalmah(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &royalmah_state::jansou_map);
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::royalmah_iomap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(jansou_map)
+ MCFG_DEVICE_IO_MAP(royalmah_iomap)
- Z80(config, m_audiocpu, 4000000); /* 4.000 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &royalmah_state::jansou_sub_map);
- m_audiocpu->set_addrmap(AS_IO, &royalmah_state::jansou_sub_iomap);
- m_audiocpu->set_periodic_int(FUNC(royalmah_state::irq0_line_hold), attotime::from_hz(4000000/512));
+ MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* 4.000 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(jansou_sub_map)
+ MCFG_DEVICE_IO_MAP(jansou_sub_iomap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(royalmah_state, irq0_line_hold, 4000000/512)
GENERIC_LATCH_8(config, m_soundlatch);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void royalmah_state::dondenmj(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::dondenmj)
royalmah(config);
- m_maincpu->set_clock(8000000/2); /* 4 MHz ? */
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::dondenmj_iomap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(8000000/2) /* 4 MHz ? */
+ MCFG_DEVICE_IO_MAP(dondenmj_iomap)
+MACHINE_CONFIG_END
-void royalmah_state::tahjong(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::tahjong)
royalmah(config);
- m_maincpu->set_clock(8000000/2); /* 4 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &royalmah_state::tahjong_map);
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::tahjong_iomap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(8000000/2) /* 4 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(tahjong_map)
+ MCFG_DEVICE_IO_MAP(tahjong_iomap)
+MACHINE_CONFIG_END
-void royalmah_state::makaijan(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::makaijan)
royalmah(config);
- m_maincpu->set_clock(8000000/2); /* 4 MHz ? */
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::makaijan_iomap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(8000000/2) /* 4 MHz ? */
+ MCFG_DEVICE_IO_MAP(makaijan_iomap)
+MACHINE_CONFIG_END
-void royalmah_state::daisyari(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::daisyari)
royalmah(config);
- m_maincpu->set_clock(8000000/2); /* 4 MHz ? */
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::daisyari_iomap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(8000000/2) /* 4 MHz ? */
+ MCFG_DEVICE_IO_MAP(daisyari_iomap)
+MACHINE_CONFIG_END
-void royalmah_state::mjclub(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::mjclub)
royalmah(config);
- m_maincpu->set_clock(8000000/2); /* 4 MHz ? */
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::mjclub_iomap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(8000000/2) /* 4 MHz ? */
+ MCFG_DEVICE_IO_MAP(mjclub_iomap)
+MACHINE_CONFIG_END
-void royalmah_state::mjyarou(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::mjyarou)
royalmah(config);
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::mjyarou_iomap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(mjyarou_iomap)
+MACHINE_CONFIG_END
-void royalmah_state::ippatsu(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::ippatsu)
dondenmj(config);
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::ippatsu_iomap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(ippatsu_iomap)
+MACHINE_CONFIG_END
-void royalmah_state::janyoup2(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::janyoup2)
ippatsu(config);
- m_maincpu->set_clock(XTAL(18'432'000)/4); // unknown divider
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::janyoup2_iomap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(XTAL(18'432'000)/4) // unknown divider
+ MCFG_DEVICE_IO_MAP(janyoup2_iomap)
h46505_device &crtc(H46505(config, "crtc", XTAL(18'432'000)/12)); // unknown divider
crtc.set_screen("screen");
crtc.set_show_border_area(false);
crtc.set_char_width(4);
-}
+MACHINE_CONFIG_END
-void royalmah_state::seljan(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::seljan)
janyoup2(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &royalmah_state::seljan_map);
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::seljan_iomap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(seljan_map)
+ MCFG_DEVICE_IO_MAP(seljan_iomap)
+MACHINE_CONFIG_END
INTERRUPT_GEN_MEMBER(royalmah_state::suzume_irq)
{
@@ -3668,12 +3667,12 @@ INTERRUPT_GEN_MEMBER(royalmah_state::suzume_irq)
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
-void royalmah_state::suzume(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::suzume)
dondenmj(config);
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::suzume_iomap);
- m_maincpu->set_vblank_int("screen", FUNC(royalmah_state::suzume_irq));
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(suzume_iomap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", royalmah_state, suzume_irq)
+MACHINE_CONFIG_END
void royalmah_state::jongshin(machine_config &config)
{
@@ -3681,41 +3680,41 @@ void royalmah_state::jongshin(machine_config &config)
m_maincpu->set_addrmap(AS_IO, &royalmah_state::jongshin_iomap);
}
-void royalmah_state::tontonb(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::tontonb)
dondenmj(config);
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::tontonb_iomap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(tontonb_iomap)
+MACHINE_CONFIG_END
-void royalmah_state::mjdiplob(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::mjdiplob)
dondenmj(config);
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::mjdiplob_iomap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(mjdiplob_iomap)
+MACHINE_CONFIG_END
-void royalmah_state::majs101b(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::majs101b)
dondenmj(config);
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::majs101b_iomap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(majs101b_iomap)
+MACHINE_CONFIG_END
-void royalmah_state::mjapinky(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::mjapinky)
dondenmj(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &royalmah_state::mjapinky_map);
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::mjapinky_iomap);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mjapinky_map)
+ MCFG_DEVICE_IO_MAP(mjapinky_iomap)
+MACHINE_CONFIG_END
-void royalmah_state::mjderngr(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::mjderngr)
dondenmj(config);
- m_maincpu->set_addrmap(AS_IO, &royalmah_state::mjderngr_iomap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(mjderngr_iomap)
/* video hardware */
auto &palette(*subdevice<palette_device>("palette"));
palette.set_entries(16*32);
palette.set_init(FUNC(royalmah_state::mjderngr_palette));
-}
+MACHINE_CONFIG_END
void royalmah_state::janptr96(machine_config &config)
{
@@ -3737,8 +3736,7 @@ void royalmah_state::janptr96(machine_config &config)
}
-void royalmah_state::mjifb(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::mjifb)
mjderngr(config);
tmp90841_device &tmp(TMP90841(config.replace(), m_maincpu, 8000000)); /* ? */
tmp.set_addrmap(AS_PROGRAM, &royalmah_state::mjifb_map);
@@ -3751,14 +3749,13 @@ void royalmah_state::mjifb(machine_config &config)
tmp.port_read<8>().set(FUNC(royalmah_state::mjifb_p8_r));
tmp.port_write<8>().set(FUNC(royalmah_state::mjifb_p8_w));
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_visarea(0, 255, 8, 255-8);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+MACHINE_CONFIG_END
-void royalmah_state::mjdejavu(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::mjdejavu)
mjderngr(config);
tmp90841_device &tmp(TMP90841(config.replace(), m_maincpu, 8000000)); /* ? */
tmp.set_addrmap(AS_PROGRAM, &royalmah_state::mjdejavu_map);
@@ -3771,46 +3768,43 @@ void royalmah_state::mjdejavu(machine_config &config)
tmp.port_read<8>().set(FUNC(royalmah_state::mjifb_p8_r));
tmp.port_write<8>().set(FUNC(royalmah_state::mjifb_p8_w));
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_visarea(0, 255, 8, 255-8);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+MACHINE_CONFIG_END
-void royalmah_state::mjtensin(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::mjtensin)
mjderngr(config);
tmp90841_device &tmp(TMP90841(config.replace(), m_maincpu, 12000000)); /* ? */
tmp.set_addrmap(AS_PROGRAM, &royalmah_state::mjtensin_map);
tmp.port_read<3>().set(FUNC(royalmah_state::mjtensin_p3_r));
tmp.port_write<4>().set(FUNC(royalmah_state::mjtensin_p4_w));
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_visarea(0, 255, 8, 255-8);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
/* devices */
MSM6242(config, m_rtc, 32.768_kHz_XTAL).out_int_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ1);
-}
+MACHINE_CONFIG_END
-void royalmah_state::cafetime(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::cafetime)
mjderngr(config);
tmp90841_device &tmp(TMP90841(config.replace(), m_maincpu, 12000000)); /* ? */
tmp.set_addrmap(AS_PROGRAM, &royalmah_state::cafetime_map);
tmp.port_write<3>().set(FUNC(royalmah_state::cafetime_p3_w));
tmp.port_write<4>().set(FUNC(royalmah_state::cafetime_p4_w));
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_visarea(0, 255, 8, 255-8);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
/* devices */
MSM6242(config, m_rtc, 32.768_kHz_XTAL).out_int_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ1);
-}
+MACHINE_CONFIG_END
-void royalmah_state::mjvegasa(machine_config &config)
-{
+MACHINE_CONFIG_START(royalmah_state::mjvegasa)
mjderngr(config);
tmp90841_device &tmp(TMP90841(config.replace(), m_maincpu, XTAL(8'000'000))); /* ? */
tmp.set_addrmap(AS_PROGRAM, &royalmah_state::mjvegasa_map);
@@ -3818,13 +3812,13 @@ void royalmah_state::mjvegasa(machine_config &config)
tmp.port_write<3>().set(FUNC(royalmah_state::mjvegasa_p3_w));
tmp.port_write<4>().set(FUNC(royalmah_state::mjvegasa_p4_w));
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_visarea(0, 255, 8, 255-8);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
/* devices */
MSM6242(config, m_rtc, 32.768_kHz_XTAL).out_int_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ1);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/rpunch.cpp b/src/mame/drivers/rpunch.cpp
index 2e2b36e2ac7..58707cda66d 100644
--- a/src/mame/drivers/rpunch.cpp
+++ b/src/mame/drivers/rpunch.cpp
@@ -457,27 +457,28 @@ GFXDECODE_END
*
*************************************/
-void rpunch_state::rpunch(machine_config &config)
-{
+MACHINE_CONFIG_START(rpunch_state::rpunch)
+
/* basic machine hardware */
- M68000(config, m_maincpu, MASTER_CLOCK/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &rpunch_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, MASTER_CLOCK/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- Z80(config, m_audiocpu, MASTER_CLOCK/4);
- m_audiocpu->set_addrmap(AS_PROGRAM, &rpunch_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, MASTER_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set("soundirq", FUNC(input_merger_device::in_w<0>));
- INPUT_MERGER_ANY_HIGH(config, "soundirq").output_handler().set_inputline(m_audiocpu, 0);
+ MCFG_INPUT_MERGER_ANY_HIGH("soundirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", 0))
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(304, 224);
- m_screen->set_visarea(8, 303-8, 0, 223-8);
- m_screen->set_screen_update(FUNC(rpunch_state::screen_update_rpunch));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(304, 224)
+ MCFG_SCREEN_VISIBLE_AREA(8, 303-8, 0, 223-8)
+ MCFG_SCREEN_UPDATE_DRIVER(rpunch_state, screen_update_rpunch)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_rpunch);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024);
@@ -495,38 +496,39 @@ void rpunch_state::rpunch(machine_config &config)
ymsnd.add_route(0, "mono", 0.50);
ymsnd.add_route(1, "mono", 0.50);
- UPD7759(config, m_upd7759).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("upd", UPD7759)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
-void rpunch_state::svolley(machine_config &config)
-{
+MACHINE_CONFIG_START(rpunch_state::svolley)
rpunch(config);
MCFG_VIDEO_START_OVERRIDE(rpunch_state,svolley)
-}
+MACHINE_CONFIG_END
// c+p of above for now, bootleg hw, things need verifying
-void rpunch_state::svolleybl(machine_config &config)
-{
+MACHINE_CONFIG_START(rpunch_state::svolleybl)
+
/* basic machine hardware */
- M68000(config, m_maincpu, MASTER_CLOCK/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &rpunch_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, MASTER_CLOCK/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- Z80(config, m_audiocpu, MASTER_CLOCK/4);
- m_audiocpu->set_addrmap(AS_PROGRAM, &rpunch_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, MASTER_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set("soundirq", FUNC(input_merger_device::in_w<0>));
- INPUT_MERGER_ANY_HIGH(config, "soundirq").output_handler().set_inputline(m_audiocpu, 0);
+ MCFG_INPUT_MERGER_ANY_HIGH("soundirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", 0))
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(304, 224);
- m_screen->set_visarea(8, 303-8, 0, 223-8);
- m_screen->set_screen_update(FUNC(rpunch_state::screen_update_rpunch));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(304, 224)
+ MCFG_SCREEN_VISIBLE_AREA(8, 303-8, 0, 223-8)
+ MCFG_SCREEN_UPDATE_DRIVER(rpunch_state, screen_update_rpunch)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_svolleybl);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024);
@@ -545,8 +547,9 @@ void rpunch_state::svolleybl(machine_config &config)
ymsnd.add_route(0, "mono", 0.50);
ymsnd.add_route(1, "mono", 0.50);
- UPD7759(config, m_upd7759).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("upd", UPD7759)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/rt1715.cpp b/src/mame/drivers/rt1715.cpp
index 8cc7fbb8309..d5e8aa00963 100644
--- a/src/mame/drivers/rt1715.cpp
+++ b/src/mame/drivers/rt1715.cpp
@@ -1,32 +1,22 @@
// license:BSD-3-Clause
-// copyright-holders:Miodrag Milanovic, Robbbert, Sergey Svishchev
+// copyright-holders:Miodrag Milanovic, Robbbert
/***************************************************************************
Robotron PC-1715
10/06/2008 Preliminary driver.
+
Notes:
+
- keyboard connected to sio channel a
- sio channel a clock output connected to ctc trigger 0
- - rt1715w: SCP3 boot crashes in z80dma (Unknown base register XX)
-
- Docs:
- - http://www.robotrontechnik.de/html/computer/pc1715w.htm
- - https://www.tiffe.de/Robotron/PC1715/ -- scanned PDFs
- https://www.tiffe.de/Robotron/PC1715/MANUAL_PC_1715.pdf
- - http://www.sax.de/~zander/pc1715/pc_bw.html -- typeset PDFs
- http://www.sax.de/~zander/pc1715/doku/pc_manu.pdf
- - http://xepb.org/robotron/
****************************************************************************/
#include "emu.h"
#include "cpu/z80/z80.h"
-#include "imagedev/floppy.h"
-#include "machine/bankdev.h"
#include "machine/ram.h"
-#include "machine/upd765.h"
#include "machine/z80ctc.h"
#include "machine/z80sio.h"
#include "machine/z80dma.h"
@@ -43,18 +33,6 @@ public:
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_ram(*this, RAM_TAG)
- , m_bankdev(*this, "bankdev%u", 0U)
- , m_sio0(*this, "sio0")
- , m_ctc0(*this, "ctc0")
- , m_fdc(*this, "i8272")
- , m_floppy(*this, "i8272:%u", 0U)
- , m_dma(*this, "z80dma")
- , m_ctc2(*this, "ctc2")
- , m_screen(*this, "screen")
- , m_palette(*this, "palette")
- , m_crtc(*this, "i8275")
- , m_p_chargen(*this, "gfx")
- , m_p_videoram(*this, "videoram")
{
}
@@ -62,58 +40,27 @@ public:
void rt1715w(machine_config &config);
private:
- DECLARE_READ8_MEMBER(memory_read_byte);
- DECLARE_WRITE8_MEMBER(memory_write_byte);
- DECLARE_READ8_MEMBER(io_read_byte);
- DECLARE_WRITE8_MEMBER(io_write_byte);
- DECLARE_WRITE_LINE_MEMBER(busreq_w);
- DECLARE_WRITE_LINE_MEMBER(tc_w);
DECLARE_WRITE8_MEMBER(rt1715_floppy_enable);
DECLARE_READ8_MEMBER(k7658_led1_r);
DECLARE_READ8_MEMBER(k7658_led2_r);
DECLARE_READ8_MEMBER(k7658_data_r);
DECLARE_WRITE8_MEMBER(k7658_data_w);
DECLARE_WRITE8_MEMBER(rt1715_rom_disable);
- DECLARE_WRITE8_MEMBER(rt1715w_set_bank);
- DECLARE_WRITE8_MEMBER(rt1715w_floppy_motor);
- DECLARE_WRITE8_MEMBER(rt1715w_krfd_w);
void rt1715_palette(palette_device &palette) const;
- I8275_DRAW_CHARACTER_MEMBER(crtc_display_pixels);
- DECLARE_WRITE_LINE_MEMBER(crtc_drq_w);
+ I8275_DRAW_CHARACTER_MEMBER( crtc_display_pixels );
void k7658_io(address_map &map);
void k7658_mem(address_map &map);
- void rt1715_base_io(address_map &map);
void rt1715_io(address_map &map);
- void rt1715w_io(address_map &map);
void rt1715_mem(address_map &map);
- void rt1715w_mem(address_map &map);
- void rt1715w_banked_mem(address_map &map);
- DECLARE_MACHINE_START(rt1715);
- DECLARE_MACHINE_RESET(rt1715);
- DECLARE_MACHINE_START(rt1715w);
- DECLARE_MACHINE_RESET(rt1715w);
-
- required_device<z80_device> m_maincpu;
- required_device<ram_device> m_ram;
- optional_device_array<address_map_bank_device, 2> m_bankdev;
- required_device<z80sio_device> m_sio0;
- required_device<z80ctc_device> m_ctc0;
- optional_device<i8272a_device> m_fdc;
- optional_device_array<floppy_connector, 2> m_floppy;
- optional_device<z80dma_device> m_dma;
- optional_device<z80ctc_device> m_ctc2;
- required_device<screen_device> m_screen;
- required_device<palette_device> m_palette;
- required_device<i8275_device> m_crtc;
- required_region_ptr<uint8_t> m_p_chargen;
- optional_shared_ptr<uint8_t> m_p_videoram;
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
int m_led1_val;
int m_led2_val;
- u8 m_krfd;
- uint16_t m_dma_adr;
+ required_device<z80_device> m_maincpu;
+ required_device<ram_device> m_ram;
};
@@ -126,24 +73,6 @@ WRITE8_MEMBER(rt1715_state::rt1715_floppy_enable)
logerror("%s: rt1715_floppy_enable %02x\n", machine().describe_context(), data);
}
-WRITE8_MEMBER(rt1715_state::rt1715w_floppy_motor)
-{
- logerror("%s: rt1715w_floppy_motor %02x\n", machine().describe_context(), data);
-
- if (m_floppy[0]->get_device()) m_floppy[0]->get_device()->mon_w(data & 0x80 ? 1 : 0);
- if (m_floppy[1]->get_device()) m_floppy[1]->get_device()->mon_w(data & 0x08 ? 1 : 0);
-}
-
-WRITE8_MEMBER(rt1715_state::rt1715w_krfd_w)
-{
- logerror("%s: rt1715w_krfd_w %02x\n", machine().describe_context(), data);
- m_krfd = data;
-}
-
-WRITE_LINE_MEMBER(rt1715_state::tc_w)
-{
- m_fdc->tc_w(state & BIT(m_krfd, 7));
-}
/***************************************************************************
KEYBOARD
@@ -198,13 +127,13 @@ WRITE8_MEMBER(rt1715_state::k7658_data_w)
MEMORY HANDLING
***************************************************************************/
-MACHINE_START_MEMBER(rt1715_state, rt1715)
+void rt1715_state::machine_start()
{
membank("bank2")->set_base(m_ram->pointer() + 0x0800);
membank("bank3")->set_base(m_ram->pointer());
}
-MACHINE_RESET_MEMBER(rt1715_state, rt1715)
+void rt1715_state::machine_reset()
{
/* on reset, enable ROM */
membank("bank1")->set_base(memregion("ipl")->base());
@@ -218,101 +147,12 @@ WRITE8_MEMBER(rt1715_state::rt1715_rom_disable)
membank("bank1")->set_base(m_ram->pointer());
}
-MACHINE_START_MEMBER(rt1715_state, rt1715w)
-{
- membank("bank2")->set_base(m_ram->pointer() + 0x4000);
- membank("bank3")->set_base(m_ram->pointer());
-}
-
-MACHINE_RESET_MEMBER(rt1715_state, rt1715w)
-{
- m_bankdev[0]->set_bank(0);
- m_bankdev[1]->set_bank(0);
-
- m_dma->rdy_w(1);
- m_krfd = 0;
- m_dma_adr = 0;
-}
-
-/*
- b2..0 = AB18..16
-
- 0 - Hintergrundbank (Bildschirm, Zeichengeneratoren)
- 1 - Systembank (gebanktes BIOS, BDOS)
- 2 - Anwenderbank (TPA)
- 3 - RAM-Disk
- 4 - RAM-Disk
- 5 - RAM-Disk
-*/
-WRITE8_MEMBER(rt1715_state::rt1715w_set_bank)
-{
- int r = data >> 4;
- int w = data & 15;
-
- logerror("%s: rt1715w_set_bank target %x source %x%s\n", machine().describe_context(), r, w, r == w ? "" : " DIFF");
-
- m_bankdev[0]->set_bank(r);
- m_bankdev[1]->set_bank(w);
-}
-
-READ8_MEMBER(rt1715_state::memory_read_byte)
-{
- address_space &prog_space = m_maincpu->space(AS_PROGRAM);
- return prog_space.read_byte(offset);
-}
-
-WRITE8_MEMBER(rt1715_state::memory_write_byte)
-{
- address_space &prog_space = m_maincpu->space(AS_PROGRAM);
- prog_space.write_byte(offset, data);
-}
-
-READ8_MEMBER(rt1715_state::io_read_byte)
-{
- address_space &prog_space = m_maincpu->space(AS_IO);
- return prog_space.read_byte(offset);
-}
-
-WRITE8_MEMBER(rt1715_state::io_write_byte)
-{
- address_space &prog_space = m_maincpu->space(AS_IO);
- prog_space.write_byte(offset, data);
-}
-
-WRITE_LINE_MEMBER(rt1715_state::busreq_w)
-{
- // since our Z80 has no support for BUSACK, we assume it is granted immediately
- m_maincpu->set_input_line(Z80_INPUT_LINE_BUSRQ, state);
- m_dma->bai_w(state); // tell dma that bus has been granted
-}
-
/***************************************************************************
VIDEO EMULATION
***************************************************************************/
-WRITE_LINE_MEMBER(rt1715_state::crtc_drq_w)
-{
- if (state)
- {
- address_space &mem = m_maincpu->space(AS_PROGRAM);
- m_crtc->dack_w(mem, 0, m_p_videoram[m_dma_adr++]);
- m_dma_adr %= (80 * 24);
- }
-}
-
-I8275_DRAW_CHARACTER_MEMBER(rt1715_state::crtc_display_pixels)
+I8275_DRAW_CHARACTER_MEMBER( rt1715_state::crtc_display_pixels )
{
- const rgb_t *palette = m_palette->palette()->entry_list_raw();
- u8 gfx = (lten) ? 0xff : 0;
-
- if (!vsp)
- gfx = m_p_chargen[linecount << 7 | charcode];
-
- if (rvv)
- gfx ^= 0xff;
-
- for (u8 i=0; i<8; i++)
- bitmap.pix32(y, x + i) = palette[BIT(gfx, 7-i) ? (hlgt ? 2 : 1) : 0];
}
/* F4 Character Displayer */
@@ -343,7 +183,7 @@ void rt1715_state::rt1715_palette(palette_device &palette) const
{
palette.set_pen_color(0, rgb_t(0x00, 0x00, 0x00)); // black
palette.set_pen_color(1, rgb_t(0x00, 0x7f, 0x00)); // low intensity
- palette.set_pen_color(2, rgb_t(0x00, 0xff, 0x00)); // high intensity
+ palette.set_pen_color(2, rgb_t(0x00, 0xff, 0x00)); // high intensitiy
}
@@ -357,63 +197,17 @@ void rt1715_state::rt1715_mem(address_map &map)
map(0x0800, 0xffff).bankrw("bank2");
}
-void rt1715_state::rt1715_base_io(address_map &map)
+void rt1715_state::rt1715_io(address_map &map)
{
map.unmap_value_high();
map.global_mask(0xff);
- map(0x08, 0x0b).rw(m_ctc0, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
- map(0x0c, 0x0f).rw(m_sio0, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
-// map(0x10, 0x13).rw(m_ctc1, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
-// map(0x14, 0x17).rw(m_sio1, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
- map(0x18, 0x19).rw(m_crtc, FUNC(i8275_device::read), FUNC(i8275_device::write));
-// map(0x2c, 0x2f) // LT107CS -- serial DSR?
-// map(0x30, 0x33) // LT111CS -- serial SEL? (data rate selector)
-}
-
-void rt1715_state::rt1715_io(address_map &map)
-{
- rt1715_base_io(map);
-
- map(0x00, 0x03).rw("a71", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); // floppy data
- map(0x04, 0x07).rw("a72", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); // floppy control/status
+ map(0x00, 0x03).rw("a71", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x04, 0x07).rw("a72", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x08, 0x0b).rw("a30", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x0c, 0x0f).rw("a29", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+ map(0x18, 0x19).rw("a26", FUNC(i8275_device::read), FUNC(i8275_device::write));
map(0x20, 0x20).w(FUNC(rt1715_state::rt1715_floppy_enable));
-// map(0x24, 0x27).w(FUNC(rt1715_state::rt1715_rom_enable)); // MEMCS0
- map(0x28, 0x2b).w(FUNC(rt1715_state::rt1715_rom_disable)); // MEMCS1
-// map(0x34, 0x37) // BWSCS (read: memory start address, write: switch chargen)
-}
-
-void rt1715_state::rt1715w_mem(address_map &map)
-{
- map(0x0000, 0xffff).r(m_bankdev[0], FUNC(address_map_bank_device::read8)).w(m_bankdev[1], FUNC(address_map_bank_device::write8));
-}
-
-void rt1715_state::rt1715w_banked_mem(address_map &map)
-{
- map(0x00000, 0x007ff).rom().region("ipl", 0);
- map(0x02000, 0x02fff).ram().region("gfx", 0);
- map(0x03000, 0x03fff).ram().share("videoram");
- map(0x04000, 0x0ffff).bankrw("bank2");
- map(0x10000, 0x4ffff).bankrw("bank3");
-}
-
-// rt1715w -- decoders A13, A14, page C
-void rt1715_state::rt1715w_io(address_map &map)
-{
- rt1715_base_io(map);
-
- map(0x00, 0x00).rw(m_dma, FUNC(z80dma_device::bus_r), FUNC(z80dma_device::bus_w)); // A2
- map(0x04, 0x07).rw(m_ctc2, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // A4
-// map(0x1a, 0x1b) // chargen write protection
- map(0x1c, 0x1d).m(m_fdc, FUNC(i8272a_device::map));
- map(0x20, 0x23).w(FUNC(rt1715_state::rt1715w_krfd_w)); // KRFD -- FD-Steuerregister (A45)
- map(0x24, 0x27).w(FUNC(rt1715_state::rt1715w_set_bank)); // BR (A62, A63)
- map(0x28, 0x2b).w(FUNC(rt1715_state::rt1715w_floppy_motor)); // MOS
- map(0x34, 0x37).portr("S8"); // KON -- Konfigurations-schalter FD (config switch -- A114, DIP S8)
-// map(0x38, 0x3b) // SR (RST1) -- Ru:cksetzen von Flip-Flops im FD
-// map(0x3c, 0x3f) // RST (RST2) -- Ru:cksetzen von Flip-Flops in V.24 (Pru:ftechnik)
- // used via DMA only
- map(0x40, 0x40).r(m_fdc, FUNC(i8272a_device::msr_r));
- map(0x41, 0x41).rw(m_fdc, FUNC(i8272a_device::dma_r), FUNC(i8272a_device::dma_w));
+ map(0x28, 0x28).w(FUNC(rt1715_state::rt1715_rom_disable));
}
void rt1715_state::k7658_mem(address_map &map)
@@ -434,34 +228,6 @@ void rt1715_state::k7658_io(address_map &map)
INPUT PORTS
***************************************************************************/
-static INPUT_PORTS_START( rt1715w )
- PORT_START("S8")
- PORT_DIPNAME( 0x01, 0x01, "UNK0" )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, "UNK1" )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, "UNK2" )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, "UNK3" )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, "UNK4" )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, "UNK5" )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, "UNK6" )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, "UNK7" )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-INPUT_PORTS_END
-
static INPUT_PORTS_START( k7658 )
PORT_START("row_00")
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED)
@@ -508,112 +274,57 @@ INPUT_PORTS_END
MACHINE DRIVERS
***************************************************************************/
-/* verify priority -- p. 14 of PC-1715-Servicemanual.pdf */
+/* priority unknown */
static const z80_daisy_config rt1715_daisy_chain[] =
{
{ "a71" },
{ "a72" },
- { "ctc0" },
- { "sio0" },
- { nullptr }
-};
-
-static const z80_daisy_config rt1715w_daisy_chain[] =
-{
- { "ctc0" },
- { "sio0" },
+ { "a30" },
+ { "a29" },
{ nullptr }
};
-static void rt1715w_floppies(device_slot_interface &device)
-{
- device.option_add("525qd", FLOPPY_525_QD);
-}
-
-void rt1715_state::rt1715(machine_config &config)
-{
+MACHINE_CONFIG_START(rt1715_state::rt1715)
/* basic machine hardware */
Z80(config, m_maincpu, 9.832_MHz_XTAL / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &rt1715_state::rt1715_mem);
m_maincpu->set_addrmap(AS_IO, &rt1715_state::rt1715_io);
m_maincpu->set_daisy_config(rt1715_daisy_chain);
- MCFG_MACHINE_START_OVERRIDE(rt1715_state, rt1715)
- MCFG_MACHINE_RESET_OVERRIDE(rt1715_state, rt1715)
-
-#if 0
/* keyboard */
- z80_device &keyboard(Z80(config, "keyboard", 683000));
- keyboard.set_addrmap(AS_PROGRAM, &rt1715_state::k7658_mem);
- keyboard.set_addrmap(AS_IO, &rt1715_state::k7658_io);
-#endif
+ MCFG_DEVICE_ADD("keyboard", Z80, 683000)
+ MCFG_DEVICE_PROGRAM_MAP(k7658_mem)
+ MCFG_DEVICE_IO_MAP(k7658_io)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_screen_update("i8275", FUNC(i8275_device::screen_update));
- m_screen->set_raw(13.824_MHz_XTAL, 864, 0, 624, 320, 0, 300); // ?
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DEVICE("a26", i8275_device, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(13.824_MHz_XTAL, 864, 0, 624, 320, 0, 300) // ?
GFXDECODE(config, "gfxdecode", "palette", gfx_rt1715);
PALETTE(config, "palette", FUNC(rt1715_state::rt1715_palette), 3);
- I8275(config, m_crtc, 13.824_MHz_XTAL / 8);
- m_crtc->set_character_width(8);
- m_crtc->set_display_callback(FUNC(rt1715_state::crtc_display_pixels), this);
- m_crtc->set_screen(m_screen);
+ MCFG_DEVICE_ADD("a26", I8275, 13.824_MHz_XTAL / 8)
+ MCFG_I8275_CHARACTER_WIDTH(8)
+ MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(rt1715_state, crtc_display_pixels)
- /* keyboard */
- Z80SIO(config, m_sio0, 9.832_MHz_XTAL / 4);
+ z80ctc_device& ctc(Z80CTC(config, "a30", 9.832_MHz_XTAL / 4));
+ ctc.zc_callback<0>().set("a29", FUNC(z80sio_device::txca_w));
+ ctc.zc_callback<2>().set("a29", FUNC(z80sio_device::rxtxcb_w));
- Z80CTC(config, m_ctc0, 9.832_MHz_XTAL / 4);
- m_ctc0->zc_callback<0>().set(m_sio0, FUNC(z80sio_device::txca_w));
- m_ctc0->zc_callback<2>().set(m_sio0, FUNC(z80sio_device::rxtxcb_w));
+ Z80SIO(config, "a29", 9.832_MHz_XTAL / 4);
/* floppy */
Z80PIO(config, "a71", 9.832_MHz_XTAL / 4);
Z80PIO(config, "a72", 9.832_MHz_XTAL / 4);
/* internal ram */
- RAM(config, m_ram).set_default_size("64K").set_default_value(0x00);
-}
+ RAM(config, RAM_TAG).set_default_size("64K").set_default_value(0x00);
+MACHINE_CONFIG_END
-void rt1715_state::rt1715w(machine_config &config)
-{
+MACHINE_CONFIG_START(rt1715_state::rt1715w)
rt1715(config);
-
- m_maincpu->set_clock(15.9744_MHz_XTAL / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &rt1715_state::rt1715w_mem);
- m_maincpu->set_addrmap(AS_IO, &rt1715_state::rt1715w_io);
- m_maincpu->set_daisy_config(rt1715w_daisy_chain);
-
- ADDRESS_MAP_BANK(config, "bankdev0").set_map(&rt1715_state::rt1715w_banked_mem).set_options(ENDIANNESS_BIG, 8, 19, 0x10000);
- ADDRESS_MAP_BANK(config, "bankdev1").set_map(&rt1715_state::rt1715w_banked_mem).set_options(ENDIANNESS_BIG, 8, 19, 0x10000);
-
- MCFG_MACHINE_START_OVERRIDE(rt1715_state, rt1715w)
- MCFG_MACHINE_RESET_OVERRIDE(rt1715_state, rt1715w)
-
- config.device_remove("a71");
- config.device_remove("a72");
-
- m_crtc->drq_wr_callback().set(FUNC(rt1715_state::crtc_drq_w));
-
- // operates in polled mode
- I8272A(config, m_fdc, 8'000'000 / 4, false);
- m_fdc->drq_wr_callback().set(m_dma, FUNC(z80dma_device::rdy_w)).invert();
- FLOPPY_CONNECTOR(config, "i8272:0", rt1715w_floppies, "525qd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "i8272:1", rt1715w_floppies, "525qd", floppy_image_device::default_floppy_formats);
-
- Z80DMA(config, m_dma, 15.9744_MHz_XTAL / 4);
- m_dma->out_busreq_callback().set(FUNC(rt1715_state::busreq_w));
- m_dma->out_int_callback().set(FUNC(rt1715_state::tc_w));
- m_dma->in_mreq_callback().set(FUNC(rt1715_state::memory_read_byte));
- m_dma->out_mreq_callback().set(FUNC(rt1715_state::memory_write_byte));
- m_dma->in_iorq_callback().set(FUNC(rt1715_state::io_read_byte));
- m_dma->out_iorq_callback().set(FUNC(rt1715_state::io_write_byte));
-
- Z80CTC(config, m_ctc2, 15.9744_MHz_XTAL / 4);
-
- m_ram->set_default_size("256K");
-}
+MACHINE_CONFIG_END
/***************************************************************************
@@ -678,4 +389,4 @@ ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
COMP( 1986, rt1715, 0, 0, rt1715, k7658, rt1715_state, empty_init, "Robotron", "Robotron PC-1715", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
COMP( 1986, rt1715lc, rt1715, 0, rt1715, k7658, rt1715_state, empty_init, "Robotron", "Robotron PC-1715 (latin/cyrillic)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
-COMP( 1986, rt1715w, rt1715, 0, rt1715w, rt1715w, rt1715_state, empty_init, "Robotron", "Robotron PC-1715W", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
+COMP( 1986, rt1715w, rt1715, 0, rt1715w, k7658, rt1715_state, empty_init, "Robotron", "Robotron PC-1715W", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/rulechan.cpp b/src/mame/drivers/rulechan.cpp
index 08b2ed382e6..c421cf10508 100644
--- a/src/mame/drivers/rulechan.cpp
+++ b/src/mame/drivers/rulechan.cpp
@@ -727,8 +727,8 @@ INPUT_PORTS_END
* Machine Driver *
**************************************/
-void rulechan_state::rulechan(machine_config &config)
-{
+MACHINE_CONFIG_START(rulechan_state::rulechan)
+
/* basic machine hardware */
Z80(config, m_maincpu, CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &rulechan_state::main_map);
@@ -741,8 +741,8 @@ void rulechan_state::rulechan(machine_config &config)
/* eeprom */
EEPROM_93C46_8BIT(config, "eeprom");
- TIMER(config, "ball_speed").configure_periodic(FUNC(rulechan_state::ball_speed), attotime::from_hz(60));
- TIMER(config, "wheel_speed").configure_periodic(FUNC(rulechan_state::wheel_speed), attotime::from_hz(60));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("ball_speed", rulechan_state, ball_speed, attotime::from_hz(60))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("wheel_speed", rulechan_state, wheel_speed, attotime::from_hz(60))
/* video hardware */
v9938_device &v9938(V9938(config, "v9938", VID_CLOCK));
@@ -757,7 +757,8 @@ void rulechan_state::rulechan(machine_config &config)
ay_re900.port_a_read_callback().set(FUNC(rulechan_state::psg_portA_r));
ay_re900.port_b_read_callback().set(FUNC(rulechan_state::psg_portB_r));
ay_re900.add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+
+MACHINE_CONFIG_END
/**************************************
diff --git a/src/mame/drivers/rungun.cpp b/src/mame/drivers/rungun.cpp
index db6766ca25a..a96c39610d6 100644
--- a/src/mame/drivers/rungun.cpp
+++ b/src/mame/drivers/rungun.cpp
@@ -256,6 +256,12 @@ void rungun_state::rungun_sound_map(address_map &map)
}
+void rungun_state::k054539_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom().region("k054539", 0);
+}
+
+
static INPUT_PORTS_START( rng )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
@@ -443,14 +449,14 @@ void rungun_state::rng(machine_config &config)
// SFX
K054539(config, m_k054539_1, 18.432_MHz_XTAL);
- m_k054539_1->set_device_rom_tag("k054539");
+ m_k054539_1->set_addrmap(0, &rungun_state::k054539_map);
m_k054539_1->timer_handler().set(FUNC(rungun_state::k054539_nmi_gen));
m_k054539_1->add_route(0, "rspeaker", 1.0);
m_k054539_1->add_route(1, "lspeaker", 1.0);
// BGM, volumes handtuned to make SFXs audible (still not 100% right tho)
K054539(config, m_k054539_2, 18.432_MHz_XTAL);
- m_k054539_2->set_device_rom_tag("k054539");
+ m_k054539_2->set_addrmap(0, &rungun_state::k054539_map);
m_k054539_2->add_route(0, "rspeaker", 0.6);
m_k054539_2->add_route(1, "lspeaker", 0.6);
}
diff --git a/src/mame/drivers/rx78.cpp b/src/mame/drivers/rx78.cpp
index c6002549395..5a21fbd418d 100644
--- a/src/mame/drivers/rx78.cpp
+++ b/src/mame/drivers/rx78.cpp
@@ -298,7 +298,7 @@ void rx78_state::rx78_io(address_map &map)
map(0xf5, 0xfb).w(FUNC(rx78_state::vdp_reg_w)); //vdp
map(0xfc, 0xfc).w(FUNC(rx78_state::vdp_bg_reg_w)); //vdp
map(0xfe, 0xfe).w(FUNC(rx78_state::vdp_pri_mask_w));
- map(0xff, 0xff).w("sn1", FUNC(sn76489a_device::write)); //psg
+ map(0xff, 0xff).w("sn1", FUNC(sn76489a_device::command_w)); //psg
}
/* Input ports */
@@ -432,7 +432,7 @@ void rx78_state::machine_reset()
{
address_space &prg = m_maincpu->space(AS_PROGRAM);
if (m_cart->exists())
- prg.install_read_handler(0x2000, 0x5fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
+ prg.install_read_handler(0x2000, 0x5fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
}
DEVICE_IMAGE_LOAD_MEMBER( rx78_state, rx78_cart )
@@ -472,24 +472,25 @@ GFXDECODE_END
MACHINE_CONFIG_START(rx78_state::rx78)
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/7); // unknown divider
- m_maincpu->set_addrmap(AS_PROGRAM, &rx78_state::rx78_mem);
- m_maincpu->set_addrmap(AS_IO, &rx78_state::rx78_io);
- m_maincpu->set_vblank_int("screen", FUNC(rx78_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu",Z80, MASTER_CLOCK/7) // unknown divider
+ MCFG_DEVICE_PROGRAM_MAP(rx78_mem)
+ MCFG_DEVICE_IO_MAP(rx78_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rx78_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
-// screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
-// screen.set_size(192, 184);
-// screen.set_visarea(0, 192-1, 0, 184-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+// MCFG_SCREEN_SIZE(192, 184)
+// MCFG_SCREEN_VISIBLE_AREA(0, 192-1, 0, 184-1)
/* guess: generic NTSC video timing at 256x224, system runs at 192x184, suppose with some border area to compensate */
- screen.set_raw(MASTER_CLOCK/4, 442, 0, 256, 263, 0, 224);
- screen.set_screen_update(FUNC(rx78_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 442, 0, 256, 263, 0, 224)
+ MCFG_SCREEN_UPDATE_DRIVER(rx78_state, screen_update)
- PALETTE(config, m_palette).set_entries(16+1); //+1 for the background color
- GFXDECODE(config, "gfxdecode", m_palette, gfx_rx78);
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 16+1) //+1 for the background color
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rx78)
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "rx78_cart")
MCFG_GENERIC_EXTENSIONS("bin,rom")
@@ -497,16 +498,17 @@ MACHINE_CONFIG_START(rx78_state::rx78)
RAM(config, RAM_TAG).set_default_size("32K").set_extra_options("16K");
- CASSETTE(config, m_cass);
+ MCFG_CASSETTE_ADD( "cassette" )
SPEAKER(config, "mono").front_center();
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
- SN76489A(config, "sn1", XTAL(28'636'363)/8).add_route(ALL_OUTPUTS, "mono", 0.50); // unknown divider
+ MCFG_DEVICE_ADD("sn1", SN76489A, XTAL(28'636'363)/8) // unknown divider
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("rx78");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","rx78")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/rzone.cpp b/src/mame/drivers/rzone.cpp
index 53305092ea2..32142bbd63a 100644
--- a/src/mame/drivers/rzone.cpp
+++ b/src/mame/drivers/rzone.cpp
@@ -40,8 +40,8 @@
class rzone_state : public hh_sm510_state
{
public:
- rzone_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_sm510_state(mconfig, type, tag),
+ rzone_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag),
m_led_out(*this, "led"),
m_led_off(*this, "led_off")
{ }
@@ -242,8 +242,8 @@ INPUT_PORTS_END
***************************************************************************/
-void rzone_state::rzbatfor(machine_config &config)
-{
+MACHINE_CONFIG_START(rzone_state::rzbatfor)
+
/* basic machine hardware */
SM512(config, m_maincpu); // no external XTAL
m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w));
@@ -252,22 +252,23 @@ void rzone_state::rzbatfor(machine_config &config)
m_maincpu->write_r().set(FUNC(rzone_state::t2_write_r));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", "svg"));
- screen.set_refresh_hz(50);
- screen.set_size(1368, 1080);
- screen.set_visarea(0, 1368-1, 0, 1080-1);
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1368, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1368-1, 0, 1080-1)
- TIMER(config, m_led_off).configure_generic(FUNC(rzone_state::led_off_callback));
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD("led_off", rzone_state, led_off_callback)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_rzone);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(rzone_state::rztoshden)
-void rzone_state::rztoshden(machine_config &config)
-{
/* basic machine hardware */
SM510(config, m_maincpu);
m_maincpu->set_r_mask_option(sm510_base_device::RMASK_DIRECT);
@@ -277,22 +278,23 @@ void rzone_state::rztoshden(machine_config &config)
m_maincpu->write_r().set(FUNC(rzone_state::t1_write_r));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", "svg"));
- screen.set_refresh_hz(50);
- screen.set_size(1392, 1080);
- screen.set_visarea(0, 1392-1, 0, 1080-1);
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1392, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1392-1, 0, 1080-1)
- TIMER(config, m_led_off).configure_generic(FUNC(rzone_state::led_off_callback));
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD("led_off", rzone_state, led_off_callback)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_rzone);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(rzone_state::rzindy500)
-void rzone_state::rzindy500(machine_config &config)
-{
/* basic machine hardware */
SM510(config, m_maincpu); // no external XTAL
m_maincpu->set_r_mask_option(sm510_base_device::RMASK_DIRECT); // confirmed
@@ -302,19 +304,20 @@ void rzone_state::rzindy500(machine_config &config)
m_maincpu->write_r().set(FUNC(rzone_state::t1_write_r));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", "svg"));
- screen.set_refresh_hz(50);
- screen.set_size(1425, 1080);
- screen.set_visarea(0, 1425-1, 0, 1080-1);
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1425, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1425-1, 0, 1080-1)
- TIMER(config, m_led_off).configure_generic(FUNC(rzone_state::led_off_callback));
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD("led_off", rzone_state, led_off_callback)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_rzone);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/s11.cpp b/src/mame/drivers/s11.cpp
index b1966c18077..e3e55a08f20 100644
--- a/src/mame/drivers/s11.cpp
+++ b/src/mame/drivers/s11.cpp
@@ -382,11 +382,10 @@ void s11_state::init_s11()
m_irq_active = false;
}
-void s11_state::s11(machine_config &config)
-{
+MACHINE_CONFIG_START(s11_state::s11)
/* basic machine hardware */
- M6802(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &s11_state::s11_main_map);
+ MCFG_DEVICE_ADD("maincpu", M6802, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(s11_main_map)
MCFG_MACHINE_RESET_OVERRIDE(s11_state, s11)
/* Video */
@@ -444,45 +443,46 @@ void s11_state::s11(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* Add the soundcard */
- M6808(config, m_audiocpu, XTAL(4'000'000));
- m_audiocpu->set_addrmap(AS_PROGRAM, &s11_state::s11_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6808, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(s11_audio_map)
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
SPEAKER(config, "speech").front_center();
- HC55516(config, m_hc55516, 0).add_route(ALL_OUTPUTS, "speech", 1.00);
+ MCFG_DEVICE_ADD("hc55516", HC55516, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speech", 1.00)
PIA6821(config, m_pias, 0);
m_pias->readpa_handler().set(FUNC(s11_state::sound_r));
m_pias->writepa_handler().set(FUNC(s11_state::sound_w));
m_pias->writepb_handler().set("dac", FUNC(dac_byte_interface::data_w));
- m_pias->ca2_handler().set(m_hc55516, FUNC(hc55516_device::clock_w));
- m_pias->cb2_handler().set(m_hc55516, FUNC(hc55516_device::digit_w));
- m_pias->irqa_handler().set_inputline(m_audiocpu, M6808_IRQ_LINE);
- m_pias->irqa_handler().set_inputline(m_audiocpu, M6808_IRQ_LINE);
+ m_pias->ca2_handler().set("hc55516", FUNC(hc55516_device::clock_w));
+ m_pias->cb2_handler().set("hc55516", FUNC(hc55516_device::digit_w));
+ m_pias->irqa_handler().set_inputline("audiocpu", M6808_IRQ_LINE);
+ m_pias->irqa_handler().set_inputline("audiocpu", M6808_IRQ_LINE);
/* Add the background music card */
- MC6809E(config, m_bgcpu, 8000000 / 4); // MC68B09E
- m_bgcpu->set_addrmap(AS_PROGRAM, &s11_state::s11_bg_map);
+ MCFG_DEVICE_ADD("bgcpu", MC6809E, 8000000 / 4) // MC68B09E
+ MCFG_DEVICE_PROGRAM_MAP(s11_bg_map)
SPEAKER(config, "bg").front_center();
YM2151(config, m_ym, 3580000);
m_ym->irq_handler().set(FUNC(s11_state::ym2151_irq_w));
m_ym->add_route(ALL_OUTPUTS, "bg", 0.50);
- MC1408(config, "dac1", 0).add_route(ALL_OUTPUTS, "bg", 0.25);
+ MCFG_DEVICE_ADD("dac1", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.25)
PIA6821(config, m_pia40, 0);
m_pia40->writepa_handler().set("dac1", FUNC(dac_byte_interface::data_w));
m_pia40->writepb_handler().set(FUNC(s11_state::pia40_pb_w));
m_pia40->cb2_handler().set(FUNC(s11_state::pia40_cb2_w));
- m_pia40->irqa_handler().set_inputline(m_bgcpu, M6809_FIRQ_LINE);
- m_pia40->irqb_handler().set_inputline(m_bgcpu, INPUT_LINE_NMI);
-}
+ m_pia40->irqa_handler().set_inputline("bgcpu", M6809_FIRQ_LINE);
+ m_pia40->irqb_handler().set_inputline("bgcpu", INPUT_LINE_NMI);
+MACHINE_CONFIG_END
/*----------------------------
diff --git a/src/mame/drivers/s11a.cpp b/src/mame/drivers/s11a.cpp
index da5e5170178..ddfc4d8fe4f 100644
--- a/src/mame/drivers/s11a.cpp
+++ b/src/mame/drivers/s11a.cpp
@@ -174,11 +174,10 @@ void s11a_state::init_s11a()
s11_state::init_s11();
}
-void s11a_state::s11a(machine_config &config)
-{
+MACHINE_CONFIG_START(s11a_state::s11a)
/* basic machine hardware */
- M6808(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &s11a_state::s11a_main_map);
+ MCFG_DEVICE_ADD("maincpu", M6808, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(s11a_main_map)
MCFG_MACHINE_RESET_OVERRIDE(s11a_state, s11a)
/* Video */
@@ -236,45 +235,46 @@ void s11a_state::s11a(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
/* Add the soundcard */
- M6802(config, m_audiocpu, XTAL(4'000'000));
- m_audiocpu->set_addrmap(AS_PROGRAM, &s11a_state::s11a_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6802, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(s11a_audio_map)
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
SPEAKER(config, "speech").front_center();
- HC55516(config, m_hc55516, 0).add_route(ALL_OUTPUTS, "speech", 0.50);
+ MCFG_DEVICE_ADD("hc55516", HC55516, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speech", 0.50)
PIA6821(config, m_pias, 0);
m_pias->readpa_handler().set(FUNC(s11_state::sound_r));
m_pias->writepa_handler().set(FUNC(s11_state::sound_w));
m_pias->writepb_handler().set("dac", FUNC(dac_byte_interface::data_w));
m_pias->cb2_handler().set(FUNC(s11_state::pia40_cb2_w));
- m_pias->irqa_handler().set_inputline(m_audiocpu, M6802_IRQ_LINE);
- m_pias->irqa_handler().set_inputline(m_audiocpu, M6802_IRQ_LINE);
+ m_pias->irqa_handler().set_inputline("audiocpu", M6802_IRQ_LINE);
+ m_pias->irqa_handler().set_inputline("audiocpu", M6802_IRQ_LINE);
/* Add the background music card */
- MC6809E(config, m_bgcpu, XTAL(8'000'000) / 4); // MC68B09E
- m_bgcpu->set_addrmap(AS_PROGRAM, &s11a_state::s11a_bg_map);
+ MCFG_DEVICE_ADD("bgcpu", MC6809E, XTAL(8'000'000) / 4) // MC68B09E
+ MCFG_DEVICE_PROGRAM_MAP(s11a_bg_map)
SPEAKER(config, "bg").front_center();
YM2151(config, m_ym, XTAL(3'579'545));
m_ym->irq_handler().set(FUNC(s11a_state::ym2151_irq_w));
m_ym->add_route(ALL_OUTPUTS, "bg", 0.50);
- MC1408(config, "dac1", 0).add_route(ALL_OUTPUTS, "bg", 0.25);
+ MCFG_DEVICE_ADD("dac1", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.25)
PIA6821(config, m_pia40, 0);
m_pia40->writepa_handler().set("dac1", FUNC(dac_byte_interface::data_w));
m_pia40->writepb_handler().set(FUNC(s11_state::pia40_pb_w));
m_pia40->ca2_handler().set(FUNC(s11_state::pias_ca2_w));
m_pia40->cb2_handler().set(FUNC(s11_state::pias_cb2_w));
- m_pia40->irqa_handler().set_inputline(m_bgcpu, M6809_FIRQ_LINE);
- m_pia40->irqb_handler().set_inputline(m_bgcpu, INPUT_LINE_NMI);
-}
+ m_pia40->irqa_handler().set_inputline("bgcpu", M6809_FIRQ_LINE);
+ m_pia40->irqb_handler().set_inputline("bgcpu", INPUT_LINE_NMI);
+MACHINE_CONFIG_END
/*------------------------
/ F14 Tomcat 5/87 (#554)
diff --git a/src/mame/drivers/s11b.cpp b/src/mame/drivers/s11b.cpp
index 2d6a5baf276..cc40eaa7be5 100644
--- a/src/mame/drivers/s11b.cpp
+++ b/src/mame/drivers/s11b.cpp
@@ -250,11 +250,10 @@ void s11b_state::init_s11b_invert()
m_invert = true;
}
-void s11b_state::s11b(machine_config &config)
-{
+MACHINE_CONFIG_START(s11b_state::s11b)
/* basic machine hardware */
- M6808(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &s11b_state::s11b_main_map);
+ MCFG_DEVICE_ADD("maincpu", M6808, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(s11b_main_map)
MCFG_MACHINE_RESET_OVERRIDE(s11b_state, s11b)
/* Video */
@@ -312,17 +311,18 @@ void s11b_state::s11b(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
/* Add the soundcard */
- M6802(config, m_audiocpu, XTAL(4'000'000));
- m_audiocpu->set_addrmap(AS_PROGRAM, &s11b_state::s11b_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6802, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(s11b_audio_map)
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
SPEAKER(config, "speech").front_center();
- HC55516(config, m_hc55516, 0).add_route(ALL_OUTPUTS, "speech", 0.50);
+ MCFG_DEVICE_ADD("hc55516", HC55516, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speech", 0.50)
PIA6821(config, m_pias, 0);
m_pias->readpa_handler().set(FUNC(s11_state::sound_r));
@@ -334,18 +334,19 @@ void s11b_state::s11b(machine_config &config)
m_pias->irqa_handler().set_inputline("audiocpu", M6802_IRQ_LINE);
/* Add the background music card */
- MC6809E(config, m_bgcpu, XTAL(8'000'000) / 4); // MC68B09E
- m_bgcpu->set_addrmap(AS_PROGRAM, &s11b_state::s11b_bg_map);
- config.m_minimum_quantum = attotime::from_hz(50);
+ MCFG_DEVICE_ADD("bgcpu", MC6809E, XTAL(8'000'000) / 4) // MC68B09E
+ MCFG_DEVICE_PROGRAM_MAP(s11b_bg_map)
+ MCFG_QUANTUM_TIME(attotime::from_hz(50))
SPEAKER(config, "bg").front_center();
YM2151(config, m_ym, 3580000);
m_ym->irq_handler().set(FUNC(s11b_state::ym2151_irq_w));
m_ym->add_route(ALL_OUTPUTS, "bg", 0.25);
- MC1408(config, "dac1", 0).add_route(ALL_OUTPUTS, "bg", 0.25);
+ MCFG_DEVICE_ADD("dac1", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.25)
- HC55516(config, m_bg_hc55516, 0).add_route(ALL_OUTPUTS, "speech", 0.50);
+ MCFG_DEVICE_ADD("hc55516_bg", HC55516, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speech", 0.50)
PIA6821(config, m_pia40, 0);
m_pia40->writepa_handler().set("dac1", FUNC(dac_byte_interface::data_w));
@@ -354,7 +355,8 @@ void s11b_state::s11b(machine_config &config)
m_pia40->cb2_handler().set(FUNC(s11_state::pia40_cb2_w));
m_pia40->irqa_handler().set_inputline("bgcpu", M6809_FIRQ_LINE);
m_pia40->irqb_handler().set_inputline("bgcpu", INPUT_LINE_NMI);
-}
+
+MACHINE_CONFIG_END
/*-----------------------
/ Bad Cats 12/89
diff --git a/src/mame/drivers/s3.cpp b/src/mame/drivers/s3.cpp
index 9a7121a8c79..3c0b7261150 100644
--- a/src/mame/drivers/s3.cpp
+++ b/src/mame/drivers/s3.cpp
@@ -436,12 +436,11 @@ TIMER_DEVICE_CALLBACK_MEMBER( s3_state::irq )
m_t_c++;
}
-void s3_state::s3(machine_config &config)
-{
+MACHINE_CONFIG_START(s3_state::s3)
/* basic machine hardware */
- M6800(config, m_maincpu, 3580000);
- m_maincpu->set_addrmap(AS_PROGRAM, &s3_state::s3_main_map);
- TIMER(config, "irq").configure_periodic(FUNC(s3_state::irq), attotime::from_hz(250));
+ MCFG_DEVICE_ADD("maincpu", M6800, 3580000)
+ MCFG_DEVICE_PROGRAM_MAP(s3_main_map)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", s3_state, irq, attotime::from_hz(250))
MCFG_MACHINE_RESET_OVERRIDE(s3_state, s3)
/* Video */
@@ -487,28 +486,26 @@ void s3_state::s3(machine_config &config)
m_pia30->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void s3_state::s3a(machine_config &config)
-{
+MACHINE_CONFIG_START(s3_state::s3a)
s3(config);
/* Add the soundcard */
- M6802(config, m_audiocpu, 3580000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &s3_state::s3_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6802, 3580000)
+ MCFG_DEVICE_PROGRAM_MAP(s3_audio_map)
MCFG_MACHINE_RESET_OVERRIDE(s3_state, s3a)
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
PIA6821(config, m_pias, 0);
m_pias->readpb_handler().set(FUNC(s3_state::sound_r));
m_pias->writepa_handler().set("dac", FUNC(dac_byte_interface::data_w));
m_pias->irqa_handler().set_inputline("audiocpu", M6802_IRQ_LINE);
m_pias->irqb_handler().set_inputline("audiocpu", M6802_IRQ_LINE);
-}
+MACHINE_CONFIG_END
//***************************************** SYSTEM 3 ******************************************************
diff --git a/src/mame/drivers/s4.cpp b/src/mame/drivers/s4.cpp
index 33265e28e2c..d20a91c419c 100644
--- a/src/mame/drivers/s4.cpp
+++ b/src/mame/drivers/s4.cpp
@@ -430,12 +430,11 @@ TIMER_DEVICE_CALLBACK_MEMBER( s4_state::irq )
m_t_c++;
}
-void s4_state::s4(machine_config &config)
-{
+MACHINE_CONFIG_START(s4_state::s4)
/* basic machine hardware */
- M6800(config, m_maincpu, 3580000);
- m_maincpu->set_addrmap(AS_PROGRAM, &s4_state::s4_main_map);
- TIMER(config, "irq").configure_periodic(FUNC(s4_state::irq), attotime::from_hz(250));
+ MCFG_DEVICE_ADD("maincpu", M6800, 3580000)
+ MCFG_DEVICE_PROGRAM_MAP(s4_main_map)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", s4_state, irq, attotime::from_hz(250))
MCFG_MACHINE_RESET_OVERRIDE(s4_state, s4)
/* Video */
@@ -481,28 +480,26 @@ void s4_state::s4(machine_config &config)
m_pia30->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void s4_state::s4a(machine_config &config)
-{
+MACHINE_CONFIG_START(s4_state::s4a)
s4(config);
/* Add the soundcard */
- M6808(config, m_audiocpu, 3580000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &s4_state::s4_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6808, 3580000)
+ MCFG_DEVICE_PROGRAM_MAP(s4_audio_map)
MCFG_MACHINE_RESET_OVERRIDE(s4_state, s4a)
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
PIA6821(config, m_pias, 0);
m_pias->readpb_handler().set(FUNC(s4_state::sound_r));
m_pias->writepa_handler().set("dac", FUNC(dac_byte_interface::data_w));
m_pias->irqa_handler().set_inputline("audiocpu", M6808_IRQ_LINE);
m_pias->irqb_handler().set_inputline("audiocpu", M6808_IRQ_LINE);
-}
+MACHINE_CONFIG_END
/*--------------------------------
diff --git a/src/mame/drivers/s6.cpp b/src/mame/drivers/s6.cpp
index 859102df718..56160bc2d06 100644
--- a/src/mame/drivers/s6.cpp
+++ b/src/mame/drivers/s6.cpp
@@ -409,11 +409,10 @@ void s6_state::init_s6()
m_irq_timer->adjust(attotime::from_ticks(980,3580000/4),1);
}
-void s6_state::s6(machine_config &config)
-{
+MACHINE_CONFIG_START(s6_state::s6)
/* basic machine hardware */
- M6808(config, m_maincpu, 3580000); // 6802 or 6808 could be used here
- m_maincpu->set_addrmap(AS_PROGRAM, &s6_state::s6_main_map);
+ MCFG_DEVICE_ADD("maincpu", M6808, 3580000) // 6802 or 6808 could be used here
+ MCFG_DEVICE_PROGRAM_MAP(s6_main_map)
MCFG_MACHINE_RESET_OVERRIDE(s6_state, s6)
/* Video */
@@ -459,17 +458,17 @@ void s6_state::s6(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* Add the soundcard */
- M6802(config, m_audiocpu, 3580000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &s6_state::s6_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6802, 3580000)
+ MCFG_DEVICE_PROGRAM_MAP(s6_audio_map)
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
SPEAKER(config, "speech").front_center();
- HC55516(config, m_hc55516, 0).add_route(ALL_OUTPUTS, "speech", 1.00);
+ MCFG_DEVICE_ADD("hc55516", HC55516, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speech", 1.00)
PIA6821(config, m_pias, 0);
m_pias->readpb_handler().set(FUNC(s6_state::sound_r));
@@ -478,7 +477,7 @@ void s6_state::s6(machine_config &config)
m_pias->cb2_handler().set(m_hc55516, FUNC(hc55516_device::clock_w));
m_pias->irqa_handler().set_inputline(m_audiocpu, M6802_IRQ_LINE); // FIXME: needs an input merger
m_pias->irqb_handler().set_inputline(m_audiocpu, M6802_IRQ_LINE);
-}
+MACHINE_CONFIG_END
/*--------------------------------
diff --git a/src/mame/drivers/s6a.cpp b/src/mame/drivers/s6a.cpp
index 39b3aabb706..a8a20e9ecc7 100644
--- a/src/mame/drivers/s6a.cpp
+++ b/src/mame/drivers/s6a.cpp
@@ -392,11 +392,10 @@ void s6a_state::init_s6a()
m_irq_timer->adjust(attotime::from_ticks(980,3580000/4),1);
}
-void s6a_state::s6a(machine_config &config)
-{
+MACHINE_CONFIG_START(s6a_state::s6a)
/* basic machine hardware */
- M6808(config, m_maincpu, 3580000);
- m_maincpu->set_addrmap(AS_PROGRAM, &s6a_state::s6a_main_map);
+ MCFG_DEVICE_ADD("maincpu", M6808, 3580000)
+ MCFG_DEVICE_PROGRAM_MAP(s6a_main_map)
MCFG_MACHINE_RESET_OVERRIDE(s6a_state, s6a)
/* Video */
@@ -442,17 +441,17 @@ void s6a_state::s6a(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* Add the soundcard */
- M6802(config, m_audiocpu, 3580000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &s6a_state::s6a_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6802, 3580000)
+ MCFG_DEVICE_PROGRAM_MAP(s6a_audio_map)
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
SPEAKER(config, "speech").front_center();
- HC55516(config, m_hc55516, 0).add_route(ALL_OUTPUTS, "speech", 1.00);
+ MCFG_DEVICE_ADD("hc55516", HC55516, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speech", 1.00)
PIA6821(config, m_pias, 0);
m_pias->readpb_handler().set(FUNC(s6a_state::sound_r));
@@ -461,7 +460,7 @@ void s6a_state::s6a(machine_config &config)
m_pias->cb2_handler().set("hc55516", FUNC(hc55516_device::clock_w));
m_pias->irqa_handler().set_inputline("audiocpu", M6802_IRQ_LINE); // FIXME: needs an input merger
m_pias->irqb_handler().set_inputline("audiocpu", M6802_IRQ_LINE);
-}
+MACHINE_CONFIG_END
/*--------------------------
diff --git a/src/mame/drivers/s7.cpp b/src/mame/drivers/s7.cpp
index f673f35198b..14c856744a2 100644
--- a/src/mame/drivers/s7.cpp
+++ b/src/mame/drivers/s7.cpp
@@ -434,11 +434,10 @@ void s7_state::init_s7()
m_irq_timer->adjust(attotime::from_ticks(980,3580000/4),1);
}
-void s7_state::s7(machine_config &config)
-{
+MACHINE_CONFIG_START(s7_state::s7)
/* basic machine hardware */
- M6808(config, m_maincpu, 3580000);
- m_maincpu->set_addrmap(AS_PROGRAM, &s7_state::s7_main_map);
+ MCFG_DEVICE_ADD("maincpu", M6808, 3580000)
+ MCFG_DEVICE_PROGRAM_MAP(s7_main_map)
MCFG_MACHINE_RESET_OVERRIDE(s7_state, s7)
/* Video */
@@ -494,17 +493,17 @@ void s7_state::s7(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* Add the soundcard */
- M6808(config, m_audiocpu, 3580000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &s7_state::s7_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6808, 3580000)
+ MCFG_DEVICE_PROGRAM_MAP(s7_audio_map)
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
SPEAKER(config, "speech").front_center();
- HC55516(config, m_hc55516, 0).add_route(ALL_OUTPUTS, "speech", 1.00);
+ MCFG_DEVICE_ADD("hc55516", HC55516, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speech", 1.00)
PIA6821(config, m_pias, 0);
m_pias->readpb_handler().set(FUNC(s7_state::sound_r));
@@ -515,7 +514,7 @@ void s7_state::s7(machine_config &config)
m_pias->cb2_handler().set(m_hc55516, FUNC(hc55516_device::clock_w));
m_pias->irqa_handler().set_inputline(m_audiocpu, M6808_IRQ_LINE); // FIXME: needs an input merger
m_pias->irqb_handler().set_inputline(m_audiocpu, M6808_IRQ_LINE);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/s8.cpp b/src/mame/drivers/s8.cpp
index 3aaa9aca636..a8a567c99e3 100644
--- a/src/mame/drivers/s8.cpp
+++ b/src/mame/drivers/s8.cpp
@@ -317,11 +317,10 @@ void s8_state::init_s8()
m_irq_timer->adjust(attotime::from_ticks(980,1e6),1);
}
-void s8_state::s8(machine_config &config)
-{
+MACHINE_CONFIG_START(s8_state::s8)
/* basic machine hardware */
- M6802(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &s8_state::s8_main_map);
+ MCFG_DEVICE_ADD("maincpu", M6802, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(s8_main_map)
MCFG_MACHINE_RESET_OVERRIDE(s8_state, s8)
/* Video */
@@ -365,21 +364,20 @@ void s8_state::s8(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* Add the soundcard */
- M6808(config, m_audiocpu, XTAL(4'000'000));
- m_audiocpu->set_addrmap(AS_PROGRAM, &s8_state::s8_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6808, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(s8_audio_map)
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
PIA6821(config, m_pias, 0);
m_pias->readpa_handler().set(FUNC(s8_state::sound_r));
m_pias->writepb_handler().set("dac", FUNC(dac_byte_interface::data_w));
m_pias->irqa_handler().set_inputline("audiocpu", M6808_IRQ_LINE);
m_pias->irqa_handler().set_inputline("audiocpu", M6808_IRQ_LINE);
-}
+MACHINE_CONFIG_END
/*------------------------------
/ Pennant Fever (#526) 05/1984
diff --git a/src/mame/drivers/s8a.cpp b/src/mame/drivers/s8a.cpp
index 95cc85f1020..9eb3ff69f20 100644
--- a/src/mame/drivers/s8a.cpp
+++ b/src/mame/drivers/s8a.cpp
@@ -289,11 +289,10 @@ void s8a_state::init_s8a()
m_irq_timer->adjust(attotime::from_ticks(980,1e6),1);
}
-void s8a_state::s8a(machine_config &config)
-{
+MACHINE_CONFIG_START(s8a_state::s8a)
/* basic machine hardware */
- M6802(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &s8a_state::s8a_main_map);
+ MCFG_DEVICE_ADD("maincpu", M6802, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(s8a_main_map)
MCFG_MACHINE_RESET_OVERRIDE(s8a_state, s8a)
/* Video */
@@ -337,21 +336,20 @@ void s8a_state::s8a(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* Add the soundcard */
- M6808(config, m_audiocpu, XTAL(4'000'000));
- m_audiocpu->set_addrmap(AS_PROGRAM, &s8a_state::s8a_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6808, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(s8a_audio_map)
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
PIA6821(config, m_pias, 0);
m_pias->readpa_handler().set(FUNC(s8a_state::sound_r));
m_pias->writepb_handler().set("dac", FUNC(dac_byte_interface::data_w));
m_pias->irqa_handler().set_inputline("audiocpu", M6808_IRQ_LINE);
m_pias->irqa_handler().set_inputline("audiocpu", M6808_IRQ_LINE);
-}
+MACHINE_CONFIG_END
/*----------------------------
diff --git a/src/mame/drivers/s9.cpp b/src/mame/drivers/s9.cpp
index 6cb03857b16..75639234967 100644
--- a/src/mame/drivers/s9.cpp
+++ b/src/mame/drivers/s9.cpp
@@ -323,11 +323,10 @@ void s9_state::init_s9()
m_irq_timer->adjust(attotime::from_ticks(980,1e6),1);
}
-void s9_state::s9(machine_config &config)
-{
+MACHINE_CONFIG_START(s9_state::s9)
/* basic machine hardware */
- M6808(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &s9_state::s9_main_map);
+ MCFG_DEVICE_ADD("maincpu", M6808, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(s9_main_map)
MCFG_MACHINE_RESET_OVERRIDE(s9_state, s9)
/* Video */
@@ -371,17 +370,17 @@ void s9_state::s9(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* Add the soundcard */
- M6808(config, m_audiocpu, XTAL(4'000'000));
- m_audiocpu->set_addrmap(AS_PROGRAM, &s9_state::s9_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6808, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(s9_audio_map)
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
SPEAKER(config, "speech").front_center();
- HC55516(config, m_hc55516, 0).add_route(ALL_OUTPUTS, "speech", 1.00);
+ MCFG_DEVICE_ADD("hc55516", HC55516, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speech", 1.00)
PIA6821(config, m_pias, 0);
m_pias->readpa_handler().set(FUNC(s9_state::sound_r));
@@ -390,7 +389,7 @@ void s9_state::s9(machine_config &config)
m_pias->cb2_handler().set("hc55516", FUNC(hc55516_device::digit_w));
m_pias->irqa_handler().set_inputline("audiocpu", M6808_IRQ_LINE);
m_pias->irqa_handler().set_inputline("audiocpu", M6808_IRQ_LINE);
-}
+MACHINE_CONFIG_END
/*-----------------------------
/ Rat Race - Sys.9 (Game #527)- Prototype (displays as #500)
diff --git a/src/mame/drivers/sage2.cpp b/src/mame/drivers/sage2.cpp
index 5190d825669..a995314c165 100644
--- a/src/mame/drivers/sage2.cpp
+++ b/src/mame/drivers/sage2.cpp
@@ -405,14 +405,13 @@ READ16_MEMBER(sage2_state::rom_r)
//**************************************************************************
//-------------------------------------------------
-// machine_config( sage2 )
+// MACHINE_CONFIG( sage2 )
//-------------------------------------------------
-void sage2_state::sage2(machine_config &config)
-{
+MACHINE_CONFIG_START(sage2_state::sage2)
// basic machine hardware
- M68000(config, m_maincpu, XTAL(16'000'000)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &sage2_state::sage2_mem);
+ MCFG_DEVICE_ADD(M68000_TAG, M68000, XTAL(16'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(sage2_mem)
// devices
PIC8259(config, m_pic, 0);
@@ -471,27 +470,25 @@ void sage2_state::sage2(machine_config &config)
UPD765A(config, m_fdc, 8'000'000, false, false);
m_fdc->intrq_wr_callback().set(FUNC(sage2_state::fdc_irq));
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(FUNC(sage2_state::write_centronics_ack));
- m_centronics->busy_handler().set(FUNC(sage2_state::write_centronics_busy));
- m_centronics->perror_handler().set(FUNC(sage2_state::write_centronics_perror));
- m_centronics->select_handler().set(FUNC(sage2_state::write_centronics_select));
- m_centronics->fault_handler().set(FUNC(sage2_state::write_centronics_fault));
-
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, sage2_state, write_centronics_ack))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, sage2_state, write_centronics_busy))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, sage2_state, write_centronics_perror))
+ MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, sage2_state, write_centronics_select))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, sage2_state, write_centronics_fault))
- FLOPPY_CONNECTOR(config, UPD765_TAG ":0", sage2_floppies, "525qd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, UPD765_TAG ":1", sage2_floppies, "525qd", floppy_image_device::default_floppy_formats);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
- IEEE488(config, m_ieee488);
+ MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", sage2_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", sage2_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_IEEE488_BUS_ADD()
// internal ram
RAM(config, RAM_TAG).set_default_size("512K");
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("sage2");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "sage2")
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/sam.cpp b/src/mame/drivers/sam.cpp
index d89aafa8f87..58e7bef05f8 100644
--- a/src/mame/drivers/sam.cpp
+++ b/src/mame/drivers/sam.cpp
@@ -25,11 +25,10 @@ void sam_state::sam_map(address_map &map)
static INPUT_PORTS_START( sam )
INPUT_PORTS_END
-void sam_state::sam(machine_config &config)
-{
- arm7_cpu_device &maincpu(ARM7(config, "maincpu", XTAL(40'000'000))); // AT91R40008
- maincpu.set_addrmap(AS_PROGRAM, &sam_state::sam_map);
-}
+MACHINE_CONFIG_START(sam_state::sam)
+ MCFG_DEVICE_ADD("maincpu", ARM7, XTAL(40'000'000)) // AT91R40008
+ MCFG_DEVICE_PROGRAM_MAP(sam_map)
+MACHINE_CONFIG_END
#define ROM_LOAD_BOOT_EPROM \
ROM_REGION( 0x100000, "boot", ROMREGION_ERASEFF ) \
diff --git a/src/mame/drivers/sandscrp.cpp b/src/mame/drivers/sandscrp.cpp
index 979af82096b..79d78641f22 100644
--- a/src/mame/drivers/sandscrp.cpp
+++ b/src/mame/drivers/sandscrp.cpp
@@ -133,7 +133,7 @@ private:
INTERRUPT_GEN_MEMBER(interrupt);
void update_irq_state();
- void sandscrp_mem(address_map &map);
+ void sandscrp(address_map &map);
void sandscrp_soundmem(address_map &map);
void sandscrp_soundport(address_map &map);
};
@@ -278,7 +278,7 @@ WRITE8_MEMBER(sandscrp_state::soundlatch_w)
m_soundlatch[Latch]->write(space,0,data);
}
-void sandscrp_state::sandscrp_mem(address_map &map)
+void sandscrp_state::sandscrp(address_map &map)
{
map(0x000000, 0x07ffff).rom(); // ROM
map(0x100000, 0x100001).w(FUNC(sandscrp_state::irq_cause_w)); // IRQ Ack
@@ -467,28 +467,28 @@ GFXDECODE_END
***************************************************************************/
-void sandscrp_state::sandscrp(machine_config &config)
-{
+MACHINE_CONFIG_START(sandscrp_state::sandscrp)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000); /* TMP68HC000N-12 */
- m_maincpu->set_addrmap(AS_PROGRAM, &sandscrp_state::sandscrp_mem);
- m_maincpu->set_vblank_int("screen", FUNC(sandscrp_state::interrupt));
+ MCFG_DEVICE_ADD("maincpu", M68000,12000000) /* TMP68HC000N-12 */
+ MCFG_DEVICE_PROGRAM_MAP(sandscrp)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sandscrp_state, interrupt)
- Z80(config, m_audiocpu, 4000000); /* Z8400AB1, Reads the DSWs: it can't be disabled */
- m_audiocpu->set_addrmap(AS_PROGRAM, &sandscrp_state::sandscrp_soundmem);
- m_audiocpu->set_addrmap(AS_IO, &sandscrp_state::sandscrp_soundport);
+ MCFG_DEVICE_ADD("audiocpu", Z80,4000000) /* Z8400AB1, Reads the DSWs: it can't be disabled */
+ MCFG_DEVICE_PROGRAM_MAP(sandscrp_soundmem)
+ MCFG_DEVICE_IO_MAP(sandscrp_soundport)
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(3)); /* a guess, and certainly wrong */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time( ATTOSECONDS_IN_USEC(2500) /* not accurate */ );
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 0+16, 256-16-1);
- screen.set_screen_update(FUNC(sandscrp_state::screen_update));
- screen.screen_vblank().set(FUNC(sandscrp_state::screen_vblank));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME( ATTOSECONDS_IN_USEC(2500) /* not accurate */ )
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sandscrp_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sandscrp_state, screen_vblank))
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_sandscrp);
PALETTE(config, "palette").set_format(palette_device::xGRB_555, 2048);
@@ -519,7 +519,7 @@ void sandscrp_state::sandscrp(machine_config &config)
ymsnd.port_a_read_callback().set_ioport("DSW1");
ymsnd.port_b_read_callback().set_ioport("DSW2");
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/sangho.cpp b/src/mame/drivers/sangho.cpp
index 91c55bbcd8a..bd6e859f44d 100644
--- a/src/mame/drivers/sangho.cpp
+++ b/src/mame/drivers/sangho.cpp
@@ -477,11 +477,10 @@ void sexyboom_state::machine_reset()
}
-void pzlestar_state::pzlestar(machine_config &config)
-{
- Z80(config, m_maincpu, XTAL(21'477'272)/6); // ?
- m_maincpu->set_addrmap(AS_PROGRAM, &pzlestar_state::sangho_map);
- m_maincpu->set_addrmap(AS_IO, &pzlestar_state::pzlestar_io_map);
+MACHINE_CONFIG_START(pzlestar_state::pzlestar)
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(21'477'272)/6) // ?
+ MCFG_DEVICE_PROGRAM_MAP(sangho_map)
+ MCFG_DEVICE_IO_MAP(pzlestar_io_map)
v9958_device &v9958(V9958(config, "v9958", XTAL(21'477'272))); // typical 9958 clock, not verified
v9958.set_screen_ntsc("screen");
@@ -490,15 +489,16 @@ void pzlestar_state::pzlestar(machine_config &config)
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", XTAL(21'477'272)/6).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(21'477'272)/6)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void sexyboom_state::sexyboom(machine_config &config)
-{
- Z80(config, m_maincpu, XTAL(21'477'272)/6);
- m_maincpu->set_addrmap(AS_PROGRAM, &sexyboom_state::sangho_map);
- m_maincpu->set_addrmap(AS_IO, &sexyboom_state::sexyboom_io_map);
+
+MACHINE_CONFIG_START(sexyboom_state::sexyboom)
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(21'477'272)/6)
+ MCFG_DEVICE_PROGRAM_MAP(sangho_map)
+ MCFG_DEVICE_IO_MAP(sexyboom_io_map)
v9958_device &v9958(V9958(config, "v9958", XTAL(21'477'272)));
v9958.set_screen_ntsc("screen");
@@ -506,11 +506,13 @@ void sexyboom_state::sexyboom(machine_config &config)
v9958.int_cb().set_inputline("maincpu", 0);
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- PALETTE(config, "palette").set_entries(19780);
+ MCFG_PALETTE_ADD("palette", 19780)
SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", XTAL(21'477'272)/6).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(21'477'272)/6)
+
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( pzlestar )
ROM_REGION( 0x20000*16, "user1", 0 ) // 15 sockets, 13 used
diff --git a/src/mame/drivers/sanremmg.cpp b/src/mame/drivers/sanremmg.cpp
index 68278f6de4c..6bfed308e06 100644
--- a/src/mame/drivers/sanremmg.cpp
+++ b/src/mame/drivers/sanremmg.cpp
@@ -80,22 +80,22 @@ void sanremmg_state::sanremmg_map(address_map &map)
static INPUT_PORTS_START( sanremmg )
INPUT_PORTS_END
-void sanremmg_state::sanremmg(machine_config &config)
-{
+MACHINE_CONFIG_START(sanremmg_state::sanremmg)
+
/* basic machine hardware */
- ARM7(config, m_maincpu, 50000000); // wrong, this is an M30624FG (M16C/62A family) with 256K internal ROM, no CPU core available
- m_maincpu->set_addrmap(AS_PROGRAM, &sanremmg_state::sanremmg_map);
+ MCFG_DEVICE_ADD("maincpu", ARM7, 50000000) // wrong, this is an M30624FG (M16C/62A family) with 256K internal ROM, no CPU core available
+ MCFG_DEVICE_PROGRAM_MAP(sanremmg_map)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, 48*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(sanremmg_state::screen_update_sanremmg));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sanremmg_state, screen_update_sanremmg)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x200);
-}
+MACHINE_CONFIG_END
/*
PCB is marked: "ELSY CE" and "2-028B" and "San Remo Games - Via Val D'OLIVI 295 - 18038 SANREMO (IM)" on component side
diff --git a/src/mame/drivers/sanremo.cpp b/src/mame/drivers/sanremo.cpp
index 0c0ac776889..74fde741300 100644
--- a/src/mame/drivers/sanremo.cpp
+++ b/src/mame/drivers/sanremo.cpp
@@ -202,15 +202,15 @@ WRITE8_MEMBER(sanremo_state::lamps_w)
{
/* LAMPS:
- 7654 3210
- ---- ---x DISCARD 1
- ---- --x- DISCARD 2
- ---- -x-- DISCARD 3
- ---- x--- DISCARD 4
- ---x ---- DISCARD 5
- --x- ---- START
- -x-- ---- BET
- x--- ---- (always on)
+ 7654 3210
+ ---- ---x DISCARD 1
+ ---- --x- DISCARD 2
+ ---- -x-- DISCARD 3
+ ---- x--- DISCARD 4
+ ---x ---- DISCARD 5
+ --x- ---- START
+ -x-- ---- BET
+ x--- ---- (always on)
*/
for (int n = 0; n < 7; n++)
m_lamps[n] = BIT(data, n);
@@ -220,9 +220,9 @@ WRITE8_MEMBER(sanremo_state::banksel_w)
{
/* GFX banks selector.
- 7654 3210
- ---x xxxx GFX banks selector
- xxx- ---- unknown
+ 7654 3210
+ ---x xxxx GFX banks selector
+ xxx- ---- unknown
*/
m_banksel = data & 0x1f;
}
@@ -355,24 +355,24 @@ GFXDECODE_END
* Machine Drivers *
*********************************************/
-void sanremo_state::sanremo(machine_config &config)
-{
+MACHINE_CONFIG_START(sanremo_state::sanremo)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &sanremo_state::sanremo_map);
- m_maincpu->set_addrmap(AS_IO, &sanremo_state::sanremo_portmap);
- m_maincpu->set_vblank_int("screen", FUNC(sanremo_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(sanremo_map)
+ MCFG_DEVICE_IO_MAP(sanremo_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sanremo_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(70*8, 41*8);
- screen.set_visarea(0, 48*8-1, 0, 38*8-1);
- screen.set_screen_update(FUNC(sanremo_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(70*8, 41*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 48*8-1, 0, 38*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sanremo_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK));
// *** MC6845 init ***
@@ -391,7 +391,7 @@ void sanremo_state::sanremo(machine_config &config)
ay8910_device &ay8910(AY8910(config, "ay8910", SND_CLOCK));
ay8910.port_a_read_callback().set_ioport("DSW");
ay8910.add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+MACHINE_CONFIG_END
/*********************************************
diff --git a/src/mame/drivers/sansa_fuze.cpp b/src/mame/drivers/sansa_fuze.cpp
index c2b6c65a6c8..b82788b4909 100644
--- a/src/mame/drivers/sansa_fuze.cpp
+++ b/src/mame/drivers/sansa_fuze.cpp
@@ -43,12 +43,13 @@ static INPUT_PORTS_START( sansa_fuze )
INPUT_PORTS_END
-void sansa_fuze_state::sansa_fuze(machine_config &config)
-{
+MACHINE_CONFIG_START(sansa_fuze_state::sansa_fuze)
+
/* basic machine hardware */
- ARM7(config, m_maincpu, 50000000); // arm based, speed unknown
- m_maincpu->set_addrmap(AS_PROGRAM, &sansa_fuze_state::sansa_fuze_map);
-}
+ MCFG_DEVICE_ADD("maincpu", ARM7, 50000000) // arm based, speed unknown
+ MCFG_DEVICE_PROGRAM_MAP(sansa_fuze_map)
+
+MACHINE_CONFIG_END
ROM_START( sanfuze2 )
ROM_REGION(0x20000, "maincpu", 0 )
diff --git a/src/mame/drivers/sapi1.cpp b/src/mame/drivers/sapi1.cpp
index f1bee7576da..e837307202e 100644
--- a/src/mame/drivers/sapi1.cpp
+++ b/src/mame/drivers/sapi1.cpp
@@ -37,7 +37,6 @@ ZPS stands for "Základní Počítačová Sestava" (basic computer system).
//#include "cpu/z80/z80.h"
#include "bus/rs232/rs232.h"
#include "machine/ay31015.h"
-#include "machine/clock.h"
#include "machine/keyboard.h"
#include "machine/ram.h"
#include "video/mc6845.h"
@@ -58,7 +57,6 @@ public:
m_line4(*this, "LINE4"),
m_maincpu(*this, "maincpu"),
m_uart(*this, "uart"),
- m_uart_clock(*this, "uart_clock"),
m_v24(*this, "v24"),
m_palette(*this, "palette")
{
@@ -117,7 +115,6 @@ private:
required_ioport m_line4;
required_device<cpu_device> m_maincpu;
optional_device<ay31015_device> m_uart;
- optional_device<clock_device> m_uart_clock;
optional_device<rs232_port_device> m_v24;
optional_device<palette_device> m_palette;
@@ -626,27 +623,26 @@ void sapi1_state::init_sapizps3b()
/* Machine driver */
-void sapi1_state::sapi1(machine_config &config)
-{
+MACHINE_CONFIG_START(sapi1_state::sapi1)
/* basic machine hardware */
- I8080A(config, m_maincpu, 18_MHz_XTAL / 9); // Tesla MHB8080A + MHB8224 + MHB8228
- m_maincpu->set_addrmap(AS_PROGRAM, &sapi1_state::sapi1_mem);
+ MCFG_DEVICE_ADD(m_maincpu, I8080A, XTAL(18'000'000) / 9) // Tesla MHB8080A + MHB8224 + MHB8228
+ MCFG_DEVICE_PROGRAM_MAP(sapi1_mem)
MCFG_MACHINE_RESET_OVERRIDE(sapi1_state, sapi1)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(40*6, 24*9);
- screen.set_visarea(0, 40*6-1, 0, 24*9-1);
- screen.set_screen_update(FUNC(sapi1_state::screen_update_sapi1));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(40*6, 24*9)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40*6-1, 0, 24*9-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sapi1_state, screen_update_sapi1)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, palette_device::MONOCHROME);
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K");
-}
+MACHINE_CONFIG_END
void sapi1_state::sapi2(machine_config &config)
{
@@ -658,26 +654,25 @@ void sapi1_state::sapi2(machine_config &config)
keyboard.set_keyboard_callback(FUNC(sapi1_state::kbd_put));
}
-void sapi1_state::sapi3(machine_config &config)
-{
+MACHINE_CONFIG_START(sapi1_state::sapi3)
sapi2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &sapi1_state::sapi3_mem);
- m_maincpu->set_addrmap(AS_IO, &sapi1_state::sapi3_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sapi3_mem)
+ MCFG_DEVICE_IO_MAP(sapi3_io)
MCFG_MACHINE_RESET_OVERRIDE(sapi1_state, sapizps3 )
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(40*6, 20*9)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40*6-1, 0, 20*9-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sapi1_state, screen_update_sapi3)
+MACHINE_CONFIG_END
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_size(40*6, 20*9);
- screen.set_visarea(0, 40*6-1, 0, 20*9-1);
- screen.set_screen_update(FUNC(sapi1_state::screen_update_sapi3));
-}
-
-void sapi1_state::sapi3b(machine_config &config)
-{
+MACHINE_CONFIG_START(sapi1_state::sapi3b)
sapi3(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &sapi1_state::sapi3b_mem);
- m_maincpu->set_addrmap(AS_IO, &sapi1_state::sapi3b_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sapi3b_mem)
+ MCFG_DEVICE_IO_MAP(sapi3b_io)
mc6845_device &crtc(MC6845(config, "crtc", 1008000)); // guess
crtc.set_screen("screen");
@@ -685,9 +680,10 @@ void sapi1_state::sapi3b(machine_config &config)
crtc.set_char_width(6);
crtc.set_update_row_callback(FUNC(sapi1_state::crtc_update_row), this);
- subdevice<screen_device>("screen")->set_screen_update("crtc", FUNC(mc6845_device::screen_update));
- subdevice<screen_device>("screen")->set_palette(finder_base::DUMMY_TAG);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
+ MCFG_SCREEN_NO_PALETTE
+MACHINE_CONFIG_END
static DEVICE_INPUT_DEFAULTS_START( terminal )
DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_9600 )
@@ -698,29 +694,28 @@ static DEVICE_INPUT_DEFAULTS_START( terminal )
DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 )
DEVICE_INPUT_DEFAULTS_END
-void sapi1_state::sapi3a(machine_config &config)
-{
+MACHINE_CONFIG_START(sapi1_state::sapi3a)
/* basic machine hardware */
- I8080A(config, m_maincpu, 18_MHz_XTAL / 9); // Tesla MHB8080A + MHB8224 + MHB8228
- m_maincpu->set_addrmap(AS_PROGRAM, &sapi1_state::sapi3a_mem);
- m_maincpu->set_addrmap(AS_IO, &sapi1_state::sapi3a_io);
+ MCFG_DEVICE_ADD("maincpu", I8080A, XTAL(18'000'000) / 9) // Tesla MHB8080A + MHB8224 + MHB8228
+ MCFG_DEVICE_PROGRAM_MAP(sapi3a_mem)
+ MCFG_DEVICE_IO_MAP(sapi3a_io)
MCFG_MACHINE_RESET_OVERRIDE(sapi1_state, sapizps3 )
/* video hardware */
AY51013(config, m_uart); // Tesla MHB1012
+ m_uart->set_tx_clock(XTAL(12'288'000) / 80); // not actual rate?
+ m_uart->set_rx_clock(XTAL(12'288'000) / 80); // not actual rate?
m_uart->read_si_callback().set(m_v24, FUNC(rs232_port_device::rxd_r));
m_uart->write_so_callback().set(m_v24, FUNC(rs232_port_device::write_txd));
m_uart->set_auto_rdav(true); // RDAV not actually tied to RDE, but pulsed by K155AG3 (=74123N): R25=22k, C14=220
- CLOCK(config, m_uart_clock, 12.288_MHz_XTAL / 80); // TODO: divider selectable by jumpers
- m_uart_clock->signal_handler().set(m_uart, FUNC(ay51013_device::write_tcp));
- m_uart_clock->signal_handler().append(m_uart, FUNC(ay51013_device::write_rcp));
-
RS232_PORT(config, m_v24, default_rs232_devices, "terminal").set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K");
-}
+MACHINE_CONFIG_END
+
+
/**************************************
diff --git a/src/mame/drivers/sartorius.cpp b/src/mame/drivers/sartorius.cpp
index 17df80470e4..d455c705050 100644
--- a/src/mame/drivers/sartorius.cpp
+++ b/src/mame/drivers/sartorius.cpp
@@ -87,13 +87,12 @@ private:
}
-void sart3733_state::sart3733(machine_config &config)
-{
+MACHINE_CONFIG_START(sart3733_state::sart3733)
i4040_cpu_device &cpu(I4040(config, "maincpu", 750'000)); // clock speed is a complete guess - can't see crystal or multi-phase clock generator
cpu.set_rom_map(&sart3733_state::sart3733_rom);
cpu.set_ram_memory_map(&sart3733_state::sart3733_memory);
cpu.set_ram_status_map(&sart3733_state::sart3733_status);
-}
+MACHINE_CONFIG_END
INPUT_PORTS_START(sart3733)
diff --git a/src/mame/drivers/saturn.cpp b/src/mame/drivers/saturn.cpp
index b8bd86cd579..b4ddb342e4c 100644
--- a/src/mame/drivers/saturn.cpp
+++ b/src/mame/drivers/saturn.cpp
@@ -874,44 +874,48 @@ static void saturn_cart(device_slot_interface &device)
}
-void sat_console_state::saturnus(machine_config &config)
-{
+MACHINE_CONFIG_START(sat_console_state::saturnus)
saturn(config);
- SATURN_CDB(config, "saturn_cdb", 16000000);
+ MCFG_DEVICE_ADD("saturn_cdb", SATURN_CDB, 16000000)
- SOFTWARE_LIST(config, "cd_list").set_original("saturn").set_filter("NTSC-U");
+ MCFG_SOFTWARE_LIST_ADD("cd_list","saturn")
+ MCFG_SOFTWARE_LIST_FILTER("cd_list","NTSC-U")
- SATURN_CART_SLOT(config, "exp", saturn_cart, nullptr);
- SOFTWARE_LIST(config, "cart_list").set_original("sat_cart");
+ MCFG_SATURN_CARTRIDGE_ADD("exp", saturn_cart, nullptr)
+ MCFG_SOFTWARE_LIST_ADD("cart_list","sat_cart")
- m_smpc_hle->set_region_code(4);
-}
+ MCFG_DEVICE_MODIFY("smpc")
+ downcast<smpc_hle_device &>(*device).set_region_code(4);
-void sat_console_state::saturneu(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(sat_console_state::saturneu)
saturn(config);
- SATURN_CDB(config, "saturn_cdb", 16000000);
+ MCFG_DEVICE_ADD("saturn_cdb", SATURN_CDB, 16000000)
- SOFTWARE_LIST(config, "cd_list").set_original("saturn").set_filter("PAL");
+ MCFG_SOFTWARE_LIST_ADD("cd_list","saturn")
+ MCFG_SOFTWARE_LIST_FILTER("cd_list","PAL")
- SATURN_CART_SLOT(config, "exp", saturn_cart, nullptr);
- SOFTWARE_LIST(config, "cart_list").set_original("sat_cart");
+ MCFG_SATURN_CARTRIDGE_ADD("exp", saturn_cart, nullptr)
+ MCFG_SOFTWARE_LIST_ADD("cart_list","sat_cart")
- m_smpc_hle->set_region_code(12);
-}
+ MCFG_DEVICE_MODIFY("smpc")
+ downcast<smpc_hle_device &>(*device).set_region_code(12);
+MACHINE_CONFIG_END
-void sat_console_state::saturnjp(machine_config &config)
-{
+MACHINE_CONFIG_START(sat_console_state::saturnjp)
saturn(config);
- SATURN_CDB(config, "saturn_cdb", 16000000);
+ MCFG_DEVICE_ADD("saturn_cdb", SATURN_CDB, 16000000)
- SOFTWARE_LIST(config, "cd_list").set_original("saturn").set_filter("NTSC-J");
+ MCFG_SOFTWARE_LIST_ADD("cd_list","saturn")
+ MCFG_SOFTWARE_LIST_FILTER("cd_list","NTSC-J")
- SATURN_CART_SLOT(config, "exp", saturn_cart, nullptr);
- SOFTWARE_LIST(config, "cart_list").set_original("sat_cart");
+ MCFG_SATURN_CARTRIDGE_ADD("exp", saturn_cart, nullptr)
+ MCFG_SOFTWARE_LIST_ADD("cart_list","sat_cart")
- m_smpc_hle->set_region_code(1);
-}
+ MCFG_DEVICE_MODIFY("smpc")
+ downcast<smpc_hle_device &>(*device).set_region_code(1);
+MACHINE_CONFIG_END
void sat_console_state::saturn_init_driver(int rgn)
diff --git a/src/mame/drivers/sauro.cpp b/src/mame/drivers/sauro.cpp
index fa40c602acc..f36aa333811 100644
--- a/src/mame/drivers/sauro.cpp
+++ b/src/mame/drivers/sauro.cpp
@@ -446,10 +446,10 @@ static GFXDECODE_START( gfx_trckydoc )
GFXDECODE_END
-void sauro_state::tecfri(machine_config &config)
-{
+MACHINE_CONFIG_START(sauro_state::tecfri)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(20'000'000)/4); /* verified on pcb */
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(20'000'000)/4) /* verified on pcb */
LS259(config, m_mainlatch);
m_mainlatch->q_out_cb<4>().set(FUNC(sauro_state::irq_reset_w));
@@ -459,44 +459,48 @@ void sauro_state::tecfri(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(55.72); /* verified on pcb */
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(5000)); // frames per second, vblank duration (otherwise sprites lag)
- screen.set_size(32 * 8, 32 * 8);
- screen.set_visarea(1 * 8, 31 * 8 - 1, 2 * 8, 30 * 8 - 1);
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(sauro_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(55.72) /* verified on pcb */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(5000)) // frames per second, vblank duration (otherwise sprites lag)
+ MCFG_SCREEN_SIZE(32 * 8, 32 * 8)
+ MCFG_SCREEN_VISIBLE_AREA(1 * 8, 31 * 8 - 1, 2 * 8, 30 * 8 - 1)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sauro_state, vblank_irq))
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 1024);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM3812(config, "ymsnd", XTAL(20'000'000)/8).add_route(ALL_OUTPUTS, "mono", 1.0); /* verified on pcb */
-}
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(20'000'000)/8) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-void sauro_state::trckydoc(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(sauro_state::trckydoc)
tecfri(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &sauro_state::trckydoc_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(trckydoc_map)
m_mainlatch->q_out_cb<1>().set(FUNC(sauro_state::flip_screen_w));
m_mainlatch->q_out_cb<2>().set(FUNC(sauro_state::coin1_w));
m_mainlatch->q_out_cb<3>().set(FUNC(sauro_state::coin2_w));
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_trckydoc);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_trckydoc)
MCFG_VIDEO_START_OVERRIDE(sauro_state,trckydoc)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(sauro_state::screen_update_trckydoc));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(sauro_state, screen_update_trckydoc)
-void sauro_state::sauro(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(sauro_state::sauro)
tecfri(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &sauro_state::sauro_map);
- m_maincpu->set_addrmap(AS_IO, &sauro_state::sauro_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sauro_map)
+ MCFG_DEVICE_IO_MAP(sauro_io_map)
// Z3
m_mainlatch->q_out_cb<0>().set(FUNC(sauro_state::flip_screen_w));
@@ -506,33 +510,36 @@ void sauro_state::sauro(machine_config &config)
m_mainlatch->q_out_cb<5>().set(FUNC(sauro_state::sauro_palette_bank0_w));
m_mainlatch->q_out_cb<6>().set(FUNC(sauro_state::sauro_palette_bank1_w));
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(20'000'000) / 5)); /* verified on pcb */
- audiocpu.set_addrmap(AS_PROGRAM, &sauro_state::sauro_sound_map);
- audiocpu.set_periodic_int(FUNC(sauro_state::irq0_line_hold), attotime::from_hz(8 * 60)); // ?
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(20'000'000) / 5) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(sauro_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(sauro_state, irq0_line_hold, 8 * 60) // ?
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_sauro);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sauro)
MCFG_VIDEO_START_OVERRIDE(sauro_state, sauro)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(sauro_state::screen_update_sauro));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(sauro_state, screen_update_sauro)
GENERIC_LATCH_8(config, m_soundlatch);
- subdevice<ym3812_device>("ymsnd")->set_clock(XTAL(20'000'000) / 5); /* verified on pcb */
+ MCFG_DEVICE_MODIFY("ymsnd")
+ MCFG_DEVICE_CLOCK(XTAL(20'000'000) / 5) /* verified on pcb */
SP0256(config, m_sp0256, XTAL(20'000'000) / 5); /* verified on pcb */
m_sp0256->data_request_callback().set_inputline("audiocpu", INPUT_LINE_NMI);
m_sp0256->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
-void sauro_state::saurob(machine_config &config)
-{
+MACHINE_CONFIG_START(sauro_state::saurob)
sauro(config);
- subdevice<z80_device>("audiocpu")->set_addrmap(AS_PROGRAM, &sauro_state::saurob_sound_map);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(saurob_sound_map)
/* sound hardware */
- config.device_remove("speech");
-}
+ MCFG_DEVICE_REMOVE("speech")
+
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/savquest.cpp b/src/mame/drivers/savquest.cpp
index 770b38343da..183f9d1a550 100644
--- a/src/mame/drivers/savquest.cpp
+++ b/src/mame/drivers/savquest.cpp
@@ -813,13 +813,14 @@ void savquest_isa16_cards(device_slot_interface &device)
}
MACHINE_CONFIG_START(savquest_state::savquest)
- PENTIUM2(config, m_maincpu, 450000000); // actually Pentium II 450
- m_maincpu->set_addrmap(AS_PROGRAM, &savquest_state::savquest_map);
- m_maincpu->set_addrmap(AS_IO, &savquest_state::savquest_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", PENTIUM2, 450000000) // actually Pentium II 450
+ MCFG_DEVICE_PROGRAM_MAP(savquest_map)
+ MCFG_DEVICE_IO_MAP(savquest_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
pcat_common(config);
- DS12885(config.replace(), "rtc");
+ MCFG_DEVICE_REMOVE("rtc")
+ MCFG_DS12885_ADD("rtc")
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
MCFG_PCI_BUS_LEGACY_DEVICE(0, DEVICE_SELF, savquest_state, intel82439tx_pci_r, intel82439tx_pci_w)
@@ -835,19 +836,18 @@ MACHINE_CONFIG_START(savquest_state::savquest)
/* sound hardware */
isa16_device &isa(ISA16(config, "isa", 0)); // FIXME: determine ISA bus clock
- isa.set_memspace("maincpu", AS_PROGRAM);
- isa.set_iospace("maincpu", AS_IO);
- ISA16_SLOT(config, "isa1", 0, "isa", savquest_isa16_cards, "sb16", false);
+ isa.set_cputag("maincpu");
+ MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "isa", savquest_isa16_cards, "sb16", false)
/* video hardware */
pcvideo_s3_vga(config);
- VOODOO_2(config, m_voodoo, STD_VOODOO_2_CLOCK);
- m_voodoo->set_fbmem(4);
- m_voodoo->set_tmumem(4, 4); /* this is the 12Mb card */
- m_voodoo->set_screen_tag("screen");
- m_voodoo->set_cpu_tag(m_maincpu);
- m_voodoo->vblank_callback().set(FUNC(savquest_state::vblank_assert));
+ MCFG_DEVICE_ADD("voodoo", VOODOO_2, STD_VOODOO_2_CLOCK)
+ MCFG_VOODOO_FBMEM(4)
+ MCFG_VOODOO_TMUMEM(4,4) /* this is the 12Mb card */
+ MCFG_VOODOO_SCREEN_TAG("screen")
+ MCFG_VOODOO_CPU_TAG("maincpu")
+ MCFG_VOODOO_VBLANK_CB(WRITELINE(*this, savquest_state,vblank_assert))
MACHINE_CONFIG_END
ROM_START( savquest )
diff --git a/src/mame/drivers/sbasketb.cpp b/src/mame/drivers/sbasketb.cpp
index 478c314e5fe..149426546b1 100644
--- a/src/mame/drivers/sbasketb.cpp
+++ b/src/mame/drivers/sbasketb.cpp
@@ -192,14 +192,14 @@ WRITE_LINE_MEMBER(sbasketb_state::vblank_irq)
m_maincpu->set_input_line(0, HOLD_LINE);
}
-void sbasketb_state::sbasketb(machine_config &config)
-{
+MACHINE_CONFIG_START(sbasketb_state::sbasketb)
+
/* basic machine hardware */
- KONAMI1(config, m_maincpu, 1400000); /* 1.400 MHz ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &sbasketb_state::sbasketb_map);
+ MCFG_DEVICE_ADD(m_maincpu, KONAMI1, 1400000) /* 1.400 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(sbasketb_map)
- Z80(config, m_audiocpu, XTAL(14'318'181) / 4); /* 3.5795 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &sbasketb_state::sbasketb_sound_map);
+ MCFG_DEVICE_ADD(m_audiocpu, Z80, XTAL(14'318'181) / 4) /* 3.5795 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sbasketb_sound_map)
ls259_device &mainlatch(LS259(config, "mainlatch")); // B3
mainlatch.q_out_cb<0>().set(FUNC(sbasketb_state::flipscreen_w)); // FLIP
@@ -213,14 +213,14 @@ void sbasketb_state::sbasketb(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(sbasketb_state::screen_update_sbasketb));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(sbasketb_state::vblank_irq));
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sbasketb_state, screen_update_sbasketb)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sbasketb_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sbasketb);
PALETTE(config, m_palette, FUNC(sbasketb_state::sbasketb_palette), 16*16+16*16*16, 256);
@@ -230,24 +230,24 @@ void sbasketb_state::sbasketb(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- TRACKFLD_AUDIO(config, m_soundbrd, 0, m_audiocpu, m_vlm);
+ MCFG_DEVICE_ADD(m_soundbrd, TRACKFLD_AUDIO, 0, m_audiocpu, m_vlm)
- DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD(m_dac, DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
- SN76489(config, m_sn, XTAL(14'318'181) / 8).add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD(m_sn, SN76489, XTAL(14'318'181) / 8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
- VLM5030(config, m_vlm, XTAL(3'579'545)).add_route(ALL_OUTPUTS, "speaker", 1.0); /* Schematics say 3.58MHz, but board uses 3.579545MHz xtal */
-}
+ MCFG_DEVICE_ADD(m_vlm, VLM5030, XTAL(3'579'545)) /* Schematics say 3.58MHz, but board uses 3.579545MHz xtal */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
-void sbasketb_state::sbasketbu(machine_config &config)
-{
+MACHINE_CONFIG_START(sbasketb_state::sbasketbu)
sbasketb(config);
- MC6809E(config.replace(), m_maincpu, 1400000); /* 6809E at 1.400 MHz ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &sbasketb_state::sbasketb_map);
-}
+ MCFG_DEVICE_REPLACE(m_maincpu, MC6809E, 1400000) /* 6809E at 1.400 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(sbasketb_map)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/sbc6510.cpp b/src/mame/drivers/sbc6510.cpp
index 10ef94c8412..6abb7f840ce 100644
--- a/src/mame/drivers/sbc6510.cpp
+++ b/src/mame/drivers/sbc6510.cpp
@@ -221,7 +221,7 @@ READ8_MEMBER( sbc6510_state::a2_r )
WRITE8_MEMBER( sbc6510_state::a2_w )
{
m_2 = data;
- m_terminal->write(data);
+ m_terminal->write(space, 0, data);
}
void sbc6510_state::machine_start()
diff --git a/src/mame/drivers/sbowling.cpp b/src/mame/drivers/sbowling.cpp
index dd915396b75..cbdb28da395 100644
--- a/src/mame/drivers/sbowling.cpp
+++ b/src/mame/drivers/sbowling.cpp
@@ -412,22 +412,21 @@ void sbowling_state::sbowling_palette(palette_device &palette) const
}
}
-void sbowling_state::sbowling(machine_config &config)
-{
- I8080(config, m_maincpu, XTAL(19'968'000)/10); /* ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &sbowling_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &sbowling_state::port_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(sbowling_state::interrupt), "screen", 0, 1);
+MACHINE_CONFIG_START(sbowling_state::sbowling)
+ MCFG_DEVICE_ADD("maincpu", I8080, XTAL(19'968'000)/10) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(port_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", sbowling_state, interrupt, "screen", 0, 1)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(32*8, 262); /* vert size taken from mw8080bw */
- screen.set_visarea(1*8, 31*8-1, 4*8, 32*8-1);
- screen.set_screen_update(FUNC(sbowling_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(32*8, 262) /* vert size taken from mw8080bw */
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sbowling_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_sbowling);
@@ -437,7 +436,7 @@ void sbowling_state::sbowling(machine_config &config)
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd", XTAL(19'968'000)/16).add_route(ALL_OUTPUTS, "mono", 0.33); /* ? */
-}
+MACHINE_CONFIG_END
ROM_START( sbowling )
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/sbrain.cpp b/src/mame/drivers/sbrain.cpp
index b197ddea568..647b624d74c 100644
--- a/src/mame/drivers/sbrain.cpp
+++ b/src/mame/drivers/sbrain.cpp
@@ -672,23 +672,21 @@ u32 sbrain_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, con
return 0;
}
-void sbrain_state::sbrain(machine_config &config)
-{
+MACHINE_CONFIG_START(sbrain_state::sbrain)
// basic machine hardware
- Z80(config, m_maincpu, 16_MHz_XTAL / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &sbrain_state::sbrain_mem);
- m_maincpu->set_addrmap(AS_IO, &sbrain_state::sbrain_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, 16_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(sbrain_mem)
+ MCFG_DEVICE_IO_MAP(sbrain_io)
- Z80(config, m_subcpu, 16_MHz_XTAL / 4);
- m_subcpu->set_addrmap(AS_PROGRAM, &sbrain_state::sbrain_submem);
- m_subcpu->set_addrmap(AS_IO, &sbrain_state::sbrain_subio);
+ MCFG_DEVICE_ADD("subcpu", Z80, 16_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(sbrain_submem)
+ MCFG_DEVICE_IO_MAP(sbrain_subio)
RAM(config, m_ram).set_default_size("64K").set_extra_options("32K");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_color(rgb_t::amber());
- screen.set_screen_update(FUNC(sbrain_state::screen_update));
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::amber())
+ MCFG_SCREEN_UPDATE_DRIVER(sbrain_state, screen_update)
DP8350(config, m_crtc, 10.92_MHz_XTAL).set_screen("screen"); // XTAL not directly connected
m_crtc->character_generator_program(1);
@@ -735,27 +733,26 @@ void sbrain_state::sbrain(machine_config &config)
FD1791(config, m_fdc, 16_MHz_XTAL / 16);
m_fdc->set_force_ready(true);
-
- FLOPPY_CONNECTOR(config, "fdc:0", sbrain_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", sbrain_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:2", sbrain_floppies, nullptr, floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:3", sbrain_floppies, nullptr, floppy_image_device::default_floppy_formats).enable_sound(true);
-
- TIMER(config, "timer_a", 0).configure_periodic(timer_device::expired_delegate(FUNC(sbrain_state::kbd_scan), this), attotime::from_hz(15));
-}
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", sbrain_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", sbrain_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:2", sbrain_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:3", sbrain_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_a", sbrain_state, kbd_scan, attotime::from_hz(15))
+MACHINE_CONFIG_END
ROM_START( sbrain )
ROM_REGION( 0x0800, "subcpu", ROMREGION_ERASEFF ) // only the second CPU has its own ROM
- ROM_SYSTEM_BIOS( 0, "4_2", "4.2")
- ROMX_LOAD("sbii_sb4_2.z69", 0x0000, 0x0800, CRC(89313e26) SHA1(755d494934099a4488abc44a8566c18d7d4fdea3), ROM_BIOS(0))
- ROM_SYSTEM_BIOS( 1, "4_003", "4.003" )
- ROMX_LOAD("4_003_vc8001.z69", 0x0000, 0x0800, CRC(3ce3cd53) SHA1(fb6ade6bd67de3d9f911a1a48481ca619bda65ae), ROM_BIOS(1))
- ROM_SYSTEM_BIOS( 2, "3_1", "3.1" )
- ROMX_LOAD("3_1.z69", 0x0000, 0x0800, CRC(b6a2e6a5) SHA1(a646faaecb9ac45ee1a42764628e8971524d5c13), ROM_BIOS(2))
- ROM_SYSTEM_BIOS( 3, "3_05", "3.05" )
- ROMX_LOAD("qd_3_05.z69", 0x0000, 0x0800, CRC(aedbe777) SHA1(9ee9ca3f05e11ceb80896f06c3a3ae352db214dc), ROM_BIOS(3))
- ROM_SYSTEM_BIOS( 4, "4_2_50", "4.2 (50Hz hack)")
- ROMX_LOAD("sbii_sb4_2_50hz.z69", 0x0000, 0x0800, CRC(285a894b) SHA1(694fef446fe19c0962f79951aa4d464489a9d161), ROM_BIOS(4))
+ ROM_SYSTEM_BIOS( 0, "4_003", "4.003" )
+ ROMX_LOAD("4_003_vc8001.z69", 0x0000, 0x0800, CRC(3ce3cd53) SHA1(fb6ade6bd67de3d9f911a1a48481ca619bda65ae), ROM_BIOS(0))
+ ROM_SYSTEM_BIOS( 1, "3_1", "3.1" )
+ ROMX_LOAD("3_1.z69", 0x0000, 0x0800, CRC(b6a2e6a5) SHA1(a646faaecb9ac45ee1a42764628e8971524d5c13), ROM_BIOS(1))
+ ROM_SYSTEM_BIOS( 2, "3_05", "3.05" )
+ ROMX_LOAD("qd_3_05.z69", 0x0000, 0x0800, CRC(aedbe777) SHA1(9ee9ca3f05e11ceb80896f06c3a3ae352db214dc), ROM_BIOS(2))
// Using the chargen from 'c10' for now.
ROM_REGION( 0x2000, "chargen", 0 )
ROM_LOAD("c10_char.bin", 0x0000, 0x2000, BAD_DUMP CRC(cb530b6f) SHA1(95590bbb433db9c4317f535723b29516b9b9fcbf))
diff --git a/src/mame/drivers/sbrkout.cpp b/src/mame/drivers/sbrkout.cpp
index 77bc57eea4e..9bfaeffec49 100644
--- a/src/mame/drivers/sbrkout.cpp
+++ b/src/mame/drivers/sbrkout.cpp
@@ -556,8 +556,8 @@ GFXDECODE_END
*
*************************************/
-void sbrkout_state::sbrkout(machine_config &config)
-{
+MACHINE_CONFIG_START(sbrkout_state::sbrkout)
+
/* basic machine hardware */
M6502(config, m_maincpu, MAIN_CLOCK/16); // 375 KHz? Should be 750KHz?
m_maincpu->set_addrmap(AS_PROGRAM, &sbrkout_state::main_map);
@@ -576,7 +576,7 @@ void sbrkout_state::sbrkout(machine_config &config)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_sbrkout);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sbrkout)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(MAIN_CLOCK/2, 384, 0, 256, 262, 0, 224);
@@ -588,8 +588,8 @@ void sbrkout_state::sbrkout(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.99);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, m_dac, 1.0, DAC_VREF_POS_INPUT);
-}
+ VOLTAGE_REGULATOR(config, "vref").set_output(5.0).add_route(0, m_dac, 1.0, DAC_VREF_POS_INPUT);
+MACHINE_CONFIG_END
void sbrkoutct_state::sbrkoutct(machine_config &config)
diff --git a/src/mame/drivers/sbugger.cpp b/src/mame/drivers/sbugger.cpp
index 52536def52d..377222f1d9e 100644
--- a/src/mame/drivers/sbugger.cpp
+++ b/src/mame/drivers/sbugger.cpp
@@ -123,8 +123,8 @@ void sbugger_state::sbugger_map(address_map &map)
void sbugger_state::sbugger_io_map(address_map &map)
{
map(0xe0, 0xe7).rw("i8156", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
- map(0xe8, 0xe8).w("sn76489.1", FUNC(sn76489_device::write));
- map(0xe9, 0xe9).w("sn76489.2", FUNC(sn76489_device::write));
+ map(0xe8, 0xe8).w("sn76489.1", FUNC(sn76489_device::command_w));
+ map(0xe9, 0xe9).w("sn76489.2", FUNC(sn76489_device::command_w));
}
@@ -214,11 +214,11 @@ INPUT_PORTS_END
/* machine driver */
-void sbugger_state::sbugger(machine_config &config)
-{
- I8085A(config, m_maincpu, 6000000); /* 3.00 MHz??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &sbugger_state::sbugger_map);
- m_maincpu->set_addrmap(AS_IO, &sbugger_state::sbugger_io_map);
+MACHINE_CONFIG_START(sbugger_state::sbugger)
+
+ MCFG_DEVICE_ADD("maincpu", I8085A, 6000000) /* 3.00 MHz??? */
+ MCFG_DEVICE_PROGRAM_MAP(sbugger_map)
+ MCFG_DEVICE_IO_MAP(sbugger_io_map)
i8156_device &i8156(I8156(config, "i8156", 200000)); /* freq is an approximation */
i8156.in_pa_callback().set_ioport("INPUTS");
@@ -226,25 +226,27 @@ void sbugger_state::sbugger(machine_config &config)
i8156.in_pc_callback().set_ioport("DSW2");
i8156.out_to_callback().set_inputline(m_maincpu, I8085_RST75_LINE);
- GFXDECODE(config, m_gfxdecode, "palette", gfx_sbugger);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sbugger)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(sbugger_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sbugger_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(sbugger_state::sbugger_palette), 512);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489(config, "sn76489.1", 3000000).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("sn76489.1", SN76489, 3000000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- SN76489(config, "sn76489.2", 3000000).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("sn76489.2", SN76489, 3000000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/* rom loading */
diff --git a/src/mame/drivers/sc1.cpp b/src/mame/drivers/sc1.cpp
new file mode 100644
index 00000000000..55772bc1337
--- /dev/null
+++ b/src/mame/drivers/sc1.cpp
@@ -0,0 +1,190 @@
+// license:BSD-3-Clause
+// copyright-holders:Sandro Ronco
+/***************************************************************************
+
+Schachcomputer SC1
+
+2009-05-12 Skeleton driver.
+
+ToDo:
+- speaker
+- LEDs
+- 7seg sometimes flashes
+
+
+****************************************************************************/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "machine/z80pio.h"
+#include "sound/spkrdev.h"
+#include "speaker.h"
+
+#include "sc1.lh"
+
+
+class sc1_state : public driver_device
+{
+public:
+ sc1_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_speaker(*this, "speaker")
+ , m_digits(*this, "digit%u", 0U)
+ { }
+
+ void sc1(machine_config &config);
+
+private:
+ DECLARE_WRITE8_MEMBER( matrix_w );
+ DECLARE_WRITE8_MEMBER( pio_port_a_w );
+ DECLARE_READ8_MEMBER( pio_port_b_r );
+
+ void sc1_io(address_map &map);
+ void sc1_mem(address_map &map);
+
+ uint8_t m_matrix;
+ virtual void machine_start() override { m_digits.resolve(); }
+ required_device<cpu_device> m_maincpu;
+ required_device<speaker_sound_device> m_speaker;
+ output_finder<4> m_digits;
+};
+
+/***************************************************************************
+
+ Display
+
+***************************************************************************/
+
+WRITE8_MEMBER( sc1_state::pio_port_a_w )
+{
+ uint8_t digit = bitswap<8>( data,3,4,6,0,1,2,7,5 ) & 0x7f;
+
+ if (m_matrix & 0x04)
+ m_digits[3] = digit;
+ if (m_matrix & 0x08)
+ m_digits[2] = digit;
+ if (m_matrix & 0x10)
+ m_digits[1] = digit;
+ if (m_matrix & 0x20)
+ m_digits[0] = digit;
+}
+
+
+/***************************************************************************
+
+ Keyboard
+
+***************************************************************************/
+
+WRITE8_MEMBER( sc1_state::matrix_w )
+{
+ m_matrix = data;
+}
+
+READ8_MEMBER( sc1_state::pio_port_b_r )
+{
+ uint8_t data = 0;
+
+ if (m_matrix & 0x01)
+ data |= ioport("LINE1")->read();
+ if (m_matrix & 0x02)
+ data |= ioport("LINE2")->read();
+ if (m_matrix & 0x04)
+ data |= ioport("LINE3")->read();
+ if (m_matrix & 0x08)
+ data |= ioport("LINE4")->read();
+ if (m_matrix & 0x10)
+ data |= ioport("LINE5")->read();
+ if (m_matrix & 0x20)
+ data |= ioport("LINE6")->read();
+ if (m_matrix & 0x40)
+ data |= ioport("LINE7")->read();
+ if (m_matrix & 0x80)
+ data |= ioport("LINE8")->read();
+
+ return data;
+}
+
+
+void sc1_state::sc1_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom();
+ map(0x4000, 0x43ff).ram();
+}
+
+void sc1_state::sc1_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x80, 0x83).rw("z80pio", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0xfc, 0xfc).w(FUNC(sc1_state::matrix_w));
+}
+
+/* Input ports */
+static INPUT_PORTS_START( sc1 )
+ PORT_START("LINE1")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_D)
+
+ PORT_START("LINE2")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_B)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_F)
+
+ PORT_START("LINE3")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_C)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_G)
+
+ PORT_START("LINE4")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_A)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_E)
+
+ PORT_START("LINE5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_H)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CE") PORT_CODE(KEYCODE_DEL)
+
+ PORT_START("LINE6")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("K") PORT_CODE(KEYCODE_K)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER)
+
+ PORT_START("LINE7")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("P") PORT_CODE(KEYCODE_O)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("W/S") PORT_CODE(KEYCODE_W)
+
+ PORT_START("LINE8")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("T") PORT_CODE(KEYCODE_T)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C") PORT_CODE(KEYCODE_M)
+INPUT_PORTS_END
+
+
+MACHINE_CONFIG_START(sc1_state::sc1)
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(sc1_mem)
+ MCFG_DEVICE_IO_MAP(sc1_io)
+
+ /* video hardware */
+ config.set_default_layout(layout_sc1);
+
+ /* devices */
+ z80pio_device& pio(Z80PIO(config, "z80pio", XTAL(4'000'000)));
+ pio.out_pa_callback().set(FUNC(sc1_state::pio_port_a_w));
+ pio.in_pb_callback().set(FUNC(sc1_state::pio_port_b_r));
+
+ /* sound hardware */
+ SPEAKER(config, "mono").front_center();
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
+
+/* ROM definition */
+ROM_START( sc1 )
+ ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
+ ROM_LOAD( "sc1.rom", 0x0000, 0x1000, CRC(26965b23) SHA1(01568911446eda9f05ec136df53da147b7c6f2bf))
+ROM_END
+
+/* Driver */
+
+// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
+COMP( 1989, sc1, 0, 0, sc1, sc1, sc1_state, empty_init, "VEB Mikroelektronik Erfurt", "Schachcomputer SC1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/sc2.cpp b/src/mame/drivers/sc2.cpp
index a6bacd50ea2..abe351f6cd7 100644
--- a/src/mame/drivers/sc2.cpp
+++ b/src/mame/drivers/sc2.cpp
@@ -2,107 +2,67 @@
// copyright-holders:Sandro Ronco
/***************************************************************************
-Schachcomputer SC 2 driver
+ Schachcomputer SC2
-VEB Mikroelektronik's 2nd chess computer. The chess program is based on
-Fidelity Chess Challenger 10(C?).
+ Note:
+ The HW is very similar to Fidelity Chess Challenger series (see fidelz80.c)
-3 versions known: initial version, revision E, revision EP.
-
-Schachcomputer SC 1 was canceled before wide release, it's assumed to
-be on similar hardware(but PCB photos show 10 ROM chips instead of 9).
-
-keypad legend:
-
-R - Rückstellen (reset)
-K - Programmstufen (level)
-W - Figurenwahl (white/black)
-P - Problemeingabe (problem mode)
-T - Tonabschaltung (sound on/off)
-L - Löschen (clear)
-Q - Quittierung (enter)
-
-Fidelity CC10 synonyms: RE, LV, RV, PB, ♪, CL, EN
+ 12/05/2009 Skeleton driver.
****************************************************************************/
#include "emu.h"
#include "cpu/z80/z80.h"
+#include "sound/beep.h"
#include "machine/z80pio.h"
-#include "sound/dac.h"
-#include "sound/volt_reg.h"
#include "speaker.h"
#include "sc2.lh"
-
-namespace {
-
class sc2_state : public driver_device
{
public:
- sc2_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
+ sc2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_beep(*this, "beeper"),
m_maincpu(*this, "maincpu"),
- m_pio(*this, "z80pio"),
- m_dac(*this, "dac"),
- m_keypad(*this, "LINE%u", 1),
m_digits(*this, "digit%u", 0U),
m_leds(*this, "led%u", 0U)
{ }
void sc2(machine_config &config);
- // Rückstellen is also tied to CPU RESET
- DECLARE_INPUT_CHANGED_MEMBER(reset_button) { m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE); }
-
-protected:
- virtual void machine_start() override;
-
private:
- required_device<cpu_device> m_maincpu;
- required_device<z80pio_device> m_pio;
- required_device<dac_bit_interface> m_dac;
- required_ioport_array<4> m_keypad;
-
- output_finder<4> m_digits;
- output_finder<2> m_leds;
-
- void sc2_io(address_map &map);
- void sc2_mem(address_map &map);
-
+ DECLARE_READ8_MEMBER(pio_port_a_r);
+ DECLARE_READ8_MEMBER(pio_port_b_r);
+ DECLARE_WRITE8_MEMBER(pio_port_a_w);
+ DECLARE_WRITE8_MEMBER(pio_port_b_w);
+ DECLARE_READ8_MEMBER(sc2_beep);
uint8_t m_kp_matrix;
+ uint8_t m_led_7seg_data[4];
uint8_t m_led_selected;
uint8_t m_digit_data;
-
+ uint8_t m_beep_state;
void sc2_update_display();
- DECLARE_READ8_MEMBER(pio_port_b_r);
- DECLARE_WRITE8_MEMBER(pio_port_a_w);
- DECLARE_WRITE8_MEMBER(pio_port_b_w);
- DECLARE_READ8_MEMBER(speaker_w);
- template<int State> DECLARE_READ8_MEMBER(speaker_w);
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+ void sc2_io(address_map &map);
+ void sc2_mem(address_map &map);
+
+ required_device<beep_device> m_beep;
+ required_device<cpu_device> m_maincpu;
+ output_finder<4> m_digits;
+ output_finder<2> m_leds;
};
-void sc2_state::machine_start()
+READ8_MEMBER( sc2_state::sc2_beep )
{
- m_digits.resolve();
- m_leds.resolve();
-
- m_kp_matrix = 0;
- m_led_selected = 0;
- m_digit_data = 0;
-
- save_item(NAME(m_kp_matrix));
- save_item(NAME(m_led_selected));
- save_item(NAME(m_digit_data));
-}
-
+ //if (!machine().side_effects_disabled())
+ {
+ m_beep_state = ~m_beep_state;
-template<int State>
-READ8_MEMBER(sc2_state::speaker_w)
-{
- if (!machine().side_effects_disabled())
- m_dac->write(State);
+ m_beep->set_state(m_beep_state);
+ }
return 0xff;
}
@@ -113,55 +73,136 @@ void sc2_state::sc2_mem(address_map &map)
map(0x0000, 0x0fff).rom();
map(0x1000, 0x13ff).ram();
map(0x2000, 0x33ff).rom();
- map(0x3400, 0x3400).r(FUNC(sc2_state::speaker_w<1>));
- map(0x3c00, 0x3c00).r(FUNC(sc2_state::speaker_w<0>));
+ map(0x3c00, 0x3c00).r(FUNC(sc2_state::sc2_beep));
}
void sc2_state::sc2_io(address_map &map)
{
map.unmap_value_high();
map.global_mask(0xff);
- map(0x00, 0x03).mirror(0xfc).rw(m_pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x00, 0x03).mirror(0xfc).rw("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+}
+
+/* Input ports */
+static INPUT_PORTS_START( sc2 )
+ PORT_START("LINE1")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("T") PORT_CODE(KEYCODE_T)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("L") PORT_CODE(KEYCODE_L)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q)
+
+ PORT_START("LINE2")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4)
+
+ PORT_START("LINE3")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8)
+
+ PORT_START("LINE4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("K") PORT_CODE(KEYCODE_K)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("W") PORT_CODE(KEYCODE_W)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("R") PORT_CODE(KEYCODE_R)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("P") PORT_CODE(KEYCODE_O)
+INPUT_PORTS_END
+
+void sc2_state::machine_start()
+{
+ m_digits.resolve();
+ m_leds.resolve();
+
+ save_item(NAME(m_led_7seg_data));
+ save_item(NAME(m_kp_matrix));
+ save_item(NAME(m_led_selected));
+ save_item(NAME(m_digit_data));
+ save_item(NAME(m_beep_state));
}
+void sc2_state::machine_reset()
+{
+ m_kp_matrix = 0;
+ m_led_selected = 0;
+ m_digit_data = 0;
+ m_beep_state = 0;
+ memset(m_led_7seg_data, 0, ARRAY_LENGTH(m_led_7seg_data));
+}
void sc2_state::sc2_update_display()
{
- // latch display data
- for (int i = 0; i < 4; i++)
+ uint8_t digit_data = bitswap<8>( m_digit_data,7,0,1,2,3,4,5,6 ) & 0x7f;
+
+ if (!BIT(m_led_selected, 0))
{
- if (!BIT(m_led_selected, i))
- {
- m_digits[i] = m_digit_data & 0x7f;
-
- // schach/matt leds
- if (i < 2)
- m_leds[i] = BIT(m_digit_data, 7);
- }
+ m_digits[0] = digit_data;
+ m_led_7seg_data[0] = digit_data;
+
+ m_leds[0] = BIT(m_digit_data, 7);
+ }
+
+ if (!BIT(m_led_selected, 1))
+ {
+ m_digits[1] = digit_data;
+ m_led_7seg_data[1] = digit_data;
+
+ m_leds[1] = BIT(m_digit_data, 7);
+ }
+
+ if (!BIT(m_led_selected, 2))
+ {
+ m_digits[2] = digit_data;
+ m_led_7seg_data[2] = digit_data;
+ }
+
+ if (!BIT(m_led_selected, 3))
+ {
+ m_digits[3] = digit_data;
+ m_led_7seg_data[3] = digit_data;
}
}
-READ8_MEMBER(sc2_state::pio_port_b_r)
+READ8_MEMBER( sc2_state::pio_port_a_r )
{
- uint8_t data = 0x0f;
+ return m_digit_data;
+}
+
+READ8_MEMBER( sc2_state::pio_port_b_r )
+{
+ uint8_t data = m_led_selected & 0x0f;
+
+ if (BIT(m_kp_matrix, 0))
+ {
+ data |= ioport("LINE1")->read();
+ }
+
+ if (BIT(m_kp_matrix, 1))
+ {
+ data |= ioport("LINE2")->read();
+ }
+
+ if (BIT(m_kp_matrix, 2))
+ {
+ data |= ioport("LINE3")->read();
+ }
- // read keypad matrix
- for (int i = 0; i < 4; i++)
- if (BIT(m_kp_matrix, i))
- data |= m_keypad[i]->read();
+ if (BIT(m_kp_matrix, 3))
+ {
+ data |= ioport("LINE4")->read();
+ }
return data;
}
-WRITE8_MEMBER(sc2_state::pio_port_a_w)
+WRITE8_MEMBER( sc2_state::pio_port_a_w )
{
- // digit segment data
- m_digit_data = bitswap<8>(data,7,0,1,2,3,4,5,6);
+ m_digit_data = data;
}
-WRITE8_MEMBER(sc2_state::pio_port_b_w)
+WRITE8_MEMBER( sc2_state::pio_port_b_w )
{
- // d0-d3: keypad mux(active high), led mux(active low)
if (data != 0xf1 && data != 0xf2 && data != 0xf4 && data != 0xf8)
{
m_led_selected = data;
@@ -171,94 +212,44 @@ WRITE8_MEMBER(sc2_state::pio_port_b_w)
m_kp_matrix = data;
}
-
-/* Input ports */
-
-static INPUT_PORTS_START( sc2 )
- PORT_START("LINE1")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("T") PORT_CODE(KEYCODE_T)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
-
- PORT_START("LINE2")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_A)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D)
-
- PORT_START("LINE3")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_E)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H)
-
- PORT_START("LINE4")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("K") PORT_CODE(KEYCODE_K)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("W") PORT_CODE(KEYCODE_W)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, sc2_state, reset_button, nullptr)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("P") PORT_CODE(KEYCODE_O)
-INPUT_PORTS_END
-
-
-/* Machine config */
-
-void sc2_state::sc2(machine_config &config)
-{
+MACHINE_CONFIG_START(sc2_state::sc2)
/* basic machine hardware */
- Z80(config, m_maincpu, 9.8304_MHz_XTAL/4); // U880 Z80 clone
- m_maincpu->set_addrmap(AS_PROGRAM, &sc2_state::sc2_mem);
- m_maincpu->set_addrmap(AS_IO, &sc2_state::sc2_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(sc2_mem)
+ MCFG_DEVICE_IO_MAP(sc2_io)
+
/* video hardware */
config.set_default_layout(layout_sc2);
/* devices */
- Z80PIO(config, m_pio, 9.8304_MHz_XTAL/4);
- m_pio->out_pa_callback().set(FUNC(sc2_state::pio_port_a_w));
- m_pio->in_pb_callback().set(FUNC(sc2_state::pio_port_b_r));
- m_pio->out_pb_callback().set(FUNC(sc2_state::pio_port_b_w));
+ z80pio_device& pio(Z80PIO(config, "z80pio", XTAL(4'000'000)));
+ pio.in_pa_callback().set(FUNC(sc2_state::pio_port_a_r));
+ pio.out_pa_callback().set(FUNC(sc2_state::pio_port_a_w));
+ pio.in_pb_callback().set(FUNC(sc2_state::pio_port_b_r));
+ pio.out_pb_callback().set(FUNC(sc2_state::pio_port_b_w));
/* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
-
+ SPEAKER(config, "mono").front_center();
+ MCFG_DEVICE_ADD( "beeper", BEEP, 3250 )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 0.50 )
+MACHINE_CONFIG_END
/* ROM definition */
-
ROM_START( sc2 )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "bm008.bin", 0x0000, 0x0400, CRC(3023ea82) SHA1(07020d153d802c672c39e1af3c716dbe35e23f08) )
- ROM_LOAD( "bm009.bin", 0x0400, 0x0400, CRC(6a34814e) SHA1(e58ae6615297b028db135a48a8f9e186a4220f4f) )
- ROM_LOAD( "bm010.bin", 0x0800, 0x0400, CRC(deab0373) SHA1(81c9a7197eef8d9131e47ecd2ec35b943caee54e) )
- ROM_LOAD( "bm011.bin", 0x0c00, 0x0400, CRC(c8282339) SHA1(8d6b8861281e967a77609b6d77e80afd47d28ed2) )
- ROM_LOAD( "bm012.bin", 0x2000, 0x0400, CRC(2e6a4294) SHA1(7b9bd191c9ec73139a65c3a339ab88e1f3eb5ed2) )
- ROM_LOAD( "bm013.bin", 0x2400, 0x0400, CRC(3e02eb42) SHA1(2e4a9a8fd04c202c9518550d7e8cf9bfea394153) )
- ROM_LOAD( "bm014.bin", 0x2800, 0x0400, CRC(538d449e) SHA1(c4186995b69e97740e01eaff84a20d49d03d180f) )
- ROM_LOAD( "bm015.bin", 0x2c00, 0x0400, CRC(b4991dca) SHA1(6a6cdddf5c4afa24773acf693f58c34b99c8d328) )
- ROM_LOAD( "bm037.bin", 0x3000, 0x0400, CRC(2b67faf1) SHA1(5c65734acaeb766240dbd492a774c56fcfc382f7) )
+ ROM_LOAD( "bm008.bin", 0x0000, 0x0400, CRC(3023ea82) SHA1(07020d153d802c672c39e1af3c716dbe35e23f08))
+ ROM_LOAD( "bm009.bin", 0x0400, 0x0400, CRC(6a34814e) SHA1(e58ae6615297b028db135a48a8f9e186a4220f4f))
+ ROM_LOAD( "bm010.bin", 0x0800, 0x0400, CRC(deab0373) SHA1(81c9a7197eef8d9131e47ecd2ec35b943caee54e))
+ ROM_LOAD( "bm011.bin", 0x0c00, 0x0400, CRC(c8282339) SHA1(8d6b8861281e967a77609b6d77e80afd47d28ed2))
+ ROM_LOAD( "bm012.bin", 0x2000, 0x0400, CRC(2e6a4294) SHA1(7b9bd191c9ec73139a65c3a339ab88e1f3eb5ed2))
+ ROM_LOAD( "bm013.bin", 0x2400, 0x0400, CRC(3e02eb42) SHA1(2e4a9a8fd04c202c9518550d7e8cf9bfea394153))
+ ROM_LOAD( "bm014.bin", 0x2800, 0x0400, CRC(538d449e) SHA1(c4186995b69e97740e01eaff84a20d49d03d180f))
+ ROM_LOAD( "bm015.bin", 0x2c00, 0x0400, CRC(b4991dca) SHA1(6a6cdddf5c4afa24773acf693f58c34b99c8d328))
+ ROM_LOAD( "bm016.bin", 0x3000, 0x0400, CRC(4fe0853a) SHA1(c2253e320778b0ea468fb54f26ae83d07f9700e6))
ROM_END
-ROM_START( sc2a )
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "bm008.bin", 0x0000, 0x0400, CRC(3023ea82) SHA1(07020d153d802c672c39e1af3c716dbe35e23f08) )
- ROM_LOAD( "bm009.bin", 0x0400, 0x0400, CRC(6a34814e) SHA1(e58ae6615297b028db135a48a8f9e186a4220f4f) )
- ROM_LOAD( "bm010.bin", 0x0800, 0x0400, CRC(deab0373) SHA1(81c9a7197eef8d9131e47ecd2ec35b943caee54e) )
- ROM_LOAD( "bm011.bin", 0x0c00, 0x0400, CRC(c8282339) SHA1(8d6b8861281e967a77609b6d77e80afd47d28ed2) )
- ROM_LOAD( "bm012.bin", 0x2000, 0x0400, CRC(2e6a4294) SHA1(7b9bd191c9ec73139a65c3a339ab88e1f3eb5ed2) )
- ROM_LOAD( "bm013.bin", 0x2400, 0x0400, CRC(3e02eb42) SHA1(2e4a9a8fd04c202c9518550d7e8cf9bfea394153) )
- ROM_LOAD( "bm014.bin", 0x2800, 0x0400, CRC(538d449e) SHA1(c4186995b69e97740e01eaff84a20d49d03d180f) )
- ROM_LOAD( "bm015.bin", 0x2c00, 0x0400, CRC(b4991dca) SHA1(6a6cdddf5c4afa24773acf693f58c34b99c8d328) )
- ROM_LOAD( "bm016.bin", 0x3000, 0x0400, CRC(4fe0853a) SHA1(c2253e320778b0ea468fb54f26ae83d07f9700e6) )
-ROM_END
-
-} // anonymous namespace
-
-
/* Driver */
-// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
-COMP( 1981, sc2, 0, 0, sc2, sc2, sc2_state, empty_init, "VEB Mikroelektronik Erfurt", "Schachcomputer SC 2 (rev. E)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-COMP( 1981, sc2a, sc2, 0, sc2, sc2, sc2_state, empty_init, "VEB Mikroelektronik Erfurt", "Schachcomputer SC 2", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
+COMP( 1981, sc2, 0, 0, sc2, sc2, sc2_state, empty_init, "VEB Mikroelektronik Erfurt", "Schachcomputer SC2", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/scm_500.cpp b/src/mame/drivers/scm_500.cpp
index ad16a0e2c57..7983f6482e3 100644
--- a/src/mame/drivers/scm_500.cpp
+++ b/src/mame/drivers/scm_500.cpp
@@ -40,10 +40,11 @@ void scm_500_state::machine_reset()
{
}
-void scm_500_state::scm_500(machine_config &config)
-{
+MACHINE_CONFIG_START(scm_500_state::scm_500)
+
// unknown CPU
-}
+
+MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/scobra.cpp b/src/mame/drivers/scobra.cpp
index f3783395f76..3dc34b18c06 100644
--- a/src/mame/drivers/scobra.cpp
+++ b/src/mame/drivers/scobra.cpp
@@ -866,16 +866,16 @@ static INPUT_PORTS_START( mimonsco )
INPUT_PORTS_END
-void scobra_state::type1(machine_config &config)
-{
+MACHINE_CONFIG_START(scobra_state::type1)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 18432000/6); /* 3.072 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &scobra_state::type1_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(type1_map)
- Z80(config, m_audiocpu, 14318000/8); /* 1.78975 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &scobra_state::scobra_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &scobra_state::scobra_sound_io_map);
- m_audiocpu->set_irq_acknowledge_callback(FUNC(scramble_state::scramble_sh_irq_callback));
+ MCFG_DEVICE_ADD("audiocpu", Z80,14318000/8) /* 1.78975 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(scobra_sound_map)
+ MCFG_DEVICE_IO_MAP(scobra_sound_io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(scramble_state,scramble_sh_irq_callback)
ttl7474_device &konami_7474(TTL7474(config, "konami_7474", 0));
konami_7474.comp_output_cb().set(FUNC(scobra_state::scramble_sh_7474_q_callback));
@@ -897,18 +897,18 @@ void scobra_state::type1(machine_config &config)
ttl7474_device &ttl7474_9m_2(TTL7474(config, "7474_9m_2", 0));
ttl7474_9m_2.comp_output_cb().set(FUNC(scobra_state::galaxold_7474_9m_2_q_callback));
- TIMER(config, "int_timer").configure_generic(FUNC(scobra_state::galaxold_interrupt_timer));
+ MCFG_TIMER_DRIVER_ADD("int_timer", scobra_state, galaxold_interrupt_timer)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(16000.0/132/2);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(scobra_state::screen_update_galaxold));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(16000.0/132/2)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(scobra_state, screen_update_galaxold)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, "gfxdecode", m_palette, gfx_scobra);
PALETTE(config, m_palette, FUNC(scobra_state::scrambold_palette), 32+64+2+1); // 32 for characters, 64 for stars, 2 for bullets, 1 for background
@@ -926,14 +926,13 @@ void scobra_state::type1(machine_config &config)
ay2.port_a_read_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read));
ay2.port_b_read_callback().set(FUNC(scramble_state::scramble_portB_r));
ay2.add_route(ALL_OUTPUTS, "mono", 0.16);
-}
+MACHINE_CONFIG_END
/* Rescue, Minefield and Strategy X have extra colors, and custom video initialise */
/* routines to set up the graduated color backgound they use */
-void scobra_state::rescue(machine_config &config)
-{
+MACHINE_CONFIG_START(scobra_state::rescue)
type1(config);
/* basic machine hardware */
@@ -943,14 +942,14 @@ void scobra_state::rescue(machine_config &config)
m_palette->set_init(FUNC(scobra_state::rescue_palette));
MCFG_VIDEO_START_OVERRIDE(scobra_state,rescue)
-}
+MACHINE_CONFIG_END
-void scobra_state::rescuefe(machine_config &config)
-{
+MACHINE_CONFIG_START(scobra_state::rescuefe)
rescue(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &scobra_state::rescuefe_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(rescuefe_map)
+MACHINE_CONFIG_END
void scobra_state::rescueb(machine_config &config)
{
@@ -959,55 +958,55 @@ void scobra_state::rescueb(machine_config &config)
}
-void scobra_state::minefld(machine_config &config)
-{
+MACHINE_CONFIG_START(scobra_state::minefld)
type1(config);
+ /* basic machine hardware */
+
/* video hardware */
m_palette->set_entries(32+64+2+256); // 32 for characters, 64 for stars, 2 for bullets, 256 for background
m_palette->set_init(FUNC(scobra_state::minefld_palette));
MCFG_VIDEO_START_OVERRIDE(scobra_state,minefld)
-}
+MACHINE_CONFIG_END
-void scobra_state::minefldfe(machine_config &config)
-{
+MACHINE_CONFIG_START(scobra_state::minefldfe)
minefld(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &scobra_state::minefldfe_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(minefldfe_map)
+MACHINE_CONFIG_END
-void scobra_state::mimonkey(machine_config &config)
-{
+MACHINE_CONFIG_START(scobra_state::mimonkey)
type1(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &scobra_state::mimonkey_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mimonkey_map)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(scobra_state,mimonkey)
-}
+MACHINE_CONFIG_END
-void scobra_state::type2(machine_config &config)
-{
+MACHINE_CONFIG_START(scobra_state::type2)
type1(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &scobra_state::type2_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(type2_map)
+MACHINE_CONFIG_END
-void scobra_state::tazmani3(machine_config &config)
-{
+MACHINE_CONFIG_START(scobra_state::tazmani3)
type2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &scobra_state::tazmani3_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tazmani3_map)
+MACHINE_CONFIG_END
-void scobra_state::stratgyx(machine_config &config)
-{
+MACHINE_CONFIG_START(scobra_state::stratgyx)
type2(config);
/* basic machine hardware */
@@ -1021,31 +1020,32 @@ void scobra_state::stratgyx(machine_config &config)
m_palette->set_init(FUNC(scobra_state::stratgyx_palette));
MCFG_VIDEO_START_OVERRIDE(scobra_state,stratgyx)
-}
+MACHINE_CONFIG_END
-void scobra_state::darkplnt(machine_config &config)
-{
+MACHINE_CONFIG_START(scobra_state::darkplnt)
type2(config);
+ /* basic machine hardware */
+
/* video hardware */
m_palette->set_entries(32+64+2); // 32 for characters, 64 (buffer) for stars, 2 for bullets
m_palette->set_init(FUNC(scobra_state::darkplnt_palette));
MCFG_VIDEO_START_OVERRIDE(scobra_state,darkplnt)
-}
+MACHINE_CONFIG_END
-void scobra_state::hustler(machine_config &config)
-{
+MACHINE_CONFIG_START(scobra_state::hustler)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 18432000/6); /* 3.072 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &scobra_state::hustler_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(hustler_map)
- Z80(config, m_audiocpu, 14318000/8); /* 1.78975 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &scobra_state::hustler_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &scobra_state::hustler_sound_io_map);
- m_audiocpu->set_irq_acknowledge_callback(FUNC(scramble_state::scramble_sh_irq_callback));
+ MCFG_DEVICE_ADD("audiocpu",Z80,14318000/8) /* 1.78975 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(hustler_sound_map)
+ MCFG_DEVICE_IO_MAP(hustler_sound_io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(scramble_state,scramble_sh_irq_callback)
ttl7474_device &konami_7474(TTL7474(config, "konami_7474", 0));
konami_7474.comp_output_cb().set(FUNC(scobra_state::scramble_sh_7474_q_callback));
@@ -1058,7 +1058,7 @@ void scobra_state::hustler(machine_config &config)
ttl7474_device &ttl7474_9m_2(TTL7474(config, "7474_9m_2", 0));
ttl7474_9m_2.comp_output_cb().set(FUNC(scobra_state::galaxold_7474_9m_2_q_callback));
- TIMER(config, "int_timer").configure_generic(FUNC(scobra_state::galaxold_interrupt_timer));
+ MCFG_TIMER_DRIVER_ADD("int_timer", scobra_state, galaxold_interrupt_timer)
WATCHDOG_TIMER(config, "watchdog");
@@ -1072,13 +1072,13 @@ void scobra_state::hustler(machine_config &config)
m_ppi8255_1->out_pb_callback().set(FUNC(scramble_state::scramble_sh_irqtrigger_w));
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(16000.0/132/2);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(scobra_state::screen_update_galaxold));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(16000.0/132/2)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(scobra_state, screen_update_galaxold)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", m_palette, gfx_scobra);
PALETTE(config, m_palette, FUNC(scobra_state::galaxold_palette), 32+64+2); // 32 for characters, 64 for stars, 2 for bullets
@@ -1093,26 +1093,27 @@ void scobra_state::hustler(machine_config &config)
aysnd.port_a_read_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read));
aysnd.port_b_read_callback().set(FUNC(scramble_state::hustler_portB_r));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.33);
-}
+MACHINE_CONFIG_END
-void scobra_state::hustlerb(machine_config &config)
-{
+MACHINE_CONFIG_START(scobra_state::hustlerb)
hustler(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &scobra_state::hustlerb_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hustlerb_map)
- m_audiocpu->set_addrmap(AS_PROGRAM, &scobra_state::hustlerb_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &scobra_state::hustlerb_sound_io_map);
-}
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(hustlerb_sound_map)
+ MCFG_DEVICE_IO_MAP(hustlerb_sound_io_map)
+MACHINE_CONFIG_END
-void scobra_state::hustlerb4(machine_config &config)
-{
+MACHINE_CONFIG_START(scobra_state::hustlerb4)
hustler(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &scobra_state::hustlerb_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hustlerb_map)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/scopus.cpp b/src/mame/drivers/scopus.cpp
index 95b35269492..4a3fc845596 100644
--- a/src/mame/drivers/scopus.cpp
+++ b/src/mame/drivers/scopus.cpp
@@ -173,13 +173,13 @@ READ8_MEMBER(sagitta180_state::memory_read_byte)
return prog_space.read_byte(offset);
}
-void sagitta180_state::sagitta180(machine_config &config)
-{
+MACHINE_CONFIG_START(sagitta180_state::sagitta180)
+
/* basic machine hardware */
- I8080(config, m_maincpu, XTAL(10'000'000)); /* guessed ! */
- m_maincpu->set_addrmap(AS_PROGRAM, &sagitta180_state::maincpu_map);
- m_maincpu->set_addrmap(AS_IO, &sagitta180_state::maincpu_io_map);
-// m_maincpu->set_irq_acknowledge_callback("intlatch", FUNC(i8212_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I8080, XTAL(10'000'000)) /* guessed ! */
+ MCFG_DEVICE_PROGRAM_MAP(maincpu_map)
+ MCFG_DEVICE_IO_MAP(maincpu_io_map)
+// MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("intlatch", i8212_device, inta_cb)
I8257(config, m_dma8257, XTAL(14'745'600)); /* guessed xtal */
m_dma8257->out_iow_cb<2>().set("crtc", FUNC(i8275_device::dack_w));
@@ -200,29 +200,29 @@ void sagitta180_state::sagitta180(machine_config &config)
uart_clock.signal_handler().set("uart", FUNC(i8251_device::write_txc));
uart_clock.signal_handler().append("uart", FUNC(i8251_device::write_rxc));
-// i8212_device &intlatch(I8212(config, "intlatch", 0));
-// intlatch.md_rd_callback().set_constant(GND); // guessed !
-// intlatch.di_rd_callback().set("picu", FUNC(i8214_device::vector_r));
-// intlatch.int_wr_callback().set_inputline("maincpu", I8085_INTR_LINE); // guessed !
+// MCFG_DEVICE_ADD("intlatch", I8212, 0)
+// MCFG_I8212_MD_CALLBACK(GND) // guessed !
+// MCFG_I8212_DI_CALLBACK(READ8("picu", i8214_device, vector_r))
+// MCFG_I8212_INT_CALLBACK(INPUTLINE("maincpu", I8085_INTR_LINE)) // guessed !
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update("crtc", FUNC(i8275_device::screen_update));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(80*5, 25*8);
- screen.set_visarea(0, 80*5-1, 0, 25*8-1);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_sagitta180);
-
- I8275(config, m_crtc, 12480000 / 8); /* guessed xtal */
- m_crtc->set_character_width(8);
- m_crtc->set_display_callback(FUNC(sagitta180_state::crtc_display_pixels), this);
- m_crtc->drq_wr_callback().set(m_dma8257, FUNC(i8257_device::dreq2_w));
- m_crtc->irq_wr_callback().set_inputline(m_maincpu, I8085_INTR_LINE);
- m_crtc->set_screen("screen");
-
- PALETTE(config, m_palette).set_entries(3);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", i8275_device, screen_update)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(80*5, 25*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 80*5-1, 0, 25*8-1)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sagitta180 )
+
+ MCFG_DEVICE_ADD("crtc", I8275, 12480000 / 8) /* guessed xtal */
+ MCFG_I8275_CHARACTER_WIDTH(8)
+ MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(sagitta180_state, crtc_display_pixels)
+ MCFG_I8275_DRQ_CALLBACK(WRITELINE("dma" , i8257_device , dreq2_w))
+ MCFG_I8275_IRQ_CALLBACK(INPUTLINE("maincpu" , I8085_INTR_LINE))
+ MCFG_VIDEO_SET_SCREEN("screen")
+ MCFG_PALETTE_ADD("palette", 3)
+
+MACHINE_CONFIG_END
ROM_START( sagitta180 )
diff --git a/src/mame/drivers/scorpion.cpp b/src/mame/drivers/scorpion.cpp
index d88d0f09ca9..4fb403cbeb1 100644
--- a/src/mame/drivers/scorpion.cpp
+++ b/src/mame/drivers/scorpion.cpp
@@ -292,39 +292,36 @@ static GFXDECODE_START( gfx_quorum )
GFXDECODE_ENTRY( "maincpu", 0x1fb00, quorum_charlayout, 0, 8 )
GFXDECODE_END
-void scorpion_state::scorpion(machine_config &config)
-{
+MACHINE_CONFIG_START(scorpion_state::scorpion)
spectrum_128(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &scorpion_state::scorpion_mem);
- m_maincpu->set_addrmap(AS_IO, &scorpion_state::scorpion_io);
- m_maincpu->set_addrmap(AS_OPCODES, &scorpion_state::scorpion_switch);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scorpion_mem)
+ MCFG_DEVICE_IO_MAP(scorpion_io)
+ MCFG_DEVICE_OPCODES_MAP(scorpion_switch)
MCFG_MACHINE_START_OVERRIDE(scorpion_state, scorpion )
MCFG_MACHINE_RESET_OVERRIDE(scorpion_state, scorpion )
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_scorpion);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_scorpion)
BETA_DISK(config, m_beta, 0);
/* internal ram */
m_ram->set_default_size("256K");
- TIMER(config, "nmi_timer").configure_periodic(FUNC(scorpion_state::nmi_check_callback), attotime::from_hz(50));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", scorpion_state, nmi_check_callback, attotime::from_hz(50))
- config.device_remove("exp");
-}
+ MCFG_DEVICE_REMOVE("exp")
+MACHINE_CONFIG_END
-void scorpion_state::profi(machine_config &config)
-{
+MACHINE_CONFIG_START(scorpion_state::profi)
scorpion(config);
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_profi);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_profi)
+MACHINE_CONFIG_END
-void scorpion_state::quorum(machine_config &config)
-{
+MACHINE_CONFIG_START(scorpion_state::quorum)
scorpion(config);
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_quorum);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_quorum)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/scotrsht.cpp b/src/mame/drivers/scotrsht.cpp
index b8685aacfac..90db90d1fd0 100644
--- a/src/mame/drivers/scotrsht.cpp
+++ b/src/mame/drivers/scotrsht.cpp
@@ -187,27 +187,27 @@ static GFXDECODE_START( gfx_scotrsht )
GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 16*16*8, 16*8 ) /* sprites */
GFXDECODE_END
-void scotrsht_state::scotrsht(machine_config &config)
-{
+MACHINE_CONFIG_START(scotrsht_state::scotrsht)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, 18432000/6); /* 3.072 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &scotrsht_state::scotrsht_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, 18432000/6) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(scotrsht_map)
- Z80(config, m_audiocpu, 18432000/6); /* 3.072 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &scotrsht_state::scotrsht_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &scotrsht_state::scotrsht_sound_port);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 18432000/6) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(scotrsht_sound_map)
+ MCFG_DEVICE_IO_MAP(scotrsht_sound_port)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(scotrsht_state::screen_update));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(scotrsht_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(scotrsht_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, scotrsht_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_scotrsht);
PALETTE(config, m_palette, FUNC(scotrsht_state::scotrsht_palette), 16*8*16+16*8*16, 256);
@@ -217,8 +217,9 @@ void scotrsht_state::scotrsht(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- YM2203(config, "ymsnd", 18432000/6).add_route(ALL_OUTPUTS, "mono", 0.40);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2203, 18432000/6)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/scramble.cpp b/src/mame/drivers/scramble.cpp
index 7ba5e5890bb..ef27e13b754 100644
--- a/src/mame/drivers/scramble.cpp
+++ b/src/mame/drivers/scramble.cpp
@@ -1302,16 +1302,16 @@ GFXDECODE_END
/**************************************************************************/
-void scramble_state::scramble(machine_config &config)
-{
+MACHINE_CONFIG_START(scramble_state::scramble)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 18432000/6); /* 3.072 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::scramble_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(scramble_map)
- Z80(config, m_audiocpu, 14318000/8); /* 1.78975 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &scramble_state::scramble_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &scramble_state::scramble_sound_io_map);
- m_audiocpu->set_irq_acknowledge_callback(FUNC(scramble_state::scramble_sh_irq_callback));
+ MCFG_DEVICE_ADD("audiocpu", Z80, 14318000/8) /* 1.78975 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(scramble_sound_map)
+ MCFG_DEVICE_IO_MAP(scramble_sound_io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(scramble_state,scramble_sh_irq_callback)
ttl7474_device &ttl7474_9m_1(TTL7474(config, "7474_9m_1", 0));
ttl7474_9m_1.output_cb().set(FUNC(scramble_state::galaxold_7474_9m_1_callback));
@@ -1322,7 +1322,7 @@ void scramble_state::scramble(machine_config &config)
ttl7474_device &konami_7474(TTL7474(config, "konami_7474", 0));
konami_7474.comp_output_cb().set(FUNC(scramble_state::scramble_sh_7474_q_callback));
- TIMER(config, "int_timer").configure_generic(FUNC(scramble_state::galaxold_interrupt_timer));
+ MCFG_TIMER_DRIVER_ADD("int_timer", scramble_state, galaxold_interrupt_timer)
WATCHDOG_TIMER(config, "watchdog");
@@ -1338,13 +1338,13 @@ void scramble_state::scramble(machine_config &config)
m_ppi8255_1->out_pb_callback().set(FUNC(scramble_state::scramble_sh_irqtrigger_w));
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(16000.0/132/2);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(scramble_state::screen_update_galaxold));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(16000.0/132/2)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(scramble_state, screen_update_galaxold)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", m_palette, gfx_scramble);
PALETTE(config, m_palette, FUNC(scramble_state::scrambold_palette), 32+64+2+1); // 32 for characters, 64 for stars, 2 for bullets, 0/1 for background
@@ -1362,14 +1362,14 @@ void scramble_state::scramble(machine_config &config)
ay2.port_a_read_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read));
ay2.port_b_read_callback().set(FUNC(scramble_state::scramble_portB_r));
ay2.add_route(ALL_OUTPUTS, "mono", 0.16);
-}
+MACHINE_CONFIG_END
-void scramble_state::mars(machine_config &config)
-{
+MACHINE_CONFIG_START(scramble_state::mars)
scramble(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::mars_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mars_map)
m_ppi8255_1->out_pa_callback().set(m_soundlatch, FUNC(generic_latch_8_device::write));
m_ppi8255_1->out_pb_callback().set(FUNC(scramble_state::scramble_sh_irqtrigger_w));
@@ -1378,42 +1378,42 @@ void scramble_state::mars(machine_config &config)
/* video hardware */
m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets, 0/1 for background
m_palette->set_init(FUNC(scramble_state::galaxold_palette));
-}
+MACHINE_CONFIG_END
-void scramble_state::devilfsh(machine_config &config)
-{
+MACHINE_CONFIG_START(scramble_state::devilfsh)
scramble(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::mars_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mars_map)
/* video hardware */
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_devilfsh);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_devilfsh)
m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets, 0/1 for background
m_palette->set_init(FUNC(scramble_state::galaxold_palette));
-}
+MACHINE_CONFIG_END
-void scramble_state::newsin7(machine_config &config)
-{
+MACHINE_CONFIG_START(scramble_state::newsin7)
scramble(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::newsin7_map);
- m_maincpu->set_vblank_int("screen", FUNC(scramble_state::irq0_line_hold)); // newsin7a has a corrupt opcode at 0x67, the irq routine instead of NMI avoids it by jumping to 0x68 after doing some other things, probably intentional. newsin7 has this fixed, maybe a bootleg?
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(newsin7_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", scramble_state, irq0_line_hold) // newsin7a has a corrupt opcode at 0x67, the irq routine instead of NMI avoids it by jumping to 0x68 after doing some other things, probably intentional. newsin7 has this fixed, maybe a bootleg?
/* video hardware */
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_newsin7);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_newsin7)
m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets, 0/1 for background
m_palette->set_init(FUNC(scramble_state::galaxold_palette));
MCFG_VIDEO_START_OVERRIDE(scramble_state,newsin7)
-}
+MACHINE_CONFIG_END
-void scramble_state::mrkougb(machine_config &config)
-{
+MACHINE_CONFIG_START(scramble_state::mrkougb)
scramble(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::mrkougar_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mrkougar_map)
m_ppi8255_1->out_pa_callback().set(m_soundlatch, FUNC(generic_latch_8_device::write));
m_ppi8255_1->out_pb_callback().set(FUNC(scramble_state::mrkougar_sh_irqtrigger_w));
@@ -1422,40 +1422,40 @@ void scramble_state::mrkougb(machine_config &config)
/* video hardware */
m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets, 0/1 for background
m_palette->set_init(FUNC(scramble_state::galaxold_palette));
-}
+MACHINE_CONFIG_END
-void scramble_state::mrkougar(machine_config &config)
-{
+MACHINE_CONFIG_START(scramble_state::mrkougar)
mrkougb(config);
/* video hardware */
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_mrkougar);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_mrkougar)
+MACHINE_CONFIG_END
-void scramble_state::ckongs(machine_config &config)
-{
+MACHINE_CONFIG_START(scramble_state::ckongs)
scramble(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::ckongs_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ckongs_map)
/* video hardware */
m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets, 0/1 for background
m_palette->set_init(FUNC(scramble_state::galaxold_palette));
MCFG_VIDEO_START_OVERRIDE(scramble_state,ckongs)
-}
+MACHINE_CONFIG_END
-void scramble_state::hotshock(machine_config &config)
-{
+MACHINE_CONFIG_START(scramble_state::hotshock)
scramble(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::hotshock_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hotshock_map)
- config.device_remove( "ppi8255_0" );
- config.device_remove( "ppi8255_1" );
+ MCFG_DEVICE_REMOVE( "ppi8255_0" )
+ MCFG_DEVICE_REMOVE( "ppi8255_1" )
- m_audiocpu->set_addrmap(AS_IO, &scramble_state::hotshock_sound_io_map);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_IO_MAP(hotshock_sound_io_map)
MCFG_MACHINE_RESET_OVERRIDE(scramble_state,galaxold)
@@ -1470,10 +1470,9 @@ void scramble_state::hotshock(machine_config &config)
subdevice<ay8910_device>("8910.2")->port_a_read_callback().set(FUNC(scramble_state::hotshock_soundlatch_r));
subdevice<ay8910_device>("8910.2")->reset_routes();
subdevice<ay8910_device>("8910.2")->add_route(ALL_OUTPUTS, "mono", 0.33);
-}
+MACHINE_CONFIG_END
-void scramble_state::cavelon(machine_config &config)
-{
+MACHINE_CONFIG_START(scramble_state::cavelon)
scramble(config);
/* basic machine hardware */
@@ -1482,58 +1481,61 @@ void scramble_state::cavelon(machine_config &config)
m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets, 0/1 for background
m_palette->set_init(FUNC(scramble_state::galaxold_palette));
MCFG_VIDEO_START_OVERRIDE(scramble_state,ckongs)
-}
+MACHINE_CONFIG_END
-void scramble_state::mimonscr(machine_config &config)
-{
+MACHINE_CONFIG_START(scramble_state::mimonscr)
scramble(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::mimonscr_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mimonscr_map)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(scramble_state,mimonkey)
-}
+MACHINE_CONFIG_END
/* Triple Punch and Mariner are different - only one CPU, one 8910 */
-void scramble_state::triplep(machine_config &config)
-{
+MACHINE_CONFIG_START(scramble_state::triplep)
scramble(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::triplep_map);
- m_maincpu->set_addrmap(AS_IO, &scramble_state::triplep_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(triplep_map)
+ MCFG_DEVICE_IO_MAP(triplep_io_map)
- config.device_remove("audiocpu");
- config.device_remove("ppi8255_1");
- config.device_remove("konami_7474");
+ MCFG_DEVICE_REMOVE("audiocpu")
+ MCFG_DEVICE_REMOVE("ppi8255_1")
+ MCFG_DEVICE_REMOVE("konami_7474")
/* video hardware */
m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets
m_palette->set_init(FUNC(scramble_state::galaxold_palette));
/* sound hardware */
- subdevice<ay8910_device>("8910.1")->set_clock(18432000/12); // triple punch/knock out ay clock is 1.535MHz, derived from main cpu xtal; verified on hardware
- subdevice<ay8910_device>("8910.1")->reset_routes();
- subdevice<ay8910_device>("8910.1")->add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_MODIFY("8910.1")
+ MCFG_DEVICE_CLOCK(18432000/12) // triple punch/knock out ay clock is 1.535MHz, derived from main cpu xtal; verified on hardware
- config.device_remove("8910.2");
-}
-void scramble_state::mariner(machine_config &config)
-{
+ MCFG_SOUND_ROUTES_RESET()
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+
+ MCFG_DEVICE_REMOVE("8910.2")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(scramble_state::mariner)
triplep(config);
+ /* basic machine hardware */
+
/* video hardware */
m_palette->set_entries(32+64+2+16); // 32 for characters, 64 for stars, 2 for bullets, 16 for background
m_palette->set_init(FUNC(scramble_state::mariner_palette));
MCFG_VIDEO_START_OVERRIDE(scramble_state,mariner)
-}
+MACHINE_CONFIG_END
/* Hunchback replaces the Z80 with a S2650 CPU */
-void scramble_state::hunchbks(machine_config &config)
-{
+MACHINE_CONFIG_START(scramble_state::hunchbks)
scramble(config);
/* basic machine hardware */
@@ -1543,28 +1545,28 @@ void scramble_state::hunchbks(machine_config &config)
maincpu.sense_handler().set("screen", FUNC(screen_device::vblank));
maincpu.set_vblank_int("screen", FUNC(scramble_state::hunchbks_vh_interrupt));
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
/* video hardware */
m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets
m_palette->set_init(FUNC(scramble_state::galaxold_palette));
-}
+MACHINE_CONFIG_END
-void scramble_state::hncholms(machine_config &config)
-{
+MACHINE_CONFIG_START(scramble_state::hncholms)
hunchbks(config);
/* basic machine hardware */
- m_maincpu->set_clock(18432000/6/2/2);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(18432000/6/2/2)
MCFG_VIDEO_START_OVERRIDE(scramble_state,scorpion)
-}
+MACHINE_CONFIG_END
-void scramble_state::ad2083(machine_config &config)
-{
+MACHINE_CONFIG_START(scramble_state::ad2083)
/* basic machine hardware */
- Z80(config, m_maincpu, 18432000/6); /* 3.072 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::ad2083_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(ad2083_map)
ttl7474_device &ttl7474_9m_1(TTL7474(config, "7474_9m_1", 0));
ttl7474_9m_1.output_cb().set(FUNC(scramble_state::galaxold_7474_9m_1_callback));
@@ -1575,20 +1577,20 @@ void scramble_state::ad2083(machine_config &config)
ttl7474_device &konami_7474(TTL7474(config, "konami_7474", 0));
konami_7474.comp_output_cb().set(FUNC(scramble_state::scramble_sh_7474_q_callback));
- TIMER(config, "int_timer").configure_generic(FUNC(scramble_state::galaxold_interrupt_timer));
+ MCFG_TIMER_DRIVER_ADD("int_timer", scramble_state, galaxold_interrupt_timer)
WATCHDOG_TIMER(config, "watchdog");
MCFG_MACHINE_RESET_OVERRIDE(scramble_state,galaxold)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(16000.0/132/2);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(scramble_state::screen_update_galaxold));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(16000.0/132/2)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(scramble_state, screen_update_galaxold)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, "gfxdecode", m_palette, gfx_ad2083);
PALETTE(config, m_palette, FUNC(scramble_state::turtles_palette), 32+64+2+8); // 32 for characters, 64 for stars, 2 for bullets, 8 for background
@@ -1599,19 +1601,20 @@ void scramble_state::ad2083(machine_config &config)
ad2083_audio(config);
-}
+MACHINE_CONFIG_END
-void scramble_state::harem(machine_config &config)
-{
+MACHINE_CONFIG_START(scramble_state::harem)
scramble(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::harem_map);
- m_maincpu->set_addrmap(AS_OPCODES, &scramble_state::decrypted_opcodes_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(harem_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
- m_audiocpu->set_addrmap(AS_PROGRAM, &scramble_state::harem_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &scramble_state::harem_sound_io_map);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(harem_sound_map)
+ MCFG_DEVICE_IO_MAP(harem_sound_io_map)
MCFG_VIDEO_START_OVERRIDE(scramble_state,harem)
@@ -1622,7 +1625,7 @@ void scramble_state::harem(machine_config &config)
ay3.port_b_write_callback().set(FUNC(scramble_state::harem_digitalker_control_w));
DIGITALKER(config, m_digitalker, 4000000).add_route(ALL_OUTPUTS, "mono", 0.16);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/scregg.cpp b/src/mame/drivers/scregg.cpp
index b8bc7a411a1..b7a536a629e 100644
--- a/src/mame/drivers/scregg.cpp
+++ b/src/mame/drivers/scregg.cpp
@@ -269,21 +269,21 @@ MACHINE_RESET_MEMBER(scregg_state,scregg)
m_btime_tilemap[3] = 0;
}
-void scregg_state::dommy(machine_config &config)
-{
+MACHINE_CONFIG_START(scregg_state::dommy)
+
/* basic machine hardware */
- M6502(config, m_maincpu, XTAL(12'000'000)/8);
- m_maincpu->set_addrmap(AS_PROGRAM, &scregg_state::dommy_map);
- TIMER(config, "irq").configure_scanline(FUNC(scregg_state::scregg_interrupt), "screen", 0, 8);
+ MCFG_DEVICE_ADD("maincpu", M6502, XTAL(12'000'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(dommy_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("irq", scregg_state, scregg_interrupt, "screen", 0, 8)
MCFG_MACHINE_START_OVERRIDE(scregg_state,scregg)
MCFG_MACHINE_RESET_OVERRIDE(scregg_state,scregg)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(12'000'000)/2, 384, 8, 248, 272, 8, 248);
- m_screen->set_screen_update(FUNC(scregg_state::screen_update_eggs));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(12'000'000)/2, 384, 8, 248, 272, 8, 248)
+ MCFG_SCREEN_UPDATE_DRIVER(scregg_state, screen_update_eggs)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_scregg);
PALETTE(config, m_palette, FUNC(scregg_state::btime_palette), 8);
@@ -294,24 +294,24 @@ void scregg_state::dommy(machine_config &config)
AY8910(config, "ay1", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.23);
AY8910(config, "ay2", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.23);
-}
+MACHINE_CONFIG_END
-void scregg_state::scregg(machine_config &config)
-{
+MACHINE_CONFIG_START(scregg_state::scregg)
+
/* basic machine hardware */
- M6502(config, m_maincpu, XTAL(12'000'000)/8);
- m_maincpu->set_addrmap(AS_PROGRAM, &scregg_state::eggs_map);
- TIMER(config, "irq").configure_scanline(FUNC(scregg_state::scregg_interrupt), "screen", 0, 8);
+ MCFG_DEVICE_ADD("maincpu", M6502, XTAL(12'000'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(eggs_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("irq", scregg_state, scregg_interrupt, "screen", 0, 8)
MCFG_MACHINE_START_OVERRIDE(scregg_state,scregg)
MCFG_MACHINE_RESET_OVERRIDE(scregg_state,scregg)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(12'000'000)/2, 384, 8, 248, 272, 8, 248);
- m_screen->set_screen_update(FUNC(scregg_state::screen_update_eggs));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(12'000'000)/2, 384, 8, 248, 272, 8, 248)
+ MCFG_SCREEN_UPDATE_DRIVER(scregg_state, screen_update_eggs)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_scregg);
PALETTE(config, m_palette, FUNC(scregg_state::btime_palette), 8);
@@ -322,7 +322,7 @@ void scregg_state::scregg(machine_config &config)
AY8910(config, "ay1", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.23);
AY8910(config, "ay2", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.23);
-}
+MACHINE_CONFIG_END
ROM_START( dommy )
diff --git a/src/mame/drivers/scv.cpp b/src/mame/drivers/scv.cpp
index 9c39e51a7d4..265ed7302a6 100644
--- a/src/mame/drivers/scv.cpp
+++ b/src/mame/drivers/scv.cpp
@@ -649,8 +649,8 @@ static void scv_cart(device_slot_interface &device)
device.option_add_internal("rom128k_ram", SCV_ROM128K_RAM4K);
}
-void scv_state::scv(machine_config &config)
-{
+MACHINE_CONFIG_START(scv_state::scv)
+
upd7801_device &upd(UPD7801(config, m_maincpu, 4_MHz_XTAL));
upd.set_addrmap(AS_PROGRAM, &scv_state::scv_mem);
upd.pa_out_cb().set(FUNC(scv_state::porta_w));
@@ -664,7 +664,7 @@ void scv_state::scv(machine_config &config)
m_screen->set_screen_update(FUNC(scv_state::screen_update_scv));
m_screen->set_palette("palette");
- GFXDECODE(config, "gfxdecode", "palette", gfx_scv);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_scv)
PALETTE(config, "palette", FUNC(scv_state::scv_palette), 16);
/* Sound is generated by UPD1771C clocked at XTAL(6'000'000) */
@@ -673,11 +673,11 @@ void scv_state::scv(machine_config &config)
m_upd1771c->ack_handler().set(FUNC(scv_state::upd1771_ack_w));
m_upd1771c->add_route(ALL_OUTPUTS, "mono", 1.00);
- SCV_CART_SLOT(config, m_cart, scv_cart, nullptr);
+ MCFG_SCV_CARTRIDGE_ADD("cartslot", scv_cart, nullptr)
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("scv");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list","scv")
+MACHINE_CONFIG_END
void scv_state::scv_pal(machine_config &config)
diff --git a/src/mame/drivers/scyclone.cpp b/src/mame/drivers/scyclone.cpp
index 020e76915c5..44f69db6679 100644
--- a/src/mame/drivers/scyclone.cpp
+++ b/src/mame/drivers/scyclone.cpp
@@ -655,12 +655,14 @@ void scyclone_state::scyclone(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
voltage_regulator_device &vref2(VOLTAGE_REGULATOR(config, "vref2", 0));
+ vref2.set_output(5.0);
vref2.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT);
vref2.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/sderby.cpp b/src/mame/drivers/sderby.cpp
index 4ab2643c85c..4ea8bbb14ef 100644
--- a/src/mame/drivers/sderby.cpp
+++ b/src/mame/drivers/sderby.cpp
@@ -599,143 +599,149 @@ GFXDECODE_END
* Machine Drivers *
****************************/
-void sderby_state::sderby(machine_config &config)
-{
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &sderby_state::sderby_map);
- m_maincpu->set_vblank_int("screen", FUNC(sderby_state::irq2_line_hold));
+MACHINE_CONFIG_START(sderby_state::sderby)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(sderby_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sderby_state, irq2_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(4*8, 44*8-1, 3*8, 33*8-1);
- screen.set_screen_update(FUNC(sderby_state::screen_update_sderby));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(4*8, 44*8-1, 3*8, 33*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sderby_state, screen_update_sderby)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sderby);
PALETTE(config, m_palette).set_format(palette_device::RGBx_555, 0x1000);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) /* clock frequency & pin 7 not verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void sderby_state::sderbya(machine_config &config)
-{
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &sderby_state::sderbya_map);
- m_maincpu->set_vblank_int("screen", FUNC(sderby_state::irq2_line_hold));
+MACHINE_CONFIG_START(sderby_state::sderbya)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(sderbya_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sderby_state, irq2_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(4*8, 44*8-1, 3*8, 33*8-1);
- screen.set_screen_update(FUNC(sderby_state::screen_update_sderby));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(4*8, 44*8-1, 3*8, 33*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sderby_state, screen_update_sderby)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sderby);
PALETTE(config, m_palette).set_format(palette_device::RGBx_555, 0x1000);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) /* clock frequency & pin 7 not verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void sderby_state::luckboom(machine_config &config)
-{
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &sderby_state::luckboom_map);
- m_maincpu->set_vblank_int("screen", FUNC(sderby_state::irq4_line_hold));
+MACHINE_CONFIG_START(sderby_state::luckboom)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(luckboom_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sderby_state, irq4_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(4*8, 44*8-1, 3*8, 33*8-1);
- screen.set_screen_update(FUNC(sderby_state::screen_update_sderby));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(4*8, 44*8-1, 3*8, 33*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sderby_state, screen_update_sderby)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sderby);
PALETTE(config, m_palette).set_format(palette_device::RGBx_555, 0x1000);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) /* clock frequency & pin 7 not verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void sderby_state::spacewin(machine_config &config)
-{
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &sderby_state::spacewin_map);
- m_maincpu->set_vblank_int("screen", FUNC(sderby_state::irq2_line_hold));
+MACHINE_CONFIG_START(sderby_state::spacewin)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(spacewin_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sderby_state, irq2_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(4*8, 44*8-1, 3*8, 33*8-1);
- screen.set_screen_update(FUNC(sderby_state::screen_update_pmroulet));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(4*8, 44*8-1, 3*8, 33*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sderby_state, screen_update_pmroulet)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sderby);
PALETTE(config, m_palette).set_format(palette_device::RGBx_555, 0x1000);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) /* clock frequency & pin 7 not verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void sderby_state::shinygld(machine_config &config)
-{
- M68000(config, m_maincpu, 24_MHz_XTAL / 2); // verified
- m_maincpu->set_addrmap(AS_PROGRAM, &sderby_state::shinygld_map);
- m_maincpu->set_vblank_int("screen", FUNC(sderby_state::irq4_line_hold));
+MACHINE_CONFIG_START(sderby_state::shinygld)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 24_MHz_XTAL / 2) // verified
+ MCFG_DEVICE_PROGRAM_MAP(shinygld_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sderby_state, irq4_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57.47); // measured on PCB
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(4*8, 44*8-1, 3*8, 33*8-1);
- screen.set_screen_update(FUNC(sderby_state::screen_update_sderby));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57.47) // measured on PCB
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(4*8, 44*8-1, 3*8, 33*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sderby_state, screen_update_sderby)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sderby);
PALETTE(config, m_palette).set_format(palette_device::RGBx_555, 0x1000);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 verified */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH) /* clock frequency & pin 7 verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void sderby_state::pmroulet(machine_config &config)
-{
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &sderby_state::roulette_map);
- m_maincpu->set_vblank_int("screen", FUNC(sderby_state::irq2_line_hold));
+MACHINE_CONFIG_START(sderby_state::pmroulet)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(roulette_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sderby_state, irq2_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(64*8, 64*8);
- screen.set_visarea(4*8, 44*8-1, 3*8, 33*8-1);
- screen.set_screen_update(FUNC(sderby_state::screen_update_pmroulet));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(4*8, 44*8-1, 3*8, 33*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sderby_state, screen_update_pmroulet)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sderby);
PALETTE(config, m_palette).set_format(palette_device::RGBx_555, 0x1000);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) /* clock frequency & pin 7 not verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/****************************
diff --git a/src/mame/drivers/sderby2.cpp b/src/mame/drivers/sderby2.cpp
index 3c4f7648a6e..d8865e53b72 100644
--- a/src/mame/drivers/sderby2.cpp
+++ b/src/mame/drivers/sderby2.cpp
@@ -298,33 +298,32 @@ void sderby2_state::machine_reset()
}
-void sderby2_state::sderby2(machine_config &config)
-{
- Z80(config, m_maincpu, XTAL(3'579'545));
- m_maincpu->set_addrmap(AS_PROGRAM, &sderby2_state::main_program_map);
- m_maincpu->set_addrmap(AS_IO, &sderby2_state::main_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(sderby2_state::irq0_line_hold));
+MACHINE_CONFIG_START(sderby2_state::sderby2)
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(3'579'545))
+ MCFG_DEVICE_PROGRAM_MAP(main_program_map)
+ MCFG_DEVICE_IO_MAP(main_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sderby2_state, irq0_line_hold)
- Z80(config, m_subcpu, XTAL(3'579'545));
- m_subcpu->set_addrmap(AS_PROGRAM, &sderby2_state::sub_program_map);
- m_subcpu->set_addrmap(AS_IO, &sderby2_state::sub_io_map);
- m_subcpu->set_vblank_int("screen", FUNC(sderby2_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("subcpu", Z80, XTAL(3'579'545))
+ MCFG_DEVICE_PROGRAM_MAP(sub_program_map)
+ MCFG_DEVICE_IO_MAP(sub_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sderby2_state, irq0_line_hold)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256 - 1, 0, 256 - 1);
- screen.set_video_attributes(VIDEO_ALWAYS_UPDATE);
- screen.set_screen_update(FUNC(sderby2_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256 - 1, 0, 256 - 1)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_UPDATE_DRIVER(sderby2_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(sderby2_state::sderby2_palette), 256+256*3);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sderby2);
// sound hardware
-}
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/sdk51.cpp b/src/mame/drivers/sdk51.cpp
index 689055043af..a00dbef6757 100644
--- a/src/mame/drivers/sdk51.cpp
+++ b/src/mame/drivers/sdk51.cpp
@@ -45,9 +45,9 @@ private:
void datamem_map(address_map &map);
void mem0_map(address_map &map);
- u8 psen_r(offs_t offset);
- u8 datamem_r(offs_t offset);
- void datamem_w(offs_t offset, u8 data);
+ DECLARE_READ8_MEMBER(psen_r);
+ DECLARE_READ8_MEMBER(datamem_r);
+ DECLARE_WRITE8_MEMBER(datamem_w);
u8 brkmem_r(offs_t offset);
void brkmem_w(offs_t offset, u8 data);
@@ -73,19 +73,19 @@ private:
bool m_display_clock;
};
-u8 sdk51_state::psen_r(offs_t offset)
+READ8_MEMBER(sdk51_state::psen_r)
{
- return m_progmem->read8(offset);
+ return m_progmem->read8(space, offset);
}
-u8 sdk51_state::datamem_r(offs_t offset)
+READ8_MEMBER(sdk51_state::datamem_r)
{
- return m_datamem->read8(offset);
+ return m_datamem->read8(space, offset);
}
-void sdk51_state::datamem_w(offs_t offset, u8 data)
+WRITE8_MEMBER(sdk51_state::datamem_w)
{
- m_datamem->write8(offset, data);
+ m_datamem->write8(space, offset, data);
}
u8 sdk51_state::brkmem_r(offs_t offset)
diff --git a/src/mame/drivers/sdk85.cpp b/src/mame/drivers/sdk85.cpp
index 2eeff6a9a4e..1989ead5fc6 100644
--- a/src/mame/drivers/sdk85.cpp
+++ b/src/mame/drivers/sdk85.cpp
@@ -148,12 +148,11 @@ READ8_MEMBER( sdk85_state::kbd_r )
return data;
}
-void sdk85_state::sdk85(machine_config &config)
-{
+MACHINE_CONFIG_START(sdk85_state::sdk85)
/* basic machine hardware */
- I8085A(config, m_maincpu, 6.144_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &sdk85_state::sdk85_mem);
- m_maincpu->set_addrmap(AS_IO, &sdk85_state::sdk85_io);
+ MCFG_DEVICE_ADD("maincpu", I8085A, 6.144_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(sdk85_mem)
+ MCFG_DEVICE_IO_MAP(sdk85_io)
I8355(config, "romio", 6.144_MHz_XTAL / 2); // Monitor ROM (A14)
@@ -175,7 +174,7 @@ void sdk85_state::sdk85(machine_config &config)
kdc.in_rl_callback().set(FUNC(sdk85_state::kbd_r)); // kbd RL lines
kdc.in_shift_callback().set_constant(1); // Shift key
kdc.in_ctrl_callback().set_constant(1);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( sdk85 )
diff --git a/src/mame/drivers/seabattl.cpp b/src/mame/drivers/seabattl.cpp
index 44d69cf4bc0..9841b29fac2 100644
--- a/src/mame/drivers/seabattl.cpp
+++ b/src/mame/drivers/seabattl.cpp
@@ -480,8 +480,8 @@ static GFXDECODE_START( gfx_seabattl )
GFXDECODE_ENTRY( "gfx3", 0, tiles8x8_layout, 24, 1 )
GFXDECODE_END
-void seabattl_state::seabattl(machine_config &config)
-{
+MACHINE_CONFIG_START(seabattl_state::seabattl)
+
/* basic machine hardware */
S2650(config, m_maincpu, 14318180/4/2);
m_maincpu->set_addrmap(AS_PROGRAM, &seabattl_state::seabattl_map);
diff --git a/src/mame/drivers/sealy.cpp b/src/mame/drivers/sealy.cpp
index 93d3c697800..661ad948358 100644
--- a/src/mame/drivers/sealy.cpp
+++ b/src/mame/drivers/sealy.cpp
@@ -101,27 +101,28 @@ static GFXDECODE_START( gfx_sealy )
GFXDECODE_END
-void sealy_state::sealy(machine_config &config)
-{
+MACHINE_CONFIG_START(sealy_state::sealy)
+
/* basic machine hardware */
- H83044(config, m_maincpu, MAIN_CLOCK); /* wrong CPU, but we have not a M16C core ATM */
- m_maincpu->set_addrmap(AS_PROGRAM, &sealy_state::sealy_map);
+ MCFG_DEVICE_ADD("maincpu", H83044, MAIN_CLOCK) /* wrong CPU, but we have not a M16C core ATM */
+ MCFG_DEVICE_PROGRAM_MAP(sealy_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(sealy_state::screen_update_sealy));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sealy_state, screen_update_sealy)
GFXDECODE(config, "gfxdecode", m_palette, gfx_sealy);
PALETTE(config, m_palette, FUNC(sealy_state::sealy_palette), 32768);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", MAIN_CLOCK/13, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, MAIN_CLOCK/13, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( crzyddz )
diff --git a/src/mame/drivers/seattlecmp.cpp b/src/mame/drivers/seattlecmp.cpp
index ce7a1df8e19..0b8e8e38fa3 100644
--- a/src/mame/drivers/seattlecmp.cpp
+++ b/src/mame/drivers/seattlecmp.cpp
@@ -103,13 +103,12 @@ static DEVICE_INPUT_DEFAULTS_START( terminal )
DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_2 )
DEVICE_INPUT_DEFAULTS_END
-void seattle_comp_state::seattle(machine_config &config)
-{
+MACHINE_CONFIG_START(seattle_comp_state::seattle)
/* basic machine hardware */
- I8086(config, m_maincpu, XTAL(24'000'000) / 3); // 8 MHz or 4 MHz selectable
- m_maincpu->set_addrmap(AS_PROGRAM, &seattle_comp_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &seattle_comp_state::io_map);
- m_maincpu->set_irq_acknowledge_callback("pic1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I8086, XTAL(24'000'000) / 3) // 8 MHz or 4 MHz selectable
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic1", pic8259_device, inta_cb)
PIC8259(config, m_pic[0], 0);
m_pic[0]->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_INT0);
@@ -139,7 +138,7 @@ void seattle_comp_state::seattle(machine_config &config)
rs232.dsr_handler().set("uart", FUNC(i8251_device::write_dsr));
rs232.cts_handler().set("uart", FUNC(i8251_device::write_cts));
rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( scp300f )
diff --git a/src/mame/drivers/sega_beena.cpp b/src/mame/drivers/sega_beena.cpp
deleted file mode 100644
index 001d50d03b7..00000000000
--- a/src/mame/drivers/sega_beena.cpp
+++ /dev/null
@@ -1,137 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:R. Belmont
-/******************************************************************************
-
- Sega Beena
-
- apbeena.cpp
-
- Skeleton driver for the Sega Advanced Pico BEENA
-
- H/W is custom Sega SoC with ARM7TDMI core at 81 MHz.
-
- TODO:
- Everything!
- Needs the internal BIOS dumped.
- Component list / PCB diagram
-
- cartridge ROM has 'edinburgh' in the header, maybe a system codename?
- ROM is also full of OGG files containing the string 'Encoded with Speex speex-1.0.4'
- as well as .mid files for music
-
-*******************************************************************************/
-
-#include "emu.h"
-
-#include "bus/generic/slot.h"
-#include "bus/generic/carts.h"
-#include "cpu/arm7/arm7.h"
-
-#include "softlist.h"
-#include "speaker.h"
-#include "screen.h"
-
-
-class sega_beena_state : public driver_device
-{
-public:
- sega_beena_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "arm7")
- , m_cart(*this, "cartslot")
- , m_cart_region(nullptr)
- , m_bank(*this, "cartbank")
- { }
-
- void sega_beena(machine_config &config);
-
-private:
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
- uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart);
-
- void beena_arm7_map(address_map &map);
-
- required_device<arm7_cpu_device> m_maincpu;
- required_device<generic_slot_device> m_cart;
- memory_region *m_cart_region;
- optional_memory_bank m_bank;
-};
-
-void sega_beena_state::beena_arm7_map(address_map &map)
-{
- map(0x00000000, 0x000001ff).rom().bankr("cartbank");
- map(0x80000000, 0x807fffff).rom().bankr("cartbank");
-}
-
-void sega_beena_state::machine_start()
-{
- // if there's a cart, override the standard mapping
- if (m_cart && m_cart->exists())
- {
- std::string region_tag;
- m_cart_region = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
-
- m_bank->configure_entries(0, (m_cart_region->bytes() + 0x7fffff) / 0x800000, m_cart_region->base(), 0x800000);
- m_bank->set_entry(0);
- }
-}
-
-void sega_beena_state::machine_reset()
-{
-}
-
-DEVICE_IMAGE_LOAD_MEMBER(sega_beena_state, cart)
-{
- uint32_t size = m_cart->common_get_size("rom");
-
- m_cart->rom_alloc(size, GENERIC_ROM16_WIDTH, ENDIANNESS_LITTLE);
- m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
-
-
- return image_init_result::PASS;
-}
-
-static INPUT_PORTS_START( sega_beena )
-INPUT_PORTS_END
-
-
-uint32_t sega_beena_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- return 0;
-}
-
-void sega_beena_state::sega_beena(machine_config &config)
-{
- ARM7_BE(config, m_maincpu, 81'000'000);
- m_maincpu->set_addrmap(AS_PROGRAM, &sega_beena_state::beena_arm7_map);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_screen_update(FUNC(sega_beena_state::screen_update));
-
- SPEAKER(config, "lspeaker").front_left();
- SPEAKER(config, "rspeaker").front_right();
-
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "sega_beena_cart");
- m_cart->set_width(GENERIC_ROM16_WIDTH);
- m_cart->set_device_load(device_image_load_delegate(&sega_beena_state::device_image_load_cart, this));
- m_cart->set_must_be_loaded(true);
-
- SOFTWARE_LIST(config, "cart_list").set_original("sega_beena_cart");
-}
-
-ROM_START( beena )
- ROM_REGION32_BE( 0x80000, "bios", 0 ) // SoC internal BIOS
- ROM_LOAD16_WORD_SWAP( "beenabios.bin", 0x000000, 0x080000, NO_DUMP )
-ROM_END
-
-
-// year, name, parent, compat, machine, input, class, init, company, fullname, flags
-CONS( 2009, beena, 0, 0, sega_beena, sega_beena, sega_beena_state, empty_init, "Sega", "Advanced Pico BEENA", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/sega_sawatte.cpp b/src/mame/drivers/sega_sawatte.cpp
index 173e56c85a8..2e96f7d413a 100644
--- a/src/mame/drivers/sega_sawatte.cpp
+++ b/src/mame/drivers/sega_sawatte.cpp
@@ -44,10 +44,9 @@ static INPUT_PORTS_START( sawatte )
INPUT_PORTS_END
-void sawatte_state::sawatte(machine_config &config)
-{
- SOFTWARE_LIST(config, "cart_list").set_original("sawatte");
-}
+MACHINE_CONFIG_START(sawatte_state::sawatte)
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "sawatte")
+MACHINE_CONFIG_END
ROM_START( sawatte )
ROM_END
diff --git a/src/mame/drivers/segae.cpp b/src/mame/drivers/segae.cpp
index ef357426bc1..9fd3d468b2b 100644
--- a/src/mame/drivers/segae.cpp
+++ b/src/mame/drivers/segae.cpp
@@ -308,6 +308,7 @@ GND 8A 8B GND
#include "machine/mc8123.h"
#include "machine/segacrp2_device.h"
#include "machine/upd4701.h"
+#include "sound/sn76496.h"
#include "video/315_5124.h"
#include "speaker.h"
@@ -410,9 +411,8 @@ void systeme_state::io_map(address_map &map)
{
map.global_mask(0xff);
- /* TODO : PSG connection correct? */
- map(0x7b, 0x7b).w(m_vdp1, FUNC(sega315_5124_device::psg_w));
- map(0x7e, 0x7f).w(m_vdp2, FUNC(sega315_5124_device::psg_w));
+ map(0x7b, 0x7b).w("sn1", FUNC(segapsg_device::command_w));
+ map(0x7e, 0x7f).w("sn2", FUNC(segapsg_device::command_w));
map(0x7e, 0x7e).r(m_vdp1, FUNC(sega315_5124_device::vcount_read));
map(0xba, 0xba).rw(m_vdp1, FUNC(sega315_5124_device::data_read), FUNC(sega315_5124_device::data_write));
map(0xbb, 0xbb).rw(m_vdp1, FUNC(sega315_5124_device::control_read), FUNC(sega315_5124_device::control_write));
@@ -886,36 +886,39 @@ uint32_t systeme_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma
return 0;
}
-void systeme_state::systeme(machine_config &config)
-{
- Z80(config, m_maincpu, XTAL(10'738'635)/2); /* Z80B @ 5.3693Mhz */
- m_maincpu->set_addrmap(AS_PROGRAM, &systeme_state::systeme_map);
- m_maincpu->set_addrmap(AS_IO, &systeme_state::io_map);
+MACHINE_CONFIG_START(systeme_state::systeme)
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(10'738'635)/2) /* Z80B @ 5.3693Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(systeme_map)
+ MCFG_DEVICE_IO_MAP(io_map)
I8255(config, m_ppi);
m_ppi->out_pb_callback().set(FUNC(systeme_state::coin_counters_write));
m_ppi->tri_pb_callback().set_constant(0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(10'738'635)/2, \
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(10'738'635)/2, \
sega315_5124_device::WIDTH , sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH, sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 256, \
- sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_192_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_192_TBORDER_HEIGHT + 192);
- screen.set_screen_update(FUNC(systeme_state::screen_update));
+ sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_192_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_192_TBORDER_HEIGHT + 192)
+ MCFG_SCREEN_UPDATE_DRIVER(systeme_state, screen_update)
+
+ MCFG_DEVICE_ADD("vdp1", SEGA315_5124, 0)
+ MCFG_SEGA315_5124_IS_PAL(false)
+ MCFG_DEVICE_ADDRESS_MAP(0, vdp1_map)
+
+ MCFG_DEVICE_ADD("vdp2", SEGA315_5124, 0)
+ MCFG_SEGA315_5124_IS_PAL(false)
+ MCFG_SEGA315_5124_INT_CB(INPUTLINE("maincpu", 0))
+ MCFG_DEVICE_ADDRESS_MAP(0, vdp2_map)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SEGA315_5124(config, m_vdp1, XTAL(10'738'635));
- m_vdp1->set_is_pal(false);
- m_vdp1->set_addrmap(0, &systeme_state::vdp1_map);
- m_vdp1->add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("sn1", SEGAPSG, XTAL(10'738'635)/3)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- SEGA315_5124(config, m_vdp2, XTAL(10'738'635));
- m_vdp2->set_is_pal(false);
- m_vdp2->irq().set_inputline(m_maincpu, 0);
- m_vdp2->set_addrmap(0, &systeme_state::vdp2_map);
- m_vdp2->add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("sn2", SEGAPSG, XTAL(10'738'635)/3)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
void systeme_state::hangonjr(machine_config &config)
{
@@ -941,14 +944,13 @@ void systeme_state::ridleofp(machine_config &config)
ppi.out_pc_callback().append("upd4701", FUNC(upd4701_device::resety_w)).bit(0); // or possibly bit 1
}
-void systeme_state::systemex(machine_config &config)
-{
+MACHINE_CONFIG_START(systeme_state::systemex)
systeme(config);
- mc8123_device &maincpu(MC8123(config.replace(), m_maincpu, XTAL(10'738'635)/2)); /* Z80B @ 5.3693Mhz */
- maincpu.set_addrmap(AS_PROGRAM, &systeme_state::systeme_map);
- maincpu.set_addrmap(AS_IO, &systeme_state::io_map);
- maincpu.set_addrmap(AS_OPCODES, &systeme_state::decrypted_opcodes_map);
-}
+ MCFG_DEVICE_REPLACE("maincpu", MC8123, XTAL(10'738'635)/2) /* Z80B @ 5.3693Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(systeme_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+MACHINE_CONFIG_END
void systeme_state::systemex_315_5177(machine_config &config)
{
@@ -960,14 +962,13 @@ void systeme_state::systemex_315_5177(machine_config &config)
maincpu.set_decrypted_tag(m_decrypted_opcodes);
}
-void systeme_state::systemeb(machine_config &config)
-{
+MACHINE_CONFIG_START(systeme_state::systemeb)
systeme(config);
- mc8123_device &maincpu(MC8123(config.replace(), m_maincpu, XTAL(10'738'635)/2)); /* Z80B @ 5.3693Mhz */
- maincpu.set_addrmap(AS_PROGRAM, &systeme_state::systeme_map);
- maincpu.set_addrmap(AS_IO, &systeme_state::io_map);
- maincpu.set_addrmap(AS_OPCODES, &systeme_state::banked_decrypted_opcodes_map);
-}
+ MCFG_DEVICE_REPLACE("maincpu", MC8123, XTAL(10'738'635)/2) /* Z80B @ 5.3693Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(systeme_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_OPCODES_MAP(banked_decrypted_opcodes_map)
+MACHINE_CONFIG_END
void systeme_state::init_opaopa()
diff --git a/src/mame/drivers/segag80r.cpp b/src/mame/drivers/segag80r.cpp
index 0e6a28529d5..df33e01f25d 100644
--- a/src/mame/drivers/segag80r.cpp
+++ b/src/mame/drivers/segag80r.cpp
@@ -827,78 +827,83 @@ GFXDECODE_END
*
*************************************/
-void segag80r_state::g80r_base(machine_config &config)
-{
+MACHINE_CONFIG_START(segag80r_state::g80r_base)
+
/* basic machine hardware */
- Z80(config, m_maincpu, VIDEO_CLOCK/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &segag80r_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &segag80r_state::main_portmap);
- m_maincpu->set_addrmap(AS_OPCODES, &segag80r_state::g80r_opcodes_map);
- m_maincpu->set_vblank_int("screen", FUNC(segag80r_state::segag80r_vblank_start));
- m_maincpu->set_irq_acknowledge_callback(FUNC(segag80r_state::segag80r_irq_ack));
+ MCFG_DEVICE_ADD("maincpu", Z80, VIDEO_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_portmap)
+ MCFG_DEVICE_OPCODES_MAP(g80r_opcodes_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segag80r_state, segag80r_vblank_start)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(segag80r_state, segag80r_irq_ack)
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_segag80r);
- PALETTE(config, m_palette).set_entries(64);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_segag80r)
+ MCFG_PALETTE_ADD("palette", 64)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(segag80r_state::screen_update_segag80r));
- m_screen->set_palette(m_palette);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(segag80r_state, screen_update_segag80r)
+ MCFG_SCREEN_PALETTE("palette")
+MACHINE_CONFIG_END
-void segag80r_state::astrob(machine_config &config)
-{
+MACHINE_CONFIG_START(segag80r_state::astrob)
g80r_base(config);
+ /* basic machine hardware */
+
/* sound hardware */
SPEAKER(config, "speaker").front_center();
/* sound boards */
astrob_sound_board(config);
sega_speech_board(config);
-}
+MACHINE_CONFIG_END
-void segag80r_state::sega005(machine_config &config)
-{
+MACHINE_CONFIG_START(segag80r_state::sega005)
g80r_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &segag80r_state::main_ppi8255_portmap);
+
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(main_ppi8255_portmap)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
/* sound boards */
sega005_sound_board(config);
-}
+MACHINE_CONFIG_END
-void segag80r_state::spaceod(machine_config &config)
-{
+MACHINE_CONFIG_START(segag80r_state::spaceod)
g80r_base(config);
+ /* basic machine hardware */
+
/* background board changes */
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_gfxdecode->set_info(gfx_spaceod);
- m_palette->set_entries(64 + 64);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_spaceod)
+ MCFG_DEVICE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(64+64)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
/* sound boards */
spaceod_sound_board(config);
-}
+MACHINE_CONFIG_END
-void segag80r_state::monsterb(machine_config &config)
-{
+MACHINE_CONFIG_START(segag80r_state::monsterb)
g80r_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &segag80r_state::main_ppi8255_portmap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(main_ppi8255_portmap)
i8255_device &ppi(I8255A(config, "ppi8255"));
ppi.out_pa_callback().set(m_soundbrd, FUNC(monsterb_sound_device::sound_a_w));
@@ -907,12 +912,13 @@ void segag80r_state::monsterb(machine_config &config)
ppi.out_pc_callback().set(m_soundbrd, FUNC(monsterb_sound_device::n7751_command_w));
/* background board changes */
- m_gfxdecode->set_info(gfx_monsterb);
- m_palette->set_entries(64 + 64);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_monsterb)
+ MCFG_DEVICE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(64+64)
/* sound boards */
- MONSTERB_SOUND(config, m_soundbrd, 0);
-}
+ MCFG_DEVICE_ADD(m_soundbrd, MONSTERB_SOUND, 0)
+MACHINE_CONFIG_END
void segag80r_state::monster2(machine_config &config)
{
@@ -926,24 +932,25 @@ void segag80r_state::monster2(machine_config &config)
maincpu.set_decrypted_tag(":decrypted_opcodes");
}
-void segag80r_state::pignewt(machine_config &config)
-{
+MACHINE_CONFIG_START(segag80r_state::pignewt)
g80r_base(config);
+ /* basic machine hardware */
+
/* background board changes */
- m_gfxdecode->set_info(gfx_monsterb);
- m_palette->set_entries(64 + 64);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_monsterb)
+ MCFG_DEVICE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(64+64)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
/* sound boards */
SEGAUSB(config, m_usbsnd, 0, m_maincpu).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+MACHINE_CONFIG_END
-void segag80r_state::sindbadm(machine_config &config)
-{
+MACHINE_CONFIG_START(segag80r_state::sindbadm)
g80r_base(config);
/* basic machine hardware */
@@ -959,8 +966,9 @@ void segag80r_state::sindbadm(machine_config &config)
ppi.out_pc_callback().set(FUNC(segag80r_state::sindbadm_misc_w));
/* video hardware */
- m_gfxdecode->set_info(gfx_monsterb);
- m_palette->set_entries(64 + 64);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_monsterb)
+ MCFG_DEVICE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(64+64)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
@@ -971,10 +979,12 @@ void segag80r_state::sindbadm(machine_config &config)
m_audiocpu->set_periodic_int(FUNC(segag80r_state::irq0_line_hold), attotime::from_hz(4*60));
/* sound hardware */
- SN76496(config, m_sn1, SINDBADM_SOUND_CLOCK/2).add_route(ALL_OUTPUTS, "speaker", 1.0); /* matches PCB videos, correct? */
+ MCFG_DEVICE_ADD("sn1", SN76496, SINDBADM_SOUND_CLOCK/2) /* matches PCB videos, correct? */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
- SN76496(config, m_sn2, SINDBADM_SOUND_CLOCK/4).add_route(ALL_OUTPUTS, "speaker", 1.0); /* matches PCB videos, correct? */
-}
+ MCFG_DEVICE_ADD("sn2", SN76496, SINDBADM_SOUND_CLOCK/4) /* matches PCB videos, correct? */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
@@ -1017,7 +1027,7 @@ ROM_START( astrob )
ROM_LOAD( "812a.speech-u3", 0x1800, 0x0800, CRC(410ad0d2) SHA1(9b5f05bb64a6ecfe3543025a10c6ec67de797333) )
ROM_REGION( 0x0440, "proms", 0 ) // not dumped for this set, but believed identical
- ROM_LOAD( "316-0806.video1-u52", 0x0000, 0x0020, CRC(358128b6) SHA1(b6b4b9ecfdcc69b45e69e7a8614153d83be4c62b) ) /* 6331 */
+ ROM_LOAD( "316-0806.video1-u52", 0x0000, 0x0020, CRC(358128B6) SHA1(b6b4b9ecfdcc69b45e69e7a8614153d83be4c62b) ) /* 6331 */
ROM_LOAD( "316-0764.cpu-u15", 0x0400, 0x0020, CRC(c609b79e) SHA1(49dbcbb607079a182d7eb396c0da097166ea91c9) ) /* 6331, CPU board addressing */
ROM_LOAD( "pr84.speech-u30", 0x0420, 0x0020, CRC(adcb81d0) SHA1(74b0efc7e8362b0c98e54a6107981cff656d87e1) ) /* 7051, speech board addressing */
ROM_END
@@ -1055,7 +1065,7 @@ ROM_START( astrob2 )
ROM_LOAD( "812a.speech-u3", 0x1800, 0x0800, CRC(410ad0d2) SHA1(9b5f05bb64a6ecfe3543025a10c6ec67de797333) )
ROM_REGION( 0x0440, "proms", 0 ) // not dumped for this set, but believed identical
- ROM_LOAD( "316-0806.video1-u52", 0x0000, 0x0020, CRC(358128b6) SHA1(b6b4b9ecfdcc69b45e69e7a8614153d83be4c62b) ) /* 6331 */
+ ROM_LOAD( "316-0806.video1-u52", 0x0000, 0x0020, CRC(358128B6) SHA1(b6b4b9ecfdcc69b45e69e7a8614153d83be4c62b) ) /* 6331 */
ROM_LOAD( "316-0764.cpu-u15", 0x0400, 0x0020, CRC(c609b79e) SHA1(49dbcbb607079a182d7eb396c0da097166ea91c9) ) /* 6331, CPU board addressing */
ROM_LOAD( "pr84.speech-u30", 0x0420, 0x0020, CRC(adcb81d0) SHA1(74b0efc7e8362b0c98e54a6107981cff656d87e1) ) /* 7051, speech board addressing */
ROM_END
@@ -1093,7 +1103,7 @@ ROM_START( astrob2a )
ROM_LOAD( "812a.speech-u3", 0x1800, 0x0800, CRC(410ad0d2) SHA1(9b5f05bb64a6ecfe3543025a10c6ec67de797333) )
ROM_REGION( 0x0440, "proms", 0 )
- ROM_LOAD( "316-0806.video1-u52", 0x0000, 0x0020, CRC(358128b6) SHA1(b6b4b9ecfdcc69b45e69e7a8614153d83be4c62b) ) /* 6331 */
+ ROM_LOAD( "316-0806.video1-u52", 0x0000, 0x0020, CRC(358128B6) SHA1(b6b4b9ecfdcc69b45e69e7a8614153d83be4c62b) ) /* 6331 */
ROM_LOAD( "316-0764.cpu-u15", 0x0400, 0x0020, CRC(c609b79e) SHA1(49dbcbb607079a182d7eb396c0da097166ea91c9) ) /* 6331, CPU board addressing */
ROM_LOAD( "pr84.speech-u30", 0x0420, 0x0020, CRC(adcb81d0) SHA1(74b0efc7e8362b0c98e54a6107981cff656d87e1) ) /* 7051, speech board addressing */
ROM_END
@@ -1131,7 +1141,7 @@ ROM_START( astrob2b ) // This was dumped from 2 different PCB sets, with matchin
ROM_LOAD( "812a.speech-u3", 0x1800, 0x0800, CRC(410ad0d2) SHA1(9b5f05bb64a6ecfe3543025a10c6ec67de797333) )
ROM_REGION( 0x0440, "proms", 0 )
- ROM_LOAD( "316-0806.video1-u52", 0x0000, 0x0020, CRC(358128b6) SHA1(b6b4b9ecfdcc69b45e69e7a8614153d83be4c62b) ) /* 6331 */
+ ROM_LOAD( "316-0806.video1-u52", 0x0000, 0x0020, CRC(358128B6) SHA1(b6b4b9ecfdcc69b45e69e7a8614153d83be4c62b) ) /* 6331 */
ROM_LOAD( "316-0764.cpu-u15", 0x0400, 0x0020, CRC(c609b79e) SHA1(49dbcbb607079a182d7eb396c0da097166ea91c9) ) /* 6331, CPU board addressing */
ROM_LOAD( "pr84.speech-u30", 0x0420, 0x0020, CRC(adcb81d0) SHA1(74b0efc7e8362b0c98e54a6107981cff656d87e1) ) /* 7051, speech board addressing */
ROM_END
@@ -1166,7 +1176,7 @@ ROM_START( astrob1 )
ROM_LOAD( "812a.speech-u3", 0x1800, 0x0800, CRC(410ad0d2) SHA1(9b5f05bb64a6ecfe3543025a10c6ec67de797333) )
ROM_REGION( 0x0440, "proms", 0 ) // not dumped for this set, but believed identical
- ROM_LOAD( "316-0806.video1-u52", 0x0000, 0x0020, CRC(358128b6) SHA1(b6b4b9ecfdcc69b45e69e7a8614153d83be4c62b) ) /* 6331 */
+ ROM_LOAD( "316-0806.video1-u52", 0x0000, 0x0020, CRC(358128B6) SHA1(b6b4b9ecfdcc69b45e69e7a8614153d83be4c62b) ) /* 6331 */
ROM_LOAD( "316-0764.cpu-u15", 0x0400, 0x0020, CRC(c609b79e) SHA1(49dbcbb607079a182d7eb396c0da097166ea91c9) ) /* 6331, CPU board addressing */
ROM_LOAD( "pr84.speech-u30", 0x0420, 0x0020, CRC(adcb81d0) SHA1(74b0efc7e8362b0c98e54a6107981cff656d87e1) ) /* 7051, speech board addressing */
ROM_END
@@ -1201,7 +1211,7 @@ ROM_START( astrobg )
ROM_LOAD( "833_speech_de.u03", 0x1800, 0x0800, CRC(08f11459) SHA1(da6dc2bf30b95882f95c21739ec02fc89d286a66) )
ROM_REGION( 0x0440, "proms", 0 ) // not dumped for this set, but believed identical
- ROM_LOAD( "316-0806.video1-u52", 0x0000, 0x0020, CRC(358128b6) SHA1(b6b4b9ecfdcc69b45e69e7a8614153d83be4c62b) ) /* 6331 */
+ ROM_LOAD( "316-0806.video1-u52", 0x0000, 0x0020, CRC(358128B6) SHA1(b6b4b9ecfdcc69b45e69e7a8614153d83be4c62b) ) /* 6331 */
ROM_LOAD( "316-0764.cpu-u15", 0x0400, 0x0020, CRC(c609b79e) SHA1(49dbcbb607079a182d7eb396c0da097166ea91c9) ) /* 6331, CPU board addressing */
ROM_LOAD( "pr84.speech-u30", 0x0420, 0x0020, CRC(adcb81d0) SHA1(74b0efc7e8362b0c98e54a6107981cff656d87e1) ) /* 7051, speech board addressing */
ROM_END
diff --git a/src/mame/drivers/segag80v.cpp b/src/mame/drivers/segag80v.cpp
index c8a7a7238cf..9fc7e572b84 100644
--- a/src/mame/drivers/segag80v.cpp
+++ b/src/mame/drivers/segag80v.cpp
@@ -1350,7 +1350,7 @@ void segag80v_state::init_zektor()
/* configure sound */
iospace.install_write_handler(0x38, 0x38, write8_delegate(FUNC(speech_sound_device::data_w), (speech_sound_device*)m_speech));
iospace.install_write_handler(0x3b, 0x3b, write8_delegate(FUNC(speech_sound_device::control_w), (speech_sound_device*)m_speech));
- iospace.install_write_handler(0x3c, 0x3d, write8sm_delegate(FUNC(ay8912_device::address_data_w), (ay8912_device*)m_aysnd));
+ iospace.install_write_handler(0x3c, 0x3d, write8_delegate(FUNC(ay8912_device::address_data_w), (ay8912_device*)m_aysnd));
iospace.install_write_handler(0x3e, 0x3e, write8_delegate(FUNC(segag80v_state::zektor1_sh_w),this));
iospace.install_write_handler(0x3f, 0x3f, write8_delegate(FUNC(segag80v_state::zektor2_sh_w),this));
diff --git a/src/mame/drivers/segald.cpp b/src/mame/drivers/segald.cpp
index 92b9bc71520..6b178a960b8 100644
--- a/src/mame/drivers/segald.cpp
+++ b/src/mame/drivers/segald.cpp
@@ -378,27 +378,31 @@ void segald_state::machine_start()
/* DRIVER */
MACHINE_CONFIG_START(segald_state::astron)
+
/* main cpu */
- Z80(config, m_maincpu, SCHEMATIC_CLOCK/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &segald_state::mainmem);
- m_maincpu->set_addrmap(AS_IO, &segald_state::mainport);
- m_maincpu->set_periodic_int(FUNC(segald_state::nmi_line_pulse), attotime::from_hz(1000.0/59.94));
+ MCFG_DEVICE_ADD("maincpu", Z80, SCHEMATIC_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(mainmem)
+ MCFG_DEVICE_IO_MAP(mainport)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(segald_state, nmi_line_pulse, 1000.0/59.94)
+
- PIONEER_LDV1000(config, m_laserdisc, 0);
- m_laserdisc->set_overlay(256, 256, FUNC(segald_state::screen_update_astron));
- m_laserdisc->set_overlay_palette(m_palette);
- m_laserdisc->add_route(0, "lspeaker", 1.0);
- m_laserdisc->add_route(1, "rspeaker", 1.0);
+ MCFG_LASERDISC_LDV1000_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, segald_state, screen_update_astron)
+ MCFG_LASERDISC_OVERLAY_PALETTE("palette")
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_segald);
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_segald)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardare */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
+
+ MCFG_DEVICE_MODIFY("laserdisc")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/segapm.cpp b/src/mame/drivers/segapm.cpp
index 494aedcd64e..497ca93c5fe 100644
--- a/src/mame/drivers/segapm.cpp
+++ b/src/mame/drivers/segapm.cpp
@@ -58,23 +58,23 @@ INPUT_PORTS_END
-void segapm_state::segapm(machine_config &config)
-{
- M68000(config, m_maincpu, 8000000); // ??
- m_maincpu->set_addrmap(AS_PROGRAM, &segapm_state::segapm_map);
+MACHINE_CONFIG_START(segapm_state::segapm)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 8000000) // ??
+ MCFG_DEVICE_PROGRAM_MAP(segapm_map)
// + 2 sh2s on 32x board
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(segapm_state::screen_update_segapm));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(segapm_state, screen_update_segapm)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x200);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/segas16a.cpp b/src/mame/drivers/segas16a.cpp
index a9f15030879..845d34f713a 100644
--- a/src/mame/drivers/segas16a.cpp
+++ b/src/mame/drivers/segas16a.cpp
@@ -2022,6 +2022,7 @@ void segas16a_state::system16a(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
@@ -2095,15 +2096,15 @@ void segas16a_state::system16a_no7751p(machine_config &config)
}
/*
-void segas16a_state::system16a_i8751_no7751(machine_config &config)
-{
+static MACHINE_CONFIG_START( system16a_i8751_no7751 )
system16a_i8751(config);
- config.device_remove("n7751");
- config.device_remove("dac");
- config.device_remove("vref");
+ MCFG_DEVICE_REMOVE("n7751")
+ MCFG_DEVICE_REMOVE("dac")
+ MCFG_DEVICE_REMOVE("vref")
- YM2151(config.replace(), "ymsnd", 4000000).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_REPLACE("ymsnd", YM2151, 4000000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
*/
void segas16a_state::system16a_fd1089a_no7751(machine_config &config)
@@ -2722,6 +2723,10 @@ ROM_START( fantzone )
ROM_LOAD( "epr-7535a.12", 0x0000, 0x8000, CRC(bc1374fa) SHA1(ed2c87ae024dc251e175239f1bccc728fc096548) )
ROM_END
+//*************************************************************************************************************************
+// Fantasy Zone, Sega System 16A
+// CPU: 68000
+//
ROM_START( fantzone1 )
ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
ROM_LOAD16_BYTE( "epr-7385.43", 0x000000, 0x8000, CRC(5cb64450) SHA1(5831405359975dd7d8c6614b20fd9b18a5d6410d) )
@@ -2750,39 +2755,6 @@ ROM_END
//*************************************************************************************************************************
// Fantasy Zone, Sega System 16A
-// CPU: FD1089B 317-0016
-//
-ROM_START( fantzonee )
- ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
- ROM_LOAD16_BYTE( "epr-10170.43", 0x000000, 0x8000, CRC(063c6d76) SHA1(02d52d776330c88d949b10fb715b00507dba1227) )
- ROM_LOAD16_BYTE( "epr-10167.26", 0x000001, 0x8000, CRC(0ee190b0) SHA1(18c27046a523d73bccf733ecd956e454199a1ee8) )
- ROM_LOAD16_BYTE( "epr-10171.42", 0x010000, 0x8000, CRC(2ca92d64) SHA1(2eea4d1ae38bba28b806824951a0df4c9f74af6f) )
- ROM_LOAD16_BYTE( "epr-10168.25", 0x010001, 0x8000, CRC(850964ad) SHA1(bdf603b025b981cc5af47446526562c425990b89) )
- ROM_LOAD16_BYTE( "epr-10172.41", 0x020000, 0x8000, CRC(b5b624f0) SHA1(a728582efdc9c1b0ed1a27975d6b4e1974339ab2) )
- ROM_LOAD16_BYTE( "epr-10169.24", 0x020001, 0x8000, CRC(9c57d613) SHA1(cdfaf92b5f44a66ccd6267e0221e4d9ada924e2e) )
-
- ROM_REGION( 0x18000, "gfx1", 0 ) // tiles
- ROM_LOAD( "epr-7388.95", 0x00000, 0x08000, CRC(8eb02f6b) SHA1(80511b944b57541669010bd5a0ca52bc98eabd62) )
- ROM_LOAD( "epr-7389.94", 0x08000, 0x08000, CRC(2f4f71b8) SHA1(ceb39e95cd43904b8e4f89c7227491e139fb3ca6) )
- ROM_LOAD( "epr-7390.93", 0x10000, 0x08000, CRC(d90609c6) SHA1(4232f6ecb21f242c0c8d81e06b88bc742668609f) )
-
- ROM_REGION16_BE( 0x30000, "sprites", 0 ) // sprites
- ROM_LOAD16_BYTE( "epr-7392.10", 0x00001, 0x8000, CRC(5bb7c8b6) SHA1(eaa0ed63ac4f66ee285757e842bdd7b005292600) )
- ROM_LOAD16_BYTE( "epr-7396.11", 0x00000, 0x8000, CRC(74ae4b57) SHA1(1f24b1faea765994b85f0e7ac8e944c8da22103f) )
- ROM_LOAD16_BYTE( "epr-7393.17", 0x10001, 0x8000, CRC(14fc7e82) SHA1(ca7caca989a3577dd30ad4f66b0fcce712a454ef) )
- ROM_LOAD16_BYTE( "epr-7397.18", 0x10000, 0x8000, CRC(e05a1e25) SHA1(9691d9f0763b7483ee6912437902f22ab4b78a05) )
- ROM_LOAD16_BYTE( "epr-7394.23", 0x20001, 0x8000, CRC(531ca13f) SHA1(19e68bc515f6021e1145cff4f3f0e083839ee8f3) )
- ROM_LOAD16_BYTE( "epr-7398.24", 0x20000, 0x8000, CRC(68807b49) SHA1(0a189da8cdd2090e76d6d06c55b478abce60542d) )
-
- ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU
- ROM_LOAD( "epr-7535a.12", 0x0000, 0x8000, CRC(bc1374fa) SHA1(ed2c87ae024dc251e175239f1bccc728fc096548) )
-
- ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key
- ROM_LOAD( "317-0016.key", 0x0000, 0x2000, BAD_DUMP CRC(16869a2c) SHA1(112b044d0b1b76620a7d75d6f4c4a16eca37e343) ) // hand-crafted needs a proper redump
-ROM_END
-
-//*************************************************************************************************************************
-// Fantasy Zone, Sega System 16A
// CPU: 68000 + NEC 0317-5000 encrypted Z80
//
ROM_START( fantzonep )
@@ -2811,6 +2783,7 @@ ROM_START( fantzonep )
ROM_LOAD( "epr-7391.12", 0x0000, 0x8000, CRC(c03e155e) SHA1(6bbdf308c47b96ba622329520b70fa0ea47248a4) ) // Original encrypted sound code
ROM_END
+
ROM_START( fantzonepr )
ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
ROM_LOAD16_BYTE( "ic43-prg-dd2c.bin", 0x000000, 0x8000, CRC(895436e1) SHA1(5cf294fc4fcbacab5d2696aa4f536a8f48d4c4ce) ) // different
@@ -3989,7 +3962,6 @@ GAME( 1986, alexkidd1, alexkidd, system16a_fd1089a, alexkidd, seg
GAME( 1986, fantzone, 0, system16a_no7751, fantzone, segas16a_state, init_generic, ROT0, "Sega", "Fantasy Zone (Rev A, unprotected)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, fantzone1, fantzone, system16a_no7751, fantzone, segas16a_state, init_generic, ROT0, "Sega", "Fantasy Zone (unprotected)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, fantzonep, fantzone, system16a_no7751p, fantzone, segas16a_state, init_generic, ROT0, "Sega", "Fantasy Zone (317-5000)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, fantzonee, fantzone, system16a_fd1089b_no7751, fantzone, segas16a_state, init_generic, ROT0, "Sega", "Fantasy Zone (FD1089B 317-0016)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, fantzonepr, fantzone, system16a_no7751, fantzone, segas16a_state, init_generic, ROT0, "Sega", "Fantasy Zone (prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // bad / missing gfx ROMs
GAME( 1988, passsht16a, passsht, system16a_fd1094, passsht16a, segas16a_state, init_passsht16a, ROT270, "Sega", "Passing Shot (Japan, 4 Players, System 16A) (FD1094 317-0071)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/segas16b.cpp b/src/mame/drivers/segas16b.cpp
index 1b13df462e6..f7273528d27 100644
--- a/src/mame/drivers/segas16b.cpp
+++ b/src/mame/drivers/segas16b.cpp
@@ -1126,7 +1126,7 @@ WRITE16_MEMBER( segas16b_state::standard_io_w )
WRITE16_MEMBER( segas16b_state::atomicp_sound_w )
{
- m_ym2413->write(offset, data >> 8);
+ m_ym2413->write(space, offset, data >> 8);
}
@@ -2434,9 +2434,7 @@ static INPUT_PORTS_START( dunkshot )
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("DSW2")
- PORT_DIPNAME( 0x01, 0x00, "Winner Advances" ) PORT_DIPLOCATION("SW2:1")
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ //"SW2:1" unused
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@@ -2453,9 +2451,7 @@ static INPUT_PORTS_START( dunkshot )
PORT_DIPNAME( 0x40, 0x40, "CPU Starts With +6 Pts." ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:8")
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ //"SW2:8" unused
PORT_START("ANALOGX1") // fake analog X
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5) PORT_PLAYER(1) PORT_REVERSE
@@ -2483,15 +2479,6 @@ static INPUT_PORTS_START( dunkshot )
INPUT_PORTS_END
-static INPUT_PORTS_START( dunkshoto )
- PORT_INCLUDE( dunkshot )
-
- PORT_MODIFY("DSW2")
- PORT_DIPUNUSED_DIPLOC( 0x01, IP_ACTIVE_LOW, "SW2:1" )
- PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:8" )
-INPUT_PORTS_END
-
-
static INPUT_PORTS_START( eswat )
PORT_INCLUDE( system16b_generic )
@@ -3742,13 +3729,13 @@ void segas16b_state::system16b(machine_config &config)
m_mapper->pbf().set_inputline(m_soundcpu, 0);
// video hardware
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_segas16b);
- PALETTE(config, m_palette).set_entries(2048*3);
+ GFXDECODE(config, m_gfxdecode, "palette", gfx_segas16b);
+ PALETTE(config, "palette").set_entries(2048*3);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(MASTER_CLOCK_25MHz/4, 400, 0, 320, 262, 0, 224);
m_screen->set_screen_update(FUNC(segas16b_state::screen_update));
- m_screen->set_palette(m_palette);
+ m_screen->set_palette("palette");
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
SEGAIC16VID(config, m_segaic16vid, 0, m_gfxdecode);
@@ -3926,28 +3913,28 @@ void segas16b_state::fpointbla(machine_config &config)
m_sprites->set_local_originx(60); // these align the pieces with the playfield
}
-void segas16b_state::lockonph(machine_config &config)
-{
+MACHINE_CONFIG_START(segas16b_state::lockonph)
+
// basic machine hardware
- M68000(config, m_maincpu, XTAL(16'000'000)/2); // ?
- m_maincpu->set_addrmap(AS_PROGRAM, &segas16b_state::lockonph_map);
- m_maincpu->set_vblank_int("screen", FUNC(segas16b_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)/2) // ?
+ MCFG_DEVICE_PROGRAM_MAP(lockonph_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas16b_state, irq4_line_hold)
- Z80(config, m_soundcpu, XTAL(16'000'000)/4); // ?
- m_soundcpu->set_addrmap(AS_PROGRAM, &segas16b_state::lockonph_sound_map);
- m_soundcpu->set_addrmap(AS_IO, &segas16b_state::lockonph_sound_iomap);
+ MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(16'000'000)/4) // ?
+ MCFG_DEVICE_PROGRAM_MAP(lockonph_sound_map)
+ MCFG_DEVICE_IO_MAP(lockonph_sound_iomap)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
// video hardware
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_lockonph);
- PALETTE(config, m_palette).set_entries(0x2000*4);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lockonph)
+ MCFG_PALETTE_ADD("palette", 0x2000*4)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(MASTER_CLOCK_25MHz/4, 400, 0, 320, 262, 0, 224); // wrong, other XTAL seems to be 17Mhz?
- m_screen->set_screen_update(FUNC(segas16b_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_25MHz/4, 400, 0, 320, 262, 0, 224) // wrong, other XTAL seems to be 17Mhz?
+ MCFG_SCREEN_UPDATE_DRIVER(segas16b_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
SEGAIC16VID(config, m_segaic16vid, 0, m_gfxdecode);
@@ -3963,10 +3950,12 @@ void segas16b_state::lockonph(machine_config &config)
m_ym2151->add_route(0, "mono", 0.5);
m_ym2151->add_route(1, "mono", 0.5);
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(16'000'000)/16, okim6295_device::PIN7_LOW)); // clock / pin not verified
- oki.add_route(ALL_OUTPUTS, "mono", 0.2);
- oki.add_route(ALL_OUTPUTS, "mono", 0.2);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/16, okim6295_device::PIN7_LOW) // clock / pin not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.2)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.2)
+
+
+MACHINE_CONFIG_END
//**************************************************************************
@@ -3992,11 +3981,11 @@ void segas16b_state::atomicp(machine_config &config) // 10MHz CPU Clock verified
}
-void segas16b_state::system16c(machine_config &config)
-{
+MACHINE_CONFIG_START(segas16b_state::system16c)
system16b(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &segas16b_state::system16c_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(system16c_map)
+MACHINE_CONFIG_END
@@ -5301,9 +5290,6 @@ ROM_END
// Cotton, Sega System 16B
// CPU: FD1094 (317-0181A)
// ROM Board type: 171-5704
-// Sega game ID: 833-8021-02 COTTON
-// Main board: 837-8023-02
-// ROM board: 834-8022-02
//
ROM_START( cotton )
ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code
@@ -7462,36 +7448,6 @@ ROM_START( ryukyu )
ROM_LOAD( "opr-13350.a11", 0x10000, 0x20000, CRC(3c59a658) SHA1(2cef13ee9e666bb850fe6c6e6954d7b75df665a9) )
ROM_END
-//*************************************************************************************************************************
-// Ryukyu, Sega System 16B
-// CPU: FD1094 8M2 (317-5023A)
-// ROM Board type: 171-5704
-// Sega game ID: 836-7666 RYUKYU
-// ROM board: 836-7667
-//
-ROM_START( ryukyua )
- ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code
- ROM_LOAD16_BYTE( "epr-13348a.a7", 0x00000, 0x10000, CRC(64f6ada9) SHA1(31e2adc8697c21ca4aa2d9357f7303644168d0a2) )
- ROM_LOAD16_BYTE( "epr-13347a.a5", 0x00001, 0x10000, CRC(fade1f50) SHA1(46e6224060d526aa362df1a1026ba445832ad7f3) )
-
- ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key
- ROM_LOAD( "317-5023a.key", 0x0000, 0x2000, NO_DUMP )
-
- ROM_REGION( 0x60000, "gfx1", 0 ) // tiles
- ROM_LOAD( "opr-13351.a14", 0x00000, 0x20000, CRC(a68a4e6d) SHA1(ee3e317c7184b41af5dd383d41f7be3eebff0d04) )
- ROM_LOAD( "opr-13352.a15", 0x20000, 0x20000, CRC(5e5531e4) SHA1(e8e16b35f7985e6cdd77353ca5235db518914744) )
- ROM_LOAD( "opr-13353.a16", 0x40000, 0x20000, CRC(6d23dfd8) SHA1(21266340290b9854cee0b62fc107cc2981519a80) )
-
- ROM_REGION16_BE( 0x80000, "sprites", 0 ) // sprites
- ROM_LOAD16_BYTE( "opr-13354.b1", 0x00001, 0x20000, CRC(f07aad99) SHA1(71759525a5b7fe76d112cec93984f0f89cadbc00) )
- ROM_LOAD16_BYTE( "opr-13356.b5", 0x00000, 0x20000, CRC(5498290b) SHA1(b3115b636d8cb6ecac22d5264b7961e3b807cf04) )
- ROM_LOAD16_BYTE( "opr-13355.b2", 0x40001, 0x20000, CRC(67890019) SHA1(165c6a32f305273396ec0e9499e00329caadc484) )
- ROM_LOAD16_BYTE( "opr-13357.b6", 0x40000, 0x20000, CRC(f9e7cf03) SHA1(2258111499c79443faf84fb0495007016282bb3c) )
-
- ROM_REGION( 0x50000, "soundcpu", 0 ) // sound CPU
- ROM_LOAD( "epr-13349.a10", 0x00000, 0x08000, CRC(b83183f8) SHA1(9d6127f51c04a16bb2637dc9992b843b94613c2b) )
- ROM_LOAD( "opr-13350.a11", 0x10000, 0x20000, CRC(3c59a658) SHA1(2cef13ee9e666bb850fe6c6e6954d7b75df665a9) )
-ROM_END
ROM_START( ryukyud )
ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code
@@ -9270,9 +9226,9 @@ GAME( 1988, ddux, 0, system16b_fd1094, ddux, segas16b_stat
GAME( 1988, dduxj, ddux, system16b_fd1094, ddux, segas16b_state, init_generic_5521, ROT0, "Sega", "Dynamite Dux (set 2, Japan) (FD1094 317-0094)", 0 )
GAME( 1988, ddux1, ddux, system16b_i8751, ddux, segas16b_state, init_ddux_5704, ROT0, "Sega", "Dynamite Dux (set 1) (8751 317-0095)", 0 )
-GAME( 1987, dunkshot, 0, system16b_fd1089a, dunkshot, segas16b_state, init_dunkshot_5358_small,ROT0, "Sega", "Dunk Shot (Rev C, FD1089A 317-0022)", 0 )
-GAME( 1987, dunkshota, dunkshot, system16b_fd1089a, dunkshot, segas16b_state, init_dunkshot_5358_small,ROT0, "Sega", "Dunk Shot (Rev A, FD1089A 317-0022)", 0 )
-GAME( 1986, dunkshoto, dunkshot, system16b_fd1089a, dunkshoto, segas16b_state, init_dunkshot_5358_small,ROT0, "Sega", "Dunk Shot (FD1089A 317-0022)", 0 )
+GAME( 1987, dunkshot, 0, system16b_fd1089a, dunkshot, segas16b_state, init_dunkshot_5358_small,ROT0, "Sega", "Dunk Shot (Rev C, FD1089A 317-0022)", 0 )
+GAME( 1987, dunkshota, dunkshot, system16b_fd1089a, dunkshot, segas16b_state, init_dunkshot_5358_small,ROT0, "Sega", "Dunk Shot (Rev A, FD1089A 317-0022)", 0 )
+GAME( 1986, dunkshoto, dunkshot, system16b_fd1089a, dunkshot, segas16b_state, init_dunkshot_5358_small,ROT0, "Sega", "Dunk Shot (FD1089A 317-0022)", 0 )
GAME( 1989, eswat, 0, system16b_fd1094_5797, eswat, segas16b_state, init_generic_5797, ROT0, "Sega", "E-Swat - Cyber Police (set 4, World) (FD1094 317-0130)", 0 )
GAME( 1989, eswatu, eswat, system16b_fd1094_5797, eswat, segas16b_state, init_generic_5797, ROT0, "Sega", "E-Swat - Cyber Police (set 3, US) (FD1094 317-0129)", 0 )
@@ -9305,7 +9261,6 @@ GAME( 1988, cencourt, passsht, system16b_mc8123, cencourt, segas16b_stat
GAME( 1991, riotcity, 0, system16b, riotcity, segas16b_state, init_generic_5704, ROT0, "Sega / Westone", "Riot City (Japan)", 0 )
GAME( 1990, ryukyu, 0, system16b_fd1094, ryukyu, segas16b_state, init_generic_5704, ROT0, "Success / Sega", "RyuKyu (Japan) (FD1094 317-5023)", 0 )
-GAME( 1990, ryukyua, ryukyu, system16b_fd1094, ryukyu, segas16b_state, init_generic_5704, ROT0, "Success / Sega", "RyuKyu (Japan) (FD1094 317-5023A)", MACHINE_NOT_WORKING ) // decryption key not available
GAME( 1987, defense, sdi, system16b_fd1089a, sdi, segas16b_state, init_defense_5358_small, ROT0, "Sega", "Defense (System 16B, FD1089A 317-0028)", 0 )
GAME( 1987, sdib, sdi, system16b_fd1089a, sdi, segas16b_state, init_defense_5358_small, ROT0, "Sega", "SDI - Strategic Defense Initiative (System 16B, FD1089A 317-0028)", 0 )
@@ -9863,23 +9818,23 @@ void isgsm_state::machine_reset()
}
-void isgsm_state::isgsm(machine_config &config)
-{
+MACHINE_CONFIG_START(isgsm_state::isgsm)
system16b(config);
// basic machine hardware
- config.device_remove("maincpu");
- config.device_remove("mapper");
+ MCFG_DEVICE_REMOVE("maincpu")
+ MCFG_DEVICE_REMOVE("mapper")
- M68000(config, m_maincpu, 16000000); // no obvious CPU, but seems to be clocked faster than an original system16 based on the boot times
- m_maincpu->set_addrmap(AS_PROGRAM, &isgsm_state::isgsm_map);
- m_maincpu->set_vblank_int("screen", FUNC(isgsm_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 16000000) // no obvious CPU, but seems to be clocked faster than an original system16 based on the boot times
+ MCFG_DEVICE_PROGRAM_MAP(isgsm_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", isgsm_state, irq4_line_hold)
- m_soundcpu->set_addrmap(AS_PROGRAM, &isgsm_state::bootleg_sound_map);
- m_soundcpu->set_addrmap(AS_IO, &isgsm_state::bootleg_sound_portmap);
+ MCFG_DEVICE_MODIFY("soundcpu")
+ MCFG_DEVICE_PROGRAM_MAP(bootleg_sound_map)
+ MCFG_DEVICE_IO_MAP(bootleg_sound_portmap)
GENERIC_LATCH_8(config, m_soundlatch);
-}
+MACHINE_CONFIG_END
void isgsm_state::init_isgsm()
{
diff --git a/src/mame/drivers/segas18.cpp b/src/mame/drivers/segas18.cpp
index ad5e6afac73..8ab3a2752e8 100644
--- a/src/mame/drivers/segas18.cpp
+++ b/src/mame/drivers/segas18.cpp
@@ -2749,9 +2749,6 @@ ROM_END
Moonwalker, Sega System 18
CPU: FD1094 (317-0158)
ROM Board: 171-5873B
- Main board: 837-7530-01
- Game BD: 833-7528-01 MOONWALKER
- ROM Board: 834-7529-01
*/
ROM_START( mwalku )
ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code - custom cpu 317-0158
diff --git a/src/mame/drivers/segas24.cpp b/src/mame/drivers/segas24.cpp
index 083eacd7666..e0b73147bb8 100644
--- a/src/mame/drivers/segas24.cpp
+++ b/src/mame/drivers/segas24.cpp
@@ -1967,6 +1967,7 @@ void segas24_state::system24(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "lspeaker", 0.5).add_route(ALL_OUTPUTS, "rspeaker", 0.5); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/segas32.cpp b/src/mame/drivers/segas32.cpp
index c19bcfd4c61..2741a33d812 100644
--- a/src/mame/drivers/segas32.cpp
+++ b/src/mame/drivers/segas32.cpp
@@ -5326,30 +5326,7 @@ ROM_START( titlefj )
ROM_LOAD( "mpr-15385.ic1", 0x000000, 0x200000, CRC(5a9b0aa0) SHA1(d208aa165f9eea05e3b8c3f406ff44374e4f6887) )
ROM_END
-/**************************************************************************************************************************
- **************************************************************************************************************************
- **************************************************************************************************************************
- AS-1 - Multi-32
- not protected?
-*/
-ROM_START( as1 )
- ROM_REGION( 0x200000, "mainpcb:maincpu", 0 ) /* v60 code */
- ROM_LOAD32_WORD_x2( "epr15420.ic37", 0x000000, 0x20000, CRC(1f9747b0) SHA1(51d1fbccf6960967d4458ba26fad42ac51978c67) )
- ROM_LOAD32_WORD_x2( "epr15421.ic40", 0x000002, 0x20000, CRC(aa96422a) SHA1(21cf327d102f5c7c4a4e41d889d9b4d10c44de35) )
-
- ROM_REGION( 0x80000, "mainpcb:soundcpu", 0 ) /* sound CPU */
- ROM_LOAD_x4( "epr15367.ic31", 0x00000, 0x20000, CRC(0220f078) SHA1(9fab79fc91764ecf678bfa4d38d1b4054e258b76) )
-
- ROM_REGION( 0x100000, "mainpcb:gfx1", 0 ) /* tiles */
- ROM_LOAD16_BYTE( "epr15422.ic3", 0x000000, 0x080000, CRC(6c61ba6d) SHA1(b41237ced4a2e8741ae0339c333bea4221903690) )
- ROM_LOAD16_BYTE( "epr15423.ic11", 0x000001, 0x080000, CRC(5178912a) SHA1(b637451c28877ddc93c9920bea356888b4c8eea3) )
- ROM_REGION32_BE( 0x1000000, "mainpcb:sprites", ROMREGION_ERASEFF ) /* sprites */
- // empty
-
- ROM_REGION( 0x400000, "mainpcb:sega", ROMREGION_ERASEFF ) /* Sega PCM sound data */
- // empty
-ROM_END
/*************************************
*
@@ -5944,5 +5921,3 @@ GAME( 1992, scrossu, scross, sega_multi32_analog, scross, segas32_ne
GAME( 1992, titlef, 0, sega_multi32, titlef, segas32_new_state, init_titlef, ROT0, "Sega", "Title Fight (World)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1992, titlefu, titlef, sega_multi32, titlef, segas32_new_state, init_titlef, ROT0, "Sega", "Title Fight (US)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1992, titlefj, titlef, sega_multi32, titlef, segas32_new_state, init_titlef, ROT0, "Sega", "Title Fight (Japan)", MACHINE_IMPERFECT_GRAPHICS )
-
-GAME( 1993, as1, 0, sega_multi32, multi32_generic, segas32_new_state, init_holo, ROT0, "Sega", "AS-1 Controller", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // needs laserdisc emulation
diff --git a/src/mame/drivers/segasp.cpp b/src/mame/drivers/segasp.cpp
index 3dc915afc43..0b80de4614f 100644
--- a/src/mame/drivers/segasp.cpp
+++ b/src/mame/drivers/segasp.cpp
@@ -56,7 +56,6 @@ King of Beetle: Battle Terminal ???-????? no
Love & Berry Ver 1.003 834-14661-02 ROM EXP 253-5508-0446 AAFE-01D84934906
Love & Berry Ver 2.000 834-14661-02 ROM EXP 253-5508-0446 AAFE-01D8493xxxx
Love & Berry 3 EXP Ver 1.002 834-14661-01 MDA-C0042 CF US/EXP 253-5508-0446 AAFE-01D64704904
-Love & Berry 3 CHN ???-????? MDA-C0071 CF EXP 253-5508-0446 AAFE-01G15765216
Marine & Marine ???-????? no ???-????-???? AAFE-xxxxxxxxxxx
Medalink 837-14699 no
Medalink 837-14700 no
@@ -457,7 +456,7 @@ ROM_START( dinoking )
ROM_PARAMETER( ":rom_board:id", "5502" ) // actually 8x 128Mbit FlashROMs
ROM_REGION( 0x800, "pic_readout", 0 )
- ROM_LOAD( "317-0408-com.ic15", 0, 0x800, CRC(f77c49dc) SHA1(e10173bbbd5930ed159cec9a7dba308e2a3f3c43) )
+ ROM_LOAD( "317-0408-com.ic15", 0, 0x800, BAD_DUMP CRC(0e94daba) SHA1(4e9722333a29afd0dbadba78b16344b77a689610) )
ROM_END
ROM_START( lovebery )
@@ -541,16 +540,13 @@ ROM_START( dinokior )
ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASEFF)
- // DINOSAUR KING
- // Operation:Dinosaur Rescue
- // MDA-C0021
DISK_REGION( "cflash" )
DISK_IMAGE( "mda-c0021", 0, SHA1(947c987fb93a32c5acf7839e0186de91b5a9facc) )
ROM_PARAMETER( ":rom_board:id", "5502" ) // actually 8x 128Mbit FlashROMs
ROM_REGION( 0x800, "pic_readout", 0 )
- ROM_LOAD( "317-0408-com.ic15", 0, 0x800, CRC(f77c49dc) SHA1(e10173bbbd5930ed159cec9a7dba308e2a3f3c43) )
+ ROM_LOAD( "317-0408-com.ic15", 0, 0x800, BAD_DUMP CRC(0e94daba) SHA1(4e9722333a29afd0dbadba78b16344b77a689610) )
ROM_END
ROM_START( dinoki25 )
@@ -561,16 +557,13 @@ ROM_START( dinoki25 )
ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASEFF)
- // DINOSAUR KING
- // VER2.5 ENG_ASIA
- // MDA-C0047
DISK_REGION( "cflash" )
DISK_IMAGE( "mda-c0047", 0, SHA1(0f97291d9c5dbe3e66a5220da05aebdfaa78b35d) )
ROM_PARAMETER( ":rom_board:id", "5508" ) // 8x 512Mbit FlashROMs
ROM_REGION( 0x800, "pic_readout", 0 )
- ROM_LOAD( "317-0408-com.ic15", 0, 0x800, CRC(f77c49dc) SHA1(e10173bbbd5930ed159cec9a7dba308e2a3f3c43) )
+ ROM_LOAD( "317-0408-com.ic15", 0, 0x800, BAD_DUMP CRC(0e94daba) SHA1(4e9722333a29afd0dbadba78b16344b77a689610) )
// DINOSAUR KING
// TYPE-3
@@ -588,8 +581,6 @@ ROM_START( loveber3 )
ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASEFF)
- // LOVE AND BERRY III ENG
- // MDA-C0042
DISK_REGION( "cflash" )
DISK_IMAGE( "mda-c0042", 0, SHA1(9992d90dae8ce7636e4153e02b779c27931b3be6) )
@@ -599,26 +590,6 @@ ROM_START( loveber3 )
ROM_LOAD( "317-0446-com.ic15", 0, 0x800, BAD_DUMP CRC(60f56bf2) SHA1(35e697aca7213e3fb1ebe75bb8991b1b992af6d9) )
ROM_END
-// This game's protection uses contact IC card reader made by Hirocon, with 2 IC card slots, cards probably SLE4428 or SLE5528.
-ROM_START( loveber3cn )
- SEGASP_BIOS
- ROM_DEFAULT_BIOS( "v201" )
- SEGASP_EXP
- SEGASP_MISC
-
- ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASEFF)
-
- // LOVE AND BERRY III CHN
- // MDA-C0071
- DISK_REGION( "cflash" )
- DISK_IMAGE( "mda-c0071", 0, SHA1(ea65def6d97dc76c08654fae3c89b80a0492575b) ) // unused space contain leftovers from "Disney Magical Dream Dance" game, encrypted, key is 1ffbc9f0
-
- ROM_PARAMETER( ":rom_board:id", "5508" ) // 8x 512Mbit FlashROMs
-
- ROM_REGION( 0x800, "pic_readout", 0 )
- ROM_LOAD( "317-0446-com.ic15", 0, 0x800, BAD_DUMP CRC(60f56bf2) SHA1(35e697aca7213e3fb1ebe75bb8991b1b992af6d9) )
-ROM_END
-
ROM_START( tetgiano )
SEGASP_BIOS
ROM_DEFAULT_BIOS( "v201" )
@@ -627,9 +598,6 @@ ROM_START( tetgiano )
ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASEFF)
- // TETRIS - DEKARIS (romaji)
- // / TETRIS® - GIANT
- // MDA-C0076
DISK_REGION( "cflash" )
DISK_IMAGE( "mda-c0076", 0, SHA1(6987c888d2a3ada2d07f6396d47fdba507ca859d) )
@@ -656,5 +624,4 @@ GAME( 2009, tetgiant,segasp, segasp, segasp, segasp_state, init_segasp, R
GAME( 2006, dinokior,segasp, segasp, segasp, segasp_state, init_segasp, ROT0, "Sega", "Dinosaur King - Operation: Dinosaur Rescue (USA, Export) (MDA-C0021)", GAME_FLAGS )
GAME( 2008, dinoki25,segasp, segasp, segasp, segasp_state, init_segasp, ROT0, "Sega", "Dinosaur King - D-Team VS. the Alpha Fortress (Export, Ver 2.500) (MDA-C0047)", GAME_FLAGS )
GAME( 2007, loveber3,segasp, segasp, segasp, segasp_state, init_segasp, ROT0, "Sega", "Love And Berry - 3rd-5th Collection (USA, Export, Ver 1.002) (MDA-C0042)", GAME_FLAGS )
-GAME( 2010, loveber3cn,loveber3, segasp, segasp, segasp_state, init_segasp, ROT0, "Sega", "Love And Berry - 3rd-5th Collection (China, Ver 1.001) (MDA-C0071)", GAME_FLAGS )
GAME( 2009, tetgiano,tetgiant, segasp, segasp, segasp_state, init_segasp, ROT0, "Sega", "Tetris Giant / Tetris Dekaris (MDA-C0076)", GAME_FLAGS )
diff --git a/src/mame/drivers/segattl.cpp b/src/mame/drivers/segattl.cpp
index 9d61f5e4863..e582698a53a 100644
--- a/src/mame/drivers/segattl.cpp
+++ b/src/mame/drivers/segattl.cpp
@@ -131,21 +131,20 @@ void segattl_state::video_start()
{
}
-void segattl_state::segattl(machine_config &config)
-{
+MACHINE_CONFIG_START(segattl_state::segattl)
+
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_segattl);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(segattl)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL);
- m_video->set_vert_params(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.30);
-}
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/segaxbd.cpp b/src/mame/drivers/segaxbd.cpp
index 38452f859a1..8287207e302 100644
--- a/src/mame/drivers/segaxbd.cpp
+++ b/src/mame/drivers/segaxbd.cpp
@@ -732,7 +732,7 @@ WRITE8_MEMBER(segaxbd_state::smgp_motor_w)
READ8_MEMBER(segaxbd_rascot_state::commram_r)
{
- return m_commram->right_r(m_commram_bank << 3 | offset);
+ return m_commram->right_r(space, m_commram_bank << 3 | offset);
}
@@ -743,7 +743,7 @@ READ8_MEMBER(segaxbd_rascot_state::commram_r)
WRITE8_MEMBER(segaxbd_rascot_state::commram_w)
{
- m_commram->right_w(m_commram_bank << 3 | offset, data);
+ m_commram->right_w(space, m_commram_bank << 3 | offset, data);
}
@@ -887,9 +887,9 @@ void segaxbd_state::palette_init()
int i2 = (value >> 2) & 1;
int i1 = (value >> 1) & 1;
int i0 = (value >> 0) & 1;
- m_palette_normal[value] = combine_weights(weights_normal, i0, i1, i2, i3, i4, 0);
- m_palette_shadow[value] = combine_weights(weights_sh, i0, i1, i2, i3, i4, 0);
- m_palette_hilight[value] = combine_weights(weights_sh, i0, i1, i2, i3, i4, 1);
+ m_palette_normal[value] = combine_6_weights(weights_normal, i0, i1, i2, i3, i4, 0);
+ m_palette_shadow[value] = combine_6_weights(weights_sh, i0, i1, i2, i3, i4, 0);
+ m_palette_hilight[value] = combine_6_weights(weights_sh, i0, i1, i2, i3, i4, 1);
}
}
@@ -1789,7 +1789,7 @@ void segaxbd_new_state_double::sega_xboard_fd1094_double(machine_config &config)
SEGA_XBD_FD1094(config, "mainpcb", 0);
SEGA_XBD_FD1094(config, "subpcb", 0);
- //config.m_perfect_cpu_quantum = subtag("mainpcb:maincpu"); // doesn't help..
+ //MCFG_QUANTUM_PERFECT_CPU("mainpcb:maincpu") // doesn't help..
}
diff --git a/src/mame/drivers/segaybd.cpp b/src/mame/drivers/segaybd.cpp
index fbeee43126d..c56ab281192 100644
--- a/src/mame/drivers/segaybd.cpp
+++ b/src/mame/drivers/segaybd.cpp
@@ -2722,6 +2722,7 @@ void segaybd_state::init_generic()
save_item(NAME(m_timer_irq_state));
save_item(NAME(m_vblank_irq_state));
save_item(NAME(m_misc_io_data));
+ save_item(NAME(m_tmp_bitmap));
}
diff --git a/src/mame/drivers/seibucats.cpp b/src/mame/drivers/seibucats.cpp
index 119003e59bb..c6d5d7c8364 100644
--- a/src/mame/drivers/seibucats.cpp
+++ b/src/mame/drivers/seibucats.cpp
@@ -293,39 +293,41 @@ IRQ_CALLBACK_MEMBER(seibucats_state::spi_irq_callback)
}
#endif
-void seibucats_state::seibucats(machine_config &config)
-{
+MACHINE_CONFIG_START(seibucats_state::seibucats)
+
/* basic machine hardware */
- I386(config, m_maincpu, MAIN_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &seibucats_state::seibucats_map);
- m_maincpu->set_vblank_int("screen", FUNC(seibuspi_state::spi_interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(seibuspi_state::spi_irq_callback));
+ MCFG_DEVICE_ADD("maincpu",I386, MAIN_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(seibucats_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", seibuspi_state, spi_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(seibuspi_state, spi_irq_callback)
EEPROM_93C46_16BIT(config, "eeprom");
//JRC6355E(config, m_rtc, XTAL(32'768));
- I8251(config, "usart1", 0);
- I8251(config, "usart2", 0);
+ MCFG_DEVICE_ADD("usart1", I8251, 0)
+ MCFG_DEVICE_ADD("usart2", I8251, 0)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
-// screen.set_screen_update(FUNC(seibucats_state::screen_update));
- screen.set_screen_update(FUNC(seibuspi_state::screen_update_sys386f));
- screen.set_raw(PIXEL_CLOCK, SPI_HTOTAL, SPI_HBEND, SPI_HBSTART, SPI_VTOTAL, SPI_VBEND, SPI_VBSTART);
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_UPDATE_DRIVER(seibucats_state, screen_update)
+ MCFG_SCREEN_UPDATE_DRIVER(seibuspi_state, screen_update_sys386f)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, SPI_HTOTAL, SPI_HBEND, SPI_HBSTART, SPI_VTOTAL, SPI_VBEND, SPI_VBSTART)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_seibucats);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_seibucats)
- PALETTE(config, m_palette, palette_device::BLACK, 8192);
+ MCFG_DEVICE_ADD(m_palette, PALETTE, palette_device::BLACK, 8192);
+// MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ //MCFG_PALETTE_INIT_OWNER(seibucats_state, seibucats)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ymz280b_device &ymz(YMZ280B(config, "ymz", XTAL(16'384'000)));
- ymz.add_route(0, "lspeaker", 1.0);
- ymz.add_route(0, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, XTAL(16'384'000))
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/seibuspi.cpp b/src/mame/drivers/seibuspi.cpp
index 3ae437b0598..0f1d32c1816 100644
--- a/src/mame/drivers/seibuspi.cpp
+++ b/src/mame/drivers/seibuspi.cpp
@@ -3517,43 +3517,6 @@ ROM_START( rdft2jb ) /* SPI Cart, Japan */
ROM_LOAD("flash0_blank_region01.u1053", 0x000000, 0x100000, CRC(7ae7ab76) SHA1(a2b196f470bf64af94002fc4e2640fadad00418f) )
ROM_END
-ROM_START( rdft2jc ) /* SPI SXX2C ROM SUB8 Cart, Japan */
- ROM_REGION32_LE( 0x200000, "maincpu", 0 ) /* i386 program */
- ROM_LOAD32_BYTE("seibu_1.u0211", 0x000000, 0x80000, CRC(36b6407c) SHA1(b3f5bb3c582aca71e0c7d9da5951b30c7389cc24) )
- ROM_LOAD32_BYTE("seibu_2.u0212", 0x000001, 0x80000, CRC(65ee556e) SHA1(13311850aabba9fc373adfd5cd590c114505933f) )
- ROM_LOAD32_BYTE("seibu_3.u0221", 0x000002, 0x80000, CRC(d2458358) SHA1(18a9cfee77a6a09584bc3fb0073c822d12de5bf1) )
- ROM_LOAD32_BYTE("seibu_4.u0220", 0x000003, 0x80000, CRC(5c4412f9) SHA1(c72603bee3ce14f40d4bf5e3ae3f041b923edd57) )
-
- ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
-
- ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF ) /* text layer roms */
- ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(6fdf4cf6) SHA1(7e9d4a49e829dfdc373c0f5acfbe8c7a91ac115b) )
- ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(69b7899b) SHA1(d3cacd4ef4d2c95d803403101beb9d4be75fae61) )
- ROM_LOAD24_BYTE("fixp.u0514", 0x000002, 0x10000, CRC(99a5fece) SHA1(44ae95d650ed6e00202d3438f5f91a5e52e319cb) )
-
- ROM_REGION( 0xc00000, "gfx2", ROMREGION_ERASEFF ) /* background layer roms */
- ROM_LOAD24_WORD("bg-1d.u0535", 0x000000, 0x400000, CRC(6143f576) SHA1(c034923d0663d9ef24357a03098b8cb81dbab9f8) )
- ROM_LOAD24_BYTE("bg-1p.u0537", 0x000002, 0x200000, CRC(55e64ef7) SHA1(aae991268948d07342ee8ba1b3761bd180aab8ec) )
- ROM_LOAD24_WORD("bg-2d.u0536", 0x600000, 0x400000, CRC(c607a444) SHA1(dc1aa96a42e9394ca6036359670a4ec6f830c96d) )
- ROM_LOAD24_BYTE("bg-2p.u0538", 0x600002, 0x200000, CRC(f0830248) SHA1(6075df96b49e70d2243fef691e096119e7a4d044) )
-
- ROM_REGION( 0x1200000, "gfx3", 0 ) /* sprites */
- ROM_LOAD("obj3.u0434", 0x0000000, 0x400000, CRC(e08f42dc) SHA1(5188d71d4355eaf43ea8893b4cfc4fe80cc24f41) )
- ROM_LOAD("obj3b.u0433", 0x0400000, 0x200000, CRC(1b6a523c) SHA1(99a420dbc8e22e7832ccda7cec9fa661a2a2687a) )
- ROM_LOAD("obj2.u0431", 0x0600000, 0x400000, CRC(7aeadd8e) SHA1(47103c0579240c5b1add4d0b164eaf76f5fa97f0) )
- ROM_LOAD("obj2b.u0432", 0x0a00000, 0x200000, CRC(5d790a5d) SHA1(1ed5d4ad4c9a7e505ce35dcc90d184c26ce891dc) )
- ROM_LOAD("obj1.u0429", 0x0c00000, 0x400000, CRC(c2c50f02) SHA1(b81397b5800c6d49f58b7ac7ff6eac56da3c5257) )
- ROM_LOAD("obj1b.u0430", 0x1000000, 0x200000, CRC(5259321f) SHA1(3c70c1147e49f81371d0f60f7108d9718d56faf4) )
-
- ROM_REGION32_LE( 0xa00000, "sound01", ROMREGION_ERASE00 ) /* sound roms */
- ROM_LOAD32_WORD("pcm.u0217", 0x000000, 0x100000, CRC(2edc30b5) SHA1(c25d690d633657fc3687636b9070f36bd305ae06) )
- ROM_CONTINUE( 0x400000, 0x100000 )
- ROM_LOAD32_BYTE("sound1.u0222", 0x800000, 0x080000, CRC(b7bd3703) SHA1(6427a7e6de10d6743d6e64b984a1d1c647f5643a) )
-
- ROM_REGION( 0x100000, "soundflash1", 0 ) /* on SPI motherboard */
- ROM_LOAD("flash0_blank_region01.u1053", 0x000000, 0x100000, CRC(7ae7ab76) SHA1(a2b196f470bf64af94002fc4e2640fadad00418f) )
-ROM_END
-
ROM_START( rdft2it ) /* SPI Cart, Italy */
ROM_REGION32_LE( 0x200000, "maincpu", 0 ) /* i386 program */
ROM_LOAD32_BYTE("seibu1.bin",0x000000, 0x80000, CRC(501b92a9) SHA1(3e1c5cc63906ec7b97a3478557ec2638c515d726) )
@@ -4176,7 +4139,6 @@ GAME( 1997, rdft2aa, rdft2, rdft2, spi_2button, seibuspi_state, init_rdf
GAME( 1997, rdft2it, rdft2, rdft2, spi_2button, seibuspi_state, init_rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
// these are unique
GAME( 1997, rdft2jb, rdft2, rdft2, spi_2button, seibuspi_state, init_rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 3)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, rdft2jc, rdft2, rdft2, spi_2button, seibuspi_state, init_rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 4)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, rdft2t, rdft2, rdft2, spi_2button, seibuspi_state, init_rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Taiwan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, rdft2u, rdft2, rdft2, spi_2button, seibuspi_state, init_rdft2, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters 2 - Operation Hell Dive (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/seicross.cpp b/src/mame/drivers/seicross.cpp
index 5bf453541af..a848fa0edc5 100644
--- a/src/mame/drivers/seicross.cpp
+++ b/src/mame/drivers/seicross.cpp
@@ -395,30 +395,30 @@ INTERRUPT_GEN_MEMBER(seicross_state::vblank_irq)
}
-void seicross_state::no_nvram(machine_config &config)
-{
+MACHINE_CONFIG_START(seicross_state::no_nvram)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'432'000) / 6); /* D780C, 3.072 MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &seicross_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &seicross_state::main_portmap);
- m_maincpu->set_vblank_int("screen", FUNC(seicross_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'432'000) / 6) /* D780C, 3.072 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", seicross_state, vblank_irq)
- NSC8105(config, m_mcu, XTAL(18'432'000) / 6); /* ??? */
- m_mcu->set_addrmap(AS_PROGRAM, &seicross_state::mcu_no_nvram_map);
+ MCFG_DEVICE_ADD("mcu", NSC8105, XTAL(18'432'000) / 6) /* ??? */
+ MCFG_DEVICE_PROGRAM_MAP(mcu_no_nvram_map)
- config.m_minimum_quantum = attotime::from_hz(1200); /* 20 CPU slices per frame - a high value to ensure proper */
+ MCFG_QUANTUM_TIME(attotime::from_hz(1200)) /* 20 CPU slices per frame - an high value to ensure proper */
/* synchronization of the CPUs */
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* frames per second, vblank duration */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(seicross_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* frames per second, vblank duration */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(seicross_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, m_palette, gfx_seicross);
PALETTE(config, m_palette, FUNC(seicross_state::seicross_palette), 64);
@@ -431,28 +431,27 @@ void seicross_state::no_nvram(machine_config &config)
aysnd.port_b_write_callback().set(FUNC(seicross_state::portB_w));
aysnd.add_route(ALL_OUTPUTS, "speaker", 0.25);
- DAC_4BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.12); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.12) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void seicross_state::nvram(machine_config &config)
-{
+MACHINE_CONFIG_START(seicross_state::nvram)
no_nvram(config);
/* basic machine hardware */
- m_mcu->set_addrmap(AS_PROGRAM, &seicross_state::mcu_nvram_map);
+ MCFG_DEVICE_MODIFY("mcu")
+ MCFG_DEVICE_PROGRAM_MAP(mcu_nvram_map)
NVRAM(config, "nvram").set_custom_handler(FUNC(seicross_state::nvram_init));
-}
+MACHINE_CONFIG_END
-void seicross_state::friskytb(machine_config &config)
-{
+MACHINE_CONFIG_START(seicross_state::friskytb)
nvram(config);
- m_mcu->set_addrmap(AS_OPCODES, &seicross_state::decrypted_opcodes_map);
-}
+ MCFG_DEVICE_MODIFY("mcu")
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/seicupbl.cpp b/src/mame/drivers/seicupbl.cpp
index a052a287d03..f74f53ddce3 100644
--- a/src/mame/drivers/seicupbl.cpp
+++ b/src/mame/drivers/seicupbl.cpp
@@ -11,13 +11,6 @@
- tilemap chip drawings might be merged between this and other
Seibu implementations.
-OSC: 40MHz, 15MHz & 8MHz
-
-Measured clocks:
- MC68000P12F - 14.99MHz
- Z0840006PSC - 3.996MHz
- OKI M6295 - 0.999MHz
-
***************************************************************************/
@@ -32,6 +25,8 @@ Measured clocks:
#include "speaker.h"
+#define MAIN_CLOCK XTAL(8'000'000)
+
class seicupbl_state : public driver_device
{
public:
@@ -556,34 +551,34 @@ static GFXDECODE_START( gfx_seicupbl_csb )
GFXDECODE_ENTRY( "char", 0, cupsocsb_8x8_tilelayout, 48*16, 16 )
GFXDECODE_ENTRY( "gfx3", 0, cupsocsb_tilelayout, 0*16, 32 )
GFXDECODE_ENTRY( "gfx4", 0, cupsocsb_tilelayout, 32*16, 16 ) /* unused */
- GFXDECODE_ENTRY( "sprite", 0, cupsocsb_spritelayout, 0*16, 8*16 )
+ GFXDECODE_ENTRY( "sprite", 0, cupsocsb_spritelayout, 0*16, 8*16 )
GFXDECODE_ENTRY( "gfx5", 0, cupsocsb_tilelayout, 32*16, 16 )
GFXDECODE_ENTRY( "gfx6", 0, cupsocsb_tilelayout, 16*16, 16 )
GFXDECODE_END
-void seicupbl_state::cupsocbl(machine_config &config)
-{
+MACHINE_CONFIG_START(seicupbl_state::cupsocbl)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 15_MHz_XTAL); // 15MHz verified
- m_maincpu->set_addrmap(AS_PROGRAM, &seicupbl_state::cupsocbl_mem);
- m_maincpu->set_vblank_int("screen", FUNC(seicupbl_state::irq4_line_hold)); /* VBL */
+ MCFG_DEVICE_ADD("maincpu", M68000,12000000)
+ MCFG_DEVICE_PROGRAM_MAP(cupsocbl_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", seicupbl_state, irq4_line_hold) /* VBL */
- SEIBU_COP_BOOTLEG(config, "seibucop_boot", m_maincpu);
+ MCFG_DEVICE_ADD("seibucop_boot", SEIBU_COP_BOOTLEG, "maincpu")
/*Different Sound hardware*/
- Z80(config, m_audiocpu, 8_MHz_XTAL/2); // 4MHz verified
- m_audiocpu->set_addrmap(AS_PROGRAM, &seicupbl_state::cupsocbl_sound_mem);
- //m_audiocpu->set_periodic_int("screen", FUNC(seicupbl_state::nmi_line_pulse));
+ MCFG_DEVICE_ADD("audiocpu", Z80,14318180/4)
+ MCFG_DEVICE_PROGRAM_MAP(cupsocbl_sound_mem)
+ //MCFG_PERIODIC_INT("screen", nmi_line_pulse)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(42*8, 36*8);
- screen.set_visarea(0*8, 40*8-1, 0*8, 30*8-1);
- screen.set_screen_update(FUNC(seicupbl_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(42*8, 36*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(seicupbl_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
//seibu_crtc_device &crtc(SEIBU_CRTC(config, "crtc", 0));
//crtc.layer_en_callback().set(FUNC(seicupbl_state::tilemap_enable_w));
@@ -602,8 +597,9 @@ void seicupbl_state::cupsocbl(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- OKIM6295(config, m_oki, 8_MHz_XTAL/8, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // 1MHz verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
@@ -626,12 +622,10 @@ Seibu Cup Soccer - Seibu - Bootleg
1 x oki 6295
sc_01 (prg)
sc_02 and sc_03 (data)
-8MHz & 40MHz OSC
(prg)
-1 x 68000P12
+1 x 68000
sc_04 and sc_05
-15MHz OSC
(gfx)
2 x ti tpc1020
@@ -707,31 +701,26 @@ ROM_START( cupsocsb )
ROM_LOAD16_BYTE( "sc_14.bin", 0x00001, 0x080000, CRC(566086c2) SHA1(b7d09ce978f99ecc0d1975b31330ed49317701d5) )
ROM_END
-/* slight changes in the program roms compared to above set, all remaining roms were the same
- main PCB is marked: "SOCCER 1", "rev.5" and "lc" on component side ("lc" is the Italian for "Lato Componenti" which translates to "Components Side")
- main PCB is marked: "SOCCER 1", "rev.5" and "ls" on component side ("ls" is the Italian for "Lato Saldature" which translates to "Solders Side")
- ROMs PCB is marked: "CALCIO 2", "rev.3" and "lc" on component side ("CALCIO is the Italian for "SOCCER"; "lc" is the Italian for "Lato Componenti" which translates to "Components Side")
- ROMs PCB is marked: "CALCIO 2", "rev.3" and "ls" on component side ("CALCIO is the Italian for "SOCCER"; "ls" is the Italian for "Lato Saldature" which translates to "Solders Side")
- main PCB is labelled: "SOCCER" on solder side */
+/* slight changes in the program roms compared to above set, all remaining roms were the same */
ROM_START( cupsocsb2 )
ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */
- ROM_LOAD16_BYTE( "4.27040.u11", 0x00001, 0x80000, CRC(83db76f8) SHA1(ffcd0a728de58871b945c15cc27da374b587e170) ) // actually was a 27c4001
- ROM_LOAD16_BYTE( "5.27040.u17", 0x00000, 0x80000, CRC(c01e88c6) SHA1(8f90261792343c92ddd877ab8a2480b5aac82961) ) // actually was a 27c4001
+ ROM_LOAD16_BYTE( "4", 0x00001, 0x80000, CRC(83db76f8) SHA1(ffcd0a728de58871b945c15cc27da374b587e170) ) // sldh
+ ROM_LOAD16_BYTE( "5", 0x00000, 0x80000, CRC(c01e88c6) SHA1(8f90261792343c92ddd877ab8a2480b5aac82961) ) // sldh
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code */
- ROM_LOAD( "1.27512.u20", 0x000000, 0x08000, CRC(cea39d6d) SHA1(f0b79c03ffafdd1e57673d6d4836becbe415110b) ) // 27c512
+ ROM_LOAD( "sc_01.bin", 0x000000, 0x08000, CRC(cea39d6d) SHA1(f0b79c03ffafdd1e57673d6d4836becbe415110b) )
ROM_CONTINUE( 0x000000, 0x08000 )
ROM_REGION( 0x200000, "sprite", ROMREGION_INVERT ) /* bootleg sprite gfx */
- ROM_LOAD( "7.27040.u86", 0x000000, 0x080000, CRC(dcb29d01) SHA1(72b4234622605f0ab03f21fdb6a61c6dac36000d) ) // actually was a 27c4001
- ROM_LOAD( "6.27040.u87", 0x080000, 0x080000, CRC(2dc70e05) SHA1(f1d0beb8428a7e1d7c7818e6719abdc543b2fa80) ) // actually was a 27c4001
+ ROM_LOAD( "sc_07.bin", 0x000000, 0x080000, CRC(dcb29d01) SHA1(72b4234622605f0ab03f21fdb6a61c6dac36000d) )
+ ROM_LOAD( "sc_06.bin", 0x080000, 0x080000, CRC(2dc70e05) SHA1(f1d0beb8428a7e1d7c7818e6719abdc543b2fa80) )
ROM_COPY( "sprite", 0x00000, 0x100000, 0x100000 )
ROM_REGION( 0x200000, "test1", 0 ) /* bootleg tile gfx */
- ROM_LOAD16_BYTE( "9.27040.u36", 0x000000, 0x080000, CRC(695b6342) SHA1(dfccb43789021ba2568b9284ae61e64f7f89b152) ) // actually was a 27c4001
- ROM_LOAD16_BYTE( "10.27040.u37", 0x000001, 0x080000, CRC(27e172b8) SHA1(ed86db2f42c8061607d46f2407b0130aaf692a02) ) // actually was a 27c4001
- ROM_LOAD16_BYTE( "8.27040.u38", 0x100000, 0x080000, CRC(637120f3) SHA1(b4b2ad192e46ff80d4cb440d7fb6dac215a353ed) ) // actually was a 27c4001
- ROM_LOAD16_BYTE( "11.27040.u39", 0x100001, 0x080000, CRC(0cd5ca5e) SHA1(a59665e543e9383355de2576e6693348ec356591) ) // actually was a 27c4001
+ ROM_LOAD16_BYTE( "sc_09.bin", 0x000000, 0x080000, CRC(695b6342) SHA1(dfccb43789021ba2568b9284ae61e64f7f89b152) )
+ ROM_LOAD16_BYTE( "sc_10.bin", 0x000001, 0x080000, CRC(27e172b8) SHA1(ed86db2f42c8061607d46f2407b0130aaf692a02) )
+ ROM_LOAD16_BYTE( "sc_08.bin", 0x100000, 0x080000, CRC(637120f3) SHA1(b4b2ad192e46ff80d4cb440d7fb6dac215a353ed) )
+ ROM_LOAD16_BYTE( "sc_11.bin", 0x100001, 0x080000, CRC(0cd5ca5e) SHA1(a59665e543e9383355de2576e6693348ec356591) )
ROM_REGION( 0x020000, "char", ROMREGION_INVERT )
ROM_COPY( "test1", 0x080000, 0x00000, 0x020000 )
@@ -749,11 +738,9 @@ ROM_START( cupsocsb2 )
ROM_REGION( 0x080000, "gfx6", ROMREGION_INVERT ) /* LBK tiles */
ROM_COPY( "gfx5", 0x00000, 0x00000, 0x080000 )
- // A dump of 02.u26 from a second PCB had 3 different bytes: 0x8000 from 0x80 to 0xff; 0x10000 from 0xa4 to 0x4a; 0x18000 from 0x4a to 0xa4.
- // However the first dump matches all the other sets and all the other ROMs from the second PCB match the ones from the first.
ROM_REGION( 0x100000, "adpcm", ROMREGION_ERASEFF ) /* ADPCM samples */
- ROM_LOAD( "2.27010.u26", 0x000000, 0x020000, CRC(a70d4f03) SHA1(c2482e624c8a828a94206a36d10c1021ad8ca1d0) ) // 27c010a
- ROM_LOAD( "3.27040.u25", 0x080000, 0x080000, CRC(6e254d12) SHA1(857779dbd276b688201a8ea3afd5817e38acad2e) ) // actually was a 27c4001
+ ROM_LOAD( "sc_02.bin", 0x000000, 0x020000, CRC(a70d4f03) SHA1(c2482e624c8a828a94206a36d10c1021ad8ca1d0) )
+ ROM_LOAD( "sc_03.bin", 0x080000, 0x080000, CRC(6e254d12) SHA1(857779dbd276b688201a8ea3afd5817e38acad2e) )
ROM_REGION( 0x200000, "oki", ROMREGION_ERASEFF )
ROM_COPY( "adpcm", 0x00000, 0x000000, 0x20000 ) //bank 0
@@ -770,11 +757,11 @@ ROM_START( cupsocsb2 )
/* these are maths tables, for whatever COP replacement the bootlegs use */
ROM_REGION( 0x500000, "unknown0", 0 )
- ROM_LOAD16_BYTE( "13.bin", 0x00000, 0x010000, CRC(229bddd8) SHA1(0924bf29db9c5a970546f154e7752697fdce6a58) ) // 27c512
- ROM_LOAD16_BYTE( "12.bin", 0x00001, 0x010000, CRC(dabfa826) SHA1(0db587c846755491b169ef7751ba8e7cdc2607e6) ) // 27c512
+ ROM_LOAD16_BYTE( "sc_13.bin", 0x00000, 0x010000, CRC(229bddd8) SHA1(0924bf29db9c5a970546f154e7752697fdce6a58) )
+ ROM_LOAD16_BYTE( "sc_12.bin", 0x00001, 0x010000, CRC(dabfa826) SHA1(0db587c846755491b169ef7751ba8e7cdc2607e6) )
ROM_REGION( 0x500000, "unknown1", 0 )
- ROM_LOAD16_BYTE( "15.bin", 0x00000, 0x080000, CRC(8fd87e65) SHA1(acc9fd0289fa9ab60bec16d3e642039380e5180a) ) // 27c4001
- ROM_LOAD16_BYTE( "14.bin", 0x00001, 0x080000, CRC(566086c2) SHA1(b7d09ce978f99ecc0d1975b31330ed49317701d5) ) // 27c4001
+ ROM_LOAD16_BYTE( "sc_15.bin", 0x00000, 0x080000, CRC(8fd87e65) SHA1(acc9fd0289fa9ab60bec16d3e642039380e5180a) )
+ ROM_LOAD16_BYTE( "sc_14.bin", 0x00001, 0x080000, CRC(566086c2) SHA1(b7d09ce978f99ecc0d1975b31330ed49317701d5) )
ROM_END
ROM_START( cupsocsb3 )
@@ -839,6 +826,6 @@ ROM_START( cupsocsb3 )
ROM_END
-GAME( 1992, cupsocsb, cupsoc, cupsocbl, cupsoc, seicupbl_state, empty_init, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
-GAME( 1992, cupsocsb2, cupsoc, cupsocbl, cupsoc, seicupbl_state, empty_init, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
-GAME( 1992, cupsocsb3, cupsoc, cupsocbl, cupsoc, seicupbl_state, empty_init, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 3)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1992, cupsocsb, cupsoc, cupsocbl, cupsoc, seicupbl_state, empty_init, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1992, cupsocsb2,cupsoc, cupsocbl, cupsoc, seicupbl_state, empty_init, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1992, cupsocsb3,cupsoc, cupsocbl, cupsoc, seicupbl_state, empty_init, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 3)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/selz80.cpp b/src/mame/drivers/selz80.cpp
index 9956c917ac0..ace9dad4f5b 100644
--- a/src/mame/drivers/selz80.cpp
+++ b/src/mame/drivers/selz80.cpp
@@ -216,12 +216,11 @@ void selz80_state::machine_start()
m_digits.resolve();
}
-void selz80_state::selz80(machine_config &config)
-{
+MACHINE_CONFIG_START(selz80_state::selz80)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000)); // it's actually a 5MHz XTAL with a NEC uPD780C-1 cpu
- m_maincpu->set_addrmap(AS_PROGRAM, &selz80_state::selz80_mem);
- m_maincpu->set_addrmap(AS_IO, &selz80_state::selz80_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(4'000'000)) // it's actually a 5MHz XTAL with a NEC uPD780C-1 cpu
+ MCFG_DEVICE_PROGRAM_MAP(selz80_mem)
+ MCFG_DEVICE_IO_MAP(selz80_io)
MCFG_MACHINE_RESET_OVERRIDE(selz80_state, selz80 )
/* video hardware */
@@ -248,14 +247,14 @@ void selz80_state::selz80(machine_config &config)
kbdc.in_rl_callback().set(FUNC(selz80_state::kbd_r)); // kbd RL lines
kbdc.in_shift_callback().set_constant(1); // Shift key
kbdc.in_ctrl_callback().set_constant(1);
-}
+MACHINE_CONFIG_END
-void selz80_state::dagz80(machine_config &config)
-{
+MACHINE_CONFIG_START(selz80_state::dagz80)
selz80(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &selz80_state::dagz80_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dagz80_mem)
MCFG_MACHINE_RESET_OVERRIDE(selz80_state, dagz80 )
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/sengokmj.cpp b/src/mame/drivers/sengokmj.cpp
index 47e80655ce3..4ae31d9a243 100644
--- a/src/mame/drivers/sengokmj.cpp
+++ b/src/mame/drivers/sengokmj.cpp
@@ -577,8 +577,8 @@ WRITE16_MEMBER( sengokmj_state::layer_scroll_w )
}
-void sengokmj_state::sengokmj(machine_config &config)
-{
+MACHINE_CONFIG_START(sengokmj_state::sengokmj)
+
/* basic machine hardware */
V30(config, m_maincpu, 16000000/2); /* V30-8 */
m_maincpu->set_addrmap(AS_PROGRAM, &sengokmj_state::sengokmj_map);
diff --git a/src/mame/drivers/senjyo.cpp b/src/mame/drivers/senjyo.cpp
index 552359d2af4..91184fa8cca 100644
--- a/src/mame/drivers/senjyo.cpp
+++ b/src/mame/drivers/senjyo.cpp
@@ -166,9 +166,9 @@ void senjyo_state::senjyo_sound_map(address_map &map)
{
map(0x0000, 0x1fff).rom();
map(0x4000, 0x43ff).ram();
- map(0x8000, 0x8000).w("sn1", FUNC(sn76496_device::write));
- map(0x9000, 0x9000).w("sn2", FUNC(sn76496_device::write));
- map(0xa000, 0xa000).w("sn3", FUNC(sn76496_device::write));
+ map(0x8000, 0x8000).w("sn1", FUNC(sn76496_device::command_w));
+ map(0x9000, 0x9000).w("sn2", FUNC(sn76496_device::command_w));
+ map(0xa000, 0xa000).w("sn3", FUNC(sn76496_device::command_w));
map(0xd000, 0xd000).w(FUNC(senjyo_state::volume_w));
}
@@ -231,9 +231,9 @@ void senjyo_state::starforb_sound_map(address_map &map)
{
map(0x0000, 0x1fff).rom();
map(0x4000, 0x43ff).ram();
- map(0x8000, 0x8000).w("sn1", FUNC(sn76496_device::write));
- map(0x9000, 0x9000).w("sn2", FUNC(sn76496_device::write));
- map(0xa000, 0xa000).w("sn3", FUNC(sn76496_device::write));
+ map(0x8000, 0x8000).w("sn1", FUNC(sn76496_device::command_w));
+ map(0x9000, 0x9000).w("sn2", FUNC(sn76496_device::command_w));
+ map(0xa000, 0xa000).w("sn3", FUNC(sn76496_device::command_w));
map(0xd000, 0xd000).w(FUNC(senjyo_state::volume_w));
map(0xf000, 0xffff).ram();
}
@@ -548,12 +548,12 @@ static GFXDECODE_START( gfx_senjyo )
GFXDECODE_END
-void senjyo_state::senjyo(machine_config &config)
-{
+MACHINE_CONFIG_START(senjyo_state::senjyo)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* 4 MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &senjyo_state::senjyo_map);
- m_maincpu->set_vblank_int("screen", FUNC(senjyo_state::irq0_line_assert));
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(senjyo_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", senjyo_state, irq0_line_assert)
z80_device& sub(Z80(config, "sub", 2000000)); /* 2 MHz? */
sub.set_daisy_config(senjyo_daisy_chain);
@@ -570,12 +570,12 @@ void senjyo_state::senjyo(machine_config &config)
ctc.zc_callback<2>().set(FUNC(senjyo_state::sound_line_clock));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(senjyo_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(senjyo_state, screen_update)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_senjyo);
@@ -585,17 +585,19 @@ void senjyo_state::senjyo(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- SN76496(config, "sn1", 2000000).add_route(ALL_OUTPUTS, "speaker", 0.5);
+ MCFG_DEVICE_ADD("sn1", SN76496, 2000000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
- SN76496(config, "sn2", 2000000).add_route(ALL_OUTPUTS, "speaker", 0.5);
+ MCFG_DEVICE_ADD("sn2", SN76496, 2000000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
- SN76496(config, "sn3", 2000000).add_route(ALL_OUTPUTS, "speaker", 0.5);
+ MCFG_DEVICE_ADD("sn3", SN76496, 2000000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
- DAC_4BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.05); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.05) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
@@ -620,15 +622,16 @@ void senjyo_state::senjyox_a(machine_config &config)
}
-void senjyo_state::starforb(machine_config &config)
-{
+MACHINE_CONFIG_START(senjyo_state::starforb)
senjyox_e(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &senjyo_state::starforb_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(starforb_map)
- subdevice<z80_device>("sub")->set_addrmap(AS_PROGRAM, &senjyo_state::starforb_sound_map);
-}
+ MCFG_DEVICE_MODIFY("sub")
+ MCFG_DEVICE_PROGRAM_MAP(starforb_sound_map)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/seta.cpp b/src/mame/drivers/seta.cpp
index 8ee07a16bed..10b8e864981 100644
--- a/src/mame/drivers/seta.cpp
+++ b/src/mame/drivers/seta.cpp
@@ -111,7 +111,7 @@ TODO:
zombraid not aligned when flipped vertically or horizontally
- bad sound in sokonuke?
-- in msgundam1, colors for the score display screw up after the second animation
+- in msgunda1, colors for the score display screw up after the second animation
in attract mode. The end of the animation also has garbled sprites.
Note that the animation is not present in msgundam.
- Some games: battery backed portion of RAM (e.g. downtown, kiwame, zombraid)
@@ -2789,32 +2789,6 @@ void seta_state::msgundam_map(address_map &map)
map(0xd00000, 0xd00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff);
}
-void seta_state::msgundamb_map(address_map &map)
-{
- map(0x000000, 0x07ffff).rom(); // ROM
- map(0x100000, 0x1fffff).rom(); // ROM
- map(0x200000, 0x20ffff).ram(); // RAM
- map(0x400000, 0x400001).portr("P1"); // P1
- map(0x400002, 0x400003).portr("P2"); // P2
- map(0x400004, 0x400005).portr("COINS"); // Coins
- map(0x400000, 0x400001).w(FUNC(seta_state::ipl1_ack_w)); // Lev 2 IRQ Ack
- map(0x400004, 0x400005).w(FUNC(seta_state::ipl2_ack_w)); // Lev 4 IRQ Ack
- map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_counter_w));
- map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w)); // Video Registers
- map(0x500004, 0x500005).nopw();
- map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r)); // DSW
- map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette
- map(0x800000, 0x803fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
- map(0x880000, 0x883fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
- map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl
- map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl
- map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
- map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
- map(0xa80000, 0xa80001).ram(); // ? 0x4000
- map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
- map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
- map(0xd00000, 0xd00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff);
-}
/***************************************************************************
Oishii Puzzle
@@ -2923,6 +2897,7 @@ void kiwame_state::kiwame_map(address_map &map)
map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
map(0xd00000, 0xd00009).r(FUNC(kiwame_state::input_r)); // mahjong panel
map(0xe00000, 0xe00003).r(FUNC(kiwame_state::seta_dsw_r)); // DSW
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w));
}
@@ -4740,7 +4715,7 @@ static INPUT_PORTS_START( gundhara )
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW )
+ PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -4779,10 +4754,10 @@ static INPUT_PORTS_START( gundhara )
PORT_DIPSETTING( 0x0100, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:3,4")
- PORT_DIPSETTING( 0x0800, "2" )
- PORT_DIPSETTING( 0x0c00, "3" )
- PORT_DIPSETTING( 0x0400, "4" )
- PORT_DIPSETTING( 0x0000, "5" )
+ PORT_DIPSETTING( 0x0800, "1" )
+ PORT_DIPSETTING( 0x0c00, "2" )
+ PORT_DIPSETTING( 0x0400, "3" )
+ PORT_DIPSETTING( 0x0000, "4" )
PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:5,6")
PORT_DIPSETTING( 0x3000, "200K" )
PORT_DIPSETTING( 0x2000, "200K, Every 200K" )
@@ -5430,11 +5405,11 @@ static INPUT_PORTS_START( msgundam )
PORT_SERVICE_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW1:8" )
INPUT_PORTS_END
-static INPUT_PORTS_START( msgundam1 )
+static INPUT_PORTS_START( msgunda1 )
PORT_INCLUDE(msgundam)
PORT_MODIFY("COINS") // IN2 - Coins - $400004.w
- /* this set seems to be a Japan set, English mode doesn't work correctly */
+ /* this set seems to be a japan set, english mode doesn't work correctly */
PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Language ) )
// PORT_DIPSETTING( 0x0080, DEF_STR( English ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Japanese ) )
@@ -8038,7 +8013,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(seta_state::calibr50_interrupt)
void usclssic_state::machine_start()
{
- m_buttonmux->ab_w(0xff);
+ m_buttonmux->write_ab(0xff);
}
@@ -8413,7 +8388,7 @@ void seta_state::daioh(machine_config &config)
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57.42); /* verified on PCB */
+ screen.set_refresh_hz(57.42); /* verified on PCB */;
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 32*8);
screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
@@ -8450,7 +8425,7 @@ void seta_state::daiohp(machine_config &config)
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57.42); /* verified on PCB */
+ screen.set_refresh_hz(57.42); /* verified on PCB */;
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 32*8);
screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
@@ -9180,12 +9155,7 @@ void seta_state::msgundam(machine_config &config)
m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
}
-void seta_state::msgundamb(machine_config &config)
-{
- msgundam(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::msgundamb_map);
-}
/***************************************************************************
Oishii Puzzle
@@ -9274,15 +9244,19 @@ void seta_state::triplfun(machine_config &config)
WRITE_LINE_MEMBER(kiwame_state::kiwame_vblank)
{
if (state)
- m_maincpu->external_interrupt_0();
+ m_tmp68301->external_interrupt_0();
}
void kiwame_state::kiwame(machine_config &config)
{
/* basic machine hardware */
- TMP68301(config, m_maincpu, 16000000); /* 16 MHz */
+ M68000(config, m_maincpu, 16000000); /* 16 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &kiwame_state::kiwame_map);
- m_maincpu->out_parallel_callback().set(FUNC(kiwame_state::row_select_w));
+ m_maincpu->set_irq_acknowledge_callback("tmp68301", FUNC(tmp68301_device::irq_callback));
+
+ tmp68301_device &tmp68301(TMP68301(config, "tmp68301", 0));
+ tmp68301.set_cputag(m_maincpu);
+ tmp68301.out_parallel_callback().set(FUNC(kiwame_state::row_select_w));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -10815,32 +10789,6 @@ ROM_START( msgundam1 )
ROM_LOAD( "fa001004.u26", 0x000000, 0x100000, CRC(b965f07c) SHA1(ff7827cc80655465ffbb732d55ba81f21f51a5ca) )
ROM_END
-ROM_START( msgundamb ) // 2 PCB stack, one has a 'Tecnoval - tecnologia valenciana del recreativo' sticker
- ROM_REGION( 0x300000, "maincpu", 0 ) /* 68000 Code, on lower board */
- ROM_LOAD16_BYTE( "d-4.bin", 0x000000, 0x040000, CRC(ca5bfa89) SHA1(108435cb65919b4b90be102e7ac2799501149fc8) ) // 27c020
- ROM_LOAD16_BYTE( "d-2.bin", 0x000001, 0x040000, CRC(b4b86d1b) SHA1(d9b625cfdabcabed9308fccc29c66adfe566a996) ) // 27c020
- ROM_LOAD16_BYTE( "27c8001-7.bin", 0x100000, 0x100000, CRC(803f279c) SHA1(1095ac434ce553ed56d106556e7d23ccac1f0cd4) ) // 1ST AND 2ND HALF IDENTICAL
- ROM_LOAD16_BYTE( "27c8001-8.bin", 0x100001, 0x100000, CRC(a310fa93) SHA1(2ee1616699c95ed2b8c46d43de4cffece1b033ea) ) // 1ST AND 2ND HALF IDENTICAL
-
- ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites, on top board, almost identical to the original but split */
- ROM_LOAD16_BYTE( "27c8001-3.bin", 0x000000, 0x100000, CRC(9f36d867) SHA1(01a15dcdcb1077d7c8678762f58ad705dc29e8c9) )
- ROM_LOAD16_BYTE( "27c8001-2.bin", 0x000001, 0x100000, CRC(70d333d9) SHA1(9ef3b0e0567ceed082921a5c384cfcfeb154f048) )
- ROM_LOAD16_BYTE( "27c8001-1.bin", 0x200000, 0x100000, CRC(2792692c) SHA1(ed99c589ed15f8c1a4e2ab435a379b35105ba503) )
- ROM_LOAD16_BYTE( "4.bin", 0x200001, 0x080000, CRC(eb551f1a) SHA1(e9d2fc31c3076164c5ee9722ea1b1e60b4f6d663) ) // mx27c4000
- ROM_LOAD16_BYTE( "5.bin", 0x300001, 0x080000, CRC(e9aa57e8) SHA1(699c0132f4be81570f748e5ca2f88fc4fc6802bb) ) // mx27c4000
-
- ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 1, on lower board */
- ROM_LOAD16_BYTE( "27c8001-6.bin", 0x000000, 0x100000, CRC(8fbb5478) SHA1(247fd080f0ee18282c4d8b918171cfeab4b40d23) ) // 1ST AND 2ND HALF IDENTICAL, fa001006.u23 [even] IDENTICAL
- ROM_LOAD16_BYTE( "27c8001-5.bin", 0x000001, 0x100000, CRC(c83ae34a) SHA1(d7bf49843c443c5b7cb9187404a3518eaed577a6) ) // 1ST AND 2ND HALF IDENTICAL, fa001006.u23 [odd] IDENTICAL
-
- ROM_REGION( 0x080000, "gfx3", 0 ) /* Layer 2, on lower board, identical to the original but split */
- ROM_LOAD16_BYTE( "d-8.bin", 0x000000, 0x040000, CRC(a03c8345) SHA1(d3c3f0045ebb3d82d82432c212db4a801cb53b60) ) // 27c020
- ROM_LOAD16_BYTE( "d-9.bin", 0x000001, 0x040000, CRC(cfd47024) SHA1(ab4fbaf258d2694407dd6c896f45d69821ccc408) ) // 27c020
-
- ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples, on lower board */
- ROM_LOAD( "27c8001-4.bin", 0x000000, 0x100000, CRC(b965f07c) SHA1(ff7827cc80655465ffbb732d55ba81f21f51a5ca) ) // identical to the original
-ROM_END
-
ROM_START( oisipuzl )
ROM_REGION( 0x180000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_WORD_SWAP( "ss1u200.v10", 0x000000, 0x080000, CRC(f5e53baf) SHA1(057e8b35bc6f65634685b5d0cf38e12f2e62d72c) )
@@ -12195,8 +12143,7 @@ GAME( 1993, madshark, 0, madshark, madshark, seta_state, empty_ini
// end credits shows Allumer as developer.
GAME( 1993, msgundam, 0, msgundam, msgundam, seta_state, empty_init, ROT0, "Banpresto / Allumer", "Mobile Suit Gundam", 0 )
-GAME( 1993, msgundam1, msgundam, msgundam, msgundam1, seta_state, empty_init, ROT0, "Banpresto / Allumer", "Mobile Suit Gundam (Japan)", 0 )
-GAME( 1993, msgundamb, msgundam, msgundamb, msgundam, seta_state, empty_init, ROT0, "bootleg", "Mobile Suit Gundam (bootleg)", 0 )
+GAME( 1993, msgundam1, msgundam, msgundam, msgunda1, seta_state, empty_init, ROT0, "Banpresto / Allumer", "Mobile Suit Gundam (Japan)", 0 )
GAME( 1993, oisipuzl, 0, oisipuzl, oisipuzl, seta_state, empty_init, ROT0, "Sunsoft / Atlus", "Oishii Puzzle Ha Irimasenka", 0 )
GAME( 1993, triplfun, oisipuzl, triplfun, oisipuzl, seta_state, empty_init, ROT0, "bootleg", "Triple Fun", 0 )
diff --git a/src/mame/drivers/seta2.cpp b/src/mame/drivers/seta2.cpp
index 147a4ecb235..a1e7523efb5 100644
--- a/src/mame/drivers/seta2.cpp
+++ b/src/mame/drivers/seta2.cpp
@@ -26,7 +26,7 @@ OSC : 50.00000MHz
-------------------------------------------------------------------------------------------
Ordered by Board Year Game By
-------------------------------------------------------------------------------------------
-P-FG01-1 (also P0-113A) 1995 Guardians / Denjin Makai II Banpresto
+P-FG01-1 1995 Guardians / Denjin Makai II Banpresto
P0-113A 1994 Mobile Suit Gundam EX Revue Banpresto
P0-121A ; 2MP1-E00 (Ss) 1996 TelePachi Fever Lion Sunsoft
P0-123A 1996 Wakakusamonogatari Mahjong Yonshimai Maboroshi Ware
@@ -196,6 +196,7 @@ void seta2_state::grdians_map(address_map &map)
map(0xc50000, 0xc5ffff).ram(); // cleared
map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
map(0xe00010, 0xe0001f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff); // Samples Banks
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
/***************************************************************************
@@ -234,6 +235,7 @@ void seta2_state::gundamex_map(address_map &map)
map(0xc50000, 0xc5ffff).ram(); // cleared
map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
map(0xe00010, 0xe0001f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff); // Samples Banks
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -290,6 +292,7 @@ void seta2_state::mj4simai_map(address_map &map)
map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites
map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -313,6 +316,7 @@ void seta2_state::myangel_map(address_map &map)
map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites
map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -336,6 +340,7 @@ void seta2_state::myangel2_map(address_map &map)
map(0xd00000, 0xd3ffff).ram().share("spriteram"); // Sprites
map(0xd40000, 0xd4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
map(0xd60000, 0xd6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -378,6 +383,7 @@ void seta2_state::pzlbowl_map(address_map &map)
map(0x840000, 0x84ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
map(0x860000, 0x86003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
map(0x900000, 0x903fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -410,6 +416,7 @@ void seta2_state::penbros_map(address_map &map)
map(0x500302, 0x500303).portr("DSW2");
map(0x500300, 0x50030f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff);
map(0xb60000, 0xb6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs");
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w));
}
void seta2_state::ablastb_map(address_map &map)
@@ -475,6 +482,7 @@ void seta2_state::reelquak_map(address_map &map)
map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites
map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -489,6 +497,7 @@ void seta2_state::namcostr_map(address_map &map)
map(0x200000, 0x20ffff).ram(); // RAM
map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites
map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -531,6 +540,8 @@ void seta2_state::samshoot_map(address_map &map)
map(0x860000, 0x86003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
map(0x900000, 0x903fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -624,6 +635,7 @@ void staraudi_state::staraudi_map(address_map &map)
map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
map(0xc50000, 0xc5ffff).ram(); // cleared
map(0xc60000, 0xc6003f).ram().w(FUNC(staraudi_state::vregs_w)).share("vregs"); // Video Registers
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -682,6 +694,7 @@ void seta2_state::telpacfl_map(address_map &map)
map(0xd00006, 0xd00007).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0xe00000, 0xe00001) AM_WRITE
map(0xe00010, 0xe0001f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff); // Samples Banks
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
}
@@ -2288,32 +2301,35 @@ GFXDECODE_END
INTERRUPT_GEN_MEMBER(seta2_state::seta2_interrupt)
{
/* VBlank is connected to INT0 (external interrupts pin 0) */
- downcast<tmp68301_device &>(*m_maincpu).external_interrupt_0();
+ m_tmp68301->external_interrupt_0();
}
INTERRUPT_GEN_MEMBER(seta2_state::samshoot_interrupt)
{
- downcast<tmp68301_device &>(*m_maincpu).external_interrupt_2(); // to do: hook up x1-10 interrupts
+ m_tmp68301->external_interrupt_2(); // to do: hook up x1-10 interrupts
}
-void seta2_state::seta2(machine_config &config)
-{
- TMP68301(config, m_maincpu, XTAL(50'000'000)/3); // !! TMP68301 !!
- m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::mj4simai_map);
- m_maincpu->set_vblank_int("screen", FUNC(seta2_state::seta2_interrupt));
+MACHINE_CONFIG_START(seta2_state::seta2)
+ MCFG_DEVICE_ADD(m_maincpu, M68301, XTAL(50'000'000)/3) // !! TMP68301 !!
+ MCFG_DEVICE_PROGRAM_MAP(mj4simai_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", seta2_state, seta2_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("tmp68301",tmp68301_device,irq_callback)
+
+ TMP68301(config, m_tmp68301, 0);
+ m_tmp68301->set_cputag(m_maincpu);
WATCHDOG_TIMER(config, "watchdog");
// video hardware
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- m_screen->set_size(0x200, 0x100);
- m_screen->set_visarea(0x00, 0x180-1, 0x00, 0xf0-1);
- m_screen->set_screen_update(FUNC(seta2_state::screen_update));
- m_screen->screen_vblank().set(FUNC(seta2_state::screen_vblank));
- m_screen->set_palette(m_palette);
- //m_screen->set_video_attributes(VIDEO_UPDATE_SCANLINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(0x200, 0x100)
+ MCFG_SCREEN_VISIBLE_AREA(0x00, 0x180-1, 0x00, 0xf0-1)
+ MCFG_SCREEN_UPDATE_DRIVER(seta2_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, seta2_state, screen_vblank))
+ MCFG_SCREEN_PALETTE(m_palette)
+ //MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_seta2);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x8000+0xf0); // extra 0xf0 because we might draw 256-color object with 16-color granularity
@@ -2321,143 +2337,154 @@ void seta2_state::seta2(machine_config &config)
// sound hardware
SPEAKER(config, "mono").front_center();
- x1_010_device &x1snd(X1_010(config, "x1snd", XTAL(50'000'000)/3)); // clock?
- x1snd.add_route(ALL_OUTPUTS, "mono", 1.0);
- x1snd.set_addrmap(0, &seta2_state::x1_map);
-}
+ MCFG_DEVICE_ADD("x1snd", X1_010, XTAL(50'000'000)/3) // clock?
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, x1_map)
+MACHINE_CONFIG_END
-void seta2_state::gundamex(machine_config &config)
-{
+MACHINE_CONFIG_START(seta2_state::gundamex)
seta2(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::gundamex_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(gundamex_map)
- downcast<tmp68301_device &>(*m_maincpu).in_parallel_callback().set(FUNC(seta2_state::gundamex_eeprom_r));
- downcast<tmp68301_device &>(*m_maincpu).out_parallel_callback().set(FUNC(seta2_state::gundamex_eeprom_w));
+ m_tmp68301->in_parallel_callback().set(FUNC(seta2_state::gundamex_eeprom_r));
+ m_tmp68301->out_parallel_callback().set(FUNC(seta2_state::gundamex_eeprom_w));
EEPROM_93C46_16BIT(config, "eeprom");
// video hardware
- m_screen->set_visarea(0x00, 0x180-1, 0x000, 0x0e0-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0x00, 0x180-1, 0x000, 0x0e0-1)
+MACHINE_CONFIG_END
-void seta2_state::grdians(machine_config &config)
-{
+MACHINE_CONFIG_START(seta2_state::grdians)
seta2(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::grdians_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(grdians_map)
// video hardware
- m_screen->set_visarea(0x00, 0x130-1, 0x00, 0xe8 -1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0x00, 0x130-1, 0x00, 0xe8 -1)
+MACHINE_CONFIG_END
-void seta2_state::myangel(machine_config &config)
-{
+MACHINE_CONFIG_START(seta2_state::myangel)
seta2(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::myangel_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(myangel_map)
// video hardware
- m_screen->set_visarea(0, 0x178-1, 0x00, 0xf0-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x178-1, 0x00, 0xf0-1)
+MACHINE_CONFIG_END
-void seta2_state::myangel2(machine_config &config)
-{
+MACHINE_CONFIG_START(seta2_state::myangel2)
seta2(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::myangel2_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(myangel2_map)
// video hardware
- m_screen->set_visarea(0, 0x178-1, 0x00, 0xf0-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x178-1, 0x00, 0xf0-1)
+MACHINE_CONFIG_END
-void seta2_state::pzlbowl(machine_config &config)
-{
+MACHINE_CONFIG_START(seta2_state::pzlbowl)
seta2(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::pzlbowl_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(pzlbowl_map)
// video hardware
- m_screen->set_visarea(0x00, 0x180-1, 0x00, 0xf0-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0x00, 0x180-1, 0x00, 0xf0-1)
+MACHINE_CONFIG_END
-void seta2_state::penbros(machine_config &config)
-{
+MACHINE_CONFIG_START(seta2_state::penbros)
seta2(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::penbros_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(penbros_map)
// video hardware
- m_screen->set_visarea(0, 0x140-1, 0x00, 0xe0-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0x00, 0xe0-1)
+MACHINE_CONFIG_END
-void seta2_state::ablastb(machine_config &config)
-{
+MACHINE_CONFIG_START(seta2_state::ablastb)
penbros(config);
- M68000(config.replace(), m_maincpu, XTAL(16'000'000)); // TMP68HC000P-16
- m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::ablastb_map);
- m_maincpu->set_vblank_int("screen", FUNC(seta2_state::irq2_line_hold));
-}
+ MCFG_DEVICE_REPLACE("maincpu", M68000, XTAL(16'000'000)) // TMP68HC000P-16
+ MCFG_DEVICE_PROGRAM_MAP(ablastb_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", seta2_state, irq2_line_hold)
-void seta2_state::reelquak(machine_config &config)
-{
+ MCFG_DEVICE_REMOVE("tmp68301")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(seta2_state::reelquak)
seta2(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::reelquak_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(reelquak_map)
- downcast<tmp68301_device &>(*m_maincpu).out_parallel_callback().set(FUNC(seta2_state::reelquak_leds_w));
+ m_tmp68301->out_parallel_callback().set(FUNC(seta2_state::reelquak_leds_w));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TICKET_DISPENSER(config, m_dispenser, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+ MCFG_TICKET_DISPENSER_ADD("dispenser", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
- m_screen->set_visarea(0x00, 0x140-1, 0x000, 0x0f0-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0x00, 0x140-1, 0x000, 0x0f0-1)
+MACHINE_CONFIG_END
-void seta2_state::samshoot(machine_config &config)
-{
+MACHINE_CONFIG_START(seta2_state::samshoot)
seta2(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::samshoot_map);
- m_maincpu->set_periodic_int(FUNC(seta2_state::samshoot_interrupt), attotime::from_hz(60));
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(samshoot_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(seta2_state, samshoot_interrupt, 60)
- downcast<tmp68301_device &>(*m_maincpu).in_parallel_callback().set_ioport("DSW2");
+ m_tmp68301->in_parallel_callback().set_ioport("DSW2");
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- m_screen->set_visarea(0x00, 0x140-1, 0x000, 0x0f0-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0x00, 0x140-1, 0x000, 0x0f0-1)
+MACHINE_CONFIG_END
-void staraudi_state::staraudi(machine_config &config)
-{
+MACHINE_CONFIG_START(staraudi_state::staraudi)
seta2(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &staraudi_state::staraudi_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(staraudi_map)
SHARP_LH28F016S_16BIT(config, "flash");
UPD4992(config, m_rtc);
// video hardware
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
- m_screen->set_visarea(0x00, 0x140-1, 0x000, 0x0f0-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
+ MCFG_SCREEN_VISIBLE_AREA(0x00, 0x140-1, 0x000, 0x0f0-1)
- m_gfxdecode->set_info(gfx_seta2);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_seta2)
+MACHINE_CONFIG_END
-void seta2_state::telpacfl(machine_config &config)
-{
+MACHINE_CONFIG_START(seta2_state::telpacfl)
seta2(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::telpacfl_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(telpacfl_map)
- downcast<tmp68301_device &>(*m_maincpu).in_parallel_callback().set_ioport("KNOB");
+ m_tmp68301->in_parallel_callback().set_ioport("KNOB");
EEPROM_93C46_16BIT(config, "eeprom"); // not hooked up, seems unused
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- HOPPER(config, m_dispenser, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+ MCFG_HOPPER_ADD("dispenser", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
// video hardware
- m_screen->set_visarea(0x0, 0x180-1, 0x00, 0xf0-1); // still off by 1 because of different CRTC regs?
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0x0, 0x180-1, 0x00, 0xf0-1) // still off by 1 because of different CRTC regs?
+MACHINE_CONFIG_END
/***************************************************************************
@@ -2488,17 +2515,17 @@ void funcube_state::machine_reset()
m_hopper_motor = 0;
}
-void funcube_state::funcube(machine_config &config)
-{
- MCF5206E(config, m_maincpu, XTAL(25'447'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &funcube_state::funcube_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(funcube_state::funcube_interrupt), "screen", 0, 1);
+MACHINE_CONFIG_START(funcube_state::funcube)
+
+ MCFG_DEVICE_ADD("maincpu", MCF5206E, XTAL(25'447'000))
+ MCFG_DEVICE_PROGRAM_MAP(funcube_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", funcube_state, funcube_interrupt, "screen", 0, 1)
- H83007(config, m_sub, FUNCUBE_SUB_CPU_CLOCK);
- m_sub->set_addrmap(AS_PROGRAM, &funcube_state::funcube_sub_map);
- m_sub->set_addrmap(AS_IO, &funcube_state::funcube_sub_io);
+ MCFG_DEVICE_ADD("sub", H83007, FUNCUBE_SUB_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(funcube_sub_map)
+ MCFG_DEVICE_IO_MAP(funcube_sub_io)
- MCF5206E_PERIPHERAL(config, "maincpu_onboard", 0);
+ MCFG_MCF5206E_PERIPHERAL_ADD("maincpu_onboard")
FUNCUBE_TOUCHSCREEN(config, "touchscreen", 200).tx_cb().set(":sub:sci1", FUNC(h8_sci_device::rx_w));
@@ -2507,14 +2534,14 @@ void funcube_state::funcube(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
// video hardware
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
- m_screen->set_size(0x200, 0x200);
- m_screen->set_visarea(0x0+1, 0x140-1+1, 0x00, 0xf0-1);
- m_screen->set_screen_update(FUNC(funcube_state::screen_update));
- m_screen->screen_vblank().set(FUNC(funcube_state::screen_vblank));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
+ MCFG_SCREEN_SIZE(0x200, 0x200)
+ MCFG_SCREEN_VISIBLE_AREA(0x0+1, 0x140-1+1, 0x00, 0xf0-1)
+ MCFG_SCREEN_UPDATE_DRIVER(funcube_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, funcube_state, screen_vblank))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_seta2);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x8000+0xf0); // extra 0xf0 because we might draw 256-color object with 16-color granularity
@@ -2523,48 +2550,52 @@ void funcube_state::funcube(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- OKIM9810(config, m_oki, XTAL(4'096'000));
- m_oki->add_route(0, "lspeaker", 0.80);
- m_oki->add_route(1, "rspeaker", 0.80);
-}
+ MCFG_DEVICE_ADD("oki", OKIM9810, XTAL(4'096'000))
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+MACHINE_CONFIG_END
-void funcube_state::funcube2(machine_config &config)
-{
+MACHINE_CONFIG_START(funcube_state::funcube2)
funcube(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &funcube_state::funcube2_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(funcube2_map)
- m_sub->set_addrmap(AS_IO, &funcube_state::funcube2_sub_io);
+ MCFG_DEVICE_MODIFY("sub")
+ MCFG_DEVICE_IO_MAP(funcube2_sub_io)
// video hardware
- m_screen->set_visarea(0x0, 0x140-1, 0x00, 0xf0-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0x0, 0x140-1, 0x00, 0xf0-1)
+MACHINE_CONFIG_END
-void funcube_state::funcube3(machine_config &config)
-{
+MACHINE_CONFIG_START(funcube_state::funcube3)
funcube2(config);
// video hardware
- m_screen->set_visarea(0x0, 0x140-1, 0x00, 0xf0-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0x0, 0x140-1, 0x00, 0xf0-1)
+MACHINE_CONFIG_END
-void seta2_state::namcostr(machine_config &config)
-{
- TMP68301(config, m_maincpu, XTAL(50'000'000)/3); // !! TMP68301 !!
- m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::namcostr_map);
- m_maincpu->set_vblank_int("screen", FUNC(seta2_state::seta2_interrupt));
- // does this have a ticket dispenser?
+MACHINE_CONFIG_START(seta2_state::namcostr)
+ MCFG_DEVICE_ADD(m_maincpu, M68301, XTAL(50'000'000)/3) // !! TMP68301 !!
+ MCFG_DEVICE_PROGRAM_MAP(namcostr_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", seta2_state, seta2_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("tmp68301",tmp68301_device,irq_callback)
+
+ TMP68301(config, m_tmp68301, 0); // does this have a ticket dispenser?
+ m_tmp68301->set_cputag(m_maincpu);
// video hardware
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(0x200, 0x200);
- m_screen->set_visarea(0x40, 0x1c0-1, 0x00, 0xf0-1);
- m_screen->set_screen_update(FUNC(seta2_state::screen_update));
- m_screen->screen_vblank().set(FUNC(seta2_state::screen_vblank));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x200, 0x200)
+ MCFG_SCREEN_VISIBLE_AREA(0x40, 0x1c0-1, 0x00, 0xf0-1)
+ MCFG_SCREEN_UPDATE_DRIVER(seta2_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, seta2_state, screen_vblank))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_seta2);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x8000+0xf0); // extra 0xf0 because we might draw 256-color object with 16-color granularity
@@ -2573,10 +2604,10 @@ void seta2_state::namcostr(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- OKIM9810(config, m_oki, XTAL(4'096'000));
- m_oki->add_route(0, "lspeaker", 0.80);
- m_oki->add_route(1, "rspeaker", 0.80);
-}
+ MCFG_DEVICE_ADD("oki", OKIM9810, XTAL(4'096'000))
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+MACHINE_CONFIG_END
/***************************************************************************
@@ -2880,10 +2911,11 @@ NOTE: There is known to exist an undumped version of Guardians on the
U19, U20, U21 & U22 - graphics ROMS
**********************************************************
-
+There is known to exist an undumped version of Guardians on the
P0-113A PCB with P1-106-1 & P1-107-1 duaghtercards
- program ROMs verified to match the P-FG01-1 set
+ It's assumed the programs roms (at least) are different to cope
+ with the different hardware configuration.
CPU: Toshiba TMP68301AF-16 (100 Pin PQFP)
Video: Allumer X1-020 (208 Pin PQFP)
@@ -2929,7 +2961,7 @@ PCB Number: P0-113A BP49KA
| P P | U21* ||
+-+ C A A M M +---------------+|
| N DSW1 L L 3 3 |
-| 1 DSW2 SW1 2 1 |
+| 1 DSW2 SW1 |
+---------------------------------------------------------------+
U2 is KA2 001 001 EPROM
@@ -2941,25 +2973,20 @@ U15 is socketted to receive P1-106-1 daughtercard
U77 is socketted to receive P1-107-1 daughtercard
CN2 - 5 Pin header
CN1 - 10 Pin header
-PAL1 at U51 is KA-201 GAL16V8B
-PAL2 at U52 is KA-102 GAL16V8B
* Denotes not populated.
-Notes:
- HSync: 15.19kHz
- VSync: 58.27Hz
-
The daughtercards below are NOT to scale with the above main board.
P1-107-1 (additional RAM)
+-------------------------------+
-| 74LS32 JP5 JP6 JP7|
+| LOGIC JP5 JP6 JP7|
| CXK58257AM-10L CXK58257AM-10L |
| +-----------------------+ |
| |U7 42 pin header to U77| |
| +-----------------------+ |
+-------------------------------+
+Unknown LOGIC chip
JP5 - JP7 single wire connections for power
@@ -2975,14 +3002,15 @@ P1-106-1
| +-----------------------+ |
| | KA2-001-016 U1 | |
| +-----------------------+ |
-|JP1 JP2 JP3 JP4 74LS00 |
+|JP1 JP2 JP3 JP4 LOGIC |
+-------------------------------+
+Unknown LOGIC chip
JP1 - JP4 single wire connections for power
***************************************************************************/
-ROM_START( grdians ) /* P-FG01-1 PCB */
+ROM_START( grdians ) /* P-FG01-1 */
ROM_REGION( 0x200000, "maincpu", 0 ) // TMP68301 Code
ROM_LOAD16_BYTE( "u2.bin", 0x000000, 0x080000, CRC(36adc6f2) SHA1(544e87f88179fe1342e7a06a8948ac1828e85108) )
ROM_LOAD16_BYTE( "u3.bin", 0x000001, 0x080000, CRC(2704f416) SHA1(9081a12cbb9927d36e1c50b52aa2c6003810ee42) )
@@ -3007,27 +3035,6 @@ ROM_START( grdians ) /* P-FG01-1 PCB */
ROM_LOAD( "u32.bin", 0x000000, 0x100000, CRC(cf0f3017) SHA1(8376d3a674f71aec72f52c72758fbc53d9feb1a1) )
ROM_END
-ROM_START( grdiansa ) /* P0-113A PCB */
- ROM_REGION( 0x200000, "maincpu", 0 ) // TMP68301 Code
- ROM_LOAD16_BYTE( "ka2_001_001.u2", 0x000000, 0x080000, CRC(36adc6f2) SHA1(544e87f88179fe1342e7a06a8948ac1828e85108) ) // same program code as P-FG01-1 PCB above
- ROM_LOAD16_BYTE( "ka2_001_004.u3", 0x000001, 0x080000, CRC(2704f416) SHA1(9081a12cbb9927d36e1c50b52aa2c6003810ee42) )
- ROM_LOAD16_BYTE( "ka2_001_002.u4", 0x100000, 0x080000, CRC(bb52447b) SHA1(61433f683210ab2bc2cf1cc4b5b7a39cc5b6493d) )
- ROM_LOAD16_BYTE( "ka2_001_003.u5", 0x100001, 0x080000, CRC(9c164a3b) SHA1(6d688c7af9e7e8e8d54b2e4dfbf41f59c79242eb) )
-
- ROM_REGION( 0x2000000, "sprites", ROMREGION_ERASE) // Sprites
- ROM_LOAD64_WORD( "ka2-001-010.u18", 0x0800000, 0x200000, CRC(b3e6e95f) SHA1(c61d3def136f4bb6c5857740b0fbea64a98dd1dc) )
- ROM_LOAD64_WORD( "ka2-001-013.u17", 0x0800002, 0x200000, CRC(9f7feb13) SHA1(0b3010faf87fb5bfe55101e5eabecec6107bf42f) )
- ROM_LOAD64_WORD( "ka2-001-007.u22", 0x0800004, 0x200000, CRC(d1035051) SHA1(0bc8871b91e777009002e340e1cef92487234271) )
- ROM_LOAD64_WORD( "ka2-001-016.u1", 0x0800006, 0x200000, CRC(99fc8efa) SHA1(eeaabb3b8d6c99a16c922a2b6ff0973935fd74bd) ) // located on P1-106-1 daughtercard
- ROM_LOAD64_WORD( "ka2-001-011.u20", 0x1000000, 0x200000, CRC(676edca6) SHA1(32bb507d000e19b004251d24c5fe61a09486cdd1) )
- ROM_LOAD64_WORD( "ka2-001-014.u19", 0x1000002, 0x200000, CRC(5465ef1b) SHA1(d1f0ff1950672444ece2fd86285a4051ea66f7bb) )
- ROM_LOAD64_WORD( "ka2-001-008.u23", 0x1000004, 0x200000, CRC(b2c94f31) SHA1(09891516806e2e79673b8b787d8e1caa51523a79) )
- ROM_LOAD64_WORD( "ka2-001-017.u2", 0x1000006, 0x200000, CRC(60ad7a2b) SHA1(a23c916959f3cfc8b1eead7a72c8312967b3acd7) ) // located on P1-106-1 daughtercard
-
- ROM_REGION( 0x200000, "x1snd", 0 ) // Samples
- ROM_LOAD( "ka2-001-015.u28", 0x000000, 0x200000, CRC(fa97cc54) SHA1(d9a869e9428e5f31aee917ea7733cca1247458f2) ) // Identical halves matching parent U32.BIN
-ROM_END
-
/***************************************************************************
MS Gundam Ex Revue
@@ -3110,6 +3117,7 @@ ROM_START( gundamex )
ROM_LOAD64_WORD( "ka-001-014.u19", 0x1000002, 0x200000, CRC(7635e026) SHA1(116a3daab14a17faca85c4a956b356aaf0fc2276) )
ROM_LOAD64_WORD( "ka-001-008.u23", 0x1000004, 0x200000, CRC(db55a60a) SHA1(03d118c7284ca86219891c473e2a89489710ea27) )
+
ROM_REGION( 0x200000, "x1snd", 0 ) // Samples
ROM_LOAD( "ka-001-015.u28", 0x000000, 0x200000, CRC(ada2843b) SHA1(09d06026031bc7558da511c3c0e29187ea0a0099) )
@@ -4345,35 +4353,34 @@ ROM_START( telpacfl )
ROM_LOAD( "kc-002c.u52", 0x117, 0x117, NO_DUMP )
ROM_END
-GAME( 1994, gundamex, 0, gundamex, gundamex, seta2_state, empty_init, ROT0, "Banpresto", "Mobile Suit Gundam EX Revue", 0 )
-GAME( 1995, grdians, 0, grdians, grdians, seta2_state, empty_init, ROT0, "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II (P-FG01-1 PCB)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1995, grdiansa, grdians, grdians, grdians, seta2_state, empty_init, ROT0, "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II (P0-113A PCB)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, mj4simai, 0, seta2, mj4simai, mj4simai_state, empty_init, ROT0, "Maboroshi Ware", "Wakakusamonogatari Mahjong Yonshimai (Japan)", MACHINE_NO_COCKTAIL )
-GAME( 1996, myangel, 0, myangel, myangel, seta2_state, empty_init, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, myangel2, 0, myangel2, myangel2, seta2_state, empty_init, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel 2 (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, telpacfl, 0, telpacfl, telpacfl, seta2_state, empty_init, ROT270, "Sunsoft", "TelePachi Fever Lion (V1.0)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, reelquak, 0, reelquak, reelquak, seta2_state, empty_init, ROT0, "<unknown>", "Reel'N Quake! (Version 1.05)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 199?, endrichs, 0, reelquak, endrichs, seta2_state, empty_init, ROT0, "E.N.Tiger", "Endless Riches (Ver 1.20)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, staraudi, 0, staraudi, staraudi, staraudi_state, empty_init, ROT0, "Namco", "Star Audition", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1999, pzlbowl, 0, pzlbowl, pzlbowl, seta2_state, empty_init, ROT0, "MOSS / Nihon System", "Puzzle De Bowling (Japan)", MACHINE_NO_COCKTAIL )
-GAME( 2000, penbros, 0, penbros, penbros, seta2_state, empty_init, ROT0, "Subsino", "Penguin Brothers (Japan)", MACHINE_NO_COCKTAIL )
-GAME( 2000, ablast, penbros, penbros, penbros, seta2_state, empty_init, ROT0, "Subsino", "Hong Tian Lei (A-Blast) (Japan)", MACHINE_NO_COCKTAIL ) // 轟天雷/Hōng tiān léi
-GAME( 2000, ablastb, penbros, ablastb, penbros, seta2_state, empty_init, ROT0, "bootleg", "Hong Tian Lei (A-Blast) (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // at least "tilemap sprite" scrolly flag differs, FPGA instead of x1-010
-GAME( 2000, namcostr, 0, namcostr, funcube, seta2_state, init_namcostr, ROT0, "Namco", "Namco Stars", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING )
-GAME( 2000, deerhunt, 0, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2000, deerhunta, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2000, deerhuntb, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2000, deerhuntc, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2000, deerhuntd, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2000, deerhunte, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V1", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2001, turkhunt, 0, samshoot, turkhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Turkey Hunting USA V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2001, wschamp, 0, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V2.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2001, wschampa, wschamp, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.01", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2001, wschampb, wschamp, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2002, trophyh, 0, samshoot, trophyh, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Trophy Hunting - Bear & Moose V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, gundamex, 0, gundamex, gundamex, seta2_state, empty_init, ROT0, "Banpresto", "Mobile Suit Gundam EX Revue", 0 )
+GAME( 1995, grdians, 0, grdians, grdians, seta2_state, empty_init, ROT0, "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, mj4simai, 0, seta2, mj4simai, mj4simai_state, empty_init, ROT0, "Maboroshi Ware", "Wakakusamonogatari Mahjong Yonshimai (Japan)", MACHINE_NO_COCKTAIL )
+GAME( 1996, myangel, 0, myangel, myangel, seta2_state, empty_init, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, myangel2, 0, myangel2, myangel2, seta2_state, empty_init, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel 2 (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, telpacfl, 0, telpacfl, telpacfl, seta2_state, empty_init, ROT270, "Sunsoft", "TelePachi Fever Lion (V1.0)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, reelquak, 0, reelquak, reelquak, seta2_state, empty_init, ROT0, "<unknown>", "Reel'N Quake! (Version 1.05)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 199?, endrichs, 0, reelquak, endrichs, seta2_state, empty_init, ROT0, "E.N.Tiger", "Endless Riches (Ver 1.20)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, staraudi, 0, staraudi, staraudi, staraudi_state, empty_init, ROT0, "Namco", "Star Audition", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1999, pzlbowl, 0, pzlbowl, pzlbowl, seta2_state, empty_init, ROT0, "MOSS / Nihon System", "Puzzle De Bowling (Japan)", MACHINE_NO_COCKTAIL )
+GAME( 2000, penbros, 0, penbros, penbros, seta2_state, empty_init, ROT0, "Subsino", "Penguin Brothers (Japan)", MACHINE_NO_COCKTAIL )
+GAME( 2000, ablast, penbros, penbros, penbros, seta2_state, empty_init, ROT0, "Subsino", "Hong Tian Lei (A-Blast) (Japan)", MACHINE_NO_COCKTAIL ) // 轟天雷/Hōng tiān léi
+GAME( 2000, ablastb, penbros, ablastb, penbros, seta2_state, empty_init, ROT0, "bootleg", "Hong Tian Lei (A-Blast) (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // at least "tilemap sprite" scrolly flag differs, FPGA instead of x1-010
+GAME( 2000, namcostr, 0, namcostr, funcube, seta2_state, init_namcostr, ROT0, "Namco", "Namco Stars", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING )
+GAME( 2000, deerhunt, 0, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2000, deerhunta, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2000, deerhuntb, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2000, deerhuntc, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2000, deerhuntd, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2000, deerhunte, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V1", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2001, turkhunt, 0, samshoot, turkhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Turkey Hunting USA V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2001, wschamp, 0, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V2.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2001, wschampa, wschamp, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.01", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2001, wschampb, wschamp, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2002, trophyh, 0, samshoot, trophyh, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Trophy Hunting - Bear & Moose V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2002, trophyht, trophyh, samshoot, trophyht, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Trophy Hunting - Bear & Moose V1.00 (location test)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2000, funcube, 0, funcube, funcube, funcube_state, init_funcube, ROT0, "Namco", "Funcube (v1.5)", MACHINE_NO_COCKTAIL )
-GAME( 2001, funcube2, 0, funcube2, funcube, funcube_state, init_funcube2, ROT0, "Namco", "Funcube 2 (v1.1)", MACHINE_NO_COCKTAIL )
-GAME( 2001, funcube3, 0, funcube3, funcube, funcube_state, init_funcube3, ROT0, "Namco", "Funcube 3 (v1.1)", MACHINE_NO_COCKTAIL )
-GAME( 2001, funcube4, 0, funcube2, funcube, funcube_state, init_funcube2, ROT0, "Namco", "Funcube 4 (v1.0)", MACHINE_NO_COCKTAIL )
-GAME( 2002, funcube5, 0, funcube2, funcube, funcube_state, init_funcube2, ROT0, "Namco", "Funcube 5 (v1.0)", MACHINE_NO_COCKTAIL )
+GAME( 2000, funcube, 0, funcube, funcube, funcube_state, init_funcube, ROT0, "Namco", "Funcube (v1.5)", MACHINE_NO_COCKTAIL )
+GAME( 2001, funcube2, 0, funcube2, funcube, funcube_state, init_funcube2, ROT0, "Namco", "Funcube 2 (v1.1)", MACHINE_NO_COCKTAIL )
+GAME( 2001, funcube3, 0, funcube3, funcube, funcube_state, init_funcube3, ROT0, "Namco", "Funcube 3 (v1.1)", MACHINE_NO_COCKTAIL )
+GAME( 2001, funcube4, 0, funcube2, funcube, funcube_state, init_funcube2, ROT0, "Namco", "Funcube 4 (v1.0)", MACHINE_NO_COCKTAIL )
+GAME( 2002, funcube5, 0, funcube2, funcube, funcube_state, init_funcube2, ROT0, "Namco", "Funcube 5 (v1.0)", MACHINE_NO_COCKTAIL )
diff --git a/src/mame/drivers/sf.cpp b/src/mame/drivers/sf.cpp
index 4fd07309f70..bd8e1ffd660 100644
--- a/src/mame/drivers/sf.cpp
+++ b/src/mame/drivers/sf.cpp
@@ -530,31 +530,32 @@ void sf_state::machine_reset()
m_fgscroll = 0;
}
-void sf_state::sfan(machine_config &config)
-{
+MACHINE_CONFIG_START(sf_state::sfan)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(8'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &sf_state::sfan_map);
- m_maincpu->set_vblank_int("screen", FUNC(sf_state::irq1_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(8'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(sfan_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sf_state, irq1_line_hold)
- Z80(config, m_audiocpu, XTAL(3'579'545)); /* ? xtal is 3.579545MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &sf_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) /* ? xtal is 3.579545MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
- z80_device &audio2(Z80(config, "audio2", XTAL(3'579'545))); /* ? xtal is 3.579545MHz */
- audio2.set_addrmap(AS_PROGRAM, &sf_state::sound2_map);
- audio2.set_addrmap(AS_IO, &sf_state::sound2_io_map);
- audio2.set_periodic_int(FUNC(sf_state::irq0_line_hold), attotime::from_hz(8000)); // ?
+ MCFG_DEVICE_ADD("audio2", Z80, XTAL(3'579'545)) /* ? xtal is 3.579545MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sound2_map)
+ MCFG_DEVICE_IO_MAP(sound2_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(sf_state, irq0_line_hold, 8000) // ?
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(sf_state::screen_update));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_sf);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(sf_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sf)
+
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 1024);
/* sound hardware */
@@ -568,34 +569,43 @@ void sf_state::sfan(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.60);
ymsnd.add_route(1, "rspeaker", 0.60);
- MSM5205(config, m_msm[0], 384000);
- m_msm[0]->set_prescaler_selector(msm5205_device::SEX_4B); /* 8KHz playback ? */
- m_msm[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_msm[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("msm1", MSM5205, 384000)
+ MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* 8KHz playback ? */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
- MSM5205(config, m_msm[1], 384000);
- m_msm[1]->set_prescaler_selector(msm5205_device::SEX_4B); /* 8KHz playback ? */
- m_msm[1]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_msm[1]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("msm2", MSM5205, 384000)
+ MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* 8KHz playback ? */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
-void sf_state::sfus(machine_config &config)
-{
+
+MACHINE_CONFIG_START(sf_state::sfus)
sfan(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &sf_state::sfus_map);
-}
-void sf_state::sfjp(machine_config &config)
-{
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sfus_map)
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_START(sf_state::sfjp)
sfan(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &sf_state::sfjp_map);
-}
-void sf_state::sfp(machine_config &config)
-{
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sfjp_map)
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_START(sf_state::sfp)
sfan(config);
- m_maincpu->set_vblank_int("screen", FUNC(sf_state::irq6_line_hold));
-}
+
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sf_state, irq6_line_hold)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/sfbonus.cpp b/src/mame/drivers/sfbonus.cpp
index 75b6ecea05f..f7c17308650 100644
--- a/src/mame/drivers/sfbonus.cpp
+++ b/src/mame/drivers/sfbonus.cpp
@@ -1376,28 +1376,27 @@ void sfbonus_state::ramdac_map(address_map &map)
}
-void sfbonus_state::sfbonus(machine_config &config)
-{
- Z80(config, m_maincpu, 6000000); // custom packaged z80 CPU ?? Mhz
- m_maincpu->set_addrmap(AS_PROGRAM, &sfbonus_state::sfbonus_map);
- m_maincpu->set_addrmap(AS_IO, &sfbonus_state::sfbonus_io);
- m_maincpu->set_vblank_int("screen", FUNC(sfbonus_state::irq0_line_hold));
- //m_maincpu->set_periodic_int(FUNC(sfbonus_state::nmi_line_pulse), attotime::from_hz(100));
+MACHINE_CONFIG_START(sfbonus_state::sfbonus)
+ MCFG_DEVICE_ADD("maincpu", Z80, 6000000) // custom packaged z80 CPU ?? Mhz
+ MCFG_DEVICE_PROGRAM_MAP(sfbonus_map)
+ MCFG_DEVICE_IO_MAP(sfbonus_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sfbonus_state, irq0_line_hold)
+ //MCFG_DEVICE_PERIODIC_INT_DRIVER(sfbonus_state, nmi_line_pulse, 100)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_sfbonus);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sfbonus)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(128*8, 64*8);
- screen.set_visarea(0*8, 512-1, 0*8, 288-1);
- screen.set_screen_update(FUNC(sfbonus_state::screen_update_sfbonus));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(128*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 288-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sfbonus_state, screen_update_sfbonus)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(0x100*2); // *2 for priority workaraound / custom drawing
+ MCFG_PALETTE_ADD("palette", 0x100*2) // *2 for priority workaraound / custom drawing
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette));
ramdac.set_addrmap(0, &sfbonus_state::ramdac_map);
@@ -1405,8 +1404,9 @@ void sfbonus_state::sfbonus(machine_config &config)
/* Parrot 3 seems fine at 1 Mhz, but Double Challenge isn't? */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.00); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
/* Super Ball */
ROM_START( suprball )
diff --git a/src/mame/drivers/sfcbox.cpp b/src/mame/drivers/sfcbox.cpp
index 01d1ec1c550..da8365da7c6 100644
--- a/src/mame/drivers/sfcbox.cpp
+++ b/src/mame/drivers/sfcbox.cpp
@@ -456,56 +456,56 @@ void sfcbox_state::machine_reset()
m_soundcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
}
-void sfcbox_state::sfcbox(machine_config &config)
-{
+MACHINE_CONFIG_START(sfcbox_state::sfcbox)
+
/* base snes hardware */
- _5A22(config, m_maincpu, 3580000*6); /* 2.68Mhz, also 3.58Mhz */
- m_maincpu->set_addrmap(AS_PROGRAM, &sfcbox_state::snes_map);
+ MCFG_DEVICE_ADD("maincpu", _5A22, 3580000*6) /* 2.68Mhz, also 3.58Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(snes_map)
// runs at 24.576 MHz / 12 = 2.048 MHz
- SPC700(config, m_soundcpu, XTAL(24'576'000) / 12);
- m_soundcpu->set_addrmap(AS_PROGRAM, &sfcbox_state::spc_mem);
+ MCFG_DEVICE_ADD("soundcpu", SPC700, XTAL(24'576'000) / 12)
+ MCFG_DEVICE_PROGRAM_MAP(spc_mem)
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
/* sfcbox hardware */
- Z180(config, m_bios, XTAL(12'000'000) / 2); /* HD64180RF6X */
- m_bios->set_addrmap(AS_PROGRAM, &sfcbox_state::sfcbox_map);
- m_bios->set_addrmap(AS_IO, &sfcbox_state::sfcbox_io);
+ MCFG_DEVICE_ADD("bios", Z180, XTAL(12'000'000) / 2) /* HD64180RF6X */
+ MCFG_DEVICE_PROGRAM_MAP(sfcbox_map)
+ MCFG_DEVICE_IO_MAP(sfcbox_io)
- MB90082(config, m_mb90082, XTAL(12'000'000) / 2); /* TODO: correct clock */
+ MCFG_MB90082_ADD("mb90082",XTAL(12'000'000) / 2) /* TODO: correct clock */
S3520CF(config, m_s3520cf); /* RTC */
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- SNES_SOUND(config, m_spc700);
- m_spc700->add_route(0, "lspeaker", 1.00);
- m_spc700->add_route(1, "rspeaker", 1.00);
+ MCFG_DEVICE_ADD("spc700", SNES_SOUND)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
/* video hardware */
/* TODO: the screen should actually superimpose, but for the time being let's just separate outputs */
config.set_default_layout(layout_dualhsxs);
// SNES PPU
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(DOTCLK_NTSC, SNES_HTOTAL, 0, SNES_SCR_WIDTH, SNES_VTOTAL_NTSC, 0, SNES_SCR_HEIGHT_NTSC);
- screen.set_screen_update(FUNC(snes_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(DOTCLK_NTSC, SNES_HTOTAL, 0, SNES_SCR_WIDTH, SNES_VTOTAL_NTSC, 0, SNES_SCR_HEIGHT_NTSC)
+ MCFG_SCREEN_UPDATE_DRIVER( snes_state, screen_update )
SNES_PPU(config, m_ppu, MCLK_NTSC);
m_ppu->open_bus_callback().set([this] { return snes_open_bus_r(); }); // lambda because overloaded function name
m_ppu->set_screen("screen");
// SFCBOX
- screen_device &osd(SCREEN(config, "osd", SCREEN_TYPE_RASTER));
- osd.set_refresh_hz(60);
- osd.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
-// osd.set_size(24*12+22, 12*18+22);
-// osd.set_visarea(0*8, 24*12-1, 0*8, 12*18-1);
- osd.set_size(24*16+22, 12*16+22);
- osd.set_visarea(0*8, 24*16-1, 0*8, 12*16-1);
- osd.set_screen_update(FUNC(sfcbox_state::screen_update));
-}
+ MCFG_SCREEN_ADD("osd", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+// MCFG_SCREEN_SIZE(24*12+22, 12*18+22)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, 24*12-1, 0*8, 12*18-1)
+ MCFG_SCREEN_SIZE(24*16+22, 12*16+22)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 24*16-1, 0*8, 12*16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sfcbox_state,screen_update)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/sg1000.cpp b/src/mame/drivers/sg1000.cpp
index b5ef0daa73b..ce1a99ab3f1 100644
--- a/src/mame/drivers/sg1000.cpp
+++ b/src/mame/drivers/sg1000.cpp
@@ -136,8 +136,9 @@ void sg1000_state::sg1000_map(address_map &map)
void sg1000_state::sg1000_io_map(address_map &map)
{
map.global_mask(0xff);
- map(0x40, 0x40).mirror(0x3f).w(SN76489AN_TAG, FUNC(sn76489a_device::write));
- map(0x80, 0x81).mirror(0x3e).rw(TMS9918A_TAG, FUNC(tms9918a_device::read), FUNC(tms9918a_device::write));
+ map(0x40, 0x40).mirror(0x3f).w(SN76489AN_TAG, FUNC(sn76489a_device::command_w));
+ map(0x80, 0x80).mirror(0x3e).rw(TMS9918A_TAG, FUNC(tms9918a_device::vram_r), FUNC(tms9918a_device::vram_w));
+ map(0x81, 0x81).mirror(0x3e).rw(TMS9918A_TAG, FUNC(tms9918a_device::register_r), FUNC(tms9918a_device::register_w));
map(0xdc, 0xdf).rw(FUNC(sg1000_state::peripheral_r), FUNC(sg1000_state::peripheral_w));
}
@@ -158,8 +159,9 @@ void sg1000_state::omv_map(address_map &map)
void sg1000_state::omv_io_map(address_map &map)
{
map.global_mask(0xff);
- map(0x40, 0x40).mirror(0x3f).w(SN76489AN_TAG, FUNC(sn76489a_device::write));
- map(0x80, 0x81).mirror(0x3e).rw(TMS9918A_TAG, FUNC(tms9918a_device::read), FUNC(tms9918a_device::write));
+ map(0x40, 0x40).mirror(0x3f).w(SN76489AN_TAG, FUNC(sn76489a_device::command_w));
+ map(0x80, 0x80).mirror(0x3e).rw(TMS9918A_TAG, FUNC(tms9918a_device::vram_r), FUNC(tms9918a_device::vram_w));
+ map(0x81, 0x81).mirror(0x3e).rw(TMS9918A_TAG, FUNC(tms9918a_device::register_r), FUNC(tms9918a_device::register_w));
map(0xc0, 0xc0).mirror(0x38).portr("C0");
map(0xc1, 0xc1).mirror(0x38).portr("C1");
map(0xc2, 0xc2).mirror(0x38).portr("C2");
@@ -185,9 +187,9 @@ void sg1000_state::sc3000_map(address_map &map)
void sg1000_state::sc3000_io_map(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0xff).rw(CARTSLOT_TAG, FUNC(sega8_cart_slot_device::read_io), FUNC(sega8_cart_slot_device::write_io));
- map(0x7f, 0x7f).w(SN76489AN_TAG, FUNC(sn76489a_device::write));
- map(0xbe, 0xbf).rw(TMS9918A_TAG, FUNC(tms9918a_device::read), FUNC(tms9918a_device::write));
+ map(0x7f, 0x7f).w(SN76489AN_TAG, FUNC(sn76489a_device::command_w));
+ map(0xbe, 0xbe).rw(TMS9918A_TAG, FUNC(tms9918a_device::vram_r), FUNC(tms9918a_device::vram_w));
+ map(0xbf, 0xbf).rw(TMS9918A_TAG, FUNC(tms9918a_device::register_r), FUNC(tms9918a_device::register_w));
map(0xdc, 0xdf).rw(FUNC(sg1000_state::peripheral_r), FUNC(sg1000_state::peripheral_w));
}
@@ -196,8 +198,9 @@ void sg1000_state::sc3000_io_map(address_map &map)
{
map.global_mask(0xff);
map(0x00, 0x00).mirror(0xdf).rw(UPD9255_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
- map(0x00, 0x00).mirror(0x7f).w(SN76489AN_TAG, FUNC(sn76489a_device::write));
- map(0x00, 0x01).mirror(0xae).rw(TMS9918A_TAG, FUNC(tms9918a_device::read), FUNC(tms9918a_device::write));
+ map(0x00, 0x00).mirror(0x7f).w(SN76489AN_TAG, FUNC(sn76489a_device::command_w));
+ map(0x00, 0x00).mirror(0xae).rw(TMS9918A_TAG, FUNC(tms9918a_device::vram_r), FUNC(tms9918a_device::vram_w));
+ map(0x01, 0x01).mirror(0xae).rw(TMS9918A_TAG, FUNC(tms9918a_device::register_r), FUNC(tms9918a_device::register_w));
map(0x60, 0x60).mirror(0x9f).r(FUNC(sg1000_state::sc3000_r_r));
}
*/
@@ -219,8 +222,9 @@ void sf7000_state::sf7000_map(address_map &map)
void sf7000_state::sf7000_io_map(address_map &map)
{
map.global_mask(0xff);
- map(0x7f, 0x7f).w(SN76489AN_TAG, FUNC(sn76489a_device::write));
- map(0xbe, 0xbf).rw(TMS9918A_TAG, FUNC(tms9918a_device::read), FUNC(tms9918a_device::write));
+ map(0x7f, 0x7f).w(SN76489AN_TAG, FUNC(sn76489a_device::command_w));
+ map(0xbe, 0xbe).rw(TMS9918A_TAG, FUNC(tms9918a_device::vram_r), FUNC(tms9918a_device::vram_w));
+ map(0xbf, 0xbf).rw(TMS9918A_TAG, FUNC(tms9918a_device::register_r), FUNC(tms9918a_device::register_w));
map(0xdc, 0xdf).rw(FUNC(sf7000_state::peripheral_r), FUNC(sf7000_state::peripheral_w));
map(0xe0, 0xe1).m(m_fdc, FUNC(upd765a_device::map));
map(0xe4, 0xe7).rw(UPD9255_1_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
@@ -481,8 +485,7 @@ void sc3000_state::machine_start()
timer_set(attotime::zero, TIMER_LIGHTGUN_TICK);
if (m_cart && m_cart->exists() && (m_cart->get_type() == SEGA8_BASIC_L3 || m_cart->get_type() == SEGA8_MUSIC_EDITOR
- || m_cart->get_type() == SEGA8_DAHJEE_TYPEA || m_cart->get_type() == SEGA8_DAHJEE_TYPEB
- || m_cart->get_type() == SEGA8_MULTICART || m_cart->get_type() == SEGA8_MEGACART))
+ || m_cart->get_type() == SEGA8_DAHJEE_TYPEA || m_cart->get_type() == SEGA8_DAHJEE_TYPEB))
{
m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000, 0xffff, read8_delegate(FUNC(sega8_cart_slot_device::read_ram),(sega8_cart_slot_device*)m_cart));
m_maincpu->space(AS_PROGRAM).install_write_handler(0xc000, 0xffff, write8_delegate(FUNC(sega8_cart_slot_device::write_ram),(sega8_cart_slot_device*)m_cart));
@@ -520,15 +523,14 @@ void sf7000_state::machine_reset()
***************************************************************************/
/*-------------------------------------------------
- machine_config( sg1000 )
+ MACHINE_CONFIG_START( sg1000 )
-------------------------------------------------*/
-void sg1000_state::sg1000(machine_config &config)
-{
+MACHINE_CONFIG_START(sg1000_state::sg1000)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(10'738'635)/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &sg1000_state::sg1000_map);
- m_maincpu->set_addrmap(AS_IO, &sg1000_state::sg1000_io_map);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(10'738'635)/3)
+ MCFG_DEVICE_PROGRAM_MAP(sg1000_map)
+ MCFG_DEVICE_IO_MAP(sg1000_io_map)
/* video hardware */
tms9918a_device &vdp(TMS9918A(config, TMS9918A_TAG, XTAL(10'738'635)));
@@ -540,48 +542,47 @@ void sg1000_state::sg1000(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489A(config, SN76489AN_TAG, XTAL(10'738'635)/3).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD(SN76489AN_TAG, SN76489A, XTAL(10'738'635)/3)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* expansion slot */
- SG1000_EXPANSION_SLOT(config, m_sgexpslot, sg1000_expansion_devices, nullptr, false);
+ MCFG_SG1000_EXPANSION_ADD(EXPSLOT_TAG, sg1000_expansion_devices, nullptr, false)
/* cartridge */
- SG1000_CART_SLOT(config, CARTSLOT_TAG, sg1000_cart, nullptr);
+ MCFG_SG1000_CARTRIDGE_ADD(CARTSLOT_TAG, sg1000_cart, nullptr)
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("sg1000");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","sg1000")
/* internal ram */
RAM(config, m_ram).set_default_size("1K");
-}
+MACHINE_CONFIG_END
/*-------------------------------------------------
- machine_config( omv )
+ MACHINE_CONFIG_START( omv )
-------------------------------------------------*/
-void sg1000_state::omv(machine_config &config)
-{
+MACHINE_CONFIG_START(sg1000_state::omv)
sg1000(config);
+ MCFG_DEVICE_MODIFY(Z80_TAG)
+ MCFG_DEVICE_PROGRAM_MAP(omv_map)
+ MCFG_DEVICE_IO_MAP(omv_io_map)
- m_maincpu->set_addrmap(AS_PROGRAM, &sg1000_state::omv_map);
- m_maincpu->set_addrmap(AS_IO, &sg1000_state::omv_io_map);
-
- config.device_remove(CARTSLOT_TAG);
- OMV_CART_SLOT(config, CARTSLOT_TAG, sg1000_cart, nullptr);
+ MCFG_DEVICE_REMOVE(CARTSLOT_TAG)
+ MCFG_OMV_CARTRIDGE_ADD(CARTSLOT_TAG, sg1000_cart, nullptr)
m_ram->set_default_size("2K");
-}
+MACHINE_CONFIG_END
/*-------------------------------------------------
- machine_config( sc3000 )
+ MACHINE_CONFIG_START( sc3000 )
-------------------------------------------------*/
-void sc3000_state::sc3000(machine_config &config)
-{
+MACHINE_CONFIG_START(sc3000_state::sc3000)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(10'738'635)/3); // LH0080A
- m_maincpu->set_addrmap(AS_PROGRAM, &sc3000_state::sc3000_map);
- m_maincpu->set_addrmap(AS_IO, &sc3000_state::sc3000_io_map);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(10'738'635)/3) // LH0080A
+ MCFG_DEVICE_PROGRAM_MAP(sc3000_map)
+ MCFG_DEVICE_IO_MAP(sc3000_io_map)
/* video hardware */
tms9918a_device &vdp(TMS9918A(config, TMS9918A_TAG, XTAL(10'738'635)));
@@ -593,32 +594,32 @@ void sc3000_state::sc3000(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489A(config, SN76489AN_TAG, XTAL(10'738'635)/3).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD(SN76489AN_TAG, SN76489A, XTAL(10'738'635)/3)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* sc3000 has all sk1100 features built-in, so add it as a fixed slot */
- SG1000_EXPANSION_SLOT(config, m_sgexpslot, sg1000_expansion_devices, "sk1100", true);
+ MCFG_SG1000_EXPANSION_ADD(EXPSLOT_TAG, sg1000_expansion_devices, "sk1100", true)
/* cartridge */
- SC3000_CART_SLOT(config, CARTSLOT_TAG, sg1000_cart, nullptr);
+ MCFG_SC3000_CARTRIDGE_ADD(CARTSLOT_TAG, sg1000_cart, nullptr)
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("sg1000");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","sg1000")
/* the sk1100 device will add sc3000 cart and cass lists */
/* internal ram */
RAM(config, m_ram).set_default_size("2K");
-}
+MACHINE_CONFIG_END
/*-------------------------------------------------
- machine_config( sf7000 )
+ MACHINE_CONFIG_START( sf7000 )
-------------------------------------------------*/
-void sf7000_state::sf7000(machine_config &config)
-{
+MACHINE_CONFIG_START(sf7000_state::sf7000)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(10'738'635)/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &sf7000_state::sf7000_map);
- m_maincpu->set_addrmap(AS_IO, &sf7000_state::sf7000_io_map);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(10'738'635)/3)
+ MCFG_DEVICE_PROGRAM_MAP(sf7000_map)
+ MCFG_DEVICE_IO_MAP(sf7000_io_map)
/* video hardware */
tms9918a_device &vdp(TMS9918A(config, TMS9918A_TAG, XTAL(10'738'635)));
@@ -630,7 +631,8 @@ void sf7000_state::sf7000(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489A(config, SN76489AN_TAG, XTAL(10'738'635)/3).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD(SN76489AN_TAG, SN76489A, XTAL(10'738'635)/3)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* devices */
i8255_device &ppi(I8255(config, UPD9255_1_TAG));
@@ -648,22 +650,21 @@ void sf7000_state::sf7000(machine_config &config)
rs232.dsr_handler().set(UPD8251_TAG, FUNC(i8251_device::write_dsr));
UPD765A(config, m_fdc, 8'000'000, false, false);
- FLOPPY_CONNECTOR(config, UPD765_TAG ":0", sf7000_floppies, "3ssdd", sf7000_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", sf7000_floppies, "3ssdd", sf7000_state::floppy_formats)
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
/* sf7000 (sc3000) has all sk1100 features built-in, so add it as a fixed slot */
- SG1000_EXPANSION_SLOT(config, m_sgexpslot, sg1000_expansion_devices, "sk1100", true);
+ MCFG_SG1000_EXPANSION_ADD(EXPSLOT_TAG, sg1000_expansion_devices, "sk1100", true)
/* software lists */
- SOFTWARE_LIST(config, "flop_list").set_original("sf7000");
+ MCFG_SOFTWARE_LIST_ADD("flop_list","sf7000")
/* internal ram */
RAM(config, m_ram).set_default_size("64K");
-}
+MACHINE_CONFIG_END
/***************************************************************************
ROMS
diff --git a/src/mame/drivers/sg1000a.cpp b/src/mame/drivers/sg1000a.cpp
index cf91d446fcd..0bd5a5cbcd1 100644
--- a/src/mame/drivers/sg1000a.cpp
+++ b/src/mame/drivers/sg1000a.cpp
@@ -324,16 +324,18 @@ void sg1000a_state::decrypted_opcodes_map(address_map &map)
void sg1000a_state::io_map(address_map &map)
{
map.global_mask(0xff);
- map(0x7f, 0x7f).w("snsnd", FUNC(sn76489a_device::write));
- map(0xbe, 0xbf).rw("tms9928a", FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
+ map(0x7f, 0x7f).w("snsnd", FUNC(sn76489a_device::command_w));
+ map(0xbe, 0xbe).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0xbf, 0xbf).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
map(0xdc, 0xdf).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
}
void sg1000a_state::sderby_io_map(address_map &map)
{
map.global_mask(0xff);
- map(0x40, 0x40).mirror(0x3f).w("snsnd", FUNC(sn76489a_device::write));
- map(0x80, 0x81).mirror(0x3e).rw("tms9928a", FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
+ map(0x40, 0x40).mirror(0x3f).w("snsnd", FUNC(sn76489a_device::command_w));
+ map(0x80, 0x80).mirror(0x3e).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w));
+ map(0x81, 0x81).mirror(0x3e).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));
// map(0xc0, 0xc1).mirror(0x06) NEC D8251AC UART
map(0xc8, 0xcb).mirror(0x04).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); // NEC D8255AC-2
}
@@ -466,12 +468,11 @@ WRITE8_MEMBER(sg1000a_state::sg1000a_coin_counter_w)
*
*************************************/
-void sg1000a_state::sg1000a(machine_config &config)
-{
+MACHINE_CONFIG_START(sg1000a_state::sg1000a)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(3'579'545));
- m_maincpu->set_addrmap(AS_PROGRAM, &sg1000a_state::program_map);
- m_maincpu->set_addrmap(AS_IO, &sg1000a_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(3'579'545))
+ MCFG_DEVICE_PROGRAM_MAP(program_map)
+ MCFG_DEVICE_IO_MAP(io_map)
i8255_device &ppi(I8255(config, "ppi8255"));
ppi.in_pa_callback().set_ioport("P1");
@@ -489,8 +490,9 @@ void sg1000a_state::sg1000a(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489A(config, "snsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("snsnd", SN76489A, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
void sg1000a_state::sg1000ax(machine_config &config)
{
@@ -502,14 +504,14 @@ void sg1000a_state::sg1000ax(machine_config &config)
maincpu.set_decrypted_tag(":decrypted_opcodes");
}
-void sg1000a_state::sderbys(machine_config &config)
-{
+MACHINE_CONFIG_START(sg1000a_state::sderbys)
sg1000a(config);
- m_maincpu->set_clock(XTAL(10'738'635) / 3);
- m_maincpu->set_addrmap(AS_IO, &sg1000a_state::sderby_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(XTAL(10'738'635) / 3)
+ MCFG_DEVICE_IO_MAP(sderby_io_map)
// Actually uses a Sega 315-5066 chip, which is a TMS9918 and SN76489 in the same package but with RGB output
-}
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/shadfrce.cpp b/src/mame/drivers/shadfrce.cpp
index 17455f2c3a3..4cada653a05 100644
--- a/src/mame/drivers/shadfrce.cpp
+++ b/src/mame/drivers/shadfrce.cpp
@@ -535,22 +535,22 @@ GFXDECODE_END
/* Machine Driver Bits */
-void shadfrce_state::shadfrce(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(28'000'000) / 2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &shadfrce_state::shadfrce_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(shadfrce_state::scanline), "screen", 0, 1);
+MACHINE_CONFIG_START(shadfrce_state::shadfrce)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(28'000'000) / 2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(shadfrce_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", shadfrce_state, scanline, "screen", 0, 1)
- Z80(config, m_audiocpu, XTAL(3'579'545)); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &shadfrce_state::shadfrce_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(shadfrce_sound_map)
WATCHDOG_TIMER(config, "watchdog");
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(28'000'000) / 4, 448, 0, 320, 272, 8, 248); /* HTOTAL and VTOTAL are guessed */
- m_screen->set_screen_update(FUNC(shadfrce_state::screen_update));
- m_screen->screen_vblank().set(FUNC(shadfrce_state::screen_vblank));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 448, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
+ MCFG_SCREEN_UPDATE_DRIVER(shadfrce_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, shadfrce_state, screen_vblank))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_shadfrce);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x4000);
@@ -567,10 +567,10 @@ void shadfrce_state::shadfrce(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.50);
ymsnd.add_route(1, "rspeaker", 0.50);
- OKIM6295(config, m_oki, XTAL(13'495'200)/8, okim6295_device::PIN7_HIGH); /* verified on pcb */
- m_oki->add_route(ALL_OUTPUTS, "lspeaker", 0.50);
- m_oki->add_route(ALL_OUTPUTS, "rspeaker", 0.50);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(13'495'200)/8, okim6295_device::PIN7_HIGH) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
+MACHINE_CONFIG_END
/* Rom Defs. */
diff --git a/src/mame/drivers/shanghai.cpp b/src/mame/drivers/shanghai.cpp
index 0493b7b0f53..f60a2c932fd 100644
--- a/src/mame/drivers/shanghai.cpp
+++ b/src/mame/drivers/shanghai.cpp
@@ -398,26 +398,26 @@ void shanghai_state::hd63484_map(address_map &map)
map(0x00000, 0x3ffff).ram();
}
-void shanghai_state::shanghai(machine_config &config)
-{
+MACHINE_CONFIG_START(shanghai_state::shanghai)
+
/* basic machine hardware */
- V30(config, m_maincpu, XTAL(16'000'000)/2); /* NEC D70116C-8 */
- m_maincpu->set_addrmap(AS_PROGRAM, &shanghai_state::shanghai_map);
- m_maincpu->set_addrmap(AS_IO, &shanghai_state::shanghai_portmap);
- m_maincpu->set_vblank_int("screen", FUNC(shanghai_state::half_vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", V30, XTAL(16'000'000)/2) /* NEC D70116C-8 */
+ MCFG_DEVICE_PROGRAM_MAP(shanghai_map)
+ MCFG_DEVICE_IO_MAP(shanghai_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", shanghai_state, half_vblank_irq)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(57);
- //m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- m_screen->set_size(384, 280);
- m_screen->set_visarea(0, 384-1, 0, 280-1);
- m_screen->set_screen_update("hd63484", FUNC(hd63484_device::update_screen));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57)
+ //MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(384, 280)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1)
+ MCFG_SCREEN_UPDATE_DEVICE("hd63484", hd63484_device, update_screen)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(shanghai_state::shanghai_palette)).set_format(palette_device::xBGR_444, 256);
- HD63484(config, "hd63484", 0).set_addrmap(0, &shanghai_state::hd63484_map);
+ MCFG_HD63484_ADD("hd63484", 0, hd63484_map)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -429,29 +429,29 @@ void shanghai_state::shanghai(machine_config &config)
ymsnd.add_route(1, "mono", 0.15);
ymsnd.add_route(2, "mono", 0.15);
ymsnd.add_route(3, "mono", 0.80);
-}
+MACHINE_CONFIG_END
-void shanghai_state::shangha2(machine_config &config)
-{
+MACHINE_CONFIG_START(shanghai_state::shangha2)
+
/* basic machine hardware */
- V30(config, m_maincpu, XTAL(16'000'000)/2); /* ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &shanghai_state::shangha2_map);
- m_maincpu->set_addrmap(AS_IO, &shanghai_state::shangha2_portmap);
- m_maincpu->set_vblank_int("screen", FUNC(shanghai_state::half_vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", V30, XTAL(16'000'000)/2) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(shangha2_map)
+ MCFG_DEVICE_IO_MAP(shangha2_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", shanghai_state, half_vblank_irq)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(57);
- //m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- m_screen->set_size(384, 280);
- m_screen->set_visarea(0, 384-1, 0, 280-1);
- m_screen->set_screen_update("hd63484", FUNC(hd63484_device::update_screen));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57)
+ //MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(384, 280)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1)
+ MCFG_SCREEN_UPDATE_DEVICE("hd63484", hd63484_device, update_screen)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xBGR_444, 256);
- HD63484(config, "hd63484", 0).set_addrmap(0, &shanghai_state::hd63484_map);
+ MCFG_HD63484_ADD("hd63484", 0, hd63484_map)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -463,36 +463,35 @@ void shanghai_state::shangha2(machine_config &config)
ymsnd.add_route(1, "mono", 0.15);
ymsnd.add_route(2, "mono", 0.15);
ymsnd.add_route(3, "mono", 0.80);
-}
+MACHINE_CONFIG_END
-void shanghai_state::kothello(machine_config &config)
-{
+MACHINE_CONFIG_START(shanghai_state::kothello)
+
/* basic machine hardware */
- V30(config, m_maincpu, XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &shanghai_state::kothello_map);
- m_maincpu->set_vblank_int("screen", FUNC(shanghai_state::half_vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", V30, XTAL(16'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(kothello_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", shanghai_state, half_vblank_irq)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(16'000'000)/4));
- audiocpu.set_addrmap(AS_PROGRAM, &shanghai_state::kothello_sound_map);
- audiocpu.set_irq_acknowledge_callback("seibu_sound", FUNC(seibu_sound_device::im0_vector_cb));
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(kothello_sound_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("seibu_sound", seibu_sound_device, im0_vector_cb)
- config.m_minimum_quantum = attotime::from_hz(12000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(12000))
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(57);
- //m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- m_screen->set_size(384, 280);
- m_screen->set_visarea(0, 384-1, 0, 280-1);
- m_screen->set_screen_update("hd63484", FUNC(hd63484_device::update_screen));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57)
+ //MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(384, 280)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1)
+ MCFG_SCREEN_UPDATE_DEVICE("hd63484", hd63484_device, update_screen)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xBGR_444, 256);
- hd63484_device &hd63484(HD63484(config, "hd63484", 0));
- hd63484.set_addrmap(0, &shanghai_state::hd63484_map);
- hd63484.set_external_skew(2);
+ MCFG_HD63484_ADD("hd63484", 0, hd63484_map)
+ MCFG_HD63484_EXTERNAL_SKEW(2)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -512,7 +511,7 @@ void shanghai_state::kothello(machine_config &config)
seibu_sound.ym_write_callback().set("ymsnd", FUNC(ym2203_device::write));
SEIBU_ADPCM(config, "adpcm", 8000).add_route(ALL_OUTPUTS, "mono", 0.80); // actually MSM5205
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/shangkid.cpp b/src/mame/drivers/shangkid.cpp
index 8c631b7ac43..8cbb3abc4cc 100644
--- a/src/mame/drivers/shangkid.cpp
+++ b/src/mame/drivers/shangkid.cpp
@@ -375,19 +375,19 @@ void shangkid_state::sound_portmap(address_map &map)
/***************************************************************************************/
-void shangkid_state::chinhero(machine_config &config)
-{
+MACHINE_CONFIG_START(shangkid_state::chinhero)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'432'000)/6); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &shangkid_state::chinhero_main_map);
+ MCFG_DEVICE_ADD(m_maincpu, Z80, XTAL(18'432'000)/6) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(chinhero_main_map)
- Z80(config, m_bbx, XTAL(18'432'000)/6); /* verified on pcb */
- m_bbx->set_addrmap(AS_PROGRAM, &shangkid_state::chinhero_bbx_map);
- m_bbx->set_addrmap(AS_IO, &shangkid_state::chinhero_bbx_portmap);
+ MCFG_DEVICE_ADD(m_bbx, Z80, XTAL(18'432'000)/6) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(chinhero_bbx_map)
+ MCFG_DEVICE_IO_MAP(chinhero_bbx_portmap)
- Z80(config, m_audiocpu, XTAL(18'432'000)/6); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &shangkid_state::chinhero_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &shangkid_state::sound_portmap);
+ MCFG_DEVICE_ADD(m_audiocpu, Z80, XTAL(18'432'000)/6) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(chinhero_sound_map)
+ MCFG_DEVICE_IO_MAP(sound_portmap)
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set_inputline(m_bbx, INPUT_LINE_RESET).invert(); // RESET2
@@ -400,7 +400,7 @@ void shangkid_state::chinhero(machine_config &config)
mainlatch.q_out_cb<6>().set(FUNC(shangkid_state::coin_counter_1_w));
mainlatch.q_out_cb<7>().set(FUNC(shangkid_state::coin_counter_2_w));
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -420,20 +420,18 @@ void shangkid_state::chinhero(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
AY8910(config, m_aysnd, XTAL(18'432'000)/12); /* verified on pcb */
m_aysnd->port_a_write_callback().set(FUNC(shangkid_state::chinhero_ay8910_porta_w));
m_aysnd->port_b_write_callback().set(FUNC(shangkid_state::ay8910_portb_w));
m_aysnd->add_route(ALL_OUTPUTS, "speaker", 0.1);
-}
+MACHINE_CONFIG_END
-void shangkid_state::shangkid(machine_config &config)
-{
+MACHINE_CONFIG_START(shangkid_state::shangkid)
chinhero(config);
/* basic machine hardware */
@@ -452,10 +450,10 @@ void shangkid_state::shangkid(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(shangkid_state,shangkid)
/* video hardware */
- m_gfxdecode->set_info(gfx_shangkid);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_shangkid)
m_aysnd->port_a_write_callback().set(FUNC(shangkid_state::shangkid_ay8910_porta_w));
-}
+MACHINE_CONFIG_END
@@ -481,12 +479,12 @@ void shangkid_state::dynamski_portmap(address_map &map)
map(0x00, 0x01).w(m_aysnd, FUNC(ay8910_device::data_address_w));
}
-void shangkid_state::dynamski(machine_config &config)
-{
+MACHINE_CONFIG_START(shangkid_state::dynamski)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 3000000); /* ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &shangkid_state::dynamski_map);
- m_maincpu->set_addrmap(AS_IO, &shangkid_state::dynamski_portmap);
+ MCFG_DEVICE_ADD("maincpu", Z80, 3000000) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(dynamski_map)
+ MCFG_DEVICE_IO_MAP(dynamski_portmap)
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set(FUNC(shangkid_state::int_enable_1_w));
@@ -494,14 +492,14 @@ void shangkid_state::dynamski(machine_config &config)
mainlatch.q_out_cb<2>().set_nop(); // screen flip?
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(256+32, 256);
- screen.set_visarea(0, 255+32, 16, 255-16);
- screen.set_screen_update(FUNC(shangkid_state::screen_update_dynamski));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(shangkid_state::irq_1_w));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256+32, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255+32, 16, 255-16)
+ MCFG_SCREEN_UPDATE_DRIVER(shangkid_state, screen_update_dynamski)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, shangkid_state, irq_1_w))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_dynamski);
PALETTE(config, m_palette, FUNC(shangkid_state::dynamski_palette), 16*4 + 16*4, 32);
@@ -510,7 +508,7 @@ void shangkid_state::dynamski(machine_config &config)
SPEAKER(config, "speaker").front_center();
AY8910(config, m_aysnd, 2000000).add_route(ALL_OUTPUTS, "speaker", 0.1);
-}
+MACHINE_CONFIG_END
/***************************************************************************************/
diff --git a/src/mame/drivers/shaolins.cpp b/src/mame/drivers/shaolins.cpp
index e9577900407..a5ef43474c1 100644
--- a/src/mame/drivers/shaolins.cpp
+++ b/src/mame/drivers/shaolins.cpp
@@ -37,8 +37,8 @@ void shaolins_state::shaolins_map(address_map &map)
map(0x0000, 0x0000).w(FUNC(shaolins_state::nmi_w)); /* bit 0 = flip screen, bit 1 = nmi enable, bit 2 = ? */
/* bit 3, bit 4 = coin counters */
map(0x0100, 0x0100).w("watchdog", FUNC(watchdog_timer_device::reset_w));
- map(0x0300, 0x0300).w("sn1", FUNC(sn76489a_device::write)); /* trigger chip to read from latch. The program always */
- map(0x0400, 0x0400).w("sn2", FUNC(sn76489a_device::write)); /* writes the same number as the latch, so we don't */
+ map(0x0300, 0x0300).w("sn1", FUNC(sn76489a_device::command_w)); /* trigger chip to read from latch. The program always */
+ map(0x0400, 0x0400).w("sn2", FUNC(sn76489a_device::command_w)); /* writes the same number as the latch, so we don't */
/* bother emulating them. */
map(0x0500, 0x0500).portr("DSW1");
map(0x0600, 0x0600).portr("DSW2");
@@ -193,22 +193,22 @@ static GFXDECODE_START( gfx_shaolins )
GFXDECODE_END
-void shaolins_state::shaolins(machine_config &config)
-{
+MACHINE_CONFIG_START(shaolins_state::shaolins)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, MASTER_CLOCK/12); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &shaolins_state::shaolins_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(shaolins_state::interrupt), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, MASTER_CLOCK/12) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(shaolins_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", shaolins_state, interrupt, "screen", 0, 1)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(shaolins_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(shaolins_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_shaolins);
PALETTE(config, m_palette, FUNC(shaolins_state::shaolins_palette), 16*8*16+16*8*16, 256);
@@ -216,20 +216,23 @@ void shaolins_state::shaolins(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489A(config, "sn1", MASTER_CLOCK/12).add_route(ALL_OUTPUTS, "mono", 1.0); /* verified on pcb */
+ MCFG_DEVICE_ADD("sn1", SN76489A, MASTER_CLOCK/12) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- SN76489A(config, "sn2", MASTER_CLOCK/6).add_route(ALL_OUTPUTS, "mono", 1.0); /* verified on pcb */
-}
+ MCFG_DEVICE_ADD("sn2", SN76489A, MASTER_CLOCK/6) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
#if 0 // a bootleg board was found with downgraded sound hardware, but is otherwise the same
-void shaolins_state::shaolinb(machine_config &config)
-{
+static MACHINE_CONFIG_START( shaolinb )
shaolins(config);
- SN76489(config.replace(), "sn1", MASTER_CLOCK/12).add_route(ALL_OUTPUTS, "mono", 1.0); /* only type verified on pcb */
+ MCFG_DEVICE_REPLACE("sn1", SN76489, MASTER_CLOCK/12) /* only type verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- SN76489(config.replace(), "sn2", MASTER_CLOCK/6).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_REPLACE("sn2", SN76489, MASTER_CLOCK/6) /* only type verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
#endif
/***************************************************************************
diff --git a/src/mame/drivers/shine.cpp b/src/mame/drivers/shine.cpp
index d5176110ac4..0831440d68f 100644
--- a/src/mame/drivers/shine.cpp
+++ b/src/mame/drivers/shine.cpp
@@ -228,8 +228,7 @@ void shine_state::machine_start()
}
-void shine_state::shine(machine_config &config)
-{
+MACHINE_CONFIG_START(shine_state::shine)
/* basic machine hardware */
M6502(config, m_maincpu, 2000000); // 2MHz ??
m_maincpu->set_addrmap(AS_PROGRAM, &shine_state::shine_mem);
@@ -237,10 +236,9 @@ void shine_state::shine(machine_config &config)
INPUT_MERGER_ANY_HIGH(config, "irqs").output_handler().set_inputline("maincpu", M6502_IRQ_LINE);
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
+ MCFG_SCREEN_MC6847_PAL_ADD("screen", "vdg")
- MC6847_NTSC(config, m_vdg, 3.579545_MHz_XTAL); // or really PAL?
- m_vdg->set_screen("screen");
+ MC6847_NTSC(config, m_vdg, 3.579545_MHz_XTAL);
m_vdg->input_callback().set(FUNC(shine_state::vdg_videoram_r));
m_vdg->set_black_and_white(true);
@@ -269,7 +267,7 @@ void shine_state::shine(machine_config &config)
auto &cassette(CASSETTE(config, "cassette"));
cassette.set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
-}
+MACHINE_CONFIG_END
ROM_START( shine )
diff --git a/src/mame/drivers/shisen.cpp b/src/mame/drivers/shisen.cpp
index e4e91e6e2ea..3e6fecca5a9 100644
--- a/src/mame/drivers/shisen.cpp
+++ b/src/mame/drivers/shisen.cpp
@@ -213,32 +213,32 @@ GFXDECODE_END
-void shisen_state::shisen(machine_config &config)
-{
+MACHINE_CONFIG_START(shisen_state::shisen)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 6000000); /* 6 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &shisen_state::shisen_map);
- m_maincpu->set_addrmap(AS_IO, &shisen_state::shisen_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(shisen_state::irq0_line_hold));
-
- z80_device &soundcpu(Z80(config, "soundcpu", 3579645));
- soundcpu.set_addrmap(AS_PROGRAM, &shisen_state::shisen_sound_map);
- soundcpu.set_addrmap(AS_IO, &shisen_state::shisen_sound_io_map);
- soundcpu.set_periodic_int(FUNC(shisen_state::nmi_line_pulse), attotime::from_hz(128*55)); /* clocked by V1? (Vigilante) */
+ MCFG_DEVICE_ADD("maincpu", Z80, 6000000) /* 6 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(shisen_map)
+ MCFG_DEVICE_IO_MAP(shisen_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", shisen_state, irq0_line_hold)
+
+ MCFG_DEVICE_ADD("soundcpu", Z80, 3579645)
+ MCFG_DEVICE_PROGRAM_MAP(shisen_sound_map)
+ MCFG_DEVICE_IO_MAP(shisen_sound_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(shisen_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */
/* IRQs are generated by main Z80 and YM2151 */
- soundcpu.set_irq_acknowledge_callback("soundirq", FUNC(rst_neg_buffer_device::inta_cb));
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("soundirq", rst_neg_buffer_device, inta_cb)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(55);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(shisen_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(55)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(shisen_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_shisen);
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_shisen)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -250,18 +250,17 @@ void shisen_state::shisen(machine_config &config)
RST_NEG_BUFFER(config, "soundirq", 0).int_callback().set_inputline("soundcpu", 0);
- IREM_M72_AUDIO(config, m_audio);
+ MCFG_DEVICE_ADD("m72", IREM_M72_AUDIO)
ym2151_device &ymsnd(YM2151(config, "ymsnd", 3579545));
ymsnd.irq_handler().set("soundirq", FUNC(rst_neg_buffer_device::rst28_w));
ymsnd.add_route(0, "lspeaker", 0.5);
ymsnd.add_route(1, "rspeaker", 0.5);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "lspeaker", 0.25).add_route(ALL_OUTPUTS, "rspeaker", 0x25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/shootaway2.cpp b/src/mame/drivers/shootaway2.cpp
index 69cc2c03424..327e25ef62b 100644
--- a/src/mame/drivers/shootaway2.cpp
+++ b/src/mame/drivers/shootaway2.cpp
@@ -81,24 +81,24 @@ void m74_state::sub_map(address_map &map)
static INPUT_PORTS_START( m74 )
INPUT_PORTS_END
-void m74_state::m74(machine_config &config)
-{
- M37450(config, m_maincpu, XTAL(8'000'000)); /* C68 @ 8.0MHz - main CPU */
- m_maincpu->set_addrmap(AS_PROGRAM, &m74_state::c68_map);
+MACHINE_CONFIG_START(m74_state::m74)
+ MCFG_DEVICE_ADD("maincpu", M37450, XTAL(8'000'000)) /* C68 @ 8.0MHz - main CPU */
+ MCFG_DEVICE_PROGRAM_MAP(c68_map)
- TMPZ84C011(config, m_subcpu, XTAL(12'000'000) / 3); /* Z84C011 @ 4 MHz - sub CPU */
- m_subcpu->set_addrmap(AS_PROGRAM, &m74_state::sub_map);
+ MCFG_DEVICE_ADD("subcpu", TMPZ84C011, XTAL(12'000'000) / 3) /* Z84C011 @ 4 MHz - sub CPU */
+ MCFG_DEVICE_PROGRAM_MAP(sub_map)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_screen_update(FUNC(m74_state::screen_update));
- screen.set_size(320, 240);
- screen.set_visarea(0, 319, 0, 239);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_UPDATE_DRIVER(m74_state, screen_update)
+ MCFG_SCREEN_SIZE(320, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", XTAL(1'000'000), okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(1'000'000), okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START(shootaw2)
ROM_REGION(0x20000, "maincpu", 0) /* C68 / M37450 program ROM */
diff --git a/src/mame/drivers/shootout.cpp b/src/mame/drivers/shootout.cpp
index 32193741630..63f4cd949b9 100644
--- a/src/mame/drivers/shootout.cpp
+++ b/src/mame/drivers/shootout.cpp
@@ -276,23 +276,25 @@ void shootout_state::machine_reset ()
m_ccnt_old_val = 0x40;
}
-void shootout_state::shootout(machine_config &config)
-{
+MACHINE_CONFIG_START(shootout_state::shootout)
+
/* basic machine hardware */
- DECO_222(config, m_maincpu, XTAL(12'000'000) / 6); // 2 MHz?
- m_maincpu->set_addrmap(AS_PROGRAM, &shootout_state::shootout_map);
+ MCFG_DEVICE_ADD("maincpu", DECO_222, XTAL(12'000'000) / 6) // 2 MHz?
+ MCFG_DEVICE_PROGRAM_MAP(shootout_map)
- M6502(config, m_audiocpu, XTAL(12'000'000) / 8); // 1.5 MHz
- m_audiocpu->set_addrmap(AS_PROGRAM, &shootout_state::shootout_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", M6502, XTAL(12'000'000) / 8) // 1.5 MHz
+ MCFG_DEVICE_PROGRAM_MAP(shootout_sound_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- // Guessed parameters based on the 12 MHz XTAL, but they seem reasonable (TODO: Real PCB measurements)
- screen.set_raw(XTAL(12'000'000) / 2, 384, 0, 256, 262, 8, 248);
- screen.set_screen_update(FUNC(shootout_state::screen_update_shootout));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+
+ // Guessed parameters based on the 12 MHz XTAL, but they seem resonable (TODO: Real PCB measurements)
+ MCFG_SCREEN_RAW_PARAMS (XTAL(12'000'000) / 2, 384, 0, 256, 262, 8, 248)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_shootout);
+ MCFG_SCREEN_UPDATE_DRIVER(shootout_state, screen_update_shootout)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_shootout)
PALETTE(config, m_palette, FUNC(shootout_state::shootout_palette), 256);
/* sound hardware */
@@ -303,23 +305,25 @@ void shootout_state::shootout(machine_config &config)
ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(12'000'000) / 8)); // 1.5 MHz
ymsnd.irq_handler().set_inputline(m_audiocpu, M6502_IRQ_LINE);
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+MACHINE_CONFIG_END
-void shootout_state::shootouj(machine_config &config)
-{
+MACHINE_CONFIG_START(shootout_state::shootouj)
+
/* basic machine hardware */
- M6502(config, m_maincpu, XTAL(12'000'000) / 6); // 2 MHz? (Assuming the same XTAL as DE-0219 pcb)
- m_maincpu->set_addrmap(AS_PROGRAM, &shootout_state::shootouj_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, XTAL(12'000'000) / 6) // 2 MHz? (Assuming the same XTAL as DE-0219 pcb)
+ MCFG_DEVICE_PROGRAM_MAP(shootouj_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- // Guessed parameters based on the 12 MHz XTAL, but they seem reasonable (TODO: Real PCB measurements)
- screen.set_raw (XTAL(12'000'000) / 2, 384, 0, 256, 262, 8, 248);
- screen.set_screen_update(FUNC(shootout_state::screen_update_shootouj));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+
+ // Guessed parameters based on the 12 MHz XTAL, but they seem resonable (TODO: Real PCB measurements)
+ MCFG_SCREEN_RAW_PARAMS (XTAL(12'000'000) / 2, 384, 0, 256, 262, 8, 248)
+
+ MCFG_SCREEN_UPDATE_DRIVER(shootout_state, screen_update_shootouj)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_shootout);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_shootout)
PALETTE(config, m_palette, FUNC(shootout_state::shootout_palette), 256);
/* sound hardware */
@@ -332,15 +336,15 @@ void shootout_state::shootouj(machine_config &config)
ymsnd.port_a_write_callback().set(FUNC(shootout_state::bankswitch_w));
ymsnd.port_b_write_callback().set(FUNC(shootout_state::flipscreen_w));
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+MACHINE_CONFIG_END
-void shootout_state::shootouk(machine_config &config)
-{
+MACHINE_CONFIG_START(shootout_state::shootouk)
shootouj(config);
/* the Korean 'bootleg' has the usual DECO222 style encryption */
- DECO_222(config.replace(), m_maincpu, XTAL(12'000'000) / 6); // 2 MHz? (Assuming the same XTAL as DE-0219 pcb)
- m_maincpu->set_addrmap(AS_PROGRAM, &shootout_state::shootouj_map);
-}
+ MCFG_DEVICE_REMOVE("maincpu")
+ MCFG_DEVICE_ADD("maincpu", DECO_222, XTAL(12'000'000) / 6) // 2 MHz? (Assuming the same XTAL as DE-0219 pcb)
+ MCFG_DEVICE_PROGRAM_MAP(shootouj_map)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/shougi.cpp b/src/mame/drivers/shougi.cpp
index 51928319502..d6717f9ec28 100644
--- a/src/mame/drivers/shougi.cpp
+++ b/src/mame/drivers/shougi.cpp
@@ -182,18 +182,18 @@ void shougi_state::shougi_palette(palette_device &palette) const
bit0 = (color_prom[i] >> 0) & 0x01;
bit1 = (color_prom[i] >> 1) & 0x01;
bit2 = (color_prom[i] >> 2) & 0x01;
- int const r = combine_weights(weights_r, bit0, bit1, bit2);
+ int const r = combine_3_weights(weights_r, bit0, bit1, bit2);
/* green component */
bit0 = (color_prom[i] >> 3) & 0x01;
bit1 = (color_prom[i] >> 4) & 0x01;
bit2 = (color_prom[i] >> 5) & 0x01;
- int const g = combine_weights(weights_g, bit0, bit1, bit2);
+ int const g = combine_3_weights(weights_g, bit0, bit1, bit2);
/* blue component */
bit0 = (color_prom[i] >> 6) & 0x01;
bit1 = (color_prom[i] >> 7) & 0x01;
- int const b = combine_weights(weights_b, bit0, bit1);
+ int const b = combine_2_weights(weights_b, bit0, bit1);
palette.set_pen_color(i,rgb_t(r,g,b));
}
@@ -370,39 +370,39 @@ INTERRUPT_GEN_MEMBER(shougi_state::vblank_nmi)
}
-void shougi_state::shougi(machine_config &config)
-{
+MACHINE_CONFIG_START(shougi_state::shougi)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(10'000'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &shougi_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(shougi_state::vblank_nmi));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(10'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", shougi_state, vblank_nmi)
- Z80(config, m_subcpu, XTAL(10'000'000)/4);
- m_subcpu->set_addrmap(AS_PROGRAM, &shougi_state::sub_map);
- m_subcpu->set_addrmap(AS_IO, &shougi_state::readport_sub);
+ MCFG_DEVICE_ADD("sub", Z80, XTAL(10'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(sub_map)
+ MCFG_DEVICE_IO_MAP(readport_sub)
- ALPHA_8201(config, m_alpha_8201, XTAL(10'000'000)/4/8);
+ MCFG_DEVICE_ADD("alpha_8201", ALPHA_8201, XTAL(10'000'000)/4/8)
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set_nop(); // 0: sharedram = sub, 1: sharedram = main (TODO!)
mainlatch.q_out_cb<1>().set(FUNC(shougi_state::nmi_enable_w));
mainlatch.q_out_cb<2>().set_nop(); // ?
- mainlatch.q_out_cb<3>().set(m_alpha_8201, FUNC(alpha_8201_device::mcu_start_w)); // start/halt ALPHA-8201
- mainlatch.q_out_cb<4>().set(m_alpha_8201, FUNC(alpha_8201_device::bus_dir_w)).invert(); // ALPHA-8201 shared RAM bus direction: 0: mcu, 1: maincpu
+ mainlatch.q_out_cb<3>().set("alpha_8201", FUNC(alpha_8201_device::mcu_start_w)); // start/halt ALPHA-8201
+ mainlatch.q_out_cb<4>().set("alpha_8201", FUNC(alpha_8201_device::bus_dir_w)).invert(); // ALPHA-8201 shared RAM bus direction: 0: mcu, 1: maincpu
mainlatch.q_out_cb<7>().set_nop(); // nothing? connected to +5v via resistor
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 0x10); // assuming it's the same as champbas
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 255, 0, 255);
- screen.set_screen_update(FUNC(shougi_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 255)
+ MCFG_SCREEN_UPDATE_DRIVER(shougi_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(shougi_state::shougi_palette), 32);
@@ -410,7 +410,7 @@ void shougi_state::shougi(machine_config &config)
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd", XTAL(10'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/shtzone.cpp b/src/mame/drivers/shtzone.cpp
index c4f01def3cc..9b6df3aa13c 100644
--- a/src/mame/drivers/shtzone.cpp
+++ b/src/mame/drivers/shtzone.cpp
@@ -100,26 +100,27 @@ uint32_t shtzone_state::screen_update_shtzone(screen_device &screen, bitmap_ind1
}
-void shtzone_state::shtzone(machine_config &config)
-{
+MACHINE_CONFIG_START(shtzone_state::shtzone)
+
/* basic machine hardware */
- z80_device &timercpu(Z80(config, "timercpu", 10738000/4));
- timercpu.set_addrmap(AS_PROGRAM, &shtzone_state::shtzone_map);
+ MCFG_DEVICE_ADD("timercpu", Z80,10738000/4)
+ MCFG_DEVICE_PROGRAM_MAP(shtzone_map)
/* + SMS CPU */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 0, 256-1);
- screen.set_screen_update(FUNC(shtzone_state::screen_update_shtzone));
- screen.set_palette("palette");
-
- PALETTE(config, "palette").set_entries(0x100);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(shtzone_state, screen_update_shtzone)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 0x100)
+
+MACHINE_CONFIG_END
ROM_START( shtzone )
diff --git a/src/mame/drivers/shuuz.cpp b/src/mame/drivers/shuuz.cpp
index c89f3e5e5b1..ab5126a7880 100644
--- a/src/mame/drivers/shuuz.cpp
+++ b/src/mame/drivers/shuuz.cpp
@@ -233,18 +233,18 @@ GFXDECODE_END
*
*************************************/
-void shuuz_state::shuuz(machine_config &config)
-{
+MACHINE_CONFIG_START(shuuz_state::shuuz)
+
/* basic machine hardware */
- M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &shuuz_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
EEPROM_2816(config, "eeprom").lock_after_write(true);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- GFXDECODE(config, m_gfxdecode, "palette", gfx_shuuz);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_shuuz)
PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 1024);
ATARI_VAD(config, m_vad, 0, m_screen);
@@ -252,19 +252,20 @@ void shuuz_state::shuuz(machine_config &config)
TILEMAP(config, "vad:playfield", m_gfxdecode, 2, 8, 8, TILEMAP_SCAN_COLS, 64, 64).set_info_callback(DEVICE_SELF_OWNER, FUNC(shuuz_state::get_playfield_tile_info));
ATARI_MOTION_OBJECTS(config, "vad:mob", 0, m_screen, shuuz_state::s_mob_config).set_gfxdecode(m_gfxdecode);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses a VAD chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(shuuz_state::screen_update));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(shuuz_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", ATARI_CLOCK_14MHz/16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, ATARI_CLOCK_14MHz/16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/si5500.cpp b/src/mame/drivers/si5500.cpp
index 605466f5a07..8b79ce05677 100644
--- a/src/mame/drivers/si5500.cpp
+++ b/src/mame/drivers/si5500.cpp
@@ -41,7 +41,7 @@ private:
u8 gpibpsi_input_r(offs_t offset);
DECLARE_WRITE_LINE_MEMBER(gpibc_we_w);
DECLARE_WRITE_LINE_MEMBER(gpibc_dbin_w);
- u8 keypad_r(offs_t offset);
+ u8 keypad_r();
void mem_map(address_map &map);
void cru_map(address_map &map);
@@ -93,7 +93,7 @@ WRITE_LINE_MEMBER(si5500_state::gpibc_we_w)
if (!state)
{
u16 pio = m_gpibpsi->pio_outputs();
- m_gpibc->write((pio >> 8) & 7, pio & 0xff);
+ m_gpibc->reg8_w(machine().dummy_space(), (pio >> 8) & 7, pio & 0xff);
}
}
@@ -102,17 +102,19 @@ WRITE_LINE_MEMBER(si5500_state::gpibc_dbin_w)
if (state)
{
u16 pio = m_gpibpsi->pio_outputs();
- m_gpib_data = m_gpibc->read((pio >> 8) & 7);
+ m_gpib_data = m_gpibc->reg8_r(machine().dummy_space(), (pio >> 8) & 7);
}
}
-u8 si5500_state::keypad_r(offs_t offset)
+u8 si5500_state::keypad_r()
{
+ u8 result = 0xff;
+
for (int n = 0; n < 4; n++)
if (!BIT(m_keyplatch->output_state(), n))
- if (!BIT(m_keypad[n]->read(), offset))
- return 0;
- return 1;
+ result &= m_keypad[n]->read();
+
+ return result;
}
void si5500_state::mem_map(address_map &map)
@@ -123,19 +125,28 @@ void si5500_state::mem_map(address_map &map)
void si5500_state::cru_map(address_map &map)
{
- map(0x0000, 0x003f).rw(m_mainpsi, FUNC(tms9901_device::read), FUNC(tms9901_device::write));
- map(0x0080, 0x00bf).rw("acc", FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite));
- map(0x00c0, 0x00ff).rw("adpsi", FUNC(tms9901_device::read), FUNC(tms9901_device::write));
- map(0x0100, 0x010f).w("outlatch1", FUNC(ls259_device::write_d0));
- map(0x0110, 0x011f).w("outlatch2", FUNC(ls259_device::write_d0));
- map(0x0120, 0x012f).w("outlatch3", FUNC(ls259_device::write_d0));
- map(0x0140, 0x014f).w("outlatch4", FUNC(ls259_device::write_d0));
- map(0x0150, 0x015f).w("outlatch5", FUNC(ls259_device::write_d0));
- map(0x0160, 0x016f).w(m_keyplatch, FUNC(ls259_device::write_d0)).nopr();
- map(0x0170, 0x017f).r(FUNC(si5500_state::keypad_r));
- map(0x0400, 0x043f).rw("nvrpsi", FUNC(tms9901_device::read), FUNC(tms9901_device::write));
- map(0x0440, 0x047f).rw(m_gpibpsi, FUNC(tms9901_device::read), FUNC(tms9901_device::write));
- map(0x0800, 0x0fff).rw("novram", FUNC(x2201_device::read), FUNC(x2201_device::write));
+ // MAME currently has incompatible addressing for CRU reads and writes
+ map(0x00, 0x03).r(m_mainpsi, FUNC(tms9901_device::read));
+ map(0x08, 0x0b).r("acc", FUNC(tms9902_device::cruread));
+ map(0x0c, 0x0f).r("adpsi", FUNC(tms9901_device::read));
+ map(0x16, 0x16).nopr();
+ map(0x17, 0x17).r(FUNC(si5500_state::keypad_r));
+ map(0x40, 0x43).r("nvrpsi", FUNC(tms9901_device::read));
+ map(0x44, 0x47).r(m_gpibpsi, FUNC(tms9901_device::read));
+ map(0x80, 0xff).r("novram", FUNC(x2201_device::read_byte));
+
+ map(0x000, 0x01f).w(m_mainpsi, FUNC(tms9901_device::write));
+ map(0x040, 0x05f).w("acc", FUNC(tms9902_device::cruwrite));
+ map(0x060, 0x07f).w("adpsi", FUNC(tms9901_device::write));
+ map(0x080, 0x087).w("outlatch1", FUNC(ls259_device::write_d0));
+ map(0x088, 0x08f).w("outlatch2", FUNC(ls259_device::write_d0));
+ map(0x090, 0x097).w("outlatch3", FUNC(ls259_device::write_d0));
+ map(0x0a0, 0x0a7).w("outlatch4", FUNC(ls259_device::write_d0));
+ map(0x0a8, 0x0af).w("outlatch5", FUNC(ls259_device::write_d0));
+ map(0x0b0, 0x0bf).w(m_keyplatch, FUNC(ls259_device::write_d0));
+ map(0x200, 0x21f).w("nvrpsi", FUNC(tms9901_device::write));
+ map(0x220, 0x23f).w(m_gpibpsi, FUNC(tms9901_device::write));
+ map(0x400, 0x7ff).w("novram", FUNC(x2201_device::write));
}
static INPUT_PORTS_START(si5500)
diff --git a/src/mame/drivers/sigmab52.cpp b/src/mame/drivers/sigmab52.cpp
index be2c9b164b4..a41586aeaa8 100644
--- a/src/mame/drivers/sigmab52.cpp
+++ b/src/mame/drivers/sigmab52.cpp
@@ -575,14 +575,14 @@ void sigmab52_state::machine_reset()
* Machine Drivers *
*************************/
-void sigmab52_state::jwildb52(machine_config &config)
-{
+MACHINE_CONFIG_START(sigmab52_state::jwildb52)
+
/* basic machine hardware */
- MC6809(config, m_maincpu, XTAL(8'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &sigmab52_state::jwildb52_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(8'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(jwildb52_map)
- MC6809(config, m_audiocpu, XTAL(8'000'000));
- m_audiocpu->set_addrmap(AS_PROGRAM, &sigmab52_state::sound_prog_map);
+ MCFG_DEVICE_ADD("audiocpu", MC6809, XTAL(8'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(sound_prog_map)
ptm6840_device &ptm1(PTM6840(config, "6840ptm_1", XTAL(8'000'000) / 8)); // FIXME
ptm1.irq_callback().set_inputline("maincpu", M6809_IRQ_LINE);
@@ -592,25 +592,27 @@ void sigmab52_state::jwildb52(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_NONE);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(1024, 1024);
- screen.set_visarea(0, 544-1, 0, 436-1);
- screen.set_screen_update("hd63484", FUNC(hd63484_device::update_screen));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(1024, 1024)
+ MCFG_SCREEN_VISIBLE_AREA(0, 544-1, 0, 436-1)
+ MCFG_SCREEN_UPDATE_DEVICE("hd63484", hd63484_device, update_screen)
+ MCFG_SCREEN_PALETTE("palette")
- HD63484(config, "hd63484", XTAL(8'000'000)).set_addrmap(0, &sigmab52_state::jwildb52_hd63484_map);
+ MCFG_HD63484_ADD("hd63484", XTAL(8'000'000), jwildb52_hd63484_map)
- PALETTE(config, m_palette).set_entries(16);
+ MCFG_PALETTE_ADD("palette", 16)
/* sound hardware */
SPEAKER(config, "mono").front_center();
GENERIC_LATCH_8(config, "soundlatch");
- YM3812(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/sigmab98.cpp b/src/mame/drivers/sigmab98.cpp
index d42c03ae818..f752e4e9c1b 100644
--- a/src/mame/drivers/sigmab98.cpp
+++ b/src/mame/drivers/sigmab98.cpp
@@ -2841,28 +2841,27 @@ INTERRUPT_GEN_MEMBER(sigmab98_state::sigmab98_vblank_interrupt)
device.execute().set_input_line_and_vector(0, HOLD_LINE, 0x5a);
}
-void sigmab98_state::sigmab98(machine_config &config)
-{
- Z80(config, m_maincpu, 10000000); // !! TAXAN KY-80, clock @X1? !!
- m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::gegege_mem_map);
- m_maincpu->set_addrmap(AS_IO, &sigmab98_state::gegege_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(sigmab98_state::sigmab98_vblank_interrupt));
+MACHINE_CONFIG_START(sigmab98_state::sigmab98)
+ MCFG_DEVICE_ADD("maincpu", Z80, 10000000) // !! TAXAN KY-80, clock @X1? !!
+ MCFG_DEVICE_PROGRAM_MAP(gegege_mem_map)
+ MCFG_DEVICE_IO_MAP(gegege_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sigmab98_state, sigmab98_vblank_interrupt)
MCFG_MACHINE_RESET_OVERRIDE(sigmab98_state, sigmab98)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
EEPROM_93C46_16BIT(config, "eeprom");
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW );
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
// video hardware
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60); // ?
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); // game reads vblank state
- m_screen->set_size(0x140, 0x100);
- m_screen->set_visarea(0,0x140-1, 0,0xf0-1);
- m_screen->set_screen_update(FUNC(sigmab98_state::screen_update_sigmab98));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60) // ?
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
+ MCFG_SCREEN_SIZE(0x140, 0x100)
+ MCFG_SCREEN_VISIBLE_AREA(0,0x140-1, 0,0xf0-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sigmab98_state, screen_update_sigmab98)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sigmab98);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1000 + 1);
@@ -2874,36 +2873,33 @@ void sigmab98_state::sigmab98(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ymz280b_device &ymz(YMZ280B(config, "ymz", 16934400)); // clock @X2?
- ymz.add_route(0, "lspeaker", 1.0);
- ymz.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, 16934400) // clock @X2?
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
-void sigmab98_state::dodghero(machine_config &config)
-{
+MACHINE_CONFIG_START(sigmab98_state::dodghero)
sigmab98(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP( dodghero_mem_map )
+ MCFG_DEVICE_IO_MAP( dodghero_io_map )
+MACHINE_CONFIG_END
- m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::dodghero_mem_map);
- m_maincpu->set_addrmap(AS_IO, &sigmab98_state::dodghero_io_map);
-}
-
-void sigmab98_state::gegege(machine_config &config)
-{
+MACHINE_CONFIG_START(sigmab98_state::gegege)
sigmab98(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP( gegege_mem_map )
+ MCFG_DEVICE_IO_MAP( gegege_io_map )
+MACHINE_CONFIG_END
- m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::gegege_mem_map);
- m_maincpu->set_addrmap(AS_IO, &sigmab98_state::gegege_io_map);
-}
-
-void sigmab98_state::dashhero(machine_config &config)
-{
+MACHINE_CONFIG_START(sigmab98_state::dashhero)
sigmab98(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP( gegege_mem_map )
+ MCFG_DEVICE_IO_MAP( dashhero_io_map )
- m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::gegege_mem_map);
- m_maincpu->set_addrmap(AS_IO, &sigmab98_state::dashhero_io_map);
-
- config.device_remove("nvram"); // FIXME: does not survive between sessions otherwise
-}
+ MCFG_DEVICE_REMOVE("nvram") // FIXME: does not survive between sessions otherwise
+MACHINE_CONFIG_END
/***************************************************************************
@@ -2928,20 +2924,19 @@ TIMER_DEVICE_CALLBACK_MEMBER(lufykzku_state::lufykzku_irq)
m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_timer1_vector); // this needs to be called often or the state of the door is not read at boot (at least 5 times before bb9 is called)
}
-void lufykzku_state::lufykzku(machine_config &config)
-{
- Z80(config, m_maincpu, XTAL(20'000'000) / 2); // !! TAXAN KY-80, clock @X1? !!
- m_maincpu->set_addrmap(AS_PROGRAM, &lufykzku_state::lufykzku_mem_map);
- m_maincpu->set_addrmap(AS_IO, &lufykzku_state::lufykzku_io_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(lufykzku_state::lufykzku_irq), "screen", 0, 1);
+MACHINE_CONFIG_START(lufykzku_state::lufykzku)
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(20'000'000) / 2) // !! TAXAN KY-80, clock @X1? !!
+ MCFG_DEVICE_PROGRAM_MAP(lufykzku_mem_map)
+ MCFG_DEVICE_IO_MAP(lufykzku_io_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", lufykzku_state, lufykzku_irq, "screen", 0, 1)
MCFG_MACHINE_RESET_OVERRIDE(lufykzku_state, lufykzku)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // battery backed RAM
// No EEPROM
- MB3773(config, m_watchdog, 0);
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW );
+ MCFG_DEVICE_ADD("watchdog_mb3773", MB3773, 0)
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
// 2 x 8-bit parallel/serial converters
TTL165(config, m_dsw_shifter[0]);
@@ -2953,13 +2948,13 @@ void lufykzku_state::lufykzku(machine_config &config)
m_dsw_shifter[1]->qh_callback().set(FUNC(lufykzku_state::dsw_w));
// video hardware
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60); // ?
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); // game reads vblank state
- m_screen->set_size(0x140, 0x100);
- m_screen->set_visarea(0,0x140-1, 0,0xf0-1);
- m_screen->set_screen_update(FUNC(sigmab98_state::screen_update_sigmab98));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60) // ?
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
+ MCFG_SCREEN_SIZE(0x140, 0x100)
+ MCFG_SCREEN_VISIBLE_AREA(0,0x140-1, 0,0xf0-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sigmab98_state, screen_update_sigmab98)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lufykzku);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1000 + 1);
@@ -2970,10 +2965,10 @@ void lufykzku_state::lufykzku(machine_config &config)
// sound hardware
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- okim9810_device &oki(OKIM9810(config, "oki", XTAL(4'096'000)));
- oki.add_route(0, "lspeaker", 0.80);
- oki.add_route(1, "rspeaker", 0.80);
-}
+ MCFG_DEVICE_ADD("oki", OKIM9810, XTAL(4'096'000))
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+MACHINE_CONFIG_END
/***************************************************************************
@@ -2999,32 +2994,30 @@ TIMER_DEVICE_CALLBACK_MEMBER(sigmab98_state::sammymdl_irq)
m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_timer1_vector);
}
-void sigmab98_state::sammymdl(machine_config &config)
-{
- Z80(config, m_maincpu, XTAL(20'000'000) / 2); // !! KL5C80A120FP @ 10MHz? (actually 4 times faster than Z80) !!
- m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::animalc_map);
- m_maincpu->set_addrmap(AS_IO, &sigmab98_state::animalc_io);
-
- TIMER(config, "scantimer").configure_scanline(FUNC(sigmab98_state::sammymdl_irq), "screen", 0, 1);
+MACHINE_CONFIG_START(sigmab98_state::sammymdl)
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(20'000'000) / 2) // !! KL5C80A120FP @ 10MHz? (actually 4 times faster than Z80) !!
+ MCFG_DEVICE_PROGRAM_MAP( animalc_map )
+ MCFG_DEVICE_IO_MAP( animalc_io )
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", sigmab98_state, sammymdl_irq, "screen", 0, 1)
MCFG_MACHINE_RESET_OVERRIDE(sigmab98_state, sammymdl )
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // battery backed RAM
EEPROM_93C46_8BIT(config, "eeprom");
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW );
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
WATCHDOG_TIMER(config, "watchdog");
// video hardware
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60); // ?
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); // game reads vblank state
- m_screen->set_size(0x140, 0x100);
- m_screen->set_visarea(0, 0x140-1, 0, 0xf0-1);
- m_screen->set_screen_update(FUNC(sigmab98_state::screen_update_sigmab98));
- m_screen->screen_vblank().set(FUNC(sigmab98_state::screen_vblank_sammymdl));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60) // ?
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
+ MCFG_SCREEN_SIZE(0x140, 0x100)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xf0-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sigmab98_state, screen_update_sigmab98)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sigmab98_state, screen_vblank_sammymdl))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sigmab98);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1000 + 1);
@@ -3036,64 +3029,59 @@ void sigmab98_state::sammymdl(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- okim9810_device &oki(OKIM9810(config, "oki", XTAL(4'096'000)));
- oki.add_route(0, "lspeaker", 0.80);
- oki.add_route(1, "rspeaker", 0.80);
-}
+ MCFG_DEVICE_ADD("oki", OKIM9810, XTAL(4'096'000))
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
+MACHINE_CONFIG_END
-void sigmab98_state::animalc(machine_config &config)
-{
+MACHINE_CONFIG_START(sigmab98_state::animalc)
sammymdl(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP( animalc_map )
+ MCFG_DEVICE_IO_MAP( animalc_io )
+MACHINE_CONFIG_END
- m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::animalc_map);
- m_maincpu->set_addrmap(AS_IO, &sigmab98_state::animalc_io);
-}
-
-void sigmab98_state::gocowboy(machine_config &config)
-{
+MACHINE_CONFIG_START(sigmab98_state::gocowboy)
sammymdl(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP( gocowboy_map )
+ MCFG_DEVICE_IO_MAP( gocowboy_io )
- m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::gocowboy_map);
- m_maincpu->set_addrmap(AS_IO, &sigmab98_state::gocowboy_io);
-
- config.device_remove("hopper");
- TICKET_DISPENSER(config, m_hopper_small, attotime::from_msec(1000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW );
- TICKET_DISPENSER(config, m_hopper_large, attotime::from_msec(1000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW );
-}
+ MCFG_DEVICE_REMOVE("hopper")
+ MCFG_TICKET_DISPENSER_ADD("hopper_small", attotime::from_msec(1000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
+ MCFG_TICKET_DISPENSER_ADD("hopper_large", attotime::from_msec(1000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
+MACHINE_CONFIG_END
-void sigmab98_state::haekaka(machine_config &config)
-{
+MACHINE_CONFIG_START(sigmab98_state::haekaka)
sammymdl(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP( haekaka_map )
+ MCFG_DEVICE_IO_MAP( haekaka_io )
+MACHINE_CONFIG_END
- m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::haekaka_map);
- m_maincpu->set_addrmap(AS_IO, &sigmab98_state::haekaka_io);
-}
-
-void sigmab98_state::itazuram(machine_config &config)
-{
+MACHINE_CONFIG_START(sigmab98_state::itazuram)
sammymdl(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP( itazuram_map )
+ MCFG_DEVICE_IO_MAP( itazuram_io )
+MACHINE_CONFIG_END
- m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::itazuram_map);
- m_maincpu->set_addrmap(AS_IO, &sigmab98_state::itazuram_io);
-}
-
-void sigmab98_state::pyenaget(machine_config &config)
-{
+MACHINE_CONFIG_START(sigmab98_state::pyenaget)
sammymdl(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP( haekaka_map )
+ MCFG_DEVICE_IO_MAP( pyenaget_io )
+MACHINE_CONFIG_END
- m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::haekaka_map);
- m_maincpu->set_addrmap(AS_IO, &sigmab98_state::pyenaget_io);
-}
-
-void sigmab98_state::tdoboon(machine_config &config)
-{
+MACHINE_CONFIG_START(sigmab98_state::tdoboon)
sammymdl(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP( tdoboon_map )
+ MCFG_DEVICE_IO_MAP( tdoboon_io )
- m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::tdoboon_map);
- m_maincpu->set_addrmap(AS_IO, &sigmab98_state::tdoboon_io);
-
- m_screen->set_visarea(0,0x140-1, 0+4,0xf0+4-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0,0x140-1, 0+4,0xf0+4-1)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/silkroad.cpp b/src/mame/drivers/silkroad.cpp
index f050c3c146f..7b5979491d5 100644
--- a/src/mame/drivers/silkroad.cpp
+++ b/src/mame/drivers/silkroad.cpp
@@ -280,21 +280,21 @@ void silkroad_state::machine_start()
m_okibank->configure_entries(0, 4, memregion("oki1")->base() + 0x20000, 0x20000);
}
-void silkroad_state::silkroad(machine_config &config)
-{
+MACHINE_CONFIG_START(silkroad_state::silkroad)
+
/* basic machine hardware */
- M68EC020(config, m_maincpu, XTAL(32'000'000)/2); /* 16MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &silkroad_state::cpu_map);
- m_maincpu->set_vblank_int("screen", FUNC(silkroad_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68EC020, XTAL(32'000'000)/2) /* 16MHz */
+ MCFG_DEVICE_PROGRAM_MAP(cpu_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", silkroad_state, irq4_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(6*8+2, 64*8-1-(10*8)-2, 2*8, 32*8-1-(2*8));
- screen.set_screen_update(FUNC(silkroad_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(6*8+2, 64*8-1-(10*8)-2, 2*8, 32*8-1-(2*8))
+ MCFG_SCREEN_UPDATE_DRIVER(silkroad_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_silkroad);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x2000).set_membits(16);
@@ -305,15 +305,15 @@ void silkroad_state::silkroad(machine_config &config)
YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
- okim6295_device &oki1(OKIM6295(config, "oki1", XTAL(32'000'000)/32, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified (was 1056000)
- oki1.set_addrmap(0, &silkroad_state::oki_map);
- oki1.add_route(ALL_OUTPUTS, "lspeaker", 0.45);
- oki1.add_route(ALL_OUTPUTS, "rspeaker", 0.45);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'000'000)/32, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified (was 1056000)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.45)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.45)
- okim6295_device &oki2(OKIM6295(config, "oki2", XTAL(32'000'000)/16, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified (was 2112000)
- oki2.add_route(ALL_OUTPUTS, "lspeaker", 0.45);
- oki2.add_route(ALL_OUTPUTS, "rspeaker", 0.45);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(32'000'000)/16, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified (was 2112000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.45)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.45)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/silvmil.cpp b/src/mame/drivers/silvmil.cpp
index a0e538791fb..ed75b00ef21 100644
--- a/src/mame/drivers/silvmil.cpp
+++ b/src/mame/drivers/silvmil.cpp
@@ -53,6 +53,8 @@ public:
void puzzlove(machine_config &config);
void silvmil(machine_config &config);
+ void init_silvmil();
+
private:
/* devices */
required_device<cpu_device> m_maincpu;
@@ -61,91 +63,94 @@ private:
required_device<generic_latch_8_device> m_soundlatch;
/* memory pointers */
- required_shared_ptr<u16> m_bg_videoram;
- required_shared_ptr<u16> m_fg_videoram;
- required_shared_ptr<u16> m_spriteram;
+ required_shared_ptr<uint16_t> m_bg_videoram;
+ required_shared_ptr<uint16_t> m_fg_videoram;
+ required_shared_ptr<uint16_t> m_spriteram;
/* video-related */
tilemap_t *m_bg_layer;
tilemap_t *m_fg_layer;
- int m_tilebank[4];
- int m_whichbank;
-
- void tilebank_w(u16 data);
- void tilebank1_w(u16 data);
- void fg_scrolly_w(u16 data);
- void bg_scrolly_w(u16 data);
- void fg_scrollx_w(u16 data);
- void bg_scrollx_w(u16 data);
+ int m_silvmil_tilebank[4];
+ int m_whichbank;
+
+ DECLARE_WRITE16_MEMBER(silvmil_tilebank_w)
+ {
+ m_silvmil_tilebank[m_whichbank] = (data>>8) & 0x1f;
+
+ // printf("%08x tilebank_w %04x (which = %04x)\n",pc, data, m_whichbank);
+ m_fg_layer->mark_all_dirty();
+ m_bg_layer->mark_all_dirty();
+ }
+
+ DECLARE_WRITE16_MEMBER(silvmil_tilebank1_w)
+ {
+ m_whichbank = (data>>8)&0x3;
+ }
+
+ DECLARE_WRITE16_MEMBER(silvmil_fg_scrolly_w)
+ {
+ m_fg_layer->set_scrolly(0, data + 8);
+ }
+
+ DECLARE_WRITE16_MEMBER(silvmil_bg_scrolly_w)
+ {
+ m_bg_layer->set_scrolly(0, data + 8);
+ }
+
+ DECLARE_WRITE16_MEMBER(silvmil_fg_scrollx_w)
+ {
+ m_fg_layer->set_scrollx(0, data);
+ }
+
+ DECLARE_WRITE16_MEMBER(silvmil_bg_scrollx_w)
+ {
+ m_bg_layer->set_scrollx(0, data + 4);
+ }
+
+
+ DECLARE_WRITE16_MEMBER(silvmil_fg_videoram_w)
+ {
+ COMBINE_DATA(&m_fg_videoram[offset]);
+ m_fg_layer->mark_tile_dirty(offset);
+ }
+
+ DECLARE_WRITE16_MEMBER(silvmil_bg_videoram_w)
+ {
+ COMBINE_DATA(&m_bg_videoram[offset]);
+ m_bg_layer->mark_tile_dirty(offset);
+ }
+
+ DECLARE_WRITE16_MEMBER(silvmil_soundcmd_w)
+ {
+ if (ACCESSING_BITS_0_7)
+ {
+ m_soundlatch->write(space, 0, data & 0xff);
+ machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(20));
+
+ }
+ }
- void fg_videoram_w(offs_t offset, u16 data, u16 mem_mask = ~0);
- void bg_videoram_w(offs_t offset, u16 data, u16 mem_mask = ~0);
- DECLARE_WRITE8_MEMBER(soundcmd_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
- TILEMAP_MAPPER_MEMBER(scan_rows);
+ TILEMAP_MAPPER_MEMBER(deco16_scan_rows);
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
- u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update_silvmil(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void tumblepb_gfx1_rearrange();
- void mem_map(address_map &map);
- void sound_map(address_map &map);
+ void silvmil_map(address_map &map);
+ void silvmil_sound_map(address_map &map);
};
-void silvmil_state::tilebank_w(u16 data)
-{
- m_tilebank[m_whichbank] = (data >> 8) & 0x1f;
-
-// printf("%08x tilebank_w %04x (which = %04x)\n",pc, data, m_whichbank);
- m_fg_layer->mark_all_dirty();
- m_bg_layer->mark_all_dirty();
-}
-
-void silvmil_state::tilebank1_w(u16 data)
-{
- m_whichbank = (data >> 8) & 0x3;
-}
-
-void silvmil_state::fg_scrolly_w(u16 data)
-{
- m_fg_layer->set_scrolly(0, data + 8);
-}
-
-void silvmil_state::bg_scrolly_w(u16 data)
-{
- m_bg_layer->set_scrolly(0, data + 8);
-}
-
-void silvmil_state::fg_scrollx_w(u16 data)
-{
- m_fg_layer->set_scrollx(0, data);
-}
-
-void silvmil_state::bg_scrollx_w(u16 data)
-{
- m_bg_layer->set_scrollx(0, data + 4);
-}
-
-void silvmil_state::fg_videoram_w(offs_t offset, u16 data, u16 mem_mask)
-{
- COMBINE_DATA(&m_fg_videoram[offset]);
- m_fg_layer->mark_tile_dirty(offset);
-}
-
-void silvmil_state::bg_videoram_w(offs_t offset, u16 data, u16 mem_mask)
-{
- COMBINE_DATA(&m_bg_videoram[offset]);
- m_bg_layer->mark_tile_dirty(offset);
-}
TILE_GET_INFO_MEMBER(silvmil_state::get_bg_tile_info)
{
int data = m_bg_videoram[tile_index];
int tile = data & 0x3ff;
int color = (data >> 12) & 0x0f;
- int bank = m_tilebank[(data & 0xc00) >> 10] * 0x400;
+ int bank = m_silvmil_tilebank[(data&0xc00)>>10]*0x400;
SET_TILE_INFO_MEMBER(1, tile + bank, color + 0x20, 0);
}
@@ -155,12 +160,12 @@ TILE_GET_INFO_MEMBER(silvmil_state::get_fg_tile_info)
int data = m_fg_videoram[tile_index];
int tile = data & 0x3ff;
int color = (data >> 12) & 0x0f;
- int bank = m_tilebank[(data & 0xc00) >> 10] * 0x400;
+ int bank = m_silvmil_tilebank[(data&0xc00)>>10]*0x400;
SET_TILE_INFO_MEMBER(1, tile + bank, color + 0x10, 0);
}
-TILEMAP_MAPPER_MEMBER(silvmil_state::scan_rows)
+TILEMAP_MAPPER_MEMBER(silvmil_state::deco16_scan_rows)
{
/* logical (col,row) -> memory offset */
return (col & 0x1f) + ((row & 0x1f) << 5) + ((col & 0x20) << 5) + ((row & 0x20) << 6);
@@ -168,13 +173,13 @@ TILEMAP_MAPPER_MEMBER(silvmil_state::scan_rows)
void silvmil_state::video_start()
{
- m_bg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(silvmil_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(silvmil_state::scan_rows),this), 16, 16, 64, 32);
- m_fg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(silvmil_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(silvmil_state::scan_rows),this), 16, 16, 64, 32);
+ m_bg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(silvmil_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(silvmil_state::deco16_scan_rows),this), 16, 16, 64, 32);
+ m_fg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(silvmil_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(silvmil_state::deco16_scan_rows),this), 16, 16, 64, 32);
m_fg_layer->set_transparent_pen(0);
}
-u32 silvmil_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t silvmil_state::screen_update_silvmil(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_bg_layer->draw(screen, bitmap, cliprect, 0, 0);
m_fg_layer->draw(screen, bitmap, cliprect, 0, 0);
@@ -183,28 +188,22 @@ u32 silvmil_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, co
}
-WRITE8_MEMBER(silvmil_state::soundcmd_w)
-{
- m_soundlatch->write(space, 0, data & 0xff);
- machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(20));
-}
-
-void silvmil_state::mem_map(address_map &map)
+void silvmil_state::silvmil_map(address_map &map)
{
map(0x000000, 0x0fffff).rom();
- map(0x100000, 0x100001).w(FUNC(silvmil_state::tilebank1_w));
- map(0x100002, 0x100003).w(FUNC(silvmil_state::fg_scrollx_w));
- map(0x100004, 0x100005).w(FUNC(silvmil_state::fg_scrolly_w));
- map(0x100006, 0x100007).w(FUNC(silvmil_state::bg_scrollx_w));
- map(0x100008, 0x100009).w(FUNC(silvmil_state::bg_scrolly_w));
- map(0x10000e, 0x10000f).w(FUNC(silvmil_state::tilebank_w));
+ map(0x100000, 0x100001).w(FUNC(silvmil_state::silvmil_tilebank1_w));
+ map(0x100002, 0x100003).w(FUNC(silvmil_state::silvmil_fg_scrollx_w));
+ map(0x100004, 0x100005).w(FUNC(silvmil_state::silvmil_fg_scrolly_w));
+ map(0x100006, 0x100007).w(FUNC(silvmil_state::silvmil_bg_scrollx_w));
+ map(0x100008, 0x100009).w(FUNC(silvmil_state::silvmil_bg_scrolly_w));
+ map(0x10000e, 0x10000f).w(FUNC(silvmil_state::silvmil_tilebank_w));
- map(0x120000, 0x120fff).ram().w(FUNC(silvmil_state::fg_videoram_w)).share("fg_videoram");
- map(0x122000, 0x122fff).ram().w(FUNC(silvmil_state::bg_videoram_w)).share("bg_videoram");
+ map(0x120000, 0x120fff).ram().w(FUNC(silvmil_state::silvmil_fg_videoram_w)).share("fg_videoram");
+ map(0x122000, 0x122fff).ram().w(FUNC(silvmil_state::silvmil_bg_videoram_w)).share("bg_videoram");
map(0x200000, 0x2005ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
map(0x210000, 0x2107ff).ram().share("spriteram");
- map(0x270001, 0x270001).w(FUNC(silvmil_state::soundcmd_w));
+ map(0x270000, 0x270001).w(FUNC(silvmil_state::silvmil_soundcmd_w));
map(0x280000, 0x280001).portr("P1_P2");
map(0x280002, 0x280003).portr("COIN");
map(0x280004, 0x280005).portr("DSW");
@@ -367,77 +366,69 @@ static const gfx_layout tlayout =
RGN_FRAC(1,2),
4,
{ RGN_FRAC(1,2)+8, RGN_FRAC(1,2)+0, 8, 0 },
- { STEP8(8*2*16,1), STEP8(0,1) },
- { STEP16(0,8*2) },
- 64*8
-};
-
-static const gfx_layout tlayout_alt =
-{
- 16,16,
- RGN_FRAC(1,2),
- 4,
- { 8, 0, RGN_FRAC(1,2)+8, RGN_FRAC(1,2)+0 },
- { STEP8(0,1), STEP8(8*2*16,1) },
- { STEP16(0,8*2) },
+ { 32*8+0, 32*8+1, 32*8+2, 32*8+3, 32*8+4, 32*8+5, 32*8+6, 32*8+7,
+ 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
+ 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
64*8
};
static GFXDECODE_START( gfx_silvmil )
- GFXDECODE_ENTRY( "gfx2", 0, tlayout, 0, 64 ) /* Sprites 16x16 */
- GFXDECODE_ENTRY( "gfx1", 0, tlayout_alt, 0, 64 ) /* Tiles 16x16 */
+ GFXDECODE_ENTRY( "gfx2", 0, tlayout, 0, 64 ) /* Tiles 16x16 */
+ GFXDECODE_ENTRY( "gfx1", 0, tlayout, 0, 64 ) /* Sprites 16x16 */
GFXDECODE_END
void silvmil_state::machine_start()
{
- save_item(NAME(m_tilebank));
+ save_item(NAME(m_silvmil_tilebank));
save_item(NAME(m_whichbank));
}
void silvmil_state::machine_reset()
{
- m_tilebank[0] = 0;
- m_tilebank[1] = 0;
- m_tilebank[2] = 0;
- m_tilebank[3] = 0;
+ m_silvmil_tilebank[0] = 0;
+ m_silvmil_tilebank[1] = 0;
+ m_silvmil_tilebank[2] = 0;
+ m_silvmil_tilebank[3] = 0;
m_whichbank = 0;
}
-void silvmil_state::sound_map(address_map &map)
+void silvmil_state::silvmil_sound_map(address_map &map)
{
map(0x0000, 0xbfff).rom();
+ map(0xd000, 0xd7ff).ram();
map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0xc002, 0xc002).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).mirror(1);
map(0xc006, 0xc006).r(m_soundlatch, FUNC(generic_latch_8_device::read));
map(0xc00f, 0xc00f).nopw(); // ??
- map(0xd000, 0xd7ff).ram();
}
-void silvmil_state::silvmil(machine_config &config)
-{
+MACHINE_CONFIG_START(silvmil_state::silvmil)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(12'000'000)); /* Verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &silvmil_state::mem_map);
- m_maincpu->set_vblank_int("screen", FUNC(silvmil_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(12'000'000)) /* Verified */
+ MCFG_DEVICE_PROGRAM_MAP(silvmil_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", silvmil_state, irq6_line_hold)
+
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(4'096'000)) /* Verified */
+ MCFG_DEVICE_PROGRAM_MAP(silvmil_sound_map)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(4'096'000))); /* Verified */
- audiocpu.set_addrmap(AS_PROGRAM, &silvmil_state::sound_map);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 64*8);
- screen.set_visarea(0, 40*8-1, 0, 30*8-1);
- screen.set_screen_update(FUNC(silvmil_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(silvmil_state, screen_update_silvmil)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x300);
- GFXDECODE(config, m_gfxdecode, "palette", gfx_silvmil);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_silvmil)
DECO_SPRITE(config, m_sprgen, 0);
m_sprgen->set_gfx_region(0);
@@ -453,18 +444,22 @@ void silvmil_state::silvmil(machine_config &config)
ymsnd.irq_handler().set_inputline("audiocpu", 0);
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.25);
- OKIM6295(config, "oki", XTAL(4'096'000)/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.25); /* Verified */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(4'096'000)/4, okim6295_device::PIN7_HIGH) /* Verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
-void silvmil_state::puzzlove(machine_config &config)
-{
+MACHINE_CONFIG_START(silvmil_state::puzzlove)
silvmil(config);
- subdevice<z80_device>("audiocpu")->set_clock(XTAL(4'000'000)); /* Verified */
+ MCFG_DEVICE_REMOVE("audiocpu")
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(4'000'000)) /* Verified */
+ MCFG_DEVICE_PROGRAM_MAP(silvmil_sound_map)
m_sprgen->set_bootleg_type(1);
- subdevice<okim6295_device>("oki")->set_clock(XTAL(4'000'000)/4); /* Verified */
-}
+ MCFG_DEVICE_REMOVE("oki")
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(4'000'000)/4, okim6295_device::PIN7_HIGH) /* Verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
void silvmil_state::puzzlovek(machine_config &config)
{
@@ -581,7 +576,32 @@ ROM_START( puzzlovek )
ROM_LOAD16_BYTE( "8.u56", 0x100001, 0x80000, CRC(95b5f049) SHA1(1104dac1fbf6a894b7d8294b3f44a0edbf363157) ) // sldh
ROM_END
+void silvmil_state::tumblepb_gfx1_rearrange()
+{
+ uint8_t *rom = memregion("gfx1")->base();
+ int len = memregion("gfx1")->bytes();
+ int i;
+
+ /* gfx data is in the wrong order */
+ for (i = 0; i < len; i++)
+ {
+ if ((i & 0x20) == 0)
+ {
+ int t = rom[i]; rom[i] = rom[i + 0x20]; rom[i + 0x20] = t;
+ }
+ }
+ /* low/high half are also swapped */
+ for (i = 0; i < len / 2; i++)
+ {
+ int t = rom[i]; rom[i] = rom[i + len / 2]; rom[i + len / 2] = t;
+ }
+}
+
+void silvmil_state::init_silvmil()
+{
+ tumblepb_gfx1_rearrange();
+}
-GAME( 1995, silvmil, 0, silvmil, silvmil, silvmil_state, empty_init, ROT270, "Para", "Silver Millennium", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, puzzlove, 0, puzzlove, puzzlove, silvmil_state, empty_init, ROT0, "Para", "PuzzLove", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, puzzlovek, puzzlove, puzzlovek, puzzlovek, silvmil_state, empty_init, ROT0, "Para", "PuzzLove (Korea)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, silvmil, 0, silvmil, silvmil, silvmil_state, init_silvmil, ROT270, "Para", "Silver Millennium", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, puzzlove, 0, puzzlove, puzzlove, silvmil_state, init_silvmil, ROT0, "Para", "PuzzLove", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, puzzlovek, puzzlove, puzzlovek, puzzlovek, silvmil_state, init_silvmil, ROT0, "Para", "PuzzLove (Korea)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/simpl156.cpp b/src/mame/drivers/simpl156.cpp
index a203d88f76d..ab25c3fcab1 100644
--- a/src/mame/drivers/simpl156.cpp
+++ b/src/mame/drivers/simpl156.cpp
@@ -401,29 +401,29 @@ DECOSPR_PRIORITY_CB_MEMBER(simpl156_state::pri_callback)
}
-void simpl156_state::chainrec(machine_config &config)
-{
+MACHINE_CONFIG_START(simpl156_state::chainrec)
+
/* basic machine hardware */
- ARM(config, m_maincpu, 28000000 /* /4 */); /*DE156*/ /* 7.000 MHz */ /* measured at 7.. seems to need 28? */
- m_maincpu->set_addrmap(AS_PROGRAM, &simpl156_state::chainrec_map);
- m_maincpu->set_vblank_int("screen", FUNC(simpl156_state::simpl156_vbl_interrupt));
+ MCFG_DEVICE_ADD("maincpu", ARM, 28000000 /* /4 */) /*DE156*/ /* 7.000 MHz */ /* measured at 7.. seems to need 28? */
+ MCFG_DEVICE_PROGRAM_MAP(chainrec_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", simpl156_state, simpl156_vbl_interrupt)
EEPROM_93C46_16BIT(config, "eeprom"); // 93C45
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(800));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(simpl156_state::screen_update_simpl156));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(800))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(simpl156_state, screen_update_simpl156)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette);
m_palette->set_format(palette_device::xBGR_555, 4096);
m_palette->set_membits(16);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_simpl156);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_simpl156)
DECO16IC(config, m_deco_tilegen, 0);
m_deco_tilegen->set_split(0);
@@ -449,48 +449,50 @@ void simpl156_state::chainrec(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- okim6295_device &okisfx(OKIM6295(config, "okisfx", 32220000/32, okim6295_device::PIN7_HIGH));
- okisfx.add_route(ALL_OUTPUTS, "lspeaker", 0.6);
- okisfx.add_route(ALL_OUTPUTS, "rspeaker", 0.6);
+ MCFG_DEVICE_ADD("okisfx", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.6)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.6)
- OKIM6295(config, m_okimusic, 32220000/16, okim6295_device::PIN7_HIGH);
- m_okimusic->add_route(ALL_OUTPUTS, "lspeaker", 0.2);
- m_okimusic->add_route(ALL_OUTPUTS, "rspeaker", 0.2);
-}
+ MCFG_DEVICE_ADD("okimusic", OKIM6295, 32220000/16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.2)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.2)
+MACHINE_CONFIG_END
-void simpl156_state::magdrop(machine_config &config)
-{
+MACHINE_CONFIG_START(simpl156_state::magdrop)
chainrec(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &simpl156_state::magdrop_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(magdrop_map)
+MACHINE_CONFIG_END
-void simpl156_state::magdropp(machine_config &config)
-{
+MACHINE_CONFIG_START(simpl156_state::magdropp)
chainrec(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &simpl156_state::magdropp_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(magdropp_map)
+MACHINE_CONFIG_END
-void simpl156_state::joemacr(machine_config &config)
-{
+MACHINE_CONFIG_START(simpl156_state::joemacr)
chainrec(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &simpl156_state::joemacr_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(joemacr_map)
+MACHINE_CONFIG_END
-void simpl156_state::mitchell156(machine_config &config)
-{
+MACHINE_CONFIG_START(simpl156_state::mitchell156)
chainrec(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &simpl156_state::mitchell156_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mitchell156_map)
- m_okimusic->set_clock(32220000/32);
-}
+ MCFG_DEVICE_REPLACE("okimusic", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.2)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.2)
+MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/simple_st0016.cpp b/src/mame/drivers/simple_st0016.cpp
index 877226f41a8..a9218cb746c 100644
--- a/src/mame/drivers/simple_st0016.cpp
+++ b/src/mame/drivers/simple_st0016.cpp
@@ -467,45 +467,41 @@ uint32_t st0016_state::screen_update_st0016(screen_device &screen, bitmap_ind16
}
-void st0016_state::st0016(machine_config &config)
-{
+MACHINE_CONFIG_START(st0016_state::st0016)
/* basic machine hardware */
- ST0016_CPU(config, m_maincpu, 8000000); /* 8 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &st0016_state::st0016_mem);
- m_maincpu->set_addrmap(AS_IO, &st0016_state::st0016_io);
-
- TIMER(config, "scantimer").configure_scanline(FUNC(st0016_state::st0016_int), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu",ST0016_CPU,8000000) /* 8 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(st0016_mem)
+ MCFG_DEVICE_IO_MAP(st0016_io)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", st0016_state, st0016_int, "screen", 0, 1)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(48*8, 48*8);
- m_screen->set_visarea(0*8, 48*8-1, 0*8, 48*8-1);
- m_screen->set_screen_update(FUNC(st0016_state::screen_update_st0016));
- m_screen->set_palette("maincpu:palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(48*8, 48*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 48*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(st0016_state, screen_update_st0016)
+ MCFG_SCREEN_PALETTE("maincpu:palette")
// MCFG_VIDEO_START_OVERRIDE(st0016_state,st0016)
-}
-
-void st0016_state::mayjinsn(machine_config &config)
-{
- st0016(config);
- m_maincpu->set_addrmap(AS_IO, &st0016_state::st0016_m2_io);
+MACHINE_CONFIG_END
- V810(config, m_subcpu, 10000000); //25 Mhz ?
- m_subcpu->set_addrmap(AS_PROGRAM, &st0016_state::v810_mem);
-
- config.m_minimum_quantum = attotime::from_hz(60);
-}
-
-void st0016_state::renju(machine_config &config)
-{
+MACHINE_CONFIG_START(st0016_state::mayjinsn)
st0016(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &st0016_state::renju_mem);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(st0016_m2_io)
+ MCFG_DEVICE_ADD("sub", V810, 10000000)//25 Mhz ?
+ MCFG_DEVICE_PROGRAM_MAP(v810_mem)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(st0016_state::renju)
+ st0016(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(renju_mem)
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/sk1.cpp b/src/mame/drivers/sk1.cpp
index 1ad5581e705..bdb91ff66e7 100644
--- a/src/mame/drivers/sk1.cpp
+++ b/src/mame/drivers/sk1.cpp
@@ -89,11 +89,10 @@ void sk1_state::sk1_memory(address_map &map)
}
-void sk1_state::sk1(machine_config &config)
-{
+MACHINE_CONFIG_START(sk1_state::sk1)
// just to attach the memory map to something until I can work out what the CPU core is
ADDRESS_MAP_BANK(config, "dummy").set_map(&sk1_state::sk1_memory).set_data_width(8).set_addr_width(16);
-}
+MACHINE_CONFIG_END
INPUT_PORTS_START(sk1)
diff --git a/src/mame/drivers/skeetsht.cpp b/src/mame/drivers/skeetsht.cpp
index 5f7e7286e02..32b80cf0063 100644
--- a/src/mame/drivers/skeetsht.cpp
+++ b/src/mame/drivers/skeetsht.cpp
@@ -113,7 +113,7 @@ READ16_MEMBER(skeetsht_state::ramdac_r)
if (offset & 8)
offset = (offset & ~8) | 4;
- return m_tlc34076->read(offset);
+ return m_tlc34076->read(space, offset);
}
WRITE16_MEMBER(skeetsht_state::ramdac_w)
@@ -123,7 +123,7 @@ WRITE16_MEMBER(skeetsht_state::ramdac_w)
if (offset & 8)
offset = (offset & ~8) | 4;
- m_tlc34076->write(offset, data);
+ m_tlc34076->write(space, offset, data);
}
@@ -144,13 +144,13 @@ WRITE8_MEMBER(skeetsht_state::tms_w)
if ((offset & 1) == 0)
m_lastdataw = data;
else
- m_tms->host_w(offset >> 1, (m_lastdataw << 8) | data);
+ m_tms->host_w(space, offset >> 1, (m_lastdataw << 8) | data, 0xffff);
}
READ8_MEMBER(skeetsht_state::tms_r)
{
if ((offset & 1) == 0)
- m_lastdatar = m_tms->host_r(offset >> 1);
+ m_lastdatar = m_tms->host_r(space, offset >> 1, 0xffff);
return m_lastdatar >> ((offset & 1) ? 0 : 8);
}
@@ -178,9 +178,9 @@ WRITE8_MEMBER(skeetsht_state::hc11_porta_w)
WRITE8_MEMBER(skeetsht_state::ay8910_w)
{
if (m_ay_sel)
- m_ay->data_w(data);
+ m_ay->data_w(space, 0, data);
else
- m_ay->address_w(data);
+ m_ay->address_w(space, 0, data);
}
@@ -214,6 +214,7 @@ void skeetsht_state::tms_program_map(address_map &map)
{
map(0x00000000, 0x003fffff).ram().share("tms_vram");
map(0x00440000, 0x004fffff).rw(FUNC(skeetsht_state::ramdac_r), FUNC(skeetsht_state::ramdac_w));
+ map(0xc0000000, 0xc00001ff).rw(m_tms, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xff800000, 0xffbfffff).rom().mirror(0x00400000).region("tms", 0);
}
diff --git a/src/mame/drivers/skimaxx.cpp b/src/mame/drivers/skimaxx.cpp
index f5b619d8da7..5beefdc72d3 100644
--- a/src/mame/drivers/skimaxx.cpp
+++ b/src/mame/drivers/skimaxx.cpp
@@ -380,6 +380,7 @@ void skimaxx_state::tms_program_map(address_map &map)
map(0x02000000, 0x0200000f).ram();
map(0x02100000, 0x0210000f).ram();
map(0x04000000, 0x047fffff).rom().region("tmsgfx", 0);
+ map(0xc0000000, 0xc00001ff).rw(m_tms, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xff800000, 0xffffffff).rom().region("tms", 0);
}
@@ -502,14 +503,13 @@ void skimaxx_state::machine_reset()
*
*************************************/
-void skimaxx_state::skimaxx(machine_config &config)
-{
- M68EC030(config, m_maincpu, XTAL(40'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &skimaxx_state::m68030_1_map);
- m_maincpu->set_vblank_int("screen", FUNC(skimaxx_state::irq3_line_hold)); // 1,3,7 are identical, rest is RTE
+MACHINE_CONFIG_START(skimaxx_state::skimaxx)
+ MCFG_DEVICE_ADD("maincpu", M68EC030, XTAL(40'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(m68030_1_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", skimaxx_state, irq3_line_hold) // 1,3,7 are identical, rest is RTE
- M68EC030(config, m_subcpu, XTAL(40'000'000));
- m_subcpu->set_addrmap(AS_PROGRAM, &skimaxx_state::m68030_2_map);
+ MCFG_DEVICE_ADD("subcpu", M68EC030, XTAL(40'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(m68030_2_map)
/* video hardware */
@@ -523,16 +523,16 @@ void skimaxx_state::skimaxx(machine_config &config)
m_tms->set_shiftreg_in_callback(FUNC(skimaxx_state::to_shiftreg));
m_tms->set_shiftreg_out_callback(FUNC(skimaxx_state::from_shiftreg));
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
-// screen.set_raw(40000000/4, 156*4, 0, 100*4, 328, 0, 300); // TODO - Wrong but TMS overrides it anyway
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(0x400, 0x100);
- screen.set_visarea(0, 0x280-1, 0, 0xf0-1);
- screen.set_screen_update("tms", FUNC(tms34010_device::tms340x0_ind16));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_RAW_PARAMS(40000000/4, 156*4, 0, 100*4, 328, 0, 300) // TODO - Wrong but TMS overrides it anyway
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(0x400, 0x100)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x280-1, 0, 0xf0-1)
+ MCFG_SCREEN_UPDATE_DEVICE("tms", tms34010_device, tms340x0_ind16)
+ MCFG_SCREEN_PALETTE("palette")
-// GFXDECODE(config, "gfxdecode", "palette", gfx_skimaxx);
+// MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_skimaxx)
PALETTE(config, "palette", palette_device::RGB_555);
@@ -540,14 +540,18 @@ void skimaxx_state::skimaxx(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- OKIM6295(config, "oki1", XTAL(4'000'000), okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "lspeaker", 1.0); // ?
+ MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(4'000'000), okim6295_device::PIN7_LOW) // ?
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- OKIM6295(config, "oki2", XTAL(4'000'000)/2, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "lspeaker", 1.0); // ?
+ MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(4'000'000)/2, okim6295_device::PIN7_HIGH) // ?
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- OKIM6295(config, "oki3", XTAL(4'000'000), okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "rspeaker", 1.0); // ?
+ MCFG_DEVICE_ADD("oki3", OKIM6295, XTAL(4'000'000), okim6295_device::PIN7_LOW) // ?
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
- OKIM6295(config, "oki4", XTAL(4'000'000)/2, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "rspeaker", 1.0); // ?
-}
+ MCFG_DEVICE_ADD("oki4", OKIM6295, XTAL(4'000'000)/2, okim6295_device::PIN7_HIGH) // ?
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/skullxbo.cpp b/src/mame/drivers/skullxbo.cpp
index 7dd479a6eac..9a7ffb11a17 100644
--- a/src/mame/drivers/skullxbo.cpp
+++ b/src/mame/drivers/skullxbo.cpp
@@ -226,36 +226,36 @@ GFXDECODE_END
*
*************************************/
-void skullxbo_state::skullxbo(machine_config &config)
-{
+MACHINE_CONFIG_START(skullxbo_state::skullxbo)
+
/* basic machine hardware */
- M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &skullxbo_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- TIMER(config, m_scanline_timer).configure_generic(FUNC(skullxbo_state::scanline_timer));
+ MCFG_TIMER_DRIVER_ADD("scan_timer", skullxbo_state, scanline_timer)
EEPROM_2816(config, "eeprom").lock_after_write(true);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- GFXDECODE(config, m_gfxdecode, "palette", gfx_skullxbo);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_skullxbo)
PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 2048);
- TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 16,8, TILEMAP_SCAN_COLS, 64,64).set_info_callback(FUNC(skullxbo_state::get_playfield_tile_info));
- TILEMAP(config, m_alpha_tilemap, m_gfxdecode, 2, 16,8, TILEMAP_SCAN_ROWS, 64,32, 0).set_info_callback(FUNC(skullxbo_state::get_alpha_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 2, skullxbo_state, get_playfield_tile_info, 16,8, SCAN_COLS, 64,64)
+ MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", "gfxdecode", 2, skullxbo_state, get_alpha_tile_info, 16,8, SCAN_ROWS, 64,32, 0)
ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, skullxbo_state::s_mob_config);
m_mob->set_gfxdecode(m_gfxdecode);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz, 456*2, 0, 336*2, 262, 0, 240);
- m_screen->set_screen_update(FUNC(skullxbo_state::screen_update_skullxbo));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set(FUNC(skullxbo_state::video_int_write_line));
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz, 456*2, 0, 336*2, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(skullxbo_state, screen_update_skullxbo)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, skullxbo_state, video_int_write_line))
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -264,7 +264,7 @@ void skullxbo_state::skullxbo(machine_config &config)
m_jsa->main_int_cb().set_inputline(m_maincpu, M68K_IRQ_4);
m_jsa->test_read_cb().set_ioport("FF5802").bit(7);
m_jsa->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/skyarmy.cpp b/src/mame/drivers/skyarmy.cpp
index b1569bd04d7..c16ee02e5f4 100644
--- a/src/mame/drivers/skyarmy.cpp
+++ b/src/mame/drivers/skyarmy.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Tomasz Slanina, Ryan Holtz
+// copyright-holders:Tomasz Slanina,Ryan Holtz
/*
2010.04.05. stephh
@@ -13,20 +13,15 @@
2003.01.01. Tomasz Slanina
changes :
- - nmi generation (incorrect freq probably)
+ - nmi generation ( incorrect freq probably)
- music/sfx (partially)
- more sprite tiles (twice than before)
- fixed sprites flips
- scrolling (2nd game level)
- better colors (weird 'hack' .. but works in most cases ( comparing with screens from emustatus ))
- dips - lives
- - visible area .. a bit smaller (at least bg 'generation' is not visible for scrolling levels)
+ - visible area .. a bit smaller (at least bg 'generation' is not visible for scrolling levels )
- cpu clock .. now 4 mhz
-
- TODO :
- - Bridgepiece helicopters joining from the right side don't fly forward, this is especially a problem
- on the 3rd level making it impossible to complete it.
- What is it not caused by: memory map mirrors, spriteram writeonly, power-on ram contents
*/
#include "emu.h"
@@ -219,10 +214,10 @@ void skyarmy_state::skyarmy_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
map(0x8000, 0x87ff).ram();
- map(0x8800, 0x8fff).ram().w(FUNC(skyarmy_state::videoram_w)).share("videoram");
- map(0x9000, 0x93ff).ram().w(FUNC(skyarmy_state::colorram_w)).share("colorram");
- map(0x9800, 0x983f).ram().share("spriteram");
- map(0x9840, 0x985f).ram().share("scrollram");
+ map(0x8800, 0x8fff).ram().w(FUNC(skyarmy_state::videoram_w)).share("videoram"); /* Video RAM */
+ map(0x9000, 0x93ff).ram().w(FUNC(skyarmy_state::colorram_w)).share("colorram"); /* Color RAM */
+ map(0x9800, 0x983f).ram().share("spriteram"); /* Sprites */
+ map(0x9840, 0x985f).ram().share("scrollram"); /* Scroll RAM */
map(0xa000, 0xa000).portr("DSW");
map(0xa001, 0xa001).portr("P1");
map(0xa002, 0xa002).portr("P2");
@@ -325,13 +320,13 @@ static GFXDECODE_START( gfx_skyarmy )
GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 8 )
GFXDECODE_END
-void skyarmy_state::skyarmy(machine_config &config)
-{
- Z80(config, m_maincpu, 4000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &skyarmy_state::skyarmy_map);
- m_maincpu->set_addrmap(AS_IO, &skyarmy_state::skyarmy_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(skyarmy_state::irq0_line_hold));
- m_maincpu->set_periodic_int(FUNC(skyarmy_state::nmi_source), attotime::from_hz(650));
+MACHINE_CONFIG_START(skyarmy_state::skyarmy)
+
+ MCFG_DEVICE_ADD("maincpu", Z80,4000000)
+ MCFG_DEVICE_PROGRAM_MAP(skyarmy_map)
+ MCFG_DEVICE_IO_MAP(skyarmy_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", skyarmy_state, irq0_line_hold)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(skyarmy_state, nmi_source, 650) /* Hz */
ls259_device &latch(LS259(config, "latch")); // 11C
latch.q_out_cb<0>().set(FUNC(skyarmy_state::coin_counter_w));
@@ -341,13 +336,13 @@ void skyarmy_state::skyarmy(machine_config &config)
latch.q_out_cb<7>().set_nop(); // video RAM buffering?
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8,32*8);
- screen.set_visarea(0*8,32*8-1,1*8,31*8-1);
- screen.set_screen_update(FUNC(skyarmy_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8,32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8,32*8-1,1*8,31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(skyarmy_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_skyarmy);
PALETTE(config, m_palette, FUNC(skyarmy_state::skyarmy_palette), 32);
@@ -356,7 +351,7 @@ void skyarmy_state::skyarmy(machine_config &config)
SPEAKER(config, "mono").front_center();
AY8910(config, "ay0", 2500000).add_route(ALL_OUTPUTS, "mono", 0.15);
AY8910(config, "ay1", 2500000).add_route(ALL_OUTPUTS, "mono", 0.15);
-}
+MACHINE_CONFIG_END
ROM_START( skyarmy )
diff --git a/src/mame/drivers/skydiver.cpp b/src/mame/drivers/skydiver.cpp
index 2d0cb744059..3838ca1096a 100644
--- a/src/mame/drivers/skydiver.cpp
+++ b/src/mame/drivers/skydiver.cpp
@@ -335,12 +335,12 @@ GFXDECODE_END
*
*************************************/
-void skydiver_state::skydiver(machine_config &config)
-{
+MACHINE_CONFIG_START(skydiver_state::skydiver)
+
/* basic machine hardware */
- M6800(config, m_maincpu, 12.096_MHz_XTAL / 16); /* ???? */
- m_maincpu->set_addrmap(AS_PROGRAM, &skydiver_state::skydiver_map);
- m_maincpu->set_periodic_int(FUNC(skydiver_state::interrupt), attotime::from_hz(5*60));
+ MCFG_DEVICE_ADD("maincpu", M6800, 12.096_MHz_XTAL / 16) /* ???? */
+ MCFG_DEVICE_PROGRAM_MAP(skydiver_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(skydiver_state, interrupt, 5*60)
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 8); // 128V clocks the same as VBLANK
@@ -372,19 +372,19 @@ void skydiver_state::skydiver(machine_config &config)
latch3.q_out_cb<7>().set("discrete", FUNC(discrete_device::write_line<SKYDIVER_NOISE_RST>));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(12.096_MHz_XTAL / 2, 384, 0, 256, 262, 0, 224);
- screen.set_screen_update(FUNC(skydiver_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(12.096_MHz_XTAL / 2, 384, 0, 256, 262, 0, 224)
+ MCFG_SCREEN_UPDATE_DRIVER(skydiver_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_skydiver);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_skydiver)
PALETTE(config, m_palette, FUNC(skydiver_state::skydiver_palette), ARRAY_LENGTH(colortable_source));
/* sound hardware */
SPEAKER(config, "mono").front_center();
DISCRETE(config, m_discrete, skydiver_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/skyfox.cpp b/src/mame/drivers/skyfox.cpp
index 52124948780..d54509276fb 100644
--- a/src/mame/drivers/skyfox.cpp
+++ b/src/mame/drivers/skyfox.cpp
@@ -222,24 +222,24 @@ void skyfox_state::machine_reset()
m_bg_ctrl = 0;
}
-void skyfox_state::skyfox(machine_config &config)
-{
+MACHINE_CONFIG_START(skyfox_state::skyfox)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(8'000'000)/2); /* Verified at 4MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &skyfox_state::skyfox_map);
- m_maincpu->set_vblank_int("screen", FUNC(skyfox_state::skyfox_interrupt));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(8'000'000)/2) /* Verified at 4MHz */
+ MCFG_DEVICE_PROGRAM_MAP(skyfox_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", skyfox_state, skyfox_interrupt)
- Z80(config, m_audiocpu, XTAL(14'318'181)/8); /* Verified at 1.789772MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &skyfox_state::skyfox_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(14'318'181)/8) /* Verified at 1.789772MHz */
+ MCFG_DEVICE_PROGRAM_MAP(skyfox_sound_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(62.65);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0+0x60, 320-1+0x60, 0+16, 256-1-16); // from $30*2 to $CC*2+8
- m_screen->set_screen_update(FUNC(skyfox_state::screen_update_skyfox));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(62.65)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0+0x60, 320-1+0x60, 0+16, 256-1-16) // from $30*2 to $CC*2+8
+ MCFG_SCREEN_UPDATE_DRIVER(skyfox_state, screen_update_skyfox)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_skyfox);
PALETTE(config, m_palette, FUNC(skyfox_state::skyfox_palette), 256+256); // 256 static colors (+256 for the background??)
@@ -249,10 +249,12 @@ void skyfox_state::skyfox(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- YM2203(config, "ym1", XTAL(14'318'181)/8).add_route(ALL_OUTPUTS, "mono", 0.80); /* Verified at 1.789772MHz */
+ MCFG_DEVICE_ADD("ym1", YM2203, XTAL(14'318'181)/8) /* Verified at 1.789772MHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
- YM2203(config, "ym2", XTAL(14'318'181)/8).add_route(ALL_OUTPUTS, "mono", 0.80); /* Verified at 1.789772MHz */
-}
+ MCFG_DEVICE_ADD("ym2", YM2203, XTAL(14'318'181)/8) /* Verified at 1.789772MHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/skylncr.cpp b/src/mame/drivers/skylncr.cpp
index 3ef552923fb..0bbceeabed6 100644
--- a/src/mame/drivers/skylncr.cpp
+++ b/src/mame/drivers/skylncr.cpp
@@ -1645,13 +1645,13 @@ INTERRUPT_GEN_MEMBER(skylncr_state::skylncr_vblank_interrupt)
* Machine Driver *
*************************************/
-void skylncr_state::skylncr(machine_config &config)
-{
+MACHINE_CONFIG_START(skylncr_state::skylncr)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &skylncr_state::mem_map_skylncr);
- m_maincpu->set_addrmap(AS_IO, &skylncr_state::io_map_skylncr);
- m_maincpu->set_vblank_int("screen", FUNC(skylncr_state::skylncr_vblank_interrupt));
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map_skylncr)
+ MCFG_DEVICE_IO_MAP(io_map_skylncr)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", skylncr_state, skylncr_vblank_interrupt)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -1666,19 +1666,19 @@ void skylncr_state::skylncr(machine_config &config)
ppi1.in_pb_callback().set_ioport("IN3");
ppi1.in_pc_callback().set_ioport("IN4");
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(skylncr_state::screen_update_skylncr));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(skylncr_state, screen_update_skylncr)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_skylncr);
- PALETTE(config, m_palette).set_entries(0x200);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_skylncr)
+ MCFG_PALETTE_ADD("palette", 0x200)
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette));
ramdac.set_addrmap(0, &skylncr_state::ramdac_map);
@@ -1694,42 +1694,44 @@ void skylncr_state::skylncr(machine_config &config)
aysnd.port_a_read_callback().set_ioport("DSW3");
aysnd.port_b_read_callback().set_ioport("DSW4");
aysnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
-void skylncr_state::mbutrfly(machine_config &config)
-{
+MACHINE_CONFIG_START(skylncr_state::mbutrfly)
skylncr(config);
- m_maincpu->set_addrmap(AS_IO, &skylncr_state::io_map_mbutrfly);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(io_map_mbutrfly)
+MACHINE_CONFIG_END
-void skylncr_state::neraidou(machine_config &config)
-{
+MACHINE_CONFIG_START(skylncr_state::neraidou)
skylncr(config);
- m_gfxdecode->set_info(gfx_neraidou);
-}
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_neraidou)
+MACHINE_CONFIG_END
-void skylncr_state::sstar97(machine_config &config)
-{
+MACHINE_CONFIG_START(skylncr_state::sstar97)
skylncr(config);
- m_gfxdecode->set_info(gfx_sstar97);
-}
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_sstar97)
+MACHINE_CONFIG_END
-void skylncr_state::bdream97(machine_config &config)
-{
+MACHINE_CONFIG_START(skylncr_state::bdream97)
skylncr(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_OPCODES, &skylncr_state::bdream97_opcode_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_OPCODES_MAP(bdream97_opcode_map)
- m_gfxdecode->set_info(gfx_bdream97);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_bdream97)
+MACHINE_CONFIG_END
/**********************************
diff --git a/src/mame/drivers/skyraid.cpp b/src/mame/drivers/skyraid.cpp
index d04de7654ea..8d5940354dc 100644
--- a/src/mame/drivers/skyraid.cpp
+++ b/src/mame/drivers/skyraid.cpp
@@ -222,25 +222,25 @@ static GFXDECODE_START( gfx_skyraid )
GFXDECODE_END
-void skyraid_state::skyraid(machine_config &config)
-{
+MACHINE_CONFIG_START(skyraid_state::skyraid)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 12096000 / 12);
- m_maincpu->set_addrmap(AS_PROGRAM, &skyraid_state::skyraid_map);
- m_maincpu->set_vblank_int("screen", FUNC(skyraid_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M6502, 12096000 / 12)
+ MCFG_DEVICE_PROGRAM_MAP(skyraid_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", skyraid_state, irq0_line_hold)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 4);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(22 * 1000000 / 15750));
- screen.set_size(512, 240);
- screen.set_visarea(0, 511, 0, 239);
- screen.set_screen_update(FUNC(skyraid_state::screen_update_skyraid));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(22 * 1000000 / 15750))
+ MCFG_SCREEN_SIZE(512, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 239)
+ MCFG_SCREEN_UPDATE_DRIVER(skyraid_state, screen_update_skyraid)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_skyraid);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_skyraid)
PALETTE(config, m_palette, FUNC(skyraid_state::skyraid_palette), 20);
@@ -248,7 +248,7 @@ void skyraid_state::skyraid(machine_config &config)
SPEAKER(config, "mono").front_center();
DISCRETE(config, m_discrete, skyraid_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
ROM_START( skyraid )
diff --git a/src/mame/drivers/slapfght.cpp b/src/mame/drivers/slapfght.cpp
index b9815e7d36e..2aae8d40ba2 100644
--- a/src/mame/drivers/slapfght.cpp
+++ b/src/mame/drivers/slapfght.cpp
@@ -889,12 +889,12 @@ GFXDECODE_END
***************************************************************************/
-void slapfght_state::perfrman(machine_config &config)
-{
+MACHINE_CONFIG_START(slapfght_state::perfrman)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(16'000'000)/4); // 4MHz? XTAL is known, divider is guessed
- m_maincpu->set_addrmap(AS_PROGRAM, &slapfght_state::perfrman_map);
- m_maincpu->set_addrmap(AS_IO, &slapfght_state::io_map_nomcu);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(16'000'000)/4) // 4MHz? XTAL is known, divider is guessed
+ MCFG_DEVICE_PROGRAM_MAP(perfrman_map)
+ MCFG_DEVICE_IO_MAP(io_map_nomcu)
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set(FUNC(slapfght_state::sound_reset_w));
@@ -902,11 +902,11 @@ void slapfght_state::perfrman(machine_config &config)
mainlatch.q_out_cb<3>().set(FUNC(slapfght_state::irq_enable_w));
mainlatch.q_out_cb<6>().set(FUNC(slapfght_state::palette_bank_w));
- Z80(config, m_audiocpu, XTAL(16'000'000)/8); // 2MHz? XTAL is known, divider is guessed
- m_audiocpu->set_addrmap(AS_PROGRAM, &slapfght_state::perfrman_sound_map);
- m_audiocpu->set_periodic_int(FUNC(slapfght_state::sound_nmi), attotime::from_hz(240)); // music speed, verified
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/8) // 2MHz? XTAL is known, divider is guessed
+ MCFG_DEVICE_PROGRAM_MAP(perfrman_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(slapfght_state, sound_nmi, 240) // music speed, verified
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
/* video hardware */
BUFFERED_SPRITERAM8(config, m_spriteram);
@@ -921,7 +921,7 @@ void slapfght_state::perfrman(machine_config &config)
m_screen->screen_vblank().append(FUNC(slapfght_state::vblank_irq));
m_screen->set_palette(m_palette);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_perfrman);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_perfrman)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
MCFG_VIDEO_START_OVERRIDE(slapfght_state, perfrman)
@@ -937,28 +937,28 @@ void slapfght_state::perfrman(machine_config &config)
ay2.port_a_read_callback().set_ioport("DSW1");
ay2.port_b_read_callback().set_ioport("DSW2");
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
-void slapfght_state::tigerh(machine_config &config)
-{
+MACHINE_CONFIG_START(slapfght_state::tigerh)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(36'000'000)/6); // 6MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &slapfght_state::tigerh_map_mcu);
- m_maincpu->set_addrmap(AS_IO, &slapfght_state::io_map_mcu);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(36'000'000)/6) // 6MHz
+ MCFG_DEVICE_PROGRAM_MAP(tigerh_map_mcu)
+ MCFG_DEVICE_IO_MAP(io_map_mcu)
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set(FUNC(slapfght_state::sound_reset_w));
mainlatch.q_out_cb<1>().set(FUNC(slapfght_state::flipscreen_w));
mainlatch.q_out_cb<3>().set(FUNC(slapfght_state::irq_enable_w));
- Z80(config, m_audiocpu, XTAL(36'000'000)/12); // 3MHz
- m_audiocpu->set_addrmap(AS_PROGRAM, &slapfght_state::tigerh_sound_map);
- m_audiocpu->set_periodic_int(FUNC(slapfght_state::sound_nmi), attotime::from_hz(360)); // music speed, verified with pcb recording
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(36'000'000)/12) // 3MHz
+ MCFG_DEVICE_PROGRAM_MAP(tigerh_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(slapfght_state, sound_nmi, 360) // music speed, verified with pcb recording
TAITO68705_MCU_TIGER(config, m_bmcu, 36_MHz_XTAL/12); // 3MHz
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
/* video hardware */
BUFFERED_SPRITERAM8(config, m_spriteram);
@@ -973,7 +973,7 @@ void slapfght_state::tigerh(machine_config &config)
m_screen->screen_vblank().append(FUNC(slapfght_state::vblank_irq));
m_screen->set_palette(m_palette);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_slapfght);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_slapfght)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
MCFG_VIDEO_START_OVERRIDE(slapfght_state, slapfight)
@@ -989,34 +989,34 @@ void slapfght_state::tigerh(machine_config &config)
ay2.port_a_read_callback().set_ioport("DSW1");
ay2.port_b_read_callback().set_ioport("DSW2");
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
-void slapfght_state::tigerhb1(machine_config &config)
-{
+MACHINE_CONFIG_START(slapfght_state::tigerhb1)
tigerh(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &slapfght_state::tigerhb1_map);
- m_maincpu->set_addrmap(AS_IO, &slapfght_state::io_map_nomcu);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tigerhb1_map)
+ MCFG_DEVICE_IO_MAP(io_map_nomcu)
- config.device_remove("bmcu");
-}
+ MCFG_DEVICE_REMOVE("bmcu")
+MACHINE_CONFIG_END
-void slapfght_state::tigerhb2(machine_config &config)
-{
+MACHINE_CONFIG_START(slapfght_state::tigerhb2)
tigerhb1(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &slapfght_state::tigerhb2_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tigerhb2_map)
+MACHINE_CONFIG_END
-void slapfght_state::slapfigh(machine_config &config)
-{
+MACHINE_CONFIG_START(slapfght_state::slapfigh)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(36'000'000)/6); // 6MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &slapfght_state::slapfigh_map_mcu);
- m_maincpu->set_addrmap(AS_IO, &slapfght_state::io_map_mcu);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(36'000'000)/6) // 6MHz
+ MCFG_DEVICE_PROGRAM_MAP(slapfigh_map_mcu)
+ MCFG_DEVICE_IO_MAP(io_map_mcu)
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set(FUNC(slapfght_state::sound_reset_w));
@@ -1024,14 +1024,14 @@ void slapfght_state::slapfigh(machine_config &config)
mainlatch.q_out_cb<3>().set(FUNC(slapfght_state::irq_enable_w));
mainlatch.q_out_cb<4>().set_membank("bank1");
- Z80(config, m_audiocpu, XTAL(36'000'000)/12); // 3MHz
- m_audiocpu->set_addrmap(AS_PROGRAM, &slapfght_state::tigerh_sound_map);
- m_audiocpu->set_periodic_int(FUNC(slapfght_state::sound_nmi), attotime::from_hz(180));
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(36'000'000)/12) // 3MHz
+ MCFG_DEVICE_PROGRAM_MAP(tigerh_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(slapfght_state, sound_nmi, 180)
TAITO68705_MCU(config, m_bmcu, 36_MHz_XTAL/12); // 3MHz
m_bmcu->aux_strobe_cb().set(FUNC(slapfght_state::scroll_from_mcu_w));
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
/* video hardware */
BUFFERED_SPRITERAM8(config, m_spriteram);
@@ -1046,7 +1046,7 @@ void slapfght_state::slapfigh(machine_config &config)
m_screen->screen_vblank().append(FUNC(slapfght_state::vblank_irq));
m_screen->set_palette(m_palette);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_slapfght);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_slapfght)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
MCFG_VIDEO_START_OVERRIDE(slapfght_state, slapfight)
@@ -1062,43 +1062,43 @@ void slapfght_state::slapfigh(machine_config &config)
ay2.port_a_read_callback().set_ioport("DSW1");
ay2.port_b_read_callback().set_ioport("DSW2");
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
-void slapfght_state::slapfighb1(machine_config &config)
-{
+MACHINE_CONFIG_START(slapfght_state::slapfighb1)
slapfigh(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &slapfght_state::slapfighb1_map);
- m_maincpu->set_addrmap(AS_IO, &slapfght_state::io_map_nomcu);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(slapfighb1_map)
+ MCFG_DEVICE_IO_MAP(io_map_nomcu)
- config.device_remove("bmcu");
-}
+ MCFG_DEVICE_REMOVE("bmcu")
+MACHINE_CONFIG_END
-void slapfght_state::slapfighb2(machine_config &config)
-{
+MACHINE_CONFIG_START(slapfght_state::slapfighb2)
slapfighb1(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &slapfght_state::slapfighb2_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(slapfighb2_map)
+MACHINE_CONFIG_END
-void slapfght_state::getstarb1(machine_config &config)
-{
+MACHINE_CONFIG_START(slapfght_state::getstarb1)
slapfighb1(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &slapfght_state::getstarb1_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(getstarb1_io_map)
+MACHINE_CONFIG_END
-void slapfght_state::getstarb2(machine_config &config)
-{
+MACHINE_CONFIG_START(slapfght_state::getstarb2)
slapfighb1(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &slapfght_state::getstar_map);
- m_maincpu->set_addrmap(AS_IO, &slapfght_state::getstarb2_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(getstar_map)
+ MCFG_DEVICE_IO_MAP(getstarb2_io_map)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/slc1.cpp b/src/mame/drivers/slc1.cpp
index 2ed1575bdb4..9d02c12419c 100644
--- a/src/mame/drivers/slc1.cpp
+++ b/src/mame/drivers/slc1.cpp
@@ -13,8 +13,6 @@ This computer is both a Z80 trainer, and a chess computer.
There is no chess board attached. You supply your own
and you sync the pieces and the computer instructions.
- The chess engine was copied from Fidelity's Sensory
- Chess Challenger 8.
When started, it is in Chess mode. Press 11111 to switch to
Trainer mode.
@@ -58,8 +56,6 @@ Pasting doesn't work, but if it did...
#include "slc1.lh"
-namespace {
-
class slc1_state : public driver_device
{
public:
@@ -271,20 +267,20 @@ INPUT_PORTS_END
***************************************************************************/
-void slc1_state::slc1(machine_config &config)
-{
+MACHINE_CONFIG_START(slc1_state::slc1)
/* basic machine hardware */
- Z80(config, m_maincpu, 2500000);
- m_maincpu->set_addrmap(AS_PROGRAM, &slc1_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &slc1_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 2500000)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/* video hardware */
config.set_default_layout(layout_slc1);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
/***************************************************************************
@@ -301,8 +297,6 @@ ROM_START(slc1)
ROMX_LOAD("sc1-v2.bin", 0x0000, 0x1000, CRC(1f122a85) SHA1(d60f89f8b59d04f4cecd6e3ecfe0a24152462a36), ROM_BIOS(1))
ROM_END
-} // anonymous namespace
-
-/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */
-COMP( 1989, slc1, 0, 0, slc1, slc1, slc1_state, empty_init, "Dieter Scheuschner", "Schach- und Lerncomputer SLC 1", 0 )
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */
+COMP( 1989, slc1, 0, 0, slc1, slc1, slc1_state, empty_init, "Dr. Dieter Scheuschner", "SLC-1" , 0 )
diff --git a/src/mame/drivers/slc1a.cpp b/src/mame/drivers/slc1a.cpp
deleted file mode 100644
index 6009bfead12..00000000000
--- a/src/mame/drivers/slc1a.cpp
+++ /dev/null
@@ -1,212 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Sandro Ronco
-/***************************************************************************
-
-This appears to be a prototype or alternate version of SLC 1.
-The ROM was first assumed to be VEB SC 1, but unfortunately it isn't.
-
-TODO:
-- merge with slc1.cpp? but hardware differs too much
-- any way to access the "Lern" part?
-- speaker, it's very noisy if hooked up as it is now
-- LED(s)? they're not on digit d7
-- 7seg sometimes flashes
-
-****************************************************************************/
-
-#include "emu.h"
-#include "cpu/z80/z80.h"
-#include "machine/z80pio.h"
-#include "sound/dac.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-#include "slc1a.lh"
-
-
-namespace {
-
-class slc1_state : public driver_device
-{
-public:
- slc1_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_pio(*this, "z80pio"),
- m_dac(*this, "dac"),
- m_keypad(*this, "LINE%u", 1),
- m_digits(*this, "digit%u", 0U)
- { }
-
- void slc1(machine_config &config);
-
-protected:
- virtual void machine_start() override;
-
-private:
- required_device<cpu_device> m_maincpu;
- required_device<z80pio_device> m_pio;
- required_device<dac_bit_interface> m_dac;
- required_ioport_array<8> m_keypad;
-
- output_finder<4> m_digits;
-
- void main_io(address_map &map);
- void main_map(address_map &map);
-
- uint8_t m_matrix;
-
- DECLARE_WRITE8_MEMBER(matrix_w);
- DECLARE_WRITE8_MEMBER(pio_port_a_w);
- DECLARE_READ8_MEMBER(pio_port_b_r);
-};
-
-void slc1_state::machine_start()
-{
- m_digits.resolve();
-
- m_matrix = 0;
- save_item(NAME(m_matrix));
-}
-
-/***************************************************************************
-
- Display
-
-***************************************************************************/
-
-WRITE8_MEMBER(slc1_state::pio_port_a_w)
-{
- // digit segment data
- uint8_t digit = bitswap<8>(data,3,4,6,0,1,2,7,5);
-
- if (m_matrix & 0x04)
- m_digits[3] = digit;
- if (m_matrix & 0x08)
- m_digits[2] = digit;
- if (m_matrix & 0x10)
- m_digits[1] = digit;
- if (m_matrix & 0x20)
- m_digits[0] = digit;
-}
-
-
-/***************************************************************************
-
- Keyboard
-
-***************************************************************************/
-
-WRITE8_MEMBER(slc1_state::matrix_w)
-{
- // d1: speaker out
- //m_dac->write(BIT(data, 1));
-
- // keypad/led mux
- m_matrix = data;
-}
-
-READ8_MEMBER(slc1_state::pio_port_b_r)
-{
- uint8_t data = 0;
-
- // read keypad matrix
- for (int i = 0; i < 8; i++)
- if (BIT(m_matrix, i))
- data |= m_keypad[i]->read();
-
- return data;
-}
-
-
-void slc1_state::main_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x0000, 0x0fff).rom();
- map(0x4000, 0x43ff).ram();
-}
-
-void slc1_state::main_io(address_map &map)
-{
- map.unmap_value_high();
- map.global_mask(0xff);
- map(0x80, 0x83).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
- map(0xfc, 0xfc).w(FUNC(slc1_state::matrix_w));
-}
-
-
-/* Input ports */
-
-static INPUT_PORTS_START( slc1 )
- PORT_START("LINE1")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4 T") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D)
-
- PORT_START("LINE2")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2 S") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6 K") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F)
-
- PORT_START("LINE3")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3 L") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G)
-
- PORT_START("LINE4")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1 B") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_A)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5 D") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_E)
-
- PORT_START("LINE5")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C") PORT_CODE(KEYCODE_R)
-
- PORT_START("LINE6")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A") PORT_CODE(KEYCODE_O)
-
- PORT_START("LINE7")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
-
- PORT_START("LINE8")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("St") PORT_CODE(KEYCODE_S) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL)
-INPUT_PORTS_END
-
-
-/* Machine config */
-
-void slc1_state::slc1(machine_config &config)
-{
- /* basic machine hardware */
- Z80(config, m_maincpu, 2500000); // U880 Z80 clone
- m_maincpu->set_addrmap(AS_PROGRAM, &slc1_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &slc1_state::main_io);
-
- /* video hardware */
- config.set_default_layout(layout_slc1a);
-
- /* devices */
- Z80PIO(config, m_pio, 2500000);
- m_pio->out_pa_callback().set(FUNC(slc1_state::pio_port_a_w));
- m_pio->in_pb_callback().set(FUNC(slc1_state::pio_port_b_r));
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
- VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
-
-
-/* ROM definition */
-
-ROM_START( slc1a )
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "sc1.rom", 0x0000, 0x1000, CRC(26965b23) SHA1(01568911446eda9f05ec136df53da147b7c6f2bf))
-ROM_END
-
-} // anonymous namespace
-
-
-/* Driver */
-
-// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
-COMP( 1989, slc1a, slc1, 0, slc1, slc1, slc1_state, empty_init, "Dieter Scheuschner", "Schach- und Lerncomputer SLC 1 (prototype?)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/sleic.cpp b/src/mame/drivers/sleic.cpp
index 35775bad8bd..92681d38aba 100644
--- a/src/mame/drivers/sleic.cpp
+++ b/src/mame/drivers/sleic.cpp
@@ -67,12 +67,11 @@ void sleic_state::init_sleic()
{
}
-void sleic_state::sleic(machine_config &config)
-{
+MACHINE_CONFIG_START(sleic_state::sleic)
/* basic machine hardware */
- I8088(config, m_maincpu, 8000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &sleic_state::sleic_map);
-}
+ MCFG_DEVICE_ADD("maincpu", I8088, 8000000)
+ MCFG_DEVICE_PROGRAM_MAP(sleic_map)
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
/ Bike Race (1992)
diff --git a/src/mame/drivers/slicer.cpp b/src/mame/drivers/slicer.cpp
index 47e5762fdaf..cc388934a9d 100644
--- a/src/mame/drivers/slicer.cpp
+++ b/src/mame/drivers/slicer.cpp
@@ -98,17 +98,16 @@ static void slicer_floppies(device_slot_interface &device)
device.option_add("8dsdd", FLOPPY_8_DSDD);
}
-void slicer_state::slicer(machine_config &config)
-{
- i80186_cpu_device &maincpu(I80186(config, "maincpu", 16_MHz_XTAL / 2));
- maincpu.set_addrmap(AS_PROGRAM, &slicer_state::slicer_map);
- maincpu.set_addrmap(AS_IO, &slicer_state::slicer_io);
+MACHINE_CONFIG_START(slicer_state::slicer)
+ MCFG_DEVICE_ADD("maincpu", I80186, 16_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(slicer_map)
+ MCFG_DEVICE_IO_MAP(slicer_io)
- scn2681_device &duart(SCN2681(config, "duart", 3.6864_MHz_XTAL));
- duart.irq_cb().set("maincpu", FUNC(i80186_cpu_device::int0_w));
- duart.a_tx_cb().set("rs232_1", FUNC(rs232_port_device::write_txd));
- duart.b_tx_cb().set("rs232_2", FUNC(rs232_port_device::write_txd));
- duart.outport_cb().set(FUNC(slicer_state::sio_out_w));
+ MCFG_DEVICE_ADD("duart", SCN2681, 3.6864_MHz_XTAL)
+ MCFG_MC68681_IRQ_CALLBACK(WRITELINE("maincpu", i80186_cpu_device, int0_w))
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE("rs232_1", rs232_port_device, write_txd))
+ MCFG_MC68681_B_TX_CALLBACK(WRITELINE("rs232_2", rs232_port_device, write_txd))
+ MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, slicer_state, sio_out_w))
rs232_port_device &rs232_1(RS232_PORT(config, "rs232_1", default_rs232_devices, "terminal"));
rs232_1.rxd_handler().set("duart", FUNC(scn2681_device::rx_a_w));
@@ -118,10 +117,10 @@ void slicer_state::slicer(machine_config &config)
FD1797(config, m_fdc, 16_MHz_XTAL / 2 / 8);
m_fdc->intrq_wr_callback().set("maincpu", FUNC(i80186_cpu_device::int1_w));
m_fdc->drq_wr_callback().set("maincpu", FUNC(i80186_cpu_device::drq0_w));
- FLOPPY_CONNECTOR(config, "fdc:0", slicer_floppies, "525dd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", slicer_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:2", slicer_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:3", slicer_floppies, nullptr, floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", slicer_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", slicer_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:2", slicer_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:3", slicer_floppies, nullptr, floppy_image_device::default_floppy_formats)
ls259_device &drivelatch(LS259(config, "drivelatch")); // U29
drivelatch.q_out_cb<0>().set("sasi", FUNC(scsi_port_device::write_sel));
@@ -133,19 +132,18 @@ void slicer_state::slicer(machine_config &config)
drivelatch.q_out_cb<6>().set(FUNC(slicer_state::drive_size_w));
drivelatch.q_out_cb<7>().set("fdc", FUNC(fd1797_device::dden_w));
- SCSI_PORT(config, m_sasi, 0);
- m_sasi->set_data_input_buffer("sasi_data_in");
- m_sasi->bsy_handler().set("sasi_ctrl_in", FUNC(input_buffer_device::write_bit3));
- m_sasi->msg_handler().set("sasi_ctrl_in", FUNC(input_buffer_device::write_bit4));
- m_sasi->cd_handler().set("sasi_ctrl_in", FUNC(input_buffer_device::write_bit5));
- m_sasi->req_handler().set("sasi_ctrl_in", FUNC(input_buffer_device::write_bit6));
- m_sasi->io_handler().set("sasi_ctrl_in", FUNC(input_buffer_device::write_bit7));
-
- output_latch_device &sasi_data_out(OUTPUT_LATCH(config, "sasi_data_out"));
- m_sasi->set_output_latch(sasi_data_out);
- INPUT_BUFFER(config, "sasi_data_in");
- INPUT_BUFFER(config, "sasi_ctrl_in");
-}
+ MCFG_DEVICE_ADD("sasi", SCSI_PORT, 0)
+ MCFG_SCSI_DATA_INPUT_BUFFER("sasi_data_in")
+ MCFG_SCSI_BSY_HANDLER(WRITELINE("sasi_ctrl_in", input_buffer_device, write_bit3))
+ MCFG_SCSI_MSG_HANDLER(WRITELINE("sasi_ctrl_in", input_buffer_device, write_bit4))
+ MCFG_SCSI_CD_HANDLER(WRITELINE("sasi_ctrl_in", input_buffer_device, write_bit5))
+ MCFG_SCSI_REQ_HANDLER(WRITELINE("sasi_ctrl_in", input_buffer_device, write_bit6))
+ MCFG_SCSI_IO_HANDLER(WRITELINE("sasi_ctrl_in", input_buffer_device, write_bit7))
+
+ MCFG_SCSI_OUTPUT_LATCH_ADD("sasi_data_out", "sasi")
+ MCFG_DEVICE_ADD("sasi_data_in", INPUT_BUFFER, 0)
+ MCFG_DEVICE_ADD("sasi_ctrl_in", INPUT_BUFFER, 0)
+MACHINE_CONFIG_END
ROM_START( slicer )
ROM_REGION(0x8001, "bios", 0)
diff --git a/src/mame/drivers/sliver.cpp b/src/mame/drivers/sliver.cpp
index 6b40485c904..28621979a7c 100644
--- a/src/mame/drivers/sliver.cpp
+++ b/src/mame/drivers/sliver.cpp
@@ -516,13 +516,11 @@ TIMER_DEVICE_CALLBACK_MEMBER ( sliver_state::obj_irq_cb )
m_maincpu->set_input_line(3, HOLD_LINE);
}
-void sliver_state::sliver(machine_config &config)
-{
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &sliver_state::sliver_map);
- m_maincpu->set_vblank_int("screen", FUNC(sliver_state::irq4_line_hold));
-
- TIMER(config, "obj_actel").configure_periodic(FUNC(sliver_state::obj_irq_cb), attotime::from_hz(60)); /* unknown clock, causes "obj actel ready error" without this */
+MACHINE_CONFIG_START(sliver_state::sliver)
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(sliver_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sliver_state, irq4_line_hold)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("obj_actel", sliver_state, obj_irq_cb, attotime::from_hz(60)) /* unknown clock, causes "obj actel ready error" without this */
// irq 2 valid but not used?
I8051(config, m_audiocpu, 8000000);
@@ -530,14 +528,14 @@ void sliver_state::sliver(machine_config &config)
m_audiocpu->set_addrmap(AS_IO, &sliver_state::soundmem_io);
m_audiocpu->port_out_cb<1>().set(FUNC(sliver_state::oki_setbank));
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(0*8, 384-1-16, 0*8, 240-1);
- m_screen->set_screen_update(FUNC(sliver_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 384-1-16, 0*8, 240-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sliver_state, screen_update)
- PALETTE(config, "palette").set_entries(0x100);
+ MCFG_PALETTE_ADD("palette", 0x100)
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, "palette"));
ramdac.set_addrmap(0, &sliver_state::ramdac_map);
@@ -546,11 +544,11 @@ void sliver_state::sliver(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- okim6295_device &oki(OKIM6295(config, "oki", 1000000, okim6295_device::PIN7_HIGH));
- oki.set_addrmap(0, &sliver_state::oki_map);
- oki.add_route(ALL_OUTPUTS, "lspeaker", 0.6);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 0.6);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.6)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.6)
+MACHINE_CONFIG_END
ROM_START( sliver )
ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */
diff --git a/src/mame/drivers/slotcarn.cpp b/src/mame/drivers/slotcarn.cpp
index 989ce132421..6297b40a6d9 100644
--- a/src/mame/drivers/slotcarn.cpp
+++ b/src/mame/drivers/slotcarn.cpp
@@ -543,12 +543,12 @@ void slotcarn_state::machine_start()
* Machine Driver *
***********************************/
-void slotcarn_state::slotcarn(machine_config &config)
-{
+MACHINE_CONFIG_START(slotcarn_state::slotcarn)
+
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK); // 2.5 Mhz?
- m_maincpu->set_addrmap(AS_PROGRAM, &slotcarn_state::slotcarn_map);
- m_maincpu->set_addrmap(AS_IO, &slotcarn_state::spielbud_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK) // 2.5 Mhz?
+ MCFG_DEVICE_PROGRAM_MAP(slotcarn_map)
+ MCFG_DEVICE_IO_MAP(spielbud_io_map)
i8255_device &ppi0(I8255A(config, "ppi8255_0"));
ppi0.in_pa_callback().set_ioport("IN0");
@@ -563,9 +563,9 @@ void slotcarn_state::slotcarn(machine_config &config)
ppi2.in_pb_callback().set_ioport("IN4");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, 512, 0, 512, 256, 0, 256); /* temporary, CRTC will configure screen */
- m_screen->set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 512, 0, 512, 256, 0, 256) /* temporary, CRTC will configure screen */
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK));
crtc.set_screen(m_screen);
@@ -576,8 +576,8 @@ void slotcarn_state::slotcarn(machine_config &config)
crtc.out_hsync_callback().set(FUNC(slotcarn_state::hsync_changed));
crtc.out_vsync_callback().set_inputline(m_maincpu, 0);
- GFXDECODE(config, "gfxdecode", "palette", gfx_slotcarn);
- PALETTE(config, "palette").set_entries(0x400);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_slotcarn)
+ MCFG_PALETTE_ADD("palette", 0x400)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -585,7 +585,7 @@ void slotcarn_state::slotcarn(machine_config &config)
ay8910_device &aysnd(AY8910(config, "aysnd", SND_CLOCK));
aysnd.port_b_read_callback().set_ioport("DSW2");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/******************************
diff --git a/src/mame/drivers/sm1800.cpp b/src/mame/drivers/sm1800.cpp
index 5567f5bbbae..28c674285d3 100644
--- a/src/mame/drivers/sm1800.cpp
+++ b/src/mame/drivers/sm1800.cpp
@@ -160,25 +160,24 @@ static GFXDECODE_START( gfx_sm1800 )
GFXDECODE_END
-void sm1800_state::sm1800(machine_config &config)
-{
+MACHINE_CONFIG_START(sm1800_state::sm1800)
/* basic machine hardware */
- I8080(config, m_maincpu, XTAL(2'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &sm1800_state::sm1800_mem);
- m_maincpu->set_addrmap(AS_IO, &sm1800_state::sm1800_io);
- m_maincpu->set_vblank_int("screen", FUNC(sm1800_state::sm1800_vblank_interrupt));
- m_maincpu->set_irq_acknowledge_callback(FUNC(sm1800_state::sm1800_irq_callback));
+ MCFG_DEVICE_ADD("maincpu",I8080, XTAL(2'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(sm1800_mem)
+ MCFG_DEVICE_IO_MAP(sm1800_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sm1800_state, sm1800_vblank_interrupt)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(sm1800_state,sm1800_irq_callback)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update("i8275", FUNC(i8275_device::screen_update));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DEVICE("i8275", i8275_device, screen_update)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
PALETTE(config, m_palette, FUNC(sm1800_state::sm1800_palette), 3);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_sm1800);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_sm1800)
/* Devices */
I8255(config, m_ppi);
@@ -187,12 +186,12 @@ void sm1800_state::sm1800(machine_config &config)
m_ppi->in_pc_callback().set(FUNC(sm1800_state::sm1800_8255_portc_r));
m_ppi->out_pc_callback().set(FUNC(sm1800_state::sm1800_8255_portc_w));
- I8275(config, m_crtc, 2000000);
- m_crtc->set_character_width(8);
- m_crtc->set_display_callback(FUNC(sm1800_state::crtc_display_pixels), this);
+ MCFG_DEVICE_ADD("i8275", I8275, 2000000)
+ MCFG_I8275_CHARACTER_WIDTH(8)
+ MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(sm1800_state, crtc_display_pixels)
- I8251(config, m_uart, 0);
-}
+ MCFG_DEVICE_ADD("i8251", I8251, 0)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( sm1800 )
diff --git a/src/mame/drivers/sm7238.cpp b/src/mame/drivers/sm7238.cpp
index 609d984f36c..ab77077b35f 100644
--- a/src/mame/drivers/sm7238.cpp
+++ b/src/mame/drivers/sm7238.cpp
@@ -360,25 +360,24 @@ void sm7238_state::sm7238_palette(palette_device &palette) const
palette.set_pen_color(2, 0x00, 0xff, 0x00); // highlight
}
-void sm7238_state::sm7238(machine_config &config)
-{
- I8080(config, m_maincpu, 16.5888_MHz_XTAL/9);
- m_maincpu->set_addrmap(AS_PROGRAM, &sm7238_state::sm7238_mem);
- m_maincpu->set_addrmap(AS_IO, &sm7238_state::sm7238_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(sm7238_state::sm7238)
+ MCFG_DEVICE_ADD("maincpu", I8080, 16.5888_MHz_XTAL/9)
+ MCFG_DEVICE_PROGRAM_MAP(sm7238_mem)
+ MCFG_DEVICE_IO_MAP(sm7238_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
ADDRESS_MAP_BANK(config, "videobank").set_map(&sm7238_state::videobank_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x2000);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(20.625_MHz_XTAL, KSM_TOTAL_HORZ, 0, KSM_DISP_HORZ, KSM_TOTAL_VERT, 0, KSM_DISP_VERT);
- m_screen->set_screen_update(FUNC(sm7238_state::screen_update));
- m_screen->screen_vblank().set(m_pic8259, FUNC(pic8259_device::ir2_w));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(20.625_MHz_XTAL, KSM_TOTAL_HORZ, 0, KSM_DISP_HORZ, KSM_TOTAL_VERT, 0, KSM_DISP_VERT);
+ MCFG_SCREEN_UPDATE_DRIVER(sm7238_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(m_pic8259, pic8259_device, ir2_w))
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(sm7238_state::sm7238_palette), 3);
- GFXDECODE(config, "gfxdecode", "palette", gfx_sm7238);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sm7238)
PIC8259(config, m_pic8259, 0);
m_pic8259->out_int_callback().set_inputline(m_maincpu, 0);
@@ -428,7 +427,7 @@ void sm7238_state::sm7238(machine_config &config)
prtr.rxd_handler().set(m_i8251prn, FUNC(i8251_device::write_rxd));
prtr.cts_handler().set(m_i8251prn, FUNC(i8251_device::write_cts));
prtr.dsr_handler().set(m_i8251prn, FUNC(i8251_device::write_dsr));
-}
+MACHINE_CONFIG_END
ROM_START( sm7238 )
ROM_REGION(0xa000, "maincpu", ROMREGION_ERASE00)
diff --git a/src/mame/drivers/smc777.cpp b/src/mame/drivers/smc777.cpp
index 442c694bc6e..f1849557425 100644
--- a/src/mame/drivers/smc777.cpp
+++ b/src/mame/drivers/smc777.cpp
@@ -7,8 +7,8 @@
driver by Angelo Salese
TODO:
- - Implement SMC-70 specific features;
- - Implement GFX modes other than 160x100x4
+ - no real documentation, the entire driver is just a bunch of educated
+ guesses ...
- ROM/RAM bankswitch, it apparently happens after one instruction prefetching.
We currently use an hackish implementation until the MAME/MESS framework can
support that ...
@@ -89,17 +89,16 @@ private:
DECLARE_READ8_MEMBER(key_r);
DECLARE_WRITE8_MEMBER(key_w);
DECLARE_WRITE8_MEMBER(border_col_w);
- DECLARE_READ8_MEMBER(io_status_1c_r);
- DECLARE_READ8_MEMBER(io_status_1d_r);
- DECLARE_WRITE8_MEMBER(io_control_w);
+ DECLARE_READ8_MEMBER(system_input_r);
+ DECLARE_WRITE8_MEMBER(system_output_w);
DECLARE_WRITE8_MEMBER(color_mode_w);
DECLARE_WRITE8_MEMBER(ramdac_w);
- DECLARE_READ8_MEMBER(gcw_r);
- DECLARE_WRITE8_MEMBER(gcw_w);
+ DECLARE_READ8_MEMBER(display_reg_r);
+ DECLARE_WRITE8_MEMBER(display_reg_w);
DECLARE_READ8_MEMBER(smc777_mem_r);
DECLARE_WRITE8_MEMBER(smc777_mem_w);
- DECLARE_READ8_MEMBER(vsync_irq_status_r);
- DECLARE_WRITE8_MEMBER(vsync_irq_enable_w);
+ DECLARE_READ8_MEMBER(irq_mask_r);
+ DECLARE_WRITE8_MEMBER(irq_mask_w);
void smc777_palette(palette_device &palette) const;
uint32_t screen_update_smc777(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
@@ -107,8 +106,8 @@ private:
DECLARE_READ8_MEMBER(fdc_r);
DECLARE_WRITE8_MEMBER(fdc_w);
- DECLARE_READ8_MEMBER(fdc1_fast_status_r);
- DECLARE_WRITE8_MEMBER(fdc1_select_w);
+ DECLARE_READ8_MEMBER(fdc_request_r);
+ DECLARE_WRITE8_MEMBER(floppy_select_w);
DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w);
DECLARE_WRITE_LINE_MEMBER(fdc_drq_w);
@@ -145,12 +144,11 @@ private:
struct { uint8_t r,g,b; } m_pal;
uint8_t m_raminh,m_raminh_pending_change; //bankswitch
uint8_t m_raminh_prefetch;
+ uint8_t m_irq_mask;
uint8_t m_pal_mode;
uint8_t m_keyb_cmd;
uint8_t m_crtc_vreg[0x20];
uint8_t m_crtc_addr;
- bool m_vsync_idf;
- bool m_vsync_ief;
};
@@ -310,12 +308,12 @@ WRITE8_MEMBER(smc777_state::mc6845_w)
if(offset == 0)
{
m_crtc_addr = data;
- m_crtc->address_w(data);
+ m_crtc->address_w(space, 0,data);
}
else
{
m_crtc_vreg[m_crtc_addr] = data;
- m_crtc->register_w(data);
+ m_crtc->register_w(space, 0,data);
}
}
@@ -458,25 +456,26 @@ WRITE8_MEMBER( smc777_state::fdc_w )
m_fdc->write(offset, data ^ 0xff);
}
-READ8_MEMBER( smc777_state::fdc1_fast_status_r )
+READ8_MEMBER( smc777_state::fdc_request_r )
{
uint8_t data = 0;
- // TODO: inverted wrt documentation?
data |= !m_fdc_drq_flag << 6;
data |= m_fdc_irq_flag << 7;
return data;
}
-WRITE8_MEMBER( smc777_state::fdc1_select_w )
+WRITE8_MEMBER( smc777_state::floppy_select_w )
{
floppy_image_device *floppy = nullptr;
- // x--- ---- SIDE1: [SMC-70] side select
- // ---- --x- EXDS: [SMC-70] external drive select (0=internal, 1=external)
- // ---- ---x DS01: select floppy drive
- floppy = (data & 1 ? m_floppy1 : m_floppy0)->get_device();
+ // ---- xxxx select floppy drive (yes, 15 of them, A to P)
+ switch (data & 0x01)
+ {
+ case 0: floppy = m_floppy0->get_device(); break;
+ case 1: floppy = m_floppy1->get_device(); break;
+ }
m_fdc->set_floppy(floppy);
@@ -548,59 +547,36 @@ WRITE8_MEMBER(smc777_state::border_col_w)
}
-READ8_MEMBER(smc777_state::io_status_1c_r)
+READ8_MEMBER(smc777_state::system_input_r)
{
- /*
- * RES x--- ---- Power On bit (1=reset switch)
- * HiZ -x-- ---- [SMC-70] no drive (always '1'?)
- * LPH --x- ---- [SMC-70] light pen H position
- * CP ---x ---- [SMC-777] color board (active low)
- * LPV ---x x--- [SMC-70] light pen V position
- * ID ---- -x-- 0=SMC-777 1=SMC-70
- * MD ---- --xx [SMC-70] boot mode (00=DISK; 10=ROM; 11=EXT)
- */
- printf("System R\n");
+ printf("System FF R %02x\n",m_system_data & 0x0f);
- return 0;
-}
+ switch(m_system_data & 0x0f)
+ {
+ case 0x00:
+ return ((m_raminh & 1) << 4); //unknown bit, Dragon's Alphabet and Bird Crush relies on this for correct colors
+ }
-READ8_MEMBER(smc777_state::io_status_1d_r)
-{
- /*
- * TCIN x--- ---- CMT read data
- * HiZ -x-- ---- [SMC-70] no drive (always '1'?)
- * LPIN --x- ---- [SMC-70] light pen input
- * PR_BUSY ---x ---- printer busy
- * PR_ACK ---- x--- printer ACK
- * ID ---- -x-- 0=SMC-777 1=SMC-70
- * MD ---- --xx [SMC-70] boot mode (00=DISK; 10=ROM; 11=EXT)
- */
- return 0;
+ return m_system_data;
}
-WRITE8_MEMBER(smc777_state::io_control_w)
+
+WRITE8_MEMBER(smc777_state::system_output_w)
{
/*
- * flip-flop based
- * ---x -111 cassette write
- * ---x -110 printer strobe
- * ---x -101 beeper
- * ---x -100 cassette start (MONITOR_ON_OFF)
- * ---x -011 0=RGB 1=Component
- * ---x -010 0=525 lines 1=625 lines (NTSC/PAL switch?)
- * ---x -001 1=display disable
- * ---x -000 ram inibit signal
- */
+ ---x 0000 ram inibit signal
+ ---x 1001 beep
+ all the rest is unknown at current time
+ */
m_system_data = data;
- switch(m_system_data & 0x07)
+ switch(m_system_data & 0x0f)
{
case 0x00:
- // "ROM / RAM register change is done at the beginning of the next M1 cycle"
m_raminh_pending_change = ((data & 0x10) >> 4) ^ 1;
m_raminh_prefetch = (uint8_t)(m_maincpu->state_int(Z80_R)) & 0x7f;
break;
- case 0x02: printf("Screen line number %d\n",data & 0x10 ? 625 : 525); break;
+ case 0x02: printf("Interlace %s\n",data & 0x10 ? "on" : "off"); break;
case 0x05: m_beeper->set_state(data & 0x10); break;
default: printf("System FF W %02x\n",data); break;
}
@@ -608,14 +584,7 @@ WRITE8_MEMBER(smc777_state::io_control_w)
WRITE8_MEMBER(smc777_state::color_mode_w)
{
- /*
- * ---x -111 gfx palette select
- * ---x -110 text palette select
- * ---x -101 joy 2 out
- * ...
- * ---x -000 joy 2 out
- */
- switch(data & 0x07)
+ switch(data & 0x0f)
{
case 0x06: m_pal_mode = (data & 0x10) ^ 0x10; break;
default: printf("Color FF %02x\n",data); break;
@@ -639,29 +608,18 @@ WRITE8_MEMBER(smc777_state::ramdac_w)
}
}
-READ8_MEMBER(smc777_state::gcw_r)
+READ8_MEMBER(smc777_state::display_reg_r)
{
return m_display_reg;
}
/* x */
-WRITE8_MEMBER(smc777_state::gcw_w)
+WRITE8_MEMBER(smc777_state::display_reg_w)
{
/*
- * x--- ---- text mode (0 = 80x25 1 = 40x25)
- * -x-- ---- text page (in 40x25 mode)
- * --x- ---- color mode (1=for 2bpp mode, blue is replaced with white)
- * ---x ---- [SMC-70] interlace
- * ---- xxyy gfx mode (model dependant)
- * [SMC-70]
- * ---- 11-- 640x400x1 bpp
- * ---- 10-- 640x200x2 bpp
- * ---- 01-- 320x200x4 bpp
- * ---- 00yy 160x100x4 bpp, bits 0-1 selects page
- * [SMC-777]
- * ---- 1--- 640x200x2 bpp
- * ---- 0--- 320x200x4 bpp
- */
+ x--- ---- width 80 / 40 switch (0 = 640 x 200 1 = 320 x 200)
+ ---- -x-- mode select?
+ */
m_display_reg = data;
}
@@ -670,8 +628,7 @@ READ8_MEMBER(smc777_state::smc777_mem_r)
{
uint8_t z80_r;
- // TODO: do the bankswitch AFTER that the prefetch instruction is executed (hackish implementation)
- if(m_raminh_prefetch != 0xff)
+ if(m_raminh_prefetch != 0xff) //do the bankswitch AFTER that the prefetch instruction is executed (FIXME: this is an hackish implementation)
{
z80_r = (uint8_t)m_maincpu->state_int(Z80_R);
@@ -693,25 +650,17 @@ WRITE8_MEMBER(smc777_state::smc777_mem_w)
m_work_ram[offset] = data;
}
-READ8_MEMBER(smc777_state::vsync_irq_status_r)
+READ8_MEMBER(smc777_state::irq_mask_r)
{
- if (m_vsync_idf == true)
- {
- m_vsync_idf = false;
- return 1;
- }
-
- return 0;
+ return m_irq_mask;
}
-WRITE8_MEMBER(smc777_state::vsync_irq_enable_w)
+WRITE8_MEMBER(smc777_state::irq_mask_w)
{
if(data & 0xfe)
- logerror("Irq mask = %02x\n",data & 0xfe);
+ printf("Irq mask = %02x\n",data & 0xfe);
- // IRQ mask
- m_vsync_ief = BIT(data,0);
- // TODO: clear idf on 1->0 irq mask transition?
+ m_irq_mask = data & 1;
}
void smc777_state::smc777_mem(address_map &map)
@@ -728,40 +677,34 @@ void smc777_state::smc777_io(address_map &map)
map(0x10, 0x17).select(0xff00).rw(FUNC(smc777_state::pcg_r), FUNC(smc777_state::pcg_w));
map(0x18, 0x19).mirror(0xff00).w(FUNC(smc777_state::mc6845_w));
map(0x1a, 0x1b).mirror(0xff00).rw(FUNC(smc777_state::key_r), FUNC(smc777_state::key_w));
- map(0x1c, 0x1c).mirror(0xff00).rw(FUNC(smc777_state::io_status_1c_r), FUNC(smc777_state::io_control_w));
- map(0x1d, 0x1d).mirror(0xff00).rw(FUNC(smc777_state::io_status_1d_r), FUNC(smc777_state::io_control_w));
-// map(0x1e, 0x1f) rs232 irq control
- map(0x20, 0x20).mirror(0xff00).rw(FUNC(smc777_state::gcw_r), FUNC(smc777_state::gcw_w));
- map(0x21, 0x21).mirror(0xff00).rw(FUNC(smc777_state::vsync_irq_status_r), FUNC(smc777_state::vsync_irq_enable_w));
-// map(0x22, 0x22) printer output data
+ map(0x1c, 0x1c).mirror(0xff00).rw(FUNC(smc777_state::system_input_r), FUNC(smc777_state::system_output_w));
+// AM_RANGE(0x1d, 0x1d) system and control read, printer strobe write
+// AM_RANGE(0x1e, 0x1f) rs232 irq control
+ map(0x20, 0x20).mirror(0xff00).rw(FUNC(smc777_state::display_reg_r), FUNC(smc777_state::display_reg_w));
+ map(0x21, 0x21).mirror(0xff00).rw(FUNC(smc777_state::irq_mask_r), FUNC(smc777_state::irq_mask_w));
+// AM_RANGE(0x22, 0x22) printer output data
map(0x23, 0x23).mirror(0xff00).w(FUNC(smc777_state::border_col_w));
-// map(0x24, 0x24) rtc write address (M5M58321RS)
-// map(0x25, 0x25) rtc read
-// map(0x26, 0x26) rs232 #1
-// map(0x28, 0x2c) fdc #2 (8")
-// map(0x2d, 0x2f) rs232 #2
+// AM_RANGE(0x24, 0x24) rtc write address
+// AM_RANGE(0x25, 0x25) rtc read
+// AM_RANGE(0x26, 0x26) rs232 #1
+// AM_RANGE(0x28, 0x2c) fdc #2
+// AM_RANGE(0x2d, 0x2f) rs232 #2
map(0x30, 0x33).mirror(0xff00).rw(FUNC(smc777_state::fdc_r), FUNC(smc777_state::fdc_w));
- map(0x34, 0x34).mirror(0xff00).rw(FUNC(smc777_state::fdc1_fast_status_r), FUNC(smc777_state::fdc1_select_w));
-// map(0x35, 0x37) rs232 #3
-// map(0x38, 0x3b) cache disk unit
- // 0x38 (R) CDSTS status port (W) CDCMD command port
- // 0x39 (W) track register
- // 0x3a (W) sector register
- // 0x3b (RW) data port
-// map(0x3c, 0x3d) rgb superimposer / genlock control
-// map(0x40, 0x47) ieee-488 / TMS9914A I/F
- map(0x44, 0x44).mirror(0xff00).portr("GPDSW"); // normally unmapped in GPIB interface
-// map(0x48, 0x49) hdd (winchester)
- // TODO: address bit 8 selects joy port 2
+ map(0x34, 0x34).mirror(0xff00).rw(FUNC(smc777_state::fdc_request_r), FUNC(smc777_state::floppy_select_w));
+// AM_RANGE(0x35, 0x37) rs232 #3
+// AM_RANGE(0x38, 0x3b) cache disk unit
+// AM_RANGE(0x3c, 0x3d) rgb superimposer
+// AM_RANGE(0x40, 0x47) ieee-488
+// AM_RANGE(0x48, 0x4f) hdd (winchester)
map(0x51, 0x51).mirror(0xff00).portr("JOY_1P").w(FUNC(smc777_state::color_mode_w));
map(0x52, 0x52).select(0xff00).w(FUNC(smc777_state::ramdac_w));
- map(0x53, 0x53).mirror(0xff00).w("sn1", FUNC(sn76489a_device::write));
-// map(0x54, 0x59) vrt controller
-// map(0x5a, 0x5b) ram banking
-// map(0x70, 0x70) auto-start ROM (ext-ROM)
-// map(0x74, 0x74) ieee-488 GPIB ROM port
-// map(0x75, 0x75) vrt controller ROM
-// map(0x7e, 0x7f) kanji ROM
+ map(0x53, 0x53).mirror(0xff00).w("sn1", FUNC(sn76489a_device::command_w));
+// AM_RANGE(0x54, 0x59) vrt controller
+// AM_RANGE(0x5a, 0x5b) ram banking
+// AM_RANGE(0x70, 0x70) auto-start rom
+// AM_RANGE(0x74, 0x74) ieee-488 rom
+// AM_RANGE(0x75, 0x75) vrt controller rom
+// AM_RANGE(0x7e, 0x7f) kanji rom
map(0x80, 0xff).select(0xff00).rw(FUNC(smc777_state::fbuf_r), FUNC(smc777_state::fbuf_w));
}
@@ -898,32 +841,6 @@ static INPUT_PORTS_START( smc777 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_HIGH,IPT_UNKNOWN ) //status?
-
- PORT_START("GPDSW")
- PORT_DIPNAME( 0x01, 0x00, "GPDSW" )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x01, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x02, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x04, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x08, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x10, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x20, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x40, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END
/*
@@ -1071,7 +988,6 @@ void smc777_state::machine_reset()
m_raminh_pending_change = 1;
m_raminh_prefetch = 0xff;
m_pal_mode = 0x10;
- m_vsync_idf = false;
m_beeper->set_state(0);
}
@@ -1094,11 +1010,8 @@ void smc777_state::smc777_palette(palette_device &palette) const
INTERRUPT_GEN_MEMBER(smc777_state::vblank_irq)
{
- if(m_vsync_ief)
- {
+ if(m_irq_mask)
device.execute().set_input_line(0,HOLD_LINE);
- m_vsync_idf = true;
- }
}
@@ -1110,19 +1023,19 @@ static void smc777_floppies(device_slot_interface &device)
MACHINE_CONFIG_START(smc777_state::smc777)
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &smc777_state::smc777_mem);
- m_maincpu->set_addrmap(AS_IO, &smc777_state::smc777_io);
- m_maincpu->set_vblank_int("screen", FUNC(smc777_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu",Z80, MASTER_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(smc777_mem)
+ MCFG_DEVICE_IO_MAP(smc777_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", smc777_state, vblank_irq)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(0x400, 400);
- m_screen->set_visarea(0, 660-1, 0, 220-1); //normal 640 x 200 + 20 pixels for border color
- m_screen->set_screen_update(FUNC(smc777_state::screen_update_smc777));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(0x400, 400)
+ MCFG_SCREEN_VISIBLE_AREA(0, 660-1, 0, 220-1) //normal 640 x 200 + 20 pixels for border color
+ MCFG_SCREEN_UPDATE_DRIVER(smc777_state, screen_update_smc777)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(smc777_state::smc777_palette), 0x20); // 16 + 8 colors (SMC-777 + SMC-70) + 8 empty entries (SMC-70)
@@ -1139,21 +1052,22 @@ MACHINE_CONFIG_START(smc777_state::smc777)
m_fdc->drq_wr_callback().set(FUNC(smc777_state::fdc_drq_w));
// does it really support 16 of them?
- FLOPPY_CONNECTOR(config, "fdc:0", smc777_floppies, "ssdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", smc777_floppies, "ssdd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", smc777_floppies, "ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", smc777_floppies, "ssdd", floppy_image_device::default_floppy_formats)
- SOFTWARE_LIST(config, "flop_list").set_original("smc777");
- MCFG_QUICKLOAD_ADD("quickload", smc777_state, smc777, "com,cpm", attotime::from_seconds(3))
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "smc777")
+ MCFG_QUICKLOAD_ADD("quickload", smc777_state, smc777, "com,cpm", 3)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489A(config, "sn1", MASTER_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.50); // unknown clock / divider
+ MCFG_DEVICE_ADD("sn1", SN76489A, MASTER_CLOCK) // unknown clock / divider
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
BEEP(config, m_beeper, 300); // TODO: correct frequency
m_beeper->add_route(ALL_OUTPUTS, "mono", 0.50);
- TIMER(config, "keyboard_timer").configure_periodic(FUNC(smc777_state::keyboard_callback), attotime::from_hz(240/32));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", smc777_state, keyboard_callback, attotime::from_hz(240/32))
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/sms.cpp b/src/mame/drivers/sms.cpp
index 9b9852492c3..df706904160 100644
--- a/src/mame/drivers/sms.cpp
+++ b/src/mame/drivers/sms.cpp
@@ -301,7 +301,7 @@ void sms_state::sg1000m3_io(address_map &map)
{
map.global_mask(0xff);
map.unmap_value_high();
- map(0x40, 0x7f).r(FUNC(sms_state::sms_count_r)).w(m_vdp, FUNC(sega315_5124_device::psg_w));
+ map(0x40, 0x7f).rw(FUNC(sms_state::sms_count_r), FUNC(sms_state::sms_psg_w));
map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::data_read), FUNC(sega315_5124_device::data_write));
map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::control_read), FUNC(sega315_5124_device::control_write));
map(0xc0, 0xc7).mirror(0x38).rw(FUNC(sms_state::sg1000m3_peripheral_r), FUNC(sms_state::sg1000m3_peripheral_w));
@@ -313,7 +313,7 @@ void sms_state::sms_io(address_map &map)
map.unmap_value_high();
map(0x00, 0x00).mirror(0x3e).w(FUNC(sms_state::sms_mem_control_w));
map(0x01, 0x01).mirror(0x3e).w(FUNC(sms_state::sms_io_control_w));
- map(0x40, 0x7f).r(FUNC(sms_state::sms_count_r)).w(m_vdp, FUNC(sega315_5124_device::psg_w));
+ map(0x40, 0x7f).rw(FUNC(sms_state::sms_count_r), FUNC(sms_state::sms_psg_w));
map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::data_read), FUNC(sega315_5124_device::data_write));
map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::control_read), FUNC(sega315_5124_device::control_write));
map(0xc0, 0xc0).mirror(0x3e).r(FUNC(sms_state::sms_input_port_dc_r));
@@ -331,7 +331,7 @@ void sms_state::smskr_io(address_map &map)
map.unmap_value_high();
map(0x3e, 0x3e).w(FUNC(sms_state::sms_mem_control_w));
map(0x3f, 0x3f).w(FUNC(sms_state::sms_io_control_w));
- map(0x40, 0x7f).r(FUNC(sms_state::sms_count_r)).w(m_vdp, FUNC(sega315_5124_device::psg_w));
+ map(0x40, 0x7f).rw(FUNC(sms_state::sms_count_r), FUNC(sms_state::sms_psg_w));
map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::data_read), FUNC(sega315_5124_device::data_write));
map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::control_read), FUNC(sega315_5124_device::control_write));
map(0xc0, 0xc0).mirror(0x3e).r(FUNC(sms_state::sms_input_port_dc_r));
@@ -347,7 +347,7 @@ void sms_state::smsj_io(address_map &map)
map.unmap_value_high();
map(0x3e, 0x3e).w(FUNC(sms_state::sms_mem_control_w));
map(0x3f, 0x3f).w(FUNC(sms_state::sms_io_control_w));
- map(0x40, 0x7f).r(FUNC(sms_state::sms_count_r)).w(m_vdp, FUNC(sega315_5124_device::psg_w));
+ map(0x40, 0x7f).rw(FUNC(sms_state::sms_count_r), FUNC(sms_state::sms_psg_w));
map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::data_read), FUNC(sega315_5124_device::data_write));
map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::control_read), FUNC(sega315_5124_device::control_write));
map(0xc0, 0xc0).r(FUNC(sms_state::sms_input_port_dc_r));
@@ -371,7 +371,7 @@ void sms_state::gg_io(address_map &map)
map(0x06, 0x06).w(FUNC(sms_state::gg_psg_stereo_w));
map(0x3e, 0x3e).w(FUNC(sms_state::sms_mem_control_w));
map(0x3f, 0x3f).w(FUNC(sms_state::sms_io_control_w));
- map(0x40, 0x7f).r(FUNC(sms_state::sms_count_r)).w(m_vdp, FUNC(sega315_5124_device::psg_w));
+ map(0x40, 0x7f).rw(FUNC(sms_state::sms_count_r), FUNC(sms_state::gg_psg_w));
map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::data_read), FUNC(sega315_5124_device::data_write));
map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::control_read), FUNC(sega315_5124_device::control_write));
map(0xc0, 0xc0).r(FUNC(sms_state::sms_input_port_dc_r));
@@ -493,33 +493,35 @@ static INPUT_PORTS_START( gg )
INPUT_PORTS_END
-void sms_state::sms_base(machine_config &config)
-{
+MACHINE_CONFIG_START(sms_state::sms_base)
/* basic machine hardware */
SPEAKER(config, "mono").front_center();
- SMS_CART_SLOT(config, "slot", sms_cart, nullptr);
+ MCFG_SMS_CARTRIDGE_ADD("slot", sms_cart, nullptr)
- SOFTWARE_LIST(config, "cart_list").set_original("sms");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","sms")
- SMS_CONTROL_PORT(config, m_port_ctrl1, sms_control_port_devices, "joypad");
- m_port_ctrl1->th_input_handler().set(FUNC(sms_state::sms_ctrl1_th_input));
- m_port_ctrl1->pixel_handler().set(FUNC(sms_state::sms_pixel_color));
+ MCFG_SMS_CONTROL_PORT_ADD(CONTROL1_TAG, sms_control_port_devices, "joypad")
+ MCFG_SMS_CONTROL_PORT_TH_INPUT_HANDLER(WRITELINE(*this, sms_state, sms_ctrl1_th_input))
+ MCFG_SMS_CONTROL_PORT_PIXEL_HANDLER(READ32(*this, sms_state, sms_pixel_color))
- SMS_CONTROL_PORT(config, m_port_ctrl2, sms_control_port_devices, "joypad");
- m_port_ctrl2->th_input_handler().set(FUNC(sms_state::sms_ctrl2_th_input));
- m_port_ctrl2->pixel_handler().set(FUNC(sms_state::sms_pixel_color));
-}
+ MCFG_SMS_CONTROL_PORT_ADD(CONTROL2_TAG, sms_control_port_devices, "joypad")
+ MCFG_SMS_CONTROL_PORT_TH_INPUT_HANDLER(WRITELINE(*this, sms_state, sms_ctrl2_th_input))
+ MCFG_SMS_CONTROL_PORT_PIXEL_HANDLER(READ32(*this, sms_state, sms_pixel_color))
+MACHINE_CONFIG_END
-void sms_state::sms_ntsc_base(machine_config &config)
-{
+MACHINE_CONFIG_START(sms_state::sms_ntsc_base)
sms_base(config);
- Z80(config, m_maincpu, XTAL(10'738'635)/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &sms_state::sms_mem);
- m_maincpu->set_addrmap(AS_IO, &sms_state::sms_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(10'738'635)/3)
+ MCFG_DEVICE_PROGRAM_MAP(sms_mem)
+ MCFG_DEVICE_IO_MAP(sms_io)
- config.m_minimum_quantum = attotime::from_hz(60);
-}
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
+
+ /* actually, PSG is embedded in the VDP chip */
+ MCFG_DEVICE_ADD("segapsg", SEGAPSG, XTAL(10'738'635)/3)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
/*
For SMS drivers, the ratio between CPU and pixel clocks, set through dividers, is 2/3. The
@@ -576,12 +578,11 @@ MACHINE_CONFIG_START(sms_state::sms2_ntsc)
MCFG_SCREEN_SMS_NTSC_RAW_PARAMS(XTAL(10'738'635)/2)
MCFG_SCREEN_UPDATE_DRIVER(sms_state, screen_update_sms)
- SEGA315_5246(config, m_vdp, XTAL(10'738'635));
- m_vdp->set_screen(m_main_scr);
- m_vdp->set_is_pal(false);
- m_vdp->irq().set_inputline(m_maincpu, 0);
- m_vdp->pause().set(FUNC(sms_state::sms_pause_callback));
- m_vdp->add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("sms_vdp", SEGA315_5246, 0)
+ MCFG_SEGA315_5246_SET_SCREEN("screen")
+ MCFG_SEGA315_5246_IS_PAL(false)
+ MCFG_SEGA315_5246_INT_CB(INPUTLINE("maincpu", 0))
+ MCFG_SEGA315_5246_PAUSE_CB(WRITELINE(*this, sms_state, sms_pause_callback))
m_has_bios_full = true;
MACHINE_CONFIG_END
@@ -590,7 +591,8 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sms_state::sms1_ntsc)
sms_ntsc_base(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &sms_state::sms1_mem); // This adds the SegaScope handlers for 3-D glasses
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sms1_mem) // This adds the SegaScope handlers for 3-D glasses
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -612,54 +614,85 @@ MACHINE_CONFIG_START(sms_state::sms1_ntsc)
MCFG_VIDEO_START_OVERRIDE(sms_state,sms1)
MCFG_VIDEO_RESET_OVERRIDE(sms_state,sms1)
- SEGA315_5124(config, m_vdp, XTAL(10'738'635));
- m_vdp->set_screen(m_main_scr);
- m_vdp->set_is_pal(false);
- m_vdp->irq().set_inputline(m_maincpu, 0);
- m_vdp->pause().set(FUNC(sms_state::sms_pause_callback));
- m_vdp->add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("sms_vdp", SEGA315_5124, 0)
+ MCFG_SEGA315_5124_SET_SCREEN("screen")
+ MCFG_SEGA315_5124_IS_PAL(false)
+ MCFG_SEGA315_5124_INT_CB(INPUTLINE("maincpu", 0))
+ MCFG_SEGA315_5124_PAUSE_CB(WRITELINE(*this, sms_state, sms_pause_callback))
// card and expansion slots, not present in Master System II
- SMS_CARD_SLOT(config, "mycard", sms_cart, nullptr);
- SMS_EXPANSION_SLOT(config, "smsexp", sms_expansion_devices, nullptr);
+ MCFG_SMS_CARD_ADD("mycard", sms_cart, nullptr)
+ MCFG_SMS_EXPANSION_ADD("smsexp", sms_expansion_devices, nullptr)
m_has_bios_full = true;
m_has_pwr_led = true;
MACHINE_CONFIG_END
-void smssdisp_state::sms_sdisp(machine_config &config)
-{
+MACHINE_CONFIG_START(smssdisp_state::sms_sdisp)
sms1_ntsc(config);
- m_vdp->irq().set(FUNC(smssdisp_state::sms_store_int_callback));
+ MCFG_DEVICE_MODIFY("sms_vdp")
+ MCFG_SEGA315_5124_INT_CB(WRITELINE(*this, smssdisp_state, sms_store_int_callback))
- Z80(config, m_control_cpu, XTAL(10'738'635)/3);
- m_control_cpu->set_addrmap(AS_PROGRAM, &smssdisp_state::sms_store_mem);
+ MCFG_DEVICE_ADD("control", Z80, XTAL(10'738'635)/3)
+ MCFG_DEVICE_PROGRAM_MAP(sms_store_mem)
/* Both CPUs seem to communicate with the VDP etc? */
- m_control_cpu->set_addrmap(AS_IO, &smssdisp_state::sms_io);
-
- config.device_remove("mycard");
- config.device_remove("smsexp");
-
- for (int i = 1; i < 16; i++)
- SMS_CART_SLOT(config, m_slots[i], sms_cart, nullptr);
- for (int i = 0; i < 16; i++)
- SMS_CARD_SLOT(config, m_cards[i], sms_cart, nullptr);
+ MCFG_DEVICE_IO_MAP(sms_io)
+
+ MCFG_DEVICE_REMOVE("mycard")
+ MCFG_DEVICE_REMOVE("smsexp")
+
+ MCFG_SMS_CARTRIDGE_ADD("slot2", sms_cart, nullptr)
+ MCFG_SMS_CARTRIDGE_ADD("slot3", sms_cart, nullptr)
+ MCFG_SMS_CARTRIDGE_ADD("slot4", sms_cart, nullptr)
+ MCFG_SMS_CARTRIDGE_ADD("slot5", sms_cart, nullptr)
+ MCFG_SMS_CARTRIDGE_ADD("slot6", sms_cart, nullptr)
+ MCFG_SMS_CARTRIDGE_ADD("slot7", sms_cart, nullptr)
+ MCFG_SMS_CARTRIDGE_ADD("slot8", sms_cart, nullptr)
+ MCFG_SMS_CARTRIDGE_ADD("slot9", sms_cart, nullptr)
+ MCFG_SMS_CARTRIDGE_ADD("slot10", sms_cart, nullptr)
+ MCFG_SMS_CARTRIDGE_ADD("slot11", sms_cart, nullptr)
+ MCFG_SMS_CARTRIDGE_ADD("slot12", sms_cart, nullptr)
+ MCFG_SMS_CARTRIDGE_ADD("slot13", sms_cart, nullptr)
+ MCFG_SMS_CARTRIDGE_ADD("slot14", sms_cart, nullptr)
+ MCFG_SMS_CARTRIDGE_ADD("slot15", sms_cart, nullptr)
+ MCFG_SMS_CARTRIDGE_ADD("slot16", sms_cart, nullptr)
+
+ MCFG_SMS_CARD_ADD("slot17", sms_cart, nullptr)
+ MCFG_SMS_CARD_ADD("slot18", sms_cart, nullptr)
+ MCFG_SMS_CARD_ADD("slot19", sms_cart, nullptr)
+ MCFG_SMS_CARD_ADD("slot20", sms_cart, nullptr)
+ MCFG_SMS_CARD_ADD("slot21", sms_cart, nullptr)
+ MCFG_SMS_CARD_ADD("slot22", sms_cart, nullptr)
+ MCFG_SMS_CARD_ADD("slot23", sms_cart, nullptr)
+ MCFG_SMS_CARD_ADD("slot24", sms_cart, nullptr)
+ MCFG_SMS_CARD_ADD("slot25", sms_cart, nullptr)
+ MCFG_SMS_CARD_ADD("slot26", sms_cart, nullptr)
+ MCFG_SMS_CARD_ADD("slot27", sms_cart, nullptr)
+ MCFG_SMS_CARD_ADD("slot28", sms_cart, nullptr)
+ MCFG_SMS_CARD_ADD("slot29", sms_cart, nullptr)
+ MCFG_SMS_CARD_ADD("slot30", sms_cart, nullptr)
+ MCFG_SMS_CARD_ADD("slot31", sms_cart, nullptr)
+ MCFG_SMS_CARD_ADD("slot32", sms_cart, nullptr)
m_has_bios_full = false;
+ m_is_sdisp = true;
m_has_pwr_led = false;
-}
+MACHINE_CONFIG_END
-void sms_state::sms_pal_base(machine_config &config)
-{
+MACHINE_CONFIG_START(sms_state::sms_pal_base)
sms_base(config);
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK_PAL/15);
- m_maincpu->set_addrmap(AS_PROGRAM, &sms_state::sms_mem);
- m_maincpu->set_addrmap(AS_IO, &sms_state::sms_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK_PAL/15)
+ MCFG_DEVICE_PROGRAM_MAP(sms_mem)
+ MCFG_DEVICE_IO_MAP(sms_io)
- config.m_minimum_quantum = attotime::from_hz(50);
-}
+ MCFG_QUANTUM_TIME(attotime::from_hz(50))
+
+ /* actually, PSG is embedded in the VDP chip */
+ MCFG_DEVICE_ADD("segapsg", SEGAPSG, MASTER_CLOCK_PAL/15)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
MACHINE_CONFIG_START(sms_state::sms2_pal)
sms_pal_base(config);
@@ -669,12 +702,11 @@ MACHINE_CONFIG_START(sms_state::sms2_pal)
MCFG_SCREEN_SMS_PAL_RAW_PARAMS(MASTER_CLOCK_PAL/10)
MCFG_SCREEN_UPDATE_DRIVER(sms_state, screen_update_sms)
- SEGA315_5246(config, m_vdp, MASTER_CLOCK_PAL/5);
- m_vdp->set_screen(m_main_scr);
- m_vdp->set_is_pal(true);
- m_vdp->irq().set_inputline(m_maincpu, 0);
- m_vdp->pause().set(FUNC(sms_state::sms_pause_callback));
- m_vdp->add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("sms_vdp", SEGA315_5246, 0)
+ MCFG_SEGA315_5246_SET_SCREEN("screen")
+ MCFG_SEGA315_5246_IS_PAL(true)
+ MCFG_SEGA315_5246_INT_CB(INPUTLINE("maincpu", 0))
+ MCFG_SEGA315_5246_PAUSE_CB(WRITELINE(*this, sms_state, sms_pause_callback))
m_has_bios_full = true;
MACHINE_CONFIG_END
@@ -682,7 +714,8 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sms_state::sms1_pal)
sms_pal_base(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &sms_state::sms1_mem); // This adds the SegaScope handlers for 3-D glasses
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sms1_mem) // This adds the SegaScope handlers for 3-D glasses
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -704,32 +737,34 @@ MACHINE_CONFIG_START(sms_state::sms1_pal)
MCFG_VIDEO_START_OVERRIDE(sms_state,sms1)
MCFG_VIDEO_RESET_OVERRIDE(sms_state,sms1)
- SEGA315_5124(config, m_vdp, MASTER_CLOCK_PAL/5);
- m_vdp->set_screen(m_main_scr);
- m_vdp->set_is_pal(true);
- m_vdp->irq().set_inputline(m_maincpu, 0);
- m_vdp->pause().set(FUNC(sms_state::sms_pause_callback));
- m_vdp->add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("sms_vdp", SEGA315_5124, 0)
+ MCFG_SEGA315_5124_SET_SCREEN("screen")
+ MCFG_SEGA315_5124_IS_PAL(true)
+ MCFG_SEGA315_5124_INT_CB(INPUTLINE("maincpu", 0))
+ MCFG_SEGA315_5124_PAUSE_CB(WRITELINE(*this, sms_state, sms_pause_callback))
// card and expansion slots, not present in Master System II
- SMS_CARD_SLOT(config, "mycard", sms_cart, nullptr);
- SMS_EXPANSION_SLOT(config, "smsexp", sms_expansion_devices, nullptr);
+ MCFG_SMS_CARD_ADD("mycard", sms_cart, nullptr)
+ MCFG_SMS_EXPANSION_ADD("smsexp", sms_expansion_devices, nullptr)
m_has_bios_full = true;
m_has_pwr_led = true;
MACHINE_CONFIG_END
-void sms_state::sms_paln_base(machine_config &config)
-{
+MACHINE_CONFIG_START(sms_state::sms_paln_base)
sms_base(config);
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK_PALN/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &sms_state::sms_mem);
- m_maincpu->set_addrmap(AS_IO, &sms_state::sms_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK_PALN/3)
+ MCFG_DEVICE_PROGRAM_MAP(sms_mem)
+ MCFG_DEVICE_IO_MAP(sms_io)
- config.m_minimum_quantum = attotime::from_hz(50);
-}
+ MCFG_QUANTUM_TIME(attotime::from_hz(50))
+
+ /* actually, PSG is embedded in the VDP chip */
+ MCFG_DEVICE_ADD("segapsg", SEGAPSG, MASTER_CLOCK_PALN/3)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
MACHINE_CONFIG_START(sms_state::sms3_paln)
sms_paln_base(config);
@@ -739,12 +774,11 @@ MACHINE_CONFIG_START(sms_state::sms3_paln)
MCFG_SCREEN_SMS_PAL_RAW_PARAMS(MASTER_CLOCK_PALN/2)
MCFG_SCREEN_UPDATE_DRIVER(sms_state, screen_update_sms)
- SEGA315_5246(config, m_vdp, MASTER_CLOCK_PALN);
- m_vdp->set_screen(m_main_scr);
- m_vdp->set_is_pal(true);
- m_vdp->irq().set_inputline(m_maincpu, 0);
- m_vdp->pause().set(FUNC(sms_state::sms_pause_callback));
- m_vdp->add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("sms_vdp", SEGA315_5246, 0)
+ MCFG_SEGA315_5246_SET_SCREEN("screen")
+ MCFG_SEGA315_5246_IS_PAL(true)
+ MCFG_SEGA315_5246_INT_CB(INPUTLINE("maincpu", 0))
+ MCFG_SEGA315_5246_PAUSE_CB(WRITELINE(*this, sms_state, sms_pause_callback))
m_has_bios_full = true;
MACHINE_CONFIG_END
@@ -752,7 +786,8 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sms_state::sms1_paln)
sms_paln_base(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &sms_state::sms1_mem); // This adds the SegaScope handlers for 3-D glasses
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sms1_mem) // This adds the SegaScope handlers for 3-D glasses
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -774,33 +809,35 @@ MACHINE_CONFIG_START(sms_state::sms1_paln)
MCFG_VIDEO_START_OVERRIDE(sms_state,sms1)
MCFG_VIDEO_RESET_OVERRIDE(sms_state,sms1)
- SEGA315_5124(config, m_vdp, MASTER_CLOCK_PALN);
- m_vdp->set_screen(m_main_scr);
- m_vdp->set_is_pal(true);
- m_vdp->irq().set_inputline(m_maincpu, 0);
- m_vdp->pause().set(FUNC(sms_state::sms_pause_callback));
- m_vdp->add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("sms_vdp", SEGA315_5124, 0)
+ MCFG_SEGA315_5124_SET_SCREEN("screen")
+ MCFG_SEGA315_5124_IS_PAL(true)
+ MCFG_SEGA315_5124_INT_CB(INPUTLINE("maincpu", 0))
+ MCFG_SEGA315_5124_PAUSE_CB(WRITELINE(*this, sms_state, sms_pause_callback))
// card and expansion slots, not present in Tec Toy Master System III
- SMS_CARD_SLOT(config, "mycard", sms_cart, nullptr);
- SMS_EXPANSION_SLOT(config, "smsexp", sms_expansion_devices, nullptr);
+ MCFG_SMS_CARD_ADD("mycard", sms_cart, nullptr)
+ MCFG_SMS_EXPANSION_ADD("smsexp", sms_expansion_devices, nullptr)
m_has_bios_full = true;
m_has_pwr_led = true;
MACHINE_CONFIG_END
-void sms_state::sms_br_base(machine_config &config)
-{
+MACHINE_CONFIG_START(sms_state::sms_br_base)
sms_base(config);
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK_PALM/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &sms_state::sms_mem);
- m_maincpu->set_addrmap(AS_IO, &sms_state::sms_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK_PALM/3)
+ MCFG_DEVICE_PROGRAM_MAP(sms_mem)
+ MCFG_DEVICE_IO_MAP(sms_io)
// PAL-M has near the same frequency of NTSC
- config.m_minimum_quantum = attotime::from_hz(60);
-}
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
+
+ /* actually, PSG is embedded in the VDP chip */
+ MCFG_DEVICE_ADD("segapsg", SEGAPSG, MASTER_CLOCK_PALM/3)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
MACHINE_CONFIG_START(sms_state::sms3_br)
sms_br_base(config);
@@ -810,12 +847,11 @@ MACHINE_CONFIG_START(sms_state::sms3_br)
MCFG_SCREEN_SMS_NTSC_RAW_PARAMS(MASTER_CLOCK_PALM/2)
MCFG_SCREEN_UPDATE_DRIVER(sms_state, screen_update_sms)
- SEGA315_5246(config, m_vdp, MASTER_CLOCK_PALM);
- m_vdp->set_screen(m_main_scr);
- m_vdp->set_is_pal(false); // PAL-M has same line count of NTSC
- m_vdp->irq().set_inputline(m_maincpu, 0);
- m_vdp->pause().set(FUNC(sms_state::sms_pause_callback));
- m_vdp->add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("sms_vdp", SEGA315_5246, 0)
+ MCFG_SEGA315_5246_SET_SCREEN("screen")
+ MCFG_SEGA315_5246_IS_PAL(false) // PAL-M has same line count of NTSC
+ MCFG_SEGA315_5246_INT_CB(INPUTLINE("maincpu", 0))
+ MCFG_SEGA315_5246_PAUSE_CB(WRITELINE(*this, sms_state, sms_pause_callback))
m_has_bios_full = true;
MACHINE_CONFIG_END
@@ -823,7 +859,8 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sms_state::sms1_br)
sms_br_base(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &sms_state::sms1_mem); // This adds the SegaScope handlers for 3-D glasses
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sms1_mem) // This adds the SegaScope handlers for 3-D glasses
/* video hardware */
// PAL-M height/width parameters are the same of NTSC screens.
@@ -846,108 +883,106 @@ MACHINE_CONFIG_START(sms_state::sms1_br)
MCFG_VIDEO_START_OVERRIDE(sms_state,sms1)
MCFG_VIDEO_RESET_OVERRIDE(sms_state,sms1)
- SEGA315_5124(config, m_vdp, MASTER_CLOCK_PALM);
- m_vdp->set_screen(m_main_scr);
- m_vdp->set_is_pal(false); // PAL-M has same line count of NTSC
- m_vdp->irq().set_inputline(m_maincpu, 0);
- m_vdp->pause().set(FUNC(sms_state::sms_pause_callback));
- m_vdp->add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD("sms_vdp", SEGA315_5124, 0)
+ MCFG_SEGA315_5124_SET_SCREEN("screen")
+ MCFG_SEGA315_5124_IS_PAL(false) // PAL-M has same line count of NTSC
+ MCFG_SEGA315_5124_INT_CB(INPUTLINE("maincpu", 0))
+ MCFG_SEGA315_5124_PAUSE_CB(WRITELINE(*this, sms_state, sms_pause_callback))
// card and expansion slots, not present in Tec Toy Master System III
- SMS_CARD_SLOT(config, "mycard", sms_cart, nullptr);
- SMS_EXPANSION_SLOT(config, "smsexp", sms_expansion_devices, nullptr);
+ MCFG_SMS_CARD_ADD("mycard", sms_cart, nullptr)
+ MCFG_SMS_EXPANSION_ADD("smsexp", sms_expansion_devices, nullptr)
m_has_bios_full = true;
m_has_pwr_led = true;
MACHINE_CONFIG_END
-void sms_state::sms2_kr(machine_config &config)
-{
+MACHINE_CONFIG_START(sms_state::sms2_kr)
sms2_ntsc(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(smskr_io)
- m_maincpu->set_addrmap(AS_IO, &sms_state::smskr_io);
-
- config.device_remove("slot");
- SG1000MK3_CART_SLOT(config, "slot", sg1000mk3_cart, nullptr);
- SOFTWARE_LIST(config, "cart_list2").set_original("sg1000");
+ MCFG_DEVICE_REMOVE("slot")
+ MCFG_SG1000MK3_CARTRIDGE_ADD("slot", sg1000mk3_cart, nullptr)
+ MCFG_SOFTWARE_LIST_ADD("cart_list2","sg1000")
// Despite having a Japanese cartridge slot, this version is detected as Export region.
m_has_jpn_sms_cart_slot = true;
-}
+MACHINE_CONFIG_END
-void sms_state::sms1_kr(machine_config &config)
-{
+MACHINE_CONFIG_START(sms_state::sms1_kr)
sms1_ntsc(config);
-
- m_maincpu->set_addrmap(AS_IO, &sms_state::smskr_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(smskr_io)
// need to replace the cartridge slot with the Japanese version, so to
// keep the usual media order, remove and reinsert all of them.
- config.device_remove("slot");
- config.device_remove("mycard");
- config.device_remove("smsexp");
- SG1000MK3_CART_SLOT(config, "slot", sg1000mk3_cart, nullptr);
- SMS_CARD_SLOT(config, "mycard", sms_cart, nullptr);
- SMS_EXPANSION_SLOT(config, "smsexp", sms_expansion_devices, nullptr);
+ MCFG_DEVICE_REMOVE("slot")
+ MCFG_DEVICE_REMOVE("mycard")
+ MCFG_DEVICE_REMOVE("smsexp")
+ MCFG_SG1000MK3_CARTRIDGE_ADD("slot", sg1000mk3_cart, nullptr)
+ MCFG_SMS_CARD_ADD("mycard", sms_cart, nullptr)
+ MCFG_SMS_EXPANSION_ADD("smsexp", sms_expansion_devices, nullptr)
- SOFTWARE_LIST(config, "cart_list2").set_original("sg1000");
+ MCFG_SOFTWARE_LIST_ADD("cart_list2","sg1000")
- m_vdp->csync().set(FUNC(sms_state::sms_csync_callback));
+ MCFG_DEVICE_MODIFY("sms_vdp")
+ MCFG_SEGA315_5124_CSYNC_CB(WRITELINE(*this, sms_state, sms_csync_callback))
m_has_bios_full = false;
m_has_bios_2000 = true;
m_ioctrl_region_is_japan = true;
m_has_jpn_sms_cart_slot = true;
-}
+MACHINE_CONFIG_END
-void sms_state::smsj(machine_config &config)
-{
+MACHINE_CONFIG_START(sms_state::smsj)
sms1_kr(config);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(smsj_io)
- m_maincpu->set_addrmap(AS_IO, &sms_state::smsj_io);
-
- YM2413(config, m_ym, XTAL(10'738'635)/3);
+ MCFG_DEVICE_ADD("ym2413", YM2413, XTAL(10'738'635)/3)
// if this output gain is changed, the gain set when unmute the output need
// to be changed too, probably along the gain set for the Mark III FM Unit.
- m_ym->add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
m_is_smsj = true;
-}
+MACHINE_CONFIG_END
-void sms_state::sg1000m3(machine_config &config)
-{
+MACHINE_CONFIG_START(sms_state::sg1000m3)
sms1_ntsc(config);
-
- m_maincpu->set_addrmap(AS_IO, &sms_state::sg1000m3_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(sg1000m3_io)
// Remove and reinsert all media slots, as done with the sms1_kr config,
// and also replace the expansion slot with the SG-1000 version.
- config.device_remove("slot");
- config.device_remove("mycard");
- config.device_remove("smsexp");
- SG1000MK3_CART_SLOT(config, "slot", sg1000mk3_cart, nullptr);
- SMS_CARD_SLOT(config, "mycard", sms_cart, nullptr);
- SG1000_EXPANSION_SLOT(config, "sgexp", sg1000_expansion_devices, nullptr, false);
+ MCFG_DEVICE_REMOVE("slot")
+ MCFG_DEVICE_REMOVE("mycard")
+ MCFG_DEVICE_REMOVE("smsexp")
+ MCFG_SG1000MK3_CARTRIDGE_ADD("slot", sg1000mk3_cart, nullptr)
+ MCFG_SMS_CARD_ADD("mycard", sms_cart, nullptr)
+ MCFG_SG1000_EXPANSION_ADD("sgexp", sg1000_expansion_devices, nullptr, false)
- SOFTWARE_LIST(config, "cart_list2").set_original("sg1000");
+ MCFG_SOFTWARE_LIST_ADD("cart_list2","sg1000")
// Mark III does not have TH connected.
- m_port_ctrl1->th_input_handler().set_nop();
- m_port_ctrl2->th_input_handler().set_nop();
+ MCFG_SMS_CONTROL_PORT_MODIFY(CONTROL1_TAG)
+ MCFG_SMS_CONTROL_PORT_TH_INPUT_HANDLER(NOOP)
+ MCFG_SMS_CONTROL_PORT_MODIFY(CONTROL2_TAG)
+ MCFG_SMS_CONTROL_PORT_TH_INPUT_HANDLER(NOOP)
m_has_bios_full = false;
m_is_mark_iii = true;
m_has_jpn_sms_cart_slot = true;
-}
+MACHINE_CONFIG_END
MACHINE_CONFIG_START(sms_state::gamegear)
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK_GG/9);
- m_maincpu->set_addrmap(AS_PROGRAM, &sms_state::sms_mem);
- m_maincpu->set_addrmap(AS_IO, &sms_state::gg_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK_GG/9)
+ MCFG_DEVICE_PROGRAM_MAP(sms_mem)
+ MCFG_DEVICE_IO_MAP(gg_io)
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* video hardware */
MCFG_SCREEN_ADD("screen", LCD)
@@ -957,39 +992,41 @@ MACHINE_CONFIG_START(sms_state::gamegear)
MCFG_VIDEO_START_OVERRIDE(sms_state,gamegear)
MCFG_VIDEO_RESET_OVERRIDE(sms_state,gamegear)
+ /* VDP chip of the Gamegear 2 ASIC version */
+ MCFG_DEVICE_ADD("sms_vdp", SEGA315_5377, 0)
+ MCFG_SEGA315_5377_SET_SCREEN("screen")
+ MCFG_SEGA315_5377_IS_PAL(false)
+ MCFG_SEGA315_5377_INT_CB(INPUTLINE("maincpu", 0))
+ MCFG_SEGA315_5377_PAUSE_CB(WRITELINE(*this, sms_state, sms_pause_callback))
+
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- /* VDP chip of the Gamegear 2 ASIC version */
- SEGA315_5377(config, m_vdp, MASTER_CLOCK_GG/3);
- m_vdp->set_screen(m_main_scr);
- m_vdp->set_is_pal(false);
- m_vdp->irq().set_inputline(m_maincpu, 0);
- m_vdp->pause().set(FUNC(sms_state::sms_pause_callback));
- m_vdp->add_route(0, "lspeaker", 1.00);
- m_vdp->add_route(1, "rspeaker", 1.00);
+ /* actually, PSG is embedded in the VDP chip */
+ MCFG_DEVICE_ADD("gamegear", GAMEGEAR, MASTER_CLOCK_GG/9)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
/* cartridge */
- GAMEGEAR_CART_SLOT(config, "slot", gg_cart, nullptr);
+ MCFG_GG_CARTRIDGE_ADD("slot", gg_cart, nullptr)
- SOFTWARE_LIST(config, "cart_list").set_original("gamegear");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "gamegear")
- GG_EXT_PORT(config, m_port_gg_ext, gg_ext_port_devices, nullptr);
- m_port_gg_ext->th_input_handler().set(FUNC(sms_state::gg_ext_th_input));
+ MCFG_GG_EXT_PORT_ADD("ext", gg_ext_port_devices, nullptr)
+ MCFG_GG_EXT_PORT_TH_INPUT_HANDLER(WRITELINE(*this, sms_state, gg_ext_th_input))
// only for GG-TV mod (may be simulated with a driver modified with SMS screen settings)
- //m_port_gg_ext->pixel_handler().set(FUNC(sms_state::sms_pixel_color));
+ //MCFG_GG_EXT_PORT_PIXEL_HANDLER(READ32(*this, sms_state, sms_pixel_color))
m_is_gamegear = true;
m_has_bios_0400 = true;
m_has_pwr_led = true;
MACHINE_CONFIG_END
-void sms_state::gamegeaj(machine_config &config)
-{
+MACHINE_CONFIG_START(sms_state::gamegeaj)
gamegear(config);
m_ioctrl_region_is_japan = true;
-}
+MACHINE_CONFIG_END
ROM_START(sms1)
diff --git a/src/mame/drivers/sms_bootleg.cpp b/src/mame/drivers/sms_bootleg.cpp
index 6a6b1e51019..bd9dba5a882 100644
--- a/src/mame/drivers/sms_bootleg.cpp
+++ b/src/mame/drivers/sms_bootleg.cpp
@@ -264,7 +264,7 @@ void smsbootleg_state::sms_supergame_io(address_map &map)
map(0x14, 0x14).nopr(); //AM_READ_PORT("IN1") // seem to be from a coinage / timer MCU, changing them directly changes the credits / time value
map(0x18, 0x18).w(FUNC(smsbootleg_state::port18_w));
- map(0x40, 0x7f).r(FUNC(smsbootleg_state::sms_count_r)).w(m_vdp, FUNC(sega315_5124_device::psg_w));
+ map(0x40, 0x7f).rw(FUNC(smsbootleg_state::sms_count_r), FUNC(smsbootleg_state::sms_psg_w));
map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::data_read), FUNC(sega315_5124_device::data_write));
map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::control_read), FUNC(sega315_5124_device::control_write));
@@ -273,32 +273,34 @@ void smsbootleg_state::sms_supergame_io(address_map &map)
-void smsbootleg_state::sms_supergame(machine_config &config)
-{
+MACHINE_CONFIG_START(smsbootleg_state::sms_supergame)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(10'738'635)/3);
- m_maincpu->set_addrmap(AS_PROGRAM, &smsbootleg_state::sms_supergame_map);
- m_maincpu->set_addrmap(AS_IO, &smsbootleg_state::sms_supergame_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(10'738'635)/3)
+ MCFG_DEVICE_PROGRAM_MAP(sms_supergame_map)
+ MCFG_DEVICE_IO_MAP(sms_supergame_io)
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SCREEN(config, m_main_scr, SCREEN_TYPE_RASTER);
- m_main_scr->set_raw(XTAL(10'738'635)/2, \
+ MCFG_DEVICE_ADD("segapsg", SEGAPSG, XTAL(10'738'635)/3)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(10'738'635)/2, \
sega315_5124_device::WIDTH , sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH - 2, sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 256 + 10, \
- sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224);
- m_main_scr->set_refresh_hz(XTAL(10'738'635)/2 / (sega315_5124_device::WIDTH * sega315_5124_device::HEIGHT_NTSC));
- m_main_scr->set_screen_update(FUNC(sms_state::screen_update_sms));
-
- SEGA315_5246(config, m_vdp, XTAL(10'738'635));
- m_vdp->set_screen(m_main_scr);
- m_vdp->set_is_pal(false);
- m_vdp->irq().set_inputline(m_maincpu, 0);
- m_vdp->pause().set(FUNC(sms_state::sms_pause_callback));
- m_vdp->add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+ sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224)
+ MCFG_SCREEN_REFRESH_RATE(XTAL(10'738'635)/2 / (sega315_5124_device::WIDTH * sega315_5124_device::HEIGHT_NTSC))
+ MCFG_SCREEN_UPDATE_DRIVER(sms_state, screen_update_sms)
+
+ MCFG_DEVICE_ADD("sms_vdp", SEGA315_5246, 0)
+ MCFG_SEGA315_5246_SET_SCREEN("screen")
+ MCFG_SEGA315_5246_IS_PAL(false)
+ MCFG_SEGA315_5246_INT_CB(INPUTLINE("maincpu", 0))
+ MCFG_SEGA315_5246_PAUSE_CB(WRITELINE(*this, sms_state, sms_pause_callback))
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/smsmcorp.cpp b/src/mame/drivers/smsmcorp.cpp
index 6839e4c8286..3ee0d75c1ba 100644
--- a/src/mame/drivers/smsmcorp.cpp
+++ b/src/mame/drivers/smsmcorp.cpp
@@ -551,15 +551,14 @@ void smsmfg_state::machine_reset()
m_communication_port_status = 0;
}
-void smsmfg_state::sms(machine_config &config)
-{
- I8088(config, m_maincpu, XTAL(24'000'000)/8);
- m_maincpu->set_addrmap(AS_PROGRAM, &smsmfg_state::sms_map);
+MACHINE_CONFIG_START(smsmfg_state::sms)
+ MCFG_DEVICE_ADD("maincpu", I8088, XTAL(24'000'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(sms_map)
- z80_device &soundcpu(Z80(config, "soundcpu", XTAL(16'000'000)/8));
- soundcpu.set_addrmap(AS_PROGRAM, &smsmfg_state::sub_map);
+ MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(16'000'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(sub_map)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
i8255_device &ppi0(I8255A(config, "ppi8255_0"));
ppi0.out_pa_callback().set(FUNC(smsmfg_state::ppi0_a_w));
@@ -574,13 +573,13 @@ void smsmfg_state::sms(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(0x1b0, 0x100);
- m_screen->set_visarea(0, 0x1af, 0, 0xff);
- m_screen->set_screen_update(FUNC(smsmfg_state::screen_update_sms));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x1b0, 0x100)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x1af, 0, 0xff)
+ MCFG_SCREEN_UPDATE_DRIVER(smsmfg_state, screen_update_sms)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::BGR_3BIT);
@@ -588,16 +587,16 @@ void smsmfg_state::sms(machine_config &config)
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd", XTAL(16'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
-void smsmfg_state::sureshot(machine_config &config)
-{
+MACHINE_CONFIG_START(smsmfg_state::sureshot)
sms(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &smsmfg_state::sureshot_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sureshot_map)
MCFG_MACHINE_START_OVERRIDE(smsmfg_state,sureshot)
-}
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/snes.cpp b/src/mame/drivers/snes.cpp
index a5103b41fcb..a3df5a5be09 100644
--- a/src/mame/drivers/snes.cpp
+++ b/src/mame/drivers/snes.cpp
@@ -154,10 +154,10 @@ READ8_MEMBER( snes_console_state::snes20_hi_r )
// take care of add-on IO
if ((m_cartslot->get_type() == SNES_ST010 || m_cartslot->get_type() == SNES_ST011)
&& (offset >= 0x600000 && offset < 0x680000 && (offset & 0xffff) < 0x4000))
- return m_cartslot->chip_read(offset);
+ return m_cartslot->chip_read(space, offset);
else if ((m_cartslot->get_type() == SNES_ST010 || m_cartslot->get_type() == SNES_ST011)
&& (offset >= 0x680000 && offset < 0x700000 && (offset & 0xffff) < 0x8000))
- return m_cartslot->chip_read(offset);
+ return m_cartslot->chip_read(space, offset);
else if (m_cartslot->get_type() == SNES_CX4
&& (offset < 0x400000 && (offset & 0xffff) >= 0x6000 && (offset & 0xffff) < 0x8000)) // hack until we emulate the real CPU
return CX4_read((offset & 0xffff) - 0x6000);
@@ -169,37 +169,37 @@ READ8_MEMBER( snes_console_state::snes20_hi_r )
else if (address < 0x6000)
return snes_r_io(space, address);
else if (address < 0x8000)
- return snes_open_bus_r();
+ return snes_open_bus_r(space, 0);
else
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
}
else if (offset < 0x700000)
{
if (address < 0x8000)
- return snes_open_bus_r();
+ return snes_open_bus_r(space, 0);
else
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
}
else
{
if (m_type == SNES_SUFAMITURBO && address >= 0x8000 && offset < 0x740000)
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
// here usually there is SRAM mirrored in the whole range, but if ROM is very large then arrives here too (see tokimeki and wizardg4)
if (m_cartslot->m_cart->get_rom_size() > 0x200000 && address >= 0x8000)
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
else
{
if (m_cartslot->m_cart->get_nvram_size() > 0x8000)
{
// In this case, SRAM is mapped in 0x8000 chunks at diff offsets: 0x700000-0x707fff, 0x710000-0x717fff, etc.
offset = ((offset - 0x700000) / 0x10000) * 0x8000 + (offset & 0x7fff);
- return m_cartslot->read_ram(offset);
+ return m_cartslot->read_ram(space, offset);
}
else if (m_cartslot->m_cart->get_nvram_size() > 0)
- return m_cartslot->read_ram(offset);
+ return m_cartslot->read_ram(space, offset);
else
- return snes_open_bus_r();
+ return snes_open_bus_r(space, 0);
}
}
}
@@ -211,16 +211,16 @@ WRITE8_MEMBER( snes_console_state::snes20_hi_w )
// take care of add-on IO
if ((m_cartslot->get_type() == SNES_ST010 || m_cartslot->get_type() == SNES_ST011)
&& (offset >= 0x600000 && offset < 0x680000 && (offset & 0xffff) < 0x4000))
- { m_cartslot->chip_write(offset, data); return; }
+ { m_cartslot->chip_write(space, offset, data); return; }
else if ((m_cartslot->get_type() == SNES_ST010 || m_cartslot->get_type() == SNES_ST011)
&& (offset >= 0x680000 && offset < 0x700000 && (offset & 0xffff) < 0x8000))
- { m_cartslot->chip_write(offset, data); return; }
+ { m_cartslot->chip_write(space, offset, data); return; }
else if (m_cartslot->get_type() == SNES_CX4
&& (offset < 0x400000 && (offset & 0xffff) >= 0x6000 && (offset & 0xffff) < 0x8000)) // hack until we emulate the real CPU
{ CX4_write(machine(), (offset & 0xffff) - 0x6000, data); return; }
else if (m_type == SNES_SUFAMITURBO
&& address >= 0x8000 && ((offset >= 0x600000 && offset < 0x640000) || (offset >= 0x700000 && offset < 0x740000)))
- { m_cartslot->write_h(offset, data); return; }
+ { m_cartslot->write_h(space, offset, data); return; }
if (offset < 0x400000)
{
@@ -235,10 +235,10 @@ WRITE8_MEMBER( snes_console_state::snes20_hi_w )
{
// In this case, SRAM is mapped in 0x8000 chunks at diff offsets: 0x700000-0x707fff, 0x710000-0x717fff, etc.
offset = ((offset - 0x700000) / 0x10000) * 0x8000 + (offset & 0x7fff);
- m_cartslot->write_ram(offset, data);
+ m_cartslot->write_ram(space, offset, data);
}
else if (m_cartslot->m_cart->get_nvram_size() > 0)
- m_cartslot->write_ram(offset, data);
+ m_cartslot->write_ram(space, offset, data);
}
}
@@ -249,10 +249,10 @@ READ8_MEMBER( snes_console_state::snes20_lo_r )
// take care of add-on IO
if ((m_cartslot->get_type() == SNES_ST010 /*|| m_cartslot->get_type() == SNES_ST011*/) // why does this break moritash?
&& (offset >= 0x600000 && offset < 0x680000 && (offset & 0xffff) < 0x4000))
- return m_cartslot->chip_read(offset);
+ return m_cartslot->chip_read(space, offset);
else if ((m_cartslot->get_type() == SNES_ST010 || m_cartslot->get_type() == SNES_ST011)
&& (offset >= 0x680000 && offset < 0x700000 && (offset & 0xffff) < 0x8000))
- return m_cartslot->chip_read(offset);
+ return m_cartslot->chip_read(space, offset);
else if (m_cartslot->get_type() == SNES_CX4
&& (offset < 0x400000 && (offset & 0xffff) >= 0x6000 && (offset & 0xffff) < 0x8000)) // hack until we emulate the real CPU
return CX4_read((offset & 0xffff) - 0x6000);
@@ -264,37 +264,37 @@ READ8_MEMBER( snes_console_state::snes20_lo_r )
else if (address < 0x6000)
return snes_r_io(space, address);
else if (address < 0x8000)
- return snes_open_bus_r();
+ return snes_open_bus_r(space, 0);
else
- return m_cartslot->read_l(offset);
+ return m_cartslot->read_l(space, offset);
}
else if (offset < 0x700000)
{
if (address < 0x8000)
- return snes_open_bus_r();
+ return snes_open_bus_r(space, 0);
else
- return m_cartslot->read_l(offset);
+ return m_cartslot->read_l(space, offset);
}
else
{
if (m_type == SNES_SUFAMITURBO && address >= 0x8000 && offset < 0x740000)
- return m_cartslot->read_l(offset);
+ return m_cartslot->read_l(space, offset);
// here usually there is SRAM mirrored in the whole range, but if ROM is very large then arrives here too (see tokimeki and wizardg4)
if (m_cartslot->m_cart->get_rom_size() > 0x200000 && address >= 0x8000)
- return m_cartslot->read_l(offset);
+ return m_cartslot->read_l(space, offset);
else
{
if (m_cartslot->m_cart->get_nvram_size() > 0x8000)
{
// In this case, SRAM is mapped in 0x8000 chunks at diff offsets: 0x700000-0x707fff, 0x710000-0x717fff, etc.
offset = ((offset - 0x700000) / 0x10000) * 0x8000 + (offset & 0x7fff);
- return m_cartslot->read_ram(offset);
+ return m_cartslot->read_ram(space, offset);
}
else if (m_cartslot->m_cart->get_nvram_size() > 0)
- return m_cartslot->read_ram(offset);
+ return m_cartslot->read_ram(space, offset);
else
- return snes_open_bus_r();
+ return snes_open_bus_r(space, 0);
}
}
}
@@ -303,7 +303,7 @@ WRITE8_MEMBER( snes_console_state::snes20_lo_w )
{
if (m_type == SNES_SUFAMITURBO
&& (offset & 0xffff) >= 0x8000 && ((offset >= 0x600000 && offset < 0x640000) || (offset >= 0x700000 && offset < 0x740000)))
- { m_cartslot->write_l(offset, data); return; }
+ { m_cartslot->write_l(space, offset, data); return; }
// other add-on writes matches the hi handler
snes20_hi_w(space, offset, data, 0xff);
@@ -329,7 +329,7 @@ READ8_MEMBER( snes_console_state::snes21_lo_r )
if (m_type == SNES_BSXHI && m_cartslot->m_cart->get_nvram_size() && offset >= 0x200000)
{
int mask = (m_cartslot->m_cart->get_nvram_size() - 1) & 0x7fff;
- return m_cartslot->read_ram((offset - 0x6000) & mask);
+ return m_cartslot->read_ram(space, (offset - 0x6000) & mask);
}
if (m_cartslot->m_cart->get_nvram_size() && offset >= 0x300000)
@@ -337,15 +337,15 @@ READ8_MEMBER( snes_console_state::snes21_lo_r )
/* Donkey Kong Country checks this and detects a copier if 0x800 is not masked out due to sram size */
/* OTOH Secret of Mana does not work properly if sram is not mirrored on later banks */
int mask = (m_cartslot->m_cart->get_nvram_size() - 1) & 0x7fff; /* Limit SRAM size to what's actually present */
- return m_cartslot->read_ram((offset - 0x6000) & mask);
+ return m_cartslot->read_ram(space, (offset - 0x6000) & mask);
}
else
- return snes_open_bus_r();
+ return snes_open_bus_r(space, 0);
}
}
// ROM access
- return m_cartslot->read_l(offset);
+ return m_cartslot->read_l(space, offset);
}
WRITE8_MEMBER( snes_console_state::snes21_lo_w )
@@ -362,7 +362,7 @@ WRITE8_MEMBER( snes_console_state::snes21_lo_w )
if (m_type == SNES_BSXHI && m_cartslot->m_cart->get_nvram_size() && offset >= 0x200000)
{
int mask = (m_cartslot->m_cart->get_nvram_size() - 1) & 0x7fff;
- m_cartslot->write_ram((offset - 0x6000) & mask, data);
+ m_cartslot->write_ram(space, (offset - 0x6000) & mask, data);
return;
}
if (m_cartslot->m_cart->get_nvram_size() && offset >= 0x300000)
@@ -370,7 +370,7 @@ WRITE8_MEMBER( snes_console_state::snes21_lo_w )
/* Donkey Kong Country checks this and detects a copier if 0x800 is not masked out due to sram size */
/* OTOH Secret of Mana does not work properly if sram is not mirrored on later banks */
int mask = (m_cartslot->m_cart->get_nvram_size() - 1) & 0x7fff; /* Limit SRAM size to what's actually present */
- m_cartslot->write_ram((offset - 0x6000) & mask, data);
+ m_cartslot->write_ram(space, (offset - 0x6000) & mask, data);
}
}
}
@@ -391,7 +391,7 @@ READ8_MEMBER( snes_console_state::snes21_hi_r )
if (m_type == SNES_BSXHI && m_cartslot->m_cart->get_nvram_size() && offset >= 0x200000)
{
int mask = (m_cartslot->m_cart->get_nvram_size() - 1) & 0x7fff;
- return m_cartslot->read_ram((offset - 0x6000) & mask);
+ return m_cartslot->read_ram(space, (offset - 0x6000) & mask);
}
if (m_cartslot->m_cart->get_nvram_size() && offset >= 0x300000)
@@ -399,15 +399,15 @@ READ8_MEMBER( snes_console_state::snes21_hi_r )
/* Donkey Kong Country checks this and detects a copier if 0x800 is not masked out due to sram size */
/* OTOH Secret of Mana does not work properly if sram is not mirrored on later banks */
int mask = (m_cartslot->m_cart->get_nvram_size() - 1) & 0x7fff; /* Limit SRAM size to what's actually present */
- return m_cartslot->read_ram((offset - 0x6000) & mask);
+ return m_cartslot->read_ram(space, (offset - 0x6000) & mask);
}
else
- return snes_open_bus_r();
+ return snes_open_bus_r(space, 0);
}
}
// ROM access
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
}
WRITE8_MEMBER( snes_console_state::snes21_hi_w )
@@ -424,7 +424,7 @@ WRITE8_MEMBER( snes_console_state::snes21_hi_w )
if (m_type == SNES_BSXHI && m_cartslot->m_cart->get_nvram_size() && offset >= 0x200000)
{
int mask = (m_cartslot->m_cart->get_nvram_size() - 1) & 0x7fff;
- m_cartslot->write_ram((offset - 0x6000) & mask, data);
+ m_cartslot->write_ram(space, (offset - 0x6000) & mask, data);
return;
}
if (m_cartslot->m_cart->get_nvram_size() && offset >= 0x300000)
@@ -432,7 +432,7 @@ WRITE8_MEMBER( snes_console_state::snes21_hi_w )
/* Donkey Kong Country checks this and detects a copier if 0x800 is not masked out due to sram size */
/* OTOH Secret of Mana does not work properly if sram is not mirrored on later banks */
int mask = (m_cartslot->m_cart->get_nvram_size() - 1) & 0x7fff; /* Limit SRAM size to what's actually present */
- m_cartslot->write_ram((offset - 0x6000) & mask, data);
+ m_cartslot->write_ram(space, (offset - 0x6000) & mask, data);
}
}
}
@@ -453,19 +453,19 @@ READ8_MEMBER( snes_console_state::snessfx_hi_r )
else if (address < 0x6000)
{
if (address >= 0x3000 && address < 0x3300)
- return m_cartslot->chip_read(offset);
+ return m_cartslot->chip_read(space, offset);
else
return snes_r_io(space, address);
}
else if (address < 0x8000)
- return m_cartslot->read_ram(offset & 0x1fff);
+ return m_cartslot->read_ram(space, offset & 0x1fff);
else
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
}
else if (offset < 0x600000)
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
else
- return m_cartslot->read_ram(offset);
+ return m_cartslot->read_ram(space, offset);
}
READ8_MEMBER( snes_console_state::snessfx_lo_r )
@@ -479,19 +479,19 @@ READ8_MEMBER( snes_console_state::snessfx_lo_r )
else if (address < 0x6000)
{
if (address >= 0x3000 && address < 0x3300)
- return m_cartslot->chip_read(offset);
+ return m_cartslot->chip_read(space, offset);
else
return snes_r_io(space, address);
}
else if (address < 0x8000)
- return m_cartslot->read_ram(offset & 0x1fff);
+ return m_cartslot->read_ram(space, offset & 0x1fff);
else
- return m_cartslot->read_l(offset);
+ return m_cartslot->read_l(space, offset);
}
else if (offset < 0x600000)
- return m_cartslot->read_l(offset);
+ return m_cartslot->read_l(space, offset);
else
- return m_cartslot->read_ram(offset);
+ return m_cartslot->read_ram(space, offset);
}
WRITE8_MEMBER( snes_console_state::snessfx_hi_w )
@@ -504,15 +504,15 @@ WRITE8_MEMBER( snes_console_state::snessfx_hi_w )
else if (address < 0x6000)
{
if (address >= 0x3000 && address < 0x3300)
- m_cartslot->chip_write(offset, data);
+ m_cartslot->chip_write(space, offset, data);
else
snes_w_io(space, address, data);
}
else if (address < 0x8000)
- m_cartslot->write_ram(offset & 0x1fff, data);
+ m_cartslot->write_ram(space, offset & 0x1fff, data);
}
else if (offset >= 0x600000)
- m_cartslot->write_ram(offset, data);
+ m_cartslot->write_ram(space, offset, data);
}
WRITE8_MEMBER( snes_console_state::snessfx_lo_w )
@@ -535,19 +535,19 @@ READ8_MEMBER( snes_console_state::snessa1_hi_r )
else if (address < 0x6000)
{
if (address >= 0x2200 && address < 0x2400)
- return m_cartslot->chip_read(offset); // SA-1 Regs
+ return m_cartslot->chip_read(space, offset); // SA-1 Regs
else if (address >= 0x3000 && address < 0x3800)
- return m_cartslot->chip_read(offset); // Internal SA-1 RAM (2K)
+ return m_cartslot->chip_read(space, offset); // Internal SA-1 RAM (2K)
else
return snes_r_io(space, address);
}
else if (address < 0x8000)
- return m_cartslot->chip_read(offset); // SA-1 BWRAM
+ return m_cartslot->chip_read(space, offset); // SA-1 BWRAM
else
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
}
else
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
}
READ8_MEMBER( snes_console_state::snessa1_lo_r )
@@ -561,19 +561,19 @@ READ8_MEMBER( snes_console_state::snessa1_lo_r )
else if (address < 0x6000)
{
if (address >= 0x2200 && address < 0x2400)
- return m_cartslot->chip_read(offset); // SA-1 Regs
+ return m_cartslot->chip_read(space, offset); // SA-1 Regs
else if (address >= 0x3000 && address < 0x3800)
- return m_cartslot->chip_read(offset); // Internal SA-1 RAM (2K)
+ return m_cartslot->chip_read(space, offset); // Internal SA-1 RAM (2K)
else
return snes_r_io(space, address);
}
else if (address < 0x8000)
- return m_cartslot->chip_read(offset); // SA-1 BWRAM
+ return m_cartslot->chip_read(space, offset); // SA-1 BWRAM
else
- return m_cartslot->read_l(offset);
+ return m_cartslot->read_l(space, offset);
}
else if (offset < 0x500000)
- return m_cartslot->chip_read(offset); // SA-1 BWRAM (not mirrored above!)
+ return m_cartslot->chip_read(space, offset); // SA-1 BWRAM (not mirrored above!)
else
return snes_r_io(space, address); // nothing mapped here!
}
@@ -588,21 +588,21 @@ WRITE8_MEMBER( snes_console_state::snessa1_hi_w )
else if (address < 0x6000)
{
if (address >= 0x2200 && address < 0x2400)
- m_cartslot->chip_write(offset, data); // SA-1 Regs
+ m_cartslot->chip_write(space, offset, data); // SA-1 Regs
else if (address >= 0x3000 && address < 0x3800)
- m_cartslot->chip_write(offset, data); // Internal SA-1 RAM (2K)
+ m_cartslot->chip_write(space, offset, data); // Internal SA-1 RAM (2K)
else
snes_w_io(space, address, data);
}
else if (address < 0x8000)
- m_cartslot->chip_write(offset, data); // SA-1 BWRAM
+ m_cartslot->chip_write(space, offset, data); // SA-1 BWRAM
}
}
WRITE8_MEMBER( snes_console_state::snessa1_lo_w )
{
if (offset >= 0x400000 && offset < 0x500000)
- m_cartslot->chip_write(offset, data); // SA-1 BWRAM (not mirrored above!)
+ m_cartslot->chip_write(space, offset, data); // SA-1 BWRAM (not mirrored above!)
else
snessa1_hi_w(space, offset, data, 0xff);
}
@@ -623,21 +623,21 @@ READ8_MEMBER( snes_console_state::snes7110_hi_r )
{
uint16_t limit = (m_cartslot->get_type() == SNES_SPC7110_RTC) ? 0x4843 : 0x4840;
if (address >= 0x4800 && address < limit)
- return m_cartslot->chip_read(address);
+ return m_cartslot->chip_read(space, address);
return snes_r_io(space, address);
}
else if (address < 0x8000)
{
if (offset < 0x10000)
- return m_cartslot->read_ram(offset);
+ return m_cartslot->read_ram(space, offset);
if (offset >= 0x300000 && offset < 0x310000)
- return m_cartslot->read_ram(offset);
+ return m_cartslot->read_ram(space, offset);
}
else
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
}
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
}
READ8_MEMBER( snes_console_state::snes7110_lo_r )
@@ -652,24 +652,24 @@ READ8_MEMBER( snes_console_state::snes7110_lo_r )
{
uint16_t limit = (m_cartslot->get_type() == SNES_SPC7110_RTC) ? 0x4843 : 0x4840;
if (address >= 0x4800 && address < limit)
- return m_cartslot->chip_read(address);
+ return m_cartslot->chip_read(space, address);
return snes_r_io(space, address);
}
else if (address < 0x8000)
{
if (offset < 0x10000)
- return m_cartslot->read_ram(offset);
+ return m_cartslot->read_ram(space, offset);
if (offset >= 0x300000 && offset < 0x310000)
- return m_cartslot->read_ram(offset);
+ return m_cartslot->read_ram(space, offset);
}
else
- return m_cartslot->read_l(offset);
+ return m_cartslot->read_l(space, offset);
}
if (offset >= 0x500000 && offset < 0x510000)
- return m_cartslot->chip_read(0x4800);
+ return m_cartslot->chip_read(space, 0x4800);
- return snes_open_bus_r();
+ return snes_open_bus_r(space, 0);
}
WRITE8_MEMBER( snes_console_state::snes7110_hi_w )
@@ -689,7 +689,7 @@ WRITE8_MEMBER( snes_console_state::snes7110_lo_w )
uint16_t limit = (m_cartslot->get_type() == SNES_SPC7110_RTC) ? 0x4843 : 0x4840;
if (address >= 0x4800 && address < limit)
{
- m_cartslot->chip_write(address, data);
+ m_cartslot->chip_write(space, address, data);
return;
}
snes_w_io(space, address, data);
@@ -697,9 +697,9 @@ WRITE8_MEMBER( snes_console_state::snes7110_lo_w )
else if (address < 0x8000)
{
if (offset < 0x10000)
- m_cartslot->write_ram(offset, data);
+ m_cartslot->write_ram(space, offset, data);
if (offset >= 0x300000 && offset < 0x310000)
- m_cartslot->write_ram(offset, data);
+ m_cartslot->write_ram(space, offset, data);
}
}
}
@@ -720,25 +720,25 @@ READ8_MEMBER( snes_console_state::snessdd1_lo_r )
else if (address < 0x6000)
{
if (address >= 0x4800 && address < 0x4808)
- return m_cartslot->chip_read(address);
+ return m_cartslot->chip_read(space, address);
return snes_r_io(space, address);
}
else if (address < 0x8000)
- return snes_open_bus_r();
+ return snes_open_bus_r(space, 0);
else
- return m_cartslot->read_l(offset);
+ return m_cartslot->read_l(space, offset);
}
else if (offset >= 0x700000 && address < 0x8000 && m_cartslot->m_cart->get_nvram_size()) // NVRAM access
- return m_cartslot->read_ram(offset);
+ return m_cartslot->read_ram(space, offset);
else // ROM access
- return m_cartslot->read_l(offset);
+ return m_cartslot->read_l(space, offset);
}
READ8_MEMBER( snes_console_state::snessdd1_hi_r )
{
if (offset >= 0x400000)
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
else
return snessdd1_lo_r(space, offset, 0xff);
}
@@ -759,19 +759,19 @@ WRITE8_MEMBER( snes_console_state::snessdd1_hi_w )
{
if (address >= 0x4300 && address < 0x4380)
{
- m_cartslot->chip_write(address, data);
+ m_cartslot->chip_write(space, address, data);
// here we don't return, but we let the w_io happen...
}
if (address >= 0x4800 && address < 0x4808)
{
- m_cartslot->chip_write(address, data);
+ m_cartslot->chip_write(space, address, data);
return;
}
snes_w_io(space, address, data);
}
}
if (offset >= 0x700000 && address < 0x8000 && m_cartslot->m_cart->get_nvram_size())
- return m_cartslot->write_ram(offset, data);
+ return m_cartslot->write_ram(space, offset, data);
}
@@ -790,22 +790,22 @@ READ8_MEMBER( snes_console_state::snesbsx_hi_r )
else if (address < 0x6000)
{
if (address >= 0x2188 && address < 0x21a0)
- return m_cartslot->chip_read(offset);
+ return m_cartslot->chip_read(space, offset);
if (address >= 0x5000)
- return m_cartslot->chip_read(offset);
+ return m_cartslot->chip_read(space, offset);
return snes_r_io(space, address);
}
else if (address < 0x8000)
{
if (offset >= 0x200000)
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
else
- return snes_open_bus_r();
+ return snes_open_bus_r(space, 0);
}
else
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
}
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
}
WRITE8_MEMBER( snes_console_state::snesbsx_hi_w )
@@ -819,12 +819,12 @@ WRITE8_MEMBER( snes_console_state::snesbsx_hi_w )
{
if (address >= 0x2188 && address < 0x21a0)
{
- m_cartslot->chip_write(offset, data);
+ m_cartslot->chip_write(space, offset, data);
return;
}
if (address >= 0x5000)
{
- m_cartslot->chip_write(offset, data);
+ m_cartslot->chip_write(space, offset, data);
return;
}
snes_w_io(space, address, data);
@@ -832,12 +832,12 @@ WRITE8_MEMBER( snes_console_state::snesbsx_hi_w )
else if (address < 0x8000)
{
if (offset >= 0x200000)
- return m_cartslot->write_l(offset, data);
+ return m_cartslot->write_l(space, offset, data);
}
else
- return m_cartslot->write_l(offset, data);
+ return m_cartslot->write_l(space, offset, data);
}
- return m_cartslot->write_l(offset, data);
+ return m_cartslot->write_l(space, offset, data);
}
READ8_MEMBER( snes_console_state::snesbsx_lo_r )
@@ -851,22 +851,22 @@ READ8_MEMBER( snes_console_state::snesbsx_lo_r )
else if (address < 0x6000)
{
if (address >= 0x2188 && address < 0x21a0)
- return m_cartslot->chip_read(offset);
+ return m_cartslot->chip_read(space, offset);
if (address >= 0x5000)
- return m_cartslot->chip_read(offset);
+ return m_cartslot->chip_read(space, offset);
return snes_r_io(space, address);
}
else if (address < 0x8000)
{
if (offset >= 0x200000)
- return m_cartslot->read_l(offset);
+ return m_cartslot->read_l(space, offset);
else
- return snes_open_bus_r();
+ return snes_open_bus_r(space, 0);
}
else
- return m_cartslot->read_l(offset);
+ return m_cartslot->read_l(space, offset);
}
- return m_cartslot->read_l(offset);
+ return m_cartslot->read_l(space, offset);
}
WRITE8_MEMBER( snes_console_state::snesbsx_lo_w )
@@ -890,14 +890,14 @@ READ8_MEMBER( snes_console_state::snessgb_hi_r )
else if (address < 0x6000)
return snes_r_io(space, address);
else if (address < 0x8000)
- return m_cartslot->chip_read(offset);
+ return m_cartslot->chip_read(space, offset);
else
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
}
else if (address >= 0x8000)
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
- return snes_open_bus_r();
+ return snes_open_bus_r(space, 0);
}
READ8_MEMBER( snes_console_state::snessgb_lo_r )
@@ -915,7 +915,7 @@ WRITE8_MEMBER( snes_console_state::snessgb_hi_w )
else if (address < 0x6000)
snes_w_io(space, address, data);
else if (address < 0x8000)
- m_cartslot->chip_write(offset, data);
+ m_cartslot->chip_write(space, offset, data);
}
}
@@ -941,18 +941,18 @@ READ8_MEMBER( snes_console_state::pfest94_hi_r )
else if (address < 0x8000)
{
if (offset < 0x100000) // DSP access
- return m_cartslot->chip_read(offset);
+ return m_cartslot->chip_read(space, offset);
else if (offset == 0x106000) // menu access
- return m_cartslot->chip_read(offset + 0x8000);
+ return m_cartslot->chip_read(space, offset + 0x8000);
else if (offset >= 0x300000 && m_cartslot->m_cart->get_nvram_size()) // NVRAM access
- return m_cartslot->read_ram(offset);
+ return m_cartslot->read_ram(space, offset);
else
- return snes_open_bus_r();
+ return snes_open_bus_r(space, 0);
}
else
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
}
- return m_cartslot->read_h(offset);
+ return m_cartslot->read_h(space, offset);
}
WRITE8_MEMBER( snes_console_state::pfest94_hi_w )
@@ -967,11 +967,11 @@ WRITE8_MEMBER( snes_console_state::pfest94_hi_w )
else if (address < 0x8000)
{
if (offset < 0x100000) // DSP access
- m_cartslot->chip_write(offset, data);
+ m_cartslot->chip_write(space, offset, data);
else if (offset == 0x206000) // menu access
- m_cartslot->chip_write(offset + 0x8000, data);
+ m_cartslot->chip_write(space, offset + 0x8000, data);
else if (offset >= 0x300000 && m_cartslot->m_cart->get_nvram_size()) // NVRAM access
- m_cartslot->write_ram(offset, data);
+ m_cartslot->write_ram(space, offset, data);
}
}
}
@@ -989,16 +989,16 @@ READ8_MEMBER( snes_console_state::pfest94_lo_r )
else if (address < 0x8000)
{
if (offset < 0x100000) // DSP access
- return m_cartslot->chip_read(offset);
+ return m_cartslot->chip_read(space, offset);
else if (offset == 0x106000) // menu access
- return m_cartslot->chip_read(offset + 0x8000);
+ return m_cartslot->chip_read(space, offset + 0x8000);
else if (offset >= 0x300000 && m_cartslot->m_cart->get_nvram_size()) // NVRAM access
- return m_cartslot->read_ram(offset);
+ return m_cartslot->read_ram(space, offset);
else
- return snes_open_bus_r();
+ return snes_open_bus_r(space, 0);
}
else
- return m_cartslot->read_l(offset);
+ return m_cartslot->read_l(space, offset);
}
return 0xff; // or open_bus?
}
@@ -1234,20 +1234,20 @@ void snes_console_state::machine_start()
m_maincpu->set_5a22_map();
break;
case SNES_DSP:
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x208000, 0x20ffff, 0, 0x9f0000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x208000, 0x20ffff, 0, 0x9f0000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x208000, 0x20ffff, 0, 0x9f0000, 0, read8_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x208000, 0x20ffff, 0, 0x9f0000, 0, write8_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
break;
case SNES_DSP_2MB:
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x600000, 0x607fff, 0, 0x8f0000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x600000, 0x607fff, 0, 0x8f0000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x600000, 0x607fff, 0, 0x8f0000, 0, read8_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x600000, 0x607fff, 0, 0x8f0000, 0, write8_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
break;
case SNES_DSP4:
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x308000, 0x30ffff, 0, 0x8f0000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x308000, 0x30ffff, 0, 0x8f0000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x308000, 0x30ffff, 0, 0x8f0000, 0, read8_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x308000, 0x30ffff, 0, 0x8f0000, 0, write8_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
break;
case SNES_OBC1:
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x006000, 0x007fff, 0, 0xbf0000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x006000, 0x007fff, 0, 0xbf0000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x006000, 0x007fff, 0, 0xbf0000, 0, read8_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x006000, 0x007fff, 0, 0xbf0000, 0, write8_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
break;
case SNES_SFX:
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snessfx_lo_r),this), write8_delegate(FUNC(snes_console_state::snessfx_lo_w),this));
@@ -1274,15 +1274,15 @@ void snes_console_state::machine_start()
case SNES_DSP_MODE21:
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snes21_lo_r),this), write8_delegate(FUNC(snes_console_state::snes21_lo_w),this));
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snes21_hi_r),this), write8_delegate(FUNC(snes_console_state::snes21_hi_w),this));
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x006000, 0x007fff, 0, 0x9f0000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x006000, 0x007fff, 0, 0x9f0000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x006000, 0x007fff, 0, 0x9f0000, 0, read8_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x006000, 0x007fff, 0, 0x9f0000, 0, write8_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
m_maincpu->set_5a22_map();
break;
case SNES_SRTC:
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snes21_lo_r),this), write8_delegate(FUNC(snes_console_state::snes21_lo_w),this));
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snes21_hi_r),this), write8_delegate(FUNC(snes_console_state::snes21_hi_w),this));
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x002800, 0x002800, 0, 0xbf0000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x002801, 0x002801, 0, 0xbf0000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x002800, 0x002800, 0, 0xbf0000, 0, read8_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x002801, 0x002801, 0, 0xbf0000, 0, write8_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
m_maincpu->set_5a22_map();
break;
case SNES_SPC7110:
@@ -1298,29 +1298,29 @@ void snes_console_state::machine_start()
break;
// pirate 'mappers'
case SNES_POKEMON:
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x800000, 0x80ffff, 0, 0x780000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x800000, 0x80ffff, 0, 0x780000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x800000, 0x80ffff, 0, 0x780000, 0, read8_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x800000, 0x80ffff, 0, 0x780000, 0, write8_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
break;
case SNES_TEKKEN2:
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x808000, 0x8087ff, 0, 0x3f0000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x808000, 0x8087ff, 0, 0x3f0000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x808000, 0x8087ff, 0, 0x3f0000, 0, read8_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x808000, 0x8087ff, 0, 0x3f0000, 0, write8_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
break;
case SNES_MCPIR1:
case SNES_MCPIR2:
- m_maincpu->space(AS_PROGRAM).install_write_handler(0xffff00, 0xffffff, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0xffff00, 0xffffff, write8_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
break;
case SNES_20COL:
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x008000, 0x008fff, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x008000, 0x008fff, write8_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
break;
case SNES_SOULBLAD:
// reads from xxx0-xxx3in range [80-bf] return a fixed sequence of 4bits; reads in range [c0-ff] return open bus
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x808000, 0x808003, 0, 0x3f7ff0, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
- m_maincpu->space(AS_PROGRAM).install_read_handler(0xc00000, 0xffffff, read8smo_delegate(FUNC(snes_console_state::snes_open_bus_r),this));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x808000, 0x808003, 0, 0x3f7ff0, 0, read8_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0xc00000, 0xffffff, read8_delegate(FUNC(snes_console_state::snes_open_bus_r),this));
break;
case SNES_BUGS:
case SNES_BANANA:
-// m_maincpu->space(AS_PROGRAM).install_read_handler(0x808000, 0x80ffff, 0, 0x780000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
-// m_maincpu->space(AS_PROGRAM).install_write_handler(0x808000, 0x80ffff, 0, 0x780000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
+// m_maincpu->space(AS_PROGRAM).install_read_handler(0x808000, 0x80ffff, 0, 0x780000, 0, read8_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot));
+// m_maincpu->space(AS_PROGRAM).install_write_handler(0x808000, 0x80ffff, 0, 0x780000, 0, write8_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot));
// m_maincpu->set_5a22_map();
break;
}
@@ -1334,60 +1334,60 @@ void snes_console_state::machine_reset()
}
-void snes_console_state::snes(machine_config &config)
-{
+MACHINE_CONFIG_START(snes_console_state::snes)
+
/* basic machine hardware */
- _5A22(config, m_maincpu, MCLK_NTSC); /* 2.68 MHz, also 3.58 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &snes_console_state::snes_map);
+ MCFG_DEVICE_ADD("maincpu", _5A22, MCLK_NTSC) /* 2.68 MHz, also 3.58 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(snes_map)
// runs at 24.576 MHz / 12 = 2.048 MHz
- SPC700(config, m_soundcpu, XTAL(24'576'000) / 12);
- m_soundcpu->set_addrmap(AS_PROGRAM, &snes_console_state::spc_map);
+ MCFG_DEVICE_ADD("soundcpu", SPC700, XTAL(24'576'000) / 12)
+ MCFG_DEVICE_PROGRAM_MAP(spc_map)
- //config.m_minimum_quantum = attotime::from_hz(48000);
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ //MCFG_QUANTUM_TIME(attotime::from_hz(48000))
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(DOTCLK_NTSC * 2, SNES_HTOTAL * 2, 0, SNES_SCR_WIDTH * 2, SNES_VTOTAL_NTSC, 0, SNES_SCR_HEIGHT_NTSC);
- m_screen->set_screen_update(FUNC(snes_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(DOTCLK_NTSC * 2, SNES_HTOTAL * 2, 0, SNES_SCR_WIDTH * 2, SNES_VTOTAL_NTSC, 0, SNES_SCR_HEIGHT_NTSC)
+ MCFG_SCREEN_UPDATE_DRIVER( snes_state, screen_update )
SNES_PPU(config, m_ppu, MCLK_NTSC);
- m_ppu->open_bus_callback().set(FUNC(snes_console_state::snes_open_bus_r));
+ m_ppu->open_bus_callback().set([this] { return snes_open_bus_r(); }); // lambda because overloaded function name
m_ppu->set_screen("screen");
- SNES_CONTROL_PORT(config, m_ctrl1, snes_control_port_devices, "joypad");
- m_ctrl1->set_onscreen_callback(FUNC(snes_console_state::onscreen_cb), this);
- SNES_CONTROL_PORT(config, m_ctrl2, snes_control_port_devices, "joypad");
- m_ctrl2->set_onscreen_callback(FUNC(snes_console_state::onscreen_cb), this);
- m_ctrl2->set_gunlatch_callback(FUNC(snes_console_state::gun_latch_cb), this);
+ MCFG_SNES_CONTROL_PORT_ADD("ctrl1", snes_control_port_devices, "joypad")
+ MCFG_SNESCTRL_ONSCREEN_CB(snes_console_state, onscreen_cb)
+ MCFG_SNES_CONTROL_PORT_ADD("ctrl2", snes_control_port_devices, "joypad")
+ MCFG_SNESCTRL_ONSCREEN_CB(snes_console_state, onscreen_cb)
+ MCFG_SNESCTRL_GUNLATCH_CB(snes_console_state, gun_latch_cb)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- SNES_SOUND(config, m_spc700);
- m_spc700->add_route(0, "lspeaker", 1.00);
- m_spc700->add_route(1, "rspeaker", 1.00);
+ MCFG_DEVICE_ADD("spc700", SNES_SOUND)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
SNS_CART_SLOT(config, m_cartslot, MCLK_NTSC, snes_cart, nullptr);
m_cartslot->irq_callback().set_inputline(m_maincpu, G65816_LINE_IRQ);
- m_cartslot->open_bus_callback().set(FUNC(snes_console_state::snes_open_bus_r));
- SOFTWARE_LIST(config, "cart_list").set_original("snes");
- SOFTWARE_LIST(config, "bsx_list").set_original("snes_bspack");
- SOFTWARE_LIST(config, "st_list").set_original("snes_strom");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list","snes")
+ MCFG_SOFTWARE_LIST_ADD("bsx_list","snes_bspack")
+ MCFG_SOFTWARE_LIST_ADD("st_list","snes_strom")
+MACHINE_CONFIG_END
-void snes_console_state::snespal(machine_config &config)
-{
+MACHINE_CONFIG_START(snes_console_state::snespal)
snes(config);
- m_maincpu->set_clock(MCLK_PAL);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_CLOCK( MCLK_PAL )
- m_screen->set_raw(DOTCLK_PAL, SNES_HTOTAL, 0, SNES_SCR_WIDTH, SNES_VTOTAL_PAL, 0, SNES_SCR_HEIGHT_PAL);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_RAW_PARAMS(DOTCLK_PAL, SNES_HTOTAL, 0, SNES_SCR_WIDTH, SNES_VTOTAL_PAL, 0, SNES_SCR_HEIGHT_PAL)
m_ppu->set_clock(MCLK_PAL);
m_cartslot->set_clock(MCLK_PAL);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/snesb.cpp b/src/mame/drivers/snesb.cpp
index e26162aadc8..376ccaa3095 100644
--- a/src/mame/drivers/snesb.cpp
+++ b/src/mame/drivers/snesb.cpp
@@ -15,7 +15,6 @@
- Gundam Wing: Endless Duel
- Legend
- Rushing Beat
- - Venom & Spider-Man - Separation Anxiety
Not dumped:
- Final Fight 3
@@ -23,15 +22,14 @@
TODO:
- all games : (re)add PORT_DIPLOCATION
- - kinstb : fix gfx glitches, missing texts
+ - kiinstb : fix gfx glitches, missing texts
- ffight2b : remove hack for starting credits (RAM - mainly 0x7eadce where credits are stored - is filled with 0x55,
so you are awarded 55 credits on a hard reset)
- sblast2b : dipswitches
- sblast2b : pressing start during gameplay changes the character used. Intentional?
- - denseib,2: fix gfx glitches, missing texts
+ - denseib : fix gfx glitches, missing texts
- legendsb : dipswitches
- rushbets : everything
- - venom : gfx glitches on second level
***************************************************************************
@@ -169,7 +167,6 @@ public:
void init_iron();
void init_denseib();
- void init_denseib2();
void init_kinstb();
void init_sblast2b();
void init_ffight2b();
@@ -759,23 +756,23 @@ static INPUT_PORTS_START( venom )
PORT_BIT( 0x000f, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
-void snesb_state::kinstb(machine_config &config)
-{
+MACHINE_CONFIG_START(snesb_state::kinstb)
+
/* basic machine hardware */
- _5A22(config, m_maincpu, 3580000*6); /* 2.68Mhz, also 3.58Mhz */
- m_maincpu->set_addrmap(AS_PROGRAM, &snesb_state::snesb_map);
+ MCFG_DEVICE_ADD("maincpu", _5A22, 3580000*6) /* 2.68Mhz, also 3.58Mhz */
+ MCFG_DEVICE_PROGRAM_MAP(snesb_map)
/* audio CPU */
// runs at 24.576 MHz / 12 = 2.048 MHz
- SPC700(config, m_soundcpu, XTAL(24'576'000) / 12);
- m_soundcpu->set_addrmap(AS_PROGRAM, &snesb_state::spc_mem);
+ MCFG_DEVICE_ADD("soundcpu", SPC700, XTAL(24'576'000) / 12)
+ MCFG_DEVICE_PROGRAM_MAP(spc_mem)
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(DOTCLK_NTSC, SNES_HTOTAL, 0, SNES_SCR_WIDTH, SNES_VTOTAL_NTSC, 0, SNES_SCR_HEIGHT_NTSC);
- m_screen->set_screen_update(FUNC(snes_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(DOTCLK_NTSC, SNES_HTOTAL, 0, SNES_SCR_WIDTH, SNES_VTOTAL_NTSC, 0, SNES_SCR_HEIGHT_NTSC)
+ MCFG_SCREEN_UPDATE_DRIVER( snes_state, screen_update )
SNES_PPU(config, m_ppu, MCLK_NTSC);
m_ppu->open_bus_callback().set([this] { return snes_open_bus_r(); }); // lambda because overloaded function name
@@ -784,23 +781,22 @@ void snesb_state::kinstb(machine_config &config)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- SNES_SOUND(config, m_spc700);
- m_spc700->add_route(0, "lspeaker", 1.00);
- m_spc700->add_route(1, "rspeaker", 1.00);
-}
+ MCFG_DEVICE_ADD("spc700", SNES_SOUND)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
+MACHINE_CONFIG_END
void snesb_state::mcu_io_map(address_map &map)
{
}
-void snesb_state::mk3snes(machine_config &config)
-{
+MACHINE_CONFIG_START(snesb_state::mk3snes)
kinstb(config);
- i8751_device &mcu(I8751(config, "mcu", XTAL(8'000'000)));
- mcu.set_addrmap(AS_IO, &snesb_state::mcu_io_map);
-}
+ MCFG_DEVICE_ADD("mcu", I8751, XTAL(8'000'000))
+ MCFG_DEVICE_IO_MAP(mcu_io_map)
+MACHINE_CONFIG_END
MACHINE_RESET_MEMBER( snesb_state, ffight2b )
@@ -812,11 +808,10 @@ MACHINE_RESET_MEMBER( snesb_state, ffight2b )
cpu0space.write_byte(0x7eadce, 0x00);
}
-void snesb_state::ffight2b(machine_config &config)
-{
+MACHINE_CONFIG_START(snesb_state::ffight2b)
kinstb(config);
MCFG_MACHINE_RESET_OVERRIDE( snesb_state, ffight2b )
-}
+MACHINE_CONFIG_END
void snesb_state::init_kinstb()
{
@@ -939,68 +934,6 @@ void snesb_state::init_denseib()
init_snes_hirom();
}
-void snesb_state::init_denseib2()
-{
- uint8_t *src = memregion("user7")->base();
- uint8_t *dst = memregion("user3")->base();
-
- static const uint8_t address_tab_high[0x40] = {
- 0x0b, 0x1d, 0x05, 0x15, 0x09, 0x19, 0x04, 0x13, 0x02, 0x1f, 0x07, 0x17, 0x0d, 0x11, 0x0a, 0x1a,
- 0x14, 0x0e, 0x18, 0x06, 0x1e, 0x01, 0x10, 0x0c, 0x1b, 0x0f, 0x16, 0x00, 0x12, 0x08, 0x1c, 0x03,
- 0x2b, 0x3d, 0x25, 0x35, 0x29, 0x39, 0x24, 0x33, 0x22, 0x3f, 0x27, 0x37, 0x2d, 0x31, 0x2a, 0x3a,
- 0x34, 0x2e, 0x38, 0x26, 0x3e, 0x21, 0x30, 0x2c, 0x3b, 0x2f, 0x36, 0x20, 0x32, 0x28, 0x3c, 0x23
- };
-
- static const uint8_t address_tab_low[0x40] = {
- 0x14, 0x1d, 0x11, 0x3c, 0x0a, 0x29, 0x2d, 0x2e, 0x30, 0x32, 0x16, 0x36, 0x05, 0x25, 0x26, 0x37,
- 0x20, 0x21, 0x27, 0x28, 0x33, 0x34, 0x23, 0x12, 0x1e, 0x1f, 0x3b, 0x24, 0x2c, 0x35, 0x38, 0x39,
- 0x3d, 0x0c, 0x2a, 0x0d, 0x22, 0x18, 0x19, 0x1a, 0x03, 0x08, 0x04, 0x3a, 0x0b, 0x0f, 0x15, 0x17,
- 0x1b, 0x13, 0x00, 0x1c, 0x2b, 0x01, 0x06, 0x2f, 0x07, 0x09, 0x02, 0x31, 0x10, 0x0e, 0x3f, 0x3e
- };
-
- static const uint8_t data_high[16] = {
- 0x03, 0x04, 0x85, 0x01, 0x81, 0x87, 0x07, 0x05, 0x86, 0x00, 0x02, 0x82, 0x84, 0x83, 0x06, 0x80
- };
-
- static const uint8_t data_low[16] = {
- 0x30, 0x40, 0x58, 0x10, 0x18, 0x78, 0x70, 0x50, 0x68, 0x00, 0x20, 0x28, 0x48, 0x38, 0x60, 0x08
- };
-
- for (int i = 0; i < 0x200000; i++)
- {
- int j = (address_tab_high[i >> 15] << 15) + (i & 0x7fc0) + address_tab_low[i & 0x3f];
-
- dst[i] = data_high[src[j]>>4] | data_low[src[j]&0xf];
-
- if (i >= 0x00000 && i < 0x10000) {
- dst[i] = bitswap<8>(dst[i],2,1,3,0,7,4,5,6) ^ 0xff;
- }
-
- if (i >= 0x10000 && i < 0x20000) {
- dst[i] = bitswap<8>(dst[i],1,7,4,5,6,0,3,2);
- }
-
- if (i >= 0x20000 && i < 0x30000) {
- dst[i] = bitswap<8>(dst[i],0,2,6,7,5,3,4,1) ^ 0xff;
- }
-
- if (i >= 0x30000 && i < 0x40000) {
- dst[i] = bitswap<8>(dst[i],6,5,0,3,1,7,2,4) ^ 0xff;
- }
- }
-
- /* boot vector */
- dst[0xfffc] = 0x40;
- dst[0xfffd] = 0xf7;
-
- /* extra inputs */
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(FUNC(snesb_state::snesb_dsw1_r),this));
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(FUNC(snesb_state::snesb_dsw2_r),this));
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(FUNC(snesb_state::snesb_coin_r),this));
-
- init_snes_hirom();
-}
-
void snesb_state::init_legendsb()
{
u8 *rom = memregion("user3")->base();
@@ -1419,21 +1352,6 @@ ROM_START( denseib )
ROM_REGION(0x800, "user6", ROMREGION_ERASEFF)
ROM_END
-ROM_START( denseib2 )
- ROM_REGION( 0x200000, "user3", ROMREGION_ERASEFF )
-
- ROM_REGION(0x100, "sound_ipl", 0)
- ROM_LOAD("spc700.rom", 0, 0x40, CRC(44bb3a40) SHA1(97e352553e94242ae823547cd853eecda55c20f0) )
-
- ROM_REGION(0x800, "user6", ROMREGION_ERASEFF)
-
- ROM_REGION( 0x200000, "user7", 0 )
- ROM_LOAD( "u31.bin", 0x000000, 0x080000, CRC(834723a8) SHA1(3f56bba5017f77147e7d52618678f1e2eff4991b) )
- ROM_LOAD( "u32.bin", 0x080000, 0x080000, CRC(9748e86b) SHA1(68a62e0961d735602ae6ebd1aca5990c588ccbb1) )
- ROM_LOAD( "u33.bin", 0x100000, 0x080000, CRC(abcc6b61) SHA1(ef90f23b674f6dd36b3d60c9c395a1d4bc853798) )
- ROM_LOAD( "u34.bin", 0x180000, 0x080000, CRC(0a16ac96) SHA1(ddc11009d4b35a151aa7e357346f3ac109e112ef) )
-ROM_END
-
ROM_START( sblast2b )
ROM_REGION( 0x180000, "user3", ROMREGION_ERASEFF )
@@ -1537,14 +1455,13 @@ ROM_START( venom )
ROM_LOAD( "u34.bin", 0x280000, 0x0080000, CRC(7a09c9e0) SHA1(794965d5501ec0e21f1f3a8cb8fd66f913d42760) )
ROM_END
-GAME( 199?, kinstb, 0, kinstb, kinstb, snesb_state, init_kinstb, ROT0, "bootleg", "Killer Instinct (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 199?, mk3snes, 0, mk3snes, kinstb, snesb_state, init_mk3snes, ROT0, "bootleg", "Mortal Kombat 3 (SNES bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, ffight2b, 0, ffight2b, ffight2b, snesb_state, init_ffight2b, ROT0, "bootleg", "Final Fight 2 (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, iron, 0, kinstb, iron, snesb_state, init_iron, ROT0, "bootleg", "Iron (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, denseib, 0, kinstb, denseib, snesb_state, init_denseib, ROT0, "bootleg", "Ghost Chaser Densei (SNES bootleg, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, denseib2, denseib, kinstb, denseib, snesb_state, init_denseib2, ROT0, "bootleg", "Ghost Chaser Densei (SNES bootleg, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, sblast2b, 0, kinstb, sblast2b, snesb_state, init_sblast2b, ROT0, "bootleg", "Sonic Blast Man 2 Special Turbo (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS)
-GAME( 1996, endless, 0, kinstb, endless, snesb_state, init_endless, ROT0, "bootleg", "Gundam Wing: Endless Duel (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, legendsb, 0, kinstb, kinstb, snesb_state, init_legendsb, ROT0, "bootleg", "Legend (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, rushbets, 0, kinstb, kinstb, snesb_state, init_rushbets, ROT0, "bootleg", "Rushing Beat Shura (SNES bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, venom, 0, kinstb, venom, snesb_state, init_venom, ROT0, "bootleg", "Venom & Spider-Man - Separation Anxiety (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 199?, kinstb, 0, kinstb, kinstb, snesb_state, init_kinstb, ROT0, "bootleg", "Killer Instinct (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 199?, mk3snes, 0, mk3snes, kinstb, snesb_state, init_mk3snes, ROT0, "bootleg", "Mortal Kombat 3 (SNES bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, ffight2b, 0, ffight2b, ffight2b, snesb_state, init_ffight2b, ROT0, "bootleg", "Final Fight 2 (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, iron, 0, kinstb, iron, snesb_state, init_iron, ROT0, "bootleg", "Iron (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, denseib, 0, kinstb, denseib, snesb_state, init_denseib, ROT0, "bootleg", "Ghost Chaser Densei (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, sblast2b, 0, kinstb, sblast2b, snesb_state, init_sblast2b, ROT0, "bootleg", "Sonic Blast Man 2 Special Turbo (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS)
+GAME( 1996, endless, 0, kinstb, endless, snesb_state, init_endless, ROT0, "bootleg", "Gundam Wing: Endless Duel (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, legendsb, 0, kinstb, kinstb, snesb_state, init_legendsb, ROT0, "bootleg", "Legend (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, rushbets, 0, kinstb, kinstb, snesb_state, init_rushbets, ROT0, "bootleg", "Rushing Beat Shura (SNES bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, venom, 0, kinstb, venom, snesb_state, init_venom, ROT0, "bootleg", "Venom & Spider-Man - Separation Anxiety (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/snk6502.cpp b/src/mame/drivers/snk6502.cpp
index 15c8cc8a462..cb6d6b296d2 100644
--- a/src/mame/drivers/snk6502.cpp
+++ b/src/mame/drivers/snk6502.cpp
@@ -802,24 +802,24 @@ MACHINE_RESET_MEMBER(snk6502_state,sasuke)
*
*************************************/
-void snk6502_state::sasuke(machine_config &config)
-{
+MACHINE_CONFIG_START(snk6502_state::sasuke)
+
// basic machine hardware
- M6502(config, m_maincpu, MASTER_CLOCK / 16); // 700 kHz
- m_maincpu->set_addrmap(AS_PROGRAM, &snk6502_state::sasuke_map);
- m_maincpu->set_vblank_int("screen", FUNC(snk6502_state::satansat_interrupt));
+ MCFG_DEVICE_ADD("maincpu", M6502, MASTER_CLOCK / 16) // 700 kHz
+ MCFG_DEVICE_PROGRAM_MAP(sasuke_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk6502_state, satansat_interrupt)
MCFG_MACHINE_RESET_OVERRIDE(snk6502_state,sasuke)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz((MASTER_CLOCK / 16) / (45 * 32 * 8));
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
- screen.set_screen_update(FUNC(snk6502_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE((MASTER_CLOCK / 16) / (45 * 32 * 8))
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(snk6502_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sasuke);
PALETTE(config, m_palette, FUNC(snk6502_state::satansat_palette), 32);
@@ -830,41 +830,42 @@ void snk6502_state::sasuke(machine_config &config)
crtc.set_show_border_area(false);
crtc.set_char_width(8);
- TIMER(config, "sasuke_timer").configure_periodic(FUNC(snk6502_state::sasuke_update_counter), attotime::from_hz(MASTER_CLOCK / 8));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("sasuke_timer", snk6502_state, sasuke_update_counter, attotime::from_hz(MASTER_CLOCK / 8))
// sound hardware
- SASUKE_SOUND(config, "snk6502", 0);
-}
+ MCFG_DEVICE_ADD("snk6502", SASUKE_SOUND, 0)
+MACHINE_CONFIG_END
-void snk6502_state::satansat(machine_config &config)
-{
+MACHINE_CONFIG_START(snk6502_state::satansat)
sasuke(config);
// basic machine hardware
- m_maincpu->set_addrmap(AS_PROGRAM, &snk6502_state::satansat_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(satansat_map)
// video hardware
- m_gfxdecode->set_info(gfx_satansat);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_satansat)
// sound hardware
- SATANSAT_SOUND(config.replace(), "snk6502", 0);
-}
+ MCFG_DEVICE_REPLACE("snk6502", SATANSAT_SOUND, 0)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(snk6502_state::vanguard)
-void snk6502_state::vanguard(machine_config &config)
-{
// basic machine hardware
- M6502(config, m_maincpu, MASTER_CLOCK / 16); // adjusted using common divisor
- m_maincpu->set_addrmap(AS_PROGRAM, &snk6502_state::vanguard_map);
- m_maincpu->set_vblank_int("screen", FUNC(snk6502_state::snk6502_interrupt));
+ MCFG_DEVICE_ADD("maincpu", M6502, MASTER_CLOCK / 16) // adjusted using common divisor
+
+ MCFG_DEVICE_PROGRAM_MAP(vanguard_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk6502_state, snk6502_interrupt)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz((MASTER_CLOCK / 16) / (45 * 32 * 8));
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
- screen.set_screen_update(FUNC(snk6502_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE((MASTER_CLOCK / 16) / (45 * 32 * 8))
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(snk6502_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_vanguard);
PALETTE(config, m_palette, FUNC(snk6502_state::snk6502_palette), 64);
@@ -876,40 +877,39 @@ void snk6502_state::vanguard(machine_config &config)
crtc.set_char_width(8);
// sound hardware
- VANGUARD_SOUND(config, "snk6502", 0);
-}
+ MCFG_DEVICE_ADD("snk6502", VANGUARD_SOUND, 0)
+MACHINE_CONFIG_END
-void fantasy_state::fantasy(machine_config &config)
-{
+MACHINE_CONFIG_START(fantasy_state::fantasy)
vanguard(config);
// basic machine hardware
- m_maincpu->set_addrmap(AS_PROGRAM, &fantasy_state::fantasy_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(fantasy_map)
// sound hardware
- FANTASY_SOUND(config.replace(), "snk6502", 0);
-}
+ MCFG_DEVICE_REPLACE("snk6502", FANTASY_SOUND, 0)
+MACHINE_CONFIG_END
-void fantasy_state::nibbler(machine_config &config)
-{
+MACHINE_CONFIG_START(fantasy_state::nibbler)
fantasy(config);
// sound hardware
- NIBBLER_SOUND(config.replace(), "snk6502", 0);
-}
+ MCFG_DEVICE_REPLACE("snk6502", NIBBLER_SOUND, 0)
+MACHINE_CONFIG_END
-void fantasy_state::pballoon(machine_config &config)
-{
+MACHINE_CONFIG_START(fantasy_state::pballoon)
nibbler(config);
// basic machine hardware
- m_maincpu->set_addrmap(AS_PROGRAM, &fantasy_state::pballoon_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(pballoon_map)
MCFG_VIDEO_START_OVERRIDE(snk6502_state, pballoon)
// sound hardware
- PBALLOON_SOUND(config.replace(), "snk6502", 0);
-}
+ MCFG_DEVICE_REPLACE("snk6502", PBALLOON_SOUND, 0)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/snookr10.cpp b/src/mame/drivers/snookr10.cpp
index b97bab7da6a..dcd1516d651 100644
--- a/src/mame/drivers/snookr10.cpp
+++ b/src/mame/drivers/snookr10.cpp
@@ -1040,60 +1040,67 @@ GFXDECODE_END
* Machine Drivers *
**************************/
-void snookr10_state::snookr10(machine_config &config)
-{
+MACHINE_CONFIG_START(snookr10_state::snookr10)
+
/* basic machine hardware */
- M65SC02(config, m_maincpu, MASTER_CLOCK/8); /* 2 MHz (1.999 MHz measured) */
- m_maincpu->set_addrmap(AS_PROGRAM, &snookr10_state::snookr10_map);
+ MCFG_DEVICE_ADD("maincpu", M65SC02, MASTER_CLOCK/8) /* 2 MHz (1.999 MHz measured) */
+ MCFG_DEVICE_PROGRAM_MAP(snookr10_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(96*4, 30*8);
- screen.set_visarea(0*4, 96*4-1, 0*8, 30*8-1);
- screen.set_screen_update(FUNC(snookr10_state::screen_update_snookr10));
- screen.set_palette("palette");
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(96*4, 30*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*4, 96*4-1, 0*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(snookr10_state, screen_update_snookr10)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
- GFXDECODE(config, m_gfxdecode, "palette", gfx_snookr10);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_snookr10)
PALETTE(config, "palette", FUNC(snookr10_state::snookr10_palette), 256);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", MASTER_CLOCK/16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.8); /* 1 MHz (995.5 kHz measured); pin7 checked HIGH on PCB */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, MASTER_CLOCK/16, okim6295_device::PIN7_HIGH) /* 1 MHz (995.5 kHz measured); pin7 checked HIGH on PCB */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.8)
-void snookr10_state::apple10(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(snookr10_state::apple10)
snookr10(config);
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+
/* video hardware */
subdevice<palette_device>("palette")->set_init(FUNC(snookr10_state::apple10_palette));
MCFG_VIDEO_START_OVERRIDE(snookr10_state, apple10)
-}
-void snookr10_state::tenballs(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(snookr10_state::tenballs)
snookr10(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &snookr10_state::tenballs_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tenballs_map)
-void snookr10_state::crystalc(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(snookr10_state::crystalc)
snookr10(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &snookr10_state::crystalc_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(crystalc_map)
subdevice<palette_device>("palette")->set_init(FUNC(snookr10_state::crystalc_palette));
MCFG_VIDEO_START_OVERRIDE(snookr10_state, crystalc)
-}
+
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/snowbros.cpp b/src/mame/drivers/snowbros.cpp
index 3e39a07bbdb..fb950b66082 100644
--- a/src/mame/drivers/snowbros.cpp
+++ b/src/mame/drivers/snowbros.cpp
@@ -150,7 +150,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(snowbros_state::snowbros_irq)
TIMER_DEVICE_CALLBACK_MEMBER(snowbros_state::snowbros3_irq)
{
- int status = m_oki->read();
+ int status = m_oki->read_status();
int scanline = param;
if(scanline == 240)
@@ -166,8 +166,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(snowbros_state::snowbros3_irq)
{
if ((status&0x08)==0x00)
{
- m_oki->write(0x80|m_sb3_music);
- m_oki->write(0x00|0x82);
+ m_oki->write_command(0x80|m_sb3_music);
+ m_oki->write_command(0x00|0x82);
}
}
@@ -175,7 +175,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(snowbros_state::snowbros3_irq)
{
if ((status&0x08)==0x08)
{
- m_oki->write(0x40); /* Stop playing music */
+ m_oki->write_command(0x40); /* Stop playing music */
}
}
@@ -424,22 +424,22 @@ void snowbros_state::sb3_play_music(int data)
void snowbros_state::sb3_play_sound (int data)
{
- int status = m_oki->read();
+ int status = m_oki->read_status();
if ((status&0x01)==0x00)
{
- m_oki->write(0x80|data);
- m_oki->write(0x00|0x12);
+ m_oki->write_command(0x80|data);
+ m_oki->write_command(0x00|0x12);
}
else if ((status&0x02)==0x00)
{
- m_oki->write(0x80|data);
- m_oki->write(0x00|0x22);
+ m_oki->write_command(0x80|data);
+ m_oki->write_command(0x00|0x22);
}
else if ((status&0x04)==0x00)
{
- m_oki->write(0x80|data);
- m_oki->write(0x00|0x42);
+ m_oki->write_command(0x80|data);
+ m_oki->write_command(0x00|0x42);
}
@@ -450,7 +450,7 @@ WRITE16_MEMBER(snowbros_state::sb3_sound_w)
if (data == 0x00fe)
{
m_sb3_music_is_playing = 0;
- m_oki->write(0x78); /* Stop sounds */
+ m_oki->write_command(0x78); /* Stop sounds */
}
else /* the alternating 0x00-0x2f or 0x30-0x5f might be something to do with the channels */
{
@@ -2034,7 +2034,7 @@ void snowbros_state::yutnori(machine_config &config)
okim6295_device &oki2(OKIM6295(config, "oki2", XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
oki2.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/socrates.cpp b/src/mame/drivers/socrates.cpp
index d13ec3cbda1..dcbc94adf65 100644
--- a/src/mame/drivers/socrates.cpp
+++ b/src/mame/drivers/socrates.cpp
@@ -1465,64 +1465,66 @@ TIMER_CALLBACK_MEMBER(socrates_state::kbmcu_sim_cb)
}
}
-void socrates_state::socrates(machine_config &config)
-{
+MACHINE_CONFIG_START(socrates_state::socrates)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(21'477'272)/6); /* Toshiba TMPZ84C00AP @ 3.579545 MHz, verified, xtal is divided by 6 */
- m_maincpu->set_addrmap(AS_PROGRAM, &socrates_state::z80_mem);
- m_maincpu->set_addrmap(AS_IO, &socrates_state::z80_io);
- m_maincpu->set_vblank_int("screen", FUNC(socrates_state::assert_irq));
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(21'477'272)/6) /* Toshiba TMPZ84C00AP @ 3.579545 MHz, verified, xtal is divided by 6 */
+ MCFG_DEVICE_PROGRAM_MAP(z80_mem)
+ MCFG_DEVICE_IO_MAP(z80_io)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", socrates_state, assert_irq)
ADDRESS_MAP_BANK(config, "rombank1").set_map(&socrates_state::socrates_rombank_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
ADDRESS_MAP_BANK(config, "rambank1").set_map(&socrates_state::socrates_rambank_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
ADDRESS_MAP_BANK(config, "rambank2").set_map(&socrates_state::socrates_rambank_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(264, 228); // technically the screen size is 256x228 but super painter abuses what I suspect is a hardware bug to display repeated pixels of the very last pixel beyond this horizontal space, well into hblank
- m_screen->set_visarea(0, 263, 0, 219); // the last few rows are usually cut off by the screen bottom but are indeed displayed if you mess with v-hold
- m_screen->set_screen_update(FUNC(socrates_state::screen_update_socrates));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(264, 228) // technically the screen size is 256x228 but super painter abuses what I suspect is a hardware bug to display repeated pixels of the very last pixel beyond this horizontal space, well into hblank
+ MCFG_SCREEN_VISIBLE_AREA(0, 263, 0, 219) // the last few rows are usually cut off by the screen bottom but are indeed displayed if you mess with v-hold
+ MCFG_SCREEN_UPDATE_DRIVER(socrates_state, screen_update_socrates)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(socrates_state::socrates_palette), 256);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SOCRATES_SOUND(config, m_sound, XTAL(21'477'272)/(512+256)).add_route(ALL_OUTPUTS, "mono", 0.25); // this is correct, as strange as it sounds.
+ MCFG_DEVICE_ADD("soc_snd", SOCRATES_SOUND, XTAL(21'477'272)/(512+256)) // this is correct, as strange as it sounds.
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "socrates_cart");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "socrates_cart")
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("socrates");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "socrates")
+MACHINE_CONFIG_END
-void socrates_state::socrates_pal(machine_config &config)
-{
+MACHINE_CONFIG_START(socrates_state::socrates_pal)
socrates(config);
- m_maincpu->set_clock(XTAL(26'601'712)/8);
+ MCFG_DEVICE_REPLACE("maincpu", Z80, XTAL(26'601'712)/8)
+ MCFG_DEVICE_PROGRAM_MAP(z80_mem)
+ MCFG_DEVICE_IO_MAP(z80_io)
+ MCFG_QUANTUM_TIME(attotime::from_hz(50))
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", socrates_state, assert_irq)
- config.m_minimum_quantum = attotime::from_hz(50);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
+ MCFG_SCREEN_SIZE(264, 238) // technically the screen size is 256x228 but super painter abuses what I suspect is a hardware bug to display repeated pixels of the very last pixel beyond this horizontal space, well into hblank
+ MCFG_SCREEN_VISIBLE_AREA(0, 263, 0, 229) // the last few rows are usually cut off by the screen bottom but are indeed displayed if you mess with v-hold
+ MCFG_SCREEN_UPDATE_DRIVER(socrates_state, screen_update_socrates)
- m_screen->set_refresh_hz(50);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
- m_screen->set_size(264, 238); // technically the screen size is 256x228 but super painter abuses what I suspect is a hardware bug to display repeated pixels of the very last pixel beyond this horizontal space, well into hblank
- m_screen->set_visarea(0, 263, 0, 229); // the last few rows are usually cut off by the screen bottom but are indeed displayed if you mess with v-hold
- m_screen->set_screen_update(FUNC(socrates_state::screen_update_socrates));
+ MCFG_DEVICE_REPLACE("soc_snd", SOCRATES_SOUND, XTAL(26'601'712)/(512+256)) // this is correct, as strange as it sounds.
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
- m_sound->set_clock(XTAL(26'601'712)/(512+256)); // this is correct, as strange as it sounds.
-}
-
-void iqunlimz_state::iqunlimz(machine_config &config)
-{
+MACHINE_CONFIG_START(iqunlimz_state::iqunlimz)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000)); /* not accurate */
- m_maincpu->set_addrmap(AS_PROGRAM, &iqunlimz_state::iqunlimz_mem);
- m_maincpu->set_addrmap(AS_IO, &iqunlimz_state::iqunlimz_io);
- m_maincpu->set_vblank_int("screen", FUNC(iqunlimz_state::assert_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(4'000'000)) /* not accurate */
+ MCFG_DEVICE_PROGRAM_MAP(iqunlimz_mem)
+ MCFG_DEVICE_IO_MAP(iqunlimz_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", iqunlimz_state, assert_irq)
ADDRESS_MAP_BANK(config, "rombank1").set_map(&iqunlimz_state::iqunlimz_rombank_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
ADDRESS_MAP_BANK(config, "rombank2").set_map(&iqunlimz_state::iqunlimz_rombank_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
@@ -1530,22 +1532,23 @@ void iqunlimz_state::iqunlimz(machine_config &config)
ADDRESS_MAP_BANK(config, "rambank2").set_map(&iqunlimz_state::iqunlimz_rambank_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_screen_update(FUNC(iqunlimz_state::screen_update));
- m_screen->set_size(256, 224);
- m_screen->set_visarea(0, 256-1, 0, 224-1);
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(iqunlimz_state, screen_update)
+ MCFG_SCREEN_SIZE(256, 224)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 224-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(iqunlimz_state::socrates_palette), 256);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SOCRATES_SOUND(config, m_sound, XTAL(21'477'272)/(512+256)).add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("soc_snd", SOCRATES_SOUND, XTAL(21'477'272)/(512+256))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, nullptr);
-}
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, nullptr)
+MACHINE_CONFIG_END
/******************************************************************************
ROM Definitions
diff --git a/src/mame/drivers/softbox.cpp b/src/mame/drivers/softbox.cpp
index 634bb426a93..699130f946d 100644
--- a/src/mame/drivers/softbox.cpp
+++ b/src/mame/drivers/softbox.cpp
@@ -355,12 +355,15 @@ void softbox_state::ieee488_ifc(int state)
// MACHINE CONFIGURATION
//**************************************************************************
-void softbox_state::softbox(machine_config &config)
-{
+//-------------------------------------------------
+// MACHINE_CONFIG( softbox )
+//-------------------------------------------------
+
+MACHINE_CONFIG_START(softbox_state::softbox)
// basic machine hardware
- Z80(config, m_maincpu, XTAL(8'000'000)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &softbox_state::softbox_mem);
- m_maincpu->set_addrmap(AS_IO, &softbox_state::softbox_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(8'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(softbox_mem)
+ MCFG_DEVICE_IO_MAP(softbox_io)
// devices
i8251_device &i8251(I8251(config, I8251_TAG, 0));
@@ -389,19 +392,23 @@ void softbox_state::softbox(machine_config &config)
dbrg.fr_handler().set(I8251_TAG, FUNC(i8251_device::write_rxc));
dbrg.ft_handler().set(I8251_TAG, FUNC(i8251_device::write_txc));
- ieee488_device::add_cbm_devices(config, "c8050");
+ MCFG_CBM_IEEE488_ADD("c8050")
- CORVUS_HDC(config, m_hdc, 0);
- HARDDISK(config, "harddisk1", "corvus_hdd");
- HARDDISK(config, "harddisk2", "corvus_hdd");
- HARDDISK(config, "harddisk3", "corvus_hdd");
- HARDDISK(config, "harddisk4", "corvus_hdd");
+ MCFG_DEVICE_ADD(CORVUS_HDC_TAG, CORVUS_HDC, 0)
+ MCFG_HARDDISK_ADD("harddisk1")
+ MCFG_HARDDISK_INTERFACE("corvus_hdd")
+ MCFG_HARDDISK_ADD("harddisk2")
+ MCFG_HARDDISK_INTERFACE("corvus_hdd")
+ MCFG_HARDDISK_ADD("harddisk3")
+ MCFG_HARDDISK_INTERFACE("corvus_hdd")
+ MCFG_HARDDISK_ADD("harddisk4")
+ MCFG_HARDDISK_INTERFACE("corvus_hdd")
- imi7000_bus_device::add_config(config, "imi5000h", nullptr, nullptr, nullptr);
+ MCFG_IMI7000_BUS_ADD("imi5000h", nullptr, nullptr, nullptr)
// software lists
- SOFTWARE_LIST(config, "flop_list").set_original("softbox");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "softbox")
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/solbourne.cpp b/src/mame/drivers/solbourne.cpp
index bab72f99079..fd0ee9cc345 100644
--- a/src/mame/drivers/solbourne.cpp
+++ b/src/mame/drivers/solbourne.cpp
@@ -26,9 +26,8 @@ private:
static INPUT_PORTS_START( solbourne )
INPUT_PORTS_END
-void solbourne_state::solbourne(machine_config &config)
-{
-}
+MACHINE_CONFIG_START(solbourne_state::solbourne)
+MACHINE_CONFIG_END
ROM_START( sols5e )
ROM_REGION( 0x20000, "maincpu", 0 )
diff --git a/src/mame/drivers/solomon.cpp b/src/mame/drivers/solomon.cpp
index 39cdefa9b9d..1a2b20f3eec 100644
--- a/src/mame/drivers/solomon.cpp
+++ b/src/mame/drivers/solomon.cpp
@@ -209,27 +209,27 @@ INTERRUPT_GEN_MEMBER(solomon_state::vblank_irq)
-void solomon_state::solomon(machine_config &config)
-{
+MACHINE_CONFIG_START(solomon_state::solomon)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* 4.0 MHz (?????) */
- m_maincpu->set_addrmap(AS_PROGRAM, &solomon_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(solomon_state::vblank_irq));
-
- Z80(config, m_audiocpu, 3072000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &solomon_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &solomon_state::sound_portmap);
- m_audiocpu->set_periodic_int(FUNC(solomon_state::irq0_line_hold), attotime::from_hz(2*60)); /* ??? */
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4.0 MHz (?????) */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", solomon_state, vblank_irq)
+
+ MCFG_DEVICE_ADD("audiocpu", Z80, 3072000)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(solomon_state, irq0_line_hold, 2*60) /* ??? */
/* NMIs are caused by the main CPU */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(solomon_state::screen_update_solomon));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(solomon_state, screen_update_solomon)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_solomon);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 256);
@@ -242,7 +242,7 @@ void solomon_state::solomon(machine_config &config)
AY8910(config, "ay1", 1500000).add_route(ALL_OUTPUTS, "mono", 0.12);
AY8910(config, "ay2", 1500000).add_route(ALL_OUTPUTS, "mono", 0.12);
AY8910(config, "ay3", 1500000).add_route(ALL_OUTPUTS, "mono", 0.12);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/sonson.cpp b/src/mame/drivers/sonson.cpp
index b12d9e7624e..b7127053fdc 100644
--- a/src/mame/drivers/sonson.cpp
+++ b/src/mame/drivers/sonson.cpp
@@ -225,16 +225,16 @@ GFXDECODE_END
-void sonson_state::sonson(machine_config &config)
-{
+MACHINE_CONFIG_START(sonson_state::sonson)
+
/* basic machine hardware */
- MC6809(config, m_maincpu, XTAL(12'000'000)/2); // HD68B09P (/4 internally)
- m_maincpu->set_addrmap(AS_PROGRAM, &sonson_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(sonson_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(12'000'000)/2) // HD68B09P (/4 internally)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sonson_state, irq0_line_hold)
- MC6809(config, m_audiocpu, XTAL(12'000'000)/2); // HD68B09P (/4 internally)
- m_audiocpu->set_addrmap(AS_PROGRAM, &sonson_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(sonson_state::irq0_line_hold), attotime::from_hz(4*60)); /* FIRQs are triggered by the main CPU */
+ MCFG_DEVICE_ADD("audiocpu", MC6809, XTAL(12'000'000)/2) // HD68B09P (/4 internally)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(sonson_state, irq0_line_hold, 4*60) /* FIRQs are triggered by the main CPU */
ls259_device &mainlatch(LS259(config, "mainlatch")); // A9
mainlatch.q_out_cb<0>().set(FUNC(sonson_state::flipscreen_w));
@@ -243,14 +243,14 @@ void sonson_state::sonson(machine_config &config)
mainlatch.q_out_cb<7>().set(FUNC(sonson_state::coin1_counter_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57.37);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(1*8, 31*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(sonson_state::screen_update_sonson));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57.37)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sonson_state, screen_update_sonson)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_sonson);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_sonson)
PALETTE(config, m_palette, FUNC(sonson_state::sonson_palette), 64*4 + 32*8, 32);
@@ -262,7 +262,7 @@ void sonson_state::sonson(machine_config &config)
AY8910(config, "ay1", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.30); /* 1.5 MHz */
AY8910(config, "ay2", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.30); /* 1.5 MHz */
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/sorcerer.cpp b/src/mame/drivers/sorcerer.cpp
index a18bd44d42f..f76ddad5d35 100644
--- a/src/mame/drivers/sorcerer.cpp
+++ b/src/mame/drivers/sorcerer.cpp
@@ -408,64 +408,64 @@ DEVICE_INPUT_DEFAULTS_END
MACHINE_CONFIG_START(sorcerer_state::sorcerer)
/* basic machine hardware */
- Z80(config, m_maincpu, ES_CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &sorcerer_state::sorcerer_mem);
- m_maincpu->set_addrmap(AS_IO, &sorcerer_state::sorcerer_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, ES_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(sorcerer_mem)
+ MCFG_DEVICE_IO_MAP(sorcerer_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(200));
- screen.set_size(64*8, 30*8);
- screen.set_visarea(0, 64*8-1, 0, 30*8-1);
- screen.set_screen_update(FUNC(sorcerer_state::screen_update));
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_sorcerer);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(200))
+ MCFG_SCREEN_SIZE(64*8, 30*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sorcerer_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sorcerer)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette1).add_route(ALL_OUTPUTS, "mono", 0.05); // cass1 speaker
- WAVE(config, "wave2", m_cassette2).add_route(ALL_OUTPUTS, "mono", 0.05); // cass2 speaker
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05); // cass1 speaker
+ WAVE(config, "wave2", "cassette2").add_route(ALL_OUTPUTS, "mono", 0.05); // cass2 speaker
AY31015(config, m_uart);
+ m_uart->set_tx_clock(ES_UART_CLOCK);
+ m_uart->set_rx_clock(ES_UART_CLOCK);
m_uart->set_auto_rdav(true);
- CLOCK(config, m_uart_clock, ES_UART_CLOCK);
- m_uart_clock->signal_handler().set(m_uart, FUNC(ay31015_device::write_tcp));
- m_uart_clock->signal_handler().append(m_uart, FUNC(ay31015_device::write_rcp));
-
RS232_PORT(config, "rs232", default_rs232_devices, "null_modem").set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
/* printer */
+ MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "covox")
+
/* The use of the parallel port as a general purpose port is not emulated.
Currently the only use is to read the printer status in the Centronics CENDRV bios routine. */
- CENTRONICS(config, m_centronics, centronics_devices, "covox");
- m_centronics->busy_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit7));
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit7))
- INPUT_BUFFER(config, "cent_status_in");
+ MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0)
/* quickload */
- MCFG_SNAPSHOT_ADD("snapshot", sorcerer_state, sorcerer, "snp", attotime::from_seconds(2))
- MCFG_QUICKLOAD_ADD("quickload", sorcerer_state, sorcerer, "bin", attotime::from_seconds(3))
+ MCFG_SNAPSHOT_ADD("snapshot", sorcerer_state, sorcerer, "snp", 2)
+ MCFG_QUICKLOAD_ADD("quickload", sorcerer_state, sorcerer, "bin", 3)
- CASSETTE(config, m_cassette1);
- m_cassette1->set_formats(sorcerer_cassette_formats);
- m_cassette1->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette1->set_interface("sorcerer_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(sorcerer_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("sorcerer_cass")
- CASSETTE(config, m_cassette2);
- m_cassette2->set_formats(sorcerer_cassette_formats);
- m_cassette2->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette2->set_interface("sorcerer_cass");
+ MCFG_CASSETTE_ADD( "cassette2" )
+ MCFG_CASSETTE_FORMATS(sorcerer_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("sorcerer_cass")
/* cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "sorcerer_cart", "bin,rom");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "sorcerer_cart")
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("sorcerer_cart");
- SOFTWARE_LIST(config, "cass_list").set_original("sorcerer_cass");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","sorcerer_cart")
+ MCFG_SOFTWARE_LIST_ADD("cass_list","sorcerer_cass")
// internal ram
RAM(config, RAM_TAG).set_default_size("48K").set_extra_options("8K,16K,32K");
@@ -476,27 +476,29 @@ static void floppies(device_slot_interface &device)
device.option_add("525qd", FLOPPY_525_QD);
}
-void sorcerer_state::sorcererd(machine_config &config)
-{
+MACHINE_CONFIG_START(sorcerer_state::sorcererd)
sorcerer(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &sorcerer_state::sorcererd_mem);
- m_maincpu->set_addrmap(AS_IO, &sorcerer_state::sorcererd_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sorcererd_mem)
+ MCFG_DEVICE_IO_MAP(sorcererd_io)
MCFG_MACHINE_START_OVERRIDE(sorcerer_state, sorcererd )
MICROPOLIS(config, m_fdc, 0);
m_fdc->set_default_drive_tags();
- legacy_floppy_image_device::add_4drives(config, &sorcerer_floppy_interface);
+ MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(sorcerer_floppy_interface)
FD1793(config, m_fdc2, 8_MHz_XTAL / 8); // confirmed clock
m_fdc2->set_force_ready(true); // should be able to get rid of this when fdc issue is fixed
m_fdc2->intrq_wr_callback().set(FUNC(sorcerer_state::intrq_w));
m_fdc2->drq_wr_callback().set(FUNC(sorcerer_state::drq_w));
- FLOPPY_CONNECTOR(config, "fdc2:0", floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc2:1", floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc2:0", floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc2:1", floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
- SOFTWARE_LIST(config, "flop_list").set_original("sorcerer_flop");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list","sorcerer_flop")
+MACHINE_CONFIG_END
void sorcerer_state::init_sorcerer()
diff --git a/src/mame/drivers/sothello.cpp b/src/mame/drivers/sothello.cpp
index a02039dd890..30956b73eb0 100644
--- a/src/mame/drivers/sothello.cpp
+++ b/src/mame/drivers/sothello.cpp
@@ -354,21 +354,21 @@ void sothello_state::machine_reset()
m_msm_data = 0;
}
-void sothello_state::sothello(machine_config &config)
-{
+MACHINE_CONFIG_START(sothello_state::sothello)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(21'477'272) / 6);
- m_maincpu->set_addrmap(AS_PROGRAM, &sothello_state::maincpu_mem_map);
- m_maincpu->set_addrmap(AS_IO, &sothello_state::maincpu_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(21'477'272) / 6)
+ MCFG_DEVICE_PROGRAM_MAP(maincpu_mem_map)
+ MCFG_DEVICE_IO_MAP(maincpu_io_map)
- Z80(config, m_soundcpu, XTAL(21'477'272) / 6);
- m_soundcpu->set_addrmap(AS_PROGRAM, &sothello_state::soundcpu_mem_map);
- m_soundcpu->set_addrmap(AS_IO, &sothello_state::soundcpu_io_map);
+ MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(21'477'272) / 6)
+ MCFG_DEVICE_PROGRAM_MAP(soundcpu_mem_map)
+ MCFG_DEVICE_IO_MAP(soundcpu_io_map)
- MC6809(config, m_subcpu, XTAL(8'000'000)); // divided by 4 internally
- m_subcpu->set_addrmap(AS_PROGRAM, &sothello_state::subcpu_mem_map);
+ MCFG_DEVICE_ADD("subcpu", MC6809, XTAL(8'000'000)) // divided by 4 internally
+ MCFG_DEVICE_PROGRAM_MAP(subcpu_mem_map)
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
/* video hardware */
v9938_device &v9938(V9938(config, "v9938", XTAL(21'477'272)));
@@ -391,11 +391,11 @@ void sothello_state::sothello(machine_config &config)
ymsnd.add_route(2, "mono", 0.25);
ymsnd.add_route(3, "mono", 0.50);
- MSM5205(config, m_msm, XTAL(384'000));
- m_msm->vck_legacy_callback().set(FUNC(sothello_state::adpcm_int)); /* interrupt function */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* changed on the fly */
- m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000))
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, sothello_state, adpcm_int)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* changed on the fly */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/spacefb.cpp b/src/mame/drivers/spacefb.cpp
index 70e88898b1d..8a8c52e7f6a 100644
--- a/src/mame/drivers/spacefb.cpp
+++ b/src/mame/drivers/spacefb.cpp
@@ -330,8 +330,8 @@ INPUT_PORTS_END
*
*************************************/
-void spacefb_state::spacefb(machine_config &config)
-{
+MACHINE_CONFIG_START(spacefb_state::spacefb)
+
/* basic machine hardware */
Z80(config, m_maincpu, SPACEFB_MAIN_CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &spacefb_state::spacefb_main_map);
@@ -344,16 +344,17 @@ void spacefb_state::spacefb(machine_config &config)
m_audiocpu->t0_in_cb().set(FUNC(spacefb_state::audio_t0_r));
m_audiocpu->t1_in_cb().set(FUNC(spacefb_state::audio_t1_r));
- config.m_minimum_quantum = attotime::from_hz(180);
+ MCFG_QUANTUM_TIME(attotime::from_hz(180))
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(SPACEFB_PIXEL_CLOCK, SPACEFB_HTOTAL, SPACEFB_HBEND, SPACEFB_HBSTART, SPACEFB_VTOTAL, SPACEFB_VBEND, SPACEFB_VBSTART);
- m_screen->set_screen_update(FUNC(spacefb_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(SPACEFB_PIXEL_CLOCK, SPACEFB_HTOTAL, SPACEFB_HBEND, SPACEFB_HBSTART, SPACEFB_VTOTAL, SPACEFB_VBEND, SPACEFB_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(spacefb_state, screen_update)
/* audio hardware */
spacefb_audio(config);
-}
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/spaceg.cpp b/src/mame/drivers/spaceg.cpp
index 911c4c94902..6ae5771ac79 100644
--- a/src/mame/drivers/spaceg.cpp
+++ b/src/mame/drivers/spaceg.cpp
@@ -164,12 +164,10 @@ Notes:
**************************************************************************************/
#include "emu.h"
+#include "includes/mw8080bw.h"
#include "cpu/z80/z80.h"
-#include "sound/samples.h"
-#include "sound/sn76477.h"
#include "emupal.h"
-#include "screen.h"
#include "speaker.h"
diff --git a/src/mame/drivers/spartanxtec.cpp b/src/mame/drivers/spartanxtec.cpp
index f8258357338..ba840dfc246 100644
--- a/src/mame/drivers/spartanxtec.cpp
+++ b/src/mame/drivers/spartanxtec.cpp
@@ -359,32 +359,32 @@ void spartanxtec_state::spartanxtec_palette(palette_device &palette) const
-void spartanxtec_state::spartanxtec(machine_config &config)
-{
+MACHINE_CONFIG_START(spartanxtec_state::spartanxtec)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &spartanxtec_state::spartanxtec_map);
- m_maincpu->set_vblank_int("screen", FUNC(spartanxtec_state::irq0_line_assert));
+ MCFG_DEVICE_ADD("maincpu", Z80,4000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(spartanxtec_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", spartanxtec_state, irq0_line_assert)
- Z80(config, m_audiocpu, 4000000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &spartanxtec_state::spartanxtec_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &spartanxtec_state::spartanxtec_sound_io);
- m_audiocpu->set_periodic_int(FUNC(spartanxtec_state::irq0_line_assert), attotime::from_hz(1000)); // controls speed of music
-// m_audiocpu->set_vblank_int("screen", FUNC(spartanxtec_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("audiocpu", Z80,4000000)
+ MCFG_DEVICE_PROGRAM_MAP(spartanxtec_sound_map)
+ MCFG_DEVICE_IO_MAP(spartanxtec_sound_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(spartanxtec_state, irq0_line_assert, 1000) // controls speed of music
+// MCFG_DEVICE_VBLANK_INT_DRIVER("screen", spartanxtec_state, irq0_line_hold)
/* video hardware */
// todo, proper screen timings for this bootleg PCB - as visible area is less it's probably ~60hz, not 55
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(1790));
- screen.set_size(64*8, 32*8);
- screen.set_visarea((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1-16);
- screen.set_screen_update(FUNC(spartanxtec_state::screen_update_spartanxtec));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1790))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1-16)
+ MCFG_SCREEN_UPDATE_DRIVER(spartanxtec_state, screen_update_spartanxtec)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(spartanxtec_state::spartanxtec_palette), 0x200);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_news);
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_news)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -397,7 +397,8 @@ void spartanxtec_state::spartanxtec(machine_config &config)
AY8912(config, "ay2", 1000000).add_route(ALL_OUTPUTS, "mono", 0.25);
AY8912(config, "ay3", 1000000).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/spbactn.cpp b/src/mame/drivers/spbactn.cpp
index e231e4e5225..d6ba0827234 100644
--- a/src/mame/drivers/spbactn.cpp
+++ b/src/mame/drivers/spbactn.cpp
@@ -422,7 +422,7 @@ void spbactn_state::spbactn(machine_config &config)
// actual blanking frequencies unknown, but should be close to NTSC
m_screen->set_raw(XTAL(22'656'000) / 2, 720, 0, 512, 262, 16, 240);
#else
- // set_raw breaks sprites; keeping this in for now
+ // MCFG_SCREEN_RAW_PARAMS breaks sprites; keeping this in for now
m_screen->set_refresh_hz(60);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(64*8, 32*8);
diff --git a/src/mame/drivers/spc1000.cpp b/src/mame/drivers/spc1000.cpp
index 23c5d8699e2..51d1c928844 100644
--- a/src/mame/drivers/spc1000.cpp
+++ b/src/mame/drivers/spc1000.cpp
@@ -466,22 +466,20 @@ void spc1000_exp(device_slot_interface &device)
device.option_add("vdp", SPC1000_VDP_EXP);
}
-void spc1000_state::spc1000(machine_config &config)
-{
+MACHINE_CONFIG_START(spc1000_state::spc1000)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &spc1000_state::spc1000_mem);
- m_maincpu->set_addrmap(AS_IO, &spc1000_state::spc1000_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(spc1000_mem)
+ MCFG_DEVICE_IO_MAP(spc1000_io)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
-
- MC6847_NTSC(config, m_vdg, XTAL(3'579'545));
- m_vdg->set_screen("screen");
- m_vdg->fsync_wr_callback().set(FUNC(spc1000_state::irq_w));
- m_vdg->input_callback().set(FUNC(spc1000_state::mc6847_videoram_r));
- m_vdg->set_get_char_rom(FUNC(spc1000_state::get_char_rom));
- m_vdg->set_get_fixed_mode(mc6847_ntsc_device::MODE_GM2);
+ MCFG_SCREEN_MC6847_NTSC_ADD("screen", "mc6847")
+
+ MCFG_DEVICE_ADD("mc6847", MC6847_NTSC, XTAL(3'579'545))
+ MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(*this, spc1000_state, irq_w))
+ MCFG_MC6847_INPUT_CALLBACK(READ8(*this, spc1000_state, mc6847_videoram_r))
+ MCFG_MC6847_CHARROM_CALLBACK(spc1000_state, get_char_rom)
+ MCFG_MC6847_FIXED_MODE(mc6847_ntsc_device::MODE_GM2)
// other lines not connected
/* sound hardware */
@@ -490,28 +488,26 @@ void spc1000_state::spc1000(machine_config &config)
ay8910.port_a_read_callback().set(FUNC(spc1000_state::porta_r));
ay8910.port_b_write_callback().set("cent_data_out", FUNC(output_latch_device::bus_w));
ay8910.add_route(ALL_OUTPUTS, "mono", 1.00);
- WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.05);
-
- SPC1000_EXP_SLOT(config, "ext1", spc1000_exp);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05);
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(spc1000_state::centronics_busy_w));
+ MCFG_DEVICE_ADD("ext1", SPC1000_EXP_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(spc1000_exp, nullptr, false)
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, spc1000_state, centronics_busy_w))
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+ MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0)
- INPUT_BUFFER(config, "cent_status_in");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(spc1000_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED)
+ MCFG_CASSETTE_INTERFACE("spc1000_cass")
- CASSETTE(config, m_cass);
- m_cass->set_formats(spc1000_cassette_formats);
- m_cass->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED);
- m_cass->set_interface("spc1000_cass");
-
- SOFTWARE_LIST(config, "cass_list").set_original("spc1000_cass");
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "spc1000_cass")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K");
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( spc1000 )
diff --git a/src/mame/drivers/spc1500.cpp b/src/mame/drivers/spc1500.cpp
index bbbacb5a135..c7860f951c6 100644
--- a/src/mame/drivers/spc1500.cpp
+++ b/src/mame/drivers/spc1500.cpp
@@ -410,12 +410,12 @@ WRITE8_MEMBER( spc1500_state::crtc_w)
if((offset & 1) == 0)
{
m_crtc_index = data & 0x1f;
- m_vdg->address_w(data);
+ m_vdg->address_w(space, 0, data);
}
else
{
m_crtc_vreg[m_crtc_index] = data;
- m_vdg->register_w(data);
+ m_vdg->register_w(space, 0, data);
}
}
@@ -423,7 +423,7 @@ READ8_MEMBER( spc1500_state::crtc_r)
{
if (offset & 1)
{
- return m_vdg->register_r();
+ return m_vdg->register_r(space, 0);
}
return 0;
}
@@ -648,8 +648,8 @@ WRITE8_MEMBER( spc1500_state::double_w)
if (offset < 0x1900) { crtc_w(space, offset, data); } else
if (offset < 0x1a00) {} else
if (offset < 0x1b00) { m_pio->write(offset, data); } else
- if (offset < 0x1c00) { m_sound->data_w(data);} else
- if (offset < 0x1d00) { m_sound->address_w(data);} else
+ if (offset < 0x1c00) { m_sound->data_w(space, offset, data);} else
+ if (offset < 0x1d00) { m_sound->address_w(space, offset, data);} else
if (offset < 0x1e00) { romsel(space, offset, data);} else
if (offset < 0x1f00) { ramsel(space, offset, data);} else
if (offset < 0x2000) {} else
@@ -675,7 +675,7 @@ READ8_MEMBER( spc1500_state::io_r)
if (offset < 0x1900) { return crtc_r(space, offset); } else
if (offset < 0x1a00) { return keyboard_r(space, offset); } else
if (offset < 0x1b00) { return m_pio->read(offset); } else
- if (offset < 0x1c00) { return m_sound->data_r(); } else
+ if (offset < 0x1c00) { return m_sound->data_r(space, offset); } else
if (offset < 0x2000) {} else
if (offset < 0x10000){
if (offset < 0x4000)
@@ -877,23 +877,22 @@ READ8_MEMBER( spc1500_state::porta_r )
return data;
}
-void spc1500_state::spc1500(machine_config &config)
-{
+MACHINE_CONFIG_START(spc1500_state::spc1500)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &spc1500_state::spc1500_mem);
- //m_maincpu->set_addrmap(AS_IO, &spc1500_state::spc1500_io);
- m_maincpu->set_addrmap(AS_IO, &spc1500_state::spc1500_double_io);
- m_maincpu->set_periodic_int(FUNC(spc1500_state::irq0_line_hold), attotime::from_hz(60));
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(spc1500_mem)
+ //MCFG_DEVICE_IO_MAP(spc1500_io)
+ MCFG_DEVICE_IO_MAP(spc1500_double_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(spc1500_state, irq0_line_hold, 60)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 400);
- screen.set_visarea(0,640-1,0,400-1);
- screen.set_screen_update("mc6845", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 400)
+ MCFG_SCREEN_VISIBLE_AREA(0,640-1,0,400-1)
+ MCFG_SCREEN_UPDATE_DEVICE("mc6845", mc6845_device, screen_update )
PALETTE(config, m_palette, FUNC(spc1500_state::spc_palette), 8);
@@ -912,7 +911,7 @@ void spc1500_state::spc1500(machine_config &config)
m_pio->out_pb_callback().set(FUNC(spc1500_state::portb_w));
m_pio->out_pc_callback().set(FUNC(spc1500_state::portc_w));
- TIMER(config, "1hz").configure_periodic(FUNC(spc1500_state::timer), attotime::from_hz(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("1hz", spc1500_state, timer, attotime::from_hz(1))
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -920,26 +919,23 @@ void spc1500_state::spc1500(machine_config &config)
m_sound->port_a_read_callback().set(FUNC(spc1500_state::psga_r));
m_sound->port_b_write_callback().set(FUNC(spc1500_state::psgb_w));
m_sound->add_route(ALL_OUTPUTS, "mono", 1.00);
- WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.25);
-
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(spc1500_state::centronics_busy_w));
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, spc1500_state, centronics_busy_w))
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+ MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0)
- INPUT_BUFFER(config, "cent_status_in");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(spc1000_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_MUTED | CASSETTE_MOTOR_DISABLED)
+ MCFG_CASSETTE_INTERFACE("spc1500_cass")
- CASSETTE(config, m_cass);
- m_cass->set_formats(spc1000_cassette_formats);
- m_cass->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_MUTED | CASSETTE_MOTOR_DISABLED);
- m_cass->set_interface("spc1500_cass");
-
- SOFTWARE_LIST(config, "cass_list").set_original("spc1500_cass");
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "spc1500_cass")
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K");
- }
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( spc1500 )
diff --git a/src/mame/drivers/spec128.cpp b/src/mame/drivers/spec128.cpp
index b005bb8fae9..de427ad095c 100644
--- a/src/mame/drivers/spec128.cpp
+++ b/src/mame/drivers/spec128.cpp
@@ -165,28 +165,19 @@ resulting mess can be seen in the F4 viewer display.
/****************************************************************************************************/
/* Spectrum 128 specific functions */
-READ8_MEMBER(spectrum_state::spectrum_128_opcode_fetch_r)
-{
- /* this allows expansion devices to act upon opcode fetches from MEM addresses */
- if (BIT(m_port_7ffd_data, 4))
- m_exp->opcode_fetch(offset);
-
- return m_maincpu->space(AS_PROGRAM).read_byte(offset);
-}
-
WRITE8_MEMBER( spectrum_state::spectrum_128_bank1_w )
{
- if (m_exp->romcs() && BIT(m_port_7ffd_data, 4))
- m_exp->mreq_w(offset, data);
+ if (m_exp->romcs())
+ m_exp->mreq_w(space, offset, data);
}
READ8_MEMBER( spectrum_state::spectrum_128_bank1_r )
{
uint8_t data;
- if (m_exp->romcs() && BIT(m_port_7ffd_data, 4))
+ if (m_exp->romcs())
{
- data = m_exp->mreq_r(offset);
+ data = m_exp->mreq_r(space, offset);
}
else
{
@@ -244,12 +235,11 @@ READ8_MEMBER( spectrum_state::spectrum_128_ula_r )
void spectrum_state::spectrum_128_io(address_map &map)
{
- map(0x0000, 0xffff).rw(m_exp, FUNC(spectrum_expansion_slot_device::iorq_r), FUNC(spectrum_expansion_slot_device::iorq_w));
map(0x0000, 0x0000).rw(FUNC(spectrum_state::spectrum_port_fe_r), FUNC(spectrum_state::spectrum_port_fe_w)).select(0xfffe);
map(0x0001, 0x0001).w(FUNC(spectrum_state::spectrum_128_port_7ffd_w)).mirror(0x7ffc); // (A15 | A1) == 0, note: reading from this port does write to it by value from data bus
map(0x8000, 0x8000).w("ay8912", FUNC(ay8910_device::data_w)).mirror(0x3ffd);
map(0xc000, 0xc000).rw("ay8912", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)).mirror(0x3ffd);
- map(0x0001, 0x0001).r(FUNC(spectrum_state::spectrum_128_ula_r)); // .mirror(0xfffe);
+ map(0x0001, 0x0001).r(FUNC(spectrum_state::spectrum_128_ula_r)).mirror(0xfffe);
}
void spectrum_state::spectrum_128_mem(address_map &map)
@@ -260,9 +250,10 @@ void spectrum_state::spectrum_128_mem(address_map &map)
map(0xc000, 0xffff).bankrw("bank4");
}
-void spectrum_state::spectrum_128_fetch(address_map &map)
+void spectrum_state::init_spec128()
{
- map(0x0000, 0xffff).r(FUNC(spectrum_state::spectrum_128_opcode_fetch_r));
+ // setup expansion slot
+ m_exp->set_io_space(&m_maincpu->space(AS_IO));
}
MACHINE_RESET_MEMBER(spectrum_state,spectrum_128)
@@ -305,36 +296,36 @@ static GFXDECODE_START( spec128 )
GFXDECODE_END
-void spectrum_state::spectrum_128(machine_config &config)
-{
+MACHINE_CONFIG_START(spectrum_state::spectrum_128)
spectrum(config);
- Z80(config.replace(), m_maincpu, X1_128_SINCLAIR / 5);
- m_maincpu->set_addrmap(AS_PROGRAM, &spectrum_state::spectrum_128_mem);
- m_maincpu->set_addrmap(AS_IO, &spectrum_state::spectrum_128_io);
- m_maincpu->set_addrmap(AS_OPCODES, &spectrum_state::spectrum_128_fetch);
- m_maincpu->set_vblank_int("screen", FUNC(spectrum_state::spec_interrupt));
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_REMOVE("maincpu")
+
+ MCFG_DEVICE_ADD("maincpu", Z80, X1_128_SINCLAIR / 5)
+ MCFG_DEVICE_PROGRAM_MAP(spectrum_128_mem)
+ MCFG_DEVICE_IO_MAP(spectrum_128_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", spectrum_state, spec_interrupt)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
MCFG_MACHINE_RESET_OVERRIDE(spectrum_state, spectrum_128 )
/* video hardware */
- m_screen->set_raw(X1_128_SINCLAIR / 2.5f, 456, 0, 352, 311, 0, 296);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_RAW_PARAMS(X1_128_SINCLAIR / 2.5f, 456, 0, 352, 311, 0, 296)
MCFG_VIDEO_START_OVERRIDE(spectrum_state, spectrum_128 )
- subdevice<gfxdecode_device>("gfxdecode")->set_info(spec128);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", spec128)
/* sound hardware */
AY8912(config, "ay8912", X1_128_SINCLAIR / 10).add_route(ALL_OUTPUTS, "mono", 0.25);
/* expansion port */
- SPECTRUM_EXPANSION_SLOT(config.replace(), m_exp, spec128_expansion_devices, nullptr);
- m_exp->irq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_DEVICE_MODIFY("exp")
+ MCFG_DEVICE_SLOT_INTERFACE(spec128_expansion_devices, nullptr, false)
/* internal ram */
m_ram->set_default_size("128K");
-}
+MACHINE_CONFIG_END
@@ -390,8 +381,8 @@ ROM_START(hc2000)
ROMX_LOAD("hc2000.v2", 0x14000,0x4000, CRC(65d90464) SHA1(5e2096e6460ff2120c8ada97579fdf82c1199c09), ROM_BIOS(1))
ROM_END
-// YEAR NAME PARENT COMPAT MACHINE CLASS STATE INIT COMPANY FULLNAME FLAGS
-COMP( 1986, spec128, 0, 0, spectrum_128, spec128, spectrum_state, empty_init, "Sinclair Research Ltd", "ZX Spectrum 128", 0 )
-COMP( 1986, specpls2, spec128, 0, spectrum_128, spec_plus, spectrum_state, empty_init, "Amstrad plc", "ZX Spectrum +2", 0 )
-COMP( 1991, hc128, spec128, 0, spectrum_128, spec_plus, spectrum_state, empty_init, "ICE-Felix", "HC-128", 0 )
-COMP( 1992, hc2000, spec128, 0, spectrum_128, spec_plus, spectrum_state, empty_init, "ICE-Felix", "HC-2000", MACHINE_NOT_WORKING )
+// YEAR NAME PARENT COMPAT MACHINE CLASS STATE INIT COMPANY FULLNAME FLAGS
+COMP( 1986, spec128, 0, 0, spectrum_128, spec128, spectrum_state, init_spec128, "Sinclair Research Ltd", "ZX Spectrum 128", 0 )
+COMP( 1986, specpls2, spec128, 0, spectrum_128, spec_plus, spectrum_state, init_spec128, "Amstrad plc", "ZX Spectrum +2", 0 )
+COMP( 1991, hc128, spec128, 0, spectrum_128, spec_plus, spectrum_state, init_spec128, "ICE-Felix", "HC-128", 0 )
+COMP( 1992, hc2000, spec128, 0, spectrum_128, spec_plus, spectrum_state, init_spec128, "ICE-Felix", "HC-2000", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/special.cpp b/src/mame/drivers/special.cpp
index ac625fa7cb5..60378882403 100644
--- a/src/mame/drivers/special.cpp
+++ b/src/mame/drivers/special.cpp
@@ -364,32 +364,30 @@ static void specimx_floppies(device_slot_interface &device)
}
/* Machine driver */
-void special_state::special(machine_config &config)
-{
+MACHINE_CONFIG_START(special_state::special)
/* basic machine hardware */
- I8080(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &special_state::specialist_mem);
-
+ MCFG_DEVICE_ADD("maincpu", I8080, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(specialist_mem)
MCFG_MACHINE_RESET_OVERRIDE(special_state, special )
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(384, 256);
- screen.set_visarea(0, 384-1, 0, 256-1);
- screen.set_screen_update(FUNC(special_state::screen_update_special));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(384, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(special_state, screen_update_special)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, palette_device::MONOCHROME);
/* audio hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.0625);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.25);
/* Devices */
I8255(config, m_ppi);
@@ -400,25 +398,25 @@ void special_state::special(machine_config &config)
m_ppi->in_pc_callback().set(FUNC(special_state::specialist_8255_portc_r));
m_ppi->out_pc_callback().set(FUNC(special_state::specialist_8255_portc_w));
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(rks_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
- m_cassette->set_interface("special_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(rks_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
+ MCFG_CASSETTE_INTERFACE("special_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("special_cass");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list","special_cass")
+MACHINE_CONFIG_END
-void special_state::specialp(machine_config &config)
-{
+MACHINE_CONFIG_START(special_state::specialp)
special(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &special_state::specialp_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(specialp_mem)
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_screen_update(FUNC(special_state::screen_update_specialp));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(special_state, screen_update_specialp)
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+MACHINE_CONFIG_END
void special_state::specialm(machine_config &config)
{
@@ -431,17 +429,17 @@ void special_state::specialm(machine_config &config)
m_ppi->out_pc_callback().set(FUNC(special_state::specialist_8255_portc_w));
}
-void special_state::specimx(machine_config &config)
-{
+MACHINE_CONFIG_START(special_state::specimx)
special(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &special_state::specimx_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(specimx_mem)
MCFG_MACHINE_START_OVERRIDE (special_state, specimx )
MCFG_MACHINE_RESET_OVERRIDE (special_state, specimx )
/* video hardware */
- subdevice<screen_device>("screen")->set_screen_update(FUNC(special_state::screen_update_specimx));
-
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(special_state, screen_update_specimx)
MCFG_VIDEO_START_OVERRIDE(special_state,specimx)
m_palette->set_init(FUNC(special_state::specimx_palette));
@@ -468,47 +466,45 @@ void special_state::specimx(machine_config &config)
FD1793(config, m_fdc, 8_MHz_XTAL / 8);
m_fdc->drq_wr_callback().set(FUNC(special_state::fdc_drq));
- FLOPPY_CONNECTOR(config, "fd0", specimx_floppies, "525qd", special_state::specimx_floppy_formats);
- FLOPPY_CONNECTOR(config, "fd1", specimx_floppies, "525qd", special_state::specimx_floppy_formats);
- SOFTWARE_LIST(config, "flop_list").set_original("special_flop");
+ MCFG_FLOPPY_DRIVE_ADD("fd0", specimx_floppies, "525qd", special_state::specimx_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fd1", specimx_floppies, "525qd", special_state::specimx_floppy_formats)
+ MCFG_SOFTWARE_LIST_ADD("flop_list","special_flop")
/* internal ram */
RAM(config, m_ram).set_default_size("128K").set_default_value(0x00);
-}
+MACHINE_CONFIG_END
-void special_state::erik(machine_config &config)
-{
+MACHINE_CONFIG_START(special_state::erik)
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &special_state::erik_mem);
- m_maincpu->set_addrmap(AS_IO, &special_state::erik_io_map);
-
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(erik_mem)
+ MCFG_DEVICE_IO_MAP(erik_io_map)
MCFG_MACHINE_RESET_OVERRIDE(special_state, erik )
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(384, 256);
- screen.set_visarea(0, 384-1, 0, 256-1);
- screen.set_screen_update(FUNC(special_state::screen_update_erik));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(384, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(special_state, screen_update_erik)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, FUNC(special_state::erik_palette), 8);
/* audio hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.0625);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.25);
/* Devices */
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(rks_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
- m_cassette->set_interface("special_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(rks_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
+ MCFG_CASSETTE_INTERFACE("special_cass")
I8255(config, m_ppi);
m_ppi->in_pa_callback().set(FUNC(special_state::specialist_8255_porta_r));
@@ -520,12 +516,12 @@ void special_state::erik(machine_config &config)
FD1793(config, m_fdc, 8_MHz_XTAL / 8);
m_fdc->drq_wr_callback().set(FUNC(special_state::fdc_drq));
- FLOPPY_CONNECTOR(config, "fd0", specimx_floppies, "525qd", special_state::specimx_floppy_formats);
- FLOPPY_CONNECTOR(config, "fd1", specimx_floppies, "525qd", special_state::specimx_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("fd0", specimx_floppies, "525qd", special_state::specimx_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fd1", specimx_floppies, "525qd", special_state::specimx_floppy_formats)
/* internal ram */
RAM(config, m_ram).set_default_size("192K").set_default_value(0x00);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( special )
diff --git a/src/mame/drivers/specpls3.cpp b/src/mame/drivers/specpls3.cpp
index 3c3e2855565..deee57e2cec 100644
--- a/src/mame/drivers/specpls3.cpp
+++ b/src/mame/drivers/specpls3.cpp
@@ -175,7 +175,7 @@ static const int spectrum_plus3_memory_selections[]=
WRITE8_MEMBER( spectrum_state::spectrum_plus3_port_3ffd_w )
{
if (m_floppy==1)
- m_upd765->fifo_w(data);
+ m_upd765->fifo_w(space, 0, data, 0xff);
}
READ8_MEMBER( spectrum_state::spectrum_plus3_port_3ffd_r )
@@ -183,7 +183,7 @@ READ8_MEMBER( spectrum_state::spectrum_plus3_port_3ffd_r )
if (m_floppy==0)
return 0xff;
else
- return m_upd765->fifo_r();
+ return m_upd765->fifo_r(space, 0, 0xff);
}
@@ -192,53 +192,71 @@ READ8_MEMBER( spectrum_state::spectrum_plus3_port_2ffd_r )
if (m_floppy==0)
return 0xff;
else
- return m_upd765->msr_r();
+ return m_upd765->msr_r(space, 0, 0xff);
}
void spectrum_state::spectrum_plus3_update_memory()
{
+ address_space &space = m_maincpu->space(AS_PROGRAM);
+ uint8_t *messram = m_ram->pointer();
+
if (m_port_7ffd_data & 8)
{
logerror("+3 SCREEN 1: BLOCK 7\n");
- m_screen_location = m_ram->pointer() + (7 << 14);
+ m_screen_location = messram + (7 << 14);
}
else
{
logerror("+3 SCREEN 0: BLOCK 5\n");
- m_screen_location = m_ram->pointer() + (5 << 14);
+ m_screen_location = messram + (5 << 14);
}
if ((m_port_1ffd_data & 0x01) == 0)
{
/* select ram at 0x0c000-0x0ffff */
int ram_page = m_port_7ffd_data & 0x07;
- unsigned char *ram_data = m_ram->pointer() + (ram_page<<14);
+ unsigned char *ram_data = messram + (ram_page<<14);
membank("bank4")->set_base(ram_data);
logerror("RAM at 0xc000: %02x\n", ram_page);
/* Reset memory between 0x4000 - 0xbfff in case extended paging was being used */
/* Bank 5 in 0x4000 - 0x7fff */
- membank("bank2")->set_base(m_ram->pointer() + (5 << 14));
+ membank("bank2")->set_base(messram + (5 << 14));
/* Bank 2 in 0x8000 - 0xbfff */
- membank("bank3")->set_base(m_ram->pointer() + (2 << 14));
+ membank("bank3")->set_base(messram + (2 << 14));
+
+ /* ROM switching */
+ int ROMSelection = BIT(m_port_7ffd_data, 4) | ((m_port_1ffd_data >> 1) & 0x02);
+
+ /* rom 0 is editor, rom 1 is syntax, rom 2 is DOS, rom 3 is 48 BASIC */
+ unsigned char *ChosenROM = memregion("maincpu")->base() + 0x010000 + (ROMSelection << 14);
+
+ membank("bank1")->set_base(ChosenROM);
+ space.unmap_write(0x0000, 0x3fff);
+
+ logerror("rom switch: %02x\n", ROMSelection);
}
else
{
/* Extended memory paging */
int MemorySelection = (m_port_1ffd_data >> 1) & 0x03;
const int *memory_selection = &spectrum_plus3_memory_selections[(MemorySelection << 2)];
- unsigned char *ram_data = m_ram->pointer() + (memory_selection[0] << 14);
+ unsigned char *ram_data = messram + (memory_selection[0] << 14);
- ram_data = m_ram->pointer() + (memory_selection[1] << 14);
+ membank("bank1")->set_base(ram_data);
+ /* allow writes to 0x0000-0x03fff */
+ space.install_write_bank(0x0000, 0x3fff, "bank1");
+
+ ram_data = messram + (memory_selection[1] << 14);
membank("bank2")->set_base(ram_data);
- ram_data = m_ram->pointer() + (memory_selection[2] << 14);
+ ram_data = messram + (memory_selection[2] << 14);
membank("bank3")->set_base(ram_data);
- ram_data = m_ram->pointer() + (memory_selection[3] << 14);
+ ram_data = messram + (memory_selection[3] << 14);
membank("bank4")->set_base(ram_data);
logerror("extended memory paging: %02x\n", MemorySelection);
@@ -246,49 +264,6 @@ void spectrum_state::spectrum_plus3_update_memory()
}
-WRITE8_MEMBER(spectrum_state::spectrum_plus3_bank1_w)
-{
- if (m_exp->romcs())
- {
- m_exp->mreq_w(offset, data);
- }
- else if ((m_port_1ffd_data & 0x01) != 0)
- {
- /* Extended memory paging */
- int MemorySelection = (m_port_1ffd_data >> 1) & 0x03;
- const int *memory_selection = &spectrum_plus3_memory_selections[(MemorySelection << 2)];
- m_ram->pointer()[(memory_selection[0] << 14) + offset] = data;
- }
-}
-
-READ8_MEMBER(spectrum_state::spectrum_plus3_bank1_r)
-{
- uint8_t data;
-
- if (m_exp->romcs())
- {
- data = m_exp->mreq_r(offset);
- }
- else
- {
- if ((m_port_1ffd_data & 0x01) == 0)
- {
- /* ROM switching */
- int ROMSelection = BIT(m_port_7ffd_data, 4) | ((m_port_1ffd_data >> 1) & 0x02);
-
- /* rom 0 is editor, rom 1 is syntax, rom 2 is DOS, rom 3 is 48 BASIC */
- data = memregion("maincpu")->base()[0x010000 + (ROMSelection << 14) + offset];
- }
- else
- {
- /* Extended memory paging */
- int MemorySelection = (m_port_1ffd_data >> 1) & 0x03;
- const int *memory_selection = &spectrum_plus3_memory_selections[(MemorySelection << 2)];
- data = m_ram->pointer()[(memory_selection[0] << 14) + offset];
- }
- }
- return data;
-}
WRITE8_MEMBER( spectrum_state::spectrum_plus3_port_7ffd_w )
{
@@ -332,7 +307,7 @@ WRITE8_MEMBER( spectrum_state::spectrum_plus3_port_1ffd_w )
The function decodes the ports appropriately */
void spectrum_state::spectrum_plus3_io(address_map &map)
{
- map(0x0000, 0xffff).rw(m_exp, FUNC(spectrum_expansion_slot_device::iorq_r), FUNC(spectrum_expansion_slot_device::iorq_w));
+ map.unmap_value_high();
map(0x0000, 0x0000).rw(FUNC(spectrum_state::spectrum_port_fe_r), FUNC(spectrum_state::spectrum_port_fe_w)).select(0xfffe);
map(0x4000, 0x4000).w(FUNC(spectrum_state::spectrum_plus3_port_7ffd_w)).mirror(0x3ffd);
map(0x8000, 0x8000).w("ay8912", FUNC(ay8910_device::data_w)).mirror(0x3ffd);
@@ -344,7 +319,7 @@ void spectrum_state::spectrum_plus3_io(address_map &map)
void spectrum_state::spectrum_plus3_mem(address_map &map)
{
- map(0x0000, 0x3fff).rw(FUNC(spectrum_state::spectrum_plus3_bank1_r), FUNC(spectrum_state::spectrum_plus3_bank1_w)); //.bankr("bank1");
+ map(0x0000, 0x3fff).bankr("bank1");
map(0x4000, 0x7fff).bankrw("bank2");
map(0x8000, 0xbfff).bankrw("bank3");
map(0xc000, 0xffff).bankrw("bank4");
@@ -366,11 +341,17 @@ MACHINE_RESET_MEMBER(spectrum_state,spectrum_plus3)
void spectrum_state::init_plus3()
{
m_floppy = 1;
+
+ // setup expansion slot
+ m_exp->set_io_space(&m_maincpu->space(AS_IO));
}
void spectrum_state::init_plus2()
{
m_floppy = 0;
+
+ // setup expansion slot
+ m_exp->set_io_space(&m_maincpu->space(AS_IO));
}
static void specpls3_floppies(device_slot_interface &device)
@@ -397,29 +378,26 @@ static GFXDECODE_START( specpls3 )
GFXDECODE_END
-void spectrum_state::spectrum_plus3(machine_config &config)
-{
+MACHINE_CONFIG_START(spectrum_state::spectrum_plus3)
spectrum_128(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &spectrum_state::spectrum_plus3_mem);
- m_maincpu->set_addrmap(AS_IO, &spectrum_state::spectrum_plus3_io);
-
- m_screen->set_refresh_hz(50.01);
-
- subdevice<gfxdecode_device>("gfxdecode")->set_info(specpls3);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(spectrum_plus3_mem)
+ MCFG_DEVICE_IO_MAP(spectrum_plus3_io)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_REFRESH_RATE(50.01)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", specpls3)
MCFG_MACHINE_RESET_OVERRIDE(spectrum_state, spectrum_plus3 )
UPD765A(config, m_upd765, 4'000'000, true, true);
- FLOPPY_CONNECTOR(config, "upd765:0", specpls3_floppies, "3ssdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765:1", specpls3_floppies, "3ssdd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("upd765:0", specpls3_floppies, "3ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765:1", specpls3_floppies, "3ssdd", floppy_image_device::default_floppy_formats)
- SPECTRUM_EXPANSION_SLOT(config.replace(), m_exp, specpls3_expansion_devices, nullptr);
- m_exp->irq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_DEVICE_MODIFY("exp")
+ MCFG_DEVICE_SLOT_INTERFACE(specpls3_expansion_devices, nullptr, false)
- SOFTWARE_LIST(config, "flop_list").set_original("specpls3_flop");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "specpls3_flop")
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/spectra.cpp b/src/mame/drivers/spectra.cpp
index b903183c366..fb5d20cb989 100644
--- a/src/mame/drivers/spectra.cpp
+++ b/src/mame/drivers/spectra.cpp
@@ -269,7 +269,7 @@ void spectra_state::spectra(machine_config &config)
m_snsnd->set_envelope_params(0, 0);
m_snsnd->set_enable(1);
m_snsnd->add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+MACHINE_CONFIG_END
/*--------------------------------
/ Spectra IV
diff --git a/src/mame/drivers/spectrum.cpp b/src/mame/drivers/spectrum.cpp
index 26d8263160f..445b4ae16f5 100644
--- a/src/mame/drivers/spectrum.cpp
+++ b/src/mame/drivers/spectrum.cpp
@@ -292,27 +292,19 @@ SamRam
/****************************************************************************************************/
/* Spectrum 48k functions */
-READ8_MEMBER(spectrum_state::opcode_fetch_r)
-{
- /* this allows expansion devices to act upon opcode fetches from MEM addresses */
- m_exp->opcode_fetch(offset);
-
- return m_maincpu->space(AS_PROGRAM).read_byte(offset);
-}
-
WRITE8_MEMBER(spectrum_state::spectrum_rom_w)
{
if (m_exp->romcs())
- m_exp->mreq_w(offset, data);
+ m_exp->mreq_w(space, offset, data);
}
READ8_MEMBER(spectrum_state::spectrum_rom_r)
{
uint8_t data;
- if (m_exp->romcs())
- data = m_exp->mreq_r(offset);
- else
+ data = m_exp->mreq_r(space, offset);
+
+ if (!m_exp->romcs())
data = memregion("maincpu")->base()[offset];
return data;
@@ -368,10 +360,6 @@ READ8_MEMBER(spectrum_state::spectrum_port_fe_r)
int joy1 = m_io_joy1.read_safe(0x1f) & 0x1f;
int joy2 = m_io_joy2.read_safe(0x1f) & 0x1f;
- /* expansion port */
- if (m_exp)
- data = m_exp->iorq_r(offset);
-
/* Caps - V */
if ((lines & 1) == 0)
{
@@ -422,9 +410,13 @@ READ8_MEMBER(spectrum_state::spectrum_port_fe_r)
data &= ~0x40;
}
+ /* expansion port */
+ if (m_exp)
+ data &= m_exp->port_fe_r(space, offset);
+
/* Issue 2 Spectrums default to having bits 5, 6 & 7 set.
Issue 3 Spectrums default to having bits 5 & 7 set and bit 6 reset. */
- if ((m_io_config->read() & 0x80) == 0)
+ if (m_io_config->read() & 0x80)
data ^= (0x40);
return data;
@@ -443,22 +435,16 @@ void spectrum_state::spectrum_mem(address_map &map)
{
map(0x0000, 0x3fff).rw(FUNC(spectrum_state::spectrum_rom_r), FUNC(spectrum_state::spectrum_rom_w));
map(0x4000, 0x5aff).ram().share("video_ram");
- //map(0x5b00, 0x7fff).ram();
- //map(0x8000, 0xffff).ram();
-}
-
-void spectrum_state::spectrum_fetch(address_map &map)
-{
- map(0x0000, 0xffff).r(FUNC(spectrum_state::opcode_fetch_r));
+ // AM_RANGE(0x5b00, 0x7fff) AM_RAM
+ // AM_RANGE(0x8000, 0xffff) AM_RAM
}
/* ports are not decoded full.
The function decodes the ports appropriately */
void spectrum_state::spectrum_io(address_map &map)
{
- map(0x0000, 0xffff).rw(m_exp, FUNC(spectrum_expansion_slot_device::iorq_r), FUNC(spectrum_expansion_slot_device::iorq_w));
map(0x00, 0x00).rw(FUNC(spectrum_state::spectrum_port_fe_r), FUNC(spectrum_state::spectrum_port_fe_w)).select(0xfffe);
- map(0x01, 0x01).r(FUNC(spectrum_state::spectrum_port_ula_r)); // .mirror(0xfffe);
+ map(0x01, 0x01).r(FUNC(spectrum_state::spectrum_port_ula_r)).mirror(0xfffe);
}
/* Input ports */
@@ -631,6 +617,9 @@ void spectrum_state::init_spectrum()
case 16*1024:
space.install_ram(0x5b00, 0x7fff, nullptr);
}
+
+ // setup expansion slot
+ m_exp->set_io_space(&m_maincpu->space(AS_IO));
}
MACHINE_RESET_MEMBER(spectrum_state,spectrum)
@@ -679,13 +668,12 @@ INTERRUPT_GEN_MEMBER(spectrum_state::spec_interrupt)
m_irq_off_timer->adjust(m_maincpu->clocks_to_attotime(32));
}
-void spectrum_state::spectrum_common(machine_config &config)
-{
+MACHINE_CONFIG_START(spectrum_state::spectrum_common)
+
/* basic machine hardware */
Z80(config, m_maincpu, X1 / 4); /* This is verified only for the ZX Spectrum. Other clones are reported to have different clocks */
m_maincpu->set_addrmap(AS_PROGRAM, &spectrum_state::spectrum_mem);
m_maincpu->set_addrmap(AS_IO, &spectrum_state::spectrum_io);
- m_maincpu->set_addrmap(AS_OPCODES, &spectrum_state::spectrum_fetch);
m_maincpu->set_vblank_int("screen", FUNC(spectrum_state::spec_interrupt));
config.m_minimum_quantum = attotime::from_hz(60);
@@ -715,10 +703,10 @@ void spectrum_state::spectrum_common(machine_config &config)
m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI);
/* devices */
- snapshot_image_device &snapshot(SNAPSHOT(config, "snapshot"));
- snapshot.set_handler(snapquick_load_delegate(&SNAPSHOT_LOAD_NAME(spectrum_state, spectrum), this), "ach,frz,plusd,prg,sem,sit,sna,snp,snx,sp,z80,zx");
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(spectrum_state, spectrum), this), "raw,scr", attotime::from_seconds(2)); // The delay prevents the screen from being cleared by the RAM test at boot
+ snapshot_image_device &snapshot(SNAPSHOT(config, "snapshot", 0));
+ snapshot.set_handler(snapquick_load_delegate(&SNAPSHOT_LOAD_NAME(spectrum_state, spectrum), this), "ach,frz,plusd,prg,sem,sit,sna,snp,snx,sp,z80,zx", 0);
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(spectrum_state, spectrum), this), "raw,scr", 2); // The delay prevents the screen from being cleared by the RAM test at boot
CASSETTE(config, m_cassette);
m_cassette->set_formats(tzx_cassette_formats);
@@ -726,7 +714,7 @@ void spectrum_state::spectrum_common(machine_config &config)
m_cassette->set_interface("spectrum_cass");
SOFTWARE_LIST(config, "cass_list").set_original("spectrum_cass");
-}
+MACHINE_CONFIG_END
void spectrum_state::spectrum(machine_config &config)
{
diff --git a/src/mame/drivers/speedatk.cpp b/src/mame/drivers/speedatk.cpp
index 893988686af..989c5471d8d 100644
--- a/src/mame/drivers/speedatk.cpp
+++ b/src/mame/drivers/speedatk.cpp
@@ -306,23 +306,23 @@ WRITE8_MEMBER(speedatk_state::output_w)
logerror("%02x\n",data);
}
-void speedatk_state::speedatk(machine_config &config)
-{
- Z80(config, m_maincpu, MASTER_CLOCK/2); //divider is unknown
- m_maincpu->set_addrmap(AS_PROGRAM, &speedatk_state::speedatk_mem);
- m_maincpu->set_addrmap(AS_IO, &speedatk_state::speedatk_io);
- m_maincpu->set_vblank_int("screen", FUNC(speedatk_state::irq0_line_hold));
+MACHINE_CONFIG_START(speedatk_state::speedatk)
+
+ MCFG_DEVICE_ADD("maincpu", Z80,MASTER_CLOCK/2) //divider is unknown
+ MCFG_DEVICE_PROGRAM_MAP(speedatk_mem)
+ MCFG_DEVICE_IO_MAP(speedatk_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", speedatk_state, irq0_line_hold)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8); // timing is unknown
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(320, 256);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(speedatk_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(320, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(speedatk_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
H46505(config, m_crtc, MASTER_CLOCK/16); /* hand tuned to get ~60 fps */
m_crtc->set_screen("screen");
@@ -339,7 +339,7 @@ void speedatk_state::speedatk(machine_config &config)
aysnd.port_b_read_callback().set_ioport("DSW");
aysnd.port_a_write_callback().set(FUNC(speedatk_state::output_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+MACHINE_CONFIG_END
ROM_START( speedatk )
ROM_REGION( 0x10000, "maincpu", 0 )
diff --git a/src/mame/drivers/speedbal.cpp b/src/mame/drivers/speedbal.cpp
index a2937c9a869..6f849385d04 100644
--- a/src/mame/drivers/speedbal.cpp
+++ b/src/mame/drivers/speedbal.cpp
@@ -263,27 +263,27 @@ GFXDECODE_END
-void speedbal_state::speedbal(machine_config &config)
-{
+MACHINE_CONFIG_START(speedbal_state::speedbal)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000)); // 4 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &speedbal_state::main_cpu_map);
- m_maincpu->set_addrmap(AS_IO, &speedbal_state::main_cpu_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(speedbal_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(4'000'000)) // 4 MHz
+ MCFG_DEVICE_PROGRAM_MAP(main_cpu_map)
+ MCFG_DEVICE_IO_MAP(main_cpu_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", speedbal_state, irq0_line_hold)
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(4'000'000))); // 4 MHz
- audiocpu.set_addrmap(AS_PROGRAM, &speedbal_state::sound_cpu_map);
- audiocpu.set_addrmap(AS_IO, &speedbal_state::sound_cpu_io_map);
- audiocpu.set_periodic_int(FUNC(speedbal_state::irq0_line_hold), attotime::from_hz(1000/2)); // approximate?
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(4'000'000)) // 4 MHz
+ MCFG_DEVICE_PROGRAM_MAP(sound_cpu_map)
+ MCFG_DEVICE_IO_MAP(sound_cpu_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(speedbal_state, irq0_line_hold, 1000/2) // approximate?
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(56.4); // measured
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(speedbal_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(56.4) // measured
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(speedbal_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_speedbal);
PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 768).set_endianness(ENDIANNESS_BIG);
@@ -291,8 +291,9 @@ void speedbal_state::speedbal(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM3812(config, "ymsnd", XTAL(4'000'000)).add_route(ALL_OUTPUTS, "mono", 1.0); // 4 MHz(?)
-}
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(4'000'000)) // 4 MHz(?)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
void speedbal_state::init_speedbal()
diff --git a/src/mame/drivers/speedspn.cpp b/src/mame/drivers/speedspn.cpp
index 9b77b916489..3dd654b07e2 100644
--- a/src/mame/drivers/speedspn.cpp
+++ b/src/mame/drivers/speedspn.cpp
@@ -281,25 +281,25 @@ void speedspn_state::machine_start()
}
-void speedspn_state::speedspn(machine_config &config)
-{
+MACHINE_CONFIG_START(speedspn_state::speedspn)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 6000000); /* 6 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &speedspn_state::program_map);
- m_maincpu->set_addrmap(AS_IO, &speedspn_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(speedspn_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu",Z80,6000000) /* 6 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(program_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", speedspn_state, irq0_line_hold)
- Z80(config, m_audiocpu, 6000000); /* 6 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &speedspn_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80,6000000) /* 6 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8*8, 56*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(speedspn_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, 56*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(speedspn_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_speedspn);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 0x400);
@@ -309,10 +309,10 @@ void speedspn_state::speedspn(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- OKIM6295(config, m_oki, 1122000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
- m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
- m_oki->set_addrmap(0, &speedspn_state::oki_map);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1122000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+MACHINE_CONFIG_END
/*** ROM LOADING *************************************************************/
diff --git a/src/mame/drivers/speglsht.cpp b/src/mame/drivers/speglsht.cpp
index 3d4a28d9c44..6fdcc06bde5 100644
--- a/src/mame/drivers/speglsht.cpp
+++ b/src/mame/drivers/speglsht.cpp
@@ -413,35 +413,35 @@ uint32_t speglsht_state::screen_update_speglsht(screen_device &screen, bitmap_rg
return 0;
}
-void speglsht_state::speglsht(machine_config &config)
-{
+MACHINE_CONFIG_START(speglsht_state::speglsht)
/* basic machine hardware */
- ST0016_CPU(config, m_maincpu, 8000000); /* 8 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &speglsht_state::st0016_mem);
- m_maincpu->set_addrmap(AS_IO, &speglsht_state::st0016_io);
- m_maincpu->set_vblank_int("screen", FUNC(speglsht_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu",ST0016_CPU, 8000000) /* 8 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(st0016_mem)
+ MCFG_DEVICE_IO_MAP(st0016_io)
+
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", speglsht_state, irq0_line_hold)
R3051(config, m_subcpu, 25000000);
m_subcpu->set_endianness(ENDIANNESS_LITTLE);
m_subcpu->set_addrmap(AS_PROGRAM, &speglsht_state::speglsht_mem);
m_subcpu->set_vblank_int("screen", FUNC(speglsht_state::irq4_line_assert));
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
MCFG_MACHINE_RESET_OVERRIDE(speglsht_state,speglsht)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 512);
- screen.set_visarea(0, 319, 8, 239-8);
- screen.set_screen_update(FUNC(speglsht_state::screen_update_speglsht));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 512)
+ MCFG_SCREEN_VISIBLE_AREA(0, 319, 8, 239-8)
+ MCFG_SCREEN_UPDATE_DRIVER(speglsht_state, screen_update_speglsht)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_speglsht);
- PALETTE(config, m_palette).set_entries(16*16*4+1);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_speglsht)
+ MCFG_PALETTE_ADD("palette", 16*16*4+1)
MCFG_VIDEO_START_OVERRIDE(speglsht_state,speglsht)
-}
+MACHINE_CONFIG_END
ROM_START( speglsht )
ROM_REGION( 0x400000, "maincpu", 0 )
diff --git a/src/mame/drivers/spg110.cpp b/src/mame/drivers/spg110.cpp
deleted file mode 100644
index a10d01132fe..00000000000
--- a/src/mame/drivers/spg110.cpp
+++ /dev/null
@@ -1,399 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:David Haywood
-/******************************************************************************
-
- Short Description:
-
- die markings show
-
- "SunPlus PA7801" ( known as Sunplus SPG110? )
- Classic Arcade Pinball
- EA Sports (NHL95 + Madden 95)
- Spiderman 5-in-1 (original release)
-
-*******************************************************************************/
-
-#include "emu.h"
-
-#include "cpu/unsp/unsp.h"
-#include "machine/spg110.h"
-#include "screen.h"
-#include "speaker.h"
-
-class spg110_game_state : public driver_device
-{
-public:
- spg110_game_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_screen(*this, "screen")
- , m_spg(*this, "spg")
- { }
-
- void spg110_base(machine_config &config);
-
-protected:
-
- required_device<unsp_device> m_maincpu;
- required_device<screen_device> m_screen;
- required_device<spg110_device> m_spg;
-
- virtual void mem_map(address_map &map);
-};
-
-/*************************
-* Machine Hardware *
-*************************/
-
-void spg110_game_state::mem_map(address_map &map)
-{
- map(0x004000, 0x0fffff).rom().region("maincpu", 0x8000);
- map(0x000000, 0x003fff).m(m_spg, FUNC(spg110_device::map));
-}
-
-static INPUT_PORTS_START( jak_capb )
- PORT_START("PA")
- PORT_DIPNAME( 0x0001, 0x0000, "PA" )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0001, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0004, DEF_STR( On ) )
- PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
- PORT_DIPNAME( 0x0010, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( On ) )
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Menu")
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_NAME("Left Flipper")
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Nudge")// nudge (motion control)
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("Right Flipper")
- PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
-
- PORT_START("PB")
- PORT_DIPNAME( 0x0001, 0x0000, "PB" )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0001, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0004, DEF_STR( On ) )
- PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
- PORT_DIPNAME( 0x0010, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( On ) )
- PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0100, DEF_STR( On ) )
- PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0200, DEF_STR( On ) )
- PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0400, DEF_STR( On ) )
- PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0800, DEF_STR( On ) )
- PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
-
- PORT_START("PC")
- PORT_DIPNAME( 0x0001, 0x0000, "PC" )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0001, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0004, DEF_STR( On ) )
- PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
- PORT_DIPNAME( 0x0010, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( On ) )
- PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0100, DEF_STR( On ) )
- PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0200, DEF_STR( On ) )
- PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0400, DEF_STR( On ) )
- PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0800, DEF_STR( On ) )
- PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
-
- PORT_START("JOYX")
- PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("JOYY")
- PORT_BIT(0x0fff, 0x0000, IPT_AD_STICK_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(100) PORT_MINMAX(0x00,0x0fff) PORT_NAME("Plunger")
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( jak_spdmo )
- PORT_START("PA")
- PORT_DIPNAME( 0x0001, 0x0000, "PA" )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0001, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0004, DEF_STR( On ) )
- PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
- PORT_DIPNAME( 0x0010, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( On ) )
- PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0100, DEF_STR( On ) )
- PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0200, DEF_STR( On ) )
- PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0400, DEF_STR( On ) )
- PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0800, DEF_STR( On ) )
- PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
-
- PORT_START("PB")
- PORT_DIPNAME( 0x0001, 0x0000, "PB" )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0001, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0004, DEF_STR( On ) )
- PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
- PORT_DIPNAME( 0x0010, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( On ) )
- PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0100, DEF_STR( On ) )
- PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0200, DEF_STR( On ) )
- PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0400, DEF_STR( On ) )
- PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0800, DEF_STR( On ) )
- PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
-
- PORT_START("PC")
- PORT_DIPNAME( 0x0001, 0x0000, "PC" )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0001, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0004, DEF_STR( On ) )
- PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
- PORT_DIPNAME( 0x0010, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( On ) )
- PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0100, DEF_STR( On ) )
- PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0200, DEF_STR( On ) )
- PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0400, DEF_STR( On ) )
- PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0800, DEF_STR( On ) )
- PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
-
- PORT_START("JOYX")
-
- PORT_START("JOYY")
-
-INPUT_PORTS_END
-
-void spg110_game_state::spg110_base(machine_config &config)
-{
- UNSP(config, m_maincpu, XTAL(27'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &spg110_game_state::mem_map);
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(320, 262);
- m_screen->set_visarea(0, 320-1, 0, 240-1);
- m_screen->set_screen_update("spg", FUNC(spg110_device::screen_update));
- m_screen->screen_vblank().set(m_spg, FUNC(spg110_device::vblank));
-
- SPEAKER(config, "lspeaker").front_left();
- SPEAKER(config, "rspeaker").front_right();
-// m_spg->add_route(ALL_OUTPUTS, "lspeaker", 0.5);
-// m_spg->add_route(ALL_OUTPUTS, "rspeaker", 0.5);
-
- SPG110(config, m_spg, XTAL(27'000'000), m_maincpu, m_screen);
- m_spg->porta_in().set_ioport("PA");
- m_spg->portb_in().set_ioport("PB");
- m_spg->portc_in().set_ioport("PC");
- m_spg->adc_in<0>().set_ioport("JOYX");
- m_spg->adc_in<1>().set_ioport("JOYY");
-}
-
-ROM_START( jak_capb )
- ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "classicarcadepinball.bin", 0x000000, 0x200000, CRC(b643dab0) SHA1(f57d546758ba442e28b5f0f48b3819b2fc2eb7f7) )
-ROM_END
-
-
-ROM_START( jak_spdmo )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "spidermaneyes.bin", 0x000000, 0x200000, CRC(d5eaa6ae) SHA1(df226d378b41cf6ef90b9f72e48ff5e66385dcba) )
-ROM_END
-
-// JAKKS Pacific Inc TV games
-CONS( 2004, jak_capb, 0, 0, spg110_base, jak_capb, spg110_game_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "Classic Arcade Pinball (JAKKS Pacific TV Game)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-CONS( 2004, jak_spdmo, jak_spdm, 0, spg110_base, jak_spdmo, spg110_game_state, empty_init, "JAKKS Pacific Inc / Digital Eclipse", "Spider-Man (JAKKS Pacific TV Game) (older hardare)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // this is the smaller more 'square' style joystick that was originally released before the GameKey slot was added.
diff --git a/src/mame/drivers/spiders.cpp b/src/mame/drivers/spiders.cpp
index b076d4a5e70..423e95dd834 100644
--- a/src/mame/drivers/spiders.cpp
+++ b/src/mame/drivers/spiders.cpp
@@ -504,22 +504,22 @@ INPUT_PORTS_END
*
*************************************/
-void spiders_state::spiders(machine_config &config)
-{
+MACHINE_CONFIG_START(spiders_state::spiders)
+
/* basic machine hardware */
- MC6809(config, m_maincpu, 2800000);
- m_maincpu->set_addrmap(AS_PROGRAM, &spiders_state::spiders_main_map);
- m_maincpu->set_periodic_int(FUNC(spiders_state::update_pia_1), attotime::from_hz(25));
+ MCFG_DEVICE_ADD("maincpu", MC6809, 2800000)
+ MCFG_DEVICE_PROGRAM_MAP(spiders_main_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(spiders_state, update_pia_1, 25)
- M6802(config, m_audiocpu, 3000000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &spiders_state::spiders_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", M6802, 3000000)
+ MCFG_DEVICE_PROGRAM_MAP(spiders_audio_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(PIXEL_CLOCK, 256, 0, 256, 256, 0, 256); /* temporary, CRTC will configure screen */
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 256, 0, 256, 256, 0, 256) /* temporary, CRTC will configure screen */
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
PALETTE(config, m_palette, palette_device::RGB_3BIT);
@@ -549,7 +549,8 @@ void spiders_state::spiders(machine_config &config)
m_pia[2]->irqa_handler().set("mainirq", FUNC(input_merger_device::in_w<3>));
m_pia[2]->irqb_handler().set("mainirq", FUNC(input_merger_device::in_w<4>));
- INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline(m_maincpu, M6809_IRQ_LINE);
+ MCFG_INPUT_MERGER_ANY_HIGH("mainirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", M6809_IRQ_LINE))
PIA6821(config, m_pia[3], 0);
m_pia[3]->writepa_handler().set(FUNC(spiders_state::spiders_audio_a_w));
@@ -567,7 +568,8 @@ void spiders_state::spiders(machine_config &config)
/* audio hardware */
spiders_audio(config);
-}
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/spinb.cpp b/src/mame/drivers/spinb.cpp
index 26bf27e48fa..022c4f13c90 100644
--- a/src/mame/drivers/spinb.cpp
+++ b/src/mame/drivers/spinb.cpp
@@ -461,17 +461,17 @@ WRITE8_MEMBER( spinb_state::sndbank_m_w )
void spinb_state::update_sound_a()
{
if (m_sndbank_a != 0xff)
- m_ic14a->ba_w(m_p_audio[m_sound_addr_a]);
+ m_ic14a->write_ba(m_p_audio[m_sound_addr_a]);
else
- m_ic14a->ba_w(0);
+ m_ic14a->write_ba(0);
}
void spinb_state::update_sound_m()
{
if (m_sndbank_m != 0xff)
- m_ic14m->ba_w(m_p_music[m_sound_addr_m]);
+ m_ic14m->write_ba(m_p_music[m_sound_addr_m]);
else
- m_ic14m->ba_w(0);
+ m_ic14m->write_ba(0);
}
WRITE_LINE_MEMBER( spinb_state::ic5a_w )
diff --git a/src/mame/drivers/spirit76.cpp b/src/mame/drivers/spirit76.cpp
index aff49228c39..327a4eba9c5 100644
--- a/src/mame/drivers/spirit76.cpp
+++ b/src/mame/drivers/spirit76.cpp
@@ -121,16 +121,14 @@ void spirit76_state::machine_reset()
m_t_c = 0;
}
-void spirit76_state::spirit76(machine_config &config)
-{
+MACHINE_CONFIG_START(spirit76_state::spirit76)
/* basic machine hardware */
- M6800(config, m_maincpu, 500000);
- m_maincpu->set_addrmap(AS_PROGRAM, &spirit76_state::maincpu_map);
-
- TIMER(config, "irq").configure_periodic(FUNC(spirit76_state::irq), attotime::from_hz(120));
+ MCFG_DEVICE_ADD("maincpu", M6800, 500000)
+ MCFG_DEVICE_PROGRAM_MAP(maincpu_map)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", spirit76_state, irq, attotime::from_hz(120))
/* video hardware */
- //config.set_default_layout();
+ //MCFG_DEFAULT_LAYOUT()
//6821pia
pia6821_device &pia(PIA6821(config, "pia", 0));
@@ -145,7 +143,7 @@ void spirit76_state::spirit76(machine_config &config)
/* sound hardware */
genpin_audio(config);
-}
+MACHINE_CONFIG_END
ROM_START(spirit76)
diff --git a/src/mame/drivers/splash.cpp b/src/mame/drivers/splash.cpp
index 4ad1ea62f4c..e0a0db999f4 100644
--- a/src/mame/drivers/splash.cpp
+++ b/src/mame/drivers/splash.cpp
@@ -523,7 +523,7 @@ void splash_state::splash(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
- YM3812(config, "ymsnd", XTAL(30'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.80); /* 3.75MHz (30/8) */
+ YM3812(config, "ymsnd", XTAL(30'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.80); /* 3.75MHz (30/8) */
MSM5205(config, m_msm, XTAL(384'000));
m_msm->vck_legacy_callback().set(FUNC(splash_state::splash_msm5205_int)); /* IRQ handler */
@@ -641,11 +641,11 @@ void funystrp_state::machine_start()
void funystrp_state::funystrp(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000)/2); /* 12 MHz (24/2) */
+ M68000(config, m_maincpu, XTAL(24'000'000)/2); /* 12 MHz (24/2) */
m_maincpu->set_addrmap(AS_PROGRAM, &funystrp_state::funystrp_map);
m_maincpu->set_vblank_int("screen", FUNC(funystrp_state::irq6_line_hold));
- Z80(config, m_audiocpu, XTAL(24'000'000)/4); /* 6MHz (24/4) */
+ Z80(config, m_audiocpu, XTAL(24'000'000)/4); /* 6MHz (24/4) */
m_audiocpu->set_addrmap(AS_PROGRAM, &funystrp_state::funystrp_sound_map);
m_audiocpu->set_addrmap(AS_IO, &funystrp_state::funystrp_sound_io_map);
@@ -670,12 +670,12 @@ void funystrp_state::funystrp(machine_config &config)
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
MSM5205(config, m_msm1, XTAL(400'000));
- m_msm1->vck_legacy_callback().set(FUNC(funystrp_state::adpcm_int1)); /* interrupt function */
+ m_msm1->vck_legacy_callback().set(FUNC(funystrp_state::adpcm_int1)); /* interrupt function */
m_msm1->set_prescaler_selector(msm5205_device::S48_4B); /* 1 / 48 */ /* Sample rate = 400kHz/64 */
m_msm1->add_route(ALL_OUTPUTS, "mono", 0.80);
MSM5205(config, m_msm2, XTAL(400'000));
- m_msm2->vck_legacy_callback().set(FUNC(funystrp_state::adpcm_int2)); /* interrupt function */
+ m_msm2->vck_legacy_callback().set(FUNC(funystrp_state::adpcm_int2)); /* interrupt function */
m_msm2->set_prescaler_selector(msm5205_device::S96_4B); /* 1 / 96 */ /* Sample rate = 400kHz/96 */
m_msm2->add_route(ALL_OUTPUTS, "mono", 0.80);
}
diff --git a/src/mame/drivers/splus.cpp b/src/mame/drivers/splus.cpp
index 1810b6ee3f7..8942e711733 100644
--- a/src/mame/drivers/splus.cpp
+++ b/src/mame/drivers/splus.cpp
@@ -135,7 +135,7 @@ private:
required_ioport m_i30;
required_ioport m_sensor;
required_device<i80c32_device> m_maincpu;
- required_device<i2c_x2404p_device> m_i2cmem;
+ required_device<x2404p_device> m_i2cmem;
output_finder<9> m_digits;
output_finder<5,8> m_leds;
};
@@ -700,7 +700,7 @@ void splus_state::splus(machine_config &config) // basic machine hardware
screen.set_visarea(0*8, 40*8-1, 0*8, 25*8-1);
screen.set_palette("palette");
- I2C_X2404P(config, m_i2cmem);
+ X2404P(config, m_i2cmem);
// sound hardware
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/drivers/spool99.cpp b/src/mame/drivers/spool99.cpp
index 7eb2bb75e2a..14b5f4639be 100644
--- a/src/mame/drivers/spool99.cpp
+++ b/src/mame/drivers/spool99.cpp
@@ -208,7 +208,7 @@ READ8_MEMBER(spool99_state::spool99_io_r)
// case 0xafe5: return 1;
// case 0xafe6: return 1;
case 0xafe7: return m_eeprom->do_read();
- case 0xaff8: return m_oki->read();
+ case 0xaff8: return m_oki->read(space,0);
}
}
// printf("%04x %d\n",offset+0xaf00,io_switch);
@@ -267,7 +267,7 @@ READ8_MEMBER(spool99_state::vcarn_io_r)
case 0xa725: return ioport("HOLD3")->read();
case 0xa726: return ioport("HOLD4")->read();
case 0xa727: return ioport("HOLD2")->read();
- case 0xa780: return m_oki->read();
+ case 0xa780: return m_oki->read(space,0);
case 0xa7a0: return ioport("HOLD1")->read();
case 0xa7a1: return ioport("HOLD5")->read();
case 0xa7a2: return ioport("START")->read();
@@ -367,21 +367,21 @@ INPUT_PORTS_END
-void spool99_state::spool99(machine_config &config)
-{
- Z80(config, m_maincpu, 24000000/8);
- m_maincpu->set_addrmap(AS_PROGRAM, &spool99_state::spool99_map);
- m_maincpu->set_vblank_int("screen", FUNC(spool99_state::irq0_line_hold));
+MACHINE_CONFIG_START(spool99_state::spool99)
+
+ MCFG_DEVICE_ADD("maincpu", Z80, 24000000/8)
+ MCFG_DEVICE_PROGRAM_MAP(spool99_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", spool99_state, irq0_line_hold)
GFXDECODE(config, m_gfxdecode, "palette", gfx_spool99);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(7*8, 55*8-1, 1*8, 31*8-1); //384x240,raw guess
- screen.set_screen_update(FUNC(spool99_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(7*8, 55*8-1, 1*8, 31*8-1) //384x240,raw guess
+ MCFG_SCREEN_UPDATE_DRIVER(spool99_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xBGR_444, 0x200);
@@ -391,18 +391,20 @@ void spool99_state::spool99(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
- m_oki->add_route(ALL_OUTPUTS, "lspeaker", 0.47);
- m_oki->add_route(ALL_OUTPUTS, "rspeaker", 0.47);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47)
+MACHINE_CONFIG_END
-void spool99_state::vcarn(machine_config &config)
-{
+MACHINE_CONFIG_START(spool99_state::vcarn)
spool99(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &spool99_state::vcarn_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(vcarn_map)
- subdevice<screen_device>("screen")->set_visarea(0*8, 64*8-1, 1*8, 31*8-1); //512x240, raw guess
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 1*8, 31*8-1) //512x240, raw guess
+
+MACHINE_CONFIG_END
ROM_START( spool99 )
diff --git a/src/mame/drivers/sprcros2.cpp b/src/mame/drivers/sprcros2.cpp
index 91a6caefa6b..1f10dc36802 100644
--- a/src/mame/drivers/sprcros2.cpp
+++ b/src/mame/drivers/sprcros2.cpp
@@ -260,9 +260,9 @@ void sprcros2_state::master_map(address_map &map)
void sprcros2_state::master_io(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x00).portr("P1").w("sn1", FUNC(sn76489_device::write));
- map(0x01, 0x01).portr("P2").w("sn2", FUNC(sn76489_device::write));
- map(0x02, 0x02).portr("EXTRA").w("sn3", FUNC(sn76489_device::write));
+ map(0x00, 0x00).portr("P1").w("sn1", FUNC(sn76489_device::command_w));
+ map(0x01, 0x01).portr("P2").w("sn2", FUNC(sn76489_device::command_w));
+ map(0x02, 0x02).portr("EXTRA").w("sn3", FUNC(sn76489_device::command_w));
map(0x04, 0x04).portr("DSW1");
map(0x05, 0x05).portr("DSW2");
map(0x07, 0x07).w(FUNC(sprcros2_state::master_output_w));
@@ -452,28 +452,27 @@ TIMER_DEVICE_CALLBACK_MEMBER(sprcros2_state::master_scanline)
m_master_cpu->set_input_line(0, HOLD_LINE);
}
-void sprcros2_state::sprcros2(machine_config &config)
-{
- /* basic machine hardware */
- Z80(config, m_master_cpu, MAIN_CLOCK/4);
- m_master_cpu->set_addrmap(AS_PROGRAM, &sprcros2_state::master_map);
- m_master_cpu->set_addrmap(AS_IO, &sprcros2_state::master_io);
- m_master_cpu->set_vblank_int("screen", FUNC(sprcros2_state::master_vblank_irq));
+MACHINE_CONFIG_START(sprcros2_state::sprcros2)
- TIMER(config, "scantimer").configure_scanline(FUNC(sprcros2_state::master_scanline), "screen", 0, 1);
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("master_cpu",Z80,MAIN_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(master_map)
+ MCFG_DEVICE_IO_MAP(master_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sprcros2_state, master_vblank_irq)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", sprcros2_state, master_scanline, "screen", 0, 1)
- Z80(config, m_slave_cpu, MAIN_CLOCK/4);
- m_slave_cpu->set_addrmap(AS_PROGRAM, &sprcros2_state::slave_map);
- m_slave_cpu->set_addrmap(AS_IO, &sprcros2_state::slave_io);
- m_slave_cpu->set_vblank_int("screen", FUNC(sprcros2_state::slave_vblank_irq));
+ MCFG_DEVICE_ADD("slave_cpu",Z80,MAIN_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(slave_map)
+ MCFG_DEVICE_IO_MAP(slave_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sprcros2_state, slave_vblank_irq)
- config.m_perfect_cpu_quantum = subtag("master_cpu");
+ MCFG_QUANTUM_PERFECT_CPU("master_cpu")
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(sprcros2_state::screen_update));
- screen.set_raw(MAIN_CLOCK/2, 343, 8, 256-8, 262, 16, 240); // TODO: Wrong screen parameters
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(sprcros2_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK/2, 343, 8, 256-8, 262, 16, 240) // TODO: Wrong screen parameters
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_sprcros2);
@@ -484,7 +483,7 @@ void sprcros2_state::sprcros2(machine_config &config)
SN76489(config, "sn1", 10000000/4).add_route(ALL_OUTPUTS, "mono", 0.50);
SN76489(config, "sn2", 10000000/4).add_route(ALL_OUTPUTS, "mono", 0.50);
SN76489(config, "sn3", 10000000/4).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/sprint2.cpp b/src/mame/drivers/sprint2.cpp
index 3db9afd6015..c10ed7f9300 100644
--- a/src/mame/drivers/sprint2.cpp
+++ b/src/mame/drivers/sprint2.cpp
@@ -489,23 +489,23 @@ static GFXDECODE_START( gfx_sprint2 )
GFXDECODE_END
-void sprint2_state::sprint2(machine_config &config)
-{
+MACHINE_CONFIG_START(sprint2_state::sprint2)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 12.096_MHz_XTAL / 16);
- m_maincpu->set_addrmap(AS_PROGRAM, &sprint2_state::sprint2_map);
- m_maincpu->set_vblank_int("screen", FUNC(sprint2_state::sprint2));
+ MCFG_DEVICE_ADD("maincpu", M6502, 12.096_MHz_XTAL / 16)
+ MCFG_DEVICE_PROGRAM_MAP(sprint2_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sprint2_state, sprint2)
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 8);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(12.096_MHz_XTAL, 768, 0, 512, 262, 0, 224);
- m_screen->set_screen_update(FUNC(sprint2_state::screen_update_sprint2));
- m_screen->screen_vblank().set(FUNC(sprint2_state::screen_vblank_sprint2));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_RAW_PARAMS(12.096_MHz_XTAL, 768, 0, 512, 262, 0, 224)
+ MCFG_SCREEN_UPDATE_DRIVER(sprint2_state, screen_update_sprint2)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sprint2_state, screen_vblank_sprint2))
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_sprint2);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_sprint2)
PALETTE(config, m_palette, FUNC(sprint2_state::sprint2_palette), 12, 4);
/* sound hardware */
@@ -520,40 +520,40 @@ void sprint2_state::sprint2(machine_config &config)
m_outlatch->q_out_cb<4>().set_output("led1"); // START LAMP2
//m_outlatch->q_out_cb<6>().set(FUNC(sprint2_state::sprint2_spare_w));
- DISCRETE(config, m_discrete, sprint2_discrete);
- m_discrete->add_route(0, "lspeaker", 1.0);
- m_discrete->add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, sprint2_discrete)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
-void sprint2_state::sprint1(machine_config &config)
-{
+MACHINE_CONFIG_START(sprint2_state::sprint1)
sprint2(config);
/* sound hardware */
- config.device_remove("lspeaker");
- config.device_remove("rspeaker");
+ MCFG_DEVICE_REMOVE("lspeaker")
+ MCFG_DEVICE_REMOVE("rspeaker")
SPEAKER(config, "mono").front_center();
- config.device_remove("discrete");
+ MCFG_DEVICE_REMOVE("discrete")
- DISCRETE(config, m_discrete, sprint1_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, sprint1_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void sprint2_state::dominos(machine_config &config)
-{
+MACHINE_CONFIG_START(sprint2_state::dominos)
sprint2(config);
/* sound hardware */
- config.device_remove("lspeaker");
- config.device_remove("rspeaker");
+ MCFG_DEVICE_REMOVE("lspeaker")
+ MCFG_DEVICE_REMOVE("rspeaker")
SPEAKER(config, "mono").front_center();
- config.device_remove("discrete");
+ MCFG_DEVICE_REMOVE("discrete")
- DISCRETE(config, m_discrete, dominos_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, dominos_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
void sprint2_state::dominos4(machine_config &config)
{
diff --git a/src/mame/drivers/sprint4.cpp b/src/mame/drivers/sprint4.cpp
index 12e903cc2b5..e87350c727c 100644
--- a/src/mame/drivers/sprint4.cpp
+++ b/src/mame/drivers/sprint4.cpp
@@ -379,22 +379,22 @@ static GFXDECODE_START( gfx_sprint4 )
GFXDECODE_END
-void sprint4_state::sprint4(machine_config &config)
-{
+MACHINE_CONFIG_START(sprint4_state::sprint4)
+
/* basic machine hardware */
- M6502(config, m_maincpu, PIXEL_CLOCK / 8);
- m_maincpu->set_addrmap(AS_PROGRAM, &sprint4_state::sprint4_cpu_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, PIXEL_CLOCK / 8)
+ MCFG_DEVICE_PROGRAM_MAP(sprint4_cpu_map)
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 8);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224);
- m_screen->set_screen_update(FUNC(sprint4_state::screen_update));
- m_screen->screen_vblank().set(FUNC(sprint4_state::screen_vblank));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224)
+ MCFG_SCREEN_UPDATE_DRIVER(sprint4_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sprint4_state, screen_vblank))
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_sprint4);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_sprint4)
PALETTE(config, m_palette, FUNC(sprint4_state::sprint4_palette), 10, 6);
/* sound hardware */
@@ -411,10 +411,11 @@ void sprint4_state::sprint4(machine_config &config)
latch.q_out_cb<6>().set("discrete", FUNC(discrete_device::write_line<SPRINT4_SCREECH_EN_3>));
latch.q_out_cb<7>().set("discrete", FUNC(discrete_device::write_line<SPRINT4_SCREECH_EN_4>));
- DISCRETE(config, m_discrete, sprint4_discrete);
- m_discrete->add_route(0, "lspeaker", 1.0);
- m_discrete->add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, sprint4_discrete)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+
+MACHINE_CONFIG_END
ROM_START( sprint4 )
diff --git a/src/mame/drivers/sprint8.cpp b/src/mame/drivers/sprint8.cpp
index c11afb6c1a7..c952722d2e2 100644
--- a/src/mame/drivers/sprint8.cpp
+++ b/src/mame/drivers/sprint8.cpp
@@ -456,28 +456,29 @@ static GFXDECODE_START( gfx_sprint8 )
GFXDECODE_END
-void sprint8_state::sprint8(machine_config &config)
-{
+MACHINE_CONFIG_START(sprint8_state::sprint8)
+
/* basic machine hardware */
- M6800(config, m_maincpu, 11055000 / 11); /* ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &sprint8_state::sprint8_map);
+ MCFG_DEVICE_ADD("maincpu", M6800, 11055000 / 11) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(sprint8_map)
- TIMER(config, "input_timer").configure_periodic(FUNC(sprint8_state::input_callback), attotime::from_hz(60));
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("input_timer", sprint8_state, input_callback, attotime::from_hz(60))
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(512, 261);
- m_screen->set_visarea(0, 495, 0, 231);
- m_screen->set_screen_update(FUNC(sprint8_state::screen_update));
- m_screen->screen_vblank().set(FUNC(sprint8_state::screen_vblank));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_sprint8);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(512, 261)
+ MCFG_SCREEN_VISIBLE_AREA(0, 495, 0, 231)
+ MCFG_SCREEN_UPDATE_DRIVER(sprint8_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sprint8_state, screen_vblank))
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_sprint8)
PALETTE(config, m_palette, FUNC(sprint8_state::sprint8_palette), 36, 18);
sprint8_audio(config);
-}
+MACHINE_CONFIG_END
ROM_START( sprint8 )
diff --git a/src/mame/drivers/spyhuntertec.cpp b/src/mame/drivers/spyhuntertec.cpp
index 6bd9b1c6bf3..5e554220c9c 100644
--- a/src/mame/drivers/spyhuntertec.cpp
+++ b/src/mame/drivers/spyhuntertec.cpp
@@ -668,36 +668,39 @@ void spyhuntertec_state::machine_reset()
-void spyhuntertec_state::spyhuntertec(machine_config &config)
-{
+MACHINE_CONFIG_START(spyhuntertec_state::spyhuntertec)
+
// note: no ctc, no nvram
// 2*z80, 3*ay8912
// 2 XTALs: one 20MHz, other one near maincpu ?MHz
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); // NEC D780C-2 (rated 6MHz)
- m_maincpu->set_addrmap(AS_PROGRAM, &spyhuntertec_state::spyhuntertec_map);
- m_maincpu->set_addrmap(AS_IO, &spyhuntertec_state::spyhuntertec_portmap);
- m_maincpu->set_vblank_int("screen", FUNC(spyhuntertec_state::irq0_line_hold));
- TIMER(config, m_analog_timer).configure_generic(FUNC(spyhuntertec_state::analog_count_callback));
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000 ) // NEC D780C-2 (rated 6MHz)
+ MCFG_DEVICE_PROGRAM_MAP(spyhuntertec_map)
+ MCFG_DEVICE_IO_MAP(spyhuntertec_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", spyhuntertec_state, irq0_line_hold)
+ MCFG_TIMER_DRIVER_ADD("analog_timer", spyhuntertec_state, analog_count_callback)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(30*16, 30*8);
- m_screen->set_visarea(0, 30*16-1, 0, 30*8-1);
- m_screen->set_screen_update(FUNC(spyhuntertec_state::screen_update_spyhuntertec));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_spyhuntertec);
- PALETTE(config, m_palette).set_entries(64+4); // FUNC(spyhuntertec_state::spyhunt)
-
- Z80(config, m_audiocpu, 4000000); // SGS Z8400B1 (rated 2.5MHz?)
- m_audiocpu->set_addrmap(AS_PROGRAM, &spyhuntertec_state::spyhuntertec_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &spyhuntertec_state::spyhuntertec_sound_portmap);
- m_audiocpu->set_periodic_int(FUNC(spyhuntertec_state::irq0_line_assert), attotime::from_hz(1000));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(30*16, 30*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 30*16-1, 0, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(spyhuntertec_state, screen_update_spyhuntertec)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_spyhuntertec)
+ MCFG_PALETTE_ADD("palette", 64+4)
+
+// MCFG_PALETTE_INIT_OWNER(spyhuntertec_state,spyhunt)
+
+
+ MCFG_DEVICE_ADD("audiocpu", Z80, 4000000 ) // SGS Z8400B1 (rated 2.5MHz?)
+ MCFG_DEVICE_PROGRAM_MAP(spyhuntertec_sound_map)
+ MCFG_DEVICE_IO_MAP(spyhuntertec_sound_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(spyhuntertec_state, irq0_line_assert, 1000)
SPEAKER(config, "mono").front_center();
@@ -715,7 +718,8 @@ void spyhuntertec_state::spyhuntertec(machine_config &config)
ay2.port_a_write_callback().set(FUNC(spyhuntertec_state::ay2_porta_w));
AY8912(config, "ay3", 3000000/2).add_route(ALL_OUTPUTS, "mono", 0.25); // "
-}
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/squale.cpp b/src/mame/drivers/squale.cpp
index 3526408558e..b8d71898146 100644
--- a/src/mame/drivers/squale.cpp
+++ b/src/mame/drivers/squale.cpp
@@ -783,8 +783,8 @@ void squale_state::machine_reset()
MACHINE_CONFIG_START(squale_state::squale)
/* basic machine hardware */
- MC6809(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &squale_state::squale_mem);
+ MCFG_DEVICE_ADD("maincpu", MC6809, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(squale_mem)
/* Cartridge pia */
PIA6821(config, m_pia_u72, 0);
@@ -813,33 +813,33 @@ MACHINE_CONFIG_START(squale_state::squale)
m_ay8910->port_b_write_callback().set(FUNC(squale_state::ay_portb_w));
m_ay8910->add_route(ALL_OUTPUTS, "mono", 0.50);
- ACIA6850(config, m_acia, 0);
+ MCFG_DEVICE_ADD ("ef6850", ACIA6850, 0)
/* screen */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_screen_update("ef9365", FUNC(ef9365_device::screen_update));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 0, 256-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_UPDATE_DEVICE("ef9365", ef9365_device, screen_update)
- PALETTE(config, "palette").set_entries(16);
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
+ MCFG_PALETTE_ADD("palette", 16)
- EF9365(config, m_ef9365, VIDEO_CLOCK);
- m_ef9365->set_palette_tag("palette");
- m_ef9365->set_nb_bitplanes(4);
- m_ef9365->set_display_mode(ef9365_device::DISPLAY_MODE_256x256);
- TIMER(config, "squale_sl").configure_scanline(FUNC(squale_state::squale_scanline), "screen", 0, 10);
+ MCFG_DEVICE_ADD("ef9365", EF9365, VIDEO_CLOCK)
+ MCFG_EF936X_PALETTE("palette")
+ MCFG_EF936X_BITPLANES_CNT(4);
+ MCFG_EF936X_DISPLAYMODE(DISPLAY_MODE_256x256);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("squale_sl", squale_state, squale_scanline, "screen", 0, 10)
/* Floppy */
WD1770(config, m_fdc, 8_MHz_XTAL);
- FLOPPY_CONNECTOR(config, "wd1770:0", squale_floppies, "525qd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, "wd1770:1", squale_floppies, "525qd", floppy_image_device::default_floppy_formats);
- SOFTWARE_LIST(config, "flop525_list").set_original("squale");
+ MCFG_FLOPPY_DRIVE_ADD("wd1770:0", squale_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1770:1", squale_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_SOFTWARE_LIST_ADD("flop525_list", "squale")
/* Cartridge slot */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_linear_slot, "squale_cart")
MCFG_GENERIC_LOAD(squale_state, squale_cart)
- SOFTWARE_LIST(config, "cart_list").set_original("squale_cart");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "squale_cart")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/srmp2.cpp b/src/mame/drivers/srmp2.cpp
index fd7352d610e..d68744cda27 100644
--- a/src/mame/drivers/srmp2.cpp
+++ b/src/mame/drivers/srmp2.cpp
@@ -1135,13 +1135,13 @@ static GFXDECODE_START( gfx_srmp3 )
GFXDECODE_END
-void srmp2_state::srmp2(machine_config &config)
-{
+MACHINE_CONFIG_START(srmp2_state::srmp2)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 16000000/2); /* 8.00 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &srmp2_state::srmp2_map);
- m_maincpu->set_vblank_int("screen", FUNC(srmp2_state::irq4_line_assert));
- m_maincpu->set_periodic_int(FUNC(srmp2_state::irq2_line_assert), attotime::from_hz(15*60)); /* Interrupt times is not understood */
+ MCFG_DEVICE_ADD("maincpu", M68000,16000000/2) /* 8.00 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(srmp2_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", srmp2_state, irq4_line_assert)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(srmp2_state, irq2_line_assert, 15*60) /* Interrupt times is not understood */
MCFG_MACHINE_START_OVERRIDE(srmp2_state,srmp2)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -1150,13 +1150,13 @@ void srmp2_state::srmp2(machine_config &config)
m_seta001->set_gfxdecode_tag("gfxdecode");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(464, 256-16);
- screen.set_visarea(16, 464-1, 8, 256-1-24);
- screen.set_screen_update(FUNC(srmp2_state::screen_update_srmp2));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(464, 256-16)
+ MCFG_SCREEN_VISIBLE_AREA(16, 464-1, 8, 256-1-24)
+ MCFG_SCREEN_UPDATE_DRIVER(srmp2_state, screen_update_srmp2)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_srmp2);
PALETTE(config, "palette", FUNC(srmp2_state::srmp2_palette)).set_format(palette_device::xRGB_555, 1024); // sprites only
@@ -1169,19 +1169,22 @@ void srmp2_state::srmp2(machine_config &config)
aysnd.port_b_read_callback().set_ioport("DSW1");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.40);
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(srmp2_state::adpcm_int)); /* IRQ handler */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.45);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, srmp2_state, adpcm_int)) /* IRQ handler */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_START(srmp2_state::srmp3)
-void srmp2_state::srmp3(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 3500000); /* 3.50 MHz? or 4.00 MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &srmp2_state::srmp3_map);
- m_maincpu->set_addrmap(AS_IO, &srmp2_state::srmp3_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(srmp2_state::irq0_line_assert));
+
+ MCFG_DEVICE_ADD("maincpu", Z80, 3500000) /* 3.50 MHz ? */
+ // 4000000, /* 4.00 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(srmp3_map)
+ MCFG_DEVICE_IO_MAP(srmp3_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", srmp2_state, irq0_line_assert)
MCFG_MACHINE_START_OVERRIDE(srmp2_state,srmp3)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -1191,13 +1194,13 @@ void srmp2_state::srmp3(machine_config &config)
m_seta001->set_gfxbank_callback(FUNC(srmp2_state::srmp3_gfxbank_callback), this);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(400, 256-16);
- screen.set_visarea(16, 400-1, 8, 256-1-24);
- screen.set_screen_update(FUNC(srmp2_state::screen_update_srmp3));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(400, 256-16)
+ MCFG_SCREEN_VISIBLE_AREA(16, 400-1, 8, 256-1-24)
+ MCFG_SCREEN_UPDATE_DRIVER(srmp2_state, screen_update_srmp3)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_srmp3);
PALETTE(config, "palette", FUNC(srmp2_state::srmp3_palette)).set_format(palette_device::xRGB_555, 512); // sprites only
@@ -1210,29 +1213,29 @@ void srmp2_state::srmp3(machine_config &config)
aysnd.port_b_read_callback().set_ioport("DSW1");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.20);
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(srmp2_state::adpcm_int)); /* IRQ handler */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.45);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, srmp2_state, adpcm_int)) /* IRQ handler */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
+MACHINE_CONFIG_END
-void srmp2_state::rmgoldyh(machine_config &config)
-{
+MACHINE_CONFIG_START(srmp2_state::rmgoldyh)
srmp3(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &srmp2_state::rmgoldyh_map);
- m_maincpu->set_addrmap(AS_IO, &srmp2_state::rmgoldyh_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(rmgoldyh_map)
+ MCFG_DEVICE_IO_MAP(rmgoldyh_io_map)
MCFG_MACHINE_START_OVERRIDE(srmp2_state,rmgoldyh)
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(srmp2_state::mjyuugi)
-void srmp2_state::mjyuugi(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, 16000000/2); /* 8.00 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &srmp2_state::mjyuugi_map);
- m_maincpu->set_vblank_int("screen", FUNC(srmp2_state::irq4_line_assert));
- m_maincpu->set_periodic_int(FUNC(srmp2_state::irq2_line_assert), attotime::from_hz(15*60)); /* Interrupt times is not understood */
+ MCFG_DEVICE_ADD("maincpu", M68000,16000000/2) /* 8.00 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(mjyuugi_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", srmp2_state, irq4_line_assert)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(srmp2_state, irq2_line_assert, 15*60) /* Interrupt times is not understood */
MCFG_MACHINE_START_OVERRIDE(srmp2_state,mjyuugi)
@@ -1243,13 +1246,13 @@ void srmp2_state::mjyuugi(machine_config &config)
m_seta001->set_gfxbank_callback(FUNC(srmp2_state::srmp3_gfxbank_callback), this);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(400, 256-16);
- screen.set_visarea(16, 400-1, 0, 256-1-16);
- screen.set_screen_update(FUNC(srmp2_state::screen_update_mjyuugi));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(400, 256-16)
+ MCFG_SCREEN_VISIBLE_AREA(16, 400-1, 0, 256-1-16)
+ MCFG_SCREEN_UPDATE_DRIVER(srmp2_state, screen_update_mjyuugi)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_srmp3);
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 512); // sprites only
@@ -1262,11 +1265,11 @@ void srmp2_state::mjyuugi(machine_config &config)
aysnd.port_b_read_callback().set_ioport("DSW1");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.20);
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(srmp2_state::adpcm_int)); /* IRQ handler */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.45);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, srmp2_state, adpcm_int)) /* IRQ handler */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/srmp5.cpp b/src/mame/drivers/srmp5.cpp
index 525e7be34bb..40096beda47 100644
--- a/src/mame/drivers/srmp5.cpp
+++ b/src/mame/drivers/srmp5.cpp
@@ -566,27 +566,27 @@ static GFXDECODE_START( gfx_srmp5 )
//GFXDECODE_ENTRY( "gfx1", 0, tile_16x16x8_layout, 0x0, 0x800 )
GFXDECODE_END
-void srmp5_state::srmp5(machine_config &config)
-{
+MACHINE_CONFIG_START(srmp5_state::srmp5)
+
/* basic machine hardware */
R3051(config, m_maincpu, 25000000);
m_maincpu->set_endianness(ENDIANNESS_LITTLE);
m_maincpu->set_addrmap(AS_PROGRAM, &srmp5_state::srmp5_mem);
m_maincpu->set_vblank_int("screen", FUNC(srmp5_state::irq4_line_assert));
- ST0016_CPU(config, m_soundcpu, 8000000);
- m_soundcpu->set_addrmap(AS_PROGRAM, &srmp5_state::st0016_mem);
- m_soundcpu->set_addrmap(AS_IO, &srmp5_state::st0016_io);
- m_soundcpu->set_vblank_int("screen", FUNC(srmp5_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("soundcpu",ST0016_CPU,8000000)
+ MCFG_DEVICE_PROGRAM_MAP(st0016_mem)
+ MCFG_DEVICE_IO_MAP(st0016_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", srmp5_state, irq0_line_hold)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(96*8, 64*8);
- screen.set_visarea(0*8, 42*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(srmp5_state::screen_update_srmp5));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(96*8, 64*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 42*8-1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(srmp5_state, screen_update_srmp5)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x10000); // 0x20000? only first 0x1800 entries seem to be used outside memory test
m_palette->set_membits(16);
@@ -594,8 +594,8 @@ void srmp5_state::srmp5(machine_config &config)
#ifdef DEBUG_CHAR
GFXDECODE(config, m_gfxdecode, m_palette, gfx_srmp5);
#endif
-}
+MACHINE_CONFIG_END
ROM_START( srmp5 )
ROM_REGION( 0x200000, "maincpu", 0 ) // "PRG00" - "PRG03"
diff --git a/src/mame/drivers/srmp6.cpp b/src/mame/drivers/srmp6.cpp
index 2643a5ee1b6..08154034d1c 100644
--- a/src/mame/drivers/srmp6.cpp
+++ b/src/mame/drivers/srmp6.cpp
@@ -26,8 +26,6 @@ TODO:
- fix DMA operations
- fix video emulation
-Video reference : https://youtu.be/wNm3tu1iGvM
-
Are there other games on this 'System S12' hardware ???
---------------- dump infos ----------------
@@ -72,7 +70,6 @@ Dumped 06/15/2000
#include "emu.h"
#include "cpu/m68000/m68000.h"
-#include "video/bufsprite.h"
#include "sound/nile.h"
#include "emupal.h"
#include "screen.h"
@@ -84,54 +81,51 @@ class srmp6_state : public driver_device
public:
srmp6_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
+ m_sprram(*this, "sprram"),
m_chrram(*this, "chrram"),
m_dmaram(*this, "dmaram"),
m_video_regs(*this, "video_regs"),
- m_nile_region(*this, "nile"),
- m_nile_bank(*this, "nile_bank"),
- m_key_io(*this, "KEY%u", 0U),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette"),
- m_sprram(*this, "sprram")
+ m_palette(*this, "palette")
{ }
void srmp6(machine_config &config);
private:
- std::unique_ptr<u16[]> m_tileram;
- required_shared_ptr<u16> m_chrram;
- optional_shared_ptr<u16> m_dmaram;
- required_shared_ptr<u16> m_video_regs;
- required_region_ptr<u8> m_nile_region;
+ std::unique_ptr<uint16_t[]> m_tileram;
+ required_shared_ptr<uint16_t> m_sprram;
+ required_shared_ptr<uint16_t> m_chrram;
+ optional_shared_ptr<uint16_t> m_dmaram;
+ required_shared_ptr<uint16_t> m_video_regs;
- required_memory_bank m_nile_bank;
- required_ioport_array<4> m_key_io;
+ std::unique_ptr<uint16_t[]> m_sprram_old;
int m_brightness;
- u16 m_input_select;
+ uint16_t m_input_select;
- u16 m_lastb;
- u16 m_lastb2;
+ unsigned short m_lastb;
+ unsigned short m_lastb2;
int m_destl;
- DECLARE_WRITE16_MEMBER(input_select_w);
- DECLARE_READ16_MEMBER(inputs_r);
+ void init_INIT();
+
+ DECLARE_WRITE16_MEMBER(srmp6_input_select_w);
+ DECLARE_READ16_MEMBER(srmp6_inputs_r);
DECLARE_WRITE16_MEMBER(video_regs_w);
DECLARE_READ16_MEMBER(video_regs_r);
- DECLARE_WRITE16_MEMBER(dma_w);
+ DECLARE_WRITE16_MEMBER(srmp6_dma_w);
DECLARE_READ16_MEMBER(tileram_r);
DECLARE_WRITE16_MEMBER(tileram_w);
DECLARE_WRITE16_MEMBER(paletteram_w);
- DECLARE_READ16_MEMBER(irq_ack_r);
+ DECLARE_READ16_MEMBER(srmp6_irq_ack_r);
virtual void machine_start() override;
virtual void video_start() override;
- u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update_srmp6(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void update_palette();
- u32 process(u8 b,u32 dst_offset);
+ uint32_t process(uint8_t b,uint32_t dst_offset);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
- required_device<buffered_spriteram16_device> m_sprram;
void srmp6_map(address_map &map);
};
@@ -143,109 +137,105 @@ static const gfx_layout tiles8x8_layout =
8,8,
(0x100000*16)/0x40,
8,
- { STEP8(0,1) },
- { STEP8(0,8) },
- { STEP8(0,8*8) },
+ { 0,1,2,3,4,5,6,7 },
+ { 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8 },
+ { 0*64,1*64,2*64,3*64,4*64,5*64,6*64,7*64 },
8*64
};
-static inline u8 get_fade(int c, int f) // same as CPS3?
-{
- // bit 7 unknown
- // bit 6 fade enable / disable
- // bit 5 fade mode
- // bit 4-0 fade value
- if (f & 0x40) // Fading enable / disable
- {
- f &= 0x3f;
- c = (f & 0x20) ? (c + (((0x1f - c) * (f & 0x1f)) / 0x1f)) : ((c * f) / 0x1f);
- c = std::max(0, std::min(0x1f, c));
- }
- return c;
-}
-
void srmp6_state::update_palette()
{
- int brg = m_brightness & 0x7f;
+ int8_t r, g ,b;
+ int brg = m_brightness - 0x60;
+ int i;
- for (int i = 0; i < m_palette->entries(); i++)
+ for(i = 0; i < 0x800; i++)
{
- u8 r = m_palette->basemem().read16(i) >> 0 & 0x1F;
- u8 g = m_palette->basemem().read16(i) >> 5 & 0x1F;
- u8 b = m_palette->basemem().read16(i) >> 10 & 0x1F;
-
- if (brg & 0x40)
- {
- r = get_fade(r, brg);
- g = get_fade(g, brg);
- b = get_fade(b, brg);
+ r = m_palette->basemem().read16(i) >> 0 & 0x1F;
+ g = m_palette->basemem().read16(i) >> 5 & 0x1F;
+ b = m_palette->basemem().read16(i) >> 10 & 0x1F;
+
+ if(brg < 0) {
+ r += (r * brg) >> 5;
+ if(r < 0) r = 0;
+ g += (g * brg) >> 5;
+ if(g < 0) g = 0;
+ b += (b * brg) >> 5;
+ if(b < 0) b = 0;
+ }
+ else if(brg > 0) {
+ r += ((0x1F - r) * brg) >> 5;
+ if(r > 0x1F) r = 0x1F;
+ g += ((0x1F - g) * brg) >> 5;
+ if(g > 0x1F) g = 0x1F;
+ b += ((0x1F - b) * brg) >> 5;
+ if(b > 0x1F) b = 0x1F;
}
- m_palette->set_pen_color(i, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(i, rgb_t(r << 3, g << 3, b << 3));
}
}
void srmp6_state::video_start()
{
- m_tileram = make_unique_clear<u16[]>(0x100000*16/2);
+ m_tileram = make_unique_clear<uint16_t[]>(0x100000*16/2);
m_dmaram.allocate(0x100/2);
+ m_sprram_old = make_unique_clear<uint16_t[]>(0x80000/2);
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(0, std::make_unique<gfx_element>(m_palette, tiles8x8_layout, (u8*)m_tileram.get(), 0, m_palette->entries() / 256, 0));
+ m_gfxdecode->set_gfx(0, std::make_unique<gfx_element>(m_palette, tiles8x8_layout, (uint8_t*)m_tileram.get(), 0, m_palette->entries() / 256, 0));
m_gfxdecode->gfx(0)->set_granularity(256);
- m_brightness = 0;
-
- save_pointer(NAME(m_tileram), 0x100000*16/2);
- save_item(NAME(m_brightness));
+ m_brightness = 0x60;
}
#if 0
-static int xixi = 0;
+static int xixi=0;
#endif
-u32 srmp6_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+uint32_t srmp6_state::screen_update_srmp6(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int alpha;
int x,y,tileno,height,width,xw,yw,sprite,xb,yb;
- u16 *sprite_list = m_sprram->buffer();
- u16 mainlist_offset = 0;
+ uint16_t *sprite_list = m_sprram_old.get();
+ uint16_t mainlist_offset = 0;
union
{
- s16 a;
- u16 b;
+ int16_t a;
+ uint16_t b;
} temp;
bitmap.fill(0, cliprect);
#if 0
/* debug */
- if (machine().input().code_pressed_once(KEYCODE_Q))
+ if(machine().input().code_pressed_once(KEYCODE_Q))
{
++xixi;
- logerror("%x\n",xixi);
+ printf("%x\n",xixi);
}
- if (machine().input().code_pressed_once(KEYCODE_W))
+ if(machine().input().code_pressed_once(KEYCODE_W))
{
--xixi;
- logerror("%x\n",xixi);
+ printf("%x\n",xixi);
}
#endif
/* Main spritelist is 0x0000 - 0x1fff in spriteram, sublists follow */
while (mainlist_offset<0x2000/2)
{
- u16 *sprite_sublist = &sprite_list[sprite_list[mainlist_offset+1]<<3];
- u16 sublist_length=sprite_list[mainlist_offset+0] & 0x7fff; //+1 ?
- s16 global_x,global_y, flip_x, flip_y;
- u16 global_pal;
+ uint16_t *sprite_sublist = &m_sprram_old[sprite_list[mainlist_offset+1]<<3];
+ uint16_t sublist_length=sprite_list[mainlist_offset+0]&0x7fff; //+1 ?
+ int16_t global_x,global_y, flip_x, flip_y;
+ uint16_t global_pal;
/* end of list marker */
if (sprite_list[mainlist_offset+0] == 0x8000)
break;
- if (sprite_list[mainlist_offset+0] != 0)
+
+ if(sprite_list[mainlist_offset+0]!=0)
{
temp.b=sprite_list[mainlist_offset+2];
global_x=temp.a;
@@ -254,19 +244,19 @@ u32 srmp6_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, cons
global_pal = sprite_list[mainlist_offset+4] & 0x7;
- if ((sprite_list[mainlist_offset+5] & 0x700) == 0x700)
+ if((sprite_list[mainlist_offset+5] & 0x700) == 0x700)
{
- alpha = pal5bit(sprite_list[mainlist_offset+5] & 0x1F);
+ alpha = (sprite_list[mainlist_offset+5] & 0x1F) << 3;
}
else
{
alpha = 255;
}
- // logerror("%x %x \n",sprite_list[mainlist_offset+1],sublist_length);
+ // printf("%x %x \n",sprite_list[mainlist_offset+1],sublist_length);
- while (sublist_length)
+ while(sublist_length)
{
- sprite=sprite_sublist[0] & 0x7fff;
+ sprite=sprite_sublist[0]&0x7fff;
flip_x=sprite_sublist[1]>>8&1;
flip_y=sprite_sublist[1]>>9&1;
temp.b=sprite_sublist[2];
@@ -276,26 +266,26 @@ u32 srmp6_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, cons
//x+=global_x;
//y+=global_y;
- width=((sprite_sublist[1]) & 0x3);
- height=((sprite_sublist[1]>>2) & 0x3);
+ width=((sprite_sublist[1])&0x3);
+ height=((sprite_sublist[1]>>2)&0x3);
height = 1 << height;
width = 1 << width;
y-=height*8;
tileno = sprite;
- //tileno += (sprite_list[4] & 0xf)*0x4000; // this makes things worse in places (title screen for example)
+ //tileno += (sprite_list[4]&0xf)*0x4000; // this makes things worse in places (title screen for example)
- for (xw = 0; xw < width; xw++)
+ for(xw=0;xw<width;xw++)
{
- for (yw = 0; yw < height; yw++)
+ for(yw=0;yw<height;yw++)
{
- if (!flip_x)
+ if(!flip_x)
xb=x+xw*8+global_x;
else
xb=x+(width-xw-1)*8+global_x;
- if (!flip_y)
+ if(!flip_y)
yb=y+yw*8+global_y;
else
yb=y+(height-yw-1)*8+global_y;
@@ -304,6 +294,7 @@ u32 srmp6_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, cons
tileno++;
}
}
+
sprite_sublist+=8;
--sublist_length;
}
@@ -311,9 +302,9 @@ u32 srmp6_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, cons
mainlist_offset+=8;
}
- m_sprram->copy();
+ memcpy(m_sprram_old.get(), m_sprram, 0x80000);
- if (machine().input().code_pressed_once(KEYCODE_Q))
+ if(machine().input().code_pressed_once(KEYCODE_Q))
{
FILE *p=fopen("tileram.bin","wb");
fwrite(m_tileram.get(), 1, 0x100000*16, p);
@@ -330,23 +321,25 @@ u32 srmp6_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, cons
void srmp6_state::machine_start()
{
- m_nile_bank->configure_entries(0, 16, memregion("nile")->base(), 0x200000);
- save_item(NAME(m_input_select));
+ membank("bank1")->configure_entries(0, 16, memregion("nile")->base(), 0x200000);
}
-WRITE16_MEMBER(srmp6_state::input_select_w)
+WRITE16_MEMBER(srmp6_state::srmp6_input_select_w)
{
m_input_select = data & 0x0f;
}
-READ16_MEMBER(srmp6_state::inputs_r)
+READ16_MEMBER(srmp6_state::srmp6_inputs_r)
{
+ if (offset == 0) // DSW
+ return ioport("DSW")->read();
+
switch (m_input_select) // inputs
{
- case 1<<0: return m_key_io[0]->read();
- case 1<<1: return m_key_io[1]->read();
- case 1<<2: return m_key_io[2]->read();
- case 1<<3: return m_key_io[3]->read();
+ case 1<<0: return ioport("KEY0")->read();
+ case 1<<1: return ioport("KEY1")->read();
+ case 1<<2: return ioport("KEY2")->read();
+ case 1<<3: return ioport("KEY3")->read();
}
return 0;
@@ -355,20 +348,20 @@ READ16_MEMBER(srmp6_state::inputs_r)
WRITE16_MEMBER(srmp6_state::video_regs_w)
{
- switch (offset)
+ switch(offset)
{
case 0x5e/2: // bank switch, used by ROM check
{
LOG(("%x\n",data));
- m_nile_bank->set_entry(data & 0x0f);
+ membank("bank1")->set_entry(data & 0x0f);
break;
}
// set by IT4
case 0x5c/2: // either 0x40 explicitely in many places, or according $2083b0 (IT4)
//Fade in/out (0x40(dark)-0x60(normal)-0x7e?(bright) reset by 0x00?
- if (m_brightness != data)
- {
+ data = (!data)?0x60:(data == 0x5e)?0x60:data;
+ if (m_brightness != data) {
m_brightness = data;
update_palette();
}
@@ -399,17 +392,18 @@ READ16_MEMBER(srmp6_state::video_regs_r)
/* DMA RLE stuff - the same as CPS3 */
-u32 srmp6_state::process(u8 b,u32 dst_offset)
+uint32_t srmp6_state::process(uint8_t b,uint32_t dst_offset)
{
- int l = 0;
+ int l=0;
- u8 *tram=(u8*)m_tileram.get();
+ uint8_t *tram=(uint8_t*)m_tileram.get();
if (m_lastb == m_lastb2) //rle
{
- int rle=(b+1) & 0xff;
+ int i;
+ int rle=(b+1)&0xff;
- for (int i = 0; i <rle; ++i)
+ for(i=0;i<rle;++i)
{
tram[dst_offset + m_destl] = m_lastb;
m_gfxdecode->gfx(0)->mark_dirty((dst_offset + m_destl)/0x40);
@@ -433,17 +427,18 @@ u32 srmp6_state::process(u8 b,u32 dst_offset)
}
-WRITE16_MEMBER(srmp6_state::dma_w)
+WRITE16_MEMBER(srmp6_state::srmp6_dma_w)
{
- u16* dmaram = m_dmaram;
+ uint16_t* dmaram = m_dmaram;
COMBINE_DATA(&dmaram[offset]);
if (offset==13 && dmaram[offset]==0x40)
{
- u32 srctab=2*((((u32)dmaram[5])<<16)|dmaram[4]);
- u32 srcdata=2*((((u32)dmaram[11])<<16)|dmaram[10]);
- u32 len=4*(((((u32)dmaram[7]&3)<<16)|dmaram[6])+1); //??? WRONG!
- int tempidx = 0;
+ const uint8_t *rom = memregion("nile")->base();
+ uint32_t srctab=2*((((uint32_t)dmaram[5])<<16)|dmaram[4]);
+ uint32_t srcdata=2*((((uint32_t)dmaram[11])<<16)|dmaram[10]);
+ uint32_t len=4*(((((uint32_t)dmaram[7]&3)<<16)|dmaram[6])+1); //??? WRONG!
+ int tempidx=0;
/* show params */
LOG(("DMA! %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x\n",
@@ -467,21 +462,22 @@ WRITE16_MEMBER(srmp6_state::dma_w)
m_lastb = 0xfffe;
m_lastb2 = 0xffff;
- while (1)
+ while(1)
{
- u8 ctrl=m_nile_region[srcdata];
+ int i;
+ uint8_t ctrl=rom[srcdata];
++srcdata;
- for (int i = 0; i < 8; ++i)
+ for(i=0;i<8;++i)
{
- u8 p=m_nile_region[srcdata];
+ uint8_t p=rom[srcdata];
- if (ctrl & 0x80)
+ if(ctrl&0x80)
{
- u8 real_byte;
- real_byte = m_nile_region[srctab+p*2];
+ uint8_t real_byte;
+ real_byte = rom[srctab+p*2];
tempidx+=process(real_byte,tempidx);
- real_byte = m_nile_region[srctab+p*2+1];//px[DMA_XOR((current_table_address+p*2+1))];
+ real_byte = rom[srctab+p*2+1];//px[DMA_XOR((current_table_address+p*2+1))];
tempidx+=process(real_byte,tempidx);
}
else
@@ -492,7 +488,8 @@ WRITE16_MEMBER(srmp6_state::dma_w)
ctrl<<=1;
++srcdata;
- if (tempidx >= len)
+
+ if(tempidx>=len)
{
LOG(("%x\n",srcdata));
return;
@@ -510,38 +507,52 @@ READ16_MEMBER(srmp6_state::tileram_r)
WRITE16_MEMBER(srmp6_state::tileram_w)
{
- //u16 tmp;
+ //uint16_t tmp;
COMBINE_DATA(&m_chrram[offset]);
/* are the DMA registers enabled some other way, or always mapped here, over RAM? */
if (offset >= 0xfff00/2 && offset <= 0xfff1a/2 )
{
offset &=0x1f;
- dma_w(space,offset,data,mem_mask);
+ srmp6_dma_w(space,offset,data,mem_mask);
}
}
WRITE16_MEMBER(srmp6_state::paletteram_w)
{
- int brg = m_brightness & 0x7f;
+ int8_t r, g, b;
+ int brg = m_brightness - 0x60;
m_palette->write16(space, offset, data, mem_mask);
- if (brg & 0x40)
+ if(brg)
{
- u8 r = m_palette->basemem().read16(offset) >> 0 & 0x1F;
- u8 g = m_palette->basemem().read16(offset) >> 5 & 0x1F;
- u8 b = m_palette->basemem().read16(offset) >> 10 & 0x1F;
-
- r = get_fade(r, brg);
- g = get_fade(g, brg);
- b = get_fade(b, brg);
+ r = data >> 0 & 0x1F;
+ g = data >> 5 & 0x1F;
+ b = data >> 10 & 0x1F;
+
+ if(brg < 0) {
+ r += (r * brg) >> 5;
+ if(r < 0) r = 0;
+ g += (g * brg) >> 5;
+ if(g < 0) g = 0;
+ b += (b * brg) >> 5;
+ if(b < 0) b = 0;
+ }
+ else if(brg > 0) {
+ r += ((0x1F - r) * brg) >> 5;
+ if(r > 0x1F) r = 0x1F;
+ g += ((0x1F - g) * brg) >> 5;
+ if(g > 0x1F) g = 0x1F;
+ b += ((0x1F - b) * brg) >> 5;
+ if(b > 0x1F) b = 0x1F;
+ }
- m_palette->set_pen_color(offset, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset, rgb_t(r << 3, g << 3, b << 3));
}
}
-READ16_MEMBER(srmp6_state::irq_ack_r)
+READ16_MEMBER(srmp6_state::srmp6_irq_ack_r)
{
m_maincpu->set_input_line(4, CLEAR_LINE);
return 0; // value read doesn't matter
@@ -551,29 +562,26 @@ void srmp6_state::srmp6_map(address_map &map)
{
map(0x000000, 0x0fffff).rom();
map(0x200000, 0x23ffff).ram(); // work RAM
+ map(0x600000, 0x7fffff).bankr("bank1"); // banked ROM (used by ROM check)
+ map(0x800000, 0x9fffff).rom().region("user1", 0);
- map(0x300000, 0x300005).w(FUNC(srmp6_state::input_select_w)); // inputs
- map(0x300000, 0x300001).portr("DSW");
- map(0x300002, 0x300005).r(FUNC(srmp6_state::inputs_r)); // inputs
+ map(0x300000, 0x300005).rw(FUNC(srmp6_state::srmp6_inputs_r), FUNC(srmp6_state::srmp6_input_select_w)); // inputs
+ map(0x480000, 0x480fff).ram().w(FUNC(srmp6_state::paletteram_w)).share("palette");
+ map(0x4d0000, 0x4d0001).r(FUNC(srmp6_state::srmp6_irq_ack_r));
// OBJ RAM: checked [$400000-$47dfff]
map(0x400000, 0x47ffff).ram().share("sprram");
- map(0x480000, 0x480fff).ram().w(FUNC(srmp6_state::paletteram_w)).share("palette");
+ // CHR RAM: checked [$500000-$5fffff]
+ map(0x500000, 0x5fffff).rw(FUNC(srmp6_state::tileram_r), FUNC(srmp6_state::tileram_w)).share("chrram");
+ //AM_RANGE(0x5fff00, 0x5fffff) AM_WRITE(dma_w) AM_SHARE("dmaram")
map(0x4c0000, 0x4c006f).rw(FUNC(srmp6_state::video_regs_r), FUNC(srmp6_state::video_regs_w)).share("video_regs"); // ? gfx regs ST-0026 NiLe
- map(0x4d0000, 0x4d0001).r(FUNC(srmp6_state::irq_ack_r));
map(0x4e0000, 0x4e00ff).rw("nile", FUNC(nile_device::nile_snd_r), FUNC(nile_device::nile_snd_w));
map(0x4e0100, 0x4e0101).rw("nile", FUNC(nile_device::nile_sndctrl_r), FUNC(nile_device::nile_sndctrl_w));
//AM_RANGE(0x4e0110, 0x4e0111) AM_NOP // ? accessed once ($268dc, written $b.w)
-
- // CHR RAM: checked [$500000-$5fffff]
- map(0x500000, 0x5fffff).rw(FUNC(srmp6_state::tileram_r), FUNC(srmp6_state::tileram_w)).share("chrram");
//AM_RANGE(0x5fff00, 0x5fff1f) AM_RAM // ? see routine $5ca8, video_regs related ???
- //AM_RANGE(0x5fff00, 0x5fffff) AM_WRITE(dma_w) AM_SHARE("dmaram")
- map(0x600000, 0x7fffff).bankr("nile_bank"); // banked ROM (used by ROM check)
- map(0x800000, 0x9fffff).rom().region("user1", 0);
//AM_RANGE(0xf00004, 0xf00005) AM_RAM // ?
//AM_RANGE(0xf00006, 0xf00007) AM_RAM // ?
@@ -687,14 +695,12 @@ void srmp6_state::srmp6(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 64*8);
screen.set_visarea(0*8, 42*8-1, 0*8, 30*8-1);
- screen.set_screen_update(FUNC(srmp6_state::screen_update));
+ screen.set_screen_update(FUNC(srmp6_state::screen_update_srmp6));
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x800);
GFXDECODE(config, m_gfxdecode, m_palette, gfxdecode_device::empty);
- BUFFERED_SPRITERAM16(config, m_sprram);
-
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
diff --git a/src/mame/drivers/srumbler.cpp b/src/mame/drivers/srumbler.cpp
index be68eac5b0b..1eb3d4490a0 100644
--- a/src/mame/drivers/srumbler.cpp
+++ b/src/mame/drivers/srumbler.cpp
@@ -245,31 +245,31 @@ GFXDECODE_END
-void srumbler_state::srumbler(machine_config &config)
-{
+MACHINE_CONFIG_START(srumbler_state::srumbler)
+
/* basic machine hardware */
- MC6809(config, m_maincpu, 6000000); /* HD68B09P at 6 MHz (?) */
- m_maincpu->set_addrmap(AS_PROGRAM, &srumbler_state::srumbler_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(srumbler_state::interrupt), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", MC6809, 6000000) /* HD68B09P at 6 MHz (?) */
+ MCFG_DEVICE_PROGRAM_MAP(srumbler_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", srumbler_state, interrupt, "screen", 0, 1)
- z80_device &audiocpu(Z80(config, "audiocpu", 3000000)); /* 3 MHz ??? */
- audiocpu.set_addrmap(AS_PROGRAM, &srumbler_state::srumbler_sound_map);
- audiocpu.set_periodic_int(FUNC(srumbler_state::irq0_line_hold), attotime::from_hz(4*60));
+ MCFG_DEVICE_ADD("audiocpu", Z80, 3000000) /* 3 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(srumbler_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(srumbler_state, irq0_line_hold, 4*60)
/* video hardware */
- BUFFERED_SPRITERAM8(config, m_spriteram);
+ MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(10*8, (64-10)*8-1, 1*8, 31*8-1 );
- screen.set_screen_update(FUNC(srumbler_state::screen_update));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(10*8, (64-10)*8-1, 1*8, 31*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(srumbler_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_srumbler);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_srumbler)
PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 512);
@@ -278,18 +278,18 @@ void srumbler_state::srumbler(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- ym2203_device &ym1(YM2203(config, "ym1", 4000000));
- ym1.add_route(0, "mono", 0.10);
- ym1.add_route(1, "mono", 0.10);
- ym1.add_route(2, "mono", 0.10);
- ym1.add_route(3, "mono", 0.30);
-
- ym2203_device &ym2(YM2203(config, "ym2", 4000000));
- ym2.add_route(0, "mono", 0.10);
- ym2.add_route(1, "mono", 0.10);
- ym2.add_route(2, "mono", 0.10);
- ym2.add_route(3, "mono", 0.30);
-}
+ MCFG_DEVICE_ADD("ym1", YM2203, 4000000)
+ MCFG_SOUND_ROUTE(0, "mono", 0.10)
+ MCFG_SOUND_ROUTE(1, "mono", 0.10)
+ MCFG_SOUND_ROUTE(2, "mono", 0.10)
+ MCFG_SOUND_ROUTE(3, "mono", 0.30)
+
+ MCFG_DEVICE_ADD("ym2", YM2203, 4000000)
+ MCFG_SOUND_ROUTE(0, "mono", 0.10)
+ MCFG_SOUND_ROUTE(1, "mono", 0.10)
+ MCFG_SOUND_ROUTE(2, "mono", 0.10)
+ MCFG_SOUND_ROUTE(3, "mono", 0.30)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ssem.cpp b/src/mame/drivers/ssem.cpp
index ce1b398f9ab..8a1ac6410e1 100644
--- a/src/mame/drivers/ssem.cpp
+++ b/src/mame/drivers/ssem.cpp
@@ -634,20 +634,20 @@ void ssem_state::machine_reset()
MACHINE_CONFIG_START(ssem_state::ssem)
/* basic machine hardware */
- SSEMCPU(config, m_maincpu, 700);
- m_maincpu->set_addrmap(AS_PROGRAM, &ssem_state::ssem_map);
+ MCFG_DEVICE_ADD("maincpu", SSEMCPU, 700)
+ MCFG_DEVICE_PROGRAM_MAP(ssem_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(50);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(256, 280);
- m_screen->set_visarea(0, 255, 0, 279);
- m_screen->set_screen_update(FUNC(ssem_state::screen_update_ssem));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 280)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 279)
+ MCFG_SCREEN_UPDATE_DRIVER(ssem_state, screen_update_ssem)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* quickload */
- MCFG_QUICKLOAD_ADD("quickload", ssem_state, ssem_store, "snp,asm", attotime::from_seconds(1))
+ MCFG_QUICKLOAD_ADD("quickload", ssem_state, ssem_store, "snp,asm", 1)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ssfindo.cpp b/src/mame/drivers/ssfindo.cpp
index 4bc633cb729..abb19fd6dc0 100644
--- a/src/mame/drivers/ssfindo.cpp
+++ b/src/mame/drivers/ssfindo.cpp
@@ -796,45 +796,46 @@ static INPUT_PORTS_START( tetfight )
INPUT_PORTS_END
-void ssfindo_state::ssfindo(machine_config &config)
-{
+MACHINE_CONFIG_START(ssfindo_state::ssfindo)
+
/* basic machine hardware */
- ARM7(config, m_maincpu, 54000000); // guess...
- m_maincpu->set_addrmap(AS_PROGRAM, &ssfindo_state::ssfindo_map);
- m_maincpu->set_vblank_int("screen", FUNC(ssfindo_state::interrupt));
+ MCFG_DEVICE_ADD("maincpu", ARM7, 54000000) // guess...
+ MCFG_DEVICE_PROGRAM_MAP(ssfindo_map)
- I2C_24C01(config, m_i2cmem);
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ssfindo_state, interrupt)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(320, 256);
- screen.set_visarea(0, 319, 0, 239);
- screen.set_screen_update(FUNC(ssfindo_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_24C01_ADD("i2cmem")
- PALETTE(config, m_palette).set_entries(256);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(320, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
+ MCFG_SCREEN_UPDATE_DRIVER(ssfindo_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
-void ssfindo_state::ppcar(machine_config &config)
-{
+ MCFG_PALETTE_ADD("palette", 256)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(ssfindo_state::ppcar)
ssfindo(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &ssfindo_state::ppcar_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ppcar_map)
- config.device_remove("i2cmem");
-}
+ MCFG_DEVICE_REMOVE("i2cmem")
+MACHINE_CONFIG_END
-void ssfindo_state::tetfight(machine_config &config)
-{
+MACHINE_CONFIG_START(ssfindo_state::tetfight)
ppcar(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &ssfindo_state::tetfight_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tetfight_map)
- I2C_24C02(config, m_i2cmem);
-}
+ MCFG_24C02_ADD("i2cmem")
+MACHINE_CONFIG_END
ROM_START( ssfindo )
ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
diff --git a/src/mame/drivers/sshot.cpp b/src/mame/drivers/sshot.cpp
index 195a5abd836..207fcd43a67 100644
--- a/src/mame/drivers/sshot.cpp
+++ b/src/mame/drivers/sshot.cpp
@@ -344,27 +344,27 @@ static GFXDECODE_START( gfx_supershot )
GFXDECODE_ENTRY( "gfx", 0, supershot_charlayout, 0, 1 )
GFXDECODE_END
-void supershot_state::supershot(machine_config &config)
-{
+MACHINE_CONFIG_START(supershot_state::supershot)
+
/* basic machine hardware */
- SCMP(config, m_maincpu, XTAL(11'289'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &supershot_state::supershot_map);
+ MCFG_DEVICE_ADD("maincpu", SCMP, XTAL(11'289'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(supershot_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size((32)*8, (32)*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(supershot_state::screen_update_supershot));
- screen.set_palette("palette");
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_supershot);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE((32)*8, (32)*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(supershot_state, screen_update_supershot)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_supershot)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */
//...
-}
+MACHINE_CONFIG_END
ROM_START( sshot )
diff --git a/src/mame/drivers/ssingles.cpp b/src/mame/drivers/ssingles.cpp
index c95a32a9c47..ec22d683741 100644
--- a/src/mame/drivers/ssingles.cpp
+++ b/src/mame/drivers/ssingles.cpp
@@ -161,9 +161,8 @@ class ssingles_state : public driver_device
{
public:
ssingles_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- { }
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu") { }
void ssingles(machine_config &config);
void atamanot(machine_config &config);
@@ -172,9 +171,6 @@ public:
DECLARE_CUSTOM_INPUT_MEMBER(controls_r);
-protected:
- virtual void video_start() override;
-
private:
uint8_t m_videoram[VMEM_SIZE];
uint8_t m_colorram[VMEM_SIZE];
@@ -182,9 +178,6 @@ private:
pen_t m_pens[NUM_PENS];
uint8_t m_atamanot_prot_state;
-
- required_device<cpu_device> m_maincpu;
-
DECLARE_WRITE8_MEMBER(ssingles_videoram_w);
DECLARE_WRITE8_MEMBER(ssingles_colorram_w);
DECLARE_READ8_MEMBER(c000_r);
@@ -193,10 +186,11 @@ private:
DECLARE_READ8_MEMBER(atamanot_prot_r);
DECLARE_WRITE8_MEMBER(atamanot_prot_w);
+ virtual void video_start() override;
DECLARE_WRITE_LINE_MEMBER(atamanot_irq);
MC6845_UPDATE_ROW(ssingles_update_row);
MC6845_UPDATE_ROW(atamanot_update_row);
-
+ required_device<cpu_device> m_maincpu;
void atamanot_io_map(address_map &map);
void atamanot_map(address_map &map);
void ssingles_io_map(address_map &map);
@@ -204,16 +198,16 @@ private:
};
//fake palette
-static constexpr rgb_t ssingles_colors[NUM_PENS] =
+static const uint8_t ssingles_colors[NUM_PENS*3]=
{
- { 0x00,0x00,0x00 }, { 0xff,0xff,0xff }, { 0xff,0x00,0x00 }, { 0x80,0x00,0x00 },
- { 0x00,0x00,0x00 }, { 0xf0,0xf0,0xf0 }, { 0xff,0xff,0x00 }, { 0x40,0x40,0x40 },
- { 0x00,0x00,0x00 }, { 0xff,0xff,0xff }, { 0xff,0x00,0x00 }, { 0xff,0xff,0x00 },
- { 0x00,0x00,0x00 }, { 0xff,0xff,0x00 }, { 0xd0,0x00,0x00 }, { 0x80,0x00,0x00 },
- { 0x00,0x00,0x00 }, { 0xff,0x00,0x00 }, { 0xff,0xff,0x00 }, { 0x80,0x80,0x00 },
- { 0x00,0x00,0x00 }, { 0xff,0x00,0x00 }, { 0x40,0x40,0x40 }, { 0xd0,0xd0,0xd0 },
- { 0x00,0x00,0x00 }, { 0x00,0x00,0xff }, { 0x60,0x40,0x30 }, { 0xff,0xff,0x00 },
- { 0x00,0x00,0x00 }, { 0xff,0x00,0xff }, { 0x80,0x00,0x80 }, { 0x40,0x00,0x40 }
+ 0x00,0x00,0x00, 0xff,0xff,0xff, 0xff,0x00,0x00, 0x80,0x00,0x00,
+ 0x00,0x00,0x00, 0xf0,0xf0,0xf0, 0xff,0xff,0x00, 0x40,0x40,0x40,
+ 0x00,0x00,0x00, 0xff,0xff,0xff, 0xff,0x00,0x00, 0xff,0xff,0x00,
+ 0x00,0x00,0x00, 0xff,0xff,0x00, 0xd0,0x00,0x00, 0x80,0x00,0x00,
+ 0x00,0x00,0x00, 0xff,0x00,0x00, 0xff,0xff,0x00, 0x80,0x80,0x00,
+ 0x00,0x00,0x00, 0xff,0x00,0x00, 0x40,0x40,0x40, 0xd0,0xd0,0xd0,
+ 0x00,0x00,0x00, 0x00,0x00,0xff, 0x60,0x40,0x30, 0xff,0xff,0x00,
+ 0x00,0x00,0x00, 0xff,0x00,0xff, 0x80,0x00,0x80, 0x40,0x00,0x40
};
MC6845_UPDATE_ROW( ssingles_state::ssingles_update_row )
@@ -306,8 +300,13 @@ WRITE8_MEMBER(ssingles_state::ssingles_colorram_w)
void ssingles_state::video_start()
{
- for (int i=0; i<NUM_PENS; ++i)
- m_pens[i] = ssingles_colors[i];
+ {
+ int i;
+ for(i=0;i<NUM_PENS;++i)
+ {
+ m_pens[i]=rgb_t(ssingles_colors[3*i], ssingles_colors[3*i+1], ssingles_colors[3*i+2]);
+ }
+ }
}
@@ -553,19 +552,19 @@ static GFXDECODE_START( gfx_atamanot )
GFXDECODE_ENTRY( "kanji_lc", 0, layout_8x16, 0, 8 )
GFXDECODE_END
-void ssingles_state::ssingles(machine_config &config)
-{
- Z80(config, m_maincpu, 4000000); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &ssingles_state::ssingles_map);
- m_maincpu->set_addrmap(AS_IO, &ssingles_state::ssingles_io_map);
+MACHINE_CONFIG_START(ssingles_state::ssingles)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(4000000, 256, 0, 256, 256, 0, 256); /* temporary, CRTC will configure screen */
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_DEVICE_ADD("maincpu", Z80,4000000) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(ssingles_map)
+ MCFG_DEVICE_IO_MAP(ssingles_io_map)
- PALETTE(config, "palette").set_entries(4); //guess
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(4000000, 256, 0, 256, 256, 0, 256) /* temporary, CRTC will configure screen */
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
- GFXDECODE(config, "gfxdecode", "palette", gfx_ssingles);
+ MCFG_PALETTE_ADD("palette", 4) //guess
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ssingles)
mc6845_device &crtc(MC6845(config, "crtc", 1000000 /* ? MHz */));
crtc.set_screen("screen");
@@ -580,26 +579,26 @@ void ssingles_state::ssingles(machine_config &config)
AY8910(config, "ay1", 1500000).add_route(ALL_OUTPUTS, "mono", 0.5); /* ? MHz */
AY8910(config, "ay2", 1500000).add_route(ALL_OUTPUTS, "mono", 0.5); /* ? MHz */
-}
+
+MACHINE_CONFIG_END
WRITE_LINE_MEMBER(ssingles_state::atamanot_irq)
{
// ...
}
-void ssingles_state::atamanot(machine_config &config)
-{
+MACHINE_CONFIG_START(ssingles_state::atamanot)
ssingles(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &ssingles_state::atamanot_map);
- m_maincpu->set_addrmap(AS_IO, &ssingles_state::atamanot_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(atamanot_map)
+ MCFG_DEVICE_IO_MAP(atamanot_io_map)
mc6845_device &crtc(*subdevice<mc6845_device>("crtc"));
crtc.set_update_row_callback(FUNC(ssingles_state::atamanot_update_row), this);
crtc.out_vsync_callback().set(FUNC(ssingles_state::atamanot_irq));
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_atamanot);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_atamanot)
+MACHINE_CONFIG_END
ROM_START( ssingles )
ROM_REGION( 0x10000, "maincpu", 0 ) /* Z80 main CPU */
diff --git a/src/mame/drivers/sslam.cpp b/src/mame/drivers/sslam.cpp
index 634bfc7eb90..d9a2dbe60db 100644
--- a/src/mame/drivers/sslam.cpp
+++ b/src/mame/drivers/sslam.cpp
@@ -219,7 +219,7 @@ static const uint8_t sslam_snd_loop[8][19] =
TIMER_CALLBACK_MEMBER(sslam_state::music_playback)
{
int pattern = 0;
- if ((m_oki->read() & 0x08) == 0)
+ if ((m_oki->read_status() & 0x08) == 0)
{
m_bar += 1;
pattern = sslam_snd_loop[m_melody][m_bar];
@@ -230,8 +230,8 @@ TIMER_CALLBACK_MEMBER(sslam_state::music_playback)
pattern = sslam_snd_loop[m_melody][m_bar];
}
logerror("Changing bar in music track to pattern %02x\n",pattern);
- m_oki->write(0x80 | pattern);
- m_oki->write(0x81);
+ m_oki->write_command(0x80 | pattern);
+ m_oki->write_command(0x81);
}
else if (pattern == 0x00) { /* Non-looped track. Stop playing it */
m_track = 0;
@@ -251,7 +251,7 @@ TIMER_CALLBACK_MEMBER(sslam_state::music_playback)
void sslam_state::sslam_play(int track, int data)
{
- int status = m_oki->read();
+ int status = m_oki->read_status();
if (data < 0x80) {
if (track) {
@@ -259,24 +259,24 @@ void sslam_state::sslam_play(int track, int data)
m_track = data;
m_bar = 0;
if (status & 0x08)
- m_oki->write(0x40);
- m_oki->write((0x80 | data));
- m_oki->write(0x81);
+ m_oki->write_command(0x40);
+ m_oki->write_command((0x80 | data));
+ m_oki->write_command(0x81);
m_music_timer->adjust(attotime::from_msec(4), 0, attotime::from_hz(250)); /* 250Hz for smooth sequencing */
}
}
else {
if ((status & 0x01) == 0) {
- m_oki->write((0x80 | data));
- m_oki->write(0x11);
+ m_oki->write_command((0x80 | data));
+ m_oki->write_command(0x11);
}
else if ((status & 0x02) == 0) {
- m_oki->write((0x80 | data));
- m_oki->write(0x21);
+ m_oki->write_command((0x80 | data));
+ m_oki->write_command(0x21);
}
else if ((status & 0x04) == 0) {
- m_oki->write((0x80 | data));
- m_oki->write(0x41);
+ m_oki->write_command((0x80 | data));
+ m_oki->write_command(0x41);
}
}
}
@@ -288,7 +288,7 @@ void sslam_state::sslam_play(int track, int data)
m_bar = 0;
}
data &= 0x7f;
- m_oki->write(data);
+ m_oki->write_command(data);
}
}
@@ -430,7 +430,7 @@ READ8_MEMBER(sslam_state::playmark_snd_command_r)
data = m_soundlatch->read(space,0);
}
else if ((m_oki_control & 0x38) == 0x28) {
- data = (m_oki->read() & 0x0f);
+ data = (m_oki->read(space,0) & 0x0f);
}
return data;
@@ -456,7 +456,7 @@ WRITE8_MEMBER(sslam_state::playmark_snd_control_w)
if ((data & 0x38) == 0x18)
{
- m_oki->write(m_oki_command);
+ m_oki->write(space, 0, m_oki_command);
}
// !(data & 0x80) -> sound enable
diff --git a/src/mame/drivers/ssozumo.cpp b/src/mame/drivers/ssozumo.cpp
index 269406a9c8f..efab2602a00 100644
--- a/src/mame/drivers/ssozumo.cpp
+++ b/src/mame/drivers/ssozumo.cpp
@@ -194,27 +194,27 @@ INTERRUPT_GEN_MEMBER(ssozumo_state::sound_timer_irq)
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
-void ssozumo_state::ssozumo(machine_config &config)
-{
+MACHINE_CONFIG_START(ssozumo_state::ssozumo)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 1200000); /* 1.2 MHz ???? */
- m_maincpu->set_addrmap(AS_PROGRAM, &ssozumo_state::ssozumo_map);
- m_maincpu->set_vblank_int("screen", FUNC(ssozumo_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M6502, 1200000) /* 1.2 MHz ???? */
+ MCFG_DEVICE_PROGRAM_MAP(ssozumo_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ssozumo_state, irq0_line_hold)
- M6502(config, m_audiocpu, 975000); /* 975 kHz ?? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &ssozumo_state::ssozumo_sound_map);
- m_audiocpu->set_periodic_int(FUNC(ssozumo_state::sound_timer_irq), attotime::from_hz(272/16*57)); // guess, assume to be the same as tagteam
+ MCFG_DEVICE_ADD("audiocpu", M6502, 975000) /* 975 kHz ?? */
+ MCFG_DEVICE_PROGRAM_MAP(ssozumo_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(ssozumo_state, sound_timer_irq, 272/16*57) // guess, assume to be the same as tagteam
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
-// screen.set_refresh_hz(60);
-// screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
-// screen.set_size(32*8, 32*8);
-// screen.set_visarea(0*8, 32*8 - 1, 1*8, 31*8 - 1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_REFRESH_RATE(60)
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+// MCFG_SCREEN_SIZE(32*8, 32*8)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8 - 1, 1*8, 31*8 - 1)
// DECO video CRTC, unverified
- screen.set_raw(XTAL(12'000'000)/2,384,0,256,272,8,248);
- screen.set_screen_update(FUNC(ssozumo_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_RAW_PARAMS(XTAL(12'000'000)/2,384,0,256,272,8,248)
+ MCFG_SCREEN_UPDATE_DRIVER(ssozumo_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ssozumo);
PALETTE(config, m_palette, FUNC(ssozumo_state::ssozumo_palette), 64 + 16);
@@ -227,11 +227,10 @@ void ssozumo_state::ssozumo(machine_config &config)
YM2149(config, "ay1", 1500000).add_route(ALL_OUTPUTS, "speaker", 0.3);
YM2149(config, "ay2", 1500000).add_route(ALL_OUTPUTS, "speaker", 0.3);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.3); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.3) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/sspeedr.cpp b/src/mame/drivers/sspeedr.cpp
index fdab0a73dfa..199fce035cb 100644
--- a/src/mame/drivers/sspeedr.cpp
+++ b/src/mame/drivers/sspeedr.cpp
@@ -188,31 +188,31 @@ static GFXDECODE_START( gfx_sspeedr )
GFXDECODE_END
-void sspeedr_state::sspeedr(machine_config &config)
-{
+MACHINE_CONFIG_START(sspeedr_state::sspeedr)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(19'968'000)/8);
- m_maincpu->set_addrmap(AS_PROGRAM, &sspeedr_state::sspeedr_map);
- m_maincpu->set_addrmap(AS_IO, &sspeedr_state::sspeedr_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(sspeedr_state::irq0_line_assert));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(19'968'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(sspeedr_map)
+ MCFG_DEVICE_IO_MAP(sspeedr_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sspeedr_state, irq0_line_assert)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.39);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(16 * 1000000 / 15680));
- screen.set_size(376, 256);
- screen.set_visarea(0, 375, 0, 247);
- screen.set_screen_update(FUNC(sspeedr_state::screen_update_sspeedr));
- screen.screen_vblank().set(FUNC(sspeedr_state::screen_vblank_sspeedr));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.39)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(16 * 1000000 / 15680))
+ MCFG_SCREEN_SIZE(376, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 375, 0, 247)
+ MCFG_SCREEN_UPDATE_DRIVER(sspeedr_state, screen_update_sspeedr)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sspeedr_state, screen_vblank_sspeedr))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sspeedr);
PALETTE(config, m_palette, FUNC(sspeedr_state::sspeedr_palette), 16);
/* sound hardware */
-}
+MACHINE_CONFIG_END
ROM_START( sspeedr )
diff --git a/src/mame/drivers/ssrj.cpp b/src/mame/drivers/ssrj.cpp
index 62dae0c18e5..c9525374917 100644
--- a/src/mame/drivers/ssrj.cpp
+++ b/src/mame/drivers/ssrj.cpp
@@ -140,22 +140,22 @@ static GFXDECODE_START( gfx_ssrj )
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 0x10 )
GFXDECODE_END
-void ssrj_state::ssrj(machine_config &config)
-{
+MACHINE_CONFIG_START(ssrj_state::ssrj)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 8000000/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &ssrj_state::ssrj_map);
- m_maincpu->set_vblank_int("screen", FUNC(ssrj_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,8000000/2)
+ MCFG_DEVICE_PROGRAM_MAP(ssrj_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ssrj_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 34*8-1, 1*8, 31*8-1); // unknown res
- screen.set_screen_update(FUNC(ssrj_state::screen_update));
- screen.screen_vblank().set(FUNC(ssrj_state::screen_vblank));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 34*8-1, 1*8, 31*8-1) // unknown res
+ MCFG_SCREEN_UPDATE_DRIVER(ssrj_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, ssrj_state, screen_vblank))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ssrj);
PALETTE(config, m_palette, FUNC(ssrj_state::ssrj_palette), 128);
@@ -166,7 +166,7 @@ void ssrj_state::ssrj(machine_config &config)
ay8910_device &aysnd(AY8910(config, "aysnd", 8000000/5));
aysnd.port_b_read_callback().set_ioport("IN3");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/sstrangr.cpp b/src/mame/drivers/sstrangr.cpp
index 752f772fcfa..472f4a49740 100644
--- a/src/mame/drivers/sstrangr.cpp
+++ b/src/mame/drivers/sstrangr.cpp
@@ -194,23 +194,24 @@ static INPUT_PORTS_START( sstrangr )
INPUT_PORTS_END
-void sstrangr_state::sstrangr(machine_config &config)
-{
+MACHINE_CONFIG_START(sstrangr_state::sstrangr)
+
/* basic machine hardware */
- I8080(config, m_maincpu, 1996800); /* clock is a guess, taken from mw8080bw */
- m_maincpu->set_addrmap(AS_PROGRAM, &sstrangr_state::sstrangr_map);
- m_maincpu->set_addrmap(AS_IO, &sstrangr_state::sstrangr_io_map);
- m_maincpu->set_periodic_int(FUNC(sstrangr_state::irq0_line_hold), attotime::from_hz(2*60));
+ MCFG_DEVICE_ADD("maincpu",I8080,1996800) /* clock is a guess, taken from mw8080bw */
+ MCFG_DEVICE_PROGRAM_MAP(sstrangr_map)
+ MCFG_DEVICE_IO_MAP(sstrangr_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(sstrangr_state, irq0_line_hold, 2*60)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_size(32*8, 262); /* vert size is a guess, taken from mw8080bw */
- screen.set_visarea(0*8, 32*8-1, 4*8, 32*8-1);
- screen.set_refresh_hz(60);
- screen.set_screen_update(FUNC(sstrangr_state::screen_update_sstrangr));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE(32*8, 262) /* vert size is a guess, taken from mw8080bw */
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 32*8-1)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_UPDATE_DRIVER(sstrangr_state, screen_update_sstrangr)
/* sound hardware */
-}
+
+MACHINE_CONFIG_END
@@ -263,15 +264,17 @@ static INPUT_PORTS_START( sstrngr2 )
INPUT_PORTS_END
-void sstrangr_state::sstrngr2(machine_config &config)
-{
+MACHINE_CONFIG_START(sstrangr_state::sstrngr2)
sstrangr(config);
+ /* basic machine hardware */
+
/* video hardware */
- subdevice<screen_device>("screen")->set_screen_update(FUNC(sstrangr_state::screen_update_sstrngr2));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(sstrangr_state, screen_update_sstrngr2)
PALETTE(config, m_palette, palette_device::RBG_3BIT);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ssv.cpp b/src/mame/drivers/ssv.cpp
index b3e49b25fe5..1f6e65e7c1c 100644
--- a/src/mame/drivers/ssv.cpp
+++ b/src/mame/drivers/ssv.cpp
@@ -455,7 +455,7 @@ void ssv_state::drifto94_map(address_map &map)
READ16_MEMBER(ssv_state::gdfs_eeprom_r)
{
- return m_adc->data_r() | (m_eeprom->do_read() << 8);
+ return m_adc->data_r(space, 0) | (m_eeprom->do_read() << 8);
}
WRITE16_MEMBER(ssv_state::gdfs_eeprom_w)
@@ -477,7 +477,7 @@ WRITE16_MEMBER(ssv_state::gdfs_eeprom_w)
// clock line asserted: write latch or select next bit to read
m_eeprom->clk_write(BIT(data, 13) ? ASSERT_LINE : CLEAR_LINE);
- m_adc->address_w((data & 0x0700) >> 8);
+ m_adc->address_w(space, 0, (data & 0x0700) >> 8);
m_adc->start_w(BIT(data, 11));
}
}
diff --git a/src/mame/drivers/st17xx.cpp b/src/mame/drivers/st17xx.cpp
index 72bb94eae28..fb0d51cb550 100644
--- a/src/mame/drivers/st17xx.cpp
+++ b/src/mame/drivers/st17xx.cpp
@@ -91,22 +91,21 @@ void st17xx_state::machine_start()
/* Machine Driver */
-void st17xx_state::st17xx(machine_config &config)
-{
+MACHINE_CONFIG_START(st17xx_state::st17xx)
/* basic machine hardware */
- arm7_cpu_device &maincpu(ARM7(config, "maincpu", 50000000)); /* speed unknown */
- maincpu.set_addrmap(AS_PROGRAM, &st17xx_state::cpu_map);
+ MCFG_DEVICE_ADD("maincpu", ARM7, 50000000) /* speed unknown */
+ MCFG_DEVICE_PROGRAM_MAP(cpu_map)
/* video hardware */
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(st17xx_state::screen_update));
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
-
- PALETTE(config, "palette").set_entries(64);
-}
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(st17xx_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+
+ MCFG_PALETTE_ADD("palette", 64)
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/st_mp100.cpp b/src/mame/drivers/st_mp100.cpp
index 6b6fc7f13cf..720ee21fece 100644
--- a/src/mame/drivers/st_mp100.cpp
+++ b/src/mame/drivers/st_mp100.cpp
@@ -709,11 +709,10 @@ TIMER_DEVICE_CALLBACK_MEMBER( st_mp100_state::u11_timer )
m_pia_u11->ca1_w(m_u11_timer);
}
-void st_mp100_state::st_mp100(machine_config &config)
-{
+MACHINE_CONFIG_START(st_mp100_state::st_mp100)
/* basic machine hardware */
- M6800(config, m_maincpu, 1000000); // no xtal, just 2 chips forming a random oscillator
- m_maincpu->set_addrmap(AS_PROGRAM, &st_mp100_state::st_mp100_map);
+ MCFG_DEVICE_ADD("maincpu", M6800, 1000000) // no xtal, just 2 chips forming a random oscillator
+ MCFG_DEVICE_PROGRAM_MAP(st_mp100_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -733,7 +732,7 @@ void st_mp100_state::st_mp100(machine_config &config)
m_pia_u10->cb2_handler().set(FUNC(st_mp100_state::u10_cb2_w));
m_pia_u10->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u10->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- TIMER(config, "timer_x").configure_periodic(FUNC(st_mp100_state::timer_x), attotime::from_hz(120)); // mains freq*2
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x", st_mp100_state, timer_x, attotime::from_hz(120)) // mains freq*2
PIA6821(config, m_pia_u11, 0);
m_pia_u11->readpa_handler().set(FUNC(st_mp100_state::u11_a_r));
@@ -743,8 +742,8 @@ void st_mp100_state::st_mp100(machine_config &config)
m_pia_u11->cb2_handler().set(FUNC(st_mp100_state::u11_cb2_w));
m_pia_u11->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u11->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- TIMER(config, "timer_d").configure_periodic(FUNC(st_mp100_state::u11_timer), attotime::from_hz(634)); // 555 timer*2
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_d", st_mp100_state, u11_timer, attotime::from_hz(634)) // 555 timer*2
+MACHINE_CONFIG_END
/*--------------------------------
diff --git a/src/mame/drivers/st_mp200.cpp b/src/mame/drivers/st_mp200.cpp
index 2584e2948b0..d26b452066d 100644
--- a/src/mame/drivers/st_mp200.cpp
+++ b/src/mame/drivers/st_mp200.cpp
@@ -580,11 +580,10 @@ TIMER_DEVICE_CALLBACK_MEMBER( st_mp200_state::u11_timer )
m_pia_u11->ca1_w(m_u11_timer);
}
-void st_mp200_state::st_mp200(machine_config &config)
-{
+MACHINE_CONFIG_START(st_mp200_state::st_mp200)
/* basic machine hardware */
- M6800(config, m_maincpu, 1000000); // no xtal, just 2 chips forming a random oscillator
- m_maincpu->set_addrmap(AS_PROGRAM, &st_mp200_state::st_mp200_map);
+ MCFG_DEVICE_ADD("maincpu", M6800, 1000000) // no xtal, just 2 chips forming a random oscillator
+ MCFG_DEVICE_PROGRAM_MAP(st_mp200_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -604,7 +603,7 @@ void st_mp200_state::st_mp200(machine_config &config)
m_pia_u10->cb2_handler().set(FUNC(st_mp200_state::u10_cb2_w));
m_pia_u10->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u10->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- TIMER(config, "timer_x").configure_periodic(FUNC(st_mp200_state::timer_x), attotime::from_hz(120)); // mains freq*2
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x", st_mp200_state, timer_x, attotime::from_hz(120)) // mains freq*2
PIA6821(config, m_pia_u11, 0);
m_pia_u11->readpa_handler().set(FUNC(st_mp200_state::u11_a_r));
@@ -614,15 +613,15 @@ void st_mp200_state::st_mp200(machine_config &config)
m_pia_u11->cb2_handler().set(FUNC(st_mp200_state::u11_cb2_w));
m_pia_u11->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
m_pia_u11->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- TIMER(config, "timer_d").configure_periodic(FUNC(st_mp200_state::u11_timer), attotime::from_hz(634)); // 555 timer*2
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_d", st_mp200_state, u11_timer, attotime::from_hz(634)) // 555 timer*2
+MACHINE_CONFIG_END
-void st_mp200_state::st_mp201(machine_config &config)
-{
+MACHINE_CONFIG_START(st_mp200_state::st_mp201)
st_mp200(config);
SPEAKER(config, "mono").front_center();
- S14001A(config, m_s14001a, S14001_CLOCK).add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+ MCFG_DEVICE_ADD("speech", S14001A, S14001_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
/*--------------------------------
diff --git a/src/mame/drivers/stactics.cpp b/src/mame/drivers/stactics.cpp
index 9221c11257c..497d414840e 100644
--- a/src/mame/drivers/stactics.cpp
+++ b/src/mame/drivers/stactics.cpp
@@ -308,12 +308,12 @@ void stactics_state::machine_start()
*
*************************************/
-void stactics_state::stactics(machine_config &config)
-{
+MACHINE_CONFIG_START(stactics_state::stactics)
+
/* basic machine hardware */
- I8080(config, m_maincpu, 1933560);
- m_maincpu->set_addrmap(AS_PROGRAM, &stactics_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(stactics_state::interrupt));
+ MCFG_DEVICE_ADD("maincpu", I8080, 1933560)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", stactics_state, interrupt)
LS259(config, m_outlatch); // 50
m_outlatch->q_out_cb<0>().set(FUNC(stactics_state::coin_lockout_1_w)); // COIN REJECT 1
@@ -344,7 +344,7 @@ void stactics_state::stactics(machine_config &config)
stactics_video(config);
/* audio hardware */
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/stargame.cpp b/src/mame/drivers/stargame.cpp
index 12963c3030c..10b96f5fd3e 100644
--- a/src/mame/drivers/stargame.cpp
+++ b/src/mame/drivers/stargame.cpp
@@ -103,22 +103,21 @@ static const z80_daisy_config daisy_chain[] =
};
-void stargame_state::stargame(machine_config &config)
-{
+MACHINE_CONFIG_START(stargame_state::stargame)
/* basic machine hardware */
Z80(config, m_maincpu, 15000000 / 4); // clock line marked as CK4 and derived from 15MHz crystal
m_maincpu->set_addrmap(AS_PROGRAM, &stargame_state::maincpu_map);
m_maincpu->set_addrmap(AS_IO, &stargame_state::maincpu_io);
m_maincpu->set_daisy_config(daisy_chain);
- Z80(config, m_audiocpu, 15000000 / 3); // ? check divider - clock line marked as CK6 and derived from 15MHz crystal
- m_audiocpu->set_addrmap(AS_PROGRAM, &stargame_state::audiocpu_map);
- m_audiocpu->set_addrmap(AS_IO, &stargame_state::audiocpu_io);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 15000000 / 3) // ? check divider - clock line marked as CK6 and derived from 15MHz crystal
+ MCFG_DEVICE_PROGRAM_MAP(audiocpu_map)
+ MCFG_DEVICE_IO_MAP(audiocpu_io)
MCFG_MACHINE_RESET_OVERRIDE(stargame_state, stargame)
/* video hardware */
- //config.set_default_layout();
+ //MCFG_DEFAULT_LAYOUT()
Z80CTC(config, m_ctc, 15000000 / 4);
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
@@ -127,7 +126,8 @@ void stargame_state::stargame(machine_config &config)
/* sound hardware */
genpin_audio(config);
SPEAKER(config, "measnd").front_center();
- MEA8000(config, "mea8000", 15000000 / 4).add_route(ALL_OUTPUTS, "measnd", 1.0);
+ MCFG_DEVICE_ADD("mea8000", MEA8000, 15000000 / 4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "measnd", 1.0)
SPEAKER(config, "aysnd").front_center();
AY8910(config, "ay", 15000000 / 8).add_route(ALL_OUTPUTS, "aysnd", 0.25); // clock line marked as CK2 and derived from 15MHz crystal
@@ -144,7 +144,7 @@ void stargame_state::stargame(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
WATCHDOG_TIMER(config, "watchdog");
-}
+MACHINE_CONFIG_END
ROM_START(spcship)
ROM_REGION(0x4000, "maincpu", 0)
diff --git a/src/mame/drivers/starshp1.cpp b/src/mame/drivers/starshp1.cpp
index 9ab274acc87..c54b83ef210 100644
--- a/src/mame/drivers/starshp1.cpp
+++ b/src/mame/drivers/starshp1.cpp
@@ -294,13 +294,13 @@ static GFXDECODE_START( gfx_starshp1 )
GFXDECODE_END
-void starshp1_state::starshp1(machine_config &config)
-{
+MACHINE_CONFIG_START(starshp1_state::starshp1)
+
/* basic machine hardware */
- M6502(config, m_maincpu, STARSHP1_CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &starshp1_state::starshp1_map);
- m_maincpu->set_vblank_int("screen", FUNC(starshp1_state::starshp1_interrupt));
+ MCFG_DEVICE_ADD("maincpu", M6502, STARSHP1_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(starshp1_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", starshp1_state, starshp1_interrupt)
f9334_device &misclatch(F9334(config, "misclatch")); // C8
misclatch.q_out_cb<0>().set(FUNC(starshp1_state::ship_explode_w));
@@ -315,19 +315,20 @@ void starshp1_state::starshp1(machine_config &config)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(STARSHP1_PIXEL_CLOCK, STARSHP1_HTOTAL, STARSHP1_HBEND, STARSHP1_HBSTART, STARSHP1_VTOTAL, STARSHP1_VBEND, STARSHP1_VBSTART);
- m_screen->set_screen_update(FUNC(starshp1_state::screen_update_starshp1));
- m_screen->screen_vblank().set(FUNC(starshp1_state::screen_vblank_starshp1));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(STARSHP1_PIXEL_CLOCK, STARSHP1_HTOTAL, STARSHP1_HBEND, STARSHP1_HBSTART, STARSHP1_VTOTAL, STARSHP1_VBEND, STARSHP1_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(starshp1_state, screen_update_starshp1)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, starshp1_state, screen_vblank_starshp1))
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_starshp1);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_starshp1)
PALETTE(config, m_palette, FUNC(starshp1_state::starshp1_palette), 19, 8);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- DISCRETE(config, m_discrete, starshp1_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("discrete", DISCRETE, starshp1_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
f9334_device &audiolatch(F9334(config, "audiolatch")); // D9
audiolatch.q_out_cb<0>().set(FUNC(starshp1_state::attract_w));
@@ -337,7 +338,7 @@ void starshp1_state::starshp1(machine_config &config)
audiolatch.q_out_cb<4>().set("discrete", FUNC(discrete_device::write_line<STARSHP1_SL2>));
audiolatch.q_out_cb<5>().set("discrete", FUNC(discrete_device::write_line<STARSHP1_MOLVL>));
audiolatch.q_out_cb<6>().set("discrete", FUNC(discrete_device::write_line<STARSHP1_NOISE_FREQ>));
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/starwars.cpp b/src/mame/drivers/starwars.cpp
index 88e614cfe61..04995349634 100644
--- a/src/mame/drivers/starwars.cpp
+++ b/src/mame/drivers/starwars.cpp
@@ -48,7 +48,7 @@ WRITE8_MEMBER(starwars_state::quad_pokeyn_w)
int control = (offset & 0x20) >> 2;
int pokey_reg = (offset % 8) | control;
- m_pokey[pokey_num]->write(pokey_reg, data);
+ m_pokey[pokey_num]->write(space, pokey_reg, data);
}
/*************************************
@@ -298,17 +298,17 @@ INPUT_PORTS_END
*
*************************************/
-void starwars_state::starwars(machine_config &config)
-{
+MACHINE_CONFIG_START(starwars_state::starwars)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, MASTER_CLOCK / 8);
- m_maincpu->set_addrmap(AS_PROGRAM, &starwars_state::main_map);
- m_maincpu->set_periodic_int(FUNC(starwars_state::irq0_line_assert), attotime::from_hz(CLOCK_3KHZ / 12));
+ MCFG_DEVICE_ADD("maincpu", MC6809E, MASTER_CLOCK / 8)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(starwars_state, irq0_line_assert, CLOCK_3KHZ / 12)
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_hz(CLOCK_3KHZ / 128));
- MC6809E(config, m_audiocpu, MASTER_CLOCK / 8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &starwars_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", MC6809E, MASTER_CLOCK / 8)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
adc0809_device &adc(ADC0809(config, "adc", MASTER_CLOCK / 16)); // designated as "137243-001" on parts list and "157249-120" on schematics
adc.in_callback<0>().set_ioport("STICKY"); // pitch
@@ -335,12 +335,12 @@ void starwars_state::starwars(machine_config &config)
outlatch.q_out_cb<7>().set(FUNC(starwars_state::recall_w)); // NVRAM array recall
/* video hardware */
- VECTOR(config, "vector", 0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_VECTOR));
- screen.set_refresh_hz(CLOCK_3KHZ / 12 / 6);
- screen.set_size(400, 300);
- screen.set_visarea(0, 250, 0, 280);
- screen.set_screen_update("vector", FUNC(vector_device::screen_update));
+ MCFG_VECTOR_ADD("vector")
+ MCFG_SCREEN_ADD("screen", VECTOR)
+ MCFG_SCREEN_REFRESH_RATE(CLOCK_3KHZ / 12 / 6)
+ MCFG_SCREEN_SIZE(400, 300)
+ MCFG_SCREEN_VISIBLE_AREA(0, 250, 0, 280)
+ MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
avg_device &avg(AVG_STARWARS(config, "avg", 0));
avg.set_vector_tag("vector");
@@ -362,19 +362,19 @@ void starwars_state::starwars(machine_config &config)
GENERIC_LATCH_8(config, m_mainlatch);
m_mainlatch->data_pending_callback().set(m_riot, FUNC(riot6532_device::pa6_w));
m_mainlatch->data_pending_callback().append(FUNC(starwars_state::boost_interleave_hack));
-}
+MACHINE_CONFIG_END
-void starwars_state::esb(machine_config &config)
-{
+MACHINE_CONFIG_START(starwars_state::esb)
starwars(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &starwars_state::esb_main_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(esb_main_map)
SLAPSTIC(config, m_slapstic_device, 101, false);
subdevice<ls259_device>("outlatch")->q_out_cb<4>().append_membank("bank2");
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/statriv2.cpp b/src/mame/drivers/statriv2.cpp
index 00a9eac52f7..286765200a4 100644
--- a/src/mame/drivers/statriv2.cpp
+++ b/src/mame/drivers/statriv2.cpp
@@ -65,7 +65,8 @@ PROM use is unknown
Issues:
* statusbj - very glitchy, bad video, seems to spin
* hangman - keys are weird, spinner is busted
- * quaquiz2 - no inputs, needs NVRAM
+ *
+quaquiz2 - no inputs, needs NVRAM
*/
@@ -94,9 +95,7 @@ public:
{ }
void statriv2(machine_config &config);
- void statusbj(machine_config &config);
void funcsino(machine_config &config);
- void tripdraw(machine_config &config);
void statriv2v(machine_config &config);
void init_addr_xlh();
@@ -113,7 +112,7 @@ private:
required_device<tms9927_device> m_tms;
required_shared_ptr<uint8_t> m_videoram;
tilemap_t *m_tilemap;
- optional_shared_ptr<uint8_t> m_question_offset;
+ required_shared_ptr<uint8_t> m_question_offset;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
uint8_t m_question_offset_low;
@@ -130,15 +129,12 @@ private:
TILE_GET_INFO_MEMBER(vertical_tile_info);
virtual void video_start() override;
void statriv2_palette(palette_device &palette) const;
- void check_coin_status();
DECLARE_VIDEO_START(vertical);
uint32_t screen_update_statriv2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(statriv2_interrupt);
- INTERRUPT_GEN_MEMBER(tripdraw_interrupt);
- void statriv2_map(address_map &map);
- void statusbj_io_map(address_map &map);
void statriv2_io_map(address_map &map);
+ void statriv2_map(address_map &map);
};
@@ -233,30 +229,19 @@ uint32_t statriv2_state::screen_update_statriv2(screen_device &screen, bitmap_in
*
*************************************/
-void statriv2_state::check_coin_status()
+INTERRUPT_GEN_MEMBER(statriv2_state::statriv2_interrupt)
{
uint8_t new_coin = ioport("COIN")->read();
/* check the coin inputs once per frame */
m_latched_coin |= new_coin & (new_coin ^ m_last_coin);
m_last_coin = new_coin;
-}
-
-INTERRUPT_GEN_MEMBER(statriv2_state::statriv2_interrupt)
-{
- check_coin_status();
device.execute().set_input_line(I8085_RST75_LINE, ASSERT_LINE);
device.execute().set_input_line(I8085_RST75_LINE, CLEAR_LINE);
}
-INTERRUPT_GEN_MEMBER(statriv2_state::tripdraw_interrupt)
-{
- check_coin_status();
- device.execute().set_input_line(I8085_RST55_LINE, ASSERT_LINE);
- device.execute().set_input_line(I8085_RST55_LINE, CLEAR_LINE);
-}
/*************************************
*
@@ -270,7 +255,7 @@ READ8_MEMBER(statriv2_state::question_data_r)
uint32_t qromsize = memregion("questions")->bytes();
uint32_t address;
- if (m_question_offset_high == 0xff && !machine().side_effects_disabled())
+ if (m_question_offset_high == 0xff)
m_question_offset[m_question_offset_low]++;
address = m_question_offset[m_question_offset_low];
@@ -317,20 +302,15 @@ void statriv2_state::statriv2_map(address_map &map)
map(0xc800, 0xcfff).ram().w(FUNC(statriv2_state::statriv2_videoram_w)).share("videoram");
}
-void statriv2_state::statusbj_io_map(address_map &map)
+void statriv2_state::statriv2_io_map(address_map &map)
{
map(0x20, 0x23).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x28, 0x2b).r(FUNC(statriv2_state::question_data_r)).writeonly().share("question_offset");
map(0xb0, 0xb1).w("aysnd", FUNC(ay8910_device::address_data_w));
map(0xb1, 0xb1).r("aysnd", FUNC(ay8910_device::data_r));
map(0xc0, 0xcf).rw(m_tms, FUNC(tms9927_device::read), FUNC(tms9927_device::write));
}
-void statriv2_state::statriv2_io_map(address_map &map)
-{
- statusbj_io_map(map);
- map(0x28, 0x2b).r(FUNC(statriv2_state::question_data_r)).writeonly().share("question_offset");
-}
-
/*************************************
*
@@ -407,42 +387,6 @@ static INPUT_PORTS_START( funcsino )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
INPUT_PORTS_END
-static INPUT_PORTS_START( tripdraw )
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_BET )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Draw") PORT_CODE(KEYCODE_3)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Discard 1 / Lo")
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Discard 2")
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Discard 3 / Double")
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Discard 4")
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Discard 5 / Hi")
-
- PORT_START("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Stand") PORT_CODE(KEYCODE_4)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, statriv2_state, latched_coin_r, "COIN")
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_DIPNAME( 0x10, 0x10, "DIP switch? 10" )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x10, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, "DIP switch? 20" )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x20, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, "DIP switch? 40" )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x40, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, "DIP switch? 80" )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x80, DEF_STR( On ) )
-
- PORT_START("IN2")
- PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("COIN")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
-INPUT_PORTS_END
-
static INPUT_PORTS_START( bigcsino ) // flyer shows 8 buttons on the cabinet
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_BET ) PORT_NAME("Play")
@@ -661,14 +605,13 @@ GFXDECODE_END
*
*************************************/
-void statriv2_state::statriv2(machine_config &config)
-{
+MACHINE_CONFIG_START(statriv2_state::statriv2)
/* basic machine hardware */
/* FIXME: The 8085A had a max clock of 6MHz, internally divided by 2! */
- I8085A(config, m_maincpu, MASTER_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &statriv2_state::statriv2_map);
- m_maincpu->set_addrmap(AS_IO, &statriv2_state::statriv2_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(statriv2_state::statriv2_interrupt));
+ MCFG_DEVICE_ADD("maincpu", I8085A, MASTER_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(statriv2_map)
+ MCFG_DEVICE_IO_MAP(statriv2_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", statriv2_state, statriv2_interrupt)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -682,10 +625,10 @@ void statriv2_state::statriv2(machine_config &config)
ppi.out_pc_callback().set(FUNC(statriv2_state::ppi_portc_hi_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(MASTER_CLOCK/2, 384, 0, 320, 270, 0, 240);
- screen.set_screen_update(FUNC(statriv2_state::screen_update_statriv2));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 384, 0, 320, 270, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(statriv2_state, screen_update_statriv2)
+ MCFG_SCREEN_PALETTE(m_palette)
TMS9927(config, m_tms, MASTER_CLOCK/2/8).set_char_width(8);
@@ -696,42 +639,29 @@ void statriv2_state::statriv2(machine_config &config)
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd", MASTER_CLOCK/8).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
-
-void statriv2_state::statusbj(machine_config &config)
-{
- statriv2(config);
- m_maincpu->set_addrmap(AS_IO, &statriv2_state::statusbj_io_map); // no question data
-}
+MACHINE_CONFIG_END
-void statriv2_state::statriv2v(machine_config &config)
-{
+MACHINE_CONFIG_START(statriv2_state::statriv2v)
statriv2(config);
/* basic machine hardware */
- subdevice<screen_device>("screen")->set_raw(MASTER_CLOCK/2, 392, 0, 256, 262, 0, 256);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 392, 0, 256, 262, 0, 256)
MCFG_VIDEO_START_OVERRIDE(statriv2_state, vertical)
- m_gfxdecode->set_info(gfx_vertical);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_vertical)
+MACHINE_CONFIG_END
-void statriv2_state::funcsino(machine_config &config)
-{
- statusbj(config);
+MACHINE_CONFIG_START(statriv2_state::funcsino)
+ statriv2(config);
/* basic machine hardware */
- m_maincpu->set_clock(MASTER_CLOCK/2); /* 3 MHz?? seems accurate */
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(MASTER_CLOCK/2) /* 3 MHz?? seems accurate */
+MACHINE_CONFIG_END
-void statriv2_state::tripdraw(machine_config &config)
-{
- statusbj(config);
-
- /* basic machine hardware */
- m_maincpu->set_vblank_int("screen", FUNC(statriv2_state::tripdraw_interrupt));
-}
/*************************************
@@ -1692,11 +1622,11 @@ void statriv2_state::init_laserdisc()
*
*************************************/
-GAME( 1981, statusbj, 0, statusbj, statusbj, statriv2_state, empty_init, ROT0, "Status Games", "Status Black Jack (V1.0c)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, statusbj, 0, statriv2, statusbj, statriv2_state, empty_init, ROT0, "Status Games", "Status Black Jack (V1.0c)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, funcsino, 0, funcsino, funcsino, statriv2_state, empty_init, ROT0, "Status Games", "Status Fun Casino (V1.3s)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, tripdraw, 0, tripdraw, tripdraw, statriv2_state, empty_init, ROT0, "Status Games", "Tripple Draw (V3.1 s)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, bigcsino, 0, statusbj, bigcsino, statriv2_state, empty_init, ROT0, "Status Games", "Big Casino", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, hangman, 0, statusbj, hangman, statriv2_state, init_addr_lmh, ROT0, "Status Games", "Hangman", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, tripdraw, 0, statriv2, funcsino, statriv2_state, empty_init, ROT0, "Status Games", "Tripple Draw (V3.1 s)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1984, bigcsino, 0, statriv2, bigcsino, statriv2_state, empty_init, ROT0, "Status Games", "Big Casino", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, hangman, 0, statriv2, hangman, statriv2_state, init_addr_lmh, ROT0, "Status Games", "Hangman", MACHINE_SUPPORTS_SAVE )
GAME( 1984, trivquiz, 0, statriv2, statriv2, statriv2_state, init_addr_lhx, ROT0, "Status Games", "Triv Quiz", MACHINE_SUPPORTS_SAVE )
GAME( 1984, statriv2, 0, statriv2, statriv2, statriv2_state, init_addr_xlh, ROT0, "Status Games", "Triv Two", MACHINE_SUPPORTS_SAVE )
GAME( 1985, statriv2v, statriv2, statriv2v, statriv2, statriv2_state, init_addr_xlh, ROT90, "Status Games", "Triv Two (Vertical)", MACHINE_SUPPORTS_SAVE )
@@ -1710,23 +1640,23 @@ GAME( 1986, supertr2, 0, statriv2, supertr2, statriv2_state, init_addr
GAME( 1988, supertr3, 0, statriv2, supertr2, statriv2_state, init_addr_lmh, ROT0, "Status Games", "Super Triv III", MACHINE_SUPPORTS_SAVE )
GAME( 1988, nsupertr3, supertr3, statriv2, supertr2, statriv2_state, init_addr_lmh, ROT0, "Status Games", "New Super Triv III", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // new questions don't appear correctly, coinage problems
// The following Casino Strip sets don't show the version on screen (at least without the laserdisc video). It was taken from the rom labels / from the Dragon's Lair Project archive.
-GAME( 1984, cs1_spp, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip I (Poker version, for Pioneer LD, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1984, cs1_spp2, cs1_spp, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip I (Poker version, for Pioneer LD, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1988, cs2_sps, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip II (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1992, cs3_qps, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Quantum Industries", "Casino Strip III (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1985, cs5_spp, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip V (Poker version, for Pioneer LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1985, cs5_ssp, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip V (Shooting Game version, for Pioneer LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1988, cs6_sps, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip VI (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1985, cs6_ssp, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip VI (Shooting Game version, for Pioneer LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1986, cs8_ssp, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip VIII (Shooting Game version, for Pioneer LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1985, cs8_spp, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip VIII (Poker version, for Pioneer LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1988, cs8_sps, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip VIII (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1992, cs9_qps, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Quantum Industries", "Casino Strip IX (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1985, cs9_spp, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip IX (Poker version, for Pioneer LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1988, cs10_sps, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip X (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1988, cs11_ssp, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip XI (Shooting Game version, for Pioneer LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1988, cs11_sps, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip XI (Poker version, for Sony LD, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1988, cs11_sps2, cs11_sps, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip XI (Poker version, for Sony LD, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1988, cs12_sps, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip XII (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1996, cspe_qps, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Quantum Industries", "Casino Strip Private Eyes / All Start (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1993, csv1_qps, 0, statusbj, funcsino, statriv2_state, init_laserdisc, ROT0, "Quantum Industries", "Casino Strip Vivid 1 (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1984, cs1_spp, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip I (Poker version, for Pioneer LD, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1984, cs1_spp2, cs1_spp, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip I (Poker version, for Pioneer LD, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1988, cs2_sps, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip II (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1992, cs3_qps, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Quantum Industries", "Casino Strip III (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1985, cs5_spp, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip V (Poker version, for Pioneer LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1985, cs5_ssp, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip V (Shooting Game version, for Pioneer LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1988, cs6_sps, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip VI (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1985, cs6_ssp, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip VI (Shooting Game version, for Pioneer LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1986, cs8_ssp, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip VIII (Shooting Game version, for Pioneer LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1985, cs8_spp, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip VIII (Poker version, for Pioneer LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1988, cs8_sps, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip VIII (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1992, cs9_qps, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Quantum Industries", "Casino Strip IX (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1985, cs9_spp, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip IX (Poker version, for Pioneer LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1988, cs10_sps, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip X (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1988, cs11_ssp, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip XI (Shooting Game version, for Pioneer LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1988, cs11_sps, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip XI (Poker version, for Sony LD, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1988, cs11_sps2, cs11_sps, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip XI (Poker version, for Sony LD, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1988, cs12_sps, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Status Games", "Casino Strip XII (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1996, cspe_qps, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Quantum Industries", "Casino Strip Private Eyes / All Start (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1993, csv1_qps, 0, statriv2, funcsino, statriv2_state, init_laserdisc, ROT0, "Quantum Industries", "Casino Strip Vivid 1 (Poker version, for Sony LD)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/stellafr.cpp b/src/mame/drivers/stellafr.cpp
index a70fd63d307..aaf0cc53787 100644
--- a/src/mame/drivers/stellafr.cpp
+++ b/src/mame/drivers/stellafr.cpp
@@ -90,22 +90,21 @@ static INPUT_PORTS_START( stellafr )
INPUT_PORTS_END
-void stellafr_state::stellafr(machine_config &config)
-{
- M68000(config, m_maincpu, 10000000 ); //?
- m_maincpu->set_addrmap(AS_PROGRAM, &stellafr_state::stellafr_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(stellafr_state::irq_ack));
+MACHINE_CONFIG_START(stellafr_state::stellafr)
+ MCFG_DEVICE_ADD("maincpu", M68000, 10000000 ) //?
+ MCFG_DEVICE_PROGRAM_MAP(stellafr_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(stellafr_state, irq_ack)
- MC68681(config, m_duart, 3686400);
- m_duart->irq_cb().set_inputline(m_maincpu, M68K_IRQ_2); // ?
- m_duart->outport_cb().set(FUNC(stellafr_state::duart_output_w));
+ MCFG_DEVICE_ADD("duart", MC68681, 3686400)
+ MCFG_MC68681_IRQ_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_2)) // ?
+ MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, stellafr_state, duart_output_w))
SPEAKER(config, "mono").front_center();
ay8910_device &aysnd(AY8910(config, "aysnd", 1000000));
aysnd.add_route(ALL_OUTPUTS, "mono", 1.0);
aysnd.port_a_read_callback().set_ioport("INPUTS");
aysnd.port_b_write_callback().set(FUNC(stellafr_state::ay8910_portb_w));
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/stlforce.cpp b/src/mame/drivers/stlforce.cpp
index 53be5c03c6f..6de179c48d5 100644
--- a/src/mame/drivers/stlforce.cpp
+++ b/src/mame/drivers/stlforce.cpp
@@ -196,25 +196,25 @@ uint32_t stlforce_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
return m_video->draw(screen, bitmap, cliprect);
}
-void stlforce_state::stlforce(machine_config &config)
-{
+MACHINE_CONFIG_START(stlforce_state::stlforce)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 15000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &stlforce_state::stlforce_map);
- m_maincpu->set_vblank_int("screen", FUNC(stlforce_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 15000000)
+ MCFG_DEVICE_PROGRAM_MAP(stlforce_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", stlforce_state, irq4_line_hold)
EEPROM_93C46_16BIT(config, "eeprom");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(8, 48*8-1-8-2, 0, 30*8-1);
- screen.set_screen_update(FUNC(stlforce_state::screen_update));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_stlforce);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8, 48*8-1-8-2, 0, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(stlforce_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_stlforce)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x800);
EDEVICES_SFORCE_VID(config, m_video, 0);
@@ -233,24 +233,27 @@ void stlforce_state::stlforce(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", XTAL(32'000'000)/32, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(32'000'000)/32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void stlforce_state::twinbrat(machine_config &config)
-{
+MACHINE_CONFIG_START(stlforce_state::twinbrat)
stlforce(config);
/* basic machine hardware */
- m_maincpu->set_clock(XTAL(14'745'600));
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(XTAL(14'745'600))
- subdevice<screen_device>("screen")->set_visarea(3*8, 44*8-1, 0*8, 30*8-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(3*8, 44*8-1, 0*8, 30*8-1)
/* modify m_video */
m_video->set_spritexoffset(10);
- subdevice<okim6295_device>("oki")->set_clock(XTAL(30'000'000) / 32); // verified on 2 PCBs
- subdevice<okim6295_device>("oki")->set_addrmap(0, &stlforce_state::twinbrat_oki_map);
-}
+ MCFG_DEVICE_MODIFY("oki")
+ MCFG_DEVICE_CLOCK(XTAL(30'000'000) / 32) // verified on 2 PCBs
+ MCFG_DEVICE_ADDRESS_MAP(0, twinbrat_oki_map)
+MACHINE_CONFIG_END
ROM_START( stlforce )
ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
diff --git a/src/mame/drivers/storio.cpp b/src/mame/drivers/storio.cpp
deleted file mode 100644
index f61ebdf9fd8..00000000000
--- a/src/mame/drivers/storio.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:David Haywood
-/******************************************************************************
-
- VTech Storio and VTech V.Reader
- Main processor: Nuvoton W55FA9363SDN (ARM926EJ-S CPU core)
- http://www.dingsung.com.cn/download/n32905/1507301944.pdf
-
- Storio (Europe) and V.Reader (North America) cartridges are physically
- different, but there is no software region lock, so you can play
- Storio games on the V.Reader (and viceversa) by modifying the game's
- plastic cartrige (so it can fit in).
-
- Skeleton driver, to reference Software List so that it gets validated
-
- TODO: everything!
-
-*******************************************************************************/
-
-#include "emu.h"
-
-#include "cpu/arm7/arm7.h"
-#include "cpu/arm7/arm7core.h"
-
-#include "bus/generic/slot.h"
-#include "bus/generic/carts.h"
-
-#include "screen.h"
-#include "softlist.h"
-#include "speaker.h"
-
-class vtech_storio_state : public driver_device
-{
-public:
- vtech_storio_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_screen(*this, "screen")
- , m_cart(*this, "cartslot")
- , m_cart_region(nullptr)
- { }
-
- void vtech_storio(machine_config &config);
-
-private:
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart);
-
- required_device<cpu_device> m_maincpu;
-
- required_device<screen_device> m_screen;
- required_device<generic_slot_device> m_cart;
- memory_region *m_cart_region;
-
- uint32_t screen_update_storio(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-};
-
-uint32_t vtech_storio_state::screen_update_storio(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- return 0;
-}
-
-void vtech_storio_state::machine_start()
-{
- // if there's a cart, override the standard mapping
- if (m_cart && m_cart->exists())
- {
- std::string region_tag;
- m_cart_region = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
- }
-}
-
-void vtech_storio_state::machine_reset()
-{
-}
-
-DEVICE_IMAGE_LOAD_MEMBER(vtech_storio_state, cart)
-{
- uint32_t size = m_cart->common_get_size("rom");
-
- m_cart->rom_alloc(size, GENERIC_ROM16_WIDTH, ENDIANNESS_LITTLE);
- m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
-
- return image_init_result::PASS;
-}
-
-static INPUT_PORTS_START( vtech_storio )
-INPUT_PORTS_END
-
-
-void vtech_storio_state::vtech_storio(machine_config &config)
-{
- ARM9(config, m_maincpu, 240000000); // ARM926EJ-S CPU core (probably 240MHz, but not sure)
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(320, 262);
- m_screen->set_visarea(0, 320-1, 0, 240-1);
- m_screen->set_screen_update(FUNC(vtech_storio_state::screen_update_storio));
-
- SPEAKER(config, "lspeaker").front_left();
- SPEAKER(config, "rspeaker").front_right();
-
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "vtech_storio_cart");
- m_cart->set_width(GENERIC_ROM16_WIDTH);
- m_cart->set_device_load(device_image_load_delegate(&vtech_storio_state::device_image_load_cart, this));
-
- SOFTWARE_LIST(config, "cart_list").set_original("vtech_storio_cart");
-}
-
-// BIOS is 1 GBIT (128M × 8 BIT) CMOS NAND EEPROM (Toshiba TC58NVG0S3ETA00)
-
-// ROM image from VTech, not padded to the real ROM size
-ROM_START( vreader )
- ROM_REGION( 0x038e906c, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "useng-pack_20111017.bin", 0x000000, 0x038e906c, CRC(add3f7e5) SHA1(43ecfb0ba3c98c5852f93ed620021697167aa156) )
-ROM_END
-
-// ROM image from VTech, not padded to the real ROM size
-ROM_START( vreadercaen )
- ROM_REGION( 0x038e906c, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "caeng-pack_20111017.bin", 0x000000, 0x038e906c, CRC(0b64caf3) SHA1(79648e2b315c59f60aaf8cb8806fdbe773e484a2) )
-ROM_END
-
-// ROM image from VTech, not padded to the real ROM size
-ROM_START( vreadercafr )
- ROM_REGION( 0x037d93a6, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "cafre-pack_20111017.bin", 0x000000, 0x037d93a6, CRC(d3e0039c) SHA1(3d69f4afcf56ba40261bba0af335680c3c05b319) )
-ROM_END
-
-// ROM image from VTech, not padded to the real ROM size
-ROM_START( storio )
- ROM_REGION( 0x01bf3dcb, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "gbeng-pack_20111017.bin", 0x000000, 0x01bf3dcb, CRC(b0962d2c) SHA1(4f316cbcc87ae24022568a358ac94c7b4cac39a6) )
-ROM_END
-
-// ROM image from VTech, not padded to the real ROM size
-ROM_START( storiode )
- ROM_REGION( 0x03740a0d, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "deger-pack_20111017.bin", 0x000000, 0x03740a0d, CRC(548c8882) SHA1(e64474be082bd3ae3c365c6c766b2ec5081f3ebd) )
-ROM_END
-
-// ROM image from VTech, not padded to the real ROM size
-ROM_START( storioes )
- ROM_REGION( 0x03c62bfc, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "esspa-pack_20111017.bin", 0x000000, 0x03c62bfc, CRC(fe9b78f9) SHA1(c114a8f82799861a0cca432ee145e436aca5f400) )
-ROM_END
-
-// ROM image from VTech, not padded to the real ROM size
-ROM_START( storiofr )
- ROM_REGION( 0x038c2a19, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "frfre-pack_20111017.bin", 0x000000, 0x038c2a19, CRC(f3d87f50) SHA1(240ddebd4cb1c4be24afb4da35c65ddf64628034) )
-ROM_END
-
-// ROM image from VTech, not padded to the real ROM size
-ROM_START( storionl )
- ROM_REGION( 0x03af81c6, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "nldut-pack_20111017.bin", 0x000000, 0x03af81c6, CRC(6cfac599) SHA1(d16b45fd287c9d823bde13b88eb6c8158ac2b475) )
-ROM_END
-
-// year, name, parent, compat, machine, input, class, init, company, fullname, flags
-CONS( 2011, vreader, 0, 0, vtech_storio, vtech_storio, vtech_storio_state, empty_init, "VTech", "V.Reader (US, English, 2011-10-17)", MACHINE_IS_SKELETON )
-CONS( 2011, vreadercaen, vreader, 0, vtech_storio, vtech_storio, vtech_storio_state, empty_init, "VTech", "V.Reader (CA, English, 2011-10-17)", MACHINE_IS_SKELETON )
-CONS( 2011, vreadercafr, vreader, 0, vtech_storio, vtech_storio, vtech_storio_state, empty_init, "VTech", "V.Reader (CA, French, 2011-10-17)", MACHINE_IS_SKELETON )
-CONS( 2011, storio, vreader, 0, vtech_storio, vtech_storio, vtech_storio_state, empty_init, "VTech", "Storio (GB, English, 2011-10-17)", MACHINE_IS_SKELETON )
-CONS( 2011, storiode, vreader, 0, vtech_storio, vtech_storio, vtech_storio_state, empty_init, "VTech", "Storio (DE, German, 2011-10-17)", MACHINE_IS_SKELETON )
-CONS( 2011, storioes, vreader, 0, vtech_storio, vtech_storio, vtech_storio_state, empty_init, "VTech", "Storio (ES, Spanish, 2011-10-17)", MACHINE_IS_SKELETON )
-CONS( 2011, storiofr, vreader, 0, vtech_storio, vtech_storio, vtech_storio_state, empty_init, "VTech", "Storio (FR, French, 2011-10-17)", MACHINE_IS_SKELETON )
-CONS( 2011, storionl, vreader, 0, vtech_storio, vtech_storio, vtech_storio_state, empty_init, "VTech", "Storio (NL, Dutch, 2011-10-17)", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/stratos.cpp b/src/mame/drivers/stratos.cpp
index 42b7a8364e8..1c4cb161ce3 100644
--- a/src/mame/drivers/stratos.cpp
+++ b/src/mame/drivers/stratos.cpp
@@ -349,21 +349,20 @@ void stratos_state::stratos_mem(address_map &map)
static INPUT_PORTS_START( stratos )
INPUT_PORTS_END
-void stratos_state::stratos(machine_config &config)
-{
- M65C02(config, maincpu, 5670000);
- maincpu->set_addrmap(AS_PROGRAM, &stratos_state::stratos_mem);
+MACHINE_CONFIG_START(stratos_state::stratos)
+ MCFG_DEVICE_ADD("maincpu", M65C02, 5670000)
+ MCFG_DEVICE_PROGRAM_MAP(stratos_mem)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_size(240, 64);
- screen.set_visarea(0, 239, 0, 63);
- screen.set_screen_update(FUNC(stratos_state::screen_update));
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(240, 64)
+ MCFG_SCREEN_VISIBLE_AREA(0, 239, 0, 63)
+ MCFG_SCREEN_UPDATE_DRIVER(stratos_state, screen_update)
- TIMER(config, "irq").configure_periodic(FUNC(stratos_state::irq_timer), attotime::from_hz(1000));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", stratos_state, irq_timer, attotime::from_hz(1000))
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
ROM_START( stratos )
ROM_REGION(0x20000, "roms_8000", 0)
@@ -375,5 +374,5 @@ ROM_START( stratos )
ROM_FILL(0x00000, 0x10000, 0xff)
ROM_END
-/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-CONS( 1986, stratos, 0, 0, stratos, stratos, stratos_state, init_stratos, "SciSys", "Kasparov Chess Computer: Stratos", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+CONS( 1986, stratos, 0, 0, stratos, stratos, stratos_state, init_stratos, "Saitek", "Kasparov Stratos Chess Computer", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/strkzn.cpp b/src/mame/drivers/strkzn.cpp
index c8cc13becbe..2835d263db1 100644
--- a/src/mame/drivers/strkzn.cpp
+++ b/src/mame/drivers/strkzn.cpp
@@ -56,16 +56,15 @@ void strkzn_state::light_io(address_map &map)
map(0x0007, 0x0007).nopr();
}
-void strkzn_state::strkzn(machine_config &config)
-{
- Z80(config, m_maincpu, 4000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &strkzn_state::main_mem);
- m_maincpu->set_addrmap(AS_IO, &strkzn_state::main_io);
-
- I80188(config, m_lightcpu, 10000000);
- m_lightcpu->set_addrmap(AS_PROGRAM, &strkzn_state::light_mem);
- m_lightcpu->set_addrmap(AS_IO, &strkzn_state::light_io);
-}
+MACHINE_CONFIG_START(strkzn_state::strkzn)
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(main_mem)
+ MCFG_DEVICE_IO_MAP(main_io)
+
+ MCFG_DEVICE_ADD("lightcpu", I80188, 10000000)
+ MCFG_DEVICE_PROGRAM_MAP(light_mem)
+ MCFG_DEVICE_IO_MAP(light_io)
+MACHINE_CONFIG_END
INPUT_PORTS_START( strkzn )
INPUT_PORTS_END
diff --git a/src/mame/drivers/studio2.cpp b/src/mame/drivers/studio2.cpp
index 7991df403a7..ab9a8fac273 100644
--- a/src/mame/drivers/studio2.cpp
+++ b/src/mame/drivers/studio2.cpp
@@ -514,10 +514,10 @@ WRITE8_MEMBER( mpt02_state::dma_w )
/* Machine Initialization */
// trampolines to cartridge
-READ8_MEMBER( studio2_state::cart_400 ) { return m_cart->read_rom(offset); }
-READ8_MEMBER( studio2_state::cart_a00 ) { return m_cart->read_rom(offset + 0x600); }
-READ8_MEMBER( studio2_state::cart_e00 ) { return m_cart->read_rom(offset + 0xa00); }
-READ8_MEMBER( mpt02_state::cart_c00 ) { return m_cart->read_rom(offset + 0x800); }
+READ8_MEMBER( studio2_state::cart_400 ) { return m_cart->read_rom(space, offset); }
+READ8_MEMBER( studio2_state::cart_a00 ) { return m_cart->read_rom(space, offset + 0x600); }
+READ8_MEMBER( studio2_state::cart_e00 ) { return m_cart->read_rom(space, offset + 0xa00); }
+READ8_MEMBER( mpt02_state::cart_c00 ) { return m_cart->read_rom(space, offset + 0x800); }
void studio2_state::machine_start()
{
@@ -645,11 +645,10 @@ MACHINE_CONFIG_START(studio2_state::studio2_cartslot)
MCFG_GENERIC_LOAD(studio2_state, studio2_cart_load)
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("studio2");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "studio2")
MACHINE_CONFIG_END
-void studio2_state::studio2(machine_config &config)
-{
+MACHINE_CONFIG_START(studio2_state::studio2)
/* basic machine hardware */
CDP1802(config, m_maincpu, 1760000); /* the real clock is derived from an oscillator circuit */
m_maincpu->set_addrmap(AS_PROGRAM, &studio2_state::studio2_map);
@@ -673,10 +672,9 @@ void studio2_state::studio2(machine_config &config)
BEEP(config, m_beeper, 300).add_route(ALL_OUTPUTS, "mono", 1.00);
studio2_cartslot(config);
-}
+MACHINE_CONFIG_END
-void visicom_state::visicom(machine_config &config)
-{
+MACHINE_CONFIG_START(visicom_state::visicom)
/* basic machine hardware */
CDP1802(config, m_maincpu, XTAL(3'579'545)/2);
m_maincpu->set_addrmap(AS_PROGRAM, &visicom_state::visicom_map);
@@ -701,14 +699,14 @@ void visicom_state::visicom(machine_config &config)
SPEAKER(config, "mono").front_center();
BEEP(config, m_beeper, 300).add_route(ALL_OUTPUTS, "mono", 1.00);
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "visicom_cart", "bin,rom");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "visicom_cart")
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("visicom");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "visicom")
+MACHINE_CONFIG_END
-void mpt02_state::mpt02(machine_config &config)
-{
+MACHINE_CONFIG_START(mpt02_state::mpt02)
/* basic machine hardware */
CDP1802(config, m_maincpu, 1.75_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &mpt02_state::mpt02_map);
@@ -737,7 +735,7 @@ void mpt02_state::mpt02(machine_config &config)
m_cti->add_route(ALL_OUTPUTS, "mono", 0.25);
studio2_cartslot(config);
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/stuntair.cpp b/src/mame/drivers/stuntair.cpp
index 3fcf547ecd6..5457f0cf70f 100644
--- a/src/mame/drivers/stuntair.cpp
+++ b/src/mame/drivers/stuntair.cpp
@@ -518,16 +518,16 @@ void stuntair_state::machine_reset()
{
}
-void stuntair_state::stuntair(machine_config &config)
-{
+MACHINE_CONFIG_START(stuntair_state::stuntair)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'432'000)/6); /* 3 MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &stuntair_state::stuntair_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(18'432'000)/6) /* 3 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(stuntair_map)
- Z80(config, m_audiocpu, XTAL(18'432'000)/6); /* 3 MHz? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &stuntair_state::stuntair_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &stuntair_state::stuntair_sound_portmap);
- m_audiocpu->set_periodic_int(FUNC(stuntair_state::irq0_line_hold), attotime::from_hz(420)); // drives music tempo, timing is approximate based on PCB audio recording.. and where is irq ack?
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(18'432'000)/6) /* 3 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(stuntair_sound_map)
+ MCFG_DEVICE_IO_MAP(stuntair_sound_portmap)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(stuntair_state, irq0_line_hold, 420) // drives music tempo, timing is approximate based on PCB audio recording.. and where is irq ack?
ls259_device &mainlatch(LS259(config, "mainlatch")); // type and location not verified
mainlatch.q_out_cb<0>().set_nop(); // set but never cleared
@@ -544,14 +544,14 @@ void stuntair_state::stuntair(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60); // ?
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 16, 256-16-1);
- screen.set_screen_update(FUNC(stuntair_state::screen_update_stuntair));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(stuntair_state::stuntair_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60) // ?
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(stuntair_state, screen_update_stuntair)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, stuntair_state, stuntair_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_stuntair);
PALETTE(config, m_palette, FUNC(stuntair_state::stuntair_palette), 0x100 + 2);
@@ -567,7 +567,7 @@ void stuntair_state::stuntair(machine_config &config)
ay1.add_route(ALL_OUTPUTS, "mono", 0.50);
AY8910(config, "ay2", XTAL(18'432'000)/12).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/su2000.cpp b/src/mame/drivers/su2000.cpp
index d5efb43f96d..3fc8bdac1d4 100644
--- a/src/mame/drivers/su2000.cpp
+++ b/src/mame/drivers/su2000.cpp
@@ -126,26 +126,25 @@ static void ide_interrupt(device_t *device, int state)
*
*************************************/
-void su2000_state::su2000(machine_config &config)
-{
+MACHINE_CONFIG_START(su2000_state::su2000)
/* Basic machine hardware */
- I486(config, m_maincpu, I486_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &su2000_state::pcat_map);
- m_maincpu->set_addrmap(AS_IO, &su2000_state::pcat_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I486, I486_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(pcat_map)
+ MCFG_DEVICE_IO_MAP(pcat_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
#if 0
- tms32031_device &tracker(TMS32031(config, "tracker", TMS320C1_CLOCK));
- tracker.set_addrmap(AS_PROGRAM, &su2000_state::tracker_map);
+ MCFG_DEVICE_ADD("tracker", TMS32031, TMS320C1_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(tracker_map)
- mc88100_device &pix_cpu1(MC88110(config, "pix_cpu1", MC88110_CLOCK));
- pix_cpu1.set_addrmap(AS_PROGRAM, &su2000_state::pix_cpu_a);
+ MCFG_DEVICE_ADD("pix_cpu1", MC88110, MC88110_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(pix_cpu_a)
- mc88100_device &pix_cpu2(MC88110(config, "pix_cpu2", MC88110_CLOCK));
- pix_cpu2.set_addrmap(AS_PROGRAM, &su2000_state::pix_cpu_b);
+ MCFG_DEVICE_ADD("pix_cpu2", MC88110, MC88110_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(pix_cpu_b)
- m68000_device &format_c(M68000(config, "format_c", XTAL(10'000'000)));
- format_c.set_addrmap(AS_PROGRAM, &su2000_state::formatc_map);
+ MCFG_DEVICE_ADD("format_c", M68000, XTAL(10'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(formatc_map)
#endif
/* Video hardware */
@@ -156,7 +155,7 @@ void su2000_state::su2000(machine_config &config)
DS12885(config.replace(), m_mc146818); // TODO: Rename m_mc146818 to m_rtc
m_mc146818->irq().set("pic8259_2", FUNC(pic8259_device::ir0_w));
m_mc146818->set_century_index(0x32);
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/sub.cpp b/src/mame/drivers/sub.cpp
index 1cfb53523a4..d75efae046e 100644
--- a/src/mame/drivers/sub.cpp
+++ b/src/mame/drivers/sub.cpp
@@ -304,17 +304,17 @@ INTERRUPT_GEN_MEMBER(sub_state::sound_irq)
-void sub_state::sub(machine_config &config)
-{
+MACHINE_CONFIG_START(sub_state::sub)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/6); /* ? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &sub_state::subm_map);
- m_maincpu->set_addrmap(AS_IO, &sub_state::subm_io);
+ MCFG_DEVICE_ADD("maincpu", Z80,MASTER_CLOCK/6) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(subm_map)
+ MCFG_DEVICE_IO_MAP(subm_io)
- Z80(config, m_soundcpu, MASTER_CLOCK/6); /* ? MHz */
- m_soundcpu->set_addrmap(AS_PROGRAM, &sub_state::subm_sound_map);
- m_soundcpu->set_addrmap(AS_IO, &sub_state::subm_sound_io);
- m_soundcpu->set_periodic_int(FUNC(sub_state::sound_irq), attotime::from_hz(120)); //???
+ MCFG_DEVICE_ADD("soundcpu", Z80,MASTER_CLOCK/6) /* ? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(subm_sound_map)
+ MCFG_DEVICE_IO_MAP(subm_sound_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(sub_state, sound_irq, 120) //???
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set(FUNC(sub_state::int_mask_w));
@@ -325,14 +325,14 @@ void sub_state::sub(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 16, 256-16-1);
- screen.set_screen_update(FUNC(sub_state::screen_update));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(sub_state::main_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sub_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sub_state, main_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sub);
PALETTE(config, m_palette, FUNC(sub_state::sub_palette), 0x400, 0x100);
@@ -348,7 +348,7 @@ void sub_state::sub(machine_config &config)
AY8910(config, "ay1", MASTER_CLOCK/6/2).add_route(ALL_OUTPUTS, "mono", 0.23); /* ? Mhz */
AY8910(config, "ay2", MASTER_CLOCK/6/2).add_route(ALL_OUTPUTS, "mono", 0.23); /* ? Mhz */
-}
+MACHINE_CONFIG_END
ROM_START( sub )
diff --git a/src/mame/drivers/subs.cpp b/src/mame/drivers/subs.cpp
index b5622eac858..aeecb9e28c0 100644
--- a/src/mame/drivers/subs.cpp
+++ b/src/mame/drivers/subs.cpp
@@ -173,36 +173,36 @@ GFXDECODE_END
*
*************************************/
-void subs_state::subs(machine_config &config)
-{
+MACHINE_CONFIG_START(subs_state::subs)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 12096000/16); /* clock input is the "4H" signal */
- m_maincpu->set_addrmap(AS_PROGRAM, &subs_state::main_map);
- m_maincpu->set_periodic_int(FUNC(subs_state::interrupt), attotime::from_hz(4*57));
+ MCFG_DEVICE_ADD("maincpu", M6502,12096000/16) /* clock input is the "4H" signal */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(subs_state, interrupt, 4*57)
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_subs);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_subs)
PALETTE(config, m_palette, FUNC(subs_state::subs_palette), 4);
config.set_default_layout(layout_dualhsxs);
- screen_device &lscreen(SCREEN(config, "lscreen", SCREEN_TYPE_RASTER));
- lscreen.set_refresh_hz(57);
- lscreen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- lscreen.set_size(32*8, 32*8);
- lscreen.set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
- lscreen.set_screen_update(FUNC(subs_state::screen_update_left));
- lscreen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("lscreen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(subs_state, screen_update_left)
+ MCFG_SCREEN_PALETTE(m_palette)
- screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER));
- rscreen.set_refresh_hz(57);
- rscreen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- rscreen.set_size(32*8, 32*8);
- rscreen.set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
- rscreen.set_screen_update(FUNC(subs_state::screen_update_right));
- rscreen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("rscreen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(subs_state, screen_update_right)
+ MCFG_SCREEN_PALETTE(m_palette)
/* sound hardware */
@@ -221,7 +221,7 @@ void subs_state::subs(machine_config &config)
latch.q_out_cb<5>().set(m_discrete, FUNC(discrete_device::write_line<SUBS_CRASH_EN>));
latch.q_out_cb<6>().set(FUNC(subs_state::invert1_w));
latch.q_out_cb<7>().set(FUNC(subs_state::invert2_w));
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/subsino.cpp b/src/mame/drivers/subsino.cpp
index c9272645251..0a55731dfaa 100644
--- a/src/mame/drivers/subsino.cpp
+++ b/src/mame/drivers/subsino.cpp
@@ -2704,12 +2704,11 @@ GFXDECODE_END
* Machine Drivers *
***************************************************************************/
-void subsino_state::victor21(machine_config &config)
-{
+MACHINE_CONFIG_START(subsino_state::victor21)
/* basic machine hardware */
- Z180(config, m_maincpu, XTAL(12'000'000) / 8); /* Unknown clock */
- m_maincpu->set_addrmap(AS_PROGRAM, &subsino_state::victor21_map);
- m_maincpu->set_addrmap(AS_IO, &subsino_state::subsino_iomap);
+ MCFG_DEVICE_ADD("maincpu", Z180, XTAL(12'000'000) / 8) /* Unknown clock */
+ MCFG_DEVICE_PROGRAM_MAP(victor21_map)
+ MCFG_DEVICE_IO_MAP(subsino_iomap)
i8255_device &ppi(I8255A(config, "ppi"));
ppi.out_pa_callback().set(FUNC(subsino_state::out_a_w));
@@ -2718,16 +2717,16 @@ void subsino_state::victor21(machine_config &config)
ppi.tri_pb_callback().set_constant(0);
ppi.in_pc_callback().set_ioport("INC");
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0+16, 256-16-1);
- screen.set_screen_update(FUNC(subsino_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(subsino_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, subsino_depth3);
@@ -2738,38 +2737,39 @@ void subsino_state::victor21(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- OKIM6295(config, "oki", XTAL(4'433'619) / 4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* Clock frequency & pin 7 not verified */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(4'433'619) / 4, okim6295_device::PIN7_HIGH) /* Clock frequency & pin 7 not verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/* same but with an additional protection. */
-void subsino_state::victor5(machine_config &config)
-{
+MACHINE_CONFIG_START(subsino_state::victor5)
victor21(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &subsino_state::victor5_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(victor5_map)
+MACHINE_CONFIG_END
-void subsino_state::crsbingo(machine_config &config)
-{
+MACHINE_CONFIG_START(subsino_state::crsbingo)
/* basic machine hardware */
- Z180(config, m_maincpu, XTAL(12'000'000) / 8); /* Unknown CPU and clock */
- m_maincpu->set_addrmap(AS_PROGRAM, &subsino_state::crsbingo_map);
- m_maincpu->set_addrmap(AS_IO, &subsino_state::subsino_iomap);
+ MCFG_DEVICE_ADD("maincpu", Z180, XTAL(12'000'000) / 8) /* Unknown CPU and clock */
+ MCFG_DEVICE_PROGRAM_MAP(crsbingo_map)
+ MCFG_DEVICE_IO_MAP(subsino_iomap)
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0+16, 256-16-1);
- screen.set_screen_update(FUNC(subsino_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(subsino_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, subsino_depth4);
@@ -2780,16 +2780,16 @@ void subsino_state::crsbingo(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0); /* Unknown clock */
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545)) /* Unknown clock */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void subsino_state::srider(machine_config &config)
-{
+MACHINE_CONFIG_START(subsino_state::srider)
/* basic machine hardware */
- Z180(config, m_maincpu, XTAL(12'000'000) / 8); /* Unknown clock */
- m_maincpu->set_addrmap(AS_PROGRAM, &subsino_state::srider_map);
- m_maincpu->set_addrmap(AS_IO, &subsino_state::subsino_iomap);
+ MCFG_DEVICE_ADD("maincpu", Z180, XTAL(12'000'000) / 8) /* Unknown clock */
+ MCFG_DEVICE_PROGRAM_MAP(srider_map)
+ MCFG_DEVICE_IO_MAP(subsino_iomap)
i8255_device &ppi1(I8255A(config, "ppi1"));
ppi1.in_pa_callback().set_ioport("SW1");
@@ -2801,16 +2801,16 @@ void subsino_state::srider(machine_config &config)
ppi2.in_pb_callback().set_ioport("INA");
ppi2.in_pc_callback().set_ioport("INB");
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0+16, 256-16-1);
- screen.set_screen_update(FUNC(subsino_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(subsino_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, subsino_depth4);
@@ -2821,26 +2821,27 @@ void subsino_state::srider(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM3812(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- OKIM6295(config, "oki", XTAL(4'433'619) / 4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* Clock frequency & pin 7 not verified */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(4'433'619) / 4, okim6295_device::PIN7_HIGH) /* Clock frequency & pin 7 not verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void subsino_state::sharkpy(machine_config &config)
-{
+MACHINE_CONFIG_START(subsino_state::sharkpy)
srider(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &subsino_state::sharkpy_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sharkpy_map)
+MACHINE_CONFIG_END
-void subsino_state::tisub(machine_config &config)
-{
+MACHINE_CONFIG_START(subsino_state::tisub)
/* basic machine hardware */
- Z180(config, m_maincpu, XTAL(12'000'000) / 8); /* Unknown CPU and clock */
- m_maincpu->set_addrmap(AS_PROGRAM, &subsino_state::tisub_map);
- m_maincpu->set_addrmap(AS_IO, &subsino_state::subsino_iomap);
+ MCFG_DEVICE_ADD("maincpu", Z180, XTAL(12'000'000) / 8) /* Unknown CPU and clock */
+ MCFG_DEVICE_PROGRAM_MAP(tisub_map)
+ MCFG_DEVICE_IO_MAP(subsino_iomap)
i8255_device &ppi1(I8255A(config, "ppi1"));
ppi1.in_pa_callback().set_ioport("SW1");
@@ -2852,16 +2853,16 @@ void subsino_state::tisub(machine_config &config)
ppi2.in_pb_callback().set_ioport("INA");
ppi2.in_pc_callback().set_ioport("INB");
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0+16, 256-16-1);
- screen.set_screen_update(FUNC(subsino_state::screen_update_reels));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(subsino_state, screen_update_reels)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, subsino_depth4_reels);
@@ -2872,15 +2873,15 @@ void subsino_state::tisub(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM3812(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0); /* Unknown clock */
-}
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(3'579'545)) /* Unknown clock */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void subsino_state::stbsub(machine_config &config)
-{
+MACHINE_CONFIG_START(subsino_state::stbsub)
/* basic machine hardware */
- Z180(config, m_maincpu, XTAL(12'000'000) / 8); /* Unknown clock */
- m_maincpu->set_addrmap(AS_PROGRAM, &subsino_state::stbsub_map);
- m_maincpu->set_addrmap(AS_IO, &subsino_state::subsino_iomap);
+ MCFG_DEVICE_ADD("maincpu", Z180, XTAL(12'000'000) / 8) /* Unknown clock */
+ MCFG_DEVICE_PROGRAM_MAP(stbsub_map)
+ MCFG_DEVICE_IO_MAP(subsino_iomap)
i8255_device &ppi1(I8255A(config, "ppi1"));
ppi1.in_pa_callback().set_ioport("SW1");
@@ -2893,16 +2894,16 @@ void subsino_state::stbsub(machine_config &config)
ppi2.in_pc_callback().set_ioport("INA");
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0+16, 256-16-1);
- screen.set_screen_update(FUNC(subsino_state::screen_update_stbsub_reels));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(subsino_state, screen_update_stbsub_reels)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, subsino_stbsub);
@@ -2917,16 +2918,17 @@ void subsino_state::stbsub(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM3812(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(3'579'545))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void subsino_state::mtrainnv(machine_config &config)
-{
+MACHINE_CONFIG_START(subsino_state::mtrainnv)
stbsub(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &subsino_state::mtrainnv_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mtrainnv_map)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/subsino2.cpp b/src/mame/drivers/subsino2.cpp
index 2d6931de584..59885ec840a 100644
--- a/src/mame/drivers/subsino2.cpp
+++ b/src/mame/drivers/subsino2.cpp
@@ -22,9 +22,7 @@ Year Game CPU Sound Custom
1999 Bishou Jan H8/3044** SS9904 SS9601, SS9802, SS9803 HM86171 RAMDAC, Battery
1999 X-Train/P-Train AM188-EM M6295 SS9601, SS9802, SS9803 HM86171 RAMDAC, Battery
2000 New 2001 H8/3044** SS9904 SS9601, SS9802, SS9803 HM86171 RAMDAC, Battery
-2001 Queen Bee H8/3044** SS9804 SS9601, SS9802, SS9803 HM86171 RAMDAC, Battery
2001 Humlan's Lyckohjul H8/3044** SS9804 SS9601, SS9802, SS9803 HM86171 RAMDAC, Battery
-2002 Super Queen Bee H8/3044** ? ? ?
2006 X-Plan AM188-EM M6295 SS9601, SS9802, SS9803 HM86171 RAMDAC, Battery
----------------------------------------------------------------------------------------------------------------
*SS9600 **SS9689
@@ -36,7 +34,7 @@ To do:
- ptrain: missing scroll in race screens.
- humlan: empty reels when bonus image should scroll in via L0 scroll. The image (crown/fruits) is at y > 0x100 in the tilemap.
- saklove, xplan: remove IRQ hacks (when an AM188-EM core will be available).
-- bishjan, new2001, humlan, saklove, squeenb: game is sometimes too fast (can bishjan read the VBLANK state? saklove and xplan can).
+- bishjan, new2001, humlan, saklove: game is sometimes too fast (can bishjan read the VBLANK state? saklove and xplan can).
- xtrain: it runs faster than a video from the real thing. It doesn't use vblank irqs (but reads the vblank bit).
- mtrain: implement hopper. Double up does not work?
@@ -115,10 +113,7 @@ public:
void init_bishjan();
void init_new2001();
- void init_queenbee();
- void init_queenbeeb();
void init_humlan();
- void init_squeenb();
void init_xtrain();
void init_expcard();
void init_wtrnymph();
@@ -2385,25 +2380,24 @@ INPUT_PORTS_END
Bishou Jan
***************************************************************************/
-void subsino2_state::bishjan(machine_config &config)
-{
- H83044(config, m_maincpu, XTAL(44'100'000) / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &subsino2_state::bishjan_map);
- m_maincpu->set_vblank_int("screen", FUNC(subsino2_state::irq0_line_hold));
+MACHINE_CONFIG_START(subsino2_state::bishjan)
+ MCFG_DEVICE_ADD("maincpu", H83044, XTAL(44'100'000) / 3)
+ MCFG_DEVICE_PROGRAM_MAP( bishjan_map )
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", subsino2_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
// video hardware
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 256-16-1);
- m_screen->set_refresh_hz(60);
- m_screen->set_screen_update(FUNC(subsino2_state::screen_update_subsino2));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE( 512, 256 )
+ MCFG_SCREEN_VISIBLE_AREA( 0, 512-1, 0, 256-16-1 )
+ MCFG_SCREEN_REFRESH_RATE( 60 )
+ MCFG_SCREEN_UPDATE_DRIVER(subsino2_state, screen_update_subsino2)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_ss9601);
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ss9601)
+ MCFG_PALETTE_ADD( "palette", 256 )
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette)); // HMC HM86171 VGA 256 colour RAMDAC
ramdac.set_addrmap(0, &subsino2_state::ramdac_map);
@@ -2412,51 +2406,50 @@ void subsino2_state::bishjan(machine_config &config)
// sound hardware
// SS9904
-}
+MACHINE_CONFIG_END
-void subsino2_state::new2001(machine_config &config)
-{
+MACHINE_CONFIG_START(subsino2_state::new2001)
bishjan(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &subsino2_state::new2001_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP( new2001_map )
- m_screen->set_size(640, 256);
- m_screen->set_visarea(0, 640-1, 0, 256-16-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE( 640, 256 )
+ MCFG_SCREEN_VISIBLE_AREA( 0, 640-1, 0, 256-16-1 )
+MACHINE_CONFIG_END
-void subsino2_state::humlan(machine_config &config)
-{
+MACHINE_CONFIG_START(subsino2_state::humlan)
bishjan(config);
- H83044(config.replace(), m_maincpu, XTAL(48'000'000) / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &subsino2_state::humlan_map);
- m_maincpu->set_vblank_int("screen", FUNC(subsino2_state::irq0_line_hold));
+ MCFG_DEVICE_REPLACE("maincpu", H83044, XTAL(48'000'000) / 3)
+ MCFG_DEVICE_PROGRAM_MAP( humlan_map )
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", subsino2_state, irq0_line_hold)
// sound hardware
// SS9804
-}
+MACHINE_CONFIG_END
/***************************************************************************
Magic Train
***************************************************************************/
-void subsino2_state::mtrain(machine_config &config)
-{
- Z180(config, m_maincpu, XTAL(12'000'000) / 8); /* Unknown clock */
- m_maincpu->set_addrmap(AS_PROGRAM, &subsino2_state::mtrain_map);
- m_maincpu->set_addrmap(AS_IO, &subsino2_state::mtrain_io);
+MACHINE_CONFIG_START(subsino2_state::mtrain)
+ MCFG_DEVICE_ADD("maincpu", Z180, XTAL(12'000'000) / 8) /* Unknown clock */
+ MCFG_DEVICE_PROGRAM_MAP( mtrain_map )
+ MCFG_DEVICE_IO_MAP( mtrain_io )
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
// video hardware
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 256-32-1);
- m_screen->set_refresh_hz(58.7270);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); // game reads vblank state
- m_screen->set_screen_update(FUNC(subsino2_state::screen_update_subsino2));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE( 512, 256 )
+ MCFG_SCREEN_VISIBLE_AREA( 0, 512-1, 0, 256-32-1 )
+ MCFG_SCREEN_REFRESH_RATE( 58.7270 )
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
+ MCFG_SCREEN_UPDATE_DRIVER(subsino2_state, screen_update_subsino2)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_ss9601);
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ss9601)
+ MCFG_PALETTE_ADD( "palette", 256 )
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette)); // HMC HM86171 VGA 256 colour RAMDAC
ramdac.set_addrmap(0, &subsino2_state::ramdac_map);
@@ -2466,33 +2459,32 @@ void subsino2_state::mtrain(machine_config &config)
// sound hardware
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(8'467'200) / 8, okim6295_device::PIN7_HIGH); // probably
- m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(8'467'200) / 8, okim6295_device::PIN7_HIGH) // probably
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
Sakura Love - Ying Hua Lian
***************************************************************************/
-void subsino2_state::saklove(machine_config &config)
-{
- I80188(config, m_maincpu, XTAL(20'000'000)*2); // !! AMD AM188-EM !!
- m_maincpu->set_addrmap(AS_PROGRAM, &subsino2_state::saklove_map);
- m_maincpu->set_addrmap(AS_IO, &subsino2_state::saklove_io);
+MACHINE_CONFIG_START(subsino2_state::saklove)
+ MCFG_DEVICE_ADD("maincpu", I80188, XTAL(20'000'000)*2 ) // !! AMD AM188-EM !!
+ MCFG_DEVICE_PROGRAM_MAP( saklove_map )
+ MCFG_DEVICE_IO_MAP( saklove_io )
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
// video hardware
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 256-16-1);
- m_screen->set_refresh_hz(58.7270);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); // game reads vblank state
- m_screen->set_screen_update(FUNC(subsino2_state::screen_update_subsino2));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE( 512, 256 )
+ MCFG_SCREEN_VISIBLE_AREA( 0, 512-1, 0, 256-16-1 )
+ MCFG_SCREEN_REFRESH_RATE( 58.7270 )
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
+ MCFG_SCREEN_UPDATE_DRIVER(subsino2_state, screen_update_subsino2)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_ss9601);
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ss9601)
+ MCFG_PALETTE_ADD( "palette", 256 )
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette)); // HMC HM86171 VGA 256 colour RAMDAC
ramdac.set_addrmap(0, &subsino2_state::ramdac_map);
@@ -2502,35 +2494,36 @@ void subsino2_state::saklove(machine_config &config)
// sound hardware
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(8'467'200) / 8, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(8'467'200) / 8, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
- YM3812(config, "ymsnd", XTAL(12'000'000) / 4).add_route(ALL_OUTPUTS, "mono", 0.80); // ? chip and clock unknown
-}
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(12'000'000) / 4) // ? chip and clock unknown
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
/***************************************************************************
X-Plan
***************************************************************************/
-void subsino2_state::xplan(machine_config &config)
-{
- I80188(config, m_maincpu, XTAL(20'000'000)*2); // !! AMD AM188-EM !!
- m_maincpu->set_addrmap(AS_PROGRAM, &subsino2_state::xplan_map);
- m_maincpu->set_addrmap(AS_IO, &subsino2_state::xplan_io);
- m_maincpu->set_vblank_int("screen", FUNC(subsino2_state::am188em_int0_irq));
+MACHINE_CONFIG_START(subsino2_state::xplan)
+ MCFG_DEVICE_ADD("maincpu", I80188, XTAL(20'000'000)*2 ) // !! AMD AM188-EM !!
+ MCFG_DEVICE_PROGRAM_MAP( xplan_map )
+ MCFG_DEVICE_IO_MAP( xplan_io )
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", subsino2_state, am188em_int0_irq)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
// video hardware
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 256-16-1);
- m_screen->set_refresh_hz(58.7270);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); // game reads vblank state
- m_screen->set_screen_update(FUNC(subsino2_state::screen_update_subsino2));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE( 512, 256 )
+ MCFG_SCREEN_VISIBLE_AREA( 0, 512-1, 0, 256-16-1 )
+ MCFG_SCREEN_REFRESH_RATE( 58.7270 )
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
+ MCFG_SCREEN_UPDATE_DRIVER(subsino2_state, screen_update_subsino2)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_ss9601);
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ss9601)
+ MCFG_PALETTE_ADD( "palette", 256 )
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette)); // HMC HM86171 VGA 256 colour RAMDAC
ramdac.set_addrmap(0, &subsino2_state::ramdac_map);
@@ -2540,20 +2533,21 @@ void subsino2_state::xplan(machine_config &config)
// sound hardware
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(8'467'200) / 8, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // probably
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(8'467'200) / 8, okim6295_device::PIN7_HIGH) // probably
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void subsino2_state::xtrain(machine_config &config)
-{
+MACHINE_CONFIG_START(subsino2_state::xtrain)
xplan(config);
- m_maincpu->set_addrmap(AS_IO, &subsino2_state::xtrain_io);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(xtrain_io)
+MACHINE_CONFIG_END
-void subsino2_state::expcard(machine_config &config)
-{
+MACHINE_CONFIG_START(subsino2_state::expcard)
xplan(config);
- m_maincpu->set_addrmap(AS_IO, &subsino2_state::expcard_io);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(expcard_io)
+MACHINE_CONFIG_END
/***************************************************************************
@@ -2704,100 +2698,6 @@ void subsino2_state::init_new2001()
/***************************************************************************
-Queen Bee
-(c) 2001 Subsino
-
-no ROM labels available
-
-***************************************************************************/
-
-ROM_START( queenbee )
- ROM_REGION( 0x80000, "maincpu", 0 ) // H8/3044
- ROM_LOAD( "27c020 u21.bin", 0x00000, 0x40000, CRC(baec0241) SHA1(345cfee7bdb4f4c61caa828372a121f3917bb4eb) )
- ROM_FILL( 0x40000, 0x40000, 0xff )
-
- ROM_REGION( 0x200000, "tilemap", 0 )
- ROM_LOAD32_BYTE( "27c4001 u25.bin", 0x000000, 0x80000, CRC(628ed650) SHA1(dadbc5f73f6a5773303d834a44d2eab836874cfe) )
- ROM_LOAD32_BYTE( "27c4001 u26.bin", 0x000001, 0x80000, CRC(27a169df) SHA1(d36989c300051a0c41752638ab5134a9b04c50a4) )
- ROM_LOAD32_BYTE( "27c4001 u27.bin", 0x000002, 0x80000, CRC(27e8c4b9) SHA1(b010b9dcadb357cf4e79d97ce84b86f792bd8ecf) )
- ROM_LOAD32_BYTE( "27c4001 u28.bin", 0x000003, 0x80000, CRC(7f139a04) SHA1(595a114806756e6f77a6fe20a13515b211ffdf2a) )
-
- ROM_REGION( 0x80000, "samples", 0 )
- ROM_LOAD( "27c4001 u9.bin", 0x000000, 0x80000, CRC(c7cda990) SHA1(193144fe0c31fc8342bd44aa4899bf15f0bc399d) )
-ROM_END
-
-void subsino2_state::init_queenbee()
-{
- uint16_t *rom = (uint16_t*)memregion("maincpu")->base();
-
- // patch serial protection test (ERROR 093099 otherwise)
- rom[0x1cc6/2] = 0x4066;
-
- // rts -> rte
- rom[0x3e6a/2] = 0x5670; // IRQ 8
- rom[0x3fbe/2] = 0x5670; // IRQ 0
-}
-
-ROM_START( queenbeeb )
- ROM_REGION( 0x80000, "maincpu", 0 ) // H8/3044
- ROM_LOAD( "u21", 0x00000, 0x40000, CRC(23e0ad8f) SHA1(d913ebd249c471ab36aabe515a8b36bb3590c1ca) )
- ROM_FILL( 0x40000, 0x40000, 0xff )
-
- ROM_REGION( 0x200000, "tilemap", 0 ) // this PCB has a single surface mounted ROM, which hasn't been dumped.
- ROM_LOAD( "gfx", 0x000000, 0x200000, NO_DUMP )
- // following ROMs are taken from humlan for testing, it doesn't seem to be a case of just differently split ROMs.
- // ROM_LOAD32_BYTE( "hlj__truemax_3_v402.u25", 0x000000, 0x80000, CRC(dfc8d795) SHA1(93e0fe271c7390596f73092720befe11d8354838) )
- // ROM_LOAD32_BYTE( "hlj__truemax_4_v402.u26", 0x000001, 0x80000, CRC(31c774d6) SHA1(13fcdb42f5fd7d0cadd3fd7030037c21b7585f0f) )
- // ROM_LOAD32_BYTE( "hlj__truemax_5_v402.u27", 0x000002, 0x80000, CRC(28e14be8) SHA1(778906427175ca50ad5b0a7c5978c36ed29ef994) )
- // ROM_LOAD32_BYTE( "hlj__truemax_6_v402.u28", 0x000003, 0x80000, CRC(d1c7ae17) SHA1(3ddb8ad38eeb5ab0a944d7d26cfb890a4327ef2e) )
-
- ROM_REGION( 0x40000, "samples", 0 )
- ROM_LOAD( "u9", 0x000000, 0x40000, NO_DUMP )
-ROM_END
-
-void subsino2_state::init_queenbeeb()
-{
- uint16_t *rom = (uint16_t*)memregion("maincpu")->base();
-
- // patch serial protection test (ERROR 093099 otherwise)
- rom[0x1826/2] = 0x4066;
-
- // rts -> rte
- rom[0x3902/2] = 0x5670; // IRQ 8
- rom[0x3a56/2] = 0x5670; // IRQ 0
-}
-
-// make sure these are really queenbee
-ROM_START( queenbeei )
- ROM_REGION( 0x80000, "maincpu", 0 ) // H8/3044
- ROM_LOAD( "u21 9ac9 v100", 0x00000, 0x40000, CRC(061b406f) SHA1(2a5433817e41610e9ba90302a6b9608f769176a0) )
- ROM_FILL( 0x40000, 0x40000, 0xff )
-
- ROM_REGION( 0x200000, "tilemap", 0 )
- ROM_LOAD( "gfx", 0x000000, 0x200000, NO_DUMP )
-
- ROM_REGION( 0x80000, "samples", 0 )
- ROM_LOAD( "u9", 0x000000, 0x80000, NO_DUMP )
-ROM_END
-
-ROM_START( queenbeesa )
- ROM_REGION( 0x80000, "maincpu", 0 ) // H8/3044
- ROM_LOAD( "00b0 u21 1v101", 0x00000, 0x40000, CRC(19e31fd7) SHA1(01cf507958b0411d21dd660280f45668d7c5b9d9) )
- ROM_FILL( 0x40000, 0x40000, 0xff )
-
- ROM_REGION( 0x200000, "tilemap", 0 )
- ROM_LOAD( "gfx", 0x000000, 0x200000, NO_DUMP )
-
- ROM_REGION( 0x80000, "samples", 0 )
- ROM_LOAD( "u9", 0x000000, 0x80000, NO_DUMP )
-ROM_END
-
-
-
-
-
-/***************************************************************************
-
Humlan's Lyckohjul (Sweden, V402)
(c) 2001 Subsino & Truemax
@@ -2838,42 +2738,6 @@ void subsino2_state::init_humlan()
/***************************************************************************
-Super Queen Bee
-(c) 2002 Subsino
-
-no ROM labels available
-
-***************************************************************************/
-
-ROM_START( squeenb )
- ROM_REGION( 0x80000, "maincpu", 0 ) // H8/3044
- ROM_LOAD( "u21", 0x00000, 0x40000, CRC(9edc4062) SHA1(515c8e648f839c99905fd5a861688fc62a45c4ed) )
- ROM_FILL( 0x40000, 0x40000, 0xff )
-
- ROM_REGION( 0x200000, "tilemap", 0 )
- ROM_LOAD32_BYTE( "u25", 0x000000, 0x80000, CRC(842c0a33) SHA1(defb79c158d5091ca8830e9f03dda382d03d51ef) )
- ROM_LOAD32_BYTE( "u26", 0x000001, 0x80000, CRC(11b67abb) SHA1(e388e3aefbcceda1390c00e6590cbdd686982b2e) )
- ROM_LOAD32_BYTE( "u27", 0x000002, 0x80000, CRC(d713131a) SHA1(74a95e1ef0d30da53a91a5232574687f816df2eb) )
- ROM_LOAD32_BYTE( "u28", 0x000003, 0x80000, CRC(dfa39f39) SHA1(992f74c04cbf4af06a02812052ce701228d4e174) )
-
- ROM_REGION( 0x80000, "samples", 0 )
- ROM_LOAD( "u9", 0x000000, 0x80000, CRC(c7cda990) SHA1(193144fe0c31fc8342bd44aa4899bf15f0bc399d) )
-ROM_END
-
-void subsino2_state::init_squeenb()
-{
- uint16_t *rom = (uint16_t*)memregion("maincpu")->base();
-
- // patch serial protection test (ERROR 093099 otherwise)
- rom[0x1814/2] = 0x4066;
-
- // rts -> rte
- rom[0x399a/2] = 0x5670; // IRQ 8
- rom[0x3aa8/2] = 0x5670; // IRQ 0
-}
-
-/***************************************************************************
-
Express Card / Top Card
(c) 1998 American Alpha
@@ -3313,29 +3177,13 @@ void subsino2_state::init_wtrnymph()
rom[0xc2d7] = 0x18;
}
-GAME( 1996, mtrain, 0, mtrain, mtrain, subsino2_state, init_mtrain, ROT0, "Subsino", "Magic Train (Ver. 1.31)", 0 )
-
-GAME( 1996, wtrnymph, 0, mtrain, wtrnymph, subsino2_state, init_wtrnymph, ROT0, "Subsino", "Water-Nymph (Ver. 1.4)", 0 )
-
-GAME( 1998, expcard, 0, expcard, expcard, subsino2_state, init_expcard, ROT0, "Subsino (American Alpha license)", "Express Card / Top Card (Ver. 1.5)", 0 )
-
-GAME( 1998, saklove, 0, saklove, saklove, subsino2_state, init_saklove, ROT0, "Subsino", "Ying Hua Lian 2.0 (China, Ver. 1.02)", 0 )
-
-GAME( 1999, xtrain, 0, xtrain, xtrain, subsino2_state, init_xtrain, ROT0, "Subsino", "X-Train (Ver. 1.3)", 0 )
-
-GAME( 1999, ptrain, 0, xtrain, xtrain, subsino2_state, init_ptrain, ROT0, "Subsino", "Panda Train (Novamatic 1.7)", MACHINE_IMPERFECT_GRAPHICS )
-
-GAME( 1999, bishjan, 0, bishjan, bishjan, subsino2_state, init_bishjan, ROT0, "Subsino", "Bishou Jan (Japan, Ver. 203)", MACHINE_NO_SOUND )
-
-GAME( 2000, new2001, 0, new2001, new2001, subsino2_state, init_new2001, ROT0, "Subsino", "New 2001 (Italy, Ver. 200N)", MACHINE_NO_SOUND )
-
-GAME( 2006, xplan, 0, xplan, xplan, subsino2_state, init_xplan, ROT0, "Subsino", "X-Plan (Ver. 101)", 0 )
-
-GAME( 2001, queenbee, 0, humlan, humlan, subsino2_state, init_queenbee, ROT0, "Subsino (American Alpha license)", "Queen Bee (Ver. 114)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // severe timing issues
-GAME( 2001, queenbeeb,queenbee, humlan, humlan, subsino2_state, init_queenbeeb,ROT0, "Subsino", "Queen Bee (Brazil, Ver. 202)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // severe timing issues, only program ROM available
-GAME( 2001, queenbeei,queenbee, humlan, humlan, subsino2_state, empty_init, ROT0, "Subsino", "Queen Bee (Israel, Ver. 100)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // severe timing issues, only program ROM available
-GAME( 2001, queenbeesa,queenbee,humlan, humlan, subsino2_state, empty_init, ROT0, "Subsino", "Queen Bee (SA-101-HARD)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // severe timing issues, only program ROM available
-
-GAME( 2001, humlan, queenbee, humlan, humlan, subsino2_state, init_humlan, ROT0, "Subsino (Truemax license)", "Humlan's Lyckohjul (Sweden, Ver. 402)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // severe timing issues
-
-GAME( 2002, squeenb, 0, humlan, humlan, subsino2_state, init_squeenb, ROT0, "Subsino", "Super Queen Bee (Ver. 101)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // severe timing issues
+GAME( 1996, mtrain, 0, mtrain, mtrain, subsino2_state, init_mtrain, ROT0, "Subsino", "Magic Train (Ver. 1.31)", 0 )
+GAME( 1996, wtrnymph, 0, mtrain, wtrnymph, subsino2_state, init_wtrnymph, ROT0, "Subsino", "Water-Nymph (Ver. 1.4)", 0 )
+GAME( 1998, expcard, 0, expcard, expcard, subsino2_state, init_expcard, ROT0, "American Alpha", "Express Card / Top Card (Ver. 1.5)", 0 )
+GAME( 1998, saklove, 0, saklove, saklove, subsino2_state, init_saklove, ROT0, "Subsino", "Ying Hua Lian 2.0 (China, Ver. 1.02)", 0 )
+GAME( 1999, xtrain, 0, xtrain, xtrain, subsino2_state, init_xtrain, ROT0, "Subsino", "X-Train (Ver. 1.3)", 0 )
+GAME( 1999, ptrain, 0, xtrain, xtrain, subsino2_state, init_ptrain, ROT0, "Subsino", "Panda Train (Novamatic 1.7)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, bishjan, 0, bishjan, bishjan, subsino2_state, init_bishjan, ROT0, "Subsino", "Bishou Jan (Japan, Ver. 203)", MACHINE_NO_SOUND )
+GAME( 2000, new2001, 0, new2001, new2001, subsino2_state, init_new2001, ROT0, "Subsino", "New 2001 (Italy, Ver. 200N)", MACHINE_NO_SOUND )
+GAME( 2006, xplan, 0, xplan, xplan, subsino2_state, init_xplan, ROT0, "Subsino", "X-Plan (Ver. 101)", 0 )
+GAME( 2001, humlan, 0, humlan, humlan, subsino2_state, init_humlan, ROT0, "Subsino (Truemax license)", "Humlan's Lyckohjul (Sweden, Ver. 402)", MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/summit.cpp b/src/mame/drivers/summit.cpp
index 17f3cf907e0..d2a7f4e0c06 100644
--- a/src/mame/drivers/summit.cpp
+++ b/src/mame/drivers/summit.cpp
@@ -314,25 +314,24 @@ void summit_state::summit_palette(palette_device &palette) const
{
}
-void summit_state::summit(machine_config &config)
-{
+MACHINE_CONFIG_START(summit_state::summit)
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &summit_state::mainmap);
- m_maincpu->set_vblank_int("screen", FUNC(summit_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,4000000)
+ MCFG_DEVICE_PROGRAM_MAP(mainmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", summit_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 256-1, 16, 256-16-1);
- screen.set_screen_update(FUNC(summit_state::screen_update_summit));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(summit_state, screen_update_summit)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_summit);
PALETTE(config, m_palette, FUNC(summit_state::summit_palette), 256);
-}
+MACHINE_CONFIG_END
ROM_START( pushover )
diff --git a/src/mame/drivers/sumt8035.cpp b/src/mame/drivers/sumt8035.cpp
index d1e67fd4e00..f2c6ca9e801 100644
--- a/src/mame/drivers/sumt8035.cpp
+++ b/src/mame/drivers/sumt8035.cpp
@@ -239,13 +239,13 @@ static INPUT_PORTS_START( summit )
INPUT_PORTS_END
-void sumt8035_state::summit(machine_config &config)
-{
+MACHINE_CONFIG_START(sumt8035_state::summit)
/* basic machine hardware */
- I8035(config, m_maincpu, 5000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &sumt8035_state::sumt_map);
- m_maincpu->set_addrmap(AS_IO, &sumt8035_state::sumt_portmap);
-}
+ MCFG_DEVICE_ADD("maincpu",I8035,5000000)
+ MCFG_DEVICE_PROGRAM_MAP(sumt_map)
+ MCFG_DEVICE_IO_MAP(sumt_portmap)
+
+MACHINE_CONFIG_END
ROM_START( sm_ngacc )
diff --git a/src/mame/drivers/sun2.cpp b/src/mame/drivers/sun2.cpp
index acdc6a49214..a7ae02f5ccd 100644
--- a/src/mame/drivers/sun2.cpp
+++ b/src/mame/drivers/sun2.cpp
@@ -300,7 +300,7 @@ READ16_MEMBER( sun2_state::tl_mmu_r )
switch ((m_pagemap[entry] >> 22) & 7)
{
case 0: // type 0 space
- return m_type0space->read16(tmp, mem_mask);
+ return m_type0space->read16(space, tmp, mem_mask);
case 1: // type 1 space
// EPROM space is special: the MMU has a trap door
@@ -326,13 +326,13 @@ READ16_MEMBER( sun2_state::tl_mmu_r )
}
//printf("read device space @ %x\n", tmp<<1);
- return m_type1space->read16(tmp, mem_mask);
+ return m_type1space->read16(space, tmp, mem_mask);
case 2: // type 2 space
- return m_type2space->read16(tmp, mem_mask);
+ return m_type2space->read16(space, tmp, mem_mask);
case 3: // type 3 space
- return m_type3space->read16(tmp, mem_mask);
+ return m_type3space->read16(space, tmp, mem_mask);
}
}
else
@@ -445,20 +445,20 @@ WRITE16_MEMBER( sun2_state::tl_mmu_w )
switch ((m_pagemap[entry] >> 22) & 7)
{
case 0: // type 0
- m_type0space->write16(tmp, data, mem_mask);
+ m_type0space->write16(space, tmp, data, mem_mask);
return;
case 1: // type 1
//printf("write device space @ %x\n", tmp<<1);
- m_type1space->write16(tmp, data, mem_mask);
+ m_type1space->write16(space, tmp, data, mem_mask);
return;
case 2: // type 2
- m_type2space->write16(tmp, data, mem_mask);
+ m_type2space->write16(space, tmp, data, mem_mask);
return;
case 3: // type 3
- m_type3space->write16(tmp, data, mem_mask);
+ m_type3space->write16(space, tmp, data, mem_mask);
return;
}
}
@@ -611,11 +611,10 @@ void sun2_state::machine_reset()
m_maincpu->reset();
}
-void sun2_state::sun2vme(machine_config &config)
-{
+MACHINE_CONFIG_START(sun2_state::sun2vme)
/* basic machine hardware */
- M68010(config, m_maincpu, 19.6608_MHz_XTAL / 2); // or 24_MHz_XTAL / 2 by jumper setting
- m_maincpu->set_addrmap(AS_PROGRAM, &sun2_state::sun2_mem);
+ MCFG_DEVICE_ADD("maincpu", M68010, 19.6608_MHz_XTAL / 2) // or 24_MHz_XTAL / 2 by jumper setting
+ MCFG_DEVICE_PROGRAM_MAP(sun2_mem)
RAM(config, RAM_TAG).set_default_size("2M").set_extra_options("4M,6M,8M").set_default_value(0x00);
@@ -631,11 +630,11 @@ void sun2_state::sun2vme(machine_config &config)
// MMU Type 3 device space
ADDRESS_MAP_BANK(config, "type3").set_map(&sun2_state::vmetype3space_map).set_options(ENDIANNESS_BIG, 16, 32, 0x1000000);
- screen_device &bwtwo(SCREEN(config, "bwtwo", SCREEN_TYPE_RASTER));
- bwtwo.set_screen_update(FUNC(sun2_state::bw2_update));
- bwtwo.set_size(1152,900);
- bwtwo.set_visarea(0, 1152-1, 0, 900-1);
- bwtwo.set_refresh_hz(72);
+ MCFG_SCREEN_ADD("bwtwo", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(sun2_state, bw2_update)
+ MCFG_SCREEN_SIZE(1152,900)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1152-1, 0, 900-1)
+ MCFG_SCREEN_REFRESH_RATE(72)
am9513a_device &timer(AM9513A(config, "timer", 19.6608_MHz_XTAL / 4));
timer.fout_cb().set("timer", FUNC(am9513_device::gate1_w));
@@ -645,7 +644,8 @@ void sun2_state::sun2vme(machine_config &config)
timer.out4_cb().set("irq5", FUNC(input_merger_device::in_w<2>));
timer.out5_cb().set("irq5", FUNC(input_merger_device::in_w<3>));
- INPUT_MERGER_ANY_HIGH(config, "irq5").output_handler().set_inputline(m_maincpu, M68K_IRQ_5); // 74LS05 open collectors
+ MCFG_INPUT_MERGER_ANY_HIGH("irq5") // 74LS05 open collectors
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", M68K_IRQ_5))
SCC8530N(config, SCC1_TAG, 19.6608_MHz_XTAL / 4);
scc8530_device& scc2(SCC8530N(config, SCC2_TAG, 19.6608_MHz_XTAL / 4));
@@ -662,13 +662,12 @@ void sun2_state::sun2vme(machine_config &config)
rs232b.rxd_handler().set(SCC2_TAG, FUNC(z80scc_device::rxb_w));
rs232b.dcd_handler().set(SCC2_TAG, FUNC(z80scc_device::dcdb_w));
rs232b.cts_handler().set(SCC2_TAG, FUNC(z80scc_device::ctsb_w));
-}
+MACHINE_CONFIG_END
-void sun2_state::sun2mbus(machine_config &config)
-{
+MACHINE_CONFIG_START(sun2_state::sun2mbus)
/* basic machine hardware */
- M68010(config, m_maincpu, 39.3216_MHz_XTAL / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &sun2_state::sun2_mem);
+ MCFG_DEVICE_ADD("maincpu", M68010, 39.3216_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(sun2_mem)
RAM(config, RAM_TAG).set_default_size("2M").set_extra_options("4M").set_default_value(0x00);
@@ -684,11 +683,11 @@ void sun2_state::sun2mbus(machine_config &config)
// MMU Type 3 device space
ADDRESS_MAP_BANK(config, "type3").set_map(&sun2_state::mbustype3space_map).set_options(ENDIANNESS_BIG, 16, 32, 0x1000000);
- screen_device &bwtwo(SCREEN(config, "bwtwo", SCREEN_TYPE_RASTER));
- bwtwo.set_screen_update(FUNC(sun2_state::bw2_update));
- bwtwo.set_size(1152,900);
- bwtwo.set_visarea(0, 1152-1, 0, 900-1);
- bwtwo.set_refresh_hz(72);
+ MCFG_SCREEN_ADD("bwtwo", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(sun2_state, bw2_update)
+ MCFG_SCREEN_SIZE(1152,900)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1152-1, 0, 900-1)
+ MCFG_SCREEN_REFRESH_RATE(72)
am9513a_device &timer(AM9513A(config, "timer", 39.3216_MHz_XTAL / 8));
timer.fout_cb().set("timer", FUNC(am9513_device::gate1_w));
@@ -698,7 +697,8 @@ void sun2_state::sun2mbus(machine_config &config)
timer.out4_cb().set("irq5", FUNC(input_merger_device::in_w<2>));
timer.out5_cb().set("irq5", FUNC(input_merger_device::in_w<3>));
- INPUT_MERGER_ANY_HIGH(config, "irq5").output_handler().set_inputline(m_maincpu, M68K_IRQ_5); // 74LS05 open collectors
+ MCFG_INPUT_MERGER_ANY_HIGH("irq5") // 74LS05 open collectors
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", M68K_IRQ_5))
SCC8530N(config, SCC1_TAG, 39.3216_MHz_XTAL / 8);
scc8530_device& scc2(SCC8530N(config, SCC2_TAG, 39.3216_MHz_XTAL / 8));
@@ -717,7 +717,7 @@ void sun2_state::sun2mbus(machine_config &config)
rs232b.cts_handler().set(SCC2_TAG, FUNC(z80scc_device::ctsb_w));
MM58167(config, "rtc", 32.768_kHz_XTAL);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( sun2_120 ) // ROMs are located on the '501-1007' CPU PCB at locations B11 and B10; J400 is set to 1-2 for 27128 EPROMs and 3-4 for 27256 EPROMs
diff --git a/src/mame/drivers/sun3.cpp b/src/mame/drivers/sun3.cpp
index cda7adcc082..68a5c9863f1 100644
--- a/src/mame/drivers/sun3.cpp
+++ b/src/mame/drivers/sun3.cpp
@@ -319,8 +319,8 @@ void sun3_state::ncr5380(device_t *device)
{
devcb_base *devcb;
(void)devcb;
- downcast<ncr5380n_device &>(*device).set_clock(10000000);
-// downcast<ncr5380n_device &>(*device).drq_handler().set(FUNC(sun3_state::drq_w));
+ MCFG_DEVICE_CLOCK(10000000)
+// MCFG_NCR5380N_DRQ_HANDLER(WRITELINE(*this, sun3_state, drq_w))
}
static void scsi_devices(device_slot_interface &device)
@@ -543,7 +543,7 @@ READ32_MEMBER( sun3_state::tl_mmu_r )
switch ((m_pagemap[entry] >> 26) & 3)
{
case 0: // type 0 space
- return m_type0space->read32(tmp, mem_mask);
+ return m_type0space->read32(space, tmp, mem_mask);
case 1: // type 1 space
// magic ROM bypass
@@ -551,13 +551,13 @@ READ32_MEMBER( sun3_state::tl_mmu_r )
{
return m_rom_ptr[offset & 0x3fff];
}
- return m_type1space->read32(tmp, mem_mask);
+ return m_type1space->read32(space, tmp, mem_mask);
case 2: // type 2 space
- return m_type2space->read32(tmp, mem_mask);
+ return m_type2space->read32(space, tmp, mem_mask);
case 3: // type 3 space
- return m_type3space->read32(tmp, mem_mask);
+ return m_type3space->read32(space, tmp, mem_mask);
}
}
else
@@ -693,20 +693,20 @@ WRITE32_MEMBER( sun3_state::tl_mmu_w )
switch ((m_pagemap[entry] >> 26) & 3)
{
case 0: // type 0
- m_type0space->write32(tmp, data, mem_mask);
+ m_type0space->write32(space, tmp, data, mem_mask);
return;
case 1: // type 1
//printf("write device space @ %x\n", tmp<<1);
- m_type1space->write32(tmp, data, mem_mask);
+ m_type1space->write32(space, tmp, data, mem_mask);
return;
case 2: // type 2
- m_type2space->write32(tmp, data, mem_mask);
+ m_type2space->write32(space, tmp, data, mem_mask);
return;
case 3: // type 3
- m_type3space->write32(tmp, data, mem_mask);
+ m_type3space->write32(space, tmp, data, mem_mask);
return;
}
}
@@ -1008,17 +1008,16 @@ void sun3_state::machine_reset()
}
// The base Sun 3004 CPU board
-void sun3_state::sun3(machine_config &config)
-{
+MACHINE_CONFIG_START(sun3_state::sun3)
/* basic machine hardware */
- M68020(config, m_maincpu, 16670000);
- m_maincpu->set_addrmap(AS_PROGRAM, &sun3_state::sun3_mem);
+ MCFG_DEVICE_ADD("maincpu", M68020, 16670000)
+ MCFG_DEVICE_PROGRAM_MAP(sun3_mem)
- screen_device &bwtwo(SCREEN(config, "bwtwo", SCREEN_TYPE_RASTER));
- bwtwo.set_screen_update(FUNC(sun3_state::bw2_update));
- bwtwo.set_size(1600,1100);
- bwtwo.set_visarea(0, 1152-1, 0, 900-1);
- bwtwo.set_refresh_hz(72);
+ MCFG_SCREEN_ADD("bwtwo", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(sun3_state, bw2_update)
+ MCFG_SCREEN_SIZE(1600,1100)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1152-1, 0, 900-1)
+ MCFG_SCREEN_REFRESH_RATE(72)
RAM(config, m_ram).set_default_size("4M").set_extra_options("6M,8M,12M,16M,20M,24M,28M,32M").set_default_value(0x00);
@@ -1036,7 +1035,7 @@ void sun3_state::sun3(machine_config &config)
// MMU Type 3 device space
ADDRESS_MAP_BANK(config, "type3").set_map(&sun3_state::vmetype3space_map).set_options(ENDIANNESS_BIG, 32, 32, 0x80000000);
- TIMER(config, "timer").configure_periodic(FUNC(sun3_state::sun3_timer), attotime::from_hz(100));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer", sun3_state, sun3_timer, attotime::from_hz(100))
SCC8530N(config, m_scc1, 4.9152_MHz_XTAL);
m_scc1->out_txda_callback().set(KEYBOARD_TAG, FUNC(sun_keyboard_port_device::write_txd));
@@ -1062,73 +1061,70 @@ void sun3_state::sun3(machine_config &config)
AM79C90(config, m_lance, 10'000'000); // clock is a guess
- NSCSI_BUS(config, "scsibus");
- NSCSI_CONNECTOR(config, "scsibus:0", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:1", scsi_devices, "harddisk");
- NSCSI_CONNECTOR(config, "scsibus:2", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:3", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:4", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:5", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:6", scsi_devices, "cdrom");
- NSCSI_CONNECTOR(config, "scsibus:7", scsi_devices, "ncr5380", true).set_option_machine_config("ncr5380", [this] (device_t *device) { ncr5380(device); });
-}
+ MCFG_NSCSI_BUS_ADD("scsibus")
+ MCFG_NSCSI_ADD("scsibus:0", scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:1", scsi_devices, "harddisk", false)
+ MCFG_NSCSI_ADD("scsibus:2", scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:3", scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:4", scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:5", scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:6", scsi_devices, "cdrom", false)
+ MCFG_NSCSI_ADD("scsibus:7", scsi_devices, "ncr5380", true)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("ncr5380", [this] (device_t *device) { ncr5380(device); })
+MACHINE_CONFIG_END
// Sun 3/60
-void sun3_state::sun3_60(machine_config &config)
-{
+MACHINE_CONFIG_START(sun3_state::sun3_60)
sun3(config);
- M68020(config.replace(), m_maincpu, 20000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &sun3_state::sun3_mem);
-
- screen_device &bwtwo(*subdevice<screen_device>("bwtwo"));
- bwtwo.set_screen_update(FUNC(sun3_state::bw2_16x11_update));
- bwtwo.set_size(1600,1100);
- bwtwo.set_visarea(0, 1600-1, 0, 1100-1);
- bwtwo.set_refresh_hz(72);
-}
+ MCFG_DEVICE_REPLACE("maincpu", M68020, 20000000)
+ MCFG_DEVICE_PROGRAM_MAP(sun3_mem)
+
+ MCFG_SCREEN_MODIFY("bwtwo")
+ MCFG_SCREEN_UPDATE_DRIVER(sun3_state, bw2_16x11_update)
+ MCFG_SCREEN_SIZE(1600,1100)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1600-1, 0, 1100-1)
+ MCFG_SCREEN_REFRESH_RATE(72)
+MACHINE_CONFIG_END
// Sun 3/E
-void sun3_state::sun3e(machine_config &config)
-{
+MACHINE_CONFIG_START(sun3_state::sun3e)
sun3(config);
- M68020(config.replace(), m_maincpu, 20000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &sun3_state::sun3_mem);
-}
+ MCFG_DEVICE_REPLACE("maincpu", M68020, 20000000)
+ MCFG_DEVICE_PROGRAM_MAP(sun3_mem)
+MACHINE_CONFIG_END
// 3/260 and 3/280 (the Sun 3200 board)
-void sun3_state::sun3200(machine_config &config)
-{
+MACHINE_CONFIG_START(sun3_state::sun3200)
sun3(config);
- M68020(config.replace(), m_maincpu, 25000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &sun3_state::sun3_mem);
+ MCFG_DEVICE_REPLACE("maincpu", M68020, 25000000)
+ MCFG_DEVICE_PROGRAM_MAP(sun3_mem)
- screen_device &bwtwo(*subdevice<screen_device>("bwtwo"));
- bwtwo.set_screen_update(FUNC(sun3_state::bw2_16x11_update));
- bwtwo.set_size(1600,1100);
- bwtwo.set_visarea(0, 1600-1, 0, 1100-1);
- bwtwo.set_refresh_hz(72);
+ MCFG_SCREEN_MODIFY("bwtwo")
+ MCFG_SCREEN_UPDATE_DRIVER(sun3_state, bw2_16x11_update)
+ MCFG_SCREEN_SIZE(1600,1100)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1600-1, 0, 1100-1)
+ MCFG_SCREEN_REFRESH_RATE(72)
m_ram->set_default_size("32M").set_extra_options("64M,96M,128M");
-}
+MACHINE_CONFIG_END
-void sun3_state::sun3_50(machine_config &config)
-{
+MACHINE_CONFIG_START(sun3_state::sun3_50)
/* basic machine hardware */
- M68020(config, m_maincpu, 15700000);
- m_maincpu->set_addrmap(AS_PROGRAM, &sun3_state::sun3_mem);
+ MCFG_DEVICE_ADD("maincpu", M68020, 15700000)
+ MCFG_DEVICE_PROGRAM_MAP(sun3_mem)
AM79C90(config, m_lance, 10'000'000); // clock is a guess
- screen_device &bwtwo(SCREEN(config, "bwtwo", SCREEN_TYPE_RASTER));
- bwtwo.set_screen_update(FUNC(sun3_state::bw2_350_update));
- bwtwo.set_size(1600,1100);
- bwtwo.set_visarea(0, 1152-1, 0, 900-1);
- bwtwo.set_refresh_hz(72);
+ MCFG_SCREEN_ADD("bwtwo", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(sun3_state, bw2_350_update)
+ MCFG_SCREEN_SIZE(1600,1100)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1152-1, 0, 900-1)
+ MCFG_SCREEN_REFRESH_RATE(72)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TIMER(config, "timer").configure_periodic(FUNC(sun3_state::sun3_timer), attotime::from_hz(100));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer", sun3_state, sun3_timer, attotime::from_hz(100))
RAM(config, m_ram).set_default_size("4M").set_default_value(0x00);
@@ -1166,16 +1162,17 @@ void sun3_state::sun3_50(machine_config &config)
rs232b.dcd_handler().set(m_scc2, FUNC(z80scc_device::dcdb_w));
rs232b.cts_handler().set(m_scc2, FUNC(z80scc_device::ctsb_w));
- NSCSI_BUS(config, "scsibus");
- NSCSI_CONNECTOR(config, "scsibus:0", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:1", scsi_devices, "harddisk");
- NSCSI_CONNECTOR(config, "scsibus:2", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:3", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:4", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:5", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:6", scsi_devices, "cdrom");
- NSCSI_CONNECTOR(config, "scsibus:7", scsi_devices, "ncr5380", true).set_option_machine_config("ncr5380", [this] (device_t *device) { ncr5380(device); });
-}
+ MCFG_NSCSI_BUS_ADD("scsibus")
+ MCFG_NSCSI_ADD("scsibus:0", scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:1", scsi_devices, "harddisk", false)
+ MCFG_NSCSI_ADD("scsibus:2", scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:3", scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:4", scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:5", scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:6", scsi_devices, "cdrom", false)
+ MCFG_NSCSI_ADD("scsibus:7", scsi_devices, "ncr5380", true)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("ncr5380", [this] (device_t *device) { ncr5380(device); })
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/sun3x.cpp b/src/mame/drivers/sun3x.cpp
index c2e84f952c2..6fb4a9d82a1 100644
--- a/src/mame/drivers/sun3x.cpp
+++ b/src/mame/drivers/sun3x.cpp
@@ -591,13 +591,12 @@ static void sun_floppies(device_slot_interface &device)
device.option_add("35hd", FLOPPY_35_HD);
}
-void sun3x_state::sun3_80(machine_config &config)
-{
+MACHINE_CONFIG_START(sun3x_state::sun3_80)
/* basic machine hardware */
- M68030(config, m_maincpu, 20000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &sun3x_state::sun3_80_mem);
+ MCFG_DEVICE_ADD("maincpu", M68030, 20000000)
+ MCFG_DEVICE_PROGRAM_MAP(sun3_80_mem)
- M48T02(config, TIMEKEEPER_TAG, 0);
+ MCFG_DEVICE_ADD(TIMEKEEPER_TAG, M48T02, 0)
SCC8530N(config, m_scc1, 4.9152_MHz_XTAL);
m_scc1->out_txda_callback().set(KEYBOARD_TAG, FUNC(sun_keyboard_port_device::write_txd));
@@ -620,24 +619,25 @@ void sun3x_state::sun3_80(machine_config &config)
rs232b.dcd_handler().set(m_scc2, FUNC(z80scc_device::dcdb_w));
rs232b.cts_handler().set(m_scc2, FUNC(z80scc_device::ctsb_w));
- scsi_port_device &scsi(SCSI_PORT(config, "scsi"));
- scsi.set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_6));
- scsi.set_slot_device(2, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_5));
+ MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
+ MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_6)
+ MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE2, "harddisk", SCSIHD, SCSI_ID_5)
- NCR539X(config, ESP_TAG, 20000000/2).set_scsi_port("scsi");
+ MCFG_DEVICE_ADD(ESP_TAG, NCR539X, 20000000/2)
+ MCFG_LEGACY_SCSI_PORT("scsi")
N82077AA(config, m_fdc, n82077aa_device::MODE_PS2);
- FLOPPY_CONNECTOR(config, "fdc:0", sun_floppies, "35hd", sun3x_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", sun_floppies, "35hd", sun3x_state::floppy_formats)
// the timekeeper has no interrupt output, so 3/80 includes a dedicated timer circuit
- TIMER(config, "timer").configure_periodic(FUNC(sun3x_state::sun380_timer), attotime::from_hz(100));
-
- screen_device &bwtwo(SCREEN(config, "bwtwo", SCREEN_TYPE_RASTER));
- bwtwo.set_screen_update(FUNC(sun3x_state::bw2_update));
- bwtwo.set_size(1152,900);
- bwtwo.set_visarea(0, 1152-1, 0, 900-1);
- bwtwo.set_refresh_hz(72);
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer", sun3x_state, sun380_timer, attotime::from_hz(100))
+
+ MCFG_SCREEN_ADD("bwtwo", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(sun3x_state, bw2_update)
+ MCFG_SCREEN_SIZE(1152,900)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1152-1, 0, 900-1)
+ MCFG_SCREEN_REFRESH_RATE(72)
+MACHINE_CONFIG_END
void sun3x_state::sun3_460(machine_config &config)
{
diff --git a/src/mame/drivers/sun4.cpp b/src/mame/drivers/sun4.cpp
index 50d7016544c..bcea4fdf672 100644
--- a/src/mame/drivers/sun4.cpp
+++ b/src/mame/drivers/sun4.cpp
@@ -956,7 +956,7 @@ READ32_MEMBER( sun4_state::sun4_insn_data_r )
switch (entry.type)
{
case 0: // type 0 space
- return m_type0space->read32(tmp, mem_mask);
+ return m_type0space->read32(space, tmp, mem_mask);
case 1: // type 1 space
// magic EPROM bypass
@@ -965,7 +965,7 @@ READ32_MEMBER( sun4_state::sun4_insn_data_r )
return m_rom_ptr[offset & 0x1ffff];
}
//printf("Read type 1 @ VA %08x, phys %08x\n", offset<<2, tmp<<2);
- return m_type1space->read32(tmp, mem_mask);
+ return m_type1space->read32(space, tmp, mem_mask);
default:
//logerror("sun4: access to unhandled memory type\n");
@@ -1019,12 +1019,12 @@ WRITE32_MEMBER( sun4_state::sun4_insn_data_w )
switch (entry.type)
{
case 0: // type 0
- m_type0space->write32(tmp, data, mem_mask);
+ m_type0space->write32(space, tmp, data, mem_mask);
return;
case 1: // type 1
//printf("write device space @ %x\n", tmp<<1);
- m_type1space->write32(tmp, data, mem_mask);
+ m_type1space->write32(space, tmp, data, mem_mask);
return;
default:
@@ -1356,20 +1356,20 @@ READ8_MEMBER( sun4_state::fdc_r )
switch(offset)
{
case 0: // Main Status (R, 82072)
- return m_fdc->msr_r();
+ return m_fdc->msr_r(space, 0, 0xff);
case 1: // FIFO Data Port (R, 82072)
case 5: // FIFO Data Port (R, 82077)
- return m_fdc->fifo_r();
+ return m_fdc->fifo_r(space, 0, 0xff);
case 2: // Digital Output Register (R, 82077)
- return m_fdc->dor_r();
+ return m_fdc->dor_r(space, 0, 0xff);
case 4: // Main Status Register (R, 82077)
- return m_fdc->msr_r();
+ return m_fdc->msr_r(space, 0, 0xff);
case 7:// Digital Input Register (R, 82077)
- return m_fdc->dir_r();
+ return m_fdc->dir_r(space, 0, 0xff);
default:
break;
@@ -1384,16 +1384,16 @@ WRITE8_MEMBER( sun4_state::fdc_w )
{
case 0: // Data Rate Select Register (W, 82072)
case 4: // Data Rate Select Register (W, 82077)
- m_fdc->dsr_w(data);
+ m_fdc->dsr_w(space, 0, data, 0xff);
break;
case 1: // FIFO Data Port (W, 82072)
case 5: // FIFO Data Port (W, 82077)
- m_fdc->fifo_w(data);
+ m_fdc->fifo_w(space, 0, data, 0xff);
break;
case 7: // Configuration Control REgister (W, 82077)
- m_fdc->ccr_w(data);
+ m_fdc->ccr_w(space, 0, data, 0xff);
break;
default:
@@ -1839,15 +1839,14 @@ static void sun_scsi_devices(device_slot_interface &device)
void sun4_state::ncr53c90a(device_t *device)
{
- ncr53c90a_device &adapter = downcast<ncr53c90a_device &>(*device);
-
- adapter.set_clock(10000000);
- adapter.irq_handler_cb().set(*this, FUNC(sun4_state::scsi_irq));
- adapter.drq_handler_cb().set(*this, FUNC(sun4_state::scsi_drq));
+ devcb_base *devcb;
+ (void)devcb;
+ MCFG_DEVICE_CLOCK(10000000)
+ MCFG_NCR5390_IRQ_HANDLER(WRITELINE(*this, sun4_state, scsi_irq))
+ MCFG_NCR5390_DRQ_HANDLER(WRITELINE(*this, sun4_state, scsi_drq))
}
-void sun4_state::sun4(machine_config &config)
-{
+MACHINE_CONFIG_START(sun4_state::sun4)
/* basic machine hardware */
MB86901(config, m_maincpu, 16'670'000);
m_maincpu->add_asi_desc([](sparc_disassembler *dasm) { dasm->add_asi_desc(sun4_asi_desc); });
@@ -1921,19 +1920,19 @@ void sun4_state::sun4(machine_config &config)
rs232b.dcd_handler().set(m_scc2, FUNC(z80scc_device::dcdb_w));
rs232b.cts_handler().set(m_scc2, FUNC(z80scc_device::ctsb_w));
- NSCSI_BUS(config, "scsibus");
- NSCSI_CONNECTOR(config, "scsibus:0", sun_scsi_devices, "harddisk");
- NSCSI_CONNECTOR(config, "scsibus:1", sun_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:2", sun_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:3", sun_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:4", sun_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:5", sun_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:6", sun_scsi_devices, "cdrom");
- NSCSI_CONNECTOR(config, "scsibus:7", sun_scsi_devices, "ncr53c90a", true).set_option_machine_config("ncr53c90a", [this] (device_t *device) { ncr53c90a(device); });
-}
-
-void sun4_state::sun4c(machine_config &config)
-{
+ MCFG_NSCSI_BUS_ADD("scsibus")
+ MCFG_NSCSI_ADD("scsibus:0", sun_scsi_devices, "harddisk", false)
+ MCFG_NSCSI_ADD("scsibus:1", sun_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:2", sun_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:3", sun_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:4", sun_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:5", sun_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:6", sun_scsi_devices, "cdrom", false)
+ MCFG_NSCSI_ADD("scsibus:7", sun_scsi_devices, "ncr53c90a", true)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("ncr53c90a", [this] (device_t *device) { ncr53c90a(device); })
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(sun4_state::sun4c)
/* basic machine hardware */
MB86901(config, m_maincpu, 20'000'000);
m_maincpu->add_asi_desc([](sparc_disassembler *dasm) { dasm->add_asi_desc(sun4c_asi_desc); });
@@ -2005,22 +2004,23 @@ void sun4_state::sun4c(machine_config &config)
rs232b.dcd_handler().set(m_scc2, FUNC(z80scc_device::dcdb_w));
rs232b.cts_handler().set(m_scc2, FUNC(z80scc_device::ctsb_w));
- NSCSI_BUS(config, "scsibus");
- NSCSI_CONNECTOR(config, "scsibus:0", sun_scsi_devices, "harddisk");
- NSCSI_CONNECTOR(config, "scsibus:1", sun_scsi_devices, "cdrom");
- NSCSI_CONNECTOR(config, "scsibus:2", sun_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:3", sun_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:4", sun_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:5", sun_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:6", sun_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:7", sun_scsi_devices, "ncr53c90a", true).set_option_machine_config("ncr53c90a", [this] (device_t *device) { ncr53c90a(device); });
+ MCFG_NSCSI_BUS_ADD("scsibus")
+ MCFG_NSCSI_ADD("scsibus:0", sun_scsi_devices, "harddisk", false)
+ MCFG_NSCSI_ADD("scsibus:1", sun_scsi_devices, "cdrom", false)
+ MCFG_NSCSI_ADD("scsibus:2", sun_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:3", sun_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:4", sun_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:5", sun_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:6", sun_scsi_devices, nullptr, false)
+ MCFG_NSCSI_ADD("scsibus:7", sun_scsi_devices, "ncr53c90a", true)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("ncr53c90a", [this] (device_t *device) { ncr53c90a(device); })
// SBus
SBUS(config, m_sbus, 20'000'000, "maincpu", "type1");
SBUS_SLOT(config, m_sbus_slot[0], 20'000'000, m_sbus, sbus_cards, nullptr);
SBUS_SLOT(config, m_sbus_slot[1], 20'000'000, m_sbus, sbus_cards, nullptr);
SBUS_SLOT(config, m_sbus_slot[2], 20'000'000, m_sbus, sbus_cards, nullptr);
-}
+MACHINE_CONFIG_END
void sun4_state::sun4_20(machine_config &config)
{
diff --git a/src/mame/drivers/suna16.cpp b/src/mame/drivers/suna16.cpp
index 6449ad12a1e..a8416f5dbf6 100644
--- a/src/mame/drivers/suna16.cpp
+++ b/src/mame/drivers/suna16.cpp
@@ -867,6 +867,7 @@ void suna16_state::bssoccer(machine_config &config)
DAC_4BIT_R2R(config, "ldac2", 0).add_route(ALL_OUTPUTS, "lspeaker", 0.2); // unknown DAC
DAC_4BIT_R2R(config, "rdac2", 0).add_route(ALL_OUTPUTS, "rspeaker", 0.2); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT);
@@ -929,6 +930,7 @@ void suna16_state::uballoon(machine_config &config)
DAC_4BIT_R2R(config, "ldac", 0).add_route(ALL_OUTPUTS, "lspeaker", 0.25); // unknown DAC
DAC_4BIT_R2R(config, "rdac", 0).add_route(ALL_OUTPUTS, "rspeaker", 0.25); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT);
@@ -987,6 +989,7 @@ void suna16_state::sunaq(machine_config &config)
DAC_4BIT_R2R(config, "ldac", 0).add_route(ALL_OUTPUTS, "lspeaker", 0.25); // unknown DAC
DAC_4BIT_R2R(config, "rdac", 0).add_route(ALL_OUTPUTS, "rspeaker", 0.25); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT);
@@ -1057,6 +1060,7 @@ void suna16_state::bestbest(machine_config &config)
DAC_4BIT_R2R(config, "ldac2", 0).add_route(ALL_OUTPUTS, "lspeaker", 0.2); // unknown DAC
DAC_4BIT_R2R(config, "rdac2", 0).add_route(ALL_OUTPUTS, "rspeaker", 0.2); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT);
diff --git a/src/mame/drivers/suna8.cpp b/src/mame/drivers/suna8.cpp
index b71d7ccef27..cf0abc02232 100644
--- a/src/mame/drivers/suna8.cpp
+++ b/src/mame/drivers/suna8.cpp
@@ -2045,6 +2045,7 @@ void suna8_state::brickzn11(machine_config &config)
DAC_4BIT_R2R(config, "ldac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.17); // unknown DAC
DAC_4BIT_R2R(config, "rdac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.17); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT);
diff --git a/src/mame/drivers/supbtime.cpp b/src/mame/drivers/supbtime.cpp
index 11639322f48..4e63f2bf75b 100644
--- a/src/mame/drivers/supbtime.cpp
+++ b/src/mame/drivers/supbtime.cpp
@@ -337,23 +337,22 @@ GFXDECODE_END
// MACHINE DEFINITIONS
//**************************************************************************
-void supbtime_state::supbtime(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(28'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &supbtime_state::supbtime_map);
+MACHINE_CONFIG_START(supbtime_state::supbtime)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(28'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(supbtime_map)
H6280(config, m_audiocpu, XTAL(32'220'000) / 8);
m_audiocpu->set_addrmap(AS_PROGRAM, &supbtime_state::sound_map);
m_audiocpu->add_route(ALL_OUTPUTS, "mono", 0); // internal sound unused
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248);
- screen.screen_vblank().set(FUNC(supbtime_state::vblank_w));
- screen.set_screen_update(FUNC(supbtime_state::screen_update_supbtime));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, supbtime_state, vblank_w))
+ MCFG_SCREEN_UPDATE_DRIVER(supbtime_state, screen_update_supbtime)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, "gfxdecode", "palette", gfx_supbtime);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_supbtime)
PALETTE(config, "palette").set_format(palette_device::xBGR_444, 1024);
DECO16IC(config, m_deco_tilegen, 0);
@@ -384,24 +383,27 @@ void supbtime_state::supbtime(machine_config &config)
ymsnd.add_route(0, "mono", 0.45);
ymsnd.add_route(1, "mono", 0.45);
- OKIM6295(config, "oki", XTAL(21'477'272) / 20, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.50); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(21'477'272) / 20, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
-void supbtime_state::chinatwn(machine_config &config)
-{
+MACHINE_CONFIG_START(supbtime_state::chinatwn)
supbtime(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &supbtime_state::chinatwn_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(chinatwn_map)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(supbtime_state::screen_update_chinatwn));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(supbtime_state, screen_update_chinatwn)
+MACHINE_CONFIG_END
-void supbtime_state::tumblep(machine_config &config)
-{
+MACHINE_CONFIG_START(supbtime_state::tumblep)
supbtime(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &supbtime_state::tumblep_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tumblep_map)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(supbtime_state::screen_update_tumblep));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(supbtime_state, screen_update_tumblep)
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/mame/drivers/supdrapo.cpp b/src/mame/drivers/supdrapo.cpp
index 0b6f81f5bb7..26335c0787b 100644
--- a/src/mame/drivers/supdrapo.cpp
+++ b/src/mame/drivers/supdrapo.cpp
@@ -451,24 +451,24 @@ WRITE8_MEMBER(supdrapo_state::ay8910_outputb_w)
Machine Driver
**********************************************************************/
-void supdrapo_state::supdrapo(machine_config &config)
-{
- Z80(config, m_maincpu, CPU_CLOCK); /* guess */
- m_maincpu->set_addrmap(AS_PROGRAM, &supdrapo_state::sdpoker_mem);
- m_maincpu->set_vblank_int("screen", FUNC(supdrapo_state::irq0_line_hold));
+MACHINE_CONFIG_START(supdrapo_state::supdrapo)
+
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK) /* guess */
+ MCFG_DEVICE_PROGRAM_MAP(sdpoker_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", supdrapo_state, irq0_line_hold)
WATCHDOG_TIMER(config, m_watchdog);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(supdrapo_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(supdrapo_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_supdrapo);
PALETTE(config, m_palette, FUNC(supdrapo_state::supdrapo_palette), 0x100);
@@ -479,7 +479,7 @@ void supdrapo_state::supdrapo(machine_config &config)
aysnd.port_a_write_callback().set(FUNC(supdrapo_state::ay8910_outputa_w));
aysnd.port_b_write_callback().set(FUNC(supdrapo_state::ay8910_outputb_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/*********************************************************************
diff --git a/src/mame/drivers/supduck.cpp b/src/mame/drivers/supduck.cpp
index 5a18c908aa1..c34cb79c02d 100644
--- a/src/mame/drivers/supduck.cpp
+++ b/src/mame/drivers/supduck.cpp
@@ -443,29 +443,30 @@ void supduck_state::machine_reset()
MACHINE_CONFIG_START(supduck_state::supduck)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(8'000'000)); /* Verified on PCB */
- m_maincpu->set_addrmap(AS_PROGRAM, &supduck_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(supduck_state::irq2_line_hold)); // 2 & 4?
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(8'000'000)) /* Verified on PCB */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", supduck_state, irq2_line_hold) // 2 & 4?
- Z80(config, m_audiocpu, XTAL(8'000'000)/4); /* 2MHz - verified on PCB */
- m_audiocpu->set_addrmap(AS_PROGRAM, &supduck_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(8'000'000)/4) /* 2MHz - verified on PCB */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_screen_update(FUNC(supduck_state::screen_update));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_palette(m_palette);
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_UPDATE_DRIVER(supduck_state, screen_update)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising))
- BUFFERED_SPRITERAM16(config, m_spriteram);
+ MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM16)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_supduck);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_supduck)
- TIGEROAD_SPRITE(config, m_spritegen, 0);
+ MCFG_DEVICE_ADD("spritegen", TIGEROAD_SPRITE, 0)
MCFG_PALETTE_ADD("palette", 0x800/2)
MCFG_PALETTE_FORMAT(xRGBRRRRGGGGBBBB_bit4)
@@ -475,12 +476,14 @@ MACHINE_CONFIG_START(supduck_state::supduck)
GENERIC_LATCH_8(config, m_soundlatch);
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(8'000'000)/8, okim6295_device::PIN7_HIGH)); // 1MHz - Verified on PCB, pin 7 not verified
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
- oki.set_addrmap(0, &supduck_state::oki_map);
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(8'000'000)/8, okim6295_device::PIN7_HIGH) // 1MHz - Verified on PCB, pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+
MACHINE_CONFIG_END
+
/***************************************************************************
Game driver(s)
diff --git a/src/mame/drivers/super6.cpp b/src/mame/drivers/super6.cpp
index 3226df0480d..5f57e9a2b9a 100644
--- a/src/mame/drivers/super6.cpp
+++ b/src/mame/drivers/super6.cpp
@@ -440,7 +440,7 @@ void super6_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( super6 )
+// MACHINE_CONFIG( super6 )
//-------------------------------------------------
void super6_state::super6(machine_config &config)
diff --git a/src/mame/drivers/super80.cpp b/src/mame/drivers/super80.cpp
index 1baebade4f0..cc1d59c7fa9 100644
--- a/src/mame/drivers/super80.cpp
+++ b/src/mame/drivers/super80.cpp
@@ -751,8 +751,8 @@ void super80_state::super80(machine_config &config)
INPUT_BUFFER(config, "cent_status_in", 0);
/* quickload */
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(super80_state, super80), this), "bin", attotime::from_seconds(3));
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(super80_state, super80), this), "bin", 3);
/* cassette */
CASSETTE(config, m_cassette);
@@ -845,8 +845,8 @@ void super80_state::super80v(machine_config &config)
INPUT_BUFFER(config, "cent_status_in", 0);
/* quickload */
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(super80_state, super80), this), "bin", attotime::from_seconds(3));
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(super80_state, super80), this), "bin", 3);
/* cassette */
CASSETTE(config, m_cassette);
diff --git a/src/mame/drivers/superchs.cpp b/src/mame/drivers/superchs.cpp
index fd9604c16bf..932d8b66fb8 100644
--- a/src/mame/drivers/superchs.cpp
+++ b/src/mame/drivers/superchs.cpp
@@ -223,18 +223,18 @@ GFXDECODE_END
MACHINE DRIVERS
***********************************************************/
-void superchs_state::superchs(machine_config &config)
-{
+MACHINE_CONFIG_START(superchs_state::superchs)
+
/* basic machine hardware */
- M68EC020(config, m_maincpu, XTAL(40'000'000)/2); /* 20MHz - verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &superchs_state::superchs_map);
- m_maincpu->set_vblank_int("screen", FUNC(superchs_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68EC020, XTAL(40'000'000)/2) /* 20MHz - verified */
+ MCFG_DEVICE_PROGRAM_MAP(superchs_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", superchs_state, irq2_line_hold)
- M68000(config, m_subcpu, XTAL(32'000'000)/2); /* 16MHz - verified */
- m_subcpu->set_addrmap(AS_PROGRAM, &superchs_state::superchs_cpub_map);
- m_subcpu->set_vblank_int("screen", FUNC(superchs_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("sub", M68000, XTAL(32'000'000)/2) /* 16MHz - verified */
+ MCFG_DEVICE_PROGRAM_MAP(superchs_cpub_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", superchs_state, irq4_line_hold)
- config.m_minimum_quantum = attotime::from_hz(480); /* Need to interleave CPU 1 & 3 */
+ MCFG_QUANTUM_TIME(attotime::from_hz(480)) /* Need to interleave CPU 1 & 3 */
EEPROM_93C46_16BIT(config, "eeprom");
@@ -255,13 +255,13 @@ void superchs_state::superchs(machine_config &config)
// there are 'vibration' control bits somewhere!
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0, 40*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(superchs_state::screen_update_superchs));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(superchs_state, screen_update_superchs)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_superchs);
PALETTE(config, m_palette).set_format(palette_device::xRGB_888, 8192);
@@ -275,15 +275,15 @@ void superchs_state::superchs(machine_config &config)
/* sound hardware */
TAITO_EN(config, "taito_en", 0);
-}
+MACHINE_CONFIG_END
-void superchs_state::chase3(machine_config &config)
-{
+MACHINE_CONFIG_START(superchs_state::chase3)
superchs(config);
- m_subcpu->set_addrmap(AS_PROGRAM, &superchs_state::chase3_cpub_map);
- m_subcpu->set_vblank_int("screen", FUNC(superchs_state::irq4_line_hold));
-}
+ MCFG_DEVICE_MODIFY("sub")
+ MCFG_DEVICE_PROGRAM_MAP(chase3_cpub_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", superchs_state, irq4_line_hold)
+MACHINE_CONFIG_END
/***************************************************************************/
diff --git a/src/mame/drivers/supercrd.cpp b/src/mame/drivers/supercrd.cpp
index c108b6033fe..ff3e1dd79d2 100644
--- a/src/mame/drivers/supercrd.cpp
+++ b/src/mame/drivers/supercrd.cpp
@@ -230,18 +230,18 @@ void supercrd_state::supercrd_palette(palette_device &palette) const
bit0 = BIT(color_prom[i], 0);
bit1 = BIT(color_prom[i], 1);
bit2 = BIT(color_prom[i], 2);
- int const r = combine_weights(weights_r, bit0, bit1, bit2);
+ int const r = combine_3_weights(weights_r, bit0, bit1, bit2);
// blue component */
bit0 = BIT(color_prom[i], 3);
bit1 = BIT(color_prom[i], 4);
bit2 = BIT(color_prom[i], 5);
- int const b = combine_weights(weights_b, bit0, bit1, bit2);
+ int const b = combine_3_weights(weights_b, bit0, bit1, bit2);
// green component */
bit0 = BIT(color_prom[i], 6);
bit1 = BIT(color_prom[i], 7);
- int const g = combine_weights(weights_g, bit0, bit1);
+ int const g = combine_2_weights(weights_g, bit0, bit1);
palette.set_pen_color(i, rgb_t(r, g, b));
}
@@ -422,26 +422,25 @@ GFXDECODE_END
* Machine Drivers *
**************************/
-void supercrd_state::supercrd(machine_config &config)
-{
+MACHINE_CONFIG_START(supercrd_state::supercrd)
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/8); /* 2MHz, guess */
- m_maincpu->set_addrmap(AS_PROGRAM, &supercrd_state::supercrd_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/8) /* 2MHz, guess */
+ MCFG_DEVICE_PROGRAM_MAP(supercrd_map)
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-// I8255(config, "ppi8255_0", 0);
-// I8255(config, "ppi8255_1", 0);
+// MCFG_DEVICE_ADD("ppi8255_0", I8255, 0)
+// MCFG_DEVICE_ADD("ppi8255_1", I8255, 0)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size((124+1)*4, (30+1)*8); /* Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1) */
- screen.set_visarea(0*4, 96*4-1, 0*8, 29*8-1); /* Taken from MC6845 init, registers 01 & 06 */
- screen.set_screen_update(FUNC(supercrd_state::screen_update_supercrd));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE((124+1)*4, (30+1)*8) /* Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1) */
+ MCFG_SCREEN_VISIBLE_AREA(0*4, 96*4-1, 0*8, 29*8-1) /* Taken from MC6845 init, registers 01 & 06 */
+ MCFG_SCREEN_UPDATE_DRIVER(supercrd_state, screen_update_supercrd)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_supercrd);
PALETTE(config, "palette", FUNC(supercrd_state::supercrd_palette), 0x200);
@@ -454,8 +453,8 @@ void supercrd_state::supercrd(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
-// .add_route(ALL_OUTPUTS, "mono", 0.75);
-}
+// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/superdq.cpp b/src/mame/drivers/superdq.cpp
index fe721023bde..46fa1572638 100644
--- a/src/mame/drivers/superdq.cpp
+++ b/src/mame/drivers/superdq.cpp
@@ -123,18 +123,18 @@ void superdq_state::superdq_palette(palette_device &palette) const
bit0 = BIT(color_prom[i], 7);
bit1 = BIT(color_prom[i], 6);
bit2 = BIT(color_prom[i], 5);
- int const r = combine_weights(rweights, bit2, bit1, bit0);
+ int const r = combine_3_weights(rweights, bit2, bit1, bit0);
// green component
bit0 = BIT(color_prom[i], 4);
bit1 = BIT(color_prom[i], 3);
bit2 = BIT(color_prom[i], 2);
- int const g = combine_weights(gweights, bit2, bit1, bit0);
+ int const g = combine_3_weights(gweights, bit2, bit1, bit0);
// blue component
bit0 = BIT(color_prom[i], 1);
bit1 = BIT(color_prom[i], 0);
- int const b = combine_weights(bweights, bit1, bit0);
+ int const b = combine_2_weights(bweights, bit1, bit0);
palette.set_pen_color(i, rgb_t(r, g, b));
}
@@ -228,7 +228,7 @@ void superdq_state::superdq_io(address_map &map)
map(0x01, 0x01).portr("IN1");
map(0x02, 0x02).portr("DSW1");
map(0x03, 0x03).portr("DSW2");
- map(0x04, 0x04).r(FUNC(superdq_state::superdq_ld_r)).w("snsnd", FUNC(sn76496_device::write));
+ map(0x04, 0x04).r(FUNC(superdq_state::superdq_ld_r)).w("snsnd", FUNC(sn76496_device::command_w));
map(0x08, 0x08).w(FUNC(superdq_state::superdq_io_w));
map(0x0c, 0x0d).noprw(); /* HD46505S */
}
@@ -339,17 +339,15 @@ void superdq_state::machine_start()
MACHINE_CONFIG_START(superdq_state::superdq)
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/8);
- m_maincpu->set_addrmap(AS_PROGRAM, &superdq_state::superdq_map);
- m_maincpu->set_addrmap(AS_IO, &superdq_state::superdq_io);
- m_maincpu->set_vblank_int("screen", FUNC(superdq_state::superdq_vblank));
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/8)
+ MCFG_DEVICE_PROGRAM_MAP(superdq_map)
+ MCFG_DEVICE_IO_MAP(superdq_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", superdq_state, superdq_vblank)
- PIONEER_LDV1000(config, m_laserdisc, 0);
- m_laserdisc->set_overlay(256, 256, FUNC(superdq_state::screen_update_superdq));
- m_laserdisc->set_overlay_palette(m_palette);
- m_laserdisc->add_route(0, "lspeaker", 1.0);
- m_laserdisc->add_route(1, "rspeaker", 1.0);
+ MCFG_LASERDISC_LDV1000_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, superdq_state, screen_update_superdq)
+ MCFG_LASERDISC_OVERLAY_PALETTE(m_palette);
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
@@ -362,6 +360,10 @@ MACHINE_CONFIG_START(superdq_state::superdq)
SPEAKER(config, "rspeaker").front_right();
SN76496(config, "snsnd", MASTER_CLOCK/8).add_route(ALL_OUTPUTS, "lspeaker", 0.8);
+
+ MCFG_DEVICE_MODIFY("laserdisc")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/superqix.cpp b/src/mame/drivers/superqix.cpp
index e94562ea990..91b648c49be 100644
--- a/src/mame/drivers/superqix.cpp
+++ b/src/mame/drivers/superqix.cpp
@@ -289,7 +289,7 @@ TIMER_CALLBACK_MEMBER(superqix_state::mcu_port3_w_cb)
TIMER_CALLBACK_MEMBER(superqix_state::z80_ay1_sync_address_w_cb)
{
- m_ay1->address_w(param);
+ m_ay1->address_w(m_maincpu->space(AS_PROGRAM), 0, param, 0xff);
}
diff --git a/src/mame/drivers/superslave.cpp b/src/mame/drivers/superslave.cpp
index fb714ae8785..57ea3da5a8d 100644
--- a/src/mame/drivers/superslave.cpp
+++ b/src/mame/drivers/superslave.cpp
@@ -358,7 +358,7 @@ void superslave_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( superslave )
+// MACHINE_CONFIG( superslave )
//-------------------------------------------------
void superslave_state::superslave(machine_config &config)
diff --git a/src/mame/drivers/supertnk.cpp b/src/mame/drivers/supertnk.cpp
index 92c009d8b86..451c9d57b58 100644
--- a/src/mame/drivers/supertnk.cpp
+++ b/src/mame/drivers/supertnk.cpp
@@ -346,8 +346,8 @@ void supertnk_state::supertnk_map(address_map &map)
void supertnk_state::supertnk_io_map(address_map &map)
{
- map(0x0000, 0x0001).nopw();
- map(0x0800, 0x080f).w("outlatch", FUNC(ls259_device::write_d0));
+ map(0x0000, 0x0000).nopw();
+ map(0x0400, 0x0407).w("outlatch", FUNC(ls259_device::write_d0));
}
diff --git a/src/mame/drivers/superwng.cpp b/src/mame/drivers/superwng.cpp
index b32a9b82861..b5e4d5f66e2 100644
--- a/src/mame/drivers/superwng.cpp
+++ b/src/mame/drivers/superwng.cpp
@@ -477,25 +477,26 @@ void superwng_state::machine_reset()
m_nmi_enable = 0;
}
-void superwng_state::superwng(machine_config &config)
-{
+MACHINE_CONFIG_START(superwng_state::superwng)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &superwng_state::superwng_map);
- m_maincpu->set_vblank_int("screen", FUNC(superwng_state::superwng_nmi_interrupt));
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(superwng_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", superwng_state, superwng_nmi_interrupt)
+
+ MCFG_DEVICE_ADD("audiocpu", Z80, MASTER_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(superwng_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(superwng_state, superwng_sound_nmi_assert, 4*60)
- Z80(config, m_audiocpu, MASTER_CLOCK/4);
- m_audiocpu->set_addrmap(AS_PROGRAM, &superwng_state::superwng_sound_map);
- m_audiocpu->set_periodic_int(FUNC(superwng_state::superwng_sound_nmi_assert), attotime::from_hz(4*60));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(superwng_state::screen_update_superwng));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(superwng_state, screen_update_superwng)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_superwng);
@@ -508,7 +509,7 @@ void superwng_state::superwng(machine_config &config)
ay1.add_route(ALL_OUTPUTS, "mono", 0.50);
AY8910(config, "ay2", MASTER_CLOCK/12).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
ROM_START( superwng )
ROM_REGION( 0x20000, "maincpu", 0 )
diff --git a/src/mame/drivers/supracan.cpp b/src/mame/drivers/supracan.cpp
index 30dcba191a4..df00616a2ce 100644
--- a/src/mame/drivers/supracan.cpp
+++ b/src/mame/drivers/supracan.cpp
@@ -1762,7 +1762,7 @@ void supracan_state::machine_start()
m_line_off_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(supracan_state::supracan_line_off_callback),this));
if (m_cart->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x000000, 0x3fffff, read16s_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x000000, 0x3fffff, read16_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart));
}
@@ -1883,34 +1883,34 @@ INTERRUPT_GEN_MEMBER(supracan_state::supracan_sound_irq)
MACHINE_CONFIG_START(supracan_state::supracan)
- M68000(config, m_maincpu, XTAL(10'738'635)); /* Correct frequency unknown */
- m_maincpu->set_addrmap(AS_PROGRAM, &supracan_state::supracan_mem);
- m_maincpu->set_vblank_int("screen", FUNC(supracan_state::supracan_irq));
+ MCFG_DEVICE_ADD( "maincpu", M68000, XTAL(10'738'635) ) /* Correct frequency unknown */
+ MCFG_DEVICE_PROGRAM_MAP( supracan_mem )
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", supracan_state, supracan_irq)
- M6502(config, m_soundcpu, XTAL(3'579'545)); /* TODO: Verify actual clock */
- m_soundcpu->set_addrmap(AS_PROGRAM, &supracan_state::supracan_sound_mem);
- m_soundcpu->set_vblank_int("screen", FUNC(supracan_state::supracan_sound_irq));
+ MCFG_DEVICE_ADD( "soundcpu", M6502, XTAL(3'579'545) ) /* TODO: Verify actual clock */
+ MCFG_DEVICE_PROGRAM_MAP( supracan_sound_mem )
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", supracan_state, supracan_sound_irq)
#if !(SOUNDCPU_BOOT_HACK)
- config.m_perfect_cpu_quantum = subtag("maincpu");
- config.m_perfect_cpu_quantum = subtag("soundcpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
+ MCFG_QUANTUM_PERFECT_CPU("soundcpu")
#endif
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(10'738'635)/2, 348, 0, 256, 256, 0, 240 ); /* No idea if this is correct */
- m_screen->set_screen_update(FUNC(supracan_state::screen_update_supracan));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD( "screen", RASTER )
+ MCFG_SCREEN_RAW_PARAMS(XTAL(10'738'635)/2, 348, 0, 256, 256, 0, 240 ) /* No idea if this is correct */
+ MCFG_SCREEN_UPDATE_DRIVER(supracan_state, screen_update_supracan)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(supracan_state::supracan_palette)).set_format(palette_device::xBGR_555, 32768);
- GFXDECODE(config, m_gfxdecode, "palette", gfx_supracan);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_supracan)
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "supracan_cart")
MCFG_GENERIC_WIDTH(GENERIC_ROM16_WIDTH)
MCFG_GENERIC_ENDIAN(ENDIANNESS_BIG)
MCFG_GENERIC_LOAD(supracan_state, supracan_cart)
- SOFTWARE_LIST(config, "cart_list").set_original("supracan");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","supracan")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/suprgolf.cpp b/src/mame/drivers/suprgolf.cpp
index b17af194452..8c179c2d359 100644
--- a/src/mame/drivers/suprgolf.cpp
+++ b/src/mame/drivers/suprgolf.cpp
@@ -496,13 +496,13 @@ void suprgolf_state::machine_reset()
#define MASTER_CLOCK XTAL(12'000'000)
-void suprgolf_state::suprgolf(machine_config &config)
-{
+MACHINE_CONFIG_START(suprgolf_state::suprgolf)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/2); /* guess */
- m_maincpu->set_addrmap(AS_PROGRAM, &suprgolf_state::suprgolf_map);
- m_maincpu->set_addrmap(AS_IO, &suprgolf_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(suprgolf_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,MASTER_CLOCK/2) /* guess */
+ MCFG_DEVICE_PROGRAM_MAP(suprgolf_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", suprgolf_state, irq0_line_hold)
i8255_device &ppi0(I8255A(config, "ppi8255_0"));
ppi0.in_pa_callback().set(FUNC(suprgolf_state::p1_r));
@@ -517,16 +517,16 @@ void suprgolf_state::suprgolf(machine_config &config)
ppi1.out_pc_callback().set(FUNC(suprgolf_state::vregs_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(256, 256);
- screen.set_visarea(0, 255, 0, 191);
- screen.set_screen_update(FUNC(suprgolf_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 191)
+ MCFG_SCREEN_UPDATE_DRIVER(suprgolf_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_suprgolf);
- PALETTE(config, m_palette).set_entries(0x800);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_suprgolf)
+ MCFG_PALETTE_ADD("palette", 0x800)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -539,11 +539,11 @@ void suprgolf_state::suprgolf(machine_config &config)
ymsnd.port_b_write_callback().set(FUNC(suprgolf_state::writeB));
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.5);
- MSM5205(config, m_msm, XTAL(384'000)); /* guess */
- m_msm->vck_legacy_callback().set(FUNC(suprgolf_state::adpcm_int)); /* interrupt function */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 4KHz 4-bit */
- m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000)) /* guess */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, suprgolf_state, adpcm_int)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 4KHz 4-bit */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( suprgolf )
ROM_REGION( 0x10000, "maincpu", 0 ) // on the YUVO-702A main board
diff --git a/src/mame/drivers/suprloco.cpp b/src/mame/drivers/suprloco.cpp
index 0125c1bab1b..9d0428c4996 100644
--- a/src/mame/drivers/suprloco.cpp
+++ b/src/mame/drivers/suprloco.cpp
@@ -58,8 +58,8 @@ void suprloco_state::sound_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
map(0x8000, 0x87ff).ram();
- map(0xa000, 0xa003).w("sn1", FUNC(sn76496_device::write));
- map(0xc000, 0xc003).w("sn2", FUNC(sn76496_device::write));
+ map(0xa000, 0xa003).w("sn1", FUNC(sn76496_device::command_w));
+ map(0xc000, 0xc003).w("sn2", FUNC(sn76496_device::command_w));
map(0xe000, 0xe000).r("ppi", FUNC(i8255_device::acka_r));
}
@@ -163,8 +163,8 @@ static GFXDECODE_START( gfx_suprloco )
GFXDECODE_END
-void suprloco_state::suprloco(machine_config &config)
-{
+MACHINE_CONFIG_START(suprloco_state::suprloco)
+
/* basic machine hardware */
sega_315_5015_device &maincpu(SEGA_315_5015(config, m_maincpu, 4000000)); /* 4 MHz (?) */
maincpu.set_addrmap(AS_PROGRAM, &suprloco_state::main_map);
@@ -172,9 +172,9 @@ void suprloco_state::suprloco(machine_config &config)
maincpu.set_vblank_int("screen", FUNC(suprloco_state::irq0_line_hold));
maincpu.set_decrypted_tag(":decrypted_opcodes");
- Z80(config, m_audiocpu, 4000000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &suprloco_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(suprloco_state::irq0_line_hold), attotime::from_hz(4*60)); /* NMIs are caused by the main CPU */
+ MCFG_DEVICE_ADD("audiocpu", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(suprloco_state, irq0_line_hold, 4*60) /* NMIs are caused by the main CPU */
i8255_device &ppi(I8255A(config, "ppi"));
ppi.out_pb_callback().set(FUNC(suprloco_state::control_w));
@@ -183,13 +183,13 @@ void suprloco_state::suprloco(machine_config &config)
ppi.out_pc_callback().append_inputline(m_audiocpu, INPUT_LINE_NMI).bit(7).invert();
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(5000));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(1*8, 31*8-1, 0*8, 28*8-1);
- screen.set_screen_update(FUNC(suprloco_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(5000))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(suprloco_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_suprloco);
PALETTE(config, "palette", FUNC(suprloco_state::suprloco_palette), 512+256);
@@ -197,10 +197,12 @@ void suprloco_state::suprloco(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76496(config, "sn1", 4000000).add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("sn1", SN76496, 4000000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- SN76496(config, "sn2", 2000000).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("sn2", SN76496, 2000000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/suprnova.cpp b/src/mame/drivers/suprnova.cpp
index fae1e70d3e6..7278a77fefb 100644
--- a/src/mame/drivers/suprnova.cpp
+++ b/src/mame/drivers/suprnova.cpp
@@ -787,49 +787,44 @@ GFXDECODE_END
/***** MACHINE DRIVER *****/
-void skns_state::skns(machine_config &config)
-{
- SH2(config, m_maincpu, 28638000);
- m_maincpu->set_addrmap(AS_PROGRAM, &skns_state::skns_map);
-
- TIMER(config, "scantimer").configure_scanline(FUNC(skns_state::irq), "screen", 0, 1);
+MACHINE_CONFIG_START(skns_state::skns)
+ MCFG_DEVICE_ADD("maincpu", SH2,28638000)
+ MCFG_DEVICE_PROGRAM_MAP(skns_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", skns_state, irq, "screen", 0, 1)
- MSM6242(config, "rtc", XTAL(32'768));
+ MCFG_DEVICE_ADD("rtc", MSM6242, XTAL(32'768))
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- timer_device &int15_timer(TIMER(config, "int15_timer"));
- int15_timer.configure_periodic(FUNC(skns_state::interrupt_callback), attotime::from_msec(2));
- int15_timer.config_param(15);
- timer_device &int11_timer(TIMER(config, "int11_timer"));
- int11_timer.configure_periodic(FUNC(skns_state::interrupt_callback), attotime::from_msec(8));
- int11_timer.config_param(11);
- timer_device &int9_timer(TIMER(config, "int9_timer"));
- int9_timer.configure_periodic(FUNC(skns_state::interrupt_callback), attotime::from_hz(28638000/1824));
- int9_timer.config_param(9);
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("int15_timer", skns_state, interrupt_callback, attotime::from_msec(2))
+ MCFG_TIMER_PARAM(15)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("int11_timer", skns_state, interrupt_callback, attotime::from_msec(8))
+ MCFG_TIMER_PARAM(11)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("int9_timer", skns_state, interrupt_callback, attotime::from_hz(28638000/1824))
+ MCFG_TIMER_PARAM(9)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_video_attributes(VIDEO_ALWAYS_UPDATE);
- screen.set_refresh_hz(59.5971); // measured by Guru
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(340,262);
- screen.set_visarea(0,319,0,239);
- screen.set_screen_update(FUNC(skns_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_REFRESH_RATE(59.5971) // measured by Guru
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(340,262)
+ MCFG_SCREEN_VISIBLE_AREA(0,319,0,239)
+ MCFG_SCREEN_UPDATE_DRIVER(skns_state, screen_update)
- PALETTE(config, m_palette).set_entries(32768);
- GFXDECODE(config, m_gfxdecode, m_palette, skns_bg);
+ MCFG_PALETTE_ADD("palette", 32768)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", skns_bg)
- SKNS_SPRITE(config, m_spritegen, 0);
+ MCFG_DEVICE_ADD("spritegen", SKNS_SPRITE, 0)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ymz280b_device &ymz(YMZ280B(config, "ymz", 33333333 / 2));
- ymz.add_route(0, "lspeaker", 1.0);
- ymz.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, 33333333 / 2)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
MACHINE_RESET_MEMBER(skns_state,sknsa)
{
@@ -862,35 +857,30 @@ MACHINE_RESET_MEMBER(skns_state,sknsk)
}
-void skns_state::sknsa(machine_config &config)
-{
+MACHINE_CONFIG_START(skns_state::sknsa)
skns(config);
MCFG_MACHINE_RESET_OVERRIDE(skns_state,sknsa)
-}
+MACHINE_CONFIG_END
-void skns_state::sknsj(machine_config &config)
-{
+MACHINE_CONFIG_START(skns_state::sknsj)
skns(config);
MCFG_MACHINE_RESET_OVERRIDE(skns_state,sknsj)
-}
+MACHINE_CONFIG_END
-void skns_state::sknsu(machine_config &config)
-{
+MACHINE_CONFIG_START(skns_state::sknsu)
skns(config);
MCFG_MACHINE_RESET_OVERRIDE(skns_state,sknsu)
-}
+MACHINE_CONFIG_END
-void skns_state::sknse(machine_config &config)
-{
+MACHINE_CONFIG_START(skns_state::sknse)
skns(config);
MCFG_MACHINE_RESET_OVERRIDE(skns_state,sknse)
-}
+MACHINE_CONFIG_END
-void skns_state::sknsk(machine_config &config)
-{
+MACHINE_CONFIG_START(skns_state::sknsk)
skns(config);
MCFG_MACHINE_RESET_OVERRIDE(skns_state,sknsk)
-}
+MACHINE_CONFIG_END
/***** IDLE SKIPPING *****/
@@ -1257,20 +1247,20 @@ ROM_START( galpanis )
ROM_LOAD16_BYTE( "gps-001-e1.u8", 0x000001, 0x100000, CRC(ded57bd0) SHA1(4c0122f0521829d4d83b6b1c403f7e6470f14951) )
ROM_REGION( 0x1000000, "spritegen", 0 )
- ROM_LOAD( "gps-100-00.u24", 0x000000, 0x400000, CRC(a1a7acf2) SHA1(52c86ae907f0c0236808c19f652955b09e90ec5a) )
- ROM_LOAD( "gps-101-00.u20", 0x400000, 0x400000, CRC(49f764b6) SHA1(9f4289858c3dac625ef623cc381a47b45aa5d8e2) )
- ROM_LOAD( "gps-102-00.u17", 0x800000, 0x400000, CRC(51980272) SHA1(6c0706d913b33995579aaf0688c4bf26d6d35a78) )
+ ROM_LOAD( "gps10000.u24", 0x000000, 0x400000, CRC(a1a7acf2) SHA1(52c86ae907f0c0236808c19f652955b09e90ec5a) )
+ ROM_LOAD( "gps10100.u20", 0x400000, 0x400000, CRC(49f764b6) SHA1(9f4289858c3dac625ef623cc381a47b45aa5d8e2) )
+ ROM_LOAD( "gps10200.u17", 0x800000, 0x400000, CRC(51980272) SHA1(6c0706d913b33995579aaf0688c4bf26d6d35a78) )
ROM_REGION( 0x800000, "gfx2", 0 )
- ROM_LOAD( "gps-200-00.u16", 0x000000, 0x400000, CRC(c146a09e) SHA1(5af5a7b9d9a55ec7aba3fd85a3a0211b92b1b84f) )
- ROM_LOAD( "gps-201-00.u13", 0x400000, 0x400000, CRC(9dfa2dc6) SHA1(a058c42fd76c23c0e5c8c11f5617fd29e056be7d) )
+ ROM_LOAD( "gps20000.u16", 0x000000, 0x400000, CRC(c146a09e) SHA1(5af5a7b9d9a55ec7aba3fd85a3a0211b92b1b84f) )
+ ROM_LOAD( "gps20100.u13", 0x400000, 0x400000, CRC(9dfa2dc6) SHA1(a058c42fd76c23c0e5c8c11f5617fd29e056be7d) )
ROM_REGION( 0x800000, "gfx3", ROMREGION_ERASE00 ) /* Tiles Plane B */
/* First 0x040000 bytes (0x03ff Tiles) are RAM Based Tiles */
/* 0x040000 - 0x3fffff empty? */
ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */
- ROM_LOAD( "gps-300-00.u4", 0x000000, 0x400000, CRC(9e4da8e3) SHA1(6506d9300a442883357003a05fd2c78d364c35bb) )
+ ROM_LOAD( "gps30000.u4", 0x000000, 0x400000, CRC(9e4da8e3) SHA1(6506d9300a442883357003a05fd2c78d364c35bb) )
ROM_END
ROM_START( galpanise )
@@ -1281,20 +1271,20 @@ ROM_START( galpanise )
ROM_LOAD16_BYTE( "u8", 0x000001, 0x100000, CRC(098eff7c) SHA1(3cac22cbb11905a46afaa62c0470624b3b554fc0) ) /* mask ROM with no labels */
ROM_REGION( 0x1000000, "spritegen", 0 )
- ROM_LOAD( "gps-100-00.u24", 0x000000, 0x400000, CRC(a1a7acf2) SHA1(52c86ae907f0c0236808c19f652955b09e90ec5a) )
- ROM_LOAD( "gps-101-00.u20", 0x400000, 0x400000, CRC(49f764b6) SHA1(9f4289858c3dac625ef623cc381a47b45aa5d8e2) )
- ROM_LOAD( "gps-102-00.u17", 0x800000, 0x400000, CRC(51980272) SHA1(6c0706d913b33995579aaf0688c4bf26d6d35a78) )
+ ROM_LOAD( "gps10000.u24", 0x000000, 0x400000, CRC(a1a7acf2) SHA1(52c86ae907f0c0236808c19f652955b09e90ec5a) )
+ ROM_LOAD( "gps10100.u20", 0x400000, 0x400000, CRC(49f764b6) SHA1(9f4289858c3dac625ef623cc381a47b45aa5d8e2) )
+ ROM_LOAD( "gps10200.u17", 0x800000, 0x400000, CRC(51980272) SHA1(6c0706d913b33995579aaf0688c4bf26d6d35a78) )
ROM_REGION( 0x800000, "gfx2", 0 )
- ROM_LOAD( "gps-200-00.u16", 0x000000, 0x400000, CRC(c146a09e) SHA1(5af5a7b9d9a55ec7aba3fd85a3a0211b92b1b84f) )
- ROM_LOAD( "gps-201-00.u13", 0x400000, 0x400000, CRC(9dfa2dc6) SHA1(a058c42fd76c23c0e5c8c11f5617fd29e056be7d) )
+ ROM_LOAD( "gps20000.u16", 0x000000, 0x400000, CRC(c146a09e) SHA1(5af5a7b9d9a55ec7aba3fd85a3a0211b92b1b84f) )
+ ROM_LOAD( "gps20100.u13", 0x400000, 0x400000, CRC(9dfa2dc6) SHA1(a058c42fd76c23c0e5c8c11f5617fd29e056be7d) )
ROM_REGION( 0x800000, "gfx3", ROMREGION_ERASE00 ) /* Tiles Plane B */
/* First 0x040000 bytes (0x03ff Tiles) are RAM Based Tiles */
/* 0x040000 - 0x3fffff empty? */
ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */
- ROM_LOAD( "gps-300-00.u4", 0x000000, 0x400000, CRC(9e4da8e3) SHA1(6506d9300a442883357003a05fd2c78d364c35bb) )
+ ROM_LOAD( "gps30000.u4", 0x000000, 0x400000, CRC(9e4da8e3) SHA1(6506d9300a442883357003a05fd2c78d364c35bb) )
ROM_END
ROM_START( galpanisj )
@@ -1305,44 +1295,20 @@ ROM_START( galpanisj )
ROM_LOAD16_BYTE( "gps-001-j1.u8", 0x000001, 0x100000, CRC(e764177a) SHA1(3a1333eb1022ed1a275b9c3d44b5f4ab81618fb6) )
ROM_REGION( 0x1000000, "spritegen", 0 )
- ROM_LOAD( "gps-100-00.u24", 0x000000, 0x400000, CRC(a1a7acf2) SHA1(52c86ae907f0c0236808c19f652955b09e90ec5a) )
- ROM_LOAD( "gps-101-00.u20", 0x400000, 0x400000, CRC(49f764b6) SHA1(9f4289858c3dac625ef623cc381a47b45aa5d8e2) )
- ROM_LOAD( "gps-102-00.u17", 0x800000, 0x400000, CRC(51980272) SHA1(6c0706d913b33995579aaf0688c4bf26d6d35a78) )
-
- ROM_REGION( 0x800000, "gfx2", 0 )
- ROM_LOAD( "gps-200-00.u16", 0x000000, 0x400000, CRC(c146a09e) SHA1(5af5a7b9d9a55ec7aba3fd85a3a0211b92b1b84f) )
- ROM_LOAD( "gps-201-00.u13", 0x400000, 0x400000, CRC(9dfa2dc6) SHA1(a058c42fd76c23c0e5c8c11f5617fd29e056be7d) )
-
- ROM_REGION( 0x800000, "gfx3", ROMREGION_ERASE00 ) /* Tiles Plane B */
- /* First 0x040000 bytes (0x03ff Tiles) are RAM Based Tiles */
- /* 0x040000 - 0x3fffff empty? */
-
- ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */
- ROM_LOAD( "gps-300-00.u4", 0x000000, 0x400000, CRC(9e4da8e3) SHA1(6506d9300a442883357003a05fd2c78d364c35bb) )
-ROM_END
-
-ROM_START( galpanisa )
- SKNS_ASIA
-
- ROM_REGION32_BE( 0x200000, "user1", 0 ) /* SH-2 Code mapped at 0x04000000 */
- ROM_LOAD16_BYTE( "gps-000-a0_9abc.u10", 0x000000, 0x100000, CRC(4e24b799) SHA1(614f4eb6a7b0ab03ea6ada28a670ed0759b3f4f9) ) /* hand written labels with checksum */
- ROM_LOAD16_BYTE( "gps-001-a0_bd64.u8", 0x000001, 0x100000, CRC(aa4db8af) SHA1(10cc15fa065b6a2dcaf8c7d701c5ae7c18e4e863) ) /* hand written labels with checksum */
-
- ROM_REGION( 0x1000000, "spritegen", 0 )
- ROM_LOAD( "gps-100-00.u24", 0x000000, 0x400000, CRC(a1a7acf2) SHA1(52c86ae907f0c0236808c19f652955b09e90ec5a) )
- ROM_LOAD( "gps-101-00.u20", 0x400000, 0x400000, CRC(49f764b6) SHA1(9f4289858c3dac625ef623cc381a47b45aa5d8e2) )
- ROM_LOAD( "gps-102-00.u17", 0x800000, 0x400000, CRC(51980272) SHA1(6c0706d913b33995579aaf0688c4bf26d6d35a78) )
+ ROM_LOAD( "gps10000.u24", 0x000000, 0x400000, CRC(a1a7acf2) SHA1(52c86ae907f0c0236808c19f652955b09e90ec5a) )
+ ROM_LOAD( "gps10100.u20", 0x400000, 0x400000, CRC(49f764b6) SHA1(9f4289858c3dac625ef623cc381a47b45aa5d8e2) )
+ ROM_LOAD( "gps10200.u17", 0x800000, 0x400000, CRC(51980272) SHA1(6c0706d913b33995579aaf0688c4bf26d6d35a78) )
ROM_REGION( 0x800000, "gfx2", 0 )
- ROM_LOAD( "gps-200-00.u16", 0x000000, 0x400000, CRC(c146a09e) SHA1(5af5a7b9d9a55ec7aba3fd85a3a0211b92b1b84f) )
- ROM_LOAD( "gps-201-00.u13", 0x400000, 0x400000, CRC(9dfa2dc6) SHA1(a058c42fd76c23c0e5c8c11f5617fd29e056be7d) )
+ ROM_LOAD( "gps20000.u16", 0x000000, 0x400000, CRC(c146a09e) SHA1(5af5a7b9d9a55ec7aba3fd85a3a0211b92b1b84f) )
+ ROM_LOAD( "gps20100.u13", 0x400000, 0x400000, CRC(9dfa2dc6) SHA1(a058c42fd76c23c0e5c8c11f5617fd29e056be7d) )
ROM_REGION( 0x800000, "gfx3", ROMREGION_ERASE00 ) /* Tiles Plane B */
/* First 0x040000 bytes (0x03ff Tiles) are RAM Based Tiles */
/* 0x040000 - 0x3fffff empty? */
ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */
- ROM_LOAD( "gps-300-00.u4", 0x000000, 0x400000, CRC(9e4da8e3) SHA1(6506d9300a442883357003a05fd2c78d364c35bb) )
+ ROM_LOAD( "gps30000.u4", 0x000000, 0x400000, CRC(9e4da8e3) SHA1(6506d9300a442883357003a05fd2c78d364c35bb) )
ROM_END
ROM_START( galpanisk )
@@ -1353,20 +1319,20 @@ ROM_START( galpanisk )
ROM_LOAD16_BYTE( "gps-001-k1.u8", 0x000001, 0x100000, CRC(354e601d) SHA1(4d176f2337a3b0b63548b2e542f9fa87d0a1ef7b) )
ROM_REGION( 0x1000000, "spritegen", 0 )
- ROM_LOAD( "gps-100-00.u24", 0x000000, 0x400000, CRC(a1a7acf2) SHA1(52c86ae907f0c0236808c19f652955b09e90ec5a) )
- ROM_LOAD( "gps-101-00.u20", 0x400000, 0x400000, CRC(49f764b6) SHA1(9f4289858c3dac625ef623cc381a47b45aa5d8e2) )
- ROM_LOAD( "gps-102-00.u17", 0x800000, 0x400000, CRC(51980272) SHA1(6c0706d913b33995579aaf0688c4bf26d6d35a78) )
+ ROM_LOAD( "gps10000.u24", 0x000000, 0x400000, CRC(a1a7acf2) SHA1(52c86ae907f0c0236808c19f652955b09e90ec5a) )
+ ROM_LOAD( "gps10100.u20", 0x400000, 0x400000, CRC(49f764b6) SHA1(9f4289858c3dac625ef623cc381a47b45aa5d8e2) )
+ ROM_LOAD( "gps10200.u17", 0x800000, 0x400000, CRC(51980272) SHA1(6c0706d913b33995579aaf0688c4bf26d6d35a78) )
ROM_REGION( 0x800000, "gfx2", 0 )
- ROM_LOAD( "gps-200-00.u16", 0x000000, 0x400000, CRC(c146a09e) SHA1(5af5a7b9d9a55ec7aba3fd85a3a0211b92b1b84f) )
- ROM_LOAD( "gps-201-00.u13", 0x400000, 0x400000, CRC(9dfa2dc6) SHA1(a058c42fd76c23c0e5c8c11f5617fd29e056be7d) )
+ ROM_LOAD( "gps20000.u16", 0x000000, 0x400000, CRC(c146a09e) SHA1(5af5a7b9d9a55ec7aba3fd85a3a0211b92b1b84f) )
+ ROM_LOAD( "gps20100.u13", 0x400000, 0x400000, CRC(9dfa2dc6) SHA1(a058c42fd76c23c0e5c8c11f5617fd29e056be7d) )
ROM_REGION( 0x800000, "gfx3", ROMREGION_ERASE00 ) /* Tiles Plane B */
/* First 0x040000 bytes (0x03ff Tiles) are RAM Based Tiles */
/* 0x040000 - 0x3fffff empty? */
ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */
- ROM_LOAD( "gps-300-00.u4", 0x000000, 0x400000, CRC(9e4da8e3) SHA1(6506d9300a442883357003a05fd2c78d364c35bb) )
+ ROM_LOAD( "gps30000.u4", 0x000000, 0x400000, CRC(9e4da8e3) SHA1(6506d9300a442883357003a05fd2c78d364c35bb) )
ROM_END
ROM_START( galpans2 ) //only the 2 program ROMs were dumped, but mask ROMs are supposed to match.
@@ -1965,7 +1931,6 @@ GAME( 1996, jjparads, skns, sknsj, skns_1p, skns_state, init_jjparads, RO
GAME( 1997, galpanis, skns, sknse, galpanis, skns_state, init_galpanis, ROT0, "Kaneko", "Gals Panic S - Extra Edition (Europe, set 1)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, galpanise, galpanis, sknse, galpanis, skns_state, init_galpanis, ROT0, "Kaneko", "Gals Panic S - Extra Edition (Europe, set 2)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, galpanisj, galpanis, sknsj, galpanis, skns_state, init_galpanis, ROT0, "Kaneko", "Gals Panic S - Extra Edition (Japan)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, galpanisa, galpanis, sknsa, galpanis, skns_state, init_galpanis, ROT0, "Kaneko", "Gals Panic S - Extra Edition (Asia)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, galpanisk, galpanis, sknsk, galpanis, skns_state, init_galpanis, ROT0, "Kaneko", "Gals Panic S - Extra Edition (Korea)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, jjparad2, skns, sknsj, skns_1p, skns_state, init_jjparad2, ROT0, "Electro Design", "Jan Jan Paradise 2", MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/suprridr.cpp b/src/mame/drivers/suprridr.cpp
index de1c458ea2d..c04ea685c0b 100644
--- a/src/mame/drivers/suprridr.cpp
+++ b/src/mame/drivers/suprridr.cpp
@@ -321,28 +321,28 @@ GFXDECODE_END
*
*************************************/
-void suprridr_state::suprridr(machine_config &config)
-{
+MACHINE_CONFIG_START(suprridr_state::suprridr)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(49'152'000)/16); /* 3 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &suprridr_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &suprridr_state::main_portmap);
- m_maincpu->set_vblank_int("screen", FUNC(suprridr_state::main_nmi_gen));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(49'152'000)/16) /* 3 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", suprridr_state, main_nmi_gen)
- Z80(config, m_audiocpu, 10000000/4); /* 2.5 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &suprridr_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &suprridr_state::sound_portmap);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 10000000/4) /* 2.5 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_portmap)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(suprridr_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(suprridr_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_suprridr);
PALETTE(config, m_palette, FUNC(suprridr_state::suprridr_palette), 96);
@@ -359,7 +359,7 @@ void suprridr_state::suprridr(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
m_soundlatch->set_separate_acknowledge(true);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/supstarf.cpp b/src/mame/drivers/supstarf.cpp
index 2cf19fe2b3a..e9debe5ab14 100644
--- a/src/mame/drivers/supstarf.cpp
+++ b/src/mame/drivers/supstarf.cpp
@@ -89,8 +89,8 @@ READ8_MEMBER(supstarf_state::psg_latch_r)
{
if (m_pcs[d])
{
- m_psg[d]->address_w(offset);
- result &= m_psg[d]->data_r();
+ m_psg[d]->address_w(space, 0, offset);
+ result &= m_psg[d]->data_r(space, 0);
}
}
@@ -106,8 +106,8 @@ WRITE8_MEMBER(supstarf_state::psg_latch_w)
{
if (m_pcs[d])
{
- m_psg[d]->address_w(offset);
- m_psg[d]->data_w(data);
+ m_psg[d]->address_w(space, 0, offset);
+ m_psg[d]->data_w(space, 0, data);
}
}
diff --git a/src/mame/drivers/sv8000.cpp b/src/mame/drivers/sv8000.cpp
index 8c61b9643aa..5937dac7408 100644
--- a/src/mame/drivers/sv8000.cpp
+++ b/src/mame/drivers/sv8000.cpp
@@ -182,7 +182,7 @@ void sv8000_state::machine_start()
m_inv = 0;
if (m_cart->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
save_item(NAME(m_column));
save_item(NAME(m_ag));
@@ -376,10 +376,10 @@ READ8_MEMBER( sv8000_state::mc6847_videoram_r )
MACHINE_CONFIG_START(sv8000_state::sv8000)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(10'738'635)/3); /* Not verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &sv8000_state::sv8000_mem);
- m_maincpu->set_addrmap(AS_IO, &sv8000_state::sv8000_io);
- m_maincpu->set_vblank_int("screen", FUNC(sv8000_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(10'738'635)/3) /* Not verified */
+ MCFG_DEVICE_PROGRAM_MAP(sv8000_mem)
+ MCFG_DEVICE_IO_MAP(sv8000_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sv8000_state, irq0_line_hold)
i8255_device &ppi(I8255(config, "i8255"));
ppi.in_pa_callback().set(FUNC(sv8000_state::i8255_porta_r));
@@ -391,11 +391,10 @@ MACHINE_CONFIG_START(sv8000_state::sv8000)
/* video hardware */
// S68047P - Unknown whether the internal or an external character rom is used
- S68047(config, m_s68047p, XTAL(10'738'635)/3); // Clock not verified
- m_s68047p->input_callback().set(FUNC(sv8000_state::mc6847_videoram_r));
- m_s68047p->set_screen("screen");
+ MCFG_DEVICE_ADD("s68047p", S68047, XTAL(10'738'635)/3 ) // Clock not verified
+ MCFG_MC6847_INPUT_CALLBACK(READ8(*this, sv8000_state, mc6847_videoram_r))
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
+ MCFG_SCREEN_MC6847_NTSC_ADD("screen", "s68047p")
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -412,7 +411,7 @@ MACHINE_CONFIG_START(sv8000_state::sv8000)
MCFG_GENERIC_LOAD(sv8000_state, cart)
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("sv8000");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","sv8000")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/svi318.cpp b/src/mame/drivers/svi318.cpp
index 3a7d60fb647..bcca2074c81 100644
--- a/src/mame/drivers/svi318.cpp
+++ b/src/mame/drivers/svi318.cpp
@@ -63,7 +63,6 @@ public:
m_expander(*this, "exp"),
m_keyboard(*this, "KEY.%u", 0),
m_buttons(*this, "BUTTONS"),
- m_led_caps_lock(*this, "led_caps_lock"),
m_intvdp(0), m_intexp(0),
m_romdis(1), m_ramdis(1),
m_cart(1), m_bk21(1),
@@ -79,14 +78,14 @@ public:
void svi328p(machine_config &config);
private:
- uint8_t ppi_port_a_r();
- uint8_t ppi_port_b_r();
- void ppi_port_c_w(uint8_t data);
- void bank_w(uint8_t data);
+ DECLARE_READ8_MEMBER( ppi_port_a_r );
+ DECLARE_READ8_MEMBER( ppi_port_b_r );
+ DECLARE_WRITE8_MEMBER( ppi_port_c_w );
+ DECLARE_WRITE8_MEMBER( bank_w );
DECLARE_WRITE_LINE_MEMBER( intvdp_w );
- uint8_t mreq_r(offs_t offset);
- void mreq_w(offs_t offset, uint8_t data);
+ READ8_MEMBER( mreq_r );
+ WRITE8_MEMBER( mreq_w );
// from expander bus
DECLARE_WRITE_LINE_MEMBER( intexp_w );
@@ -94,6 +93,9 @@ private:
DECLARE_WRITE_LINE_MEMBER( ramdis_w );
DECLARE_WRITE_LINE_MEMBER( ctrl1_w );
+ DECLARE_READ8_MEMBER( excs_r );
+ DECLARE_WRITE8_MEMBER( excs_w );
+
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cartridge);
void svi3x8_io(address_map &map);
@@ -114,7 +116,6 @@ private:
required_device<svi_expander_device> m_expander;
required_ioport_array<16> m_keyboard;
required_ioport m_buttons;
- output_finder<> m_led_caps_lock;
int m_intvdp;
int m_intexp;
@@ -150,8 +151,10 @@ void svi3x8_state::svi3x8_io_bank(address_map &map)
{
map(0x000, 0x0ff).rw(m_expander, FUNC(svi_expander_device::iorq_r), FUNC(svi_expander_device::iorq_w));
map(0x100, 0x17f).rw(m_expander, FUNC(svi_expander_device::iorq_r), FUNC(svi_expander_device::iorq_w));
- map(0x180, 0x181).mirror(0x22).w(m_vdp, FUNC(tms9928a_device::write));
- map(0x184, 0x185).mirror(0x22).r(m_vdp, FUNC(tms9928a_device::read));
+ map(0x180, 0x180).mirror(0x22).w(m_vdp, FUNC(tms9928a_device::vram_w));
+ map(0x181, 0x181).mirror(0x22).w(m_vdp, FUNC(tms9928a_device::register_w));
+ map(0x184, 0x184).mirror(0x22).r(m_vdp, FUNC(tms9928a_device::vram_r));
+ map(0x185, 0x185).mirror(0x22).r(m_vdp, FUNC(tms9928a_device::register_r));
map(0x188, 0x188).mirror(0x23).w("psg", FUNC(ay8910_device::address_w));
map(0x18c, 0x18c).mirror(0x23).w("psg", FUNC(ay8910_device::data_w));
map(0x190, 0x190).mirror(0x23).r("psg", FUNC(ay8910_device::data_r));
@@ -339,8 +342,6 @@ WRITE_LINE_MEMBER( svi3x8_state::intvdp_w )
void svi3x8_state::machine_start()
{
- m_led_caps_lock.resolve();
-
// register for save states
save_item(NAME(m_intvdp));
save_item(NAME(m_intexp));
@@ -370,16 +371,16 @@ void svi3x8_state::machine_reset()
ctrl1_w(1);
}
-uint8_t svi3x8_state::mreq_r(offs_t offset)
+READ8_MEMBER( svi3x8_state::mreq_r )
{
// ctrl1 inverts a15
if (m_ctrl1 == 0)
offset ^= 0x8000;
if (CCS1 || CCS2 || CCS3 || CCS4)
- return m_cart_rom->read_rom(offset);
+ return m_cart_rom->read_rom(space, offset);
- uint8_t data = m_expander->mreq_r(offset);
+ uint8_t data = m_expander->mreq_r(space, offset);
if (ROMCS)
data = m_basic->as_u8(offset);
@@ -393,7 +394,7 @@ uint8_t svi3x8_state::mreq_r(offs_t offset)
return data;
}
-void svi3x8_state::mreq_w(offs_t offset, uint8_t data)
+WRITE8_MEMBER( svi3x8_state::mreq_w )
{
// ctrl1 inverts a15
if (m_ctrl1 == 0)
@@ -402,7 +403,7 @@ void svi3x8_state::mreq_w(offs_t offset, uint8_t data)
if (CCS1 || CCS2 || CCS3 || CCS4)
return;
- m_expander->mreq_w(offset, data);
+ m_expander->mreq_w(space, offset, data);
if (m_bk21 == 0 && IS_SVI328 && offset < 0x8000)
m_ram->write(offset, data);
@@ -411,7 +412,7 @@ void svi3x8_state::mreq_w(offs_t offset, uint8_t data)
m_ram->write(IS_SVI328 ? offset : offset - 0xc000, data);
}
-void svi3x8_state::bank_w(uint8_t data)
+WRITE8_MEMBER( svi3x8_state::bank_w )
{
logerror("bank_w: %02x\n", data);
@@ -426,10 +427,10 @@ void svi3x8_state::bank_w(uint8_t data)
m_rom2 = BIT(data, 6);
m_rom3 = BIT(data, 7);
- m_led_caps_lock = BIT(data, 5);
+ output().set_value("led_caps_lock", BIT(data, 5));
}
-uint8_t svi3x8_state::ppi_port_a_r()
+READ8_MEMBER( svi3x8_state::ppi_port_a_r )
{
uint8_t data = 0x3f;
@@ -445,13 +446,13 @@ uint8_t svi3x8_state::ppi_port_a_r()
return data;
}
-uint8_t svi3x8_state::ppi_port_b_r()
+READ8_MEMBER( svi3x8_state::ppi_port_b_r )
{
// bit 0-7, keyboard data
return m_keyboard[m_keyboard_row]->read();
}
-void svi3x8_state::ppi_port_c_w(uint8_t data)
+WRITE8_MEMBER( svi3x8_state::ppi_port_c_w )
{
// bit 0-3, keyboard row
m_keyboard_row = data & 0x0f;
@@ -493,6 +494,22 @@ WRITE_LINE_MEMBER( svi3x8_state::ctrl1_w )
m_io->set_bank(m_ctrl1);
}
+READ8_MEMBER( svi3x8_state::excs_r )
+{
+ if (offset & 1)
+ return m_vdp->register_read();
+ else
+ return m_vdp->vram_read();
+}
+
+WRITE8_MEMBER( svi3x8_state::excs_w )
+{
+ if (offset & 1)
+ m_vdp->register_write(data);
+ else
+ m_vdp->vram_write(data);
+}
+
//**************************************************************************
// CARTRIDGE
@@ -515,9 +532,9 @@ DEVICE_IMAGE_LOAD_MEMBER( svi3x8_state, cartridge )
MACHINE_CONFIG_START(svi3x8_state::svi318)
// basic machine hardware
- Z80(config, m_maincpu, XTAL(10'738'635) / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &svi3x8_state::svi3x8_mem);
- m_maincpu->set_addrmap(AS_IO, &svi3x8_state::svi3x8_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(10'738'635) / 3)
+ MCFG_DEVICE_PROGRAM_MAP(svi3x8_mem)
+ MCFG_DEVICE_IO_MAP(svi3x8_io)
RAM(config, m_ram).set_default_size("16K");
@@ -531,33 +548,33 @@ MACHINE_CONFIG_START(svi3x8_state::svi318)
// sound hardware
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25);
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
ay8910_device &psg(AY8910(config, "psg", XTAL(10'738'635) / 6));
psg.port_a_read_callback().set_ioport("JOY");
psg.port_b_write_callback().set(FUNC(svi3x8_state::bank_w));
psg.add_route(ALL_OUTPUTS, "mono", 0.75);
// cassette
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(svi_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED);
- m_cassette->set_interface("svi318_cass");
- SOFTWARE_LIST(config, "cass_list").set_original("svi318_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(svi_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED)
+ MCFG_CASSETTE_INTERFACE("svi318_cass")
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "svi318_cass")
// cartridge slot
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "svi318_cart")
MCFG_GENERIC_EXTENSIONS("bin,rom")
MCFG_GENERIC_LOAD(svi3x8_state, cartridge)
- SOFTWARE_LIST(config, "cart_list").set_original("svi318_cart");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "svi318_cart")
// expander bus
- SVI_EXPANDER(config, m_expander, svi_expander_modules);
- m_expander->int_handler().set(FUNC(svi3x8_state::intexp_w));
- m_expander->romdis_handler().set(FUNC(svi3x8_state::romdis_w));
- m_expander->ramdis_handler().set(FUNC(svi3x8_state::ramdis_w));
- m_expander->ctrl1_handler().set(FUNC(svi3x8_state::ctrl1_w));
- m_expander->excsr_handler().set(m_vdp, FUNC(tms9928a_device::read));
- m_expander->excsw_handler().set(m_vdp, FUNC(tms9928a_device::write));
+ MCFG_SVI_EXPANDER_BUS_ADD("exp")
+ MCFG_SVI_EXPANDER_INT_HANDLER(WRITELINE(*this, svi3x8_state, intexp_w))
+ MCFG_SVI_EXPANDER_ROMDIS_HANDLER(WRITELINE(*this, svi3x8_state, romdis_w))
+ MCFG_SVI_EXPANDER_RAMDIS_HANDLER(WRITELINE(*this, svi3x8_state, ramdis_w))
+ MCFG_SVI_EXPANDER_CTRL1_HANDLER(WRITELINE(*this, svi3x8_state, ctrl1_w))
+ MCFG_SVI_EXPANDER_EXCSR_HANDLER(READ8(*this, svi3x8_state, excs_r))
+ MCFG_SVI_EXPANDER_EXCSW_HANDLER(WRITE8(*this, svi3x8_state, excs_w))
MACHINE_CONFIG_END
void svi3x8_state::svi318p(machine_config &config)
diff --git a/src/mame/drivers/svision.cpp b/src/mame/drivers/svision.cpp
index b7b1d2db97e..f58246bd9b0 100644
--- a/src/mame/drivers/svision.cpp
+++ b/src/mame/drivers/svision.cpp
@@ -509,52 +509,47 @@ MACHINE_CONFIG_START(svision_state::svision_base)
MCFG_GENERIC_MANDATORY
MCFG_GENERIC_LOAD(svision_state, svision_cart)
- SOFTWARE_LIST(config, "cart_list").set_original("svision");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "svision")
MACHINE_CONFIG_END
-void svision_state::svision(machine_config &config)
-{
+MACHINE_CONFIG_START(svision_state::svision)
svision_base(config);
- M65C02(config, m_maincpu, 4000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &svision_state::svision_mem);
+ MCFG_DEVICE_ADD(m_maincpu, M65C02, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(svision_mem)
- SCREEN(config, m_screen, SCREEN_TYPE_LCD);
- m_screen->set_refresh_hz(61);
- m_screen->set_size(3+160+3, 160);
- m_screen->set_visarea(3+0, 3+160-1, 0, 160-1);
- m_screen->set_screen_update(FUNC(svision_state::screen_update_svision));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(svision_state::frame_int_w));
+ MCFG_SCREEN_ADD(m_screen, LCD)
+ MCFG_SCREEN_REFRESH_RATE(61)
+ MCFG_SCREEN_SIZE(3+160+3, 160)
+ MCFG_SCREEN_VISIBLE_AREA(3+0, 3+160-1, 0, 160-1)
+ MCFG_SCREEN_UPDATE_DRIVER(svision_state, screen_update_svision)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, svision_state, frame_int_w))
PALETTE(config, m_palette, FUNC(svision_state::svision_palette), ARRAY_LENGTH(svision_pens));
-}
+MACHINE_CONFIG_END
-void svision_state::svisions(machine_config &config)
-{
+MACHINE_CONFIG_START(svision_state::svisions)
svision(config);
- TIMER(config, "pet_timer").configure_periodic(FUNC(svision_state::svision_pet_timer_dev), attotime::from_seconds(8));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("pet_timer", svision_state, svision_pet_timer_dev, attotime::from_seconds(8))
+MACHINE_CONFIG_END
-void svision_state::svisionp(machine_config &config)
-{
+MACHINE_CONFIG_START(svision_state::svisionp)
svision(config);
m_maincpu->set_clock(4430000);
m_screen->set_refresh(HZ_TO_ATTOSECONDS(50));
m_palette->set_init(FUNC(svision_state::svisionp_palette));
-}
+MACHINE_CONFIG_END
-void svision_state::svisionn(machine_config &config)
-{
+MACHINE_CONFIG_START(svision_state::svisionn)
svision(config);
m_maincpu->set_clock(3560000/*?*/);
m_screen->set_refresh(HZ_TO_ATTOSECONDS(60));
m_palette->set_init(FUNC(svision_state::svisionn_palette));
-}
+MACHINE_CONFIG_END
-void svision_state::tvlinkp(machine_config &config)
-{
+MACHINE_CONFIG_START(svision_state::tvlinkp)
svisionp(config);
m_maincpu->set_addrmap(AS_PROGRAM, address_map_constructor(&std::remove_pointer_t<decltype(this)>::tvlink_mem, tag(), this));
@@ -562,7 +557,7 @@ void svision_state::tvlinkp(machine_config &config)
m_screen->set_screen_update(FUNC(svision_state::screen_update_tvlink));
MCFG_MACHINE_RESET_OVERRIDE(svision_state, tvlink)
-}
+MACHINE_CONFIG_END
ROM_START(svision)
ROM_REGION(0x80000, "maincpu", ROMREGION_ERASE00)
diff --git a/src/mame/drivers/svmu.cpp b/src/mame/drivers/svmu.cpp
index 468315ccc5d..c1e3b142858 100644
--- a/src/mame/drivers/svmu.cpp
+++ b/src/mame/drivers/svmu.cpp
@@ -75,9 +75,9 @@ WRITE8_MEMBER(svmu_state::page_w)
READ8_MEMBER(svmu_state::prog_r)
{
if (m_page == 1)
- return m_flash->read(offset);
+ return m_flash->read(space, offset);
else if (m_page == 2)
- return m_flash->read(0x10000 + offset);
+ return m_flash->read(space, 0x10000 + offset);
else
return m_bios[offset];
}
@@ -85,9 +85,9 @@ READ8_MEMBER(svmu_state::prog_r)
WRITE8_MEMBER(svmu_state::prog_w)
{
if (m_page == 1)
- m_flash->write(offset, data);
+ m_flash->write(space, offset, data);
else if (m_page == 2)
- m_flash->write(0x10000 + offset, data);
+ m_flash->write(space, 0x10000 + offset, data);
}
/*
@@ -341,8 +341,8 @@ void svmu_state::svmu(machine_config &config)
/* devices */
ATMEL_29C010(config, m_flash);
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(svmu_state, svmu), this), "vms,bin");
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(svmu_state, svmu), this), "vms,bin", 0);
quickload.set_interface("svmu_quik");
/* Software lists */
diff --git a/src/mame/drivers/swtpc.cpp b/src/mame/drivers/swtpc.cpp
index c4250611299..5f2343136f7 100644
--- a/src/mame/drivers/swtpc.cpp
+++ b/src/mame/drivers/swtpc.cpp
@@ -97,11 +97,10 @@ void swtpc_state::machine_start()
m_maincpu->space(AS_PROGRAM).install_ram(0, m_ram->size() - 1, m_ram->pointer());
}
-void swtpc_state::swtpc(machine_config &config)
-{
+MACHINE_CONFIG_START(swtpc_state::swtpc)
/* basic machine hardware */
- M6800(config, m_maincpu, XTAL(1'843'200) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &swtpc_state::mem_map);
+ MCFG_DEVICE_ADD("maincpu", M6800, XTAL(1'843'200) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
MC14411(config, m_brg, XTAL(1'843'200));
m_brg->out_f<7>().set("io0", FUNC(ss50_interface_port_device::f600_1200_w)); // 1200b
@@ -145,46 +144,50 @@ void swtpc_state::swtpc(machine_config &config)
m_brg->out_f<13>().append("io6", FUNC(ss50_interface_port_device::f110_w));
m_brg->out_f<13>().append("io7", FUNC(ss50_interface_port_device::f110_w));
- ss50_interface_port_device &io0(SS50_INTERFACE(config, "io0", ss50_default_2rs_devices, nullptr));
- io0.irq_cb().set("mainirq", FUNC(input_merger_device::in_w<0>));
- io0.firq_cb().set("mainnmi", FUNC(input_merger_device::in_w<0>));
- ss50_interface_port_device &io1(SS50_INTERFACE(config, "io1", ss50_default_2rs_devices, "mps"));
- io1.irq_cb().set("mainirq", FUNC(input_merger_device::in_w<1>));
- io1.firq_cb().set("mainnmi", FUNC(input_merger_device::in_w<1>));
- ss50_interface_port_device &io2(SS50_INTERFACE(config, "io2", ss50_default_2rs_devices, nullptr));
- io2.irq_cb().set("mainirq", FUNC(input_merger_device::in_w<2>));
- io2.firq_cb().set("mainnmi", FUNC(input_merger_device::in_w<2>));
- ss50_interface_port_device &io3(SS50_INTERFACE(config, "io3", ss50_default_2rs_devices, nullptr));
- io3.irq_cb().set("mainirq", FUNC(input_merger_device::in_w<3>));
- io3.firq_cb().set("mainnmi", FUNC(input_merger_device::in_w<3>));
- ss50_interface_port_device &io4(SS50_INTERFACE(config, "io4", ss50_default_2rs_devices, nullptr));
- io4.irq_cb().set("mainirq", FUNC(input_merger_device::in_w<4>));
- io4.firq_cb().set("mainnmi", FUNC(input_merger_device::in_w<4>));
- ss50_interface_port_device &io5(SS50_INTERFACE(config, "io5", ss50_default_2rs_devices, nullptr));
- io5.irq_cb().set("mainirq", FUNC(input_merger_device::in_w<5>));
- io5.firq_cb().set("mainnmi", FUNC(input_merger_device::in_w<5>));
- ss50_interface_port_device &io6(SS50_INTERFACE(config, "io6", ss50_default_2rs_devices, nullptr));
- io6.irq_cb().set("mainirq", FUNC(input_merger_device::in_w<6>));
- io6.firq_cb().set("mainnmi", FUNC(input_merger_device::in_w<6>));
- ss50_interface_port_device &io7(SS50_INTERFACE(config, "io7", ss50_default_2rs_devices, nullptr));
- io7.irq_cb().set("mainirq", FUNC(input_merger_device::in_w<7>));
- io7.firq_cb().set("mainnmi", FUNC(input_merger_device::in_w<7>));
-
- INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
- INPUT_MERGER_ANY_HIGH(config, "mainnmi").output_handler().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SS50_INTERFACE_PORT_ADD("io0", default_2rs_devices, nullptr)
+ MCFG_SS50_INTERFACE_IRQ_CALLBACK(WRITELINE("mainirq", input_merger_device, in_w<0>))
+ MCFG_SS50_INTERFACE_FIRQ_CALLBACK(WRITELINE("mainnmi", input_merger_device, in_w<0>))
+ MCFG_SS50_INTERFACE_PORT_ADD("io1", default_2rs_devices, "mps")
+ MCFG_SS50_INTERFACE_IRQ_CALLBACK(WRITELINE("mainirq", input_merger_device, in_w<1>))
+ MCFG_SS50_INTERFACE_FIRQ_CALLBACK(WRITELINE("mainnmi", input_merger_device, in_w<1>))
+ MCFG_SS50_INTERFACE_PORT_ADD("io2", default_2rs_devices, nullptr)
+ MCFG_SS50_INTERFACE_IRQ_CALLBACK(WRITELINE("mainirq", input_merger_device, in_w<2>))
+ MCFG_SS50_INTERFACE_FIRQ_CALLBACK(WRITELINE("mainnmi", input_merger_device, in_w<2>))
+ MCFG_SS50_INTERFACE_PORT_ADD("io3", default_2rs_devices, nullptr)
+ MCFG_SS50_INTERFACE_IRQ_CALLBACK(WRITELINE("mainirq", input_merger_device, in_w<3>))
+ MCFG_SS50_INTERFACE_FIRQ_CALLBACK(WRITELINE("mainnmi", input_merger_device, in_w<3>))
+ MCFG_SS50_INTERFACE_PORT_ADD("io4", default_2rs_devices, nullptr)
+ MCFG_SS50_INTERFACE_IRQ_CALLBACK(WRITELINE("mainirq", input_merger_device, in_w<4>))
+ MCFG_SS50_INTERFACE_FIRQ_CALLBACK(WRITELINE("mainnmi", input_merger_device, in_w<4>))
+ MCFG_SS50_INTERFACE_PORT_ADD("io5", default_2rs_devices, nullptr)
+ MCFG_SS50_INTERFACE_IRQ_CALLBACK(WRITELINE("mainirq", input_merger_device, in_w<5>))
+ MCFG_SS50_INTERFACE_FIRQ_CALLBACK(WRITELINE("mainnmi", input_merger_device, in_w<5>))
+ MCFG_SS50_INTERFACE_PORT_ADD("io6", default_2rs_devices, nullptr)
+ MCFG_SS50_INTERFACE_IRQ_CALLBACK(WRITELINE("mainirq", input_merger_device, in_w<6>))
+ MCFG_SS50_INTERFACE_FIRQ_CALLBACK(WRITELINE("mainnmi", input_merger_device, in_w<6>))
+ MCFG_SS50_INTERFACE_PORT_ADD("io7", default_2rs_devices, nullptr)
+ MCFG_SS50_INTERFACE_IRQ_CALLBACK(WRITELINE("mainirq", input_merger_device, in_w<7>))
+ MCFG_SS50_INTERFACE_FIRQ_CALLBACK(WRITELINE("mainnmi", input_merger_device, in_w<7>))
+
+ MCFG_INPUT_MERGER_ANY_HIGH("mainirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", M6800_IRQ_LINE))
+ MCFG_INPUT_MERGER_ANY_HIGH("mainnmi")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", INPUT_LINE_NMI))
RAM(config, RAM_TAG).set_default_size("2K").set_extra_options("4K,8K,12K,16K,20K,24K,28K,32K");
-}
+MACHINE_CONFIG_END
-void swtpc_state::swtpcm(machine_config &config)
-{
+MACHINE_CONFIG_START(swtpc_state::swtpcm)
swtpc(config);
- m_maincpu->set_clock(XTAL(1'797'100) / 2);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(XTAL(1'797'100) / 2)
- m_brg->set_clock(XTAL(1'797'100));
+ MCFG_DEVICE_MODIFY("brg")
+ MCFG_DEVICE_CLOCK(XTAL(1'797'100))
- subdevice<ss50_interface_port_device>("io1")->set_default_option("mpc");
-}
+ MCFG_DEVICE_MODIFY("io1")
+ MCFG_SLOT_DEFAULT_OPTION("mpc")
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( swtpc )
diff --git a/src/mame/drivers/symbolics.cpp b/src/mame/drivers/symbolics.cpp
index 88a3fc628b2..3e5966b0902 100644
--- a/src/mame/drivers/symbolics.cpp
+++ b/src/mame/drivers/symbolics.cpp
@@ -318,22 +318,22 @@ void symbolics_state::machine_reset()
*/
}
-void symbolics_state::symbolics(machine_config &config)
-{
+MACHINE_CONFIG_START(symbolics_state::symbolics)
/* basic machine hardware */
// per page 159 of http://bitsavers.trailing-edge.com/pdf/symbolics/3600_series/Lisp_Machine_Hardware_Memos.pdf:
//XTALS: 16MHz @H11 (68k CPU clock)
// 4.9152MHz @J5 (driving the two MPSCs serial clocks)
// 66.67MHz @J10 (main lispcpu/system clock)
- M68000(config, m_maincpu, XTAL(16'000'000)/2); /* MC68000L8 @A27; clock is derived from the 16Mhz xtal @ H11, verified from patent */
- m_maincpu->set_addrmap(AS_PROGRAM, &symbolics_state::m68k_mem);
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)/2) /* MC68000L8 @A27; clock is derived from the 16Mhz xtal @ H11, verified from patent */
+ MCFG_DEVICE_PROGRAM_MAP(m68k_mem)
//ADD ME:
// Framebuffer
// DMA Controller
// I8274 MPSC #1 (synchronous serial for keyboard)
// I8274 MPSC #2 (EIA/debug console?)
-}
+
+MACHINE_CONFIG_END
/******************************************************************************
ROM Definitions
diff --git a/src/mame/drivers/sys2900.cpp b/src/mame/drivers/sys2900.cpp
index b4d27a20a64..3ab265c8496 100644
--- a/src/mame/drivers/sys2900.cpp
+++ b/src/mame/drivers/sys2900.cpp
@@ -141,21 +141,20 @@ uint32_t sys2900_state::screen_update_sys2900(screen_device &screen, bitmap_ind1
return 0;
}
-void sys2900_state::sys2900(machine_config &config)
-{
+MACHINE_CONFIG_START(sys2900_state::sys2900)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(8'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &sys2900_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &sys2900_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(8'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_screen_update(FUNC(sys2900_state::screen_update_sys2900));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sys2900_state, screen_update_sys2900)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -163,7 +162,7 @@ void sys2900_state::sys2900(machine_config &config)
Z80PIO(config, "pio", 0);
Z80SIO(config, "sio1", 0);
Z80SIO(config, "sio2", 0);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( sys2900 )
diff --git a/src/mame/drivers/sys9002.cpp b/src/mame/drivers/sys9002.cpp
index 8015eb12407..7820b4fc476 100644
--- a/src/mame/drivers/sys9002.cpp
+++ b/src/mame/drivers/sys9002.cpp
@@ -121,21 +121,20 @@ static DEVICE_INPUT_DEFAULTS_START( uart2 )
DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 )
DEVICE_INPUT_DEFAULTS_END
-void sys9002_state::sys9002(machine_config &config)
-{
+MACHINE_CONFIG_START(sys9002_state::sys9002)
/* basic machine hardware */
- I8085A(config, m_maincpu, XTAL(2'000'000)); // XTAL not visible on images
- m_maincpu->set_addrmap(AS_PROGRAM, &sys9002_state::sys9002_mem);
- m_maincpu->set_addrmap(AS_IO, &sys9002_state::sys9002_io);
+ MCFG_DEVICE_ADD("maincpu",I8085A, XTAL(2'000'000)) // XTAL not visible on images
+ MCFG_DEVICE_PROGRAM_MAP(sys9002_mem)
+ MCFG_DEVICE_IO_MAP(sys9002_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not correct
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- //GFXDECODE(config, "gfxdecode", m_palette, gfx_mx2178);
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not correct
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ //MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mx2178)
PALETTE(config, m_palette, palette_device::MONOCHROME);
/* Devices */
@@ -173,7 +172,7 @@ void sys9002_state::sys9002(machine_config &config)
rs232b.dsr_handler().set("uart2", FUNC(i8251_device::write_dsr));
rs232b.cts_handler().set("uart2", FUNC(i8251_device::write_cts));
rs232b.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(uart2));
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( sys9002 )
diff --git a/src/mame/drivers/system1.cpp b/src/mame/drivers/system1.cpp
index f5deda2c5f1..c077f2ceea1 100644
--- a/src/mame/drivers/system1.cpp
+++ b/src/mame/drivers/system1.cpp
@@ -835,8 +835,8 @@ void system1_state::sound_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
map(0x8000, 0x87ff).mirror(0x1800).ram();
- map(0xa000, 0xa000).mirror(0x1fff).w("sn1", FUNC(sn76489a_device::write));
- map(0xc000, 0xc000).mirror(0x1fff).w("sn2", FUNC(sn76489a_device::write));
+ map(0xa000, 0xa000).mirror(0x1fff).w("sn1", FUNC(sn76489a_device::command_w));
+ map(0xc000, 0xc000).mirror(0x1fff).w("sn2", FUNC(sn76489a_device::command_w));
map(0xe000, 0xe000).mirror(0x1fff).r(FUNC(system1_state::sound_data_r));
}
@@ -2173,7 +2173,7 @@ void system1_state::sys1ppi(machine_config &config)
TIMER(config, "soundirq", 0).configure_scanline(FUNC(system1_state::soundirq_gen), "screen", 32, 64);
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
I8255A(config, m_ppi8255);
m_ppi8255->out_pa_callback().set(FUNC(system1_state::soundport_w));
diff --git a/src/mame/drivers/system16.cpp b/src/mame/drivers/system16.cpp
index 83b760a1f4a..06609402562 100644
--- a/src/mame/drivers/system16.cpp
+++ b/src/mame/drivers/system16.cpp
@@ -2060,18 +2060,18 @@ GFXDECODE_END
*
*************************************/
-void segas1x_bootleg_state::z80_ym2151(machine_config &config)
-{
- Z80(config, m_soundcpu, 4000000);
- m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::sound_map);
- m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::sound_io_map);
+MACHINE_CONFIG_START(segas1x_bootleg_state::z80_ym2151)
+
+ MCFG_DEVICE_ADD("soundcpu", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_io_map)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
YM2151(config, "ymsnd", 4000000).add_route(0, "lspeaker", 0.32).add_route(1, "rspeaker", 0.32);
-}
+MACHINE_CONFIG_END
WRITE_LINE_MEMBER(segas1x_bootleg_state::sound_cause_nmi)
{
@@ -2098,58 +2098,56 @@ void segas1x_bootleg_state::z80_ym2151_upd7759(machine_config &config)
m_upd7759->add_route(ALL_OUTPUTS, "rspeaker", 0.48);
}
-void segas1x_bootleg_state::datsu_ym2151_msm5205(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::datsu_ym2151_msm5205)
/* TODO:
- other games might use this sound configuration
- speaker is likely to be mono for the bootlegs, not stereo.
- check msm5205 frequency.
*/
- Z80(config, m_soundcpu, 4000000);
- m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::tturfbl_sound_map);
- m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::tturfbl_sound_io_map);
+ MCFG_DEVICE_ADD("soundcpu",Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(tturfbl_sound_map)
+ MCFG_DEVICE_IO_MAP(tturfbl_sound_io_map)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
YM2151(config, "ymsnd", 4000000).add_route(0, "lspeaker", 0.32).add_route(1, "rspeaker", 0.32);
- MSM5205(config, m_msm, 220000);
- m_msm->vck_legacy_callback().set(FUNC(segas1x_bootleg_state::tturfbl_msm5205_callback));
- m_msm->set_prescaler_selector(msm5205_device::S48_4B);
- m_msm->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
- m_msm->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
-}
+ MCFG_DEVICE_ADD("5205", MSM5205, 220000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, segas1x_bootleg_state, tturfbl_msm5205_callback))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::datsu_2x_ym2203_msm5205(machine_config &config)
-{
- Z80(config, m_soundcpu, 4000000);
- m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shinobi_datsu_sound_map);
+MACHINE_CONFIG_START(segas1x_bootleg_state::datsu_2x_ym2203_msm5205)
+ MCFG_DEVICE_ADD("soundcpu", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(shinobi_datsu_sound_map)
/* sound hardware */
SPEAKER(config, "mono").front_center();
// 2x YM2203C, one at U57, one at U56
- ym2203_device &ym1(YM2203(config, "ym1", 4000000));
- ym1.add_route(0, "mono", 0.50);
- ym1.add_route(1, "mono", 0.50);
- ym1.add_route(2, "mono", 0.50);
- ym1.add_route(3, "mono", 0.80);
-
- ym2203_device &ym2(YM2203(config, "ym2", 4000000));
- ym2.add_route(0, "mono", 0.50);
- ym2.add_route(1, "mono", 0.50);
- ym2.add_route(2, "mono", 0.50);
- ym2.add_route(3, "mono", 0.80);
+ MCFG_DEVICE_ADD("ym1", YM2203, 4000000)
+ MCFG_SOUND_ROUTE(0, "mono", 0.50)
+ MCFG_SOUND_ROUTE(1, "mono", 0.50)
+ MCFG_SOUND_ROUTE(2, "mono", 0.50)
+ MCFG_SOUND_ROUTE(3, "mono", 0.80)
+
+ MCFG_DEVICE_ADD("ym2", YM2203, 4000000)
+ MCFG_SOUND_ROUTE(0, "mono", 0.50)
+ MCFG_SOUND_ROUTE(1, "mono", 0.50)
+ MCFG_SOUND_ROUTE(2, "mono", 0.50)
+ MCFG_SOUND_ROUTE(3, "mono", 0.80)
LS157(config, m_adpcm_select, 0);
m_adpcm_select->out_callback().set("5205", FUNC(msm5205_device::data_w));
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(segas1x_bootleg_state::datsu_msm5205_callback));
- m_msm->set_prescaler_selector(msm5205_device::S48_4B);
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+ MCFG_DEVICE_ADD("5205", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, segas1x_bootleg_state, datsu_msm5205_callback))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
/*************************************
@@ -2159,111 +2157,120 @@ void segas1x_bootleg_state::datsu_2x_ym2203_msm5205(machine_config &config)
*************************************/
/* System 16A/B Bootlegs */
-void segas1x_bootleg_state::system16_base(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::system16_base)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 10000000);
- m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(40*8, 36*8);
- m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
- m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system16));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 36*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system16)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16);
- PALETTE(config, m_palette).set_entries(2048*SHADOW_COLORS_MULTIPLIER);
+ GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16);
+ PALETTE(config, "palette").set_entries(2048*SHADOW_COLORS_MULTIPLIER);
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system16)
GENERIC_LATCH_8(config, m_soundlatch);
-}
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::shinobi_datsu(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::shinobi_datsu)
system16_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shinobib_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(shinobib_map)
BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 0, 1, 2, 3, 4, 5, 6, 7);
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_shinobi )
- m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_s16a_bootleg));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg)
datsu_2x_ym2203_msm5205(config);
-}
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::passshtb(machine_config &config)
-{
+
+MACHINE_CONFIG_START(segas1x_bootleg_state::passshtb)
system16_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::passshtb_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(passshtb_map)
BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 1, 0, 3, 2, 5, 4, 7, 6);
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_passsht )
- m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_s16a_bootleg));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg)
z80_ym2151_upd7759(config);
-}
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::passsht4b(machine_config &config)
-{
+
+MACHINE_CONFIG_START(segas1x_bootleg_state::passsht4b)
system16_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::passht4b_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(passht4b_map)
// wrong
BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 1, 0, 3, 2, 5, 4, 7, 6);
- MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_passsht)
- m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_s16a_bootleg_passht4b));
+ MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_passsht )
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg_passht4b)
datsu_2x_ym2203_msm5205(config);
- m_msm->set_prescaler_selector(msm5205_device::S96_4B);
-}
+ MCFG_DEVICE_MODIFY("5205")
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B)
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::wb3bb(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::wb3bb)
system16_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::wb3bbl_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(wb3bbl_map)
BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 4, 0, 5, 1, 6, 2, 7, 3);
m_sprites->set_local_originy(0);
- MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_wb3bl)
- m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_s16a_bootleg));
+ MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_wb3bl )
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg)
z80_ym2151(config);
-}
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_START(segas1x_bootleg_state::goldnaxeb_base)
-void segas1x_bootleg_state::goldnaxeb_base(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, 10000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::goldnaxeb1_map);
- m_maincpu->set_addrmap(AS_OPCODES, &segas1x_bootleg_state::decrypted_opcodes_map);
- m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
+ MCFG_DEVICE_PROGRAM_MAP(goldnaxeb1_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold)
+
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(40*8, 28*8);
- m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
- m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system16));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 28*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system16)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16);
- PALETTE(config, m_palette, palette_device::BLACK, 2048*SHADOW_COLORS_MULTIPLIER);
+ GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16);
+ PALETTE(config, "palette", palette_device::BLACK, 2048*SHADOW_COLORS_MULTIPLIER);
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-121);
@@ -2271,165 +2278,166 @@ void segas1x_bootleg_state::goldnaxeb_base(machine_config &config)
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system16)
GENERIC_LATCH_8(config, m_soundlatch);
-}
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::goldnaxeb1(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::goldnaxeb1)
goldnaxeb_base(config);
- m_palette->set_entries(0x2000*SHADOW_COLORS_MULTIPLIER);
+ subdevice<palette_device>("palette")->set_entries(0x2000*SHADOW_COLORS_MULTIPLIER);
z80_ym2151_upd7759(config);
-}
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::goldnaxeb2(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::goldnaxeb2)
goldnaxeb_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::goldnaxeb2_map);
- m_maincpu->set_addrmap(AS_OPCODES, address_map_constructor());
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(goldnaxeb2_map)
+ MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES)
- m_palette->set_entries(0x2000*SHADOW_COLORS_MULTIPLIER);
+ subdevice<palette_device>("palette")->set_entries(0x2000*SHADOW_COLORS_MULTIPLIER);
datsu_2x_ym2203_msm5205(config);
-}
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::bayrouteb1(machine_config &config)
-{
+
+MACHINE_CONFIG_START(segas1x_bootleg_state::bayrouteb1)
goldnaxeb_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::bayrouteb1_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(bayrouteb1_map)
z80_ym2151_upd7759(config);
-}
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::bayrouteb2(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::bayrouteb2)
goldnaxeb_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::bayrouteb2_map);
- m_maincpu->set_addrmap(AS_OPCODES, address_map_constructor());
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(bayrouteb2_map)
+ MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES)
datsu_ym2151_msm5205(config);
m_sprites->set_local_originx(189-107);
-}
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::tturfbl(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::tturfbl)
system16_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::tturfbl_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tturfbl_map)
datsu_ym2151_msm5205(config);
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-107);
-}
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::dduxbl(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::dduxbl)
system16_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::dduxbl_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dduxbl_map)
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-112);
z80_ym2151(config);
-}
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::eswatbl(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::eswatbl)
system16_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::eswatbl_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(eswatbl_map)
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-124);
z80_ym2151_upd7759(config);
-}
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::eswatbl2(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::eswatbl2)
system16_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::eswatbl2_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(eswatbl2_map)
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-121);
datsu_2x_ym2203_msm5205(config);
-}
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::tetrisbl(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::tetrisbl)
system16_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::tetrisbl_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tetrisbl_map)
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-112);
z80_ym2151(config);
-}
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::altbeastbl(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::altbeastbl)
system16_base(config);
-
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::tetrisbl_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tetrisbl_map)
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-112);
datsu_2x_ym2203_msm5205(config);
- m_msm->set_prescaler_selector(msm5205_device::S96_4B);
-}
+ MCFG_DEVICE_MODIFY("5205")
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B)
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::beautyb(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::beautyb)
system16_base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::beautyb_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(beautyb_map)
// no sprites
z80_ym2151(config);
-}
+MACHINE_CONFIG_END
+
/* System 18 Bootlegs */
-void segas1x_bootleg_state::system18(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::system18)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 10000000);
- m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold)
- Z80(config, m_soundcpu, 8000000);
- m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::sound_18_map);
- m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::sound_18_io_map);
+ MCFG_DEVICE_ADD("soundcpu", Z80, 8000000)
+ MCFG_DEVICE_PROGRAM_MAP(sound_18_map)
+ MCFG_DEVICE_IO_MAP(sound_18_io_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(40*8, 28*8);
- m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
- m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system18old));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 28*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system18old)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16);
- PALETTE(config, m_palette).set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER); // 64 extra colours for vdp (but we use 2048 so shadow mask works)
+ GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16);
+ PALETTE(config, "palette").set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER); // 64 extra colours for vdp (but we use 2048 so shadow mask works)
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system18old)
@@ -2442,49 +2450,50 @@ void segas1x_bootleg_state::system18(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- ym3438_device &ym3438_0(YM3438(config, "3438.0", 8000000));
- ym3438_0.add_route(0, "lspeaker", 0.40);
- ym3438_0.add_route(1, "rspeaker", 0.40);
+ MCFG_DEVICE_ADD("3438.0", YM3438, 8000000)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
- ym3438_device &ym3438_1(YM3438(config, "3438.1", 8000000));
- ym3438_1.add_route(0, "lspeaker", 0.40);
- ym3438_1.add_route(1, "rspeaker", 0.40);
+ MCFG_DEVICE_ADD("3438.1", YM3438, 8000000)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
- rf5c68_device &rf5c68(RF5C68(config, "5c68", 8000000));
- rf5c68.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- rf5c68.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
- rf5c68.set_addrmap(0, &segas1x_bootleg_state::pcm_map);
-}
+ MCFG_DEVICE_ADD("5c68", RF5C68, 8000000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(0, pcm_map)
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::astormbl(machine_config &config)
-{
+
+MACHINE_CONFIG_START(segas1x_bootleg_state::astormbl)
system18(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::astormbl_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(astormbl_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(segas1x_bootleg_state::astormb2)
-void segas1x_bootleg_state::astormb2(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000)/2); /* 12MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::astormbl_map);
- m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) /* 12MHz */
+ MCFG_DEVICE_PROGRAM_MAP(astormbl_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold)
- Z80(config, m_soundcpu, XTAL(8'000'000)/2); /* 4MHz */
- m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::sys18bl_sound_map);
+ MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(8'000'000)/2) /* 4MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sys18bl_sound_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(58.271); /* V-Sync is 58.271Hz & H-Sync is ~ 14.48KHz measured */
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(40*8, 28*8);
- m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
- m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system18old));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58.271) /* V-Sync is 58.271Hz & H-Sync is ~ 14.48KHz measured */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 28*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system18old)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16);
- PALETTE(config, m_palette).set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER); // 64 extra colours for vdp (but we use 2048 so shadow mask works)
+ GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16);
+ PALETTE(config, "palette").set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER); // 64 extra colours for vdp (but we use 2048 so shadow mask works)
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system18old)
@@ -2497,56 +2506,57 @@ void segas1x_bootleg_state::astormb2(machine_config &config)
// 1 OKI M6295 instead of original sound hardware
SPEAKER(config, "mono").front_center();
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(8'000'000)/8, okim6295_device::PIN7_HIGH)); // 1MHz clock and pin verified
- oki.set_addrmap(0, &segas1x_bootleg_state::sys18bl_oki_map);
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(8'000'000)/8, okim6295_device::PIN7_HIGH) // 1MHz clock and pin verified
+ MCFG_DEVICE_ADDRESS_MAP(0, sys18bl_oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::mwalkbl(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::mwalkbl)
astormb2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::mwalkbl_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mwalkbl_map)
+MACHINE_CONFIG_END
-void segas1x_bootleg_state::shdancbl(machine_config &config)
-{
+
+MACHINE_CONFIG_START(segas1x_bootleg_state::shdancbl)
system18(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shdancbl_map);
-
- m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shdancbl_sound_map);
- m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::shdancbl_sound_io_map);
-
- config.device_remove("5c68");
-
- MSM5205(config, m_msm, 200000);
- m_msm->vck_legacy_callback().set(FUNC(segas1x_bootleg_state::shdancbl_msm5205_callback));
- m_msm->set_prescaler_selector(msm5205_device::S48_4B);
- m_msm->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
- m_msm->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
-}
-
-void segas1x_bootleg_state::shdancbla(machine_config &config)
-{
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(shdancbl_map)
+
+ MCFG_DEVICE_MODIFY("soundcpu")
+ MCFG_DEVICE_PROGRAM_MAP(shdancbl_sound_map)
+ MCFG_DEVICE_IO_MAP(shdancbl_sound_io_map)
+ MCFG_DEVICE_REMOVE("5c68")
+
+ MCFG_DEVICE_ADD("5205", MSM5205, 200000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, segas1x_bootleg_state, shdancbl_msm5205_callback))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(segas1x_bootleg_state::shdancbla)
system18(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shdancbla_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(shdancbla_map)
- m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shdancbla_sound_map);
- m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::shdancbl_sound_io_map);
+ MCFG_DEVICE_MODIFY("soundcpu")
+ MCFG_DEVICE_PROGRAM_MAP(shdancbla_sound_map)
+ MCFG_DEVICE_IO_MAP(shdancbl_sound_io_map)
+ MCFG_DEVICE_REMOVE("5c68")
- config.device_remove("5c68");
-
- MSM5205(config, m_msm, 200000);
- m_msm->vck_legacy_callback().set(FUNC(segas1x_bootleg_state::shdancbl_msm5205_callback));
- m_msm->set_prescaler_selector(msm5205_device::S48_4B);
- m_msm->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
- m_msm->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
-}
+ MCFG_DEVICE_ADD("5205", MSM5205, 200000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, segas1x_bootleg_state, shdancbl_msm5205_callback))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
+MACHINE_CONFIG_END
MACHINE_RESET_MEMBER(segas1x_bootleg_state,ddcrewbl)
@@ -2561,24 +2571,24 @@ MACHINE_RESET_MEMBER(segas1x_bootleg_state,ddcrewbl)
}
-void segas1x_bootleg_state::ddcrewbl(machine_config &config)
-{
+MACHINE_CONFIG_START(segas1x_bootleg_state::ddcrewbl)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 10000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::ddcrewbl_map);
- m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold)
+ MCFG_DEVICE_PROGRAM_MAP(ddcrewbl_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(40*8, 28*8);
- m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
- m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system18old));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 28*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system18old)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16);
- PALETTE(config, m_palette).set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER);
+ GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16);
+ PALETTE(config, "palette").set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER);
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system18old)
@@ -2589,9 +2599,9 @@ void segas1x_bootleg_state::ddcrewbl(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- okim6295_device &oki(OKIM6295(config, "oki", 10000000/10, okim6295_device::PIN7_HIGH)); // clock and pin not verified
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 10000000/10, okim6295_device::PIN7_HIGH) // clock and pin not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/tagteam.cpp b/src/mame/drivers/tagteam.cpp
index 1046292c820..185e8590854 100644
--- a/src/mame/drivers/tagteam.cpp
+++ b/src/mame/drivers/tagteam.cpp
@@ -209,25 +209,25 @@ INTERRUPT_GEN_MEMBER(tagteam_state::sound_timer_irq)
}
-void tagteam_state::tagteam(machine_config &config)
-{
+MACHINE_CONFIG_START(tagteam_state::tagteam)
+
/* basic machine hardware */
- M6502(config, m_maincpu, XTAL(12'000'000)/8);
- m_maincpu->set_addrmap(AS_PROGRAM, &tagteam_state::main_map);
- m_maincpu->set_periodic_int(FUNC(tagteam_state::irq0_line_assert), attotime::from_hz(272/16*57)); // connected to bit 4 of vcount (basically once every 16 scanlines)
+ MCFG_DEVICE_ADD("maincpu", M6502, XTAL(12'000'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(tagteam_state, irq0_line_assert, 272/16*57) // connected to bit 4 of vcount (basically once every 16 scanlines)
- M6502(config, m_audiocpu, XTAL(12'000'000)/2/6); // daughterboard gets 12mhz/2 from mainboard, but how it's divided further is a guess
- m_audiocpu->set_addrmap(AS_PROGRAM, &tagteam_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(tagteam_state::sound_timer_irq), attotime::from_hz(272/16*57)); // same source as maincpu irq
+ MCFG_DEVICE_ADD("audiocpu", M6502, XTAL(12'000'000)/2/6) // daughterboard gets 12mhz/2 from mainboard, but how it's divided further is a guess
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(tagteam_state, sound_timer_irq, 272/16*57) // same source as maincpu irq
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57); // measured?
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(3072));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(tagteam_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(57) // measured?
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3072))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tagteam_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_tagteam);
PALETTE(config, m_palette, FUNC(tagteam_state::tagteam_palette), 32);
@@ -241,11 +241,10 @@ void tagteam_state::tagteam(machine_config &config)
AY8910(config, "ay1", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "speaker", 0.25);
AY8910(config, "ay2", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "speaker", 0.25);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tail2nos.cpp b/src/mame/drivers/tail2nos.cpp
index 06c6e75470e..8e595e64e54 100644
--- a/src/mame/drivers/tail2nos.cpp
+++ b/src/mame/drivers/tail2nos.cpp
@@ -232,16 +232,16 @@ void tail2nos_state::machine_reset()
{
}
-void tail2nos_state::tail2nos(machine_config &config)
-{
+MACHINE_CONFIG_START(tail2nos_state::tail2nos)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(20'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &tail2nos_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(tail2nos_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000,XTAL(20'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tail2nos_state, irq6_line_hold)
- Z80(config, m_audiocpu, XTAL(20'000'000)/4); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &tail2nos_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &tail2nos_state::sound_port_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80,XTAL(20'000'000)/4) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_port_map)
/* IRQs are triggered by the YM2608 */
ACIA6850(config, m_acia, 0);
@@ -250,13 +250,13 @@ void tail2nos_state::tail2nos(machine_config &config)
//m_acia->rts_handler().set("link", FUNC(rs232_port_device::write_rts));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(tail2nos_state::screen_update_tail2nos));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tail2nos_state, screen_update_tail2nos)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_tail2nos);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048);
@@ -285,7 +285,7 @@ void tail2nos_state::tail2nos(machine_config &config)
ymsnd.add_route(0, "rspeaker", 0.25);
ymsnd.add_route(1, "lspeaker", 1.0);
ymsnd.add_route(2, "rspeaker", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/taito.cpp b/src/mame/drivers/taito.cpp
index c5a723dae68..2a0c0e31438 100644
--- a/src/mame/drivers/taito.cpp
+++ b/src/mame/drivers/taito.cpp
@@ -313,7 +313,8 @@ WRITE8_MEMBER( taito_state::io_w )
WRITE_LINE_MEMBER( taito_state::pia_cb2_w )
{
- m_votrax->write(m_votrax_cmd);
+ address_space& space = m_maincpu->space(AS_PROGRAM);
+ m_votrax->write(space, 0, m_votrax_cmd);
}
READ8_MEMBER( taito_state::pia_pb_r )
@@ -349,14 +350,13 @@ TIMER_DEVICE_CALLBACK_MEMBER( taito_state::timer_a )
m_digits[++digit] = patterns[m_p_ram[m_out_offs++]&15];
}
-void taito_state::taito(machine_config &config)
-{
+MACHINE_CONFIG_START(taito_state::taito)
/* basic machine hardware */
- I8080(config, m_maincpu, 19000000/9);
- m_maincpu->set_addrmap(AS_PROGRAM, &taito_state::taito_map);
+ MCFG_DEVICE_ADD(m_maincpu, I8080, 19000000/9)
+ MCFG_DEVICE_PROGRAM_MAP(taito_map)
- M6802(config, m_cpu2, 1000000); // cpu & clock are a guess
- m_cpu2->set_addrmap(AS_PROGRAM, &taito_state::taito_sub_map);
+ MCFG_DEVICE_ADD(m_cpu2, M6802, 1000000) // cpu & clock are a guess
+ MCFG_DEVICE_PROGRAM_MAP(taito_sub_map)
/* Video */
config.set_default_layout(layout_taito);
@@ -365,10 +365,9 @@ void taito_state::taito(machine_config &config)
genpin_audio(config);
SPEAKER(config, "speaker").front_center();
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.475); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.475) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
PIA6821(config, m_pia);
//m_pia->readpa_handler().set(FUNC(taito_state::pia_pa_r));
@@ -380,8 +379,8 @@ void taito_state::taito(machine_config &config)
m_pia->irqa_handler().set_inputline(m_cpu2, INPUT_LINE_NMI);
m_pia->irqb_handler().set_inputline(m_cpu2, M6802_IRQ_LINE);
- TIMER(config, "timer_a").configure_periodic(FUNC(taito_state::timer_a), attotime::from_hz(200));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_a", taito_state, timer_a, attotime::from_hz(200))
+MACHINE_CONFIG_END
void taito_state::shock(machine_config &config)
{
diff --git a/src/mame/drivers/taito_b.cpp b/src/mame/drivers/taito_b.cpp
index db5fc1d16cd..11f9039f46b 100644
--- a/src/mame/drivers/taito_b.cpp
+++ b/src/mame/drivers/taito_b.cpp
@@ -1979,7 +1979,7 @@ void taitob_state::hitice(machine_config &config)
Z80(config, m_audiocpu, 24_MHz_XTAL / 4); /* 6 MHz Z80B */
m_audiocpu->set_addrmap(AS_PROGRAM, &taitob_state::viofight_sound_map);
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
TC0220IOC(config, m_tc0220ioc, 0);
m_tc0220ioc->read_0_callback().set_ioport("DSWA");
diff --git a/src/mame/drivers/taito_f2.cpp b/src/mame/drivers/taito_f2.cpp
index 886c71cea5f..a4e6c07ce9e 100644
--- a/src/mame/drivers/taito_f2.cpp
+++ b/src/mame/drivers/taito_f2.cpp
@@ -4815,9 +4815,7 @@ ROM_START( footchmp )
/* no Delta-T samples */
- ROM_REGION( 0x400, "plds", 0 )
- ROM_LOAD( "c80-08.ic45", 0x000, 0x104, CRC(6137dd15) SHA1(fb20df118da69b52767d5e6c81fa85174c50c5c5) ) // pal16l8bcn
- ROM_LOAD( "c80-09.ic46", 0x200, 0x104, CRC(4ca48869) SHA1(8ba46ab625d3cbf3431ca2e6f3a9207d402202ef) ) // pal16l8bcn
+// Pals c80-08.45 c80-09.46
ROM_END
ROM_START( hthero )
diff --git a/src/mame/drivers/taito_f3.cpp b/src/mame/drivers/taito_f3.cpp
index f6586ae1caa..d77c43d9f47 100644
--- a/src/mame/drivers/taito_f3.cpp
+++ b/src/mame/drivers/taito_f3.cpp
@@ -4106,13 +4106,12 @@ void taito_f3_state::init_bubsymph()
READ32_MEMBER(taito_f3_state::bubsympb_oki_r)
{
- return m_oki->read();
+ return m_oki->read(space,0);
}
-
WRITE32_MEMBER(taito_f3_state::bubsympb_oki_w)
{
//printf("write %08x %08x\n",data,mem_mask);
- if (ACCESSING_BITS_0_7) m_oki->write(data&0xff);
+ if (ACCESSING_BITS_0_7) m_oki->write(space, 0,data&0xff);
//if (mem_mask==0x000000ff) downcast<okim6295_device *>(device)->write(0,data&0xff);
if (ACCESSING_BITS_16_23)
{
diff --git a/src/mame/drivers/taito_l.cpp b/src/mame/drivers/taito_l.cpp
index 034a0c37395..f2cce198f88 100644
--- a/src/mame/drivers/taito_l.cpp
+++ b/src/mame/drivers/taito_l.cpp
@@ -321,7 +321,7 @@ READ8_MEMBER(taitol_1cpu_state::extport_select_and_ym2203_r)
{
for (auto &mux : m_mux)
mux->select_w((offset >> 1) & 1);
- return m_ymsnd->read(offset & 1);
+ return m_ymsnd->read(space, offset & 1);
}
WRITE8_MEMBER(taitol_state::mcu_control_w)
@@ -1452,43 +1452,43 @@ WRITE8_MEMBER(fhawk_state::portA_w)
//logerror ("YM2203 bank change val=%02x %s\n", data & 0x03, machine().describe_context() );
}
-void taitol_state::l_system_video(machine_config &config)
-{
+MACHINE_CONFIG_START(taitol_state::l_system_video)
for (int bank = 0; bank < 4; bank++)
{
ADDRESS_MAP_BANK(config, m_ram_bnks[bank]).set_map(&taitol_state::tc0090lvc_map).set_options(ENDIANNESS_LITTLE, 8, 20, 0x1000);
}
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(taitol_state::screen_update_taitol));
- screen.screen_vblank().set(FUNC(taitol_state::screen_vblank_taitol));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(taitol_state, screen_update_taitol)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, taitol_state, screen_vblank_taitol))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, taito_l);
PALETTE(config, m_palette, palette_device::BLACK).set_format(palette_device::xBGR_444, 256);
- TIMER(config, "scantimer").configure_scanline(FUNC(taitol_state::vbl_interrupt), "screen", 0, 1);
-}
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitol_state, vbl_interrupt, "screen", 0, 1)
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_START(fhawk_state::fhawk)
-void fhawk_state::fhawk(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_main_cpu, XTAL(13'330'560)/2); /* verified freq on pin122 of TC0090LVC cpu */
- m_main_cpu->set_addrmap(AS_PROGRAM, &fhawk_state::fhawk_map);
- m_main_cpu->set_irq_acknowledge_callback(FUNC(taitol_state::irq_callback));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(13'330'560)/2) /* verified freq on pin122 of TC0090LVC cpu */
+ MCFG_DEVICE_PROGRAM_MAP(fhawk_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(taitol_state, irq_callback)
- Z80(config, m_audio_cpu, 12_MHz_XTAL/3); /* verified on pcb */
- m_audio_cpu->set_addrmap(AS_PROGRAM, &fhawk_state::fhawk_3_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 12_MHz_XTAL/3) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(fhawk_3_map)
- z80_device &slave(Z80(config, "slave", 12_MHz_XTAL/3)); /* verified on pcb */
- slave.set_addrmap(AS_PROGRAM, &fhawk_state::fhawk_2_map);
- slave.set_vblank_int("screen", FUNC(taitol_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("slave", Z80, 12_MHz_XTAL/3) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(fhawk_2_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taitol_state, irq0_line_hold)
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
tc0220ioc_device &tc0220ioc(TC0220IOC(config, "tc0220ioc", 0));
tc0220ioc.read_0_callback().set_ioport("DSWA");
@@ -1518,42 +1518,47 @@ void fhawk_state::fhawk(machine_config &config)
pc060ha_device &ciu(PC060HA(config, "ciu", 0));
ciu.set_master_tag("slave");
ciu.set_slave_tag(m_audio_cpu);
-}
+MACHINE_CONFIG_END
-void champwr_state::champwr(machine_config &config)
-{
+
+MACHINE_CONFIG_START(champwr_state::champwr)
fhawk(config);
/* basic machine hardware */
- m_main_cpu->set_addrmap(AS_PROGRAM, &champwr_state::champwr_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(champwr_map)
- m_audio_cpu->set_addrmap(AS_PROGRAM, &champwr_state::champwr_3_map);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(champwr_3_map)
- subdevice<cpu_device>("slave")->set_addrmap(AS_PROGRAM, &champwr_state::champwr_2_map);
+ MCFG_DEVICE_MODIFY("slave")
+ MCFG_DEVICE_PROGRAM_MAP(champwr_2_map)
/* sound hardware */
subdevice<ym2203_device>("ymsnd")->port_b_write_callback().set(FUNC(champwr_state::msm5205_volume_w));
- MSM5205(config, m_msm, 384_kHz_XTAL);
- m_msm->vck_legacy_callback().set(FUNC(champwr_state::msm5205_vck)); /* VCK function */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 384_kHz_XTAL)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, champwr_state, msm5205_vck)) /* VCK function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
-void taitol_2cpu_state::raimais(machine_config &config)
-{
- Z80(config, m_main_cpu, 13330560/2); // needs verification from pin122 of TC0090LVC
- m_main_cpu->set_addrmap(AS_PROGRAM, &taitol_2cpu_state::raimais_map);
- m_main_cpu->set_irq_acknowledge_callback(FUNC(taitol_state::irq_callback));
- Z80(config, m_audio_cpu, 12000000/3); // not verified
- m_audio_cpu->set_addrmap(AS_PROGRAM, &taitol_2cpu_state::raimais_3_map);
- z80_device &slave(Z80(config, "slave", 12000000/3)); // not verified
- slave.set_addrmap(AS_PROGRAM, &taitol_2cpu_state::raimais_2_map);
- slave.set_vblank_int("screen", FUNC(taitol_state::irq0_line_hold));
+MACHINE_CONFIG_START(taitol_2cpu_state::raimais)
+
+ MCFG_DEVICE_ADD("maincpu", Z80, 13330560/2) // needs verification from pin122 of TC0090LVC
+ MCFG_DEVICE_PROGRAM_MAP(raimais_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(taitol_state, irq_callback)
+
+ MCFG_DEVICE_ADD("audiocpu", Z80, 12000000/3) // not verified
+ MCFG_DEVICE_PROGRAM_MAP(raimais_3_map)
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_DEVICE_ADD("slave", Z80, 12000000/3) // not verified
+ MCFG_DEVICE_PROGRAM_MAP(raimais_2_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taitol_state, irq0_line_hold)
+
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
tc0040ioc_device &tc0040ioc(TC0040IOC(config, "tc0040ioc", 0));
tc0040ioc.read_0_callback().set_ioport("DSWA");
@@ -1583,7 +1588,8 @@ void taitol_2cpu_state::raimais(machine_config &config)
tc0140syt_device &tc0140syt(TC0140SYT(config, "tc0140syt", 0));
tc0140syt.set_master_tag("slave");
tc0140syt.set_slave_tag(m_audio_cpu);
-}
+MACHINE_CONFIG_END
+
void taitol_2cpu_state::kurikint(machine_config &config)
{
@@ -1691,7 +1697,7 @@ void horshoes_state::horshoes(machine_config &config)
UPD4701A(config, m_upd4701, 0);
m_upd4701->set_portx_tag("AN0");
- m_upd4701->set_porty_tag("AN1");
+ m_upd4701->set_portx_tag("AN1");
}
@@ -1728,18 +1734,18 @@ void taitol_1cpu_state::cachat(machine_config &config)
m_ymsnd->port_b_read_callback().set_ioport("DSWB");
}
-void taitol_2cpu_state::evilston(machine_config &config)
-{
+MACHINE_CONFIG_START(taitol_2cpu_state::evilston)
+
/* basic machine hardware */
- Z80(config, m_main_cpu, XTAL(13'330'560)/2); /* not verified */
- m_main_cpu->set_addrmap(AS_PROGRAM, &taitol_2cpu_state::evilston_map);
- m_main_cpu->set_irq_acknowledge_callback(FUNC(taitol_state::irq_callback));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(13'330'560)/2) /* not verified */
+ MCFG_DEVICE_PROGRAM_MAP(evilston_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(taitol_state, irq_callback)
- Z80(config, m_audio_cpu, 12_MHz_XTAL/3); /* not verified */
- m_audio_cpu->set_addrmap(AS_PROGRAM, &taitol_2cpu_state::evilston_2_map);
- m_audio_cpu->set_vblank_int("screen", FUNC(taitol_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("audiocpu", Z80, 12_MHz_XTAL/3) /* not verified */
+ MCFG_DEVICE_PROGRAM_MAP(evilston_2_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taitol_state, irq0_line_hold)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
tc0510nio_device &tc0510nio(TC0510NIO(config, "tc0510nio", 0));
tc0510nio.read_0_callback().set_ioport("DSWA");
@@ -1766,7 +1772,7 @@ void taitol_2cpu_state::evilston(machine_config &config)
ymsnd.add_route(1, "mono", 0.25);
ymsnd.add_route(2, "mono", 0.25);
ymsnd.add_route(3, "mono", 0.80);
-}
+MACHINE_CONFIG_END
ROM_START( raimais )
diff --git a/src/mame/drivers/taito_o.cpp b/src/mame/drivers/taito_o.cpp
index c43880d7313..06f1a166ba3 100644
--- a/src/mame/drivers/taito_o.cpp
+++ b/src/mame/drivers/taito_o.cpp
@@ -233,21 +233,21 @@ void taitoo_state::machine_start()
{
}
-void taitoo_state::parentj(machine_config &config)
-{
- M68000(config, m_maincpu, 12000000); /*?? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &taitoo_state::parentj_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(taitoo_state::parentj_interrupt), "screen", 0, 1);
+MACHINE_CONFIG_START(taitoo_state::parentj)
+
+ MCFG_DEVICE_ADD("maincpu", M68000,12000000 ) /*?? MHz */
+ MCFG_DEVICE_PROGRAM_MAP(parentj_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitoo_state, parentj_interrupt, "screen", 0, 1)
WATCHDOG_TIMER(config, m_watchdog);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(64*16, 64*16);
- screen.set_visarea(0*16, 32*16-1, 3*16, 31*16-1);
- screen.set_screen_update(FUNC(taitoo_state::screen_update_parentj));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*16, 64*16)
+ MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 3*16, 31*16-1)
+ MCFG_SCREEN_UPDATE_DRIVER(taitoo_state, screen_update_parentj)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_parentj);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 33*16);
@@ -265,7 +265,7 @@ void taitoo_state::parentj(machine_config &config)
ymsnd.port_a_read_callback().set_ioport("DSWA");
ymsnd.port_b_read_callback().set_ioport("DSWB");
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
ROM_START( parentj )
ROM_REGION( 0x20000, "maincpu", 0 ) /* 68000 Code */
diff --git a/src/mame/drivers/taito_z.cpp b/src/mame/drivers/taito_z.cpp
index 212b127169d..95b46bf9623 100644
--- a/src/mame/drivers/taito_z.cpp
+++ b/src/mame/drivers/taito_z.cpp
@@ -2920,7 +2920,7 @@ static INPUT_PORTS_START( spacegnu )
TAITO_COINAGE_US_LOC(SW A)
INPUT_PORTS_END
-static INPUT_PORTS_START( dblaxle ) // Side by Side linkable versions
+static INPUT_PORTS_START( dblaxle )
PORT_START("DSWA")
PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW A:1" )
PORT_DIPNAME( 0x02, 0x02, "Gear shift" ) PORT_DIPLOCATION("SW A:2")
@@ -2974,35 +2974,6 @@ static INPUT_PORTS_START( dblaxle ) // Side by Side linkable versions
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x40, 0xc0) PORT_SENSITIVITY(100) PORT_KEYDELTA(4) PORT_NAME("Steering Wheel")
INPUT_PORTS_END
-static INPUT_PORTS_START( dblaxles ) // Single player versions
- PORT_INCLUDE(dblaxle)
-
- PORT_MODIFY("DSWA")
- PORT_DIPNAME( 0x01, 0x01, "Handle Pulse" ) PORT_DIPLOCATION("SW A:1")
- PORT_DIPSETTING( 0x01, DEF_STR( Normal ) )
- PORT_DIPSETTING( 0x00, "Fast" )
-
- PORT_MODIFY("DSWB")
- PORT_DIPNAME( 0x04, 0x00, "Back Gear" ) PORT_DIPLOCATION("SW B:3") // If set to NORMAL you need to keep REVERSE pressed to go forward
- PORT_DIPSETTING( 0x04, DEF_STR( Normal ) )
- PORT_DIPSETTING( 0x00, "No Back Gear" )
- PORT_DIPNAME( 0x08, 0x08, "Vibration Mode" ) PORT_DIPLOCATION("SW B:4")
- PORT_DIPSETTING( 0x08, "Partial Vibration" )
- PORT_DIPSETTING( 0x00, "All The Time Vibration" )
- PORT_DIPNAME( 0x10, 0x10, "Steering Wheel Vibration" ) PORT_DIPLOCATION("SW B:5")
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x10, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, "Select Round" ) PORT_DIPLOCATION("SW B:6")
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x20, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW B:7")
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x40, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x00, "Buy-In" ) PORT_DIPLOCATION("SW B:8") // manual states "In countries except North America this setting should be ON"
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x80, DEF_STR( On ) ) // You buy truck upgrades like Big Tires, Engine and Nitro canisters before the race
-INPUT_PORTS_END
-
static INPUT_PORTS_START( pwheelsj )
PORT_INCLUDE(dblaxle)
@@ -3899,7 +3870,7 @@ void taitoz_state::racingb(machine_config &config)
MCFG_MACHINE_START_OVERRIDE(taitoz_state,taitoz)
MCFG_MACHINE_RESET_OVERRIDE(taitoz_state,taitoz)
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
TC0510NIO(config, m_tc0510nio, 0);
m_tc0510nio->read_0_callback().set_ioport("DSWA");
@@ -5363,7 +5334,7 @@ ROM_START( spacegunj )
ROM_LOAD( "pal16r4-c57-14.96", 0x0a00, 0x0104, CRC(75e1bf61) SHA1(e8358329a78ec0ab87641b2ecaec0b2b67c6ca30) )
ROM_END
-ROM_START( dblaxle ) /* Manual refers to this version as the "Version Without Communication" */
+ROM_START( dblaxle )
ROM_REGION( 0x80000, "maincpu", 0 ) /* 512K for 68000 code (CPU A) */
ROM_LOAD16_BYTE( "c78_49-1.2", 0x00000, 0x20000, CRC(a6f0c631) SHA1(371cb7807d2350ceca36fc0fb6a65d3179c011b0) )
ROM_LOAD16_BYTE( "c78_51-1.4", 0x00001, 0x20000, CRC(ef24e83b) SHA1(a0bc1d2192bccfcb6f859aa0a27f43cc92080e1e) )
@@ -5410,54 +5381,7 @@ ROM_START( dblaxle ) /* Manual refers to this version as the "Version Without Co
ROM_LOAD( "c84-11.17", 0x00000, 0x00400, CRC(10728853) SHA1(45d7cc8e06fbe01295cc2194bca9586f0ef8b12b) )
ROM_END
-ROM_START( dblaxleu ) /* Manual refers to this version as the "Version Without Communication" */
- ROM_REGION( 0x80000, "maincpu", 0 ) /* 512K for 68000 code (CPU A) */
- ROM_LOAD16_BYTE( "c78_49+.2", 0x00000, 0x20000, CRC(3bb0344a) SHA1(dad031033838bf65c83fb3715a9727f2d165909b) ) /* Actual label is C78 49* */
- ROM_LOAD16_BYTE( "c78_51+.4", 0x00001, 0x20000, CRC(918176cb) SHA1(b78bce351e240b447fbb9a1f44c8efa3e6b98cbe) ) /* Actual label is C78 51* */
- ROM_LOAD16_BYTE( "c78_50+.3", 0x40000, 0x20000, CRC(5a12e2bb) SHA1(53a91cc8fcf42934aa282f5a1bb286461dc2a421) ) /* Actual label is C78 50* */
- ROM_LOAD16_BYTE( "c78_53+.5", 0x40001, 0x20000, CRC(62f910d4) SHA1(3d952ffcb30a264751b4b282ae8c26ecea09c05c) ) /* Actual label is C78 53* */
-
- ROM_REGION( 0x40000, "sub", 0 ) /* 256K for 68000 code (CPU B) */
- ROM_LOAD16_BYTE( "c78-30+.35", 0x00000, 0x20000, CRC(f73b3ce1) SHA1(1794d1c74599d58302c6dbfabcc1b3110d19b1fb) ) /* Label missing, it's either C78 30 or C78 30* */
- ROM_LOAD16_BYTE( "c78-31+.36", 0x00001, 0x20000, CRC(4639adee) SHA1(24569dd4801c622758e60d3e526480ac6b5f85d2) ) /* Label missing, it's either C78 31 or C78 31* */
-
- ROM_REGION( 0x20000, "audiocpu", 0 ) /* sound cpu */
- ROM_LOAD ( "c78-34.c42", 0x00000, 0x20000, CRC(f2186943) SHA1(2e9aed39fddf3aa1db7e20f8a709b6b82cc3e7df) )
-
- ROM_REGION( 0x100000, "gfx1", 0 )
- ROM_LOAD16_BYTE( "c78-10.12", 0x00000, 0x80000, CRC(44b1897c) SHA1(7ad179db6d7dfeb139ea13cb4a231f99d177f2b1) ) /* SCR 8x8 */
- ROM_LOAD16_BYTE( "c78-11.11", 0x00001, 0x80000, CRC(7db3d4a3) SHA1(fc3c44ed36b212688a5bd8dc61321a994578258e) )
-
- ROM_REGION( 0x400000, "gfx2", 0 )
- ROM_LOAD32_BYTE( "c78-08.25", 0x000000, 0x100000, CRC(6c725211) SHA1(3c1765f44fe57b496d305e994516674f71bd4c3c) ) /* OBJ 16x8 */
- ROM_LOAD32_BYTE( "c78-07.33", 0x000001, 0x100000, CRC(9da00d5b) SHA1(f6b664c7495b936ce1b99852da45ec92cb37062a) )
- ROM_LOAD32_BYTE( "c78-06.23", 0x000002, 0x100000, CRC(8309e91b) SHA1(3f27557bc82bf42cc77e3c7e363b51a0b119144d) )
- ROM_LOAD32_BYTE( "c78-05.31", 0x000003, 0x100000, CRC(90001f68) SHA1(5c08dfe6a2e12e6ca84035815563f38fc2c2c029) )
-// ROMX_LOAD ( "c78-05l.1", 0x000003, 0x080000, CRC(f24bf972) , ROM_SKIP(7) )
-// ROMX_LOAD ( "c78-05h.2", 0x000007, 0x080000, CRC(c01039b5) , ROM_SKIP(7) )
-
- ROM_REGION16_LE( 0x80000, "tc0150rod", 0 )
- ROM_LOAD16_WORD( "c78-09.12", 0x000000, 0x80000, CRC(0dbde6f5) SHA1(4049271e3738b54e0c56d191889b1aea5664d49f) ) /* ROD, road lines */
-
- ROM_REGION16_LE( 0x80000, "user1", 0 )
- ROM_LOAD16_WORD( "c78-04.3", 0x00000, 0x80000, CRC(cc1aa37c) SHA1(cfa2eb338dc81c98c637c2f0b14d2baea8b115f5) ) /* STY spritemap */
-
- ROM_REGION( 0x180000, "ymsnd", 0 ) /* ADPCM samples */
- ROM_LOAD( "c78-12.33", 0x000000, 0x100000, CRC(b0267404) SHA1(ffd337336ff9b096e3725f733364762f6e6d3fab) )
- ROM_LOAD( "c78-13.46", 0x100000, 0x080000, CRC(1b363aa2) SHA1(0aae3988024654e98cc0c784307b1c329c8f0783) )
-
- ROM_REGION( 0x80000, "ymsnd.deltat", 0 ) /* Delta-T samples */
- ROM_LOAD( "c78-14.31", 0x00000, 0x80000, CRC(9cad4dfb) SHA1(9187ef827a3f1bc9233d0e45e72c72c0956c5912) )
-
- ROM_REGION( 0x10000, "user2", 0 ) /* unused ROMs */
- ROM_LOAD( "c78-25.15", 0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) ) // 98% compression
- ROM_LOAD( "c78-15.22", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority
- ROM_LOAD( "c78-21.74", 0x00000, 0x00100, CRC(2926bf27) SHA1(bfbbe6c71bb29a05959f3de0d940816139f9ebfe) ) // road/sprite priority and palette select
- ROM_LOAD( "c84-10.16", 0x00000, 0x00400, CRC(643e8bfc) SHA1(a6e6086fb8fbd102e01ec72fe60a4232f5909565) )
- ROM_LOAD( "c84-11.17", 0x00000, 0x00400, CRC(10728853) SHA1(45d7cc8e06fbe01295cc2194bca9586f0ef8b12b) )
-ROM_END
-
-ROM_START( dblaxleul ) /* Side by side linkable version */
+ROM_START( dblaxleu )
ROM_REGION( 0x80000, "maincpu", 0 ) /* 512K for 68000 code (CPU A) */
ROM_LOAD16_BYTE( "c78_41-1.2", 0x00000, 0x20000, CRC(cf297fe4) SHA1(4875de63e8336062c27d83b55938bcb3d08a24a3) )
ROM_LOAD16_BYTE( "c78_43-1.4", 0x00001, 0x20000, CRC(38a8bad6) SHA1(50977a6a364893549d2f7899bbc4e0c67086697e) )
@@ -5504,7 +5428,7 @@ ROM_START( dblaxleul ) /* Side by side linkable version */
ROM_LOAD( "c84-11.17", 0x00000, 0x00400, CRC(10728853) SHA1(45d7cc8e06fbe01295cc2194bca9586f0ef8b12b) )
ROM_END
-ROM_START( pwheelsj ) /* Side by side linkable version */
+ROM_START( pwheelsj )
ROM_REGION( 0x80000, "maincpu", 0 ) /* 512K for 68000 code (CPU A) */
ROM_LOAD16_BYTE( "c78_26-2.2", 0x00000, 0x20000, CRC(25c8eb2e) SHA1(a526b886c76a19c9ce1abc25cf433574564605a3) )
ROM_LOAD16_BYTE( "c78_28-2.4", 0x00001, 0x20000, CRC(a9500eb1) SHA1(ad300add3439515512003703df46e2f9317f2ee8) )
@@ -5693,10 +5617,9 @@ GAME( 1990, spacegun, 0, spacegun, spacegun, taitoz_state, init_bshar
GAME( 1990, spacegunj, spacegun, spacegun, spacegnj, taitoz_state, init_bshark, ORIENTATION_FLIP_X, "Taito Corporation", "Space Gun (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1990, spacegunu, spacegun, spacegun, spacegnu, taitoz_state, init_bshark, ORIENTATION_FLIP_X, "Taito America Corporation", "Space Gun (US)", MACHINE_SUPPORTS_SAVE )
-GAMEL(1991, dblaxle, 0, dblaxle, dblaxles, taitoz_state, init_taitoz, ROT0, "Taito America Corporation", "Double Axle (US, Rev 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle )
-GAMEL(1991, dblaxleu, dblaxle, dblaxle, dblaxles, taitoz_state, init_taitoz, ROT0, "Taito America Corporation", "Double Axle (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle )
-GAMEL(1991, dblaxleul, dblaxle, dblaxle, dblaxle, taitoz_state, init_taitoz, ROT0, "Taito America Corporation", "Double Axle (US, Rev 1, Linkable)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle )
-GAMEL(1991, pwheelsj, dblaxle, dblaxle, pwheelsj, taitoz_state, init_taitoz, ROT0, "Taito Corporation", "Power Wheels (Japan, Rev 2, Linkable)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle )
+GAMEL(1991, dblaxle, 0, dblaxle, dblaxle, taitoz_state, init_taitoz, ROT0, "Taito America Corporation", "Double Axle (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle )
+GAMEL(1991, dblaxleu, dblaxle, dblaxle, dblaxle, taitoz_state, init_taitoz, ROT0, "Taito America Corporation", "Double Axle (US, earlier)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle )
+GAMEL(1991, pwheelsj, dblaxle, dblaxle, pwheelsj, taitoz_state, init_taitoz, ROT0, "Taito Corporation", "Power Wheels (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle )
GAMEL(1991, racingb, 0, racingb, racingb, taitoz_state, init_taitoz, ROT0, "Taito Corporation Japan", "Racing Beat (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle )
GAMEL(1991, racingbj, racingb, racingb, racingb, taitoz_state, init_taitoz, ROT0, "Taito Corporation", "Racing Beat (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle )
diff --git a/src/mame/drivers/taitoair.cpp b/src/mame/drivers/taitoair.cpp
index 0ec2eb8e635..0b64bb3e9f2 100644
--- a/src/mame/drivers/taitoair.cpp
+++ b/src/mame/drivers/taitoair.cpp
@@ -704,11 +704,11 @@ void taitoair_state::machine_reset()
void taitoair_state::airsys(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(12'000'000)); // MC68000P12
+ M68000(config, m_maincpu, XTAL(12'000'000)); // MC68000P12
m_maincpu->set_addrmap(AS_PROGRAM, &taitoair_state::airsys_map);
m_maincpu->set_vblank_int("screen", FUNC(taitoair_state::irq5_line_hold));
- Z80(config, m_audiocpu, XTAL(16'000'000) / 4); // Z8400AB1
+ Z80(config, m_audiocpu, XTAL(16'000'000) / 4); // Z8400AB1
m_audiocpu->set_addrmap(AS_PROGRAM, &taitoair_state::sound_map);
TMS32025(config, m_dsp, XTAL(36'000'000)); // Unverified
diff --git a/src/mame/drivers/taitogn.cpp b/src/mame/drivers/taitogn.cpp
index 00aee424ec8..02a63da92ff 100644
--- a/src/mame/drivers/taitogn.cpp
+++ b/src/mame/drivers/taitogn.cpp
@@ -460,10 +460,10 @@ WRITE8_MEMBER(taitogn_state::control_w)
m_zoom->reset();
// assume that this also readys the sound flash chips
- m_pgmflash->write(0, 0xff);
- m_sndflash[0]->write(0, 0xff);
- m_sndflash[1]->write(0, 0xff);
- m_sndflash[2]->write(0, 0xff);
+ m_pgmflash->write(space, 0, 0xff);
+ m_sndflash[0]->write(space, 0, 0xff);
+ m_sndflash[1]->write(space, 0, 0xff);
+ m_sndflash[2]->write(space, 0, 0xff);
}
}
@@ -595,7 +595,7 @@ READ32_MEMBER(taitogn_state::zsg2_ext_r)
{
case 0x000000:
case 0x100000:
- case 0x200000: return m_sndflash[offset >> 20]->read(offset & 0xfffff) | m_sndflash[offset >> 20]->read((offset & 0xfffff) | 1) << 16;
+ case 0x200000: return m_sndflash[offset >> 20]->read(space, offset & 0xfffff) | m_sndflash[offset >> 20]->read(space, (offset & 0xfffff) | 1) << 16;
default:
break;
diff --git a/src/mame/drivers/taitosj.cpp b/src/mame/drivers/taitosj.cpp
index e34022abd85..41345a67756 100644
--- a/src/mame/drivers/taitosj.cpp
+++ b/src/mame/drivers/taitosj.cpp
@@ -1770,41 +1770,43 @@ WRITE8_MEMBER(taitosj_state::taitosj_dacvol_w)
m_dacvol->write(NODE_01, data ^ 0xff); // 7416 hex inverter
}
-void taitosj_state::nomcu(machine_config &config)
-{
+MACHINE_CONFIG_START(taitosj_state::nomcu)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(8'000'000)/2); /* 8 MHz / 2, on CPU board */
- m_maincpu->set_addrmap(AS_PROGRAM, &taitosj_state::taitosj_main_nomcu_map);
- m_maincpu->set_vblank_int("screen", FUNC(taitosj_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu",Z80,XTAL(8'000'000)/2) /* 8 MHz / 2, on CPU board */
+ MCFG_DEVICE_PROGRAM_MAP(taitosj_main_nomcu_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taitosj_state, irq0_line_hold)
- Z80(config, m_audiocpu, XTAL(6'000'000)/2); /* 6 MHz / 2, on GAME board */
- m_audiocpu->set_addrmap(AS_PROGRAM, &taitosj_state::taitosj_audio_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80,XTAL(6'000'000)/2) /* 6 MHz / 2, on GAME board */
+ MCFG_DEVICE_PROGRAM_MAP(taitosj_audio_map)
/* interrupts: */
/* - no interrupts synced with vblank */
/* - NMI triggered by the main CPU */
/* - periodic IRQ, with frequency 6000000/(4*16*16*10*16) = 36.621 Hz, */
- m_audiocpu->set_periodic_int(FUNC(taitosj_state::irq0_line_hold), attotime::from_hz(XTAL(6'000'000)/(4*16*16*10*16)));
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(taitosj_state, irq0_line_hold, XTAL(6'000'000)/(4*16*16*10*16))
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(taitosj_state::screen_update_taitosj));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(taitosj_state, screen_update_taitosj)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_taitosj);
- PALETTE(config, m_palette).set_entries(64);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_taitosj)
+ MCFG_PALETTE_ADD("palette", 64)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- INPUT_MERGER_ALL_HIGH(config, m_soundnmi).output_handler().set(m_soundnmi2, FUNC(input_merger_device::in_w<0>));
+ MCFG_INPUT_MERGER_ALL_HIGH("soundnmi")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(WRITELINE("soundnmi2", input_merger_device, in_w<0>))
- INPUT_MERGER_ANY_HIGH(config, m_soundnmi2).output_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI);
+ MCFG_INPUT_MERGER_ANY_HIGH("soundnmi2")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
AY8910(config, m_ay1, XTAL(6'000'000)/4); // 6mhz/4 on GAME board, AY-3-8910 @ IC53 (this is the only AY which uses proper mixing resistors, the 3 below have outputs tied together)
m_ay1->port_a_read_callback().set_ioport("DSW2");
@@ -1835,20 +1837,19 @@ void taitosj_state::nomcu(machine_config &config)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 128); // 74LS393 on CPU board, counts 128 vblanks before firing watchdog
- DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.15); // 30k r-2r network
- DISCRETE(config, m_dacvol, taitosj_dacvol_discrete);
- m_dacvol->add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- m_dacvol->add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.15) // 30k r-2r network
+ MCFG_DEVICE_ADD("dacvol", DISCRETE, taitosj_dacvol_discrete)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
/* same as above, but with additional 68705 MCU */
-void taitosj_state::mcu(machine_config &config)
-{
+MACHINE_CONFIG_START(taitosj_state::mcu)
nomcu(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &taitosj_state::taitosj_main_mcu_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(taitosj_main_mcu_map)
TAITO_SJ_SECURITY_MCU(config, m_mcu, XTAL(3'000'000)); /* xtal is 3MHz, divided by 4 internally */
m_mcu->set_int_mode(taito_sj_security_mcu_device::int_mode::LATCH);
@@ -1857,19 +1858,20 @@ void taitosj_state::mcu(machine_config &config)
m_mcu->m68intrq_cb().set(FUNC(taitosj_state::mcu_intrq_w));
m_mcu->busrq_cb().set(FUNC(taitosj_state::mcu_busrq_w));
- config.m_minimum_quantum = attotime::from_hz(6000);
-}
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
+MACHINE_CONFIG_END
-void taitosj_state::kikstart(machine_config &config)
-{
+MACHINE_CONFIG_START(taitosj_state::kikstart)
mcu(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &taitosj_state::kikstart_main_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(kikstart_main_map)
- m_screen->set_screen_update(FUNC(taitosj_state::screen_update_kikstart));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(taitosj_state, screen_update_kikstart)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/taitottl.cpp b/src/mame/drivers/taitottl.cpp
index 809242a9338..37fdc944bb8 100644
--- a/src/mame/drivers/taitottl.cpp
+++ b/src/mame/drivers/taitottl.cpp
@@ -136,21 +136,20 @@ void taitottl_state::video_start()
{
}
-void taitottl_state::taitottl(machine_config &config)
-{
+MACHINE_CONFIG_START(taitottl_state::taitottl)
+
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_taitottl);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(taitottl)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL);
- m_video->set_vert_params(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.30);
-}
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/taitotx.cpp b/src/mame/drivers/taitotx.cpp
index f12ad04a2fb..83e5169e335 100644
--- a/src/mame/drivers/taitotx.cpp
+++ b/src/mame/drivers/taitotx.cpp
@@ -172,22 +172,23 @@ void taito_type_x_state::machine_reset()
}
// todo: different configs for the different machine types.
-void taito_type_x_state::taito_type_x(machine_config &config)
-{
+MACHINE_CONFIG_START(taito_type_x_state::taito_type_x)
+
/* basic machine hardware */
- PENTIUM3(config, m_maincpu, 733333333); /* Wrong, much newer processors, much faster. */
- m_maincpu->set_addrmap(AS_PROGRAM, &taito_type_x_state::taito_type_x_map);
+ MCFG_DEVICE_ADD("maincpu", PENTIUM3, 733333333) /* Wrong, much newer processors, much faster. */
+ MCFG_DEVICE_PROGRAM_MAP(taito_type_x_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_screen_update(FUNC(taito_type_x_state::screen_update_taito_type_x));
-
- PALETTE(config, "palette").set_entries(0x10000);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(taito_type_x_state, screen_update_taito_type_x)
+
+ MCFG_PALETTE_ADD("palette", 0x10000)
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/taitowlf.cpp b/src/mame/drivers/taitowlf.cpp
index 71ff3629d2e..0fa7d7b05f7 100644
--- a/src/mame/drivers/taitowlf.cpp
+++ b/src/mame/drivers/taitowlf.cpp
@@ -372,10 +372,10 @@ void taitowlf_state::taitowlf_palette(palette_device &palette) const
MACHINE_CONFIG_START(taitowlf_state::taitowlf)
/* basic machine hardware */
- PENTIUM(config, m_maincpu, 200000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &taitowlf_state::taitowlf_map);
- m_maincpu->set_addrmap(AS_IO, &taitowlf_state::taitowlf_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", PENTIUM, 200000000)
+ MCFG_DEVICE_PROGRAM_MAP(taitowlf_map)
+ MCFG_DEVICE_IO_MAP(taitowlf_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
@@ -389,12 +389,12 @@ MACHINE_CONFIG_START(taitowlf_state::taitowlf)
pcvideo_vga(config);
#else
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(taitowlf_state::screen_update_taitowlf));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(taitowlf_state, screen_update_taitowlf)
PALETTE(config, m_palette, FUNC(taitowlf_state::taitowlf_palette), 256);
#endif
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tamag1.cpp b/src/mame/drivers/tamag1.cpp
index b589354c0d2..7268ab91784 100644
--- a/src/mame/drivers/tamag1.cpp
+++ b/src/mame/drivers/tamag1.cpp
@@ -121,9 +121,9 @@ INPUT_CHANGED_MEMBER(tamag1_state::input_changed)
static INPUT_PORTS_START( tama )
PORT_START("K0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, tamag1_state, input_changed, E0C6S46_LINE_K00)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, tamag1_state, input_changed, E0C6S46_LINE_K01)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, tamag1_state, input_changed, E0C6S46_LINE_K02)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, tamag1_state, input_changed, (void *)E0C6S46_LINE_K00)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, tamag1_state, input_changed, (void *)E0C6S46_LINE_K01)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, tamag1_state, input_changed, (void *)E0C6S46_LINE_K02)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
diff --git a/src/mame/drivers/tandy1t.cpp b/src/mame/drivers/tandy1t.cpp
index 5b2e4e95f50..eb07e4b6e65 100644
--- a/src/mame/drivers/tandy1t.cpp
+++ b/src/mame/drivers/tandy1t.cpp
@@ -573,7 +573,7 @@ void tandy1000_state::tandy1000_io(address_map &map)
map(0x0000, 0x00ff).m(m_mb, FUNC(t1000_mb_device::map));
map(0x0060, 0x0063).rw(FUNC(tandy1000_state::tandy1000_pio_r), FUNC(tandy1000_state::tandy1000_pio_w));
map(0x00a0, 0x00a0).w(FUNC(tandy1000_state::nmi_vram_bank_w));
- map(0x00c0, 0x00c0).w("sn76496", FUNC(ncr8496_device::write));
+ map(0x00c0, 0x00c0).w("sn76496", FUNC(ncr8496_device::command_w));
map(0x0200, 0x0207).rw("pc_joy", FUNC(pc_joy_device::joy_port_r), FUNC(pc_joy_device::joy_port_w));
map(0x0378, 0x037f).rw(FUNC(tandy1000_state::pc_t1t_p37x_r), FUNC(tandy1000_state::pc_t1t_p37x_w));
map(0x03d0, 0x03df).r(m_video, FUNC(pcvideo_t1000_device::read)).w(m_video, FUNC(pcvideo_t1000_device::write));
@@ -600,7 +600,7 @@ void tandy1000_state::tandy1000_16_io(address_map &map)
map(0x0060, 0x0063).rw(FUNC(tandy1000_state::tandy1000_pio_r), FUNC(tandy1000_state::tandy1000_pio_w));
map(0x0065, 0x0065).w(FUNC(tandy1000_state::devctrl_w));
map(0x00a0, 0x00a0).r(FUNC(tandy1000_state::unk_r));
- map(0x00c0, 0x00c1).w("sn76496", FUNC(ncr8496_device::write));
+ map(0x00c0, 0x00c1).w("sn76496", FUNC(ncr8496_device::command_w));
map(0x0200, 0x0207).rw("pc_joy", FUNC(pc_joy_device::joy_port_r), FUNC(pc_joy_device::joy_port_w));
map(0x0378, 0x037f).rw(FUNC(tandy1000_state::pc_t1t_p37x_r), FUNC(tandy1000_state::pc_t1t_p37x_w));
map(0x03d0, 0x03df).r(m_video, FUNC(pcvideo_t1000_device::read)).w(m_video, FUNC(pcvideo_t1000_device::write));
@@ -658,84 +658,78 @@ static GFXDECODE_START( gfx_t1000 )
GFXDECODE_ENTRY( "gfx1", 0x0000, t1000_charlayout, 3, 1 )
GFXDECODE_END
-void tandy1000_state::tandy1000_common(machine_config &config)
-{
- T1000_MOTHERBOARD(config, m_mb, 0);
- m_mb->set_cputag("maincpu");
+MACHINE_CONFIG_START(tandy1000_state::tandy1000_common)
+ MCFG_DEVICE_ADD("mb", T1000_MOTHERBOARD, 0)
+ downcast<t1000_mb_device &>(*device).set_cputag("maincpu");
/* video hardware */
- PCVIDEO_T1000(config, m_video, 0);
- m_video->set_screen("pcvideo_t1000:screen");
- GFXDECODE(config, "gfxdecode", "pcvideo_t1000:palette", gfx_t1000);
+ MCFG_DEVICE_ADD("pcvideo_t1000", PCVIDEO_T1000, 0)
+ MCFG_VIDEO_SET_SCREEN("pcvideo_t1000:screen")
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "pcvideo_t1000:palette", gfx_t1000)
/* sound hardware */
- NCR8496(config, "sn76496", XTAL(14'318'181)/4).add_route(ALL_OUTPUTS, "mb:mono", 0.80);
+ MCFG_DEVICE_ADD("sn76496", NCR8496, XTAL(14'318'181)/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mb:mono", 0.80)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- isa8_slot_device &isa_fdc(ISA8_SLOT(config, "isa_fdc", 0, "mb:isa", pc_isa8_cards, "fdc_xt", true)); // FIXME: determine ISA bus clock
- isa_fdc.set_option_machine_config("fdc_xt", cfg_fdc_35);
+ MCFG_DEVICE_ADD("isa_fdc", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", true) // FIXME: determine ISA bus clock
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc_xt", cfg_fdc_35)
- ISA8_SLOT(config, "isa_lpt", 0, "mb:isa", pc_isa8_cards, "lpt", true);
- ISA8_SLOT(config, "isa_com", 0, "mb:isa", pc_isa8_cards, "com", true);
+ MCFG_DEVICE_ADD("isa_lpt", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "lpt", true)
+ MCFG_DEVICE_ADD("isa_com", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", true)
PC_JOY(config, "pc_joy");
/* internal ram */
RAM(config, m_ram).set_default_size("640K");
- SOFTWARE_LIST(config, "disk_list").set_original("t1000");
- SOFTWARE_LIST(config, "pc_list").set_compatible("ibm5150");
-}
+ MCFG_SOFTWARE_LIST_ADD("disk_list","t1000")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("pc_list","ibm5150")
+MACHINE_CONFIG_END
-void tandy1000_state::tandy1000_90key(machine_config &config)
-{
- PC_KEYB(config, m_keyboard);
- m_keyboard->keypress().set("mb:pic8259", FUNC(pic8259_device::ir1_w));
-}
+MACHINE_CONFIG_START(tandy1000_state::tandy1000_90key)
+ MCFG_PC_KEYB_ADD("pc_keyboard", WRITELINE("mb:pic8259", pic8259_device, ir1_w))
+MACHINE_CONFIG_END
-void tandy1000_state::tandy1000_101key(machine_config &config)
-{
- AT_KEYB(config, m_keyboard, pc_keyboard_device::KEYBOARD_TYPE::AT, 1);
- m_keyboard->keypress().set("mb:pic8259", FUNC(pic8259_device::ir1_w));
-}
+MACHINE_CONFIG_START(tandy1000_state::tandy1000_101key)
+ MCFG_AT_KEYB_ADD("pc_keyboard", 1, WRITELINE("mb:pic8259", pic8259_device, ir1_w))
+MACHINE_CONFIG_END
-void tandy1000_state::t1000hx(machine_config &config)
-{
- I8088(config, m_maincpu, 8000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &tandy1000_state::tandy1000_map);
- m_maincpu->set_addrmap(AS_IO, &tandy1000_state::tandy1000_io);
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(tandy1000_state::t1000hx)
+ MCFG_DEVICE_ADD("maincpu", I8088, 8000000)
+ MCFG_DEVICE_PROGRAM_MAP(tandy1000_map)
+ MCFG_DEVICE_IO_MAP(tandy1000_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
tandy1000_common(config);
tandy1000_90key(config);
// plus cards are isa with a nonstandard conntector
- ISA8_SLOT(config, "plus1", 0, "mb:isa", pc_isa8_cards, nullptr, false); // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("plus1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false) // FIXME: determine ISA bus clock
m_ram->set_extra_options("256K, 384K");
-}
+MACHINE_CONFIG_END
-void tandy1000_state::t1000sx(machine_config &config)
-{
+MACHINE_CONFIG_START(tandy1000_state::t1000sx)
t1000hx(config);
- subdevice<isa8_slot_device>("isa_fdc")->set_option_machine_config("fdc_xt", cfg_fdc_525);
+ MCFG_DEVICE_MODIFY("isa_fdc")
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc_xt", cfg_fdc_525)
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, nullptr, false); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false) // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
m_ram->set_extra_options("384K");
-}
+MACHINE_CONFIG_END
-void tandy1000_state::t1000rl(machine_config &config)
-{
- I8086(config, m_maincpu, XTAL(28'636'363) / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &tandy1000_state::tandy1000_bank_map);
- m_maincpu->set_addrmap(AS_IO, &tandy1000_state::tandy1000_bank_io);
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(tandy1000_state::t1000rl)
+ MCFG_DEVICE_ADD("maincpu", I8086, XTAL(28'636'363) / 3)
+ MCFG_DEVICE_PROGRAM_MAP(tandy1000_bank_map)
+ MCFG_DEVICE_IO_MAP(tandy1000_bank_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
tandy1000_common(config);
@@ -746,45 +740,44 @@ void tandy1000_state::t1000rl(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(tandy1000_state,tandy1000rl)
m_ram->set_extra_options("384K");
-}
+MACHINE_CONFIG_END
-void tandy1000_state::t1000sl2(machine_config &config)
-{
+MACHINE_CONFIG_START(tandy1000_state::t1000sl2)
t1000rl(config);
- m_maincpu->set_clock(XTAL(24'000'000) / 3);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_CLOCK( XTAL(24'000'000) / 3 )
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, nullptr, false); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, nullptr, false);
-}
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false) // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+MACHINE_CONFIG_END
-void tandy1000_state::t1000tl(machine_config &config)
-{
- I80286(config, m_maincpu, XTAL(28'636'363) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &tandy1000_state::tandy1000_286_map);
- m_maincpu->set_addrmap(AS_IO, &tandy1000_state::tandy1000_16_io);
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(tandy1000_state::t1000tl)
+ MCFG_DEVICE_ADD("maincpu", I80286, XTAL(28'636'363) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(tandy1000_286_map)
+ MCFG_DEVICE_IO_MAP(tandy1000_16_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
tandy1000_common(config);
tandy1000_101key(config);
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, nullptr, false); // FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa5", 0, "mb:isa", pc_isa8_cards, nullptr, false);
-}
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false) // FIXME: determine ISA bus clock
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+MACHINE_CONFIG_END
-void tandy1000_state::t1000tx(machine_config &config)
-{
+MACHINE_CONFIG_START(tandy1000_state::t1000tx)
t1000tl(config);
- m_maincpu->set_addrmap(AS_IO, &tandy1000_state::tandy1000tx_io);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_IO_MAP(tandy1000tx_io)
- config.device_remove("pc_keyboard");
+ MCFG_DEVICE_REMOVE("pc_keyboard")
tandy1000_90key(config);
-}
+MACHINE_CONFIG_END
#ifdef UNUSED_DEFINITION
ROM_START( t1000 )
diff --git a/src/mame/drivers/tandy2k.cpp b/src/mame/drivers/tandy2k.cpp
index 0604b1f950e..8da3bf03738 100644
--- a/src/mame/drivers/tandy2k.cpp
+++ b/src/mame/drivers/tandy2k.cpp
@@ -14,11 +14,11 @@
- HDL is also connected to WP/TS input where TS is used to detect motor status
- 3 second motor off delay timer
- video (video RAM is at memory top - 0x1400, i.e. 0x1ec00)
- - keyboard ROM, same as earlier tandy 1000
+ - keyboard ROM
+ - hires graphics board
- WD1010
- hard disk
- - clock/mouse 8042 mcu ROM, probably same as tandy 1000 isa clock/mouse adapter
- - sab3019 rtc
+ - mouse
*/
@@ -213,80 +213,33 @@ READ8_MEMBER( tandy2k_state::kbint_clr_r )
m_kb->busy_w(1);
m_pic1->ir0_w(CLEAR_LINE);
- return m_pc_keyboard->read(space, 0);
+ m_pc_keyboard->read(space, 0);
}
return 0xff;
}
-READ8_MEMBER( tandy2k_state::clkmouse_r )
+READ16_MEMBER( tandy2k_state::vpac_r )
{
- uint8_t ret = 0;
- switch (offset)
+ if (ACCESSING_BITS_0_7)
{
- case 0:
- if (!m_clkmouse_cnt)
- return 0;
- ret = m_clkmouse_cmd[--m_clkmouse_cnt];
- m_pic1->ir2_w(0);
- if (m_clkmouse_cnt > 0)
- m_mcu_delay->adjust(attotime::from_msec(1));
- break;
- case 2:
- ret = m_buttons->read();
- if (m_clkmouse_cnt)
- ret |= 1;
- break;
+ return m_vpac->read(space, offset);
+ }
+ else
+ {
+ return 0xff00;
}
- return ret;
}
-WRITE8_MEMBER( tandy2k_state::clkmouse_w )
+WRITE16_MEMBER( tandy2k_state::vpac_w )
{
- switch (offset)
+ if (ACCESSING_BITS_0_7)
{
- case 0:
- m_pic1->ir2_w(0);
- if (m_clkmouse_cnt < 8)
- m_clkmouse_cmd[m_clkmouse_cnt++] = data;
- break;
- case 1:
- break;
- case 2:
- if (m_clkmouse_cnt < 8)
- m_clkmouse_cmd[m_clkmouse_cnt++] = data;
- switch (m_clkmouse_cmd[0])
- {
- case 0x01: //set time
- break;
- case 0x02: //read time
- break;
- case 0x08:
- if(m_clkmouse_cmd[1] > 0)
- m_clkmouse_irq |= MO_IRQ;
- else
- m_clkmouse_irq &= ~MO_IRQ;
- if(m_clkmouse_cmd[2] > 0)
- m_clkmouse_irq |= BT_IRQ;
- else
- m_clkmouse_irq &= ~BT_IRQ;
- break;
- case 0x20:
- if(m_clkmouse_cmd[1] > 0)
- m_mouse_timer->adjust(attotime::from_hz(40), 0, attotime::from_hz(40));
- else
- m_mouse_timer->adjust(attotime::never);
- break;
- }
- m_clkmouse_cnt = 0;
- break;
- case 3:
- m_pic1->ir2_w(0);
- m_clkmouse_cnt = 0;
- m_clkmouse_irq = 0;
- m_mouse_x = m_x_axis->read();
- m_mouse_y = m_y_axis->read();
- break;
+ m_vpac->write(space, offset, data & 0xff);
+ }
+ else
+ {
+ addr_ctrl_w(space, offset, data >> 8);
}
}
@@ -353,16 +306,11 @@ WRITE8_MEMBER( tandy2k_state::addr_ctrl_w )
// Memory Maps
-void tandy2k_state::vrambank_mem(address_map &map)
-{
- map(0x00000, 0x17fff).ram().share("hires_ram");
- map(0x18000, 0x1ffff).noprw();
-}
-
void tandy2k_state::tandy2k_mem(address_map &map)
{
map.unmap_value_high();
- map(0xe0000, 0xe7fff).rw(m_vrambank, FUNC(address_map_bank_device::read16), FUNC(address_map_bank_device::write16));
+// AM_RANGE(0x00000, 0xdffff) AM_RAM
+ map(0xe0000, 0xf7fff).ram().share("hires_ram");
map(0xf8000, 0xfbfff).rw(FUNC(tandy2k_state::char_ram_r), FUNC(tandy2k_state::char_ram_w)).umask16(0x00ff);
map(0xfc000, 0xfdfff).mirror(0x2000).rom().region(I80186_TAG, 0);
}
@@ -380,13 +328,13 @@ void tandy2k_state::tandy2k_io(address_map &map)
map(0x00052, 0x00052).mirror(0x8).r(FUNC(tandy2k_state::kbint_clr_r));
map(0x00060, 0x00063).mirror(0xc).rw(m_pic0, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
map(0x00070, 0x00073).mirror(0xc).rw(m_pic1, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
- map(0x00080, 0x00080).mirror(0xe).rw(m_fdc, FUNC(i8272a_device::dma_r), FUNC(i8272a_device::dma_w));
- map(0x00100, 0x0017f).rw(m_vpac, FUNC(crt9007_device::read), FUNC(crt9007_device::write)).umask16(0x00ff);
- map(0x00100, 0x0017f).w(FUNC(tandy2k_state::addr_ctrl_w)).umask16(0xff00);
- map(0x00180, 0x00180).r(FUNC(tandy2k_state::hires_status_r)).umask16(0x00ff);
- map(0x00180, 0x0018f).mirror(0x10).w(m_colpal, FUNC(palette_device::write8)).umask16(0x00ff).share("colpal");
- map(0x001a0, 0x001a0).w(FUNC(tandy2k_state::hires_plane_w)).umask16(0x00ff);
- map(0x002fc, 0x002ff).rw(FUNC(tandy2k_state::clkmouse_r), FUNC(tandy2k_state::clkmouse_w));
+ map(0x00080, 0x00080).mirror(0xe).rw(m_fdc, FUNC(i8272a_device::mdma_r), FUNC(i8272a_device::mdma_w));
+// AM_RANGE(0x00100, 0x0017f) AM_DEVREADWRITE8(CRT9007_TAG, crt9007_t, read, write, 0x00ff) AM_WRITE8(addr_ctrl_w, 0xff00)
+ map(0x00100, 0x0017f).rw(FUNC(tandy2k_state::vpac_r), FUNC(tandy2k_state::vpac_w));
+// AM_RANGE(0x00180, 0x00180) AM_READ8(hires_status_r, 0x00ff)
+// AM_RANGE(0x00180, 0x001bf) AM_WRITE(hires_palette_w)
+// AM_RANGE(0x001a0, 0x001a0) AM_READ8(hires_plane_w, 0x00ff)
+// AM_RANGE(0x0ff00, 0x0ffff) AM_READWRITE(i186_internal_port_r, i186_internal_port_w)
}
void tandy2k_state::tandy2k_hd_io(address_map &map)
@@ -407,85 +355,13 @@ void tandy2k_state::vpac_mem(address_map &map)
static INPUT_PORTS_START( tandy2k )
// defined in machine/tandy2kb.c
PORT_INCLUDE(pc_keyboard)
-
- PORT_MODIFY("pc_keyboard_2")
- PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Cursor Up") PORT_CODE(KEYCODE_UP) /* 29 A9 */
- PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Cursor Left") PORT_CODE(KEYCODE_LEFT) /* 2B AB */
-
- PORT_MODIFY("pc_keyboard_3")
- PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Caps") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE /* Caps Lock 3A BA */
-
- PORT_MODIFY("pc_keyboard_4")
- PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("NumLock") PORT_CODE(KEYCODE_NUMLOCK) PORT_TOGGLE /* Num Lock 45 C5 */
- /* Hold corresponds to Scroll Lock, but pauses the system when pressed - leaving unmapped by default to avoid conflicting with the UI Toggle key */
- PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Hold") /* 46 C6 */
- PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("KP 7 \\") PORT_CODE(KEYCODE_7_PAD) /* Keypad 7 47 C7 */
- PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("KP 8 ~") PORT_CODE(KEYCODE_8_PAD) /* Keypad 8 48 C8 */
- PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("KP 9 (PgUp)") PORT_CODE(KEYCODE_9_PAD) /* Keypad 9 (PgUp) 49 C9 */
- PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Cursor Down") PORT_CODE(KEYCODE_DOWN) /* 4A CA */
- PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("KP 4 |") PORT_CODE(KEYCODE_4_PAD) /* Keypad 4 4B CB */
- PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("KP 6") PORT_CODE(KEYCODE_6_PAD) /* Keypad 6 4D CD */
- PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Cursor Right") PORT_CODE(KEYCODE_RIGHT) /* 4E CE */
- PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("KP 1 (End)") PORT_CODE(KEYCODE_1_PAD) /* Keypad 1 (End) 4F CF */
-
- PORT_MODIFY("pc_keyboard_5")
- PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("KP 2 `") PORT_CODE(KEYCODE_2_PAD) /* Keypad 2 50 D0 */
- PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("KP 3 (PgDn)") PORT_CODE(KEYCODE_3_PAD) /* Keypad 3 (PgDn) 51 D1 */
- PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("KP 0") PORT_CODE(KEYCODE_0_PAD) /* Keypad 0 52 D2 */
- PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("KP - (Del)") PORT_CODE(KEYCODE_MINUS_PAD) /* - Delete 53 D3 */
- PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Break") PORT_CODE(KEYCODE_STOP) /* Break 54 D4 */
- PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("+ Insert") PORT_CODE(KEYCODE_PLUS_PAD) /* + Insert 55 D5 */
- PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_DEL_PAD) /* . 56 D6 */
- PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER_PAD) /* Enter 57 D7 */
- PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Home") PORT_CODE(KEYCODE_HOME) /* HOME 58 D8 */
- PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F11") PORT_CODE(KEYCODE_F11) /* F11 59 D9 */
- PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F12") PORT_CODE(KEYCODE_F12) /* F12 5a Da */
-
- PORT_START("MOUSEBTN")
- PORT_BIT( 0xff8f, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CODE(MOUSECODE_BUTTON1) PORT_CHANGED_MEMBER(DEVICE_SELF, tandy2k_state, input_changed, nullptr)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CODE(MOUSECODE_BUTTON2) PORT_CHANGED_MEMBER(DEVICE_SELF, tandy2k_state, input_changed, nullptr)
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED ) /* this would be button three but AFAIK no tandy mouse ever had one */
-
- PORT_START("MOUSEX")
- PORT_BIT( 0xffff, 0x00, IPT_MOUSE_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(0) PORT_CHANGED_MEMBER(DEVICE_SELF, tandy2k_state, input_changed, nullptr)
-
- PORT_START("MOUSEY")
- PORT_BIT( 0xffff, 0x00, IPT_MOUSE_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(0) PORT_CHANGED_MEMBER(DEVICE_SELF, tandy2k_state, input_changed, nullptr)
INPUT_PORTS_END
-INPUT_CHANGED_MEMBER(tandy2k_state::input_changed)
-{
- if (m_clkmouse_cnt || !m_clkmouse_irq)
- return;
- if ((m_clkmouse_irq & BT_IRQ) && (field.name()[5] == 'B'))
- {
- m_clkmouse_cnt = 1;
- m_clkmouse_cmd[0] = 'B';
- }
- else if ((m_clkmouse_irq & MO_IRQ))
- {
- uint16_t x = m_x_axis->read();
- uint16_t y = m_y_axis->read();
- uint16_t dx = x - m_mouse_x;
- uint16_t dy = y - m_mouse_y;
- m_mouse_x = x;
- m_mouse_y = y;
- m_clkmouse_cnt = 5;
- m_clkmouse_cmd[4] = 'M';
- m_clkmouse_cmd[3] = dx & 0xff;
- m_clkmouse_cmd[2] = dx >> 8;
- m_clkmouse_cmd[1] = dy & 0xff;
- m_clkmouse_cmd[0] = dy >> 8;
- }
- m_pic1->ir2_w(1);
-}
-
// Video
uint32_t tandy2k_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- const pen_t *cpen = m_colpal->pens();
+ const pen_t *pen = m_palette->pens();
address_space &program = m_maincpu->space(AS_PROGRAM);
for (int y = 0; y < 400; y++)
@@ -494,32 +370,18 @@ uint32_t tandy2k_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma
for (int sx = 0; sx < 80; sx++)
{
- if (m_hires_en & 2)
- {
- uint8_t a = ((uint8_t *)m_hires_ram.target())[(y * 80) + sx];
- uint8_t b = ((uint8_t *)m_hires_ram.target())[(y * 80) + sx + 0x8000];
- uint8_t c = ((uint8_t *)m_hires_ram.target())[(y * 80) + sx + 0x8000 * 2];
- for (int x = 0; x < 8; x++)
- {
- int color = BIT(a, x) | (BIT(b, x) << 1) | (BIT(c, x) << 2);
- bitmap.pix32(y, (sx * 8) + (7 - x)) = cpen[color];
- }
- }
- else
+ offs_t addr = m_ram->size() - 0x1400 + (((y / 16) * 80) + sx) * 2;
+ uint16_t vidla = program.read_word(addr);
+ uint8_t attr = vidla >> 8;
+ uint8_t data = m_char_ram[((vidla & 0xff) << 4) | cgra];
+ if(attr & 0x80)
+ data = ~data;
+
+ for (int x = 0; x < 8; x++)
{
- offs_t addr = m_ram->size() - 0x1400 + (((y / 16) * 80) + sx) * 2;
- uint16_t vidla = program.read_word(addr);
- uint8_t attr = vidla >> 8;
- uint8_t data = m_char_ram[((vidla & 0xff) << 4) | cgra];
- if(attr & 0x80)
- data = ~data;
-
- for (int x = 0; x < 8; x++)
- {
- int color = 4 | (BIT(attr, 6) << 1) | BIT(data, 7);
- bitmap.pix32(y, (sx * 8) + x) = cpen[color];
- data <<= 1;
- }
+ int color = BIT(data, 7);
+ bitmap.pix32(y, (sx * 8) + x) = pen[color];
+ data <<= 1;
}
}
}
@@ -567,23 +429,6 @@ WRITE_LINE_MEMBER( tandy2k_state::vpac_sld_w )
m_vac->sld_w(state);
}
-WRITE8_MEMBER( tandy2k_state::hires_plane_w )
-{
- int bank = 3;
- if (((data & 1) + ((data >> 1) & 1) + ((data >> 2) & 1)) == 1)
- bank = (data & 1) ? 0 : (data & 2) ? 1 : (data & 4) ? 2 : 0;
- m_vrambank->set_bank(bank);
- m_hires_en = (data >> 4) & 3;
-}
-
-// bit 0 - 0 = hires board installed
-// bit 1 - 0 = 1 plane, 1 = 3 planes
-// bit 2-4 - board rev
-READ8_MEMBER( tandy2k_state::hires_status_r )
-{
- return 2;
-}
-
WRITE8_MEMBER( tandy2k_state::vidla_w )
{
m_vidla = data;
@@ -618,7 +463,7 @@ WRITE8_MEMBER( tandy2k_state::drb_attr_w )
CRT9021_DRAW_CHARACTER_MEMBER( tandy2k_state::vac_draw_character )
{
- const pen_t *pen = m_colpal->pens();
+ const pen_t *pen = m_palette->pens();
for (int i = 0; i < 8; i++)
{
@@ -899,8 +744,6 @@ void tandy2k_state::machine_start()
program.install_ram(0x00000, ram_size - 1, ram);
m_char_ram.allocate(0x1000);
- m_mouse_timer = timer_alloc(MOUS_TIMER);
- m_mcu_delay = timer_alloc(MCU_DELAY);
// register for state saving
save_item(NAME(m_dma_mux));
@@ -916,19 +759,6 @@ void tandy2k_state::machine_start()
save_item(NAME(m_clkcnt));
save_item(NAME(m_outspkr));
save_item(NAME(m_spkrdata));
- save_item(NAME(m_clkmouse_cmd));
- save_item(NAME(m_clkmouse_cnt));
- save_item(NAME(m_clkmouse_irq));
- save_item(NAME(m_mouse_x));
- save_item(NAME(m_mouse_y));
- save_item(NAME(m_hires_en));
-}
-
-void tandy2k_state::machine_reset()
-{
- m_hires_en = 0;
- m_clkmouse_cnt = 0;
- m_clkmouse_irq = 0;
}
void tandy2k_state::device_reset_after_children()
@@ -936,39 +766,6 @@ void tandy2k_state::device_reset_after_children()
m_pc_keyboard->enable(0);
}
-void tandy2k_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
-{
- switch (id)
- {
- case MOUS_TIMER:
- {
- uint16_t x = m_x_axis->read();
- uint16_t y = m_y_axis->read();
- uint16_t dx = x - m_mouse_x;
- uint16_t dy = y - m_mouse_y;
- m_mouse_x = x;
- m_mouse_y = y;
- m_clkmouse_cnt = 5;
- m_clkmouse_cmd[4] = 'A';
- m_clkmouse_cmd[3] = dx & 0xff;
- m_clkmouse_cmd[2] = dx >> 8;
- m_clkmouse_cmd[1] = dy & 0xff;
- m_clkmouse_cmd[0] = dy >> 8;
- m_pic1->ir2_w(1);
- break;
- }
- case MCU_DELAY:
- m_pic1->ir2_w(1);
- break;
- }
-}
-
-rgb_t tandy2k_state::IRGB(uint32_t raw)
-{
- uint8_t i = (raw >> 3) & 1;
- return rgb_t(pal2bit(((raw & 4) >> 1) | i), pal2bit((raw & 2) | i), pal2bit(((raw & 1) << 1) | i));
-}
-
// Machine Driver
void tandy2k_state::tandy2k(machine_config &config)
@@ -981,6 +778,7 @@ void tandy2k_state::tandy2k(machine_config &config)
// video hardware
screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
+ screen.set_color(rgb_t::green());
screen.set_refresh_hz(50);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
screen.set_size(640, 400);
@@ -988,7 +786,7 @@ void tandy2k_state::tandy2k(machine_config &config)
//screen.set_screen_update(CRT9021B_TAG, FUNC(crt9021_device::screen_update));
screen.set_screen_update(FUNC(tandy2k_state::screen_update));
- PALETTE(config, m_colpal).set_format(1, &tandy2k_state::IRGB, 8);
+ PALETTE(config, m_palette, palette_device::MONOCHROME);
crt9007_device &vpac(CRT9007(config, CRT9007_TAG, 16_MHz_XTAL * 28 / 20 / 8));
vpac.set_addrmap(0, &tandy2k_state::vpac_mem);
@@ -1015,8 +813,6 @@ void tandy2k_state::tandy2k(machine_config &config)
CRT9021(config, m_vac, 16_MHz_XTAL * 28 / 20);
m_vac->set_screen(SCREEN_TAG);
- ADDRESS_MAP_BANK(config, m_vrambank).set_map(&tandy2k_state::vrambank_mem).set_options(ENDIANNESS_LITTLE, 16, 17, 0x8000);
-
TIMER(config, "vidldsh").configure_generic(FUNC(tandy2k_state::vidldsh_tick));
// sound hardware
diff --git a/src/mame/drivers/tank8.cpp b/src/mame/drivers/tank8.cpp
index 63a6f3da119..f49ed135a26 100644
--- a/src/mame/drivers/tank8.cpp
+++ b/src/mame/drivers/tank8.cpp
@@ -328,31 +328,33 @@ static GFXDECODE_START( gfx_tank8 )
GFXDECODE_END
-void tank8_state::tank8(machine_config &config)
-{
+MACHINE_CONFIG_START(tank8_state::tank8)
+
/* basic machine hardware */
- M6800(config, m_maincpu, 11055000 / 10); /* ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &tank8_state::tank8_cpu_map);
+ MCFG_DEVICE_ADD("maincpu", M6800, 11055000 / 10) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(tank8_cpu_map)
+
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(30 * 1000000 / 15681));
- m_screen->set_size(512, 524);
- m_screen->set_visarea(16, 495, 0, 463);
- m_screen->set_screen_update(FUNC(tank8_state::screen_update));
- m_screen->screen_vblank().set(FUNC(tank8_state::screen_vblank));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tank8);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(30 * 1000000 / 15681))
+ MCFG_SCREEN_SIZE(512, 524)
+ MCFG_SCREEN_VISIBLE_AREA(16, 495, 0, 463)
+ MCFG_SCREEN_UPDATE_DRIVER(tank8_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, tank8_state, screen_vblank))
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_tank8)
PALETTE(config, m_palette, FUNC(tank8_state::tank8_palette), 20, 10);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- DISCRETE(config, m_discrete, tank8_discrete).add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, tank8_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
ROM_START( tank8a )
diff --git a/src/mame/drivers/tankbust.cpp b/src/mame/drivers/tankbust.cpp
index bf7cef07fae..3c4c097ea47 100644
--- a/src/mame/drivers/tankbust.cpp
+++ b/src/mame/drivers/tankbust.cpp
@@ -330,30 +330,30 @@ INTERRUPT_GEN_MEMBER(tankbust_state::vblank_irq)
device.execute().set_input_line(0, HOLD_LINE);
}
-void tankbust_state::tankbust(machine_config &config)
-{
+MACHINE_CONFIG_START(tankbust_state::tankbust)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(14'318'181)/2); /* Verified on PCB */
- m_maincpu->set_addrmap(AS_PROGRAM, &tankbust_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(tankbust_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(14'318'181)/2) /* Verified on PCB */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tankbust_state, vblank_irq)
- Z80(config, m_subcpu, XTAL(14'318'181)/4); /* Verified on PCB */
-// Z80(config, m_subcpu, XTAL(14'318'181)/3); /* Accurate to audio recording, but apparently incorrect clock */
- m_subcpu->set_addrmap(AS_PROGRAM, &tankbust_state::map_cpu2);
- m_subcpu->set_addrmap(AS_IO, &tankbust_state::port_map_cpu2);
+ MCFG_DEVICE_ADD("sub", Z80, XTAL(14'318'181)/4) /* Verified on PCB */
+// MCFG_DEVICE_ADD("sub", Z80, XTAL(14'318'181)/3) /* Accurate to audio recording, but apparently incorrect clock */
+ MCFG_DEVICE_PROGRAM_MAP(map_cpu2)
+ MCFG_DEVICE_IO_MAP(port_map_cpu2)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size( 64*8, 32*8);
- screen.set_visarea( 16*8, 56*8-1, 1*8, 31*8-1);
-// screen.set_visarea( 0*8, 64*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(tankbust_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE ( 64*8, 32*8 )
+ MCFG_SCREEN_VISIBLE_AREA ( 16*8, 56*8-1, 1*8, 31*8-1 )
+// MCFG_SCREEN_VISIBLE_AREA ( 0*8, 64*8-1, 1*8, 31*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(tankbust_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_tankbust);
PALETTE(config, m_palette, FUNC(tankbust_state::tankbust_palette), 128);
@@ -367,7 +367,7 @@ void tankbust_state::tankbust(machine_config &config)
ay1.add_route(ALL_OUTPUTS, "mono", 0.10);
AY8910(config, "ay2", XTAL(14'318'181)/16).add_route(ALL_OUTPUTS, "mono", 0.10); /* Verified on PCB */
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/tapatune.cpp b/src/mame/drivers/tapatune.cpp
index 2b3a9414c2f..fdf098e40a9 100644
--- a/src/mame/drivers/tapatune.cpp
+++ b/src/mame/drivers/tapatune.cpp
@@ -522,35 +522,32 @@ INPUT_PORTS_END
*
*************************************/
-void tapatune_state::tapatune_base(machine_config &config)
-{
+MACHINE_CONFIG_START(tapatune_state::tapatune_base)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(24'000'000) / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &tapatune_state::maincpu_map);
- m_maincpu->set_addrmap(AS_IO, &tapatune_state::maincpu_io_map);
- m_maincpu->set_periodic_int(FUNC(tapatune_state::irq0_line_assert), attotime::from_ticks(4 * 4096, XTAL(24'000'000) / 4));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(24'000'000) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(maincpu_map)
+ MCFG_DEVICE_IO_MAP(maincpu_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(tapatune_state, irq0_line_assert, XTAL(24'000'000) / 4 / 4 / 4096)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TICKET_DISPENSER(config, "ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW);
+ MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- BSMT2000(config, m_bsmt, XTAL(24'000'000));
- m_bsmt->add_route(0, "lspeaker", 1.0);
- m_bsmt->add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("bsmt", BSMT2000, XTAL(24'000'000))
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
-void tapatune_state::tapatune(machine_config &config)
-{
+MACHINE_CONFIG_START(tapatune_state::tapatune)
tapatune_base(config);
+ MCFG_DEVICE_ADD("videocpu", M68000, XTAL(24'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(video_map)
- M68000(config, m_videocpu, XTAL(24'000'000) / 2);
- m_videocpu->set_addrmap(AS_PROGRAM, &tapatune_state::video_map);
-
- config.m_perfect_cpu_quantum = subtag("videocpu");
+ MCFG_QUANTUM_PERFECT_CPU("videocpu")
h46505_device &crtc(H46505(config, "crtc", XTAL(24'000'000) / 16));
crtc.set_screen("screen");
@@ -561,10 +558,10 @@ void tapatune_state::tapatune(machine_config &config)
crtc.out_vsync_callback().set(FUNC(tapatune_state::crtc_vsync));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(24'000'000) / 16 * 5, 500, 0, 320, 250, 0, 240);
- screen.set_screen_update("crtc", FUNC(h46505_device::screen_update));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(24'000'000) / 16 * 5, 500, 0, 320, 250, 0, 240)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", h46505_device, screen_update)
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/targeth.cpp b/src/mame/drivers/targeth.cpp
index 3afa4def461..2460c289cd7 100644
--- a/src/mame/drivers/targeth.cpp
+++ b/src/mame/drivers/targeth.cpp
@@ -268,28 +268,28 @@ static INPUT_PORTS_START( targeth )
INPUT_PORTS_END
-void targeth_state::targeth(machine_config &config)
-{
+MACHINE_CONFIG_START(targeth_state::targeth)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000)/2); /* 12 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &targeth_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(targeth_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) /* 12 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", targeth_state, irq2_line_hold)
- gaelco_ds5002fp_device &ds5002fp(GAELCO_DS5002FP(config, "gaelco_ds5002fp", XTAL(24'000'000) / 2));
- ds5002fp.set_addrmap(0, &targeth_state::mcu_hostmem_map);
+ MCFG_DEVICE_ADD("gaelco_ds5002fp", GAELCO_DS5002FP, XTAL(24'000'000) / 2)
+ MCFG_DEVICE_ADDRESS_MAP(0, mcu_hostmem_map)
LS259(config, m_outlatch);
m_outlatch->q_out_cb<2>().set(FUNC(targeth_state::coin1_counter_w));
m_outlatch->q_out_cb<3>().set(FUNC(targeth_state::coin2_counter_w));
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- m_screen->set_size(64*16, 16*16);
- m_screen->set_visarea(3*8, 23*16-8-1, 16, 16*16-8-1);
- m_screen->set_screen_update(FUNC(targeth_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*16, 16*16)
+ MCFG_SCREEN_VISIBLE_AREA(3*8, 23*16-8-1, 16, 16*16-8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(targeth_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, "gfxdecode", m_palette, gfx_targeth);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 1024);
@@ -297,10 +297,10 @@ void targeth_state::targeth(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(1'000'000), okim6295_device::PIN7_HIGH)); // 1MHz resonator - pin 7 not verified
- oki.set_addrmap(0, &targeth_state::oki_map);
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(1'000'000), okim6295_device::PIN7_HIGH) // 1MHz resonator - pin 7 not verified
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( targeth )
ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
diff --git a/src/mame/drivers/tasman.cpp b/src/mame/drivers/tasman.cpp
index 3e8efe41fbd..9d43ffbc680 100644
--- a/src/mame/drivers/tasman.cpp
+++ b/src/mame/drivers/tasman.cpp
@@ -645,28 +645,27 @@ TIMER_DEVICE_CALLBACK_MEMBER(kongambl_state::kongambl_vblank)
}
-void kongambl_state::kongambl(machine_config &config)
-{
- M68EC020(config, m_maincpu, 25000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &kongambl_state::kongambl_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(kongambl_state::kongambl_vblank), "screen", 0, 1);
+MACHINE_CONFIG_START(kongambl_state::kongambl)
+ MCFG_DEVICE_ADD("maincpu", M68EC020, 25000000)
+ MCFG_DEVICE_PROGRAM_MAP(kongambl_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kongambl_state, kongambl_vblank, "screen", 0, 1)
- m68000_device &sndcpu(M68000(config, "sndcpu", 16000000));
- sndcpu.set_addrmap(AS_PROGRAM, &kongambl_state::kongamaud_map);
- sndcpu.set_periodic_int(FUNC(kongambl_state::irq2_line_hold), attotime::from_hz(480));
+ MCFG_DEVICE_ADD("sndcpu", M68000, 16000000)
+ MCFG_DEVICE_PROGRAM_MAP(kongamaud_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(kongambl_state, irq2_line_hold, 480)
K053252(config, m_k053252, 25000000);
m_k053252->set_offsets(0, 16); // TBD
m_k053252->int1_ack().set(FUNC(kongambl_state::vblank_irq_ack_w));
m_k053252->int2_ack().set(FUNC(kongambl_state::hblank_irq_ack_w));
- m_k053252->set_screen(m_screen);
+ m_k053252->set_screen("screen");
EEPROM_93C46_16BIT(config, "eeprom");
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(25000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223); // fake, they'll be changed by CCU anyway, TBD
- m_screen->set_screen_update(FUNC(kongambl_state::screen_update_kongambl));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(25000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223) // fake, they'll be changed by CCU anyway, TBD
+ MCFG_SCREEN_UPDATE_DRIVER(kongambl_state, screen_update_kongambl)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xRGB_888, 32768);
@@ -690,7 +689,7 @@ void kongambl_state::kongambl(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
-}
+MACHINE_CONFIG_END
ROM_START( kingtut )
diff --git a/src/mame/drivers/tatsumi.cpp b/src/mame/drivers/tatsumi.cpp
index 51aa5849fda..55d45161738 100644
--- a/src/mame/drivers/tatsumi.cpp
+++ b/src/mame/drivers/tatsumi.cpp
@@ -864,25 +864,25 @@ MACHINE_RESET_MEMBER(apache3_state,apache3)
}
-void apache3_state::apache3(machine_config &config)
-{
+MACHINE_CONFIG_START(apache3_state::apache3)
+
/* basic machine hardware */
- V30(config, m_maincpu, CLOCK_1 / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &apache3_state::apache3_v30_map);
- m_maincpu->set_vblank_int("screen", FUNC(tatsumi_state::v30_interrupt));
+ MCFG_DEVICE_ADD("maincpu", V30, CLOCK_1 / 2)
+ MCFG_DEVICE_PROGRAM_MAP(apache3_v30_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tatsumi_state, v30_interrupt)
- M68000(config, m_subcpu, CLOCK_2 / 4);
- m_subcpu->set_addrmap(AS_PROGRAM, &apache3_state::apache3_68000_map);
- m_subcpu->set_vblank_int("screen", FUNC(apache3_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("sub", M68000, CLOCK_2 / 4)
+ MCFG_DEVICE_PROGRAM_MAP(apache3_68000_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", apache3_state, irq4_line_hold)
- V20(config, m_audiocpu, CLOCK_1 / 2);
- m_audiocpu->set_addrmap(AS_PROGRAM, &apache3_state::apache3_v20_map);
+ MCFG_DEVICE_ADD("audiocpu", V20, CLOCK_1 / 2)
+ MCFG_DEVICE_PROGRAM_MAP(apache3_v20_map)
- Z80(config, m_subcpu2, CLOCK_2 / 8);
- m_subcpu2->set_addrmap(AS_PROGRAM, &apache3_state::apache3_z80_map);
- m_subcpu2->set_vblank_int("screen", FUNC(apache3_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("sub2", Z80, CLOCK_2 / 8)
+ MCFG_DEVICE_PROGRAM_MAP(apache3_z80_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", apache3_state, irq0_line_hold)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
MCFG_MACHINE_RESET_OVERRIDE(apache3_state, apache3)
@@ -898,9 +898,9 @@ void apache3_state::apache3(machine_config &config)
I8255(config, "ppi");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(CLOCK_2 / 8, 400, 0, 320, 272, 0, 240); // TODO: Hook up CRTC
- screen.set_screen_update(FUNC(apache3_state::screen_update_apache3));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(CLOCK_2 / 8, 400, 0, 320, 272, 0, 240) // TODO: Hook up CRTC
+ MCFG_SCREEN_UPDATE_DRIVER(apache3_state, screen_update_apache3)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_apache3);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024 + 4096); // 1024 real colours, and 4096 arranged as series of CLUTs
@@ -924,25 +924,25 @@ void apache3_state::apache3(machine_config &config)
m_ym2151->add_route(0, "lspeaker", 0.45);
m_ym2151->add_route(1, "rspeaker", 0.45);
- OKIM6295(config, m_oki, CLOCK_1 / 4 / 2, okim6295_device::PIN7_HIGH);
- m_oki->add_route(ALL_OUTPUTS, "lspeaker", 0.75);
- m_oki->add_route(ALL_OUTPUTS, "rspeaker", 0.75);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, CLOCK_1 / 4 / 2, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(roundup5_state::roundup5)
-void roundup5_state::roundup5(machine_config &config)
-{
/* basic machine hardware */
- V30(config, m_maincpu, CLOCK_1 / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &roundup5_state::roundup5_v30_map);
- m_maincpu->set_vblank_int("screen", FUNC(tatsumi_state::v30_interrupt));
+ MCFG_DEVICE_ADD("maincpu", V30, CLOCK_1 / 2)
+ MCFG_DEVICE_PROGRAM_MAP(roundup5_v30_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tatsumi_state, v30_interrupt)
- M68000(config, m_subcpu, CLOCK_2 / 4);
- m_subcpu->set_addrmap(AS_PROGRAM, &roundup5_state::roundup5_68000_map);
+ MCFG_DEVICE_ADD("sub", M68000, CLOCK_2 / 4)
+ MCFG_DEVICE_PROGRAM_MAP(roundup5_68000_map)
- Z80(config, m_audiocpu, CLOCK_1 / 4);
- m_audiocpu->set_addrmap(AS_PROGRAM, &roundup5_state::roundup5_z80_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, CLOCK_1 / 4)
+ MCFG_DEVICE_PROGRAM_MAP(roundup5_z80_map)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
i8255_device &ppi(I8255(config, "ppi"));
ppi.in_pa_callback().set_ioport("IN0");
@@ -950,9 +950,9 @@ void roundup5_state::roundup5(machine_config &config)
ppi.out_pc_callback().set(FUNC(roundup5_state::output_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(CLOCK_2 / 8, 400, 0, 320, 272, 0, 240); // TODO: Hook up CRTC
- screen.set_screen_update(FUNC(roundup5_state::screen_update_roundup5));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(CLOCK_2 / 8, 400, 0, 320, 272, 0, 240) // TODO: Hook up CRTC
+ MCFG_SCREEN_UPDATE_DRIVER(roundup5_state, screen_update_roundup5)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_roundup5);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024 + 4096); // 1024 real colours, and 4096 arranged as series of CLUTs
@@ -969,10 +969,10 @@ void roundup5_state::roundup5(machine_config &config)
m_ym2151->add_route(0, "lspeaker", 0.45);
m_ym2151->add_route(1, "rspeaker", 0.45);
- OKIM6295(config, m_oki, CLOCK_1 / 4 / 2, okim6295_device::PIN7_HIGH);
- m_oki->add_route(ALL_OUTPUTS, "lspeaker", 0.75);
- m_oki->add_route(ALL_OUTPUTS, "rspeaker", 0.75);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, CLOCK_1 / 4 / 2, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75)
+MACHINE_CONFIG_END
void cyclwarr_state::machine_reset()
{
@@ -1000,22 +1000,22 @@ void cyclwarr_state::machine_reset()
m_road_color_bank = m_prev_road_bank = 0;
}
-void cyclwarr_state::cyclwarr(machine_config &config)
-{
+MACHINE_CONFIG_START(cyclwarr_state::cyclwarr)
+
/* basic machine hardware */
- M68000(config, m_maincpu, CLOCK_2 / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &cyclwarr_state::master_map);
- m_maincpu->set_vblank_int("screen", FUNC(cyclwarr_state::irq5_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, CLOCK_2 / 4)
+ MCFG_DEVICE_PROGRAM_MAP(master_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cyclwarr_state, irq5_line_hold)
- M68000(config, m_subcpu, CLOCK_2 / 4);
- m_subcpu->set_addrmap(AS_PROGRAM, &cyclwarr_state::slave_map);
- m_subcpu->set_vblank_int("screen", FUNC(cyclwarr_state::irq5_line_hold));
+ MCFG_DEVICE_ADD("sub", M68000, CLOCK_2 / 4)
+ MCFG_DEVICE_PROGRAM_MAP(slave_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cyclwarr_state, irq5_line_hold)
- Z80(config, m_audiocpu, CLOCK_1 / 4);
- m_audiocpu->set_addrmap(AS_PROGRAM, &cyclwarr_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, CLOCK_1 / 4)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
// saner sync value (avoids crashing after crediting)
- config.m_minimum_quantum = attotime::from_hz(CLOCK_2 / 1024);
+ MCFG_QUANTUM_TIME(attotime::from_hz(CLOCK_2 / 1024))
cxd1095_device &io1(CXD1095(config, "io1", 0));
io1.in_portb_cb().set_ioport("SERVICE");
@@ -1031,9 +1031,9 @@ void cyclwarr_state::cyclwarr(machine_config &config)
io2.out_porte_cb().set(FUNC(cyclwarr_state::cyclwarr_control_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(CLOCK_2 / 8, 400, 0, 320, 272, 0, 240); // TODO: Hook up CRTC
- screen.set_screen_update(FUNC(cyclwarr_state::screen_update_cyclwarr));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(CLOCK_2 / 8, 400, 0, 320, 272, 0, 240) // TODO: Hook up CRTC
+ MCFG_SCREEN_UPDATE_DRIVER(cyclwarr_state, screen_update_cyclwarr)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cyclwarr);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 8192 + 8192);
@@ -1052,24 +1052,25 @@ void cyclwarr_state::cyclwarr(machine_config &config)
m_ym2151->add_route(0, "lspeaker", 0.45);
m_ym2151->add_route(1, "rspeaker", 0.45);
- OKIM6295(config, m_oki, CLOCK_1 / 8, okim6295_device::PIN7_HIGH);
- m_oki->add_route(ALL_OUTPUTS, "lspeaker", 0.75);
- m_oki->add_route(ALL_OUTPUTS, "rspeaker", 0.75);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, CLOCK_1 / 8, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75)
+MACHINE_CONFIG_END
-void cyclwarr_state::bigfight(machine_config &config)
-{
+MACHINE_CONFIG_START(cyclwarr_state::bigfight)
cyclwarr(config);
// TODO: it's same video HW, we don't know how/where video registers are mapped
-// subdevice<screen_device>("screen")->set_screen_update(FUNC(cyclwarr_state::screen_update_bigfight));
+// MCFG_SCREEN_MODIFY("screen")
+// MCFG_SCREEN_UPDATE_DRIVER(cyclwarr_state, screen_update_bigfight)
MCFG_VIDEO_START_OVERRIDE(cyclwarr_state, bigfight)
/* sound hardware */
// TODO: 2MHz was too fast. Can the clock be software controlled?
- m_oki->set_clock(CLOCK_1 / 8 / 2);
-}
+ MCFG_DEVICE_MODIFY("oki")
+ MCFG_DEVICE_CLOCK(CLOCK_1 / 8 / 2)
+MACHINE_CONFIG_END
/***************************************************************************/
diff --git a/src/mame/drivers/tavernie.cpp b/src/mame/drivers/tavernie.cpp
index ec03e61a2bc..47f4bb58f70 100644
--- a/src/mame/drivers/tavernie.cpp
+++ b/src/mame/drivers/tavernie.cpp
@@ -297,11 +297,10 @@ void tavernie_state::kbd_put(u8 data)
m_pia_ivg->cb1_w(1);
}
-void tavernie_state::cpu09(machine_config &config)
-{
+MACHINE_CONFIG_START(tavernie_state::cpu09)
/* basic machine hardware */
- MC6809(config, m_maincpu, 4_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &tavernie_state::cpu09_mem);
+ MCFG_DEVICE_ADD("maincpu", MC6809, 4_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(cpu09_mem)
MCFG_MACHINE_RESET_OVERRIDE(tavernie_state, cpu09)
/* sound hardware */
@@ -309,7 +308,7 @@ void tavernie_state::cpu09(machine_config &config)
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05);
/* Devices */
- CASSETTE(config, m_cass);
+ MCFG_CASSETTE_ADD( "cassette" )
pia6821_device &pia(PIA6821(config, "pia", 0));
pia.readpa_handler().set(FUNC(tavernie_state::pa_r));
@@ -336,27 +335,28 @@ void tavernie_state::cpu09(machine_config &config)
clock_device &acia_clock(CLOCK(config, "acia_clock", 153600));
acia_clock.signal_handler().set("acia", FUNC(acia6850_device::write_txc));
acia_clock.signal_handler().append("acia", FUNC(acia6850_device::write_rxc));
-}
+MACHINE_CONFIG_END
-void tavernie_state::ivg09(machine_config &config)
-{
+MACHINE_CONFIG_START(tavernie_state::ivg09)
cpu09(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &tavernie_state::ivg09_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ivg09_mem)
MCFG_MACHINE_RESET_OVERRIDE(tavernie_state, ivg09)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(80*8, 25*10);
- screen.set_visarea(0, 80*8-1, 0, 25*10-1);
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(80*8, 25*10)
+ MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 25*10-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
PALETTE(config, m_palette, palette_device::MONOCHROME);
config.set_default_layout(layout_tavernie);
/* sound hardware */
- BEEP(config, m_beep, 950).add_route(ALL_OUTPUTS, "mono", 0.50); // guess
+ MCFG_DEVICE_ADD("beeper", BEEP, 950) // guess
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
@@ -371,11 +371,12 @@ void tavernie_state::ivg09(machine_config &config)
PIA6821(config, m_pia_ivg, 0);
m_pia_ivg->readpb_handler().set(FUNC(tavernie_state::pb_ivg_r));
m_pia_ivg->writepa_handler().set(FUNC(tavernie_state::pa_ivg_w));
- m_pia_ivg->cb2_handler().set(m_beep, FUNC(beep_device::set_state));
+ m_pia_ivg->cb2_handler().set("beeper", FUNC(beep_device::set_state));
FD1795(config, m_fdc, 8_MHz_XTAL / 8);
- FLOPPY_CONNECTOR(config, "fdc:0", ifd09_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
-}
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", ifd09_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( cpu09 )
diff --git a/src/mame/drivers/taxidriv.cpp b/src/mame/drivers/taxidriv.cpp
index fc3e0af0d8c..e7909ed1e83 100644
--- a/src/mame/drivers/taxidriv.cpp
+++ b/src/mame/drivers/taxidriv.cpp
@@ -332,23 +332,23 @@ void taxidriv_state::taxidriv_palette(palette_device &palette) const
}
}
-void taxidriv_state::taxidriv(machine_config &config)
-{
+MACHINE_CONFIG_START(taxidriv_state::taxidriv)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* 4 MHz ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &taxidriv_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(taxidriv_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80,4000000) /* 4 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taxidriv_state, irq0_line_hold)
- z80_device &subcpu(Z80(config, "sub", 4000000)); /* 4 MHz ??? */
- subcpu.set_addrmap(AS_PROGRAM, &taxidriv_state::cpu2_map);
- subcpu.set_vblank_int("screen", FUNC(taxidriv_state::irq0_line_hold)); /* ??? */
+ MCFG_DEVICE_ADD("sub", Z80,4000000) /* 4 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(cpu2_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taxidriv_state, irq0_line_hold) /* ??? */
- z80_device &audiocpu(Z80(config, "audiocpu", 4000000)); /* 4 MHz ??? */
- audiocpu.set_addrmap(AS_PROGRAM, &taxidriv_state::cpu3_map);
- audiocpu.set_addrmap(AS_IO, &taxidriv_state::cpu3_port_map);
- audiocpu.set_vblank_int("screen", FUNC(taxidriv_state::irq0_line_hold)); /* ??? */
+ MCFG_DEVICE_ADD("audiocpu", Z80,4000000) /* 4 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(cpu3_map)
+ MCFG_DEVICE_IO_MAP(cpu3_port_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taxidriv_state, irq0_line_hold) /* ??? */
- config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - a high value to ensure proper */
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */
/* synchronization of the CPUs */
i8255_device &ppi0(I8255A(config, "ppi8255_0"));
@@ -379,13 +379,13 @@ void taxidriv_state::taxidriv(machine_config &config)
ppi4.out_pc_callback().set(FUNC(taxidriv_state::p4c_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 1*8, 27*8-1);
- screen.set_screen_update(FUNC(taxidriv_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 27*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(taxidriv_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_taxidriv);
PALETTE(config, m_palette, FUNC(taxidriv_state::taxidriv_palette), 16);
@@ -401,7 +401,7 @@ void taxidriv_state::taxidriv(machine_config &config)
ay8910_device &ay2(AY8910(config, "ay2", 1250000));
ay2.port_a_read_callback().set(FUNC(taxidriv_state::p8910_1a_r));
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tb303.cpp b/src/mame/drivers/tb303.cpp
index 88eb81972ce..8fb797b5e9d 100644
--- a/src/mame/drivers/tb303.cpp
+++ b/src/mame/drivers/tb303.cpp
@@ -23,8 +23,8 @@
class tb303_state : public hh_ucom4_state
{
public:
- tb303_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ tb303_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void tb303(machine_config &config);
@@ -249,8 +249,8 @@ void tb303_state::machine_start()
save_item(NAME(m_ram_we));
}
-void tb303_state::tb303(machine_config &config)
-{
+MACHINE_CONFIG_START(tb303_state::tb303)
+
/* basic machine hardware */
NEC_D650(config, m_maincpu, TP2_HZ);
m_maincpu->read_a().set(FUNC(tb303_state::input_r));
@@ -264,18 +264,16 @@ void tb303_state::tb303(machine_config &config)
m_maincpu->write_h().set(FUNC(tb303_state::switch_w));
m_maincpu->write_i().set(FUNC(tb303_state::strobe_w));
- timer_device &tp3_clock(TIMER(config, "tp3_clock"));
- tp3_clock.configure_periodic(FUNC(tb303_state::tp3_clock), TP3_PERIOD);
- tp3_clock.set_start_delay(TP3_PERIOD - TP3_LOW);
- TIMER(config, "tp3_clear").configure_periodic(FUNC(tb303_state::tp3_clear), TP3_PERIOD);
-
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("tp3_clock", tb303_state, tp3_clock, TP3_PERIOD)
+ MCFG_TIMER_START_DELAY(TP3_PERIOD - TP3_LOW)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("tp3_clear", tb303_state, tp3_clear, TP3_PERIOD)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_tb303);
/* sound hardware */
// discrete...
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tbowl.cpp b/src/mame/drivers/tbowl.cpp
index 9f28339519e..d59a85e1c6f 100644
--- a/src/mame/drivers/tbowl.cpp
+++ b/src/mame/drivers/tbowl.cpp
@@ -488,12 +488,12 @@ void tbowl_state::tbowl(machine_config &config)
/* something for the samples? */
MSM5205(config, m_msm1, 384000);
m_msm1->vck_legacy_callback().set(FUNC(tbowl_state::adpcm_int_1)); /* interrupt function */
- m_msm1->set_prescaler_selector(msm5205_device::S48_4B); /* 8KHz */
+ m_msm1->set_prescaler_selector(msm5205_device::S48_4B); /* 8KHz */
m_msm1->add_route(ALL_OUTPUTS, "mono", 0.50);
MSM5205(config, m_msm2, 384000);
m_msm2->vck_legacy_callback().set(FUNC(tbowl_state::adpcm_int_2)); /* interrupt function */
- m_msm2->set_prescaler_selector(msm5205_device::S48_4B); /* 8KHz */
+ m_msm2->set_prescaler_selector(msm5205_device::S48_4B); /* 8KHz */
m_msm2->add_route(ALL_OUTPUTS, "mono", 0.50);
}
diff --git a/src/mame/drivers/tceptor.cpp b/src/mame/drivers/tceptor.cpp
index 103e81d7186..2318b9b015c 100644
--- a/src/mame/drivers/tceptor.cpp
+++ b/src/mame/drivers/tceptor.cpp
@@ -374,6 +374,7 @@ void tceptor_state::tceptor(machine_config &config)
dac.add_route(ALL_OUTPUTS, "rspeaker", 0.4);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/tdv2324.cpp b/src/mame/drivers/tdv2324.cpp
index bb0bd3abf13..319cae8ef5f 100644
--- a/src/mame/drivers/tdv2324.cpp
+++ b/src/mame/drivers/tdv2324.cpp
@@ -261,29 +261,28 @@ static void tdv2324_floppies(device_slot_interface &device)
//**************************************************************************
//-------------------------------------------------
-// machine_config( tdv2324 )
+// MACHINE_CONFIG( tdv2324 )
//-------------------------------------------------
-void tdv2324_state::tdv2324(machine_config &config)
-{
+MACHINE_CONFIG_START(tdv2324_state::tdv2324)
// basic system hardware
- I8085A(config, m_maincpu, 8700000/2); // ???
- m_maincpu->set_addrmap(AS_PROGRAM, &tdv2324_state::tdv2324_mem);
- m_maincpu->set_addrmap(AS_IO, &tdv2324_state::tdv2324_io);
+ MCFG_DEVICE_ADD(P8085AH_0_TAG, I8085A, 8700000/2) // ???
+ MCFG_DEVICE_PROGRAM_MAP(tdv2324_mem)
+ MCFG_DEVICE_IO_MAP(tdv2324_io)
- I8085A(config, m_subcpu, 8000000/2); // ???
- m_subcpu->set_addrmap(AS_PROGRAM, &tdv2324_state::tdv2324_sub_mem);
- m_subcpu->set_addrmap(AS_IO, &tdv2324_state::tdv2324_sub_io);
+ MCFG_DEVICE_ADD(P8085AH_1_TAG, I8085A, 8000000/2) // ???
+ MCFG_DEVICE_PROGRAM_MAP(tdv2324_sub_mem)
+ MCFG_DEVICE_IO_MAP(tdv2324_sub_io)
- M6802(config, m_fdccpu, 8000000/2); // ???
- m_fdccpu->set_addrmap(AS_PROGRAM, &tdv2324_state::tdv2324_fdc_mem);
+ MCFG_DEVICE_ADD(MC68B02P_TAG, M6802, 8000000/2) // ???
+ MCFG_DEVICE_PROGRAM_MAP(tdv2324_fdc_mem)
// video hardware
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(50);
- screen.set_screen_update(FUNC(tdv2324_state::screen_update));
- screen.set_size(800, 400);
- screen.set_visarea(0, 800-1, 0, 400-1);
+ MCFG_SCREEN_ADD_MONOCHROME(SCREEN_TAG, RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_UPDATE_DRIVER(tdv2324_state, screen_update)
+ MCFG_SCREEN_SIZE(800, 400)
+ MCFG_SCREEN_VISIBLE_AREA(0, 800-1, 0, 400-1)
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -299,15 +298,15 @@ void tdv2324_state::tdv2324(machine_config &config)
Z80SIO2(config, MK3887N4_TAG, 8000000/2);
FD1797(config, FD1797PL02_TAG, 8000000/4);
- FLOPPY_CONNECTOR(config, FD1797PL02_TAG":0", tdv2324_floppies, "8dsdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, FD1797PL02_TAG":1", tdv2324_floppies, "8dsdd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(FD1797PL02_TAG":0", tdv2324_floppies, "8dsdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FD1797PL02_TAG":1", tdv2324_floppies, "8dsdd", floppy_image_device::default_floppy_formats)
// internal ram
RAM(config, RAM_TAG).set_default_size("64K");
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("tdv2324");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "tdv2324")
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tec1.cpp b/src/mame/drivers/tec1.cpp
index 7d24f438830..6ebe2b360ba 100644
--- a/src/mame/drivers/tec1.cpp
+++ b/src/mame/drivers/tec1.cpp
@@ -420,39 +420,38 @@ INPUT_PORTS_END
***************************************************************************/
-void tec1_state::tec1(machine_config &config)
-{
+MACHINE_CONFIG_START(tec1_state::tec1)
/* basic machine hardware */
- Z80(config, m_maincpu, 1000000); /* speed can be varied between 250kHz and 2MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &tec1_state::tec1_map);
- m_maincpu->set_addrmap(AS_IO, &tec1_state::tec1_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, 1000000) /* speed can be varied between 250kHz and 2MHz */
+ MCFG_DEVICE_PROGRAM_MAP(tec1_map)
+ MCFG_DEVICE_IO_MAP(tec1_io)
/* video hardware */
config.set_default_layout(layout_tec1);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
-void tec1_state::tecjmon(machine_config &config)
-{
+MACHINE_CONFIG_START(tec1_state::tecjmon)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(3'579'545) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &tec1_state::tecjmon_map);
- m_maincpu->set_addrmap(AS_IO, &tec1_state::tecjmon_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(3'579'545) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(tecjmon_map)
+ MCFG_DEVICE_IO_MAP(tecjmon_io)
/* video hardware */
config.set_default_layout(layout_tec1);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05);
/* Devices */
- CASSETTE(config, m_cass);
-}
+ MCFG_CASSETTE_ADD( "cassette" )
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/techno.cpp b/src/mame/drivers/techno.cpp
index 46b7715023e..b7d193944aa 100644
--- a/src/mame/drivers/techno.cpp
+++ b/src/mame/drivers/techno.cpp
@@ -288,20 +288,18 @@ void techno_state::machine_reset()
m_maincpu->set_input_line(M68K_IRQ_1, CLEAR_LINE);
}
-void techno_state::techno(machine_config &config)
-{
+MACHINE_CONFIG_START(techno_state::techno)
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(8'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &techno_state::techno_map);
-
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(8'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(techno_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- //tms7000_device &cpu2(TMS7000(config, "cpu2", XTAL(4'000'000)));
- //cpu2.set_addrmap(AS_PROGRAM, &techno_state::techno_sub_map);
+ //MCFG_DEVICE_ADD("cpu2", TMS7000, XTAL(4'000'000))
+ //MCFG_DEVICE_PROGRAM_MAP(techno_sub_map)
/* Video */
config.set_default_layout(layout_techno);
-}
+MACHINE_CONFIG_END
ROM_START(xforce)
ROM_REGION(0x10000, "maincpu", 0)
diff --git a/src/mame/drivers/tecmo.cpp b/src/mame/drivers/tecmo.cpp
index e22740d0f5d..1bd6b20a1ae 100644
--- a/src/mame/drivers/tecmo.cpp
+++ b/src/mame/drivers/tecmo.cpp
@@ -1221,39 +1221,6 @@ ROM_END
ROM_START( gemini )
ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD( "4-5s", 0x00000, 0x10000, CRC(ce71e27a) SHA1(5aac0434edd39e444687d9988c7f49e0752a4900) ) /* c000-ffff is not used */
- ROM_LOAD( "5-6s", 0x10000, 0x10000, CRC(216784a9) SHA1(ec74a3753e5b6384b875125ec0db7beea0a6aa6d) ) /* banked at f000-f7ff */
-
- ROM_REGION( 0x10000, "soundcpu", 0 )
- ROM_LOAD( "gw03-5h.rom", 0x0000, 0x8000, CRC(9bc79596) SHA1(61de9ddd45140e8ed88173294bd26147e2abfa21) )
-
- ROM_REGION( 0x08000, "gfx1", 0 )
- ROM_LOAD( "gw02-3h.rom", 0x00000, 0x08000, CRC(7acc8d35) SHA1(05056e9f077e7571b314390b508c72d56ad0f43b) ) /* characters */
-
- ROM_REGION( 0x40000, "gfx2", 0 )
- ROM_LOAD( "gw06-1c.rom", 0x00000, 0x10000, CRC(4ea51631) SHA1(9aee0f1ba210ac953dc193cfc739322966b6de8a) ) /* sprites */
- ROM_LOAD( "gw07-1d.rom", 0x10000, 0x10000, CRC(da42637e) SHA1(9885c52823279f26871092c77bdbe027df08268f) ) /* sprites */
- ROM_LOAD( "gw08-1f.rom", 0x20000, 0x10000, CRC(0b4e8d70) SHA1(55069f3df1c8db83f306d46b8262fd23585e6013) ) /* sprites */
- ROM_LOAD( "gw09-1h.rom", 0x30000, 0x10000, CRC(b65c5e4c) SHA1(699e1a9e72b8d94edae7382ba119fe5da113514d) ) /* sprites */
-
- ROM_REGION( 0x40000, "gfx3", 0 )
- ROM_LOAD( "gw10-1n.rom", 0x00000, 0x10000, CRC(5e84cd4f) SHA1(e85320291027a16619c87fc2365448367bda454a) ) /* tiles #1 */
- ROM_LOAD( "gw11-2na.rom", 0x10000, 0x10000, CRC(08b458e1) SHA1(b3426faa57dca51dc053db44fa4968425d8bf3ee) ) /* tiles #1 */
- ROM_LOAD( "gw12-2nb.rom", 0x20000, 0x10000, CRC(229c9714) SHA1(f4f47d6b379c973c22f9ae7d7bec7041cdf3f737) ) /* tiles #1 */
- ROM_LOAD( "gw13-3n.rom", 0x30000, 0x10000, CRC(c5dfaf47) SHA1(c3202ca8c7f3c5c7dc9acdc09c1c894e168ef9fe) ) /* tiles #1 */
-
- ROM_REGION( 0x40000, "gfx4", 0 )
- ROM_LOAD( "gw14-1r.rom", 0x00000, 0x10000, CRC(9c10e5b5) SHA1(a81399b85d8f3ddca26883ec3535cb9044c35ada) ) /* tiles #2 */
- ROM_LOAD( "gw15-2ra.rom", 0x10000, 0x10000, CRC(4cd18cfa) SHA1(c197a098a7c1e5220aad039383a40702fe7c4f21) ) /* tiles #2 */
- ROM_LOAD( "gw16-2rb.rom", 0x20000, 0x10000, CRC(f911c7be) SHA1(3f49f6c4734f2b644d93c4a54249aae6ff080e1d) ) /* tiles #2 */
- ROM_LOAD( "gw17-3r.rom", 0x30000, 0x10000, CRC(79a9ce25) SHA1(74e3917b8e7a920ceb2135d7ef8fb2f2c5176b21) ) /* tiles #2 */
-
- ROM_REGION( 0x8000, "adpcm", 0 ) /* ADPCM samples */
- ROM_LOAD( "gw01-6a.rom", 0x0000, 0x8000, CRC(d78afa05) SHA1(b02a739b045f5cddf943ce59226ef234463eeebe) )
-ROM_END
-
-ROM_START( geminij )
- ROM_REGION( 0x20000, "maincpu", 0 )
ROM_LOAD( "gw04-5s.rom", 0x00000, 0x10000, CRC(ff9de855) SHA1(34167af8456a081f68b338f10d4319ce1e703fd4) ) /* c000-ffff is not used */
ROM_LOAD( "gw05-6s.rom", 0x10000, 0x10000, CRC(5a6947a9) SHA1(18b7aeb0f0e2c396bc759118dd7c45fd6070b804) ) /* banked at f000-f7ff */
@@ -1353,9 +1320,8 @@ GAME( 1986, rygar, 0, rygar, rygar, tecmo_state, init_rygar,
GAME( 1986, rygar2, rygar, rygar, rygar, tecmo_state, init_rygar, ROT0, "Tecmo", "Rygar (US set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, rygar3, rygar, rygar, rygar, tecmo_state, init_rygar, ROT0, "Tecmo", "Rygar (US set 3 Old Version)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, rygarj, rygar, rygar, rygar, tecmo_state, init_rygar, ROT0, "Tecmo", "Argus no Senshi (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, gemini, 0, gemini, gemini, tecmo_state, init_gemini, ROT90, "Tecmo", "Gemini Wing (World)", MACHINE_SUPPORTS_SAVE ) // No regional "Warning, if you are playing ..." screen
-GAME( 1987, geminij, gemini, gemini, gemini, tecmo_state, init_gemini, ROT90, "Tecmo", "Gemini Wing (Japan)", MACHINE_SUPPORTS_SAVE ) // Japan regional warning screen
-GAME( 1987, geminib, gemini, geminib, gemini, tecmo_state, init_gemini, ROT90, "bootleg", "Gemini Wing (bootleg)", MACHINE_SUPPORTS_SAVE ) // regional warning screen is blanked (still get a delay)
+GAME( 1987, gemini, 0, gemini, gemini, tecmo_state, init_gemini, ROT90, "Tecmo", "Gemini Wing (Japan)", MACHINE_SUPPORTS_SAVE ) // Japan regional warning screen
+GAME( 1987, geminib, gemini, geminib, gemini, tecmo_state, init_gemini, ROT90, "bootleg", "Gemini Wing (bootleg)", MACHINE_SUPPORTS_SAVE ) // Japan regional warning screen
GAME( 1988, silkworm, 0, silkworm, silkworm, tecmo_state, init_silkworm, ROT0, "Tecmo", "Silk Worm (World)", MACHINE_SUPPORTS_SAVE ) // No regional "Warning, if you are playing ..." screen
GAME( 1988, silkwormj, silkworm, silkworm, silkworm, tecmo_state, init_silkworm, ROT0, "Tecmo", "Silk Worm (Japan)", MACHINE_SUPPORTS_SAVE ) // Japan regional warning screen
GAME( 1988, silkwormp, silkworm, silkwormp, silkwormp, tecmo_state, init_silkworm, ROT0, "Tecmo", "Silk Worm (prototype)", MACHINE_SUPPORTS_SAVE ) // prototype
diff --git a/src/mame/drivers/tecmo16.cpp b/src/mame/drivers/tecmo16.cpp
index f2db7d3bb90..b836b3371c8 100644
--- a/src/mame/drivers/tecmo16.cpp
+++ b/src/mame/drivers/tecmo16.cpp
@@ -354,28 +354,28 @@ GFXDECODE_END
#define MASTER_CLOCK XTAL(24'000'000)
#define OKI_CLOCK XTAL(8'000'000)
-void tecmo16_state::fstarfrc(machine_config &config)
-{
+MACHINE_CONFIG_START(tecmo16_state::fstarfrc)
+
/* basic machine hardware */
- M68000(config, m_maincpu, MASTER_CLOCK/2); /* 12MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &tecmo16_state::fstarfrc_map);
- m_maincpu->set_vblank_int("screen", FUNC(tecmo16_state::irq5_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000,MASTER_CLOCK/2) /* 12MHz */
+ MCFG_DEVICE_PROGRAM_MAP(fstarfrc_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tecmo16_state, irq5_line_hold)
- Z80(config, m_audiocpu, MASTER_CLOCK/6); /* 4MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &tecmo16_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80,MASTER_CLOCK/6) /* 4MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
/* NMIs are triggered by the main CPU */
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
/* video hardware */
BUFFERED_SPRITERAM16(config, m_spriteram);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(tecmo16_state::screen_update));
- m_screen->screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tecmo16_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_tecmo16);
PALETTE(config, m_palette, palette_device::BLACK).set_format(palette_device::xBGR_444, 4096);
@@ -402,27 +402,26 @@ void tecmo16_state::fstarfrc(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.60);
ymsnd.add_route(1, "rspeaker", 0.60);
- okim6295_device &oki(OKIM6295(config, "oki", OKI_CLOCK/8, okim6295_device::PIN7_HIGH)); // sample rate 1 MHz / 132
- oki.add_route(ALL_OUTPUTS, "lspeaker", 0.40);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 0.40);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, OKI_CLOCK/8, okim6295_device::PIN7_HIGH) // sample rate 1 MHz / 132
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
+MACHINE_CONFIG_END
-void tecmo16_state::ginkun(machine_config &config)
-{
+MACHINE_CONFIG_START(tecmo16_state::ginkun)
fstarfrc(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &tecmo16_state::ginkun_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ginkun_map)
MCFG_VIDEO_START_OVERRIDE(tecmo16_state,ginkun)
-}
+MACHINE_CONFIG_END
-void tecmo16_state::riot(machine_config &config)
-{
+MACHINE_CONFIG_START(tecmo16_state::riot)
ginkun(config);
/* basic machine hardware */
MCFG_VIDEO_START_OVERRIDE(tecmo16_state,riot)
-}
+MACHINE_CONFIG_END
/******************************************************************************/
diff --git a/src/mame/drivers/tecnbras.cpp b/src/mame/drivers/tecnbras.cpp
index a7c1dbb964b..0af732566d4 100644
--- a/src/mame/drivers/tecnbras.cpp
+++ b/src/mame/drivers/tecnbras.cpp
@@ -119,7 +119,7 @@ void tecnbras_state::tecnbras(machine_config &config)
m_maincpu->set_addrmap(AS_IO, &tecnbras_state::i80c31_io);
m_maincpu->port_out_cb<1>().set_nop(); // buzzer ?
-/* TODO: Add an I2C RTC (Philips PCF8583P)
+/* TODO: Add an I2C RTC (Phillips PCF8583P)
pin 6 (SCL): cpu T0/P3.4 (pin 14)
pin 5 (SDA): cpu T1/P3.5 (pin 15)
*/
diff --git a/src/mame/drivers/tehkanwc.cpp b/src/mame/drivers/tehkanwc.cpp
index 84fcb199fc9..b6ef48f5862 100644
--- a/src/mame/drivers/tehkanwc.cpp
+++ b/src/mame/drivers/tehkanwc.cpp
@@ -665,34 +665,34 @@ static GFXDECODE_START( gfx_tehkanwc )
GFXDECODE_END
-void tehkanwc_state::tehkanwc(machine_config &config)
-{
+MACHINE_CONFIG_START(tehkanwc_state::tehkanwc)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 18432000/4); /* 18.432000 / 4 */
- m_maincpu->set_addrmap(AS_PROGRAM, &tehkanwc_state::main_mem);
- m_maincpu->set_vblank_int("screen", FUNC(tehkanwc_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 18432000/4) /* 18.432000 / 4 */
+ MCFG_DEVICE_PROGRAM_MAP(main_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tehkanwc_state, irq0_line_hold)
- Z80(config, m_subcpu, 18432000/4);
- m_subcpu->set_addrmap(AS_PROGRAM, &tehkanwc_state::sub_mem);
- m_subcpu->set_vblank_int("screen", FUNC(tehkanwc_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("sub", Z80, 18432000/4)
+ MCFG_DEVICE_PROGRAM_MAP(sub_mem)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tehkanwc_state, irq0_line_hold)
- Z80(config, m_audiocpu, 18432000/4);
- m_audiocpu->set_addrmap(AS_PROGRAM, &tehkanwc_state::sound_mem);
- m_audiocpu->set_addrmap(AS_IO, &tehkanwc_state::sound_port);
- m_audiocpu->set_vblank_int("screen", FUNC(tehkanwc_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("audiocpu", Z80, 18432000/4)
+ MCFG_DEVICE_PROGRAM_MAP(sound_mem)
+ MCFG_DEVICE_IO_MAP(sound_port)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tehkanwc_state, irq0_line_hold)
- config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - seems enough to keep the CPUs in sync */
+ MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* 10 CPU slices per frame - seems enough to keep the CPUs in sync */
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(tehkanwc_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tehkanwc_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_tehkanwc);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 768).set_endianness(ENDIANNESS_BIG);
@@ -713,11 +713,11 @@ void tehkanwc_state::tehkanwc(machine_config &config)
ay2.port_b_read_callback().set(FUNC(tehkanwc_state::portB_r));
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(tehkanwc_state::adpcm_int)); /* interrupt function */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8KHz */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.45);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, tehkanwc_state, adpcm_int)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
+MACHINE_CONFIG_END
void tehkanwc_state::tehkanwcb(machine_config &config)
{
@@ -733,6 +733,7 @@ void tehkanwc_state::tehkanwcb(machine_config &config)
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
}
+
void tehkanwc_state::init_teedoff()
{
/* Patch to avoid the game jumping in shared memory */
diff --git a/src/mame/drivers/tek405x.cpp b/src/mame/drivers/tek405x.cpp
index db9a2572ac1..162aba98841 100644
--- a/src/mame/drivers/tek405x.cpp
+++ b/src/mame/drivers/tek405x.cpp
@@ -48,10 +48,15 @@ enum {
};
+
//**************************************************************************
// INTERRUPTS
//**************************************************************************
+//-------------------------------------------------
+// update_irq -
+//-------------------------------------------------
+
void tek4051_state::update_irq()
{
int state = m_kb_pia_irqa | m_kb_pia_irqb | m_x_pia_irqa | m_x_pia_irqb | m_gpib_pia_irqa | m_gpib_pia_irqb | m_com_pia_irqa | m_com_pia_irqb | m_acia_irq;
@@ -59,6 +64,11 @@ void tek4051_state::update_irq()
m_maincpu->set_input_line(INPUT_LINE_IRQ0, state);
}
+
+//-------------------------------------------------
+// update_nmi -
+//-------------------------------------------------
+
void tek4051_state::update_nmi()
{
int state = m_y_pia_irqa | m_y_pia_irqb | m_tape_pia_irqa | m_tape_pia_irqb;
@@ -67,24 +77,39 @@ void tek4051_state::update_nmi()
}
+
//**************************************************************************
// KEYBOARD
//**************************************************************************
+//-------------------------------------------------
+// scan_keyboard - scan keyboard
+//-------------------------------------------------
+
void tek4051_state::scan_keyboard()
{
}
+
+//-------------------------------------------------
+// TIMER_DEVICE_CALLBACK_MEMBER( keyboard_tick )
+//-------------------------------------------------
+
TIMER_DEVICE_CALLBACK_MEMBER(tek4051_state::keyboard_tick)
{
scan_keyboard();
}
+
//**************************************************************************
// MEMORY BANKING
//**************************************************************************
+//-------------------------------------------------
+// bankswitch -
+//-------------------------------------------------
+
void tek4051_state::bankswitch(uint8_t data)
{
address_space &program = m_maincpu->space(AS_PROGRAM);
@@ -111,6 +136,7 @@ void tek4051_state::bankswitch(uint8_t data)
}
}
+
WRITE8_MEMBER( tek4051_state::lbs_w )
{
/*
@@ -134,10 +160,15 @@ WRITE8_MEMBER( tek4051_state::lbs_w )
}
+
//**************************************************************************
// ADDRESS MAPS
//**************************************************************************
+//-------------------------------------------------
+// ADDRESS_MAP( tek4051_mem )
+//-------------------------------------------------
+
void tek4051_state::tek4051_mem(address_map &map)
{
map(0x0000, 0x1fff).ram();
@@ -158,15 +189,25 @@ void tek4051_state::tek4051_mem(address_map &map)
map(0xa800, 0xffff).rom().region(MC6800_TAG, 0x2800);
}
+
+//-------------------------------------------------
+// ADDRESS_MAP( tek4052_mem )
+//-------------------------------------------------
+
void tek4052_state::tek4052_mem(address_map &map)
{
}
+
//**************************************************************************
// INPUT PORTS
//**************************************************************************
+//-------------------------------------------------
+// INPUT_PORTS( tek4051 )
+//-------------------------------------------------
+
static INPUT_PORTS_START( tek4051 )
PORT_START("Y0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
@@ -336,6 +377,7 @@ static INPUT_PORTS_START( tek4051 )
INPUT_PORTS_END
+
//**************************************************************************
// VIDEO
//**************************************************************************
@@ -350,6 +392,7 @@ void tek4052_state::video_start()
}
+
//**************************************************************************
// DEVICE CONFIGURATION
//**************************************************************************
@@ -678,6 +721,7 @@ WRITE_LINE_MEMBER( tek4051_state::tape_pia_irqb_w )
update_nmi();
}
+
WRITE8_MEMBER( tek4051_state::dio_w )
{
/*
@@ -798,6 +842,7 @@ WRITE_LINE_MEMBER( tek4051_state::gpib_pia_irqb_w )
update_irq();
}
+
WRITE8_MEMBER( tek4051_state::com_pia_pa_w )
{
/*
@@ -889,6 +934,7 @@ WRITE_LINE_MEMBER( tek4051_state::com_pia_irqb_w )
update_irq();
}
+
WRITE_LINE_MEMBER( tek4051_state::acia_irq_w )
{
m_acia_irq = state;
@@ -906,6 +952,10 @@ WRITE_LINE_MEMBER( tek4051_state::write_acia_clock )
// MACHINE INITIALIZATION
//**************************************************************************
+//-------------------------------------------------
+// MACHINE_START( tek4051 )
+//-------------------------------------------------
+
void tek4051_state::machine_start()
{
m_lamps.resolve();
@@ -931,39 +981,48 @@ void tek4051_state::machine_start()
// register for state saving
}
+
+//-------------------------------------------------
+// MACHINE_START( tek4052 )
+//-------------------------------------------------
+
void tek4052_state::machine_start()
{
}
+
//**************************************************************************
// MACHINE CONFIGURATION
//**************************************************************************
-void tek4051_state::tek4051(machine_config &config)
-{
+//-------------------------------------------------
+// MACHINE_CONFIG( tek4051 )
+//-------------------------------------------------
+
+MACHINE_CONFIG_START(tek4051_state::tek4051)
// basic machine hardware
- M6800(config, m_maincpu, XTAL(12'500'000)/15);
- m_maincpu->set_addrmap(AS_PROGRAM, &tek4051_state::tek4051_mem);
+ MCFG_DEVICE_ADD(MC6800_TAG, M6800, XTAL(12'500'000)/15)
+ MCFG_DEVICE_PROGRAM_MAP(tek4051_mem)
// video hardware
- VECTOR(config, "vector", 0);
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_VECTOR));
- screen.set_color(rgb_t::green());
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
- screen.set_size(1024, 780);
- screen.set_visarea(0, 1024-1, 0, 780-1);
- screen.set_screen_update("vector", FUNC(vector_device::screen_update));
+ MCFG_VECTOR_ADD("vector")
+ MCFG_SCREEN_ADD_MONOCHROME(SCREEN_TAG, VECTOR, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
+ MCFG_SCREEN_SIZE(1024, 780)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 780-1)
+ MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
PALETTE(config, "palette", palette_device::MONOCHROME);
// sound hardware
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
// devices
- TIMER(config, "keyboard").configure_periodic(FUNC(tek4051_state::keyboard_tick), attotime::from_hz(XTAL(12'500'000)/15/4));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", tek4051_state, keyboard_tick, attotime::from_hz(XTAL(12'500'000)/15/4))
pia6821_device &piax(PIA6821(config, MC6820_X_TAG, 0));
piax.readpa_handler().set(FUNC(tek4051_state::x_pia_pa_r));
@@ -1026,59 +1085,67 @@ void tek4051_state::tek4051(machine_config &config)
ACIA6850(config, m_acia, 0);
m_acia->irq_handler().set(FUNC(tek4051_state::acia_irq_w));
- CLOCK(config, m_acia_clock, 38400);
- m_acia_clock->signal_handler().set(FUNC(tek4051_state::write_acia_clock));
+ MCFG_DEVICE_ADD("acia_clock", CLOCK, 38400)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, tek4051_state, write_acia_clock))
- IEEE488(config, m_gpib);
- m_gpib->eoi_callback().set(MC6820_GPIB_TAG, FUNC(pia6821_device::ca1_w));
- m_gpib->srq_callback().set(MC6820_GPIB_TAG, FUNC(pia6821_device::cb1_w));
+ MCFG_IEEE488_BUS_ADD()
+ MCFG_IEEE488_EOI_CALLBACK(WRITELINE(MC6820_GPIB_TAG, pia6821_device, ca1_w))
+ MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(MC6820_GPIB_TAG, pia6821_device, cb1_w))
// internal ram
RAM(config, RAM_TAG).set_default_size("8K").set_extra_options("16K,24K,32K");
// cartridge
- GENERIC_CARTSLOT(config, "cartslot1", generic_plain_slot, "tek4050_cart");
- GENERIC_CARTSLOT(config, "cartslot2", generic_plain_slot, "tek4050_cart");
-}
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot1", generic_plain_slot, "tek4050_cart")
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot2", generic_plain_slot, "tek4050_cart")
+MACHINE_CONFIG_END
-void tek4052_state::tek4052(machine_config &config)
-{
+
+//-------------------------------------------------
+// MACHINE_CONFIG( tek4052 )
+//-------------------------------------------------
+
+MACHINE_CONFIG_START(tek4052_state::tek4052)
// basic machine hardware
- m6800_cpu_device &cpu(M6800(config, AM2901A_TAG, 1000000)); // should be 4x AM2901A + AM2911
- cpu.set_addrmap(AS_PROGRAM, &tek4052_state::tek4052_mem);
+ MCFG_DEVICE_ADD(AM2901A_TAG, M6800, 1000000) // should be 4x AM2901A + AM2911
+ MCFG_DEVICE_PROGRAM_MAP(tek4052_mem)
// video hardware
- VECTOR(config, "vector", 0);
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_VECTOR));
- screen.set_color(rgb_t::green());
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
- screen.set_size(1024, 780);
- screen.set_visarea(0, 1024-1, 0, 780-1);
- screen.set_screen_update("vector", FUNC(vector_device::screen_update));
+ MCFG_VECTOR_ADD("vector")
+ MCFG_SCREEN_ADD_MONOCHROME(SCREEN_TAG, VECTOR, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
+ MCFG_SCREEN_SIZE(1024, 780)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 780-1)
+ MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
PALETTE(config, "palette", palette_device::MONOCHROME);
// sound hardware
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
// internal ram
RAM(config, RAM_TAG).set_default_size("32K").set_extra_options("64K");
// cartridge
- GENERIC_CARTSLOT(config, "cartslot1", generic_plain_slot, "tek4050_cart");
- GENERIC_CARTSLOT(config, "cartslot2", generic_plain_slot, "tek4050_cart");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot1", generic_plain_slot, "tek4050_cart")
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot2", generic_plain_slot, "tek4050_cart")
// software lists
- SOFTWARE_LIST(config, "cart_list").set_original("tek4052_cart");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "tek4052_cart")
+MACHINE_CONFIG_END
+
+//-------------------------------------------------
+// MACHINE_CONFIG( tek4054 )
+//-------------------------------------------------
/*
-void tek4054_state::tek4054(machine_config &config)
-{
- // screen size: 4096, 3125
-}
+MACHINE_CONFIG_START(tek4054_state::tek4054)
+ MCFG_SCREEN_SIZE(4096, 3125)
+ MCFG_SCREEN_VISIBLE_AREA(0, 4096-1, 0, 3125-1)
+MACHINE_CONFIG_END
*/
@@ -1087,6 +1154,10 @@ void tek4054_state::tek4054(machine_config &config)
// ROMS
//**************************************************************************
+//-------------------------------------------------
+// ROM( tek4051 )
+//-------------------------------------------------
+
ROM_START( tek4051 )
ROM_REGION( 0x8000, MC6800_TAG, 0 )
ROM_LOAD( "156-0659-xx.u585", 0x0000, 0x0800, CRC(0017ba54) SHA1(533bfacb2e698c1df88a00acce6df6a8c536239d) ) // -01 or -02 ?
@@ -1131,6 +1202,11 @@ ROM_START( tek4051 )
*/
ROM_END
+
+//-------------------------------------------------
+// ROM( tek4052a )
+//-------------------------------------------------
+
ROM_START( tek4052a )
ROM_REGION( 0x3800, AM2901A_TAG, 0 ) // ALU 670-7705-00 microcode
ROM_LOAD( "160-1689-00.u340", 0x0000, 0x0800, CRC(97ff62d4) SHA1(e25b495fd1b3f8a5bfef5c8f20efacde8366e89c) )
diff --git a/src/mame/drivers/tek410x.cpp b/src/mame/drivers/tek410x.cpp
index c70f2a6fec4..17fbbbe9dfd 100644
--- a/src/mame/drivers/tek410x.cpp
+++ b/src/mame/drivers/tek410x.cpp
@@ -30,17 +30,15 @@ class tek4107a_state : public driver_device
{
public:
tek4107a_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- { }
+ : driver_device(mconfig, type, tag) { }
void tek4109a(machine_config &config);
void tek4107a(machine_config &config);
-protected:
+private:
virtual void machine_start() override;
- virtual void video_start() override;
-private:
+ virtual void video_start() override;
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void tek4107a_io(address_map &map);
void tek4107a_mem(address_map &map);
@@ -97,32 +95,30 @@ void tek4107a_state::machine_start()
/* Machine Driver */
-void tek4107a_state::tek4107a(machine_config &config)
-{
+MACHINE_CONFIG_START(tek4107a_state::tek4107a)
/* basic machine hardware */
- i80188_cpu_device &maincpu(I80188(config, I80188_TAG, 21000000));
- maincpu.set_addrmap(AS_PROGRAM, &tek4107a_state::tek4107a_mem);
- maincpu.set_addrmap(AS_IO, &tek4107a_state::tek4107a_io);
+ MCFG_DEVICE_ADD(I80188_TAG, I80188, 21000000)
+ MCFG_DEVICE_PROGRAM_MAP(tek4107a_mem)
+ MCFG_DEVICE_IO_MAP(tek4107a_io)
/* video hardware */
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(tek4107a_state::screen_update));
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
-
- PALETTE(config, "palette").set_entries(64);
- GFXDECODE(config, "gfxdecode", "palette", gfx_tek4107a);
-}
-
-void tek4107a_state::tek4109a(machine_config &config)
-{
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(tek4107a_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+
+ MCFG_PALETTE_ADD("palette", 64)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tek4107a)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(tek4107a_state::tek4109a)
tek4107a(config);
-
/* video hardware */
- subdevice<palette_device>("palette")->set_entries(4096);
-}
+ MCFG_DEVICE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(4096)
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/tek440x.cpp b/src/mame/drivers/tek440x.cpp
index 3d43d6f98c3..82ae82e2174 100644
--- a/src/mame/drivers/tek440x.cpp
+++ b/src/mame/drivers/tek440x.cpp
@@ -159,7 +159,7 @@ void tek440x_state::maincpu_map(address_map &map)
map(0x780000, 0x781fff).ram(); // map registers
// 782000-783fff: video address registers
// 784000-785fff: video control registers
- map(0x788000, 0x788000).w("snsnd", FUNC(sn76496_device::write));
+ map(0x788000, 0x788000).w("snsnd", FUNC(sn76496_device::command_w));
// 78a000-78bfff: NS32081 FPU
map(0x78c000, 0x78c007).rw("aica", FUNC(mos6551_device::read), FUNC(mos6551_device::write)).umask16(0xff00);
// 7b1000-7b2fff: diagnostic registers
@@ -193,24 +193,24 @@ INPUT_PORTS_END
*
*************************************/
-void tek440x_state::tek4404(machine_config &config)
-{
+MACHINE_CONFIG_START(tek440x_state::tek4404)
+
/* basic machine hardware */
- M68010(config, m_maincpu, 40_MHz_XTAL / 4); // MC68010L10
- m_maincpu->set_addrmap(AS_PROGRAM, &tek440x_state::maincpu_map);
+ MCFG_DEVICE_ADD("maincpu", M68010, 40_MHz_XTAL / 4) // MC68010L10
+ MCFG_DEVICE_PROGRAM_MAP(maincpu_map)
- M6502(config, m_fdccpu, 1000000);
- m_fdccpu->set_addrmap(AS_PROGRAM, &tek440x_state::fdccpu_map);
+ MCFG_DEVICE_ADD("fdccpu", M6502, 1000000)
+ MCFG_DEVICE_PROGRAM_MAP(fdccpu_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(640, 480);
- screen.set_visarea(0, 639, 0, 479);
- screen.set_screen_update(FUNC(tek440x_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
+ MCFG_SCREEN_UPDATE_DRIVER(tek440x_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
mos6551_device &aica(MOS6551(config, "aica", 0));
@@ -227,8 +227,9 @@ void tek440x_state::tek4404(machine_config &config)
SPEAKER(config, "mono").front_center();
- SN76496(config, "snsnd", VIDEO_CLOCK / 8).add_route(ALL_OUTPUTS, "mono", 0.80);
-}
+ MCFG_DEVICE_ADD("snsnd", SN76496, VIDEO_CLOCK / 8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tekxp33x.cpp b/src/mame/drivers/tekxp33x.cpp
index ed2e4bb74f1..de2e0d3aad0 100644
--- a/src/mame/drivers/tekxp33x.cpp
+++ b/src/mame/drivers/tekxp33x.cpp
@@ -97,26 +97,25 @@ void tekxp330_state::machine_start()
/* Machine Driver */
-void tekxp330_state::tekxp330(machine_config &config)
-{
+MACHINE_CONFIG_START(tekxp330_state::tekxp330)
/* basic machine hardware */
r3052e_device &maincpu(R3052E(config, "maincpu", XTAL(20'000'000))); /* IDT 79R3052E, clock unknown */
maincpu.set_endianness(ENDIANNESS_BIG);
maincpu.set_addrmap(AS_PROGRAM, &tekxp330_state::cpu_map);
- tms34010_device &tms(TMS34010(config, "tms", XTAL(40'000'000))); /* clock unknown */
- tms.set_addrmap(AS_PROGRAM, &tekxp330_state::tms_map);
+ MCFG_DEVICE_ADD("tms", TMS34010, XTAL(40'000'000)) /* clock unknown */
+ MCFG_DEVICE_PROGRAM_MAP(tms_map)
/* video hardware */
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(tekxp330_state::screen_update));
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
-
- PALETTE(config, "palette").set_entries(64);
-}
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(tekxp330_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+
+ MCFG_PALETTE_ADD("palette", 64)
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/tempest.cpp b/src/mame/drivers/tempest.cpp
index 1f8253a8695..fa19a262031 100644
--- a/src/mame/drivers/tempest.cpp
+++ b/src/mame/drivers/tempest.cpp
@@ -472,7 +472,7 @@ WRITE8_MEMBER(tempest_state::earom_control_w)
READ8_MEMBER(tempest_state::rom_ae1f_r)
{
// This is needed to ensure that the routine starting at ae1c passes checks and does not corrupt data;
- // config.m_perfect_cpu_quantum = subtag("maincpu"); would be very taxing on this driver.
+ // MCFG_QUANTUM_PERFECT_CPU("maincpu") would be very taxing on this driver.
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100));
machine().scheduler().abort_timeslice();
diff --git a/src/mame/drivers/terco.cpp b/src/mame/drivers/terco.cpp
index c4257a95d8f..a169121c0f6 100644
--- a/src/mame/drivers/terco.cpp
+++ b/src/mame/drivers/terco.cpp
@@ -295,16 +295,15 @@ void t4490_state::t4490_map(address_map &map)
static INPUT_PORTS_START( t4490 )
INPUT_PORTS_END
-void t4490_state::t4490(machine_config &config)
-{
- M6800(config, m_maincpu, XTAL(8'000'000)/4); // divided by a MC6875
- m_maincpu->set_addrmap(AS_PROGRAM, &t4490_state::t4490_map);
+MACHINE_CONFIG_START(t4490_state::t4490)
+ MCFG_DEVICE_ADD("maincpu", M6800, XTAL(8'000'000)/4) // divided by a MC6875
+ MCFG_DEVICE_PROGRAM_MAP(t4490_map)
/* devices */
- PIA6821(config, m_pia1, 0);
- PIA6821(config, m_pia2, 0);
- ACIA6850(config, "acia", 0);
-}
+ MCFG_DEVICE_ADD("pia1", PIA6821, 0)
+ MCFG_DEVICE_ADD("pia2", PIA6821, 0)
+ MCFG_DEVICE_ADD("acia", ACIA6850, 0)
+MACHINE_CONFIG_END
ROM_START( t4490 )
ROM_REGION(0x10000, "maincpu", 0)
diff --git a/src/mame/drivers/terminal.cpp b/src/mame/drivers/terminal.cpp
index 3cb8670861c..202ce67e470 100644
--- a/src/mame/drivers/terminal.cpp
+++ b/src/mame/drivers/terminal.cpp
@@ -45,11 +45,10 @@ static INPUT_PORTS_START( terminal )
INPUT_PORTS_END
-void terminal_state::terminal(machine_config &config)
-{
- I8031(config, m_maincpu, 12'000'000);
- m_maincpu->set_addrmap(AS_PROGRAM, &terminal_state::mem_map);
-}
+MACHINE_CONFIG_START( terminal_state::terminal )
+ MCFG_DEVICE_ADD("maincpu", I8031, 12'000'000)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/terracre.cpp b/src/mame/drivers/terracre.cpp
index 745c79bf475..065d931c2c5 100644
--- a/src/mame/drivers/terracre.cpp
+++ b/src/mame/drivers/terracre.cpp
@@ -454,27 +454,26 @@ static GFXDECODE_START( gfx_terracre )
GFXDECODE_END
-void terracre_state::ym3526(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(16'000'000)/2); // 8mhz
- m_maincpu->set_addrmap(AS_PROGRAM, &terracre_state::terracre_map);
- m_maincpu->set_vblank_int("screen", FUNC(terracre_state::irq1_line_hold));
-
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(16'000'000)/4)); // 4.0mhz when compared to sound recordings, should be derived from XTAL(22'000'000)? how?
- audiocpu.set_addrmap(AS_PROGRAM, &terracre_state::sound_map);
- audiocpu.set_addrmap(AS_IO, &terracre_state::sound_3526_io_map);
- audiocpu.set_periodic_int(FUNC(terracre_state::irq0_line_hold), attotime::from_hz(XTAL(16'000'000)/4/512)); // ?
-
- BUFFERED_SPRITERAM16(config, m_spriteram);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(terracre_state::screen_update_amazon));
- screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
- screen.set_palette(m_palette);
+MACHINE_CONFIG_START(terracre_state::ym3526)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)/2) // 8mhz
+ MCFG_DEVICE_PROGRAM_MAP(terracre_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", terracre_state, irq1_line_hold)
+
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/4) // 4.0mhz when compared to sound recordings, should be derived from XTAL(22'000'000)? how?
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_3526_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(terracre_state, irq0_line_hold, XTAL(16'000'000)/4/512) // ?
+
+ MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM16)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE( 60 )
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(terracre_state, screen_update_amazon)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising))
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_terracre);
PALETTE(config, m_palette, FUNC(terracre_state::terracre_palette), 1*16+16*16+16*256, 256);
@@ -483,42 +482,43 @@ void terracre_state::ym3526(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- YM3526(config, "ymsnd", XTAL(16'000'000)/4).add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD("ymsnd", YM3526, XTAL(16'000'000)/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
- DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void terracre_state::ym2203(machine_config &config)
-{
+MACHINE_CONFIG_START(terracre_state::ym2203)
ym3526(config);
- subdevice<z80_device>("audiocpu")->set_addrmap(AS_IO, &terracre_state::sound_2203_io_map);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_IO_MAP(sound_2203_io_map)
- config.device_remove("ymsnd");
+ MCFG_DEVICE_REMOVE("ymsnd")
- ym2203_device &ym1(YM2203(config, "ym1", XTAL(16'000'000)/4));
- ym1.add_route(0, "speaker", 0.2);
- ym1.add_route(1, "speaker", 0.2);
- ym1.add_route(2, "speaker", 0.2);
- ym1.add_route(3, "speaker", 0.4);
-}
+ MCFG_DEVICE_ADD("ym1", YM2203, XTAL(16'000'000)/4)
+ MCFG_SOUND_ROUTE(0, "speaker", 0.2)
+ MCFG_SOUND_ROUTE(1, "speaker", 0.2)
+ MCFG_SOUND_ROUTE(2, "speaker", 0.2)
+ MCFG_SOUND_ROUTE(3, "speaker", 0.4)
+MACHINE_CONFIG_END
-void terracre_state::amazon_base(machine_config &config)
-{
+MACHINE_CONFIG_START(terracre_state::amazon_base)
ym3526(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &terracre_state::amazon_base_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(amazon_base_map)
+MACHINE_CONFIG_END
-void amazon_state::amazon_1412m2(machine_config &config)
-{
+MACHINE_CONFIG_START(amazon_state::amazon_1412m2)
amazon_base(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &amazon_state::amazon_1412m2_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(amazon_1412m2_map)
NB1412M2(config, m_prot, XTAL(16'000'000)); // divided by 4 maybe
-}
+MACHINE_CONFIG_END
/**************************************
diff --git a/src/mame/drivers/testconsole.cpp b/src/mame/drivers/testconsole.cpp
index 43d2511eb1b..f9e118cc6c2 100644
--- a/src/mame/drivers/testconsole.cpp
+++ b/src/mame/drivers/testconsole.cpp
@@ -175,30 +175,29 @@ INPUT_PORTS_START(whousetc)
INPUT_PORTS_END
-void whouse_testcons_state::whousetc(machine_config &config)
-{
- i8085a_cpu_device &maincpu(I8085A(config, "maincpu", 6.144_MHz_XTAL));
- maincpu.set_addrmap(AS_PROGRAM, &whouse_testcons_state::program_map);
- maincpu.set_addrmap(AS_IO, &whouse_testcons_state::io_map);
+MACHINE_CONFIG_START(whouse_testcons_state::whousetc)
+ MCFG_DEVICE_ADD("maincpu", I8085A, 6.144_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(program_map)
+ MCFG_DEVICE_IO_MAP(io_map)
I8155(config, "i8155", 6.144_MHz_XTAL);
- I8255(config, "i8255", 0);
+ MCFG_DEVICE_ADD("i8255", I8255, 0)
- DL1416B(config, m_dsp[0], u32(0));
- m_dsp[0]->update().set(FUNC(whouse_testcons_state::update_dsp<0>));
+ MCFG_DEVICE_ADD("dsp0", DL1416B, u32(0))
+ MCFG_DL1416_UPDATE_HANDLER(WRITE16(*this, whouse_testcons_state, update_dsp<0>))
- DL1416B(config, m_dsp[1], u32(0));
- m_dsp[1]->update().set(FUNC(whouse_testcons_state::update_dsp<1>));
+ MCFG_DEVICE_ADD("dsp1", DL1416B, u32(0))
+ MCFG_DL1416_UPDATE_HANDLER(WRITE16(*this, whouse_testcons_state, update_dsp<1>))
- DL1416B(config, m_dsp[2], u32(0));
- m_dsp[2]->update().set(FUNC(whouse_testcons_state::update_dsp<2>));
+ MCFG_DEVICE_ADD("dsp2", DL1416B, u32(0))
+ MCFG_DL1416_UPDATE_HANDLER(WRITE16(*this, whouse_testcons_state, update_dsp<2>))
- DL1416B(config, m_dsp[3], u32(0));
- m_dsp[3]->update().set(FUNC(whouse_testcons_state::update_dsp<3>));
+ MCFG_DEVICE_ADD("dsp3", DL1416B, u32(0))
+ MCFG_DL1416_UPDATE_HANDLER(WRITE16(*this, whouse_testcons_state, update_dsp<3>))
config.set_default_layout(layout_whousetc);
-}
+MACHINE_CONFIG_END
ROM_START(whousetc)
diff --git a/src/mame/drivers/testpat.cpp b/src/mame/drivers/testpat.cpp
deleted file mode 100644
index 6806166c15b..00000000000
--- a/src/mame/drivers/testpat.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Sergey Svishchev
-/***************************************************************************
-
-TV test pattern generators
-
-Radio, 1983, N5
- http://radioway.ru/1983/05/generator_telesignalov.html
- http://radioway.ru/1984/04/generator_telesignalov.html
-
-Radio, 1985, N6
- http://radioway.ru/1985/06/generator_ispytatelnyh_signalov.html
-
-***************************************************************************/
-
-#include "emu.h"
-
-#include "machine/netlist.h"
-
-#include "video/fixfreq.h"
-
-#include "netlist/devices/net_lib.h"
-
-#include "machine/nl_tp1983.h"
-#include "machine/nl_tp1985.h"
-
-#include "screen.h"
-
-#include <cmath>
-
-
-namespace {
-
-#define MASTER_CLOCK (4000000)
-#define V_TOTAL_PONG 315
-#define H_TOTAL_PONG 256 // tbc
-
-class tp1983_state : public driver_device
-{
-public:
- tp1983_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_video(*this, "fixfreq")
- {
- }
-
- // devices
- required_device<netlist_mame_device> m_maincpu;
- required_device<fixedfreq_device> m_video;
-
- void tp1983(machine_config &config);
-
-protected:
- // driver_device overrides
- virtual void machine_start() override { }
- virtual void machine_reset() override { }
-
- virtual void video_start() override { }
-
-private:
-};
-
-
-class tp1985_state : public driver_device
-{
-public:
- tp1985_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_video(*this, "fixfreq")
- {
- }
-
- // devices
- required_device<netlist_mame_device> m_maincpu;
- required_device<fixedfreq_device> m_video;
-
- void tp1985(machine_config &config);
-
-protected:
- // driver_device overrides
- virtual void machine_start() override { }
- virtual void machine_reset() override { }
-
- virtual void video_start() override { }
-
-private:
- NETDEV_ANALOG_CALLBACK_MEMBER(video_out_cb);
-};
-
-NETDEV_ANALOG_CALLBACK_MEMBER(tp1985_state::video_out_cb)
-{
- m_video->update_composite_monochrome(4.0 - data, time);
-}
-
-
-static INPUT_PORTS_START(tp1983)
-INPUT_PORTS_END
-
-static INPUT_PORTS_START(tp1985)
-INPUT_PORTS_END
-
-
-MACHINE_CONFIG_START(tp1983_state::tp1983)
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_tp1983);
-
- MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "vid0", "videomix", fixedfreq_device, update_composite_monochrome, "fixfreq")
-
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL_PONG-64,H_TOTAL_PONG-40,H_TOTAL_PONG-8,H_TOTAL_PONG);
- m_video->set_vert_params(V_TOTAL_PONG-19,V_TOTAL_PONG-16,V_TOTAL_PONG-12,V_TOTAL_PONG);
- m_video->set_fieldcount(1);
- m_video->set_threshold(1);
- m_video->set_gain(0.36);
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(tp1985_state::tp1985)
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_tp1985);
-
- MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "vid0", "videomix", tp1985_state, video_out_cb, "")
-
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL_PONG-64,H_TOTAL_PONG-40,H_TOTAL_PONG-8,H_TOTAL_PONG);
- m_video->set_vert_params(V_TOTAL_PONG-19,V_TOTAL_PONG-16,V_TOTAL_PONG-12,V_TOTAL_PONG);
- m_video->set_fieldcount(1);
- m_video->set_threshold(1);
- m_video->set_gain(0.36);
-MACHINE_CONFIG_END
-
-
-ROM_START( tp1983 ) /* dummy to satisfy game entry*/
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
-ROM_END
-
-ROM_START( tp1985 ) /* dummy to satisfy game entry*/
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
-ROM_END
-
-} // anonymous namespace
-
-
-SYST( 1983, tp1983, 0, 0, tp1983, tp1983, tp1983_state, empty_init, "Radio", "TV Test Pattern Generator 1983", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW)
-SYST( 1985, tp1985, 0, 0, tp1985, tp1985, tp1985_state, empty_init, "Radio", "TV Test Pattern Generator 1985", MACHINE_NO_SOUND_HW)
diff --git a/src/mame/drivers/tetrisp2.cpp b/src/mame/drivers/tetrisp2.cpp
index 5947f894901..ec53c4c2994 100644
--- a/src/mame/drivers/tetrisp2.cpp
+++ b/src/mame/drivers/tetrisp2.cpp
@@ -1692,28 +1692,28 @@ void stepstag_state::init_stepstag()
}
-void tetrisp2_state::tetrisp2(machine_config &config)
-{
+MACHINE_CONFIG_START(tetrisp2_state::tetrisp2)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &tetrisp2_state::tetrisp2_map);
- m_maincpu->set_vblank_int("screen", FUNC(tetrisp2_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(tetrisp2_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tetrisp2_state, irq2_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8); /* guess */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(0x140, 0xe0);
- screen.set_visarea(0, 0x140-1, 0, 0xe0-1);
- screen.set_screen_update(FUNC(tetrisp2_state::screen_update_tetrisp2));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x140, 0xe0)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tetrisp2_state, screen_update_tetrisp2)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tetrisp2);
- PALETTE(config, m_palette).set_entries(0x8000);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tetrisp2)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MCFG_VIDEO_START_OVERRIDE(tetrisp2_state,tetrisp2)
@@ -1721,66 +1721,67 @@ void tetrisp2_state::tetrisp2(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ymz280b_device &ymz(YMZ280B(config, "ymz", 16934400));
- ymz.add_route(0, "lspeaker", 1.0);
- ymz.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, 16934400)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
-void tetrisp2_state::nndmseal(machine_config &config)
-{
+MACHINE_CONFIG_START(tetrisp2_state::nndmseal)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(12'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &tetrisp2_state::nndmseal_map);
- m_maincpu->set_vblank_int("screen", FUNC(tetrisp2_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(12'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(nndmseal_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tetrisp2_state, irq2_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(0x180, 0xf0);
- screen.set_visarea(0, 0x180-1, 0, 0xf0-1);
- screen.set_screen_update(FUNC(tetrisp2_state::screen_update_tetrisp2));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x180, 0xf0)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 0, 0xf0-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tetrisp2_state, screen_update_tetrisp2)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tetrisp2);
- PALETTE(config, m_palette).set_entries(0x8000);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tetrisp2)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MCFG_VIDEO_START_OVERRIDE(tetrisp2_state,nndmseal) // bg layer offset
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", XTAL(2'000'000), okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(2'000'000), okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void tetrisp2_state::rockn(machine_config &config)
-{
+MACHINE_CONFIG_START(tetrisp2_state::rockn)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &tetrisp2_state::rockn1_map);
- m_maincpu->set_vblank_int("screen", FUNC(tetrisp2_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(rockn1_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tetrisp2_state, irq2_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(0x140, 0xe0);
- screen.set_visarea(0, 0x140-1, 0, 0xe0-1);
- screen.set_screen_update(FUNC(tetrisp2_state::screen_update_rockntread));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x140, 0xe0)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tetrisp2_state, screen_update_rockntread)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tetrisp2);
- PALETTE(config, m_palette).set_entries(0x8000);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tetrisp2)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MCFG_VIDEO_START_OVERRIDE(tetrisp2_state,rockntread)
@@ -1788,34 +1789,34 @@ void tetrisp2_state::rockn(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ymz280b_device &ymz(YMZ280B(config, "ymz", 16934400));
- ymz.add_route(0, "lspeaker", 1.0);
- ymz.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, 16934400)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
-void tetrisp2_state::rockn2(machine_config &config)
-{
+MACHINE_CONFIG_START(tetrisp2_state::rockn2)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &tetrisp2_state::rockn2_map);
- m_maincpu->set_vblank_int("screen", FUNC(tetrisp2_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(rockn2_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tetrisp2_state, irq2_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(0x140, 0xe0);
- screen.set_visarea(0, 0x140-1, 0, 0xe0-1);
- screen.set_screen_update(FUNC(tetrisp2_state::screen_update_rockntread));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x140, 0xe0)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tetrisp2_state, screen_update_rockntread)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tetrisp2);
- PALETTE(config, m_palette).set_entries(0x8000);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tetrisp2)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MCFG_VIDEO_START_OVERRIDE(tetrisp2_state,rockntread)
@@ -1823,22 +1824,22 @@ void tetrisp2_state::rockn2(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ymz280b_device &ymz(YMZ280B(config, "ymz", 16934400));
- ymz.add_route(0, "lspeaker", 1.0);
- ymz.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, 16934400)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
-void tetrisp2_state::rocknms(machine_config &config)
-{
+MACHINE_CONFIG_START(tetrisp2_state::rocknms)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &tetrisp2_state::rocknms_main_map);
- m_maincpu->set_vblank_int("lscreen", FUNC(tetrisp2_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(rocknms_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("lscreen", tetrisp2_state, irq2_line_hold)
- M68000(config, m_subcpu, 12000000);
- m_subcpu->set_addrmap(AS_PROGRAM, &tetrisp2_state::rocknms_sub_map);
- m_subcpu->set_vblank_int("lscreen", FUNC(tetrisp2_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("sub", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(rocknms_sub_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("lscreen", tetrisp2_state, irq2_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -1846,11 +1847,11 @@ void tetrisp2_state::rocknms(machine_config &config)
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tetrisp2);
- PALETTE(config, m_palette).set_entries(0x8000);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tetrisp2)
+ MCFG_PALETTE_ADD("palette", 0x8000)
- GFXDECODE(config, m_sub_gfxdecode, m_sub_palette, gfx_rocknms_sub);
- PALETTE(config, m_sub_palette).set_entries(0x8000);
+ MCFG_DEVICE_ADD("sub_gfxdecode", GFXDECODE, "sub_palette", gfx_rocknms_sub)
+ MCFG_PALETTE_ADD("sub_palette", 0x8000)
config.set_default_layout(layout_rocknms);
@@ -1876,21 +1877,20 @@ void tetrisp2_state::rocknms(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ymz280b_device &ymz(YMZ280B(config, "ymz", 16934400));
- ymz.add_route(0, "lspeaker", 1.0);
- ymz.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, 16934400)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
-void stepstag_state::stepstag(machine_config &config)
-{
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &stepstag_state::stepstag_map);
- m_maincpu->set_vblank_int("mscreen", FUNC(tetrisp2_state::irq2_line_hold)); // lev 4 triggered by system timer
+MACHINE_CONFIG_START(stepstag_state::stepstag)
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000 )
+ MCFG_DEVICE_PROGRAM_MAP(stepstag_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("mscreen", tetrisp2_state, irq2_line_hold) // lev 4 triggered by system timer
- M68000(config, m_subcpu, 16000000); //??
- m_subcpu->set_addrmap(AS_PROGRAM, &stepstag_state::stepstag_sub_map);
- m_subcpu->set_vblank_int("lscreen", FUNC(tetrisp2_state::irq4_line_hold)); // lev 6 triggered by main CPU
+ MCFG_DEVICE_ADD("sub", M68000, 16000000 ) //??
+ MCFG_DEVICE_PROGRAM_MAP(stepstag_sub_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("lscreen", tetrisp2_state, irq4_line_hold) // lev 6 triggered by main CPU
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -1905,7 +1905,7 @@ void stepstag_state::stepstag(machine_config &config)
lscreen.set_size(0x160, 0xf0);
lscreen.set_visarea(0, 0x160-1, 0, 0xf0-1);
lscreen.set_screen_update(FUNC(stepstag_state::screen_update_stepstag_left));
-// lscreen.set_palette(m_vj_palette_l));
+// lscreen.set_palette("lpalette"));
screen_device &mscreen(SCREEN(config, "mscreen", SCREEN_TYPE_RASTER));
mscreen.set_orientation(ROT0);
@@ -1914,7 +1914,7 @@ void stepstag_state::stepstag(machine_config &config)
mscreen.set_size(0x160, 0xf0);
mscreen.set_visarea(0, 0x160-1, 0, 0xf0-1);
mscreen.set_screen_update(FUNC(stepstag_state::screen_update_stepstag_mid));
-// mscreen.set_palette(m_vj_palette_m));
+// mscreen.set_palette("mpalette"));
screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER));
rscreen.set_orientation(ROT270);;
@@ -1923,20 +1923,20 @@ void stepstag_state::stepstag(machine_config &config)
rscreen.set_size(0x160, 0xf0);
rscreen.set_visarea(0, 0x160-1, 0, 0xf0-1);
rscreen.set_screen_update(FUNC(stepstag_state::screen_update_stepstag_right));
- rscreen.set_palette(m_vj_palette_r);
+ rscreen.set_palette("rpalette");
MCFG_VIDEO_START_OVERRIDE(stepstag_state, stepstag )
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tetrisp2);
- PALETTE(config, m_palette).set_entries(0x8000);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tetrisp2)
+ MCFG_PALETTE_ADD("palette", 0x8000)
- GFXDECODE(config, m_vj_gfxdecode_l, m_vj_palette_l, gfx_vj_lscreen);
- PALETTE(config, m_vj_palette_l).set_entries(0x8000);
+ MCFG_DEVICE_ADD("gfxdecode_l", GFXDECODE, "lpalette", gfx_vj_lscreen)
+ MCFG_PALETTE_ADD("lpalette", 0x8000)
- GFXDECODE(config, m_vj_gfxdecode_m, m_vj_palette_m, gfx_vj_mscreen);
- PALETTE(config, m_vj_palette_m).set_entries(0x8000);
+ MCFG_DEVICE_ADD("gfxdecode_m", GFXDECODE, "mpalette", gfx_vj_mscreen)
+ MCFG_PALETTE_ADD("mpalette", 0x8000)
- GFXDECODE(config, m_vj_gfxdecode_r, m_vj_palette_r, gfx_vj_rscreen);
- PALETTE(config, m_vj_palette_r).set_entries(0x8000);
+ MCFG_DEVICE_ADD("gfxdecode_r", GFXDECODE, "rpalette", gfx_vj_rscreen)
+ MCFG_PALETTE_ADD("rpalette", 0x8000)
config.set_default_layout(layout_stepstag);
@@ -1946,71 +1946,70 @@ void stepstag_state::stepstag(machine_config &config)
GENERIC_LATCH_16(config, m_soundlatch);
- ymz280b_device &ymz(YMZ280B(config, "ymz", 16934400));
- ymz.add_route(0, "lspeaker", 1.0);
- ymz.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, 16934400)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
-void stepstag_state::vjdash(machine_config &config) // 4 Screens
-{
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &stepstag_state::vjdash_map);
- m_maincpu->set_vblank_int("screen", FUNC(tetrisp2_state::irq2_line_hold)); // lev 4 triggered by system timer
+MACHINE_CONFIG_START(stepstag_state::vjdash) // 4 Screens
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000 )
+ MCFG_DEVICE_PROGRAM_MAP(vjdash_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tetrisp2_state, irq2_line_hold) // lev 4 triggered by system timer
- M68000(config, m_subcpu, 16000000); //??
- m_subcpu->set_addrmap(AS_PROGRAM, &stepstag_state::stepstag_sub_map);
- m_subcpu->set_vblank_int("mscreen", FUNC(tetrisp2_state::irq4_line_hold)); // lev 6 triggered by main CPU
+ MCFG_DEVICE_ADD("sub", M68000, 16000000 ) //??
+ MCFG_DEVICE_PROGRAM_MAP(stepstag_sub_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("mscreen", tetrisp2_state, irq4_line_hold) // lev 6 triggered by main CPU
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
WATCHDOG_TIMER(config, "watchdog");
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(0x160, 0xf0);
- screen.set_visarea(0, 0x140-1, 0, 0xe0-1);
- screen.set_screen_update(FUNC(stepstag_state::screen_update_stepstag_main));
-// screen.set_screen_update(FUNC(tetrisp2_state::screen_update_rockntread));
- screen.set_palette(m_palette);
-
- screen_device &lscreen(SCREEN(config, "lscreen", SCREEN_TYPE_RASTER));
- lscreen.set_refresh_hz(30);
- lscreen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- lscreen.set_size(0x160, 0xf0);
- lscreen.set_visarea(0, 0x160-1, 0, 0xf0-1);
- lscreen.set_screen_update(FUNC(stepstag_state::screen_update_stepstag_left));
-// lscreen.set_palette(m_vj_palette_l);
-
- screen_device &mscreen(SCREEN(config, "mscreen", SCREEN_TYPE_RASTER));
- mscreen.set_refresh_hz(30);
- mscreen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- mscreen.set_size(0x160, 0xf0);
- mscreen.set_visarea(0, 0x160-1, 0, 0xf0-1);
- mscreen.set_screen_update(FUNC(stepstag_state::screen_update_stepstag_mid));
-// mscreen.set_palette(m_vj_palette_m);
-
- screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER));
- rscreen.set_refresh_hz(30);
- rscreen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- rscreen.set_size(0x160, 0xf0);
- rscreen.set_visarea(0, 0x160-1, 0, 0xf0-1);
- rscreen.set_screen_update(FUNC(stepstag_state::screen_update_stepstag_right));
- rscreen.set_palette(m_vj_palette_r);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x160, 0xf0)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
+ MCFG_SCREEN_UPDATE_DRIVER(stepstag_state, screen_update_stepstag_main)
+// MCFG_SCREEN_UPDATE_DRIVER(tetrisp2_state, screen_update_rockntread)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_SCREEN_ADD("lscreen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(30)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x160, 0xf0)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x160-1, 0, 0xf0-1)
+ MCFG_SCREEN_UPDATE_DRIVER(stepstag_state, screen_update_stepstag_left)
+// MCFG_SCREEN_PALETTE("lpalette")
+
+ MCFG_SCREEN_ADD("mscreen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(30)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x160, 0xf0)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x160-1, 0, 0xf0-1)
+ MCFG_SCREEN_UPDATE_DRIVER(stepstag_state, screen_update_stepstag_mid)
+// MCFG_SCREEN_PALETTE("mpalette")
+
+ MCFG_SCREEN_ADD("rscreen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(30)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(0x160, 0xf0)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x160-1, 0, 0xf0-1)
+ MCFG_SCREEN_UPDATE_DRIVER(stepstag_state, screen_update_stepstag_right)
+ MCFG_SCREEN_PALETTE("rpalette")
MCFG_VIDEO_START_OVERRIDE(stepstag_state, stepstag )
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tetrisp2);
- PALETTE(config, m_palette).set_entries(0x8000);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tetrisp2)
+ MCFG_PALETTE_ADD("palette", 0x8000)
- GFXDECODE(config, m_vj_gfxdecode_l, m_vj_palette_l, gfx_vj_lscreen);
- PALETTE(config, m_vj_palette_l).set_entries(0x8000);
+ MCFG_DEVICE_ADD("gfxdecode_l", GFXDECODE, "lpalette", gfx_vj_lscreen)
+ MCFG_PALETTE_ADD("lpalette", 0x8000)
- GFXDECODE(config, m_vj_gfxdecode_m, m_vj_palette_m, gfx_vj_mscreen);
- PALETTE(config, m_vj_palette_m).set_entries(0x8000);
+ MCFG_DEVICE_ADD("gfxdecode_m", GFXDECODE, "mpalette", gfx_vj_mscreen)
+ MCFG_PALETTE_ADD("mpalette", 0x8000)
- GFXDECODE(config, m_vj_gfxdecode_r, m_vj_palette_r, gfx_vj_rscreen);
- PALETTE(config, m_vj_palette_r).set_entries(0x8000);
+ MCFG_DEVICE_ADD("gfxdecode_r", GFXDECODE, "rpalette", gfx_vj_rscreen)
+ MCFG_PALETTE_ADD("rpalette", 0x8000)
config.set_default_layout(layout_vjdash);
@@ -2020,10 +2019,10 @@ void stepstag_state::vjdash(machine_config &config) // 4 Screens
GENERIC_LATCH_16(config, m_soundlatch);
- ymz280b_device &ymz(YMZ280B(config, "ymz", 16934400));
- ymz.add_route(0, "lspeaker", 1.0);
- ymz.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymz", YMZ280B, 16934400)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/tg100.cpp b/src/mame/drivers/tg100.cpp
index 57be0fd52b9..4f047d21d19 100644
--- a/src/mame/drivers/tg100.cpp
+++ b/src/mame/drivers/tg100.cpp
@@ -73,21 +73,21 @@ void tg100_state::ymw258_map(address_map &map)
map(0x000000, 0x1fffff).rom();
}
-void tg100_state::tg100(machine_config &config)
-{
+MACHINE_CONFIG_START(tg100_state::tg100)
/* basic machine hardware */
- H83002(config, m_maincpu, XTAL(20'000'000)); /* TODO: correct CPU type (H8/520) */
- m_maincpu->set_addrmap(AS_PROGRAM, &tg100_state::tg100_map);
- m_maincpu->set_addrmap(AS_IO, &tg100_state::tg100_io_map);
+ MCFG_DEVICE_ADD("maincpu", H83002, XTAL(20'000'000)) /* TODO: correct CPU type (H8/520) */
+ MCFG_DEVICE_PROGRAM_MAP( tg100_map )
+ MCFG_DEVICE_IO_MAP( tg100_io_map )
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MULTIPCM(config, m_ymw258, 9400000);
- m_ymw258->set_addrmap(0, &tg100_state::ymw258_map);
- m_ymw258->add_route(0, "lspeaker", 1.0);
- m_ymw258->add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ymw258", MULTIPCM, 9400000)
+ MCFG_DEVICE_ADDRESS_MAP(0, ymw258_map)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+
+MACHINE_CONFIG_END
ROM_START( tg100 )
diff --git a/src/mame/drivers/tgtpanic.cpp b/src/mame/drivers/tgtpanic.cpp
index faeffcb562e..33d194bea99 100644
--- a/src/mame/drivers/tgtpanic.cpp
+++ b/src/mame/drivers/tgtpanic.cpp
@@ -153,22 +153,22 @@ INPUT_PORTS_END
*
*************************************/
-void tgtpanic_state::tgtpanic(machine_config &config)
-{
+MACHINE_CONFIG_START(tgtpanic_state::tgtpanic)
+
/* basic machine hardware */
- Z80(config,m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &tgtpanic_state::prg_map);
- m_maincpu->set_addrmap(AS_IO, &tgtpanic_state::io_map);
- m_maincpu->set_periodic_int(FUNC(tgtpanic_state::irq0_line_hold), attotime::from_hz(20)); /* Unverified */
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(prg_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(tgtpanic_state, irq0_line_hold, 20) /* Unverified */
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60); /* Unverified */
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* Unverified */
- m_screen->set_size(256, 256);
- m_screen->set_visarea(0, 192 - 1, 0, 192 - 1);
- m_screen->set_screen_update(FUNC(tgtpanic_state::screen_update));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60) /* Unverified */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* Unverified */
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 192 - 1, 0, 192 - 1)
+ MCFG_SCREEN_UPDATE_DRIVER(tgtpanic_state, screen_update)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/thedealr.cpp b/src/mame/drivers/thedealr.cpp
index 2519435c9fd..17c6c56ee5f 100644
--- a/src/mame/drivers/thedealr.cpp
+++ b/src/mame/drivers/thedealr.cpp
@@ -75,7 +75,7 @@ private:
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(screen_vblank);
- void thedealr_main(address_map &map);
+ void thedealr(address_map &map);
void thedealr_sub(address_map &map);
virtual void machine_start() override;
@@ -282,7 +282,7 @@ WRITE8_MEMBER(thedealr_state::unk_w)
// popmessage("UNK %02x", data);
}
-void thedealr_state::thedealr_main(address_map &map)
+void thedealr_state::thedealr(address_map &map)
{
map(0x0000, 0x07ff).ram().share("nvram");
@@ -540,16 +540,15 @@ TIMER_DEVICE_CALLBACK_MEMBER(thedealr_state::thedealr_interrupt)
m_maincpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
}
-void thedealr_state::thedealr(machine_config &config)
-{
- // basic machine hardware
- R65C02(config, m_maincpu, XTAL(16'000'000)/8); // 2 MHz?
- m_maincpu->set_addrmap(AS_PROGRAM, &thedealr_state::thedealr_main);
+MACHINE_CONFIG_START(thedealr_state::thedealr)
- TIMER(config, "scantimer").configure_scanline(FUNC(thedealr_state::thedealr_interrupt), "screen", 0, 1);
+ // basic machine hardware
+ MCFG_DEVICE_ADD("maincpu", R65C02, XTAL(16'000'000)/8) // 2 MHz?
+ MCFG_DEVICE_PROGRAM_MAP(thedealr)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", thedealr_state, thedealr_interrupt, "screen", 0, 1)
- R65C02(config, m_subcpu, XTAL(16'000'000)/8); // 2 MHz?
- m_subcpu->set_addrmap(AS_PROGRAM, &thedealr_state::thedealr_sub);
+ MCFG_DEVICE_ADD("subcpu", R65C02, XTAL(16'000'000)/8) // 2 MHz?
+ MCFG_DEVICE_PROGRAM_MAP(thedealr_sub)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -578,7 +577,7 @@ void thedealr_state::thedealr(machine_config &config)
aysnd.port_a_read_callback().set_ioport("DSW2");
aysnd.port_b_read_callback().set_ioport("DSW1");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/thepit.cpp b/src/mame/drivers/thepit.cpp
index b159ad2f1bf..1b883cf0b78 100644
--- a/src/mame/drivers/thepit.cpp
+++ b/src/mame/drivers/thepit.cpp
@@ -715,17 +715,17 @@ INTERRUPT_GEN_MEMBER(thepit_state::vblank_irq)
device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
-void thepit_state::thepit(machine_config &config)
-{
+MACHINE_CONFIG_START(thepit_state::thepit)
+
/* basic machine hardware */
- Z80(config, m_maincpu, PIXEL_CLOCK/2); /* 3.072 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &thepit_state::thepit_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(thepit_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, PIXEL_CLOCK/2) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(thepit_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", thepit_state, vblank_irq)
- z80_device &audiocpu(Z80(config, "audiocpu", SOUND_CLOCK/4)); /* 2.5 MHz */
- audiocpu.set_addrmap(AS_PROGRAM, &thepit_state::audio_map);
- audiocpu.set_addrmap(AS_IO, &thepit_state::audio_io_map);
- audiocpu.set_vblank_int("screen", FUNC(thepit_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CLOCK/4) /* 2.5 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(audio_map)
+ MCFG_DEVICE_IO_MAP(audio_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", thepit_state, irq0_line_hold)
LS259(config, m_mainlatch); // IC42
m_mainlatch->q_out_cb<0>().set(FUNC(thepit_state::nmi_mask_w));
@@ -740,10 +740,10 @@ void thepit_state::thepit(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_thepit);
PALETTE(config, m_palette, FUNC(thepit_state::thepit_palette), 32+8);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- screen.set_screen_update(FUNC(thepit_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(thepit_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -755,7 +755,7 @@ void thepit_state::thepit(machine_config &config)
ay1.add_route(ALL_OUTPUTS, "mono", 0.25);
AY8910(config, "ay2", PIXEL_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
void thepit_state::fitter(machine_config &config)
{
@@ -763,41 +763,43 @@ void thepit_state::fitter(machine_config &config)
m_mainlatch->q_out_cb<2>().set(FUNC(thepit_state::coin_lockout_w));
}
-void thepit_state::desertdn(machine_config &config)
-{
+MACHINE_CONFIG_START(thepit_state::desertdn)
fitter(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &thepit_state::desertdan_main_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(desertdan_main_map)
/* video hardware */
- subdevice<screen_device>("screen")->set_screen_update(FUNC(thepit_state::screen_update_desertdan));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(thepit_state, screen_update_desertdan)
- m_gfxdecode->set_info(gfx_intrepid);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_intrepid)
+MACHINE_CONFIG_END
-void thepit_state::intrepid(machine_config &config)
-{
+MACHINE_CONFIG_START(thepit_state::intrepid)
fitter(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &thepit_state::intrepid_main_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(intrepid_main_map)
m_mainlatch->q_out_cb<5>().set(FUNC(thepit_state::intrepid_graphics_bank_w));
/* video hardware */
- m_gfxdecode->set_info(gfx_intrepid);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_intrepid)
+MACHINE_CONFIG_END
-void thepit_state::suprmous(machine_config &config)
-{
+MACHINE_CONFIG_START(thepit_state::suprmous)
intrepid(config);
+ /* basic machine hardware */
+
/* video hardware */
m_palette->set_init(FUNC(thepit_state::suprmous_palette));
- m_gfxdecode->set_info(gfx_suprmous);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_suprmous)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/thomson.cpp b/src/mame/drivers/thomson.cpp
index a096c39acf7..e80dce1a3b8 100644
--- a/src/mame/drivers/thomson.cpp
+++ b/src/mame/drivers/thomson.cpp
@@ -300,7 +300,7 @@ T9000 (1980)
Early TO7 prototype.
The hardware seems to be the exactly same. Only the BIOS is different.
It has some bug that were corrected later for the TO7.
-Actually, the two computers are indistinguishable, except for the different
+Actually, the two computers are undistinguishable, except for the different
startup screen, and a couple BIOS addresses.
They can run the same software and accept the same devices and extensions.
@@ -309,7 +309,7 @@ They can run the same software and accept the same devices and extensions.
/* ------------ address maps ------------ */
-void thomson_state::to7_map(address_map &map)
+void thomson_state::to7(address_map &map)
{
map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(FUNC(thomson_state::to7_cartridge_w)); /* 4 * 16 KB */
@@ -625,58 +625,65 @@ MACHINE_CONFIG_START(thomson_state::to7_base)
MCFG_MACHINE_RESET_OVERRIDE( thomson_state, to7 )
/* cpu */
- MC6809E(config, m_maincpu, 16_MHz_XTAL / 16);
- m_maincpu->set_addrmap(AS_PROGRAM, &thomson_state::to7_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, 16_MHz_XTAL / 16)
+ MCFG_DEVICE_PROGRAM_MAP(to7)
- INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline(m_maincpu, M6809_IRQ_LINE);
+ MCFG_INPUT_MERGER_ANY_HIGH("mainirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", M6809_IRQ_LINE))
- INPUT_MERGER_ANY_HIGH(config, "mainfirq").output_handler().set_inputline(m_maincpu, M6809_FIRQ_LINE);
+ MCFG_INPUT_MERGER_ANY_HIGH("mainfirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", M6809_FIRQ_LINE))
/* video */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(/*50*/ 1./0.019968);
- m_screen->set_size(THOM_TOTAL_WIDTH * 2, THOM_TOTAL_HEIGHT);
- m_screen->set_visarea(0, THOM_TOTAL_WIDTH * 2 - 1, 0, THOM_TOTAL_HEIGHT - 1);
- m_screen->set_screen_update(FUNC(thomson_state::screen_update_thom));
- m_screen->screen_vblank().set(FUNC(thomson_state::thom_vblank));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE ( /*50*/ 1./0.019968 )
+ MCFG_SCREEN_SIZE ( THOM_TOTAL_WIDTH * 2, THOM_TOTAL_HEIGHT )
+ MCFG_SCREEN_VISIBLE_AREA ( 0, THOM_TOTAL_WIDTH * 2 - 1,
+ 0, THOM_TOTAL_HEIGHT - 1 )
+ MCFG_SCREEN_UPDATE_DRIVER( thomson_state, screen_update_thom )
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, thomson_state, thom_vblank))
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(thomson_state::thom_palette), 4097); // 12-bit color + transparency
MCFG_VIDEO_START_OVERRIDE( thomson_state, thom )
/* sound */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, "buzzer", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- DAC_6BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // 6-bit game extension R-2R DAC (R=10K)
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "buzzer", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("buzzer", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("dac", DAC_6BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // 6-bit game extension R-2R DAC (R=10K)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "buzzer", 1.0, DAC_VREF_POS_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
/* speech synthesis */
- MEA8000(config, m_mea8000, 3840000).add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD("mea8000", MEA8000, 3840000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
/* cassette */
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(to7_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("to_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(to7_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("to_cass")
/* floppy */
- MC6843(config, m_mc6843, 16_MHz_XTAL / 16 / 2);
-
- LEGACY_FLOPPY(config, m_floppy_image[0], 0, &thomson_floppy_interface);
- m_floppy_image[0]->out_idx_cb().set(FUNC(thomson_state::fdc_index_0_w));
- LEGACY_FLOPPY(config, m_floppy_image[1], 0, &thomson_floppy_interface);
- m_floppy_image[1]->out_idx_cb().set(FUNC(thomson_state::fdc_index_1_w));
- LEGACY_FLOPPY(config, m_floppy_image[2], 0, &thomson_floppy_interface);
- m_floppy_image[2]->out_idx_cb().set(FUNC(thomson_state::fdc_index_2_w));
- LEGACY_FLOPPY(config, m_floppy_image[3], 0, &thomson_floppy_interface);
- m_floppy_image[3]->out_idx_cb().set(FUNC(thomson_state::fdc_index_3_w));
+ MCFG_DEVICE_ADD("mc6843", MC6843, 16_MHz_XTAL / 16 / 2)
+
+ MCFG_DEVICE_ADD(m_floppy_image[0], LEGACY_FLOPPY, 0)
+ MCFG_LEGACY_FLOPPY_CONFIG(thomson_floppy_interface)
+ MCFG_LEGACY_FLOPPY_IDX_CB(WRITELINE(*this, thomson_state, fdc_index_0_w))
+ MCFG_DEVICE_ADD(m_floppy_image[1], LEGACY_FLOPPY, 0)
+ MCFG_LEGACY_FLOPPY_CONFIG(thomson_floppy_interface)
+ MCFG_LEGACY_FLOPPY_IDX_CB(WRITELINE(*this, thomson_state, fdc_index_1_w))
+ MCFG_DEVICE_ADD(m_floppy_image[2], LEGACY_FLOPPY, 0)
+ MCFG_LEGACY_FLOPPY_CONFIG(thomson_floppy_interface)
+ MCFG_LEGACY_FLOPPY_IDX_CB(WRITELINE(*this, thomson_state, fdc_index_2_w))
+ MCFG_DEVICE_ADD(m_floppy_image[3], LEGACY_FLOPPY, 0)
+ MCFG_LEGACY_FLOPPY_CONFIG(thomson_floppy_interface)
+ MCFG_LEGACY_FLOPPY_IDX_CB(WRITELINE(*this, thomson_state, fdc_index_3_w))
WD2793(config, m_wd2793_fdc, 16_MHz_XTAL / 16);
- FLOPPY_CONNECTOR(config, "wd2793:0", cd90_640_floppies, "dd", thomson_state::cd90_640_formats);
- FLOPPY_CONNECTOR(config, "wd2793:1", cd90_640_floppies, "dd", thomson_state::cd90_640_formats);
+ MCFG_FLOPPY_DRIVE_ADD("wd2793:0", cd90_640_floppies, "dd", thomson_state::cd90_640_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd2793:1", cd90_640_floppies, "dd", thomson_state::cd90_640_formats)
/* network */
@@ -726,8 +733,9 @@ MACHINE_CONFIG_START(thomson_state::to7_base)
m_acia->txd_handler().set(FUNC(thomson_state::to7_modem_tx_w));
m_acia->irq_handler().set(FUNC(thomson_state::to7_modem_cb));
- clock_device &acia_clock(CLOCK(config, "acia_clock", 1200)); /* 1200 bauds, might be divided by 16 */
- acia_clock.signal_handler().set(FUNC(thomson_state::write_acia_clock));
+ MCFG_DEVICE_ADD("acia_clock", CLOCK, 1200) /* 1200 bauds, might be divided by 16 */
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, thomson_state, write_acia_clock))
+
/* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "to_cart")
@@ -738,10 +746,10 @@ MACHINE_CONFIG_START(thomson_state::to7_base)
RAM(config, m_ram).set_default_size("40K").set_extra_options("24K,48K");
/* software lists */
- SOFTWARE_LIST(config, "to7_cart_list").set_original("to7_cart");
- SOFTWARE_LIST(config, "to7_cass_list").set_original("to7_cass");
- SOFTWARE_LIST(config, "to_flop_list").set_original("to_flop");
- SOFTWARE_LIST(config, "to7_qd_list").set_original("to7_qd");
+ MCFG_SOFTWARE_LIST_ADD("to7_cart_list","to7_cart")
+ MCFG_SOFTWARE_LIST_ADD("to7_cass_list","to7_cass")
+ MCFG_SOFTWARE_LIST_ADD("to_flop_list","to_flop")
+ MCFG_SOFTWARE_LIST_ADD("to7_qd_list","to7_qd")
MACHINE_CONFIG_END
void thomson_state::to7(machine_config &config)
@@ -817,7 +825,7 @@ In arabic mode, Ctrl+E / Ctrl+X to start / stop typing in-line latin.
**********************************************************************/
-void thomson_state::to770_map(address_map &map)
+void thomson_state::to770(address_map &map)
{
map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(FUNC(thomson_state::to7_cartridge_w)); /* 4 * 16 KB */
@@ -922,13 +930,13 @@ INPUT_PORTS_END
/* ------------ driver ------------ */
-void thomson_state::to770(machine_config &config)
-{
+MACHINE_CONFIG_START(thomson_state::to770)
to7(config);
MCFG_MACHINE_START_OVERRIDE( thomson_state, to770 )
MCFG_MACHINE_RESET_OVERRIDE( thomson_state, to770 )
- m_maincpu->set_addrmap(AS_PROGRAM, &thomson_state::to770_map);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP ( to770)
m_pia_sys->readpa_handler().set(FUNC(thomson_state::to770_sys_porta_in));
m_pia_sys->readpb_handler().set_constant(0);
@@ -940,16 +948,16 @@ void thomson_state::to770(machine_config &config)
/* internal ram */
m_ram->set_default_size("128K").set_extra_options("64K");
- SOFTWARE_LIST(config, "t770_cart_list").set_original("to770_cart");
- SOFTWARE_LIST(config.replace(), "to7_cart_list").set_compatible("to7_cart");
-}
+ MCFG_DEVICE_REMOVE("to7_cart_list")
+ MCFG_SOFTWARE_LIST_ADD("t770_cart_list","to770_cart")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("to7_cart_list","to7_cart")
+MACHINE_CONFIG_END
-void thomson_state::to770a(machine_config &config)
-{
+MACHINE_CONFIG_START(thomson_state::to770a)
to770(config);
- config.device_remove("t770_cart_list");
- SOFTWARE_LIST(config, "t770a_cart_list").set_original("to770a_cart");
-}
+ MCFG_DEVICE_REMOVE("t770_cart_list")
+ MCFG_SOFTWARE_LIST_ADD("t770a_cart_list","to770a_cart")
+MACHINE_CONFIG_END
COMP( 1984, to770, 0, 0, to770, to770, thomson_state, empty_init, "Thomson", "TO7/70", 0 )
@@ -1015,7 +1023,7 @@ Differences include:
**********************************************************************/
-void thomson_state::mo5_map(address_map &map)
+void thomson_state::mo5(address_map &map)
{
map(0x0000, 0x1fff).bankr(THOM_VRAM_BANK).w(FUNC(thomson_state::to770_vram_w));
@@ -1116,10 +1124,12 @@ MACHINE_CONFIG_START(thomson_state::mo5)
MCFG_MACHINE_START_OVERRIDE( thomson_state, mo5 )
MCFG_MACHINE_RESET_OVERRIDE( thomson_state, mo5 )
- m_maincpu->set_addrmap(AS_PROGRAM, &thomson_state::mo5_map);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP ( mo5)
- m_cassette->set_formats(mo5_cassette_formats);
- m_cassette->set_interface("mo_cass");
+ MCFG_CASSETTE_MODIFY( "cassette" )
+ MCFG_CASSETTE_FORMATS(mo5_cassette_formats)
+ MCFG_CASSETTE_INTERFACE("mo_cass")
subdevice<palette_device>("palette")->set_init(FUNC(thomson_state::mo5_palette));
@@ -1131,29 +1141,28 @@ MACHINE_CONFIG_START(thomson_state::mo5)
m_pia_sys->cb2_handler().set_nop();
m_pia_sys->irqb_handler().set("mainirq", FUNC(input_merger_device::in_w<1>)); // WARNING: differs from TO7 !
- config.device_remove("cartslot");
+ MCFG_DEVICE_REMOVE("cartslot")
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "mo_cart")
MCFG_GENERIC_EXTENSIONS("m5,rom")
MCFG_GENERIC_LOAD(thomson_state, mo5_cartridge)
- config.device_remove("to7_cart_list");
- config.device_remove("to7_cass_list");
- config.device_remove("to_flop_list");
- config.device_remove("to7_qd_list");
+ MCFG_DEVICE_REMOVE("to7_cart_list")
+ MCFG_DEVICE_REMOVE("to7_cass_list")
+ MCFG_DEVICE_REMOVE("to_flop_list")
+ MCFG_DEVICE_REMOVE("to7_qd_list")
- SOFTWARE_LIST(config, "mo5_cart_list").set_original("mo5_cart");
- SOFTWARE_LIST(config, "mo5_cass_list").set_original("mo5_cass");
- SOFTWARE_LIST(config, "mo5_flop_list").set_original("mo5_flop");
- SOFTWARE_LIST(config, "mo5_qd_list").set_original("mo5_qd");
+ MCFG_SOFTWARE_LIST_ADD("mo5_cart_list","mo5_cart")
+ MCFG_SOFTWARE_LIST_ADD("mo5_cass_list","mo5_cass")
+ MCFG_SOFTWARE_LIST_ADD("mo5_flop_list","mo5_flop")
+ MCFG_SOFTWARE_LIST_ADD("mo5_qd_list","mo5_qd")
/* internal ram */
m_ram->set_default_size("112K");
MACHINE_CONFIG_END
-void thomson_state::mo5e(machine_config &config)
-{
+MACHINE_CONFIG_START(thomson_state::mo5e)
mo5(config);
-}
+MACHINE_CONFIG_END
COMP( 1984, mo5, 0, 0, mo5, mo5, thomson_state, empty_init, "Thomson", "MO5", 0 )
@@ -1233,7 +1242,7 @@ It was replaced quickly with the improved TO9+.
**********************************************************************/
-void thomson_state::to9_map(address_map &map)
+void thomson_state::to9(address_map &map)
{
map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(FUNC(thomson_state::to9_cartridge_w));/* 4 * 16 KB */
@@ -1468,14 +1477,14 @@ INPUT_PORTS_END
/* ------------ driver ------------ */
-void thomson_state::to9(machine_config &config)
-{
+MACHINE_CONFIG_START(thomson_state::to9)
to7(config);
MCFG_MACHINE_START_OVERRIDE( thomson_state, to9 )
MCFG_MACHINE_RESET_OVERRIDE( thomson_state, to9 )
- m_maincpu->set_addrmap(AS_PROGRAM, &thomson_state::to9_map);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP ( to9)
m_pia_sys->readpa_handler().set(FUNC(thomson_state::to9_sys_porta_in));
m_pia_sys->readpb_handler().set_constant(0);
@@ -1491,7 +1500,7 @@ void thomson_state::to9(machine_config &config)
/* internal ram */
m_ram->set_default_size("192K").set_extra_options("128K");
-}
+MACHINE_CONFIG_END
COMP( 1985, to9, 0, 0, to9, to9, thomson_state, empty_init, "Thomson", "TO9", MACHINE_IMPERFECT_COLORS )
@@ -1560,7 +1569,7 @@ The TO8D is simply a TO8 with an integrated 3"1/2 floppy drive.
**********************************************************************/
-void thomson_state::to8_map(address_map &map)
+void thomson_state::to8(address_map &map)
{
map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(FUNC(thomson_state::to8_cartridge_w)); /* 4 * 16 KB */
@@ -1689,15 +1698,15 @@ INPUT_PORTS_END
/* ------------ driver ------------ */
-void thomson_state::to8(machine_config &config)
-{
+MACHINE_CONFIG_START(thomson_state::to8)
to7(config);
MCFG_MACHINE_START_OVERRIDE( thomson_state, to8 )
MCFG_MACHINE_RESET_OVERRIDE( thomson_state, to8 )
- m_maincpu->set_addrmap(AS_PROGRAM, &thomson_state::to8_map);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP ( to8)
- //MC6804(config, "kbdmcu", 11_MHz_XTAL);
+ //MCFG_DEVICE_ADD("kbdmcu", MC6804, 11_MHz_XTAL)
m_pia_sys->readpa_handler().set(FUNC(thomson_state::to8_sys_porta_in));
m_pia_sys->readpb_handler().set_constant(0);
@@ -1716,16 +1725,18 @@ void thomson_state::to8(machine_config &config)
/* internal ram */
m_ram->set_default_size("512K").set_extra_options("256K");
- SOFTWARE_LIST(config, "to8_cass_list").set_original("to8_cass");
- SOFTWARE_LIST(config, "to8_qd_list").set_original("to8_qd");
- SOFTWARE_LIST(config.replace(), "to7_cass_list").set_compatible("to7_cass");
- SOFTWARE_LIST(config.replace(), "to7_qd_list").set_compatible("to7_qd");
-}
+ MCFG_DEVICE_REMOVE("to7_cass_list")
+ MCFG_DEVICE_REMOVE("to7_qd_list")
-void thomson_state::to8d(machine_config &config)
-{
+ MCFG_SOFTWARE_LIST_ADD("to8_cass_list", "to8_cass")
+ MCFG_SOFTWARE_LIST_ADD("to8_qd_list", "to8_qd")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("to7_cass_list", "to7_cass")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("to7_qd_list", "to7_qd")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(thomson_state::to8d)
to8(config);
-}
+MACHINE_CONFIG_END
COMP( 1986, to8, 0, 0, to8, to8, thomson_state, empty_init, "Thomson", "TO8", 0 )
@@ -1770,7 +1781,7 @@ The differences with the TO8 are:
**********************************************************************/
-void thomson_state::to9p_map(address_map &map)
+void thomson_state::to9p(address_map &map)
{
map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(FUNC(thomson_state::to8_cartridge_w)); /* 4 * 16 KB */
@@ -1851,13 +1862,13 @@ INPUT_PORTS_END
/* ------------ driver ------------ */
-void thomson_state::to9p(machine_config &config)
-{
+MACHINE_CONFIG_START(thomson_state::to9p)
to7(config);
MCFG_MACHINE_START_OVERRIDE( thomson_state, to9p )
MCFG_MACHINE_RESET_OVERRIDE( thomson_state, to9p )
- m_maincpu->set_addrmap(AS_PROGRAM, &thomson_state::to9p_map);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP ( to9p)
m_pia_sys->readpa_handler().set(FUNC(thomson_state::to8_sys_porta_in));
m_pia_sys->readpb_handler().set_constant(0);
@@ -1877,11 +1888,14 @@ void thomson_state::to9p(machine_config &config)
/* internal ram */
m_ram->set_default_size("512K");
- SOFTWARE_LIST(config, "to8_cass_list").set_original("to8_cass");
- SOFTWARE_LIST(config, "to8_qd_list").set_original("to8_qd");
- SOFTWARE_LIST(config.replace(), "to7_cass_list").set_compatible("to7_cass");
- SOFTWARE_LIST(config.replace(), "to7_qd_list").set_compatible("to7_qd");
-}
+ MCFG_DEVICE_REMOVE("to7_cass_list")
+ MCFG_DEVICE_REMOVE("to7_qd_list")
+
+ MCFG_SOFTWARE_LIST_ADD("to8_cass_list", "to8_cass")
+ MCFG_SOFTWARE_LIST_ADD("to8_qd_list", "to8_qd")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("to7_cass_list", "to7_cass")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("to7_qd_list", "to7_qd")
+MACHINE_CONFIG_END
COMP( 1986, to9p, 0, 0, to9p, to9p, thomson_state, empty_init, "Thomson", "TO9+", 0 )
@@ -1945,7 +1959,7 @@ a PC XT.
**********************************************************************/
-void thomson_state::mo6_map(address_map &map)
+void thomson_state::mo6(address_map &map)
{
map(0x0000, 0x1fff).bankr(THOM_VRAM_BANK).w(FUNC(thomson_state::to770_vram_w));
@@ -2199,10 +2213,12 @@ MACHINE_CONFIG_START(thomson_state::mo6)
MCFG_MACHINE_START_OVERRIDE( thomson_state, mo6 )
MCFG_MACHINE_RESET_OVERRIDE( thomson_state, mo6 )
- m_maincpu->set_addrmap(AS_PROGRAM, &thomson_state::mo6_map);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP ( mo6)
- m_cassette->set_formats(mo5_cassette_formats);
- m_cassette->set_interface("mo_cass");
+ MCFG_CASSETTE_MODIFY( "cassette" )
+ MCFG_CASSETTE_FORMATS(mo5_cassette_formats)
+ MCFG_CASSETTE_INTERFACE("mo_cass")
m_pia_sys->readpa_handler().set(FUNC(thomson_state::mo6_sys_porta_in));
m_pia_sys->readpb_handler().set(FUNC(thomson_state::mo6_sys_portb_in));
@@ -2218,10 +2234,9 @@ MACHINE_CONFIG_START(thomson_state::mo6)
CENTRONICS(config, m_centronics, centronics_devices, "printer");
m_centronics->busy_handler().set(FUNC(thomson_state::write_centronics_busy));
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
- config.device_remove("cartslot");
+ MCFG_DEVICE_REMOVE("cartslot")
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "mo_cart")
MCFG_GENERIC_EXTENSIONS("m5,rom")
MCFG_GENERIC_LOAD(thomson_state, mo5_cartridge)
@@ -2229,35 +2244,34 @@ MACHINE_CONFIG_START(thomson_state::mo6)
/* internal ram */
m_ram->set_default_size("128K");
- config.device_remove("to7_cart_list");
- config.device_remove("to7_cass_list");
- config.device_remove("to_flop_list");
- config.device_remove("to7_qd_list");
+ MCFG_DEVICE_REMOVE("to7_cart_list")
+ MCFG_DEVICE_REMOVE("to7_cass_list")
+ MCFG_DEVICE_REMOVE("to_flop_list")
+ MCFG_DEVICE_REMOVE("to7_qd_list")
- SOFTWARE_LIST(config, "mo6_cass_list").set_original("mo6_cass");
- SOFTWARE_LIST(config, "mo6_flop_list").set_original("mo6_flop");
+ MCFG_SOFTWARE_LIST_ADD("mo6_cass_list","mo6_cass")
+ MCFG_SOFTWARE_LIST_ADD("mo6_flop_list","mo6_flop")
- SOFTWARE_LIST(config, "mo5_cart_list").set_compatible("mo5_cart");
- SOFTWARE_LIST(config, "mo5_cass_list").set_compatible("mo5_cass");
- SOFTWARE_LIST(config, "mo5_flop_list").set_compatible("mo5_flop");
- SOFTWARE_LIST(config, "mo5_qd_list").set_compatible("mo5_qd");
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("mo5_cart_list","mo5_cart")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("mo5_cass_list","mo5_cass")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("mo5_flop_list","mo5_flop")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("mo5_qd_list","mo5_qd")
MACHINE_CONFIG_END
-void thomson_state::pro128(machine_config &config)
-{
+MACHINE_CONFIG_START(thomson_state::pro128)
mo6(config);
- config.device_remove("mo6_cass_list");
- config.device_remove("mo6_flop_list");
+ MCFG_DEVICE_REMOVE("mo6_cass_list")
+ MCFG_DEVICE_REMOVE("mo6_flop_list")
- config.device_remove("mo5_cart_list");
- config.device_remove("mo5_cass_list");
- config.device_remove("mo5_flop_list");
- config.device_remove("mo5_qd_list");
+ MCFG_DEVICE_REMOVE("mo5_cart_list")
+ MCFG_DEVICE_REMOVE("mo5_cass_list")
+ MCFG_DEVICE_REMOVE("mo5_flop_list")
+ MCFG_DEVICE_REMOVE("mo5_qd_list")
- SOFTWARE_LIST(config, "p128_cart_list").set_original("pro128_cart");
- SOFTWARE_LIST(config, "p128_cass_list").set_original("pro128_cass");
- SOFTWARE_LIST(config, "p128_flop_list").set_original("pro128_flop");
-}
+ MCFG_SOFTWARE_LIST_ADD("p128_cart_list","pro128_cart")
+ MCFG_SOFTWARE_LIST_ADD("p128_cass_list","pro128_cass")
+ MCFG_SOFTWARE_LIST_ADD("p128_flop_list","pro128_flop")
+MACHINE_CONFIG_END
COMP( 1986, mo6, 0, 0, mo6, mo6, thomson_state, empty_init, "Thomson", "MO6", 0 )
@@ -2294,7 +2308,7 @@ Here are the differences between the MO6 and MO5NR:
**********************************************************************/
-void thomson_state::mo5nr_map(address_map &map)
+void thomson_state::mo5nr(address_map &map)
{
map(0x0000, 0x1fff).bankr(THOM_VRAM_BANK).w(FUNC(thomson_state::to770_vram_w));
@@ -2464,10 +2478,12 @@ MACHINE_CONFIG_START(thomson_state::mo5nr)
MCFG_MACHINE_START_OVERRIDE( thomson_state, mo5nr )
MCFG_MACHINE_RESET_OVERRIDE( thomson_state, mo5nr )
- m_maincpu->set_addrmap(AS_PROGRAM, &thomson_state::mo5nr_map);
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP ( mo5nr)
- m_cassette->set_formats(mo5_cassette_formats);
- m_cassette->set_interface("mo_cass");
+ MCFG_CASSETTE_MODIFY( "cassette" )
+ MCFG_CASSETTE_FORMATS(mo5_cassette_formats)
+ MCFG_CASSETTE_INTERFACE("mo_cass")
m_pia_sys->readpa_handler().set(FUNC(thomson_state::mo6_sys_porta_in));
m_pia_sys->readpb_handler().set(FUNC(thomson_state::mo5nr_sys_portb_in));
@@ -2484,11 +2500,9 @@ MACHINE_CONFIG_START(thomson_state::mo5nr)
m_centronics->busy_handler().set(FUNC(thomson_state::write_centronics_busy));
INPUT_BUFFER(config, "cent_data_in");
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
-
- config.device_remove("cartslot");
+ MCFG_DEVICE_REMOVE("cartslot")
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "mo_cart")
MCFG_GENERIC_EXTENSIONS("m5,rom")
MCFG_GENERIC_LOAD(thomson_state, mo5_cartridge)
@@ -2496,18 +2510,18 @@ MACHINE_CONFIG_START(thomson_state::mo5nr)
/* internal ram */
m_ram->set_default_size("128K");
- config.device_remove("to7_cart_list");
- config.device_remove("to7_cass_list");
- config.device_remove("to_flop_list");
- config.device_remove("to7_qd_list");
+ MCFG_DEVICE_REMOVE("to7_cart_list")
+ MCFG_DEVICE_REMOVE("to7_cass_list")
+ MCFG_DEVICE_REMOVE("to_flop_list")
+ MCFG_DEVICE_REMOVE("to7_qd_list")
- SOFTWARE_LIST(config, "mo6_cass_list").set_original("mo6_cass");
- SOFTWARE_LIST(config, "mo6_flop_list").set_original("mo6_flop");
+ MCFG_SOFTWARE_LIST_ADD("mo6_cass_list","mo6_cass")
+ MCFG_SOFTWARE_LIST_ADD("mo6_flop_list","mo6_flop")
- SOFTWARE_LIST(config, "mo5_cart_list").set_compatible("mo5_cart");
- SOFTWARE_LIST(config, "mo5_cass_list").set_compatible("mo5_cass");
- SOFTWARE_LIST(config, "mo5_flop_list").set_compatible("mo5_flop");
- SOFTWARE_LIST(config, "mo5_qd_list").set_compatible("mo5_qd");
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("mo5_cart_list","mo5_cart")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("mo5_cass_list","mo5_cass")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("mo5_flop_list","mo5_flop")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("mo5_qd_list","mo5_qd")
MACHINE_CONFIG_END
COMP( 1986, mo5nr, 0, 0, mo5nr, mo5nr, thomson_state, empty_init, "Thomson", "MO5 NR", 0 )
diff --git a/src/mame/drivers/thoop2.cpp b/src/mame/drivers/thoop2.cpp
index b3f201a1ec2..8e1c0552dea 100644
--- a/src/mame/drivers/thoop2.cpp
+++ b/src/mame/drivers/thoop2.cpp
@@ -263,15 +263,15 @@ static GFXDECODE_START( gfx_thoop2 )
GFXDECODE_END
-void thoop2_state::thoop2(machine_config &config)
-{
+MACHINE_CONFIG_START(thoop2_state::thoop2)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000) / 2); // 12MHz verified
- m_maincpu->set_addrmap(AS_PROGRAM, &thoop2_state::thoop2_map);
- m_maincpu->set_vblank_int("screen", FUNC(thoop2_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000,XTAL(24'000'000) / 2) // 12MHz verified
+ MCFG_DEVICE_PROGRAM_MAP(thoop2_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", thoop2_state, irq6_line_hold)
- gaelco_ds5002fp_device &ds5002fp(GAELCO_DS5002FP(config, "gaelco_ds5002fp", XTAL(24'000'000) / 2)); // 12MHz verified
- ds5002fp.set_addrmap(0, &thoop2_state::mcu_hostmem_map);
+ MCFG_DEVICE_ADD("gaelco_ds5002fp", GAELCO_DS5002FP, XTAL(24'000'000) / 2) // 12MHz verified
+ MCFG_DEVICE_ADDRESS_MAP(0, mcu_hostmem_map)
LS259(config, m_outlatch);
m_outlatch->q_out_cb<0>().set(FUNC(thoop2_state::coin1_lockout_w));
@@ -284,24 +284,24 @@ void thoop2_state::thoop2(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.24);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*16, 32*16);
- screen.set_visarea(0, 320-1, 16, 256-1);
- screen.set_screen_update(FUNC(thoop2_state::screen_update));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_thoop2);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.24)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*16, 32*16)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(thoop2_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_thoop2)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 1024);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(1'000'000), okim6295_device::PIN7_HIGH)); // 1MHz resonator - pin 7 not connected
- oki.set_addrmap(0, &thoop2_state::oki_map);
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(1'000'000), okim6295_device::PIN7_HIGH) // 1MHz resonator - pin 7 not connected
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/thunderj.cpp b/src/mame/drivers/thunderj.cpp
index 53403e0eaa3..c75c7a9afe1 100644
--- a/src/mame/drivers/thunderj.cpp
+++ b/src/mame/drivers/thunderj.cpp
@@ -241,24 +241,24 @@ GFXDECODE_END
*
*************************************/
-void thunderj_state::thunderj(machine_config &config)
-{
+MACHINE_CONFIG_START(thunderj_state::thunderj)
+
/* basic machine hardware */
- M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &thunderj_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- M68000(config, m_extra, ATARI_CLOCK_14MHz/2);
- m_extra->set_addrmap(AS_PROGRAM, &thunderj_state::extra_map);
+ MCFG_DEVICE_ADD("extra", M68000, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(extra_map)
EEPROM_2816(config, "eeprom").lock_after_write(true);
WATCHDOG_TIMER(config, "watchdog");
/* perfect synchronization due to shared RAM */
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
/* video hardware */
- GFXDECODE(config, "gfxdecode", "palette", gfx_thunderj);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_thunderj)
PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 2048);
ATARI_VAD(config, m_vad, 0, m_screen);
@@ -268,13 +268,13 @@ void thunderj_state::thunderj(machine_config &config)
TILEMAP(config, "vad:alpha", "gfxdecode", 2, 8, 8, TILEMAP_SCAN_ROWS, 64, 32, 0).set_info_callback(DEVICE_SELF_OWNER, FUNC(thunderj_state::get_alpha_tile_info));
ATARI_MOTION_OBJECTS(config, "vad:mob", 0, m_screen, thunderj_state::s_mob_config).set_gfxdecode("gfxdecode");
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses a VAD chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(thunderj_state::screen_update_thunderj));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(thunderj_state, screen_update_thunderj)
+ MCFG_SCREEN_PALETTE("palette")
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -283,7 +283,7 @@ void thunderj_state::thunderj(machine_config &config)
m_jsa->main_int_cb().set_inputline(m_maincpu, M68K_IRQ_6);
m_jsa->test_read_cb().set_ioport("260012").bit(1);
m_jsa->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ti74.cpp b/src/mame/drivers/ti74.cpp
index ba84d7fd57d..4549c705a43 100644
--- a/src/mame/drivers/ti74.cpp
+++ b/src/mame/drivers/ti74.cpp
@@ -280,7 +280,7 @@ void ti74_state::main_map(address_map &map)
map.unmap_value_high();
map(0x1000, 0x1001).rw("hd44780", FUNC(hd44780_device::read), FUNC(hd44780_device::write));
map(0x2000, 0x3fff).ram().share("sysram.ic3");
- //map(0x4000, 0xbfff) // mapped by the cartslot
+ //AM_RANGE(0x4000, 0xbfff) // mapped by the cartslot
map(0xc000, 0xdfff).bankr("sysbank");
}
@@ -504,7 +504,7 @@ void ti74_state::machine_start()
m_lamps.resolve();
if (m_cart->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0xbfff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0xbfff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
membank("sysbank")->configure_entries(0, 4, memregion("system")->base(), 0x2000);
membank("sysbank")->set_entry(0);
@@ -530,28 +530,27 @@ MACHINE_CONFIG_START(ti74_state::ti74)
NVRAM(config, "sysram.ic3", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(60); // arbitrary
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(6*31+1, 9*1+1+1);
- screen.set_visarea_full();
- screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
- screen.set_palette("palette");
-
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60) // arbitrary
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(6*31+1, 9*1+1+1)
+ MCFG_SCREEN_VISIBLE_AREA(0, 6*31, 0, 9*1+1)
config.set_default_layout(layout_ti74);
+ MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(ti74_state::ti74_palette), 3);
- hd44780_device &hd44780(HD44780(config, "hd44780", 0)); // 270kHz
- hd44780.set_lcd_size(2, 16); // 2*16 internal
- hd44780.set_pixel_update_cb(FUNC(ti74_state::ti74_pixel_update), this);
+ MCFG_HD44780_ADD("hd44780") // 270kHz
+ MCFG_HD44780_LCD_SIZE(2, 16) // 2*16 internal
+ MCFG_HD44780_PIXEL_UPDATE_CB(ti74_state,ti74_pixel_update)
/* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "ti74_cart")
MCFG_GENERIC_EXTENSIONS("bin,rom,256")
MCFG_GENERIC_LOAD(ti74_state, ti74_cartridge)
- SOFTWARE_LIST(config, "cart_list").set_original("ti74_cart");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "ti74_cart")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(ti74_state::ti95)
@@ -566,28 +565,27 @@ MACHINE_CONFIG_START(ti74_state::ti95)
NVRAM(config, "sysram.ic3", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(60); // arbitrary
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(200, 20);
- screen.set_visarea_full();
- screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
- screen.set_palette("palette");
-
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60) // arbitrary
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(200, 20)
+ MCFG_SCREEN_VISIBLE_AREA(0, 200-1, 0, 20-1)
config.set_default_layout(layout_ti95);
+ MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(ti74_state::ti74_palette), 3);
- hd44780_device &hd44780(HD44780(config, "hd44780", 0));
- hd44780.set_lcd_size(2, 16);
- hd44780.set_pixel_update_cb(FUNC(ti74_state::ti95_pixel_update), this);
+ MCFG_HD44780_ADD("hd44780")
+ MCFG_HD44780_LCD_SIZE(2, 16)
+ MCFG_HD44780_PIXEL_UPDATE_CB(ti74_state,ti95_pixel_update)
/* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "ti95_cart")
MCFG_GENERIC_EXTENSIONS("bin,rom,256")
MCFG_GENERIC_LOAD(ti74_state, ti74_cartridge)
- SOFTWARE_LIST(config, "cart_list").set_original("ti95_cart");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "ti95_cart")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ti85.cpp b/src/mame/drivers/ti85.cpp
index e4a049b11a5..311202be357 100644
--- a/src/mame/drivers/ti85.cpp
+++ b/src/mame/drivers/ti85.cpp
@@ -12,13 +12,13 @@ Notes:
4. Only difference between all TI-86 drivers is ROM version.
5. Video engine (with grayscale support) based on the idea found in VTI source
emulator written by Rusty Wagner.
-6. NVRAM is saved properly only when calculator is turned off before exiting MAME.
+6. NVRAM is saved properly only when calculator is turned off before exiting MESS.
7. To receive data from TI press "R" immediately after TI starts to send data.
8. To request screen dump from calculator press "S".
9. TI-81 does not have a serial link.
Needed:
-1. Info about ports 3 (bit 2 seems to be always 0) and 4.
+1. Info about ports 3 (bit 2 seems to be allways 0) and 4.
2. Any info on TI-81 hardware.
3. ROM dumps of unemulated models.
4. Artworks.
@@ -374,10 +374,10 @@ void ti85_state::ti83p_banked_mem(address_map &map)
void ti85_state::ti83p_asic_mem(address_map &map)
{
- map(0x0000, 0x3fff).rw(m_membank[0], FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
- map(0x4000, 0x7fff).w(m_membank[1], FUNC(address_map_bank_device::write8)).r(FUNC(ti85_state::ti83p_membank2_r));
- map(0x8000, 0xbfff).w(m_membank[2], FUNC(address_map_bank_device::write8)).r(FUNC(ti85_state::ti83p_membank3_r));
- map(0xc000, 0xffff).rw(m_membank[3], FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x0000, 0x3fff).rw(m_membank1, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x4000, 0x7fff).w(m_membank2, FUNC(address_map_bank_device::write8)).r(FUNC(ti85_state::ti83p_membank2_r));
+ map(0x8000, 0xbfff).w(m_membank3, FUNC(address_map_bank_device::write8)).r(FUNC(ti85_state::ti83p_membank3_r));
+ map(0xc000, 0xffff).rw(m_membank4, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
}
/* keyboard input */
@@ -578,172 +578,184 @@ static INPUT_PORTS_START (ti83)
INPUT_PORTS_END
/* machine definition */
-void ti85_state::ti81(machine_config &config)
-{
+MACHINE_CONFIG_START(ti85_state::ti81)
/* basic machine hardware */
- Z80(config, m_maincpu, 2000000); /* 2 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &ti85_state::ti81_mem);
- m_maincpu->set_addrmap(AS_IO, &ti85_state::ti81_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, 2000000) /* 2 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(ti81_mem)
+ MCFG_DEVICE_IO_MAP(ti81_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(0);
- screen.set_size(96, 64);
- screen.set_visarea(0, 96-1, 0, 64-1);
- screen.set_screen_update(FUNC(ti85_state::screen_update_ti85));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(0)
+ MCFG_SCREEN_SIZE(96, 64)
+ MCFG_SCREEN_VISIBLE_AREA(0, 96-1, 0, 64-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ti85_state, screen_update_ti85)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(ti85_state::ti85_palette), 224, 224);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
-void ti85_state::ti85(machine_config &config)
-{
+MACHINE_CONFIG_START(ti85_state::ti85)
ti81(config);
- m_maincpu->set_clock(6000000); /* 6 MHz */
- m_maincpu->set_addrmap(AS_IO, &ti85_state::ti85_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(6000000) /* 6 MHz */
+ MCFG_DEVICE_IO_MAP(ti85_io)
MCFG_MACHINE_RESET_OVERRIDE(ti85_state, ti85 )
- subdevice<screen_device>("screen")->set_size(128, 64);
- subdevice<screen_device>("screen")->set_visarea(0, 128-1, 0, 64-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(128, 64)
+ MCFG_SCREEN_VISIBLE_AREA(0, 128-1, 0, 64-1)
- TI8X_LINK_PORT(config, m_link_port, default_ti8x_link_devices, nullptr);
-}
+ MCFG_DEVICE_ADD("linkport", TI8X_LINK_PORT, default_ti8x_link_devices, nullptr)
+MACHINE_CONFIG_END
MACHINE_CONFIG_START(ti85_state::ti85d)
ti85(config);
- MCFG_SNAPSHOT_ADD("snapshot", ti85_state, ti8x, "sav")
- //TI85SERIAL(config, "tiserial");
+ MCFG_SNAPSHOT_ADD("snapshot", ti85_state, ti8x, "sav", 0)
+ //MCFG_TI85SERIAL_ADD( "tiserial" )
MACHINE_CONFIG_END
-void ti85_state::ti82(machine_config &config)
-{
+MACHINE_CONFIG_START(ti85_state::ti82)
ti81(config);
- m_maincpu->set_clock(6000000); /* 6 MHz */
- m_maincpu->set_addrmap(AS_IO, &ti85_state::ti82_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(6000000) /* 6 MHz */
+ MCFG_DEVICE_IO_MAP(ti82_io)
MCFG_MACHINE_RESET_OVERRIDE(ti85_state, ti85 )
- subdevice<screen_device>("screen")->set_screen_update("t6a04", FUNC(t6a04_device::screen_update));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DEVICE("t6a04", t6a04_device, screen_update)
subdevice<palette_device>("palette")->set_entries(2).set_init(FUNC(ti85_state::ti82_palette));
- T6A04(config, "t6a04", 0).set_size(96, 64);
+ MCFG_DEVICE_ADD("t6a04", T6A04, 0)
+ MCFG_T6A04_SIZE(96, 64)
- TI8X_LINK_PORT(config, m_link_port, default_ti8x_link_devices, nullptr);
-}
+ MCFG_DEVICE_ADD("linkport", TI8X_LINK_PORT, default_ti8x_link_devices, nullptr)
+MACHINE_CONFIG_END
-void ti85_state::ti81v2(machine_config &config)
-{
+MACHINE_CONFIG_START(ti85_state::ti81v2)
ti82(config);
- m_maincpu->set_addrmap(AS_IO, &ti85_state::ti81v2_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(ti81v2_io)
- config.device_remove("linkport");
-}
+ MCFG_DEVICE_REMOVE("linkport")
+MACHINE_CONFIG_END
-void ti85_state::ti83(machine_config &config)
-{
+MACHINE_CONFIG_START(ti85_state::ti83)
ti81(config);
- m_maincpu->set_clock(6000000); /* 6 MHz */
- m_maincpu->set_addrmap(AS_IO, &ti85_state::ti83_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(6000000) /* 6 MHz */
+ MCFG_DEVICE_IO_MAP(ti83_io)
MCFG_MACHINE_RESET_OVERRIDE(ti85_state, ti85 )
- subdevice<screen_device>("screen")->set_screen_update("t6a04", FUNC(t6a04_device::screen_update));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DEVICE("t6a04", t6a04_device, screen_update)
subdevice<palette_device>("palette")->set_entries(2).set_init(FUNC(ti85_state::ti82_palette));
- T6A04(config, "t6a04", 0).set_size(96, 64);
-}
+ MCFG_DEVICE_ADD("t6a04", T6A04, 0)
+ MCFG_T6A04_SIZE(96, 64)
+MACHINE_CONFIG_END
MACHINE_CONFIG_START(ti85_state::ti86)
ti85(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &ti85_state::ti86_mem);
- m_maincpu->set_addrmap(AS_IO, &ti85_state::ti86_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ti86_mem)
+ MCFG_DEVICE_IO_MAP(ti86_io)
MCFG_MACHINE_START_OVERRIDE(ti85_state, ti86 )
MCFG_MACHINE_RESET_OVERRIDE(ti85_state, ti85 )
- MCFG_SNAPSHOT_ADD("snapshot", ti85_state, ti8x, "sav")
+ MCFG_SNAPSHOT_ADD("snapshot", ti85_state, ti8x, "sav", 0)
MACHINE_CONFIG_END
-void ti85_state::ti83p(machine_config &config)
-{
+MACHINE_CONFIG_START(ti85_state::ti83p)
ti81(config);
- m_maincpu->set_clock(6000000); /* 8 MHz running at 6 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &ti85_state::ti83p_asic_mem);
- m_maincpu->set_addrmap(AS_IO, &ti85_state::ti83p_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(6000000) /* 8 MHz running at 6 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(ti83p_asic_mem)
+ MCFG_DEVICE_IO_MAP(ti83p_io)
MCFG_MACHINE_START_OVERRIDE(ti85_state, ti83p )
MCFG_MACHINE_RESET_OVERRIDE(ti85_state, ti83p )
- subdevice<screen_device>("screen")->set_screen_update("t6a04", FUNC(t6a04_device::screen_update));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DEVICE("t6a04", t6a04_device, screen_update)
subdevice<palette_device>("palette")->set_entries(2).set_init(FUNC(ti85_state::ti82_palette));
- ADDRESS_MAP_BANK(config, m_membank[0]).set_map(&ti85_state::ti83p_banked_mem).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
- ADDRESS_MAP_BANK(config, m_membank[1]).set_map(&ti85_state::ti83p_banked_mem).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
- ADDRESS_MAP_BANK(config, m_membank[2]).set_map(&ti85_state::ti83p_banked_mem).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
- ADDRESS_MAP_BANK(config, m_membank[3]).set_map(&ti85_state::ti83p_banked_mem).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
+ ADDRESS_MAP_BANK(config, "membank1").set_map(&ti85_state::ti83p_banked_mem).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
+ ADDRESS_MAP_BANK(config, "membank2").set_map(&ti85_state::ti83p_banked_mem).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
+ ADDRESS_MAP_BANK(config, "membank3").set_map(&ti85_state::ti83p_banked_mem).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
+ ADDRESS_MAP_BANK(config, "membank4").set_map(&ti85_state::ti83p_banked_mem).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
- T6A04(config, "t6a04", 0).set_size(96, 64);
+ MCFG_DEVICE_ADD("t6a04", T6A04, 0)
+ MCFG_T6A04_SIZE(96, 64)
- TI8X_LINK_PORT(config, m_link_port, default_ti8x_link_devices, nullptr);
+ MCFG_DEVICE_ADD("linkport", TI8X_LINK_PORT, default_ti8x_link_devices, nullptr)
- AMD_29F400T(config, m_flash);
-}
+ AMD_29F400T(config, "flash");
+MACHINE_CONFIG_END
-void ti85_state::ti83pse(machine_config &config)
-{
+MACHINE_CONFIG_START(ti85_state::ti83pse)
ti83p(config);
- m_maincpu->set_clock(15000000);
- m_maincpu->set_addrmap(AS_IO, &ti85_state::ti83pse_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK( 15000000)
+ MCFG_DEVICE_IO_MAP(ti83pse_io)
- m_membank[0]->set_map(&ti85_state::ti83pse_banked_mem);
+ MCFG_DEVICE_MODIFY("membank1")
+ MCFG_DEVICE_PROGRAM_MAP(ti83pse_banked_mem)
- m_membank[1]->set_map(&ti85_state::ti83pse_banked_mem);
+ MCFG_DEVICE_MODIFY("membank2")
+ MCFG_DEVICE_PROGRAM_MAP(ti83pse_banked_mem)
- m_membank[2]->set_map(&ti85_state::ti83pse_banked_mem);
+ MCFG_DEVICE_MODIFY("membank3")
+ MCFG_DEVICE_PROGRAM_MAP(ti83pse_banked_mem)
- m_membank[3]->set_map(&ti85_state::ti83pse_banked_mem);
+ MCFG_DEVICE_MODIFY("membank4")
+ MCFG_DEVICE_PROGRAM_MAP(ti83pse_banked_mem)
MCFG_MACHINE_START_OVERRIDE(ti85_state, ti83pse )
- FUJITSU_29F160T(config.replace(), m_flash, 0);
-}
+ MCFG_DEVICE_REPLACE("flash", FUJITSU_29F160T, 0)
+MACHINE_CONFIG_END
-void ti85_state::ti84p(machine_config &config)
-{
+MACHINE_CONFIG_START(ti85_state::ti84p)
ti83pse(config);
- m_membank[0]->set_map(&ti85_state::ti84p_banked_mem);
+ MCFG_DEVICE_MODIFY("membank1")
+ MCFG_DEVICE_PROGRAM_MAP(ti84p_banked_mem)
- m_membank[1]->set_map(&ti85_state::ti84p_banked_mem);
+ MCFG_DEVICE_MODIFY("membank2")
+ MCFG_DEVICE_PROGRAM_MAP(ti84p_banked_mem)
- m_membank[2]->set_map(&ti85_state::ti84p_banked_mem);
+ MCFG_DEVICE_MODIFY("membank3")
+ MCFG_DEVICE_PROGRAM_MAP(ti84p_banked_mem)
- m_membank[3]->set_map(&ti85_state::ti84p_banked_mem);
+ MCFG_DEVICE_MODIFY("membank4")
+ MCFG_DEVICE_PROGRAM_MAP(ti84p_banked_mem)
MCFG_MACHINE_START_OVERRIDE(ti85_state, ti84p )
- AMD_29F800T(config.replace(), m_flash, 0);
-}
+ MCFG_DEVICE_REPLACE("flash", AMD_29F800T , 0)
+MACHINE_CONFIG_END
-void ti85_state::ti84pse(machine_config &config)
-{
+MACHINE_CONFIG_START(ti85_state::ti84pse)
ti83pse(config);
MCFG_MACHINE_START_OVERRIDE(ti85_state, ti84pse )
-}
+MACHINE_CONFIG_END
-void ti85_state::ti73(machine_config &config)
-{
+MACHINE_CONFIG_START(ti85_state::ti73)
ti83p(config);
- config.device_remove("linkport");
- //TI73SERIAL(config, "tiserial");
-}
+ MCFG_DEVICE_REMOVE("linkport")
+ //MCFG_TI73SERIAL_ADD( "tiserial" )
+MACHINE_CONFIG_END
ROM_START (ti73)
ROM_REGION (0x80000, "flash",0)
@@ -757,20 +769,21 @@ ROM_START (ti73b)
ROM_DEFAULT_BIOS("v191")
ROM_SYSTEM_BIOS( 0, "v13004", "V 1.3004" )
ROMX_LOAD( "ti73bv13004.bin", 0x00000, 0x80000, CRC(453701d8) SHA1(371d1f74a5e26ed749e12baac104f0069f329f44), ROM_BIOS(0) )
- ROM_SYSTEM_BIOS( 1, "v140", "V 1.40" )
+ ROM_SYSTEM_BIOS( 1, "v140", "V 1.40" )
ROMX_LOAD( "ti73bv140.bin", 0x00000, 0x80000, CRC(057e85ae) SHA1(4c45c8b26190e887bb9cdc3b185fd7e703922cbc), ROM_BIOS(1) )
- ROM_SYSTEM_BIOS( 2, "v150", "V 1.50" )
+ ROM_SYSTEM_BIOS( 2, "v150", "V 1.50" )
ROMX_LOAD( "ti73bv150.bin", 0x00000, 0x80000, CRC(c0edfb53) SHA1(1049363587b6d7985356aa2467a0118e6cc6dc37), ROM_BIOS(2) )
- ROM_SYSTEM_BIOS( 3, "v160", "V 1.60" )
+ ROM_SYSTEM_BIOS( 3, "v160", "V 1.60" )
ROMX_LOAD( "ti73bv160.bin", 0x00000, 0x80000, CRC(28d07d9d) SHA1(7795720a68ca7017e682a8f2fe617b0cd758c008), ROM_BIOS(3) )
- ROM_SYSTEM_BIOS( 4, "v180", "V 1.80" )
+ ROM_SYSTEM_BIOS( 4, "v180", "V 1.80" )
ROMX_LOAD( "ti73bv180.bin", 0x00000, 0x80000, CRC(7d3b9ee6) SHA1(93bfc8d951c526e1be7c0e1bebc43dd20cd4c3b1), ROM_BIOS(4) )
- ROM_SYSTEM_BIOS( 5, "v185", "V 1.85" )
+ ROM_SYSTEM_BIOS( 5, "v185", "V 1.85" )
ROMX_LOAD( "ti73bv185.bin", 0x00000, 0x80000, CRC(4e7d68e7) SHA1(52a8b71fee7cda11935d6e89825842b4aad046dd), ROM_BIOS(5) )
- ROM_SYSTEM_BIOS( 6, "v190", "V 1.90" )
+ ROM_SYSTEM_BIOS( 6, "v190", "V 1.90" )
ROMX_LOAD( "ti73bv190.bin", 0x00000, 0x80000, CRC(8726a8db) SHA1(636551d75fd0bccbbc89ea6749bb1153e9545e26), ROM_BIOS(6) )
- ROM_SYSTEM_BIOS( 7, "v191", "V 1.91" )
+ ROM_SYSTEM_BIOS( 7, "v191", "V 1.91" )
ROMX_LOAD( "ti73bv191.bin", 0x00000, 0x80000, CRC(f3785d57) SHA1(ad73d0c61ef6a51a04902a9b30a58992a2d860c4), ROM_BIOS(7) )
+
ROM_END
ROM_START (ti81)
@@ -843,7 +856,7 @@ ROM_START (ti83p)
ROMX_LOAD( "ti83pv115.bin", 0x00000, 0x80000, CRC(9288029b) SHA1(8bd05fd47cab4028f275d1cc5383fd4f0e193474), ROM_BIOS(5) )
ROM_SYSTEM_BIOS( 6, "v116", "V 1.16" )
ROMX_LOAD( "ti83pv116.bin", 0x00000, 0x80000, CRC(0b7cd006) SHA1(290bc81159ea061d8ccb56a6f63e042f150afb32), ROM_BIOS(6) )
- //Missing 1.17, 1.18, and 1.19
+ //Missing 1.17, 1.18, and 1.19
ROM_END
ROM_START (ti83pb)
@@ -863,11 +876,11 @@ ROM_START (ti83pb)
ROMX_LOAD( "ti83pbv115.bin", 0x00000, 0x80000, CRC(a16a4bff) SHA1(a0374a5d5f25e3f9dc1c241447233cf3a23e7946), ROM_BIOS(5) )
ROM_SYSTEM_BIOS( 6, "v116", "V 1.16" )
ROMX_LOAD( "ti83pbv116.bin", 0x00000, 0x80000, CRC(b5e00ef6) SHA1(23b131263b696c03f778eb5d37411be9a86cf752), ROM_BIOS(6) )
- ROM_SYSTEM_BIOS( 7, "v118", "V 1.18" )
+ ROM_SYSTEM_BIOS( 7, "v118", "V 1.18" )
ROMX_LOAD( "ti83pbv118.bin", 0x00000, 0x80000, CRC(0915b0a0) SHA1(48c270c383c2d05058693a5bf58d462936bbb335), ROM_BIOS(7) )
- ROM_SYSTEM_BIOS( 8, "v119", "V 1.19" )
+ ROM_SYSTEM_BIOS( 8, "v119", "V 1.19" )
ROMX_LOAD( "ti83pbv119.bin", 0x00000, 0x80000, CRC(58f14c79) SHA1(1fddd44d54f3ff12bfb548fcb03ce36b5a4f295a), ROM_BIOS(8) )
- //Missing 1.17
+ //Missing 1.17
ROM_END
ROM_START (ti85)
@@ -906,51 +919,34 @@ ROM_START (ti86)
//Rom versions according to ticalc.org 1.2, 1.3, 1.4, 1.5, 1.6
ROM_END
+
ROM_START (ti83pse)
ROM_REGION (0x200000, "flash", 0)
- ROM_SYSTEM_BIOS( 0, "v116", "V 1.16" )
ROM_DEFAULT_BIOS("v116")
+ ROM_SYSTEM_BIOS( 0, "v116", "V 1.16" )
ROMX_LOAD( "ti83psev116.bin", 0x00000, 0x200000, CRC(d2570863) SHA1(d4214b3c0ebb26e10fe95294ac72a90d2ba99537), ROM_BIOS(0) )
ROM_END
-ROM_START (ti83pseb)
- ROM_REGION (0x200000, "flash", 0)
- ROM_DEFAULT_BIOS("v112")
- ROM_SYSTEM_BIOS( 0, "v112", "V 1.12" )
- ROMX_LOAD( "ti83psebv112.bin", 0x00000, 0x200000, CRC(e8cfcdb7) SHA1(322929d289c17c247da7da3674d6115f1740fa49), ROM_BIOS(0) )
- ROM_SYSTEM_BIOS( 1, "v113", "V 1.13" )
- ROMX_LOAD( "ti83psebv113.bin", 0x00000, 0x200000, CRC(cf90e998) SHA1(29b92a32e3ceae7d918fc404fec50a53f35b574c), ROM_BIOS(1) )
- ROM_SYSTEM_BIOS( 2, "v114", "V 1.14" )
- ROMX_LOAD( "ti83psebv114.bin", 0x00000, 0x200000, CRC(4842c167) SHA1(2a1938474df970f92ee2349912b7824685a4da99), ROM_BIOS(2) )
- ROM_SYSTEM_BIOS( 3, "v115", "V 1.15" )
- ROMX_LOAD( "ti83psebv115.bin", 0x00000, 0x200000, CRC(79a7bcbb) SHA1(1c47f2299eedde8db21b9ec469ba01a1b14533db), ROM_BIOS(3) )
- ROM_SYSTEM_BIOS( 4, "v116", "V 1.16" )
- ROMX_LOAD( "ti83psebv116.bin", 0x00000, 0x200000, CRC(f75b896f) SHA1(75c8356ee89f35cb197684f3581cbfa3904c2f0a), ROM_BIOS(4) )
- ROM_SYSTEM_BIOS( 5, "v118", "V 1.18" )
- ROMX_LOAD( "ti83psebv118.bin", 0x00000, 0x200000, CRC(0ad0a741) SHA1(cb83a6f1517fc5d34a29cdf4b1d30ea2762b2a95), ROM_BIOS(5) )
- ROM_SYSTEM_BIOS( 6, "v119", "V 1.19" )
- ROMX_LOAD( "ti83psebv119.bin", 0x00000, 0x200000, CRC(200dd7d0) SHA1(8177bc6d5489d575cbfa9a004d097fc08c6f8c86), ROM_BIOS(6) )
-ROM_END
-
ROM_START (ti84pse)
ROM_REGION (0x200000, "flash",0)
ROM_DEFAULT_BIOS("v255mp")
ROM_SYSTEM_BIOS( 0, "v221", "V 2.21" )
ROMX_LOAD( "ti84psev221.bin", 0x00000, 0x200000, CRC(da8b3c8e) SHA1(736fae1929089167a3af6290e04e9278b0a3d1a6), ROM_BIOS(0) )
- ROM_SYSTEM_BIOS( 1, "v222", "V 2.22" )
+ ROM_SYSTEM_BIOS( 1, "v222", "V 2.22" )
ROMX_LOAD( "ti84psev222.bin", 0x00000, 0x200000, CRC(dc2931db) SHA1(319f1ec6accdbe2309f9ffcd8d9970fa2a422c4d), ROM_BIOS(1) )
- ROM_SYSTEM_BIOS( 2, "v230", "V 2.30" )
+ ROM_SYSTEM_BIOS( 2, "v230", "V 2.30" )
ROMX_LOAD( "ti84psev230.bin", 0x00000, 0x200000, CRC(8800c73a) SHA1(cb9ad540137ede275ff22e293ae0f7cc31b6663d), ROM_BIOS(2) )
- ROM_SYSTEM_BIOS( 3, "v240", "V 2.40" )
+ ROM_SYSTEM_BIOS( 3, "v240", "V 2.40" )
ROMX_LOAD( "ti84psev240.bin", 0x00000, 0x200000, CRC(2aed41c4) SHA1(6886f4c07718f0dfa43b397ff492a6b4b06ded15), ROM_BIOS(3) )
- ROM_SYSTEM_BIOS( 4, "v241", "V 2.41" )
+ ROM_SYSTEM_BIOS( 4, "v241", "V 2.41" )
ROMX_LOAD( "ti84psev241.bin", 0x00000, 0x200000, CRC(3dcb18ba) SHA1(728834cb426c09f6b00d1fd89e81eb154488854c), ROM_BIOS(4) )
- ROM_SYSTEM_BIOS( 5, "v243", "V 2.43" )
+ ROM_SYSTEM_BIOS( 5, "v243", "V 2.43" )
ROMX_LOAD( "ti84psev243.bin", 0x00000, 0x200000, CRC(1e9707f8) SHA1(767a5238882d97fac550971adbfbe48f82f2772f), ROM_BIOS(5) )
ROM_SYSTEM_BIOS( 6, "v253mp", "V 2.53MP" )
ROMX_LOAD( "ti84psev253mp.bin", 0x00000, 0x200000, CRC(3e52683a) SHA1(80050ae2a8f128b291d3a8973ab32e879172f2b9), ROM_BIOS(6) )
ROM_SYSTEM_BIOS( 7, "v255mp", "V 2.55MP" )
ROMX_LOAD( "ti84psev255mp.bin", 0x00000, 0x200000, CRC(70439fdd) SHA1(201e585caa64836829ea57c1291c6136c778ef55), ROM_BIOS(7) )
+
ROM_END
ROM_START (ti84psev3)
@@ -1079,13 +1075,7 @@ ROM_START (ti84pcse)
ROMX_LOAD( "ti84pcsev40.bin", 0x00000, 0x400000, CRC(e0b8ec78) SHA1(a4ffdfa0d2a8fc1b1356429675efc96b4f25fbc5), ROM_BIOS(0) )
ROM_SYSTEM_BIOS( 1, "v42", "V 4.2" )
ROMX_LOAD( "ti84pcsev42.bin", 0x00000, 0x400000, CRC(57d5373d) SHA1(06acbd22c9cb31320e022791ac03ba695f058654), ROM_BIOS(1) )
-ROM_END
-ROM_START (ti84pcsev2)
- ROM_REGION (0x400000, "flash",0)
- ROM_DEFAULT_BIOS("v42")
- ROM_SYSTEM_BIOS( 0, "v42", "V 4.2" )
- ROMX_LOAD( "ti84pcsev42.bin", 0x00000, 0x400000, CRC(4b6c2342) SHA1(e2a9d0124f852af79643438c994f13abc47e07af), ROM_BIOS(0) )
ROM_END
ROM_START (ti84pce)
@@ -1093,89 +1083,57 @@ ROM_START (ti84pce)
ROM_DEFAULT_BIOS("v530")
ROM_SYSTEM_BIOS( 0, "v500", "V 5.00" )
ROMX_LOAD( "ti84pcev500.bin", 0x00000, 0x400000, CRC(e31ecdf9) SHA1(7f93a2e17b75debdeb5704e07092c48b3abfec9e), ROM_BIOS(0) )
- ROM_SYSTEM_BIOS( 1, "v510", "V 5.10" )
+ ROM_SYSTEM_BIOS( 1, "v510", "V 5.10" )
ROMX_LOAD( "ti84pcev510.bin", 0x00000, 0x400000, CRC(042f7031) SHA1(6754edc7aefc9f74247bf5ff60e7546f77cd2898), ROM_BIOS(1) )
- ROM_SYSTEM_BIOS( 2, "v515", "V 5.15" )
+ ROM_SYSTEM_BIOS( 2, "v515", "V 5.15" )
ROMX_LOAD( "ti84pcev515.bin", 0x00000, 0x400000, CRC(2a958b6a) SHA1(6302ab3b4e3fca1ee6a05a3441b086ef7a57bee8), ROM_BIOS(2) )
- ROM_SYSTEM_BIOS( 3, "v520", "V 5.20" )
+ ROM_SYSTEM_BIOS( 3, "v520", "V 5.20" )
ROMX_LOAD( "ti84pcev520.bin", 0x00000, 0x400000, CRC(a59c6633) SHA1(d02f20aa3c895254a0974db7e424dd91d075f859), ROM_BIOS(3) )
- ROM_SYSTEM_BIOS( 4, "v521", "V 5.21" )
+ ROM_SYSTEM_BIOS( 4, "v521", "V 5.21" )
ROMX_LOAD( "ti84pcev521.bin", 0x00000, 0x400000, CRC(89bc2ae1) SHA1(b0b83b2b0158e5b382fc12af95aa2a2e41f3ce6d), ROM_BIOS(4) )
- ROM_SYSTEM_BIOS( 5, "v522", "V 5.22" )
+ ROM_SYSTEM_BIOS( 5, "v522", "V 5.22" )
ROMX_LOAD( "ti84pcev522.bin", 0x00000, 0x400000, CRC(49ce1768) SHA1(f949c8f2832edd33a1b0dd4da0ab4c1f23e47b21), ROM_BIOS(5) )
- ROM_SYSTEM_BIOS( 6, "v530", "V 5.30" )
+ ROM_SYSTEM_BIOS( 6, "v530", "V 5.30" )
ROMX_LOAD( "ti84pcev530.bin", 0x00000, 0x400000, CRC(c72f36b8) SHA1(6856fb2a9d0a2e338a89b91bb7680180a69482d3), ROM_BIOS(6) )
- ROM_SYSTEM_BIOS( 7, "v531", "V 5.31" )
- ROMX_LOAD( "ti84pcev531.bin", 0x00000, 0x400000, CRC(6d269f68) SHA1(9f9321a0cff17c331c92be127ec67ef67317968b), ROM_BIOS(7) )
-ROM_END
-
-ROM_START (ti83pcev15)
- ROM_REGION (0x400000, "flash",0)
- ROM_DEFAULT_BIOS("v530") // 5.30 is the default because 5.31 disables some features
- ROM_SYSTEM_BIOS( 0, "v515", "V 5.15" )
- ROMX_LOAD( "ti83pcev15v515.bin", 0x00000, 0x400000, CRC(f924d8e6) SHA1(ffb100c0d0478c414e7ba4dd9d73791d026b40ca), ROM_BIOS(0) )
- ROM_SYSTEM_BIOS( 1, "v520", "V 5.20" )
- ROMX_LOAD( "ti83pcev15v520.bin", 0x00000, 0x400000, CRC(a403db1a) SHA1(a565d96e75bed354483c6904b9ee2b8054adc31e), ROM_BIOS(1) )
- ROM_SYSTEM_BIOS( 2, "v521", "V 5.21" )
- ROMX_LOAD( "ti83pcev15v521.bin", 0x00000, 0x400000, CRC(1dc2e3e3) SHA1(d8e44e1a8a6591b289766a881a81d33eca9a0ecc), ROM_BIOS(2) )
- ROM_SYSTEM_BIOS( 3, "v522", "V 5.22" )
- ROMX_LOAD( "ti83pcev15v522.bin", 0x00000, 0x400000, CRC(6971746d) SHA1(321c7aeda6af8b42742d080e802979188421e06a), ROM_BIOS(3) )
- ROM_SYSTEM_BIOS( 4, "v530", "V 5.30" )
- ROMX_LOAD( "ti83pcev15v530.bin", 0x00000, 0x400000, CRC(08ae7388) SHA1(6d9d98d090ac1b250d1f8ba8ef7c26eb448e7f8c), ROM_BIOS(4) )
- ROM_SYSTEM_BIOS( 5, "v531", "V 5.31" )
- ROMX_LOAD( "ti83pcev15v531.bin", 0x00000, 0x400000, CRC(6643adb3) SHA1(b380e15946c1749a56600d18fee7d9d3c658dee3), ROM_BIOS(5) )
ROM_END
ROM_START (ti84pcev15)
ROM_REGION (0x400000, "flash",0)
- ROM_DEFAULT_BIOS("v530") // 5.30 is the default because 5.31 disables some features
- ROM_SYSTEM_BIOS( 0, "v515", "V 5.15" )
- ROMX_LOAD( "ti84pcev15v515.bin", 0x00000, 0x400000, CRC(0318a913) SHA1(44256e23708c71b8f63660d3100e767d597c377f), ROM_BIOS(0) )
- ROM_SYSTEM_BIOS( 1, "v520", "V 5.20" )
- ROMX_LOAD( "ti84pcev15v520.bin", 0x00000, 0x400000, CRC(c2029323) SHA1(827c1e7ead58f4eabe5b7b942d0f24abd46f1633), ROM_BIOS(1) )
- ROM_SYSTEM_BIOS( 2, "v521", "V 5.21" )
- ROMX_LOAD( "ti84pcev15v521.bin", 0x00000, 0x400000, CRC(880eefc9) SHA1(3449363553c093b6bb555306d91a4dd6dac8e891), ROM_BIOS(2) )
- ROM_SYSTEM_BIOS( 3, "v522", "V 5.22" )
- ROMX_LOAD( "ti84pcev15v522.bin", 0x00000, 0x400000, CRC(b95fefd9) SHA1(db1515b3bd4eebeb5ee3c29597991fc7f1e8b84e), ROM_BIOS(3) )
- ROM_SYSTEM_BIOS( 4, "v530", "V 5.30" )
- ROMX_LOAD( "ti84pcev15v530.bin", 0x00000, 0x400000, CRC(0148cc26) SHA1(72a10379bbd9d427c6e73afa9fe316cbd502f53c), ROM_BIOS(4) )
- ROM_SYSTEM_BIOS( 5, "v531", "V 5.31" )
- ROMX_LOAD( "ti84pcev15v531.bin", 0x00000, 0x400000, CRC(86511ea0) SHA1(ff14ec454fd1e0a2c436b4eed1eefca0d16aabfb), ROM_BIOS(5) )
+ ROM_DEFAULT_BIOS("v530")
+ ROM_SYSTEM_BIOS( 0, "v530", "V 5.30" )
+ ROMX_LOAD( "ti84pcev15v530.bin", 0x00000, 0x400000, CRC(0148cc26) SHA1(72a10379bbd9d427c6e73afa9fe316cbd502f53c), ROM_BIOS(0) )
ROM_END
ROM_START (ti84pcev30)
ROM_REGION (0x400000, "flash",0)
- ROM_DEFAULT_BIOS("v530") // 5.30 is the default because 5.31 disables some features
+ ROM_DEFAULT_BIOS("v530")
ROM_SYSTEM_BIOS( 0, "v530", "V 5.30" )
ROMX_LOAD( "ti84pcev30v530.bin", 0x00000, 0x400000, CRC(cc7a7047) SHA1(0d348e60dc57276b1f8d5ff87935e47cdd27455c), ROM_BIOS(0) )
ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
-COMP( 201?, ti84pob, ti84p, 0, ti84p, ti82, ti85_state, empty_init, "Texas Instruments", "Orion TI-84 Plus (bootleg)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
-COMP( 201?, ti84pov2, ti84p, 0, ti84p, ti82, ti85_state, empty_init, "Texas Instruments", "Orion TI-84 Plus (Boot Code 1.02)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
-COMP( 201?, ti84pov3, ti84p, 0, ti84p, ti82, ti85_state, empty_init, "Texas Instruments", "Orion TI-84 Plus (Boot Code 1.03)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
-COMP( 1998, ti73, 0, 0, ti73, ti82, ti85_state, empty_init, "Texas Instruments", "TI-73 Explorer", MACHINE_NO_SOUND_HW )
-COMP( 20??, ti73b, ti73, 0, ti73, ti82, ti85_state, empty_init, "Texas Instruments", "TI-73 Explorer (bootleg)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
COMP( 1990, ti81, 0, 0, ti81, ti81, ti85_state, empty_init, "Texas Instruments", "TI-81", MACHINE_NO_SOUND_HW )
-COMP( 1994, ti81v2, ti81, 0, ti81v2, ti81, ti85_state, empty_init, "Texas Instruments", "TI-81 v2.0", MACHINE_NO_SOUND_HW )
+COMP( 1992, ti85, 0, 0, ti85d, ti85, ti85_state, empty_init, "Texas Instruments", "TI-85", MACHINE_NO_SOUND_HW )
COMP( 1993, ti82, 0, 0, ti82, ti82, ti85_state, empty_init, "Texas Instruments", "TI-82", MACHINE_NO_SOUND_HW )
+COMP( 1994, ti81v2, ti81, 0, ti81v2, ti81, ti85_state, empty_init, "Texas Instruments", "TI-81 v2.0", MACHINE_NO_SOUND_HW )
COMP( 1996, ti83, 0, 0, ti83, ti83, ti85_state, empty_init, "Texas Instruments", "TI-83", MACHINE_NO_SOUND_HW )
+COMP( 1997, ti86, 0, 0, ti86, ti85, ti85_state, empty_init, "Texas Instruments", "TI-86", MACHINE_NO_SOUND_HW )
+COMP( 1998, ti73, 0, 0, ti73, ti82, ti85_state, empty_init, "Texas Instruments", "TI-73 Explorer", MACHINE_NO_SOUND_HW )
+COMP( 20??, ti73b, ti73, 0, ti73, ti82, ti85_state, empty_init, "Texas Instruments", "TI-73 Explorer (bootleg)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
COMP( 1999, ti83p, 0, 0, ti83p, ti82, ti85_state, empty_init, "Texas Instruments", "TI-83 Plus (Boot Code 1.00)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
COMP( 20??, ti83pb, ti83p, 0, ti83p, ti82, ti85_state, empty_init, "Texas Instruments", "TI-83 Plus (bootleg)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
COMP( 2001, ti83pse, 0, 0, ti83pse, ti82, ti85_state, empty_init, "Texas Instruments", "TI-83 Plus Silver Edition (Boot Code 1.00)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
-COMP( 20??, ti83pseb, ti83pse, 0, ti83pse, ti82, ti85_state, empty_init, "Texas Instruments", "TI-83 Plus Silver Edition (bootleg)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
-COMP( 201?, ti83pcev15, ti84pse, 0, ti84pse, ti82, ti85_state, empty_init, "Texas Instruments", "TI-83 Premium CE (Boot Code 5.1.5.0014)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
COMP( 2004, ti84p, 0, 0, ti84p, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus (Boot Code 1.00)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
COMP( 200?, ti84pv2, ti84p, 0, ti84p, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus (Boot Code 1.02)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
COMP( 2011, ti84pv3, ti84p, 0, ti84p, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus (Boot Code 1.03)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
+COMP( 201?, ti84pob, ti84p, 0, ti84p, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus Orion (bootleg)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+COMP( 201?, ti84pov2, ti84p, 0, ti84p, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus Orion (Boot Code 1.02)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+COMP( 201?, ti84pov3, ti84p, 0, ti84p, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus Orion (Boot Code 1.03)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
COMP( 20??, ti84pb, ti84p, 0, ti84p, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus (bootleg)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
-COMP( 20??, ti84pcse, ti84pse, 0, ti84pse, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus C Silver Edition (Boot Code 4.0)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
-COMP( 20??, ti84pcsev2, ti84pse, 0, ti84pse, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus C Silver Edition (Boot Code 4.2)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
-COMP( 2015, ti84pce, ti84pse, 0, ti84pse, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus CE (Boot Code 5.0.0.0089)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
-COMP( 2016, ti84pcev15, ti84pse, 0, ti84pse, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus CE (Boot Code 5.1.5.0014)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
-COMP( 2017, ti84pcev30, ti84pse, 0, ti84pse, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus CE (Boot Code 5.3.0.0037)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
COMP( 2004, ti84pse, 0, 0, ti84pse, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus Silver Edition (Boot Code 1.00)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
COMP( 2011, ti84psev3, ti84pse, 0, ti84pse, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus Silver Edition (Boot Code 1.03)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
COMP( 20??, ti84pseb, ti84pse, 0, ti84pse, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus Silver Edition (bootleg)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
-COMP( 1992, ti85, 0, 0, ti85d, ti85, ti85_state, empty_init, "Texas Instruments", "TI-85", MACHINE_NO_SOUND_HW )
-COMP( 1997, ti86, 0, 0, ti86, ti85, ti85_state, empty_init, "Texas Instruments", "TI-86", MACHINE_NO_SOUND_HW )
+COMP( 20??, ti84pcse, ti84pse, 0, ti84pse, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus Color Silver Edition (Boot Code 4.0)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
+COMP( 2015, ti84pce, ti84pse, 0, ti84pse, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus Color Edition (Boot Code 5.00)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
+COMP( 2016, ti84pcev15, ti84pse, 0, ti84pse, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus Color Edition (Boot Code 5.15)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
+COMP( 2017, ti84pcev30, ti84pse, 0, ti84pse, ti82, ti85_state, empty_init, "Texas Instruments", "TI-84 Plus Color Edition (Boot Code 5.30)", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/ti89.cpp b/src/mame/drivers/ti89.cpp
index 8724747af2a..da531355256 100644
--- a/src/mame/drivers/ti89.cpp
+++ b/src/mame/drivers/ti89.cpp
@@ -147,14 +147,14 @@ WRITE16_MEMBER ( ti68k_state::flash_w )
{
// verification if it is flash memory
if (m_flash_mem)
- m_flash->write(offset, data);
+ m_flash->write(space, offset, data);
}
READ16_MEMBER ( ti68k_state::flash_r )
{
if (m_flash_mem)
{
- return m_flash->read(offset);
+ return m_flash->read(space, offset);
}
else
{
@@ -519,63 +519,60 @@ void ti68k_state::ti68k_palette(palette_device &palette) const
palette.set_pen_color(1, rgb_t(92, 83, 88));
}
-void ti68k_state::ti89(machine_config &config)
-{
+MACHINE_CONFIG_START(ti68k_state::ti89)
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(10'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &ti68k_state::ti89_mem);
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(10'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(ti89_mem)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(ti68k_state::screen_update));
- screen.set_size(240, 128);
- screen.set_visarea(0, 160-1, 0, 100-1);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(ti68k_state, screen_update)
+ MCFG_SCREEN_SIZE(240, 128)
+ MCFG_SCREEN_VISIBLE_AREA(0, 160-1, 0, 100-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(ti68k_state::ti68k_palette), 2);
SHARP_UNK128MBIT(config, "flash"); //should be LH28F320 for ti89t and v200 and LH28F160S3T for other models
- TIMER(config, "ti68k_timer").configure_periodic(FUNC(ti68k_state::ti68k_timer_callback), attotime::from_hz(1<<14));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("ti68k_timer", ti68k_state, ti68k_timer_callback, attotime::from_hz(1<<14))
+MACHINE_CONFIG_END
-void ti68k_state::ti92(machine_config &config)
-{
+MACHINE_CONFIG_START(ti68k_state::ti92)
ti89(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &ti68k_state::ti92_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ti92_mem)
/* video hardware */
- subdevice<screen_device>("screen")->set_visarea(0, 240-1, 0, 128-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 240-1, 0, 128-1)
+MACHINE_CONFIG_END
-void ti68k_state::ti92p(machine_config &config)
-{
+MACHINE_CONFIG_START(ti68k_state::ti92p)
ti92(config);
- m_maincpu->set_clock(XTAL(12'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &ti68k_state::ti92p_mem);
-}
+ MCFG_DEVICE_REPLACE("maincpu", M68000, XTAL(12'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(ti92p_mem)
+MACHINE_CONFIG_END
-void ti68k_state::v200(machine_config &config)
-{
+MACHINE_CONFIG_START(ti68k_state::v200)
ti92(config);
- m_maincpu->set_clock(XTAL(12'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &ti68k_state::v200_mem);
-}
+ MCFG_DEVICE_REPLACE("maincpu", M68000, XTAL(12'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(v200_mem)
+MACHINE_CONFIG_END
-void ti68k_state::ti89t(machine_config &config)
-{
+MACHINE_CONFIG_START(ti68k_state::ti89t)
ti89(config);
- m_maincpu->set_clock(XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &ti68k_state::ti89t_mem);
-}
+ MCFG_DEVICE_REPLACE("maincpu", M68000, XTAL(16'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(ti89t_mem)
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/ti990_10.cpp b/src/mame/drivers/ti990_10.cpp
index baa8a791bab..8ebe64d4728 100644
--- a/src/mame/drivers/ti990_10.cpp
+++ b/src/mame/drivers/ti990_10.cpp
@@ -317,8 +317,7 @@ WRITE_LINE_MEMBER(ti990_10_state::tape_interrupt)
// set_int9(state);
}
-void ti990_10_state::ti990_10(machine_config &config)
-{
+MACHINE_CONFIG_START(ti990_10_state::ti990_10)
/* basic machine hardware */
/* TI990/10 CPU @ 4.0(???) MHz */
TI990_10(config, m_maincpu, 4000000);
@@ -331,15 +330,11 @@ void ti990_10_state::ti990_10(machine_config &config)
m_terminal->lineint_cb().set(FUNC(ti990_10_state::line_interrupt));
// Hard disk
- ti990_hdc_device &hdc(TI990_HDC(config, "hdc", 0));
- hdc.set_memory_space(m_maincpu, AS_PROGRAM);
- hdc.int_cb().set(FUNC(ti990_10_state::ti990_set_int13));
+ TI990_HDC(config, "hdc", 0).int_cb().set(FUNC(ti990_10_state::ti990_set_int13));
// Tape controller
- tap_990_device &tpc(TI990_TAPE_CTRL(config, "tpc", 0));
- tpc.set_memory_space(m_maincpu, AS_PROGRAM);
- tpc.int_cb().set(FUNC(ti990_10_state::tape_interrupt));
-}
+ TI990_TAPE_CTRL(config, "tpc", 0).int_cb().set(FUNC(ti990_10_state::tape_interrupt));
+MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/ti990_4.cpp b/src/mame/drivers/ti990_4.cpp
index 22520495a9a..1592b1ab93a 100644
--- a/src/mame/drivers/ti990_4.cpp
+++ b/src/mame/drivers/ti990_4.cpp
@@ -115,8 +115,8 @@ void ti990_4_state::device_timer(emu_timer &timer, device_timer_id id, int param
READ8_MEMBER( ti990_4_state::panel_read )
{
- if (offset == 11 || offset == 14)
- return 1;
+ if (offset == 1)
+ return 0x48;
return 0;
}
@@ -227,37 +227,47 @@ void ti990_4_state::memmap(address_map &map)
/*
CRU map
- 0x0000-0x1EFF: user devices
- 0x1F00-0x1F3F: CRU interrupt + expansion control
- 0x1F40-0x1F5F: TILINE coupler interrupt control
- 0x1F60-0x1F9F: reserved
- 0x1FA0-0x1FBF: memory mapping and memory protect
- 0x1FC0-0x1FDF: internal interrupt control
- 0x1FF0-0x1FFF: front panel
+ 0x000-0xF7F: user devices
+ 0xF80-0xF9F: CRU interrupt + expansion control
+ 0xFA0-0xFAF: TILINE coupler interrupt control
+ 0xFB0-0xFCF: reserved
+ 0xFD0-0xFDF: memory mapping and memory protect
+ 0xFE0-0xFEF: internal interrupt control
+ 0xFF0-0xFFF: front panel
Default user map:
- 0x0000-0x001f: 733 ASR (int 6)
- 0x0020-0x003f: PROM programmer (wired to int 15, unused)
- 0x0040-0x005f: 804 card reader (int 4)
- 0x0060-0x007f: line printer (wired to int 14, unused)
- 0x0080-0x00bf: FD800 floppy controller (int 7)
- 0x00c0-0x00ff: VDT1 (int 3 - wired to int 11, unused)
- 0x0100-0x013f: VDT2, or CRU expansion (int ??? - wired to int 10, unused)
- 0x0140-0x017f: VDT3 (int ??? - wired to int 9, unused)
+ 0x000-0x00f: 733 ASR (int 6)
+ 0x010-0x01f: PROM programmer (wired to int 15, unused)
+ 0x020-0x02f: 804 card reader (int 4)
+ 0x030-0x03f: line printer (wired to int 14, unused)
+ 0x040-0x05f: FD800 floppy controller (int 7)
+ 0x060-0x07f: VDT1 (int 3 - wired to int 11, unused)
+ 0x080-0x09f: VDT2, or CRU expansion (int ??? - wired to int 10, unused)
+ 0x0a0-0x0bf: VDT3 (int ??? - wired to int 9, unused)
*/
void ti990_4_state::crumap(address_map &map)
{
- map(0x0000, 0x001f).rw("asr733", FUNC(asr733_device::cru_r), FUNC(asr733_device::cru_w));
- map(0x0080, 0x00bf).rw(m_fd800, FUNC(fd800_legacy_device::cru_r), FUNC(fd800_legacy_device::cru_w));
- map(0x1fe0, 0x1fff).rw(FUNC(ti990_4_state::panel_read), FUNC(ti990_4_state::panel_write));
+ map(0x00, 0x01).r("asr733", FUNC(asr733_device::cru_r));
+ map(0x00, 0x0f).w("asr733", FUNC(asr733_device::cru_w));
+
+ map(0x08, 0x0b).r(m_fd800, FUNC(fd800_legacy_device::cru_r));
+ map(0x40, 0x5f).w(m_fd800, FUNC(fd800_legacy_device::cru_w));
+
+ map(0x1fe, 0x1ff).r(FUNC(ti990_4_state::panel_read));
+ map(0xff0, 0xfff).w(FUNC(ti990_4_state::panel_write));
}
void ti990_4_state::crumap_v(address_map &map)
{
- map(0x0080, 0x00bf).rw(m_fd800, FUNC(fd800_legacy_device::cru_r), FUNC(fd800_legacy_device::cru_w));
- map(0x0100, 0x011f).rw("vdt911", FUNC(vdt911_device::cru_r), FUNC(vdt911_device::cru_w));
- map(0x1fe0, 0x1fff).rw(FUNC(ti990_4_state::panel_read), FUNC(ti990_4_state::panel_write));
+ map(0x10, 0x11).r("vdt911", FUNC(vdt911_device::cru_r));
+ map(0x80, 0x8f).w("vdt911", FUNC(vdt911_device::cru_w));
+
+ map(0x08, 0x0b).r(m_fd800, FUNC(fd800_legacy_device::cru_r));
+ map(0x40, 0x5f).w(m_fd800, FUNC(fd800_legacy_device::cru_w));
+
+ map(0x1fe, 0x1ff).r(FUNC(ti990_4_state::panel_read));
+ map(0xff0, 0xfff).w(FUNC(ti990_4_state::panel_write));
}
@@ -281,8 +291,7 @@ void ti990_4_state::init_ti990_4()
m_nmi_timer = timer_alloc(NMI_TIMER_ID);
}
-void ti990_4_state::ti990_4(machine_config &config)
-{
+MACHINE_CONFIG_START(ti990_4_state::ti990_4)
/* basic machine hardware */
/* TMS9900 CPU @ 3.0(???) MHz */
TMS9900(config, m_maincpu, 3000000);
@@ -302,10 +311,9 @@ void ti990_4_state::ti990_4(machine_config &config)
TI99X_FD800(config, "fd800", 0).int_cb().set(FUNC(ti990_4_state::fd_interrupt));
// TODO: Add floppy drives
-}
+MACHINE_CONFIG_END
-void ti990_4_state::ti990_4v(machine_config &config)
-{
+MACHINE_CONFIG_START(ti990_4_state::ti990_4v)
/* basic machine hardware */
/* TMS9900 CPU @ 3.0(???) MHz */
TMS9900(config, m_maincpu, 3000000);
@@ -323,7 +331,7 @@ void ti990_4_state::ti990_4v(machine_config &config)
TI99X_FD800(config, "fd800", 0).int_cb().set(FUNC(ti990_4_state::fd_interrupt));
// TODO: Add floppy drives
-}
+MACHINE_CONFIG_END
/*
ROM loading
diff --git a/src/mame/drivers/ti99_2.cpp b/src/mame/drivers/ti99_2.cpp
index 85b2a79ef16..d910d0327ef 100644
--- a/src/mame/drivers/ti99_2.cpp
+++ b/src/mame/drivers/ti99_2.cpp
@@ -164,6 +164,7 @@
#include "emu.h"
#include "bus/ti99/ti99defs.h"
+#include "machine/tms9901.h"
#include "cpu/tms9900/tms9995.h"
#include "bus/ti99/internal/992board.h"
#include "machine/ram.h"
@@ -275,13 +276,18 @@ void ti99_2_state::memmap(address_map &map)
/*
CRU map - see description above
+ Note that the CRU address space has only even numbers, and the
+ read addresses in the emulation gather 8 bits in one go, so the address
+ is the bit number times 16.
*/
void ti99_2_state::crumap(address_map &map)
{
- map(0x0000, 0xffff).rw(m_io992, FUNC(bus::ti99::internal::io992_device::cruread), FUNC(bus::ti99::internal::io992_device::cruwrite));
+ map(0x0000, 0x0fff).r(m_io992, FUNC(bus::ti99::internal::io992_device::cruread));
+ map(0x0000, 0x7fff).w(m_io992, FUNC(bus::ti99::internal::io992_device::cruwrite));
// Mirror of CPU-internal flags (1ee0-1efe). Don't read. Write is OK.
- map(0x1ee0, 0x1eff).nopr().w(FUNC(ti99_2_state::intflag_write));
+ map(0x01ee, 0x01ef).nopr();
+ map(0x0f70, 0x0f7f).w(FUNC(ti99_2_state::intflag_write));
}
/*
diff --git a/src/mame/drivers/ti99_4p.cpp b/src/mame/drivers/ti99_4p.cpp
index 7c53c585c31..00774139e37 100644
--- a/src/mame/drivers/ti99_4p.cpp
+++ b/src/mame/drivers/ti99_4p.cpp
@@ -165,28 +165,31 @@ private:
DECLARE_WRITE_LINE_MEMBER( ready_line );
DECLARE_WRITE_LINE_MEMBER( extint );
DECLARE_WRITE_LINE_MEMBER( notconnected );
- uint8_t interrupt_level();
+ DECLARE_READ8_MEMBER( interrupt_level );
- uint8_t setoffset(offs_t offset);
- uint16_t memread(offs_t offset);
- void memwrite(offs_t offset, uint16_t data);
+ DECLARE_READ8_MEMBER( setoffset );
+ DECLARE_READ16_MEMBER( memread );
+ DECLARE_WRITE16_MEMBER( memwrite );
DECLARE_WRITE_LINE_MEMBER( dbin_in );
- void external_operation(offs_t offset, uint8_t data);
+ DECLARE_READ16_MEMBER( samsmem_read );
+ DECLARE_WRITE16_MEMBER( samsmem_write );
+
+ DECLARE_WRITE8_MEMBER(external_operation);
DECLARE_WRITE_LINE_MEMBER( clock_out );
DECLARE_WRITE_LINE_MEMBER( dbin_line );
// CRU (Communication Register Unit) handling
- uint8_t cruread(offs_t offset);
- void cruwrite(offs_t offset, uint8_t data);
- uint8_t read_by_9901(offs_t offset);
+ DECLARE_READ8_MEMBER( cruread );
+ DECLARE_WRITE8_MEMBER( cruwrite );
+ DECLARE_READ8_MEMBER( read_by_9901 );
DECLARE_WRITE_LINE_MEMBER(keyC0);
DECLARE_WRITE_LINE_MEMBER(keyC1);
DECLARE_WRITE_LINE_MEMBER(keyC2);
DECLARE_WRITE_LINE_MEMBER(cs_motor);
DECLARE_WRITE_LINE_MEMBER(audio_gate);
DECLARE_WRITE_LINE_MEMBER(cassette_output);
- void tms9901_interrupt(offs_t offset, uint8_t data);
+ DECLARE_WRITE8_MEMBER(tms9901_interrupt);
DECLARE_WRITE_LINE_MEMBER(alphaW);
DECLARE_WRITE_LINE_MEMBER(video_interrupt_in);
@@ -210,8 +213,8 @@ private:
required_ioport m_alpha;
int decode_address(int address);
- uint16_t debugger_read(offs_t offset);
- void debugger_write(offs_t offset, uint16_t data);
+ DECLARE_READ16_MEMBER( debugger_read );
+ DECLARE_WRITE16_MEMBER( debugger_write );
void ready_join();
void set_keyboard_column(int number, int data);
@@ -254,6 +257,9 @@ private:
// Incoming Ready level
int m_sysready;
+ // Saves a pointer to the address space
+ address_space* m_spacep;
+
// Internal DSR mapped in
bool m_internal_dsr_active;
@@ -303,8 +309,11 @@ void ti99_4p_state::memmap_setoffset(address_map &map)
void ti99_4p_state::crumap(address_map &map)
{
- map(0x0000, 0x1fff).rw(FUNC(ti99_4p_state::cruread), FUNC(ti99_4p_state::cruwrite));
- map(0x0000, 0x03ff).rw(m_tms9901, FUNC(tms9901_device::read), FUNC(tms9901_device::write));
+ map(0x0000, 0x01ff).r(FUNC(ti99_4p_state::cruread));
+ map(0x0000, 0x003f).r(m_tms9901, FUNC(tms9901_device::read));
+
+ map(0x0000, 0x0fff).w(FUNC(ti99_4p_state::cruwrite));
+ map(0x0000, 0x01ff).w(m_tms9901, FUNC(tms9901_device::write));
}
/*
@@ -431,7 +440,7 @@ int ti99_4p_state::decode_address(int address)
Called when the memory access starts by setting the address bus. From that
point on, we suspend the CPU until all operations are done.
*/
-uint8_t ti99_4p_state::setoffset(offs_t offset)
+READ8_MEMBER( ti99_4p_state::setoffset )
{
m_addr_buf = offset;
m_waitcount = 0;
@@ -440,6 +449,7 @@ uint8_t ti99_4p_state::setoffset(offs_t offset)
m_decode = SGCPU_NONE;
m_muxready = true;
+ m_spacep = &space;
m_decode = decode_address(m_addr_buf);
@@ -452,7 +462,7 @@ uint8_t ti99_4p_state::setoffset(offs_t offset)
m_waitcount = 5;
m_muxready = false;
m_peribox->memen_in(ASSERT_LINE);
- m_peribox->setaddress_dbin(m_addr_buf+1, m_dbin);
+ m_peribox->setaddress_dbin(space, m_addr_buf+1, m_dbin);
}
ready_join();
@@ -460,7 +470,7 @@ uint8_t ti99_4p_state::setoffset(offs_t offset)
return 0;
}
-uint16_t ti99_4p_state::memread(offs_t offset)
+READ16_MEMBER( ti99_4p_state::memread )
{
int address = 0;
uint8_t hbyte = 0;
@@ -513,10 +523,10 @@ uint16_t ti99_4p_state::memread(offs_t offset)
break;
case SGCPU_PEB:
- if (machine().side_effects_disabled()) return debugger_read(offset);
+ if (machine().side_effects_disabled()) return debugger_read(space, offset);
// The byte from the odd address has already been read into the latch
// Reading the even address now
- m_peribox->readz(m_addr_buf, &hbyte);
+ m_peribox->readz(space, m_addr_buf, &hbyte);
m_peribox->memen_in(CLEAR_LINE);
LOGMASKED(LOG_MEM, "Read even byte from address %04x -> %02x\n", m_addr_buf, hbyte);
value = (hbyte<<8) | m_latch;
@@ -526,7 +536,7 @@ uint16_t ti99_4p_state::memread(offs_t offset)
}
-void ti99_4p_state::memwrite(offs_t offset, uint16_t data)
+WRITE16_MEMBER( ti99_4p_state::memwrite )
{
int address = 0;
@@ -575,7 +585,7 @@ void ti99_4p_state::memwrite(offs_t offset, uint16_t data)
break;
case SGCPU_PEB:
- if (machine().side_effects_disabled()) { debugger_write(offset, data); return; }
+ if (machine().side_effects_disabled()) { debugger_write(space, offset, data); return; }
// Writing the even address now (addr)
// The databus multiplexer puts the even value into the latch and outputs the odd value now.
@@ -583,7 +593,7 @@ void ti99_4p_state::memwrite(offs_t offset, uint16_t data)
// write odd byte
LOGMASKED(LOG_MEM, "datamux: write odd byte to address %04x <- %02x\n", m_addr_buf+1, data & 0xff);
- m_peribox->write(m_addr_buf+1, data & 0xff);
+ m_peribox->write(space, m_addr_buf+1, data & 0xff);
m_peribox->memen_in(CLEAR_LINE);
}
}
@@ -591,14 +601,14 @@ void ti99_4p_state::memwrite(offs_t offset, uint16_t data)
/*
Used when the debugger is reading values from PEB cards.
*/
-uint16_t ti99_4p_state::debugger_read(offs_t offset)
+READ16_MEMBER( ti99_4p_state::debugger_read )
{
uint8_t lval = 0;
uint8_t hval = 0;
uint16_t addrb = offset << 1;
m_peribox->memen_in(ASSERT_LINE);
- m_peribox->readz(addrb+1, &lval);
- m_peribox->readz(addrb, &hval);
+ m_peribox->readz(space, addrb+1, &lval);
+ m_peribox->readz(space, addrb, &hval);
m_peribox->memen_in(CLEAR_LINE);
return ((hval << 8)&0xff00) | (lval & 0xff);
}
@@ -606,12 +616,12 @@ uint16_t ti99_4p_state::debugger_read(offs_t offset)
/*
Used when the debugger is writing values to PEB cards.
*/
-void ti99_4p_state::debugger_write(offs_t offset, uint16_t data)
+WRITE16_MEMBER( ti99_4p_state::debugger_write )
{
int addrb = offset << 1;
m_peribox->memen_in(ASSERT_LINE);
- m_peribox->write(addrb+1, data & 0xff);
- m_peribox->write(addrb, (data>>8) & 0xff);
+ m_peribox->write(space, addrb+1, data & 0xff);
+ m_peribox->write(space, addrb, (data>>8) & 0xff);
m_peribox->memen_in(CLEAR_LINE);
}
@@ -652,14 +662,14 @@ WRITE_LINE_MEMBER( ti99_4p_state::datamux_clock_in )
if (m_waitcount==2)
{
// read odd byte
- m_peribox->readz(m_addr_buf+1, &m_latch);
+ m_peribox->readz(*m_spacep, m_addr_buf+1, &m_latch);
m_peribox->memen_in(CLEAR_LINE);
LOGMASKED(LOG_MEM, "datamux: read odd byte from address %04x -> %02x\n", m_addr_buf+1, m_latch);
// do the setaddress for the even address
m_peribox->memen_in(ASSERT_LINE);
- m_peribox->setaddress_dbin(m_addr_buf, m_dbin);
+ m_peribox->setaddress_dbin(*m_spacep, m_addr_buf, m_dbin);
}
}
}
@@ -679,11 +689,11 @@ WRITE_LINE_MEMBER( ti99_4p_state::datamux_clock_in )
{
// do the setaddress for the even address
m_peribox->memen_in(ASSERT_LINE);
- m_peribox->setaddress_dbin(m_addr_buf, m_dbin);
+ m_peribox->setaddress_dbin(*m_spacep, m_addr_buf, m_dbin);
// write even byte
LOGMASKED(LOG_MEM, "datamux: write even byte to address %04x <- %02x\n", m_addr_buf, m_latch);
- m_peribox->write(m_addr_buf, m_latch);
+ m_peribox->write(*m_spacep, m_addr_buf, m_latch);
m_peribox->memen_in(CLEAR_LINE);
}
}
@@ -701,7 +711,7 @@ WRITE_LINE_MEMBER( ti99_4p_state::datamux_clock_in )
/*
CRU write
*/
-void ti99_4p_state::cruwrite(offs_t offset, uint8_t data)
+WRITE8_MEMBER( ti99_4p_state::cruwrite )
{
int addroff = offset<<1;
@@ -722,13 +732,13 @@ void ti99_4p_state::cruwrite(offs_t offset, uint8_t data)
}
// No match - pass to peribox
- m_peribox->cruwrite(addroff, data);
+ m_peribox->cruwrite(space, addroff, data);
}
-uint8_t ti99_4p_state::cruread(offs_t offset)
+READ8_MEMBER( ti99_4p_state::cruread )
{
uint8_t value = 0;
- m_peribox->crureadz(offset<<4, &value);
+ m_peribox->crureadz(space, offset<<4, &value);
return value;
}
@@ -736,7 +746,7 @@ uint8_t ti99_4p_state::cruread(offs_t offset)
Keyboard/tape control
****************************************************************************/
-uint8_t ti99_4p_state::read_by_9901(offs_t offset)
+READ8_MEMBER( ti99_4p_state::read_by_9901 )
{
int answer=0;
@@ -909,12 +919,11 @@ WRITE_LINE_MEMBER( ti99_4p_state::notconnected )
*/
WRITE_LINE_MEMBER( ti99_4p_state::clock_out )
{
- m_tms9901->phi_line(state);
datamux_clock_in(state);
m_peribox->clock_in(state);
}
-void ti99_4p_state::tms9901_interrupt(offs_t offset, uint8_t data)
+WRITE8_MEMBER( ti99_4p_state::tms9901_interrupt )
{
// offset contains the interrupt level (0-15)
// However, the TI board just ignores that level and hardwires it to 1
@@ -922,14 +931,14 @@ void ti99_4p_state::tms9901_interrupt(offs_t offset, uint8_t data)
m_cpu->set_input_line(INT_9900_INTREQ, data);
}
-uint8_t ti99_4p_state::interrupt_level()
+READ8_MEMBER( ti99_4p_state::interrupt_level )
{
// On the TI-99 systems these IC lines are not used; the input lines
// at the CPU are hardwired to level 1.
return 1;
}
-void ti99_4p_state::external_operation(offs_t offset, uint8_t data)
+WRITE8_MEMBER( ti99_4p_state::external_operation )
{
static char const *const extop[8] = { "inv1", "inv2", "IDLE", "RSET", "inv3", "CKON", "CKOF", "LREX" };
if (offset != IDLE_OP) logerror("External operation %s not implemented on the SGCPU board\n", extop[offset]);
@@ -1011,7 +1020,7 @@ void ti99_4p_state::ti99_4p_60hz(machine_config& config)
m_cpu->dbin_cb().set(FUNC(ti99_4p_state::dbin_line));
// tms9901
- TMS9901(config, m_tms9901, 0);
+ TMS9901(config, m_tms9901, 3000000);
m_tms9901->read_cb().set(FUNC(ti99_4p_state::read_by_9901));
m_tms9901->p_out_cb(2).set(FUNC(ti99_4p_state::keyC0));
m_tms9901->p_out_cb(3).set(FUNC(ti99_4p_state::keyC1));
diff --git a/src/mame/drivers/ti99_4x.cpp b/src/mame/drivers/ti99_4x.cpp
index e7612f9f18f..2e0028ee537 100644
--- a/src/mame/drivers/ti99_4x.cpp
+++ b/src/mame/drivers/ti99_4x.cpp
@@ -121,10 +121,10 @@ public:
private:
// Processor connections with the main board
- uint8_t cruread(offs_t offset);
- uint8_t interrupt_level();
- void cruwrite(offs_t offset, uint8_t data);
- void external_operation(offs_t offset, uint8_t data);
+ DECLARE_READ8_MEMBER( cruread );
+ DECLARE_READ8_MEMBER( interrupt_level );
+ DECLARE_WRITE8_MEMBER( cruwrite );
+ DECLARE_WRITE8_MEMBER( external_operation );
DECLARE_WRITE_LINE_MEMBER( clock_out );
DECLARE_WRITE_LINE_MEMBER( dbin_line );
@@ -146,14 +146,14 @@ private:
DECLARE_WRITE_LINE_MEMBER( handset_interrupt_in );
// Connections with the system interface TMS9901
- uint8_t read_by_9901(offs_t offset);
+ DECLARE_READ8_MEMBER(read_by_9901);
DECLARE_WRITE_LINE_MEMBER(keyC0);
DECLARE_WRITE_LINE_MEMBER(keyC1);
DECLARE_WRITE_LINE_MEMBER(keyC2);
DECLARE_WRITE_LINE_MEMBER(cs1_motor);
DECLARE_WRITE_LINE_MEMBER(audio_gate);
DECLARE_WRITE_LINE_MEMBER(cassette_output);
- void tms9901_interrupt(offs_t offset, uint8_t data);
+ DECLARE_WRITE8_MEMBER(tms9901_interrupt);
DECLARE_WRITE_LINE_MEMBER(handset_ack);
DECLARE_WRITE_LINE_MEMBER(cs2_motor);
DECLARE_WRITE_LINE_MEMBER(alphaW);
@@ -249,11 +249,25 @@ void ti99_4x_state::memmap_setoffset(address_map &map)
The TMS9901 is incompletely decoded
---0 00xx xxcc ccc0
causing 16 mirrors (0000, 0040, 0080, 00c0, ... , 03c0)
+
+ Reading is done by transfering 8 successive bits, so addresses refer to
+ 8 bit groups; writing, however, is done using output lines. The CRU base
+ address in the ti99 systems is twice the bit address:
+
+ (base=0, bit=0x10) == (base=0x20,bit=0)
+
+ Read: 0000 - 003f translates to base addresses 0000 - 03fe
+ 0000 - 01ff is the complete CRU address space 0000 - 1ffe (for TMS9900)
+
+ Write:0000 - 01ff corresponds to bit 0 of base address 0000 - 03fe
*/
void ti99_4x_state::crumap(address_map &map)
{
- map(0x0000, 0x1fff).rw(FUNC(ti99_4x_state::cruread), FUNC(ti99_4x_state::cruwrite));
- map(0x0000, 0x003f).mirror(0x03c0).rw(m_tms9901, FUNC(tms9901_device::read), FUNC(tms9901_device::write));
+ map(0x0000, 0x01ff).r(FUNC(ti99_4x_state::cruread));
+ map(0x0000, 0x0003).mirror(0x003c).r(m_tms9901, FUNC(tms9901_device::read));
+
+ map(0x0000, 0x0fff).w(FUNC(ti99_4x_state::cruwrite));
+ map(0x0000, 0x001f).mirror(0x01e0).w(m_tms9901, FUNC(tms9901_device::write));
}
@@ -403,29 +417,30 @@ INPUT_PORTS_END
Components
******************************************************************************/
-uint8_t ti99_4x_state::cruread(offs_t offset)
+READ8_MEMBER( ti99_4x_state::cruread )
{
- LOGMASKED(LOG_CRUREAD, "read access to CRU address %04x\n", offset << 1);
+ LOGMASKED(LOG_CRUREAD, "read access to CRU address %04x\n", offset << 4);
uint8_t value = 0;
// Let the gromport (not in the QI version) and the p-box behind the I/O port
// decide whether they want to change the value at the CRU address
+ // Also, we translate the bit addresses to base addresses
- if (m_model != MODEL_4QI) m_gromport->crureadz(offset<<1, &value);
- m_ioport->crureadz(offset<<1, &value);
+ if (m_model != MODEL_4QI) m_gromport->crureadz(space, offset<<4, &value);
+ m_ioport->crureadz(space, offset<<4, &value);
return value;
}
-void ti99_4x_state::cruwrite(offs_t offset, uint8_t data)
+WRITE8_MEMBER( ti99_4x_state::cruwrite )
{
LOGMASKED(LOG_CRU, "Write access to CRU address %04x\n", offset << 1);
// The QI version does not propagate the CRU signals to the cartridge slot
- if (m_model != MODEL_4QI) m_gromport->cruwrite(offset<<1, data);
- m_ioport->cruwrite(offset<<1, data);
+ if (m_model != MODEL_4QI) m_gromport->cruwrite(space, offset<<1, data);
+ m_ioport->cruwrite(space, offset<<1, data);
}
-void ti99_4x_state::external_operation(offs_t offset, uint8_t data)
+WRITE8_MEMBER( ti99_4x_state::external_operation )
{
static char const *const extop[8] = { "inv1", "inv2", "IDLE", "RSET", "inv3", "CKON", "CKOF", "LREX" };
// Some games (e.g. Slymoids) actually use IDLE for synchronization
@@ -460,7 +475,7 @@ void ti99_4x_state::external_operation(offs_t offset, uint8_t data)
***************************************************************************/
-uint8_t ti99_4x_state::read_by_9901(offs_t offset)
+READ8_MEMBER( ti99_4x_state::read_by_9901 )
{
int answer=0;
@@ -629,7 +644,7 @@ WRITE_LINE_MEMBER( ti99_4x_state::cassette_output )
m_cassette2->output(state==ASSERT_LINE? +1 : -1);
}
-void ti99_4x_state::tms9901_interrupt(offs_t offset, uint8_t data)
+WRITE8_MEMBER( ti99_4x_state::tms9901_interrupt )
{
// offset contains the interrupt level (0-15)
// However, the TI board just ignores that level and hardwires it to 1
@@ -637,7 +652,7 @@ void ti99_4x_state::tms9901_interrupt(offs_t offset, uint8_t data)
m_cpu->set_input_line(INT_9900_INTREQ, data);
}
-uint8_t ti99_4x_state::interrupt_level()
+READ8_MEMBER( ti99_4x_state::interrupt_level )
{
// On the TI-99 systems these IC lines are not used; the input lines
// at the CPU are hardwired to level 1.
@@ -649,7 +664,6 @@ uint8_t ti99_4x_state::interrupt_level()
*/
WRITE_LINE_MEMBER( ti99_4x_state::clock_out )
{
- m_tms9901->phi_line(state);
m_datamux->clock_in(state);
m_ioport->clock_in(state);
}
@@ -853,8 +867,8 @@ void ti99_4x_state::ti99_4_common(machine_config& config)
m_cpu->clkout_cb().set(FUNC(ti99_4x_state::clock_out));
m_cpu->dbin_cb().set(FUNC(ti99_4x_state::dbin_line));
- // Programmable system interface (driven by CLKOUT)
- TMS9901(config, m_tms9901, 0);
+ // Main board
+ TMS9901(config, m_tms9901, 3000000);
m_tms9901->read_cb().set(FUNC(ti99_4x_state::read_by_9901));
m_tms9901->p_out_cb(2).set(FUNC(ti99_4x_state::keyC0));
m_tms9901->p_out_cb(3).set(FUNC(ti99_4x_state::keyC1));
diff --git a/src/mame/drivers/ti99_8.cpp b/src/mame/drivers/ti99_8.cpp
index ae374b02d42..619d54a3931 100644
--- a/src/mame/drivers/ti99_8.cpp
+++ b/src/mame/drivers/ti99_8.cpp
@@ -247,9 +247,9 @@ private:
DECLARE_MACHINE_RESET(ti99_8);
// Processor connections with the main board
- uint8_t cruread(offs_t offset);
- void cruwrite(offs_t offset, uint8_t data);
- void external_operation(offs_t offset, uint8_t data);
+ DECLARE_READ8_MEMBER( cruread );
+ DECLARE_WRITE8_MEMBER( cruwrite );
+ DECLARE_WRITE8_MEMBER( external_operation );
DECLARE_WRITE_LINE_MEMBER( clock_out );
DECLARE_WRITE_LINE_MEMBER( dbin_line );
@@ -267,7 +267,7 @@ private:
DECLARE_WRITE_LINE_MEMBER( video_interrupt );
// Connections with the system interface TMS9901
- uint8_t read_by_9901(offs_t offset);
+ DECLARE_READ8_MEMBER(read_by_9901);
DECLARE_WRITE_LINE_MEMBER(keyC0);
DECLARE_WRITE_LINE_MEMBER(keyC1);
DECLARE_WRITE_LINE_MEMBER(keyC2);
@@ -275,7 +275,7 @@ private:
DECLARE_WRITE_LINE_MEMBER(audio_gate);
DECLARE_WRITE_LINE_MEMBER(cassette_output);
DECLARE_WRITE_LINE_MEMBER(cassette_motor);
- void tms9901_interrupt(offs_t offset, uint8_t data);
+ DECLARE_WRITE8_MEMBER(tms9901_interrupt);
void crumap(address_map &map);
void memmap(address_map &map);
@@ -327,8 +327,11 @@ void ti99_8_state::memmap_setoffset(address_map &map)
void ti99_8_state::crumap(address_map &map)
{
- map(0x0000, 0x2fff).rw(FUNC(ti99_8_state::cruread), FUNC(ti99_8_state::cruwrite));
- map(0x0000, 0x003f).rw(m_tms9901, FUNC(tms9901_device::read), FUNC(tms9901_device::write));
+ map(0x0000, 0x02ff).r(FUNC(ti99_8_state::cruread));
+ map(0x0000, 0x0003).r(m_tms9901, FUNC(tms9901_device::read));
+
+ map(0x0000, 0x17ff).w(FUNC(ti99_8_state::cruwrite));
+ map(0x0000, 0x001f).w(m_tms9901, FUNC(tms9901_device::write));
}
/* ti99/8 : 54-key keyboard */
@@ -434,27 +437,28 @@ static INPUT_PORTS_START(ti99_8)
INPUT_PORTS_END
-uint8_t ti99_8_state::cruread(offs_t offset)
+READ8_MEMBER( ti99_8_state::cruread )
{
- LOGMASKED(LOG_CRUREAD, "read access to CRU address %04x\n", offset);
+ LOGMASKED(LOG_CRUREAD, "read access to CRU address %04x\n", offset << 4);
uint8_t value = 0;
// Let the mapper, the gromport, and the p-box decide whether they want
// to change the value at the CRU address
- m_mainboard->crureadz(offset<<1, &value);
- m_gromport->crureadz(offset<<1, &value);
- m_ioport->crureadz(offset<<1, &value);
+ // Also, we translate the bit addresses to base addresses
+ m_mainboard->crureadz(space, offset<<4, &value);
+ m_gromport->crureadz(space, offset<<4, &value);
+ m_ioport->crureadz(space, offset<<4, &value);
- LOGMASKED(LOG_CRU, "CRU %04x -> %x\n", offset<<1, value);
+ LOGMASKED(LOG_CRU, "CRU %04x -> %02x\n", offset<<4, value);
return value;
}
-void ti99_8_state::cruwrite(offs_t offset, uint8_t data)
+WRITE8_MEMBER( ti99_8_state::cruwrite )
{
LOGMASKED(LOG_CRU, "CRU %04x <- %x\n", offset<<1, data);
- m_mainboard->cruwrite(offset<<1, data);
- m_gromport->cruwrite(offset<<1, data);
- m_ioport->cruwrite(offset<<1, data);
+ m_mainboard->cruwrite(space, offset<<1, data);
+ m_gromport->cruwrite(space, offset<<1, data);
+ m_ioport->cruwrite(space, offset<<1, data);
}
/***************************************************************************
@@ -465,7 +469,7 @@ void ti99_8_state::cruwrite(offs_t offset, uint8_t data)
keyboard column selection.)
***************************************************************************/
-uint8_t ti99_8_state::read_by_9901(offs_t offset)
+READ8_MEMBER( ti99_8_state::read_by_9901 )
{
int answer=0;
uint8_t joyst;
@@ -600,7 +604,7 @@ WRITE_LINE_MEMBER( ti99_8_state::cassette_output )
m_cassette->output(state==ASSERT_LINE? +1 : -1);
}
-void ti99_8_state::tms9901_interrupt(offs_t offset, uint8_t data)
+WRITE8_MEMBER( ti99_8_state::tms9901_interrupt )
{
m_cpu->set_input_line(INT_9995_INT1, data);
}
@@ -674,7 +678,7 @@ WRITE_LINE_MEMBER( ti99_8_state::notconnected )
LOGMASKED(LOG_INTERRUPTS, "Setting a not connected line ... ignored\n");
}
-void ti99_8_state::external_operation(offs_t offset, uint8_t data)
+WRITE8_MEMBER( ti99_8_state::external_operation )
{
static char const *const extop[8] = { "inv1", "inv2", "IDLE", "RSET", "inv3", "CKON", "CKOF", "LREX" };
if (offset == IDLE_OP) return;
@@ -687,7 +691,6 @@ void ti99_8_state::external_operation(offs_t offset, uint8_t data)
*/
WRITE_LINE_MEMBER( ti99_8_state::clock_out )
{
- m_tms9901->phi_line(state);
m_mainboard->clock_in(state);
}
@@ -744,7 +747,7 @@ void ti99_8_state::ti99_8(machine_config& config)
m_cpu->holda_cb().set(TI998_MAINBOARD_TAG, FUNC(mainboard8_device::holda_line));
// 9901 configuration
- TMS9901(config, m_tms9901, 0);
+ TMS9901(config, m_tms9901, XTAL(10'738'635)/4.0);
m_tms9901->read_cb().set(FUNC(ti99_8_state::read_by_9901));
m_tms9901->p_out_cb(0).set(FUNC(ti99_8_state::keyC0));
m_tms9901->p_out_cb(1).set(FUNC(ti99_8_state::keyC1));
diff --git a/src/mame/drivers/tiamc1.cpp b/src/mame/drivers/tiamc1.cpp
index 2c54dd55b6a..0638e152925 100644
--- a/src/mame/drivers/tiamc1.cpp
+++ b/src/mame/drivers/tiamc1.cpp
@@ -327,12 +327,11 @@ static GFXDECODE_START( gfx_kot )
GFXDECODE_END
-void tiamc1_state::tiamc1(machine_config &config)
-{
+MACHINE_CONFIG_START(tiamc1_state::tiamc1)
/* basic machine hardware */
- I8080(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &tiamc1_state::tiamc1_map);
- m_maincpu->set_addrmap(AS_IO, &tiamc1_state::tiamc1_io_map);
+ MCFG_DEVICE_ADD("maincpu", I8080, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(tiamc1_map)
+ MCFG_DEVICE_IO_MAP(tiamc1_io_map)
i8255_device &ppi(I8255A(config, "kr580vv55a")); /* soviet clone of i8255 */
ppi.in_pa_callback().set_ioport("IN0");
@@ -341,10 +340,10 @@ void tiamc1_state::tiamc1(machine_config &config)
ppi.out_pc_callback().set(FUNC(tiamc1_state::tiamc1_control_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(PIXEL_CLOCK, 336, 0, 256, 312, 0, 256); // pixel clock and htotal comes from docs/schematics, the rest is guess (determined by undumped PROM)
- screen.set_screen_update(FUNC(tiamc1_state::screen_update_tiamc1));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 336, 0, 256, 312, 0, 256) // pixel clock and htotal comes from docs/schematics, the rest is guess (determined by undumped PROM)
+ MCFG_SCREEN_UPDATE_DRIVER(tiamc1_state, screen_update_tiamc1)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_tiamc1);
PALETTE(config, m_palette, FUNC(tiamc1_state::tiamc1_palette), 32);
@@ -352,29 +351,32 @@ void tiamc1_state::tiamc1(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- TIAMC1(config, "2x8253", SND_CLOCK).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("2x8253", TIAMC1, SND_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void tiamc1_state::kot(machine_config &config)
-{
+MACHINE_CONFIG_START(tiamc1_state::kot)
tiamc1(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &tiamc1_state::kotrybolov_map);
- m_maincpu->set_addrmap(AS_IO, &tiamc1_state::kotrybolov_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(kotrybolov_map)
+ MCFG_DEVICE_IO_MAP(kotrybolov_io_map)
+ MCFG_SCREEN_MODIFY("screen")
MCFG_VIDEO_START_OVERRIDE(tiamc1_state, kot)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(tiamc1_state::screen_update_kot));
+ MCFG_SCREEN_UPDATE_DRIVER(tiamc1_state, screen_update_kot)
- m_gfxdecode->set_info(gfx_kot);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_kot)
- config.device_remove("2x8253");
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_REMOVE("2x8253")
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
pit8253_device &pit8253(PIT8253(config, "pit8253", 0));
pit8253.set_clk<0>(PIXEL_CLOCK / 4);
pit8253.set_clk<2>(SND_CLOCK); // guess
pit8253.out_handler<2>().set(FUNC(tiamc1_state::pit8253_2_w));
-}
+MACHINE_CONFIG_END
ROM_START( konek )
diff --git a/src/mame/drivers/ticalc1x.cpp b/src/mame/drivers/ticalc1x.cpp
index 92ab626b219..11f782fcd89 100644
--- a/src/mame/drivers/ticalc1x.cpp
+++ b/src/mame/drivers/ticalc1x.cpp
@@ -38,8 +38,8 @@
class ticalc1x_state : public hh_tms1k_state
{
public:
- ticalc1x_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
+ ticalc1x_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
{ }
};
@@ -47,12 +47,10 @@ public:
/***************************************************************************
- Minidrivers (subclass, I/O, Inputs, Machine Config, ROM Defs)
+ Minidrivers (subclass, I/O, Inputs, Machine Config)
***************************************************************************/
-namespace {
-
/***************************************************************************
Canon Multi 8 (Palmtronic MD-8) / Canon Canola MD 810
@@ -65,8 +63,8 @@ namespace {
class cmulti8_state : public ticalc1x_state
{
public:
- cmulti8_state(const machine_config &mconfig, device_type type, const char *tag) :
- ticalc1x_state(mconfig, type, tag)
+ cmulti8_state(const machine_config &mconfig, device_type type, const char *tag)
+ : ticalc1x_state(mconfig, type, tag)
{ }
void cmulti8(machine_config &config);
@@ -113,6 +111,7 @@ READ8_MEMBER(cmulti8_state::read_k)
return read_inputs(11);
}
+
// config
static INPUT_PORTS_START( cmulti8 )
@@ -188,31 +187,19 @@ static INPUT_PORTS_START( cmulti8 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
-void cmulti8_state::cmulti8(machine_config &config)
-{
+MACHINE_CONFIG_START(cmulti8_state::cmulti8)
+
/* basic machine hardware */
TMS1070(config, m_maincpu, 250000); // approximation - RC osc. R=56K, C=68pf
m_maincpu->k().set(FUNC(cmulti8_state::read_k));
m_maincpu->o().set(FUNC(cmulti8_state::write_o));
m_maincpu->r().set(FUNC(cmulti8_state::write_r));
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_cmulti8);
/* no sound! */
-}
-
-// roms
-
-ROM_START( cmulti8 )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "tmc1079nl", 0x0000, 0x0400, CRC(202c5ed8) SHA1(0143975cac20cb4a4e9f659ca0535e8a9056f5bb) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_cmulti8_output.pla", 0, 365, CRC(e999cece) SHA1(c5012877cd030a4dc66228f109fa23eec1867873) )
-ROM_END
+MACHINE_CONFIG_END
@@ -233,8 +220,8 @@ ROM_END
class tisr16_state : public ticalc1x_state
{
public:
- tisr16_state(const machine_config &mconfig, device_type type, const char *tag) :
- ticalc1x_state(mconfig, type, tag)
+ tisr16_state(const machine_config &mconfig, device_type type, const char *tag)
+ : ticalc1x_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -278,6 +265,7 @@ READ8_MEMBER(tisr16_state::read_k)
return read_inputs(11);
}
+
// config
static INPUT_PORTS_START( tisr16 )
@@ -416,41 +404,19 @@ static INPUT_PORTS_START( tisr16ii )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9")
INPUT_PORTS_END
-void tisr16_state::tisr16(machine_config &config)
-{
+MACHINE_CONFIG_START(tisr16_state::tisr16)
+
/* basic machine hardware */
TMS1000(config, m_maincpu, 300000); // approximation - RC osc. R=43K, C=68pf (note: tisr16ii MCU RC osc. is different: R=30K, C=100pf, same freq)
m_maincpu->k().set(FUNC(tisr16_state::read_k));
m_maincpu->o().set(FUNC(tisr16_state::write_o));
m_maincpu->r().set(FUNC(tisr16_state::write_r));
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_tisr16);
/* no sound! */
-}
-
-// roms
-
-ROM_START( tisr16 )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "tms1001nl", 0x0000, 0x0400, CRC(b7ce3c1d) SHA1(95cdb0c6be31043f4fe06314ed41c0ca1337bc46) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_sr16_micro.pla", 0, 867, CRC(5b35019c) SHA1(730d3b9041ed76d57fbedd73b009477fe432b386) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_sr16_output.pla", 0, 365, CRC(29b08739) SHA1(d55f01e40a2d493d45ea422f12e63b01bcde08fb) )
-ROM_END
-
-ROM_START( tisr16ii )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "tms1016nl", 0x0000, 0x0400, CRC(c07a7b27) SHA1(34ea4d3b59871e08db74f8c5bfb7ff00d1f0adc7) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_sr16ii_micro.pla", 0, 867, CRC(31b43e95) SHA1(6864e4c20f3affffcd3810dcefbc9484dd781547) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_sr16ii_output.pla", 0, 365, CRC(c45dfbd0) SHA1(5d588c1abc317134b51eb08ac3953f1009d80056) )
-ROM_END
+MACHINE_CONFIG_END
@@ -484,8 +450,8 @@ ROM_END
class ti1250_state : public ticalc1x_state
{
public:
- ti1250_state(const machine_config &mconfig, device_type type, const char *tag) :
- ticalc1x_state(mconfig, type, tag)
+ ti1250_state(const machine_config &mconfig, device_type type, const char *tag)
+ : ticalc1x_state(mconfig, type, tag)
{ }
void ti1270(machine_config &config);
@@ -521,6 +487,7 @@ READ8_MEMBER(ti1250_state::read_k)
return read_inputs(6);
}
+
// config
static INPUT_PORTS_START( ti1250 )
@@ -579,22 +546,21 @@ static INPUT_PORTS_START( ti1270 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-")
INPUT_PORTS_END
-void ti1250_state::ti1250(machine_config &config)
-{
+MACHINE_CONFIG_START(ti1250_state::ti1250)
+
/* basic machine hardware */
TMS0950(config, m_maincpu, 200000); // approximation - RC osc. R=68K, C=68pf
m_maincpu->k().set(FUNC(ti1250_state::read_k));
m_maincpu->o().set(FUNC(ti1250_state::write_o));
m_maincpu->r().set(FUNC(ti1250_state::write_r));
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_ti1250);
/* no sound! */
-}
+MACHINE_CONFIG_END
-void ti1250_state::ti1270(machine_config &config)
-{
+MACHINE_CONFIG_START(ti1250_state::ti1270)
ti1250(config);
/* basic machine hardware */
@@ -604,49 +570,7 @@ void ti1250_state::ti1270(machine_config &config)
m_maincpu->r().set(FUNC(ti1250_state::write_r));
config.set_default_layout(layout_ti1270);
-}
-
-// roms
-
-ROM_START( ti1250 )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "tmc0952nl", 0x0000, 0x0400, CRC(fc0cee65) SHA1(1480e4553181f081281d3b78457721b9ecb20173) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_ti1250_micro.pla", 0, 867, CRC(cb3fd2d6) SHA1(82cf36a65dfc3ccb9dd08e48f45ac4d90f693238) )
- ROM_REGION( 195, "maincpu:opla", 0 )
- ROM_LOAD( "tms0950_ti1250_output.pla", 0, 195, CRC(31570eb8) SHA1(c1cb17c31367b65aa777925459515c3d5c565508) )
- ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
-ROM_END
-
-ROM_START( ti125076 )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "tms0972nl_za0348", 0x0000, 0x0400, CRC(6e3f8add) SHA1(a249209e2a92f5016e33b7ad2c6c2660df1df959) )
-
- ROM_REGION( 782, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
- ROM_REGION( 860, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) )
- ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_ti1270_output.pla", 0, 352, CRC(472f95a0) SHA1(32adb17285f2f3f93a4b027a3dd2156ec48000ec) )
- ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
-ROM_END
-
-ROM_START( ti1270 )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "tmc0974nl_za0355", 0x0000, 0x0400, CRC(48e09b4b) SHA1(17f27167164df223f9f06082ece4c3fc3900eda3) )
-
- ROM_REGION( 782, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
- ROM_REGION( 860, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) )
- ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_ti1270_output.pla", 0, 352, CRC(472f95a0) SHA1(32adb17285f2f3f93a4b027a3dd2156ec48000ec) )
- ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
-ROM_END
+MACHINE_CONFIG_END
@@ -663,8 +587,8 @@ ROM_END
class ti25503_state : public ticalc1x_state
{
public:
- ti25503_state(const machine_config &mconfig, device_type type, const char *tag) :
- ticalc1x_state(mconfig, type, tag)
+ ti25503_state(const machine_config &mconfig, device_type type, const char *tag)
+ : ticalc1x_state(mconfig, type, tag)
{ }
void ti25503(machine_config &config);
@@ -705,6 +629,7 @@ READ8_MEMBER(ti25503_state::read_k)
return read_inputs(7);
}
+
// config
static INPUT_PORTS_START( ti25503 )
@@ -751,31 +676,19 @@ static INPUT_PORTS_START( ti25503 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("1/x")
INPUT_PORTS_END
-void ti25503_state::ti25503(machine_config &config)
-{
+MACHINE_CONFIG_START(ti25503_state::ti25503)
+
/* basic machine hardware */
TMS1000(config, m_maincpu, 250000); // approximation
m_maincpu->k().set(FUNC(ti25503_state::read_k));
m_maincpu->o().set(FUNC(ti25503_state::write_o));
m_maincpu->r().set(FUNC(ti25503_state::write_r));
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_ti25503);
/* no sound! */
-}
-
-// roms
-
-ROM_START( ti25503 )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "tms1043nl_za0352", 0x0000, 0x0400, CRC(434c2684) SHA1(ff566f1991f63cfe057879674e6bc7ccd580a919) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_ti25503_micro.pla", 0, 867, CRC(65d274ae) SHA1(33d77efe38f8b067096c643d71263bb5adde0ca9) )
- ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_ti25503_output.pla", 0, 365, CRC(ac43b768) SHA1(5eb19b493328c73edab73e44591afda0fbe4965f) )
-ROM_END
+MACHINE_CONFIG_END
@@ -795,8 +708,8 @@ ROM_END
class ti1000_state : public ticalc1x_state
{
public:
- ti1000_state(const machine_config &mconfig, device_type type, const char *tag) :
- ticalc1x_state(mconfig, type, tag)
+ ti1000_state(const machine_config &mconfig, device_type type, const char *tag)
+ : ticalc1x_state(mconfig, type, tag)
{ }
void ti1000(machine_config &config);
@@ -830,6 +743,7 @@ READ8_MEMBER(ti1000_state::read_k)
return read_inputs(5);
}
+
// config
static INPUT_PORTS_START( ti1000 )
@@ -853,47 +767,31 @@ static INPUT_PORTS_START( ti1000 )
// note: even though power buttons are on the matrix, they are not CPU-controlled
PORT_START("IN.3") // O3 or O4?
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, false)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("%")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
PORT_START("IN.4") // O5
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("On/C") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("On/C") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=")
INPUT_PORTS_END
-void ti1000_state::ti1000(machine_config &config)
-{
+MACHINE_CONFIG_START(ti1000_state::ti1000)
+
/* basic machine hardware */
TMS1990(config, m_maincpu, 250000); // approximation
m_maincpu->k().set(FUNC(ti1000_state::read_k));
m_maincpu->o().set(FUNC(ti1000_state::write_o));
m_maincpu->r().set(FUNC(ti1000_state::write_r));
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_ti1270);
/* no sound! */
-}
-
-// roms
-
-ROM_START( ti1000 )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "tmc1991nl", 0x0000, 0x0400, CRC(2da5381d) SHA1(b5dc14553db2068ed48e130e5ec9109930d8cda9) )
-
- ROM_REGION( 782, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
- ROM_REGION( 860, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0970_common2_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) )
- ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_ti1000_output.pla", 0, 352, CRC(a936631e) SHA1(1f900b12a41419d6e1ffbddd5cf72be3adaa4435) )
- ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0980_common3_segment.pla", 0, 157, CRC(b5b3153f) SHA1(e0145c729695a4f962970aee0571d42cee6f5a9e) )
-ROM_END
+MACHINE_CONFIG_END
@@ -910,8 +808,8 @@ ROM_END
class wizatron_state : public ticalc1x_state
{
public:
- wizatron_state(const machine_config &mconfig, device_type type, const char *tag) :
- ticalc1x_state(mconfig, type, tag)
+ wizatron_state(const machine_config &mconfig, device_type type, const char *tag)
+ : ticalc1x_state(mconfig, type, tag)
{ }
void wizatron(machine_config &config);
@@ -954,6 +852,7 @@ READ8_MEMBER(wizatron_state::read_k)
return read_inputs(4);
}
+
// config
static INPUT_PORTS_START( wizatron )
@@ -982,35 +881,19 @@ static INPUT_PORTS_START( wizatron )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
INPUT_PORTS_END
-void wizatron_state::wizatron(machine_config &config)
-{
+MACHINE_CONFIG_START(wizatron_state::wizatron)
+
/* basic machine hardware */
TMS0970(config, m_maincpu, 250000); // approximation
m_maincpu->k().set(FUNC(wizatron_state::read_k));
m_maincpu->o().set(FUNC(wizatron_state::write_o));
m_maincpu->r().set(FUNC(wizatron_state::write_r));
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_wizatron);
/* no sound! */
-}
-
-// roms
-
-ROM_START( wizatron )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "tmc0907nl_za0379", 0x0000, 0x0400, CRC(5a6af094) SHA1(b1f27e1f13f4db3b052dd50fb08dbf9c4d8db26e) )
-
- ROM_REGION( 782, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
- ROM_REGION( 860, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0970_common2_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) )
- ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_wizatron_output.pla", 0, 352, CRC(c0ee5c04) SHA1(e9fadcef688309adbe6c1c0545aac6883ce4a1ac) )
- ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
-ROM_END
+MACHINE_CONFIG_END
@@ -1030,8 +913,8 @@ ROM_END
class lilprof_state : public wizatron_state
{
public:
- lilprof_state(const machine_config &mconfig, device_type type, const char *tag) :
- wizatron_state(mconfig, type, tag)
+ lilprof_state(const machine_config &mconfig, device_type type, const char *tag)
+ : wizatron_state(mconfig, type, tag)
{ }
void lilprof(machine_config &config);
@@ -1057,6 +940,7 @@ READ8_MEMBER(lilprof_state::read_k)
return read_inputs(5);
}
+
// config
static INPUT_PORTS_START( lilprof )
@@ -1074,35 +958,19 @@ static INPUT_PORTS_START( lilprof )
PORT_CONFSETTING( 0x08, "4" )
INPUT_PORTS_END
-void lilprof_state::lilprof(machine_config &config)
-{
+MACHINE_CONFIG_START(lilprof_state::lilprof)
+
/* basic machine hardware */
TMS0970(config, m_maincpu, 250000); // approximation
m_maincpu->k().set(FUNC(lilprof_state::read_k));
m_maincpu->o().set(FUNC(lilprof_state::write_o));
m_maincpu->r().set(FUNC(wizatron_state::write_r));
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_wizatron);
/* no sound! */
-}
-
-// roms
-
-ROM_START( lilprof )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "tms0975nl_za0356", 0x0000, 0x0400, CRC(fef9dd39) SHA1(5c9614c9c5092d55dabeee2d6e0387d50d6ad4d5) )
-
- ROM_REGION( 782, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
- ROM_REGION( 860, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) )
- ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_lilprof_output.pla", 0, 352, CRC(73f9ca93) SHA1(9d6c559e2c1886c62bcd57e3c3aa897e8829b4d2) )
- ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
-ROM_END
+MACHINE_CONFIG_END
@@ -1122,8 +990,8 @@ ROM_END
class lilprof78_state : public ticalc1x_state
{
public:
- lilprof78_state(const machine_config &mconfig, device_type type, const char *tag) :
- ticalc1x_state(mconfig, type, tag)
+ lilprof78_state(const machine_config &mconfig, device_type type, const char *tag)
+ : ticalc1x_state(mconfig, type, tag)
{ }
void lilprof78(machine_config &config);
@@ -1167,6 +1035,7 @@ READ8_MEMBER(lilprof78_state::read_k)
return read_inputs(5);
}
+
// config
static INPUT_PORTS_START( lilprof78 )
@@ -1190,47 +1059,31 @@ static INPUT_PORTS_START( lilprof78 )
// note: even though power buttons are on the matrix, they are not CPU-controlled
PORT_START("IN.3") // O3 or O4?
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, false)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("Set")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_L) PORT_NAME("Level")
PORT_START("IN.4") // O5
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("On") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("On") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Go")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+")
INPUT_PORTS_END
-void lilprof78_state::lilprof78(machine_config &config)
-{
+MACHINE_CONFIG_START(lilprof78_state::lilprof78)
+
/* basic machine hardware */
TMS1990(config, m_maincpu, 250000); // approximation
m_maincpu->k().set(FUNC(lilprof78_state::read_k));
m_maincpu->o().set(FUNC(lilprof78_state::write_o));
m_maincpu->r().set(FUNC(lilprof78_state::write_r));
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_wizatron);
/* no sound! */
-}
-
-// roms
-
-ROM_START( lilprof78 )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "tmc1993nl", 0x0000, 0x0400, CRC(e941316b) SHA1(7e1542045d1e731cea81a639c9ac9e91bb233b15) )
-
- ROM_REGION( 782, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
- ROM_REGION( 860, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0970_common2_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) )
- ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_lilprof78_output.pla", 0, 352, CRC(b7416cc0) SHA1(57891ffeaf34aafe8a915086c6d2feb78f5113af) )
- ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0980_common3_segment.pla", 0, 157, CRC(b5b3153f) SHA1(e0145c729695a4f962970aee0571d42cee6f5a9e) )
-ROM_END
+MACHINE_CONFIG_END
@@ -1247,8 +1100,8 @@ ROM_END
class dataman_state : public ticalc1x_state
{
public:
- dataman_state(const machine_config &mconfig, device_type type, const char *tag) :
- ticalc1x_state(mconfig, type, tag)
+ dataman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : ticalc1x_state(mconfig, type, tag)
{ }
void dataman(machine_config &config);
@@ -1290,6 +1143,7 @@ READ8_MEMBER(dataman_state::read_k)
return m_inp_matrix[5]->read() | read_inputs(5);
}
+
// config
static INPUT_PORTS_START( dataman )
@@ -1325,14 +1179,14 @@ static INPUT_PORTS_START( dataman )
// note: even though power buttons are on the matrix, they are not CPU-controlled
PORT_START("IN.5") // Vss!
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_U) PORT_NAME("On/User Entry") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, false)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_U) PORT_NAME("On/User Entry") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("?")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("Electro Flash")
INPUT_PORTS_END
-void dataman_state::dataman(machine_config &config)
-{
+MACHINE_CONFIG_START(dataman_state::dataman)
+
/* basic machine hardware */
TMS1980(config, m_maincpu, 300000); // patent says 300kHz
m_maincpu->k().set(FUNC(dataman_state::read_k));
@@ -1340,25 +1194,11 @@ void dataman_state::dataman(machine_config &config)
m_maincpu->r().set(FUNC(dataman_state::write_r));
m_maincpu->power_off().set(FUNC(hh_tms1k_state::auto_power_off));
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_dataman);
/* no sound! */
-}
-
-// roms
-
-ROM_START( dataman )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD16_WORD( "tmc1982nl", 0x0000, 0x1000, CRC(3521f53f) SHA1(c46fe7fe20715fdf5aed65833fb867cfd3938062) ) // matches patent US4340374
-
- ROM_REGION( 1246, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
- ROM_REGION( 2127, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) )
- ROM_REGION( 525, "maincpu:opla", 0 )
- ROM_LOAD( "tms1980_dataman_output.pla", 0, 525, CRC(5fc6f451) SHA1(11475c785c34eab5b13c5dc67f413c709cd4bd4d) )
-ROM_END
+MACHINE_CONFIG_END
@@ -1377,8 +1217,8 @@ ROM_END
class mathmarv_state : public dataman_state
{
public:
- mathmarv_state(const machine_config &mconfig, device_type type, const char *tag) :
- dataman_state(mconfig, type, tag)
+ mathmarv_state(const machine_config &mconfig, device_type type, const char *tag)
+ : dataman_state(mconfig, type, tag)
{ }
void mathmarv(machine_config &config);
@@ -1398,6 +1238,7 @@ WRITE16_MEMBER(mathmarv_state::write_r)
dataman_state::write_r(space, offset, data);
}
+
// config
static INPUT_PORTS_START( mathmarv )
@@ -1409,13 +1250,13 @@ static INPUT_PORTS_START( mathmarv )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("Review")
PORT_MODIFY("IN.5") // Vss!
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_N) PORT_NAME("On/Numberific") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_N) PORT_NAME("On/Numberific") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("Zap")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_NAME("Flash")
INPUT_PORTS_END
-void mathmarv_state::mathmarv(machine_config &config)
-{
+MACHINE_CONFIG_START(mathmarv_state::mathmarv)
+
/* basic machine hardware */
TMS1980(config, m_maincpu, 300000); // assume same as dataman
m_maincpu->k().set(FUNC(dataman_state::read_k));
@@ -1423,27 +1264,14 @@ void mathmarv_state::mathmarv(machine_config &config)
m_maincpu->r().set(FUNC(mathmarv_state::write_r));
m_maincpu->power_off().set(FUNC(hh_tms1k_state::auto_power_off));
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_mathmarv);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-// roms
-
-ROM_START( mathmarv )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD16_WORD( "tmc1986anl", 0x0000, 0x1000, CRC(79fda72d) SHA1(137852b29d9136459f78e29e7810195a956a5903) )
-
- ROM_REGION( 1246, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
- ROM_REGION( 2127, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) )
- ROM_REGION( 525, "maincpu:opla", 0 )
- ROM_LOAD( "tms1980_mathmarv_output.pla", 0, 525, CRC(5fc6f451) SHA1(11475c785c34eab5b13c5dc67f413c709cd4bd4d) )
-ROM_END
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
@@ -1473,8 +1301,8 @@ ROM_END
class ti30_state : public ticalc1x_state
{
public:
- ti30_state(const machine_config &mconfig, device_type type, const char *tag) :
- ticalc1x_state(mconfig, type, tag)
+ ti30_state(const machine_config &mconfig, device_type type, const char *tag)
+ : ticalc1x_state(mconfig, type, tag)
{ }
void ti30(machine_config &config);
@@ -1509,6 +1337,7 @@ READ8_MEMBER(ti30_state::read_k)
return m_inp_matrix[7]->read() | read_inputs(7);
}
+
// config
static INPUT_PORTS_START( ti30 )
@@ -1563,11 +1392,11 @@ static INPUT_PORTS_START( ti30 )
// note: even though power buttons are on the matrix, they are not CPU-controlled
PORT_START("IN.7") // Vss!
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("On/C") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("On/C") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_NAME("1/x")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_NAME(UTF8_SQUAREROOT"x")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("x" UTF8_POW_2)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, false)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
INPUT_PORTS_END
static INPUT_PORTS_START( tiprog )
@@ -1622,11 +1451,11 @@ static INPUT_PORTS_START( tiprog )
// note: even though power buttons are on the matrix, they are not CPU-controlled
PORT_START("IN.7") // Vss!
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_PGUP) PORT_NAME("C/ON") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_PGUP) PORT_NAME("C/ON") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_NAME("DEC")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_NAME("OCT")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_NAME("HEX")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, false)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
INPUT_PORTS_END
static INPUT_PORTS_START( tibusan )
@@ -1682,15 +1511,15 @@ static INPUT_PORTS_START( tibusan )
// note: even though power buttons are on the matrix, they are not CPU-controlled
PORT_START("IN.7") // Vss!
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("On/C") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("On/C") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("2nd")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("x" UTF8_POW_2" " UTF8_SQUAREROOT"x")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_NAME("ln(x) e" UTF8_POW_X)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, false)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
INPUT_PORTS_END
-void ti30_state::ti30(machine_config &config)
-{
+MACHINE_CONFIG_START(ti30_state::ti30)
+
/* basic machine hardware */
TMS0980(config, m_maincpu, 400000); // guessed
m_maincpu->k().set(FUNC(ti30_state::read_k));
@@ -1698,13 +1527,192 @@ void ti30_state::ti30(machine_config &config)
m_maincpu->r().set(FUNC(ti30_state::write_r));
m_maincpu->power_off().set(FUNC(hh_tms1k_state::auto_power_off));
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_ti30);
/* no sound! */
-}
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+ROM_START( cmulti8 )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "tmc1079nl", 0x0000, 0x0400, CRC(202c5ed8) SHA1(0143975cac20cb4a4e9f659ca0535e8a9056f5bb) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_cmulti8_output.pla", 0, 365, CRC(e999cece) SHA1(c5012877cd030a4dc66228f109fa23eec1867873) )
+ROM_END
+
+
+ROM_START( tisr16 )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "tms1001nl", 0x0000, 0x0400, CRC(b7ce3c1d) SHA1(95cdb0c6be31043f4fe06314ed41c0ca1337bc46) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_sr16_micro.pla", 0, 867, CRC(5b35019c) SHA1(730d3b9041ed76d57fbedd73b009477fe432b386) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_sr16_output.pla", 0, 365, CRC(29b08739) SHA1(d55f01e40a2d493d45ea422f12e63b01bcde08fb) )
+ROM_END
+
+
+ROM_START( tisr16ii )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "tms1016nl", 0x0000, 0x0400, CRC(c07a7b27) SHA1(34ea4d3b59871e08db74f8c5bfb7ff00d1f0adc7) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_sr16ii_micro.pla", 0, 867, CRC(31b43e95) SHA1(6864e4c20f3affffcd3810dcefbc9484dd781547) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_sr16ii_output.pla", 0, 365, CRC(c45dfbd0) SHA1(5d588c1abc317134b51eb08ac3953f1009d80056) )
+ROM_END
+
+
+ROM_START( ti1250 )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "tmc0952nl", 0x0000, 0x0400, CRC(fc0cee65) SHA1(1480e4553181f081281d3b78457721b9ecb20173) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_ti1250_micro.pla", 0, 867, CRC(cb3fd2d6) SHA1(82cf36a65dfc3ccb9dd08e48f45ac4d90f693238) )
+ ROM_REGION( 195, "maincpu:opla", 0 )
+ ROM_LOAD( "tms0950_ti1250_output.pla", 0, 195, CRC(31570eb8) SHA1(c1cb17c31367b65aa777925459515c3d5c565508) )
+ ROM_REGION( 157, "maincpu:spla", 0 )
+ ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
+ROM_END
+
+ROM_START( ti125076 )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "tms0972nl_za0348", 0x0000, 0x0400, CRC(6e3f8add) SHA1(a249209e2a92f5016e33b7ad2c6c2660df1df959) )
+
+ ROM_REGION( 782, "maincpu:ipla", 0 )
+ ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
+ ROM_REGION( 860, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) )
+ ROM_REGION( 352, "maincpu:opla", 0 )
+ ROM_LOAD( "tms0980_ti1270_output.pla", 0, 352, CRC(472f95a0) SHA1(32adb17285f2f3f93a4b027a3dd2156ec48000ec) )
+ ROM_REGION( 157, "maincpu:spla", 0 )
+ ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
+ROM_END
+
+
+ROM_START( ti1270 )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "tmc0974nl_za0355", 0x0000, 0x0400, CRC(48e09b4b) SHA1(17f27167164df223f9f06082ece4c3fc3900eda3) )
+
+ ROM_REGION( 782, "maincpu:ipla", 0 )
+ ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
+ ROM_REGION( 860, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) )
+ ROM_REGION( 352, "maincpu:opla", 0 )
+ ROM_LOAD( "tms0980_ti1270_output.pla", 0, 352, CRC(472f95a0) SHA1(32adb17285f2f3f93a4b027a3dd2156ec48000ec) )
+ ROM_REGION( 157, "maincpu:spla", 0 )
+ ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
+ROM_END
+
+
+ROM_START( ti25503 )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "tms1043nl_za0352", 0x0000, 0x0400, CRC(434c2684) SHA1(ff566f1991f63cfe057879674e6bc7ccd580a919) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_ti25503_micro.pla", 0, 867, CRC(65d274ae) SHA1(33d77efe38f8b067096c643d71263bb5adde0ca9) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_ti25503_output.pla", 0, 365, CRC(ac43b768) SHA1(5eb19b493328c73edab73e44591afda0fbe4965f) )
+ROM_END
+
+
+ROM_START( ti1000 )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "tmc1991nl", 0x0000, 0x0400, CRC(2da5381d) SHA1(b5dc14553db2068ed48e130e5ec9109930d8cda9) )
+
+ ROM_REGION( 782, "maincpu:ipla", 0 )
+ ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
+ ROM_REGION( 860, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0970_common2_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) )
+ ROM_REGION( 352, "maincpu:opla", 0 )
+ ROM_LOAD( "tms0980_ti1000_output.pla", 0, 352, CRC(a936631e) SHA1(1f900b12a41419d6e1ffbddd5cf72be3adaa4435) )
+ ROM_REGION( 157, "maincpu:spla", 0 )
+ ROM_LOAD( "tms0980_common3_segment.pla", 0, 157, CRC(b5b3153f) SHA1(e0145c729695a4f962970aee0571d42cee6f5a9e) )
+ROM_END
+
+
+ROM_START( wizatron )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "tmc0907nl_za0379", 0x0000, 0x0400, CRC(5a6af094) SHA1(b1f27e1f13f4db3b052dd50fb08dbf9c4d8db26e) )
+
+ ROM_REGION( 782, "maincpu:ipla", 0 )
+ ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
+ ROM_REGION( 860, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0970_common2_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) )
+ ROM_REGION( 352, "maincpu:opla", 0 )
+ ROM_LOAD( "tms0980_wizatron_output.pla", 0, 352, CRC(c0ee5c04) SHA1(e9fadcef688309adbe6c1c0545aac6883ce4a1ac) )
+ ROM_REGION( 157, "maincpu:spla", 0 )
+ ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
+ROM_END
+
+
+ROM_START( lilprof )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "tms0975nl_za0356", 0x0000, 0x0400, CRC(fef9dd39) SHA1(5c9614c9c5092d55dabeee2d6e0387d50d6ad4d5) )
+
+ ROM_REGION( 782, "maincpu:ipla", 0 )
+ ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
+ ROM_REGION( 860, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) )
+ ROM_REGION( 352, "maincpu:opla", 0 )
+ ROM_LOAD( "tms0980_lilprof_output.pla", 0, 352, CRC(73f9ca93) SHA1(9d6c559e2c1886c62bcd57e3c3aa897e8829b4d2) )
+ ROM_REGION( 157, "maincpu:spla", 0 )
+ ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
+ROM_END
+
+ROM_START( lilprof78 )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "tmc1993nl", 0x0000, 0x0400, CRC(e941316b) SHA1(7e1542045d1e731cea81a639c9ac9e91bb233b15) )
+
+ ROM_REGION( 782, "maincpu:ipla", 0 )
+ ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
+ ROM_REGION( 860, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0970_common2_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) )
+ ROM_REGION( 352, "maincpu:opla", 0 )
+ ROM_LOAD( "tms0980_lilprof78_output.pla", 0, 352, CRC(b7416cc0) SHA1(57891ffeaf34aafe8a915086c6d2feb78f5113af) )
+ ROM_REGION( 157, "maincpu:spla", 0 )
+ ROM_LOAD( "tms0980_common3_segment.pla", 0, 157, CRC(b5b3153f) SHA1(e0145c729695a4f962970aee0571d42cee6f5a9e) )
+ROM_END
+
+
+ROM_START( dataman )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD16_WORD( "tmc1982nl", 0x0000, 0x1000, CRC(3521f53f) SHA1(c46fe7fe20715fdf5aed65833fb867cfd3938062) ) // matches patent US4340374
+
+ ROM_REGION( 1246, "maincpu:ipla", 0 )
+ ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
+ ROM_REGION( 2127, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) )
+ ROM_REGION( 525, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1980_dataman_output.pla", 0, 525, CRC(5fc6f451) SHA1(11475c785c34eab5b13c5dc67f413c709cd4bd4d) )
+ROM_END
+
+
+ROM_START( mathmarv )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD16_WORD( "tmc1986anl", 0x0000, 0x1000, CRC(79fda72d) SHA1(137852b29d9136459f78e29e7810195a956a5903) )
+
+ ROM_REGION( 1246, "maincpu:ipla", 0 )
+ ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
+ ROM_REGION( 2127, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) )
+ ROM_REGION( 525, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1980_mathmarv_output.pla", 0, 525, CRC(5fc6f451) SHA1(11475c785c34eab5b13c5dc67f413c709cd4bd4d) )
+ROM_END
-// roms
ROM_START( ti30 )
ROM_REGION( 0x1000, "maincpu", 0 )
@@ -1720,6 +1728,7 @@ ROM_START( ti30 )
ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END
+
ROM_START( tibusan )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD16_WORD( "tmc0982nl", 0x0000, 0x1000, CRC(6954560a) SHA1(6c153a0c9239a811e3514a43d809964c06f8f88e) )
@@ -1734,6 +1743,7 @@ ROM_START( tibusan )
ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END
+
ROM_START( tiprog )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD16_WORD( "za0675nl", 0x0000, 0x1000, CRC(82355854) SHA1(03fab373bce04df8ea3fe25352525e8539213626) ) // tmc0983
@@ -1750,16 +1760,8 @@ ROM_END
-} // anonymous namespace
-
-/***************************************************************************
-
- Game driver(s)
-
-***************************************************************************/
-
-// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
-COMP( 1977, cmulti8, 0, 0, cmulti8, cmulti8, cmulti8_state, empty_init, "Canon", "Multi 8 (Canon)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY FULLNAME, FLAGS
+COMP( 1977, cmulti8, 0, 0, cmulti8, cmulti8, cmulti8_state, empty_init, "Canon", "Multi 8 (Canon)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1974, tisr16, 0, 0, tisr16, tisr16, tisr16_state, empty_init, "Texas Instruments", "SR-16", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1975, tisr16ii, 0, 0, tisr16, tisr16ii, tisr16_state, empty_init, "Texas Instruments", "SR-16 II", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/tickee.cpp b/src/mame/drivers/tickee.cpp
index 48698080c09..3329389d6a3 100644
--- a/src/mame/drivers/tickee.cpp
+++ b/src/mame/drivers/tickee.cpp
@@ -454,6 +454,7 @@ void tickee_state::tickee_map(address_map &map)
map(0x04200100, 0x0420011f).w("ym2", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
map(0x04400000, 0x0440007f).w(FUNC(tickee_state::tickee_control_w)).share("control");
map(0x04400040, 0x0440004f).portr("IN2");
+ map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xc0000240, 0xc000025f).nopw(); /* seems to be a bug in their code */
map(0xff000000, 0xffffffff).rom().region("user1", 0);
}
@@ -471,6 +472,7 @@ void tickee_state::ghoshunt_map(address_map &map)
map(0x04300100, 0x0430010f).r("ym2", FUNC(ay8910_device::data_r)).umask16(0x00ff);
map(0x04300100, 0x0430011f).w("ym2", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
map(0x04500000, 0x0450007f).w(FUNC(tickee_state::tickee_control_w)).share("control");
+ map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xc0000240, 0xc000025f).nopw(); /* seems to be a bug in their code */
map(0xff000000, 0xffffffff).rom().region("user1", 0);
}
@@ -487,6 +489,7 @@ void tickee_state::mouseatk_map(address_map &map)
map(0x04200100, 0x0420010f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
map(0x04400000, 0x0440007f).w(FUNC(tickee_state::tickee_control_w)).share("control");
map(0x04400040, 0x0440004f).portr("IN2"); // ?
+ map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xc0000240, 0xc000025f).nopw(); /* seems to be a bug in their code */
map(0xff000000, 0xffffffff).rom().region("user1", 0);
}
@@ -497,6 +500,7 @@ void tickee_state::rapidfir_map(address_map &map)
{
map(0x00000000, 0x007fffff).ram().share("vram");
map(0x02000000, 0x027fffff).rw(FUNC(tickee_state::rapidfir_transparent_r), FUNC(tickee_state::rapidfir_transparent_w));
+ map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xfc000000, 0xfc00000f).r(FUNC(tickee_state::rapidfir_gun1_r));
map(0xfc000100, 0xfc00010f).r(FUNC(tickee_state::rapidfir_gun2_r));
map(0xfc000400, 0xfc00040f).r(FUNC(tickee_state::ffff_r));
@@ -754,8 +758,8 @@ INPUT_PORTS_END
*
*************************************/
-void tickee_state::tickee(machine_config &config)
-{
+MACHINE_CONFIG_START(tickee_state::tickee)
+
/* basic machine hardware */
TMS34010(config, m_maincpu, XTAL(40'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &tickee_state::tickee_map);
@@ -767,17 +771,17 @@ void tickee_state::tickee(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(tickee_state,tickee)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- TICKET_DISPENSER(config, m_ticket[0], attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH);
- TICKET_DISPENSER(config, m_ticket[1], attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("ticket1", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
+ MCFG_TICKET_DISPENSER_ADD("ticket2", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
/* video hardware */
- TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT);
+ MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
MCFG_VIDEO_START_OVERRIDE(tickee_state,tickee)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(VIDEO_CLOCK/2, 444, 0, 320, 233, 0, 200);
- m_screen->set_screen_update("maincpu", FUNC(tms34010_device::tms340x0_rgb32));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 444, 0, 320, 233, 0, 200)
+ MCFG_SCREEN_UPDATE_DEVICE("maincpu", tms34010_device, tms340x0_rgb32)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -791,20 +795,20 @@ void tickee_state::tickee(machine_config &config)
ym2.port_a_read_callback().set_ioport("IN0");
ym2.port_b_read_callback().set_ioport("IN2");
ym2.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
-void tickee_state::ghoshunt(machine_config &config)
-{
+MACHINE_CONFIG_START(tickee_state::ghoshunt)
tickee(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &tickee_state::ghoshunt_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(ghoshunt_map)
+MACHINE_CONFIG_END
-void tickee_state::rapidfir(machine_config &config)
-{
+MACHINE_CONFIG_START(tickee_state::rapidfir)
+
/* basic machine hardware */
TMS34010(config, m_maincpu, XTAL(50'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &tickee_state::rapidfir_map);
@@ -821,23 +825,24 @@ void tickee_state::rapidfir(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT);
+ MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
MCFG_VIDEO_START_OVERRIDE(tickee_state,tickee)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(VIDEO_CLOCK/2, 444, 0, 320, 233, 0, 200);
- m_screen->set_screen_update("maincpu", FUNC(tms34010_device::tms340x0_rgb32));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 444, 0, 320, 233, 0, 200)
+ MCFG_SCREEN_UPDATE_DEVICE("maincpu", tms34010_device, tms340x0_rgb32)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, OKI_CLOCK, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, OKI_CLOCK, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
-void tickee_state::mouseatk(machine_config &config)
-{
+MACHINE_CONFIG_START(tickee_state::mouseatk)
+
/* basic machine hardware */
TMS34010(config, m_maincpu, XTAL(40'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &tickee_state::mouseatk_map);
@@ -849,15 +854,15 @@ void tickee_state::mouseatk(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(tickee_state,tickee)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- TICKET_DISPENSER(config, m_ticket[0], attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH);
- TICKET_DISPENSER(config, m_ticket[1], attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("ticket1", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
+ MCFG_TICKET_DISPENSER_ADD("ticket2", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
/* video hardware */
- TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT);
+ MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(VIDEO_CLOCK/2, 444, 0, 320, 233, 0, 200);
- m_screen->set_screen_update("maincpu", FUNC(tms34010_device::tms340x0_rgb32));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 444, 0, 320, 233, 0, 200)
+ MCFG_SCREEN_UPDATE_DEVICE("maincpu", tms34010_device, tms340x0_rgb32)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -867,8 +872,9 @@ void tickee_state::mouseatk(machine_config &config)
ym.port_b_read_callback().set_ioport("IN1");
ym.add_route(ALL_OUTPUTS, "mono", 0.50);
- OKIM6295(config, m_oki, OKI_CLOCK, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, OKI_CLOCK, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/tiki100.cpp b/src/mame/drivers/tiki100.cpp
index 28c4802139f..ff6955d30b2 100644
--- a/src/mame/drivers/tiki100.cpp
+++ b/src/mame/drivers/tiki100.cpp
@@ -36,7 +36,7 @@ READ8_MEMBER( tiki100_state::mrq_r )
{
bool mdis = 1;
- uint8_t data = m_exp->mrq_r(offset, 0xff, mdis);
+ uint8_t data = m_exp->mrq_r(space, offset, 0xff, mdis);
offs_t prom_addr = mdis << 5 | m_vire << 4 | m_rome << 3 | (offset >> 13);
uint8_t prom = m_prom->base()[prom_addr] ^ 0xff;
@@ -84,12 +84,12 @@ WRITE8_MEMBER( tiki100_state::mrq_w )
m_ram->pointer()[offset] = data;
}
- m_exp->mrq_w(offset, data);
+ m_exp->mrq_w(space, offset, data);
}
READ8_MEMBER( tiki100_state::iorq_r )
{
- uint8_t data = m_exp->iorq_r(offset, 0xff);
+ uint8_t data = m_exp->iorq_r(space, offset, 0xff);
switch ((offset & 0xff) >> 2)
{
@@ -113,7 +113,7 @@ READ8_MEMBER( tiki100_state::iorq_r )
switch (offset & 0x03)
{
case 3:
- data = m_psg->data_r();
+ data = m_psg->data_r(space, 0);
break;
}
break;
@@ -128,7 +128,7 @@ READ8_MEMBER( tiki100_state::iorq_r )
WRITE8_MEMBER( tiki100_state::iorq_w )
{
- m_exp->iorq_w(offset, data);
+ m_exp->iorq_w(space, offset, data);
switch ((offset & 0xff) >> 2)
{
@@ -160,11 +160,11 @@ WRITE8_MEMBER( tiki100_state::iorq_w )
break;
case 2:
- m_psg->address_w(data);
+ m_psg->address_w(space, 0, data);
break;
case 3:
- m_psg->data_w(data);
+ m_psg->data_w(space, 0, data);
break;
}
break;
@@ -700,8 +700,7 @@ void tiki100_state::machine_reset()
/* Machine Driver */
-void tiki100_state::tiki100(machine_config &config)
-{
+MACHINE_CONFIG_START(tiki100_state::tiki100)
/* basic machine hardware */
Z80(config, m_maincpu, 8_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &tiki100_state::tiki100_mem);
@@ -709,20 +708,20 @@ void tiki100_state::tiki100(machine_config &config)
m_maincpu->set_daisy_config(tiki100_daisy_chain);
/* video hardware */
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
- screen.set_raw(20_MHz_XTAL, 1280, 0, 1024, 312, 0, 256);
- screen.set_screen_update(FUNC(tiki100_state::screen_update));
- PALETTE(config, m_palette).set_entries(16);
-
- TIKI100_BUS(config, m_exp, 0);
- m_exp->irq_wr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- m_exp->nmi_wr_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
- m_exp->busrq_wr_callback().set(FUNC(tiki100_state::busrq_w));
- m_exp->mrq_rd_callback().set(FUNC(tiki100_state::mrq_r));
- m_exp->mrq_wr_callback().set(FUNC(tiki100_state::mrq_w));
- TIKI100_BUS_SLOT(config, "slot1", tiki100_cards, "8088");
- TIKI100_BUS_SLOT(config, "slot2", tiki100_cards, "hdc");
- TIKI100_BUS_SLOT(config, "slot3", tiki100_cards, nullptr);
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_RAW_PARAMS(20_MHz_XTAL, 1280, 0, 1024, 312, 0, 256)
+ MCFG_SCREEN_UPDATE_DRIVER(tiki100_state, screen_update)
+ MCFG_PALETTE_ADD("palette", 16)
+
+ MCFG_TIKI100_BUS_ADD()
+ MCFG_TIKI100_BUS_IRQ_CALLBACK(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0))
+ MCFG_TIKI100_BUS_NMI_CALLBACK(INPUTLINE(Z80_TAG, INPUT_LINE_NMI))
+ MCFG_TIKI100_BUS_BUSRQ_CALLBACK(WRITELINE(*this, tiki100_state, busrq_w))
+ MCFG_TIKI100_BUS_IN_MREQ_CALLBACK(READ8(*this, tiki100_state, mrq_r))
+ MCFG_TIKI100_BUS_OUT_MREQ_CALLBACK(WRITE8(*this, tiki100_state, mrq_w))
+ MCFG_TIKI100_BUS_SLOT_ADD("slot1", "8088")
+ MCFG_TIKI100_BUS_SLOT_ADD("slot2", "hdc")
+ MCFG_TIKI100_BUS_SLOT_ADD("slot3", nullptr)
/* devices */
Z80DART(config, m_dart, 8_MHz_XTAL / 4);
@@ -747,11 +746,11 @@ void tiki100_state::tiki100(machine_config &config)
m_ctc->zc_callback<1>().set(m_dart, FUNC(z80dart_device::rxtxcb_w));
m_ctc->zc_callback<2>().set(FUNC(tiki100_state::bar2_w));
- TIMER(config, "ctc").configure_periodic(FUNC(tiki100_state::ctc_tick), attotime::from_hz(8_MHz_XTAL / 4));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", tiki100_state, ctc_tick, attotime::from_hz(8_MHz_XTAL / 4))
FD1797(config, m_fdc, 8_MHz_XTAL / 8); // FD1767PL-02 or FD1797-PL
- FLOPPY_CONNECTOR(config, FD1797_TAG":0", tiki100_floppies, "525qd", tiki100_state::floppy_formats);
- FLOPPY_CONNECTOR(config, FD1797_TAG":1", tiki100_floppies, "525qd", tiki100_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(FD1797_TAG":0", tiki100_floppies, "525qd", tiki100_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FD1797_TAG":1", tiki100_floppies, "525qd", tiki100_state::floppy_formats)
rs232_port_device &rs232a(RS232_PORT(config, RS232_A_TAG, default_rs232_devices, nullptr));
rs232a.rxd_handler().set(m_dart, FUNC(z80dart_device::rxa_w));
@@ -766,14 +765,12 @@ void tiki100_state::tiki100(machine_config &config)
m_centronics->perror_handler().set(FUNC(tiki100_state::write_centronics_perror));
INPUT_BUFFER(config, "cent_data_in");
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
-
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD(CASSETTE_TAG)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
- TIMER(config, "tape").configure_periodic(FUNC(tiki100_state::tape_tick), attotime::from_hz(44100));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", tiki100_state, tape_tick, attotime::from_hz(44100))
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -786,8 +783,8 @@ void tiki100_state::tiki100(machine_config &config)
RAM(config, RAM_TAG).set_default_size("64K");
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("tiki100");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "tiki100")
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/tim011.cpp b/src/mame/drivers/tim011.cpp
index ebbaae170b2..2891f818130 100644
--- a/src/mame/drivers/tim011.cpp
+++ b/src/mame/drivers/tim011.cpp
@@ -132,37 +132,36 @@ static const floppy_format_type tim011_floppy_formats[] = {
nullptr
};
-void tim011_state::tim011(machine_config &config)
-{
+MACHINE_CONFIG_START(tim011_state::tim011)
/* basic machine hardware */
- Z180(config, m_maincpu, XTAL(12'288'000) / 2); // location U17 HD64180
- m_maincpu->set_addrmap(AS_PROGRAM, &tim011_state::tim011_mem);
- m_maincpu->set_addrmap(AS_IO, &tim011_state::tim011_io);
- m_maincpu->set_vblank_int("screen", FUNC(tim011_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu",Z180, XTAL(12'288'000) / 2) // location U17 HD64180
+ MCFG_DEVICE_PROGRAM_MAP(tim011_mem)
+ MCFG_DEVICE_IO_MAP(tim011_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tim011_state, irq0_line_hold)
-// CDP1802(config, "keyboard", XTAL(1'750'000)); // CDP1802, unknown clock
+// MCFG_DEVICE_ADD("keyboard",CDP1802, XTAL(1'750'000)) // CDP1802, unknown clock
// FDC9266 location U43
UPD765A(config, m_fdc, XTAL(8'000'000), true, true);
m_fdc->intrq_wr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ2);
/* floppy drives */
- FLOPPY_CONNECTOR(config, FDC9266_TAG ":0", tim011_floppies, "35dd", tim011_floppy_formats);
- FLOPPY_CONNECTOR(config, FDC9266_TAG ":1", tim011_floppies, "35dd", tim011_floppy_formats);
- FLOPPY_CONNECTOR(config, FDC9266_TAG ":2", tim011_floppies, "35dd", tim011_floppy_formats);
- FLOPPY_CONNECTOR(config, FDC9266_TAG ":3", tim011_floppies, "35dd", tim011_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(FDC9266_TAG ":0", tim011_floppies, "35dd", tim011_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC9266_TAG ":1", tim011_floppies, "35dd", tim011_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC9266_TAG ":2", tim011_floppies, "35dd", tim011_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FDC9266_TAG ":3", tim011_floppies, "35dd", tim011_floppy_formats)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(tim011_state::screen_update_tim011));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tim011_state, screen_update_tim011)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( tim011 )
diff --git a/src/mame/drivers/tim100.cpp b/src/mame/drivers/tim100.cpp
index 22717a5374f..c58bee08df5 100644
--- a/src/mame/drivers/tim100.cpp
+++ b/src/mame/drivers/tim100.cpp
@@ -161,31 +161,30 @@ WRITE_LINE_MEMBER( tim100_state::irq_w )
}
-void tim100_state::tim100(machine_config &config)
-{
+MACHINE_CONFIG_START(tim100_state::tim100)
/* basic machine hardware */
- I8085A(config, m_maincpu, XTAL(4'915'200)); // divider unknown
- m_maincpu->set_addrmap(AS_PROGRAM, &tim100_state::tim100_mem);
- m_maincpu->set_addrmap(AS_IO, &tim100_state::tim100_io);
+ MCFG_DEVICE_ADD("maincpu",I8085A, XTAL(4'915'200)) // divider unknown
+ MCFG_DEVICE_PROGRAM_MAP(tim100_mem)
+ MCFG_DEVICE_IO_MAP(tim100_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update("crtc", FUNC(i8276_device::screen_update));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(600, 352);
- screen.set_visarea(0, 40*12-1, 0, 16*16-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", i8276_device, screen_update)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(600, 352)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40*12-1, 0, 16*16-1)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_tim100);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tim100 )
- I8276(config, m_crtc, XTAL(4'915'200));
- m_crtc->set_character_width(12);
- m_crtc->set_display_callback(FUNC(tim100_state::crtc_display_pixels), this);
- m_crtc->drq_wr_callback().set(FUNC(tim100_state::drq_w));
- m_crtc->irq_wr_callback().set(FUNC(tim100_state::irq_w));
- m_crtc->set_screen("screen");
+ MCFG_DEVICE_ADD("crtc", I8276, XTAL(4'915'200))
+ MCFG_I8275_CHARACTER_WIDTH(12)
+ MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(tim100_state, crtc_display_pixels)
+ MCFG_I8275_DRQ_CALLBACK(WRITELINE(*this, tim100_state, drq_w))
+ MCFG_I8275_IRQ_CALLBACK(WRITELINE(*this, tim100_state, irq_w))
+ MCFG_VIDEO_SET_SCREEN("screen")
- PALETTE(config, m_palette).set_entries(3);
+ MCFG_PALETTE_ADD("palette", 3)
i8251_device &uart_u17(I8251(config, "uart_u17", 0));
uart_u17.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
@@ -214,7 +213,7 @@ void tim100_state::tim100(machine_config &config)
uart_clock.signal_handler().append("uart_u17", FUNC(i8251_device::write_rxc));
uart_clock.signal_handler().append("uart_u18", FUNC(i8251_device::write_txc));
uart_clock.signal_handler().append("uart_u18", FUNC(i8251_device::write_rxc));
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( tim100 )
diff --git a/src/mame/drivers/timelimt.cpp b/src/mame/drivers/timelimt.cpp
index c6593f263c0..ba8b3d1e1c6 100644
--- a/src/mame/drivers/timelimt.cpp
+++ b/src/mame/drivers/timelimt.cpp
@@ -222,20 +222,20 @@ INTERRUPT_GEN_MEMBER(timelimt_state::irq)
/***************************************************************************/
-void timelimt_state::timelimt(machine_config &config)
-{
+MACHINE_CONFIG_START(timelimt_state::timelimt)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 5000000); /* 5.000 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &timelimt_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &timelimt_state::main_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(timelimt_state::irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, 5000000) /* 5.000 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", timelimt_state, irq)
- Z80(config, m_audiocpu, 18432000/6); /* 3.072 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &timelimt_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &timelimt_state::sound_io_map);
- m_audiocpu->set_vblank_int("screen", FUNC(timelimt_state::irq0_line_hold)); /* ? */
+ MCFG_DEVICE_ADD("audiocpu", Z80,18432000/6) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", timelimt_state, irq0_line_hold) /* ? */
- config.m_minimum_quantum = attotime::from_hz(3000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(3000))
ls259_device &mainlatch(LS259(config, "mainlatch")); // IC15
mainlatch.q_out_cb<0>().set(FUNC(timelimt_state::nmi_enable_w));
@@ -247,13 +247,13 @@ void timelimt_state::timelimt(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(timelimt_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(timelimt_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_timelimt);
PALETTE(config, m_palette, FUNC(timelimt_state::timelimt_palette), 64+32);
@@ -268,7 +268,7 @@ void timelimt_state::timelimt(machine_config &config)
ay8910_device &ay2(AY8910(config, "ay2", 18432000/12));
ay2.port_a_read_callback().set("soundlatch", FUNC(generic_latch_8_device::read));
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/timetrv.cpp b/src/mame/drivers/timetrv.cpp
index dda61157b56..fcba7d7649e 100644
--- a/src/mame/drivers/timetrv.cpp
+++ b/src/mame/drivers/timetrv.cpp
@@ -141,12 +141,12 @@ static INPUT_PORTS_START( timetrv )
// 0x80 eeprom read bit
INPUT_PORTS_END
-void timetrv_state::timetrv(machine_config &config)
-{
+MACHINE_CONFIG_START(timetrv_state::timetrv)
+
/* basic machine hardware */
- I80188(config, m_maincpu, 20000000); //???
- m_maincpu->set_addrmap(AS_PROGRAM, &timetrv_state::timetrv_map);
- m_maincpu->set_addrmap(AS_IO, &timetrv_state::timetrv_io);
+ MCFG_DEVICE_ADD("maincpu",I80188,20000000) //???
+ MCFG_DEVICE_PROGRAM_MAP(timetrv_map)
+ MCFG_DEVICE_IO_MAP(timetrv_io)
// interrupts are generated by internally-driven timers
EEPROM_2816(config, "eeprom");
@@ -160,20 +160,20 @@ void timetrv_state::timetrv(machine_config &config)
ppi2.in_pb_callback().set(FUNC(timetrv_state::in_r)); //dsw
ppi2.in_pc_callback().set(FUNC(timetrv_state::in_r)); //dsw
- NS16450(config, "uart", 1843200); // P82050 (serial interface for laserdisc)
+ MCFG_DEVICE_ADD("uart", NS16450, 1843200) // P82050 (serial interface for laserdisc)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(512, 512);
- screen.set_visarea(0*8, 512-1, 0*8, 512-1);
- screen.set_screen_update(FUNC(timetrv_state::screen_update_timetrv));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 512)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 512-1)
+ MCFG_SCREEN_UPDATE_DRIVER(timetrv_state, screen_update_timetrv)
- PALETTE(config, "palette").set_entries(512);
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/timex.cpp b/src/mame/drivers/timex.cpp
index 561c41193b0..18386314adb 100644
--- a/src/mame/drivers/timex.cpp
+++ b/src/mame/drivers/timex.cpp
@@ -583,6 +583,12 @@ void spectrum_state::tc2048_mem(address_map &map)
map(0x4000, 0xffff).bankr("bank1").bankw("bank2");
}
+void spectrum_state::init_timex()
+{
+ // setup expansion slot
+ m_exp->set_io_space(&m_maincpu->space(AS_IO));
+}
+
MACHINE_RESET_MEMBER(spectrum_state,tc2048)
{
uint8_t *messram = m_ram->pointer();
@@ -688,23 +694,23 @@ GFXDECODE_END
MACHINE_CONFIG_START(spectrum_state::ts2068)
spectrum_128(config);
-
- Z80(config.replace(), m_maincpu, XTAL(14'112'000)/4); /* From Schematic; 3.528 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &spectrum_state::ts2068_mem);
- m_maincpu->set_addrmap(AS_IO, &spectrum_state::ts2068_io);
- m_maincpu->set_vblank_int("screen", FUNC(spectrum_state::spec_interrupt));
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_REPLACE("maincpu", Z80, XTAL(14'112'000)/4) /* From Schematic; 3.528 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(ts2068_mem)
+ MCFG_DEVICE_IO_MAP(ts2068_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", spectrum_state, spec_interrupt)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
MCFG_MACHINE_RESET_OVERRIDE(spectrum_state, ts2068 )
/* video hardware */
- m_screen->set_refresh_hz(60);
- m_screen->set_size(TS2068_SCREEN_WIDTH, TS2068_SCREEN_HEIGHT);
- m_screen->set_visarea(0, TS2068_SCREEN_WIDTH-1, 0, TS2068_SCREEN_HEIGHT-1);
- m_screen->set_screen_update(FUNC(spectrum_state::screen_update_ts2068));
- m_screen->screen_vblank().set(FUNC(spectrum_state::screen_vblank_timex));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(TS2068_SCREEN_WIDTH, TS2068_SCREEN_HEIGHT)
+ MCFG_SCREEN_VISIBLE_AREA(0, TS2068_SCREEN_WIDTH-1, 0, TS2068_SCREEN_HEIGHT-1)
+ MCFG_SCREEN_UPDATE_DRIVER(spectrum_state, screen_update_ts2068)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, spectrum_state, screen_vblank_timex))
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_ts2068);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_ts2068)
MCFG_VIDEO_START_OVERRIDE(spectrum_state, ts2068 )
@@ -717,40 +723,41 @@ MACHINE_CONFIG_START(spectrum_state::ts2068)
MCFG_GENERIC_LOAD(spectrum_state, timex_cart)
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("timex_dock");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "timex_dock")
/* internal ram */
m_ram->set_default_size("48K");
MACHINE_CONFIG_END
-void spectrum_state::uk2086(machine_config &config)
-{
+MACHINE_CONFIG_START(spectrum_state::uk2086)
ts2068(config);
- m_screen->set_refresh_hz(50);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_REFRESH_RATE(50)
+MACHINE_CONFIG_END
-void spectrum_state::tc2048(machine_config &config)
-{
+MACHINE_CONFIG_START(spectrum_state::tc2048)
spectrum(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &spectrum_state::tc2048_mem);
- m_maincpu->set_addrmap(AS_IO, &spectrum_state::tc2048_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tc2048_mem)
+ MCFG_DEVICE_IO_MAP(tc2048_io)
MCFG_MACHINE_RESET_OVERRIDE(spectrum_state, tc2048 )
/* video hardware */
- m_screen->set_refresh_hz(50);
- m_screen->set_size(TS2068_SCREEN_WIDTH, SPEC_SCREEN_HEIGHT);
- m_screen->set_visarea(0, TS2068_SCREEN_WIDTH-1, 0, SPEC_SCREEN_HEIGHT-1);
- m_screen->set_screen_update(FUNC(spectrum_state::screen_update_tc2048));
- m_screen->screen_vblank().set(FUNC(spectrum_state::screen_vblank_timex));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(TS2068_SCREEN_WIDTH, SPEC_SCREEN_HEIGHT)
+ MCFG_SCREEN_VISIBLE_AREA(0, TS2068_SCREEN_WIDTH-1, 0, SPEC_SCREEN_HEIGHT-1)
+ MCFG_SCREEN_UPDATE_DRIVER(spectrum_state, screen_update_tc2048)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, spectrum_state, screen_vblank_timex))
MCFG_VIDEO_START_OVERRIDE(spectrum_state, spectrum_128 )
/* internal ram */
m_ram->set_default_size("48K");
-}
+MACHINE_CONFIG_END
@@ -778,6 +785,6 @@ ROM_START(uk2086)
ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP( 1984, tc2048, spectrum, 0, tc2048, spectrum, spectrum_state, empty_init, "Timex of Portugal", "TC-2048" , 0 )
-COMP( 1983, ts2068, spectrum, 0, ts2068, spectrum, spectrum_state, empty_init, "Timex Sinclair", "TS-2068" , 0 )
-COMP( 1986, uk2086, spectrum, 0, uk2086, spectrum, spectrum_state, empty_init, "Unipolbrit", "UK-2086 ver. 1.2" , 0 )
+COMP( 1984, tc2048, spectrum, 0, tc2048, spectrum, spectrum_state, init_timex, "Timex of Portugal", "TC-2048" , 0 )
+COMP( 1983, ts2068, spectrum, 0, ts2068, spectrum, spectrum_state, init_timex, "Timex Sinclair", "TS-2068" , 0 )
+COMP( 1986, uk2086, spectrum, 0, uk2086, spectrum, spectrum_state, init_timex, "Unipolbrit", "UK-2086 ver. 1.2" , 0 )
diff --git a/src/mame/drivers/tispeak.cpp b/src/mame/drivers/tispeak.cpp
index ca5be1e1769..4ef220d27fa 100644
--- a/src/mame/drivers/tispeak.cpp
+++ b/src/mame/drivers/tispeak.cpp
@@ -243,70 +243,68 @@ Touch & Tell modules:
Touch & Tell/Vocaid overlay reference:
tntell CD2610:
- - $04: a - Colors
- - $01: b - Objects
- - $05: c - Shapes
- - $09: d - Home Scene
+ - 04: a - Colors
+ - 01: b - Objects
+ - 05: c - Shapes
+ - 09: d - Home Scene
tntelluk CD62170, tntellfr CD62171:
- see tntell
- see numfun(not A)
- see animalfr
- - $08: ? - Clown Face
- - $0B: ? - Body Parts
+ - 08: ? - Clown Face
+ - 0B: ? - Body Parts
vocaid CD2357:
- - $1C: 1 - Leisure
- - $1E: 2 - Telephone
- - $1B: 3 - Bedside
- - $1D: 4 - Alphabet
+ - 1C: 1 - Leisure
+ - 1E: 2 - Telephone
+ - 1B: 3 - Bedside
+ - 1D: 4 - Alphabet
alphabet CD2611:
- - $0E: 1a - Alphabet A-M
- - $0D: 1b - Alphabet N-Z
- - $0C: 1c - Letter Jumble A-M
- - $0B: 1d - Letter Jumble N-Z
+ - 0E: 1a - Alphabet A-M
+ - 0D: 1b - Alphabet N-Z
+ - 0C: 1c - Letter Jumble A-M
+ - 0B: 1d - Letter Jumble N-Z
animalfr CD2355:
- - $0A: 2a - Farm Animals
- - $0F: 2b - At The Farm
- - $0E: 2c - Animal Babies
- - $0D: 2d - In The Jungle
+ - 0A: 2a - Farm Animals
+ - 0F: 2b - At The Farm
+ - 0E: 2c - Animal Babies
+ - 0D: 2d - In The Jungle
numfun CD2612:
- - $02/$0A(rev.A): 3a - Numbers 1-10
- - $03/$0F(rev.A): 3b - Numbers 11-30
- - $07/$0D(rev.A): 3c - How Many?
- - $06/$0E(rev.A): 3d - Hidden Numbers
+ - 02/0A(rev.A): 3a - Numbers 1-10
+ - 03/0F(rev.A): 3b - Numbers 11-30
+ - 07/0D(rev.A): 3c - How Many?
+ - 06/0E(rev.A): 3d - Hidden Numbers
aboutme CD2613:
- - $0E: 4a - Clown Face
- - $0B: 4b - Body Parts
- - $0D: 4c - Things to Wear
- - $0C: 4d - Just For Me
+ - 0E: 4a - Clown Face
+ - 0B: 4b - Body Parts
+ - 0D: 4c - Things to Wear
+ - 0C: 4d - Just For Me
wot CD2361:
- - $0A: 5a - On Land
- - $0B: 5b - In The Air
- - $0C: 5c - On The Water
- - $0D: 5d - In Space
- - $10: 5e - What Belongs Here?
- - $11: 5f - How It Used To Be
- - $12: 5g - Word Fun
- - $13: 5h - In the Surprise Garage
+ - 0A: 5a - On Land
+ - 0B: 5b - In The Air
+ - 0C: 5c - On The Water
+ - 0D: 5d - In Space
+ - 10: 5e - What Belongs Here?
+ - 11: 5f - How It Used To Be
+ - 12: 5g - Word Fun
+ - 13: 5h - In the Surprise Garage
lilcreat CD2362:
- - $14: 6a - In The Park
- - $15: 6b - In The Sea
- - $16: 6c - In The Woods
- - $17: 6d - Whose House?
- - $18: 6e - Hide & Seek
- - $1A: 6f - Who Is It?
- - $19: 6g - But It's Not
- - $1B: 6h - Word Fun
+ - 14: 6a - In The Park
+ - 15: 6b - In The Sea
+ - 16: 6c - In The Woods
+ - 17: 6d - Whose House?
+ - 18: 6e - Hide & Seek
+ - 1A: 6f - Who Is It?
+ - 19: 6g - But It's Not
+ - 1B: 6h - Word Fun
et CD2363:
- - $0F: 7a - The Adventure On Earth I
- - $10: 7b - The Adventure On Earth II
- - $11: 7c - Fun And Friendship I
- - $12: 7d - Fun And Friendship II
- - $13: 7e - E.T. The Star I
- - $14: 7f - E.T. The Star II
- - $15: 7g - Do You Remember? I
- - $16: 7h - Do You Remember? II
-
- $00: none inserted, and $1F is for diagnostics
+ - 0F: 7a - The Adventure On Earth I
+ - 10: 7b - The Adventure On Earth II
+ - 11: 7c - Fun And Friendship I
+ - 12: 7d - Fun And Friendship II
+ - 13: 7e - E.T. The Star I
+ - 14: 7f - E.T. The Star II
+ - 15: 7g - Do You Remember? I
+ - 16: 7h - Do You Remember? II
Magic Wand "Speaking Reader" or "Speak & Learn":
@@ -374,7 +372,7 @@ keyboard, VFD display, and use the SC-01 speech chip. --> driver k28.cpp
- MCU: TMS1400 MP7324
- TMS51xx: TMS5110A
- VSM: 16KB CM62084
- - LCD: SMOS SMC1112 MCU to 8*14-seg display
+ - LCD: unknown 8*16-seg
K28 modules:
@@ -394,7 +392,7 @@ K28 modules:
TODO:
- why doesn't lantutor work?
- - emulate k28 LCD
+ - identify and emulate k28 LCD
- emulate other known devices
@@ -407,9 +405,9 @@ K28 modules:
#include "bus/generic/slot.h"
#include "machine/tms6100.h"
#include "sound/tms5110.h"
+
#include "softlist.h"
#include "speaker.h"
-#include "render.h"
// internal artwork
#include "k28m2.lh"
@@ -484,7 +482,6 @@ private:
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(tispeak_cartridge);
- u8 tntell_get_hexchar(const char c);
TIMER_DEVICE_CALLBACK_MEMBER(tntell_get_overlay);
void init_cartridge();
@@ -500,7 +497,7 @@ private:
// cartridge
u32 m_cart_max_size;
- u8 *m_cart_base;
+ u8* m_cart_base;
u8 m_overlay;
};
@@ -665,7 +662,6 @@ WRITE16_MEMBER(tispeak_state::snspellc_write_o)
{
// O3210: TMS5100 CTL8124
m_tms5100->ctl_w(space, 0, bitswap<4>(data,3,0,1,2));
- m_o = data;
}
READ8_MEMBER(tispeak_state::snspellc_read_k)
@@ -689,40 +685,19 @@ READ8_MEMBER(tispeak_state::tntell_read_k)
return k8 | snspellc_read_k(space, offset);
}
-u8 tispeak_state::tntell_get_hexchar(const char c)
-{
- if (c >= '0' && c <= '9') return c - '0';
- if (c >= 'A' && c <= 'F') return c - 'A' + 10;
- if (c >= 'a' && c <= 'f') return c - 'a' + 10;
-
- return 0;
-}
-
TIMER_DEVICE_CALLBACK_MEMBER(tispeak_state::tntell_get_overlay)
{
// Each keyboard overlay insert has 5 holes, used by the game to determine
// which one is active(if any). If it matches with the internal ROM or
// external module, the game continues.
+ // 00 for none, 1F for diagnostics, see comment section above for a list
- // pick overlay code from machine config, see comment section above for reference
- m_overlay = m_inp_matrix[10]->read();
-
- // try to get it from (external) layout
- if (m_overlay == 0x20)
- {
- // as output value, eg. with defstate (in decimal)
- m_overlay = output().get_value("overlay_code") & 0x1f;
-
- // and from current view name ($ + 2 hex digits)
- render_target *target = machine().render().first_target();
- const char *name = target->view_name(target->view());
-
- for (int i = 0; name && i < strlen(name); i++)
- if (name[i] == '$' && strlen(&name[i]) > 2)
- m_overlay = (tntell_get_hexchar(name[i + 1]) << 4 | tntell_get_hexchar(name[i + 2])) & 0x1f;
- }
+ // try to get overlay code from artwork file(in decimal), otherwise pick the
+ // one that was selected in machine configuration
+ m_overlay = output().get_value("overlay_code") & 0x1f;
+ if (m_overlay == 0)
+ m_overlay = m_inp_matrix[10]->read();
- // overlay holes
for (int i = 0; i < 5; i++)
m_ol_out[i] = BIT(m_overlay, i);
}
@@ -738,8 +713,7 @@ void tispeak_state::k28_prepare_display(u8 old, u8 data)
WRITE16_MEMBER(tispeak_state::k28_write_r)
{
// R1234: TMS5100 CTL8421
- u16 r = bitswap<5>(data,0,1,2,3,4) | (data & ~0x1f);
- m_tms5100->ctl_w(space, 0, r & 0xf);
+ m_tms5100->ctl_w(space, 0, bitswap<4>(data,1,2,3,4));
// R0: TMS5100 PDC pin
m_tms5100->pdc_w(data & 1);
@@ -753,7 +727,7 @@ WRITE16_MEMBER(tispeak_state::k28_write_r)
// R7-R10: LCD data
k28_prepare_display(m_r >> 7 & 0xf, data >> 7 & 0xf);
- m_r = r;
+ m_r = data;
}
WRITE16_MEMBER(tispeak_state::k28_write_o)
@@ -764,8 +738,8 @@ WRITE16_MEMBER(tispeak_state::k28_write_o)
READ8_MEMBER(tispeak_state::k28_read_k)
{
- // K: TMS5100 CTL, multiplexed inputs (also tied to R1234)
- return m_tms5100->ctl_r(space, 0) | read_inputs(9) | (m_r & 0xf);
+ // K: TMS5100 CTL, multiplexed inputs
+ return m_tms5100->ctl_r(space, 0) | read_inputs(9);
}
@@ -847,7 +821,7 @@ static INPUT_PORTS_START( snspell )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_NAME("Secret Code")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_NAME("Letter")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_NAME("Say It")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Spell/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, true)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Spell/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
INPUT_PORTS_END
static INPUT_PORTS_START( snspellfr ) // French button names
@@ -870,7 +844,7 @@ static INPUT_PORTS_START( snspellfr ) // French button names
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_NAME("Code Secret")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_NAME("Lettre")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_NAME("Dis-le")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Epelle/Marche") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, true)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Epelle/Marche") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
INPUT_PORTS_END
static INPUT_PORTS_START( snspellit ) // Italian button names
@@ -893,7 +867,7 @@ static INPUT_PORTS_START( snspellit ) // Italian button names
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_NAME("Codice")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_NAME("Alfabeto")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_NAME("Ripeti")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Scrivi") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, true)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Scrivi") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
INPUT_PORTS_END
static INPUT_PORTS_START( snspellsp ) // Spanish button names, different alphabet
@@ -954,7 +928,7 @@ static INPUT_PORTS_START( snspellsp ) // Spanish button names, different alphabe
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_NAME("Palabra Secreta")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_NAME("Dilo")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") // -> auto_power_off
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Deletrea/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, true)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Deletrea/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
INPUT_PORTS_END
@@ -1006,7 +980,7 @@ static INPUT_PORTS_START( snmath )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_U) PORT_NAME("Write It")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("Greater/Less")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("Word Problems")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Solve It/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, true)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Solve It/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
PORT_START("IN.7")
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_UNUSED )
@@ -1028,7 +1002,7 @@ static INPUT_PORTS_START( snread )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_NAME("Picture Read")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_NAME("Letter Stumper")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_NAME("Hear It")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Word Zap/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, true)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Word Zap/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
INPUT_PORTS_END
@@ -1118,7 +1092,7 @@ static INPUT_PORTS_START( snspellc )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'')
PORT_START("IN.9") // Vss!
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Spell/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, true)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Spell/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) // speech chip data
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") // -> auto_power_off
@@ -1128,7 +1102,7 @@ static INPUT_PORTS_START( snspellcuk )
PORT_INCLUDE( snspellc )
PORT_MODIFY("IN.9")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Write/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, true) // just the label changed from Spell to Write
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Write/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true) // just the label changed from Spell to Write
INPUT_PORTS_END
@@ -1189,45 +1163,44 @@ static INPUT_PORTS_START( tntell )
PORT_START("IN.9") // Vss!
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Grid 6-6 (On)") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, true)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Grid 6-6 (On)") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) // speech chip data
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.10")
- PORT_CONFNAME( 0x3f, 0x20, "Overlay Code" )
- PORT_CONFSETTING( 0x20, "From Artwork View" )
- PORT_CONFSETTING( 0x00, "$00 (None)" )
- PORT_CONFSETTING( 0x01, "$01" )
- PORT_CONFSETTING( 0x02, "$02" )
- PORT_CONFSETTING( 0x03, "$03" )
- PORT_CONFSETTING( 0x04, "$04" )
- PORT_CONFSETTING( 0x05, "$05" )
- PORT_CONFSETTING( 0x06, "$06" )
- PORT_CONFSETTING( 0x07, "$07" )
- PORT_CONFSETTING( 0x08, "$08" )
- PORT_CONFSETTING( 0x09, "$09" )
- PORT_CONFSETTING( 0x0a, "$0A" )
- PORT_CONFSETTING( 0x0b, "$0B" )
- PORT_CONFSETTING( 0x0c, "$0C" )
- PORT_CONFSETTING( 0x0d, "$0D" )
- PORT_CONFSETTING( 0x0e, "$0E" )
- PORT_CONFSETTING( 0x0f, "$0F" )
- PORT_CONFSETTING( 0x10, "$10" )
- PORT_CONFSETTING( 0x11, "$11" )
- PORT_CONFSETTING( 0x12, "$12" )
- PORT_CONFSETTING( 0x13, "$13" )
- PORT_CONFSETTING( 0x14, "$14" )
- PORT_CONFSETTING( 0x15, "$15" )
- PORT_CONFSETTING( 0x16, "$16" )
- PORT_CONFSETTING( 0x17, "$17" )
- PORT_CONFSETTING( 0x18, "$18" )
- PORT_CONFSETTING( 0x19, "$19" )
- PORT_CONFSETTING( 0x1a, "$1A" )
- PORT_CONFSETTING( 0x1b, "$1B" )
- PORT_CONFSETTING( 0x1c, "$1C" )
- PORT_CONFSETTING( 0x1d, "$1D" )
- PORT_CONFSETTING( 0x1e, "$1E" )
- PORT_CONFSETTING( 0x1f, "$1F (Diagnostic)" )
+ PORT_CONFNAME( 0x1f, 0x04, "Overlay Code" ) // only if not provided by external artwork
+ PORT_CONFSETTING( 0x00, "00 (None)" )
+ PORT_CONFSETTING( 0x01, "01" )
+ PORT_CONFSETTING( 0x02, "02" )
+ PORT_CONFSETTING( 0x03, "03" )
+ PORT_CONFSETTING( 0x04, "04" )
+ PORT_CONFSETTING( 0x05, "05" )
+ PORT_CONFSETTING( 0x06, "06" )
+ PORT_CONFSETTING( 0x07, "07" )
+ PORT_CONFSETTING( 0x08, "08" )
+ PORT_CONFSETTING( 0x09, "09" )
+ PORT_CONFSETTING( 0x0a, "0A" )
+ PORT_CONFSETTING( 0x0b, "0B" )
+ PORT_CONFSETTING( 0x0c, "0C" )
+ PORT_CONFSETTING( 0x0d, "0D" )
+ PORT_CONFSETTING( 0x0e, "0E" )
+ PORT_CONFSETTING( 0x0f, "0F" )
+ PORT_CONFSETTING( 0x10, "10" )
+ PORT_CONFSETTING( 0x11, "11" )
+ PORT_CONFSETTING( 0x12, "12" )
+ PORT_CONFSETTING( 0x13, "13" )
+ PORT_CONFSETTING( 0x14, "14" )
+ PORT_CONFSETTING( 0x15, "15" )
+ PORT_CONFSETTING( 0x16, "16" )
+ PORT_CONFSETTING( 0x17, "17" )
+ PORT_CONFSETTING( 0x18, "18" )
+ PORT_CONFSETTING( 0x19, "19" )
+ PORT_CONFSETTING( 0x1a, "1A" )
+ PORT_CONFSETTING( 0x1b, "1B" )
+ PORT_CONFSETTING( 0x1c, "1C" )
+ PORT_CONFSETTING( 0x1d, "1D" )
+ PORT_CONFSETTING( 0x1e, "1E" )
+ PORT_CONFSETTING( 0x1f, "1F (Diagnostic)" )
INPUT_PORTS_END
@@ -1239,7 +1212,7 @@ static INPUT_PORTS_START( k28m2 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('S')
PORT_START("IN.1") // O1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_NAME("On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, true)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_NAME("On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CHAR('B') PORT_NAME("B/2")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR('K') PORT_NAME("K/+")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('T')
@@ -1309,14 +1282,14 @@ void tispeak_state::tms5110_route(machine_config &config)
void tispeak_state::snmath(machine_config &config)
{
/* basic machine hardware */
- TMS0270(config, m_maincpu, MASTER_CLOCK/2);
- m_maincpu->k().set(FUNC(tispeak_state::snspell_read_k));
- m_maincpu->o().set(FUNC(tispeak_state::snmath_write_o));
- m_maincpu->r().set(FUNC(tispeak_state::snspell_write_r));
-
- m_maincpu->read_ctl().set("tms5100", FUNC(tms5110_device::ctl_r));
- m_maincpu->write_ctl().set("tms5100", FUNC(tms5110_device::ctl_w));
- m_maincpu->write_pdc().set("tms5100", FUNC(tms5110_device::pdc_w));
+ tms0270_cpu_device &tms(TMS0270(config, m_maincpu, MASTER_CLOCK/2));
+ tms.k().set(FUNC(tispeak_state::snspell_read_k));
+ tms.o().set(FUNC(tispeak_state::snmath_write_o));
+ tms.r().set(FUNC(tispeak_state::snspell_write_r));
+
+ tms.read_ctl().set("tms5100", FUNC(tms5110_device::ctl_r));
+ tms.write_ctl().set("tms5100", FUNC(tms5110_device::ctl_w));
+ tms.write_pdc().set("tms5100", FUNC(tms5110_device::pdc_w));
TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_snmath);
diff --git a/src/mame/drivers/tispellb.cpp b/src/mame/drivers/tispellb.cpp
index e3bb082a2bd..837a253f775 100644
--- a/src/mame/drivers/tispellb.cpp
+++ b/src/mame/drivers/tispellb.cpp
@@ -69,8 +69,8 @@
class tispellb_state : public hh_tms1k_state
{
public:
- tispellb_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag),
+ tispellb_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag),
m_subcpu(*this, "subcpu"),
m_tms6100(*this, "tms6100")
{ }
@@ -82,7 +82,7 @@ public:
private:
// devices
- optional_device<tms1k_base_device> m_subcpu;
+ optional_device<cpu_device> m_subcpu;
optional_device<tms6100_device> m_tms6100;
u8 m_rev1_ctl;
@@ -317,7 +317,7 @@ static INPUT_PORTS_START( spellb )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_NAME("Missing Letter")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_NAME("Mystery Word")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_NAME("Scramble")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Spelling B/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispellb_state, power_button, true)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Spelling B/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispellb_state, power_button, (void *)true)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_NAME("Starts With")
INPUT_PORTS_END
@@ -333,7 +333,7 @@ static INPUT_PORTS_START( mrchalgr )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_NAME("Crazy Letters")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_NAME("Letter Guesser")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_NAME("Word Challenge")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Mystery Word/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispellb_state, power_button, true)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Mystery Word/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispellb_state, power_button, (void *)true)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_NAME("Replay")
INPUT_PORTS_END
@@ -345,50 +345,51 @@ INPUT_PORTS_END
***************************************************************************/
-void tispellb_state::rev1(machine_config &config)
-{
+MACHINE_CONFIG_START(tispellb_state::rev1)
+
/* basic machine hardware */
- TMS0270(config, m_maincpu, 350000); // approximation
- m_maincpu->k().set(FUNC(tispellb_state::main_read_k));
- m_maincpu->o().set(FUNC(tispellb_state::main_write_o));
- m_maincpu->r().set(FUNC(tispellb_state::main_write_r));
- m_maincpu->read_ctl().set(FUNC(tispellb_state::rev1_ctl_r));
- m_maincpu->write_ctl().set(FUNC(tispellb_state::rev1_ctl_w));
+ tms0270_cpu_device &tms(TMS0270(config, m_maincpu, 350000)); // approximation
+ tms.k().set(FUNC(tispellb_state::main_read_k));
+ tms.o().set(FUNC(tispellb_state::main_write_o));
+ tms.r().set(FUNC(tispellb_state::main_write_r));
+ tms.read_ctl().set(FUNC(tispellb_state::rev1_ctl_r));
+ tms.write_ctl().set(FUNC(tispellb_state::rev1_ctl_w));
- TMS1980(config, m_subcpu, 350000); // approximation
- m_subcpu->k().set(FUNC(tispellb_state::sub_read_k));
- m_subcpu->o().set(FUNC(tispellb_state::sub_write_o));
- m_subcpu->r().set(FUNC(tispellb_state::sub_write_r));
+ tms1980_cpu_device &subcpu(TMS1980(config, m_subcpu, 350000)); // approximation
+ subcpu.k().set(FUNC(tispellb_state::sub_read_k));
+ subcpu.o().set(FUNC(tispellb_state::sub_write_o));
+ subcpu.r().set(FUNC(tispellb_state::sub_write_r));
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_spellb);
/* no sound! */
-}
+MACHINE_CONFIG_END
-void tispellb_state::rev2(machine_config &config)
-{
+MACHINE_CONFIG_START(tispellb_state::rev2)
+
/* basic machine hardware */
- TMS0270(config, m_maincpu, 350000); // approximation
- m_maincpu->k().set(FUNC(tispellb_state::main_read_k));
- m_maincpu->o().set(FUNC(tispellb_state::rev2_write_o));
- m_maincpu->r().set(FUNC(tispellb_state::rev2_write_r));
- m_maincpu->read_ctl().set(m_tms6100, FUNC(tms6100_device::data_r));
- m_maincpu->write_ctl().set(m_tms6100, FUNC(tms6100_device::add_w));
+ tms0270_cpu_device &tms(TMS0270(config, m_maincpu, 350000)); // approximation
+ tms.k().set(FUNC(tispellb_state::main_read_k));
+ tms.o().set(FUNC(tispellb_state::rev2_write_o));
+ tms.r().set(FUNC(tispellb_state::rev2_write_r));
+ tms.read_ctl().set(m_tms6100, FUNC(tms6100_device::data_r));
+ tms.write_ctl().set(m_tms6100, FUNC(tms6100_device::add_w));
TMS6100(config, m_tms6100, 350000);
m_tms6100->enable_4bit_mode(true);
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_spellb);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/titan_soc.cpp b/src/mame/drivers/titan_soc.cpp
deleted file mode 100644
index 5f8852cc892..00000000000
--- a/src/mame/drivers/titan_soc.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:David Haywood
-/************************************************************************
-
- Titan 1.0C (System on a Chip - ARM based processor)
-
- used by
-
- Atari / Colecovision / Intellivision Flashback (not dumped)
- TecToy Mega Drive 4
-
-
- Notes:
-
- It is possible to connect a debug terminal
- Has a USB port for user to plug in a flash drive etc.
- 4MB RAM
-
- Emulators run on the ARM, games don't use some modes 100% correctly compared to original
- hardware, only correct for the included emulator. Some games are not emulation based.
-
-*/
-
-#include "emu.h"
-#include "cpu/arm7/arm7.h"
-#include "cpu/arm7/arm7core.h"
-#include "emupal.h"
-#include "screen.h"
-
-class titan_soc_state : public driver_device
-{
-public:
- titan_soc_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_mainram(*this, "mainram"),
- m_maincpu(*this, "maincpu")
- { }
-
- void titan_soc(machine_config &config);
-
- void init_titan_soc();
-
-private:
- required_shared_ptr<uint32_t> m_mainram;
- required_device<cpu_device> m_maincpu;
-
- virtual void machine_reset() override;
- virtual void video_start() override;
- uint32_t screen_update_titan_soc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- void map(address_map &map);
-};
-
-
-
-void titan_soc_state::map(address_map &map)
-{
- map(0x00000000, 0x0007ffff).ram().share("mainram");
-}
-
-static INPUT_PORTS_START( titan_soc )
-
-INPUT_PORTS_END
-
-
-void titan_soc_state::video_start()
-{
-}
-
-uint32_t titan_soc_state::screen_update_titan_soc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- return 0;
-}
-
-void titan_soc_state::machine_reset()
-{
-}
-
-void titan_soc_state::titan_soc(machine_config &config)
-{
- /* basic machine hardware */
- ARM920T(config, m_maincpu, 200000000); // type + clock unknown
- m_maincpu->set_addrmap(AS_PROGRAM, &titan_soc_state::map);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(320, 256);
- screen.set_visarea(0, 320-1, 0, 256-1);
- screen.set_screen_update(FUNC(titan_soc_state::screen_update_titan_soc));
-
- PALETTE(config, "palette").set_entries(256);
-}
-
-
-
-ROM_START( megadri4 )
- ROM_REGION( 0x80000, "serial", 0 ) // this was only dumped from one of the PCBS, not sure which one, might not be correct for both
- ROM_LOAD( "25l4005a - rom de boot megadrive4.bin", 0x000000, 0x80000, CRC(1b5c3c31) SHA1(97f301ae441ca23d3c52a901319e375654920867) )
-
- ROM_REGION( 0x08400000, "flash", 0 )
- ROM_LOAD( "ic9 megadrive4 titan.bin", 0x000000, 0x08400000, CRC(ed92b81a) SHA1(a3d51a2febf670820d6df009660b96ff6407f475) )
-ROM_END
-
-ROM_START( megadri4a )
- ROM_REGION( 0x80000, "serial", 0 ) // this was only dumped from one of the PCBS, not sure which one, might not be correct for both
- ROM_LOAD( "25l4005a - rom de boot megadrive4.bin", 0x000000, 0x80000, CRC(1b5c3c31) SHA1(97f301ae441ca23d3c52a901319e375654920867) )
-
- ROM_REGION( 0x08400000, "flash", 0 )
- ROM_LOAD( "ic9 megadrive4 titan segunda placa.bin", 0x000000, 0x08400000, CRC(4b423898) SHA1(293127d2f6169717a7fbfcf18f13e4b1735236f7) )
-ROM_END
-
-
-
-void titan_soc_state::init_titan_soc()
-{
- // can either run directly from serial ROM, or copies it to RAM on startup
- memcpy(m_mainram, memregion("serial")->base(), 0x80000);
-}
-
-CONS( 2009, megadri4, 0, 0, titan_soc, titan_soc, titan_soc_state, init_titan_soc, "Tectoy (licensed from Sega)", "Mega Drive 4 / Guitar Idol (set 1)", MACHINE_IS_SKELETON )
-CONS( 2009, megadri4a, megadri4, 0, titan_soc, titan_soc, titan_soc_state, init_titan_soc, "Tectoy (licensed from Sega)", "Mega Drive 4 / Guitar Idol (set 2)", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/tk2000.cpp b/src/mame/drivers/tk2000.cpp
index dd44c72a319..19727c5a6d8 100644
--- a/src/mame/drivers/tk2000.cpp
+++ b/src/mame/drivers/tk2000.cpp
@@ -566,37 +566,36 @@ static INPUT_PORTS_START( tk2000 )
PORT_CONFSETTING(0x03, "Amber")
INPUT_PORTS_END
-void tk2000_state::tk2000(machine_config &config)
-{
+MACHINE_CONFIG_START(tk2000_state::tk2000)
/* basic machine hardware */
- M6502(config, m_maincpu, 1021800); /* close to actual CPU frequency of 1.020484 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &tk2000_state::apple2_map);
-
- TIMER(config, "scantimer").configure_scanline(FUNC(tk2000_state::apple2_interrupt), "screen", 0, 1);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD(A2_CPU_TAG, M6502, 1021800) /* close to actual CPU frequency of 1.020484 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(apple2_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", tk2000_state, apple2_interrupt, "screen", 0, 1)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
APPLE2_VIDEO(config, m_video, XTAL(14'318'181));
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(280*2, 262);
- m_screen->set_visarea(0, (280*2)-1,0,192-1);
- m_screen->set_screen_update(FUNC(tk2000_state::screen_update));
- m_screen->set_palette(m_video);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(280*2, 262)
+ MCFG_SCREEN_VISIBLE_AREA(0, (280*2)-1,0,192-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tk2000_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_video)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD(A2_SPEAKER_TAG, SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* /INH banking */
ADDRESS_MAP_BANK(config, A2_UPPERBANK_TAG).set_map(&tk2000_state::inhbank_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x4000);
RAM(config, RAM_TAG).set_default_size("64K");
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED);
-}
+ MCFG_CASSETTE_ADD(A2_CASSETTE_TAG)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/tk80bs.cpp b/src/mame/drivers/tk80bs.cpp
index 893dfdaf5f7..a1a71076978 100644
--- a/src/mame/drivers/tk80bs.cpp
+++ b/src/mame/drivers/tk80bs.cpp
@@ -172,23 +172,22 @@ static GFXDECODE_START( gfx_tk80bs )
GFXDECODE_END
-void tk80bs_state::tk80bs(machine_config &config)
-{
+MACHINE_CONFIG_START(tk80bs_state::tk80bs)
/* basic machine hardware */
- I8080(config, m_maincpu, XTAL(1'000'000)); //unknown clock
- m_maincpu->set_addrmap(AS_PROGRAM, &tk80bs_state::tk80bs_mem);
+ MCFG_DEVICE_ADD("maincpu",I8080, XTAL(1'000'000)) //unknown clock
+ MCFG_DEVICE_PROGRAM_MAP(tk80bs_mem)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(256, 128);
- screen.set_visarea(0, 256-1, 0, 128-1);
- screen.set_screen_update(FUNC(tk80bs_state::screen_update_tk80bs));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(256, 128)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 128-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tk80bs_state, screen_update_tk80bs)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, palette_device::MONOCHROME);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tk80bs);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tk80bs)
/* Devices */
I8255(config, m_ppi);
@@ -197,7 +196,7 @@ void tk80bs_state::tk80bs(machine_config &config)
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
keyboard.set_keyboard_callback(FUNC(tk80bs_state::kbd_put));
-}
+MACHINE_CONFIG_END
ROM_START( tk80bs )
diff --git a/src/mame/drivers/tm990189.cpp b/src/mame/drivers/tm990189.cpp
index 154f456b9cb..9be9ae43432 100644
--- a/src/mame/drivers/tm990189.cpp
+++ b/src/mame/drivers/tm990189.cpp
@@ -812,13 +812,16 @@ void tm990189_state::tm990_189_v_memmap(address_map &map)
void tm990189_state::tm990_189_cru_map(address_map &map)
{
- map(0x0000, 0x03ff).rw(m_tms9901_usr, FUNC(tms9901_device::read), FUNC(tms9901_device::write)); /* user I/O tms9901 */
- map(0x0400, 0x07ff).rw(m_tms9901_sys, FUNC(tms9901_device::read), FUNC(tms9901_device::write)); /* system I/O tms9901 */
- map(0x0800, 0x0bff).rw(m_tms9902, FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite)); /* optional tms9902 */
+ map(0x0000, 0x003f).r(m_tms9901_usr, FUNC(tms9901_device::read)); /* user I/O tms9901 */
+ map(0x0040, 0x006f).r(m_tms9901_sys, FUNC(tms9901_device::read)); /* system I/O tms9901 */
+ map(0x0080, 0x00cf).r(m_tms9902, FUNC(tms9902_device::cruread)); /* optional tms9902 */
+
+ map(0x0000, 0x01ff).w(m_tms9901_usr, FUNC(tms9901_device::write)); /* user I/O tms9901 */
+ map(0x0200, 0x03ff).w(m_tms9901_sys, FUNC(tms9901_device::write)); /* system I/O tms9901 */
+ map(0x0400, 0x05ff).w(m_tms9902, FUNC(tms9902_device::cruwrite)); /* optional tms9902 */
}
-void tm990189_state::tm990_189(machine_config &config)
-{
+MACHINE_CONFIG_START(tm990189_state::tm990_189)
/* basic machine hardware */
TMS9980A(config, m_tms9980a, 8_MHz_XTAL); // clock divided by 4 internally
m_tms9980a->set_addrmap(AS_PROGRAM, &tm990189_state::tm990_189_memmap);
@@ -869,15 +872,13 @@ void tm990189_state::tm990_189(machine_config &config)
m_tms9902->xmit_cb().set(FUNC(tm990189_state::xmit_callback)); // called when a character is transmitted
TM990_189_RS232(config, "rs232", 0, m_tms9902);
- timer_device &display_timer(TIMER(config, "display_timer"));
- display_timer.configure_periodic(FUNC(tm990189_state::display_callback), attotime::from_hz(30));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_timer", tm990189_state, display_callback, attotime::from_hz(30))
// Need to delay the timer, or it will spoil the initial LOAD
// TODO: Fix this, probably inside CPU
- display_timer.set_start_delay(attotime::from_msec(150));
-}
+ MCFG_TIMER_START_DELAY(attotime::from_msec(150))
+MACHINE_CONFIG_END
-void tm990189_state::tm990_189_v(machine_config &config)
-{
+MACHINE_CONFIG_START(tm990189_state::tm990_189_v)
/* basic machine hardware */
TMS9980A(config, m_tms9980a, 8_MHz_XTAL);
m_tms9980a->set_addrmap(AS_PROGRAM, &tm990189_state::tm990_189_v_memmap);
@@ -933,10 +934,9 @@ void tm990189_state::tm990_189_v(machine_config &config)
m_tms9902->xmit_cb().set(FUNC(tm990189_state::xmit_callback)); // called when a character is transmitted;
TM990_189_RS232(config, "rs232", 0, m_tms9902);
- timer_device &display_timer(TIMER(config, "display_timer"));
- display_timer.configure_periodic(FUNC(tm990189_state::display_callback), attotime::from_hz(30));
- display_timer.set_start_delay(attotime::from_msec(150));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_timer", tm990189_state, display_callback, attotime::from_hz(30))
+ MCFG_TIMER_START_DELAY(attotime::from_msec(150))
+MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/tmaster.cpp b/src/mame/drivers/tmaster.cpp
index 1fbe7c9326b..fdc9a2b1ecc 100644
--- a/src/mame/drivers/tmaster.cpp
+++ b/src/mame/drivers/tmaster.cpp
@@ -366,47 +366,45 @@ int tmaster_compute_addr(uint16_t reg_low, uint16_t reg_mid, uint16_t reg_high)
return (reg_low & 0xff) | ((reg_mid & 0x1ff) << 8) | (reg_high << 17);
}
-void tmaster_state::tm(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(24'000'000) / 2); /* 12MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &tmaster_state::tmaster_map);
-
- TIMER(config, "scantimer").configure_scanline(FUNC(tmaster_state::scanline_interrupt), "screen", 0, 1);
+MACHINE_CONFIG_START(tmaster_state::tm)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000) / 2) /* 12MHz */
+ MCFG_DEVICE_PROGRAM_MAP(tmaster_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", tmaster_state, scanline_interrupt, "screen", 0, 1)
- MC68681(config, m_duart, XTAL(8'664'000) / 2 /*??*/);
- m_duart->irq_cb().set(FUNC(tmaster_state::duart_irq_handler));
- m_duart->a_tx_cb().set(m_microtouch, FUNC(microtouch_device::rx));
+ MCFG_DEVICE_ADD( "duart68681", MC68681, XTAL(8'664'000) / 2 /*??*/)
+ MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, tmaster_state, duart_irq_handler))
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE("microtouch", microtouch_device, rx))
- MICROTOUCH(config, m_microtouch, 9600).stx().set(m_duart, FUNC(mc68681_device::rx_a_w));
+ MCFG_MICROTOUCH_ADD( "microtouch", 9600, WRITELINE("duart68681", mc68681_device, rx_a_w) )
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
// video hardware
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(400, 256);
- m_screen->set_visarea(0, 400-1, 0, 256-1);
- m_screen->set_screen_update(FUNC(tmaster_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(400, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tmaster_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x1000);
- CESBLIT(config, m_blitter, XTAL(32'000'000), m_screen);
- m_blitter->set_compute_addr(tmaster_compute_addr);
- m_blitter->irq_callback().set(FUNC(tmaster_state::blitter_irq_callback));
+ MCFG_CESBLIT_ADD("blitter", "screen", XTAL(32'000'000))
+ MCFG_CESBLIT_COMPUTE_ADDR(tmaster_compute_addr)
+ MCFG_CESBLIT_IRQ_CB(WRITELINE(*this, tmaster_state, blitter_irq_callback))
// sound hardware
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(24'000'000) / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* 1.5Mhz? clock frequency & pin 7 not verified */
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(24'000'000) / 16, okim6295_device::PIN7_HIGH) /* 1.5Mhz? clock frequency & pin 7 not verified */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void tmaster_state::tmds1204(machine_config &config)
-{
+MACHINE_CONFIG_START(tmaster_state::tmds1204)
tm(config);
- DS1204(config, "ds1204", 0);
-}
+ MCFG_DS1204_ADD("ds1204")
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/tmc1800.cpp b/src/mame/drivers/tmc1800.cpp
index 992c0f9bf01..1aec81698a0 100644
--- a/src/mame/drivers/tmc1800.cpp
+++ b/src/mame/drivers/tmc1800.cpp
@@ -735,9 +735,9 @@ MACHINE_CONFIG_START(tmc1800_state::tmc1800)
BEEP(config, m_beeper, 0).add_route(ALL_OUTPUTS, "mono", 0.25);
// devices
- MCFG_QUICKLOAD_ADD("quickload", tmc1800_base_state, tmc1800, "bin")
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_QUICKLOAD_ADD("quickload", tmc1800_base_state, tmc1800, "bin", 0)
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
// internal ram
RAM(config, RAM_TAG).set_default_size("2K").set_extra_options("4K");
@@ -763,9 +763,9 @@ MACHINE_CONFIG_START(osc1000b_state::osc1000b)
BEEP(config, m_beeper, 0).add_route(ALL_OUTPUTS, "mono", 0.25);
// devices
- MCFG_QUICKLOAD_ADD("quickload", tmc1800_base_state, tmc1800, "bin")
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_QUICKLOAD_ADD("quickload", tmc1800_base_state, tmc1800, "bin", 0)
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
// internal ram
RAM(config, RAM_TAG).set_default_size("2K").set_extra_options("4K");
@@ -787,9 +787,9 @@ MACHINE_CONFIG_START(tmc2000_state::tmc2000)
tmc2000_video(config);
// devices
- MCFG_QUICKLOAD_ADD("quickload", tmc1800_base_state, tmc1800, "bin")
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_QUICKLOAD_ADD("quickload", tmc1800_base_state, tmc1800, "bin", 0)
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
// internal ram
RAM(config, RAM_TAG).set_default_size("4K").set_extra_options("16K,32K");
@@ -811,9 +811,9 @@ MACHINE_CONFIG_START(nano_state::nano)
nano_video(config);
// devices
- MCFG_QUICKLOAD_ADD("quickload", tmc1800_base_state, tmc1800, "bin")
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_QUICKLOAD_ADD("quickload", tmc1800_base_state, tmc1800, "bin", 0)
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
// internal ram
RAM(config, RAM_TAG).set_default_size("4K");
diff --git a/src/mame/drivers/tmc600.cpp b/src/mame/drivers/tmc600.cpp
index a4360ece5cc..3ee26702f24 100644
--- a/src/mame/drivers/tmc600.cpp
+++ b/src/mame/drivers/tmc600.cpp
@@ -253,8 +253,7 @@ WRITE8_MEMBER( tmc600_state::sc_w )
/* Machine Drivers */
-void tmc600_state::tmc600(machine_config &config)
-{
+MACHINE_CONFIG_START(tmc600_state::tmc600)
// CPU
cdp1802_device &cpu(CDP1802(config, CDP1802_TAG, 3.57_MHz_XTAL));
cpu.set_addrmap(AS_PROGRAM, &tmc600_state::tmc600_map);
@@ -290,15 +289,15 @@ void tmc600_state::tmc600(machine_config &config)
m_centronics->busy_handler().set(CDP1802_TAG, FUNC(cosmac_device::ef4_w)).exor(1);
// cassette
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
// expansion bus connector
- TMC600_EURO_BUS_SLOT(config, m_bus, tmc600_euro_bus_cards, nullptr);
+ MCFG_TMC600_EURO_BUS_SLOT_ADD(TMC600_EURO_BUS_TAG, tmc600_euro_bus_cards, nullptr)
// internal RAM
RAM(config, RAM_TAG).set_default_size("8K");
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/tmnt.cpp b/src/mame/drivers/tmnt.cpp
index 9666c5ee16d..044c7efa14f 100644
--- a/src/mame/drivers/tmnt.cpp
+++ b/src/mame/drivers/tmnt.cpp
@@ -1072,14 +1072,23 @@ void tmnt_state::thndrx2_audio_map(address_map &map)
}
+READ8_MEMBER(tmnt_state::k054539_ctrl_r)
+{
+ return m_k054539->read(space, 0x200 + offset, 0xff);
+}
+
+WRITE8_MEMBER(tmnt_state::k054539_ctrl_w)
+{
+ m_k054539->write(space, 0x200 + offset, data, 0xff);
+}
+
void tmnt_state::prmrsocr_audio_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
map(0x8000, 0xbfff).bankr("bank1");
map(0xc000, 0xdfff).ram();
- map(0xe000, 0xe12f).lrw8("k054539_rw",
- [this](offs_t offset) { return m_k054539->read(((offset & 0x100) << 1) | (offset & 0xff)); },
- [this](offs_t offset, u8 data) { m_k054539->write(((offset & 0x100) << 1) | (offset & 0xff), data); });
+ map(0xe000, 0xe0ff).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0xe100, 0xe12f).rw(FUNC(tmnt_state::k054539_ctrl_r), FUNC(tmnt_state::k054539_ctrl_w));
map(0xf000, 0xf000).w("soundlatch3", FUNC(generic_latch_8_device::write));
map(0xf002, 0xf002).r("soundlatch", FUNC(generic_latch_8_device::read));
map(0xf003, 0xf003).r("soundlatch2", FUNC(generic_latch_8_device::read));
diff --git a/src/mame/drivers/tmspoker.cpp b/src/mame/drivers/tmspoker.cpp
index 61e02835333..8b89cc18270 100644
--- a/src/mame/drivers/tmspoker.cpp
+++ b/src/mame/drivers/tmspoker.cpp
@@ -355,7 +355,7 @@ READ8_MEMBER(tmspoker_state::unk_r)
void tmspoker_state::tmspoker_cru_map(address_map &map)
{
- map(0x0000, 0x0fff).r(FUNC(tmspoker_state::unk_r));
+ map(0x0000, 0x07ff).r(FUNC(tmspoker_state::unk_r));
}
/* I/O byte R/W
@@ -564,8 +564,8 @@ GFXDECODE_END
* Machine Drivers *
*************************/
-void tmspoker_state::tmspoker(machine_config &config)
-{
+MACHINE_CONFIG_START(tmspoker_state::tmspoker)
+
// CPU TMS9980A; no line connections
TMS9980A(config, m_maincpu, MASTER_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &tmspoker_state::tmspoker_map);
@@ -573,13 +573,13 @@ void tmspoker_state::tmspoker(machine_config &config)
m_maincpu->set_vblank_int("screen", FUNC(tmspoker_state::tmspoker_interrupt));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(tmspoker_state::screen_update_tmspoker));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tmspoker_state, screen_update_tmspoker)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_tmspoker);
PALETTE(config, "palette", FUNC(tmspoker_state::tmspoker_palette), 256);
@@ -588,7 +588,8 @@ void tmspoker_state::tmspoker(machine_config &config)
crtc.set_screen("screen");
crtc.set_show_border_area(false);
crtc.set_char_width(8);
-}
+
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/tnzs.cpp b/src/mame/drivers/tnzs.cpp
index 6705f45e3ba..7fe16ec72c8 100644
--- a/src/mame/drivers/tnzs.cpp
+++ b/src/mame/drivers/tnzs.cpp
@@ -1701,6 +1701,7 @@ void kabukiz_state::kabukiz(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
@@ -2076,7 +2077,7 @@ PCB:
Seta: P0-025-A
Taito: K1100241A J1100107A
-The drtoppelj PCB has a sticker label which says "K1100269A // DR. トッペル タンケン" (To'PeRu TaNKeN)
+The drtoppelj PCB has a sticker label which says "K1100269A // DR. ドツペル タンケン" (DoTuPeRu TaNKeN)
*/
ROM_START( drtoppel )
ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k + bankswitch areas for the first CPU */
diff --git a/src/mame/drivers/toaplan1.cpp b/src/mame/drivers/toaplan1.cpp
index bbba1483fd8..789cd22b033 100644
--- a/src/mame/drivers/toaplan1.cpp
+++ b/src/mame/drivers/toaplan1.cpp
@@ -623,43 +623,43 @@ void toaplan1_rallybik_state::rallybik_main_map(address_map &map)
map(0x040000, 0x07ffff).rom();
map(0x080000, 0x083fff).ram();
map(0x0c0000, 0x0c0fff).ram().share("spriteram");
- map(0x100001, 0x100001).w(FUNC(toaplan1_rallybik_state::bcu_flipscreen_w));
- map(0x100002, 0x100003).rw(FUNC(toaplan1_rallybik_state::tileram_offs_r), FUNC(toaplan1_rallybik_state::tileram_offs_w));
- map(0x100004, 0x100007).rw(FUNC(toaplan1_rallybik_state::tileram_r), FUNC(toaplan1_rallybik_state::tileram_w));
- map(0x100010, 0x10001f).rw(FUNC(toaplan1_rallybik_state::scroll_regs_r), FUNC(toaplan1_rallybik_state::scroll_regs_w));
+ map(0x100000, 0x100001).w(FUNC(toaplan1_rallybik_state::toaplan1_bcu_flipscreen_w));
+ map(0x100002, 0x100003).rw(FUNC(toaplan1_rallybik_state::toaplan1_tileram_offs_r), FUNC(toaplan1_rallybik_state::toaplan1_tileram_offs_w));
+ map(0x100004, 0x100007).rw(FUNC(toaplan1_rallybik_state::rallybik_tileram16_r), FUNC(toaplan1_rallybik_state::toaplan1_tileram16_w));
+ map(0x100010, 0x10001f).rw(FUNC(toaplan1_rallybik_state::toaplan1_scroll_regs_r), FUNC(toaplan1_rallybik_state::toaplan1_scroll_regs_w));
map(0x140000, 0x140001).portr("VBLANK");
-// map(0x140000, 0x140001).w(?? video frame related ??)
- map(0x140003, 0x140003).w(FUNC(toaplan1_rallybik_state::intenable_w));
- map(0x140008, 0x14000f).w(FUNC(toaplan1_rallybik_state::bcu_control_w));
- map(0x144000, 0x1447ff).ram().w(FUNC(toaplan1_rallybik_state::bgpalette_w)).share("bgpalette");
- map(0x146000, 0x1467ff).ram().w(FUNC(toaplan1_rallybik_state::fgpalette_w)).share("fgpalette");
- map(0x180000, 0x180fff).rw(FUNC(toaplan1_rallybik_state::shared_r), FUNC(toaplan1_rallybik_state::shared_w)).umask16(0x00ff);
- map(0x1c0000, 0x1c0003).w(FUNC(toaplan1_rallybik_state::tile_offsets_w));
- map(0x1c8001, 0x1c8001).w(FUNC(toaplan1_rallybik_state::reset_sound_w));
+// AM_RANGE(0x140000, 0x140001) AM_WRITE(?? video frame related ??)
+ map(0x140002, 0x140003).w(FUNC(toaplan1_rallybik_state::toaplan1_intenable_w));
+ map(0x140008, 0x14000f).w(FUNC(toaplan1_rallybik_state::toaplan1_bcu_control_w));
+ map(0x144000, 0x1447ff).ram().w(FUNC(toaplan1_rallybik_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x146000, 0x1467ff).ram().w(FUNC(toaplan1_rallybik_state::toaplan1_fgpalette_w)).share("fgpalette");
+ map(0x180000, 0x180fff).rw(FUNC(toaplan1_rallybik_state::toaplan1_shared_r), FUNC(toaplan1_rallybik_state::toaplan1_shared_w));
+ map(0x1c0000, 0x1c0003).w(FUNC(toaplan1_rallybik_state::toaplan1_tile_offsets_w));
+ map(0x1c8000, 0x1c8001).w(FUNC(toaplan1_rallybik_state::toaplan1_reset_sound_w));
}
void toaplan1_state::truxton_main_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
map(0x080000, 0x083fff).ram();
- map(0x0c0000, 0x0c0001).r(FUNC(toaplan1_state::frame_done_r));
- map(0x0c0002, 0x0c0003).rw(FUNC(toaplan1_state::spriteram_offs_r), FUNC(toaplan1_state::spriteram_offs_w));
- map(0x0c0004, 0x0c0005).rw(FUNC(toaplan1_state::spriteram_r), FUNC(toaplan1_state::spriteram_w));
- map(0x0c0006, 0x0c0007).rw(FUNC(toaplan1_state::spritesizeram_r), FUNC(toaplan1_state::spritesizeram_w));
- map(0x100001, 0x100001).w(FUNC(toaplan1_state::bcu_flipscreen_w));
- map(0x100002, 0x100003).rw(FUNC(toaplan1_state::tileram_offs_r), FUNC(toaplan1_state::tileram_offs_w));
- map(0x100004, 0x100007).rw(FUNC(toaplan1_state::tileram_r), FUNC(toaplan1_state::tileram_w));
- map(0x100010, 0x10001f).rw(FUNC(toaplan1_state::scroll_regs_r), FUNC(toaplan1_state::scroll_regs_w));
+ map(0x0c0000, 0x0c0001).r(FUNC(toaplan1_state::toaplan1_frame_done_r));
+ map(0x0c0002, 0x0c0003).rw(FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w));
+ map(0x0c0004, 0x0c0005).rw(FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w));
+ map(0x0c0006, 0x0c0007).rw(FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w));
+ map(0x100000, 0x100001).w(FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w));
+ map(0x100002, 0x100003).rw(FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w));
+ map(0x100004, 0x100007).rw(FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w));
+ map(0x100010, 0x10001f).rw(FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w));
map(0x140000, 0x140001).portr("VBLANK");
-// map(0x140000, 0x140001).w(?? video frame related ??)
- map(0x140003, 0x140003).w(FUNC(toaplan1_state::intenable_w));
- map(0x140008, 0x14000f).w(FUNC(toaplan1_state::bcu_control_w));
- map(0x144000, 0x1447ff).ram().w(FUNC(toaplan1_state::bgpalette_w)).share("bgpalette");
- map(0x146000, 0x1467ff).ram().w(FUNC(toaplan1_state::fgpalette_w)).share("fgpalette");
- map(0x180000, 0x180fff).rw(FUNC(toaplan1_state::shared_r), FUNC(toaplan1_state::shared_w)).umask16(0x00ff);
- map(0x1c0000, 0x1c0003).w(FUNC(toaplan1_state::tile_offsets_w));
- map(0x1c0006, 0x1c0006).w(FUNC(toaplan1_state::fcu_flipscreen_w));
- map(0x1d0001, 0x1d0001).w(FUNC(toaplan1_state::reset_sound_w));
+// AM_RANGE(0x140000, 0x140001) AM_WRITE(?? video frame related ??)
+ map(0x140002, 0x140003).w(FUNC(toaplan1_state::toaplan1_intenable_w));
+ map(0x140008, 0x14000f).w(FUNC(toaplan1_state::toaplan1_bcu_control_w));
+ map(0x144000, 0x1447ff).ram().w(FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x146000, 0x1467ff).ram().w(FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette");
+ map(0x180000, 0x180fff).rw(FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w));
+ map(0x1c0000, 0x1c0003).w(FUNC(toaplan1_state::toaplan1_tile_offsets_w));
+ map(0x1c0006, 0x1c0007).w(FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w));
+ map(0x1d0000, 0x1d0001).w(FUNC(toaplan1_state::toaplan1_reset_sound_w));
}
void toaplan1_state::hellfire_main_map(address_map &map)
@@ -667,23 +667,23 @@ void toaplan1_state::hellfire_main_map(address_map &map)
map(0x000000, 0x03ffff).rom();
map(0x040000, 0x047fff).ram();
map(0x080000, 0x080001).portr("VBLANK");
-// map(0x080000, 0x080001).w(?? video frame related ??)
- map(0x080003, 0x080003).w(FUNC(toaplan1_state::intenable_w));
- map(0x080008, 0x08000f).w(FUNC(toaplan1_state::bcu_control_w));
- map(0x084000, 0x0847ff).ram().w(FUNC(toaplan1_state::bgpalette_w)).share("bgpalette");
- map(0x086000, 0x0867ff).ram().w(FUNC(toaplan1_state::fgpalette_w)).share("fgpalette");
- map(0x0c0000, 0x0c0fff).rw(FUNC(toaplan1_state::shared_r), FUNC(toaplan1_state::shared_w)).umask16(0x00ff);
- map(0x100001, 0x100001).w(FUNC(toaplan1_state::bcu_flipscreen_w));
- map(0x100002, 0x100003).rw(FUNC(toaplan1_state::tileram_offs_r), FUNC(toaplan1_state::tileram_offs_w));
- map(0x100004, 0x100007).rw(FUNC(toaplan1_state::tileram_r), FUNC(toaplan1_state::tileram_w));
- map(0x100010, 0x10001f).rw(FUNC(toaplan1_state::scroll_regs_r), FUNC(toaplan1_state::scroll_regs_w));
- map(0x140000, 0x140001).r(FUNC(toaplan1_state::frame_done_r));
- map(0x140002, 0x140003).rw(FUNC(toaplan1_state::spriteram_offs_r), FUNC(toaplan1_state::spriteram_offs_w));
- map(0x140004, 0x140005).rw(FUNC(toaplan1_state::spriteram_r), FUNC(toaplan1_state::spriteram_w));
- map(0x140006, 0x140007).rw(FUNC(toaplan1_state::spritesizeram_r), FUNC(toaplan1_state::spritesizeram_w));
- map(0x180000, 0x180003).w(FUNC(toaplan1_state::tile_offsets_w));
- map(0x180006, 0x180006).w(FUNC(toaplan1_state::fcu_flipscreen_w));
- map(0x180009, 0x180009).w(FUNC(toaplan1_state::reset_sound_w));
+// AM_RANGE(0x080000, 0x080001) AM_WRITE(?? video frame related ??)
+ map(0x080002, 0x080003).w(FUNC(toaplan1_state::toaplan1_intenable_w));
+ map(0x080008, 0x08000f).w(FUNC(toaplan1_state::toaplan1_bcu_control_w));
+ map(0x084000, 0x0847ff).ram().w(FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x086000, 0x0867ff).ram().w(FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette");
+ map(0x0c0000, 0x0c0fff).rw(FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w));
+ map(0x100000, 0x100001).w(FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w));
+ map(0x100002, 0x100003).rw(FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w));
+ map(0x100004, 0x100007).rw(FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w));
+ map(0x100010, 0x10001f).rw(FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w));
+ map(0x140000, 0x140001).r(FUNC(toaplan1_state::toaplan1_frame_done_r));
+ map(0x140002, 0x140003).rw(FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w));
+ map(0x140004, 0x140005).rw(FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w));
+ map(0x140006, 0x140007).rw(FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w));
+ map(0x180000, 0x180003).w(FUNC(toaplan1_state::toaplan1_tile_offsets_w));
+ map(0x180006, 0x180007).w(FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w));
+ map(0x180008, 0x180009).w(FUNC(toaplan1_state::toaplan1_reset_sound_w));
}
void toaplan1_state::zerowing_main_map(address_map &map)
@@ -691,156 +691,156 @@ void toaplan1_state::zerowing_main_map(address_map &map)
map(0x000000, 0x00ffff).rom();
map(0x040000, 0x07ffff).rom();
map(0x080000, 0x087fff).ram();
- map(0x0c0000, 0x0c0003).w(FUNC(toaplan1_state::tile_offsets_w));
- map(0x0c0006, 0x0c0006).w(FUNC(toaplan1_state::fcu_flipscreen_w));
+ map(0x0c0000, 0x0c0003).w(FUNC(toaplan1_state::toaplan1_tile_offsets_w));
+ map(0x0c0006, 0x0c0007).w(FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w));
map(0x400000, 0x400001).portr("VBLANK");
-// map(0x400000, 0x400001).w(?? video frame related ??)
- map(0x400003, 0x400003).w(FUNC(toaplan1_state::intenable_w));
- map(0x400008, 0x40000f).w(FUNC(toaplan1_state::bcu_control_w));
- map(0x404000, 0x4047ff).ram().w(FUNC(toaplan1_state::bgpalette_w)).share("bgpalette");
- map(0x406000, 0x4067ff).ram().w(FUNC(toaplan1_state::fgpalette_w)).share("fgpalette");
- map(0x440000, 0x440fff).rw(FUNC(toaplan1_state::shared_r), FUNC(toaplan1_state::shared_w)).umask16(0x00ff);
- map(0x480001, 0x480001).w(FUNC(toaplan1_state::bcu_flipscreen_w));
- map(0x480002, 0x480003).rw(FUNC(toaplan1_state::tileram_offs_r), FUNC(toaplan1_state::tileram_offs_w));
- map(0x480004, 0x480007).rw(FUNC(toaplan1_state::tileram_r), FUNC(toaplan1_state::tileram_w));
- map(0x480010, 0x48001f).rw(FUNC(toaplan1_state::scroll_regs_r), FUNC(toaplan1_state::scroll_regs_w));
- map(0x4c0000, 0x4c0001).r(FUNC(toaplan1_state::frame_done_r));
- map(0x4c0002, 0x4c0003).rw(FUNC(toaplan1_state::spriteram_offs_r), FUNC(toaplan1_state::spriteram_offs_w));
- map(0x4c0004, 0x4c0005).rw(FUNC(toaplan1_state::spriteram_r), FUNC(toaplan1_state::spriteram_w));
- map(0x4c0006, 0x4c0007).rw(FUNC(toaplan1_state::spritesizeram_r), FUNC(toaplan1_state::spritesizeram_w));
+// AM_RANGE(0x400000, 0x400001) AM_WRITE(?? video frame related ??)
+ map(0x400002, 0x400003).w(FUNC(toaplan1_state::toaplan1_intenable_w));
+ map(0x400008, 0x40000f).w(FUNC(toaplan1_state::toaplan1_bcu_control_w));
+ map(0x404000, 0x4047ff).ram().w(FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x406000, 0x4067ff).ram().w(FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette");
+ map(0x440000, 0x440fff).rw(FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w));
+ map(0x480000, 0x480001).w(FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w));
+ map(0x480002, 0x480003).rw(FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w));
+ map(0x480004, 0x480007).rw(FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w));
+ map(0x480010, 0x48001f).rw(FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w));
+ map(0x4c0000, 0x4c0001).r(FUNC(toaplan1_state::toaplan1_frame_done_r));
+ map(0x4c0002, 0x4c0003).rw(FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w));
+ map(0x4c0004, 0x4c0005).rw(FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w));
+ map(0x4c0006, 0x4c0007).rw(FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w));
}
-void toaplan1_demonwld_state::main_map(address_map &map)
+void toaplan1_state::demonwld_main_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
map(0x400000, 0x400001).portr("VBLANK");
-// map(0x400000, 0x400001).w(?? video frame related ??)
- map(0x400003, 0x400003).w(FUNC(toaplan1_demonwld_state::intenable_w));
- map(0x400008, 0x40000f).w(FUNC(toaplan1_demonwld_state::bcu_control_w));
- map(0x404000, 0x4047ff).ram().w(FUNC(toaplan1_demonwld_state::bgpalette_w)).share("bgpalette");
- map(0x406000, 0x4067ff).ram().w(FUNC(toaplan1_demonwld_state::fgpalette_w)).share("fgpalette");
- map(0x600000, 0x600fff).rw(FUNC(toaplan1_demonwld_state::shared_r), FUNC(toaplan1_demonwld_state::shared_w)).umask16(0x00ff);
- map(0x800001, 0x800001).w(FUNC(toaplan1_demonwld_state::bcu_flipscreen_w));
- map(0x800002, 0x800003).rw(FUNC(toaplan1_demonwld_state::tileram_offs_r), FUNC(toaplan1_demonwld_state::tileram_offs_w));
- map(0x800004, 0x800007).rw(FUNC(toaplan1_demonwld_state::tileram_r), FUNC(toaplan1_demonwld_state::tileram_w));
- map(0x800010, 0x80001f).rw(FUNC(toaplan1_demonwld_state::scroll_regs_r), FUNC(toaplan1_demonwld_state::scroll_regs_w));
- map(0xa00000, 0xa00001).r(FUNC(toaplan1_demonwld_state::frame_done_r));
- map(0xa00002, 0xa00003).rw(FUNC(toaplan1_demonwld_state::spriteram_offs_r), FUNC(toaplan1_demonwld_state::spriteram_offs_w));
- map(0xa00004, 0xa00005).rw(FUNC(toaplan1_demonwld_state::spriteram_r), FUNC(toaplan1_demonwld_state::spriteram_w));
- map(0xa00006, 0xa00007).rw(FUNC(toaplan1_demonwld_state::spritesizeram_r), FUNC(toaplan1_demonwld_state::spritesizeram_w));
+// AM_RANGE(0x400000, 0x400001) AM_WRITE(?? video frame related ??)
+ map(0x400002, 0x400003).w(FUNC(toaplan1_state::toaplan1_intenable_w));
+ map(0x400008, 0x40000f).w(FUNC(toaplan1_state::toaplan1_bcu_control_w));
+ map(0x404000, 0x4047ff).ram().w(FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x406000, 0x4067ff).ram().w(FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette");
+ map(0x600000, 0x600fff).rw(FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w));
+ map(0x800000, 0x800001).w(FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w));
+ map(0x800002, 0x800003).rw(FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w));
+ map(0x800004, 0x800007).rw(FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w));
+ map(0x800010, 0x80001f).rw(FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w));
+ map(0xa00000, 0xa00001).r(FUNC(toaplan1_state::toaplan1_frame_done_r));
+ map(0xa00002, 0xa00003).rw(FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w));
+ map(0xa00004, 0xa00005).rw(FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w));
+ map(0xa00006, 0xa00007).rw(FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w));
map(0xc00000, 0xc03fff).ram();
- map(0xe00000, 0xe00003).w(FUNC(toaplan1_demonwld_state::tile_offsets_w));
- map(0xe00006, 0xe00006).w(FUNC(toaplan1_demonwld_state::fcu_flipscreen_w));
- map(0xe00009, 0xe00009).w(FUNC(toaplan1_demonwld_state::reset_sound_w));
- map(0xe0000b, 0xe0000b).w(FUNC(toaplan1_demonwld_state::dsp_ctrl_w)); /* DSP Comms control */
+ map(0xe00000, 0xe00003).w(FUNC(toaplan1_state::toaplan1_tile_offsets_w));
+ map(0xe00006, 0xe00007).w(FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w));
+ map(0xe00008, 0xe00009).w(FUNC(toaplan1_state::toaplan1_reset_sound_w));
+ map(0xe0000a, 0xe0000b).w(FUNC(toaplan1_state::demonwld_dsp_ctrl_w)); /* DSP Comms control */
}
-void toaplan1_samesame_state::main_map(address_map &map)
+void toaplan1_state::samesame_main_map(address_map &map)
{
map(0x000000, 0x00ffff).rom();
map(0x040000, 0x07ffff).rom();
- map(0x080000, 0x080003).w(FUNC(toaplan1_samesame_state::tile_offsets_w));
- map(0x080006, 0x080006).w(FUNC(toaplan1_samesame_state::fcu_flipscreen_w));
+ map(0x080000, 0x080003).w(FUNC(toaplan1_state::toaplan1_tile_offsets_w));
+ map(0x080006, 0x080007).w(FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w));
map(0x0c0000, 0x0c3fff).ram(); /* Frame done at $c1ada */
map(0x100000, 0x100001).portr("VBLANK");
-// map(0x100000, 0x100001).w(?? video frame related ??)
- map(0x100003, 0x100003).w(FUNC(toaplan1_samesame_state::intenable_w));
- map(0x100008, 0x10000f).w(FUNC(toaplan1_samesame_state::bcu_control_w));
- map(0x104000, 0x1047ff).ram().w(FUNC(toaplan1_samesame_state::bgpalette_w)).share("bgpalette");
- map(0x106000, 0x1067ff).ram().w(FUNC(toaplan1_samesame_state::fgpalette_w)).share("fgpalette");
+// AM_RANGE(0x100000, 0x100001) AM_WRITE(?? video frame related ??)
+ map(0x100002, 0x100003).w(FUNC(toaplan1_state::toaplan1_intenable_w));
+ map(0x100008, 0x10000f).w(FUNC(toaplan1_state::toaplan1_bcu_control_w));
+ map(0x104000, 0x1047ff).ram().w(FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x106000, 0x1067ff).ram().w(FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette");
map(0x140000, 0x140001).portr("P1");
map(0x140002, 0x140003).portr("P2");
map(0x140004, 0x140005).portr("DSWA");
map(0x140006, 0x140007).portr("DSWB");
map(0x140008, 0x140009).portr("SYSTEM");
- map(0x14000b, 0x14000b).r(FUNC(toaplan1_samesame_state::port_6_word_r)); /* Territory, and MCU ready */
- map(0x14000d, 0x14000d).w(FUNC(toaplan1_samesame_state::coin_w)); /* Coin counter/lockout */
- map(0x14000f, 0x14000f).w(FUNC(toaplan1_samesame_state::mcu_w)); /* Commands sent to HD647180 */
- map(0x180001, 0x180001).w(FUNC(toaplan1_samesame_state::bcu_flipscreen_w));
- map(0x180002, 0x180003).rw(FUNC(toaplan1_samesame_state::tileram_offs_r), FUNC(toaplan1_samesame_state::tileram_offs_w));
- map(0x180004, 0x180007).rw(FUNC(toaplan1_samesame_state::tileram_r), FUNC(toaplan1_samesame_state::tileram_w));
- map(0x180010, 0x18001f).rw(FUNC(toaplan1_samesame_state::scroll_regs_r), FUNC(toaplan1_samesame_state::scroll_regs_w));
- map(0x1c0000, 0x1c0001).r(FUNC(toaplan1_samesame_state::frame_done_r));
-// map(0x1c0000, 0x1c0001).w(?? disable sprite refresh ??)
- map(0x1c0002, 0x1c0003).rw(FUNC(toaplan1_samesame_state::spriteram_offs_r), FUNC(toaplan1_samesame_state::spriteram_offs_w));
- map(0x1c0004, 0x1c0005).rw(FUNC(toaplan1_samesame_state::spriteram_r), FUNC(toaplan1_samesame_state::spriteram_w));
- map(0x1c0006, 0x1c0007).rw(FUNC(toaplan1_samesame_state::spritesizeram_r), FUNC(toaplan1_samesame_state::spritesizeram_w));
+ map(0x14000a, 0x14000b).r(FUNC(toaplan1_state::samesame_port_6_word_r)); /* Territory, and MCU ready */
+ map(0x14000c, 0x14000d).w(FUNC(toaplan1_state::samesame_coin_w)); /* Coin counter/lockout */
+ map(0x14000e, 0x14000f).w(FUNC(toaplan1_state::samesame_mcu_w)); /* Commands sent to HD647180 */
+ map(0x180000, 0x180001).w(FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w));
+ map(0x180002, 0x180003).rw(FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w));
+ map(0x180004, 0x180007).rw(FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w));
+ map(0x180010, 0x18001f).rw(FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w));
+ map(0x1c0000, 0x1c0001).r(FUNC(toaplan1_state::toaplan1_frame_done_r));
+// AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(?? disable sprite refresh ??)
+ map(0x1c0002, 0x1c0003).rw(FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w));
+ map(0x1c0004, 0x1c0005).rw(FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w));
+ map(0x1c0006, 0x1c0007).rw(FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w));
}
void toaplan1_state::outzone_main_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
- map(0x100000, 0x100001).r(FUNC(toaplan1_state::frame_done_r));
- map(0x100002, 0x100003).rw(FUNC(toaplan1_state::spriteram_offs_r), FUNC(toaplan1_state::spriteram_offs_w));
- map(0x100004, 0x100005).rw(FUNC(toaplan1_state::spriteram_r), FUNC(toaplan1_state::spriteram_w));
- map(0x100006, 0x100007).rw(FUNC(toaplan1_state::spritesizeram_r), FUNC(toaplan1_state::spritesizeram_w));
- map(0x140000, 0x140fff).rw(FUNC(toaplan1_state::shared_r), FUNC(toaplan1_state::shared_w)).umask16(0x00ff);
- map(0x200001, 0x200001).w(FUNC(toaplan1_state::bcu_flipscreen_w));
- map(0x200002, 0x200003).rw(FUNC(toaplan1_state::tileram_offs_r), FUNC(toaplan1_state::tileram_offs_w));
- map(0x200004, 0x200007).rw(FUNC(toaplan1_state::tileram_r), FUNC(toaplan1_state::tileram_w));
- map(0x200010, 0x20001f).rw(FUNC(toaplan1_state::scroll_regs_r), FUNC(toaplan1_state::scroll_regs_w));
+ map(0x100000, 0x100001).r(FUNC(toaplan1_state::toaplan1_frame_done_r));
+ map(0x100002, 0x100003).rw(FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w));
+ map(0x100004, 0x100005).rw(FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w));
+ map(0x100006, 0x100007).rw(FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w));
+ map(0x140000, 0x140fff).rw(FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w));
+ map(0x200000, 0x200001).w(FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w));
+ map(0x200002, 0x200003).rw(FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w));
+ map(0x200004, 0x200007).rw(FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w));
+ map(0x200010, 0x20001f).rw(FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w));
map(0x240000, 0x243fff).ram();
map(0x300000, 0x300001).portr("VBLANK");
-// map(0x300000, 0x300001).w(?? video frame related ??)
- map(0x300003, 0x300003).w(FUNC(toaplan1_state::intenable_w));
- map(0x300008, 0x30000f).w(FUNC(toaplan1_state::bcu_control_w));
- map(0x304000, 0x3047ff).ram().w(FUNC(toaplan1_state::bgpalette_w)).share("bgpalette");
- map(0x306000, 0x3067ff).ram().w(FUNC(toaplan1_state::fgpalette_w)).share("fgpalette");
- map(0x340000, 0x340003).w(FUNC(toaplan1_state::tile_offsets_w));
- map(0x340006, 0x340006).w(FUNC(toaplan1_state::fcu_flipscreen_w));
+// AM_RANGE(0x300000, 0x300001) AM_WRITE(?? video frame related ??)
+ map(0x300002, 0x300003).w(FUNC(toaplan1_state::toaplan1_intenable_w));
+ map(0x300008, 0x30000f).w(FUNC(toaplan1_state::toaplan1_bcu_control_w));
+ map(0x304000, 0x3047ff).ram().w(FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x306000, 0x3067ff).ram().w(FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette");
+ map(0x340000, 0x340003).w(FUNC(toaplan1_state::toaplan1_tile_offsets_w));
+ map(0x340006, 0x340007).w(FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w));
}
void toaplan1_state::outzonecv_main_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
-// map(0x040000, 0x07ffff).rom();
+// AM_RANGE(0x040000, 0x07ffff) AM_ROM
map(0x080000, 0x087fff).ram();
- map(0x0c0000, 0x0c0003).w(FUNC(toaplan1_state::tile_offsets_w));
- map(0x0c0006, 0x0c0006).w(FUNC(toaplan1_state::fcu_flipscreen_w));
+ map(0x0c0000, 0x0c0003).w(FUNC(toaplan1_state::toaplan1_tile_offsets_w));
+ map(0x0c0006, 0x0c0007).w(FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w));
map(0x400000, 0x400001).portr("VBLANK");
-// map(0x400000, 0x400001).w(?? video frame related ??)
- map(0x400003, 0x400003).w(FUNC(toaplan1_state::intenable_w));
- map(0x400008, 0x40000f).w(FUNC(toaplan1_state::bcu_control_w));
- map(0x404000, 0x4047ff).ram().w(FUNC(toaplan1_state::bgpalette_w)).share("bgpalette");
- map(0x406000, 0x4067ff).ram().w(FUNC(toaplan1_state::fgpalette_w)).share("fgpalette");
- map(0x440000, 0x440fff).rw(FUNC(toaplan1_state::shared_r), FUNC(toaplan1_state::shared_w)).umask16(0x00ff);
- map(0x480001, 0x480001).w(FUNC(toaplan1_state::bcu_flipscreen_w));
- map(0x480002, 0x480003).rw(FUNC(toaplan1_state::tileram_offs_r), FUNC(toaplan1_state::tileram_offs_w));
- map(0x480004, 0x480007).rw(FUNC(toaplan1_state::tileram_r), FUNC(toaplan1_state::tileram_w));
- map(0x480010, 0x48001f).rw(FUNC(toaplan1_state::scroll_regs_r), FUNC(toaplan1_state::scroll_regs_w));
- map(0x4c0000, 0x4c0001).r(FUNC(toaplan1_state::frame_done_r));
- map(0x4c0002, 0x4c0003).rw(FUNC(toaplan1_state::spriteram_offs_r), FUNC(toaplan1_state::spriteram_offs_w));
- map(0x4c0004, 0x4c0005).rw(FUNC(toaplan1_state::spriteram_r), FUNC(toaplan1_state::spriteram_w));
- map(0x4c0006, 0x4c0007).rw(FUNC(toaplan1_state::spritesizeram_r), FUNC(toaplan1_state::spritesizeram_w));
+// AM_RANGE(0x400000, 0x400001) AM_WRITE(?? video frame related ??)
+ map(0x400002, 0x400003).w(FUNC(toaplan1_state::toaplan1_intenable_w));
+ map(0x400008, 0x40000f).w(FUNC(toaplan1_state::toaplan1_bcu_control_w));
+ map(0x404000, 0x4047ff).ram().w(FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x406000, 0x4067ff).ram().w(FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette");
+ map(0x440000, 0x440fff).rw(FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w));
+ map(0x480000, 0x480001).w(FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w));
+ map(0x480002, 0x480003).rw(FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w));
+ map(0x480004, 0x480007).rw(FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w));
+ map(0x480010, 0x48001f).rw(FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w));
+ map(0x4c0000, 0x4c0001).r(FUNC(toaplan1_state::toaplan1_frame_done_r));
+ map(0x4c0002, 0x4c0003).rw(FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w));
+ map(0x4c0004, 0x4c0005).rw(FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w));
+ map(0x4c0006, 0x4c0007).rw(FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w));
}
void toaplan1_state::vimana_main_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
- map(0x080000, 0x080003).w(FUNC(toaplan1_state::tile_offsets_w));
- map(0x080006, 0x080006).w(FUNC(toaplan1_state::fcu_flipscreen_w));
- map(0x0c0000, 0x0c0001).r(FUNC(toaplan1_state::frame_done_r));
- map(0x0c0002, 0x0c0003).rw(FUNC(toaplan1_state::spriteram_offs_r), FUNC(toaplan1_state::spriteram_offs_w));
- map(0x0c0004, 0x0c0005).rw(FUNC(toaplan1_state::spriteram_r), FUNC(toaplan1_state::spriteram_w));
- map(0x0c0006, 0x0c0007).rw(FUNC(toaplan1_state::spritesizeram_r), FUNC(toaplan1_state::spritesizeram_w));
+ map(0x080000, 0x080003).w(FUNC(toaplan1_state::toaplan1_tile_offsets_w));
+ map(0x080006, 0x080007).w(FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w));
+ map(0x0c0000, 0x0c0001).r(FUNC(toaplan1_state::toaplan1_frame_done_r));
+ map(0x0c0002, 0x0c0003).rw(FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w));
+ map(0x0c0004, 0x0c0005).rw(FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w));
+ map(0x0c0006, 0x0c0007).rw(FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w));
map(0x400000, 0x400001).portr("VBLANK");
-// map(0x400000, 0x400001).w(?? video frame related ??)
- map(0x400003, 0x400003).w(FUNC(toaplan1_state::intenable_w));
- map(0x400008, 0x40000f).w(FUNC(toaplan1_state::bcu_control_w));
- map(0x404000, 0x4047ff).ram().w(FUNC(toaplan1_state::bgpalette_w)).share("bgpalette");
- map(0x406000, 0x4067ff).ram().w(FUNC(toaplan1_state::fgpalette_w)).share("fgpalette");
- map(0x440000, 0x4407ff).rw(FUNC(toaplan1_state::shared_r), FUNC(toaplan1_state::shared_w)).umask16(0x00ff); /* inputs, coins and sound handled by 647180 MCU via this space */
+// AM_RANGE(0x400000, 0x400001) AM_WRITE(?? video frame related ??)
+ map(0x400002, 0x400003).w(FUNC(toaplan1_state::toaplan1_intenable_w));
+ map(0x400008, 0x40000f).w(FUNC(toaplan1_state::toaplan1_bcu_control_w));
+ map(0x404000, 0x4047ff).ram().w(FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x406000, 0x4067ff).ram().w(FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette");
+ map(0x440000, 0x4407ff).rw(FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w)); /* inputs, coins and sound handled by 647180 MCU via this space */
map(0x480000, 0x487fff).ram();
- map(0x4c0001, 0x4c0001).w(FUNC(toaplan1_state::bcu_flipscreen_w));
- map(0x4c0002, 0x4c0003).rw(FUNC(toaplan1_state::tileram_offs_r), FUNC(toaplan1_state::tileram_offs_w));
- map(0x4c0004, 0x4c0007).rw(FUNC(toaplan1_state::tileram_r), FUNC(toaplan1_state::tileram_w));
- map(0x4c0010, 0x4c001f).rw(FUNC(toaplan1_state::scroll_regs_r), FUNC(toaplan1_state::scroll_regs_w));
+ map(0x4c0000, 0x4c0001).w(FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w));
+ map(0x4c0002, 0x4c0003).rw(FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w));
+ map(0x4c0004, 0x4c0007).rw(FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w));
+ map(0x4c0010, 0x4c001f).rw(FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w));
}
/***************************** Z80 Memory Map *******************************/
-void toaplan1_state::sound_map(address_map &map)
+void toaplan1_state::toaplan1_sound_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
map(0x8000, 0x87ff).ram().share("sharedram");
@@ -864,7 +864,7 @@ void toaplan1_state::truxton_sound_io_map(address_map &map)
map(0x00, 0x00).portr("P1");
map(0x10, 0x10).portr("P2");
map(0x20, 0x20).portr("SYSTEM");
- map(0x30, 0x30).w(FUNC(toaplan1_state::coin_w)); /* Coin counter/lockout */
+ map(0x30, 0x30).w(FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */
map(0x40, 0x40).portr("DSWA");
map(0x50, 0x50).portr("DSWB");
map(0x60, 0x61).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
@@ -877,7 +877,7 @@ void toaplan1_state::hellfire_sound_io_map(address_map &map)
map(0x00, 0x00).portr("DSWA");
map(0x10, 0x10).portr("DSWB");
map(0x20, 0x20).portr("TJUMP");
- map(0x30, 0x30).w(FUNC(toaplan1_state::coin_w)); /* Coin counter/lockout */
+ map(0x30, 0x30).w(FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */
map(0x40, 0x40).portr("P1");
map(0x50, 0x50).portr("P2");
map(0x60, 0x60).portr("SYSTEM");
@@ -893,16 +893,16 @@ void toaplan1_state::zerowing_sound_io_map(address_map &map)
map(0x28, 0x28).portr("DSWB");
map(0x80, 0x80).portr("SYSTEM");
map(0x88, 0x88).portr("TJUMP");
- map(0xa0, 0xa0).w(FUNC(toaplan1_state::coin_w)); /* Coin counter/lockout */
+ map(0xa0, 0xa0).w(FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */
map(0xa8, 0xa9).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
}
-void toaplan1_demonwld_state::sound_io_map(address_map &map)
+void toaplan1_state::demonwld_sound_io_map(address_map &map)
{
map.global_mask(0xff);
map(0x00, 0x01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
map(0x20, 0x20).portr("TJUMP");
- map(0x40, 0x40).w(FUNC(toaplan1_demonwld_state::coin_w)); /* Coin counter/lockout */
+ map(0x40, 0x40).w(FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */
map(0x60, 0x60).portr("SYSTEM");
map(0x80, 0x80).portr("P1");
map(0xa0, 0xa0).portr("DSWB");
@@ -914,7 +914,7 @@ void toaplan1_state::outzone_sound_io_map(address_map &map)
{
map.global_mask(0xff);
map(0x00, 0x01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
- map(0x04, 0x04).w(FUNC(toaplan1_state::coin_w)); /* Coin counter/lockout */
+ map(0x04, 0x04).w(FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */
map(0x08, 0x08).portr("DSWA");
map(0x0c, 0x0c).portr("DSWB");
map(0x10, 0x10).portr("SYSTEM");
@@ -926,18 +926,18 @@ void toaplan1_state::outzone_sound_io_map(address_map &map)
/***************************** TMS32010 Memory Map **************************/
-void toaplan1_demonwld_state::dsp_program_map(address_map &map)
+void toaplan1_state::dsp_program_map(address_map &map)
{
map(0x000, 0x7ff).rom();
}
/* $000 - 08F TMS32010 Internal Data RAM in Data Address Space */
-void toaplan1_demonwld_state::dsp_io_map(address_map &map)
+void toaplan1_state::dsp_io_map(address_map &map)
{
- map(0, 0).w(FUNC(toaplan1_demonwld_state::dsp_addrsel_w));
- map(1, 1).rw(FUNC(toaplan1_demonwld_state::dsp_r), FUNC(toaplan1_demonwld_state::dsp_w));
- map(3, 3).w(FUNC(toaplan1_demonwld_state::dsp_bio_w));
+ map(0, 0).w(FUNC(toaplan1_state::demonwld_dsp_addrsel_w));
+ map(1, 1).rw(FUNC(toaplan1_state::demonwld_dsp_r), FUNC(toaplan1_state::demonwld_dsp_w));
+ map(3, 3).w(FUNC(toaplan1_state::demonwld_dsp_bio_w));
}
@@ -976,57 +976,57 @@ void toaplan1_state::vimana_hd647180_io_map(address_map &map)
map(0x81, 0x81).portr("P2");
map(0x82, 0x82).portr("DSWA");
map(0x83, 0x83).portr("SYSTEM");
- map(0x84, 0x84).w(FUNC(toaplan1_state::coin_w)); // Coin counter/lockout // needs verify
+ map(0x84, 0x84).w(FUNC(toaplan1_state::toaplan1_coin_w)); // Coin counter/lockout // needs verify
map(0x87, 0x87).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
map(0x8f, 0x8f).rw("ymsnd", FUNC(ym3812_device::read_port_r), FUNC(ym3812_device::write_port_w));
}
-u8 toaplan1_state::vimana_dswb_invert_r()
+READ8_MEMBER(toaplan1_state::vimana_dswb_invert_r)
{
- return m_dswb_io->read() ^ 0xFF;
+ return ioport("DSWB")->read() ^ 0xFF;
}
-u8 toaplan1_state::vimana_tjump_invert_r()
+READ8_MEMBER(toaplan1_state::vimana_tjump_invert_r)
{
- return (m_tjump_io->read() ^ 0xFF)|0xC0; // high 2 bits of port G always read as 1
+ return (ioport("TJUMP")->read() ^ 0xFF)|0xC0; // high 2 bits of port G always read as 1
}
-void toaplan1_samesame_state::mcu_w(u8 data)
+WRITE16_MEMBER(toaplan1_state::samesame_mcu_w)
{
m_to_mcu = data;
m_cmdavailable = 1;
};
-u8 toaplan1_samesame_state::soundlatch_r()
+READ8_MEMBER(toaplan1_state::samesame_soundlatch_r)
{
return m_to_mcu;
};
-void toaplan1_samesame_state::sound_done_w(u8 data)
+WRITE8_MEMBER(toaplan1_state::samesame_sound_done_w)
{
m_to_mcu = data;
m_cmdavailable = 0;
}
-u8 toaplan1_samesame_state::cmdavailable_r()
+READ8_MEMBER(toaplan1_state::samesame_cmdavailable_r)
{
if (m_cmdavailable) return 0xff;
else return 0x00;
};
-void toaplan1_samesame_state::hd647180_mem_map(address_map &map)
+void toaplan1_state::samesame_hd647180_mem_map(address_map &map)
{
map(0x00000, 0x03fff).rom(); /* Internal 16k byte ROM */
map(0x0fe00, 0x0ffff).ram(); /* Internal 512 byte RAM */
}
-void toaplan1_samesame_state::hd647180_io_map(address_map &map)
+void toaplan1_state::samesame_hd647180_io_map(address_map &map)
{
map.global_mask(0xff);
- map(0x63, 0x63).r(FUNC(toaplan1_samesame_state::cmdavailable_r));
- map(0xa0, 0xa0).r(FUNC(toaplan1_samesame_state::soundlatch_r));
- map(0xb0, 0xb0).w(FUNC(toaplan1_samesame_state::sound_done_w));
+ map(0x63, 0x63).r(FUNC(toaplan1_state::samesame_cmdavailable_r));
+ map(0xa0, 0xa0).r(FUNC(toaplan1_state::samesame_soundlatch_r));
+ map(0xb0, 0xb0).w(FUNC(toaplan1_state::samesame_sound_done_w));
map(0x80, 0x80).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
map(0x81, 0x81).rw("ymsnd", FUNC(ym3812_device::read_port_r), FUNC(ym3812_device::write_port_w));
@@ -1875,25 +1875,25 @@ static const gfx_layout tilelayout =
RGN_FRAC(1,2), /* 16384/32768 tiles */
4, /* 4 bits per pixel */
{ RGN_FRAC(1,2)+8, RGN_FRAC(1,2), 8, 0 },
- { STEP8(0,1) },
- { STEP8(0,8*2) },
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 0, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
16*8 /* every tile takes 16 consecutive bytes */
};
static GFXDECODE_START( gfx_toaplan1 )
- GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 64 )
- GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 64*16, 64 )
+ GFXDECODE_ENTRY( "gfx1", 0x00000, tilelayout, 0, 64 )
+ GFXDECODE_ENTRY( "gfx2", 0x00000, tilelayout, 64*16, 64 )
GFXDECODE_END
static GFXDECODE_START( gfx_rallybik )
- GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 64 )
+ GFXDECODE_ENTRY( "gfx1", 0x00000, tilelayout, 0, 64 )
GFXDECODE_END
-#define PIXEL_CLOCK (XTAL(28'000'000) / 4)
+#define PIXEL_CLOCK (XTAL(28'000'000)/4)
-// HTOTAL and VTOTAL taken from CRTC registers (bcu_control_w)
+// HTOTAL and VTOTAL taken from CRTC registers (toaplan1_bcu_control_w)
// rallybik, demonwld and outzone program a larger VTOTAL than the other
// games, giving them a lower frame rate
@@ -1913,8 +1913,8 @@ void toaplan1_rallybik_state::rallybik(machine_config &config)
M68000(config, m_maincpu, XTAL(10'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_rallybik_state::rallybik_main_map);
- Z80(config, m_audiocpu, XTAL(28'000'000) / 8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_rallybik_state::sound_map);
+ Z80(config, m_audiocpu, XTAL(28'000'000)/8);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_rallybik_state::toaplan1_sound_map);
m_audiocpu->set_addrmap(AS_IO, &toaplan1_rallybik_state::rallybik_sound_io_map);
config.m_minimum_quantum = attotime::from_hz(600);
@@ -1925,12 +1925,14 @@ void toaplan1_rallybik_state::rallybik(machine_config &config)
coinlatch.q_out_cb<6>().set(FUNC(toaplan1_rallybik_state::coin_lockout_1_w));
coinlatch.q_out_cb<7>().set(FUNC(toaplan1_rallybik_state::coin_lockout_2_w));
+ MCFG_MACHINE_RESET_OVERRIDE(toaplan1_state,toaplan1)
+
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL55, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(toaplan1_rallybik_state::screen_update));
- m_screen->screen_vblank().set(FUNC(toaplan1_rallybik_state::screen_vblank));
+ m_screen->set_screen_update(FUNC(toaplan1_rallybik_state::screen_update_rallybik));
+ m_screen->screen_vblank().set(FUNC(toaplan1_rallybik_state::screen_vblank_rallybik));
m_screen->set_palette(m_palette);
TOAPLAN_SCU(config, m_spritegen, 0);
@@ -1940,6 +1942,8 @@ void toaplan1_rallybik_state::rallybik(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_rallybik);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16));
+ MCFG_VIDEO_START_OVERRIDE(toaplan1_rallybik_state,rallybik)
+
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -1954,27 +1958,31 @@ void toaplan1_state::truxton(machine_config &config)
M68000(config, m_maincpu, XTAL(10'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_state::truxton_main_map);
- Z80(config, m_audiocpu, XTAL(28'000'000) / 8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::sound_map);
+ Z80(config, m_audiocpu, XTAL(28'000'000)/8);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::toaplan1_sound_map);
m_audiocpu->set_addrmap(AS_IO, &toaplan1_state::truxton_sound_io_map);
config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_MACHINE_RESET_OVERRIDE(toaplan1_state,toaplan1)
+
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(toaplan1_state::screen_update));
- m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank));
+ m_screen->set_screen_update(FUNC(toaplan1_state::screen_update_toaplan1));
+ m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank_toaplan1));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_toaplan1);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16));
+ MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1)
+
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM3812(config, m_ymsnd, XTAL(28'000'000) / 8);
+ YM3812(config, m_ymsnd, XTAL(28'000'000)/8);
m_ymsnd->irq_handler().set_inputline(m_audiocpu, 0);
m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.0);
}
@@ -1985,27 +1993,31 @@ void toaplan1_state::hellfire(machine_config &config)
M68000(config, m_maincpu, XTAL(10'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_state::hellfire_main_map);
- Z80(config, m_audiocpu, XTAL(28'000'000) / 8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::sound_map);
+ Z80(config, m_audiocpu, XTAL(28'000'000)/8);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::toaplan1_sound_map);
m_audiocpu->set_addrmap(AS_IO, &toaplan1_state::hellfire_sound_io_map);
config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_MACHINE_RESET_OVERRIDE(toaplan1_state,toaplan1)
+
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND+16, VBSTART+16);
- m_screen->set_screen_update(FUNC(toaplan1_state::screen_update));
- m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank));
+ m_screen->set_screen_update(FUNC(toaplan1_state::screen_update_toaplan1));
+ m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank_toaplan1));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_toaplan1);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16));
+ MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1)
+
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM3812(config, m_ymsnd, XTAL(28'000'000) / 8);
+ YM3812(config, m_ymsnd, XTAL(28'000'000)/8);
m_ymsnd->irq_handler().set_inputline(m_audiocpu, 0);
m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.0);
}
@@ -2016,8 +2028,8 @@ void toaplan1_state::zerowing(machine_config &config)
M68000(config, m_maincpu, XTAL(10'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_state::zerowing_main_map);
- Z80(config, m_audiocpu, XTAL(28'000'000) / 8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::sound_map);
+ Z80(config, m_audiocpu, XTAL(28'000'000)/8);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::toaplan1_sound_map);
m_audiocpu->set_addrmap(AS_IO, &toaplan1_state::zerowing_sound_io_map);
config.m_minimum_quantum = attotime::from_hz(600);
@@ -2028,86 +2040,94 @@ void toaplan1_state::zerowing(machine_config &config)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND+16, VBSTART+16);
- m_screen->set_screen_update(FUNC(toaplan1_state::screen_update));
- m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank));
+ m_screen->set_screen_update(FUNC(toaplan1_state::screen_update_toaplan1));
+ m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank_toaplan1));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_toaplan1);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16));
+ MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1)
+
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM3812(config, m_ymsnd, XTAL(28'000'000) / 8);
+ YM3812(config, m_ymsnd, XTAL(28'000'000)/8);
m_ymsnd->irq_handler().set_inputline(m_audiocpu, 0);
m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.0);
}
-void toaplan1_demonwld_state::demonwld(machine_config &config)
+void toaplan1_state::demonwld(machine_config &config)
{
/* basic machine hardware */
M68000(config, m_maincpu, XTAL(10'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_demonwld_state::main_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_state::demonwld_main_map);
- Z80(config, m_audiocpu, XTAL(28'000'000) / 8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_demonwld_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &toaplan1_demonwld_state::sound_io_map);
+ Z80(config, m_audiocpu, XTAL(28'000'000)/8);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::toaplan1_sound_map);
+ m_audiocpu->set_addrmap(AS_IO, &toaplan1_state::demonwld_sound_io_map);
- TMS32010(config, m_dsp, XTAL(28'000'000) / 2);
- m_dsp->set_addrmap(AS_PROGRAM, &toaplan1_demonwld_state::dsp_program_map);
- m_dsp->set_addrmap(AS_IO, &toaplan1_demonwld_state::dsp_io_map);
- m_dsp->bio().set(FUNC(toaplan1_demonwld_state::bio_r));
+ TMS32010(config, m_dsp, XTAL(28'000'000)/2);
+ m_dsp->set_addrmap(AS_PROGRAM, &toaplan1_state::dsp_program_map);
+ m_dsp->set_addrmap(AS_IO, &toaplan1_state::dsp_io_map);
+ m_dsp->bio().set(FUNC(toaplan1_state::demonwld_bio_r));
config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_MACHINE_RESET_OVERRIDE(toaplan1_state,demonwld)
+
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL55, VBEND+16, VBSTART+16);
- m_screen->set_screen_update(FUNC(toaplan1_demonwld_state::screen_update));
- m_screen->screen_vblank().set(FUNC(toaplan1_demonwld_state::screen_vblank));
+ m_screen->set_screen_update(FUNC(toaplan1_state::screen_update_toaplan1));
+ m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank_toaplan1));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_toaplan1);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16));
+ MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1)
+
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM3812(config, m_ymsnd, XTAL(28'000'000) / 8);
+ YM3812(config, m_ymsnd, XTAL(28'000'000)/8);
m_ymsnd->irq_handler().set_inputline(m_audiocpu, 0);
m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.0);
}
-void toaplan1_samesame_state::samesame(machine_config &config)
+void toaplan1_state::samesame(machine_config &config)
{
/* basic machine hardware */
M68000(config, m_maincpu, XTAL(10'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_samesame_state::main_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_state::samesame_main_map);
- Z180(config, m_audiocpu, XTAL(28'000'000) / 8); /* HD647180XOFS6 CPU */
- m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_samesame_state::hd647180_mem_map);
- m_audiocpu->set_addrmap(AS_IO, &toaplan1_samesame_state::hd647180_io_map);
+ Z180(config, m_audiocpu, XTAL(28'000'000)/8); /* HD647180XOFS6 CPU */
+ m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::samesame_hd647180_mem_map);
+ m_audiocpu->set_addrmap(AS_IO, &toaplan1_state::samesame_hd647180_io_map);
config.m_perfect_cpu_quantum = subtag("maincpu");
- MCFG_MACHINE_RESET_OVERRIDE(toaplan1_samesame_state,zerowing)
+ MCFG_MACHINE_RESET_OVERRIDE(toaplan1_state,zerowing)
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(toaplan1_samesame_state::screen_update));
- m_screen->screen_vblank().set(FUNC(toaplan1_samesame_state::screen_vblank));
+ m_screen->set_screen_update(FUNC(toaplan1_state::screen_update_toaplan1));
+ m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank_samesame));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_toaplan1);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16));
+ MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1)
+
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM3812(config, m_ymsnd, XTAL(28'000'000) / 8);
+ YM3812(config, m_ymsnd, XTAL(28'000'000)/8);
m_ymsnd->irq_handler().set_inputline(m_audiocpu, 0);
m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.0);
}
@@ -2118,8 +2138,8 @@ void toaplan1_state::outzone(machine_config &config)
M68000(config, m_maincpu, XTAL(10'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_state::outzone_main_map);
- Z80(config, m_audiocpu, XTAL(28'000'000) / 8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::sound_map);
+ Z80(config, m_audiocpu, XTAL(28'000'000)/8);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::toaplan1_sound_map);
m_audiocpu->set_addrmap(AS_IO, &toaplan1_state::outzone_sound_io_map);
config.m_minimum_quantum = attotime::from_hz(600);
@@ -2130,17 +2150,19 @@ void toaplan1_state::outzone(machine_config &config)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL55, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(toaplan1_state::screen_update));
- m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank));
+ m_screen->set_screen_update(FUNC(toaplan1_state::screen_update_toaplan1));
+ m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank_toaplan1));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_toaplan1);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16));
+ MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1)
+
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM3812(config, m_ymsnd, XTAL(28'000'000) / 8);
+ YM3812(config, m_ymsnd, XTAL(28'000'000)/8);
m_ymsnd->irq_handler().set_inputline(m_audiocpu, 0);
m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.0);
}
@@ -2151,8 +2173,8 @@ void toaplan1_state::outzonecv(machine_config &config)
M68000(config, m_maincpu, XTAL(10'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_state::outzonecv_main_map);
- Z80(config, m_audiocpu, XTAL(28'000'000) / 8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::sound_map);
+ Z80(config, m_audiocpu, XTAL(28'000'000)/8);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::toaplan1_sound_map);
m_audiocpu->set_addrmap(AS_IO, &toaplan1_state::zerowing_sound_io_map);
config.m_minimum_quantum = attotime::from_hz(600);
@@ -2163,17 +2185,19 @@ void toaplan1_state::outzonecv(machine_config &config)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(toaplan1_state::screen_update));
- m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank));
+ m_screen->set_screen_update(FUNC(toaplan1_state::screen_update_toaplan1));
+ m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank_toaplan1));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_toaplan1);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16));
+ MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1)
+
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM3812(config, m_ymsnd, XTAL(28'000'000) / 8);
+ YM3812(config, m_ymsnd, XTAL(28'000'000)/8);
m_ymsnd->irq_handler().set_inputline(m_audiocpu, 0);
m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.0);
}
@@ -2181,32 +2205,34 @@ void toaplan1_state::outzonecv(machine_config &config)
void toaplan1_state::vimana(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(10'000'000)); /* verified on pcb */
+ M68000(config, m_maincpu, XTAL(10'000'000)); /* verified on pcb */
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_state::vimana_main_map);
- Z180(config, m_audiocpu, XTAL(28'000'000) / 8); /* HD647180XOFS6 CPU */
+ Z180(config, m_audiocpu, XTAL(28'000'000)/8); /* HD647180XOFS6 CPU */
m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::vimana_hd647180_mem_map);
m_audiocpu->set_addrmap(AS_IO, &toaplan1_state::vimana_hd647180_io_map);
config.m_minimum_quantum = attotime::from_hz(600);
- MCFG_MACHINE_RESET_OVERRIDE(toaplan1_state,zerowing)
+ MCFG_MACHINE_RESET_OVERRIDE(toaplan1_state,vimana)
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(toaplan1_state::screen_update));
- m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank));
+ m_screen->set_screen_update(FUNC(toaplan1_state::screen_update_toaplan1));
+ m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank_toaplan1));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_toaplan1);
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16));
+ MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1)
+
/* sound hardware */
SPEAKER(config, "mono").front_center();
- YM3812(config, m_ymsnd, XTAL(28'000'000) / 8); /* verified on pcb */
+ YM3812(config, m_ymsnd, XTAL(28'000'000)/8); /* verified on pcb */
m_ymsnd->irq_handler().set_inputline(m_audiocpu, 0);
m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.0);
}
@@ -2844,33 +2870,6 @@ ROM_START( fireshrkdh )
ROM_LOAD( "prom15.20c", 0x20, 0x20, CRC(a1e17492) SHA1(9ddec4c97f2d541f69f3c32c47aaa21fd9699ae2) ) /* ??? */
ROM_END
-ROM_START( samesamecn )
- ROM_REGION( 0x080000, "maincpu", 0 ) /* Main 68K code */
- ROM_LOAD16_BYTE( "o17-09-h2.8j",0x000000, 0x08000, CRC(fc8c2420) SHA1(cf8333d3749213f2007467d3a80bd36ff7b4ce92) ) /* The actual label is stamped with the letter "H" and separate "2" */
- ROM_LOAD16_BYTE( "o17_10-h2.8l",0x000001, 0x08000, CRC(cc0ffbeb) SHA1(1cf85f68b4e368294069053ba8f5710d6c557ede) ) /* The actual label is stamped with the letter "H" and separate "2" */
- ROM_LOAD16_BYTE( "o17-11-2.7j", 0x040000, 0x20000, CRC(6beac378) SHA1(041ba98a89a4bac32575858db8a061bdf7804594) ) /* The actual label is stamped with the number "2" */
- ROM_LOAD16_BYTE( "o17-12-2.7l", 0x040001, 0x20000, CRC(6adb6eb5) SHA1(9b6e63aa50d271c2bb0b4cf822fc6f3684f10230) ) /* The actual label is stamped with the number "2" */
-
- ROM_REGION( 0x8000, "audiocpu", 0 ) /* Sound HD647180 code */
- ROM_LOAD( "hd647180.017", 0x00000, 0x08000, CRC(43523032) SHA1(1b94003a00e7bf6bdf1b1b946f42ff5d04629949) )
-
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD16_BYTE( "o17_05.12j", 0x00000, 0x20000, CRC(565315f8) SHA1(6b1c5ef52359483228b329c89c2e1174e3fbf017) )
- ROM_LOAD16_BYTE( "o17_06.13j", 0x00001, 0x20000, CRC(95262d4c) SHA1(16f3aabecb1c87ce7eadf4f0ff61b29a4c017614) )
- ROM_LOAD16_BYTE( "o17_07.12l", 0x40000, 0x20000, CRC(4c4b735c) SHA1(812c3bf46bd7764b2bb812bd2b9eb0331ed257ae) )
- ROM_LOAD16_BYTE( "o17_08.13l", 0x40001, 0x20000, CRC(95c6586c) SHA1(ff87901f79d80f73ad09664b0c0d892898570616) )
-
- ROM_REGION( 0x80000, "gfx2", 0 )
- ROM_LOAD16_BYTE( "o17_01.1d", 0x00000, 0x20000, CRC(ea12e491) SHA1(02190722b7c5383471e0af9596be7039a5367240) )
- ROM_LOAD16_BYTE( "o17_02.3d", 0x00001, 0x20000, CRC(32a13a9f) SHA1(1446acdfd21cd41f3d97aaf30f498c0c5d890605) )
- ROM_LOAD16_BYTE( "o17_03.5d", 0x40000, 0x20000, CRC(68723dc9) SHA1(4f1b7aa2469c955e03737b611a7d2524f1e4f61e) )
- ROM_LOAD16_BYTE( "o17_04.7d", 0x40001, 0x20000, CRC(fe0ecb13) SHA1(634a49262b9c092c25f11b14c6757fe94ea9eddc) )
-
- ROM_REGION( 0x40, "proms", 0 ) /* nibble bproms, lo/hi order to be determined */
- ROM_LOAD( "prom14.25b", 0x00, 0x20, CRC(bc88cced) SHA1(5055362710c0f58823c05fb4c0e0eec638b91e3d) ) /* sprite attribute (flip/position) ?? */
- ROM_LOAD( "prom15.20c", 0x20, 0x20, CRC(a1e17492) SHA1(9ddec4c97f2d541f69f3c32c47aaa21fd9699ae2) ) /* ??? */
-ROM_END
-
ROM_START( outzone )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Main 68K code */
ROM_LOAD16_BYTE( "tp_018_07.bin", 0x000001, 0x20000, CRC(9704db16) SHA1(12b43a6961a7f63f29563eb77aaacb70d3c368dd) )
@@ -3101,42 +3100,56 @@ ROM_START( vimanaj )
ROM_END
-GAME( 1988, rallybik, 0, rallybik, rallybik, toaplan1_rallybik_state, empty_init, ROT270, "Toaplan / Taito Corporation", "Rally Bike / Dash Yarou", 0 )
+void toaplan1_state::init_toaplan1()
+{
+ toaplan1_driver_savestate();
+}
+
+void toaplan1_state::init_demonwld()
+{
+ toaplan1_driver_savestate();
+ demonwld_driver_savestate();
+}
+
+
+
+
+
+GAME( 1988, rallybik, 0, rallybik, rallybik, toaplan1_rallybik_state, init_toaplan1, ROT270, "Toaplan / Taito Corporation", "Rally Bike / Dash Yarou", 0 )
-GAME( 1988, truxton, 0, truxton, truxton, toaplan1_state, empty_init, ROT270, "Toaplan / Taito Corporation", "Truxton / Tatsujin", 0 )
+GAME( 1988, truxton, 0, truxton, truxton, toaplan1_state, init_toaplan1, ROT270, "Toaplan / Taito Corporation", "Truxton / Tatsujin", 0 )
-GAME( 1989, hellfire, 0, hellfire, hellfire, toaplan1_state, empty_init, ROT0, "Toaplan (Taito license)", "Hellfire (2P set)", 0 )
-GAME( 1989, hellfire1, hellfire, hellfire, hellfire1, toaplan1_state, empty_init, ROT0, "Toaplan (Taito license)", "Hellfire (1P set)", 0 )
-GAME( 1989, hellfire2a, hellfire, hellfire, hellfire2a,toaplan1_state, empty_init, ROT0, "Toaplan (Taito license)", "Hellfire (2P set, older)", 0 )
-GAME( 1989, hellfire1a, hellfire, hellfire, hellfire1a,toaplan1_state, empty_init, ROT0, "Toaplan (Taito license)", "Hellfire (1P set, older)", 0 )
+GAME( 1989, hellfire, 0, hellfire, hellfire, toaplan1_state, init_toaplan1, ROT0, "Toaplan (Taito license)", "Hellfire (2P set)", 0 )
+GAME( 1989, hellfire1, hellfire, hellfire, hellfire1, toaplan1_state, init_toaplan1, ROT0, "Toaplan (Taito license)", "Hellfire (1P set)", 0 )
+GAME( 1989, hellfire2a, hellfire, hellfire, hellfire2a,toaplan1_state, init_toaplan1, ROT0, "Toaplan (Taito license)", "Hellfire (2P set, older)", 0 )
+GAME( 1989, hellfire1a, hellfire, hellfire, hellfire1a,toaplan1_state, init_toaplan1, ROT0, "Toaplan (Taito license)", "Hellfire (1P set, older)", 0 )
-GAME( 1989, zerowing, 0, zerowing, zerowing2, toaplan1_state, empty_init, ROT0, "Toaplan", "Zero Wing (2P set)", 0 )
-GAME( 1989, zerowing1, zerowing, zerowing, zerowing, toaplan1_state, empty_init, ROT0, "Toaplan", "Zero Wing (1P set)", 0 )
-GAME( 1989, zerowingw, zerowing, zerowing, zerowing2, toaplan1_state, empty_init, ROT0, "Toaplan (Williams license)", "Zero Wing (2P set, Williams license)", 0 )
+GAME( 1989, zerowing, 0, zerowing, zerowing2, toaplan1_state, init_toaplan1, ROT0, "Toaplan", "Zero Wing (2P set)", 0 )
+GAME( 1989, zerowing1, zerowing, zerowing, zerowing, toaplan1_state, init_toaplan1, ROT0, "Toaplan", "Zero Wing (1P set)", 0 )
+GAME( 1989, zerowingw, zerowing, zerowing, zerowing2, toaplan1_state, init_toaplan1, ROT0, "Toaplan (Williams license)", "Zero Wing (2P set, Williams license)", 0 )
-GAME( 1990, demonwld, 0, demonwld, demonwld, toaplan1_demonwld_state, empty_init, ROT0, "Toaplan", "Demon's World / Horror Story (set 1)", 0 )
-GAME( 1989, demonwld1, demonwld, demonwld, demonwld, toaplan1_demonwld_state, empty_init, ROT0, "Toaplan", "Demon's World / Horror Story (set 2)", 0 )
-GAME( 1989, demonwld2, demonwld, demonwld, demonwld1, toaplan1_demonwld_state, empty_init, ROT0, "Toaplan", "Demon's World / Horror Story (set 3)", 0 )
-GAME( 1989, demonwld3, demonwld, demonwld, demonwld1, toaplan1_demonwld_state, empty_init, ROT0, "Toaplan", "Demon's World / Horror Story (set 4)", 0 )
-GAME( 1989, demonwld4, demonwld, demonwld, demonwld1, toaplan1_demonwld_state, empty_init, ROT0, "Toaplan", "Demon's World / Horror Story (set 5)", 0 )
+GAME( 1990, demonwld, 0, demonwld, demonwld, toaplan1_state, init_demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 1)", 0 )
+GAME( 1989, demonwld1, demonwld, demonwld, demonwld, toaplan1_state, init_demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 2)", 0 )
+GAME( 1989, demonwld2, demonwld, demonwld, demonwld1, toaplan1_state, init_demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 3)", 0 )
+GAME( 1989, demonwld3, demonwld, demonwld, demonwld1, toaplan1_state, init_demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 4)", 0 )
+GAME( 1989, demonwld4, demonwld, demonwld, demonwld1, toaplan1_state, init_demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 5)", 0 )
-GAME( 1990, fireshrk, 0, samesame, fireshrk, toaplan1_samesame_state, empty_init, ROT270, "Toaplan", "Fire Shark", 0 )
-GAME( 1989, fireshrka, fireshrk, samesame, fireshrka, toaplan1_samesame_state, empty_init, ROT270, "Toaplan", "Fire Shark (earlier)", 0 )
-GAME( 1990, fireshrkd, fireshrk, samesame, samesame2, toaplan1_samesame_state, empty_init, ROT270, "Toaplan (Dooyong license)", "Fire Shark (Korea, set 1, easier)", 0 )
-GAME( 1990, fireshrkdh, fireshrk, samesame, samesame2, toaplan1_samesame_state, empty_init, ROT270, "Toaplan (Dooyong license)", "Fire Shark (Korea, set 2, harder)", 0 )
-GAME( 1989, samesame, fireshrk, samesame, samesame, toaplan1_samesame_state, empty_init, ROT270, "Toaplan", "Same! Same! Same! (1P set)", 0 )
-GAME( 1989, samesame2, fireshrk, samesame, samesame2, toaplan1_samesame_state, empty_init, ROT270, "Toaplan", "Same! Same! Same! (2P set)", 0 )
-GAME( 1990, samesamecn, fireshrk, samesame, samesame2, toaplan1_samesame_state, empty_init, ROT270, "Toaplan (Hong Kong Honest Trading license)", "Jiao! Jiao! Jiao! (China, 2P set)", 0 )
-GAME( 2015, samesamenh, fireshrk, samesame, samesame, toaplan1_samesame_state, empty_init, ROT270, "hack (trap15)", "Same! Same! Same! (1P set, NEW VER! hack)", 0 )
+GAME( 1990, fireshrk, 0, samesame, fireshrk, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Fire Shark", 0 )
+GAME( 1989, fireshrka, fireshrk, samesame, fireshrka, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Fire Shark (earlier)", 0 )
+GAME( 1990, fireshrkd, fireshrk, samesame, samesame2, toaplan1_state, init_toaplan1, ROT270, "Toaplan (Dooyong license)", "Fire Shark (Korea, set 1, easier)", 0 )
+GAME( 1990, fireshrkdh, fireshrk, samesame, samesame2, toaplan1_state, init_toaplan1, ROT270, "Toaplan (Dooyong license)", "Fire Shark (Korea, set 2, harder)", 0 )
+GAME( 1989, samesame, fireshrk, samesame, samesame, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Same! Same! Same! (1P set)", 0 )
+GAME( 1989, samesame2, fireshrk, samesame, samesame2, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Same! Same! Same! (2P set)", 0 )
+GAME( 2015, samesamenh, fireshrk, samesame, samesame, toaplan1_state, init_toaplan1, ROT270, "hack (trap15)", "Same! Same! Same! (1P set, NEW VER! hack)", 0 )
-GAME( 1990, outzone, 0, outzone, outzone, toaplan1_state, empty_init, ROT270, "Toaplan", "Out Zone", 0 )
-GAME( 1990, outzoneh, outzone, outzone, outzone, toaplan1_state, empty_init, ROT270, "Toaplan", "Out Zone (harder)", 0 )
-GAME( 1990, outzonea, outzone, outzone, outzonea, toaplan1_state, empty_init, ROT270, "Toaplan", "Out Zone (old set)", 0 )
-GAME( 1990, outzoneb, outzone, outzone, outzonea, toaplan1_state, empty_init, ROT270, "Toaplan", "Out Zone (older set)", 0 )
-GAME( 1990, outzonec, outzone, outzone, outzonec, toaplan1_state, empty_init, ROT270, "Toaplan", "Out Zone (oldest set)", MACHINE_IMPERFECT_SOUND ) // prototype?
-GAME( 1990, outzonecv, outzone, outzonecv,outzone, toaplan1_state, empty_init, ROT270, "Toaplan", "Out Zone (Zero Wing TP-015 PCB conversion)", 0 )
+GAME( 1990, outzone, 0, outzone, outzone, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Out Zone", 0 )
+GAME( 1990, outzoneh, outzone, outzone, outzone, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Out Zone (harder)", 0 )
+GAME( 1990, outzonea, outzone, outzone, outzonea, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Out Zone (old set)", 0 )
+GAME( 1990, outzoneb, outzone, outzone, outzonea, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Out Zone (older set)", 0 )
+GAME( 1990, outzonec, outzone, outzone, outzonec, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Out Zone (oldest set)", MACHINE_IMPERFECT_SOUND ) // prototype?
+GAME( 1990, outzonecv, outzone, outzonecv,outzone, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Out Zone (Zero Wing TP-015 PCB conversion)", 0 )
// has various licenses / regions depending on jumpers, including Tecmo
-GAME( 1991, vimana, 0, vimana, vimana, toaplan1_state, empty_init, ROT270, "Toaplan", "Vimana (World, set 1)", 0 )
-GAME( 1991, vimanan, vimana, vimana, vimanan, toaplan1_state, empty_init, ROT270, "Toaplan", "Vimana (World, set 2)", 0 )
-GAME( 1991, vimanaj, vimana, vimana, vimanaj, toaplan1_state, empty_init, ROT270, "Toaplan", "Vimana (Japan)", 0 )
+GAME( 1991, vimana, 0, vimana, vimana, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Vimana (World, set 1)", 0 )
+GAME( 1991, vimanan, vimana, vimana, vimanan, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Vimana (World, set 2)", 0 )
+GAME( 1991, vimanaj, vimana, vimana, vimanaj, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Vimana (Japan)", 0 )
diff --git a/src/mame/drivers/toaplan2.cpp b/src/mame/drivers/toaplan2.cpp
index e0294a4002b..88b073d29a5 100644
--- a/src/mame/drivers/toaplan2.cpp
+++ b/src/mame/drivers/toaplan2.cpp
@@ -3205,8 +3205,8 @@ static GFXDECODE_START( gfx_batrider )
GFXDECODE_END
-void toaplan2_state::tekipaki(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::tekipaki)
+
/* basic machine hardware */
M68000(config, m_maincpu, 10_MHz_XTAL); // 10MHz Oscillator
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::tekipaki_68k_mem);
@@ -3215,7 +3215,7 @@ void toaplan2_state::tekipaki(machine_config &config)
m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan2_state::hd647180_mem_map);
m_audiocpu->set_addrmap(AS_IO, &toaplan2_state::hd647180_io_map);
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2)
@@ -3246,10 +3246,10 @@ void toaplan2_state::tekipaki(machine_config &config)
ym3812_device &ymsnd(YM3812(config, "ymsnd", 27_MHz_XTAL/8));
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(toaplan2_state::ghox)
-void toaplan2_state::ghox(machine_config &config)
-{
/* basic machine hardware */
M68000(config, m_maincpu, 10_MHz_XTAL); /* verified on pcb */
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::ghox_68k_mem);
@@ -3257,7 +3257,7 @@ void toaplan2_state::ghox(machine_config &config)
Z180(config, m_audiocpu, 10_MHz_XTAL); /* HD647180 CPU actually */
m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan2_state::ghox_hd647180_mem_map);
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,ghox)
@@ -3284,7 +3284,7 @@ void toaplan2_state::ghox(machine_config &config)
SPEAKER(config, "mono").front_center();
YM2151(config, "ymsnd", 27_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 1.0); // verified on pcb
-}
+MACHINE_CONFIG_END
/* probably dogyuun, vfive and kbash use the same decryption table;
those 3 games have been seen with the NITRO905 chip, other alias are
@@ -3336,8 +3336,8 @@ a4849 cd
*/
-void toaplan2_state::dogyuun(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::dogyuun)
+
/* basic machine hardware */
M68000(config, m_maincpu, 25_MHz_XTAL/2); /* verified on pcb */
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::dogyuun_68k_mem);
@@ -3376,11 +3376,11 @@ void toaplan2_state::dogyuun(machine_config &config)
OKIM6295(config, m_oki[0], 25_MHz_XTAL/24, okim6295_device::PIN7_HIGH); // verified on PCB
m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+MACHINE_CONFIG_END
-void toaplan2_state::kbash(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::kbash)
+
/* basic machine hardware */
M68000(config, m_maincpu, 16_MHz_XTAL); /* 16MHz Oscillator */
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::kbash_68k_mem);
@@ -3420,11 +3420,11 @@ void toaplan2_state::kbash(machine_config &config)
OKIM6295(config, m_oki[0], 32_MHz_XTAL/32, okim6295_device::PIN7_HIGH);
m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+MACHINE_CONFIG_END
-void toaplan2_state::kbash2(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::kbash2)
+
/* basic machine hardware */
M68000(config, m_maincpu, 16_MHz_XTAL); /* 16MHz Oscillator */
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::kbash2_68k_mem);
@@ -3456,11 +3456,11 @@ void toaplan2_state::kbash2(machine_config &config)
OKIM6295(config, m_oki[1], 16_MHz_XTAL/16, okim6295_device::PIN7_HIGH);
m_oki[1]->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
-void toaplan2_state::truxton2(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::truxton2)
+
/* basic machine hardware */
M68000(config, m_maincpu, 16_MHz_XTAL); /* verified on pcb */
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::truxton2_68k_mem);
@@ -3500,11 +3500,11 @@ void toaplan2_state::truxton2(machine_config &config)
OKIM6295(config, m_oki[0], 16_MHz_XTAL/4, okim6295_device::PIN7_LOW); // verified on PCB
m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
#endif
-}
+MACHINE_CONFIG_END
-void toaplan2_state::pipibibs(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::pipibibs)
+
/* basic machine hardware */
M68000(config, m_maincpu, 10_MHz_XTAL); // verified on PCB
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::pipibibs_68k_mem);
@@ -3512,7 +3512,7 @@ void toaplan2_state::pipibibs(machine_config &config)
Z80(config, m_audiocpu, 27_MHz_XTAL/8); // verified on PCB
m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan2_state::pipibibs_sound_z80_mem);
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2)
@@ -3541,20 +3541,20 @@ void toaplan2_state::pipibibs(machine_config &config)
ym3812_device &ymsnd(YM3812(config, "ymsnd", 27_MHz_XTAL/8)); // verified on PCB
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
-void toaplan2_state::pipibibsbl(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::pipibibsbl)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12_MHz_XTAL); // ??? (position labeled "68000-12" but 10 MHz-rated parts used)
- m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::pipibibi_bootleg_68k_mem);
- m_maincpu->set_irq_acknowledge_callback(FUNC(toaplan2_state::pipibibsbl_irq_ack));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12_MHz_XTAL) // ??? (position labeled "68000-12" but 10 MHz-rated parts used)
+ MCFG_DEVICE_PROGRAM_MAP(pipibibi_bootleg_68k_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(toaplan2_state, pipibibsbl_irq_ack)
Z80(config, m_audiocpu, 12_MHz_XTAL / 2); // GoldStar Z8400B; clock source and divider unknown
m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan2_state::pipibibs_sound_z80_mem);
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2)
@@ -3580,7 +3580,7 @@ void toaplan2_state::pipibibsbl(machine_config &config)
ym3812_device &ymsnd(YM3812(config, "ymsnd", 28.322_MHz_XTAL / 8)); // ???
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/* x = modified to match batsugun 'unencrypted' code - '?' likewise, but not so sure about them */
/* e = opcodes used in the EEPROM service routine */
@@ -3621,8 +3621,8 @@ static const uint8_t ts001turbo_decryption_table[256] = {
};
-void toaplan2_state::fixeight(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::fixeight)
+
/* basic machine hardware */
M68000(config, m_maincpu, 16_MHz_XTAL); // verified on PCB
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::fixeight_68k_mem);
@@ -3659,15 +3659,15 @@ void toaplan2_state::fixeight(machine_config &config)
OKIM6295(config, m_oki[0], 16_MHz_XTAL/16, okim6295_device::PIN7_HIGH); /* verified on pcb */
m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+MACHINE_CONFIG_END
-void toaplan2_state::fixeightbl(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::fixeightbl)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(10'000'000)); /* 10MHz Oscillator */
- m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::fixeightbl_68k_mem);
- m_maincpu->set_irq_acknowledge_callback(FUNC(toaplan2_state::fixeightbl_irq_ack));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(10'000'000)) /* 10MHz Oscillator */
+ MCFG_DEVICE_PROGRAM_MAP(fixeightbl_68k_mem)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(toaplan2_state, fixeightbl_irq_ack)
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
@@ -3695,11 +3695,11 @@ void toaplan2_state::fixeightbl(machine_config &config)
OKIM6295(config, m_oki[0], 14_MHz_XTAL/16, okim6295_device::PIN7_LOW);
m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
m_oki[0]->set_addrmap(0, &toaplan2_state::fixeightbl_oki);
-}
+MACHINE_CONFIG_END
-void toaplan2_state::vfive(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::vfive)
+
/* basic machine hardware */
M68000(config, m_maincpu, 20_MHz_XTAL/2); // verified on PCB
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::vfive_68k_mem);
@@ -3732,11 +3732,11 @@ void toaplan2_state::vfive(machine_config &config)
SPEAKER(config, "mono").front_center();
YM2151(config, "ymsnd", 27_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 1.0); // verified on PCB
-}
+MACHINE_CONFIG_END
-void toaplan2_state::batsugun(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::batsugun)
+
/* basic machine hardware */
M68000(config, m_maincpu, 32_MHz_XTAL/2); // 16MHz, 32MHz Oscillator
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::batsugun_68k_mem);
@@ -3777,10 +3777,10 @@ void toaplan2_state::batsugun(machine_config &config)
OKIM6295(config, m_oki[0], 32_MHz_XTAL/8, okim6295_device::PIN7_LOW);
m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(toaplan2_state::pwrkick)
-void toaplan2_state::pwrkick(machine_config &config)
-{
/* basic machine hardware */
M68000(config, m_maincpu, 16_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::pwrkick_68k_mem);
@@ -3812,10 +3812,9 @@ void toaplan2_state::pwrkick(machine_config &config)
// empty YM2151 socket
OKIM6295(config, m_oki[0], 27_MHz_XTAL/8, okim6295_device::PIN7_HIGH); // not confirmed
m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+MACHINE_CONFIG_END
-void toaplan2_state::othldrby(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::othldrby)
/* basic machine hardware */
M68000(config, m_maincpu, 16_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::othldrby_68k_mem);
@@ -3845,11 +3844,10 @@ void toaplan2_state::othldrby(machine_config &config)
OKIM6295(config, m_oki[0], 27_MHz_XTAL/8, okim6295_device::PIN7_HIGH); // not confirmed
m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+MACHINE_CONFIG_END
-void toaplan2_state::enmadaio(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::enmadaio)
/* basic machine hardware */
M68000(config, m_maincpu, 20_MHz_XTAL/2);
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::enmadaio_68k_mem);
@@ -3878,10 +3876,10 @@ void toaplan2_state::enmadaio(machine_config &config)
OKIM6295(config, m_oki[0], 16_MHz_XTAL/4, okim6295_device::PIN7_LOW); // pin7 not confirmed
m_oki[0]->set_addrmap(0, &toaplan2_state::enmadaio_oki);
m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(toaplan2_state::snowbro2)
-void toaplan2_state::snowbro2(machine_config &config)
-{
/* basic machine hardware */
M68000(config, m_maincpu, 16_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::snowbro2_68k_mem);
@@ -3912,11 +3910,11 @@ void toaplan2_state::snowbro2(machine_config &config)
OKIM6295(config, m_oki[0], 27_MHz_XTAL/10, okim6295_device::PIN7_HIGH);
m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
-void toaplan2_state::mahoudai(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::mahoudai)
+
/* basic machine hardware */
M68000(config, m_maincpu, 32_MHz_XTAL/2); // 16MHz, 32MHz Oscillator
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::mahoudai_68k_mem);
@@ -3924,7 +3922,7 @@ void toaplan2_state::mahoudai(machine_config &config)
Z80(config, m_audiocpu, 32_MHz_XTAL/8); // 4MHz, 32MHz Oscillator
m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan2_state::raizing_sound_z80_mem);
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2)
@@ -3955,11 +3953,11 @@ void toaplan2_state::mahoudai(machine_config &config)
OKIM6295(config, m_oki[0], 32_MHz_XTAL/32, okim6295_device::PIN7_HIGH);
m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
-void toaplan2_state::shippumd(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::shippumd)
+
/* basic machine hardware */
M68000(config, m_maincpu, 32_MHz_XTAL/2); // 16MHz, 32MHz Oscillator
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::shippumd_68k_mem);
@@ -3967,7 +3965,7 @@ void toaplan2_state::shippumd(machine_config &config)
Z80(config, m_audiocpu, 32_MHz_XTAL/8); // 4MHz, 32MHz Oscillator
m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan2_state::raizing_sound_z80_mem);
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2)
@@ -3998,10 +3996,10 @@ void toaplan2_state::shippumd(machine_config &config)
OKIM6295(config, m_oki[0], 32_MHz_XTAL/32, okim6295_device::PIN7_HIGH);
m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(toaplan2_state::bgaregga)
-void toaplan2_state::bgaregga(machine_config &config)
-{
/* basic machine hardware */
M68000(config, m_maincpu, 32_MHz_XTAL/2); // 16MHz, 32MHz Oscillator
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::bgaregga_68k_mem);
@@ -4009,7 +4007,7 @@ void toaplan2_state::bgaregga(machine_config &config)
Z80(config, m_audiocpu, 32_MHz_XTAL/8); // 4MHz, 32MHz Oscillator
m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan2_state::bgaregga_sound_z80_mem);
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2)
@@ -4047,19 +4045,18 @@ void toaplan2_state::bgaregga(machine_config &config)
NMK112(config, m_nmk112, 0);
m_nmk112->set_rom0_tag("oki1");
-}
+MACHINE_CONFIG_END
-void toaplan2_state::bgareggabl(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::bgareggabl)
bgaregga(config);
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,bgareggabl)
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_bootleg));
-}
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(toaplan2_state::batrider)
-void toaplan2_state::batrider(machine_config &config)
-{
/* basic machine hardware */
M68000(config, m_maincpu, 32_MHz_XTAL/2); // 16MHz, 32MHz Oscillator (verified)
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::batrider_68k_mem);
@@ -4068,7 +4065,7 @@ void toaplan2_state::batrider(machine_config &config)
m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan2_state::batrider_sound_z80_mem);
m_audiocpu->set_addrmap(AS_IO, &toaplan2_state::batrider_sound_z80_port);
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2)
@@ -4119,21 +4116,21 @@ void toaplan2_state::batrider(machine_config &config)
NMK112(config, m_nmk112, 0);
m_nmk112->set_rom0_tag("oki1");
m_nmk112->set_rom1_tag("oki2");
-}
+MACHINE_CONFIG_END
-void toaplan2_state::bbakraid(machine_config &config)
-{
+MACHINE_CONFIG_START(toaplan2_state::bbakraid)
+
/* basic machine hardware */
M68000(config, m_maincpu, 32_MHz_XTAL/2); // 16MHz, 32MHz Oscillator
m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::bbakraid_68k_mem);
- Z80(config, m_audiocpu, XTAL(32'000'000)/6); /* 5.3333MHz , 32MHz Oscillator */
- m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan2_state::bbakraid_sound_z80_mem);
- m_audiocpu->set_addrmap(AS_IO, &toaplan2_state::bbakraid_sound_z80_port);
- m_audiocpu->set_periodic_int(FUNC(toaplan2_state::bbakraid_snd_interrupt), attotime::from_hz(448));
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(32'000'000)/6) /* 5.3333MHz , 32MHz Oscillator */
+ MCFG_DEVICE_PROGRAM_MAP(bbakraid_sound_z80_mem)
+ MCFG_DEVICE_IO_MAP(bbakraid_sound_z80_port)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(toaplan2_state, bbakraid_snd_interrupt, 448)
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2)
@@ -4177,7 +4174,7 @@ void toaplan2_state::bbakraid(machine_config &config)
YMZ280B(config, "ymz", 16.9344_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 1.0);
// IRQ not used ??? Connected to a test pin (TP082)
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/tomcat.cpp b/src/mame/drivers/tomcat.cpp
index ba8f361d667..c419a32565b 100644
--- a/src/mame/drivers/tomcat.cpp
+++ b/src/mame/drivers/tomcat.cpp
@@ -97,7 +97,7 @@ private:
WRITE8_MEMBER(tomcat_state::adcon_w)
{
- m_adc->address_w(data & 7);
+ m_adc->address_w(space, 0, data & 7);
m_adc->start_w(BIT(data, 3));
}
@@ -308,26 +308,25 @@ void tomcat_state::machine_start()
m_dsp_bio = 0;
}
-void tomcat_state::tomcat(machine_config &config)
-{
- M68010(config, m_maincpu, 12.096_MHz_XTAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &tomcat_state::tomcat_map);
- m_maincpu->set_periodic_int(FUNC(tomcat_state::irq1_line_assert), attotime::from_hz(5*60));
- //m_maincpu->set_periodic_int(FUNC(tomcat_state::irq1_line_assert), attotime::from_hz(12.096_MHz_XTAL / 16 / 16 / 16 / 12));
+MACHINE_CONFIG_START(tomcat_state::tomcat)
+ MCFG_DEVICE_ADD("maincpu", M68010, 12.096_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(tomcat_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(tomcat_state, irq1_line_assert, 5*60)
+ //MCFG_DEVICE_PERIODIC_INT_DRIVER(tomcat_state, irq1_line_assert, 12.096_MHz_XTAL / 16 / 16 / 16 / 12)
TMS32010(config, m_dsp, 16_MHz_XTAL);
m_dsp->set_addrmap(AS_PROGRAM, &tomcat_state::dsp_map);
m_dsp->bio().set(FUNC(tomcat_state::dsp_bio_r));
- m6502_device &soundcpu(M6502(config, "soundcpu", 14.318181_MHz_XTAL / 8));
- soundcpu.set_disable();
- soundcpu.set_addrmap(AS_PROGRAM, &tomcat_state::sound_map);
+ MCFG_DEVICE_ADD("soundcpu", M6502, 14.318181_MHz_XTAL / 8)
+ MCFG_DEVICE_DISABLE()
+ MCFG_DEVICE_PROGRAM_MAP( sound_map)
ADC0809(config, m_adc, 12.096_MHz_XTAL / 16);
m_adc->in_callback<0>().set_ioport("STICKY");
m_adc->in_callback<1>().set_ioport("STICKX");
- RIOT6532(config, "riot", 14.318181_MHz_XTAL / 8);
+ MCFG_DEVICE_ADD("riot", RIOT6532, 14.318181_MHz_XTAL / 8)
/*
PA0 = /WS OUTPUT (TMS-5220 WRITE STROBE)
PA1 = /RS OUTPUT (TMS-5220 READ STROBE)
@@ -343,7 +342,7 @@ void tomcat_state::tomcat(machine_config &config)
// OUTB PB0 - PB7 OUTPUT Speech Data
// IRQ CB connected to IRQ line of 6502
- config.m_minimum_quantum = attotime::from_hz(4000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(4000))
LS259(config, m_mainlatch);
m_mainlatch->q_out_cb<0>().set_output("led1").invert();
@@ -359,31 +358,33 @@ void tomcat_state::tomcat(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
- M48T02(config, "m48t02", 0);
+ MCFG_DEVICE_ADD("m48t02", M48T02, 0)
- VECTOR(config, "vector", 0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_VECTOR));
- screen.set_refresh_hz(40);
- //screen.set_refresh_hz((double)XTAL(12'000'000) / 16 / 16 / 16 / 12 / 5 );
- screen.set_size(400, 300);
- screen.set_visarea(0, 280, 0, 250);
- screen.set_screen_update("vector", FUNC(vector_device::screen_update));
+ MCFG_VECTOR_ADD("vector")
+ MCFG_SCREEN_ADD("screen", VECTOR)
+ MCFG_SCREEN_REFRESH_RATE(40)
+ //MCFG_SCREEN_REFRESH_RATE((double)XTAL(12'000'000) / 16 / 16 / 16 / 12 / 5 )
+ MCFG_SCREEN_SIZE(400, 300)
+ MCFG_SCREEN_VISIBLE_AREA(0, 280, 0, 250)
+ MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
avg_device &avg(AVG_TOMCAT(config, "avg", 0));
avg.set_vector_tag("vector");
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- POKEY(config, "pokey1", XTAL(14'318'181) / 8).add_route(ALL_OUTPUTS, "lspeaker", 0.20);
+ MCFG_DEVICE_ADD("pokey1", POKEY, XTAL(14'318'181) / 8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.20)
- POKEY(config, "pokey2", XTAL(14'318'181) / 8).add_route(ALL_OUTPUTS, "rspeaker", 0.20);
+ MCFG_DEVICE_ADD("pokey2", POKEY, XTAL(14'318'181) / 8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.20)
- TMS5220(config, m_tms, 325000);
- m_tms->add_route(ALL_OUTPUTS, "lspeaker", 0.50);
- m_tms->add_route(ALL_OUTPUTS, "rspeaker", 0.50);
+ MCFG_DEVICE_ADD("tms", TMS5220, 325000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
YM2151(config, "ymsnd", XTAL(14'318'181)/4).add_route(0, "lspeaker", 0.60).add_route(1, "rspeaker", 0.60);
-}
+MACHINE_CONFIG_END
ROM_START( tomcat )
ROM_REGION( 0x10000, "maincpu", 0)
diff --git a/src/mame/drivers/toobin.cpp b/src/mame/drivers/toobin.cpp
index 9d791ffcaef..6387823d0c6 100644
--- a/src/mame/drivers/toobin.cpp
+++ b/src/mame/drivers/toobin.cpp
@@ -203,30 +203,30 @@ GFXDECODE_END
*
*************************************/
-void toobin_state::toobin(machine_config &config)
-{
+MACHINE_CONFIG_START(toobin_state::toobin)
+
/* basic machine hardware */
- M68010(config, m_maincpu, MASTER_CLOCK/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &toobin_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68010, MASTER_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
EEPROM_2804(config, "eeprom").lock_after_write(true);
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
/* video hardware */
- TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 4, 8,8, TILEMAP_SCAN_ROWS, 128,64).set_info_callback(FUNC(toobin_state::get_playfield_tile_info));
- TILEMAP(config, m_alpha_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64,48, 0).set_info_callback(FUNC(toobin_state::get_alpha_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 4, toobin_state, get_playfield_tile_info, 8,8, SCAN_ROWS, 128,64)
+ MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", "gfxdecode", 2, toobin_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,48, 0)
ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, toobin_state::s_mob_config);
m_mob->set_gfxdecode(m_gfxdecode);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
- m_screen->set_raw(MASTER_CLOCK/2, 640, 0, 512, 416, 0, 384);
- m_screen->set_screen_update(FUNC(toobin_state::screen_update));
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 640, 0, 512, 416, 0, 384)
+ MCFG_SCREEN_UPDATE_DRIVER(toobin_state, screen_update)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_toobin);
- PALETTE(config, m_palette).set_entries(1024);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_toobin)
+ MCFG_PALETTE_ADD("palette", 1024)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -238,7 +238,7 @@ void toobin_state::toobin(machine_config &config)
m_jsa->add_route(0, "lspeaker", 1.0);
m_jsa->add_route(1, "rspeaker", 1.0);
config.device_remove("jsa:tms");
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/topspeed.cpp b/src/mame/drivers/topspeed.cpp
index b9df8e091d9..4644da6a6ca 100644
--- a/src/mame/drivers/topspeed.cpp
+++ b/src/mame/drivers/topspeed.cpp
@@ -567,23 +567,23 @@ void topspeed_state::machine_reset()
}
-void topspeed_state::topspeed(machine_config &config)
-{
+MACHINE_CONFIG_START(topspeed_state::topspeed)
+
// basic machine hardware
- M68000(config, m_maincpu, XTAL(16'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &topspeed_state::cpua_map);
- m_maincpu->set_vblank_int("screen", FUNC(topspeed_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(cpua_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", topspeed_state, irq6_line_hold)
- M68000(config, m_subcpu, XTAL(16'000'000) / 2);
- m_subcpu->set_addrmap(AS_PROGRAM, &topspeed_state::cpub_map);
- m_subcpu->set_vblank_int("screen", FUNC(topspeed_state::irq5_line_hold));
+ MCFG_DEVICE_ADD("subcpu", M68000, XTAL(16'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(cpub_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", topspeed_state, irq5_line_hold)
- Z80(config, m_audiocpu, XTAL(16'000'000) / 4);
- m_audiocpu->set_addrmap(AS_PROGRAM, &topspeed_state::z80_prg);
- m_audiocpu->set_addrmap(AS_IO, &topspeed_state::z80_io);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(z80_prg)
+ MCFG_DEVICE_IO_MAP(z80_io)
z80ctc_device& ctc(Z80CTC(config, "ctc", XTAL(16'000'000) / 4));
- ctc.zc_callback<0>().set(FUNC(topspeed_state::z80ctc_to0));
+ ctc.intr_callback().set(FUNC(topspeed_state::z80ctc_to0));
PC080SN(config, m_pc080sn[0], 0);
m_pc080sn[0]->set_gfx_region(1);
@@ -608,13 +608,13 @@ void topspeed_state::topspeed(machine_config &config)
m_tc0040ioc->read_7_callback().set_ioport("IN2");
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60.0532); // Measured on real hardware
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(topspeed_state::screen_update_topspeed));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60.0532) // Measured on real hardware
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(topspeed_state, screen_update_topspeed)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_topspeed);
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 8192);
@@ -629,14 +629,14 @@ void topspeed_state::topspeed(machine_config &config)
ymsnd.add_route(0, "filter1l", 1.0);
ymsnd.add_route(1, "filter1r", 1.0);
- MSM5205(config, m_msm[0], XTAL(384'000));
- m_msm[0]->vck_legacy_callback().set(FUNC(topspeed_state::msm5205_1_vck));
- m_msm[0]->set_prescaler_selector(msm5205_device::S48_4B); // 8 kHz, 4-bit
- m_msm[0]->add_route(ALL_OUTPUTS, "filter2", 1.0);
+ MCFG_DEVICE_ADD("msm1", MSM5205, XTAL(384'000))
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, topspeed_state, msm5205_1_vck)) // VCK function
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) // 8 kHz, 4-bit
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter2", 1.0)
- MSM5205(config, m_msm[1], XTAL(384'000));
- m_msm[1]->set_prescaler_selector(msm5205_device::SEX_4B); // Slave mode, 4-bit
- m_msm[1]->add_route(ALL_OUTPUTS, "filter3", 1.0);
+ MCFG_DEVICE_ADD("msm2", MSM5205, XTAL(384'000))
+ MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) // Slave mode, 4-bit
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter3", 1.0)
FILTER_VOLUME(config, "filter1l").add_route(ALL_OUTPUTS, "lspeaker", 1.0);
FILTER_VOLUME(config, "filter1r").add_route(ALL_OUTPUTS, "rspeaker", 1.0);
@@ -644,7 +644,7 @@ void topspeed_state::topspeed(machine_config &config)
FILTER_VOLUME(config, "filter2").add_route(ALL_OUTPUTS, "lspeaker", 1.0).add_route(ALL_OUTPUTS, "rspeaker", 1.0);
FILTER_VOLUME(config, "filter3").add_route(ALL_OUTPUTS, "lspeaker", 1.0).add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tosh1000.cpp b/src/mame/drivers/tosh1000.cpp
index 741f31563b8..6b6c5d83eeb 100644
--- a/src/mame/drivers/tosh1000.cpp
+++ b/src/mame/drivers/tosh1000.cpp
@@ -49,16 +49,17 @@
#include "softlist.h"
-//#define LOG_GENERAL (1U << 0) //defined in logmacro.h already
-#define LOG_KEYBOARD (1U << 1)
-#define LOG_DEBUG (1U << 2)
+#define VERBOSE_DBG 1 /* general debug messages */
-//#define VERBOSE (LOG_DEBUG)
-//#define LOG_OUTPUT_FUNC printf
-#include "logmacro.h"
-
-#define LOGKBD(...) LOGMASKED(LOG_KEYBOARD, __VA_ARGS__)
-#define LOGDBG(...) LOGMASKED(LOG_DEBUG, __VA_ARGS__)
+#define DBG_LOG(N,M,A) \
+ do { \
+ if(VERBOSE_DBG>=N) \
+ { \
+ if( M ) \
+ logerror("%11.6f at %s: %-10s",machine().time().as_double(),machine().describe_context(),(char*)M ); \
+ logerror A; \
+ } \
+ } while (0)
class tosh1000_state : public driver_device
@@ -118,7 +119,7 @@ MACHINE_RESET_MEMBER(tosh1000_state, tosh1000)
WRITE8_MEMBER(tosh1000_state::romdos_bank_w)
{
- LOGDBG("ROM-DOS <- %02x (%s, accessing bank %d)\n", data, BIT(data, 7)?"enable":"disable", data&7);
+ DBG_LOG(2,"ROM-DOS", ("<- %02x (%s, accessing bank %d)\n", data, BIT(data, 7)?"enable":"disable", data&7));
if (BIT(data, 7))
{
@@ -132,14 +133,14 @@ WRITE8_MEMBER(tosh1000_state::romdos_bank_w)
WRITE8_MEMBER(tosh1000_state::bram_w)
{
- LOGDBG("BRAM %02x <- %02x\n", 0xc0 + offset, data);
+ DBG_LOG(2, "BRAM", ("%02x <- %02x\n", 0xc0 + offset, data));
switch (offset)
{
case 1:
if (m_bram_latch)
{
- LOG("Backup RAM %02x <- %02x\n", m_bram_offset % 160, data);
+ DBG_LOG(1, "Backup RAM", ("%02x <- %02x\n", m_bram_offset % 160, data));
m_bram->write(m_bram_offset % 160, data);
m_bram_offset++;
}
@@ -187,7 +188,7 @@ READ8_MEMBER(tosh1000_state::bram_r)
if (m_bram_state == READ_DATA)
{
data = m_bram->read(m_bram_offset % 160);
- LOG("BRAM @ %02x == %02x\n", m_bram_offset % 160, data);
+ DBG_LOG(1, "BRAM", ("@ %02x == %02x\n", m_bram_offset % 160, data));
m_bram_offset++;
}
break;
@@ -211,7 +212,7 @@ READ8_MEMBER(tosh1000_state::bram_r)
break;
}
- LOGDBG("BRAM %02x == %02x\n", 0xc0 + offset, data);
+ DBG_LOG(2, "BRAM", ("%02x == %02x\n", 0xc0 + offset, data));
return data;
}
@@ -253,38 +254,38 @@ void tosh1000_state::cfg_fdc_35(device_t *device)
dynamic_cast<device_slot_interface &>(*device->subdevice("fdc:1")).set_default_option("");
}
-void tosh1000_state::tosh1000(machine_config &config)
-{
- I8088(config, m_maincpu, XTAL(5'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &tosh1000_state::tosh1000_map);
- m_maincpu->set_addrmap(AS_IO, &tosh1000_state::tosh1000_io);
- m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(tosh1000_state::tosh1000)
+ MCFG_DEVICE_ADD("maincpu", I8088, XTAL(5'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(tosh1000_map)
+ MCFG_DEVICE_IO_MAP(tosh1000_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
ADDRESS_MAP_BANK(config, "bankdev").set_map(&tosh1000_state::tosh1000_romdos).set_options(ENDIANNESS_LITTLE, 8, 20, 0x10000);
MCFG_MACHINE_RESET_OVERRIDE(tosh1000_state, tosh1000)
- IBM5160_MOTHERBOARD(config, "mb", 0).set_cputag(m_maincpu);
+ MCFG_IBM5160_MOTHERBOARD_ADD("mb", "maincpu")
TC8521(config, "rtc", XTAL(32'768));
// FIXME: determine ISA bus clock
- ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "cga", false);
- ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, "fdc_xt", false).set_option_machine_config("fdc_xt", cfg_fdc_35);
- ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, "lpt", false);
- ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "com", false);
- ISA8_SLOT(config, "isa5", 0, "mb:isa", pc_isa8_cards, nullptr, false);
- ISA8_SLOT(config, "isa6", 0, "mb:isa", pc_isa8_cards, nullptr, false);
+ MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "cga", false)
+ MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "fdc_xt", false)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc_xt", cfg_fdc_35)
+ MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "lpt", false)
+ MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, "com", false)
+ MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_ADD("isa6", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false)
-// SOFTWARE_LIST(config, "flop_list").set_original("tosh1000");
+// MCFG_SOFTWARE_LIST_ADD("flop_list","tosh1000")
// uses a 80C50 instead of 8042 for KBDC
- PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
+ MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270)
RAM(config, RAM_TAG).set_default_size("512K");
TOSH1000_BRAM(config, m_bram, 0);
-}
+MACHINE_CONFIG_END
ROM_START( tosh1000 )
diff --git a/src/mame/drivers/tourvis.cpp b/src/mame/drivers/tourvis.cpp
index 8409fb21bd5..a9cc593a87f 100644
--- a/src/mame/drivers/tourvis.cpp
+++ b/src/mame/drivers/tourvis.cpp
@@ -401,26 +401,25 @@ MACHINE_CONFIG_START(tourvision_state::tourvision)
m_maincpu->add_route(0, "lspeaker", 1.00);
m_maincpu->add_route(1, "rspeaker", 1.00);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
- I8085A(config, m_subcpu, 18000000/3 /*?*/);
- m_subcpu->set_addrmap(AS_PROGRAM, &tourvision_state::tourvision_8085_map);
+ MCFG_DEVICE_ADD("subcpu", I8085A, 18000000/3 /*?*/)
+ MCFG_DEVICE_PROGRAM_MAP(tourvision_8085_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(PCE_MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242);
- screen.set_screen_update(FUNC(pce_common_state::screen_update));
- screen.set_palette(m_huc6260);
-
- HUC6260(config, m_huc6260, PCE_MAIN_CLOCK);
- m_huc6260->next_pixel_data().set("huc6270", FUNC(huc6270_device::next_pixel));
- m_huc6260->time_til_next_event().set("huc6270", FUNC(huc6270_device::time_until_next_event));
- m_huc6260->vsync_changed().set("huc6270", FUNC(huc6270_device::vsync_changed));
- m_huc6260->hsync_changed().set("huc6270", FUNC(huc6270_device::hsync_changed));
-
- huc6270_device &huc6270(HUC6270(config, "huc6270", 0));
- huc6270.set_vram_size(0x10000);
- huc6270.irq().set_inputline(m_maincpu, 0);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242)
+ MCFG_SCREEN_UPDATE_DRIVER( pce_common_state, screen_update )
+ MCFG_SCREEN_PALETTE("huc6260")
+
+ MCFG_DEVICE_ADD( "huc6260", HUC6260, PCE_MAIN_CLOCK )
+ MCFG_HUC6260_NEXT_PIXEL_DATA_CB(READ16("huc6270", huc6270_device, next_pixel))
+ MCFG_HUC6260_TIME_TIL_NEXT_EVENT_CB(READ16("huc6270", huc6270_device, time_until_next_event))
+ MCFG_HUC6260_VSYNC_CHANGED_CB(WRITELINE("huc6270", huc6270_device, vsync_changed))
+ MCFG_HUC6260_HSYNC_CHANGED_CB(WRITELINE("huc6270", huc6270_device, hsync_changed))
+ MCFG_DEVICE_ADD( "huc6270", HUC6270, 0 )
+ MCFG_HUC6270_VRAM_SIZE(0x10000)
+ MCFG_HUC6270_IRQ_CHANGED_CB(INPUTLINE("maincpu", 0))
i8155_device &i8155(I8155(config, "i8155", 1000000 /*?*/));
i8155.out_pa_callback().set(FUNC(tourvision_state::tourvision_i8155_a_w));
@@ -436,7 +435,9 @@ MACHINE_CONFIG_START(tourvision_state::tourvision)
MCFG_GENERIC_LOAD(tourvision_state, tourvision_cart)
MCFG_GENERIC_MANDATORY
- SOFTWARE_LIST(config, "tv_list").set_original("pce_tourvision");
+ MCFG_SOFTWARE_LIST_ADD("tv_list","pce_tourvision")
+
+
MACHINE_CONFIG_END
#define TOURVISION_BIOS \
diff --git a/src/mame/drivers/tp84.cpp b/src/mame/drivers/tp84.cpp
index ed82130285f..a3cc77483b4 100644
--- a/src/mame/drivers/tp84.cpp
+++ b/src/mame/drivers/tp84.cpp
@@ -242,9 +242,9 @@ void tp84_state::audio_map(address_map &map)
map(0x8000, 0x8000).r(FUNC(tp84_state::tp84_sh_timer_r));
map(0xa000, 0xa1ff).w(FUNC(tp84_state::tp84_filter_w));
map(0xc000, 0xc000).nopw();
- map(0xc001, 0xc001).w("y2404_1", FUNC(y2404_device::write));
- map(0xc003, 0xc003).w("y2404_2", FUNC(y2404_device::write));
- map(0xc004, 0xc004).w("y2404_3", FUNC(y2404_device::write));
+ map(0xc001, 0xc001).w("y2404_1", FUNC(y2404_device::command_w));
+ map(0xc003, 0xc003).w("y2404_2", FUNC(y2404_device::command_w));
+ map(0xc004, 0xc004).w("y2404_3", FUNC(y2404_device::command_w));
}
@@ -329,19 +329,19 @@ static GFXDECODE_START( gfx_tp84 )
GFXDECODE_END
-void tp84_state::tp84(machine_config &config)
-{
+MACHINE_CONFIG_START(tp84_state::tp84)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, XTAL(18'432'000)/12); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &tp84_state::tp84_cpu1_map);
+ MCFG_DEVICE_ADD("cpu1", MC6809E, XTAL(18'432'000)/12) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(tp84_cpu1_map)
- MC6809E(config, m_subcpu, XTAL(18'432'000)/12); /* verified on pcb */
- m_subcpu->set_addrmap(AS_PROGRAM, &tp84_state::cpu2_map);
+ MCFG_DEVICE_ADD("sub", MC6809E, XTAL(18'432'000)/12) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(cpu2_map)
- Z80(config, m_audiocpu, XTAL(14'318'181)/4); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &tp84_state::audio_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80,XTAL(14'318'181)/4) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(audio_map)
- config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - a high value to ensure proper */
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */
/* synchronization of the CPUs */
ls259_device &mainlatch(LS259(config, "mainlatch", 0)); // 3B
@@ -354,14 +354,14 @@ void tp84_state::tp84(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(tp84_state::screen_update_tp84));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(tp84_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tp84_state, screen_update_tp84)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, tp84_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_tp84);
PALETTE(config, m_palette, FUNC(tp84_state::tp84_palette), 4096, 256);
@@ -371,21 +371,24 @@ void tp84_state::tp84(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- Y2404(config, "y2404_1", XTAL(14'318'181)/8).add_route(ALL_OUTPUTS, "filter1", 0.75); /* verified on pcb */
+ MCFG_DEVICE_ADD("y2404_1", Y2404, XTAL(14'318'181)/8) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter1", 0.75)
- Y2404(config, "y2404_2", XTAL(14'318'181)/8).add_route(ALL_OUTPUTS, "filter2", 0.75); /* verified on pcb */
+ MCFG_DEVICE_ADD("y2404_2", Y2404, XTAL(14'318'181)/8) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter2", 0.75)
- Y2404(config, "y2404_3", XTAL(14'318'181)/8).add_route(ALL_OUTPUTS, "filter3", 0.75); /* verified on pcb */
+ MCFG_DEVICE_ADD("y2404_3", Y2404, XTAL(14'318'181)/8) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter3", 0.75)
for (auto &filter : m_filter)
FILTER_RC(config, filter).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
-void tp84_state::tp84b(machine_config &config)
-{
+MACHINE_CONFIG_START(tp84_state::tp84b)
tp84(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &tp84_state::tp84b_cpu1_map);
-}
+ MCFG_DEVICE_MODIFY("cpu1")
+ MCFG_DEVICE_PROGRAM_MAP(tp84b_cpu1_map)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/tr606.cpp b/src/mame/drivers/tr606.cpp
index 970addc505b..6eeb292ea30 100644
--- a/src/mame/drivers/tr606.cpp
+++ b/src/mame/drivers/tr606.cpp
@@ -23,8 +23,8 @@
class tr606_state : public hh_ucom4_state
{
public:
- tr606_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_ucom4_state(mconfig, type, tag)
+ tr606_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
{ }
void tr606(machine_config &config);
@@ -80,22 +80,21 @@ void tr606_state::machine_start()
// register for savestates
}
-void tr606_state::tr606(machine_config &config)
-{
+MACHINE_CONFIG_START(tr606_state::tr606)
+
/* basic machine hardware */
- NEC_D650(config, m_maincpu, TP2_HZ);
+ MCFG_DEVICE_ADD("maincpu", NEC_D650, TP2_HZ)
- timer_device &tp3_clock(TIMER(config, "tp3_clock"));
- tp3_clock.configure_periodic(FUNC(tr606_state::tp3_clock), TP3_PERIOD);
- tp3_clock.set_start_delay(TP3_PERIOD - TP3_LOW);
- TIMER(config, "tp3_clear").configure_periodic(FUNC(tr606_state::tp3_clear), TP3_PERIOD);
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("tp3_clock", tr606_state, tp3_clock, TP3_PERIOD)
+ MCFG_TIMER_START_DELAY(TP3_PERIOD - TP3_LOW)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("tp3_clear", tr606_state, tp3_clear, TP3_PERIOD)
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_ucom4_state::display_decay_tick), attotime::from_msec(1));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
config.set_default_layout(layout_tr606);
/* sound hardware */
// discrete...
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/trackfld.cpp b/src/mame/drivers/trackfld.cpp
index 28c5ac49af7..ca74ca65707 100644
--- a/src/mame/drivers/trackfld.cpp
+++ b/src/mame/drivers/trackfld.cpp
@@ -895,14 +895,14 @@ WRITE_LINE_MEMBER(trackfld_state::vblank_nmi)
m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
-void trackfld_state::trackfld(machine_config &config)
-{
+MACHINE_CONFIG_START(trackfld_state::trackfld)
+
/* basic machine hardware */
- KONAMI1(config, m_maincpu, MASTER_CLOCK/6/2); /* a guess for now */
- m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::main_map);
+ MCFG_DEVICE_ADD(m_maincpu, KONAMI1, MASTER_CLOCK/6/2) /* a guess for now */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
- Z80(config, m_audiocpu, SOUND_CLOCK/4);
- m_audiocpu->set_addrmap(AS_PROGRAM, &trackfld_state::sound_map);
+ MCFG_DEVICE_ADD(m_audiocpu, Z80, SOUND_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
MCFG_MACHINE_START_OVERRIDE(trackfld_state,trackfld)
MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld)
@@ -922,14 +922,14 @@ void trackfld_state::trackfld(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(trackfld_state::screen_update_trackfld));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(trackfld_state::vblank_irq));
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(trackfld_state, screen_update_trackfld)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, trackfld_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_trackfld);
PALETTE(config, m_palette, FUNC(trackfld_state::trackfld_palette), 16*16+16*16, 32);
@@ -940,27 +940,26 @@ void trackfld_state::trackfld(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- TRACKFLD_AUDIO(config, m_soundbrd, 0, m_audiocpu, m_vlm);
+ MCFG_DEVICE_ADD(m_soundbrd, TRACKFLD_AUDIO, 0, m_audiocpu, m_vlm)
- DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // ls374.8e + r34-r47(20k) + r35-r53(10k) + r54(20k) + upc324.8f
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD(m_dac, DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // ls374.8e + r34-r47(20k) + r35-r53(10k) + r54(20k) + upc324.8f
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
- SN76496(config, m_sn, SOUND_CLOCK/8);
- m_sn->add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD(m_sn, SN76496, SOUND_CLOCK/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
- VLM5030(config, m_vlm, VLM_CLOCK);
- m_vlm->set_addrmap(0, &trackfld_state::vlm_map);
- m_vlm->add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_ADD(m_vlm, VLM5030, VLM_CLOCK)
+ MCFG_DEVICE_ADDRESS_MAP(0, vlm_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
-void trackfld_state::trackfldu(machine_config &config)
-{
+MACHINE_CONFIG_START(trackfld_state::trackfldu)
trackfld(config);
- MC6809E(config.replace(), m_maincpu, MASTER_CLOCK/6/2); /* exact M6809 model unknown */
- m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::main_map);
-}
+ MCFG_DEVICE_REPLACE("maincpu", MC6809E, MASTER_CLOCK/6/2) /* exact M6809 model unknown */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+
+MACHINE_CONFIG_END
INTERRUPT_GEN_MEMBER(trackfld_state::yieartf_timer_irq)
{
@@ -968,16 +967,16 @@ INTERRUPT_GEN_MEMBER(trackfld_state::yieartf_timer_irq)
device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
-void trackfld_state::yieartf(machine_config &config)
-{
+MACHINE_CONFIG_START(trackfld_state::yieartf)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, MASTER_CLOCK/6/2); /* a guess for now */
- m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::yieartf_map);
- m_maincpu->set_periodic_int(FUNC(trackfld_state::yieartf_timer_irq), attotime::from_hz(480));
+ MCFG_DEVICE_ADD(m_maincpu, MC6809E, MASTER_CLOCK/6/2) /* a guess for now */
+ MCFG_DEVICE_PROGRAM_MAP(yieartf_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(trackfld_state, yieartf_timer_irq, 480)
// z80 isn't used
-// Z80(config, m_audiocpu, SOUND_CLOCK/4);
-// m_audiocpu->set_addrmap(AS_PROGRAM, &trackfld_state::sound_map);
+// MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CLOCK/4)
+// MCFG_DEVICE_PROGRAM_MAP(sound_map)
MCFG_MACHINE_START_OVERRIDE(trackfld_state,trackfld)
MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld)
@@ -997,14 +996,14 @@ void trackfld_state::yieartf(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(trackfld_state::screen_update_trackfld));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(trackfld_state::vblank_irq));
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(trackfld_state, screen_update_trackfld)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, trackfld_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_trackfld);
PALETTE(config, m_palette, FUNC(trackfld_state::trackfld_palette), 16*16+16*16, 32);
@@ -1015,20 +1014,19 @@ void trackfld_state::yieartf(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch");
- TRACKFLD_AUDIO(config, m_soundbrd, 0, finder_base::DUMMY_TAG, m_vlm);
+ MCFG_DEVICE_ADD(m_soundbrd, TRACKFLD_AUDIO, 0, finder_base::DUMMY_TAG, m_vlm)
- DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // ls374.8e + r34-r47(20k) + r35-r53(10k) + r54(20k) + upc324.8f
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD(m_dac, DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // ls374.8e + r34-r47(20k) + r35-r53(10k) + r54(20k) + upc324.8f
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
- SN76496(config, m_sn, MASTER_CLOCK/6/2);
- m_sn->add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD(m_sn, SN76496, MASTER_CLOCK/6/2)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
- VLM5030(config, m_vlm, VLM_CLOCK);
- m_vlm->set_addrmap(0, &trackfld_state::vlm_map);
- m_vlm->add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_ADD(m_vlm, VLM5030, VLM_CLOCK)
+ MCFG_DEVICE_ADDRESS_MAP(0, vlm_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
void trackfld_state::hyprolyb_adpcm_map(address_map &map)
{
@@ -1055,8 +1053,7 @@ void trackfld_state::hyprolyb_adpcm_map(address_map &map)
/* same as the original, but uses ADPCM instead of VLM5030 */
/* also different memory handlers do handle that */
-void trackfld_state::hyprolyb(machine_config &config)
-{
+MACHINE_CONFIG_START(trackfld_state::hyprolyb)
trackfld(config);
m_audiocpu->set_addrmap(AS_PROGRAM, address_map_constructor(&std::remove_pointer_t<decltype(this)>::hyprolyb_sound_map, tag(), this));
@@ -1065,61 +1062,59 @@ void trackfld_state::hyprolyb(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld)
/* sound hardware */
- config.device_remove("vlm");
- M6802(config, "adpcm", XTAL(14'318'181)/8).set_addrmap(AS_PROGRAM, &trackfld_state::hyprolyb_adpcm_map); /* unknown clock */
+ MCFG_DEVICE_REMOVE("vlm")
+ MCFG_DEVICE_ADD("adpcm", M6802, XTAL(14'318'181)/8) /* unknown clock */
+ MCFG_DEVICE_PROGRAM_MAP(hyprolyb_adpcm_map)
GENERIC_LATCH_8(config, "soundlatch2");
- HYPROLYB_ADPCM(config, "hyprolyb_adpcm", 0);
+ MCFG_DEVICE_ADD("hyprolyb_adpcm", HYPROLYB_ADPCM, 0)
- msm5205_device &msm(MSM5205(config, "msm", 384000));
- msm.vck_legacy_callback().set("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::vck_callback));
- msm.set_prescaler_selector(msm5205_device::S96_4B); /* 4 kHz */
- msm.add_route(ALL_OUTPUTS, "speaker", 0.5);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE("hyprolyb_adpcm", hyprolyb_adpcm_device, vck_callback)) /* VCK function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4 kHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+MACHINE_CONFIG_END
-void trackfld_state::atlantol(machine_config &config)
-{
+MACHINE_CONFIG_START(trackfld_state::atlantol)
hyprolyb(config);
MCFG_VIDEO_START_OVERRIDE(trackfld_state,atlantol)
-}
+MACHINE_CONFIG_END
-void trackfld_state::mastkin(machine_config &config)
-{
+
+MACHINE_CONFIG_START(trackfld_state::mastkin)
trackfld(config);
/* basic machine hardware */
- MC6809E(config.replace(), m_maincpu, MASTER_CLOCK/6/2); /* a guess for now */
- m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::mastkin_map);
+ MCFG_DEVICE_REPLACE(m_maincpu, MC6809E, MASTER_CLOCK/6/2) /* a guess for now */
+ MCFG_DEVICE_PROGRAM_MAP(mastkin_map)
m_mainlatch->q_out_cb<3>().set_nop(); // actually not used
m_mainlatch->q_out_cb<4>().set_nop(); // actually not used
-}
+MACHINE_CONFIG_END
-void trackfld_state::wizzquiz(machine_config &config)
-{
+MACHINE_CONFIG_START(trackfld_state::wizzquiz)
trackfld(config);
/* basic machine hardware */
// right cpu?
- M6800(config.replace(), m_maincpu, 2048000); /* 1.400 MHz ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::wizzquiz_map);
+ MCFG_DEVICE_REPLACE(m_maincpu, M6800, 2048000) /* 1.400 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(wizzquiz_map)
m_screen->set_screen_vblank(DEVCB_WRITELINE(*this, trackfld_state, vblank_nmi));
m_mainlatch->q_out_cb<7>().set(FUNC(trackfld_state::nmi_mask_w));
-}
+MACHINE_CONFIG_END
-void trackfld_state::reaktor(machine_config &config)
-{
+MACHINE_CONFIG_START(trackfld_state::reaktor)
trackfld(config);
/* basic machine hardware */
- Z80(config.replace(), m_maincpu, MASTER_CLOCK/6);
- m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::reaktor_map);
- m_maincpu->set_addrmap(AS_IO, &trackfld_state::reaktor_io_map);
-}
+ MCFG_DEVICE_REPLACE(m_maincpu, Z80, MASTER_CLOCK/6)
+ MCFG_DEVICE_PROGRAM_MAP(reaktor_map)
+ MCFG_DEVICE_IO_MAP(reaktor_io_map)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/travrusa.cpp b/src/mame/drivers/travrusa.cpp
index e692ebb0f08..2e45691afa2 100644
--- a/src/mame/drivers/travrusa.cpp
+++ b/src/mame/drivers/travrusa.cpp
@@ -304,48 +304,49 @@ void travrusa_state::machine_reset()
m_scrollx[1] = 0;
}
-void travrusa_state::travrusa(machine_config &config)
-{
+MACHINE_CONFIG_START(travrusa_state::travrusa)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* 4 MHz (?) */
- m_maincpu->set_addrmap(AS_PROGRAM, &travrusa_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(travrusa_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz (?) */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", travrusa_state, irq0_line_hold)
+
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(56.75);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(1790) /* accurate frequency, measured on a Moon Patrol board, is 56.75Hz. */);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(56.75)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1790) /* accurate frequency, measured on a Moon Patrol board, is 56.75Hz. */)
/* the Lode Runner manual (similar but different hardware) */
/* talks about 55Hz and 1790ms vblank duration. */
- screen.set_size(32*8, 32*8);
- screen.set_visarea(1*8, 31*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(travrusa_state::screen_update_travrusa));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(travrusa_state, screen_update_travrusa)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_travrusa)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_travrusa);
PALETTE(config, m_palette, FUNC(travrusa_state::travrusa_palette), 16*8+16*8, 128+16);
/* sound hardware */
//m52_sound_c_audio(config);
- IREM_M52_SOUNDC_AUDIO(config, "irem_audio", 0);
-}
+ MCFG_DEVICE_ADD("irem_audio", IREM_M52_SOUNDC_AUDIO, 0)
-void travrusa_state::shtrider(machine_config &config)
-{
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(travrusa_state::shtrider)
travrusa(config);
/* video hardware */
- m_gfxdecode->set_info(gfx_shtrider);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_shtrider)
m_palette->set_init(FUNC(travrusa_state::shtrider_palette));
-}
+MACHINE_CONFIG_END
-void travrusa_state::shtriderb(machine_config &config)
-{
+MACHINE_CONFIG_START(travrusa_state::shtriderb)
travrusa(config);
/* video hardware */
- m_gfxdecode->set_info(gfx_shtrider);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_shtrider)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/triforce.cpp b/src/mame/drivers/triforce.cpp
index d4a9fc8aee0..1c2e7af09cf 100644
--- a/src/mame/drivers/triforce.cpp
+++ b/src/mame/drivers/triforce.cpp
@@ -19,86 +19,81 @@ use with Namco ROM carts.
Games on this system include....
-GD build date
- yyyymmdd Game Manufacturer / Developer Media Number Key Chip PIC16C621A
-+-+----------+----------------------------------------------------------------------+-------------------------------------+-------|----------------+--------------|---------------|
-| | 2002 | Starfox Armada (planned, but not released) | Namco / Nintendo | Cart? | | | |
-|*| 20020730 | Virtua Striker 2002 (Japan) | Sega / Amusement Vision | GDROM | GDT-0001 | 317-0337-JPN | |
-|*| 20020730 | Virtua Striker 2002 (Export) | Sega / Amusement Vision | GDROM | GDT-0002 | 317-0337-EXP | |
-| | 2003 | F-Zero AX | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004 | 317-0362-COM | 253-5508-0362 |
-| | 2003 | F-Zero AX (Rev A) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004A | 317-0362-COM | 253-5508-0362 |
-| | 2003 | F-Zero AX (Rev B) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004B | 317-0362-COM | 253-5508-0362 |
-|*| 20030611 | F-Zero AX (Rev C) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004C | 317-0362-COM | 253-5508-0362 |
-|*| 20030628 | F-Zero AX (Rev D) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004D | 317-0362-COM | 253-5508-0362 |
-|*| 20031203 | F-Zero AX (Rev E) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004E | 317-0362-COM | 253-5508-0362 |
-| | 2003 | The Key Of Avalon: The Wizard Master (server) | Sega / Hitmaker | GDROM | GDT-0005 | 317-0355-JPN | 253-5508-0355J|
-|*| 20030706 | The Key Of Avalon: The Wizard Master (server, Rev A) | Sega / Hitmaker | GDROM | GDT-0005A | 317-0355-JPN | 253-5508-0355J|
-| | 200307 | The Key Of Avalon: The Wizard Master (server, Rev B) | Sega / Hitmaker | GDROM | GDT-0005B | 317-0355-JPN | 253-5508-0355J|
-|*| 20030721 | The Key Of Avalon: The Wizard Master (server, Rev C) | Sega / Hitmaker | GDROM | GDT-0005C | 317-0355-JPN | 253-5508-0355J|
-| | 2003 | The Key Of Avalon: The Wizard Master (server, Rev D) | Sega / Hitmaker | GDROM | GDT-0005D | 317-0355-JPN | 253-5508-0355J|
-|*| 20030815 | The Key Of Avalon: The Wizard Master (server, Rev E) | Sega / Hitmaker | GDROM | GDT-0005E | 317-0355-JPN | 253-5508-0355J|
-|*| 20030924 | The Key Of Avalon: The Wizard Master (server, Rev F) | Sega / Hitmaker | GDROM | GDT-0005F | 317-0355-JPN | 253-5508-0355J|
-|*| 20031125 | The Key Of Avalon: The Wizard Master (server, Rev G) | Sega / Hitmaker | GDROM | GDT-0005G | 317-0355-JPN | 253-5508-0355J|
-| | 2003 | The Key Of Avalon: The Wizard Master (client) | Sega / Hitmaker | GDROM | GDT-0006 | 317-0355-JPN | 253-5508-0355J|
-|*| 20030706 | The Key Of Avalon: The Wizard Master (client, Rev A) | Sega / Hitmaker | GDROM | GDT-0006A | 317-0355-JPN | 253-5508-0355J|
-| | 200307 | The Key Of Avalon: The Wizard Master (client, Rev B) | Sega / Hitmaker | GDROM | GDT-0006B | 317-0355-JPN | 253-5508-0355J|
-|*| 20030721 | The Key Of Avalon: The Wizard Master (client, Rev C) | Sega / Hitmaker | GDROM | GDT-0006C | 317-0355-JPN | 253-5508-0355J|
-| | 2003 | The Key Of Avalon: The Wizard Master (client, Rev D) | Sega / Hitmaker | GDROM | GDT-0006D | 317-0355-JPN | 253-5508-0355J|
-|*| 20030815 | The Key Of Avalon: The Wizard Master (client, Rev E) | Sega / Hitmaker | GDROM | GDT-0006E | 317-0355-JPN | 253-5508-0355J|
-|*| 20030924 | The Key Of Avalon: The Wizard Master (client, Rev F) | Sega / Hitmaker | GDROM | GDT-0006F | 317-0355-JPN | 253-5508-0355J|
-|*| 20031125 | The Key Of Avalon: The Wizard Master (client, Rev G) | Sega / Hitmaker | GDROM | GDT-0006G | 317-0355-JPN | 253-5508-0355J|
-| | 2003 | F-Zero AX (Asia) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0007 | | |
-| | 2003 | Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu | Sega / Wow Entertainment | GDROM | GDT-0008 | 317-0371-JPN | 253-5508-0371J|
-| | 2003 | Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev A) | Sega / Wow Entertainment | GDROM | GDT-0008A | 317-0371-JPN | 253-5508-0371J|
-|*| 20031010 | Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev B) | Sega / Wow Entertainment | GDROM | GDT-0008B | 317-0371-JPN | 253-5508-0371J|
-|*| 20031027 | Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev C) | Sega / Wow Entertainment | GDROM | GDT-0008C | 317-0371-JPN | 253-5508-0371J|
-| | 2003 | The Key Of Avalon 1.10 | Sega / Hitmaker | GDROM | | 317-0355-JPN | 253-5508-0355J|
-| | 2004 | The Key Of Avalon 1.??: ??? (server) | Sega / Hitmaker | GDROM | GDT-0009 | 317-0355-JPN | 253-5508-0355J|
-|*| 2004 | The Key Of Avalon 1.20: Summon The New Monster (server, Rev A) | Sega / Hitmaker | GDROM | GDT-0009A | 317-0355-JPN | 253-5508-0355J|
-| | 2004 | The Key Of Avalon 1.??: ??? (server, Rev B) | Sega / Hitmaker | GDROM | GDT-0009B | 317-0355-JPN | 253-5508-0355J|
-|*| 20040608 | The Key Of Avalon 1.30: Chaotic Sabbat (server, Rev C) | Sega / Hitmaker | GDROM | GDT-0009C | 317-0355-JPN | 253-5508-0355J|
-| | 2004 | The Key Of Avalon 1.??: ??? (client) | Sega / Hitmaker | GDROM | GDT-0010 | 317-0355-JPN | 253-5508-0355J|
-|*| 2004 | The Key Of Avalon 1.20: Summon The New Monster (client, Rev A) | Sega / Hitmaker | GDROM | GDT-0010A | 317-0355-JPN | 253-5508-0355J|
-| | 2004 | The Key Of Avalon 1.??: ??? (client, Rev B) | Sega / Hitmaker | GDROM | GDT-0010B | 317-0355-JPN | 253-5508-0355J|
-|*| 20040608 | The Key Of Avalon 1.30: Chaotic Sabbat (client, Rev C) | Sega / Hitmaker | GDROM | GDT-0010C | 317-0355-JPN | 253-5508-0355J|
-|*| 20031110 | Firmware Update | Sega | GDROM | GDT-0011 | 317-0371-JPN | |
-|*| 20040315 | Virtua Striker 2002 (Type 3) | Sega | GDROM | GDT-0012 | 317-0337-EXP | |
-| | 2004 | Virtua Striker 4 (Japan) | Sega | GDROM | GDT-0013 | 317-0391-JPN | |
-| | 2004 | Virtua Striker 4 (Japan, Rev A) | Sega | GDROM | GDT-0013A | 317-0391-JPN | |
-| | 2004 | Virtua Striker 4 (Japan, Rev B) | Sega | GDROM | GDT-0013B | 317-0391-JPN | |
-|*| 20040913 | Virtua Striker 4 (Japan, Rev C) | Sega | GDROM | GDT-0013C | 317-0391-JPN | |
-| | 2004 | Virtua Striker 4 (Japan, Rev D) | Sega | GDROM | GDT-0013D | 317-0391-JPN | |
-|*| 20050217 | Virtua Striker 4 (Japan, Rev E) | Sega | GDROM | GDT-0013E | 317-0391-JPN | |
-|*| 20041203 | Virtua Striker 4 (Asia) | Sega | GDROM | GDT-0014 | 317-0392-EXP | 253-5508-0392E|
-| | 2004 | Virtua Striker 4 (Asia, Rev A) | Sega | GDROM | GDT-0014A | 317-0392-EXP | 253-5508-0392E|
-|*| 20050523 | Virtua Striker 4 (Asia, Rev B) | Sega | GDROM | GDT-0014B | 317-0392-EXP | 253-5508-0392E|
-|*| 20041202 | Virtua Striker 4 (Export) | Sega | GDROM | GDT-0015 | 317-0393-EXP | |
-|*| 20050411 | Virtua Striker 4 (Export, Rev A) | Sega | GDROM | GDT-0015A | 317-0393-EXP | |
-| | 20041202 | Virtua Striker 4 (Export) | Sega | CF | MDA-G0016 | 317-0393-EXP | |
-| | 2004 | The Key Of Avalon 2: Eutaxy Commandment (server) | Sega / Hitmaker | GDROM | GDT-0016 | 317-0403-JPN | 253-5508-0403J|
-| | 2004 | The Key Of Avalon 2: Eutaxy Commandment (client) | Sega / Hitmaker | GDROM | GDT-0017 | 317-0403-JPN | 253-5508-0403J|
-| | 2004 | The Key Of Avalon 2: Eutaxy Commandment (client, Rev A) | Sega / Hitmaker | GDROM | GDT-0017A | 317-0403-JPN | 253-5508-0403J|
-|*| 20041102 | The Key Of Avalon 2: Eutaxy Commandment (client, Rev B) | Sega / Hitmaker | GDROM | GDT-0017B | 317-0403-JPN | 253-5508-0403J|
-|*| 2003 | F-Zero AX - Monster Ride Cycraft Edition | Sega / Amusement Vision / Nintendo | Cart | 837-14343-4S1 | 317-0373-COM | 253-5508-0373 |
-|*| 2005 | Mario Kart Arcade GP (Japan, MKA1 Ver.A1) | Namco / Nintendo | Cart | 837-14343-4T1 | 317-5109-COM | 253-5509-5109 |
-| | 2005 | The Key Of Avalon 2.5: War of the Key (server) | Sega / Hitmaker | GDROM | GDT-0018 | 317-0403-JPN | 253-5508-0403J|
-|*| 20050518 | The Key Of Avalon 2.5: War of the Key (server, Rev A) | Sega / Hitmaker | GDROM | GDT-0018A | 317-0403-JPN | 253-5508-0403J|
-|*| 20050805 | The Key Of Avalon 2.5: War of the Key (server, Rev B) | Sega / Hitmaker | GDROM | GDT-0018B | 317-0403-JPN | 253-5508-0403J|
-| | 2005 | The Key Of Avalon 2.5: War of the Key (client) | Sega / Hitmaker | GDROM | GDT-0019 | 317-0403-JPN | 253-5508-0403J|
-|*| 20050518 | The Key Of Avalon 2.5: War of the Key (client, Rev A) | Sega / Hitmaker | GDROM | GDT-0019A | 317-0403-JPN | 253-5508-0403J|
-|*| 20050805 | The Key Of Avalon 2.5: War of the Key (client, Rev B) | Sega / Hitmaker | GDROM | GDT-0019B | 317-0403-JPN | 253-5508-0403J|
-| | 2006 | Virtua Striker 4 Ver.2006 (Japan) | Sega | GDROM | GDT-0020 | 317-0432-JPN | 253-5508-0432J|
-| | 2006 | Virtua Striker 4 Ver.2006 (Japan, Rev A) | Sega | GDROM | GDT-0020A | 317-0432-JPN | 253-5508-0432J|
-|*| 20060425 | Virtua Striker 4 Ver.2006 (Japan, Rev B) | Sega | GDROM | GDT-0020B | 317-0432-JPN | 253-5508-0432J|
-| | 2006 | Virtua Striker 4 Ver.2006 (Japan, Rev C) | Sega | GDROM | GDT-0020C | 317-0432-JPN | 253-5508-0432J|
-|*| 20061019 | Virtua Striker 4 Ver.2006 (Japan, Rev D) | Sega | GDROM | GDT-0020D | 317-0432-JPN | 253-5508-0432J|
-|*| 20060131 | Virtua Striker 4 Ver.2006 (Export) | Sega | GDROM | GDT-0021 | 317-0433-EXP | 253-5508-0433E|
-| | 2006 | Virtua Striker 4 Ver.2006 (Export) | Sega | CF | MDA-G00?? | 317-0433-EXP | 253-5508-0433E|
-| | 2006 | Triforce Firmware Update for Compact Flash Box | Sega | GDROM | GDT-0022 | 317-0567-COM | |
-|*| 20090331 | Triforce Firmware Update for Compact Flash Box (Rev A) | Sega | GDROM | GDT-0022A | 317-0567-COM | |
-|*| 2007 | Mario Kart Arcade GP 2 (Japan, MK21 Ver.A) | Namco / Nintendo | Cart | 837-14343-R4S0 | 317-5128-COM | 253-5509-5128 |
-|*| 2007 | Mario Kart Arcade GP 2 (Japan, MK21 Ver.A, alt dump) | Namco / Nintendo | Cart | 837-14343-R4S0 | 317-5128-COM | 253-5509-5128 |
-+-+----------+----------------------------------------------------------------------+-------------------------------------+-------|----------------+--------------+---------------|
+ Year Game Manufacturer / Developer Media Number Key Chip PIC16C621A
++-+------+-----------------------------------------------------------------+-------------------------------------+-------|----------------+--------------|---------------|
+| | 2002 | Starfox Armada (planned, but not released) | Namco / Nintendo | Cart? | | | |
+|*| 2002 | Virtua Striker 2002 (Japan) | Sega / Amusement Vision | GDROM | GDT-0001 | 317-0337-JPN | |
+|*| 2002 | Virtua Striker 2002 (Export) | Sega / Amusement Vision | GDROM | GDT-0002 | 317-0337-EXP | |
+| | 2003 | F-Zero AX | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004 | 317-0362-COM | 253-5508-0362 |
+| | 2003 | F-Zero AX (Rev A) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004A | 317-0362-COM | 253-5508-0362 |
+| | 2003 | F-Zero AX (Rev B) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004B | 317-0362-COM | 253-5508-0362 |
+|*| 2003 | F-Zero AX (Rev C) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004C | 317-0362-COM | 253-5508-0362 |
+| | 2003 | F-Zero AX (Rev D) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004D | 317-0362-COM | 253-5508-0362 |
+|*| 2003 | F-Zero AX (Rev E) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004E | 317-0362-COM | 253-5508-0362 |
+| | 2003 | The Key Of Avalon: The Wizard Master (server) | Sega / Hitmaker | GDROM | GDT-0005 | 317-0355-JPN | 253-5508-0355J|
+| | 2003 | The Key Of Avalon: The Wizard Master (server) (Rev A) | Sega / Hitmaker | GDROM | GDT-0005A | 317-0355-JPN | 253-5508-0355J|
+| | 2003 | The Key Of Avalon: The Wizard Master (server) (Rev B) | Sega / Hitmaker | GDROM | GDT-0005B | 317-0355-JPN | 253-5508-0355J|
+|*| 2003 | The Key Of Avalon: The Wizard Master (server) (Rev C) | Sega / Hitmaker | GDROM | GDT-0005C | 317-0355-JPN | 253-5508-0355J|
+| | 2003 | The Key Of Avalon: The Wizard Master (server) (Rev D) | Sega / Hitmaker | GDROM | GDT-0005D | 317-0355-JPN | 253-5508-0355J|
+|*| 2003 | The Key Of Avalon: The Wizard Master (server) (Rev E) | Sega / Hitmaker | GDROM | GDT-0005E | 317-0355-JPN | 253-5508-0355J|
+|*| 2003 | The Key Of Avalon: The Wizard Master (server) (Rev F) | Sega / Hitmaker | GDROM | GDT-0005F | 317-0355-JPN | 253-5508-0355J|
+|*| 2003 | The Key Of Avalon: The Wizard Master (server) (Rev G) | Sega / Hitmaker | GDROM | GDT-0005G | 317-0355-JPN | 253-5508-0355J|
+| | 2003 | The Key Of Avalon: The Wizard Master (client) | Sega / Hitmaker | GDROM | GDT-0006 | 317-0355-JPN | 253-5508-0355J|
+| | 2003 | The Key Of Avalon: The Wizard Master (client) (Rev A) | Sega / Hitmaker | GDROM | GDT-0006A | 317-0355-JPN | 253-5508-0355J|
+| | 2003 | The Key Of Avalon: The Wizard Master (client) (Rev B) | Sega / Hitmaker | GDROM | GDT-0006B | 317-0355-JPN | 253-5508-0355J|
+|*| 2003 | The Key Of Avalon: The Wizard Master (client) (Rev C) | Sega / Hitmaker | GDROM | GDT-0006C | 317-0355-JPN | 253-5508-0355J|
+| | 2003 | The Key Of Avalon: The Wizard Master (client) (Rev D) | Sega / Hitmaker | GDROM | GDT-0006D | 317-0355-JPN | 253-5508-0355J|
+|*| 2003 | The Key Of Avalon: The Wizard Master (client) (Rev E) | Sega / Hitmaker | GDROM | GDT-0006E | 317-0355-JPN | 253-5508-0355J|
+|*| 2003 | The Key Of Avalon: The Wizard Master (client) (Rev F) | Sega / Hitmaker | GDROM | GDT-0006F | 317-0355-JPN | 253-5508-0355J|
+|*| 2003 | The Key Of Avalon: The Wizard Master (client) (Rev G) | Sega / Hitmaker | GDROM | GDT-0006G | 317-0355-JPN | 253-5508-0355J|
+| | 2003 | Gekitou Pro Yakyuu Mizushima Shinji All Stars | Sega / Wow Entertainment | GDROM | GDT-0008 | 317-0371-JPN | |
+| | 2003 | Gekitou Pro Yakyuu Mizushima Shinji All Stars (Rev A) | Sega / Wow Entertainment | GDROM | GDT-0008A | 317-0371-JPN | |
+|*| 2003 | Gekitou Pro Yakyuu Mizushima Shinji All Stars (Rev B) | Sega / Wow Entertainment | GDROM | GDT-0008B | 317-0371-JPN | |
+|*| 2003 | Gekitou Pro Yakyuu Mizushima Shinji All Stars (Rev C) | Sega / Wow Entertainment | GDROM | GDT-0008C | 317-0371-JPN | |
+| | 2003 | The Key Of Avalon 1.10 | Sega / Hitmaker | GDROM | | 317-0355-JPN | 253-5508-0355J|
+| | 2004 | The Key Of Avalon 1.??: ??? (server) | Sega / Hitmaker | GDROM | GDT-0009 | 317-0355-JPN | 253-5508-0355J|
+|*| 2004 | The Key Of Avalon 1.20: Summon The New Monster (server) (Rev A) | Sega / Hitmaker | GDROM | GDT-0009A | 317-0355-JPN | 253-5508-0355J|
+| | 2004 | The Key Of Avalon 1.??: ??? (server) (Rev B) | Sega / Hitmaker | GDROM | GDT-0009B | 317-0355-JPN | 253-5508-0355J|
+|*| 2004 | The Key Of Avalon 1.30: Chaotic Sabbat (server) (Rev C) | Sega / Hitmaker | GDROM | GDT-0009C | 317-0355-JPN | 253-5508-0355J|
+| | 2004 | The Key Of Avalon 1.??: ??? (client) | Sega / Hitmaker | GDROM | GDT-0010 | 317-0355-JPN | 253-5508-0355J|
+|*| 2004 | The Key Of Avalon 1.20: Summon The New Monster (client) (Rev A) | Sega / Hitmaker | GDROM | GDT-0010A | 317-0355-JPN | 253-5508-0355J|
+| | 2004 | The Key Of Avalon 1.??: ??? (client) (Rev B) | Sega / Hitmaker | GDROM | GDT-0010B | 317-0355-JPN | 253-5508-0355J|
+|*| 2004 | The Key Of Avalon 1.30: Chaotic Sabbat (client) (Rev C) | Sega / Hitmaker | GDROM | GDT-0010C | 317-0355-JPN | 253-5508-0355J|
+|*| 2004 | Firmware Update | Sega | GDROM | GDT-0011 | 317-0371-JPN | |
+| | 2004 | Virtua Striker 2002 (Export) | Sega | GDROM | GDT-0012 | | |
+| | 2004 | Virtua Striker 4 (Japan) | Sega | GDROM | GDT-0013 | 317-0391-JPN | |
+| | 2004 | Virtua Striker 4 (Japan) (Rev A) | Sega | GDROM | GDT-0013A | 317-0391-JPN | |
+| | 2004 | Virtua Striker 4 (Japan) (Rev B) | Sega | GDROM | GDT-0013B | 317-0391-JPN | |
+| | 2004 | Virtua Striker 4 (Japan) (Rev C) | Sega | GDROM | GDT-0013C | 317-0391-JPN | |
+| | 2004 | Virtua Striker 4 (Japan) (Rev D) | Sega | GDROM | GDT-0013D | 317-0391-JPN | |
+|*| 2004 | Virtua Striker 4 (Japan) (Rev E) | Sega | GDROM | GDT-0013E | 317-0391-JPN | |
+|*| 2004 | Virtua Striker 4 (Export) | Sega | GDROM | GDT-0014 | 317-0392-EXP | 253-5508-0392E|
+|*| 2004 | Virtua Striker 4 (Export) | Sega | GDROM | GDT-0015 | 317-0393-EXP | |
+| | 2004 | Virtua Striker 4 (Export) | Sega | CF | MDA-G0016 | 317-0393-EXP | |
+| | 2004 | The Key Of Avalon 2: Eutaxy Commandment (server) | Sega / Hitmaker | GDROM | GDT-0016 | 317-0403-JPN | 253-5508-0403J|
+| | 2004 | The Key Of Avalon 2: Eutaxy Commandment (client) | Sega / Hitmaker | GDROM | GDT-0017 | 317-0403-JPN | 253-5508-0403J|
+| | 2004 | The Key Of Avalon 2: Eutaxy Commandment (client) (Rev A) | Sega / Hitmaker | GDROM | GDT-0017A | 317-0403-JPN | 253-5508-0403J|
+|*| 2004 | The Key Of Avalon 2: Eutaxy Commandment (client) (Rev B) | Sega / Hitmaker | GDROM | GDT-0017B | 317-0403-JPN | 253-5508-0403J|
+|*| 2003 | F-Zero AX - Monster Ride Cycraft Edition | Sega / Amusement Vision / Nintendo | Cart | 837-14343-4S1 | 317-0373-COM | 253-5508-0373 |
+|*| 2005 | Mario Kart Arcade GP (Japan, MKA1 Ver.A1) | Namco / Nintendo | Cart | 837-14343-4T1 | 317-5109-COM | 253-5509-5109 |
+| | 2005 | The Key Of Avalon 2.5: War of the Key (server) | Sega / Hitmaker | GDROM | GDT-0018 | 317-0403-JPN | 253-5508-0403J|
+|*| 2005 | The Key Of Avalon 2.5: War of the Key (server) (Rev A) | Sega / Hitmaker | GDROM | GDT-0018A | 317-0403-JPN | 253-5508-0403J|
+|*| 2005 | The Key Of Avalon 2.5: War of the Key (server) (Rev B) | Sega / Hitmaker | GDROM | GDT-0018B | 317-0403-JPN | 253-5508-0403J|
+| | 2005 | The Key Of Avalon 2.5: War of the Key (client) | Sega / Hitmaker | GDROM | GDT-0019 | 317-0403-JPN | 253-5508-0403J|
+|*| 2005 | The Key Of Avalon 2.5: War of the Key (client) (Rev A) | Sega / Hitmaker | GDROM | GDT-0019A | 317-0403-JPN | 253-5508-0403J|
+|*| 2005 | The Key Of Avalon 2.5: War of the Key (client) (Rev B) | Sega / Hitmaker | GDROM | GDT-0019B | 317-0403-JPN | 253-5508-0403J|
+| | 2006 | Virtua Striker 4 Ver.2006 (Japan) | Sega | GDROM | GDT-0020 | 317-0432-JPN | 253-5508-0432J|
+| | 2006 | Virtua Striker 4 Ver.2006 (Japan) (Rev A) | Sega | GDROM | GDT-0020A | 317-0432-JPN | 253-5508-0432J|
+|*| 2006 | Virtua Striker 4 Ver.2006 (Japan) (Rev B) | Sega | GDROM | GDT-0020B | 317-0432-JPN | 253-5508-0432J|
+| | 2006 | Virtua Striker 4 Ver.2006 (Japan) (Rev C) | Sega | GDROM | GDT-0020C | 317-0432-JPN | 253-5508-0432J|
+|*| 2006 | Virtua Striker 4 Ver.2006 (Japan) (Rev D) | Sega | GDROM | GDT-0020D | 317-0432-JPN | 253-5508-0432J|
+|*| 2006 | Virtua Striker 4 Ver.2006 (Export) | Sega | GDROM | GDT-0021 | 317-0433-EXP | 253-5508-0433E|
+| | 2006 | Virtua Striker 4 Ver.2006 (Export) | Sega | CF | MDA-G00?? | 317-0433-EXP | 253-5508-0433E|
+| | 2006 | Triforce Firmware Update for Compact Flash Box | Sega | GDROM | GDT-0022 | 317-0567-COM | |
+|*| 2006 | Triforce Firmware Update for Compact Flash Box (Rev A) | Sega | GDROM | GDT-0022A | 317-0567-COM | |
+|*| 2007 | Mario Kart Arcade GP 2 (Japan, MK21 Ver.A) | Namco / Nintendo | Cart | 837-14343-R4S0 | 317-5128-COM | 253-5509-5128 |
+|*| 2007 | Mario Kart Arcade GP 2 (Japan, MK21 Ver.A, alt dump) | Namco / Nintendo | Cart | 837-14343-R4S0 | 317-5128-COM | 253-5509-5128 |
++-+------+-----------------------------------------------------------------+-------------------------------------+-------|----------------+--------------+---------------|
* denotes these games are archived.
! security PIC is not dumped
@@ -248,7 +243,7 @@ ROM Board (attached to CN3 of Media Board, ONLY for use with Namco ROM cart vers
837-14343 SEGA 2002
171-8228D
-MDK332V-0
+837-14343R4S0 (sticker)
|---------------|
| FLASH.IC6 |
| *FLASH.8S |
@@ -275,17 +270,7 @@ Notes:
FLASH.IC9 - Macronix 29LV400CTTC-70G 4MBit (512k x8 / 256k x16) 3V FLASH ROM (TSOP48)
CN1S - Connector joining to Media Board (located under the PCB)
CN2 - 10-pin JTAG Connector for reprogramming the FPGA (all JTAG connectors and required support parts are not populated)
- ProASIC - Actel ProASIC Plus APA075 TQG100 75000 Gate FPGA stamped '315-xxxx' (TQFP100)
-
-
-Games known to use this PCB include....
- NANDROMs FLASH APA075 sticker
-Game # TSOP48 IC9# IC11S# 837-14343 Notes
---------------------------------------------------------------------------------------------------------------------------------------------------
-F-Zero AX Monster Ride 4 (1Gb) present 315-6362 -4S1 Cart: 842-06CN4000
-Mario Kart Arcade Grand Prix (Japan, MKA1 Ver.A1) 4 (1Gb) present 315-6362 -4T1 requires V257 STR PCB steering wheel board
-Mario Kart Arcade Grand Prix 2 (Japan, MK21 Ver.A) 8 (512Mb) present 315-6419B -R4S0
-Mario Kart Arcade Grand Prix 2 (Japan, MK21 Ver.A, alt dump) 8 (512Mb) present 315-6419B -R4S0
+ ProASIC - Actel ProASIC Plus APA075 TQG100 75000 Gate FPGA stamped '315-6419B' (TQFP100)
Main Board (GameCube)
@@ -586,24 +571,25 @@ void triforce_state::machine_start()
descrambler(&rom[0x100], 0x1afe00);
}
-void triforce_state::triforce_base(machine_config &config)
-{
+MACHINE_CONFIG_START(triforce_state::triforce_base)
+
/* basic machine hardware */
- PPC603(config, m_maincpu, 64000000); /* Correct CPU is a PowerPC 750 (what Apple called "G3") with paired-single vector instructions added */
- m_maincpu->set_addrmap(AS_PROGRAM, &triforce_state::gc_map);
+ MCFG_DEVICE_ADD("maincpu", PPC603, 64000000) /* Correct CPU is a PowerPC 750 (what Apple called "G3") with paired-single vector instructions added */
+ MCFG_DEVICE_PROGRAM_MAP(gc_map)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(640, 480);
- screen.set_visarea(0, 639, 0, 479);
- screen.set_screen_update(FUNC(triforce_state::screen_update_triforce));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
+ MCFG_SCREEN_UPDATE_DRIVER(triforce_state, screen_update_triforce)
- PALETTE(config, "palette").set_entries(65536);
-}
+ MCFG_PALETTE_ADD("palette", 65536)
+
+MACHINE_CONFIG_END
void triforce_state::triforcegd(machine_config &config)
{
@@ -683,29 +669,6 @@ ROM_END
/*
Title F-ZERO AX
-Media ID A677
-Media Config GD-ROM1/1
-Regions J
-Peripheral String 0000000
-Product Number GDT-0004D
-Version V4.000
-Release Date 20030628
-
-PIC16C621A-20/P (317-0362-COM)
-Sticker: 253-5508-0362
-*/
-ROM_START( fzeroaxd )
- TRIFORCE_BIOS
-
- DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "gdt-0004d", 0, SHA1(e98498809485d0469098792e9a77aafe37c7086c) )
-
- ROM_REGION( 0x4000, "pic", ROMREGION_ERASE)
- ROM_LOAD( "317-0362-com.pic", 0x000000, 0x004000, CRC(23d83347) SHA1(ca5a629e7405710fd4fa0af7c668192bdf8ca725) )
-ROM_END
-
-/*
-Title F-ZERO AX
Media ID 06BB
Media Config GD-ROM1/1
Regions J
@@ -727,16 +690,6 @@ ROM_START( fzeroaxc )
ROM_LOAD( "317-0362-com.pic", 0x000000, 0x004000, CRC(23d83347) SHA1(ca5a629e7405710fd4fa0af7c668192bdf8ca725) )
ROM_END
-ROM_START( avalonsa )
- TRIFORCE_BIOS
-
- DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "gdt-0005a", 0, SHA1(807ecf820e8054978dd637b413053dc3279c4bf4) )
-
- ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
- ROM_LOAD("317-0355-jpn.data", 0x00, 0x50, CRC(9b9db9d8) SHA1(60aab36fcfd7a2850b2947effea70e44a06d1f78) )
-ROM_END
-
ROM_START( avalonsc )
TRIFORCE_BIOS
@@ -777,16 +730,6 @@ ROM_START( avalons )
ROM_LOAD("317-0355-jpn.data", 0x00, 0x50, CRC(9b9db9d8) SHA1(60aab36fcfd7a2850b2947effea70e44a06d1f78) )
ROM_END
-ROM_START( avalonca )
- TRIFORCE_BIOS
-
- DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "gdt-0006a", 0, SHA1(cef39bcc6351d597474674699a193fa115a51447) )
-
- ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
- ROM_LOAD("317-0355-jpn.data", 0x00, 0x50, CRC(9b9db9d8) SHA1(60aab36fcfd7a2850b2947effea70e44a06d1f78) )
-ROM_END
-
ROM_START( avaloncc )
TRIFORCE_BIOS
@@ -914,26 +857,6 @@ ROM_START( tfupdate )
ROM_LOAD("317-0371-jpn.data", 0x00, 0x50, CRC(08434e5e) SHA1(2121999e851f6f62ab845e6de40849d850ac9d1c) )
ROM_END
-ROM_START( vs2002t3 )
- TRIFORCE_BIOS
-
- DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "gdt-0012", 0, SHA1(d533b99edea5814d446e80744166f3f1630c9d98) )
-
- ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
- ROM_LOAD("317-0337-exp.data", 0x00, 0x50, CRC(aa6be604) SHA1(fabc43ecfb7ddf1d5a87f10884852027d6f4773b) )
-ROM_END
-
-ROM_START( vs4jc )
- TRIFORCE_BIOS
-
- DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "gdt-0013c", 0, SHA1(9010371eac31bd8d211838ab7b73fc4887ee0b1c) )
-
- ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
- ROM_LOAD("317-0391-jpn.data", 0x00, 0x50, CRC(0f2dbb73) SHA1(7b9d66abe85303b3e26b442a3a63feca1a0edbdb) )
-ROM_END
-
/*
Title VIRTUA STRIKER 4
Media ID 7BC9
@@ -958,21 +881,11 @@ ROM_START( vs4j )
ROM_LOAD("317-0391-jpn.data", 0x00, 0x50, CRC(0f2dbb73) SHA1(7b9d66abe85303b3e26b442a3a63feca1a0edbdb) )
ROM_END
-ROM_START( vs4eo )
- TRIFORCE_BIOS
-
- DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "gdt-0014", 0, SHA1(e7f7304b1c9075f37b8fed4e8d3f22f7fc0ae5ab) )
-
- ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
- ROM_LOAD("317-0392-exp.pic", 0x00, 0x4000, CRC(c8931261) SHA1(063faea92a987a5b3dc96455494cf5fc13052428) )
-ROM_END
-
ROM_START( vs4e )
TRIFORCE_BIOS
DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "gdt-0014b", 0, SHA1(5d038a76a101fafcab5a514d3911f727becd7091) )
+ DISK_IMAGE_READONLY( "gdt-0014", 0, SHA1(e7f7304b1c9075f37b8fed4e8d3f22f7fc0ae5ab) )
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
ROM_LOAD("317-0392-exp.pic", 0x00, 0x4000, CRC(c8931261) SHA1(063faea92a987a5b3dc96455494cf5fc13052428) )
@@ -998,21 +911,11 @@ PIC
255-5508-393E
317-0393-EXP
*/
-ROM_START( vs4o )
- TRIFORCE_BIOS
-
- DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "gdt-0015", 0, SHA1(3fa43fdab579b657cb8aeebb315d98cf0d24f921) )
-
- ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
- ROM_LOAD("317-0393-exp.data", 0x00, 0x50, CRC(2dcfecd7) SHA1(d805168e1564051ae5c47876ade2c9843253c6b4) )
-ROM_END
-
ROM_START( vs4 )
TRIFORCE_BIOS
DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "gdt-0015a", 0, SHA1(471cdaa3a14c37249f2dd47f6a661e325dd1cf8f) )
+ DISK_IMAGE_READONLY( "gdt-0015", 0, SHA1(3fa43fdab579b657cb8aeebb315d98cf0d24f921) )
ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
ROM_LOAD("317-0393-exp.data", 0x00, 0x50, CRC(2dcfecd7) SHA1(d805168e1564051ae5c47876ade2c9843253c6b4) )
@@ -1247,75 +1150,72 @@ ROM_END
/*Triforce*/GAME( 2002, triforce, 0, triforce_base, triforce, triforce_state, empty_init, ROT0, "Sega", "Triforce Bios", MACHINE_IS_SKELETON|MACHINE_IS_BIOS_ROOT )
/* GDT-xxxx (Sega GD-ROM games) */
-/* 0001 */ GAME( 2002, vs2002j, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Amusement Vision", "Virtua Striker 2002 (Japan) (GDT-0001)", MACHINE_IS_SKELETON )
-/* 0002 */ GAME( 2002, vs2002ex, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Amusement Vision", "Virtua Striker 2002 (Export) (GDT-0002)", MACHINE_IS_SKELETON )
+/* 0001 */ GAME( 2002, vs2002j, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Amusement Vision", "Virtua Striker 2002 (GDT-0001)", MACHINE_IS_SKELETON )
+/* 0002 */ GAME( 2002, vs2002ex, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Amusement Vision", "Virtua Striker 2002 (GDT-0002)", MACHINE_IS_SKELETON )
// 0003
// 0004 GAME( 2003, fzeroaxo, fzeroax, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (GDT-0004)", MACHINE_IS_SKELETON )
// 0004A GAME( 2003, fzeroaxa, fzeroax, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev A) (GDT-0004A)", MACHINE_IS_SKELETON )
// 0004B GAME( 2003, fzeroaxb, fzeroax, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev B) (GDT-0004B)", MACHINE_IS_SKELETON )
/* 0004C */ GAME( 2003, fzeroaxc, fzeroax, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev C) (GDT-0004C)", MACHINE_IS_SKELETON )
-/* 0004D */ GAME( 2003, fzeroaxd, fzeroax, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev D) (GDT-0004D)", MACHINE_IS_SKELETON )
+// 0004D GAME( 2003, fzeroaxd, fzeroax, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev D) (GDT-0004D)", MACHINE_IS_SKELETON )
/* 0004E */ GAME( 2003, fzeroax, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev E) (GDT-0004E)", MACHINE_IS_SKELETON )
// 0005 GAME( 2003, avalonso, avalons, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (GDT-0005)", MACHINE_IS_SKELETON )
-/* 0005A */ GAME( 2003, avalonsa, avalons, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server, Rev A) (GDT-0005A)", MACHINE_IS_SKELETON )
-// 0005B GAME( 2003, avalonsb, avalons, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server, Rev B) (GDT-0005B)", MACHINE_IS_SKELETON )
-/* 0005C */ GAME( 2003, avalonsc, avalons, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server, Rev C) (GDT-0005C)", MACHINE_IS_SKELETON )
-// 0005D GAME( 2003, avalonsd, avalons, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server, Rev D) (GDT-0005D)", MACHINE_IS_SKELETON )
-/* 0005E */ GAME( 2003, avalonse, avalons, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server, Rev E) (GDT-0005E)", MACHINE_IS_SKELETON )
-/* 0005F */ GAME( 2003, avalonsf, avalons, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server, Rev F) (GDT-0005F)", MACHINE_IS_SKELETON )
-/* 0005G */ GAME( 2003, avalons, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server, Rev G) (GDT-0005G)", MACHINE_IS_SKELETON )
+// 0005A GAME( 2003, avalonsa, avalons, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev A) (GDT-0005A)", MACHINE_IS_SKELETON )
+// 0005B GAME( 2003, avalonsb, avalons, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev B) (GDT-0005B)", MACHINE_IS_SKELETON )
+/* 0005C */ GAME( 2003, avalonsc, avalons, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev C) (GDT-0005C)", MACHINE_IS_SKELETON )
+// 0005D GAME( 2003, avalonsd, avalons, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev D) (GDT-0005D)", MACHINE_IS_SKELETON )
+/* 0005E */ GAME( 2003, avalonse, avalons, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev E) (GDT-0005E)", MACHINE_IS_SKELETON )
+/* 0005F */ GAME( 2003, avalonsf, avalons, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev F) (GDT-0005F)", MACHINE_IS_SKELETON )
+/* 0005G */ GAME( 2003, avalons, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev G) (GDT-0005G)", MACHINE_IS_SKELETON )
// 0006 GAME( 2003, avalonco, avalonc, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (GDT-0006)", MACHINE_IS_SKELETON )
-/* 0006A */ GAME( 2003, avalonca, avalonc, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client, Rev A) (GDT-0006A)", MACHINE_IS_SKELETON )
-// 0006B GAME( 2003, avaloncb, avalonc, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client, Rev B) (GDT-0006B)", MACHINE_IS_SKELETON )
-/* 0006C */ GAME( 2003, avaloncc, avalonc, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client, Rev C) (GDT-0006C)", MACHINE_IS_SKELETON )
-// 0006D GAME( 2003, avaloncd, avalonc, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client, Rev D) (GDT-0006D)", MACHINE_IS_SKELETON )
-/* 0006E */ GAME( 2003, avalonce, avalonc, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client, Rev E) (GDT-0006E)", MACHINE_IS_SKELETON )
-/* 0006F */ GAME( 2003, avaloncf, avalonc, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client, Rev F) (GDT-0006F)", MACHINE_IS_SKELETON )
-/* 0006G */ GAME( 2003, avalonc, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client, Rev G) (GDT-0006G)", MACHINE_IS_SKELETON )
-// 0007 F-Zero AX (Asia)
+// 0006A GAME( 2003, avalonca, avalonc, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev A) (GDT-0006A)", MACHINE_IS_SKELETON )
+// 0006B GAME( 2003, avaloncb, avalonc, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev B) (GDT-0006B)", MACHINE_IS_SKELETON )
+/* 0006C */ GAME( 2003, avaloncc, avalonc, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev C) (GDT-0006C)", MACHINE_IS_SKELETON )
+// 0006D GAME( 2003, avaloncd, avalonc, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev D) (GDT-0006D)", MACHINE_IS_SKELETON )
+/* 0006E */ GAME( 2003, avalonce, avalonc, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev E) (GDT-0006E)", MACHINE_IS_SKELETON )
+/* 0006F */ GAME( 2003, avaloncf, avalonc, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev F) (GDT-0006F)", MACHINE_IS_SKELETON )
+/* 0006G */ GAME( 2003, avalonc, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev G) (GDT-0006G)", MACHINE_IS_SKELETON )
+// 0007
// 0008 GAME( 2003, gekpuryao,gekpurya, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Wow Entertainment", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (GDT-0008)", MACHINE_IS_SKELETON )
// 0008A GAME( 2003, gekpuryaa,gekpurya, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Wow Entertainment", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev A) (GDT-0008A)", MACHINE_IS_SKELETON )
/* 0008B */ GAME( 2003, gekpuryb, gekpurya, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Wow Entertainment", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev B) (GDT-0008B)", MACHINE_IS_SKELETON )
/* 0008C */ GAME( 2003, gekpurya, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Wow Entertainment", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev C) (GDT-0008C)", MACHINE_IS_SKELETON )
// 0009 GAME( 2004, avalns11, avalns13, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (server) (GDT-0009)", MACHINE_IS_SKELETON )
-/* 0009A */ GAME( 2004, avalns12, avalns13, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.2 - Summon The New Monsters (server, Rev A) (GDT-0009A)", MACHINE_IS_SKELETON )
-// 0009B GAME( 2004, avals13b, avalns13, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (server, Rev B) (GDT-0009B)", MACHINE_IS_SKELETON )
-/* 0009C */ GAME( 2004, avalns13, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.3 - Chaotic Sabbat (server, Rev C) (GDT-0009C)", MACHINE_IS_SKELETON )
+/* 0009A */ GAME( 2004, avalns12, avalns13, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.2 - Summon The New Monsters (server) (Rev A) (GDT-0009A)", MACHINE_IS_SKELETON )
+// 0009B GAME( 2004, avals13b, avalns13, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (server) (Rev B) (GDT-0009B)", MACHINE_IS_SKELETON )
+/* 0009C */ GAME( 2004, avalns13, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.3 - Chaotic Sabbat (server) (Rev C) (GDT-0009C)", MACHINE_IS_SKELETON )
// 0010 GAME( 2004, avalnc11, avalnc13, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (client) (GDT-0010)", MACHINE_IS_SKELETON )
-/* 0010A */ GAME( 2004, avalnc12, avalnc13, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.2 - Summon The New Monsters (client, Rev A) (GDT-0010A)", MACHINE_IS_SKELETON )
-// 0010B GAME( 2004, avalc13b, avalnc13, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (client, Rev B) (GDT-0010B)", MACHINE_IS_SKELETON )
-/* 0010C */ GAME( 2004, avalnc13, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.3 - Chaotic Sabbat (client, Rev C) (GDT-0010C)", MACHINE_IS_SKELETON )
-/* 0011 */ GAME( 2003, tfupdate, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Triforce DIMM Updater (3.17) (GDT-0011)", MACHINE_IS_SKELETON )
-/* 0012 */ GAME( 2004, vs2002t3, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Amusement Vision", "Virtua Striker 2002 (Type 3) (GDT-0012)", MACHINE_IS_SKELETON )
-// 0013 GAME( 2004, vs4jo, vs4j, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Japan) (GDT-0013)", MACHINE_IS_SKELETON )
-// 0013A GAME( 2004, vs4ja, vs4j, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Japan, Rev A) (GDT-0013A)", MACHINE_IS_SKELETON )
-// 0013B GAME( 2004, vs4jb, vs4j, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Japan, Rev B) (GDT-0013B)", MACHINE_IS_SKELETON )
-/* 0013C */ GAME( 2004, vs4jc, vs4j, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Japan, Rev C) (GDT-0013C)", MACHINE_IS_SKELETON )
-// 0013D GAME( 2004, vs4jd, vs4j, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Japan, Rev D) (GDT-0013D)", MACHINE_IS_SKELETON )
-/* 0013E */ GAME( 2005, vs4j, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Japan, Rev E) (GDT-0013E)", MACHINE_IS_SKELETON )
-/* 0014 */ GAME( 2004, vs4eo, vs4, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Asia) (GDT-0014)", MACHINE_IS_SKELETON )
-// 0014A GAME( 2004, vs4ea, vs4, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Asia, Rev A) (GDT-0014A)", MACHINE_IS_SKELETON )
-/* 0014B */ GAME( 2005, vs4e, vs4, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Asia, Rev B) (GDT-0014B)", MACHINE_IS_SKELETON )
-/* 0015 */ GAME( 2004, vs4o, vs4, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Export) (GDT-0015)", MACHINE_IS_SKELETON )
-/* 0015A */ GAME( 2005, vs4, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Export, Rev A) (GDT-0015A)", MACHINE_IS_SKELETON )
+/* 0010A */ GAME( 2004, avalnc12, avalnc13, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.2 - Summon The New Monsters (client) (Rev A) (GDT-0010A)", MACHINE_IS_SKELETON )
+// 0010B GAME( 2004, avalc13b, avalnc13, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (client) (Rev B) (GDT-0010B)", MACHINE_IS_SKELETON )
+/* 0010C */ GAME( 2004, avalnc13, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.3 - Chaotic Sabbat (client) (Rev C) (GDT-0010C)", MACHINE_IS_SKELETON )
+/* 0011 */ GAME( 2004, tfupdate, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Triforce DIMM Updater (3.17) (GDT-0011)", MACHINE_IS_SKELETON )
+// 0012
+// 0013 GAME( 2005, vs4jo, vs4j, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Japan) (GDT-0013)", MACHINE_IS_SKELETON )
+// 0013A GAME( 2005, vs4ja, vs4j, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev A) (GDT-0013A)", MACHINE_IS_SKELETON )
+// 0013B GAME( 2005, vs4jb, vs4j, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev B) (GDT-0013B)", MACHINE_IS_SKELETON )
+// 0013C GAME( 2005, vs4jc, vs4j, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev C) (GDT-0013C)", MACHINE_IS_SKELETON )
+// 0013D GAME( 2005, vs4jd, vs4j, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev D) (GDT-0013D)", MACHINE_IS_SKELETON )
+/* 0013E */ GAME( 2005, vs4j, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev E) (GDT-0013E)", MACHINE_IS_SKELETON )
+/* 0014 */ GAME( 2004, vs4e, vs4, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Export) (GDT-0014)", MACHINE_IS_SKELETON )
+/* 0015 */ GAME( 2004, vs4, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 (Export) (GDT-0015)", MACHINE_IS_SKELETON )
// 0016 GAME( 2004, avalons20,triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (server) (GDT-0016)", MACHINE_IS_SKELETON )
// 0017 GAME( 2004, avalon20o,avalon20, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (GDT-0017)", MACHINE_IS_SKELETON )
-// 0017A GAME( 2004, avalon20a,avalon20, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client, Rev A) (GDT-0017A)", MACHINE_IS_SKELETON )
-/* 0017B */ GAME( 2004, avalon20, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client, Rev B) (GDT-0017B)", MACHINE_IS_SKELETON )
+// 0017A GAME( 2004, avalon20a,avalon20, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (Rev A) (GDT-0017A)", MACHINE_IS_SKELETON )
+/* 0017B */ GAME( 2004, avalon20, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (Rev B) (GDT-0017B)", MACHINE_IS_SKELETON )
// 0018 GAME( 2005, avalns25o,avalns25, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server) (GDT-0018)", MACHINE_IS_SKELETON )
-/* 0018A */ GAME( 2005, avalns25a,avalns25, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server, Rev A) (GDT-0018A)", MACHINE_IS_SKELETON )
-/* 0018B */ GAME( 2005, avalns25, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server, Rev B) (GDT-0018B)", MACHINE_IS_SKELETON )
+/* 0018A */ GAME( 2005, avalns25a,avalns25, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server) (Rev A) (GDT-0018A)", MACHINE_IS_SKELETON )
+/* 0018B */ GAME( 2005, avalns25, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server) (Rev B) (GDT-0018B)", MACHINE_IS_SKELETON )
// 0019 GAME( 2005, avalnc25o,avalnc25, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client) (GDT-0019)", MACHINE_IS_SKELETON )
-/* 0019A */ GAME( 2005, avalnc25a,avalnc25, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client, Rev A) (GDT-0019A)", MACHINE_IS_SKELETON )
-/* 0019B */ GAME( 2005, avalnc25, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client, Rev B) (GDT-0019B)", MACHINE_IS_SKELETON )
+/* 0019A */ GAME( 2005, avalnc25a,avalnc25, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client) (Rev A) (GDT-0019A)", MACHINE_IS_SKELETON )
+/* 0019B */ GAME( 2005, avalnc25, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client) (Rev B) (GDT-0019B)", MACHINE_IS_SKELETON )
// 0020 GAME( 2006, vs42006o, vs42006, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (GDT-0020)", MACHINE_IS_SKELETON )
-// 0020A GAME( 2006, vs42006a, vs42006, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan, Rev A) (GDT-0020A)", MACHINE_IS_SKELETON )
-/* 0020B */ GAME( 2006, vs42006b, vs42006, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan, Rev B) (GDT-0020B)", MACHINE_IS_SKELETON )
-// 0020C GAME( 2006, vs42006c, vs42006, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan, Rev C) (GDT-0020C)", MACHINE_IS_SKELETON )
-/* 0020D */ GAME( 2006, vs42006, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan, Rev D) (GDT-0020D)", MACHINE_IS_SKELETON )
+// 0020A GAME( 2006, vs42006a, vs42006, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev A) (GDT-0020A)", MACHINE_IS_SKELETON )
+/* 0020B */ GAME( 2006, vs42006b, vs42006, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev B) (GDT-0020B)", MACHINE_IS_SKELETON )
+// 0020C GAME( 2006, vs42006c, vs42006, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev C) (GDT-0020C)", MACHINE_IS_SKELETON )
+/* 0020D */ GAME( 2006, vs42006, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev D) (GDT-0020D)", MACHINE_IS_SKELETON )
/* 0021 */ GAME( 2006, vs42k6ex, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Export) (GDT-0021)", MACHINE_IS_SKELETON )
// 0022 GAME( 2006, tcfboxo, tcfboxa, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Triforce Firmware Update For Compact Flash Box (GDT-0022)", MACHINE_IS_SKELETON )
-/* 0022A */ GAME( 2009, tcfboxa, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Triforce Firmware Update For Compact Flash Box (4.01) (GDT-0022A)", MACHINE_IS_SKELETON )
+/* 0022A */ GAME( 2006, tcfboxa, triforce, triforcegd, triforce, triforce_state, empty_init, ROT0, "Sega", "Triforce Firmware Update For Compact Flash Box (4.01) (GDT-0022A)", MACHINE_IS_SKELETON )
// 837-xxxxx (Sega cart games)
/* 14343-4S1 */ GAME( 2003, fzeroaxm, triforce, triforce_base, triforce, triforce_state, empty_init, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX Monster Ride", MACHINE_IS_SKELETON ) // 2003/09/04
diff --git a/src/mame/drivers/trkfldch.cpp b/src/mame/drivers/trkfldch.cpp
deleted file mode 100644
index cde7b9594cf..00000000000
--- a/src/mame/drivers/trkfldch.cpp
+++ /dev/null
@@ -1,196 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:David Haywood
-/*
-
-Track & Field Challenge TV Game
-https://www.youtube.com/watch?v=wjn1lLylqog
-
-Uses epoxy blobs for CPU etc.
-These have been identified as Winbond 2005 BA5962 (large glob) + Winbond 200506 BA5934 (smaller glob)
-seems to be G65816 derived with custom vectors?
-
-PCB Game
-TV0001 R1.1 My First DDR
-TV0002 R1.0 Track & Field
-
-DDR & TF PCBs look identical, all the parts are in the same place, the traces are the same, and the silkscreened part # for resistors and caps are the same.
-
-currently dies after call at
-
-00:AE85: LDA $0b
-00:AE87: TAX
-00:AE88: LDA $0d
-00:AE8A: JSL $00a044
-
-00:A044: SEP #$20
-00:A046: PHA
-00:A047: REP #$20
-00:A049: DEX
-00:A04A: PHX
-00:A04B: RTL
-
-which pushes some values onto the stack, then RTLs to them (but the values at $0b and $0d at both 00, so it jumps to 0 and dies)
-
-*/
-
-#include "emu.h"
-
-#include "cpu/g65816/g65816.h"
-
-#include "emupal.h"
-#include "screen.h"
-#include "speaker.h"
-
-class trkfldch_state : public driver_device
-{
-public:
- trkfldch_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_screen(*this, "screen"),
- m_gfxdecode(*this, "gfxdecode")
- { }
-
- void trkfldch(machine_config &config);
-
-protected:
- virtual void machine_start() override;
- virtual void machine_reset() override;
- virtual void video_start() override;
-
-private:
-
- required_device<cpu_device> m_maincpu;
- required_device<screen_device> m_screen;
- required_device<gfxdecode_device> m_gfxdecode;
-
- uint32_t screen_update_trkfldch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void trkfldch_map(address_map &map);
-
- DECLARE_READ8_MEMBER(unk_7804_read);
- DECLARE_READ8_MEMBER(unk_7805_read);
-};
-
-void trkfldch_state::video_start()
-{
-}
-
-uint32_t trkfldch_state::screen_update_trkfldch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- return 0;
-}
-
-
-READ8_MEMBER(trkfldch_state::unk_7804_read)
-{
- return 0xff;
-}
-
-READ8_MEMBER(trkfldch_state::unk_7805_read)
-{
- return 0xff;
-}
-
-void trkfldch_state::trkfldch_map(address_map &map)
-{
- map(0x000000, 0x003fff).ram();
-
- map(0x006800, 0x006cff).ram();
-
- map(0x007000, 0x0072ff).ram();
-
- // 7800 - 78xx look like registers?
- map(0x007804, 0x007804).r(FUNC(trkfldch_state::unk_7804_read));
- map(0x007805, 0x007805).r(FUNC(trkfldch_state::unk_7805_read));
-
- map(0x008000, 0x3fffff).rom().region("maincpu", 0x000000); // good for code mapped at 008000 and 050000 at least
-}
-
-static INPUT_PORTS_START( trkfldch )
-INPUT_PORTS_END
-
-// dummy, doesn't appear to be tile based
-static const gfx_layout tiles8x8_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 8,
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0, 8, 16, 24, 32, 40, 48, 56 },
- { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 },
- 64*8
-};
-
-static GFXDECODE_START( gfx_trkfldch )
- GFXDECODE_ENTRY( "maincpu", 0, tiles8x8_layout, 0, 1 )
-GFXDECODE_END
-
-void trkfldch_state::machine_start()
-{
-}
-
-void trkfldch_state::machine_reset()
-{
- uint8_t *rom = memregion("maincpu")->base();
-
- int vector = 0xe;
-
- /* what appears to be a table of vectors apepars at the START of ROM, maybe this gets copied to RAM, maybe used directly?
- 0: (invalid)
- 1: (invalid)
- 2: 0xA2C6
- 3: 0xA334
- 4: 0xA300
- 5: 0xA2E0
- 6: 0xA2B9
- 7: 0xA2ED // possible irq vector pointer, THIS IS NOT THE BOOT CODE!
- 8: 0xA2D3
- 9: 0xA327
- a: 0xA30D
- b: 0x6000
- c: 0xA31A
- d: 0xA2AC
- e: 0xA341
- f: (invalid)
- */
-
- uint16_t addr = (rom[vector * 2 + 1] << 8) | (rom[vector * 2]);
-
- m_maincpu->set_state_int(1, addr);
-}
-
-void trkfldch_state::trkfldch(machine_config &config)
-{
- /* basic machine hardware */
- G65816(config, m_maincpu, 20000000);
- //m_maincpu->set_addrmap(AS_DATA, &tv965_state::mem_map);
- m_maincpu->set_addrmap(AS_PROGRAM, &trkfldch_state::trkfldch_map);
-
- /* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(320, 240);
- m_screen->set_visarea(0, 320-1, 0, 240-1);
- m_screen->set_screen_update(FUNC(trkfldch_state::screen_update_trkfldch));
- m_screen->set_palette("palette");
-
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_trkfldch); // dummy
- PALETTE(config, "palette").set_format(palette_device::xRGB_444, 0x100).set_endianness(ENDIANNESS_BIG); // dummy
-}
-
-ROM_START( trkfldch )
- ROM_REGION( 0x400000, "maincpu", 0 )
- ROM_LOAD( "trackandfield.bin", 0x000000, 0x400000, CRC(f4f1959d) SHA1(344dbfe8df1897adf77da6e5ca0435c4d47d6842) )
-ROM_END
-
-ROM_START( my1stddr )
- ROM_REGION( 0x400000, "maincpu", 0 )
- ROM_LOAD( "myfirstddr.bin", 0x000000, 0x400000, CRC(2ef57bfc) SHA1(9feea5adb9de8fe17e915f3a037e8ddd70e58ae7) )
-ROM_END
-
-
-CONS( 2007, trkfldch, 0, 0, trkfldch, trkfldch,trkfldch_state, empty_init, "Konami", "Track & Field Challenge", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-CONS( 2006, my1stddr, 0, 0, trkfldch, trkfldch,trkfldch_state, empty_init, "Konami", "My First Dance Dance Revolution (US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Japan version has different songs
-
diff --git a/src/mame/drivers/trs80.cpp b/src/mame/drivers/trs80.cpp
index 9d1d20c9c66..c3362b9414e 100644
--- a/src/mame/drivers/trs80.cpp
+++ b/src/mame/drivers/trs80.cpp
@@ -158,7 +158,6 @@ lnw80: works
#include "emu.h"
#include "includes/trs80.h"
-#include "machine/com8116.h"
#include "sound/ay8910.h"
#include "screen.h"
#include "speaker.h"
@@ -205,7 +204,7 @@ void trs80_state::m1_io(address_map &map)
map.global_mask(0xff);
map.unmap_value_high();
map(0xe8, 0xe8).rw(FUNC(trs80_state::port_e8_r), FUNC(trs80_state::port_e8_w));
- map(0xe9, 0xe9).portr("E9").w("brg", FUNC(com8116_device::stt_str_w));
+ map(0xe9, 0xe9).portr("E9").w(m_brg, FUNC(com8116_device::stt_str_w));
map(0xea, 0xea).rw(FUNC(trs80_state::port_ea_r), FUNC(trs80_state::port_ea_w));
map(0xeb, 0xeb).rw(m_uart, FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit));
map(0xff, 0xff).rw(FUNC(trs80_state::port_ff_r), FUNC(trs80_state::port_ff_w));
@@ -256,12 +255,9 @@ void trs80_state::lnw80_io(address_map &map)
{
map.global_mask(0xff);
map.unmap_value_high();
- map(0xe8, 0xe8).rw(FUNC(trs80_state::port_e8_r), FUNC(trs80_state::port_e8_w));
- map(0xe9, 0xe9).portr("E9");
- map(0xea, 0xea).rw(FUNC(trs80_state::port_ea_r), FUNC(trs80_state::port_ea_w));
- map(0xeb, 0xeb).rw(m_uart, FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit));
+ m1_io(map);
+ map(0xe9, 0xe9).nopw();
map(0xfe, 0xfe).rw(FUNC(trs80_state::lnw80_fe_r), FUNC(trs80_state::lnw80_fe_w));
- map(0xff, 0xff).rw(FUNC(trs80_state::port_ff_r), FUNC(trs80_state::port_ff_w));
}
void trs80_state::radionic_mem(address_map &map)
@@ -502,18 +498,17 @@ static void trs80_floppies(device_slot_interface &device)
}
-void trs80_state::trs80(machine_config &config) // the original model I, level I, with no extras
-{
+MACHINE_CONFIG_START(trs80_state::trs80) // the original model I, level I, with no extras
/* basic machine hardware */
- Z80(config, m_maincpu, 10.6445_MHz_XTAL / 6);
- m_maincpu->set_addrmap(AS_PROGRAM, &trs80_state::trs80_mem);
- m_maincpu->set_addrmap(AS_IO, &trs80_state::trs80_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, 10.6445_MHz_XTAL / 6)
+ MCFG_DEVICE_PROGRAM_MAP(trs80_mem)
+ MCFG_DEVICE_IO_MAP(trs80_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(10.6445_MHz_XTAL, 672, 0, 384, 264, 0, 192);
- screen.set_screen_update(FUNC(trs80_state::screen_update_trs80));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(10.6445_MHz_XTAL, 672, 0, 384, 264, 0, 192)
+ MCFG_SCREEN_UPDATE_DRIVER(trs80_state, screen_update_trs80)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_trs80);
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -521,47 +516,52 @@ void trs80_state::trs80(machine_config &config) // the original model I, l
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.05);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05);
/* devices */
- CASSETTE(config, m_cassette);
-}
+ MCFG_CASSETTE_ADD("cassette")
+MACHINE_CONFIG_END
MACHINE_CONFIG_START(trs80_state::model1) // model I, level II
trs80(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &trs80_state::m1_mem);
- m_maincpu->set_addrmap(AS_IO, &trs80_state::m1_io);
- m_maincpu->set_periodic_int(FUNC(trs80_state::rtc_interrupt), attotime::from_hz(40));
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(m1_mem)
+ MCFG_DEVICE_IO_MAP(m1_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(trs80_state, rtc_interrupt, 40)
/* devices */
- m_cassette->set_formats(trs80l2_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY);
+ MCFG_CASSETTE_MODIFY("cassette")
+ MCFG_CASSETTE_FORMATS(trs80l2_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY)
- MCFG_QUICKLOAD_ADD("quickload", trs80_state, trs80_cmd, "cmd", attotime::from_seconds(1))
+ MCFG_QUICKLOAD_ADD("quickload", trs80_state, trs80_cmd, "cmd", 1.0)
FD1793(config, m_fdc, 4_MHz_XTAL / 4); // todo: should be fd1771
m_fdc->intrq_wr_callback().set(FUNC(trs80_state::intrq_w));
- FLOPPY_CONNECTOR(config, "fdc:0", trs80_floppies, "sssd", trs80_state::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", trs80_floppies, "sssd", trs80_state::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:2", trs80_floppies, "", trs80_state::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:3", trs80_floppies, "", trs80_state::floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", trs80_floppies, "sssd", trs80_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", trs80_floppies, "sssd", trs80_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:2", trs80_floppies, "", trs80_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:3", trs80_floppies, "", trs80_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit7));
- m_centronics->perror_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit6));
- m_centronics->select_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit5));
- m_centronics->fault_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit4));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit7))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit6))
+ MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit5))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit4))
- INPUT_BUFFER(config, m_cent_status_in);
+ MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0)
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
- com8116_device &brg(COM8116(config, "brg", 5.0688_MHz_XTAL)); // BR1941L
- brg.fr_handler().set(m_uart, FUNC(ay31015_device::write_rcp));
- brg.ft_handler().set(m_uart, FUNC(ay31015_device::write_tcp));
+ COM8116(config, m_brg, 5.0688_MHz_XTAL); // BR1941L
+ m_brg->fr_handler().set(m_uart, FUNC(ay31015_device::write_rcp));
+ m_brg->ft_handler().set(m_uart, FUNC(ay31015_device::write_tcp));
AY31015(config, m_uart);
m_uart->read_si_callback().set("rs232", FUNC(rs232_port_device::rxd_r));
@@ -571,44 +571,34 @@ MACHINE_CONFIG_START(trs80_state::model1) // model I, level II
RS232_PORT(config, "rs232", default_rs232_devices, nullptr);
MACHINE_CONFIG_END
-void trs80_state::sys80(machine_config &config)
-{
+MACHINE_CONFIG_START(trs80_state::sys80)
model1(config);
- m_maincpu->set_addrmap(AS_IO, &trs80_state::sys80_io);
-
- config.device_remove("brg");
- CLOCK(config, m_uart_clock, 19200 * 16);
- m_uart_clock->signal_handler().set(m_uart, FUNC(ay31015_device::write_rcp));
- m_uart_clock->signal_handler().append(m_uart, FUNC(ay31015_device::write_tcp));
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(sys80_io)
+ MCFG_DEVICE_REMOVE("brg")
+MACHINE_CONFIG_END
-void trs80_state::sys80p(machine_config &config)
-{
+MACHINE_CONFIG_START(trs80_state::ht1080z)
sys80(config);
- m_maincpu->set_clock(10.48_MHz_XTAL / 6);
- subdevice<screen_device>("screen")->set_raw(10.48_MHz_XTAL, 672, 0, 384, 312, 0, 192);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(ht1080z_io)
-void trs80_state::ht1080z(machine_config &config)
-{
- sys80p(config);
- m_maincpu->set_addrmap(AS_IO, &trs80_state::ht1080z_io);
-
- subdevice<screen_device>("screen")->set_screen_update(FUNC(trs80_state::screen_update_ht1080z));
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_ht1080z);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(trs80_state, screen_update_ht1080z)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_ht1080z)
AY8910(config, "ay1", 1'500'000).add_route(ALL_OUTPUTS, "mono", 0.25); // guess of clock
//ay1.port_a_read_callback(FUNC(trs80_state::...); // ports are some kind of expansion slot
//ay1.port_b_read_callback(FUNC(trs80_state::...);
-}
+MACHINE_CONFIG_END
-void trs80_state::lnw80(machine_config &config)
-{
+MACHINE_CONFIG_START(trs80_state::lnw80)
model1(config);
- //m_maincpu->set_clock(16_MHz_XTAL / 4); // or 16MHz / 9; 4MHz or 1.77MHz operation selected by HI/LO switch
- m_maincpu->set_clock(16_MHz_XTAL / 9); // need this so cassette can work
- m_maincpu->set_addrmap(AS_PROGRAM, &trs80_state::lnw80_mem);
- m_maincpu->set_addrmap(AS_IO, &trs80_state::lnw80_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ //MCFG_DEVICE_CLOCK(16_MHz_XTAL / 4) // or 16MHz / 9; 4MHz or 1.77MHz operation selected by HI/LO switch
+ MCFG_DEVICE_CLOCK(16_MHz_XTAL / 9) // need this so cassette can work
+ MCFG_DEVICE_PROGRAM_MAP(lnw80_mem)
+ MCFG_DEVICE_IO_MAP(lnw80_io)
ADDRESS_MAP_BANK(config, m_lnw_bank, 0);
m_lnw_bank->set_addrmap(0, &trs80_state::lnw_banked_mem);
@@ -618,32 +608,29 @@ void trs80_state::lnw80(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(trs80_state, lnw80)
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_lnw80);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_lnw80)
subdevice<palette_device>("palette")->set_entries(8).set_init(FUNC(trs80_state::lnw80_palette));
- subdevice<screen_device>("screen")->set_raw(3.579545_MHz_XTAL * 3, 682, 0, 480, 264, 0, 192); // 10.738MHz generated by tank circuit (top left of page 2 of schematics)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_RAW_PARAMS(3.579545_MHz_XTAL * 3, 682, 0, 480, 264, 0, 192) // 10.738MHz generated by tank circuit (top left of page 2 of schematics)
// LNW80 Theory of Operations gives H and V periods as 15.750kHz and 59.66Hz, probably due to rounding the calculated ~15.7468kHz to 4 figures
- subdevice<screen_device>("screen")->set_screen_update(FUNC(trs80_state::screen_update_lnw80));
-
- config.device_remove("brg");
- CLOCK(config, m_uart_clock, 19200 * 16);
- m_uart_clock->signal_handler().set(m_uart, FUNC(ay31015_device::write_rcp));
- m_uart_clock->signal_handler().append(m_uart, FUNC(ay31015_device::write_tcp));
-}
+ MCFG_SCREEN_UPDATE_DRIVER(trs80_state, screen_update_lnw80)
+MACHINE_CONFIG_END
-void trs80_state::radionic(machine_config &config)
-{
+MACHINE_CONFIG_START(trs80_state::radionic)
model1(config);
- m_maincpu->set_clock(12_MHz_XTAL / 6); // or 3.579MHz / 2 (selectable?)
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(12_MHz_XTAL / 6) // or 3.579MHz / 2 (selectable?)
// Komtek I "User Friendly Manual" calls for "Z80 running at 1.97 MHz." This likely refers to an alternate NTSC version
// whose master clock was approximately 11.8005 MHz (6 times ~1.966 MHz and 750 times 15.734 kHz). Though the schematics
// provide the main XTAL frequency as 12 MHz, that they also include a 3.579 MHz XTAL suggests this possibility.
- m_maincpu->set_periodic_int(FUNC(trs80_state::nmi_line_pulse), attotime::from_hz(12_MHz_XTAL / 12 / 16384));
- m_maincpu->set_addrmap(AS_PROGRAM, &trs80_state::radionic_mem);
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(trs80_state, nmi_line_pulse, 12_MHz_XTAL / 12 / 16384)
+ MCFG_DEVICE_PROGRAM_MAP(radionic_mem)
- subdevice<screen_device>("screen")->set_raw(12_MHz_XTAL, 768, 0, 512, 312, 0, 256);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(trs80_state::screen_update_radionic));
- subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_radionic);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_RAW_PARAMS(12_MHz_XTAL, 768, 0, 512, 312, 0, 256)
+ MCFG_SCREEN_UPDATE_DRIVER(trs80_state, screen_update_radionic)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_radionic)
// Interface to external circuits
I8255(config, m_ppi);
@@ -651,7 +638,7 @@ void trs80_state::radionic(machine_config &config)
//m_ppi->out_pa_callback().set(FUNC(pulsar_state::ppi_pa_w)); // Data for external plugin printer module
//m_ppi->out_pb_callback().set(FUNC(pulsar_state::ppi_pb_w)); // Control data to external
//m_ppi->out_pc_callback().set(FUNC(pulsar_state::ppi_pc_w)); // Printer strobe
-}
+MACHINE_CONFIG_END
/***************************************************************************
@@ -710,8 +697,6 @@ ROM_START(sys80)
ROM_LOAD("trs80m1.chr", 0x0000, 0x0400, CRC(0033f2b9) SHA1(0d2cd4197d54e2e872b515bbfdaa98efe502eda7))
ROM_END
-#define rom_sys80p rom_sys80
-
ROM_START(lnw80)
ROM_REGION(0x3800, "maincpu",0)
@@ -774,8 +759,7 @@ void trs80_state::init_trs80l2()
COMP( 1977, trs80, 0, 0, trs80, trs80, trs80_state, init_trs80, "Tandy Radio Shack", "TRS-80 Model I (Level I Basic)", 0 )
COMP( 1978, trs80l2, 0, 0, model1, trs80l2, trs80_state, init_trs80l2, "Tandy Radio Shack", "TRS-80 Model I (Level II Basic)", 0 )
COMP( 1983, radionic, trs80l2, 0, radionic, trs80l2, trs80_state, init_trs80, "Komtek", "Radionic", 0 )
-COMP( 1980, sys80, trs80l2, 0, sys80, sys80, trs80_state, init_trs80l2, "EACA Computers Ltd", "System-80 (60 Hz)", 0 )
-COMP( 1980, sys80p, trs80l2, 0, sys80p, sys80, trs80_state, init_trs80l2, "EACA Computers Ltd", "System-80 (50 Hz)", 0 )
+COMP( 1980, sys80, trs80l2, 0, sys80, sys80, trs80_state, init_trs80l2, "EACA Computers Ltd", "System-80", 0 )
COMP( 1981, lnw80, trs80l2, 0, lnw80, sys80, trs80_state, init_trs80, "LNW Research", "LNW-80", 0 )
COMP( 1983, ht1080z, trs80l2, 0, ht1080z, sys80, trs80_state, init_trs80l2, "Hiradastechnika Szovetkezet", "HT-1080Z Series I", 0 )
COMP( 1984, ht1080z2, trs80l2, 0, ht1080z, sys80, trs80_state, init_trs80l2, "Hiradastechnika Szovetkezet", "HT-1080Z Series II", 0 )
diff --git a/src/mame/drivers/trs80m2.cpp b/src/mame/drivers/trs80m2.cpp
index ba499eb57e5..f65f965be68 100644
--- a/src/mame/drivers/trs80m2.cpp
+++ b/src/mame/drivers/trs80m2.cpp
@@ -704,11 +704,10 @@ void trs80m2_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( trs80m2 )
+// MACHINE_CONFIG( trs80m2 )
//-------------------------------------------------
-void trs80m2_state::trs80m2(machine_config &config)
-{
+MACHINE_CONFIG_START(trs80m2_state::trs80m2)
// basic machine hardware
Z80(config, m_maincpu, 8_MHz_XTAL / 2);
m_maincpu->set_daisy_config(trs80m2_daisy_chain);
@@ -716,12 +715,12 @@ void trs80m2_state::trs80m2(machine_config &config)
m_maincpu->set_addrmap(AS_IO, &trs80m2_state::z80_io);
// video hardware
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_screen_update(FUNC(trs80m2_state::screen_update));
- screen.set_size(640, 480);
- screen.set_visarea(0, 639, 0, 479);
+ MCFG_SCREEN_ADD_MONOCHROME(SCREEN_TAG, RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_UPDATE_DRIVER(trs80m2_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
PALETTE(config, m_palette, palette_device::MONOCHROME);
@@ -737,10 +736,10 @@ void trs80m2_state::trs80m2(machine_config &config)
FD1791(config, m_fdc, 8_MHz_XTAL / 4);
m_fdc->intrq_wr_callback().set(m_pio, FUNC(z80pio_device::pa_w));
m_fdc->drq_wr_callback().set(m_dmac, FUNC(z80dma_device::rdy_w));
- FLOPPY_CONNECTOR(config, FD1791_TAG":0", trs80m2_floppies, "8dsdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, FD1791_TAG":1", trs80m2_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, FD1791_TAG":2", trs80m2_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, FD1791_TAG":3", trs80m2_floppies, nullptr, floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":0", trs80m2_floppies, "8dsdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":1", trs80m2_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":2", trs80m2_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":3", trs80m2_floppies, nullptr, floppy_image_device::default_floppy_formats)
Z80CTC(config, m_ctc, 8_MHz_XTAL / 2);
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
@@ -748,7 +747,7 @@ void trs80m2_state::trs80m2(machine_config &config)
m_ctc->zc_callback<1>().set(Z80SIO_TAG, FUNC(z80dart_device::txca_w));
m_ctc->zc_callback<2>().set(Z80SIO_TAG, FUNC(z80dart_device::rxtxcb_w));
- TIMER(config, "ctc").configure_periodic(FUNC(trs80m2_state::ctc_tick), attotime::from_hz(8_MHz_XTAL / 2 / 2));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", trs80m2_state, ctc_tick, attotime::from_hz(8_MHz_XTAL / 2 / 2))
Z80DMA(config, m_dmac, 8_MHz_XTAL / 2);
m_dmac->out_busreq_callback().set_inputline(m_maincpu, INPUT_LINE_HALT);
@@ -768,14 +767,12 @@ void trs80m2_state::trs80m2(machine_config &config)
z80sio0_device& sio(Z80SIO0(config, Z80SIO_TAG, 8_MHz_XTAL / 2));
sio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(m_pio, FUNC(z80pio_device::strobe_b));
- m_centronics->busy_handler().set(FUNC(trs80m2_state::write_centronics_busy));
- m_centronics->fault_handler().set(FUNC(trs80m2_state::write_centronics_fault));
- m_centronics->perror_handler().set(FUNC(trs80m2_state::write_centronics_perror));
-
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(m_pio, z80pio_device, strobe_b))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, trs80m2_state, write_centronics_busy))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, trs80m2_state, write_centronics_fault))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, trs80m2_state, write_centronics_perror))
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
TRS80M2_KEYBOARD(config, m_kb, 0);
m_kb->clock_wr_callback().set(FUNC(trs80m2_state::kb_clock_w));
@@ -786,16 +783,15 @@ void trs80m2_state::trs80m2(machine_config &config)
RAM(config, RAM_TAG).set_default_size("64K").set_extra_options("32K,96K,128K,160K,192K,224K,256K,288K,320K,352K,384K,416K,448K,480K,512K");
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("trs80m2");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "trs80m2")
+MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( trs80m16 )
+// MACHINE_CONFIG( trs80m16 )
//-------------------------------------------------
-void trs80m16_state::trs80m16(machine_config &config)
-{
+MACHINE_CONFIG_START(trs80m16_state::trs80m16)
// basic machine hardware
Z80(config, m_maincpu, 8_MHz_XTAL / 2);
m_maincpu->set_daisy_config(trs80m2_daisy_chain);
@@ -803,17 +799,17 @@ void trs80m16_state::trs80m16(machine_config &config)
m_maincpu->set_addrmap(AS_IO, &trs80m16_state::m16_z80_io);
m_maincpu->set_irq_acknowledge_callback(AM9519A_TAG, FUNC(am9519_device::iack_cb));
- M68000(config, m_subcpu, 24_MHz_XTAL / 4);
- m_subcpu->set_addrmap(AS_PROGRAM, &trs80m16_state::m68000_mem);
- m_subcpu->set_disable();
+ MCFG_DEVICE_ADD(M68000_TAG, M68000, 24_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(m68000_mem)
+ MCFG_DEVICE_DISABLE()
// video hardware
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_screen_update(FUNC(trs80m2_state::screen_update));
- screen.set_size(640, 480);
- screen.set_visarea(0, 639, 0, 479);
+ MCFG_SCREEN_ADD_MONOCHROME(SCREEN_TAG, RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_UPDATE_DRIVER(trs80m2_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
PALETTE(config, m_palette, palette_device::MONOCHROME);
@@ -829,10 +825,10 @@ void trs80m16_state::trs80m16(machine_config &config)
FD1791(config, m_fdc, 8_MHz_XTAL / 4);
m_fdc->intrq_wr_callback().set(m_pio, FUNC(z80pio_device::pa_w));
m_fdc->drq_wr_callback().set(m_dmac, FUNC(z80dma_device::rdy_w));
- FLOPPY_CONNECTOR(config, FD1791_TAG":0", trs80m2_floppies, "8dsdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, FD1791_TAG":1", trs80m2_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, FD1791_TAG":2", trs80m2_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, FD1791_TAG":3", trs80m2_floppies, nullptr, floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":0", trs80m2_floppies, "8dsdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":1", trs80m2_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":2", trs80m2_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":3", trs80m2_floppies, nullptr, floppy_image_device::default_floppy_formats)
Z80CTC(config, m_ctc, 8_MHz_XTAL / 2);
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
@@ -840,7 +836,7 @@ void trs80m16_state::trs80m16(machine_config &config)
m_ctc->zc_callback<1>().set(Z80SIO_TAG, FUNC(z80dart_device::txca_w));
m_ctc->zc_callback<2>().set(Z80SIO_TAG, FUNC(z80dart_device::rxtxcb_w));
- TIMER(config, "ctc").configure_periodic(FUNC(trs80m2_state::ctc_tick), attotime::from_hz(8_MHz_XTAL / 2 / 2));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", trs80m2_state, ctc_tick, attotime::from_hz(8_MHz_XTAL / 2 / 2))
Z80DMA(config, m_dmac, 8_MHz_XTAL / 2);
m_dmac->out_busreq_callback().set_inputline(m_maincpu, INPUT_LINE_HALT);
@@ -861,16 +857,14 @@ void trs80m16_state::trs80m16(machine_config &config)
sio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
AM9519(config, m_uic, 0);
- m_uic->out_int_callback().set_inputline(m_subcpu, M68K_IRQ_5);
-
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(m_pio, FUNC(z80pio_device::strobe_b));
- m_centronics->busy_handler().set(FUNC(trs80m2_state::write_centronics_busy));
- m_centronics->fault_handler().set(FUNC(trs80m2_state::write_centronics_fault));
- m_centronics->perror_handler().set(FUNC(trs80m2_state::write_centronics_perror));
+ m_uic->out_int_callback().set_inputline(M68000_TAG, M68K_IRQ_5);
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(m_pio, z80pio_device, strobe_b))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, trs80m2_state, write_centronics_busy))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, trs80m2_state, write_centronics_fault))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, trs80m2_state, write_centronics_perror))
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
TRS80M2_KEYBOARD(config, m_kb, 0);
m_kb->clock_wr_callback().set(FUNC(trs80m2_state::kb_clock_w));
@@ -881,8 +875,8 @@ void trs80m16_state::trs80m16(machine_config &config)
RAM(config, RAM_TAG).set_default_size("256K").set_extra_options("512K,768K,1M");
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("trs80m2");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "trs80m2")
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/trs80m3.cpp b/src/mame/drivers/trs80m3.cpp
index 953b16f98b2..b5140197b72 100644
--- a/src/mame/drivers/trs80m3.cpp
+++ b/src/mame/drivers/trs80m3.cpp
@@ -335,16 +335,16 @@ static void trs80_floppies(device_slot_interface &device)
MACHINE_CONFIG_START(trs80m3_state::model3)
/* basic machine hardware */
- Z80(config, m_maincpu, 20.2752_MHz_XTAL / 10); // FIXME: actual Model III XTAL is 10.1376 MHz
- m_maincpu->set_addrmap(AS_PROGRAM, &trs80m3_state::m3_mem);
- m_maincpu->set_addrmap(AS_IO, &trs80m3_state::m3_io);
- m_maincpu->set_periodic_int(FUNC(trs80m3_state::rtc_interrupt), attotime::from_hz(20.2752_MHz_XTAL / 10 / 67584));
+ MCFG_DEVICE_ADD("maincpu", Z80, 20.2752_MHz_XTAL / 10) // FIXME: actual Model III XTAL is 10.1376 MHz
+ MCFG_DEVICE_PROGRAM_MAP(m3_mem)
+ MCFG_DEVICE_IO_MAP(m3_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(trs80m3_state, rtc_interrupt, 20.2752_MHz_XTAL / 10 / 67584)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(12.672_MHz_XTAL, 800, 0, 640, 264, 0, 240); // FIXME: these are Model 4 80-column parameters
- screen.set_screen_update(FUNC(trs80m3_state::screen_update_trs80m3));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(12.672_MHz_XTAL, 800, 0, 640, 264, 0, 240) // FIXME: these are Model 4 80-column parameters
+ MCFG_SCREEN_UPDATE_DRIVER(trs80m3_state, screen_update_trs80m3)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_trs80m3);
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -352,33 +352,34 @@ MACHINE_CONFIG_START(trs80m3_state::model3)
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.05);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05);
/* devices */
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(trs80l2_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(trs80l2_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY)
- MCFG_QUICKLOAD_ADD("quickload", trs80m3_state, trs80_cmd, "cmd", attotime::from_seconds(1))
+ MCFG_QUICKLOAD_ADD("quickload", trs80m3_state, trs80_cmd, "cmd", 1.0)
FD1793(config, m_fdc, 4_MHz_XTAL / 4);
m_fdc->intrq_wr_callback().set(FUNC(trs80m3_state::intrq_w));
m_fdc->drq_wr_callback().set(FUNC(trs80m3_state::drq_w));
// Internal drives
- FLOPPY_CONNECTOR(config, "fdc:0", trs80_floppies, "sssd", trs80m3_state::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", trs80_floppies, "sssd", trs80m3_state::floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", trs80_floppies, "sssd", trs80m3_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", trs80_floppies, "sssd", trs80m3_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit7));
- m_centronics->perror_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit6));
- m_centronics->select_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit5));
- m_centronics->fault_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit4));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit7))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit6))
+ MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit5))
+ MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit4))
- INPUT_BUFFER(config, m_cent_status_in);
+ MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0)
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
COM8116(config, m_brg, 20.2752_MHz_XTAL / 4); // BR1943 (or BR1941L)
m_brg->fr_handler().set(m_uart, FUNC(ay31015_device::write_rcp));
@@ -392,11 +393,11 @@ MACHINE_CONFIG_START(trs80m3_state::model3)
RS232_PORT(config, "rs232", default_rs232_devices, nullptr);
MACHINE_CONFIG_END
-void trs80m3_state::model4(machine_config &config)
-{
+MACHINE_CONFIG_START(trs80m3_state::model4)
model3(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &trs80m3_state::m4_mem);
- m_maincpu->set_addrmap(AS_IO, &trs80m3_state::m4_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(m4_mem)
+ MCFG_DEVICE_IO_MAP(m4_io)
RAM(config, m_mainram, 0);
m_mainram->set_default_size("64K");
@@ -408,13 +409,13 @@ void trs80m3_state::model4(machine_config &config)
m_m4_bank->set_data_width(8);
m_m4_bank->set_addr_width(18);
m_m4_bank->set_stride(0x10000);
-}
+MACHINE_CONFIG_END
-void trs80m3_state::model4p(machine_config &config)
-{
+MACHINE_CONFIG_START(trs80m3_state::model4p)
model3(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &trs80m3_state::m4p_mem);
- m_maincpu->set_addrmap(AS_IO, &trs80m3_state::m4p_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(m4p_mem)
+ MCFG_DEVICE_IO_MAP(m4p_io)
RAM(config, m_mainram, 0);
m_mainram->set_default_size("64K");
@@ -427,14 +428,14 @@ void trs80m3_state::model4p(machine_config &config)
m_m4p_bank->set_addr_width(19);
m_m4p_bank->set_stride(0x10000);
- config.device_remove("quickload");
-}
+ MCFG_DEVICE_REMOVE("quickload")
+MACHINE_CONFIG_END
-void trs80m3_state::cp500(machine_config &config)
-{
+MACHINE_CONFIG_START(trs80m3_state::cp500)
model3(config);
- m_maincpu->set_addrmap(AS_IO, &trs80m3_state::cp500_io);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(cp500_io)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/truco.cpp b/src/mame/drivers/truco.cpp
index 76166d70408..4d43ed814ce 100644
--- a/src/mame/drivers/truco.cpp
+++ b/src/mame/drivers/truco.cpp
@@ -417,14 +417,14 @@ INTERRUPT_GEN_MEMBER(truco_state::interrupt)
* Machine Driver *
*******************************************/
-void truco_state::truco(machine_config &config)
-{
+MACHINE_CONFIG_START(truco_state::truco)
+
/* basic machine hardware */
- M6809(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &truco_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(truco_state::interrupt));
+ MCFG_DEVICE_ADD("maincpu", M6809, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", truco_state, interrupt)
- WATCHDOG_TIMER(config, m_watchdog).set_time(attotime::from_msec(1600)); /* 1.6 seconds */
+ WATCHDOG_TIMER(config, m_watchdog).set_time(attotime::from_seconds(1.6)); /* 1.6 seconds */
pia6821_device &pia(PIA6821(config, "pia0", 0));
pia.readpa_handler().set_ioport("P1");
@@ -436,13 +436,13 @@ void truco_state::truco(machine_config &config)
pia.irqb_handler().set(FUNC(truco_state::pia_irqb_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(256, 192);
- screen.set_visarea(0, 256-1, 0, 192-1);
- screen.set_screen_update(FUNC(truco_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 192)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 192-1)
+ MCFG_SCREEN_UPDATE_DRIVER(truco_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(truco_state::truco_palette), 16);
@@ -453,10 +453,10 @@ void truco_state::truco(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.4);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/trucocl.cpp b/src/mame/drivers/trucocl.cpp
index 94735cdf7f5..8a3b0dcb8a3 100644
--- a/src/mame/drivers/trucocl.cpp
+++ b/src/mame/drivers/trucocl.cpp
@@ -180,24 +180,23 @@ INTERRUPT_GEN_MEMBER(trucocl_state::trucocl_interrupt)
device.execute().set_input_line(0, HOLD_LINE);
}
-void trucocl_state::trucocl(machine_config &config)
-{
+MACHINE_CONFIG_START(trucocl_state::trucocl)
/* basic machine hardware */
- Z80(config, m_maincpu, 18432000/6);
- m_maincpu->set_addrmap(AS_PROGRAM, &trucocl_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &trucocl_state::main_io);
- m_maincpu->set_vblank_int("screen", FUNC(trucocl_state::trucocl_interrupt));
+ MCFG_DEVICE_ADD("maincpu", Z80, 18432000/6)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", trucocl_state, trucocl_interrupt)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(trucocl_state::screen_update_trucocl));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(trucocl_state, screen_update_trucocl)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_trucocl);
PALETTE(config, "palette", FUNC(trucocl_state::trucocl_palette), 32);
@@ -205,11 +204,10 @@ void trucocl_state::trucocl(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/trvmadns.cpp b/src/mame/drivers/trvmadns.cpp
index 93e34381e1d..6be42577be8 100644
--- a/src/mame/drivers/trvmadns.cpp
+++ b/src/mame/drivers/trvmadns.cpp
@@ -387,30 +387,31 @@ void trvmadns_state::machine_reset()
m_old_data = -1;
}
-void trvmadns_state::trvmadns(machine_config &config)
-{
- Z80(config, m_maincpu, XTAL(10'000'000)/4); // Most likely 2.5MHz (less likely 5MHz (10MHz/2))
- m_maincpu->set_addrmap(AS_PROGRAM, &trvmadns_state::cpu_map);
- m_maincpu->set_addrmap(AS_IO, &trvmadns_state::io_map);
+MACHINE_CONFIG_START(trvmadns_state::trvmadns)
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(10'000'000)/4) // Most likely 2.5MHz (less likely 5MHz (10MHz/2))
+ MCFG_DEVICE_PROGRAM_MAP(cpu_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0*8, 31*8-1, 0*8, 30*8-1);
- screen.set_screen_update(FUNC(trvmadns_state::screen_update_trvmadns));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_trvmadns);
- PALETTE(config, m_palette).set_entries(16);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 0*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(trvmadns_state, screen_update_trvmadns)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_trvmadns)
+ MCFG_PALETTE_ADD("palette", 16)
+
/* sound hardware */
SPEAKER(config, "mono").front_center();
AY8910(config, "aysnd", XTAL(10'000'000)/2/4).add_route(ALL_OUTPUTS, "mono", 1.0); //?
-}
+MACHINE_CONFIG_END
ROM_START( trvmadns )
diff --git a/src/mame/drivers/tryout.cpp b/src/mame/drivers/tryout.cpp
index 5a30afd1faf..1839f9dfb1b 100644
--- a/src/mame/drivers/tryout.cpp
+++ b/src/mame/drivers/tryout.cpp
@@ -191,26 +191,25 @@ static GFXDECODE_START( gfx_tryout )
GFXDECODE_ENTRY( nullptr, 0, vramlayout, 0, 4 )
GFXDECODE_END
-void tryout_state::tryout(machine_config &config)
-{
+MACHINE_CONFIG_START(tryout_state::tryout)
/* basic machine hardware */
- M6502(config, m_maincpu, 2000000); /* ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &tryout_state::main_cpu);
+ MCFG_DEVICE_ADD("maincpu", M6502, 2000000) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(main_cpu)
- M6502(config, m_audiocpu, 1500000); /* ? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &tryout_state::sound_cpu);
- m_audiocpu->set_periodic_int(FUNC(tryout_state::nmi_line_pulse), attotime::from_hz(1000)); /* controls BGM tempo, 1000 is an hand-tuned value to match a side-by-side video */
+ MCFG_DEVICE_ADD("audiocpu", M6502, 1500000) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(sound_cpu)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(tryout_state, nmi_line_pulse, 1000) /* controls BGM tempo, 1000 is an hand-tuned value to match a side-by-side video */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(256, 256);
- screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(tryout_state::screen_update));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tryout);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tryout_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_tryout)
PALETTE(config, m_palette, FUNC(tryout_state::tryout_palette), 0x20);
/* sound hardware */
@@ -218,8 +217,9 @@ void tryout_state::tryout(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- YM2203(config, "ymsnd", 1500000).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("ymsnd", YM2203, 1500000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
ROM_START( tryout )
ROM_REGION( 0x14000, "maincpu", 0 )
diff --git a/src/mame/drivers/ts3000.cpp b/src/mame/drivers/ts3000.cpp
index 65fdb5d6312..148be14f9a4 100644
--- a/src/mame/drivers/ts3000.cpp
+++ b/src/mame/drivers/ts3000.cpp
@@ -43,12 +43,11 @@ void ts3000_state::io_map(address_map &map)
static INPUT_PORTS_START( ts3000 )
INPUT_PORTS_END
-void ts3000_state::ts3000(machine_config &config)
-{
- i8088_cpu_device &maincpu(I8088(config, "maincpu", XTAL(14'318'181)/3)); // no idea of clock
- maincpu.set_addrmap(AS_PROGRAM, &ts3000_state::mem_map);
- maincpu.set_addrmap(AS_IO, &ts3000_state::io_map);
-}
+MACHINE_CONFIG_START(ts3000_state::ts3000)
+ MCFG_DEVICE_ADD("maincpu", I8088, XTAL(14'318'181)/3) // no idea of clock
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+MACHINE_CONFIG_END
ROM_START( ts3000 )
ROM_REGION( 0x4000, "roms", 0 )
diff --git a/src/mame/drivers/ts803.cpp b/src/mame/drivers/ts803.cpp
index af40eda32b6..cdc949add4a 100644
--- a/src/mame/drivers/ts803.cpp
+++ b/src/mame/drivers/ts803.cpp
@@ -422,19 +422,18 @@ static const z80_daisy_config daisy_chain[] =
{ nullptr }
};
-void ts803_state::ts803(machine_config &config)
-{
+MACHINE_CONFIG_START(ts803_state::ts803)
Z80(config, m_maincpu, 16_MHz_XTAL / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &ts803_state::ts803_mem);
m_maincpu->set_addrmap(AS_IO, &ts803_state::ts803_io);
m_maincpu->set_daisy_config(daisy_chain);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_refresh_hz(60);
- screen.set_size(640,240);
- screen.set_visarea(0, 640-1, 0, 240-1);
- screen.set_screen_update("crtc", FUNC(sy6545_1_device::screen_update));
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(640,240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", sy6545_1_device, screen_update)
PALETTE(config, m_palette, palette_device::MONOCHROME);
/* crtc */
@@ -467,9 +466,11 @@ void ts803_state::ts803(machine_config &config)
/* floppy disk */
FD1793(config, m_fdc, 1_MHz_XTAL);
m_fdc->intrq_wr_callback().set("sti", FUNC(z80sti_device::i7_w));
- FLOPPY_CONNECTOR(config, "fdc:0", ts803_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", ts803_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
-}
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", ts803_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", ts803_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( ts803h )
diff --git a/src/mame/drivers/tsamurai.cpp b/src/mame/drivers/tsamurai.cpp
index 11816fbd3b6..bdbae8cbf5e 100644
--- a/src/mame/drivers/tsamurai.cpp
+++ b/src/mame/drivers/tsamurai.cpp
@@ -717,18 +717,18 @@ GFXDECODE_END
/*******************************************************************************/
-void tsamurai_state::tsamurai(machine_config &config)
-{
+MACHINE_CONFIG_START(tsamurai_state::tsamurai)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(24'000'000)/8);
- m_maincpu->set_addrmap(AS_PROGRAM, &tsamurai_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &tsamurai_state::z80_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(24'000'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(z80_io_map)
- Z80(config, m_audiocpu, XTAL(24'000'000)/8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &tsamurai_state::sound1_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(24'000'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(sound1_map)
- Z80(config, m_audio2, XTAL(24'000'000)/8);
- m_audio2->set_addrmap(AS_PROGRAM, &tsamurai_state::sound2_map);
+ MCFG_DEVICE_ADD("audio2", Z80, XTAL(24'000'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(sound2_map)
MCFG_MACHINE_START_OVERRIDE(tsamurai_state,tsamurai)
@@ -740,16 +740,16 @@ void tsamurai_state::tsamurai(machine_config &config)
mainlatch.q_out_cb<4>().set(FUNC(tsamurai_state::coin2_counter_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0, 255, 16, 255-16);
- screen.set_screen_update(FUNC(tsamurai_state::screen_update));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(tsamurai_state::vblank_irq));
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tsamurai);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 255-16)
+ MCFG_SCREEN_UPDATE_DRIVER(tsamurai_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, tsamurai_state, vblank_irq))
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tsamurai)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
MCFG_VIDEO_START_OVERRIDE(tsamurai_state,tsamurai)
@@ -758,24 +758,24 @@ void tsamurai_state::tsamurai(machine_config &config)
AY8910(config,"aysnd", XTAL(24'000'000)/8).add_route(ALL_OUTPUTS, "speaker", 0.1);
- DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, "speaker", 0.1); // unknown DAC
- DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.1); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.1) // unknown DAC
+ MCFG_DEVICE_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.1) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void tsamurai_state::vsgongf(machine_config &config)
-{
+MACHINE_CONFIG_START(tsamurai_state::vsgongf)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(24'000'000)/8);
- m_maincpu->set_addrmap(AS_PROGRAM, &tsamurai_state::vsgongf_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(24'000'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(vsgongf_map)
- Z80(config, m_audiocpu, XTAL(24'000'000)/8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &tsamurai_state::sound_vsgongf_map);
- m_audiocpu->set_addrmap(AS_IO, &tsamurai_state::vsgongf_audio_io_map);
- m_audiocpu->set_periodic_int(FUNC(tsamurai_state::vsgongf_sound_interrupt), attotime::from_hz(3*60));
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(24'000'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(sound_vsgongf_map)
+ MCFG_DEVICE_IO_MAP(vsgongf_audio_io_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(tsamurai_state, vsgongf_sound_interrupt, 3*60)
MCFG_MACHINE_START_OVERRIDE(tsamurai_state,vsgongf)
@@ -787,16 +787,16 @@ void tsamurai_state::vsgongf(machine_config &config)
mainlatch.q_out_cb<4>().set(FUNC(tsamurai_state::textbank1_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0, 255, 16, 255-16);
- screen.set_screen_update(FUNC(tsamurai_state::screen_update_vsgongf));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(tsamurai_state::vblank_irq));
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tsamurai);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 255-16)
+ MCFG_SCREEN_UPDATE_DRIVER(tsamurai_state, screen_update_vsgongf)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, tsamurai_state, vblank_irq))
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tsamurai)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
MCFG_VIDEO_START_OVERRIDE(tsamurai_state,vsgongf)
@@ -807,29 +807,28 @@ void tsamurai_state::vsgongf(machine_config &config)
AY8910(config,"aysnd", XTAL(24'000'000)/8).add_route(ALL_OUTPUTS, "speaker", 0.1);
- DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.1); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.1) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void tsamurai_state::m660(machine_config &config)
-{
+MACHINE_CONFIG_START(tsamurai_state::m660)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(24'000'000)/8);
- m_maincpu->set_addrmap(AS_PROGRAM, &tsamurai_state::m660_map);
- m_maincpu->set_addrmap(AS_IO, &tsamurai_state::z80_m660_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(24'000'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(m660_map)
+ MCFG_DEVICE_IO_MAP(z80_m660_io_map)
- Z80(config, m_audiocpu, XTAL(24'000'000)/8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &tsamurai_state::sound1_m660_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(24'000'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(sound1_m660_map)
- Z80(config, m_audio2, XTAL(24'000'000)/8);
- m_audio2->set_addrmap(AS_PROGRAM, &tsamurai_state::sound2_m660_map);
+ MCFG_DEVICE_ADD("audio2", Z80, XTAL(24'000'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(sound2_m660_map)
- Z80(config, m_audio3, XTAL(24'000'000)/8);
- m_audio3->set_addrmap(AS_PROGRAM, &tsamurai_state::sound3_m660_map);
- m_audio3->set_addrmap(AS_IO, &tsamurai_state::sound3_m660_io_map);
+ MCFG_DEVICE_ADD("audio3", Z80, XTAL(24'000'000)/8)
+ MCFG_DEVICE_PROGRAM_MAP(sound3_m660_map)
+ MCFG_DEVICE_IO_MAP(sound3_m660_io_map)
MCFG_MACHINE_START_OVERRIDE(tsamurai_state,m660)
@@ -852,7 +851,7 @@ void tsamurai_state::m660(machine_config &config)
screen.screen_vblank().set(FUNC(tsamurai_state::vblank_irq));
screen.screen_vblank().append_inputline(m_audio3, INPUT_LINE_NMI);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tsamurai);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tsamurai)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
MCFG_VIDEO_START_OVERRIDE(tsamurai_state,m660)
@@ -861,12 +860,12 @@ void tsamurai_state::m660(machine_config &config)
AY8910(config,"aysnd", XTAL(24'000'000)/8).add_route(ALL_OUTPUTS, "speaker", 0.1);
- DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, "speaker", 0.1); // unknown DAC
- DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.1); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.1) // unknown DAC
+ MCFG_DEVICE_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.1) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
/*******************************************************************************/
diff --git a/src/mame/drivers/tsispch.cpp b/src/mame/drivers/tsispch.cpp
index 59641e44c6f..106e6782950 100644
--- a/src/mame/drivers/tsispch.cpp
+++ b/src/mame/drivers/tsispch.cpp
@@ -369,8 +369,7 @@ INPUT_PORTS_END
/******************************************************************************
Machine Drivers
******************************************************************************/
-void tsispch_state::prose2k(machine_config &config)
-{
+MACHINE_CONFIG_START(tsispch_state::prose2k)
/* basic machine hardware */
/* There are two crystals on the board: a 24MHz xtal at Y2 and a 16MHz xtal at Y1 */
I8086(config, m_maincpu, 8000000); /* VERIFIED clock, unknown divider */
@@ -406,16 +405,15 @@ void tsispch_state::prose2k(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_12BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // unknown DAC (TODO: correctly figure out how the DAC works; apparently it is connected to the serial output of the upd7720, which will be "fun" to connect up)
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_12BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // unknown DAC (TODO: correctly figure out how the DAC works; apparently it is connected to the serial output of the upd7720, which will be "fun" to connect up)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
rs232.rxd_handler().set("i8251a_u15", FUNC(i8251_device::write_rxd));
rs232.dsr_handler().set("i8251a_u15", FUNC(i8251_device::write_dsr));
rs232.cts_handler().set("i8251a_u15", FUNC(i8251_device::write_cts));
-}
+MACHINE_CONFIG_END
/******************************************************************************
ROM Definitions
diff --git a/src/mame/drivers/ttchamp.cpp b/src/mame/drivers/ttchamp.cpp
index 270f1984a0e..45cbb0df0bf 100644
--- a/src/mame/drivers/ttchamp.cpp
+++ b/src/mame/drivers/ttchamp.cpp
@@ -645,30 +645,32 @@ INTERRUPT_GEN_MEMBER(ttchamp_state::irq)/* right? */
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
-void ttchamp_state::ttchamp(machine_config &config)
-{
+MACHINE_CONFIG_START(ttchamp_state::ttchamp)
/* basic machine hardware */
- V30(config, m_maincpu, 8000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &ttchamp_state::ttchamp_map);
- m_maincpu->set_addrmap(AS_IO, &ttchamp_state::ttchamp_io);
- m_maincpu->set_vblank_int("screen", FUNC(ttchamp_state::irq));
+ MCFG_DEVICE_ADD("maincpu", V30, 8000000)
+ MCFG_DEVICE_PROGRAM_MAP(ttchamp_map)
+ MCFG_DEVICE_IO_MAP(ttchamp_io)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ttchamp_state, irq)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(1024,1024);
- screen.set_visarea(0, 320-1, 0, 200-1);
- screen.set_screen_update(FUNC(ttchamp_state::screen_update));
- screen.set_palette(m_palette);
- PALETTE(config, m_palette).set_entries(0x400);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(1024,1024)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ttchamp_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 0x400)
NVRAM(config, "backram", nvram_device::DEFAULT_ALL_0);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 8000000/8, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 8000000/8, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+
+MACHINE_CONFIG_END
ROM_START( ttchamp )
ROM_REGION16_LE( 0x200000, "maincpu", 0 )
diff --git a/src/mame/drivers/tti.cpp b/src/mame/drivers/tti.cpp
index 0e0c3642858..97ad14dacdb 100644
--- a/src/mame/drivers/tti.cpp
+++ b/src/mame/drivers/tti.cpp
@@ -21,9 +21,6 @@ Other: LED, 20MHz crystal. Next to the MC68901P is another chip just as large (4
#include "machine/74259.h"
#include "machine/eepromser.h"
#include "machine/mc68901.h"
-#include "machine/ncr5390.h"
-#include "machine/nscsi_cd.h"
-#include "machine/nscsi_hd.h"
class tti_state : public driver_device
{
@@ -32,40 +29,19 @@ public:
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_mfp(*this, "mfp")
- , m_asc(*this, "scsibus:7:asc")
- , m_dma_address(0)
{ }
void tti(machine_config &config);
-protected:
- virtual void machine_start() override;
-
private:
- u8 asc_r(offs_t offset);
- void asc_w(offs_t offset, u8 data);
- void dma_address_w(offs_t offset, u8 data);
- u8 io_status_r();
- void channel_w(u8 data);
-
- void asc_config(device_t *device);
-
IRQ_CALLBACK_MEMBER(intack);
void prg_map(address_map &map);
required_device<cpu_device> m_maincpu;
required_device<mc68901_device> m_mfp;
- required_device<ncr53c90a_device> m_asc;
-
- u32 m_dma_address;
};
-void tti_state::machine_start()
-{
- save_item(NAME(m_dma_address));
-}
-
IRQ_CALLBACK_MEMBER(tti_state::intack)
{
return m_mfp->get_vector();
@@ -74,74 +50,12 @@ IRQ_CALLBACK_MEMBER(tti_state::intack)
static INPUT_PORTS_START( tti )
INPUT_PORTS_END
-u8 tti_state::asc_r(offs_t offset)
-{
- return m_asc->read(offset ^ 1);
-}
-
-void tti_state::asc_w(offs_t offset, u8 data)
-{
- m_asc->write(offset ^ 1, data);
-}
-
-void tti_state::dma_address_w(offs_t offset, u8 data)
-{
- m_dma_address &= ~(0xff000000 >> (offset * 8));
- m_dma_address |= u32(data) << (24 - offset * 8);
-}
-
-u8 tti_state::io_status_r()
-{
- return 0;
-}
-
-void tti_state::channel_w(u8 data)
-{
- switch (data & 0x03)
- {
- case 0:
- m_mfp->i4_w(0);
- break;
-
- case 1:
- m_mfp->i3_w(0);
- break;
-
- case 3:
- m_mfp->i5_w(0);
- break;
- }
-}
-
void tti_state::prg_map(address_map &map)
{
map(0x00000, 0x07fff).rom().region("maincpu", 0);
map(0x7e000, 0x7ffff).ram();
map(0x80000, 0x80017).rw(m_mfp, FUNC(mc68901_device::read), FUNC(mc68901_device::write));
- map(0x80018, 0x8001f).ram();
- map(0x80020, 0x8002b).rw(FUNC(tti_state::asc_r), FUNC(tti_state::asc_w));
map(0x80070, 0x80077).w("bitlatch", FUNC(ls259_device::write_d0));
- map(0x80078, 0x8007b).w(FUNC(tti_state::dma_address_w));
- map(0x8007c, 0x8007c).r(FUNC(tti_state::io_status_r));
- map(0x8007d, 0x8007d).w(FUNC(tti_state::channel_w));
-}
-
-static void tti_scsi_devices(device_slot_interface &device)
-{
- // FIXME: these device options are placeholders
- device.option_add("cdrom", NSCSI_CDROM);
- device.option_add("harddisk", NSCSI_HARDDISK);
- device.option_add_internal("asc", NCR53C90A);
-}
-
-void tti_state::asc_config(device_t *device)
-{
- ncr53c90a_device &adapter = downcast<ncr53c90a_device &>(*device);
-
- adapter.set_clock(20_MHz_XTAL);
-
- adapter.irq_handler_cb().set(m_mfp, FUNC(mc68901_device::i7_w)).invert();
- //adapter.drq_handler_cb().set(?);
}
void tti_state::tti(machine_config &config)
@@ -157,16 +71,6 @@ void tti_state::tti(machine_config &config)
m_mfp->out_so_cb().set("rs232", FUNC(rs232_port_device::write_txd));
m_mfp->out_irq_cb().set_inputline("maincpu", M68K_IRQ_5);
- NSCSI_BUS(config, "scsibus");
- NSCSI_CONNECTOR(config, "scsibus:0", tti_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:1", tti_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:2", tti_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:3", tti_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:4", tti_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:5", tti_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:6", tti_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:7", tti_scsi_devices, "asc", true).set_option_machine_config("asc", [this] (device_t *device) { asc_config(device); });
-
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
rs232.rxd_handler().set(m_mfp, FUNC(mc68901_device::write_rx));
diff --git a/src/mame/drivers/tubep.cpp b/src/mame/drivers/tubep.cpp
index f0fd25ade8a..c2ace202c4a 100644
--- a/src/mame/drivers/tubep.cpp
+++ b/src/mame/drivers/tubep.cpp
@@ -820,25 +820,25 @@ INPUT_PORTS_END
*
*************************************/
-void tubep_state::tubep(machine_config &config)
-{
+MACHINE_CONFIG_START(tubep_state::tubep)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 16000000 / 4); /* 4 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &tubep_state::tubep_main_map);
- m_maincpu->set_addrmap(AS_IO, &tubep_state::tubep_main_portmap);
+ MCFG_DEVICE_ADD("maincpu",Z80,16000000 / 4) /* 4 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(tubep_main_map)
+ MCFG_DEVICE_IO_MAP(tubep_main_portmap)
- Z80(config, m_slave, 16000000 / 4); /* 4 MHz */
- m_slave->set_addrmap(AS_PROGRAM, &tubep_state::tubep_second_map);
- m_slave->set_addrmap(AS_IO, &tubep_state::tubep_second_portmap);
+ MCFG_DEVICE_ADD("slave",Z80,16000000 / 4) /* 4 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(tubep_second_map)
+ MCFG_DEVICE_IO_MAP(tubep_second_portmap)
- Z80(config, m_soundcpu, 19968000 / 8); /* X2 19968000 Hz divided by LS669 (on Qc output) (signal RH0) */
- m_soundcpu->set_addrmap(AS_PROGRAM, &tubep_state::tubep_sound_map);
- m_soundcpu->set_addrmap(AS_IO, &tubep_state::tubep_sound_portmap);
+ MCFG_DEVICE_ADD("soundcpu",Z80,19968000 / 8) /* X2 19968000 Hz divided by LS669 (on Qc output) (signal RH0) */
+ MCFG_DEVICE_PROGRAM_MAP(tubep_sound_map)
+ MCFG_DEVICE_IO_MAP(tubep_sound_portmap)
- NSC8105(config, m_mcu, 6000000); /* 6 MHz Xtal - divided internally ??? */
- m_mcu->set_addrmap(AS_PROGRAM, &tubep_state::nsc_map);
+ MCFG_DEVICE_ADD("mcu",NSC8105,6000000) /* 6 MHz Xtal - divided internally ??? */
+ MCFG_DEVICE_PROGRAM_MAP(nsc_map)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set(FUNC(tubep_state::coin1_counter_w));
@@ -852,12 +852,12 @@ void tubep_state::tubep(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(tubep_state,tubep)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(256, 264);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(tubep_state::screen_update_tubep));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(256, 264)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tubep_state, screen_update_tubep)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(tubep_state::tubep_palette), 32 + 256*64);
@@ -878,37 +878,39 @@ void tubep_state::tubep(machine_config &config)
ay3.port_a_write_callback().set(FUNC(tubep_state::ay8910_portA_2_w));
ay3.port_b_write_callback().set(FUNC(tubep_state::ay8910_portB_2_w));
ay3.add_route(ALL_OUTPUTS, "mono", 0.10);
-}
+MACHINE_CONFIG_END
-void tubep_state::tubepb(machine_config &config)
-{
+
+MACHINE_CONFIG_START(tubep_state::tubepb)
tubep(config);
- M6802(config.replace(), m_mcu, 6000000); /* ? MHz Xtal */
- m_mcu->set_addrmap(AS_PROGRAM, &tubep_state::nsc_map);
+ MCFG_DEVICE_REPLACE("mcu", M6802,6000000) /* ? MHz Xtal */
+ MCFG_DEVICE_PROGRAM_MAP(nsc_map)
- //m_screen->screen_vblank().set_inputline(m_mcu, INPUT_LINE_NMI);
-}
+ //MCFG_SCREEN_MODIFY("screen")
+ //MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("mcu", INPUT_LINE_NMI))
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_START(tubep_state::rjammer)
-void tubep_state::rjammer(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, 16000000 / 4); /* 4 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &tubep_state::rjammer_main_map);
- m_maincpu->set_addrmap(AS_IO, &tubep_state::rjammer_main_portmap);
+ MCFG_DEVICE_ADD("maincpu",Z80,16000000 / 4) /* 4 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(rjammer_main_map)
+ MCFG_DEVICE_IO_MAP(rjammer_main_portmap)
- Z80(config, m_slave, 16000000 / 4); /* 4 MHz */
- m_slave->set_addrmap(AS_PROGRAM, &tubep_state::rjammer_second_map);
- m_slave->set_addrmap(AS_IO, &tubep_state::rjammer_second_portmap);
+ MCFG_DEVICE_ADD("slave",Z80,16000000 / 4) /* 4 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(rjammer_second_map)
+ MCFG_DEVICE_IO_MAP(rjammer_second_portmap)
- Z80(config, m_soundcpu, 19968000 / 8); /* X2 19968000 Hz divided by LS669 (on Qc output) (signal RH0) */
- m_soundcpu->set_addrmap(AS_PROGRAM, &tubep_state::rjammer_sound_map);
- m_soundcpu->set_addrmap(AS_IO, &tubep_state::rjammer_sound_portmap);
+ MCFG_DEVICE_ADD("soundcpu",Z80,19968000 / 8) /* X2 19968000 Hz divided by LS669 (on Qc output) (signal RH0) */
+ MCFG_DEVICE_PROGRAM_MAP(rjammer_sound_map)
+ MCFG_DEVICE_IO_MAP(rjammer_sound_portmap)
GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI);
- NSC8105(config, m_mcu, 6000000); /* 6 MHz Xtal - divided internally ??? */
- m_mcu->set_addrmap(AS_PROGRAM, &tubep_state::nsc_map);
+ MCFG_DEVICE_ADD("mcu",NSC8105,6000000) /* 6 MHz Xtal - divided internally ??? */
+ MCFG_DEVICE_PROGRAM_MAP(nsc_map)
ls259_device &mainlatch(LS259(config, "mainlatch")); // 3A
mainlatch.q_out_cb<0>().set(FUNC(tubep_state::coin1_counter_w));
@@ -918,13 +920,14 @@ void tubep_state::rjammer(machine_config &config)
MCFG_MACHINE_START_OVERRIDE(tubep_state,rjammer)
MCFG_MACHINE_RESET_OVERRIDE(tubep_state,rjammer)
+
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(256, 264);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(tubep_state::screen_update_rjammer));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(256, 264)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tubep_state, screen_update_rjammer)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(tubep_state::rjammer_palette), 64);
@@ -946,11 +949,12 @@ void tubep_state::rjammer(machine_config &config)
ay3.port_b_write_callback().set(FUNC(tubep_state::ay8910_portB_2_w));
ay3.add_route(ALL_OUTPUTS, "mono", 0.10);
- MSM5205(config, m_msm, 384000);
- m_msm->vck_legacy_callback().set(FUNC(tubep_state::rjammer_adpcm_vck)); /* VCK function */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz (changes at run time) */
- m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, 384000)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, tubep_state, rjammer_adpcm_vck)) /* VCK function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz (changes at run time) */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tugboat.cpp b/src/mame/drivers/tugboat.cpp
index 93e6e1863d6..55e3d72b31c 100644
--- a/src/mame/drivers/tugboat.cpp
+++ b/src/mame/drivers/tugboat.cpp
@@ -359,10 +359,9 @@ static GFXDECODE_START( gfx_tugboat )
GFXDECODE_END
-void tugboat_state::tugboat(machine_config &config)
-{
- M6502(config, m_maincpu, 2000000); /* 2 MHz ???? */
- m_maincpu->set_addrmap(AS_PROGRAM, &tugboat_state::main_map);
+MACHINE_CONFIG_START(tugboat_state::tugboat)
+ MCFG_DEVICE_ADD("maincpu", M6502, 2000000) /* 2 MHz ???? */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
pia6821_device &pia0(PIA6821(config, "pia0", 0));
pia0.readpa_handler().set(FUNC(tugboat_state::input_r));
@@ -371,13 +370,13 @@ void tugboat_state::tugboat(machine_config &config)
pia1.readpa_handler().set_ioport("DSW");
pia1.writepb_handler().set(FUNC(tugboat_state::ctrl_w));
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(32*8,32*8);
- m_screen->set_visarea(1*8,31*8-1,2*8,30*8-1);
- m_screen->set_screen_update(FUNC(tugboat_state::screen_update));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(32*8,32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8,31*8-1,2*8,30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tugboat_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_tugboat);
PALETTE(config, m_palette, FUNC(tugboat_state::tugboat_palette), 256);
@@ -386,7 +385,7 @@ void tugboat_state::tugboat(machine_config &config)
SPEAKER(config, "mono").front_center();
AY8912(config, "aysnd", XTAL(10'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.35);
-}
+MACHINE_CONFIG_END
ROM_START( tugboat )
diff --git a/src/mame/drivers/tumbleb.cpp b/src/mame/drivers/tumbleb.cpp
index 0b91a31aacf..a1bc8f73e50 100644
--- a/src/mame/drivers/tumbleb.cpp
+++ b/src/mame/drivers/tumbleb.cpp
@@ -321,12 +321,12 @@ WRITE16_MEMBER(tumbleb_state::tumblepb_oki_w)
{
if (mem_mask == 0xffff)
{
- m_oki->write(data & 0xff);
+ m_oki->write(space, 0, data & 0xff);
//printf("tumbleb_oki_w %04x %04x\n", data, mem_mask);
}
else
{
- m_oki->write((data >> 8) & 0xff);
+ m_oki->write(space, 0, (data >> 8) & 0xff);
//printf("tumbleb_oki_w %04x %04x\n", data, mem_mask);
}
/* STUFF IN OTHER BYTE TOO..*/
@@ -428,14 +428,14 @@ command 1 - stop?
void tumbleb_state::tumbleb2_playmusic(okim6295_device *oki)
{
- int status = oki->read();
+ int status = oki->read_status();
if (m_music_is_playing)
{
if (!BIT(status, 3))
{
- oki->write(0x80 | m_music_command);
- oki->write(0x00 | 0x82);
+ oki->write_command(0x80 | m_music_command);
+ oki->write_command(0x00 | 0x82);
}
}
}
@@ -476,22 +476,22 @@ void tumbleb_state::tumbleb2_set_music_bank( int bank )
void tumbleb_state::tumbleb2_play_sound( okim6295_device *oki, int data )
{
- int status = oki->read();
+ int status = oki->read_status();
if (!BIT(status, 0))
{
- oki->write(0x80 | data);
- oki->write(0x00 | 0x12);
+ oki->write_command(0x80 | data);
+ oki->write_command(0x00 | 0x12);
}
else if (!BIT(status, 1))
{
- oki->write(0x80 | data);
- oki->write(0x00 | 0x22);
+ oki->write_command(0x80 | data);
+ oki->write_command(0x00 | 0x22);
}
else if (!BIT(status, 2))
{
- oki->write(0x80 | data);
- oki->write(0x00 | 0x42);
+ oki->write_command(0x80 | data);
+ oki->write_command(0x00 | 0x42);
}
}
@@ -509,13 +509,13 @@ void tumbleb_state::tumbleb2_play_sound( okim6295_device *oki, int data )
void tumbleb_state::process_tumbleb2_music_command( okim6295_device *oki, int data )
{
- int status = oki->read();
+ int status = oki->read_status();
if (data == 1) // stop?
{
if (BIT(status, 3))
{
- oki->write(0x40); /* Stop playing music */
+ oki->write_command(0x40); /* Stop playing music */
m_music_is_playing = 0;
}
}
@@ -524,7 +524,7 @@ void tumbleb_state::process_tumbleb2_music_command( okim6295_device *oki, int da
if (m_music_is_playing != data)
{
m_music_is_playing = data;
- oki->write(0x40); // stop the current music
+ oki->write_command(0x40); // stop the current music
switch (data)
{
case 0x04: // map screen
@@ -2065,31 +2065,31 @@ MACHINE_RESET_MEMBER(tumbleb_state,tumbleb)
memset(m_control_0, 0, sizeof(m_control_0));
}
-void tumbleb_state::tumblepb(machine_config &config)
-{
+MACHINE_CONFIG_START(tumbleb_state::tumblepb)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 14000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &tumbleb_state::tumblepopb_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(tumbleb_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 14000000)
+ MCFG_DEVICE_PROGRAM_MAP(tumblepopb_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tumbleb_state, irq6_line_hold)
MCFG_MACHINE_START_OVERRIDE(tumbleb_state,tumbleb)
MCFG_MACHINE_RESET_OVERRIDE(tumbleb_state,tumbleb)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(58);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(529));
- m_screen->set_size(40*8, 32*8);
- m_screen->set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- m_screen->set_screen_update(FUNC(tumbleb_state::screen_update_tumblepb));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_tumblepb)
+ MCFG_SCREEN_PALETTE(m_palette)
DECO_SPRITE(config, m_sprgen, 0);
m_sprgen->set_gfx_region(3);
m_sprgen->set_is_bootleg(true);
m_sprgen->set_gfxdecode_tag(m_gfxdecode);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tumbleb);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_tumbleb)
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 1024);
MCFG_VIDEO_START_OVERRIDE(tumbleb_state,tumblepb)
@@ -2097,40 +2097,41 @@ void tumbleb_state::tumblepb(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, 8000000/10, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.70);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 8000000/10, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
+MACHINE_CONFIG_END
-void tumbleb_state::tumblepba(machine_config &config)
-{
+MACHINE_CONFIG_START(tumbleb_state::tumblepba)
tumblepb(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &tumbleb_state::tumblepopba_main_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tumblepopba_main_map)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(tumbleb_state::tumbleb2)
-void tumbleb_state::tumbleb2(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, 14000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &tumbleb_state::tumblepopb_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(tumbleb_state::tumbleb2_interrupt));
+ MCFG_DEVICE_ADD(m_maincpu, M68000, 14000000)
+ MCFG_DEVICE_PROGRAM_MAP(tumblepopb_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tumbleb_state, tumbleb2_interrupt)
MCFG_MACHINE_START_OVERRIDE(tumbleb_state,tumbleb)
MCFG_MACHINE_RESET_OVERRIDE(tumbleb_state,tumbleb)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(58);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(529));
- m_screen->set_size(40*8, 32*8);
- m_screen->set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- m_screen->set_screen_update(FUNC(tumbleb_state::screen_update_tumblepb));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_tumblepb)
+ MCFG_SCREEN_PALETTE(m_palette)
DECO_SPRITE(config, m_sprgen, 0);
m_sprgen->set_gfx_region(3);
m_sprgen->set_is_bootleg(true);
m_sprgen->set_gfxdecode_tag(m_gfxdecode);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tumbleb);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_tumbleb)
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 1024);
MCFG_VIDEO_START_OVERRIDE(tumbleb_state,tumblepb)
@@ -2138,8 +2139,9 @@ void tumbleb_state::tumbleb2(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, 8000000/10, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.70);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 8000000/10, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
+MACHINE_CONFIG_END
void tumbleb_state::funkyjetb(machine_config &config)
{
@@ -2149,35 +2151,35 @@ void tumbleb_state::funkyjetb(machine_config &config)
m_maincpu->set_vblank_int("screen", FUNC(tumbleb_state::irq6_line_hold));
}
-void tumbleb_state::jumpkids(machine_config &config)
-{
+MACHINE_CONFIG_START(tumbleb_state::jumpkids)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &tumbleb_state::jumpkids_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(tumbleb_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(jumpkids_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tumbleb_state, irq6_line_hold)
/* z80? */
- Z80(config, m_audiocpu, 8000000/2);
- m_audiocpu->set_addrmap(AS_PROGRAM, &tumbleb_state::jumpkids_sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 8000000/2)
+ MCFG_DEVICE_PROGRAM_MAP(jumpkids_sound_map)
MCFG_MACHINE_START_OVERRIDE(tumbleb_state,tumbleb)
MCFG_MACHINE_RESET_OVERRIDE(tumbleb_state,tumbleb)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(529));
- m_screen->set_size(40*8, 32*8);
- m_screen->set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- m_screen->set_screen_update(FUNC(tumbleb_state::screen_update_jumpkids));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_jumpkids)
+ MCFG_SCREEN_PALETTE(m_palette)
DECO_SPRITE(config, m_sprgen, 0);
m_sprgen->set_gfx_region(3);
m_sprgen->set_is_bootleg(true);
m_sprgen->set_gfxdecode_tag(m_gfxdecode);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tumbleb);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_tumbleb)
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 1024);
MCFG_VIDEO_START_OVERRIDE(tumbleb_state,tumblepb)
@@ -2187,27 +2189,28 @@ void tumbleb_state::jumpkids(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- OKIM6295(config, m_oki, 8000000/8, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.70);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 8000000/8, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(tumbleb_state::fncywld)
-void tumbleb_state::fncywld(machine_config &config)
-{
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &tumbleb_state::fncywld_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(tumbleb_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
+ MCFG_DEVICE_PROGRAM_MAP(fncywld_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tumbleb_state, irq6_line_hold)
MCFG_MACHINE_START_OVERRIDE(tumbleb_state,tumbleb)
MCFG_MACHINE_RESET_OVERRIDE(tumbleb_state,tumbleb)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(529));
- m_screen->set_size(40*8, 32*8);
- m_screen->set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- m_screen->set_screen_update(FUNC(tumbleb_state::screen_update_fncywld));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_fncywld)
+ MCFG_SCREEN_PALETTE(m_palette)
DECO_SPRITE(config, m_sprgen, 0);
m_sprgen->set_gfx_region(3);
@@ -2215,7 +2218,7 @@ void tumbleb_state::fncywld(machine_config &config)
m_sprgen->set_transpen(15);
m_sprgen->set_gfxdecode_tag(m_gfxdecode);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_fncywld);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_fncywld)
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 0x800);
MCFG_VIDEO_START_OVERRIDE(tumbleb_state,fncywld)
@@ -2225,28 +2228,29 @@ void tumbleb_state::fncywld(machine_config &config)
YM2151(config, "ymsnd", 32220000/9).add_route(ALL_OUTPUTS, "mono", 0.10);
- OKIM6295(config, m_oki, 1023924, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1023924, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/// OSCs: 12MHz, 4MHz, 28.63636MHz, not the same PCB as fncywld
-void tumbleb_state::magipur(machine_config &config)
-{
+MACHINE_CONFIG_START(tumbleb_state::magipur)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(12'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &tumbleb_state::magipur_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(tumbleb_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(12'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(magipur_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tumbleb_state, irq6_line_hold)
MCFG_MACHINE_START_OVERRIDE(tumbleb_state,tumbleb)
MCFG_MACHINE_RESET_OVERRIDE(tumbleb_state,tumbleb)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60); // refresh rate not verified
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(529));
- m_screen->set_size(40*8, 32*8);
- m_screen->set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- m_screen->set_screen_update(FUNC(tumbleb_state::screen_update_fncywld));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60) // refresh rate not verified
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_fncywld)
+ MCFG_SCREEN_PALETTE(m_palette)
DECO_SPRITE(config, m_sprgen, 0);
m_sprgen->set_gfx_region(3);
@@ -2264,8 +2268,9 @@ void tumbleb_state::magipur(machine_config &config)
YM2151(config, "ymsnd", XTAL(4'000'000)).add_route(ALL_OUTPUTS, "mono", 0.10);
- OKIM6295(config, m_oki, XTAL(4'000'000)/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 not verified
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(4'000'000)/4, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
MACHINE_RESET_MEMBER(tumbleb_state,htchctch)
diff --git a/src/mame/drivers/turbo.cpp b/src/mame/drivers/turbo.cpp
index 80e6d144308..37d450bdf08 100644
--- a/src/mame/drivers/turbo.cpp
+++ b/src/mame/drivers/turbo.cpp
@@ -843,12 +843,12 @@ GFXDECODE_END
*
*************************************/
-void turbo_state::turbo(machine_config &config)
-{
+MACHINE_CONFIG_START(turbo_state::turbo)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &turbo_state::turbo_map);
- m_maincpu->set_vblank_int("screen", FUNC(turbo_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(turbo_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", turbo_state, irq0_line_hold)
I8255(config, m_i8255_0);
m_i8255_0->out_pa_callback().set(FUNC(turbo_state::turbo_ppi0a_w));
@@ -884,25 +884,25 @@ void turbo_state::turbo(machine_config &config)
GFXDECODE(config, m_gfxdecode, "palette", gfx_turbo);
PALETTE(config, "palette", FUNC(turbo_state::turbo_palette), 256);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(turbo_state::screen_update_turbo));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(turbo_state, screen_update_turbo)
+ MCFG_SCREEN_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(turbo_state,turbo)
/* sound hardware */
turbo_samples(config);
-}
+MACHINE_CONFIG_END
-void turbo_state::subroc3d(machine_config &config)
-{
+MACHINE_CONFIG_START(turbo_state::subroc3d)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &turbo_state::subroc3d_map);
- m_maincpu->set_vblank_int("screen", FUNC(turbo_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(subroc3d_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", turbo_state, irq0_line_hold)
I8255(config, m_i8255_0);
m_i8255_0->out_pa_callback().set(FUNC(turbo_state::subroc3d_ppi0a_w));
@@ -923,32 +923,32 @@ void turbo_state::subroc3d(machine_config &config)
GFXDECODE(config, m_gfxdecode, "palette", gfx_turbo);
PALETTE(config, "palette", FUNC(turbo_state::subroc3d_palette), 256);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(turbo_state::screen_update_subroc3d));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(turbo_state, screen_update_subroc3d)
+ MCFG_SCREEN_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(turbo_state,turbo)
/* sound hardware */
subroc3d_samples(config);
-}
+MACHINE_CONFIG_END
-void turbo_state::buckrog(machine_config &config)
-{
+MACHINE_CONFIG_START(turbo_state::buckrog)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &turbo_state::buckrog_map);
- m_maincpu->set_addrmap(AS_OPCODES, &turbo_state::decrypted_opcodes_map);
- m_maincpu->set_vblank_int("screen", FUNC(turbo_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(buckrog_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", turbo_state, irq0_line_hold)
- Z80(config, m_subcpu, MASTER_CLOCK/4);
- m_subcpu->set_addrmap(AS_PROGRAM, &turbo_state::buckrog_cpu2_map);
- m_subcpu->set_addrmap(AS_IO, &turbo_state::buckrog_cpu2_portmap);
+ MCFG_DEVICE_ADD("subcpu", Z80, MASTER_CLOCK/4)
+ MCFG_DEVICE_PROGRAM_MAP(buckrog_cpu2_map)
+ MCFG_DEVICE_IO_MAP(buckrog_cpu2_portmap)
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
MCFG_MACHINE_RESET_OVERRIDE(turbo_state,buckrog)
I8255(config, m_i8255_0);
@@ -970,25 +970,23 @@ void turbo_state::buckrog(machine_config &config)
GFXDECODE(config, m_gfxdecode, "palette", gfx_turbo);
PALETTE(config, "palette", FUNC(turbo_state::buckrog_palette), 1024);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(turbo_state::screen_update_buckrog));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(turbo_state, screen_update_buckrog)
+ MCFG_SCREEN_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(turbo_state,buckrog)
/* sound hardware */
buckrog_samples(config);
-}
+MACHINE_CONFIG_END
-void turbo_state::buckrogu(machine_config &config)
-{
+MACHINE_CONFIG_START(turbo_state::buckrogu)
buckrog(config);
- Z80(config.replace(), m_maincpu, MASTER_CLOCK/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &turbo_state::buckrog_map);
- m_maincpu->set_vblank_int("screen", FUNC(turbo_state::irq0_line_hold));
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES)
+MACHINE_CONFIG_END
void turbo_state::buckroge(machine_config &config)
diff --git a/src/mame/drivers/turrett.cpp b/src/mame/drivers/turrett.cpp
index a6a8e3d4ddd..de69211ca0e 100644
--- a/src/mame/drivers/turrett.cpp
+++ b/src/mame/drivers/turrett.cpp
@@ -80,7 +80,7 @@ void turrett_state::machine_reset()
void turrett_state::cpu_map(address_map &map)
{
- map(0x00000000, 0x0007ffff).ram().mirror(0x40000000);
+ map(0x00000000, 0x0007ffff).ram();
map(0x02000010, 0x02000013).ram();
map(0x02000040, 0x02000043).ram();
map(0x02000050, 0x02000053).ram();
@@ -345,8 +345,8 @@ void turrett_devices(device_slot_interface &device)
*
*************************************/
-void turrett_state::turrett(machine_config &config)
-{
+MACHINE_CONFIG_START(turrett_state::turrett)
+
/* basic machine hardware */
R3041(config, m_maincpu, R3041_CLOCK);
m_maincpu->set_endianness(ENDIANNESS_BIG);
@@ -359,12 +359,12 @@ void turrett_state::turrett(machine_config &config)
ATA_INTERFACE(config, m_ata).options(turrett_devices, "hdd", nullptr, true);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ MCFG_SCREEN_ADD("screen", RASTER)
// TODO: Likely not correct. Refresh rate empirically determined
// to ensure in-sync streaming sound
- m_screen->set_raw(4000000, 512, 0, 336, 259, 0, 244);
- m_screen->set_screen_update(FUNC(turrett_state::screen_update));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_RAW_PARAMS(4000000, 512, 0, 336, 259, 0, 244)
+ MCFG_SCREEN_UPDATE_DRIVER(turrett_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::RGB_555);
@@ -372,11 +372,11 @@ void turrett_state::turrett(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- turrett_device &ttsound(TURRETT(config, "ttsound", R3041_CLOCK)); // ?
- ttsound.set_addrmap(0, &turrett_state::turrett_sound_map);
- ttsound.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- ttsound.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("ttsound", TURRETT, R3041_CLOCK) // ?
+ MCFG_DEVICE_ADDRESS_MAP(0, turrett_sound_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tutankhm.cpp b/src/mame/drivers/tutankhm.cpp
index 7e07de74dc9..99acaf88b9d 100644
--- a/src/mame/drivers/tutankhm.cpp
+++ b/src/mame/drivers/tutankhm.cpp
@@ -226,11 +226,11 @@ void tutankhm_state::machine_reset()
m_irq_toggle = 0;
}
-void tutankhm_state::tutankhm(machine_config &config)
-{
+MACHINE_CONFIG_START(tutankhm_state::tutankhm)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, XTAL(18'432'000)/12); /* 1.5 MHz ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &tutankhm_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(18'432'000)/12) /* 1.5 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
ls259_device &mainlatch(LS259(config, "mainlatch")); // C3
mainlatch.q_out_cb<0>().set(FUNC(tutankhm_state::irq_enable_w));
@@ -245,19 +245,19 @@ void tutankhm_state::tutankhm(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); /* not sure about the visible area */
- screen.set_screen_update(FUNC(tutankhm_state::screen_update_tutankhm));
- screen.screen_vblank().set(FUNC(tutankhm_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) /* not sure about the visible area */
+ MCFG_SCREEN_UPDATE_DRIVER(tutankhm_state, screen_update_tutankhm)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, tutankhm_state, vblank_irq))
PALETTE(config, m_palette).set_format(palette_device::BGR_233, 16);
/* sound hardware */
TIMEPLT_AUDIO(config, "timeplt_audio");
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/tutor.cpp b/src/mame/drivers/tutor.cpp
index 9fed2d71e4c..ab718403dbf 100644
--- a/src/mame/drivers/tutor.cpp
+++ b/src/mame/drivers/tutor.cpp
@@ -296,17 +296,17 @@ READ8_MEMBER( tutor_state::key_r )
char port[12];
uint8_t value;
- snprintf(port, ARRAY_LENGTH(port), "LINE%d", (offset & 0x007e) >> 3);
+ snprintf(port, ARRAY_LENGTH(port), "LINE%d", offset);
value = ioport(port)->read();
/* hack for ports overlapping with joystick */
- if (offset >= 32 && offset < 48)
+ if (offset == 4 || offset == 5)
{
- snprintf(port, ARRAY_LENGTH(port), "LINE%d_alt", (offset & 0x007e) >> 3);
+ snprintf(port, ARRAY_LENGTH(port), "LINE%d_alt", offset);
value |= ioport(port)->read();
}
- return BIT(value, offset & 7);
+ return value;
}
@@ -559,10 +559,10 @@ void tutor_state::tutor_memmap(address_map &map)
map(0x8000, 0xbfff).bankr("bank2").nopw();
map(0xc000, 0xdfff).noprw(); /*free for expansion, or cartridge ROM?*/
- map(0xe000, 0xe000).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); /*VDP data*/
- map(0xe002, 0xe002).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));/*VDP status*/
+ map(0xe000, 0xe000).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w)); /*VDP data*/
+ map(0xe002, 0xe002).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));/*VDP status*/
map(0xe100, 0xe1ff).rw(FUNC(tutor_state::tutor_mapper_r), FUNC(tutor_state::tutor_mapper_w)); /*cartridge mapper*/
- map(0xe200, 0xe200).w("sn76489a", FUNC(sn76489a_device::write)); /*sound chip*/
+ map(0xe200, 0xe200).w("sn76489a", FUNC(sn76489a_device::command_w)); /*sound chip*/
map(0xe800, 0xe8ff).rw(FUNC(tutor_state::tutor_printer_r), FUNC(tutor_state::tutor_printer_w)); /*printer*/
map(0xee00, 0xeeff).nopr().w(FUNC(tutor_state::tutor_cassette_w)); /*cassette interface*/
@@ -576,10 +576,10 @@ void tutor_state::pyuutajr_mem(address_map &map)
map(0x8000, 0xbfff).bankr("bank2").nopw();
map(0xc000, 0xdfff).noprw(); /*free for expansion, or cartridge ROM?*/
- map(0xe000, 0xe000).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); /*VDP data*/
- map(0xe002, 0xe002).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));/*VDP status*/
+ map(0xe000, 0xe000).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w)); /*VDP data*/
+ map(0xe002, 0xe002).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));/*VDP status*/
map(0xe100, 0xe1ff).rw(FUNC(tutor_state::tutor_mapper_r), FUNC(tutor_state::tutor_mapper_w)); /*cartridge mapper*/
- map(0xe200, 0xe200).w("sn76489a", FUNC(sn76489a_device::write)); /*sound chip*/
+ map(0xe200, 0xe200).w("sn76489a", FUNC(sn76489a_device::command_w)); /*sound chip*/
map(0xe800, 0xe800).portr("LINE0");
map(0xea00, 0xea00).portr("LINE1");
map(0xec00, 0xec00).portr("LINE2");
@@ -600,8 +600,8 @@ void tutor_state::pyuutajr_mem(address_map &map)
void tutor_state::tutor_io(address_map &map)
{
- map(0xec00, 0xec7f).r(FUNC(tutor_state::key_r)); /*keyboard interface*/
- map(0xed00, 0xed01).r(FUNC(tutor_state::tutor_cassette_r)); /*cassette interface*/
+ map(0xec0, 0xec7).r(FUNC(tutor_state::key_r)); /*keyboard interface*/
+ map(0xed0, 0xed0).r(FUNC(tutor_state::tutor_cassette_r)); /*cassette interface*/
}
/* tutor keyboard: 56 keys
@@ -743,8 +743,7 @@ static INPUT_PORTS_START(pyuutajr)
PORT_BIT(0xff, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
-void tutor_state::tutor(machine_config &config)
-{
+MACHINE_CONFIG_START(tutor_state::tutor)
// basic machine hardware
// TMS9995 CPU @ 10.7 MHz
// No lines connected yet
@@ -764,8 +763,7 @@ void tutor_state::tutor(machine_config &config)
CENTRONICS(config, m_centronics, centronics_devices, "printer").busy_handler().set(FUNC(tutor_state::write_centronics_busy));
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
// Cassette
SPEAKER(config, "cass_out").front_center();
@@ -777,15 +775,15 @@ void tutor_state::tutor(machine_config &config)
// software lists
SOFTWARE_LIST(config, "cart_list").set_type("tutor", SOFTWARE_LIST_ORIGINAL_SYSTEM);
-}
+MACHINE_CONFIG_END
-void tutor_state::pyuutajr(machine_config &config)
-{
+MACHINE_CONFIG_START(tutor_state::pyuutajr)
tutor(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &tutor_state::pyuutajr_mem);
- //config.device_remove("centronics");
- //config.device_remove("cassette");
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(pyuutajr_mem)
+ //MCFG_DEVICE_REMOVE("centronics")
+ //MCFG_DEVICE_REMOVE("cassette")
+MACHINE_CONFIG_END
/*
ROM loading
diff --git a/src/mame/drivers/tv910.cpp b/src/mame/drivers/tv910.cpp
index fbf245f8e86..0cc5422dca5 100644
--- a/src/mame/drivers/tv910.cpp
+++ b/src/mame/drivers/tv910.cpp
@@ -68,13 +68,13 @@ private:
MC6845_UPDATE_ROW(crtc_update_row);
MC6845_ON_UPDATE_ADDR_CHANGED(crtc_update_addr);
- uint8_t charset_r();
- uint8_t kbd_ascii_r();
- uint8_t kbd_flags_r();
+ DECLARE_READ8_MEMBER(charset_r);
+ DECLARE_READ8_MEMBER(kbd_ascii_r);
+ DECLARE_READ8_MEMBER(kbd_flags_r);
- void vbl_ack_w(uint8_t data);
- void nmi_ack_w(uint8_t data);
- void control_w(uint8_t data);
+ DECLARE_WRITE8_MEMBER(vbl_ack_w);
+ DECLARE_WRITE8_MEMBER(nmi_ack_w);
+ DECLARE_WRITE8_MEMBER(control_w);
DECLARE_WRITE_LINE_MEMBER(vbl_w);
@@ -124,7 +124,7 @@ void tv910_state::tv910_mem(address_map &map)
map(0xf000, 0xffff).rom().region("maincpu", 0);
}
-void tv910_state::control_w(uint8_t data)
+WRITE8_MEMBER(tv910_state::control_w)
{
m_control = data;
#if 0
@@ -140,23 +140,23 @@ void tv910_state::control_w(uint8_t data)
m_beep->set_state(BIT(data, 0));
}
-uint8_t tv910_state::charset_r()
+READ8_MEMBER(tv910_state::charset_r)
{
return m_charset->read();
}
-void tv910_state::nmi_ack_w(uint8_t data)
+WRITE8_MEMBER(tv910_state::nmi_ack_w)
{
m_maincpu->set_input_line(M6502_NMI_LINE, CLEAR_LINE);
m_strobe = 0;
}
-uint8_t tv910_state::kbd_ascii_r()
+READ8_MEMBER(tv910_state::kbd_ascii_r)
{
return m_transchar;
}
-uint8_t tv910_state::kbd_flags_r()
+READ8_MEMBER(tv910_state::kbd_flags_r)
{
uint8_t rv = 0;
ioport_value kbspecial = m_kbspecial->read();
@@ -444,7 +444,7 @@ void tv910_state::machine_start()
void tv910_state::machine_reset()
{
- control_w(0);
+ control_w(machine().dummy_space(), 0, 0);
}
MC6845_ON_UPDATE_ADDR_CHANGED( tv910_state::crtc_update_addr )
@@ -458,7 +458,7 @@ WRITE_LINE_MEMBER(tv910_state::vbl_w)
m_mainirq->in_w<0>(1);
}
-void tv910_state::vbl_ack_w(uint8_t data)
+WRITE8_MEMBER(tv910_state::vbl_ack_w)
{
m_mainirq->in_w<0>(0);
}
@@ -509,17 +509,17 @@ MC6845_UPDATE_ROW( tv910_state::crtc_update_row )
}
}
-void tv910_state::tv910(machine_config &config)
-{
+MACHINE_CONFIG_START(tv910_state::tv910)
/* basic machine hardware */
- M6502(config, m_maincpu, MASTER_CLOCK/8);
- m_maincpu->set_addrmap(AS_PROGRAM, &tv910_state::tv910_mem);
+ MCFG_DEVICE_ADD("maincpu", M6502, MASTER_CLOCK/8)
+ MCFG_DEVICE_PROGRAM_MAP(tv910_mem)
- INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline(m_maincpu, M6502_IRQ_LINE);
+ MCFG_INPUT_MERGER_ANY_HIGH("mainirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", M6502_IRQ_LINE))
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(MASTER_CLOCK, 840, 0, 640, 270, 0, 240);
- screen.set_screen_update(CRTC_TAG, FUNC(r6545_1_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK, 840, 0, 640, 270, 0, 240)
+ MCFG_SCREEN_UPDATE_DEVICE( CRTC_TAG, r6545_1_device, screen_update )
R6545_1(config, m_crtc, MASTER_CLOCK/8);
m_crtc->set_screen("screen");
@@ -556,9 +556,9 @@ void tv910_state::tv910(machine_config &config)
rs232.cts_handler().set(ACIA_TAG, FUNC(mos6551_device::write_cts));
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beep, MASTER_CLOCK / 8400); // 1620 Hz (Row 10 signal)
- m_beep->add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("bell", BEEP, MASTER_CLOCK / 8400) // 1620 Hz (Row 10 signal)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( tv910 )
diff --git a/src/mame/drivers/tv955.cpp b/src/mame/drivers/tv955.cpp
index dfc6f9f67c7..722d0d167ea 100644
--- a/src/mame/drivers/tv955.cpp
+++ b/src/mame/drivers/tv955.cpp
@@ -104,13 +104,7 @@ void tv955_state::control_latch_w(u8 data)
WRITE_LINE_MEMBER(tv955_state::system_reset_w)
{
- m_maincpu->set_input_line(INPUT_LINE_RESET, state ? CLEAR_LINE : ASSERT_LINE);
- if (!state)
- {
- m_keybuart->reset();
- m_printuart->reset();
- m_hostuart->reset();
- }
+ // TODO
}
void tv955_state::mem_map(address_map &map)
@@ -219,4 +213,4 @@ ROM_START( tv955 )
ROM_LOAD( "t180002-26b.u45", 0x0000, 0x1000, CRC(69c9ebc7) SHA1(32282c816ec597a7c45e939acb7a4155d35ea584) )
ROM_END
-COMP( 1985, tv955, 0, 0, tv955, tv955, tv955_state, empty_init, "TeleVideo Systems", "TeleVideo 955", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1985, tv955, 0, 0, tv955, tv955, tv955_state, empty_init, "TeleVideo Systems", "TeleVideo 955", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/tvc.cpp b/src/mame/drivers/tvc.cpp
index 87ceb62c42f..d089d76a57d 100644
--- a/src/mame/drivers/tvc.cpp
+++ b/src/mame/drivers/tvc.cpp
@@ -768,17 +768,17 @@ void tvc_exp(device_slot_interface &device)
MACHINE_CONFIG_START(tvc_state::tvc)
/* basic machine hardware */
- Z80(config, m_maincpu, 3125000);
- m_maincpu->set_addrmap(AS_PROGRAM, &tvc_state::tvc_mem);
- m_maincpu->set_addrmap(AS_IO, &tvc_state::tvc_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, 3125000)
+ MCFG_DEVICE_PROGRAM_MAP(tvc_mem)
+ MCFG_DEVICE_IO_MAP(tvc_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(512, 240);
- screen.set_visarea(0, 512 - 1, 0, 240 - 1);
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(512, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512 - 1, 0, 240 - 1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
PALETTE(config, m_palette, FUNC(tvc_state::tvc_palette), 16);
@@ -798,42 +798,46 @@ MACHINE_CONFIG_START(tvc_state::tvc)
m_sound->sndint_wr_callback().set(FUNC(tvc_state::int_ff_set));
m_sound->add_route(ALL_OUTPUTS, "mono", 0.75);
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(FUNC(tvc_state::centronics_ack));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, tvc_state, centronics_ack))
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
/* cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "tvc_cart", "bin,rom,crt");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "tvc_cart")
+ MCFG_GENERIC_EXTENSIONS("bin,rom,crt")
/* expansion interface */
- TVCEXP_SLOT(config, m_expansions[0], tvc_exp , nullptr);
- m_expansions[0]->out_irq_callback().set_inputline(m_maincpu, 0);
- m_expansions[0]->out_nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
- TVCEXP_SLOT(config, m_expansions[1], tvc_exp , nullptr);
- m_expansions[1]->out_irq_callback().set_inputline(m_maincpu, 0);
- m_expansions[1]->out_nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
- TVCEXP_SLOT(config, m_expansions[2], tvc_exp , nullptr);
- m_expansions[2]->out_irq_callback().set_inputline(m_maincpu, 0);
- m_expansions[2]->out_nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
- TVCEXP_SLOT(config, m_expansions[3], tvc_exp , nullptr);
- m_expansions[3]->out_irq_callback().set_inputline(m_maincpu, 0);
- m_expansions[3]->out_nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_DEVICE_ADD("exp1", TVCEXP_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(tvc_exp , nullptr, false)
+ MCFG_TVCEXP_SLOT_OUT_IRQ_CB(INPUTLINE("maincpu", 0))
+ MCFG_TVCEXP_SLOT_OUT_NMI_CB(INPUTLINE("maincpu", INPUT_LINE_NMI))
+ MCFG_DEVICE_ADD("exp2", TVCEXP_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(tvc_exp , nullptr, false)
+ MCFG_TVCEXP_SLOT_OUT_IRQ_CB(INPUTLINE("maincpu", 0))
+ MCFG_TVCEXP_SLOT_OUT_NMI_CB(INPUTLINE("maincpu", INPUT_LINE_NMI))
+ MCFG_DEVICE_ADD("exp3", TVCEXP_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(tvc_exp , nullptr, false)
+ MCFG_TVCEXP_SLOT_OUT_IRQ_CB(INPUTLINE("maincpu", 0))
+ MCFG_TVCEXP_SLOT_OUT_NMI_CB(INPUTLINE("maincpu", INPUT_LINE_NMI))
+ MCFG_DEVICE_ADD("exp4", TVCEXP_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(tvc_exp , nullptr, false)
+ MCFG_TVCEXP_SLOT_OUT_IRQ_CB(INPUTLINE("maincpu", 0))
+ MCFG_TVCEXP_SLOT_OUT_NMI_CB(INPUTLINE("maincpu", INPUT_LINE_NMI))
/* cassette */
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(tvc64_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED);
- m_cassette->set_interface("tvc_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(tvc64_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED)
+ MCFG_CASSETTE_INTERFACE("tvc_cass")
/* quickload */
- MCFG_QUICKLOAD_ADD("quickload", tvc_state, tvc64, "cas", attotime::from_seconds(6))
+ MCFG_QUICKLOAD_ADD("quickload", tvc_state, tvc64, "cas", 6)
/* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("tvc_cart");
- SOFTWARE_LIST(config, "cass_list").set_original("tvc_cass");
- SOFTWARE_LIST(config, "flop_list").set_original("tvc_flop");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "tvc_cart")
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "tvc_cass")
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "tvc_flop")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/tvcapcom.cpp b/src/mame/drivers/tvcapcom.cpp
index d4254f72348..cb66f0074ce 100644
--- a/src/mame/drivers/tvcapcom.cpp
+++ b/src/mame/drivers/tvcapcom.cpp
@@ -55,25 +55,26 @@ uint32_t tvcapcom_state::screen_update_tvcapcom(screen_device &screen, bitmap_rg
static INPUT_PORTS_START( tvcapcom )
INPUT_PORTS_END
-void tvcapcom_state::tvcapcom(machine_config &config)
-{
+MACHINE_CONFIG_START(tvcapcom_state::tvcapcom)
+
/* basic machine hardware */
- PPC603(config, m_maincpu, 72900000); // IBM PowerPC Broadway CPU @ 729 MHz ?
- m_maincpu->set_addrmap(AS_PROGRAM, &tvcapcom_state::gc_map);
- m_maincpu->set_disable();
+ MCFG_DEVICE_ADD("maincpu", PPC603, 72900000) // IBM PowerPC Broadway CPU @ 729 MHz ?
+ MCFG_DEVICE_PROGRAM_MAP(gc_map)
+ MCFG_DEVICE_DISABLE()
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_size(640, 480);
- screen.set_visarea(0, 639, 0, 479);
- screen.set_screen_update(FUNC(tvcapcom_state::screen_update_tvcapcom));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
+ MCFG_SCREEN_UPDATE_DRIVER(tvcapcom_state, screen_update_tvcapcom)
- PALETTE(config, "palette").set_entries(65536);
-}
+ MCFG_PALETTE_ADD("palette", 65536)
+
+MACHINE_CONFIG_END
ROM_START( tvcapcom )
// Bios??
diff --git a/src/mame/drivers/tvgame.cpp b/src/mame/drivers/tvgame.cpp
index f99e0445b00..24f911a9a3c 100644
--- a/src/mame/drivers/tvgame.cpp
+++ b/src/mame/drivers/tvgame.cpp
@@ -101,32 +101,32 @@ uint32_t tvgame_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
return 0;
}
-void tvgame_state::tvgame(machine_config &config)
-{
+MACHINE_CONFIG_START(tvgame_state::tvgame)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &tvgame_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &tvgame_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update(FUNC(tvgame_state::screen_update));
- screen.set_size(216, 213);
- screen.set_visarea(0, 215, 0, 212);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(tvgame_state, screen_update)
+ MCFG_SCREEN_SIZE(216, 213)
+ MCFG_SCREEN_VISIBLE_AREA(0, 215, 0, 212)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
// Devices
i8255_device &ppi(I8255(config, "ppi"));
ppi.in_pa_callback().set_ioport("LINE0");
ppi.out_pc_callback().set(FUNC(tvgame_state::speaker_w));
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( tvgame )
diff --git a/src/mame/drivers/twincobr.cpp b/src/mame/drivers/twincobr.cpp
index 13260ae4e60..4b4aba58248 100644
--- a/src/mame/drivers/twincobr.cpp
+++ b/src/mame/drivers/twincobr.cpp
@@ -413,7 +413,7 @@ void twincobr_state::main_program_map(address_map &map)
map(0x078008, 0x078009).portr("VBLANK"); /* V-Blank & FShark Coin/Start */
map(0x07800b, 0x07800b).w(m_coinlatch, FUNC(ls259_device::write_nibble_d0)); /* Flying Shark DSP Comms & coin stuff */
map(0x07800d, 0x07800d).w(m_mainlatch, FUNC(ls259_device::write_nibble_d0)); /* Twin Cobra DSP Comms & system control */
- map(0x07a000, 0x07afff).rw(FUNC(twincobr_state::twincobr_sharedram_r), FUNC(twincobr_state::twincobr_sharedram_w)).umask16(0x00ff); /* 16-bit on 68000 side, 8-bit on Z80 side */
+ map(0x07a000, 0x07afff).rw(FUNC(twincobr_state::twincobr_sharedram_r), FUNC(twincobr_state::twincobr_sharedram_w)); /* 16-bit on 68000 side, 8-bit on Z80 side */
map(0x07e000, 0x07e001).rw(FUNC(twincobr_state::twincobr_txram_r), FUNC(twincobr_state::twincobr_txram_w)); /* data for text video RAM */
map(0x07e002, 0x07e003).rw(FUNC(twincobr_state::twincobr_bgram_r), FUNC(twincobr_state::twincobr_bgram_w)); /* data for bg video RAM */
map(0x07e004, 0x07e005).rw(FUNC(twincobr_state::twincobr_fgram_r), FUNC(twincobr_state::twincobr_fgram_w)); /* data for fg video RAM */
@@ -626,8 +626,8 @@ static const gfx_layout charlayout =
RGN_FRAC(1,3), /* 2048 characters */
3, /* 3 bits per pixel */
{ RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) },
- { STEP8(0,1) },
- { STEP8(0,8) },
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
8*8 /* every char takes 8 consecutive bytes */
};
@@ -637,8 +637,8 @@ static const gfx_layout tilelayout =
RGN_FRAC(1,4), /* 4096/8192 tiles */
4, /* 4 bits per pixel */
{ RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) },
- { STEP8(0,1) },
- { STEP8(0,8) },
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
8*8 /* every tile takes 8 consecutive bytes */
};
@@ -652,10 +652,10 @@ GFXDECODE_END
void twincobr_state::twincobr(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(28'000'000) / 4); /* 7MHz - Main board Crystal is 28MHz */
+ M68000(config, m_maincpu, XTAL(28'000'000) / 4); /* 7MHz - Main board Crystal is 28MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &twincobr_state::main_program_map);
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(28'000'000)/8)); /* 3.5MHz */
+ z80_device &audiocpu(Z80(config, "audiocpu", XTAL(28'000'000)/8)); /* 3.5MHz */
audiocpu.set_addrmap(AS_PROGRAM, &twincobr_state::sound_program_map);
audiocpu.set_addrmap(AS_IO, &twincobr_state::sound_io_map);
@@ -667,6 +667,8 @@ void twincobr_state::twincobr(machine_config &config)
config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_MACHINE_RESET_OVERRIDE(twincobr_state,twincobr)
+
LS259(config, m_mainlatch);
m_mainlatch->q_out_cb<2>().set(FUNC(twincobr_state::int_enable_w));
m_mainlatch->q_out_cb<3>().set(FUNC(twincobr_state::flipscreen_w));
@@ -696,7 +698,7 @@ void twincobr_state::twincobr(machine_config &config)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
m_screen->set_raw(28_MHz_XTAL/4, 446, 0, 320, 286, 0, 240);
- m_screen->set_screen_update(FUNC(twincobr_state::screen_update));
+ m_screen->set_screen_update(FUNC(twincobr_state::screen_update_toaplan0));
m_screen->screen_vblank().set(m_spriteram16, FUNC(buffered_spriteram16_device::vblank_copy_rising));
m_screen->screen_vblank().append(FUNC(twincobr_state::twincobr_vblank_irq));
m_screen->set_palette(m_palette);
@@ -1294,7 +1296,7 @@ ROM_END
void twincobr_state::init_twincobr()
{
- driver_savestate();
+ twincobr_driver_savestate();
}
diff --git a/src/mame/drivers/twins.cpp b/src/mame/drivers/twins.cpp
index f4c148b2ac4..f20681103de 100644
--- a/src/mame/drivers/twins.cpp
+++ b/src/mame/drivers/twins.cpp
@@ -418,23 +418,22 @@ static INPUT_PORTS_START(twins)
INPUT_PORTS_END
-void twins_state::twinsed1(machine_config &config)
-{
+MACHINE_CONFIG_START(twins_state::twinsed1)
/* basic machine hardware */
- V30(config, m_maincpu, 8000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &twins_state::twins_map);
- m_maincpu->set_addrmap(AS_IO, &twins_state::twinsed1_io);
+ MCFG_DEVICE_ADD("maincpu", V30, 8000000)
+ MCFG_DEVICE_PROGRAM_MAP(twins_map)
+ MCFG_DEVICE_IO_MAP(twinsed1_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(8000000, 512, 0, 320, 312, 0, 200); // 15.625 kHz horizontal???
- screen.set_screen_update(FUNC(twins_state::screen_update_twins));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(8000000, 512, 0, 320, 312, 0, 200) // 15.625 kHz horizontal???
+ MCFG_SCREEN_UPDATE_DRIVER(twins_state, screen_update_twins)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
- I2C_24C02(config, m_i2cmem);
+ MCFG_24C02_ADD("i2cmem")
- PALETTE(config, m_palette).set_entries(0x100);
+ MCFG_PALETTE_ADD("palette", 0x100)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -443,7 +442,7 @@ void twins_state::twinsed1(machine_config &config)
aysnd.port_a_read_callback().set_ioport("P1");
aysnd.port_b_read_callback().set_ioport("P2");
aysnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/* The Ecogames set and the Electronic Devices second set has different palette hardware
@@ -466,26 +465,25 @@ void twins_state::ramdac_map(address_map &map)
}
-void twins_state::twins(machine_config &config)
-{
+MACHINE_CONFIG_START(twins_state::twins)
/* basic machine hardware */
- V30(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &twins_state::twins_map);
- m_maincpu->set_addrmap(AS_IO, &twins_state::twins_io);
+ MCFG_DEVICE_ADD("maincpu", V30, XTAL(16'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(twins_map)
+ MCFG_DEVICE_IO_MAP(twins_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(8000000, 512, 0, 320, 312, 0, 200); // 15.625 kHz horizontal???
- screen.set_screen_update(FUNC(twins_state::screen_update_twins));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(8000000, 512, 0, 320, 312, 0, 200) // 15.625 kHz horizontal???
+ MCFG_SCREEN_UPDATE_DRIVER(twins_state, screen_update_twins)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
- PALETTE(config, m_palette).set_entries(256);
+ MCFG_PALETTE_ADD("palette", 256)
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette));
ramdac.set_addrmap(0, &twins_state::ramdac_map);
ramdac.set_split_read(0);
- I2C_24C02(config, m_i2cmem);
+ MCFG_24C02_ADD("i2cmem")
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -494,7 +492,7 @@ void twins_state::twins(machine_config &config)
aysnd.port_a_read_callback().set_ioport("P1");
aysnd.port_b_read_callback().set_ioport("P2");
aysnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
WRITE16_MEMBER(twins_state::spider_pal_w)
{
@@ -592,23 +590,22 @@ void twins_state::spider_io(address_map &map)
}
-void twins_state::spider(machine_config &config)
-{
+MACHINE_CONFIG_START(twins_state::spider)
/* basic machine hardware */
- V30(config, m_maincpu, 8000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &twins_state::twins_map);
- m_maincpu->set_addrmap(AS_IO, &twins_state::spider_io);
+ MCFG_DEVICE_ADD("maincpu", V30, 8000000)
+ MCFG_DEVICE_PROGRAM_MAP(twins_map)
+ MCFG_DEVICE_IO_MAP(spider_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(8000000, 512, 0, 320, 312, 0, 200); // 15.625 kHz horizontal???
- screen.set_screen_update(FUNC(twins_state::screen_update_spider));
- screen.set_palette(m_palette);
- screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(8000000, 512, 0, 320, 312, 0, 200) // 15.625 kHz horizontal???
+ MCFG_SCREEN_UPDATE_DRIVER(twins_state, screen_update_spider)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
- PALETTE(config, m_palette).set_entries(0x100);
+ MCFG_PALETTE_ADD("palette", 0x100)
- I2C_24C02(config, m_i2cmem);
+ MCFG_24C02_ADD("i2cmem")
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -617,7 +614,7 @@ void twins_state::spider(machine_config &config)
aysnd.port_a_read_callback().set_ioport("P1");
aysnd.port_b_read_callback().set_ioport("P2");
aysnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/* ECOGAMES Twins */
diff --git a/src/mame/drivers/tx0.cpp b/src/mame/drivers/tx0.cpp
index 8cd353f7202..0a905600d53 100644
--- a/src/mame/drivers/tx0.cpp
+++ b/src/mame/drivers/tx0.cpp
@@ -1537,8 +1537,7 @@ INTERRUPT_GEN_MEMBER(tx0_state::tx0_interrupt)
}
}
-void tx0_state::tx0_64kw(machine_config &config)
-{
+MACHINE_CONFIG_START(tx0_state::tx0_64kw)
/* basic machine hardware */
/* TX0 CPU @ approx. 167 kHz (no master clock, but the memory cycle time is approximately 6usec) */
TX0_64KW(config, m_maincpu, 166667);
@@ -1557,14 +1556,14 @@ void tx0_state::tx0_64kw(machine_config &config)
m_maincpu->set_vblank_int("screen", FUNC(tx0_state::tx0_interrupt));
/* video hardware (includes the control panel and typewriter output) */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(refresh_rate);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(virtual_width, virtual_height);
- screen.set_visarea(0, virtual_width-1, 0, virtual_height-1);
- screen.set_screen_update(FUNC(tx0_state::screen_update_tx0));
- screen.screen_vblank().set(FUNC(tx0_state::screen_vblank_tx0));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(refresh_rate)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(virtual_width, virtual_height)
+ MCFG_SCREEN_VISIBLE_AREA(0, virtual_width-1, 0, virtual_height-1)
+ MCFG_SCREEN_UPDATE_DRIVER(tx0_state, screen_update_tx0)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, tx0_state, screen_vblank_tx0))
+ MCFG_SCREEN_PALETTE(m_palette)
CRT(config, m_crt, 0);
m_crt->set_num_levels(pen_crt_num_levels);
@@ -1578,17 +1577,18 @@ void tx0_state::tx0_64kw(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_tx0);
PALETTE(config, m_palette, FUNC(tx0_state::tx0_palette), total_colors_needed + sizeof(tx0_pens), total_colors_needed);
-}
+MACHINE_CONFIG_END
-void tx0_state::tx0_8kw(machine_config &config)
-{
+MACHINE_CONFIG_START(tx0_state::tx0_8kw)
tx0_64kw(config);
/* basic machine hardware */
/* TX0 CPU @ approx. 167 kHz (no master clock, but the memory cycle time is
approximately 6usec) */
- m_maincpu->set_addrmap(AS_PROGRAM, &tx0_state::tx0_8kw_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(tx0_8kw_map)
+ /*MCFG_CPU_PORTS(readport, writeport)*/
+MACHINE_CONFIG_END
ROM_START(tx0_64kw)
/*CPU memory space*/
diff --git a/src/mame/drivers/tx1.cpp b/src/mame/drivers/tx1.cpp
index 6bbba6c424c..a9fde4d80b8 100644
--- a/src/mame/drivers/tx1.cpp
+++ b/src/mame/drivers/tx1.cpp
@@ -167,15 +167,15 @@ void tx1_state::buggyboy_math(address_map &map)
*
*************************************/
-void tx1_state::tx1(machine_config &config)
-{
- I8086(config, m_maincpu, CPU_MASTER_CLOCK / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &tx1_state::tx1_main);
+MACHINE_CONFIG_START(tx1_state::tx1)
+ MCFG_DEVICE_ADD("main_cpu", I8086, CPU_MASTER_CLOCK / 3)
+ MCFG_DEVICE_PROGRAM_MAP(tx1_main)
- WATCHDOG_TIMER(config, "watchdog");//.set_time(5);
+ WATCHDOG_TIMER(config, "watchdog");
+// MCFG_WATCHDOG_TIME_INIT(5)
- I8086(config, m_mathcpu, CPU_MASTER_CLOCK / 3);
- m_mathcpu->set_addrmap(AS_PROGRAM, &tx1_state::tx1_math);
+ MCFG_DEVICE_ADD("math_cpu", I8086, CPU_MASTER_CLOCK / 3)
+ MCFG_DEVICE_PROGRAM_MAP(tx1_math)
MCFG_MACHINE_RESET_OVERRIDE(tx1_state,tx1)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -184,96 +184,97 @@ void tx1_state::tx1(machine_config &config)
config.set_default_layout(layout_triphsxs);
- screen_device &lscreen(SCREEN(config, "lscreen", SCREEN_TYPE_RASTER));
- lscreen.set_raw(TX1_PIXEL_CLOCK, TX1_HTOTAL, TX1_HBEND, TX1_HBSTART, TX1_VTOTAL, TX1_VBEND, TX1_VBSTART);
- lscreen.set_screen_update(FUNC(tx1_state::screen_update_tx1_left));
- lscreen.set_palette("palette");
+ MCFG_SCREEN_ADD("lscreen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(TX1_PIXEL_CLOCK, TX1_HTOTAL, TX1_HBEND, TX1_HBSTART, TX1_VTOTAL, TX1_VBEND, TX1_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_tx1_left)
+ MCFG_SCREEN_PALETTE("palette")
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(TX1_PIXEL_CLOCK, TX1_HTOTAL, TX1_HBEND, TX1_HBSTART, TX1_VTOTAL, TX1_VBEND, TX1_VBSTART);
- m_screen->set_screen_update(FUNC(tx1_state::screen_update_tx1_middle));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(TX1_PIXEL_CLOCK, TX1_HTOTAL, TX1_HBEND, TX1_HBSTART, TX1_VTOTAL, TX1_VBEND, TX1_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_tx1_middle)
+ MCFG_SCREEN_PALETTE("palette")
- screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER));
- rscreen.set_raw(TX1_PIXEL_CLOCK, TX1_HTOTAL, TX1_HBEND, TX1_HBSTART, TX1_VTOTAL, TX1_VBEND, TX1_VBSTART);
- rscreen.set_screen_update(FUNC(tx1_state::screen_update_tx1_right));
- rscreen.screen_vblank().set(FUNC(tx1_state::screen_vblank_tx1));
- rscreen.set_palette("palette");
+ MCFG_SCREEN_ADD("rscreen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(TX1_PIXEL_CLOCK, TX1_HTOTAL, TX1_HBEND, TX1_HBSTART, TX1_VTOTAL, TX1_VBEND, TX1_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_tx1_right)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, tx1_state, screen_vblank_tx1))
+ MCFG_SCREEN_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(tx1_state,tx1)
- TX1_SOUND(config, m_sound, TX1_PIXEL_CLOCK);
-}
+ MCFG_DEVICE_ADD("soundbrd", TX1_SOUND, TX1_PIXEL_CLOCK)
+MACHINE_CONFIG_END
-void tx1_state::tx1j(machine_config &config)
-{
+MACHINE_CONFIG_START(tx1_state::tx1j)
tx1(config);
- TX1J_SOUND(config.replace(), m_sound, TX1_PIXEL_CLOCK);
-}
+ MCFG_DEVICE_REMOVE("soundbrd")
-void tx1_state::buggyboy(machine_config &config)
-{
- I8086(config, m_maincpu, CPU_MASTER_CLOCK / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &tx1_state::buggyboy_main);
+ MCFG_DEVICE_ADD("soundbrd", TX1J_SOUND, TX1_PIXEL_CLOCK)
+MACHINE_CONFIG_END
- WATCHDOG_TIMER(config, "watchdog");//.set_time(5);
+MACHINE_CONFIG_START(tx1_state::buggyboy)
+ MCFG_DEVICE_ADD("main_cpu", I8086, CPU_MASTER_CLOCK / 3)
+ MCFG_DEVICE_PROGRAM_MAP(buggyboy_main)
- I8086(config, m_mathcpu, CPU_MASTER_CLOCK / 3);
- m_mathcpu->set_addrmap(AS_PROGRAM, &tx1_state::buggyboy_math);
+ WATCHDOG_TIMER(config, "watchdog");
+// MCFG_WATCHDOG_TIME_INIT(5)
+
+ MCFG_DEVICE_ADD("math_cpu", I8086, CPU_MASTER_CLOCK / 3)
+ MCFG_DEVICE_PROGRAM_MAP(buggyboy_math)
MCFG_MACHINE_RESET_OVERRIDE(tx1_state,buggyboy)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
config.set_default_layout(layout_triphsxs);
- screen_device &lscreen(SCREEN(config, "lscreen", SCREEN_TYPE_RASTER));
- lscreen.set_raw(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART);
- lscreen.set_screen_update(FUNC(tx1_state::screen_update_buggyboy_left));
- lscreen.set_palette("palette");
+ MCFG_SCREEN_ADD("lscreen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_buggyboy_left)
+ MCFG_SCREEN_PALETTE("palette")
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART);
- m_screen->set_screen_update(FUNC(tx1_state::screen_update_buggyboy_middle));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_buggyboy_middle)
+ MCFG_SCREEN_PALETTE("palette")
- screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER));
- rscreen.set_raw(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART);
- rscreen.set_screen_update(FUNC(tx1_state::screen_update_buggyboy_right));
- rscreen.screen_vblank().set(FUNC(tx1_state::screen_vblank_buggyboy));
- rscreen.set_palette("palette");
+ MCFG_SCREEN_ADD("rscreen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_buggyboy_right)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, tx1_state, screen_vblank_buggyboy))
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(tx1_state::buggyboy_palette), 256);
MCFG_VIDEO_START_OVERRIDE(tx1_state,buggyboy)
- BUGGYBOY_SOUND(config, m_sound, BUGGYBOY_ZCLK);
-}
+ MCFG_DEVICE_ADD("soundbrd", BUGGYBOY_SOUND, BUGGYBOY_ZCLK)
+MACHINE_CONFIG_END
-void tx1_state::buggybjr(machine_config &config)
-{
- I8086(config, m_maincpu, CPU_MASTER_CLOCK / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &tx1_state::buggybjr_main);
+MACHINE_CONFIG_START(tx1_state::buggybjr)
+ MCFG_DEVICE_ADD("main_cpu", I8086, CPU_MASTER_CLOCK / 3)
+ MCFG_DEVICE_PROGRAM_MAP(buggybjr_main)
- WATCHDOG_TIMER(config, "watchdog");//.set_time(5);
+ WATCHDOG_TIMER(config, "watchdog");
+// MCFG_WATCHDOG_TIME_INIT(5)
- I8086(config, m_mathcpu, CPU_MASTER_CLOCK / 3);
- m_mathcpu->set_addrmap(AS_PROGRAM, &tx1_state::buggyboy_math);
+ MCFG_DEVICE_ADD("math_cpu", I8086, CPU_MASTER_CLOCK / 3)
+ MCFG_DEVICE_PROGRAM_MAP(buggyboy_math)
MCFG_MACHINE_RESET_OVERRIDE(tx1_state,buggyboy)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART);
- m_screen->set_screen_update(FUNC(tx1_state::screen_update_buggybjr));
- m_screen->screen_vblank().set(FUNC(tx1_state::screen_vblank_buggyboy));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_buggybjr)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, tx1_state, screen_vblank_buggyboy))
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(tx1_state::buggyboy_palette), 256);
MCFG_VIDEO_START_OVERRIDE(tx1_state,buggybjr)
- BUGGYBOYJR_SOUND(config, m_sound, BUGGYBOY_ZCLK);
-}
+ MCFG_DEVICE_ADD("soundbrd", BUGGYBOYJR_SOUND, BUGGYBOY_ZCLK)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/uapce.cpp b/src/mame/drivers/uapce.cpp
index 7c400fd56d2..dc732bf6709 100644
--- a/src/mame/drivers/uapce.cpp
+++ b/src/mame/drivers/uapce.cpp
@@ -33,24 +33,6 @@
-x1 Victory Run standardd Hucard
-x1 Plexiglass control panel overlay (used)
-In the August 1989 issue of Vending Times magazine:
-https://archive.org/details/VendingTimesVOL29NO10August1989Clearscan/page/n69
-https://archive.org/details/VendingTimesVOL29NO10August1989Clearscan/page/n99
-there was a list of all of the available UA produced HU-Cards about to be released.
-- Legendary Axe
-- Victory Run
-- Keith Courage in the Alpha Zones
-- World Class Baseball
-- Power Golf
-- Blazing Lazers
-- Dungeon Explorer
-- Alien Crush
-- China Warrior
-- Military Madness
-- JJ and Jeff
-and said that six to ten more new game cards would be available by the end of the year.
-It also shows game marquees for Victory Run and Power League.
-
In the February 1990 issue of Video Games & Computer Entertainment magazine, there was a list of
all of the available UA produced Hu-Cards (at the current time of the article was published).
The article mentions that the UA Hu-Cards were not compatible with the TG-16 gaming console.
@@ -321,8 +303,7 @@ void uapce_state::pce_io(address_map &map)
}
-void uapce_state::uapce(machine_config &config)
-{
+MACHINE_CONFIG_START(uapce_state::uapce)
/* basic machine hardware */
H6280(config, m_maincpu, PCE_MAIN_CLOCK/3);
m_maincpu->set_addrmap(AS_PROGRAM, &uapce_state::pce_mem);
@@ -332,32 +313,32 @@ void uapce_state::uapce(machine_config &config)
m_maincpu->add_route(0, "lspeaker", 0.5);
m_maincpu->add_route(1, "rspeaker", 0.5);
- z80_device &sub(Z80(config, "sub", 1400000));
- sub.set_addrmap(AS_PROGRAM, &uapce_state::z80_map);
+ MCFG_DEVICE_ADD("sub", Z80, 1400000)
+ MCFG_DEVICE_PROGRAM_MAP(z80_map)
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(PCE_MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242);
- screen.set_screen_update(FUNC(pce_common_state::screen_update));
- screen.set_palette("huc6260");
-
- HUC6260(config, m_huc6260, PCE_MAIN_CLOCK);
- m_huc6260->next_pixel_data().set("huc6270", FUNC(huc6270_device::next_pixel));
- m_huc6260->time_til_next_event().set("huc6270", FUNC(huc6270_device::time_until_next_event));
- m_huc6260->vsync_changed().set("huc6270", FUNC(huc6270_device::vsync_changed));
- m_huc6260->hsync_changed().set("huc6270", FUNC(huc6270_device::hsync_changed));
-
- huc6270_device &huc6270(HUC6270(config, "huc6270", 0));
- huc6270.set_vram_size(0x10000);
- huc6270.irq().set_inputline(m_maincpu, 0);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242)
+ MCFG_SCREEN_UPDATE_DRIVER( pce_common_state, screen_update )
+ MCFG_SCREEN_PALETTE("huc6260")
+
+ MCFG_DEVICE_ADD( "huc6260", HUC6260, PCE_MAIN_CLOCK )
+ MCFG_HUC6260_NEXT_PIXEL_DATA_CB(READ16("huc6270", huc6270_device, next_pixel))
+ MCFG_HUC6260_TIME_TIL_NEXT_EVENT_CB(READ16("huc6270", huc6270_device, time_until_next_event))
+ MCFG_HUC6260_VSYNC_CHANGED_CB(WRITELINE("huc6270", huc6270_device, vsync_changed))
+ MCFG_HUC6260_HSYNC_CHANGED_CB(WRITELINE("huc6270", huc6270_device, hsync_changed))
+ MCFG_DEVICE_ADD( "huc6270", HUC6270, 0 )
+ MCFG_HUC6270_VRAM_SIZE(0x10000)
+ MCFG_HUC6270_IRQ_CHANGED_CB(INPUTLINE("maincpu", 0))
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- DISCRETE(config, m_discrete, uapce_discrete).add_route(0, "rspeaker", 1.00);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, uapce_discrete)
+ MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
+MACHINE_CONFIG_END
ROM_START(blazlaz)
ROM_REGION( 0x0a0000, "maincpu", 0 )
diff --git a/src/mame/drivers/ultraman.cpp b/src/mame/drivers/ultraman.cpp
index a459ca3d2ea..3f6dce57925 100644
--- a/src/mame/drivers/ultraman.cpp
+++ b/src/mame/drivers/ultraman.cpp
@@ -173,31 +173,32 @@ void ultraman_state::machine_reset()
m_soundnmi->in_w<0>(0);
}
-void ultraman_state::ultraman(machine_config &config)
-{
+MACHINE_CONFIG_START(ultraman_state::ultraman)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 24000000/2); /* 12 MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &ultraman_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(ultraman_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000,24000000/2) /* 12 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ultraman_state, irq4_line_hold)
- Z80(config, m_audiocpu, 24000000/6); /* 4 MHz? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &ultraman_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &ultraman_state::sound_io_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80,24000000/6) /* 4 MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_IO_MAP(sound_io_map)
- INPUT_MERGER_ALL_HIGH(config, "soundnmi").output_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI);
+ MCFG_INPUT_MERGER_ALL_HIGH("soundnmi")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
- config.m_minimum_quantum = attotime::from_hz(600);
+ MCFG_QUANTUM_TIME(attotime::from_hz(600))
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(14*8, (64-14)*8-1, 2*8, 30*8-1 );
- screen.set_screen_update(FUNC(ultraman_state::screen_update_ultraman));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(ultraman_state, screen_update_ultraman)
+ MCFG_SCREEN_PALETTE("palette")
auto &palette(PALETTE(config, "palette"));
palette.set_format(palette_device::xRGB_555, 8192);
@@ -231,10 +232,10 @@ void ultraman_state::ultraman(machine_config &config)
YM2151(config, "ymsnd", 24000000/6).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
- okim6295_device &oki(OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
- oki.add_route(ALL_OUTPUTS, "lspeaker", 0.50);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 0.50);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ultratnk.cpp b/src/mame/drivers/ultratnk.cpp
index 6c5d28b1798..e3a6499bf28 100644
--- a/src/mame/drivers/ultratnk.cpp
+++ b/src/mame/drivers/ultratnk.cpp
@@ -290,36 +290,38 @@ static GFXDECODE_START( gfx_ultratnk )
GFXDECODE_END
-void ultratnk_state::ultratnk(machine_config &config)
-{
+MACHINE_CONFIG_START(ultratnk_state::ultratnk)
+
/* basic machine hardware */
- M6502(config, m_maincpu, PIXEL_CLOCK / 8);
- m_maincpu->set_addrmap(AS_PROGRAM, &ultratnk_state::ultratnk_cpu_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, PIXEL_CLOCK / 8)
+ MCFG_DEVICE_PROGRAM_MAP(ultratnk_cpu_map)
f9334_device &latch(F9334(config, "latch")); // E11
latch.q_out_cb<3>().set(FUNC(ultratnk_state::lockout_w));
latch.q_out_cb<4>().set_output("led0"); // LED1 (left player start)
latch.q_out_cb<5>().set_output("led1"); // LED2 (right player start)
- latch.q_out_cb<6>().set(m_discrete, FUNC(discrete_device::write_line<ULTRATNK_FIRE_EN_2>));
- latch.q_out_cb<7>().set(m_discrete, FUNC(discrete_device::write_line<ULTRATNK_FIRE_EN_1>));
+ latch.q_out_cb<6>().set("discrete", FUNC(discrete_device::write_line<ULTRATNK_FIRE_EN_2>));
+ latch.q_out_cb<7>().set("discrete", FUNC(discrete_device::write_line<ULTRATNK_FIRE_EN_1>));
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 8);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224);
- m_screen->set_screen_update(FUNC(ultratnk_state::screen_update));
- m_screen->screen_vblank().set(FUNC(ultratnk_state::screen_vblank));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224)
+ MCFG_SCREEN_UPDATE_DRIVER(ultratnk_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, ultratnk_state, screen_vblank))
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_ultratnk);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_ultratnk)
PALETTE(config, m_palette, FUNC(ultratnk_state::ultratnk_palette), 10, 4);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- DISCRETE(config, m_discrete, ultratnk_discrete).add_route(0, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, ultratnk_discrete)
+ MCFG_SOUND_ROUTE(0, "mono", 1.0)
+
+MACHINE_CONFIG_END
ROM_START( ultratnk )
diff --git a/src/mame/drivers/undrfire.cpp b/src/mame/drivers/undrfire.cpp
index 7a6c21937fb..3f168d90b3c 100644
--- a/src/mame/drivers/undrfire.cpp
+++ b/src/mame/drivers/undrfire.cpp
@@ -564,12 +564,12 @@ INTERRUPT_GEN_MEMBER(undrfire_state::undrfire_interrupt)
device.execute().set_input_line(4, HOLD_LINE);
}
-void undrfire_state::undrfire(machine_config &config)
-{
+MACHINE_CONFIG_START(undrfire_state::undrfire)
+
/* basic machine hardware */
- M68EC020(config, m_maincpu, XTAL(40'000'000)/2); /* 20 MHz - NOT verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &undrfire_state::undrfire_map);
- m_maincpu->set_vblank_int("screen", FUNC(undrfire_state::undrfire_interrupt));
+ MCFG_DEVICE_ADD("maincpu", M68EC020, XTAL(40'000'000)/2) /* 20 MHz - NOT verified */
+ MCFG_DEVICE_PROGRAM_MAP(undrfire_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", undrfire_state, undrfire_interrupt)
EEPROM_93C46_16BIT(config, "eeprom");
@@ -586,13 +586,13 @@ void undrfire_state::undrfire(machine_config &config)
tc0510nio.read_7_callback().set_ioport("SYSTEM");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0, 40*8-1, 3*8, 32*8-1);
- screen.set_screen_update(FUNC(undrfire_state::screen_update_undrfire));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 3*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(undrfire_state, screen_update_undrfire)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_undrfire);
PALETTE(config, m_palette).set_format(palette_device::xRGB_888, 16384);
@@ -613,21 +613,21 @@ void undrfire_state::undrfire(machine_config &config)
/* sound hardware */
TAITO_EN(config, "taito_en", 0);
-}
+MACHINE_CONFIG_END
-void undrfire_state::cbombers(machine_config &config)
-{
+MACHINE_CONFIG_START(undrfire_state::cbombers)
+
/* basic machine hardware */
- M68EC020(config, m_maincpu, XTAL(40'000'000)/2); /* 20 MHz - NOT verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &undrfire_state::cbombers_cpua_map);
- m_maincpu->set_vblank_int("screen", FUNC(undrfire_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68EC020, XTAL(40'000'000)/2) /* 20 MHz - NOT verified */
+ MCFG_DEVICE_PROGRAM_MAP(cbombers_cpua_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", undrfire_state, irq4_line_hold)
- M68000(config, m_subcpu, XTAL(32'000'000)/2); /* 16 MHz */
- m_subcpu->set_addrmap(AS_PROGRAM, &undrfire_state::cbombers_cpub_map);
- m_subcpu->set_vblank_int("screen", FUNC(undrfire_state::irq4_line_hold));
+ MCFG_DEVICE_ADD("sub", M68000, XTAL(32'000'000)/2) /* 16 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(cbombers_cpub_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", undrfire_state, irq4_line_hold)
- config.m_minimum_quantum = attotime::from_hz(480); /* CPU slices - Need to interleave Cpu's 1 & 3 */
+ MCFG_QUANTUM_TIME(attotime::from_hz(480)) /* CPU slices - Need to interleave Cpu's 1 & 3 */
EEPROM_93C46_16BIT(config, "eeprom");
@@ -648,13 +648,13 @@ void undrfire_state::cbombers(machine_config &config)
tc0510nio.read_7_callback().set_ioport("SYSTEM");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(40*8, 32*8);
- screen.set_visarea(0, 40*8-1, 3*8, 32*8-1);
- screen.set_screen_update(FUNC(undrfire_state::screen_update_cbombers));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 3*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(undrfire_state, screen_update_cbombers)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cbombers);
PALETTE(config, m_palette).set_format(palette_device::xRGB_888, 16384);
@@ -676,7 +676,7 @@ void undrfire_state::cbombers(machine_config &config)
/* sound hardware */
TAITO_EN(config, "taito_en", 0);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/unianapc.cpp b/src/mame/drivers/unianapc.cpp
index 9acef774a55..fcbbd2f470b 100644
--- a/src/mame/drivers/unianapc.cpp
+++ b/src/mame/drivers/unianapc.cpp
@@ -72,20 +72,20 @@ void unianapc_state::machine_reset()
{
}
-void unianapc_state::unianapc(machine_config &config)
-{
+MACHINE_CONFIG_START(unianapc_state::unianapc)
+
/* basic machine hardware */
- PENTIUM3(config, m_maincpu, 100000000); // actually a Celeron at 1.70 GHz
- m_maincpu->set_addrmap(AS_PROGRAM, &unianapc_state::unianapc_map);
+ MCFG_DEVICE_ADD("maincpu", PENTIUM3, 100000000) // actually a Celeron at 1.70 GHz
+ MCFG_DEVICE_PROGRAM_MAP(unianapc_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_screen_update(FUNC(unianapc_state::screen_update));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(unianapc_state, screen_update)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/unichamp.cpp b/src/mame/drivers/unichamp.cpp
index 4058047ce9a..ba5d15766f6 100644
--- a/src/mame/drivers/unichamp.cpp
+++ b/src/mame/drivers/unichamp.cpp
@@ -186,7 +186,7 @@ void unichamp_state::machine_start()
ptr[i+1] = TEMP;
}
m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x17ff,
- read16s_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart));
+ read16_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart));
} else
m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x17ff,
read16_delegate(FUNC(unichamp_state::read_ff), this));
diff --git a/src/mame/drivers/unico.cpp b/src/mame/drivers/unico.cpp
index 133a6909ed3..f8606d34925 100644
--- a/src/mame/drivers/unico.cpp
+++ b/src/mame/drivers/unico.cpp
@@ -562,21 +562,21 @@ void unico_state::machine_start()
Burglar X
***************************************************************************/
-void unico_state::burglarx(machine_config &config)
-{
+MACHINE_CONFIG_START(unico_state::burglarx)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 32_MHz_XTAL/2); /* 16MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &unico_state::burglarx_map);
- m_maincpu->set_vblank_int("screen", FUNC(unico_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 32_MHz_XTAL/2) /* 16MHz */
+ MCFG_DEVICE_PROGRAM_MAP(burglarx_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", unico_state, irq2_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(384, 224);
- screen.set_visarea(0, 384-1, 0, 224-1);
- screen.set_screen_update(FUNC(unico_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(384, 224)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 224-1)
+ MCFG_SCREEN_UPDATE_DRIVER(unico_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_unico);
PALETTE(config, m_palette).set_format(4, &unico_state::unico_R6G6B6X, 8192);
@@ -585,14 +585,14 @@ void unico_state::burglarx(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(14'318'181)/4)); /* 3.579545 MHz */
- ymsnd.add_route(ALL_OUTPUTS, "lspeaker", 0.40);
- ymsnd.add_route(ALL_OUTPUTS, "rspeaker", 0.40);
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(14'318'181)/4) /* 3.579545 MHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
- OKIM6295(config, m_oki, 32_MHz_XTAL/32, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
- m_oki->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
- m_oki->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 32_MHz_XTAL/32, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
+MACHINE_CONFIG_END
@@ -606,21 +606,21 @@ void zeropnt_state::machine_start()
m_okibank->configure_entries(0, 4, memregion("oki")->base() + 0x20000, 0x20000);
}
-void zeropnt_state::zeropnt(machine_config &config)
-{
+MACHINE_CONFIG_START(zeropnt_state::zeropnt)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 32_MHz_XTAL/2); /* 16MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &zeropnt_state::zeropnt_map);
- m_maincpu->set_vblank_int("screen", FUNC(zeropnt_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000, 32_MHz_XTAL/2) /* 16MHz */
+ MCFG_DEVICE_PROGRAM_MAP(zeropnt_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", unico_state, irq2_line_hold)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(384, 224);
- m_screen->set_visarea(0, 384-1, 0, 224-1);
- m_screen->set_screen_update(FUNC(zeropnt_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(384, 224)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 224-1)
+ MCFG_SCREEN_UPDATE_DRIVER(zeropnt_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_unico);
PALETTE(config, m_palette).set_format(4, &zeropnt_state::unico_R6G6B6X, 8192);
@@ -629,15 +629,15 @@ void zeropnt_state::zeropnt(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(14'318'181)/4)); /* 3.579545 MHz */
- ymsnd.add_route(ALL_OUTPUTS, "lspeaker", 0.40);
- ymsnd.add_route(ALL_OUTPUTS, "rspeaker", 0.40);
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(14'318'181)/4) /* 3.579545 MHz */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
- OKIM6295(config, m_oki, 32_MHz_XTAL/32, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
- m_oki->set_addrmap(0, &zeropnt_state::zeropnt_oki_map);
- m_oki->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
- m_oki->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 32_MHz_XTAL/32, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_DEVICE_ADDRESS_MAP(0, zeropnt_oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
+MACHINE_CONFIG_END
@@ -651,23 +651,23 @@ void zeropnt2_state::machine_start()
m_okibank->configure_entries(0, 4, memregion("oki1")->base() + 0x20000, 0x20000);
}
-void zeropnt2_state::zeropnt2(machine_config &config)
-{
+MACHINE_CONFIG_START(zeropnt2_state::zeropnt2)
+
/* basic machine hardware */
- M68EC020(config, m_maincpu, 32_MHz_XTAL/2); /* 16MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &zeropnt2_state::zeropnt2_map);
- m_maincpu->set_vblank_int("screen", FUNC(zeropnt2_state::irq2_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68EC020, 32_MHz_XTAL/2) /* 16MHz */
+ MCFG_DEVICE_PROGRAM_MAP(zeropnt2_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", unico_state, irq2_line_hold)
EEPROM_93C46_8BIT(config, "eeprom");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(384, 224);
- m_screen->set_visarea(0, 384-1, 0, 224-1);
- m_screen->set_screen_update(FUNC(zeropnt2_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(384, 224)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 224-1)
+ MCFG_SCREEN_UPDATE_DRIVER(zeropnt2_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_unico);
PALETTE(config, m_palette).set_format(4, &zeropnt2_state::unico_R6G6B6X, 8192);
@@ -678,15 +678,15 @@ void zeropnt2_state::zeropnt2(machine_config &config)
YM2151(config, "ymsnd", XTAL(14'318'181)/4).add_route(0, "lspeaker", 0.70).add_route(1, "rspeaker", 0.70); /* 3.579545 MHz */
- okim6295_device &oki1(OKIM6295(config, "oki1", 32_MHz_XTAL/32, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
- oki1.set_addrmap(0, &zeropnt2_state::zeropnt_oki_map);
- oki1.add_route(ALL_OUTPUTS, "lspeaker", 0.40);
- oki1.add_route(ALL_OUTPUTS, "rspeaker", 0.40);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, 32_MHz_XTAL/32, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_DEVICE_ADDRESS_MAP(0, zeropnt_oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
- okim6295_device &oki2(OKIM6295(config, "oki2", XTAL(14'318'181)/4, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
- oki2.add_route(ALL_OUTPUTS, "lspeaker", 0.20);
- oki2.add_route(ALL_OUTPUTS, "rspeaker", 0.20);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(14'318'181)/4, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.20)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.20)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/unior.cpp b/src/mame/drivers/unior.cpp
index e177e1ffdc4..acf837a0149 100644
--- a/src/mame/drivers/unior.cpp
+++ b/src/mame/drivers/unior.cpp
@@ -377,20 +377,19 @@ void unior_state::machine_reset()
m_maincpu->set_state_int(i8080_cpu_device::I8085_PC, 0xF800);
}
-void unior_state::unior(machine_config &config)
-{
+MACHINE_CONFIG_START(unior_state::unior)
/* basic machine hardware */
- I8080(config, m_maincpu, XTAL(20'000'000) / 9);
- m_maincpu->set_addrmap(AS_PROGRAM, &unior_state::unior_mem);
- m_maincpu->set_addrmap(AS_IO, &unior_state::unior_io);
+ MCFG_DEVICE_ADD("maincpu",I8080, XTAL(20'000'000) / 9)
+ MCFG_DEVICE_PROGRAM_MAP(unior_mem)
+ MCFG_DEVICE_IO_MAP(unior_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_size(640, 200);
- screen.set_visarea(0, 640-1, 0, 200-1);
- screen.set_screen_update("crtc", FUNC(i8275_device::screen_update));
- GFXDECODE(config, "gfxdecode", m_palette, gfx_unior);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(640, 200)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", i8275_device, screen_update)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_unior)
PALETTE(config, m_palette, FUNC(unior_state::unior_palette), 3);
/* sound hardware */
@@ -427,12 +426,12 @@ void unior_state::unior(machine_config &config)
m_dma->in_memr_cb().set(FUNC(unior_state::dma_r));
m_dma->out_iow_cb<2>().set("crtc", FUNC(i8275_device::dack_w));
- i8275_device &crtc(I8275(config, "crtc", XTAL(20'000'000) / 12));
- crtc.set_character_width(6);
- crtc.set_display_callback(FUNC(unior_state::display_pixels), this);
- crtc.drq_wr_callback().set(m_dma, FUNC(i8257_device::dreq2_w));
- crtc.set_screen("screen");
-}
+ MCFG_DEVICE_ADD("crtc", I8275, XTAL(20'000'000) / 12)
+ MCFG_I8275_CHARACTER_WIDTH(6)
+ MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(unior_state, display_pixels)
+ MCFG_I8275_DRQ_CALLBACK(WRITELINE("dma",i8257_device, dreq2_w))
+ MCFG_VIDEO_SET_SCREEN("screen")
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( unior )
diff --git a/src/mame/drivers/univac.cpp b/src/mame/drivers/univac.cpp
index a0b33aabd68..f7845584db5 100644
--- a/src/mame/drivers/univac.cpp
+++ b/src/mame/drivers/univac.cpp
@@ -94,16 +94,13 @@ After entering the characters, press FCTN and CTRL PAGE keys again to save the s
****************************************************************************/
#include "emu.h"
-#include "bus/rs232/rs232.h"
-#include "bus/uts_kbd/uts_kbd.h"
#include "cpu/z80/z80.h"
-#include "machine/74259.h"
#include "machine/z80daisy.h"
#include "machine/clock.h"
#include "machine/nvram.h"
#include "machine/z80ctc.h"
#include "machine/z80sio.h"
-#include "sound/spkrdev.h"
+#include "sound/beep.h"
#include "video/dp8350.h"
#include "emupal.h"
#include "screen.h"
@@ -111,13 +108,11 @@ After entering the characters, press FCTN and CTRL PAGE keys again to save the s
#define LOG_GENERAL (1U << 0)
#define LOG_PARITY (1U << 1)
-#define LOG_NVRAM (1U << 2)
-//#define VERBOSE (LOG_GENERAL | LOG_PARITY | LOG_NVRAM)
+//#define VERBOSE (LOG_GENERAL | LOG_PARITY)
#include "logmacro.h"
#define LOGPARITY(...) LOGMASKED(LOG_PARITY, __VA_ARGS__)
-#define LOGNVRAM(...) LOGMASKED(LOG_NVRAM, __VA_ARGS__)
class univac_state : public driver_device
@@ -128,105 +123,60 @@ public:
, m_maincpu(*this, "maincpu")
, m_nvram(*this, "nvram")
, m_ctc(*this, "ctc")
- , m_keybclk(*this, "keybclk")
- , m_sio(*this, "sio")
- , m_alarm(*this, "alarm")
- , m_screen(*this, "screen")
- , m_keyboard(*this, "keyboard")
- , m_printer(*this, "printer")
+ , m_uart(*this, "uart")
+ , m_beep(*this, "beeper")
, m_p_chargen(*this, "chargen")
, m_p_videoram(*this, "videoram")
, m_p_nvram(*this, "nvram")
, m_bank_mask(0)
- , m_parity_poison(false)
- , m_display_enable(false)
+ , m_parity_check(0)
+ , m_parity_poison(0)
, m_framecnt(0)
- , m_nvram_protect(false)
- , m_alarm_enable(false)
- , m_alarm_toggle(false)
- , m_loopback_control(false)
- , m_comm_rxd(true)
- , m_sio_txda(true)
- , m_aux_rxd(true)
- , m_sio_txdb(true)
- , m_sio_rtsb(true)
- , m_aux_dsr(true)
- , m_sio_wrdyb(true)
{ }
void uts10(machine_config &config);
void uts20(machine_config &config);
private:
- u8 ram_r(offs_t offset);
- u8 bank_r(offs_t offset);
- void ram_w(offs_t offset, u8 data);
- void bank_w(offs_t offset, u8 data);
- void nvram_w(offs_t offset, u8 data);
-
- DECLARE_WRITE_LINE_MEMBER(nvram_protect_w);
- DECLARE_WRITE_LINE_MEMBER(select_disp_w);
- DECLARE_WRITE_LINE_MEMBER(ram_control_w);
- DECLARE_WRITE_LINE_MEMBER(parity_poison_w);
- DECLARE_WRITE_LINE_MEMBER(display_enable_w);
- DECLARE_WRITE_LINE_MEMBER(alarm_enable_w);
- DECLARE_WRITE_LINE_MEMBER(sio_loopback_w);
- DECLARE_WRITE_LINE_MEMBER(sio_txda_w);
- DECLARE_WRITE_LINE_MEMBER(sio_txdb_w);
- DECLARE_WRITE_LINE_MEMBER(aux_rxd_w);
- DECLARE_WRITE_LINE_MEMBER(sio_rtsb_w);
- DECLARE_WRITE_LINE_MEMBER(sio_wrdyb_w);
- DECLARE_WRITE_LINE_MEMBER(aux_dsr_w);
- DECLARE_WRITE_LINE_MEMBER(loopback_rxcb_w);
- DECLARE_WRITE_LINE_MEMBER(porte6_w);
+ DECLARE_READ8_MEMBER(ram_r);
+ DECLARE_READ8_MEMBER(bank_r);
+ DECLARE_WRITE8_MEMBER(ram_w);
+ DECLARE_WRITE8_MEMBER(bank_w);
+ DECLARE_WRITE8_MEMBER(nvram_w);
+
+ DECLARE_WRITE8_MEMBER(port43_w);
+ DECLARE_WRITE8_MEMBER(portc4_w);
+ DECLARE_WRITE8_MEMBER(porte6_w);
u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void io_map(address_map &map);
void mem_map(address_map &map);
- void uts10_io_map(address_map &map);
void uts10_map(address_map &map);
virtual void machine_start() override;
+ virtual void machine_reset() override;
+ virtual void device_post_load() override;
required_device<z80_device> m_maincpu;
required_device<nvram_device> m_nvram;
required_device<z80ctc_device> m_ctc;
- optional_device<clock_device> m_keybclk;
- required_device<z80sio_device> m_sio;
- required_device<speaker_sound_device> m_alarm;
- required_device<screen_device> m_screen;
-
- required_device<uts_keyboard_port_device> m_keyboard;
- required_device<rs232_port_device> m_printer;
+ required_device<z80sio_device> m_uart;
+ required_device<beep_device> m_beep;
required_region_ptr<u8> m_p_chargen;
required_shared_ptr<u8> m_p_videoram;
required_shared_ptr<u8> m_p_nvram;
std::unique_ptr<u8 []> m_p_parity;
- u16 m_disp_mask;
u16 m_bank_mask;
- bool m_parity_poison;
- bool m_display_enable;
+ u8 m_parity_check;
+ u8 m_parity_poison;
u8 m_framecnt;
- bool m_nvram_protect;
-
- bool m_alarm_enable;
- bool m_alarm_toggle;
-
- bool m_loopback_control;
- bool m_comm_rxd;
- bool m_sio_txda;
- bool m_aux_rxd;
- bool m_sio_txdb;
- bool m_sio_rtsb;
- bool m_aux_dsr;
- bool m_sio_wrdyb;
};
-u8 univac_state::ram_r(offs_t offset)
+READ8_MEMBER( univac_state::ram_r )
{
if (BIT(m_p_parity[offset >> 3], offset & 0x07) && !machine().side_effects_disabled())
{
@@ -236,12 +186,12 @@ u8 univac_state::ram_r(offs_t offset)
return m_p_videoram[offset];
}
-u8 univac_state::bank_r(offs_t offset)
+READ8_MEMBER( univac_state::bank_r )
{
- return ram_r(offset ^ m_bank_mask);
+ return space.read_byte((0xc000 | offset) ^ m_bank_mask);
}
-void univac_state::ram_w(offs_t offset, u8 data)
+WRITE8_MEMBER( univac_state::ram_w )
{
if (m_parity_poison)
{
@@ -255,163 +205,48 @@ void univac_state::ram_w(offs_t offset, u8 data)
m_p_videoram[offset] = data;
}
-void univac_state::bank_w(offs_t offset, u8 data)
+WRITE8_MEMBER( univac_state::bank_w )
{
- ram_w(offset ^ m_bank_mask, data);
+ space.write_byte((0xc000 | offset) ^ m_bank_mask, data);
}
-void univac_state::nvram_w(offs_t offset, u8 data)
+WRITE8_MEMBER( univac_state::nvram_w )
{
// NVRAM is four bits wide, accessed in the low nybble
// It's simplest to hack it when writing to make the upper bits read back high on the open bus
- // (But is it all open bus? Bit 4 is specifically tested in a few places...)
- if (m_nvram_protect)
- LOGNVRAM("%s: NVRAM write suppressed (address %02X, data %02X)\n", machine().describe_context(), offset + 0x80, data);
- else
- m_p_nvram[offset] = data | 0xf0;
-}
-
-WRITE_LINE_MEMBER(univac_state::nvram_protect_w)
-{
- // There seems to be some timing-based write protection related to the CTC's TRG0 input.
- // The present implementation is a crude approximation of a wild guess.
- if (state)
- {
- m_nvram_protect = m_screen->vpos() < 10;
-
- if (m_alarm_enable)
- {
- m_alarm_toggle = !m_alarm_toggle;
- m_alarm->level_w(m_alarm_toggle);
- }
- }
+ m_p_nvram[offset] = data | 0xf0;
}
-WRITE_LINE_MEMBER(univac_state::select_disp_w)
+WRITE8_MEMBER( univac_state::port43_w )
{
- m_disp_mask = state ? 0x2000 : 0x0000;
+ m_bank_mask = BIT(data, 0) ? 0x2000 : 0x0000;
}
-WRITE_LINE_MEMBER(univac_state::ram_control_w)
+WRITE8_MEMBER( univac_state::portc4_w )
{
- m_bank_mask = state ? 0x2000 : 0x0000;
-}
-
-WRITE_LINE_MEMBER(univac_state::parity_poison_w)
-{
- m_parity_poison = state;
-}
-
-WRITE_LINE_MEMBER(univac_state::display_enable_w)
-{
- m_display_enable = state;
-}
-
-WRITE_LINE_MEMBER(univac_state::alarm_enable_w)
-{
- m_alarm_enable = state;
- if (!state)
+ m_parity_poison = BIT(data, 0);
+ u8 const check = BIT(data, 1);
+ if (check != m_parity_check)
{
- m_alarm_toggle = false;
- m_alarm->level_w(0);
- }
-}
-
-WRITE_LINE_MEMBER(univac_state::sio_loopback_w)
-{
- if (state)
- {
- m_sio->rxa_w(m_sio_txda);
- m_sio->rxb_w(m_sio_txdb);
- m_sio->dcdb_w(m_sio_wrdyb);
- m_sio->ctsb_w(m_sio_wrdyb);
- m_sio->syncb_w(!m_sio_rtsb);
- m_printer->write_txd(1);
- m_printer->write_rts(1);
- m_keyboard->ready_w(0);
- if (m_keybclk.found())
- m_keybclk->set_clock_scale(0.0);
- }
- else
- {
- m_sio->rxa_w(m_comm_rxd);
- m_sio->rxb_w(m_aux_rxd);
- m_sio->dcdb_w(m_aux_dsr);
- m_sio->ctsb_w(m_aux_dsr); // likely ignored
- m_sio->syncb_w(1);
- m_printer->write_txd(m_sio_txdb);
- m_printer->write_rts(m_sio_rtsb);
- m_keyboard->ready_w(m_sio_wrdyb);
- if (m_keybclk.found())
- m_keybclk->set_clock_scale(1.0);
- }
-
- m_loopback_control = state;
-}
-
-WRITE_LINE_MEMBER(univac_state::sio_txda_w)
-{
- m_sio_txda = state;
- if (m_loopback_control)
- m_sio->rxa_w(state);
-}
-
-WRITE_LINE_MEMBER(univac_state::sio_txdb_w)
-{
- m_sio_txdb = state;
- if (m_loopback_control)
- m_sio->rxb_w(state);
- else
- m_printer->write_txd(state);
-}
-
-WRITE_LINE_MEMBER(univac_state::aux_rxd_w)
-{
- m_aux_rxd = state;
- if (!m_loopback_control)
- m_sio->rxb_w(state);
-}
-
-WRITE_LINE_MEMBER(univac_state::sio_rtsb_w)
-{
- m_sio_rtsb = state;
- if (m_loopback_control)
- m_sio->syncb_w(!state);
- else
- m_printer->write_rts(state);
-}
-
-WRITE_LINE_MEMBER(univac_state::sio_wrdyb_w)
-{
- m_sio_wrdyb = state;
- if (m_loopback_control)
- {
- m_sio->dcdb_w(state);
- m_sio->ctsb_w(state);
- }
- else
- m_keyboard->ready_w(state);
-}
-
-WRITE_LINE_MEMBER(univac_state::aux_dsr_w)
-{
- m_aux_dsr = state;
- if (!m_loopback_control)
- {
- m_sio->dcdb_w(state);
- m_sio->ctsb_w(state);
+ m_parity_check = check;
+ address_space &space(m_maincpu->space(AS_PROGRAM));
+ space.unmap_read(0xc000, 0xffff);
+ if (check)
+ {
+ LOGPARITY("parity check enabled\n");
+ space.install_read_handler(0xc000, 0xffff, read8_delegate(FUNC(univac_state::ram_r), this));
+ }
+ else
+ {
+ LOGPARITY("parity check disabled\n");
+ space.install_rom(0xc000, 0xffff, &m_p_videoram[0]);
+ }
}
}
-WRITE_LINE_MEMBER(univac_state::loopback_rxcb_w)
-{
- if (m_loopback_control)
- m_sio->rxcb_w(state);
-}
-
-WRITE_LINE_MEMBER(univac_state::porte6_w)
+WRITE8_MEMBER( univac_state::porte6_w )
{
- //m_beep->set_state(state); // not sure what belongs here, but it isn't the beeper
+ //m_beep->set_state(BIT(data, 0)); // not sure what belongs here, but it isn't the beeper
}
@@ -420,7 +255,7 @@ void univac_state::mem_map(address_map &map)
map.unmap_value_high();
map(0x0000, 0x4fff).rom().region("roms", 0);
map(0x8000, 0xbfff).rw(FUNC(univac_state::bank_r), FUNC(univac_state::bank_w));
- map(0xc000, 0xffff).rw(FUNC(univac_state::ram_r), FUNC(univac_state::ram_w)).share("videoram");
+ map(0xc000, 0xffff).ram().w(FUNC(univac_state::ram_w)).share("videoram");
}
void univac_state::uts10_map(address_map &map)
@@ -428,26 +263,19 @@ void univac_state::uts10_map(address_map &map)
map.unmap_value_high();
map(0x0000, 0x4fff).rom().region("roms", 0);
map(0x8000, 0x9fff).mirror(0x2000).rw(FUNC(univac_state::bank_r), FUNC(univac_state::bank_w));
- map(0xc000, 0xffff).rw(FUNC(univac_state::ram_r), FUNC(univac_state::ram_w)).share("videoram");
+ map(0xc000, 0xffff).ram().w(FUNC(univac_state::ram_w)).share("videoram");
}
-void univac_state::uts10_io_map(address_map &map)
+void univac_state::io_map(address_map &map)
{
map.global_mask(0xff);
map.unmap_value_high();
- map(0x00, 0x03).rw(m_sio, FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w));
+ map(0x00, 0x03).rw(m_uart, FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w));
map(0x20, 0x23).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
- map(0x60, 0x60).nopw(); // values written here may or may not matter
+ map(0x43, 0x43).w(FUNC(univac_state::port43_w));
map(0x80, 0xbf).ram().w(FUNC(univac_state::nvram_w)).share("nvram");
- map(0xc0, 0xc7).w("latch_c0", FUNC(ls259_device::write_d0));
- map(0xe0, 0xe7).w("latch_e0", FUNC(ls259_device::write_d0));
-}
-
-void univac_state::io_map(address_map &map)
-{
- uts10_io_map(map);
- map(0x40, 0x40).nopr(); // read only once, during self-test; result is discarded
- map(0x40, 0x47).w("latch_40", FUNC(ls259_device::write_d0));
+ map(0xc4, 0xc4).w(FUNC(univac_state::portc4_w));
+ map(0xe6, 0xe6).w(FUNC(univac_state::porte6_w));
}
/* Input ports */
@@ -465,32 +293,34 @@ void univac_state::machine_start()
save_pointer(NAME(m_p_parity), parity_bytes);
save_item(NAME(m_bank_mask));
+ save_item(NAME(m_parity_check));
save_item(NAME(m_parity_poison));
- save_item(NAME(m_display_enable));
save_item(NAME(m_framecnt));
- save_item(NAME(m_nvram_protect));
- save_item(NAME(m_alarm_enable));
- save_item(NAME(m_alarm_toggle));
- save_item(NAME(m_loopback_control));
- save_item(NAME(m_comm_rxd));
- save_item(NAME(m_sio_txda));
- save_item(NAME(m_aux_rxd));
- save_item(NAME(m_sio_txdb));
- save_item(NAME(m_sio_rtsb));
- save_item(NAME(m_aux_dsr));
- save_item(NAME(m_sio_wrdyb));
}
-uint32_t univac_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+void univac_state::machine_reset()
{
- if (!m_display_enable)
+ m_beep->set_state(0);
+
+ m_bank_mask = 0x0000;
+ m_parity_check = 0;
+ m_parity_poison = 0;
+}
+
+void univac_state::device_post_load()
+{
+ if (m_parity_check)
{
- bitmap.fill(0, cliprect);
- return 0;
+ address_space &space(m_maincpu->space(AS_PROGRAM));
+ space.unmap_read(0xc000, 0xffff);
+ space.install_read_handler(0xc000, 0xffff, read8_delegate(FUNC(univac_state::ram_r), this));
}
+}
- u8 y,ra,chr;
- uint16_t sy=0,x,ma=0,gfx;
+uint32_t univac_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ uint8_t y,ra,chr;
+ uint16_t sy=0,x,ma=0,gfx; //m_bank_mask; (it isn't port43 that selects the screen)
m_framecnt++;
@@ -502,7 +332,7 @@ uint32_t univac_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
for (x = ma; x < ma + 80; x++)
{
- chr = ram_r(x ^ m_disp_mask); // bit 7 = rv attribute (or dim, depending on control-page setting)
+ chr = m_p_videoram[x]; // bit 7 = rv attribute (or dim, depending on control-page setting)
gfx = m_p_chargen[((chr & 0x7f)<<4) | ra];
@@ -556,39 +386,23 @@ GFXDECODE_END
static const z80_daisy_config daisy_chain[] =
{
- { "sio" },
+ { "uart" },
{ "ctc" },
{ nullptr }
};
// All frequencies confirmed
-void univac_state::uts20(machine_config &config)
-{
+MACHINE_CONFIG_START(univac_state::uts20)
/* basic machine hardware */
Z80(config, m_maincpu, 18.432_MHz_XTAL / 6); // 3.072 MHz
m_maincpu->set_addrmap(AS_PROGRAM, &univac_state::mem_map);
m_maincpu->set_addrmap(AS_IO, &univac_state::io_map);
m_maincpu->set_daisy_config(daisy_chain);
- ls259_device &latch_40(LS259(config, "latch_40")); // actual type and location unknown
- latch_40.q_out_cb<1>().set(FUNC(univac_state::select_disp_w));
- latch_40.q_out_cb<3>().set(FUNC(univac_state::ram_control_w));
-
- ls259_device &latch_c0(LS259(config, "latch_c0")); // actual type and location unknown
- latch_c0.q_out_cb<0>().set(FUNC(univac_state::alarm_enable_w));
- latch_c0.q_out_cb<3>().set(FUNC(univac_state::display_enable_w));
- latch_c0.q_out_cb<4>().set(FUNC(univac_state::parity_poison_w));
- latch_c0.q_out_cb<6>().set(FUNC(univac_state::sio_loopback_w));
-
- ls259_device &latch_e0(LS259(config, "latch_e0")); // actual type and location unknown
- //latch_e0.q_out_cb<2>().set(FUNC(univac_state::reverse_video_w));
- latch_e0.q_out_cb<5>().set("crtc", FUNC(dp835x_device::refresh_control)).invert();
- latch_e0.q_out_cb<6>().set(FUNC(univac_state::porte6_w));
-
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER, rgb_t::green());
- m_screen->set_screen_update(FUNC(univac_state::screen_update));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_UPDATE_DRIVER(univac_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
GFXDECODE(config, "gfxdecode", "palette", gfx_uts);
@@ -603,49 +417,28 @@ void univac_state::uts20(machine_config &config)
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
m_ctc->set_clk<1>(18.432_MHz_XTAL / 12);
m_ctc->set_clk<2>(18.432_MHz_XTAL / 12);
- m_ctc->zc_callback<0>().set(FUNC(univac_state::nvram_protect_w));
- m_ctc->zc_callback<1>().set(m_sio, FUNC(z80sio_device::txca_w));
- m_ctc->zc_callback<1>().append(m_sio, FUNC(z80sio_device::rxca_w));
- m_ctc->zc_callback<2>().set(m_sio, FUNC(z80sio_device::txcb_w));
- m_ctc->zc_callback<2>().append(FUNC(univac_state::loopback_rxcb_w));
-
- CLOCK(config, m_keybclk, 18.432_MHz_XTAL / 60);
- m_keybclk->signal_handler().set(m_sio, FUNC(z80sio_device::rxcb_w));
-
- Z80SIO(config, m_sio, 18.432_MHz_XTAL / 6);
- m_sio->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- m_sio->out_txda_callback().set(FUNC(univac_state::sio_txda_w));
- m_sio->out_txdb_callback().set(FUNC(univac_state::sio_txdb_w));
- m_sio->out_rtsb_callback().set(FUNC(univac_state::sio_rtsb_w));
- m_sio->out_wrdyb_callback().set(FUNC(univac_state::sio_wrdyb_w));
+ m_ctc->zc_callback<1>().set(m_uart, FUNC(z80sio_device::txca_w));
+ m_ctc->zc_callback<1>().append(m_uart, FUNC(z80sio_device::rxca_w));
+ m_ctc->zc_callback<2>().set(m_uart, FUNC(z80sio_device::rxtxcb_w));
+
+ Z80SIO(config, m_uart, 18.432_MHz_XTAL / 6);
+ m_uart->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+ m_uart->out_txda_callback().set(m_uart, FUNC(z80sio_device::rxa_w)); // FIXME: hacked in permanent loopback to pass test
+ m_uart->out_txdb_callback().set(m_uart, FUNC(z80sio_device::rxb_w)); // FIXME: hacked in permanent loopback to pass test
+ m_uart->out_wrdyb_callback().set(m_uart, FUNC(z80sio_device::dcdb_w)); // FIXME: hacked in permanent loopback to pass test
+ m_uart->out_wrdyb_callback().append(m_uart, FUNC(z80sio_device::ctsb_w)); // FIXME: hacked in permanent loopback to pass test
/* Sound */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_alarm).add_route(ALL_OUTPUTS, "mono", 0.05);
-
- UTS_KEYBOARD(config, m_keyboard, uts20_keyboards, "extw");
- m_keyboard->rxd_callback().set(FUNC(univac_state::aux_rxd_w));
-
- RS232_PORT(config, m_printer, default_rs232_devices, nullptr);
- m_printer->dcd_handler().set(FUNC(univac_state::aux_dsr_w));
-}
+ MCFG_DEVICE_ADD("beeper", BEEP, 950) // guess
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.05)
+MACHINE_CONFIG_END
-void univac_state::uts10(machine_config &config)
-{
+MACHINE_CONFIG_START(univac_state::uts10)
uts20(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &univac_state::uts10_map);
- m_maincpu->set_addrmap(AS_IO, &univac_state::uts10_io_map);
-
- config.device_remove("keybclk");
- m_ctc->zc_callback<2>().set(m_sio, FUNC(z80sio_device::rxtxcb_w));
-
- config.device_remove("latch_40");
- subdevice<ls259_device>("latch_c0")->q_out_cb<6>().set_nop();
- subdevice<ls259_device>("latch_e0")->q_out_cb<7>().set(FUNC(univac_state::sio_loopback_w)).invert();
-
- UTS_KEYBOARD(config.replace(), m_keyboard, uts10_keyboards, "extw");
- m_keyboard->rxd_callback().set(FUNC(univac_state::aux_rxd_w));
-}
+ MCFG_DEVICE_MODIFY( "maincpu" )
+ MCFG_DEVICE_PROGRAM_MAP(uts10_map)
+MACHINE_CONFIG_END
/* ROM definition */
@@ -660,6 +453,9 @@ ROM_START( uts10 )
ROM_REGION( 0x0800, "chargen", 0 ) // possibly some bitrot, see h,m,n in F4 displayer
ROM_LOAD( "chr_5565.bin", 0x0000, 0x0800, CRC(7d99744f) SHA1(2db330ca94a91f7b2ac2ac088ae9255f5bb0a7b4) )
+
+ ROM_REGION( 0x0800, "keyboard", 0 )
+ ROM_LOAD( "2716264.bin", 0x0000, 0x0800, CRC(75e188aa) SHA1(a6486576525f7eec617fd7f9db469063f8c357fc) )
ROM_END
ROM_START( uts20 )
@@ -673,10 +469,14 @@ ROM_START( uts20 )
// character generator not dumped, using the one from 'UTS10' for now
ROM_REGION( 0x0800, "chargen", 0 )
ROM_LOAD( "chr_5565.bin", 0x0000, 0x0800, BAD_DUMP CRC(7d99744f) SHA1(2db330ca94a91f7b2ac2ac088ae9255f5bb0a7b4) )
+
+ // keyboard not dumped, using the one from 'UTS10' for now. The keyboard looks the same, and is most likely identical.
+ ROM_REGION( 0x0800, "keyboard", 0 )
+ ROM_LOAD( "2716264.bin", 0x0000, 0x0800, BAD_DUMP CRC(75e188aa) SHA1(a6486576525f7eec617fd7f9db469063f8c357fc) )
ROM_END
/* Driver */
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP( 1981, uts10, uts20, 0, uts10, uts20, univac_state, empty_init, "Sperry Univac", "UTS-10", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+COMP( 1979?, uts10, uts20, 0, uts10, uts20, univac_state, empty_init, "Sperry Univac", "UTS-10", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
COMP( 1980, uts20, 0, 0, uts20, uts20, univac_state, empty_init, "Sperry Univac", "UTS-20", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/unixpc.cpp b/src/mame/drivers/unixpc.cpp
index a85c694d87a..56bad603b5d 100644
--- a/src/mame/drivers/unixpc.cpp
+++ b/src/mame/drivers/unixpc.cpp
@@ -20,15 +20,13 @@
#include "bus/centronics/ctronics.h"
#include "bus/rs232/rs232.h"
#include "imagedev/floppy.h"
-#include "imagedev/harddriv.h"
#include "machine/6850acia.h"
#include "machine/74259.h"
#include "machine/bankdev.h"
-#include "machine/input_merger.h"
#include "machine/output_latch.h"
#include "machine/ram.h"
//#include "machine/tc8250.h"
-#include "machine/wd1010.h"
+//#include "machine/wd1010.h"
#include "machine/wd_fdc.h"
#include "machine/z80sio.h"
#include "emupal.h"
@@ -49,12 +47,9 @@ public:
m_maincpu(*this, "maincpu"),
m_gcr(*this, "gcr"),
m_tcr(*this, "tcr"),
- m_int02(*this, "int02"),
m_ram(*this, RAM_TAG),
m_wd2797(*this, "wd2797"),
m_floppy(*this, "wd2797:0:525dd"),
- m_hdc(*this, "hdc"),
- m_hdr0(*this, "hdc:0"),
m_ramrombank(*this, "ramrombank"),
m_mapram(*this, "mapram"),
m_videoram(*this, "videoram")
@@ -89,8 +84,6 @@ private:
DECLARE_WRITE_LINE_MEMBER(wd2797_intrq_w);
DECLARE_WRITE_LINE_MEMBER(wd2797_drq_w);
- DECLARE_WRITE_LINE_MEMBER(wd1010_intrq_w);
-
void ramrombank_map(address_map &map);
void unixpc_mem(address_map &map);
@@ -98,12 +91,9 @@ private:
required_device<cpu_device> m_maincpu;
required_device<ls259_device> m_gcr;
required_device<ls259_device> m_tcr;
- required_device<input_merger_device> m_int02;
required_device<ram_device> m_ram;
required_device<wd2797_device> m_wd2797;
required_device<floppy_image_device> m_floppy;
- required_device<wd1010_device> m_hdc;
- required_device<harddisk_image_device> m_hdr0;
required_device<address_map_bank_device> m_ramrombank;
required_shared_ptr<uint16_t> m_mapram;
@@ -114,7 +104,6 @@ private:
uint16_t m_diskdmasize;
uint32_t m_diskdmaptr;
bool m_fdc_intrq;
- bool m_hdc_intrq;
};
@@ -216,7 +205,7 @@ READ16_MEMBER(unixpc_state::line_printer_r)
data |= 1; // no dial tone detected
data |= 1 << 1; // no parity error
- data |= m_hdc_intrq ? 1<<2 : 0<<2;
+ data |= 0 << 2; // hdc intrq
data |= m_fdc_intrq ? 1<<3 : 0<<3;
//logerror("line_printer_r: %04x\n", data);
@@ -264,13 +253,6 @@ WRITE16_MEMBER(unixpc_state::disk_control_w)
{
logerror("disk_control_w: %04x\n", data);
- // TODO: bits 0-2 = head select
-
- m_hdc->drdy_w(BIT(data, 3) && m_hdr0->exists());
-
- if (!BIT(data, 4))
- m_hdc->reset();
-
m_floppy->mon_w(!BIT(data, 5));
// bit 6 = floppy selected / not selected
@@ -284,7 +266,6 @@ WRITE_LINE_MEMBER(unixpc_state::wd2797_intrq_w)
{
logerror("wd2797_intrq_w: %d\n", state);
m_fdc_intrq = state;
- m_int02->in_w<1>(state);
}
WRITE_LINE_MEMBER(unixpc_state::wd2797_drq_w)
@@ -292,15 +273,6 @@ WRITE_LINE_MEMBER(unixpc_state::wd2797_drq_w)
logerror("wd2797_drq_w: %d\n", state);
}
-/***************************************************************************
- HARD DISK
-***************************************************************************/
-
-WRITE_LINE_MEMBER(unixpc_state::wd1010_intrq_w)
-{
- m_hdc_intrq = state;
- m_int02->in_w<0>(state);
-}
/***************************************************************************
VIDEO
@@ -336,7 +308,7 @@ void unixpc_state::unixpc_mem(address_map &map)
map(0x4d0000, 0x4d7fff).w(FUNC(unixpc_state::diskdma_ptr_w));
map(0x4e0000, 0x4e0001).w(FUNC(unixpc_state::disk_control_w));
map(0x4f0001, 0x4f0001).w("printlatch", FUNC(output_latch_device::bus_w));
- map(0xe00000, 0xe0000f).rw(m_hdc, FUNC(wd1010_device::read), FUNC(wd1010_device::write)).umask16(0x00ff);
+ //map(0xe00000, 0xe0000f).rw("hdc", FUNC(wd1010_device::read), FUNC(wd1010_device::write)).umask16(0x00ff);
map(0xe10000, 0xe10007).rw(m_wd2797, FUNC(wd_fdc_device_base::read), FUNC(wd_fdc_device_base::write)).umask16(0x00ff);
map(0xe30000, 0xe30001).r(FUNC(unixpc_state::rtc_r));
map(0xe40000, 0xe40001).select(0x7000).w(FUNC(unixpc_state::gcr_w));
@@ -368,11 +340,10 @@ static void unixpc_floppies(device_slot_interface &device)
device.option_add("525dd", FLOPPY_525_DD);
}
-void unixpc_state::unixpc(machine_config &config)
-{
+MACHINE_CONFIG_START(unixpc_state::unixpc)
// basic machine hardware
- M68010(config, m_maincpu, 40_MHz_XTAL / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &unixpc_state::unixpc_mem);
+ MCFG_DEVICE_ADD("maincpu", M68010, 40_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(unixpc_mem)
LS259(config, m_gcr); // 7K
m_gcr->q_out_cb<0>().set(FUNC(unixpc_state::error_enable_w));
@@ -382,9 +353,6 @@ void unixpc_state::unixpc(machine_config &config)
LS259(config, m_tcr); // 10K
- INPUT_MERGER_ANY_HIGH(config, m_int02); // 26H pins 3-6
- m_int02->output_handler().set_inputline(m_maincpu, M68K_IRQ_2);
-
output_latch_device &mreg(OUTPUT_LATCH(config, "mreg"));
mreg.bit_handler<0>().set_output("led_0").invert();
mreg.bit_handler<1>().set_output("led_1").invert();
@@ -396,10 +364,10 @@ void unixpc_state::unixpc(machine_config &config)
// bit 7 (D15) = VBL ack (must go high-low-high to ack)
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(unixpc_state::screen_update));
- screen.set_raw(40_MHz_XTAL / 2, 896, 0, 720, 367, 0, 348);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(unixpc_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(40_MHz_XTAL / 2, 896, 0, 720, 367, 0, 348)
+ MCFG_SCREEN_PALETTE("palette")
// vsync should actually last 17264 pixels
config.set_default_layout(layout_unixpc);
@@ -416,33 +384,29 @@ void unixpc_state::unixpc(machine_config &config)
WD2797(config, m_wd2797, 40_MHz_XTAL / 40); // 1PCK (CPU clock) divided by custom DMA chip
m_wd2797->intrq_wr_callback().set(FUNC(unixpc_state::wd2797_intrq_w));
m_wd2797->drq_wr_callback().set(FUNC(unixpc_state::wd2797_drq_w));
- FLOPPY_CONNECTOR(config, "wd2797:0", unixpc_floppies, "525dd", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("wd2797:0", unixpc_floppies, "525dd", floppy_image_device::default_floppy_formats)
- WD1010(config, m_hdc, 40_MHz_XTAL / 8);
- m_hdc->out_intrq_callback().set(FUNC(unixpc_state::wd1010_intrq_w));
- HARDDISK(config, m_hdr0, 0);
-
- upd7201_new_device &mpsc(UPD7201_NEW(config, "mpsc", 19.6608_MHz_XTAL / 8));
+ upd7201_new_device& mpsc(UPD7201_NEW(config, "mpsc", 19.6608_MHz_XTAL / 8));
mpsc.out_txda_callback().set("rs232", FUNC(rs232_port_device::write_txd));
mpsc.out_dtra_callback().set("rs232", FUNC(rs232_port_device::write_dtr));
mpsc.out_rtsa_callback().set("rs232", FUNC(rs232_port_device::write_rts));
- mpsc.out_int_callback().set_inputline(m_maincpu, M68K_IRQ_4);
- acia6850_device &kbc(ACIA6850(config, "kbc", 0));
- kbc.irq_handler().set_inputline(m_maincpu, M68K_IRQ_3);
+ MCFG_DEVICE_ADD("kbc", ACIA6850, 0)
+
+ // TODO: HDC
+ //MCFG_DEVICE_ADD("hdc", WD1010, 40_MHz_XTAL / 8)
// TODO: RTC
- //TC8250(config, "rtc", 32.768_kHz_XTAL);
+ //MCFG_DEVICE_ADD("rtc", TC8250, 32.768_kHz_XTAL)
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr));
rs232.rxd_handler().set("mpsc", FUNC(upd7201_new_device::rxa_w));
rs232.dsr_handler().set("mpsc", FUNC(upd7201_new_device::dcda_w));
rs232.cts_handler().set("mpsc", FUNC(upd7201_new_device::ctsa_w));
- centronics_device &printer(CENTRONICS(config, "printer", centronics_devices, nullptr));
- output_latch_device &printlatch(OUTPUT_LATCH(config, "printlatch"));
- printer.set_output_latch(printlatch);
-}
+ MCFG_DEVICE_ADD("printer", CENTRONICS, centronics_devices, nullptr)
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("printlatch", "printer")
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/unkhorse.cpp b/src/mame/drivers/unkhorse.cpp
index ff964588507..cb7067d6d73 100644
--- a/src/mame/drivers/unkhorse.cpp
+++ b/src/mame/drivers/unkhorse.cpp
@@ -192,12 +192,12 @@ INPUT_PORTS_END
***************************************************************************/
-void horse_state::horse(machine_config &config)
-{
+MACHINE_CONFIG_START(horse_state::horse)
+
/* basic machine hardware */
- I8085A(config, m_maincpu, XTAL(12'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &horse_state::horse_map);
- m_maincpu->set_addrmap(AS_IO, &horse_state::horse_io_map);
+ MCFG_DEVICE_ADD("maincpu", I8085A, XTAL(12'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(horse_map)
+ MCFG_DEVICE_IO_MAP(horse_io_map)
i8155_device &i8155(I8155(config, "i8155", XTAL(12'000'000) / 4)); // port A input, B output, C output but unused
i8155.in_pa_callback().set(FUNC(horse_state::input_r));
@@ -205,20 +205,21 @@ void horse_state::horse(machine_config &config)
i8155.out_to_callback().set("speaker", FUNC(speaker_sound_device::level_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(horse_state::screen_update));
- screen.screen_vblank().set_inputline(m_maincpu, I8085_RST75_LINE);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(horse_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", I8085_RST75_LINE))
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::BGR_3BIT);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/unkpoker.cpp b/src/mame/drivers/unkpoker.cpp
deleted file mode 100644
index c5b3462dc42..00000000000
--- a/src/mame/drivers/unkpoker.cpp
+++ /dev/null
@@ -1,173 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:
-/****************************************************************************************
-
-Unknown Color Poker Game
-------------------------------
-
-8080A CPU
-
-Four 2716 eproms
-
-Six 2102 Rams
-
-Two 2112 Rams
-
-Two 5101 Rams (Low Power Versions, one connected to Battery)
-
-Four position DIP Switch - DIP 1 changes on screen text from
-normal to high lighted as seen pics. Other DIPS unknown.
-
-Sound?
-
-Date of manufacture unknown. Latest date codes on logic chips is 1980.
-
-Chaneman 3/20/2019
-
-
-TODO: everything
-
-*******************************************************************************************/
-
-#include "emu.h"
-#include "cpu/i8085/i8085.h"
-#include "machine/nvram.h"
-
-#include "screen.h"
-#include "emupal.h"
-#include "speaker.h"
-
-class unkpoker_state : public driver_device
-{
-public:
- unkpoker_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this,"maincpu"),
- m_videoram(*this, "videoram"),
- m_chargen(*this, "gfx1")
- { }
-
- void unkpoker(machine_config &config);
-
-private:
- uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
-
- void mem_map(address_map &map);
- void io_map(address_map &map);
-
- required_device<cpu_device> m_maincpu;
- required_shared_ptr<uint8_t> m_videoram;
- required_region_ptr<u8> m_chargen;
-};
-
-
-uint32_t unkpoker_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) // taken from video21.cpp
-{
- uint16_t sy = 0, ma = 0;
-
- for (uint8_t y = 0; y < 28; y++)
- {
- for (uint8_t ra = 0; ra < 8; ra++)
- {
- uint16_t *p = &bitmap.pix16(sy++);
-
- for (uint16_t x = 0; x < 32; x++)
- {
- uint8_t chr = m_videoram[x + ma] & 0x7f;
- uint8_t gfx = m_chargen[(chr << 3) | ra];
-
- /* Display a scanline of a character */
- *p++ = BIT(gfx, 7);
- *p++ = BIT(gfx, 6);
- *p++ = BIT(gfx, 5);
- *p++ = BIT(gfx, 4);
- *p++ = BIT(gfx, 3);
- *p++ = BIT(gfx, 2);
- *p++ = BIT(gfx, 1);
- *p++ = BIT(gfx, 0);
- }
- }
- ma += 32;
- }
- return 0;
-}
-
-
-void unkpoker_state::mem_map(address_map &map) {
- map(0x0000,0x0fff).rom();
- map(0x1000,0x1fff).ram();
- map(0x8000,0x83ff).ram().share("videoram");
-}
-
-void unkpoker_state::io_map(address_map &map) {
- map(0x01,0x01).portr("IN");
- map(0x02,0x02).portr("DSW");
-}
-
-
-static INPUT_PORTS_START( unkpoker )
- PORT_START("IN")
- PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("DSW")
- PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "DSW:1")
- PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "DSW:2")
- PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "DSW:3")
- PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "DSW:4")
-INPUT_PORTS_END
-
-
-static const gfx_layout tiles8x8_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { 0 },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
-
-static GFXDECODE_START( gfx_unkpoker )
- GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 1 )
-GFXDECODE_END
-
-
-void unkpoker_state::unkpoker(machine_config &config)
-{
- /* basic machine hardware */
- I8080A(config, m_maincpu, 2000000); // guessed
- m_maincpu->set_addrmap(AS_PROGRAM, &unkpoker_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &unkpoker_state::io_map);
-
- //NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-
- /* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(0, 255, 0, 255);
- screen.set_screen_update(FUNC(unkpoker_state::screen_update));
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_unkpoker);
- PALETTE(config, "palette", palette_device::RGB_3BIT);
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
-}
-
-
-ROM_START( unkpoker )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "cdpat.13b", 0x0000, 0x0800, CRC(c3f3040f) SHA1(ed1916bcd9e1e80502fcff5ddd599c101a226e7c) )
- ROM_LOAD( "cdpat.11b", 0x0800, 0x0800, CRC(16a97398) SHA1(737192dd0e1b3083f1facd327a83d98a0b7f4d66) )
-
- ROM_REGION( 0x1000, "gfx1", 0 )
- ROM_LOAD( "cd.3b", 0x0000, 0x0800, CRC(e3997d7d) SHA1(6c595c70afedc7aef024215d153fe31b418adc25) )
- ROM_LOAD( "cd.3c", 0x0800, 0x0800, CRC(b61adb76) SHA1(9805593fc6d9b01e4a63bfc35e5442c4c547c103) )
-ROM_END
-
-GAME(1980?, unkpoker, 0, unkpoker, unkpoker, unkpoker_state, empty_init, ROT0, "<unknown>", "unknown 1980 poker game", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE)
diff --git a/src/mame/drivers/upscope.cpp b/src/mame/drivers/upscope.cpp
index d12d9d1eb09..0553e1cb805 100644
--- a/src/mame/drivers/upscope.cpp
+++ b/src/mame/drivers/upscope.cpp
@@ -265,11 +265,11 @@ INPUT_PORTS_END
*
*************************************/
-void upscope_state::upscope(machine_config &config)
-{
+MACHINE_CONFIG_START(upscope_state::upscope)
+
/* basic machine hardware */
- M68000(config, m_maincpu, amiga_state::CLK_7M_NTSC);
- m_maincpu->set_addrmap(AS_PROGRAM, &upscope_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, amiga_state::CLK_7M_NTSC)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
ADDRESS_MAP_BANK(config, "overlay").set_map(&amiga_state::overlay_512kb_map).set_options(ENDIANNESS_BIG, 16, 22, 0x200000);
@@ -295,16 +295,15 @@ void upscope_state::upscope(machine_config &config)
paula.int_cb().set(FUNC(amiga_state::paula_int_w));
/* cia */
- MOS8520(config, m_cia_0, amiga_state::CLK_E_NTSC);
- m_cia_0->irq_wr_callback().set(FUNC(amiga_state::cia_0_irq));
- m_cia_0->pa_wr_callback().set(FUNC(amiga_state::cia_0_port_a_write));
- m_cia_0->pb_rd_callback().set(FUNC(upscope_state::upscope_cia_0_portb_r));
- m_cia_0->pb_wr_callback().set(FUNC(upscope_state::upscope_cia_0_portb_w));
-
- MOS8520(config, m_cia_1, amiga_state::CLK_E_NTSC);
- m_cia_1->irq_wr_callback().set(FUNC(amiga_state::cia_1_irq));
- m_cia_1->pa_rd_callback().set(FUNC(upscope_state::upscope_cia_1_porta_r));
- m_cia_1->pa_wr_callback().set(FUNC(upscope_state::upscope_cia_1_porta_w));
+ MCFG_DEVICE_ADD("cia_0", MOS8520, amiga_state::CLK_E_NTSC)
+ MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(*this, amiga_state, cia_0_irq))
+ MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(*this, amiga_state, cia_0_port_a_write))
+ MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(*this, upscope_state, upscope_cia_0_portb_r))
+ MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(*this, upscope_state, upscope_cia_0_portb_w))
+ MCFG_DEVICE_ADD("cia_1", MOS8520, amiga_state::CLK_E_NTSC)
+ MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(*this, amiga_state, cia_1_irq))
+ MCFG_MOS6526_PA_INPUT_CALLBACK(READ8(*this, upscope_state, upscope_cia_1_porta_r))
+ MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(*this, upscope_state, upscope_cia_1_porta_w))
/* fdc */
AMIGA_FDC(config, m_fdc, amiga_state::CLK_7M_NTSC);
@@ -319,7 +318,7 @@ void upscope_state::upscope(machine_config &config)
m_ppi->in_pa_callback().set_ioport("IO0");
m_ppi->out_pb_callback().set(FUNC(upscope_state::lamps_w));
m_ppi->out_pc_callback().set(FUNC(upscope_state::coin_counter_w));
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/usbilliards.cpp b/src/mame/drivers/usbilliards.cpp
index 059953d747a..e77e5423ad5 100644
--- a/src/mame/drivers/usbilliards.cpp
+++ b/src/mame/drivers/usbilliards.cpp
@@ -89,21 +89,20 @@ void usbilliards_state::video_start()
{
}
-void usbilliards_state::usbilliards(machine_config &config)
-{
+MACHINE_CONFIG_START(usbilliards_state::usbilliards)
+
/* basic machine hardware */
- NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK);
- m_maincpu->set_constructor(netlist_usbilliards);
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(usbilliards)
/* video hardware */
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- FIXFREQ(config, m_video).set_screen("screen");
- m_video->set_monitor_clock(MASTER_CLOCK);
- m_video->set_horz_params(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL);
- m_video->set_vert_params(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL);
- m_video->set_fieldcount(1);
- m_video->set_threshold(0.30);
-}
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/usgames.cpp b/src/mame/drivers/usgames.cpp
index b5474d0938f..3e2e6645fd1 100644
--- a/src/mame/drivers/usgames.cpp
+++ b/src/mame/drivers/usgames.cpp
@@ -218,23 +218,23 @@ static GFXDECODE_START( gfx_usgames )
GFXDECODE_END
-void usgames_state::usg32(machine_config &config)
-{
+MACHINE_CONFIG_START(usgames_state::usg32)
+
/* basic machine hardware */
- MC6809(config, m_maincpu, 18_MHz_XTAL / 3); // 68B09P (divider not verified)
- m_maincpu->set_addrmap(AS_PROGRAM, &usgames_state::usgames_map);
- m_maincpu->set_periodic_int(FUNC(usgames_state::irq0_line_hold), attotime::from_hz(5*60)); /* ?? */
+ MCFG_DEVICE_ADD("maincpu", MC6809, 18_MHz_XTAL / 3) // 68B09P (divider not verified)
+ MCFG_DEVICE_PROGRAM_MAP(usgames_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(usgames_state, irq0_line_hold, 5*60) /* ?? */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(7*8, 57*8-1, 0*8, 31*8-1);
- screen.set_screen_update(FUNC(usgames_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(7*8, 57*8-1, 0*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(usgames_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_usgames);
PALETTE(config, "palette", FUNC(usgames_state::usgames_palette), 2*256);
@@ -248,13 +248,13 @@ void usgames_state::usg32(machine_config &config)
SPEAKER(config, "mono").front_center();
AY8912(config, "aysnd", 2000000).add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+MACHINE_CONFIG_END
-void usgames_state::usg185(machine_config &config)
-{
+MACHINE_CONFIG_START(usgames_state::usg185)
usg32(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &usgames_state::usg185_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(usg185_map)
+MACHINE_CONFIG_END
ROM_START( usg32 )
diff --git a/src/mame/drivers/ut88.cpp b/src/mame/drivers/ut88.cpp
index 125ceb65ca6..3e03cdf4a33 100644
--- a/src/mame/drivers/ut88.cpp
+++ b/src/mame/drivers/ut88.cpp
@@ -187,35 +187,33 @@ static INPUT_PORTS_START( ut88mini )
INPUT_PORTS_END
/* Machine driver */
-void ut88_state::ut88(machine_config &config)
-{
+MACHINE_CONFIG_START(ut88_state::ut88)
/* basic machine hardware */
- I8080(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &ut88_state::ut88_mem);
- m_maincpu->set_addrmap(AS_IO, &ut88_state::ut88_io);
+ MCFG_DEVICE_ADD("maincpu", I8080, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(ut88_mem)
+ MCFG_DEVICE_IO_MAP(ut88_io)
MCFG_MACHINE_RESET_OVERRIDE(ut88_state, ut88 )
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(64*8, 28*8);
- screen.set_visarea(0, 64*8-1, 0, 28*8-1);
- screen.set_screen_update(FUNC(ut88_state::screen_update_ut88));
- screen.set_palette(m_palette);
-
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(64*8, 28*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 28*8-1)
MCFG_VIDEO_START_OVERRIDE(ut88_state,ut88)
+ MCFG_SCREEN_UPDATE_DRIVER(ut88_state, screen_update_ut88)
+ MCFG_SCREEN_PALETTE(m_palette)
PALETTE(config, m_palette, palette_device::MONOCHROME);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_ut88);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ut88)
/* audio hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.25);
/* Devices */
I8255A(config, m_ppi);
@@ -223,20 +221,19 @@ void ut88_state::ut88(machine_config &config)
m_ppi->in_pb_callback().set(FUNC(ut88_state::ut88_8255_portb_r));
m_ppi->in_pc_callback().set(FUNC(ut88_state::ut88_8255_portc_r));
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(rku_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
- m_cassette->set_interface("ut88_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(rku_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
+ MCFG_CASSETTE_INTERFACE("ut88_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("ut88");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list","ut88")
+MACHINE_CONFIG_END
-void ut88_state::ut88mini(machine_config &config)
-{
+MACHINE_CONFIG_START(ut88_state::ut88mini)
/* basic machine hardware */
- I8080(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &ut88_state::ut88mini_mem);
- m_maincpu->set_addrmap(AS_IO, &ut88_state::ut88mini_io);
+ MCFG_DEVICE_ADD("maincpu", I8080, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(ut88mini_mem)
+ MCFG_DEVICE_IO_MAP(ut88mini_io)
MCFG_MACHINE_START_OVERRIDE(ut88_state,ut88mini)
MCFG_MACHINE_RESET_OVERRIDE(ut88_state, ut88mini )
@@ -245,15 +242,15 @@ void ut88_state::ut88mini(machine_config &config)
/* Cassette */
SPEAKER(config, "speaker").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.25);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(rku_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
- m_cassette->set_interface("ut88_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(rku_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
+ MCFG_CASSETTE_INTERFACE("ut88_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("ut88");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list","ut88")
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( ut88 )
diff --git a/src/mame/drivers/uzebox.cpp b/src/mame/drivers/uzebox.cpp
index 806c1a92e70..be6dd2152c2 100644
--- a/src/mame/drivers/uzebox.cpp
+++ b/src/mame/drivers/uzebox.cpp
@@ -87,7 +87,7 @@ void uzebox_state::machine_start()
m_screen->register_screen_bitmap(m_bitmap);
if (m_cart->exists())
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0xffff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0xffff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
}
void uzebox_state::machine_reset()
diff --git a/src/mame/drivers/v100.cpp b/src/mame/drivers/v100.cpp
index 6a58c9d1a09..b2942051599 100644
--- a/src/mame/drivers/v100.cpp
+++ b/src/mame/drivers/v100.cpp
@@ -12,14 +12,12 @@
***********************************************************************************************************************************/
#include "emu.h"
-#include "bus/rs232/rs232.h"
#include "cpu/z80/z80.h"
#include "machine/com8116.h"
#include "machine/er1400.h"
#include "machine/i8214.h"
#include "machine/i8251.h"
#include "machine/i8255.h"
-#include "machine/input_merger.h"
#include "video/tms9927.h"
#include "screen.h"
@@ -37,7 +35,6 @@ public:
, m_usart(*this, "usart%u", 1)
, m_earom(*this, "earom")
, m_picu(*this, "picu")
- , m_modem(*this, "modem")
, m_p_chargen(*this, "chargen")
, m_videoram(*this, "videoram")
, m_key_row(*this, "ROW%u", 0)
@@ -46,7 +43,7 @@ public:
void v100(machine_config &config);
private:
- u8 status_r();
+ DECLARE_READ8_MEMBER(earom_r);
DECLARE_WRITE8_MEMBER(port30_w);
DECLARE_READ8_MEMBER(keyboard_r);
DECLARE_WRITE8_MEMBER(key_row_w);
@@ -54,7 +51,7 @@ private:
DECLARE_WRITE8_MEMBER(picu_w);
template<int N> DECLARE_WRITE_LINE_MEMBER(picu_r_w);
IRQ_CALLBACK_MEMBER(irq_ack);
- void ppi_porta_w(u8 data);
+ DECLARE_WRITE8_MEMBER(ppi_porta_w);
u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
@@ -69,18 +66,16 @@ private:
required_device_array<i8251_device, 2> m_usart;
required_device<er1400_device> m_earom;
required_device<i8214_device> m_picu;
- required_device<rs232_port_device> m_modem;
required_region_ptr<u8> m_p_chargen;
required_shared_ptr<u8> m_videoram;
optional_ioport_array<16> m_key_row;
u8 m_active_row;
- bool m_video_enable;
};
u32 v100_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- if (m_vtac->screen_reset() || !m_video_enable)
+ if (m_vtac->screen_reset())
{
bitmap.fill(rgb_t::black(), cliprect);
return 0;
@@ -150,22 +145,17 @@ void v100_state::machine_start()
{
m_picu->inte_w(1);
m_picu->etlg_w(1);
+
+ m_usart[0]->write_cts(0);
m_usart[1]->write_cts(0);
m_active_row = 0;
- m_video_enable = false;
save_item(NAME(m_active_row));
- save_item(NAME(m_video_enable));
}
-u8 v100_state::status_r()
+READ8_MEMBER(v100_state::earom_r)
{
- u8 status = 0xc0;
- status |= m_earom->data_r();
- status |= m_modem->dcd_r() << 1;
- status |= m_modem->si_r() << 2; // SCCD (pin 12)
- status |= m_modem->ri_r() << 3;
- return status;
+ return m_earom->data_r();
}
WRITE8_MEMBER(v100_state::port30_w)
@@ -208,13 +198,11 @@ IRQ_CALLBACK_MEMBER(v100_state::irq_ack)
return (m_picu->a_r() << 1) | 0xf0;
}
-void v100_state::ppi_porta_w(u8 data)
+WRITE8_MEMBER(v100_state::ppi_porta_w)
{
m_vtac->set_clock_scale(BIT(data, 5) ? 0.5 : 1.0);
m_screen->set_clock_scale(BIT(data, 5) ? 0.5 : 1.0);
- m_video_enable = !BIT(data, 7);
-
//logerror("Writing %02X to PPI port A\n", data);
}
@@ -233,7 +221,7 @@ void v100_state::io_map(address_map &map)
map(0x12, 0x13).rw("usart1", FUNC(i8251_device::read), FUNC(i8251_device::write));
map(0x14, 0x15).rw("usart2", FUNC(i8251_device::read), FUNC(i8251_device::write));
map(0x16, 0x16).w("brg2", FUNC(com8116_device::stt_str_w));
- map(0x20, 0x20).r(FUNC(v100_state::status_r));
+ map(0x20, 0x20).r(FUNC(v100_state::earom_r));
map(0x30, 0x30).w(FUNC(v100_state::port30_w));
map(0x40, 0x40).rw(FUNC(v100_state::keyboard_r), FUNC(v100_state::key_row_w));
map(0x48, 0x48).w(FUNC(v100_state::port48_w));
@@ -355,47 +343,36 @@ static INPUT_PORTS_START( v100 )
INPUT_PORTS_END
-void v100_state::v100(machine_config &config)
-{
- Z80(config, m_maincpu, 47.736_MHz_XTAL / 20); // 2.387 MHz PCLOCK
- m_maincpu->set_addrmap(AS_PROGRAM, &v100_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &v100_state::io_map);
- m_maincpu->set_irq_acknowledge_callback(FUNC(v100_state::irq_ack));
-
- I8251(config, m_usart[0], 47.736_MHz_XTAL / 20);
- m_usart[0]->txd_handler().set(m_modem, FUNC(rs232_port_device::write_txd));
- m_usart[0]->dtr_handler().set(m_modem, FUNC(rs232_port_device::write_dtr));
- m_usart[0]->rts_handler().set(m_modem, FUNC(rs232_port_device::write_rts));
- //m_usart[0]->rxrdy_handler().set(FUNC(v100_state::picu_r_w<4>)).invert();
+MACHINE_CONFIG_START(v100_state::v100)
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(47'736'000) / 12) // divider not verified
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(v100_state, irq_ack)
- input_merger_device &acts(INPUT_MERGER_ALL_HIGH(config, "acts"));
- acts.output_handler().set(m_usart[0], FUNC(i8251_device::write_cts));
+ I8251(config, m_usart[0], XTAL(47'736'000) / 12); // divider not verified
- com8116_device &brg1(COM8116_020(config, "brg1", 1.8432_MHz_XTAL));
+ com8116_device &brg1(COM8116(config, "brg1", 5068800)); // TODO: clock and divisors for this customized variant
brg1.fr_handler().set(m_usart[0], FUNC(i8251_device::write_rxc));
brg1.ft_handler().set(m_usart[0], FUNC(i8251_device::write_txc));
- I8251(config, m_usart[1], 47.736_MHz_XTAL / 20);
- m_usart[1]->txd_handler().set("aux", FUNC(rs232_port_device::write_txd));
- m_usart[1]->dtr_handler().set("aux", FUNC(rs232_port_device::write_dtr));
- //m_usart[1]->txrdy_handler().set(FUNC(v100_state::picu_r_w<2>)).invert();
+ I8251(config, m_usart[1], XTAL(47'736'000) / 12);
- com8116_device &brg2(COM8116_020(config, "brg2", 1.8432_MHz_XTAL));
+ com8116_device &brg2(COM8116(config, "brg2", 5068800));
brg2.fr_handler().set(m_usart[1], FUNC(i8251_device::write_rxc));
brg2.ft_handler().set(m_usart[1], FUNC(i8251_device::write_txc));
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- //m_screen->set_raw(47.736_MHz_XTAL / 2, 102 * V100_CH_WIDTH, 0, 80 * V100_CH_WIDTH, 260, 0, 240);
- m_screen->set_raw(47.736_MHz_XTAL, 170 * V100_CH_WIDTH, 0, 132 * V100_CH_WIDTH, 312, 0, 240);
- m_screen->set_screen_update(FUNC(v100_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ //MCFG_SCREEN_RAW_PARAMS(XTAL(47'736'000) / 2, 102 * V100_CH_WIDTH, 0, 80 * V100_CH_WIDTH, 260, 0, 240)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(47'736'000), 170 * V100_CH_WIDTH, 0, 132 * V100_CH_WIDTH, 312, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(v100_state, screen_update)
- CRT5037(config, m_vtac, 47.736_MHz_XTAL / V100_CH_WIDTH);
+ CRT5037(config, m_vtac, XTAL(47'736'000) / V100_CH_WIDTH);
m_vtac->set_char_width(V100_CH_WIDTH);
m_vtac->set_screen("screen");
m_vtac->hsyn_callback().set(FUNC(v100_state::picu_r_w<7>)).invert();
m_vtac->vsyn_callback().set(FUNC(v100_state::picu_r_w<6>)).invert();
- I8214(config, m_picu, 47.736_MHz_XTAL / 20);
+ I8214(config, m_picu, XTAL(47'736'000) / 12);
m_picu->int_wr_callback().set_inputline(m_maincpu, 0, ASSERT_LINE);
i8255_device &ppi(I8255(config, "ppi", 0));
@@ -405,20 +382,9 @@ void v100_state::v100(machine_config &config)
ppi.out_pb_callback().append(m_earom, FUNC(er1400_device::c1_w)).bit(4).invert();
ppi.out_pc_callback().set(m_earom, FUNC(er1400_device::data_w)).bit(6).invert();
ppi.out_pc_callback().append(m_earom, FUNC(er1400_device::clock_w)).bit(0).invert();
- ppi.out_pc_callback().append(m_modem, FUNC(rs232_port_device::write_spds)).bit(4);
- ppi.out_pc_callback().append("acts", FUNC(input_merger_device::in_w<1>)).bit(7);
ER1400(config, m_earom);
-
- RS232_PORT(config, m_modem, default_rs232_devices, "loopback"); // EIA port
- m_modem->rxd_handler().set(m_usart[0], FUNC(i8251_device::write_rxd));
- m_modem->cts_handler().set("acts", FUNC(input_merger_device::in_w<0>));
- m_modem->dcd_handler().set(m_usart[0], FUNC(i8251_device::write_dsr));
-
- rs232_port_device &aux(RS232_PORT(config, "aux", default_rs232_devices, nullptr)); // optional printer port
- aux.rxd_handler().set(m_usart[1], FUNC(i8251_device::write_rxd));
- aux.dcd_handler().set(m_usart[1], FUNC(i8251_device::write_dsr)); // printer busy
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/v102.cpp b/src/mame/drivers/v102.cpp
index 0a8071c354a..30680ae44ca 100644
--- a/src/mame/drivers/v102.cpp
+++ b/src/mame/drivers/v102.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:AJR
+// copyright-holders:
/***********************************************************************************************************************************
Skeleton driver for Visual 102 display terminal.
@@ -7,8 +7,8 @@ Skeleton driver for Visual 102 display terminal.
************************************************************************************************************************************/
#include "emu.h"
-#include "bus/rs232/rs232.h"
#include "cpu/z80/z80.h"
+#include "cpu/mcs48/mcs48.h"
#include "machine/eeprompar.h"
#include "machine/input_merger.h"
#include "machine/i8251.h"
@@ -20,37 +20,26 @@ Skeleton driver for Visual 102 display terminal.
//#include "video/crt9021.h"
#include "screen.h"
-#include "machine/v102_kbd.h"
-
class v102_state : public driver_device
{
public:
v102_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
- , m_mpsc(*this, "mpsc")
- , m_chargen(*this, "chargen")
+ , m_p_chargen(*this, "chargen")
{ }
void v102(machine_config &config);
-protected:
- virtual void machine_start() override;
-
private:
u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- DECLARE_WRITE_LINE_MEMBER(hs_w);
-
void io_map(address_map &map);
+ void kbd_map(address_map &map);
void mem_map(address_map &map);
required_device<cpu_device> m_maincpu;
- required_device<upd7201_new_device> m_mpsc;
- required_region_ptr<u8> m_chargen;
-
- bool m_hs_state;
- bool m_kb_clock;
+ required_region_ptr<u8> m_p_chargen;
};
@@ -59,18 +48,6 @@ u32 v102_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const
return 0;
}
-WRITE_LINE_MEMBER(v102_state::hs_w)
-{
- if (state && !m_hs_state)
- {
- m_kb_clock = !m_kb_clock;
- m_mpsc->txca_w(m_kb_clock);
- m_mpsc->rxca_w(m_kb_clock);
- }
-
- m_hs_state = bool(state);
-}
-
void v102_state::mem_map(address_map &map)
{
@@ -91,16 +68,9 @@ void v102_state::io_map(address_map &map)
map(0xa0, 0xa3).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
}
-void v102_state::machine_start()
+void v102_state::kbd_map(address_map &map)
{
- m_hs_state = false;
- m_kb_clock = false;
-
- m_mpsc->ctsa_w(0);
- m_mpsc->ctsb_w(0);
-
- save_item(NAME(m_hs_state));
- save_item(NAME(m_kb_clock));
+ map(0x000, 0x7ff).rom().region("keyboard", 0);
}
static INPUT_PORTS_START(v102)
@@ -120,48 +90,23 @@ void v102_state::v102(machine_config &config)
crt9007_device &vpac(CRT9007(config, "vpac", 18.575_MHz_XTAL / 10));
vpac.set_character_width(10); // 6 in 132-column mode
vpac.int_callback().set("mainirq", FUNC(input_merger_device::in_w<2>));
- vpac.hs_callback().set(FUNC(v102_state::hs_w));
- vpac.set_screen("screen");
EEPROM_2804(config, "eeprom");
- UPD7201_NEW(config, m_mpsc, 18.575_MHz_XTAL / 5); // divider not verified
- m_mpsc->out_int_callback().set("mainirq", FUNC(input_merger_device::in_w<0>));
- m_mpsc->out_txda_callback().set("keyboard", FUNC(v102_keyboard_device::write_rxd));
- m_mpsc->out_txdb_callback().set("aux", FUNC(rs232_port_device::write_txd));
- m_mpsc->out_dtrb_callback().set("aux", FUNC(rs232_port_device::write_dtr));
- m_mpsc->out_rtsb_callback().set("aux", FUNC(rs232_port_device::write_rts));
+ upd7201_new_device &mpsc(UPD7201_NEW(config, "mpsc", 18.575_MHz_XTAL / 5)); // divider not verified
+ mpsc.out_int_callback().set("mainirq", FUNC(input_merger_device::in_w<0>));
i8251_device &usart(I8251(config, "usart", 18.575_MHz_XTAL / 5)); // divider not verified
usart.rxrdy_handler().set("mainirq", FUNC(input_merger_device::in_w<1>));
- usart.txd_handler().set("modem", FUNC(rs232_port_device::write_txd));
- usart.dtr_handler().set("modem", FUNC(rs232_port_device::write_dtr));
- usart.rts_handler().set("modem", FUNC(rs232_port_device::write_rts));
INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- pit8253_device &pit(PIT8253(config, "pit", 0));
- pit.set_clk<0>(18.575_MHz_XTAL / 6);
- pit.set_clk<1>(18.575_MHz_XTAL / 6);
- pit.set_clk<2>(18.575_MHz_XTAL / 6);
- pit.out_handler<0>().set("usart", FUNC(i8251_device::write_txc));
- pit.out_handler<1>().set("usart", FUNC(i8251_device::write_rxc));
- pit.out_handler<2>().set(m_mpsc, FUNC(upd7201_new_device::txcb_w));
- pit.out_handler<2>().append(m_mpsc, FUNC(upd7201_new_device::rxcb_w));
+ PIT8253(config, "pit", 0);
I8255(config, "ppi");
- v102_keyboard_device &keyboard(V102_KEYBOARD(config, "keyboard"));
- keyboard.txd_callback().set(m_mpsc, FUNC(upd7201_new_device::rxa_w));
-
- rs232_port_device &modem(RS232_PORT(config, "modem", default_rs232_devices, nullptr));
- modem.rxd_handler().set("usart", FUNC(i8251_device::write_rxd));
- modem.cts_handler().set("usart", FUNC(i8251_device::write_cts));
- modem.dcd_handler().set("usart", FUNC(i8251_device::write_dsr));
-
- rs232_port_device &aux(RS232_PORT(config, "aux", default_rs232_devices, nullptr));
- aux.rxd_handler().set(m_mpsc, FUNC(upd7201_new_device::rxb_w));
- aux.dcd_handler().set(m_mpsc, FUNC(upd7201_new_device::dcdb_w)); // DTR (printer busy)
+ mcs48_cpu_device &kbdcpu(I8039(config, "kbdcpu", 4.608_MHz_XTAL)); // oscillator marked "4608 - 300 107 - KSS4D"
+ kbdcpu.set_addrmap(AS_PROGRAM, &v102_state::kbd_map);
}
@@ -180,6 +125,9 @@ ROM_START( v102 )
ROM_REGION(0x1000, "chargen", 0)
ROM_LOAD( "260-001.u50", 0x0000, 0x1000, CRC(732f5b99) SHA1(d105bf9f3ed41109d7181bcf0223bb280afe3f0a) )
+
+ ROM_REGION(0x0800, "keyboard", 0)
+ ROM_LOAD( "150.kbd", 0x0000, 0x0800, CRC(afe55cff) SHA1(b26ebdde63ec0e94c08780285def39a282e128b3) )
ROM_END
COMP( 1984, v102, 0, 0, v102, v102, v102_state, empty_init, "Visual Technology", "Visual 102", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/v1050.cpp b/src/mame/drivers/v1050.cpp
index b88992449c0..fb66d34e6f7 100644
--- a/src/mame/drivers/v1050.cpp
+++ b/src/mame/drivers/v1050.cpp
@@ -1022,22 +1022,21 @@ void v1050_state::machine_reset()
// Machine Driver
-void v1050_state::v1050(machine_config &config)
-{
+MACHINE_CONFIG_START(v1050_state::v1050)
// basic machine hardware
- Z80(config, m_maincpu, 16_MHz_XTAL/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &v1050_state::v1050_mem);
- m_maincpu->set_addrmap(AS_IO, &v1050_state::v1050_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(v1050_state::v1050_int_ack));
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, 16_MHz_XTAL/4)
+ MCFG_DEVICE_PROGRAM_MAP(v1050_mem)
+ MCFG_DEVICE_IO_MAP(v1050_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(v1050_state,v1050_int_ack)
- config.m_perfect_cpu_quantum = subtag(Z80_TAG);
+ MCFG_QUANTUM_PERFECT_CPU(Z80_TAG)
- M6502(config, m_subcpu, 15.36_MHz_XTAL/16);
- m_subcpu->set_addrmap(AS_PROGRAM, &v1050_state::v1050_crt_mem);
- config.m_perfect_cpu_quantum = subtag(M6502_TAG);
+ MCFG_DEVICE_ADD(M6502_TAG, M6502, 15.36_MHz_XTAL/16)
+ MCFG_DEVICE_PROGRAM_MAP(v1050_crt_mem)
+ MCFG_QUANTUM_PERFECT_CPU(M6502_TAG)
// keyboard HACK
- TIMER(config, "keyboard").configure_periodic(FUNC(v1050_state::v1050_keyboard_tick), attotime::from_hz(60));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", v1050_state, v1050_keyboard_tick, attotime::from_hz(60))
// video hardware
v1050_video(config);
@@ -1046,12 +1045,12 @@ void v1050_state::v1050(machine_config &config)
I8214(config, m_pic, 16_MHz_XTAL/4);
m_pic->int_wr_callback().set(FUNC(v1050_state::pic_int_w));
- MSM58321(config, m_rtc, 32.768_kHz_XTAL);
- m_rtc->d0_handler().set(FUNC(v1050_state::rtc_ppi_pa_0_w));
- m_rtc->d1_handler().set(FUNC(v1050_state::rtc_ppi_pa_1_w));
- m_rtc->d2_handler().set(FUNC(v1050_state::rtc_ppi_pa_2_w));
- m_rtc->d3_handler().set(FUNC(v1050_state::rtc_ppi_pa_3_w));
- m_rtc->busy_handler().set(FUNC(v1050_state::rtc_ppi_pc_3_w));
+ MCFG_DEVICE_ADD(MSM58321RS_TAG, MSM58321, 32.768_kHz_XTAL)
+ MCFG_MSM58321_D0_HANDLER(WRITELINE(*this, v1050_state, rtc_ppi_pa_0_w))
+ MCFG_MSM58321_D1_HANDLER(WRITELINE(*this, v1050_state, rtc_ppi_pa_1_w))
+ MCFG_MSM58321_D2_HANDLER(WRITELINE(*this, v1050_state, rtc_ppi_pa_2_w))
+ MCFG_MSM58321_D3_HANDLER(WRITELINE(*this, v1050_state, rtc_ppi_pa_3_w))
+ MCFG_MSM58321_BUSY_HANDLER(WRITELINE(*this, v1050_state, rtc_ppi_pc_3_w))
I8255A(config, m_ppi_disp);
m_ppi_disp->in_pa_callback().set(I8255A_M6502_TAG, FUNC(i8255_device::pb_r));
@@ -1078,8 +1077,8 @@ void v1050_state::v1050(machine_config &config)
m_uart_kb->txd_handler().set(V1050_KEYBOARD_TAG, FUNC(v1050_keyboard_device::si_w));
m_uart_kb->rxrdy_handler().set(FUNC(v1050_state::kb_rxrdy_w));
- clock_device &clock_kb(CLOCK(config, CLOCK_KB_TAG, 16_MHz_XTAL/4/13/8));
- clock_kb.signal_handler().set(FUNC(v1050_state::write_keyboard_clock));
+ MCFG_DEVICE_ADD(CLOCK_KB_TAG, CLOCK, 16_MHz_XTAL/4/13/8)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, v1050_state, write_keyboard_clock))
// keyboard
v1050_keyboard_device &keyboard(V1050_KEYBOARD(config, V1050_KEYBOARD_TAG, 0));
@@ -1096,50 +1095,48 @@ void v1050_state::v1050(machine_config &config)
rs232.rxd_handler().set(m_uart_sio, FUNC(i8251_device::write_rxd));
rs232.dsr_handler().set(m_uart_sio, FUNC(i8251_device::write_dsr));
- CLOCK(config, m_clock_sio, 16_MHz_XTAL/4);
- m_clock_sio->signal_handler().set(FUNC(v1050_state::write_sio_clock));
+ MCFG_DEVICE_ADD(CLOCK_SIO_TAG, CLOCK, 16_MHz_XTAL/4)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, v1050_state, write_sio_clock))
MB8877(config, m_fdc, 16_MHz_XTAL/16);
m_fdc->intrq_wr_callback().set(FUNC(v1050_state::fdc_intrq_w));
m_fdc->drq_wr_callback().set(FUNC(v1050_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, MB8877_TAG":0", v1050_floppies, "525qd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":1", v1050_floppies, "525qd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":2", v1050_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, MB8877_TAG":3", v1050_floppies, nullptr, floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":0", v1050_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":1", v1050_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":2", v1050_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":3", v1050_floppies, nullptr, floppy_image_device::default_floppy_formats)
// SASI bus
SCSI_PORT(config, m_sasibus, 0);
- m_sasibus->set_data_input_buffer(m_sasi_data_in);
- m_sasibus->req_handler().set(m_sasi_ctrl_in, FUNC(input_buffer_device::write_bit0)).exor(1);
- m_sasibus->bsy_handler().set(m_sasi_ctrl_in, FUNC(input_buffer_device::write_bit1));
- m_sasibus->msg_handler().set(m_sasi_ctrl_in, FUNC(input_buffer_device::write_bit2));
- m_sasibus->cd_handler().set(m_sasi_ctrl_in, FUNC(input_buffer_device::write_bit3));
+ m_sasibus->set_data_input_buffer("scsi_data_in");
+ m_sasibus->req_handler().set("scsi_ctrl_in", FUNC(input_buffer_device::write_bit0)).exor(1);
+ m_sasibus->bsy_handler().set("scsi_ctrl_in", FUNC(input_buffer_device::write_bit1));
+ m_sasibus->msg_handler().set("scsi_ctrl_in", FUNC(input_buffer_device::write_bit2));
+ m_sasibus->cd_handler().set("scsi_ctrl_in", FUNC(input_buffer_device::write_bit3));
m_sasibus->io_handler().set(FUNC(v1050_state::write_sasi_io)).exor(1); // bit4
- m_sasibus->set_slot_device(1, "harddisk", S1410, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
+ MCFG_SCSIDEV_ADD(SASIBUS_TAG ":" SCSI_PORT_DEVICE1, "harddisk", S1410, SCSI_ID_0)
- OUTPUT_LATCH(config, m_sasi_data_out);
- m_sasibus->set_output_latch(*m_sasi_data_out);
- INPUT_BUFFER(config, m_sasi_data_in);
- INPUT_BUFFER(config, m_sasi_ctrl_in);
+ MCFG_SCSI_OUTPUT_LATCH_ADD("scsi_data_out", SASIBUS_TAG)
+ MCFG_DEVICE_ADD("scsi_data_in", INPUT_BUFFER, 0)
+ MCFG_DEVICE_ADD("scsi_ctrl_in", INPUT_BUFFER, 0)
- TIMER(config, m_timer_ack).configure_generic(FUNC(v1050_state::sasi_ack_tick));
- TIMER(config, m_timer_rst).configure_generic(FUNC(v1050_state::sasi_rst_tick));
+ MCFG_TIMER_DRIVER_ADD(TIMER_ACK_TAG, v1050_state, sasi_ack_tick)
+ MCFG_TIMER_DRIVER_ADD(TIMER_RST_TAG, v1050_state, sasi_rst_tick)
// software lists
- SOFTWARE_LIST(config, "flop_list").set_original("v1050_flop");
- SOFTWARE_LIST(config, "hdd_list").set_original("v1050_hdd");
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "v1050_flop")
+ MCFG_SOFTWARE_LIST_ADD("hdd_list", "v1050_hdd")
// printer
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(v1050_state::write_centronics_busy));
- m_centronics->perror_handler().set(FUNC(v1050_state::write_centronics_perror));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, v1050_state, write_centronics_busy))
+ MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, v1050_state, write_centronics_perror))
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
// internal ram
RAM(config, RAM_TAG).set_default_size("128K");
-}
+MACHINE_CONFIG_END
// ROMs
diff --git a/src/mame/drivers/v550.cpp b/src/mame/drivers/v550.cpp
index 404724bacb1..c8b9f504978 100644
--- a/src/mame/drivers/v550.cpp
+++ b/src/mame/drivers/v550.cpp
@@ -127,11 +127,11 @@ void v550_state::v550(machine_config &config)
INPUT_MERGER_ANY_HIGH(config, "mainint").output_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- com8116_device &brg1(COM8116_020(config, "brg1", 1.8432_MHz_XTAL)); // SMC COM8116T-020
+ com8116_device &brg1(COM8116(config, "brg1", 5068800)); // actually SMC COM8116T-020 (unknown clock)
brg1.ft_handler().set("mpsc", FUNC(upd7201_new_device::txca_w));
brg1.fr_handler().set("mpsc", FUNC(upd7201_new_device::rxca_w));
- com8116_device &brg2(COM8116_020(config, "brg2", 1.8432_MHz_XTAL)); // SMC COM8116T-020
+ com8116_device &brg2(COM8116(config, "brg2", 5068800)); // actually SMC COM8116T-020
brg2.ft_handler().set("mpsc", FUNC(upd7201_new_device::txcb_w));
brg2.ft_handler().append("mpsc", FUNC(upd7201_new_device::rxcb_w));
brg2.fr_handler().set("usart", FUNC(i8251_device::write_txc));
diff --git a/src/mame/drivers/v6809.cpp b/src/mame/drivers/v6809.cpp
index 5095945e919..07ae3ed8a78 100644
--- a/src/mame/drivers/v6809.cpp
+++ b/src/mame/drivers/v6809.cpp
@@ -203,7 +203,7 @@ WRITE8_MEMBER( v6809_state::videoram_w )
WRITE8_MEMBER( v6809_state::v6809_address_w )
{
- m_crtc->address_w(data);
+ m_crtc->address_w( space, 0, data );
m_video_index = data & 0x1f;
@@ -215,7 +215,7 @@ WRITE8_MEMBER( v6809_state::v6809_register_w )
{
uint16_t temp = m_video_address;
- m_crtc->register_w(data);
+ m_crtc->register_w( space, 0, data );
// Get transparent address
if (m_video_index == 18)
@@ -282,26 +282,26 @@ static void v6809_floppies(device_slot_interface &device)
// *** Machine ****
-void v6809_state::v6809(machine_config &config)
-{
+MACHINE_CONFIG_START(v6809_state::v6809)
/* basic machine hardware */
- MC6809(config, m_maincpu, 16_MHz_XTAL / 4); // divided by 4 again internally
- m_maincpu->set_addrmap(AS_PROGRAM, &v6809_state::v6809_mem);
+ MCFG_DEVICE_ADD("maincpu", MC6809, 16_MHz_XTAL / 4) // divided by 4 again internally
+ MCFG_DEVICE_PROGRAM_MAP(v6809_mem)
MCFG_MACHINE_RESET_OVERRIDE(v6809_state, v6809)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_screen_update("crtc", FUNC(sy6545_1_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", sy6545_1_device, screen_update)
PALETTE(config, m_palette, palette_device::MONOCHROME);
- GFXDECODE(config, "gfxdecode", m_palette, gfx_v6809);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_v6809)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* devices */
SY6545_1(config, m_crtc, 16_MHz_XTAL / 8);
@@ -343,14 +343,15 @@ void v6809_state::v6809(machine_config &config)
acia_clock.signal_handler().append("acia1", FUNC(acia6850_device::write_txc));
acia_clock.signal_handler().append("acia1", FUNC(acia6850_device::write_rxc));
- mm58274c_device &rtc(MM58274C(config, "rtc", 0));
+ MCFG_DEVICE_ADD("rtc", MM58274C, 0)
// this is all guess
- rtc.set_mode24(0); // 12 hour
- rtc.set_day1(1); // monday
+ MCFG_MM58274C_MODE24(0) // 12 hour
+ MCFG_MM58274C_DAY1(1) // monday
MB8876(config, m_fdc, 16_MHz_XTAL / 16);
- FLOPPY_CONNECTOR(config, "fdc:0", v6809_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
-}
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", v6809_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( v6809 )
diff --git a/src/mame/drivers/vaportra.cpp b/src/mame/drivers/vaportra.cpp
index 4f7015df8a4..c1ad77f601c 100644
--- a/src/mame/drivers/vaportra.cpp
+++ b/src/mame/drivers/vaportra.cpp
@@ -207,30 +207,30 @@ void vaportra_state::machine_reset()
m_priority[1] = 0;
}
-void vaportra_state::vaportra(machine_config &config)
-{
+MACHINE_CONFIG_START(vaportra_state::vaportra)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000)/2); /* Custom chip 59 */
- m_maincpu->set_addrmap(AS_PROGRAM, &vaportra_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(vaportra_state::irq6_line_assert));
+ MCFG_DEVICE_ADD(m_maincpu, M68000,XTAL(24'000'000)/2) /* Custom chip 59 */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", vaportra_state, irq6_line_assert)
H6280(config, m_audiocpu, XTAL(24'000'000)/4); /* Custom chip 45; Audio section crystal is 32.220 MHz but CPU clock is confirmed as coming from the 24MHz crystal (6Mhz exactly on the CPU) */
m_audiocpu->set_addrmap(AS_PROGRAM, &vaportra_state::sound_map);
m_audiocpu->add_route(ALL_OUTPUTS, "mono", 0); // internal sound unused
/* video hardware */
- BUFFERED_SPRITERAM16(config, m_spriteram);
+ MCFG_DEVICE_ADD(m_spriteram, BUFFERED_SPRITERAM16)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(58);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(529));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(vaportra_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(58)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(vaportra_state, screen_update)
+ MCFG_SCREEN_PALETTE("colors")
- GFXDECODE(config, "gfxdecode", m_palette, gfx_vaportra);
- PALETTE(config, m_palette).set_entries(1280);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_vaportra)
+ MCFG_PALETTE_ADD(m_palette, 1280)
DECO16IC(config, m_deco_tilegen[0], 0);
m_deco_tilegen[0]->set_split(0);
@@ -274,17 +274,20 @@ void vaportra_state::vaportra(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
- YM2203(config, "ym1", XTAL(32'220'000)/8).add_route(ALL_OUTPUTS, "mono", 0.60);
+ MCFG_DEVICE_ADD("ym1", YM2203, XTAL(32'220'000)/8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000)/9)); // uses a preset LS163 to force the odd speed
ym2.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */
ym2.add_route(0, "mono", 0.60);
ym2.add_route(1, "mono", 0.60);
- OKIM6295(config, "oki1", XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.75);
+ MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
- OKIM6295(config, "oki2", XTAL(32'220'000)/16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60);
-}
+ MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(32'220'000)/16, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+MACHINE_CONFIG_END
/******************************************************************************/
diff --git a/src/mame/drivers/vax11.cpp b/src/mame/drivers/vax11.cpp
index c07cfe1798a..9a799f4e54e 100644
--- a/src/mame/drivers/vax11.cpp
+++ b/src/mame/drivers/vax11.cpp
@@ -97,7 +97,7 @@ private:
WRITE16_MEMBER(vax11_state::term_w)
{
- m_terminal->write(data);
+ m_terminal->write(space, 0, data);
}
READ16_MEMBER(vax11_state::term_r)
diff --git a/src/mame/drivers/vball.cpp b/src/mame/drivers/vball.cpp
index d625035ecd2..263e7f746a8 100644
--- a/src/mame/drivers/vball.cpp
+++ b/src/mame/drivers/vball.cpp
@@ -396,25 +396,26 @@ static GFXDECODE_START( gfx_vb )
GFXDECODE_END
-void vball_state::vball(machine_config &config)
-{
+MACHINE_CONFIG_START(vball_state::vball)
+
/* basic machine hardware */
- M6502(config, m_maincpu, CPU_CLOCK); /* 2 MHz - measured by guru but it makes the game far far too slow ?! */
- m_maincpu->set_addrmap(AS_PROGRAM, &vball_state::main_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(vball_state::vball_scanline), "screen", 0, 1);
+ MCFG_DEVICE_ADD("maincpu", M6502, CPU_CLOCK) /* 2 MHz - measured by guru but it makes the game far far too slow ?! */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", vball_state, vball_scanline, "screen", 0, 1)
- Z80(config, m_audiocpu, 3579545); /* 3.579545 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &vball_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 3579545) /* 3.579545 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_size(32*8, 32*8);
- m_screen->set_raw(PIXEL_CLOCK, 384, 0, 256, 272, 8, 248); /* based on ddragon driver */
- m_screen->set_screen_update(FUNC(vball_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 8, 248) /* based on ddragon driver */
+ MCFG_SCREEN_UPDATE_DRIVER(vball_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_vb)
+ MCFG_PALETTE_ADD("palette", 256)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_vb);
- PALETTE(config, m_palette).set_entries(256);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -429,10 +430,10 @@ void vball_state::vball(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.60);
ymsnd.add_route(1, "rspeaker", 0.60);
- okim6295_device &oki(OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH));
- oki.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/vboy.cpp b/src/mame/drivers/vboy.cpp
index e023e25dcb5..76d8d9df2b7 100644
--- a/src/mame/drivers/vboy.cpp
+++ b/src/mame/drivers/vboy.cpp
@@ -1305,50 +1305,50 @@ static void vboy_cart(device_slot_interface &device)
device.option_add_internal("vb_eeprom", VBOY_ROM_EEPROM);
}
-void vboy_state::vboy(machine_config &config)
-{
+MACHINE_CONFIG_START(vboy_state::vboy)
+
/* basic machine hardware */
- V810(config, m_maincpu, XTAL(20'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &vboy_state::vboy_mem);
- m_maincpu->set_addrmap(AS_IO, &vboy_state::vboy_io);
- TIMER(config, "scantimer_l").configure_scanline(FUNC(vboy_state::vboy_scanlineL), "3dleft", 0, 1);
- //TIMER(config, "scantimer_r").configure_scanline(FUNC(vboy_state::vboy_scanlineR), "3dright", 0, 1);
+ MCFG_DEVICE_ADD( "maincpu", V810, XTAL(20'000'000) )
+ MCFG_DEVICE_PROGRAM_MAP(vboy_mem)
+ MCFG_DEVICE_IO_MAP(vboy_io)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer_l", vboy_state, vboy_scanlineL, "3dleft", 0, 1)
+ //MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer_r", vboy_state, vboy_scanlineR, "3dright", 0, 1)
// programmable timer
- TIMER(config, m_maintimer).configure_generic(FUNC(vboy_state::timer_main_tick));
+ MCFG_TIMER_DRIVER_ADD("timer_main", vboy_state, timer_main_tick)
// pad ready, which should be once per VBL
- TIMER(config, "timer_pad").configure_periodic(FUNC(vboy_state::timer_pad_tick), attotime::from_hz(50.038029f));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_pad", vboy_state, timer_pad_tick, attotime::from_hz(50.038029f))
/* video hardware */
config.set_default_layout(layout_vboy);
PALETTE(config, m_palette, FUNC(vboy_state::vboy_palette), 4);
/* Left screen */
- screen_device &lscreen(SCREEN(config, "3dleft", SCREEN_TYPE_RASTER));
- lscreen.set_raw(XTAL(20'000'000)/2,757,0,384,264,0,224);
- lscreen.set_screen_update(FUNC(vboy_state::screen_update_vboy_left));
- lscreen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("3dleft", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(20'000'000)/2,757,0,384,264,0,224)
+ MCFG_SCREEN_UPDATE_DRIVER(vboy_state, screen_update_vboy_left)
+ MCFG_SCREEN_PALETTE(m_palette)
/* Right screen */
- screen_device &rscreen(SCREEN(config, "3dright", SCREEN_TYPE_RASTER));
- rscreen.set_raw(XTAL(20'000'000)/2,757,0,384,264,0,224);
- rscreen.set_screen_update(FUNC(vboy_state::screen_update_vboy_right));
- rscreen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("3dright", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(20'000'000)/2,757,0,384,264,0,224)
+ MCFG_SCREEN_UPDATE_DRIVER(vboy_state, screen_update_vboy_right)
+ MCFG_SCREEN_PALETTE(m_palette)
/* cartridge */
- VBOY_CART_SLOT(config, m_cart, vboy_cart, nullptr);
+ MCFG_VBOY_CARTRIDGE_ADD("cartslot", vboy_cart, nullptr)
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("vboy");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","vboy")
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- vboysnd_device &vbsnd(VBOYSND(config, "vbsnd"));
- vbsnd.add_route(0, "lspeaker", 1.0);
- vbsnd.add_route(1, "rspeaker", 1.0);
-}
+ MCFG_DEVICE_ADD("vbsnd", VBOYSND)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( vboy )
diff --git a/src/mame/drivers/vc4000.cpp b/src/mame/drivers/vc4000.cpp
index 07a31603836..21a3bf17294 100644
--- a/src/mame/drivers/vc4000.cpp
+++ b/src/mame/drivers/vc4000.cpp
@@ -370,23 +370,23 @@ void vc4000_state::machine_start()
switch (m_cart->get_type())
{
case VC4000_STD:
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x07ff, read8sm_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x07ff, read8_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
break;
case VC4000_ROM4K:
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8sm_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
break;
case VC4000_RAM1K:
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8sm_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
- m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x15ff, read8sm_delegate(FUNC(vc4000_cart_slot_device::read_ram),(vc4000_cart_slot_device*)m_cart), write8sm_delegate(FUNC(vc4000_cart_slot_device::write_ram),(vc4000_cart_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x15ff, read8_delegate(FUNC(vc4000_cart_slot_device::read_ram),(vc4000_cart_slot_device*)m_cart), write8_delegate(FUNC(vc4000_cart_slot_device::write_ram),(vc4000_cart_slot_device*)m_cart));
break;
case VC4000_CHESS2:
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x15ff, read8sm_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
- m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1800, 0x1bff, read8sm_delegate(FUNC(vc4000_cart_slot_device::read_ram),(vc4000_cart_slot_device*)m_cart), write8sm_delegate(FUNC(vc4000_cart_slot_device::write_ram),(vc4000_cart_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x15ff, read8_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1800, 0x1bff, read8_delegate(FUNC(vc4000_cart_slot_device::read_ram),(vc4000_cart_slot_device*)m_cart), write8_delegate(FUNC(vc4000_cart_slot_device::write_ram),(vc4000_cart_slot_device*)m_cart));
break;
// undumped Radofin Hobby Module
// case VC4000_HOBBY:
-// m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x07ff, read8sm_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
-// m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0800, 0x0fff, read8sm_delegate(FUNC(vc4000_cart_slot_device::read_ram),(vc4000_cart_slot_device*)m_cart), write8sm_delegate(FUNC(vc4000_cart_slot_device::write_ram),(vc4000_cart_slot_device*)m_cart));
+// m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x07ff, read8_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
+// m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0800, 0x0fff, read8_delegate(FUNC(vc4000_cart_slot_device::read_ram),(vc4000_cart_slot_device*)m_cart), write8_delegate(FUNC(vc4000_cart_slot_device::write_ram),(vc4000_cart_slot_device*)m_cart));
// break;
}
@@ -550,8 +550,8 @@ void vc4000_state::vc4000(machine_config &config)
VC4000_SND(config, m_custom, 0).add_route(ALL_OUTPUTS, "mono", 0.50);
/* quickload */
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(vc4000_state, vc4000), this), "pgm,tvc");
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(vc4000_state, vc4000), this), "pgm,tvc", 0);
/* cartridge */
VC4000_CART_SLOT(config, "cartslot", vc4000_cart, nullptr);
diff --git a/src/mame/drivers/vcombat.cpp b/src/mame/drivers/vcombat.cpp
index a647059e88e..8bea4d4a40e 100644
--- a/src/mame/drivers/vcombat.cpp
+++ b/src/mame/drivers/vcombat.cpp
@@ -348,9 +348,9 @@ WRITE16_MEMBER(vcombat_state::crtc_w)
return;
if (m_crtc_select == 0)
- m_crtc->address_w(data >> 8);
+ m_crtc->address_w(space, 0, data >> 8);
else
- m_crtc->register_w(data >> 8);
+ m_crtc->register_w(space, 0, data >> 8);
m_crtc_select ^= 1;
}
@@ -560,75 +560,72 @@ WRITE_LINE_MEMBER(vcombat_state::sound_update)
m_soundcpu->set_input_line(M68K_IRQ_1, state ? ASSERT_LINE : CLEAR_LINE);
}
-void vcombat_state::vcombat(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(12'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &vcombat_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(vcombat_state::irq1_line_assert));
+MACHINE_CONFIG_START(vcombat_state::vcombat)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(12'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", vcombat_state, irq1_line_assert)
/* The middle board i860 */
- I860(config, m_vid_0, XTAL(20'000'000));
- m_vid_0->set_addrmap(AS_PROGRAM, &vcombat_state::vid_0_map);
+ MCFG_DEVICE_ADD("vid_0", I860, XTAL(20'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(vid_0_map)
/* The top board i860 */
- I860(config, m_vid_1, XTAL(20'000'000));
- m_vid_1->set_addrmap(AS_PROGRAM, &vcombat_state::vid_1_map);
+ MCFG_DEVICE_ADD("vid_1", I860, XTAL(20'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(vid_1_map)
/* Sound CPU */
- M68000(config, m_soundcpu, XTAL(12'000'000));
- m_soundcpu->set_addrmap(AS_PROGRAM, &vcombat_state::sound_map);
- m_soundcpu->set_periodic_int(FUNC(vcombat_state::irq1_line_hold), attotime::from_hz(15000)); /* Remove this if MC6845 is enabled */
+ MCFG_DEVICE_ADD("soundcpu", M68000, XTAL(12'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(vcombat_state, irq1_line_hold, 15000) /* Remove this if MC6845 is enabled */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
MCFG_MACHINE_RESET_OVERRIDE(vcombat_state,vcombat)
/* Temporary hack for experimenting with timing. */
#if 0
- //config.m_minimum_quantum = attotime::from_hz(1200);
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ //MCFG_QUANTUM_TIME(attotime::from_hz(1200))
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
#endif
- TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT);
+ MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
/* Disabled for now as it can't handle multiple screens */
// MC6845(config, m_crtc, 6000000 / 16);
// m_crtc->set_screen("screen");
config.set_default_layout(layout_dualhsxs);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(12'000'000) / 2, 400, 0, 256, 291, 0, 208);
- screen.set_screen_update(FUNC(vcombat_state::screen_update_vcombat_main));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(12'000'000) / 2, 400, 0, 256, 291, 0, 208)
+ MCFG_SCREEN_UPDATE_DRIVER(vcombat_state, screen_update_vcombat_main)
- screen_device &aux(SCREEN(config, "aux", SCREEN_TYPE_RASTER));
- aux.set_raw(XTAL(12'000'000) / 2, 400, 0, 256, 291, 0, 208);
- aux.set_screen_update(FUNC(vcombat_state::screen_update_vcombat_aux));
+ MCFG_SCREEN_ADD("aux", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(12'000'000) / 2, 400, 0, 256, 291, 0, 208)
+ MCFG_SCREEN_UPDATE_DRIVER(vcombat_state, screen_update_vcombat_aux)
SPEAKER(config, "speaker").front_center();
- DAC_10BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_10BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void vcombat_state::shadfgtr(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(12'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &vcombat_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(vcombat_state::irq1_line_assert));
+MACHINE_CONFIG_START(vcombat_state::shadfgtr)
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(12'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", vcombat_state, irq1_line_assert)
/* The middle board i860 */
- I860(config, m_vid_0, XTAL(20'000'000));
- m_vid_0->set_addrmap(AS_PROGRAM, &vcombat_state::vid_0_map);
+ MCFG_DEVICE_ADD("vid_0", I860, XTAL(20'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(vid_0_map)
/* Sound CPU */
- M68000(config, m_soundcpu, XTAL(12'000'000));
- m_soundcpu->set_addrmap(AS_PROGRAM, &vcombat_state::sound_map);
+ MCFG_DEVICE_ADD("soundcpu", M68000, XTAL(12'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
MCFG_MACHINE_RESET_OVERRIDE(vcombat_state,shadfgtr)
- TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT);
+ MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
MC6845(config, m_crtc, XTAL(20'000'000) / 4 / 16);
m_crtc->set_screen("screen");
@@ -636,16 +633,15 @@ void vcombat_state::shadfgtr(machine_config &config)
m_crtc->set_char_width(16);
m_crtc->out_hsync_callback().set(FUNC(vcombat_state::sound_update));
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(20'000'000) / 4, 320, 0, 256, 277, 0, 224);
- screen.set_screen_update(FUNC(vcombat_state::screen_update_vcombat_main));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(20'000'000) / 4, 320, 0, 256, 277, 0, 224)
+ MCFG_SCREEN_UPDATE_DRIVER(vcombat_state, screen_update_vcombat_main)
SPEAKER(config, "speaker").front_center();
- DAC_10BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_10BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
ROM_START( vcombat )
diff --git a/src/mame/drivers/vcs80.cpp b/src/mame/drivers/vcs80.cpp
index c1e7dc5d051..638560b9d28 100644
--- a/src/mame/drivers/vcs80.cpp
+++ b/src/mame/drivers/vcs80.cpp
@@ -213,8 +213,7 @@ void vcs80_state::machine_start()
/* Machine Driver */
-void vcs80_state::vcs80(machine_config &config)
-{
+MACHINE_CONFIG_START(vcs80_state::vcs80)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(5'000'000)/2); /* U880D */
m_maincpu->set_addrmap(AS_PROGRAM, &vcs80_state::vcs80_mem);
@@ -222,7 +221,7 @@ void vcs80_state::vcs80(machine_config &config)
m_maincpu->set_daisy_config(vcs80_daisy_chain);
/* keyboard timer */
- TIMER(config, "keyboard").configure_periodic(FUNC(vcs80_state::vcs80_keyboard_tick), attotime::from_hz(1000));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", vcs80_state, vcs80_keyboard_tick, attotime::from_hz(1000))
/* video hardware */
config.set_default_layout(layout_vcs80);
@@ -238,7 +237,7 @@ void vcs80_state::vcs80(machine_config &config)
/* bankdev */
ADDRESS_MAP_BANK(config, "bdmem").set_map(&vcs80_state::vcs80_bd_mem).set_options(ENDIANNESS_BIG, 8, 32, 0x10000);
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/vd.cpp b/src/mame/drivers/vd.cpp
index e06b9053ff7..2d56a9afaa8 100644
--- a/src/mame/drivers/vd.cpp
+++ b/src/mame/drivers/vd.cpp
@@ -186,13 +186,12 @@ void vd_state::machine_reset()
m_t_c = 0;
}
-void vd_state::vd(machine_config &config)
-{
+MACHINE_CONFIG_START(vd_state::vd)
/* basic machine hardware */
- Z80(config, m_maincpu, 4000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &vd_state::vd_map);
- m_maincpu->set_addrmap(AS_IO, &vd_state::vd_io);
- TIMER(config, "irq").configure_periodic(FUNC(vd_state::irq), attotime::from_hz(484));
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000)
+ MCFG_DEVICE_PROGRAM_MAP(vd_map)
+ MCFG_DEVICE_IO_MAP(vd_io)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", vd_state, irq, attotime::from_hz(484))
/* Sound */
genpin_audio(config);
@@ -208,7 +207,7 @@ void vd_state::vd(machine_config &config)
/* Video */
config.set_default_layout(layout_vd);
-}
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
/ Break '86 (1986)
diff --git a/src/mame/drivers/vectrex.cpp b/src/mame/drivers/vectrex.cpp
index 79bb72a91f0..158ce9e9208 100644
--- a/src/mame/drivers/vectrex.cpp
+++ b/src/mame/drivers/vectrex.cpp
@@ -113,6 +113,7 @@ void vectrex_base_state::vectrex_base(machine_config &config)
SPEAKER(config, "speaker").front_center();
MC1408(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // mc1408.ic301 (also used for vector generation)
voltage_regulator_device &vreg(VOLTAGE_REGULATOR(config, "vref", 0));
+ vreg.set_output(5.0);
vreg.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vreg.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
diff --git a/src/mame/drivers/vectrix.cpp b/src/mame/drivers/vectrix.cpp
index d114ba42119..477fbb07386 100644
--- a/src/mame/drivers/vectrix.cpp
+++ b/src/mame/drivers/vectrix.cpp
@@ -50,14 +50,13 @@ void vectrix_state::io_map(address_map &map)
static INPUT_PORTS_START( vectrix )
INPUT_PORTS_END
-void vectrix_state::vectrix(machine_config &config)
-{
- i8088_cpu_device &maincpu(I8088(config, "maincpu", XTAL(14'318'181)/3)); // no idea of clock
- maincpu.set_addrmap(AS_PROGRAM, &vectrix_state::mem_map);
- maincpu.set_addrmap(AS_IO, &vectrix_state::io_map);
+MACHINE_CONFIG_START(vectrix_state::vectrix)
+ MCFG_DEVICE_ADD("maincpu", I8088, XTAL(14'318'181)/3) // no idea of clock
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
- I8251(config, "uart1", 0);
-}
+ MCFG_DEVICE_ADD("uart1", I8251, 0)
+MACHINE_CONFIG_END
ROM_START( vectrix )
ROM_REGION( 0x4000, "roms", 0 )
diff --git a/src/mame/drivers/vega.cpp b/src/mame/drivers/vega.cpp
index f4046254162..e4ad27d5dd4 100644
--- a/src/mame/drivers/vega.cpp
+++ b/src/mame/drivers/vega.cpp
@@ -139,6 +139,7 @@ private:
int m_tmp;
int m_t1;
+ uint8_t m_ins8154_ram[0x80];
uint8_t m_txt_ram[0x400];
vega_obj m_obj[NUM_OBJ];
@@ -193,7 +194,7 @@ WRITE8_MEMBER(vega_state::extern_w)
case 1: /* 04-07 */
{
/* AY 3-8910 */
- m_ay8910->address_w(offset);
+ m_ay8910->address_w(space, 0, offset);
}
break;
@@ -203,12 +204,12 @@ WRITE8_MEMBER(vega_state::extern_w)
if(m_p2_data&0x40) /* P26 connected to M/IO pin */
{
- m_ins8154->write_ram(offset, data);
+ m_ins8154_ram[offset&0x7f]=data;
}
else
{
//register w ?
- m_ins8154->write_io(offset & 0x7f, data);
+ m_ins8154->ins8154_w(space,offset&0x7f,data);
}
}
break;
@@ -321,7 +322,7 @@ READ8_MEMBER(vega_state::extern_r)
case 1: /* 04-07 */
{
/* AY 3-8910 */
- m_ay8910->data_w(offset);
+ m_ay8910->data_w(space, 0, offset);
return 0xff;//mame_rand(machine);
}
@@ -331,12 +332,12 @@ READ8_MEMBER(vega_state::extern_r)
if(m_p2_data&0x40) /* P26 connected to M/IO pin */
{
- return m_ins8154->read_ram(offset);
+ return m_ins8154_ram[offset&0x7f];
}
else
{
//register r ?
- return m_ins8154->read_io(offset & 0x7f);
+ return m_ins8154->ins8154_r(space,offset&0x7f);
}
}
#if 0
diff --git a/src/mame/drivers/vegaeo.cpp b/src/mame/drivers/vegaeo.cpp
index 6783050ab0b..13bcacd1e07 100644
--- a/src/mame/drivers/vegaeo.cpp
+++ b/src/mame/drivers/vegaeo.cpp
@@ -291,7 +291,7 @@ ROM_END
void vegaeo_state::init_vegaeo()
{
// Set up the QS1000 program ROM banking, taking care not to overlap the internal RAM
- m_qs1000->cpu().space(AS_IO).install_read_bank(0x0100, 0xffff, "bank");
+ m_qs1000->subdevice<i8052_device>("cpu")->space(AS_IO).install_read_bank(0x0100, 0xffff, "bank");
membank("qs1000:bank")->configure_entries(0, 8, memregion("qs1000:cpu")->base()+0x100, 0x10000);
init_speedup();
diff --git a/src/mame/drivers/vegas.cpp b/src/mame/drivers/vegas.cpp
index 24055d8d194..1729869a06b 100644
--- a/src/mame/drivers/vegas.cpp
+++ b/src/mame/drivers/vegas.cpp
@@ -570,13 +570,13 @@ WRITE32_MEMBER( vegas_state::timekeeper_w )
if (m_cmos_unlocked)
{
if (ACCESSING_BITS_0_7)
- m_timekeeper->write(offset * 4 + 0, data >> 0);
+ m_timekeeper->write(space, offset * 4 + 0, data >> 0, 0xff);
if (ACCESSING_BITS_8_15)
- m_timekeeper->write(offset * 4 + 1, data >> 8);
+ m_timekeeper->write(space, offset * 4 + 1, data >> 8, 0xff);
if (ACCESSING_BITS_16_23)
- m_timekeeper->write(offset * 4 + 2, data >> 16);
+ m_timekeeper->write(space, offset * 4 + 2, data >> 16, 0xff);
if (ACCESSING_BITS_24_31)
- m_timekeeper->write(offset * 4 + 3, data >> 24);
+ m_timekeeper->write(space, offset * 4 + 3, data >> 24, 0xff);
if (offset*4 >= 0x7ff0)
if (LOG_TIMEKEEPER) logerror("%s timekeeper_w(%04X & %08X) = %08X\n", machine().describe_context(), offset*4, mem_mask, data);
m_cmos_unlocked = 0;
@@ -590,13 +590,13 @@ READ32_MEMBER( vegas_state::timekeeper_r )
{
uint32_t result = 0xffffffff;
if (ACCESSING_BITS_0_7)
- result = (result & ~0x000000ff) | (m_timekeeper->read(offset * 4 + 0) << 0);
+ result = (result & ~0x000000ff) | (m_timekeeper->read(space, offset * 4 + 0, 0xff) << 0);
if (ACCESSING_BITS_8_15)
- result = (result & ~0x0000ff00) | (m_timekeeper->read(offset * 4 + 1) << 8);
+ result = (result & ~0x0000ff00) | (m_timekeeper->read(space, offset * 4 + 1, 0xff) << 8);
if (ACCESSING_BITS_16_23)
- result = (result & ~0x00ff0000) | (m_timekeeper->read(offset * 4 + 2) << 16);
+ result = (result & ~0x00ff0000) | (m_timekeeper->read(space, offset * 4 + 2, 0xff) << 16);
if (ACCESSING_BITS_24_31)
- result = (result & ~0xff000000) | (m_timekeeper->read(offset * 4 + 3) << 24);
+ result = (result & ~0xff000000) | (m_timekeeper->read(space, offset * 4 + 3, 0xff) << 24);
if (offset * 4 >= 0x7ff0) {
// Initial RTC check expects reads to the RTC to take some time
m_maincpu->eat_cycles(30);
@@ -822,7 +822,7 @@ WRITE8_MEMBER(vegas_state::sio_w)
break;
case 7:
// Watchdog
- m_timekeeper->watchdog_write();
+ m_timekeeper->watchdog_write(space, offset, data);
if (0 && LOG_SIO)
logerror("sio_w: Watchdog: %08x index: %d data: %02X\n", offset, index, data);
//m_maincpu->eat_cycles(100);
@@ -1739,8 +1739,7 @@ void vegas_state::vegas_cs8_map(address_map &map)
*
*************************************/
-void vegas_state::vegascore(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::vegascore)
/* basic machine hardware */
R5000LE(config, m_maincpu, vegas_state::SYSTEM_CLOCK * 2);
m_maincpu->set_icache_size(16384);
@@ -1783,40 +1782,35 @@ void vegas_state::vegascore(machine_config &config)
screen.set_size(640, 480);
screen.set_visarea(0, 640 - 1, 0, 480 - 1);
screen.set_screen_update(PCI_ID_VIDEO, FUNC(voodoo_pci_device::screen_update));
-}
+MACHINE_CONFIG_END
-void vegas_state::vegas(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::vegas)
vegascore(config);
-}
+MACHINE_CONFIG_END
-void vegas_state::vegas250(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::vegas250)
vegascore(config);
m_maincpu->set_clock(vegas_state::SYSTEM_CLOCK*2.5);
-}
+MACHINE_CONFIG_END
-void vegas_state::vegas32m(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::vegas32m)
vegas250(config);
m_nile->set_sdram_size(0, 0x02000000);
-}
+MACHINE_CONFIG_END
-void vegas_state::vegasban(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::vegasban)
vegas32m(config);
voodoo_banshee_pci_device &voodoo(VOODOO_BANSHEE_PCI(config.replace(), PCI_ID_VIDEO, 0, m_maincpu, "screen"));
voodoo.set_fbmem(16);
subdevice<voodoo_device>(PCI_ID_VIDEO":voodoo")->vblank_callback().set(FUNC(vegas_state::vblank_assert));
-}
+MACHINE_CONFIG_END
-void vegas_state::vegasv3(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::vegasv3)
vegas32m(config);
RM7000LE(config.replace(), m_maincpu, vegas_state::SYSTEM_CLOCK * 2.5);
m_maincpu->set_icache_size(16384);
@@ -1826,11 +1820,10 @@ void vegas_state::vegasv3(machine_config &config)
voodoo_3_pci_device &voodoo(VOODOO_3_PCI(config.replace(), PCI_ID_VIDEO, 0, m_maincpu, "screen"));
voodoo.set_fbmem(16);
subdevice<voodoo_device>(PCI_ID_VIDEO":voodoo")->vblank_callback().set(FUNC(vegas_state::vblank_assert));
-}
+MACHINE_CONFIG_END
-void vegas_state::denver(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::denver)
vegascore(config);
RM7000LE(config.replace(), m_maincpu, vegas_state::SYSTEM_CLOCK * 2.5);
@@ -1871,12 +1864,11 @@ void vegas_state::denver(machine_config &config)
ttys02.ri_handler().set(m_uart2, FUNC(ins8250_uart_device::ri_w));
ttys02.cts_handler().set(m_uart2, FUNC(ins8250_uart_device::cts_w));
-}
+MACHINE_CONFIG_END
// Per driver configs
-void vegas_state::gauntleg(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::gauntleg)
vegas(config);
dcs2_audio_2104_device &dcs(DCS2_AUDIO_2104(config, "dcs", 0));
dcs.set_dram_in_mb(4);
@@ -1888,10 +1880,9 @@ void vegas_state::gauntleg(machine_config &config)
m_ioasic->set_yearoffs(80);
m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
m_ioasic->set_auto_ack(1);
-}
+MACHINE_CONFIG_END
-void vegas_state::gauntdl(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::gauntdl)
vegas(config);
dcs2_audio_2104_device &dcs(DCS2_AUDIO_2104(config, "dcs", 0));
dcs.set_dram_in_mb(4);
@@ -1903,10 +1894,9 @@ void vegas_state::gauntdl(machine_config &config)
m_ioasic->set_yearoffs(80);
m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
m_ioasic->set_auto_ack(1);
-}
+MACHINE_CONFIG_END
-void vegas_state::warfa(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::warfa)
vegas250(config);
dcs2_audio_2104_device &dcs(DCS2_AUDIO_2104(config, "dcs", 0));
dcs.set_dram_in_mb(4);
@@ -1918,10 +1908,9 @@ void vegas_state::warfa(machine_config &config)
m_ioasic->set_yearoffs(80);
m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
m_ioasic->set_auto_ack(1);
-}
+MACHINE_CONFIG_END
-void vegas_state::tenthdeg(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::tenthdeg)
vegas(config);
dcs2_audio_2115_device &dcs(DCS2_AUDIO_2115(config, "dcs", 0));
dcs.set_dram_in_mb(4);
@@ -1933,10 +1922,9 @@ void vegas_state::tenthdeg(machine_config &config)
m_ioasic->set_yearoffs(80);
m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
m_ioasic->set_auto_ack(1);
-}
+MACHINE_CONFIG_END
-void vegas_state::roadburn(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::roadburn)
vegas32m(config);
dcs2_audio_dsio_device &dcs(DCS2_AUDIO_DSIO(config, "dcs", 0));
dcs.set_dram_in_mb(4);
@@ -1948,10 +1936,9 @@ void vegas_state::roadburn(machine_config &config)
m_ioasic->set_yearoffs(80);
m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
m_ioasic->set_auto_ack(1);
-}
+MACHINE_CONFIG_END
-void vegas_state::nbashowt(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::nbashowt)
vegasban(config);
dcs2_audio_2104_device &dcs(DCS2_AUDIO_2104(config, "dcs", 0));
dcs.set_dram_in_mb(4);
@@ -1965,10 +1952,9 @@ void vegas_state::nbashowt(machine_config &config)
m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
//m_ioasic->set_auto_ack(1)
m_ioasic->aux_output_handler().set(FUNC(vegas_state::i40_w));
-}
+MACHINE_CONFIG_END
-void vegas_state::nbanfl(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::nbanfl)
vegasban(config);
dcs2_audio_2104_device &dcs(DCS2_AUDIO_2104(config, "dcs", 0));
dcs.set_dram_in_mb(4);
@@ -1981,10 +1967,9 @@ void vegas_state::nbanfl(machine_config &config)
m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
//m_ioasic->set_auto_ack(1)
m_ioasic->aux_output_handler().set(FUNC(vegas_state::i40_w));
-}
+MACHINE_CONFIG_END
-void vegas_state::nbagold(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::nbagold)
vegasban(config);
QED5271LE(config.replace(), m_maincpu, vegas_state::SYSTEM_CLOCK * 2.5);
m_maincpu->set_icache_size(32768);
@@ -2002,10 +1987,9 @@ void vegas_state::nbagold(machine_config &config)
m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
//m_ioasic->set_auto_ack(1)
m_ioasic->aux_output_handler().set(FUNC(vegas_state::i40_w));
-}
+MACHINE_CONFIG_END
-void vegas_state::sf2049(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::sf2049)
denver(config);
dcs2_audio_denver_5ch_device &dcs(DCS2_AUDIO_DENVER_5CH(config, "dcs", 0));
dcs.set_dram_in_mb(8);
@@ -2018,10 +2002,9 @@ void vegas_state::sf2049(machine_config &config)
m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
m_ioasic->set_auto_ack(1);
m_ioasic->aux_output_handler().set(FUNC(vegas_state::wheel_board_w));
-}
+MACHINE_CONFIG_END
-void vegas_state::sf2049se(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::sf2049se)
denver(config);
dcs2_audio_denver_5ch_device &dcs(DCS2_AUDIO_DENVER_5CH(config, "dcs", 0));
dcs.set_dram_in_mb(8);
@@ -2034,10 +2017,9 @@ void vegas_state::sf2049se(machine_config &config)
m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
m_ioasic->set_auto_ack(1);
m_ioasic->aux_output_handler().set(FUNC(vegas_state::wheel_board_w));
-}
+MACHINE_CONFIG_END
-void vegas_state::sf2049te(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::sf2049te)
denver(config);
dcs2_audio_denver_5ch_device &dcs(DCS2_AUDIO_DENVER_5CH(config, "dcs", 0));
dcs.set_dram_in_mb(8);
@@ -2050,10 +2032,9 @@ void vegas_state::sf2049te(machine_config &config)
m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
m_ioasic->set_auto_ack(1);
m_ioasic->aux_output_handler().set(FUNC(vegas_state::wheel_board_w));
-}
+MACHINE_CONFIG_END
-void vegas_state::cartfury(machine_config &config)
-{
+MACHINE_CONFIG_START(vegas_state::cartfury)
vegasv3(config);
dcs2_audio_2104_device &dcs(DCS2_AUDIO_2104(config, "dcs", 0));
dcs.set_dram_in_mb(4);
@@ -2066,7 +2047,7 @@ void vegas_state::cartfury(machine_config &config)
m_ioasic->set_yearoffs(80);
m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
//m_ioasic->set_auto_ack(1)
-}
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/vertigo.cpp b/src/mame/drivers/vertigo.cpp
index e71ff96f89c..1dd61368b7a 100644
--- a/src/mame/drivers/vertigo.cpp
+++ b/src/mame/drivers/vertigo.cpp
@@ -106,12 +106,12 @@ INPUT_PORTS_END
*
*************************************/
-void vertigo_state::vertigo(machine_config &config)
-{
+MACHINE_CONFIG_START(vertigo_state::vertigo)
+
/* basic machine hardware */
- M68000(config, m_maincpu, 24_MHz_XTAL / 3);
- m_maincpu->set_addrmap(AS_PROGRAM, &vertigo_state::vertigo_map);
- m_maincpu->set_periodic_int(FUNC(vertigo_state::vertigo_interrupt), attotime::from_hz(60));
+ MCFG_DEVICE_ADD("maincpu", M68000, 24_MHz_XTAL / 3)
+ MCFG_DEVICE_PROGRAM_MAP(vertigo_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(vertigo_state, vertigo_interrupt, 60)
ADC0808(config, m_adc, 24_MHz_XTAL / 30); // E clock from 68000
m_adc->eoc_ff_callback().set(FUNC(vertigo_state::adc_eoc_w));
@@ -123,9 +123,9 @@ void vertigo_state::vertigo(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- EXIDY440(config, m_custom, EXIDY440_MC3418_CLOCK);
- m_custom->add_route(0, "lspeaker", 1.0);
- m_custom->add_route(1, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("440audio", EXIDY440, EXIDY440_MC3418_CLOCK)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
pit8254_device &pit(PIT8254(config, "pit", 0));
pit.set_clk<0>(24_MHz_XTAL / 100);
@@ -143,13 +143,13 @@ void vertigo_state::vertigo(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- VECTOR(config, m_vector, 0);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_VECTOR));
- screen.set_refresh_hz(60);
- screen.set_size(400, 300);
- screen.set_visarea(0, 510, 0, 400);
- screen.set_screen_update("vector", FUNC(vector_device::screen_update));
-}
+ MCFG_VECTOR_ADD("vector")
+ MCFG_SCREEN_ADD("screen", VECTOR)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(400, 300)
+ MCFG_SCREEN_VISIBLE_AREA(0, 510, 0, 400)
+ MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
+MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/vg5k.cpp b/src/mame/drivers/vg5k.cpp
index b6a45e97834..8f3067b28e5 100644
--- a/src/mame/drivers/vg5k.cpp
+++ b/src/mame/drivers/vg5k.cpp
@@ -131,13 +131,13 @@ WRITE8_MEMBER ( vg5k_state::ef9345_offset_w )
READ8_MEMBER ( vg5k_state::ef9345_io_r )
{
- return m_ef9345->data_r(m_ef9345_offset);
+ return m_ef9345->data_r(space, m_ef9345_offset, 0xff);
}
WRITE8_MEMBER ( vg5k_state::ef9345_io_w )
{
- m_ef9345->data_w(m_ef9345_offset, data);
+ m_ef9345->data_w(space, m_ef9345_offset, data, 0xff);
}
@@ -366,54 +366,54 @@ void vg5k_state::init_vg5k()
}
-void vg5k_state::vg5k(machine_config &config)
-{
+MACHINE_CONFIG_START(vg5k_state::vg5k)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &vg5k_state::vg5k_mem);
- m_maincpu->set_addrmap(AS_IO, &vg5k_state::vg5k_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(vg5k_mem)
+ MCFG_DEVICE_IO_MAP(vg5k_io)
- TIMER(config, "vg5k_scanline").configure_scanline(FUNC(vg5k_state::vg5k_scanline), "screen", 0, 10);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("vg5k_scanline", vg5k_state, vg5k_scanline, "screen", 0, 10)
- TIMER(config, "irq_timer").configure_periodic(FUNC(vg5k_state::z80_irq), attotime::from_msec(20));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", vg5k_state, z80_irq, attotime::from_msec(20))
- EF9345(config, m_ef9345, 0);
- m_ef9345->set_palette_tag("palette");
+ MCFG_DEVICE_ADD("ef9345", EF9345, 0)
+ MCFG_EF9345_PALETTE("palette")
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_screen_update("ef9345", FUNC(ef9345_device::screen_update));
- screen.set_size(336, 300);
- screen.set_visarea(00, 336-1, 00, 270-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DEVICE("ef9345", ef9345_device, screen_update)
+ MCFG_SCREEN_SIZE(336, 300)
+ MCFG_SCREEN_VISIBLE_AREA(00, 336-1, 00, 270-1)
- GFXDECODE(config, "gfxdecode", "palette", gfx_vg5k);
- PALETTE(config, "palette").set_entries(8);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_vg5k)
+ MCFG_PALETTE_ADD("palette", 8)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.125);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
/* cassette */
- WAVE(config, "wave", m_cassette).add_route(0, "speaker", 0.25);
+ WAVE(config, "wave", "cassette").add_route(0, "speaker", 0.25);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(vg5k_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MASK_SPEAKER);
- m_cassette->set_interface("vg5k_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(vg5k_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MASK_SPEAKER)
+ MCFG_CASSETTE_INTERFACE("vg5k_cass")
/* printer */
- PRINTER(config, m_printer, 0);
+ MCFG_DEVICE_ADD("printer", PRINTER, 0)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("16K").set_extra_options("32K,48K");
/* Software lists */
- SOFTWARE_LIST(config, "cass_list").set_original("vg5k");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "vg5k")
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( vg5k )
diff --git a/src/mame/drivers/vgmplay.cpp b/src/mame/drivers/vgmplay.cpp
index 442c2ee33e7..e115040bc53 100644
--- a/src/mame/drivers/vgmplay.cpp
+++ b/src/mame/drivers/vgmplay.cpp
@@ -3087,22 +3087,22 @@ WRITE8_MEMBER(vgmplay_state::scc_w)
switch (offset >> 1)
{
case 0x00:
- m_k051649[Index]->k051649_waveform_w(m_scc_reg[Index], data);
+ m_k051649[Index]->k051649_waveform_w(space, m_scc_reg[Index], data);
break;
case 0x01:
- m_k051649[Index]->k051649_frequency_w(m_scc_reg[Index], data);
+ m_k051649[Index]->k051649_frequency_w(space, m_scc_reg[Index], data);
break;
case 0x02:
- m_k051649[Index]->k051649_volume_w(m_scc_reg[Index], data);
+ m_k051649[Index]->k051649_volume_w(space, m_scc_reg[Index], data);
break;
case 0x03:
- m_k051649[Index]->k051649_keyonoff_w(data);
+ m_k051649[Index]->k051649_keyonoff_w(space, m_scc_reg[Index], data);
break;
case 0x04:
- m_k051649[Index]->k052539_waveform_w(m_scc_reg[Index], data);
+ m_k051649[Index]->k052539_waveform_w(space, m_scc_reg[Index], data);
break;
case 0x05:
- m_k051649[Index]->k051649_test_w(data);
+ m_k051649[Index]->k051649_test_w(space, m_scc_reg[Index], data);
break;
}
break;
@@ -3152,9 +3152,9 @@ void vgmplay_state::file_map(address_map &map)
void vgmplay_state::soundchips_map(address_map &map)
{
map(vgmplay_device::REG_SIZE, vgmplay_device::REG_SIZE + 3).r(FUNC(vgmplay_state::file_size_r));
- map(vgmplay_device::A_SN76489_0 + 0, vgmplay_device::A_SN76489_0 + 0).w(m_sn76489[0], FUNC(sn76489_device::write));
+ map(vgmplay_device::A_SN76489_0 + 0, vgmplay_device::A_SN76489_0 + 0).w(m_sn76489[0], FUNC(sn76489_device::command_w));
//map(vgmplay_device::A_SN76489_0 + 1, vgmplay_device::A_SN76489_0 + 1).w(m_sn76489[0], FUNC(sn76489_device::stereo_w)); // TODO: GG stereo
- map(vgmplay_device::A_SN76489_1 + 0, vgmplay_device::A_SN76489_1 + 0).w(m_sn76489[1], FUNC(sn76489_device::write));
+ map(vgmplay_device::A_SN76489_1 + 0, vgmplay_device::A_SN76489_1 + 0).w(m_sn76489[1], FUNC(sn76489_device::command_w));
//map(vgmplay_device::A_SN76489_1 + 1, vgmplay_device::A_SN76489_1 + 1).w(m_sn76489[1], FUNC(sn76489_device::stereo_w)); // TODO: GG stereo
map(vgmplay_device::A_YM2413_0, vgmplay_device::A_YM2413_0 + 1).w(m_ym2413[0], FUNC(ym2413_device::write));
map(vgmplay_device::A_YM2413_1, vgmplay_device::A_YM2413_1 + 1).w(m_ym2413[1], FUNC(ym2413_device::write));
@@ -3435,10 +3435,10 @@ MACHINE_CONFIG_START(vgmplay_state::vgmplay)
m_vgmplay->set_addrmap(AS_IO, &vgmplay_state::soundchips_map);
m_vgmplay->set_addrmap(AS_IO16, &vgmplay_state::soundchips16_map);
- MCFG_QUICKLOAD_ADD("quickload", vgmplay_state, load_file, "vgm,vgz")
+ MCFG_QUICKLOAD_ADD("quickload", vgmplay_state, load_file, "vgm,vgz", 0)
MCFG_QUICKLOAD_INTERFACE("vgm_quik")
- SOFTWARE_LIST(config, "vgm_list").set_original("vgmplay");
+ MCFG_SOFTWARE_LIST_ADD("vgm_list", "vgmplay")
config.set_default_layout(layout_vgmplay);
diff --git a/src/mame/drivers/vic10.cpp b/src/mame/drivers/vic10.cpp
index 68f8d95a13e..cc3a96c2c7e 100644
--- a/src/mame/drivers/vic10.cpp
+++ b/src/mame/drivers/vic10.cpp
@@ -72,21 +72,21 @@ private:
virtual void machine_start() override;
virtual void machine_reset() override;
- uint8_t read(offs_t offset);
- void write(offs_t offset, uint8_t data);
+ DECLARE_READ8_MEMBER( read );
+ DECLARE_WRITE8_MEMBER( write );
- uint8_t vic_videoram_r(offs_t offset);
- uint8_t vic_colorram_r(offs_t offset);
+ DECLARE_READ8_MEMBER( vic_videoram_r );
+ DECLARE_READ8_MEMBER( vic_colorram_r );
- uint8_t sid_potx_r();
- uint8_t sid_poty_r();
+ DECLARE_READ8_MEMBER( sid_potx_r );
+ DECLARE_READ8_MEMBER( sid_poty_r );
- uint8_t cia_pa_r();
- uint8_t cia_pb_r();
- void cia_pb_w(uint8_t data);
+ DECLARE_READ8_MEMBER( cia_pa_r );
+ DECLARE_READ8_MEMBER( cia_pb_r );
+ DECLARE_WRITE8_MEMBER( cia_pb_w );
- uint8_t cpu_r();
- void cpu_w(uint8_t data);
+ DECLARE_READ8_MEMBER( cpu_r );
+ DECLARE_WRITE8_MEMBER( cpu_w );
DECLARE_WRITE_LINE_MEMBER( exp_reset_w );
@@ -104,7 +104,7 @@ private:
// read -
//-------------------------------------------------
-uint8_t vic10_state::read(offs_t offset)
+READ8_MEMBER( vic10_state::read )
{
// TODO this is really handled by the PLA
@@ -125,11 +125,11 @@ uint8_t vic10_state::read(offs_t offset)
}
else if (offset >= 0xd000 && offset < 0xd400)
{
- data = m_vic->read(offset & 0x3f);
+ data = m_vic->read(space, offset & 0x3f);
}
else if (offset >= 0xd400 && offset < 0xd800)
{
- data = m_sid->read(offset & 0x1f);
+ data = m_sid->read(space, offset & 0x1f);
}
else if (offset >= 0xd800 && offset < 0xdc00)
{
@@ -137,14 +137,14 @@ uint8_t vic10_state::read(offs_t offset)
}
else if (offset >= 0xdc00 && offset < 0xe000)
{
- data = m_cia->read(offset & 0x0f);
+ data = m_cia->read(space, offset & 0x0f);
}
else if (offset >= 0xe000)
{
uprom = 0;
}
- return m_exp->cd_r(offset, data, lorom, uprom, exram);
+ return m_exp->cd_r(space, offset, data, lorom, uprom, exram);
}
@@ -152,7 +152,7 @@ uint8_t vic10_state::read(offs_t offset)
// write -
//-------------------------------------------------
-void vic10_state::write(offs_t offset, uint8_t data)
+WRITE8_MEMBER( vic10_state::write )
{
// TODO this is really handled by the PLA
@@ -168,11 +168,11 @@ void vic10_state::write(offs_t offset, uint8_t data)
}
else if (offset >= 0xd000 && offset < 0xd400)
{
- m_vic->write(offset & 0x3f, data);
+ m_vic->write(space, offset & 0x3f, data);
}
else if (offset >= 0xd400 && offset < 0xd800)
{
- m_sid->write(offset & 0x1f, data);
+ m_sid->write(space, offset & 0x1f, data);
}
else if (offset >= 0xd800 && offset < 0xdc00)
{
@@ -180,10 +180,10 @@ void vic10_state::write(offs_t offset, uint8_t data)
}
else if (offset >= 0xdc00 && offset < 0xe000)
{
- m_cia->write(offset & 0x0f, data);
+ m_cia->write(space, offset & 0x0f, data);
}
- m_exp->cd_w(offset, data, lorom, uprom, exram);
+ m_exp->cd_w(space, offset, data, lorom, uprom, exram);
}
@@ -191,7 +191,7 @@ void vic10_state::write(offs_t offset, uint8_t data)
// vic_videoram_r -
//-------------------------------------------------
-uint8_t vic10_state::vic_videoram_r(offs_t offset)
+READ8_MEMBER( vic10_state::vic_videoram_r )
{
address_space &program = m_maincpu->space(AS_PROGRAM);
@@ -206,7 +206,7 @@ uint8_t vic10_state::vic_videoram_r(offs_t offset)
// vic_colorram_r -
//-------------------------------------------------
-uint8_t vic10_state::vic_colorram_r(offs_t offset)
+READ8_MEMBER( vic10_state::vic_colorram_r )
{
return m_color_ram[offset];
}
@@ -355,11 +355,11 @@ INPUT_PORTS_END
// sid6581_interface sid_intf
//-------------------------------------------------
-uint8_t vic10_state::sid_potx_r()
+READ8_MEMBER( vic10_state::sid_potx_r )
{
uint8_t data = 0xff;
- switch (m_cia->pa_r() >> 6)
+ switch (m_cia->read_pa() >> 6)
{
case 1: data = m_joy1->read_pot_x(); break;
case 2: data = m_joy2->read_pot_x(); break;
@@ -382,11 +382,11 @@ uint8_t vic10_state::sid_potx_r()
return data;
}
-uint8_t vic10_state::sid_poty_r()
+READ8_MEMBER( vic10_state::sid_poty_r )
{
uint8_t data = 0xff;
- switch (m_cia->pa_r() >> 6)
+ switch (m_cia->read_pa() >> 6)
{
case 1: data = m_joy1->read_pot_y(); break;
case 2: data = m_joy2->read_pot_y(); break;
@@ -414,7 +414,7 @@ uint8_t vic10_state::sid_poty_r()
// MOS6526_INTERFACE( cia_intf )
//-------------------------------------------------
-uint8_t vic10_state::cia_pa_r()
+READ8_MEMBER( vic10_state::cia_pa_r )
{
/*
@@ -440,7 +440,7 @@ uint8_t vic10_state::cia_pa_r()
data &= ~(!BIT(joy_b, 5) << 4);
// keyboard
- uint8_t cia_pb = m_cia->pb_r();
+ uint8_t cia_pb = m_cia->read_pb();
uint32_t row[8] = { m_row[0]->read(), m_row[1]->read() & m_lock->read(), m_row[2]->read(), m_row[3]->read(),
m_row[4]->read(), m_row[5]->read(), m_row[6]->read(), m_row[7]->read() };
@@ -462,7 +462,7 @@ uint8_t vic10_state::cia_pa_r()
return data;
}
-uint8_t vic10_state::cia_pb_r()
+READ8_MEMBER( vic10_state::cia_pb_r )
{
/*
@@ -488,7 +488,7 @@ uint8_t vic10_state::cia_pb_r()
data &= ~(!BIT(joy_a, 5) << 4);
// keyboard
- uint8_t cia_pa = m_cia->pa_r();
+ uint8_t cia_pa = m_cia->read_pa();
if (!BIT(cia_pa, 7)) data &= m_row[7]->read();
if (!BIT(cia_pa, 6)) data &= m_row[6]->read();
@@ -502,7 +502,7 @@ uint8_t vic10_state::cia_pb_r()
return data;
}
-void vic10_state::cia_pb_w(uint8_t data)
+WRITE8_MEMBER( vic10_state::cia_pb_w )
{
/*
@@ -527,7 +527,7 @@ void vic10_state::cia_pb_w(uint8_t data)
// M6510_INTERFACE( cpu_intf )
//-------------------------------------------------
-uint8_t vic10_state::cpu_r()
+READ8_MEMBER( vic10_state::cpu_r )
{
/*
@@ -553,7 +553,7 @@ uint8_t vic10_state::cpu_r()
return data;
}
-void vic10_state::cpu_w(uint8_t data)
+WRITE8_MEMBER( vic10_state::cpu_w )
{
/*
@@ -568,7 +568,7 @@ void vic10_state::cpu_w(uint8_t data)
*/
- if (0 /*BIT(offset, 0)*/) // what offset?
+ if (BIT(offset, 0))
{
m_exp->p0_w(BIT(data, 0));
}
@@ -637,7 +637,7 @@ void vic10_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( vic10 )
+// MACHINE_CONFIG( vic10 )
//-------------------------------------------------
void vic10_state::vic10(machine_config &config)
diff --git a/src/mame/drivers/vic20.cpp b/src/mame/drivers/vic20.cpp
index 003cab1cb09..7565b03e80d 100644
--- a/src/mame/drivers/vic20.cpp
+++ b/src/mame/drivers/vic20.cpp
@@ -248,7 +248,7 @@ READ8_MEMBER( vic20_state::read )
break;
}
- return m_exp->cd_r(offset & 0x1fff, data, ram1, ram2, ram3, blk1, blk2, blk3, blk5, io2, io3);
+ return m_exp->cd_r(space, offset & 0x1fff, data, ram1, ram2, ram3, blk1, blk2, blk3, blk5, io2, io3);
}
@@ -315,7 +315,7 @@ WRITE8_MEMBER( vic20_state::write )
case BLK5: blk5 = 0; break;
}
- m_exp->cd_w(offset & 0x1fff, data, ram1, ram2, ram3, blk1, blk2, blk3, blk5, io2, io3);
+ m_exp->cd_w(space, offset & 0x1fff, data, ram1, ram2, ram3, blk1, blk2, blk3, blk5, io2, io3);
}
@@ -353,7 +353,7 @@ READ8_MEMBER( vic20_state::vic_videoram_r )
data = m_charom[offset & 0xfff];
}
- return m_exp->cd_r(offset & 0x1fff, data, ram1, ram2, ram3, blk1, blk2, blk3, blk5, io2, io3);
+ return m_exp->cd_r(space, offset & 0x1fff, data, ram1, ram2, ram3, blk1, blk2, blk3, blk5, io2, io3);
}
@@ -844,8 +844,8 @@ void vic20_state::vic20(machine_config &config, const char* softlist_filter)
m_user->pl_handler().set(m_via1, FUNC(via6522_device::write_pb7));
m_user->pm_handler().set(m_via1, FUNC(via6522_device::write_cb2));
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(vic20_state, cbm_vc20), this), "p00,prg", CBM_QUICKLOAD_DELAY);
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
+ quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(vic20_state, cbm_vc20), this), "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS);
SOFTWARE_LIST(config, "cart_list").set_type("vic1001_cart", SOFTWARE_LIST_ORIGINAL_SYSTEM).set_filter(softlist_filter);
SOFTWARE_LIST(config, "cass_list").set_type("vic1001_cass", SOFTWARE_LIST_ORIGINAL_SYSTEM).set_filter(softlist_filter);
diff --git a/src/mame/drivers/vicdual.cpp b/src/mame/drivers/vicdual.cpp
index 2336bbf6057..d639d393048 100644
--- a/src/mame/drivers/vicdual.cpp
+++ b/src/mame/drivers/vicdual.cpp
@@ -267,17 +267,17 @@ void vicdual_state::machine_start()
}
-void vicdual_state::vicdual_root(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::vicdual_root)
+
/* basic machine hardware */
- Z80(config, m_maincpu, VICDUAL_MAIN_CPU_CLOCK);
+ MCFG_DEVICE_ADD("maincpu", Z80, VICDUAL_MAIN_CPU_CLOCK)
- TIMER(config, m_coinstate_timer).configure_generic(FUNC(vicdual_state::clear_coin_status));
+ MCFG_TIMER_DRIVER_ADD("coinstate", vicdual_state, clear_coin_status)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(VICDUAL_PIXEL_CLOCK, VICDUAL_HTOTAL, VICDUAL_HBEND, VICDUAL_HBSTART, VICDUAL_VTOTAL, VICDUAL_VBEND, VICDUAL_VBSTART);
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(VICDUAL_PIXEL_CLOCK, VICDUAL_HTOTAL, VICDUAL_HBEND, VICDUAL_HBSTART, VICDUAL_VTOTAL, VICDUAL_VBEND, VICDUAL_VBSTART)
+MACHINE_CONFIG_END
@@ -346,22 +346,22 @@ static INPUT_PORTS_START( depthch )
INPUT_PORTS_END
-void vicdual_state::depthch(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::depthch)
vicdual_root(config);
/* basic machine hardware */
- I8080(config.replace(), m_maincpu, VICDUAL_MAIN_CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &vicdual_state::depthch_map);
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::depthch_io_map);
+ MCFG_DEVICE_REPLACE("maincpu", I8080, VICDUAL_MAIN_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(depthch_map)
+ MCFG_DEVICE_IO_MAP(depthch_io_map)
/* video hardware */
- m_screen->set_screen_update(FUNC(vicdual_state::screen_update_bw));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_bw)
/* audio hardware */
SPEAKER(config, "mono").front_center();
depthch_audio(config);
-}
+MACHINE_CONFIG_END
@@ -436,17 +436,18 @@ static INPUT_PORTS_START( safari )
INPUT_PORTS_END
-void vicdual_state::safari(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::safari)
vicdual_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &vicdual_state::safari_map);
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::safari_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(safari_map)
+ MCFG_DEVICE_IO_MAP(safari_io_map)
/* video hardware */
- m_screen->set_screen_update(FUNC(vicdual_state::screen_update_bw));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_bw)
+MACHINE_CONFIG_END
@@ -542,23 +543,24 @@ static INPUT_PORTS_START( frogs )
INPUT_PORTS_END
-void vicdual_state::frogs(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::frogs)
vicdual_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &vicdual_state::frogs_map);
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::frogs_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(frogs_map)
+ MCFG_DEVICE_IO_MAP(frogs_io_map)
MCFG_MACHINE_START_OVERRIDE(vicdual_state,frogs_audio)
/* video hardware */
- m_screen->set_screen_update(FUNC(vicdual_state::screen_update_bw));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_bw)
/* audio hardware */
SPEAKER(config, "mono").front_center();
frogs_audio(config);
-}
+MACHINE_CONFIG_END
@@ -813,42 +815,44 @@ static INPUT_PORTS_START( sspaceat )
INPUT_PORTS_END
-void vicdual_state::headon(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::headon)
vicdual_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &vicdual_state::headon_map);
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::headon_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(headon_map)
+ MCFG_DEVICE_IO_MAP(headon_io_map)
/* video hardware */
- m_screen->set_screen_update(FUNC(vicdual_state::screen_update_bw_or_color));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_bw_or_color)
/* audio hardware */
SPEAKER(config, "mono").front_center();
headon_audio(config);
-}
+MACHINE_CONFIG_END
-void vicdual_state::headons(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::headons)
headon(config);
/* video hardware */
- m_screen->set_screen_update(FUNC(vicdual_state::screen_update_bw));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_bw)
+MACHINE_CONFIG_END
-void vicdual_state::sspaceat(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::sspaceat)
vicdual_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &vicdual_state::headon_map);
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::sspaceat_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(headon_map)
+ MCFG_DEVICE_IO_MAP(sspaceat_io_map)
/* video hardware */
- m_screen->set_screen_update(FUNC(vicdual_state::screen_update_bw_or_color));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_bw_or_color)
+MACHINE_CONFIG_END
@@ -1042,44 +1046,47 @@ MACHINE_RESET_MEMBER( vicdual_state, headon2 )
}
-void vicdual_state::headon2(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::headon2)
vicdual_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &vicdual_state::headon2_map);
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::headon2_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(headon2_map)
+ MCFG_DEVICE_IO_MAP(headon2_io_map)
MCFG_MACHINE_RESET_OVERRIDE(vicdual_state, headon2)
/* video hardware */
- m_screen->set_screen_update(FUNC(vicdual_state::screen_update_color));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_color)
/* audio hardware */
SPEAKER(config, "mono").front_center();
headon_audio(config);
-}
+MACHINE_CONFIG_END
-void vicdual_state::headon2bw(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::headon2bw)
headon2(config);
+ /* basic machine hardware */
/* video hardware */
- m_screen->set_screen_update(FUNC(vicdual_state::screen_update_bw));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_bw)
+MACHINE_CONFIG_END
-void vicdual_state::digger(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::digger)
vicdual_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &vicdual_state::headon2_map);
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::digger_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(headon2_map)
+ MCFG_DEVICE_IO_MAP(digger_io_map)
/* video hardware */
- m_screen->set_screen_update(FUNC(vicdual_state::screen_update_color));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_color)
+MACHINE_CONFIG_END
@@ -2114,169 +2121,170 @@ static INPUT_PORTS_START( headonn )
INPUT_PORTS_END
-void vicdual_state::vicdual_dualgame_root(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::vicdual_dualgame_root)
vicdual_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &vicdual_state::vicdual_dualgame_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(vicdual_dualgame_map)
/* video hardware */
- m_screen->set_screen_update(FUNC(vicdual_state::screen_update_color));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_color)
+MACHINE_CONFIG_END
-void vicdual_state::invho2(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::invho2)
vicdual_dualgame_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::invho2_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(invho2_io_map)
/* audio hardware */
SPEAKER(config, "mono").front_center();
invinco_audio(config);
headon_audio(config);
-}
+MACHINE_CONFIG_END
-void vicdual_state::invds(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::invds)
vicdual_dualgame_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::invds_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(invds_io_map)
/* audio hardware */
SPEAKER(config, "mono").front_center();
invinco_audio(config);
-}
+MACHINE_CONFIG_END
-void vicdual_state::carhntds(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::carhntds)
vicdual_dualgame_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &vicdual_state::carhntds_dualgame_map);
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::carhntds_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(carhntds_dualgame_map)
+ MCFG_DEVICE_IO_MAP(carhntds_io_map)
+MACHINE_CONFIG_END
-void vicdual_state::sspacaho(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::sspacaho)
vicdual_dualgame_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::sspacaho_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(sspacaho_io_map)
/* audio hardware */
SPEAKER(config, "mono").front_center();
headon_audio(config);
-}
+MACHINE_CONFIG_END
-void vicdual_state::spacetrk(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::spacetrk)
vicdual_dualgame_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::spacetrk_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(spacetrk_io_map)
+MACHINE_CONFIG_END
-void vicdual_state::carnival(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::carnival)
vicdual_dualgame_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::carnival_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(carnival_io_map)
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
/* audio hardware */
SPEAKER(config, "mono").front_center();
carnival_audio(config);
-}
+MACHINE_CONFIG_END
-void vicdual_state::carnivalh(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::carnivalh)
carnival(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::headon_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(headon_io_map)
+MACHINE_CONFIG_END
-void vicdual_state::tranqgun(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::tranqgun)
vicdual_dualgame_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::tranqgun_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(tranqgun_io_map)
/* audio hardware */
SPEAKER(config, "mono").front_center();
tranqgun_audio(config);
-}
+MACHINE_CONFIG_END
-void vicdual_state::brdrline(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::brdrline)
vicdual_dualgame_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::brdrline_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(brdrline_io_map)
/* audio hardware */
SPEAKER(config, "mono").front_center();
brdrline_audio(config);
-}
+MACHINE_CONFIG_END
-void vicdual_state::pulsar(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::pulsar)
vicdual_dualgame_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::pulsar_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(pulsar_io_map)
/* audio hardware */
SPEAKER(config, "mono").front_center();
pulsar_audio(config);
-}
+MACHINE_CONFIG_END
-void vicdual_state::heiankyo(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::heiankyo)
vicdual_dualgame_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::heiankyo_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(heiankyo_io_map)
+MACHINE_CONFIG_END
-void vicdual_state::alphaho(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::alphaho)
vicdual_dualgame_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::alphaho_io_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(alphaho_io_map)
+MACHINE_CONFIG_END
-void vicdual_state::headonn(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::headonn)
vicdual_dualgame_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::headonn_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(headonn_io_map)
/* audio hardware */
SPEAKER(config, "mono").front_center();
headon_audio(config);
-}
+MACHINE_CONFIG_END
/*************************************
@@ -2397,19 +2405,20 @@ MACHINE_START_MEMBER(vicdual_state,samurai)
machine_start();
}
-void vicdual_state::samurai(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::samurai)
vicdual_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &vicdual_state::samurai_map);
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::samurai_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(samurai_map)
+ MCFG_DEVICE_IO_MAP(samurai_io_map)
MCFG_MACHINE_START_OVERRIDE(vicdual_state,samurai)
/* video hardware */
- m_screen->set_screen_update(FUNC(vicdual_state::screen_update_color));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_color)
+MACHINE_CONFIG_END
@@ -2584,29 +2593,28 @@ MACHINE_RESET_MEMBER(nsub_state, nsub)
machine_reset();
}
-void nsub_state::nsub(machine_config &config)
-{
+MACHINE_CONFIG_START(nsub_state::nsub)
/* basic machine hardware */
- Z80(config, m_maincpu, VICDUAL_MAIN_CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &nsub_state::nsub_map);
- m_maincpu->set_addrmap(AS_IO, &nsub_state::nsub_io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, VICDUAL_MAIN_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(nsub_map)
+ MCFG_DEVICE_IO_MAP(nsub_io_map)
- TIMER(config, m_coinstate_timer).configure_generic(FUNC(nsub_state::clear_coin_status));
- TIMER(config, m_nsub_coinage_timer).configure_generic(FUNC(nsub_state::nsub_coin_pulse));
+ MCFG_TIMER_DRIVER_ADD("coinstate", nsub_state, clear_coin_status)
+ MCFG_TIMER_DRIVER_ADD("nsub_coin", nsub_state, nsub_coin_pulse)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(VICDUAL_PIXEL_CLOCK, VICDUAL_HTOTAL, VICDUAL_HBEND, VICDUAL_HBSTART, VICDUAL_VTOTAL, VICDUAL_VBEND, VICDUAL_VBSTART);
- m_screen->set_screen_update(FUNC(nsub_state::screen_update_color));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(VICDUAL_PIXEL_CLOCK, VICDUAL_HTOTAL, VICDUAL_HBEND, VICDUAL_HBSTART, VICDUAL_VTOTAL, VICDUAL_VBEND, VICDUAL_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(nsub_state, screen_update_color)
- S97269PB(config, m_s97269pb, 0);
+ MCFG_DEVICE_ADD("s97269pb", S97269PB, 0)
MCFG_MACHINE_START_OVERRIDE(nsub_state, nsub)
MCFG_MACHINE_RESET_OVERRIDE(nsub_state, nsub)
/* audio hardware */
S97271P(config, m_s97271p, 0);
-}
+MACHINE_CONFIG_END
@@ -2696,21 +2704,22 @@ static INPUT_PORTS_START( invinco )
INPUT_PORTS_END
-void vicdual_state::invinco(machine_config &config)
-{
+MACHINE_CONFIG_START(vicdual_state::invinco)
vicdual_root(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &vicdual_state::invinco_map);
- m_maincpu->set_addrmap(AS_IO, &vicdual_state::invinco_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(invinco_map)
+ MCFG_DEVICE_IO_MAP(invinco_io_map)
/* video hardware */
- m_screen->set_screen_update(FUNC(vicdual_state::screen_update_color));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_color)
/* audio hardware */
SPEAKER(config, "mono").front_center();
invinco_audio(config);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/victor9k.cpp b/src/mame/drivers/victor9k.cpp
index e2dd7547922..596d018e23f 100644
--- a/src/mame/drivers/victor9k.cpp
+++ b/src/mame/drivers/victor9k.cpp
@@ -676,7 +676,7 @@ void victor9k_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( victor9k )
+// MACHINE_CONFIG( victor9k )
//-------------------------------------------------
void victor9k_state::victor9k(machine_config &config)
diff --git a/src/mame/drivers/victory.cpp b/src/mame/drivers/victory.cpp
index ed44226b932..55feaf98659 100644
--- a/src/mame/drivers/victory.cpp
+++ b/src/mame/drivers/victory.cpp
@@ -210,13 +210,13 @@ INPUT_PORTS_END
*
*************************************/
-void victory_state::victory(machine_config &config)
-{
+MACHINE_CONFIG_START(victory_state::victory)
+
/* basic machine hardware */
- Z80(config, m_maincpu, VICTORY_MAIN_CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &victory_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &victory_state::main_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(victory_state::vblank_interrupt));
+ MCFG_DEVICE_ADD("maincpu", Z80, VICTORY_MAIN_CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(main_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", victory_state, vblank_interrupt)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -230,18 +230,19 @@ void victory_state::victory(machine_config &config)
pio2.in_pb_callback().set_ioport("UNUSED");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK | VIDEO_ALWAYS_UPDATE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK | VIDEO_ALWAYS_UPDATE)
/* using the standard Exidy video parameters for now, needs to be confirmed */
- m_screen->set_raw(VICTORY_PIXEL_CLOCK, VICTORY_HTOTAL, VICTORY_HBEND, VICTORY_HBSTART, VICTORY_VTOTAL, VICTORY_VBEND, VICTORY_VBSTART);
- m_screen->set_screen_update(FUNC(victory_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_RAW_PARAMS(VICTORY_PIXEL_CLOCK, VICTORY_HTOTAL, VICTORY_HBEND, VICTORY_HBSTART, VICTORY_VTOTAL, VICTORY_VBEND, VICTORY_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(victory_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 64)
- PALETTE(config, m_palette).set_entries(64);
/* audio hardware */
EXIDY_VICTORY(config, "soundbd", 0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/vidbrain.cpp b/src/mame/drivers/vidbrain.cpp
index 6f81b404f3c..c01f6bb696a 100644
--- a/src/mame/drivers/vidbrain.cpp
+++ b/src/mame/drivers/vidbrain.cpp
@@ -392,23 +392,22 @@ void vidbrain_state::machine_reset()
//**************************************************************************
//-------------------------------------------------
-// machine_config( vidbrain )
+// MACHINE_CONFIG( vidbrain )
//-------------------------------------------------
-void vidbrain_state::vidbrain(machine_config &config)
-{
+MACHINE_CONFIG_START(vidbrain_state::vidbrain)
// basic machine hardware
- F8(config, m_maincpu, XTAL(4'000'000)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &vidbrain_state::vidbrain_mem);
- m_maincpu->set_addrmap(AS_IO, &vidbrain_state::vidbrain_io);
- m_maincpu->set_irq_acknowledge_callback(F3853_TAG, FUNC(f3853_device::int_acknowledge));
+ MCFG_DEVICE_ADD(F3850_TAG, F8, XTAL(4'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(vidbrain_mem)
+ MCFG_DEVICE_IO_MAP(vidbrain_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(F3853_TAG, f3853_device, int_acknowledge)
// video hardware
config.set_default_layout(layout_vidbrain);
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
- screen.set_screen_update(UV201_TAG, FUNC(uv201_device::screen_update));
- screen.set_raw(3636363, 232, 18, 232, 262, 21, 262);
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_UPDATE_DEVICE(UV201_TAG, uv201_device, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(3636363, 232, 18, 232, 262, 21, 262)
UV201(config, m_uv, 3636363);
m_uv->set_screen(SCREEN_TAG);
m_uv->ext_int_wr_callback().set(FUNC(vidbrain_state::ext_int_w));
@@ -417,24 +416,23 @@ void vidbrain_state::vidbrain(machine_config &config)
// sound hardware
SPEAKER(config, "speaker").front_center();
- DAC_2BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.167); // 74ls74.u16 + 120k + 56k
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", DAC_2BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.167) // 74ls74.u16 + 120k + 56k
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
// devices
F3853(config, m_smi, XTAL(4'000'000)/2);
- m_smi->int_req_callback().set_inputline(m_maincpu, F8_INPUT_LINE_INT_REQ);
+ m_smi->int_req_callback().set_inputline(F3850_TAG, F8_INPUT_LINE_INT_REQ);
// cartridge
- VIDEOBRAIN_EXPANSION_SLOT(config, VIDEOBRAIN_EXPANSION_SLOT_TAG, vidbrain_expansion_cards, nullptr);
+ MCFG_VIDEOBRAIN_EXPANSION_SLOT_ADD(VIDEOBRAIN_EXPANSION_SLOT_TAG, vidbrain_expansion_cards, nullptr)
// software lists
- SOFTWARE_LIST(config, "cart_list").set_original("vidbrain");
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "vidbrain")
// internal ram
RAM(config, RAM_TAG).set_default_size("1K");
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/video21.cpp b/src/mame/drivers/video21.cpp
index 3ef2c9a66b7..1c9481d5ed6 100644
--- a/src/mame/drivers/video21.cpp
+++ b/src/mame/drivers/video21.cpp
@@ -67,7 +67,7 @@ private:
required_device<cpu_device> m_maincpu;
required_shared_ptr<u8> m_p_videoram;
required_region_ptr<u8> m_p_chargen;
- required_device<beep_device> m_beeper;
+ optional_device<beep_device> m_beeper;
output_finder<6> m_lamps;
};
diff --git a/src/mame/drivers/videopin.cpp b/src/mame/drivers/videopin.cpp
index e93c6154ac8..6655bf110ef 100644
--- a/src/mame/drivers/videopin.cpp
+++ b/src/mame/drivers/videopin.cpp
@@ -97,8 +97,8 @@ void videopin_state::machine_reset()
/* both output latches are cleared on reset */
- out1_w(0);
- out2_w(0);
+ out1_w(machine().dummy_space(), 0, 0);
+ out2_w(machine().dummy_space(), 0, 0);
}
@@ -108,7 +108,7 @@ double videopin_state::calc_plunger_pos()
}
-uint8_t videopin_state::misc_r()
+READ8_MEMBER(videopin_state::misc_r)
{
double plunger = calc_plunger_pos();
@@ -136,7 +136,7 @@ uint8_t videopin_state::misc_r()
}
-void videopin_state::led_w(uint8_t data)
+WRITE8_MEMBER(videopin_state::led_w)
{
// LED matrix as seen in Video Pinball manual, fig. 4-14
// output to "LEDxx" where xx = 01 to 32, videopin START = LED30
@@ -162,7 +162,7 @@ void videopin_state::led_w(uint8_t data)
}
-void videopin_state::out1_w(uint8_t data)
+WRITE8_MEMBER(videopin_state::out1_w)
{
/* D0 => OCTAVE0 */
/* D1 => OCTACE1 */
@@ -185,7 +185,7 @@ void videopin_state::out1_w(uint8_t data)
}
-void videopin_state::out2_w(uint8_t data)
+WRITE8_MEMBER(videopin_state::out2_w)
{
/* D0 => VOL0 */
/* D1 => VOL1 */
@@ -205,7 +205,7 @@ void videopin_state::out2_w(uint8_t data)
}
-void videopin_state::note_dvsr_w(uint8_t data)
+WRITE8_MEMBER(videopin_state::note_dvsr_w)
{
/* note data */
m_discrete->write(VIDEOPIN_NOTE_DATA, ~data &0xff);
@@ -359,11 +359,11 @@ GFXDECODE_END
*
*************************************/
-void videopin_state::videopin(machine_config &config)
-{
+MACHINE_CONFIG_START(videopin_state::videopin)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 12096000 / 16);
- m_maincpu->set_addrmap(AS_PROGRAM, &videopin_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, 12096000 / 16)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
WATCHDOG_TIMER(config, "watchdog");
@@ -375,7 +375,7 @@ void videopin_state::videopin(machine_config &config)
m_screen->set_screen_update(FUNC(videopin_state::screen_update));
m_screen->set_palette(m_palette);
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_videopin);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_videopin)
PALETTE(config, m_palette, palette_device::MONOCHROME);
@@ -383,7 +383,7 @@ void videopin_state::videopin(machine_config &config)
SPEAKER(config, "mono").front_center();
DISCRETE(config, m_discrete, videopin_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/videopkr.cpp b/src/mame/drivers/videopkr.cpp
index 06083641f7a..6b5730338b9 100644
--- a/src/mame/drivers/videopkr.cpp
+++ b/src/mame/drivers/videopkr.cpp
@@ -911,11 +911,11 @@ WRITE8_MEMBER(videopkr_state::baby_sound_p3_w)
case 0x00: break;
case 0x01: break;
case 0x02: break;
- case 0x03: m_aysnd->data_w(m_sbp0); break;
+ case 0x03: m_aysnd->data_w(space, 1, m_sbp0); break;
case 0x04: break;
- case 0x05: m_sbp0 = m_aysnd->data_r(); break;
+ case 0x05: m_sbp0 = m_aysnd->data_r(space, m_sbp0); break;
case 0x06: break;
- case 0x07: m_aysnd->address_w(m_sbp0); break;
+ case 0x07: m_aysnd->address_w(space, 0, m_sbp0); break;
}
}
@@ -1220,8 +1220,8 @@ void videopkr_state::machine_start()
* Machine Drivers *
************************/
-void videopkr_state::videopkr(machine_config &config)
-{
+MACHINE_CONFIG_START(videopkr_state::videopkr)
+
/* basic machine hardware */
i8039_device &maincpu(I8039(config, m_maincpu, CPU_CLOCK));
maincpu.set_addrmap(AS_PROGRAM, &videopkr_state::i8039_map);
@@ -1243,61 +1243,57 @@ void videopkr_state::videopkr(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TIMER(config, "t1_timer").configure_periodic(FUNC(videopkr_state::sound_t1_callback), attotime::from_hz(50));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("t1_timer", videopkr_state, sound_t1_callback, attotime::from_hz(50))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(5*8, 31*8-1, 3*8, 29*8-1);
- screen.set_refresh_hz(60);
- screen.set_vblank_time(2080);
- screen.set_screen_update(FUNC(videopkr_state::screen_update_videopkr));
- screen.set_palette("palette");
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_videopkr);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(5*8, 31*8-1, 3*8, 29*8-1)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(2080)
+ MCFG_SCREEN_UPDATE_DRIVER(videopkr_state, screen_update_videopkr)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_videopkr)
PALETTE(config, "palette", FUNC(videopkr_state::videopkr_palette), 256);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.275);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.275)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void videopkr_state::blckjack(machine_config &config)
-{
+MACHINE_CONFIG_START(videopkr_state::blckjack)
videopkr(config);
/* basic machine hardware */
/* video hardware */
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(4*8, 31*8-1, 2*8, 30*8-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(4*8, 31*8-1, 2*8, 30*8-1)
+MACHINE_CONFIG_END
-void videopkr_state::videodad(machine_config &config)
-{
+MACHINE_CONFIG_START(videopkr_state::videodad)
videopkr(config);
/* basic machine hardware */
m_maincpu->set_clock(CPU_CLOCK_ALT);
/* video hardware */
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_size(32*16, 32*8);
- screen.set_visarea(4*16, 31*16-1, 2*8, 30*8-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(32*16, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(4*16, 31*16-1, 2*8, 30*8-1)
- m_gfxdecode->set_info(gfx_videodad);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_videodad)
MCFG_VIDEO_START_OVERRIDE(videopkr_state,vidadcba)
-}
+MACHINE_CONFIG_END
-void videopkr_state::babypkr(machine_config &config)
-{
+MACHINE_CONFIG_START(videopkr_state::babypkr)
videopkr(config);
/* basic machine hardware */
@@ -1314,29 +1310,27 @@ void videopkr_state::babypkr(machine_config &config)
soundcpu.port_out_cb<3>().set(FUNC(videopkr_state::baby_sound_p3_w));
/* video hardware */
- screen_device &screen(*subdevice<screen_device>("screen"));
- screen.set_size(32*16, 32*8);
- screen.set_visarea(5*16, 31*16-1, 3*8, 29*8-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(32*16, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(5*16, 31*16-1, 3*8, 29*8-1)
subdevice<palette_device>("palette")->set_init(FUNC(videopkr_state::babypkr_palette));
- m_gfxdecode->set_info(gfx_videodad);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_videodad)
MCFG_VIDEO_START_OVERRIDE(videopkr_state,vidadcba)
AY8910(config, m_aysnd, CPU_CLOCK / 6).add_route(ALL_OUTPUTS, "speaker", 0.3); /* no ports used */
-}
+MACHINE_CONFIG_END
-void videopkr_state::fortune1(machine_config &config)
-{
+MACHINE_CONFIG_START(videopkr_state::fortune1)
videopkr(config);
/* basic machine hardware */
m_maincpu->set_clock(CPU_CLOCK_ALT);
subdevice<palette_device>("palette")->set_init(FUNC(videopkr_state::fortune1_palette));
-}
+MACHINE_CONFIG_END
-void videopkr_state::bpoker(machine_config &config)
-{
+MACHINE_CONFIG_START(videopkr_state::bpoker)
babypkr(config);
i8751_device &maincpu(I8751(config.replace(), m_maincpu, XTAL(6'000'000)));
maincpu.set_addrmap(AS_PROGRAM, &videopkr_state::i8751_map);
@@ -1350,7 +1344,7 @@ void videopkr_state::bpoker(machine_config &config)
//ppi.in_pb_callback()
//ppi.out_pc_callback()
//ppi.in_pc_callback()
-}
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/vigilant.cpp b/src/mame/drivers/vigilant.cpp
index 6d40069b725..9b966e38e5e 100644
--- a/src/mame/drivers/vigilant.cpp
+++ b/src/mame/drivers/vigilant.cpp
@@ -528,6 +528,7 @@ void vigilant_state::vigilant(machine_config &config)
dac.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
dac.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
@@ -540,7 +541,7 @@ void vigilant_state::buccanrs(machine_config &config)
m_maincpu->set_addrmap(AS_IO, &vigilant_state::vigilant_io_map);
m_maincpu->set_vblank_int("screen", FUNC(vigilant_state::irq0_line_hold));
- z80_device &soundcpu(Z80(config, "soundcpu", 18432000/6)); /* 3.072000 MHz */
+ z80_device &soundcpu(Z80(config, "soundcpu", 18432000/6)); /* 3.072000 MHz */
soundcpu.set_addrmap(AS_PROGRAM, &vigilant_state::sound_map);
soundcpu.set_addrmap(AS_IO, &vigilant_state::buccanrs_sound_io_map);
soundcpu.set_periodic_int(FUNC(vigilant_state::nmi_line_pulse), attotime::from_hz(128*55)); /* clocked by V1 */
@@ -596,6 +597,7 @@ void vigilant_state::buccanrs(machine_config &config)
dac.add_route(ALL_OUTPUTS, "lspeaker", 0.35);
dac.add_route(ALL_OUTPUTS, "rspeaker", 0.35);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
@@ -648,6 +650,7 @@ void vigilant_state::kikcubic(machine_config &config)
dac.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
dac.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/vii.cpp b/src/mame/drivers/vii.cpp
index 761347e3aea..21c557153a2 100644
--- a/src/mame/drivers/vii.cpp
+++ b/src/mame/drivers/vii.cpp
@@ -6,71 +6,6 @@
Systems which run on the SPG243 SoC
- die markings show
- "SunPlus QL8041" ( also known as Sunplus SPG240 & PAC300 )
-
- (all GameKeyReady units?)
- Disney Princess (GKR)
- Wheel of Fortune (GKR)
- JAKKS WWE (GKR)
- Fantastic 4 (GKR)
- Justice League (GKR)
- Dora the Explorer Nursery Rhyme (GKR)
- Dora the Explorer Play Park (GKR)
- Spiderman 5-in-1 (GKR)
- etc.
-
- (other non GKR JAKKS games)
- X-Men (Wolverine pad)
- Avatar: The Last Airbender
-
- (other games)
- Mattel Classic Sports
-
- "SunPlus QL8041C" ( known as Sunplus SPG2??, seems to be compatible with above, so probably just a chip revision )
-
- Clickstart ( see clickstart.cpp instead)
- Wheel of Fortune 2nd Edition
- Spider-man - Villain Roundup
-
- "SunPlus QU7074-P69A"
-
- The Batman
-
- ---
-
- It is unknown if the following are close to this architecture or not (no dumps yet)
-
- "SunPlus QU7073-P69A"
-
- Mortal Kombat
-
- "Sunplus PU7799-P680?" (difficult to read)
-
- Mission Paintball
-
- "Sunplus QL8167"
-
- Disney Princess Magical Adventure
- Go Diego Go
- Shrek - Over the Hedge (this unit shows a 'GameKey Unlock More Games' on startup, but has no port, not even on the internal PCB)
- Marvel Heroes (Spider-man)
- Spiderman 3 (Movie - black)
-
- ---
-
- These are definitely different
-
- "SunPlus PA7801" ( known as Sunplus SPG110? ) see spg110.cpp instead
-
- Classic Arcade Pinball
- EA Sports (NHL95 + Madden 95)
- Spiderman 5-in-1 (original release)
-
- "GCM394" (this is clearly newer, has extra opcodes, different internal map etc.)
-
- Smart Fit Park
-
Status:
Mostly working
@@ -84,36 +19,19 @@
All systems:
Various inaccuracies in samples/envelopes.
- jak_wall, jak_sdoo:
+ walle:
Game seems unhappy with NVRAM, clears contents on each boot.
- jak_pooh:
- In the 'Light Tag' minigame (select the rock) you can't move left with the DRC (ok with -nodrc)
- and the game usually softlocks when you find a friend (with or without DRC)
- jak_disf:
- shows corrupt logo on first boot with no valid nvram (possibly hardware does too, or layer disable?)
- jak_nick:
- channel chasers (first game) title screen background should be blue, not the current pattern (possible layer disable?)
-
+ rad_skat:
+ Palette issues on the High Score screen.
vii:
When loading a cart from file manager, sometimes MAME will crash.
The "MOTOR" option in the diagnostic menu does nothing when selected.
The "SPEECH IC" option in the diagnostic menu does nothing when selected.
On 'vii_vc1' & 'vii_vc2' cart, the left-right keys are transposed with the up-down keys.
- This is not a bug per se, as the games are played with the controller physically rotated 90 degrees.
-
- Note:
- Cricket, Skateboarder, Skannerz and Football 2 list a 32-bit checksum at the start of ROM.
- This is the byte sum of the file, excluding the first 16 byte (where the checksum is stored)
-
- Test Modes:
- Justice League : press UP, DOWN, LEFT, BT3 on the JAKKS logo in that order, quickly, to get test menu
- WWE : press UP, BT1, BT2 together during startup logos
-
- Disney Friends, MS Pacman, WallE, Batman (and some other HotGen GameKKeys) for test mode, hold UP,
- press A, press DOWN during startup
-
- TODO:
- Work out how to access the hidden TEST menus for all games (most JAKKS games should have one at least)
+ When entering a game in Basketball, MAME fatalerrors when starting the game due to jumping to invalid code.
+ zone60/wirels60:
+ When entering a game in Basketball, MAME fatalerrors when starting the game due to jumping to invalid code.
*******************************************************************************/
@@ -126,7 +44,6 @@
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
-#include "bus/jakks_gamekey/slot.h"
#include "screen.h"
#include "softlist.h"
@@ -151,21 +68,14 @@ public:
void spg2xx_base(machine_config &config);
void spg2xx_basep(machine_config &config);
void jakks(machine_config &config);
- void jakks_i2c(machine_config &config);
void walle(machine_config &config);
void wireless60(machine_config &config);
void rad_skat(machine_config &config);
void rad_skatp(machine_config &config);
- void rad_sktv(machine_config &config);
void rad_crik(machine_config &config);
void non_spg_base(machine_config &config);
- void lexizeus(machine_config &config);
- void init_crc();
- void init_zeus();
- void init_zone40();
-
- DECLARE_CUSTOM_INPUT_MEMBER(i2c_r);
+ void init_rad_crik();
protected:
virtual void machine_start() override;
@@ -181,14 +91,7 @@ protected:
DECLARE_WRITE16_MEMBER(wireless60_portb_w);
DECLARE_READ16_MEMBER(wireless60_porta_r);
- DECLARE_READ16_MEMBER(rad_porta_r);
- DECLARE_READ16_MEMBER(rad_portb_r);
- DECLARE_READ16_MEMBER(rad_portc_r);
-
- DECLARE_WRITE16_MEMBER(jakks_porta_w);
- DECLARE_WRITE16_MEMBER(jakks_portb_w);
-
- required_device<unsp_device> m_maincpu;
+ required_device<cpu_device> m_maincpu;
required_device<screen_device> m_screen;
required_device<spg2xx_device> m_spg;
optional_memory_bank m_bank;
@@ -196,9 +99,7 @@ protected:
DECLARE_READ16_MEMBER(walle_portc_r);
DECLARE_WRITE16_MEMBER(walle_portc_w);
- virtual void mem_map_4m(address_map &map);
- virtual void mem_map_2m(address_map &map);
- virtual void mem_map_1m(address_map &map);
+ virtual void mem_map(address_map &map);
uint32_t m_current_bank;
@@ -213,47 +114,9 @@ protected:
optional_ioport m_io_p3;
optional_device<i2cmem_device> m_i2cmem;
optional_device<nvram_device> m_nvram;
-};
-class jakks_gkr_state : public spg2xx_game_state
-{
-public:
- jakks_gkr_state(const machine_config &mconfig, device_type type, const char *tag)
- : spg2xx_game_state(mconfig, type, tag)
- , m_porta_key_mode(false)
- , m_cart(*this, "cartslot")
- , m_cart_region(nullptr)
- { }
-
- void jakks_gkr(machine_config &config);
- void jakks_gkr_i2c(machine_config &config);
- void jakks_gkr_1m_i2c(machine_config &config);
- void jakks_gkr_2m_i2c(machine_config &config);
- void jakks_gkr_nk(machine_config &config);
- void jakks_gkr_nk_i2c(machine_config &config);
- void jakks_gkr_dy(machine_config &config);
- void jakks_gkr_dy_i2c(machine_config &config);
- void jakks_gkr_dp_i2c(machine_config &config);
- void jakks_gkr_sw_i2c(machine_config &config);
- void jakks_gkr_nm_i2c(machine_config &config);
- void jakks_gkr_wf_i2c(machine_config &config);
- void jakks_gkr_mv_i2c(machine_config &config);
- void jakks_gkr_wp(machine_config &config);
-
- DECLARE_CUSTOM_INPUT_MEMBER(i2c_gkr_r);
-
-private:
- virtual void machine_start() override;
-
- DECLARE_WRITE16_MEMBER(gkr_portc_w);
- DECLARE_WRITE16_MEMBER(jakks_porta_key_io_w);
- DECLARE_READ16_MEMBER(jakks_porta_key_io_r);
- bool m_porta_key_mode;
-
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER(gamekey_cart);
-
- required_device<jakks_gamekey_slot_device> m_cart;
- memory_region *m_cart_region;
+ // temp hack
+ DECLARE_READ16_MEMBER(rad_crik_hack_r);
};
class vii_state : public spg2xx_game_state
@@ -294,60 +157,6 @@ private:
uint8_t m_controller_input[8];
};
-class icanguit_state : public spg2xx_game_state
-{
-public:
- icanguit_state(const machine_config &mconfig, device_type type, const char *tag)
- : spg2xx_game_state(mconfig, type, tag)
- , m_cart(*this, "cartslot")
- , m_cart_region(nullptr)
- , m_porta_in(*this, "P1_%u", 0U)
- , m_portc_in(*this, "P3_%u", 0U)
- { }
-
- void icanguit(machine_config &config);
- void icanpian(machine_config &config);
-
-private:
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER(icanguit_cart);
-
- DECLARE_READ16_MEMBER(porta_r);
- DECLARE_READ16_MEMBER(portb_r);
- DECLARE_READ16_MEMBER(portc_r);
- DECLARE_WRITE16_MEMBER(porta_w);
- DECLARE_WRITE16_MEMBER(portb_w);
- DECLARE_WRITE16_MEMBER(portc_w);
-
- DECLARE_WRITE16_MEMBER(guit_porta_w);
-
- required_device<generic_slot_device> m_cart;
- memory_region *m_cart_region;
-
- uint16_t m_inlatch_a;
- uint16_t m_inlatch_c;
- optional_ioport_array<6> m_porta_in;
- optional_ioport_array<6> m_portc_in;
-
-};
-
-class dreamlif_state : public spg2xx_game_state
-{
-public:
- dreamlif_state(const machine_config &mconfig, device_type type, const char *tag)
- : spg2xx_game_state(mconfig, type, tag)
- { }
-
- void dreamlif(machine_config &config);
-
- DECLARE_READ16_MEMBER(portb_r);
- DECLARE_WRITE16_MEMBER(portb_w);
-};
-
-
-
/*************************
* Machine Hardware *
*************************/
@@ -358,7 +167,6 @@ void spg2xx_game_state::switch_bank(uint32_t bank)
{
m_current_bank = bank;
m_bank->set_entry(bank);
- m_maincpu->invalidate_cache();
}
}
@@ -420,27 +228,15 @@ void vii_state::device_timer(emu_timer &timer, device_timer_id id, int param, vo
WRITE16_MEMBER(vii_state::vii_portb_w)
{
+ if (data == 0x7c) machine().debug_break();
switch_bank(((data & 0x80) >> 7) | ((data & 0x20) >> 4));
}
-
-CUSTOM_INPUT_MEMBER(spg2xx_game_state::i2c_r)
+READ16_MEMBER(spg2xx_game_state::walle_portc_r)
{
return m_i2cmem->read_sda();
}
-CUSTOM_INPUT_MEMBER(jakks_gkr_state::i2c_gkr_r)
-{
- if (m_cart && m_cart->exists())
- {
- return m_cart->read_cart_seeprom();
- }
- else
- {
- return m_i2cmem->read_sda();
- }
-}
-
WRITE16_MEMBER(spg2xx_game_state::walle_portc_w)
{
m_walle_portc_data = data & mem_mask;
@@ -450,111 +246,27 @@ WRITE16_MEMBER(spg2xx_game_state::walle_portc_w)
m_i2cmem->write_sda(BIT(data, 0));
}
-WRITE16_MEMBER(jakks_gkr_state::gkr_portc_w)
-{
- m_walle_portc_data = data & mem_mask;
-
- if (m_cart && m_cart->exists())
- {
- m_cart->write_cart_seeprom(space,offset,data,mem_mask);
- }
- else
- {
- if (m_i2cmem)
- {
- if (BIT(mem_mask, 1))
- m_i2cmem->write_scl(BIT(data, 1));
- if (BIT(mem_mask, 0))
- m_i2cmem->write_sda(BIT(data, 0));
- }
- }
-}
-
READ16_MEMBER(spg2xx_game_state::jakks_porta_r)
{
- //logerror("%s: jakks_porta_r\n", machine().describe_context());
- return m_io_p1->read();
-}
-
-WRITE16_MEMBER(spg2xx_game_state::jakks_porta_w)
-{
- //logerror("%s: jakks_porta_w %04x\n", machine().describe_context(), data);
-}
-
-WRITE16_MEMBER(spg2xx_game_state::jakks_portb_w)
-{
- //logerror("%s: jakks_portb_w %04x\n", machine().describe_context(), data);
-}
-
-READ16_MEMBER(jakks_gkr_state::jakks_porta_key_io_r)
-{
- //logerror("%s: jakks_porta_key_io_r\n", machine().describe_context());
- if (m_porta_key_mode == false)
- {
- return m_io_p1->read();
- }
- else
- {
- /* masks with 0xf, inverts, and combines it with a previous read (when data written to jakks_porta_key_io_w was 0x0000) and expects result to be 0x0000
- could just expect data written to be returned, but that would be a strange check.
- all systems seem to respond to the same result, so how is the per-system lock implemented? */
- return (m_io_p1->read() & 0xfff0) | 0x000f;
- }
+ const uint16_t temp = m_io_p1->read();
+ uint16_t value = 0;
+ value |= (temp & 0x0001) ? 0x8000 : 0;
+ value |= (temp & 0x0002) ? 0x4000 : 0;
+ value |= (temp & 0x0004) ? 0x2000 : 0;
+ value |= (temp & 0x0008) ? 0x1000 : 0;
+ value |= (temp & 0x0010) ? 0x0800 : 0;
+ value |= (temp & 0x0020) ? 0x0400 : 0;
+ value |= (temp & 0x0040) ? 0x0200 : 0;
+ value |= (temp & 0x0080) ? 0x0100 : 0;
+ return value;
}
-WRITE16_MEMBER(jakks_gkr_state::jakks_porta_key_io_w)
-{
- logerror("%s: jakks_porta_key_io_w %04x\n", machine().describe_context(), data);
- // only seen 0xffff and 0x0000 written here.. writes 0xffff before the 2nd part of the port a gamekey check read.
- if (data == 0xffff)
- {
- m_porta_key_mode = true;
- }
- else
- {
- m_porta_key_mode = false;
- }
-}
-
-READ16_MEMBER(spg2xx_game_state::rad_porta_r)
-{
- uint16_t data = m_io_p1->read();
- logerror("Port A Read: %04x\n", data);
- return data;
-}
-
-READ16_MEMBER(spg2xx_game_state::rad_portb_r)
-{
- uint16_t data = m_io_p2->read();
- logerror("Port B Read: %04x\n", data);
- return data;
-}
-
-READ16_MEMBER(spg2xx_game_state::rad_portc_r)
-{
- uint16_t data = m_io_p3->read();
- logerror("Port C Read: %04x\n", data);
- return data;
-}
-
-void spg2xx_game_state::mem_map_4m(address_map &map)
+void spg2xx_game_state::mem_map(address_map &map)
{
map(0x000000, 0x3fffff).bankr("cartbank");
map(0x000000, 0x003fff).m(m_spg, FUNC(spg2xx_device::map));
}
-void spg2xx_game_state::mem_map_2m(address_map &map)
-{
- map(0x000000, 0x1fffff).mirror(0x200000).bankr("cartbank");
- map(0x000000, 0x003fff).m(m_spg, FUNC(spg2xx_device::map));
-}
-
-void spg2xx_game_state::mem_map_1m(address_map &map)
-{
- map(0x000000, 0x0fffff).mirror(0x300000).bankr("cartbank");
- map(0x000000, 0x003fff).m(m_spg, FUNC(spg2xx_device::map));
-}
-
static INPUT_PORTS_START( vii )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_NAME("Joypad Up")
@@ -578,270 +290,26 @@ INPUT_PORTS_END
static INPUT_PORTS_START( batman )
PORT_START("P1")
- PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_NAME("Joypad Up")
- PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_NAME("Joypad Down")
- PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_NAME("Joypad Left")
- PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_NAME("Joypad Right")
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("A Button")
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("Menu")
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("B Button")
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("X Button")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_NAME("Joypad Up")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_NAME("Joypad Down")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_NAME("Joypad Left")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_NAME("Joypad Right")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("A Button")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("Menu")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("B Button")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("X Button")
INPUT_PORTS_END
static INPUT_PORTS_START( walle )
PORT_START("P1")
- PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_NAME("Joypad Up")
- PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_NAME("Joypad Down")
- PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_NAME("Joypad Left")
- PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_NAME("Joypad Right")
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("A Button")
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("B Button")
-
- PORT_START("P3")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, spg2xx_game_state,i2c_r, nullptr)
- PORT_BIT( 0xfff6, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PAL/NTSC flag, set to NTSC (unverified here)
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( jak_sith_i2c )
- PORT_START("P1")
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_BUTTON2 )
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_BUTTON1 )
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON3 )
- PORT_BIT( 0xf3df, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("P3")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, jakks_gkr_state,i2c_gkr_r, nullptr)
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PAL/NTSC flag, set to NTSC (unverified here)
- PORT_BIT( 0xfff6, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("JOYX")
- PORT_BIT(0x0fff, 0x0000, IPT_AD_STICK_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(100) PORT_MINMAX(0x00,0x0fff)
-
- PORT_START("JOYY")
- PORT_BIT(0x0fff, 0x0000, IPT_AD_STICK_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(100) PORT_MINMAX(0x00,0x0fff)
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( jak_pooh )
- PORT_START("P1")
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_BUTTON1 )
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Menu / Pause")
- PORT_BIT( 0xf7df, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("P3")
- PORT_BIT( 0xfff7, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PAL/NTSC flag, set to NTSC (unverified here)
-
- PORT_START("JOYX")
- PORT_BIT(0x0fff, 0x0000, IPT_AD_STICK_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(100) PORT_MINMAX(0x00,0x0fff)
-
- PORT_START("JOYY")
- PORT_BIT(0x0fff, 0x0000, IPT_AD_STICK_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(100) PORT_MINMAX(0x00,0x0fff)
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( jak_nm_i2c )
- PORT_START("P1")
- PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
- PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
- PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
- PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_BUTTON2 )
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Menu")
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON1 )
-
- PORT_START("P3")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, jakks_gkr_state,i2c_gkr_r, nullptr)
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PAL/NTSC flag, set to NTSC
- PORT_BIT( 0xfff0, IP_ACTIVE_HIGH, IPT_UNUSED )
-
-
- PORT_START("DIALX") // for Pole Position, joystick can be twisted like a dial/wheel (limited?) (check range)
- PORT_BIT(0x0fff, 0x0000, IPT_AD_STICK_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(100) PORT_MINMAX(0x00,0x0fff)
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( jak_wf_i2c )
- PORT_START("P1")
- PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
- PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
- PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
- PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("A")
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("B")
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x01c0, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Menu")
- PORT_BIT( 0x001f, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("P3")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, jakks_gkr_state,i2c_gkr_r, nullptr)
- PORT_BIT( 0xfff6, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PAL/NTSC flag, set to NTSC
-
- /* on real unit you can spin the wheel (and must make sure it completes a full circle, or you lose your turn) instead of pressing 'B' for a random spin but where does it map? (it can be tested in secret test mode)
- PORT_START("DIALX")
- PORT_BIT(0x0fff, 0x0000, IPT_AD_STICK_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(100) PORT_MINMAX(0x00,0x0fff)
-
- PORT_START("DIALY")
- PORT_BIT(0x0fff, 0x0000, IPT_AD_STICK_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(100) PORT_MINMAX(0x00,0x0fff)
- */
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( jak_gkr )
- PORT_START("P1")
- PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_NAME("Joypad Up")
- PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_NAME("Joypad Down")
- PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_NAME("Joypad Left")
- PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_NAME("Joypad Right")
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_BUTTON1 )
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_BUTTON2 )
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON3 )
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON4 )
- PORT_BIT( 0x00c0, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Menu / Pause")
- PORT_BIT( 0x001f, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("P3")
- PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PAL/NTSC flag, set to NTSC (not verified for all games, state can be seen in secret test menu of many tho)
- PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) // this causes WWE to think the unit is a '2nd Controller' and tells you to plug the 1st one in.
- PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( jak_sdoo_i2c ) // GameKeyReady units had 2 main buttons, later releases reduced that to 1 button (as the internal games don't require 2 and no GameKeys were released)
- PORT_START("P1")
- PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
- PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
- PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
- PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_BUTTON1 )
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_BUTTON2 )
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_UNUSED ) // debug input, skips levels!
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x00c0, IP_ACTIVE_HIGH, IPT_UNUSED ) // must be low or other inputs don't work?
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Menu / Pause")
- PORT_BIT( 0x001f, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("P3")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, jakks_gkr_state,i2c_gkr_r, nullptr) // is this correct? doesn't seem to work
- PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PAL/NTSC flag, set to NTSC (unverified here)
- PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( jak_gkr_i2c )
- PORT_INCLUDE(jak_gkr)
-
- PORT_MODIFY("P3")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, jakks_gkr_state,i2c_gkr_r, nullptr)
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( jak_disp_i2c )
- PORT_START("P1")
- PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
- PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
- PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
- PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON1 )
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON2 )
- PORT_BIT( 0x00c0, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Start / Menu / Pause")
- PORT_BIT( 0x001f, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("P3")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, jakks_gkr_state,i2c_gkr_r, nullptr)
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PAL/NTSC flag, set to NTSC (unverified here)
- PORT_BIT( 0xfff6, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_NAME("Joypad Up")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_NAME("Joypad Down")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_NAME("Joypad Left")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_NAME("Joypad Right")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("A Button")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("B Button")
INPUT_PORTS_END
-
-
static INPUT_PORTS_START( wirels60 )
PORT_START("P1")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_NAME("Joypad Up")
@@ -988,37 +456,6 @@ static INPUT_PORTS_START( rad_sktv )
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
- PORT_START("P3")
- PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNUSED )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( mattelcs ) // there is a 'secret test mode' that previously got activated before inputs were mapped, might need unused inputs to active?
- PORT_START("P1")
- PORT_BIT( 0x0007, IP_ACTIVE_LOW, IPT_UNUSED ) // must be IP_ACTIVE_LOW or you can't switch to Football properly?
- PORT_DIPNAME( 0x0018, 0x0000, "Game Select Slider" ) // technically not a dipswitch, a 3 position slider, but how best map it?
- PORT_DIPSETTING( 0x0008, "Baseball (Left)" )
- PORT_DIPSETTING( 0x0010, "Basketball (Middle)" )
- PORT_DIPSETTING( 0x0000, "Football (Right)" )
- // no 4th position possible
- PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Difficulty ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( Hard ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Normal ) )
- PORT_BIT( 0xffa0, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("P2")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("Joypad Up")
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("Joypad Down")
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_NAME("Joypad Left")
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("Joypad Right")
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Sound") // toggles between sound+music, sound only, and no sound
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Hike / Pitch")
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Shoot / Run")
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Kick / Hit")
- PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("P3")
- PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
/* hold 'Console Down' while powering up to get the test menu, including input tests
@@ -1040,542 +477,6 @@ static INPUT_PORTS_START( rad_crik )
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
-static INPUT_PORTS_START( dreamlif )
- PORT_START("P1")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 )
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("A")
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("B")
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("C")
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Yes")
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("No")
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // must be low or the Tiger logo gets skipped, also must be low for service mode (hold pause while booting) to work
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Pause")
- PORT_BIT( 0xf000, IP_ACTIVE_HIGH, IPT_UNUSED )
-INPUT_PORTS_END
-
-
-// there is a speaker volume for the 'guitar' mode, but it's presumably an analog feature, not read by the game.
-static INPUT_PORTS_START( icanguit )
- PORT_START("P1")
- // uses multiplexed ports instead, see below
-
- PORT_START("P1_0")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("Fret 1, Row 1")
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_NAME("Fret 2, Row 1")
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH2) PORT_NAME("Fret 3, Row 1")
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_NAME("Fret 4, Row 1")
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_NAME("Fret 5, Row 1")
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_NAME("Fret 6, Row 1") // Frets 6-12 only have 2 rows (1 and 6)
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_NAME("Fret 9, Row 1")
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_NAME("Fret 10, Row 1")
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_NAME("Fret 11, Row 1")
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_NAME("Fret 12, Row 1")
- PORT_BIT( 0xfc00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START("P1_1")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_NAME("Fret 1, Row 2")
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_NAME("Fret 2, Row 2")
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_NAME("Fret 3, Row 2")
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_NAME("Fret 4, Row 2")
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_NAME("Fret 5, Row 2")
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_NAME("Fret 7, Row 1")
- PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START("P1_2")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_NAME("Fret 1, Row 3")
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_NAME("Fret 2, Row 3")
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_NAME("Fret 3, Row 3")
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_NAME("Fret 4, Row 3")
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_NAME("Fret 5, Row 3")
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("Fret 8, Row 1")
- PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START("P1_3")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_NAME("Fret 1, Row 4")
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_NAME("Fret 2, Row 4")
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_NAME("Fret 3, Row 4")
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_NAME("Fret 4, Row 4")
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_NAME("Fret 5, Row 4")
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_NAME("Fret 8, Row 6")
- PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START("P1_4")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_NAME("Fret 1, Row 5")
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_NAME("Fret 2, Row 5")
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_NAME("Fret 3, Row 5")
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("Fret 4, Row 5")
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_NAME("Fret 5, Row 5")
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("Fret 7, Row 6")
- PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START("P1_5")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_NAME("Fret 1, Row 6")
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_NAME("Fret 2, Row 6")
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_NAME("Fret 3, Row 6")
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME("Fret 4, Row 6")
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_NAME("Fret 5, Row 6")
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("Fret 6, Row 6") // Frets 6-12 only have 2 rows (1 and 6)
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_NAME("Fret 9, Row 6")
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_NAME("Fret 10, Row 6")
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_NAME("Fret 11, Row 6")
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_NAME("Fret 12, Row 6")
- PORT_BIT( 0xfc00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START("P2")
- PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // might be some kind of seeprom in here?
-
- PORT_START("P3")
- // uses multiplexed ports instead, see below
-
- PORT_START("P3_0")
- PORT_BIT( 0x0007, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("String 1") // these seem to respond on release, but are definitely active high based on visual indicators
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("String 2")
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("String 3")
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("String 4")
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("String 5")
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("String 6")
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_DIPNAME( 0x0400, 0x0000, "TV or Guitar Mode" )
- PORT_DIPSETTING( 0x0000, "TV Mode" )
- PORT_DIPSETTING( 0x0400, "Guitar Mode" )
- PORT_BIT( 0xf800, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START("P3_1")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
- PORT_BIT( 0xfffc, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START("P3_2")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Home")
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Enter")
- PORT_BIT( 0xfffc, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START("P3_3")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Pause")
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
- PORT_BIT( 0xfffc, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START("P3_4")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) // doesn't highlight during menus, but changes sound in 'Guitar Mode' and switches between levels after selecting song
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) // doesn't highlight during menus, but changes sound in 'Guitar Mode' and switches between levels after selecting song
- PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("P3_5")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("Whammy Up")
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("Whammy Down")
- PORT_BIT( 0xfff8, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-INPUT_PORTS_END
-
-// this has an entire piano keyboard + extras
-// there is a volume dial for the internal speakers when used in non-TV mode, but presumably it is not CPU visible
-// there should be a metronome key, but nothing seems to have that effect, maybe due to incomplete sound emulation?
-static INPUT_PORTS_START( icanpian )
- PORT_START("P1")
- // uses multiplexed ports instead, see below
-
- PORT_START("P1_0")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH2)PORT_NAME("Octave 0 F (Green)")
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_NAME("Octave 0 F# (Purple)")
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_NAME("Octave 0 G (Yellow)")
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_NAME("Octave 0 G# (Dark Blue)")
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_NAME("Octave 0 A (Flesh)")
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_NAME("Octave 0 A# (Dark Green)")
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_NAME("Octave 0 B (Pink)")
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_NAME("Octave 0 C (White)")
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_NAME("Octave 0 C# (Black)")
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_NAME("Octave 0 D (Blue)")
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_NAME("Octave 0 D# (Red)")
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_NAME("Octave 0 E (Orange)")
- PORT_BIT( 0xf000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START("P1_1")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_NAME("Octave 1 F (Green)")
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_NAME("Octave 1 F# (Purple)")
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("Octave 1 G (Yellow)")
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_NAME("Octave 1 G# (Dark Blue)")
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_NAME("Octave 1 A (Flesh)")
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_NAME("Octave 1 A# (Dark Green)")
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("Octave 1 B (Pink)")
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_NAME("Octave 1 C (White)")
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_NAME("Octave 1 C# (Black)")
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_NAME("Octave 1 D (Blue)")
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_NAME("Octave 1 D# (Red)")
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_NAME("Octave 1 E (Orange)")
- PORT_BIT( 0xf000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START("P1_2")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_NAME("Octave 2 F (Green)")
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_NAME("Octave 2 F# (Purple)")
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_NAME("Octave 2 G (Yellow)")
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_NAME("Octave 2 G# (Dark Blue)")
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_NAME("Octave 2 A (Flesh)")
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_NAME("Octave 2 A# (Dark Green)")
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_NAME("Octave 2 B (Pink)")
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_NAME("Octave 2 C (White)")
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_NAME("Octave 2 C# (Black)")
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_NAME("Octave 2 D (Blue)")
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("Octave 2 D# (Red)")
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("Octave 2 E (Orange)")
- PORT_BIT( 0xf000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START("P2")
- PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // might be some kind of seeprom in here? (or not? only I Can Play Guitar seems to offer a 'resume', something does get accessed on startup tho? and the machine tells you 'high scores')
-
- PORT_START("P3")
- // uses multiplexed ports instead, see below
-
- PORT_START("P3_0")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Change Instrument")
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Cycle Hands")
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Display Mode 1")
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Display Mode 2")
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Display Mode 3")
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Display Mode 4")
- PORT_BIT( 0x07c0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // unused?
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // presumably power / low battery, kils the game
- PORT_BIT( 0xf000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START("P3_1")
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("Tempo Up")
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME("Tempo Default")
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("Tempo Down")
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("Pause")
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("Metronome")
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNUSED ) // will skip intro scenes etc. like other buttons but no more physical buttons on KB to map here
- PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START("P3_2") // the system ALWAYS requires a cartridge, but has 2 modes of operation depending on a switch. The only way to use it as a normal keyboard is by flipping this switch.
- PORT_DIPNAME( 0x0001, 0x0000, "System Mode" ) // or implement this as a toggle key? (it's a slider switch)
- PORT_DIPSETTING( 0x0001, "Keyboard Mode (no TV output)" )
- PORT_DIPSETTING( 0x0000, "TV Mode" )
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("Scroll Up")
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("Scroll Down")
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Enter")
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Home")
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNUSED ) // will skip intro scenes etc. like other buttons but no more physical buttons on KB to map here
- PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( rad_fb2 ) // controls must be multiplexed somehow, as there's no room for P2 controls otherwise (unless P2 controls were never finished and it was only sold in a single mat version, Radica left useless P2 menu options in the mini Genesis consoles)
- PORT_START("P1")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) // 'left'
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) // 'up'
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) // 'right'
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) // acts a 'motion ball' in menu (this is an analog input from the ball tho? at least in rad_fb in xavix.cpp so this might just be a debug input here)
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) // 'p2 right'
- // none of the remaining inputs seem to do anything
- PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("P2")
- PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("P3")
- PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_CUSTOM ) // NTSC (1) / PAL (0) flag
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( lexizeus ) // how many buttons does this have? I accidentally entered a secret test mode before that seemed to indicate 6, but can't get there again
- PORT_START("P1")
- PORT_DIPNAME( 0x0001, 0x0001, "P1" )
- PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
- PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
- PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Button 1") // shoot in Tiger Rescue & Deep
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Pause")
-
- PORT_START("P2")
- PORT_DIPNAME( 0x0001, 0x0001, "P2" )
- PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
- PORT_START("P3")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Button 1 Rapid") // same function as button 1 but with rapid toggle on/off
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Button 2 Rapid") // same function as button 2 but with rapid toggle on/off
- PORT_DIPNAME( 0x0004, 0x0004, "P3" )
- PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Button 2") // toggles ball / number view in pool
- PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
- PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-INPUT_PORTS_END
-
-
-READ16_MEMBER(dreamlif_state::portb_r)
-{
- // some kind of EEPROM device?
- logerror("%s: portb_r\n", machine().describe_context());
- return 0x0000;
-}
-
-WRITE16_MEMBER(dreamlif_state::portb_w)
-{
- // some kind of EEPROM device?
- logerror("%s: portb_w (%04x)\n", machine().describe_context(), data);
-}
-
-
-
-READ16_MEMBER(icanguit_state::porta_r)
-{
- //logerror("%s: porta_r\n", machine().describe_context());
- return m_inlatch_a;
-}
-
-
-READ16_MEMBER(icanguit_state::portc_r)
-{
- //logerror("%s: portc_r\n", machine().describe_context());
- return m_inlatch_c;
-}
-
-WRITE16_MEMBER(icanguit_state::porta_w)
-{
- if (data == 0x0000)
- {
- m_inlatch_a = m_inlatch_c = 0x0000;
- }
- else if (data == 0x1000)
- {
- m_inlatch_a = m_porta_in[2]->read();
- m_inlatch_c = m_portc_in[2]->read();
- }
- else if (data == 0x2000)
- {
- m_inlatch_a = m_porta_in[1]->read();
- m_inlatch_c = m_portc_in[1]->read();
- }
- else if (data == 0x4000)
- {
- m_inlatch_a = m_porta_in[0]->read();
- m_inlatch_c = m_portc_in[0]->read();
- }
- else
- {
- logerror("%s: unknown porta_w (%04x)\n", machine().describe_context(), data);
- }
-}
-
-WRITE16_MEMBER(icanguit_state::portc_w)
-{
- //logerror("%s: portc_w (%04x)\n", machine().describe_context(), data);
-}
-
-
-// portb is used on startup, something serial?
-READ16_MEMBER(icanguit_state::portb_r)
-{
- //logerror("%s: portb_r\n", machine().describe_context());
- return m_io_p2->read();
-}
-
-WRITE16_MEMBER(icanguit_state::portb_w)
-{
- //logerror("%s: portb_w (%04x)\n", machine().describe_context(), data);
-}
-
-WRITE16_MEMBER(icanguit_state::guit_porta_w)
-{
- //logerror("%s: porta_w (%04x)\n", machine().describe_context(), data);
-
- if (data == 0x0000)
- {
- m_inlatch_a = m_inlatch_c = 0x0000;
- }
- else if (data == 0x0400)
- {
- m_inlatch_a = m_porta_in[5]->read();
- m_inlatch_c = m_portc_in[5]->read();
- }
- else if (data == 0x0800)
- {
- m_inlatch_a = m_porta_in[4]->read();
- m_inlatch_c = m_portc_in[4]->read();
- }
- else if (data == 0x1000)
- {
- m_inlatch_a = m_porta_in[3]->read();
- m_inlatch_c = m_portc_in[3]->read();
- }
- else if (data == 0x2000)
- {
- m_inlatch_a = m_porta_in[2]->read();
- m_inlatch_c = m_portc_in[2]->read();
- }
- else if (data == 0x4000)
- {
- m_inlatch_a = m_porta_in[1]->read();
- m_inlatch_c = m_portc_in[1]->read();
- }
- else if (data == 0x8000)
- {
- m_inlatch_a = m_porta_in[0]->read();
- m_inlatch_c = m_portc_in[0]->read();
- }
- else
- {
- logerror("%s: unknown porta_w (%04x)\n", machine().describe_context(), data);
- }
-}
-
-
-
-void icanguit_state::machine_start()
-{
- spg2xx_game_state::machine_start();
-
- // if there's a cart, override the standard banking
- if (m_cart && m_cart->exists())
- {
- std::string region_tag;
- m_cart_region = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
- m_bank->configure_entries(0, (m_cart_region->bytes() + 0x7fffff) / 0x800000, m_cart_region->base(), 0x800000);
- m_bank->set_entry(0);
- }
-}
-
-void icanguit_state::machine_reset()
-{
- spg2xx_game_state::machine_reset();
- m_inlatch_a = 0x0000;
- m_inlatch_c = 0x0000;
-}
-
-
-DEVICE_IMAGE_LOAD_MEMBER(icanguit_state, icanguit_cart)
-{
- uint32_t size = m_cart->common_get_size("rom");
-
- if (size < 0x800000)
- {
- image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size");
- return image_init_result::FAIL;
- }
-
- m_cart->rom_alloc(size, GENERIC_ROM16_WIDTH, ENDIANNESS_LITTLE);
- m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
-
- return image_init_result::PASS;
-}
-
-
-
void vii_state::machine_start()
{
spg2xx_game_state::machine_start();
@@ -1591,8 +492,6 @@ void vii_state::machine_start()
m_ctrl_poll_timer = timer_alloc(TIMER_CTRL_POLL);
m_ctrl_poll_timer->adjust(attotime::never);
-
- save_item(NAME(m_controller_input));
}
void vii_state::machine_reset()
@@ -1615,11 +514,6 @@ void spg2xx_game_state::machine_start()
m_serial_eeprom = std::make_unique<uint8_t[]>(0x400);
if (m_nvram)
m_nvram->set_base(&m_serial_eeprom[0], 0x400);
-
- save_item(NAME(m_current_bank));
- save_item(NAME(m_w60_controller_input));
- save_item(NAME(m_w60_porta_data));
- save_item(NAME(m_walle_portc_data));
}
void spg2xx_game_state::machine_reset()
@@ -1677,7 +571,7 @@ DEVICE_IMAGE_LOAD_MEMBER(vii_state, vii_cart)
void spg2xx_game_state::spg2xx_base(machine_config &config)
{
UNSP(config, m_maincpu, XTAL(27'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_game_state::mem_map_4m);
+ m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_game_state::mem_map);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
@@ -1726,50 +620,6 @@ void vii_state::vii(machine_config &config)
SOFTWARE_LIST(config, "vii_cart").set_original("vii");
}
-void icanguit_state::icanguit(machine_config &config)
-{
- SPG24X(config, m_spg, XTAL(27'000'000), m_maincpu, m_screen);
-
- spg2xx_base(config);
-
- m_spg->porta_in().set(FUNC(icanguit_state::porta_r));
- m_spg->portb_in().set(FUNC(icanguit_state::portb_r));
- m_spg->portc_in().set(FUNC(icanguit_state::portc_r));
- m_spg->porta_out().set(FUNC(icanguit_state::guit_porta_w));
- m_spg->portb_out().set(FUNC(icanguit_state::portb_w));
- m_spg->portc_out().set(FUNC(icanguit_state::portc_w));
-
-
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "icanguit_cart");
- m_cart->set_width(GENERIC_ROM16_WIDTH);
- m_cart->set_device_load(device_image_load_delegate(&icanguit_state::device_image_load_icanguit_cart, this));
- m_cart->set_must_be_loaded(true);
-
- SOFTWARE_LIST(config, "icanguit_cart").set_original("icanguit");
-}
-
-void icanguit_state::icanpian(machine_config &config)
-{
- SPG24X(config, m_spg, XTAL(27'000'000), m_maincpu, m_screen);
-
- spg2xx_base(config);
-
- m_spg->porta_in().set(FUNC(icanguit_state::porta_r));
- m_spg->portb_in().set(FUNC(icanguit_state::portb_r));
- m_spg->portc_in().set(FUNC(icanguit_state::portc_r));
- m_spg->porta_out().set(FUNC(icanguit_state::porta_w));
- m_spg->portb_out().set(FUNC(icanguit_state::portb_w));
- m_spg->portc_out().set(FUNC(icanguit_state::portc_w));
-
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "icanpian_cart");
- m_cart->set_width(GENERIC_ROM16_WIDTH);
- m_cart->set_device_load(device_image_load_delegate(&icanguit_state::device_image_load_icanguit_cart, this));
- m_cart->set_must_be_loaded(true);
-
- SOFTWARE_LIST(config, "icanpian_cart").set_original("icanpian");
-}
-
-
void spg2xx_game_state::wireless60(machine_config &config)
{
SPG24X(config, m_spg, XTAL(27'000'000), m_maincpu, m_screen);
@@ -1786,161 +636,15 @@ void spg2xx_game_state::jakks(machine_config &config)
spg2xx_base(config);
m_spg->porta_in().set(FUNC(spg2xx_game_state::jakks_porta_r));
- m_spg->porta_out().set(FUNC(spg2xx_game_state::jakks_porta_w));
- m_spg->portb_out().set(FUNC(spg2xx_game_state::jakks_portb_w));
-}
-void spg2xx_game_state::jakks_i2c(machine_config &config)
-{
- jakks(config);
I2CMEM(config, m_i2cmem, 0).set_data_size(0x200);
}
-void jakks_gkr_state::machine_start()
-{
- spg2xx_game_state::machine_start();
-
- // if there's a cart, override the standard banking
- if (m_cart && m_cart->exists())
- {
- std::string region_tag;
- m_cart_region = memregion(region_tag.assign(m_cart->tag()).append(JAKKSSLOT_ROM_REGION_TAG).c_str());
- m_bank->configure_entries(0, (m_cart_region->bytes() + 0x7fffff) / 0x800000, m_cart_region->base(), 0x800000);
- m_bank->set_entry(0);
- }
-}
-
-DEVICE_IMAGE_LOAD_MEMBER(jakks_gkr_state, gamekey_cart)
-{
- return m_cart->call_load();
-}
-
-void jakks_gkr_state::jakks_gkr(machine_config &config)
+void spg2xx_game_state::walle(machine_config &config)
{
jakks(config);
- m_spg->porta_in().set(FUNC(jakks_gkr_state::jakks_porta_key_io_r));
- m_spg->porta_out().set(FUNC(jakks_gkr_state::jakks_porta_key_io_w));
- m_spg->portc_in().set_ioport("P3");
- m_spg->portc_out().set(FUNC(jakks_gkr_state::gkr_portc_w));
-
- m_spg->set_rowscroll_offset(0);
-
- JAKKS_GAMEKEY_SLOT(config, m_cart, 0, jakks_gamekey, nullptr);
-}
-
-void jakks_gkr_state::jakks_gkr_i2c(machine_config &config)
-{
- jakks_gkr(config);
- I2CMEM(config, m_i2cmem, 0).set_data_size(0x200);
-}
-
-
-void jakks_gkr_state::jakks_gkr_1m_i2c(machine_config &config)
-{
- jakks_gkr_i2c(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &jakks_gkr_state::mem_map_1m);
-}
-
-void jakks_gkr_state::jakks_gkr_2m_i2c(machine_config &config)
-{
- jakks_gkr_i2c(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &jakks_gkr_state::mem_map_2m);
-}
-
-void jakks_gkr_state::jakks_gkr_nk(machine_config &config)
-{
- jakks_gkr(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &jakks_gkr_state::mem_map_1m);
- SOFTWARE_LIST(config, "jakks_gamekey_nk").set_original("jakks_gamekey_nk");
-}
-
-void jakks_gkr_state::jakks_gkr_nk_i2c(machine_config &config)
-{
- jakks_gkr_i2c(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &jakks_gkr_state::mem_map_1m);
- SOFTWARE_LIST(config, "jakks_gamekey_nk").set_original("jakks_gamekey_nk");
-}
-
-void jakks_gkr_state::jakks_gkr_dy(machine_config &config)
-{
- jakks_gkr(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &jakks_gkr_state::mem_map_1m);
- SOFTWARE_LIST(config, "jakks_gamekey_dy").set_original("jakks_gamekey_dy");
-}
-
-void jakks_gkr_state::jakks_gkr_dy_i2c(machine_config &config)
-{
- jakks_gkr_i2c(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &jakks_gkr_state::mem_map_1m);
- SOFTWARE_LIST(config, "jakks_gamekey_dy").set_original("jakks_gamekey_dy");
-}
-
-void jakks_gkr_state::jakks_gkr_mv_i2c(machine_config &config)
-{
- jakks_gkr_i2c(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &jakks_gkr_state::mem_map_1m);
- SOFTWARE_LIST(config, "jakks_gamekey_mv").set_original("jakks_gamekey_mv");
-}
-
-
-void jakks_gkr_state::jakks_gkr_dp_i2c(machine_config &config)
-{
- jakks_gkr_i2c(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &jakks_gkr_state::mem_map_1m);
- SOFTWARE_LIST(config, "jakks_gamekey_dp").set_original("jakks_gamekey_dp");
-}
-
-void jakks_gkr_state::jakks_gkr_sw_i2c(machine_config &config)
-{
- jakks_gkr_i2c(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &jakks_gkr_state::mem_map_1m);
- m_spg->adc_in<0>().set_ioport("JOYX");
- m_spg->adc_in<1>().set_ioport("JOYY");
- SOFTWARE_LIST(config, "jakks_gamekey_sw").set_original("jakks_gamekey_sw");
-}
-
-void jakks_gkr_state::jakks_gkr_wp(machine_config &config)
-{
- jakks_gkr(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &jakks_gkr_state::mem_map_1m);
- m_spg->adc_in<0>().set_ioport("JOYX");
- m_spg->adc_in<1>().set_ioport("JOYY");
- //SOFTWARE_LIST(config, "jakks_gamekey_wp").set_original("jakks_gamekey_wp"); // NO KEYS RELEASED
-}
-
-void jakks_gkr_state::jakks_gkr_nm_i2c(machine_config &config)
-{
- jakks_gkr_i2c(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &jakks_gkr_state::mem_map_1m);
- m_spg->adc_in<0>().set_ioport("DIALX");
- SOFTWARE_LIST(config, "jakks_gamekey_nm").set_original("jakks_gamekey_nm");
-}
-
-void jakks_gkr_state::jakks_gkr_wf_i2c(machine_config &config)
-{
- jakks_gkr_i2c(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &jakks_gkr_state::mem_map_1m);
- //m_spg->adc_in<0>().set_ioport("DIALX"); // wheel does not seem to map here
- //m_spg->adc_in<1>().set_ioport("DIALY");
- //SOFTWARE_LIST(config, "jakks_gamekey_wf").set_original("jakks_gamekey_wf"); // no game keys were released
-}
-
-
-void spg2xx_game_state::lexizeus(machine_config &config)
-{
- non_spg_base(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_game_state::mem_map_4m);
- m_spg->porta_in().set_ioport("P1");
- m_spg->portb_in().set_ioport("P2");
- m_spg->portc_in().set_ioport("P3");
-}
-
-void spg2xx_game_state::walle(machine_config &config)
-{
- jakks_i2c(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_game_state::mem_map_2m);
- m_spg->portc_in().set_ioport("P3");
+ m_spg->portc_in().set(FUNC(spg2xx_game_state::walle_portc_r));
m_spg->portc_out().set(FUNC(spg2xx_game_state::walle_portc_w));
}
@@ -1958,37 +662,12 @@ void spg2xx_game_state::rad_skat(machine_config &config)
NVRAM(config, m_nvram, nvram_device::DEFAULT_ALL_1);
}
-void dreamlif_state::dreamlif(machine_config &config)
-{
- SPG24X(config, m_spg, XTAL(27'000'000), m_maincpu, m_screen);
- spg2xx_base(config);
-
- m_spg->porta_in().set_ioport("P1");
- m_spg->portb_in().set(FUNC(dreamlif_state::portb_r));
- m_spg->portb_out().set(FUNC(dreamlif_state::portb_w));
-
-}
-
void spg2xx_game_state::rad_skatp(machine_config &config)
{
rad_skat(config);
m_spg->set_pal(true);
}
-void spg2xx_game_state::rad_sktv(machine_config &config)
-{
- SPG24X(config, m_spg, XTAL(27'000'000), m_maincpu, m_screen);
- spg2xx_base(config);
-
- m_spg->porta_in().set(FUNC(spg2xx_game_state::rad_porta_r));
- m_spg->portb_in().set(FUNC(spg2xx_game_state::rad_portb_r));
- m_spg->portc_in().set(FUNC(spg2xx_game_state::rad_portc_r));
- m_spg->eeprom_w().set(FUNC(spg2xx_game_state::eeprom_w));
- m_spg->eeprom_r().set(FUNC(spg2xx_game_state::eeprom_r));
-
- NVRAM(config, m_nvram, nvram_device::DEFAULT_ALL_1);
-}
-
void spg2xx_game_state::rad_crik(machine_config &config)
{
SPG28X(config, m_spg, XTAL(27'000'000), m_maincpu, m_screen);
@@ -2003,143 +682,65 @@ void spg2xx_game_state::rad_crik(machine_config &config)
NVRAM(config, m_nvram, nvram_device::DEFAULT_ALL_1);
}
+READ16_MEMBER(spg2xx_game_state::rad_crik_hack_r)
+{
+ int pc = m_maincpu->state_int(UNSP_PC);
+ if (pc == 0xf851)
+ return 0xf859;
+ else
+ return 0xf854;
+}
+
+void spg2xx_game_state::init_rad_crik()
+{
+ // not 100% sure what this is waiting on, could be eeprom as it seems to end up here frequently during the eeprom test, patch running code, not ROM, so that checksum can still pass
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0xf851, 0xf851, read16_delegate(FUNC(spg2xx_game_state::rad_crik_hack_r),this));
+}
+
ROM_START( vii )
- ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASE00 )
+ ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "vii.bin", 0x0000, 0x2000000, CRC(04627639) SHA1(f883a92d31b53c9a5b0cdb112d07cd793c95fc43))
ROM_END
-ROM_START( jak_batm )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ROM_START( batmantv )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "batman.bin", 0x000000, 0x400000, CRC(46f848e5) SHA1(5875d57bb3fe0cac5d20e626e4f82a0e5f9bb94c) )
ROM_END
-ROM_START( jak_wall )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ROM_START( walle )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "walle.bin", 0x000000, 0x400000, BAD_DUMP CRC(bd554cba) SHA1(6cd06a036ab12e7b0e1fd8003db873b0bb783868) )
- // both of these dumps are bad, but in slightly different ways, note the random green pixels around the text (bad data is reported in secret test mode)
- //ROM_LOAD16_WORD_SWAP( "walle.bin", 0x000000, 0x400000, BAD_DUMP CRC(6bc90b16) SHA1(184d72de059057aae7800da510fcf05ed1da9ec9))
-ROM_END
-
-ROM_START( jak_wwe )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "jakkswwegkr.bin", 0x000000, 0x200000, CRC(b078a812) SHA1(7d97c0e2171b3fd91b280480c9ffd5651828195a) )
-ROM_END
-
-ROM_START( jak_fan4 )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "jakksffgkr.bin", 0x000000, 0x200000, CRC(8755a1f7) SHA1(7214da15fe61881da27b81575fbdb54cc0f1d6aa) )
-ROM_END
-
-ROM_START( jak_just )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "jakksjlagkr.bin", 0x000000, 0x200000, CRC(182989f0) SHA1(799229c537d6fe629ba9e1e4051d1bb9ca445d44) )
-ROM_END
-
-ROM_START( jak_dora )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "jakksdoragkr.bin", 0x000000, 0x200000, CRC(bcaa132d) SHA1(3894b980fbc4144731b2a7a94acebb29e30de67c) )
-ROM_END
-
-ROM_START( jak_nick )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "jakksnicktoonsgkr.bin", 0x000000, 0x200000, CRC(4dec1656) SHA1(b3002ab15e75068102f4955a3f0c52fb6d5cda56) )
-ROM_END
-
-ROM_START( jak_sbfc )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "jakksspongebobgkr.bin", 0x000000, 0x200000, CRC(9871303c) SHA1(78bc2687e1514094db8bb875e1117df3fcb3d201) )
-ROM_END
-
-ROM_START( jak_dorr )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "jakksdora2gkr.bin", 0x000000, 0x200000, CRC(6c09bcd9) SHA1(4bcad79658832f319d16b4f63257e127f6862d79) )
-ROM_END
-
-
-ROM_START( jak_spdm )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "jakksspidermangkr.bin", 0x000000, 0x200000, CRC(1b2ee700) SHA1(30ea69c489e1238b004f473f972b682e35573138) )
-ROM_END
-
-ROM_START( jak_pooh )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "jakkspoohgkr.bin", 0x000000, 0x200000, CRC(0d97df55) SHA1(f108621a83c7b2263dd1531d82311627c3a02002) )
-ROM_END
-
-
-ROM_START( jak_wof )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "jakkswheeloffortunegkr.bin", 0x000000, 0x200000, CRC(6a879620) SHA1(95478764a61741569041c2299528f6464651d593) )
-ROM_END
-
-ROM_START( jak_disn )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "disneygkr.bin", 0x000000, 0x100000, CRC(7a5ebcd7) SHA1(9add8c2a6e3f0409c8957a2ba2d054fd2c4c39c1) )
-ROM_END
-
-ROM_START( jak_disf )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "disneyfriendsgkr.bin", 0x000000, 0x200000, CRC(77bca50b) SHA1(6e0f4fd229ee11eac721b5dbe79cf9002d3dbd64) )
-ROM_END
-
-ROM_START( jak_disp )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "jakksdisneyprincessgkr.bin", 0x000000, 0x200000, CRC(e26003ce) SHA1(ee15243281df6f09b96185c34582d7091604c954) )
-ROM_END
-
-ROM_START( jak_mpac )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "jakksmspacmangkr.bin", 0x000000, 0x100000, CRC(cab40f77) SHA1(30731acc461150d96aafa7a0451cfb1a25264678) )
-ROM_END
-
-ROM_START( jak_sdoo )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "jakksscoobydoogkr.bin", 0x000000, 0x400000, CRC(61062ce5) SHA1(9d21767fd855385ef83e4209c429ecd4bf7e5384) )
-ROM_END
-
-ROM_START( jak_dbz )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "jakksdragonballzgkr.bin", 0x000000, 0x200000, CRC(d52c3b20) SHA1(fd5ce41c143cad9bca3372054f4ff98b52c33874) )
-ROM_END
-
-ROM_START( jak_sith )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "jakksstarwarsgkr.bin", 0x000000, 0x200000, CRC(932cde19) SHA1(b88b748c235e9eeeda574e4d5b4077ae9da6fbd0) )
-ROM_END
-
-
-ROM_START( lexizeus )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "lexibook1g900us.bin", 0x0000, 0x800000, CRC(c2370806) SHA1(cbb599c29c09b62b6a9951c724cd9fc496309cf9))
+ // Alternate dump, we need to decide which one is correct.
+ //ROM_LOAD16_WORD_SWAP( "walle.bin", 0x000000, 0x400000, CRC(6bc90b16) SHA1(184d72de059057aae7800da510fcf05ed1da9ec9))
ROM_END
ROM_START( zone40 )
- ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASE00 )
+ ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "zone40.bin", 0x0000, 0x4000000, CRC(4ba1444f) SHA1(de83046ab93421486668a247972ad6d3cda19440) )
ROM_END
ROM_START( zone60 )
- ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASE00 )
+ ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "zone60.bin", 0x0000, 0x4000000, CRC(4cb637d1) SHA1(1f97cbdb4299ac0fbafc2a3aa592066cb0727066))
ROM_END
ROM_START( wirels60 )
- ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASE00 )
+ ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "wirels60.bin", 0x0000, 0x4000000, CRC(b4df8b28) SHA1(00e3da542e4bc14baf4724ad436f66d4c0f65c84))
ROM_END
ROM_START( rad_skat )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "skateboarder.bin", 0x000000, 0x400000, CRC(08b9ab91) SHA1(6665edc4740804956136c68065890925a144626b) )
ROM_END
ROM_START( rad_skatp ) // rom was dumped from the NTSC version, but region comes from an io port, so ROM is probably the same
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "skateboarder.bin", 0x000000, 0x400000, CRC(08b9ab91) SHA1(6665edc4740804956136c68065890925a144626b) )
ROM_END
ROM_START( rad_sktv )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "skannerztv.bin", 0x000000, 0x200000, CRC(e92278e3) SHA1(eb6bee5e661128d83784960dfff50379c36bfaeb) )
/* The external scanner MCU is a Winbond from 2000: SA5641
@@ -2149,44 +750,11 @@ ROM_START( rad_sktv )
TODO: find details on MCU so that we know capacity etc. */
ROM_END
-ROM_START( rad_fb2 )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "football2.bin", 0x000000, 0x400000, CRC(96b4f0d2) SHA1(e91f2ac679fb0c026ffe216eb4ab58802f361a17) )
-ROM_END
-
ROM_START( rad_crik ) // only released in EU?
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "cricket.bin", 0x000000, 0x200000, CRC(6fa0aaa9) SHA1(210d2d4f542181f59127ce2f516d0408dc6de7a8) )
ROM_END
-
-ROM_START( mattelcs )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mattelclassicsports.bin", 0x000000, 0x100000, CRC(e633e7ad) SHA1(bf3e325a930cf645a7e32195939f3c79c6d35dac) )
-ROM_END
-
-ROM_START( dreamlif )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "dreamlife.bin", 0x000000, 0x800000, CRC(632e0237) SHA1(a8586e8a626d75cf7782f13cfd9f1b938af23d56) )
-ROM_END
-
-ROM_START( smartfp )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "smartfitpark.bin", 0x000000, 0x800000, CRC(ada84507) SHA1(a3a80bf71fae62ebcbf939166a51d29c24504428) )
-ROM_END
-
-
-
-ROM_START( icanguit )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- // no internal ROM, requires a cartridge
-ROM_END
-
-ROM_START( icanpian )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- // no internal ROM, requires a cartridge
-ROM_END
-
/*
Wireless Air 60
(info provided with dump)
@@ -2211,7 +779,7 @@ http://www.lcis.com.tw/paper_store/paper_store/GPL162004A-507A_162005A-707AV10_c
*/
ROM_START( wlsair60 )
- ROM_REGION( 0x8400000, "maincpu", ROMREGION_ERASE00 )
+ ROM_REGION( 0x8400000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "wlsair60.nand", 0x0000, 0x8400000, CRC(eec23b97) SHA1(1bb88290cf54579a5bb51c08a02d793cd4d79f7a) )
ROM_END
@@ -2292,67 +860,10 @@ which is also found in the Wireless Air 60 ROM.
*/
ROM_START( wrlshunt )
- ROM_REGION( 0x8000000, "maincpu", ROMREGION_ERASE00 )
+ ROM_REGION( 0x8000000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "wireless.bin", 0x0000, 0x8000000, CRC(a6ecc20e) SHA1(3645f23ba2bb218e92d4560a8ae29dddbaabf796) )
ROM_END
-
-void spg2xx_game_state::init_crc()
-{
- // several games have a byte sum checksum listed at the start of ROM, this little helper function logs what it should match.
- const int length = memregion("maincpu")->bytes();
- const uint8_t* rom = memregion("maincpu")->base();
-
- uint32_t checksum = 0x00000000;
- // the first 0x10 bytes are where the "chksum:xxxxxxxx " string is listed, so skip over them
- for (int i = 0x10; i < length; i++)
- {
- checksum += rom[i];
- }
-
- logerror("Calculated Byte Sum of bytes from 0x10 to 0x%08x is %08x)\n", length - 1, checksum);
-}
-
-void spg2xx_game_state::init_zeus()
-{
- uint16_t *ROM = (uint16_t*)memregion("maincpu")->base();
- int size = memregion("maincpu")->bytes();
-
- for (int i = 0x8000 / 2; i < size / 2; i++)
- {
- // global 16-bit xor
- ROM[i] = ROM[i] ^ 0x8a1d;
-
- // 4 single bit conditional xors
- if (ROM[i] & 0x0020)
- ROM[i] ^= 0x0100;
-
- if (ROM[i] & 0x0040)
- ROM[i] ^= 0x1000;
-
- if (ROM[i] & 0x4000)
- ROM[i] ^= 0x0001;
-
- if (ROM[i] & 0x0080)
- ROM[i] ^= 0x0004;
-
- // global 16-bit bitswap
- ROM[i] = bitswap<16>(ROM[i], 7, 12, 9, 14, 4, 6, 0, 10, 15, 1, 3, 2, 5, 13, 8, 11);
- }
-}
-
-void spg2xx_game_state::init_zone40()
-{
- uint16_t *ROM = (uint16_t*)memregion("maincpu")->base();
- int size = memregion("maincpu")->bytes();
-
- for (int i = 0; i < size/2; i++)
- {
- ROM[i] = ROM[i] ^ 0xbb88;
- }
- //there is also bitswapping as above, and some kind of address scramble as the vectors are not exactly where expected
-}
-
// year, name, parent, compat, machine, input, class, init, company, fullname, flags
// Jungle Soft TV games
@@ -2361,69 +872,18 @@ CONS( 2010, zone60, 0, 0, wireless60, wirels60, spg2xx_game_state, empty_init,
CONS( 2010, wirels60, 0, 0, wireless60, wirels60, spg2xx_game_state, empty_init, "Jungle Soft / Kids Station Toys Inc", "Wireless 60", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
// JAKKS Pacific Inc TV games
-CONS( 2004, jak_batm, 0, 0, jakks, batman, spg2xx_game_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "The Batman (JAKKS Pacific TV Game)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-CONS( 2008, jak_wall, 0, 0, walle, walle, spg2xx_game_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "Wall-E (JAKKS Pacific TV Game)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-
-// 'Game-Key Ready' JAKKS games (these can also take per-game specific expansion cartridges, although not all games had them released)
-// Some of these were available in versions without Game-Key ports, it is unconfirmed if code was the same unless otherwise stated
-// For units released AFTER the GameKey promotion was cancelled it appears the code is the same as the PCB inside is the same, just the external port closed off, earlier units might be different hardware in some cases.
-// units released BEFORE the GameKey support were sometimes different hardware, eg. the Spider-Man and Disney units were SPG110 based
-CONS( 2005, jak_wwe, 0, 0, jakks_gkr_1m_i2c, jak_gkr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "WWE (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // WW (no game-keys released)
-CONS( 2005, jak_fan4, 0, 0, jakks_gkr_1m_i2c, jak_gkr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Digital Eclipse", "Fantastic Four (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // F4 (no game-keys released)
-CONS( 2005, jak_just, 0, 0, jakks_gkr_1m_i2c, jak_gkr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Taniko", "Justice League (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // DC (no game-keys released)
-CONS( 2005, jak_dora, 0, 0, jakks_gkr_nk, jak_gkr, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Handheld Games", "Dora the Explorer - Nursery Rhyme Adventure (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses NK keys (same as Nicktoons & Spongebob) (3 released) - The upper part of this one is pink/purple.
-CONS( 2005, jak_dorr, 0, 0, jakks_gkr_nk_i2c, jak_gkr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Handheld Games", "Dora the Explorer - Race to Play Park (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses NK keys (same as Nicktoons & Spongebob) (3 released) - The upper part of this one is blue
-CONS( 2004, jak_nick, 0, 0, jakks_gkr_nk_i2c, jak_gkr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Handheld Games", "Nicktoons (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses NK keys
-CONS( 2005, jak_sbfc, 0, 0, jakks_gkr_nk_i2c, jak_gkr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "SpongeBob SquarePants - The Fry Cook Games (JAKKS Pacific TV Game, Game-Key Ready) (AUG 18 2005 21:31:56)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses NK keys
-CONS( 2005, jak_sdoo, 0, 0, jakks_gkr_2m_i2c, jak_sdoo_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Jolliford Management", "Scooby-Doo! and the Mystery of the Castle (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // SD (no game-keys released) (was dumped from a later unit with GameKey port missing, but internal PCB still supported it, code likely the same)
-CONS( 2005, jak_disn, 0, 0, jakks_gkr_dy, jak_gkr, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "Disney (JAKKS Pacific TV Game, Game-Key Ready) (08 FEB 2005 A)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses DY keys (3 released)
-CONS( 2005, jak_disf, 0, 0, jakks_gkr_dy_i2c, jak_gkr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "Disney Friends (JAKKS Pacific TV Game, Game-Key Ready) (17 MAY 2005 A)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses DY keys (3 released)
-CONS( 2005, jak_disp, 0, 0, jakks_gkr_dp_i2c, jak_disp_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / 5000ft, Inc", "Disney Princess (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses DP keys (1 key released)
-// There seems to be a second game called 'Disney Princesses' with a 'board game' style front end as well as the minigames, also GKR, see https://www.youtube.com/watch?v=w9p5TI029bQ The one we have is https://www.youtube.com/watch?v=9ppPKVbpoMs the physical package seems identical.
-CONS( 2005, jak_sith, 0, 0, jakks_gkr_sw_i2c, jak_sith_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Griptonite Games", "Star Wars - Revenge of the Sith (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses SW keys (1 released)
-CONS( 2005, jak_dbz, 0, 0, jakks_gkr_1m_i2c, jak_gkr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Handheld Games", "Dragon Ball Z (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // DB (no game-keys released, 1 in development but cancelled)
-CONS( 2005, jak_mpac, 0, 0, jakks_gkr_nm_i2c, jak_nm_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Namco / HotGen Ltd", "Ms. Pac-Man 5-in-1 (Ms. Pac-Man, Pole Position, Galaga, Xevious, Mappy) (JAKKS Pacific TV Game, Game-Key Ready) (07 FEB 2005 A SKU F)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses NM (3 keys available [Dig Dug, New Rally-X], [Rally-X, Pac-Man, Bosconian], [Pac-Man, Bosconian])
-CONS( 2005, jak_wof, 0, 0, jakks_gkr_wf_i2c, jak_wf_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "Wheel of Fortune (JAKKS Pacific TV Game, Game-Key Ready) (Jul 11 2005 ORIG)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses WF keys (no game-keys released) analog wheel not emulated
-// There is a 'Second Edition' version of Wheel of Fortune with a Gold case, GameKey port removed, and a '2' over the usual Game Key Ready logo, internals are different too, not Game-Key Ready
-CONS( 2004, jak_spdm, 0, 0, jakks_gkr_mv_i2c, jak_gkr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Digital Eclipse", "Spider-Man (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // MV (1 key available)
-CONS( 2005, jak_pooh, 0, 0, jakks_gkr_wp, jak_pooh, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Backbone Entertainment", "Winnie the Pooh - Piglet's Special Day (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // WP (no game-keys released)
-
-// no keys released for the following, some were in development but cancelled
-// Capcom 3-in-1 CC (no game-keys released)
-// Care Bears CB (no game-keys released)
-
-// Some versions of the Shrek - Over the Hedge unit show the GameKey logo on startup (others don't) there is no evidence to suggest it was ever released with a GameKey port tho, and the internal PCB has no place for one on the versions we've seen (which show the logo)
+CONS( 2004, batmantv, 0, 0, jakks, batman, spg2xx_game_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "The Batman", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+CONS( 2008, walle, 0, 0, walle, walle, spg2xx_game_state, empty_init, "JAKKS Pacific Inc", "Wall-E", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
// Radica TV games
-CONS( 2006, rad_skat, 0, 0, rad_skat, rad_skat, spg2xx_game_state, init_crc, "Radica", "Play TV Skateboarder (NTSC)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-CONS( 2006, rad_skatp, rad_skat, 0, rad_skatp,rad_skatp, spg2xx_game_state, init_crc, "Radica", "Connectv Skateboarder (PAL)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-CONS( 2006, rad_crik, 0, 0, rad_crik, rad_crik, spg2xx_game_state, init_crc, "Radica", "Connectv Cricket (PAL)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // Version 3.00 20/03/06 is listed in INTERNAL TEST
-CONS( 2007, rad_sktv, 0, 0, rad_sktv, rad_sktv, spg2xx_game_state, init_crc, "Radica", "Skannerz TV", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-CONS( 2007, rad_fb2, 0, 0, rad_skat, rad_fb2, spg2xx_game_state, init_crc, "Radica", "Play TV Football 2", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-
-// Mattel games
-CONS( 2005, mattelcs, 0, 0, rad_skat, mattelcs, spg2xx_game_state, empty_init, "Mattel", "Mattel Classic Sports", MACHINE_IMPERFECT_SOUND )
-
-// Hasbro games
-CONS( 2005, dreamlif, 0, 0, dreamlif, dreamlif, dreamlif_state, empty_init, "Hasbro", "Dream Life (Version 1.0, Feb 07 2005)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-
-// Fisher-Price games
-CONS( 2007, icanguit, 0, 0, icanguit, icanguit, icanguit_state, empty_init, "Fisher-Price", "I Can Play Guitar", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-CONS( 2006, icanpian, 0, 0, icanpian, icanpian, icanguit_state, empty_init, "Fisher-Price", "I Can Play Piano", MACHINE_IMPERFECT_SOUND ) // 2006 date from Manual
+CONS( 2006, rad_skat, 0, 0, rad_skat, rad_skat, spg2xx_game_state, empty_init, "Radica", "Play TV Skateboarder (NTSC)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+CONS( 2006, rad_skatp, rad_skat, 0, rad_skatp, rad_skatp, spg2xx_game_state, empty_init, "Radica", "Connectv Skateboarder (PAL)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+CONS( 2006, rad_crik, 0, 0, rad_crik, rad_crik, spg2xx_game_state, empty_init, "Radica", "Connectv Cricket (PAL)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // Version 3.00 20/03/06 is listed in INTERNAL TEST
+CONS( 2007, rad_sktv, 0, 0, rad_skat, rad_sktv, spg2xx_game_state, empty_init, "Radica", "Skannerz TV", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
// might not fit here. First 0x8000 bytes are blank (not too uncommon for these) then rest of rom looks like it's probably encrypted at least
-// could be later model VT based instead? even after decrypting (simple word xor) the vectors have a different format and are at a different location to the SunPlus titles
-CONS( 2009, zone40, 0, 0, non_spg_base, wirels60, spg2xx_game_state, init_zone40, "Jungle Soft / Ultimate Products (HK) Ltd", "Zone 40", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+CONS( 2009, zone40, 0, 0, non_spg_base, wirels60, spg2xx_game_state, empty_init, "Jungle Soft / Ultimate Products (HK) Ltd", "Zone 40", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
-// Similar, SPG260?, scrambled
-CONS( 200?, lexizeus, 0, 0, lexizeus, lexizeus, spg2xx_game_state, init_zeus, "Lexibook", "Zeus IG900 20-in-1 (US?)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
-
-
-// valid looking code, but extended periperhal area (twice the size?) makes use of unemulated opcode 0xfe00 ?
-CONS( 2011, wrlshunt, 0, 0, non_spg_base, wirels60, spg2xx_game_state, empty_init, "Hamy / Kids Station Toys Inc", "Wireless Hunting Video Game System", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
-// extended opcodes different internal map?
-CONS( 2009, smartfp, 0, 0, non_spg_base, wirels60, spg2xx_game_state, empty_init, "Fisher-Price", "Fun 2 Learn Smart Fit Park", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-// Fun 2 Learn 3-in-1 SMART SPORTS ?
-
-// NAND dumps w/ internal bootstrap. Almost certainly do not fit in this driver, as the SPG2xx can only address up to 4Mwords. These are 'GeneralPlus' instead?
+// NAND dumps w/ internal bootstrap. Almost certainly do not fit in this driver, as the SPG2xx can only address up to 4Mwords.
CONS( 2010, wlsair60, 0, 0, non_spg_base, wirels60, spg2xx_game_state, empty_init, "Jungle Soft / Kids Station Toys Inc", "Wireless Air 60", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+CONS( 2011, wrlshunt, 0, 0, non_spg_base, wirels60, spg2xx_game_state, empty_init, "Hamy / Kids Station Toys Inc", "Wireless Hunting Video Game System", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/vindictr.cpp b/src/mame/drivers/vindictr.cpp
index e533eb1011f..8c8ba0775cf 100644
--- a/src/mame/drivers/vindictr.cpp
+++ b/src/mame/drivers/vindictr.cpp
@@ -182,33 +182,33 @@ GFXDECODE_END
*
*************************************/
-void vindictr_state::vindictr(machine_config &config)
-{
+MACHINE_CONFIG_START(vindictr_state::vindictr)
+
/* basic machine hardware */
- M68010(config, m_maincpu, ATARI_CLOCK_14MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &vindictr_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68010, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
EEPROM_2804(config, "eeprom").lock_after_write(true);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_vindictr);
- PALETTE(config, m_palette).set_entries(2048*8);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_vindictr)
+ MCFG_PALETTE_ADD("palette", 2048*8)
- TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_COLS, 64,64).set_info_callback(FUNC(vindictr_state::get_playfield_tile_info));
- TILEMAP(config, m_alpha_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64,32, 0).set_info_callback(FUNC(vindictr_state::get_alpha_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 2, vindictr_state, get_playfield_tile_info, 8,8, SCAN_COLS, 64,64)
+ MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", "gfxdecode", 2, vindictr_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, vindictr_state::s_mob_config);
m_mob->set_gfxdecode(m_gfxdecode);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses a SYNGEN chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(vindictr_state::screen_update_vindictr));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(vindictr_state, screen_update_vindictr)
+ MCFG_SCREEN_PALETTE("palette")
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -220,7 +220,7 @@ void vindictr_state::vindictr(machine_config &config)
m_jsa->add_route(0, "lspeaker", 1.0);
m_jsa->add_route(1, "rspeaker", 1.0);
config.device_remove("jsa:tms");
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/vip.cpp b/src/mame/drivers/vip.cpp
index bd77b9031fb..909c6b0cdee 100644
--- a/src/mame/drivers/vip.cpp
+++ b/src/mame/drivers/vip.cpp
@@ -270,7 +270,7 @@ READ8_MEMBER(vip_state::read)
int cdef = !((offset >= 0xc00) && (offset < 0x1000));
int minh = 0;
- uint8_t data = m_exp->program_r(offset, cs, cdef, &minh);
+ uint8_t data = m_exp->program_r(space, offset, cs, cdef, &minh);
if (cs)
{
@@ -295,7 +295,7 @@ WRITE8_MEMBER(vip_state::write)
int cdef = !((offset >= 0xc00) && (offset < 0x1000));
int minh = 0;
- m_exp->program_w(offset, data, cdef, &minh);
+ m_exp->program_w(space, offset, data, cdef, &minh);
if (!cs && !minh)
{
@@ -310,7 +310,7 @@ WRITE8_MEMBER(vip_state::write)
READ8_MEMBER(vip_state::io_r)
{
- uint8_t data = m_exp->io_r(offset);
+ uint8_t data = m_exp->io_r(space, offset);
switch (offset)
{
@@ -339,7 +339,7 @@ READ8_MEMBER(vip_state::io_r)
WRITE8_MEMBER(vip_state::io_w)
{
- m_exp->io_w(offset, data);
+ m_exp->io_w(space, offset, data);
switch (offset)
{
@@ -695,7 +695,7 @@ QUICKLOAD_LOAD_MEMBER( vip_state, vip )
//**************************************************************************
//-------------------------------------------------
-// machine_config( vip )
+// MACHINE_CONFIG( vip )
//-------------------------------------------------
MACHINE_CONFIG_START(vip_state::vip)
@@ -728,24 +728,23 @@ MACHINE_CONFIG_START(vip_state::vip)
// sound hardware
SPEAKER(config, "mono").front_center();
- DISCRETE(config, m_beeper, vip_discrete);
- m_beeper->add_route(ALL_OUTPUTS, "mono", 0.80);
+ MCFG_DEVICE_ADD(DISCRETE_TAG, DISCRETE, vip_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
- VIP_BYTEIO_PORT(config, m_byteio, vip_byteio_cards, nullptr);
- m_byteio->inst_callback().set(FUNC(vip_state::byteio_inst_w));
- VIP_EXPANSION_SLOT(config, m_exp, 3.52128_MHz_XTAL / 2, vip_expansion_cards, nullptr);
- m_exp->int_wr_callback().set(FUNC(vip_state::exp_int_w));
- m_exp->dma_out_wr_callback().set(FUNC(vip_state::exp_dma_out_w));
- m_exp->dma_in_wr_callback().set(FUNC(vip_state::exp_dma_in_w));
+ MCFG_VIP_BYTEIO_PORT_ADD(VIP_BYTEIO_PORT_TAG, vip_byteio_cards, nullptr, WRITELINE(*this, vip_state, byteio_inst_w))
+ MCFG_VIP_EXPANSION_SLOT_ADD(VIP_EXPANSION_SLOT_TAG, 3.52128_MHz_XTAL / 2, vip_expansion_cards, nullptr)
+ MCFG_VIP_EXPANSION_SLOT_INT_CALLBACK(WRITELINE(*this, vip_state, exp_int_w))
+ MCFG_VIP_EXPANSION_SLOT_DMA_OUT_CALLBACK(WRITELINE(*this, vip_state, exp_dma_out_w))
+ MCFG_VIP_EXPANSION_SLOT_DMA_IN_CALLBACK(WRITELINE(*this, vip_state, exp_dma_in_w))
// devices
- MCFG_QUICKLOAD_ADD("quickload", vip_state, vip, "bin,c8,c8x")
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED);
- m_cassette->set_interface("vip_cass");
+ MCFG_QUICKLOAD_ADD("quickload", vip_state, vip, "bin,c8,c8x", 0)
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
+ MCFG_CASSETTE_INTERFACE("vip_cass")
// software lists
- SOFTWARE_LIST(config, "cass_list").set_original("vip");
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "vip")
// internal ram
RAM(config, m_ram).set_default_size("2K").set_extra_options("4K");
@@ -753,7 +752,7 @@ MACHINE_CONFIG_END
//-------------------------------------------------
-// machine_config( vp111 )
+// MACHINE_CONFIG( vp111 )
//-------------------------------------------------
void vip_state::vp111(machine_config &config)
diff --git a/src/mame/drivers/viper.cpp b/src/mame/drivers/viper.cpp
index 4b230f339d4..a7449ea872d 100644
--- a/src/mame/drivers/viper.cpp
+++ b/src/mame/drivers/viper.cpp
@@ -2425,7 +2425,7 @@ MACHINE_CONFIG_START(viper_state::viper)
PALETTE(config, "palette").set_entries(65536);
TIMER(config, "ds2430_timer2", 0);
- //TIMER(config, "ds2430_timer2").configure_generic(timer_device::expired_delegate());
+ //MCFG_TIMER_ADD_NONE("ds2430_timer2")
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
diff --git a/src/mame/drivers/vis.cpp b/src/mame/drivers/vis.cpp
index c0bb8750c58..e34e3824e69 100644
--- a/src/mame/drivers/vis.cpp
+++ b/src/mame/drivers/vis.cpp
@@ -57,7 +57,7 @@ void vis_audio_device::device_start()
set_isa_device();
m_isa->set_dma_channel(7, this, false);
m_isa->install_device(0x0220, 0x022f, read8_delegate(FUNC(vis_audio_device::pcm_r), this), write8_delegate(FUNC(vis_audio_device::pcm_w), this));
- m_isa->install_device(0x0388, 0x038b, read8sm_delegate(FUNC(ymf262_device::read), subdevice<ymf262_device>("ymf262")), write8sm_delegate(FUNC(ymf262_device::write), subdevice<ymf262_device>("ymf262")));
+ m_isa->install_device(0x0388, 0x038b, read8_delegate(FUNC(ymf262_device::read), subdevice<ymf262_device>("ymf262")), write8_delegate(FUNC(ymf262_device::write), subdevice<ymf262_device>("ymf262")));
m_pcm = timer_alloc();
m_pcm->adjust(attotime::never);
}
@@ -143,6 +143,7 @@ void vis_audio_device::device_add_mconfig(machine_config &config)
m_rdac->add_route(ALL_OUTPUTS, "rspeaker", 1.0); // sanyo lc7883k
voltage_regulator_device &vreg(VOLTAGE_REGULATOR(config, "vref"));
+ vreg.set_output(5.0);
vreg.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT);
vreg.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT);
vreg.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
diff --git a/src/mame/drivers/vixen.cpp b/src/mame/drivers/vixen.cpp
index 8ef4f63ca30..91ac5b72c39 100644
--- a/src/mame/drivers/vixen.cpp
+++ b/src/mame/drivers/vixen.cpp
@@ -65,6 +65,10 @@ Notes:
// INTERRUPTS
//**************************************************************************
+//-------------------------------------------------
+// update_interrupt -
+//-------------------------------------------------
+
void vixen_state::update_interrupt()
{
int state = (m_cmd_d1 && m_fdint) || m_vsync;// || (!m_enb_srq_int && !m_srq) || (!m_enb_atn_int && !m_atn) || (!m_enb_xmt_int && m_txrdy) || (!m_enb_rcv_int && m_rxrdy);
@@ -87,6 +91,10 @@ READ8_MEMBER( vixen_state::oprom_r )
return m_rom[offset];
}
+//-------------------------------------------------
+// status_r - status read
+//-------------------------------------------------
+
READ8_MEMBER( vixen_state::status_r )
{
/*
@@ -118,6 +126,11 @@ READ8_MEMBER( vixen_state::status_r )
return data;
}
+
+//-------------------------------------------------
+// cmd_w - command write
+//-------------------------------------------------
+
WRITE8_MEMBER( vixen_state::cmd_w )
{
/*
@@ -152,6 +165,11 @@ WRITE8_MEMBER( vixen_state::cmd_w )
update_interrupt();
}
+
+//-------------------------------------------------
+// ieee488_r - IEEE488 bus read
+//-------------------------------------------------
+
READ8_MEMBER( vixen_state::ieee488_r )
{
/*
@@ -237,6 +255,10 @@ READ8_MEMBER( vixen_state::port3_r )
// ADDRESS MAPS
//**************************************************************************
+//-------------------------------------------------
+// ADDRESS_MAP( vixen_mem )
+//-------------------------------------------------
+
// when M1 is inactive: read and write of data
void vixen_state::vixen_mem(address_map &map)
{
@@ -253,18 +275,23 @@ void vixen_state::bios_mem(address_map &map)
map(0xf000, 0xffff).r(FUNC(vixen_state::oprom_r));
}
+
+//-------------------------------------------------
+// ADDRESS_MAP( vixen_io )
+//-------------------------------------------------
+
void vixen_state::vixen_io(address_map &map)
{
map.unmap_value_high();
map.global_mask(0xff);
map(0x00, 0x03).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write));
map(0x04, 0x04).mirror(0x03).rw(FUNC(vixen_state::status_r), FUNC(vixen_state::cmd_w));
- map(0x08, 0x08).mirror(0x01).rw(P8155H_TAG, FUNC(i8155_device::data_r), FUNC(i8155_device::data_w));
+ map(0x08, 0x08).mirror(0x01).rw(P8155H_TAG, FUNC(i8155_device::read), FUNC(i8155_device::write));
map(0x0c, 0x0d).w(P8155H_TAG, FUNC(i8155_device::ale_w));
map(0x10, 0x10).mirror(0x07).r(m_ieee488, FUNC(ieee488_device::dio_r));
map(0x18, 0x18).mirror(0x07).r(FUNC(vixen_state::ieee488_r));
map(0x20, 0x21).mirror(0x04).w(m_io_i8155, FUNC(i8155_device::ale_w));
- map(0x28, 0x28).mirror(0x05).rw(m_io_i8155, FUNC(i8155_device::data_r), FUNC(i8155_device::data_w));
+ map(0x28, 0x28).mirror(0x05).rw(m_io_i8155, FUNC(i8155_device::read), FUNC(i8155_device::write));
map(0x30, 0x31).mirror(0x06).rw(m_usart, FUNC(i8251_device::read), FUNC(i8251_device::write));
map(0x38, 0x38).mirror(0x07).r(FUNC(vixen_state::port3_r));
// AM_RANGE(0xf0, 0xff) Hard Disk?
@@ -276,6 +303,10 @@ void vixen_state::vixen_io(address_map &map)
// INPUT PORTS
//**************************************************************************
+//-------------------------------------------------
+// INPUT_PORTS( vixen )
+//-------------------------------------------------
+
INPUT_PORTS_START( vixen )
PORT_START("KEY.0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ESC") PORT_CODE(KEYCODE_ESC) PORT_CHAR(0x1B)
@@ -364,6 +395,10 @@ INPUT_PORTS_END
// VIDEO
//**************************************************************************
+//-------------------------------------------------
+// TIMER_DEVICE_CALLBACK_MEMBER( vsync_tick )
+//-------------------------------------------------
+
TIMER_DEVICE_CALLBACK_MEMBER(vixen_state::vsync_tick)
{
if (m_cmd_d0)
@@ -373,6 +408,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(vixen_state::vsync_tick)
}
}
+
void vixen_state::video_start()
{
// register for state saving
@@ -381,6 +417,11 @@ void vixen_state::video_start()
save_item(NAME(m_vsync));
}
+
+//-------------------------------------------------
+// SCREEN_UPDATE( vixen )
+//-------------------------------------------------
+
uint32_t vixen_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
const pen_t *pen = m_palette->pens();
@@ -440,6 +481,10 @@ uint32_t vixen_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
// SOUND
//**************************************************************************
+//-------------------------------------------------
+// DISCRETE_SOUND( vixen )
+//-------------------------------------------------
+
static DISCRETE_SOUND_START( vixen_discrete )
DISCRETE_INPUT_LOGIC(NODE_01)
DISCRETE_SQUAREWAVE(NODE_02, NODE_01, (23.9616_MHz_XTAL / 15360).dvalue(), 100, 50, 0, 90)
@@ -606,7 +651,7 @@ WRITE_LINE_MEMBER( vixen_state::txrdy_w )
}
//-------------------------------------------------
-// IEEE488 interface
+// IEEE488_INTERFACE( ieee488_intf )
//-------------------------------------------------
WRITE_LINE_MEMBER( vixen_state::srq_w )
@@ -638,12 +683,21 @@ WRITE_LINE_MEMBER( vixen_state::fdc_intrq_w )
// MACHINE INITIALIZATION
//**************************************************************************
+//-------------------------------------------------
+// IRQ_CALLBACK_MEMBER( vixen_int_ack )
+//-------------------------------------------------
+
IRQ_CALLBACK_MEMBER(vixen_state::vixen_int_ack)
{
// D0 is pulled low
return 0xfe;
}
+
+//-------------------------------------------------
+// MACHINE_START( vixen )
+//-------------------------------------------------
+
void vixen_state::machine_start()
{
// configure memory banking
@@ -660,6 +714,7 @@ void vixen_state::machine_start()
save_item(NAME(m_fdint));
}
+
void vixen_state::machine_reset()
{
membank("bank3")->set_entry(1);
@@ -681,28 +736,31 @@ void vixen_state::machine_reset()
// MACHINE CONFIGURATION
//**************************************************************************
-void vixen_state::vixen(machine_config &config)
-{
+//-------------------------------------------------
+// MACHINE_CONFIG( vixen )
+//-------------------------------------------------
+
+MACHINE_CONFIG_START(vixen_state::vixen)
// basic machine hardware
- Z80(config, m_maincpu, 23.9616_MHz_XTAL / 6);
- m_maincpu->set_addrmap(AS_PROGRAM, &vixen_state::vixen_mem);
- m_maincpu->set_addrmap(AS_OPCODES, &vixen_state::bios_mem);
- m_maincpu->set_addrmap(AS_IO, &vixen_state::vixen_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(vixen_state::vixen_int_ack));
+ MCFG_DEVICE_ADD(m_maincpu, Z80, 23.9616_MHz_XTAL / 6)
+ MCFG_DEVICE_PROGRAM_MAP(vixen_mem)
+ MCFG_DEVICE_OPCODES_MAP(bios_mem)
+ MCFG_DEVICE_IO_MAP(vixen_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(vixen_state,vixen_int_ack)
// video hardware
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
- screen.set_color(rgb_t::amber());
- screen.set_screen_update(FUNC(vixen_state::screen_update));
- screen.set_raw(23.9616_MHz_XTAL / 2, 96*8, 0*8, 81*8, 27*10, 0*10, 26*10);
+ MCFG_SCREEN_ADD_MONOCHROME(SCREEN_TAG, RASTER, rgb_t::amber())
+ MCFG_SCREEN_UPDATE_DRIVER(vixen_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(23.9616_MHz_XTAL / 2, 96*8, 0*8, 81*8, 27*10, 0*10, 26*10)
- TIMER(config, "vsync").configure_scanline(FUNC(vixen_state::vsync_tick), SCREEN_TAG, 26*10, 27*10);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("vsync", vixen_state, vsync_tick, SCREEN_TAG, 26*10, 27*10)
PALETTE(config, m_palette, palette_device::MONOCHROME);
// sound hardware
SPEAKER(config, "mono").front_center();
- DISCRETE(config, DISCRETE_TAG, vixen_discrete).add_route(ALL_OUTPUTS, "mono", 0.20);
+ MCFG_DEVICE_ADD(DISCRETE_TAG, DISCRETE, vixen_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
// devices
i8155_device &i8155(I8155(config, P8155H_TAG, 23.9616_MHz_XTAL / 6));
@@ -729,18 +787,20 @@ void vixen_state::vixen(machine_config &config)
FD1797(config, m_fdc, 23.9616_MHz_XTAL / 24);
m_fdc->intrq_wr_callback().set(FUNC(vixen_state::fdc_intrq_w));
- FLOPPY_CONNECTOR(config, FDC1797_TAG":0", vixen_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, FDC1797_TAG":1", vixen_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
- IEEE488(config, m_ieee488);
- m_ieee488->srq_callback().set(FUNC(vixen_state::srq_w));
- m_ieee488->atn_callback().set(FUNC(vixen_state::atn_w));
+ MCFG_FLOPPY_DRIVE_ADD(FDC1797_TAG":0", vixen_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD(FDC1797_TAG":1", vixen_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_IEEE488_BUS_ADD()
+ MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(*this, vixen_state, srq_w))
+ MCFG_IEEE488_ATN_CALLBACK(WRITELINE(*this, vixen_state, atn_w))
/* software lists */
- SOFTWARE_LIST(config, "disk_list").set_original("vixen");
+ MCFG_SOFTWARE_LIST_ADD("disk_list", "vixen")
// internal ram
RAM(config, RAM_TAG).set_default_size("64K");
-}
+MACHINE_CONFIG_END
@@ -748,6 +808,10 @@ void vixen_state::vixen(machine_config &config)
// ROMS
//**************************************************************************
+//-------------------------------------------------
+// ROM( vixen )
+//-------------------------------------------------
+
ROM_START( vixen )
ROM_REGION( 0x1000, Z8400A_TAG, 0 )
ROM_LOAD( "osborne 4 mon rom v1.04 3p40082-03 a0a9.4c", 0x0000, 0x1000, CRC(5f1038ce) SHA1(e6809fac23650bbb4689e58edc768d917d80a2df) ) // OSBORNE 4 MON ROM / V1.04 3P40082-03 / A0A9 (c) OCC 1985
@@ -765,6 +829,11 @@ ROM_END
// DRIVER INITIALIZATION
//**************************************************************************
+//-------------------------------------------------
+// DRIVER_INIT( vixen )
+//-------------------------------------------------
+
+
void vixen_state::init_vixen()
{
m_program = &m_maincpu->space(AS_PROGRAM);
diff --git a/src/mame/drivers/vk100.cpp b/src/mame/drivers/vk100.cpp
index 5af83801dc8..2d307adb9fa 100644
--- a/src/mame/drivers/vk100.cpp
+++ b/src/mame/drivers/vk100.cpp
@@ -1031,17 +1031,16 @@ MC6845_UPDATE_ROW( vk100_state::crtc_update_row )
}
-void vk100_state::vk100(machine_config &config)
-{
+MACHINE_CONFIG_START(vk100_state::vk100)
/* basic machine hardware */
- I8085A(config, m_maincpu, XTAL(5'068'800));
- m_maincpu->set_addrmap(AS_PROGRAM, &vk100_state::vk100_mem);
- m_maincpu->set_addrmap(AS_IO, &vk100_state::vk100_io);
+ MCFG_DEVICE_ADD("maincpu", I8085A, XTAL(5'068'800))
+ MCFG_DEVICE_PROGRAM_MAP(vk100_mem)
+ MCFG_DEVICE_IO_MAP(vk100_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(45'619'200)/3, 882, 0, 720, 370, 0, 350 ); // fake screen timings for startup until 6845 sets real ones
- screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(45'619'200)/3, 882, 0, 720, 370, 0, 350 ) // fake screen timings for startup until 6845 sets real ones
+ MCFG_SCREEN_UPDATE_DEVICE( "crtc", mc6845_device, screen_update )
H46505(config, m_crtc, 45.6192_MHz_XTAL/3/12);
m_crtc->set_screen("screen");
@@ -1070,7 +1069,7 @@ void vk100_state::vk100(machine_config &config)
SPEAKER(config, "mono").front_center();
BEEP(config, m_speaker, 116).add_route(ALL_OUTPUTS, "mono", 0.25); // 116 hz (page 172 of TM), but duty cycle is wrong here!
-}
+MACHINE_CONFIG_END
/* ROM definition */
/* according to http://www.computer.museum.uq.edu.au/pdf/EK-VK100-TM-001%20VK100%20Technical%20Manual.pdf
diff --git a/src/mame/drivers/vlc.cpp b/src/mame/drivers/vlc.cpp
index 5fca550d1de..ef8934c87b0 100644
--- a/src/mame/drivers/vlc.cpp
+++ b/src/mame/drivers/vlc.cpp
@@ -1,6 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:Yves
-/* vlc.cpp
+/* vlc.c
Multi-games from VLC Nevada 1995
CGA monitor 15Khz 60hz
// CPU CLOCK use Crystal 16.000MHZ
@@ -49,7 +49,7 @@ Boot Section is locate in NVRAM. Interrupts Pointers are changed on the fly.
seem to check hardware WDT ,Power Failure , interrupt system,etc.. before game start.
INT7 seem to control POWER FAILURE ,WDT.
-INT7 initialization is needed to boot the game.
+INT7 initialisation is needed to boot the game.
******************************************************
******************************************************
@@ -570,11 +570,10 @@ MACHINE_START_MEMBER(nevada_state, nevada)
* Machine Driver *
*************************/
-void nevada_state::nevada(machine_config &config)
-{
+MACHINE_CONFIG_START(nevada_state::nevada)
// basic machine hardware
- M68000(config, m_maincpu, MASTER_CPU);
- m_maincpu->set_addrmap(AS_PROGRAM, &nevada_state::nevada_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, MASTER_CPU)
+ MCFG_DEVICE_PROGRAM_MAP(nevada_map)
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_msec(150)); /* 150ms Ds1232 TD to Ground */
@@ -583,13 +582,13 @@ void nevada_state::nevada(machine_config &config)
NVRAM(config, "nvram").set_custom_handler(FUNC(nevada_state::nvram_init));
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size((42+1)*8, (32+1)*8); /* From MC6845 init, registers 00 & 04 (programmed with value-1). */
- screen.set_visarea(0*8, 31*8-1, 0*8, 31*8-1); /* From MC6845 init, registers 01 & 06. */
- screen.set_screen_update(FUNC(nevada_state::screen_update_nevada));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE((42+1)*8, (32+1)*8) /* From MC6845 init, registers 00 & 04 (programmed with value-1). */
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 0*8, 31*8-1) /* From MC6845 init, registers 01 & 06. */
+ MCFG_SCREEN_UPDATE_DRIVER(nevada_state, screen_update_nevada)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_nevada);
PALETTE(config, "palette", FUNC(nevada_state::nevada_palette), 256);
@@ -604,25 +603,26 @@ void nevada_state::nevada(machine_config &config)
AY8912(config, "aysnd", SOUND_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.75);
- MC68681(config, m_duart[0], XTAL(3'686'400)); // UARTA = Modem 1200Baud
- m_duart[0]->irq_cb().set_inputline(m_maincpu, M68K_IRQ_4);
- m_duart[0]->inport_cb().set_ioport("DSW1");
+ MCFG_DEVICE_ADD("duart18", MC68681, XTAL(3'686'400)) // UARTA = Modem 1200Baud
+ MCFG_MC68681_IRQ_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
+ MCFG_MC68681_INPORT_CALLBACK(IOPORT("DSW1"))
- MC68681(config, m_duart[1], XTAL(3'686'400)); // UARTA = Printer
- m_duart[1]->irq_cb().set_inputline(m_maincpu, M68K_IRQ_3);
- m_duart[1]->inport_cb().set_ioport("DSW2");
+ MCFG_DEVICE_ADD("duart39", MC68681, XTAL(3'686'400)) // UARTA = Printer
+ MCFG_MC68681_IRQ_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_3))
+ MCFG_MC68681_INPORT_CALLBACK(IOPORT("DSW2"))
- MC68681(config, m_duart[2], XTAL(3'686'400)); // UARTA = Touch , UARTB = Bill Acceptor
- m_duart[2]->irq_cb().set_inputline(m_maincpu, M68K_IRQ_5);
- m_duart[2]->a_tx_cb().set(m_microtouch, FUNC(microtouch_device::rx));
- m_duart[2]->inport_cb().set_ioport("DSW3");
+ MCFG_DEVICE_ADD("duart40", MC68681, XTAL(3'686'400)) // UARTA = Touch , UARTB = Bill Acceptor
+ MCFG_MC68681_IRQ_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_5))
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE("microtouch", microtouch_device, rx))
+ MCFG_MC68681_INPORT_CALLBACK(IOPORT("DSW3"))
- MICROTOUCH(config, m_microtouch, 9600).stx().set(m_duart[1], FUNC(mc68681_device::rx_a_w));
+ MCFG_MICROTOUCH_ADD( "microtouch", 9600, WRITELINE("duart40", mc68681_device, rx_a_w) )
/* devices */
- MSM6242(config, m_rtc, XTAL(32'768));
- m_rtc->out_int_handler().set_inputline(m_maincpu, M68K_IRQ_1); // rtc interrupt on INT1
-}
+ MCFG_DEVICE_ADD("rtc", MSM6242, XTAL(32'768))
+ MCFG_MSM6242_OUT_INT_HANDLER(INPUTLINE("maincpu", M68K_IRQ_1)) // rtc interrupt on INT1
+
+MACHINE_CONFIG_END
/***************************************************************************/
ROM_START( nevada )
diff --git a/src/mame/drivers/volfied.cpp b/src/mame/drivers/volfied.cpp
index 6d104517897..47b4f066e11 100644
--- a/src/mame/drivers/volfied.cpp
+++ b/src/mame/drivers/volfied.cpp
@@ -239,15 +239,15 @@ TIMER_DEVICE_CALLBACK_MEMBER(volfied_state::cchip_irq_clear_cb)
}
-void volfied_state::volfied(machine_config &config)
-{
+MACHINE_CONFIG_START(volfied_state::volfied)
+
/* basic machine hardware */
- M68000(config, m_maincpu, CPU_CLOCK); /* 8MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &volfied_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(volfied_state::interrupt));
+ MCFG_DEVICE_ADD("maincpu", M68000, CPU_CLOCK) /* 8MHz */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", volfied_state, interrupt)
- Z80(config, m_audiocpu, SOUND_CPU_CLOCK); /* 4MHz sound CPU, required to run the game */
- m_audiocpu->set_addrmap(AS_PROGRAM, &volfied_state::z80_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CPU_CLOCK) /* 4MHz sound CPU, required to run the game */
+ MCFG_DEVICE_PROGRAM_MAP(z80_map)
TAITO_CCHIP(config, m_cchip, 20_MHz_XTAL/2); // 20MHz OSC next to C-Chip
m_cchip->in_pa_callback().set_ioport("F00007");
@@ -256,18 +256,18 @@ void volfied_state::volfied(machine_config &config)
m_cchip->in_ad_callback().set_ioport("F0000D");
m_cchip->out_pb_callback().set(FUNC(volfied_state::counters_w));
- config.m_minimum_quantum = attotime::from_hz(1200);
+ MCFG_QUANTUM_TIME(attotime::from_hz(1200))
- TIMER(config, m_cchip_irq_clear).configure_generic(FUNC(volfied_state::cchip_irq_clear_cb));
+ MCFG_TIMER_DRIVER_ADD("cchip_irq_clear", volfied_state, cchip_irq_clear_cb)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(320, 256);
- m_screen->set_visarea(0, 319, 8, 247);
- m_screen->set_screen_update(FUNC(volfied_state::screen_update));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(320, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 319, 8, 247)
+ MCFG_SCREEN_UPDATE_DRIVER(volfied_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, "gfxdecode", "palette", gfx_volfied);
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 8192);
@@ -291,7 +291,7 @@ void volfied_state::volfied(machine_config &config)
pc060ha_device &ciu(PC060HA(config, "ciu", 0));
ciu.set_master_tag(m_maincpu);
ciu.set_slave_tag(m_audiocpu);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/votrpss.cpp b/src/mame/drivers/votrpss.cpp
index 309e2315836..756d567936b 100644
--- a/src/mame/drivers/votrpss.cpp
+++ b/src/mame/drivers/votrpss.cpp
@@ -224,7 +224,7 @@ WRITE8_MEMBER( votrpss_state::ppi_pa_w )
WRITE8_MEMBER( votrpss_state::ppi_pb_w )
{
m_portb = data;
- m_terminal->write(data&0x7f);
+ m_terminal->write(space, offset, data&0x7f);
}
WRITE8_MEMBER( votrpss_state::ppi_pc_w )
@@ -242,13 +242,12 @@ void votrpss_state::kbd_put(u8 data)
Machine Drivers
******************************************************************************/
-void votrpss_state::votrpss(machine_config &config)
-{
+MACHINE_CONFIG_START(votrpss_state::votrpss)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(8'000'000)/2); /* 4.000 MHz, verified */
- m_maincpu->set_addrmap(AS_PROGRAM, &votrpss_state::votrpss_mem);
- m_maincpu->set_addrmap(AS_IO, &votrpss_state::votrpss_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(votrpss_state::irq_ack));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(8'000'000)/2) /* 4.000 MHz, verified */
+ MCFG_DEVICE_PROGRAM_MAP(votrpss_mem)
+ MCFG_DEVICE_IO_MAP(votrpss_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(votrpss_state,irq_ack)
/* video hardware */
//config.set_default_layout(layout_votrpss);
@@ -259,7 +258,8 @@ void votrpss_state::votrpss(machine_config &config)
ay.port_b_read_callback().set_ioport("DSW1");
ay.port_a_write_callback().set("votrax", FUNC(votrax_sc01_device::write));
ay.add_route(ALL_OUTPUTS, "mono", 0.25);
- VOTRAX_SC01(config, "votrax", 720000).add_route(ALL_OUTPUTS, "mono", 1.00); /* 720 kHz? needs verify */
+ MCFG_DEVICE_ADD("votrax", VOTRAX_SC01, 720000) /* 720 kHz? needs verify */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* Devices */
GENERIC_TERMINAL(config, m_terminal, 0);
@@ -291,8 +291,8 @@ void votrpss_state::votrpss(machine_config &config)
m_ppi->out_pb_callback().set(FUNC(votrpss_state::ppi_pb_w));
m_ppi->out_pc_callback().set(FUNC(votrpss_state::ppi_pc_w));
- TIMER(config, "irq_timer").configure_periodic(FUNC(votrpss_state::irq_timer), attotime::from_msec(10));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", votrpss_state, irq_timer, attotime::from_msec(10))
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/voyager.cpp b/src/mame/drivers/voyager.cpp
index b441bdbcd0c..7b3ceb1a561 100644
--- a/src/mame/drivers/voyager.cpp
+++ b/src/mame/drivers/voyager.cpp
@@ -503,10 +503,10 @@ void voyager_state::machine_reset()
}
MACHINE_CONFIG_START(voyager_state::voyager)
- PENTIUM3(config, m_maincpu, 133000000); // actually AMD Duron CPU of unknown clock
- m_maincpu->set_addrmap(AS_PROGRAM, &voyager_state::voyager_map);
- m_maincpu->set_addrmap(AS_IO, &voyager_state::voyager_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", PENTIUM3, 133000000) // actually AMD Duron CPU of unknown clock
+ MCFG_DEVICE_PROGRAM_MAP(voyager_map)
+ MCFG_DEVICE_IO_MAP(voyager_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
pcat_common(config);
diff --git a/src/mame/drivers/vpoker.cpp b/src/mame/drivers/vpoker.cpp
index eafe391270f..5f5e6cc83ec 100644
--- a/src/mame/drivers/vpoker.cpp
+++ b/src/mame/drivers/vpoker.cpp
@@ -634,24 +634,24 @@ WRITE_LINE_MEMBER(vpoker_state::ptm_irq)
m_maincpu->set_input_line(M6809_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
}
-void vpoker_state::vpoker(machine_config &config)
-{
+MACHINE_CONFIG_START(vpoker_state::vpoker)
+
/* basic machine hardware */
- MC6809(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &vpoker_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(vpoker_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(4'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", vpoker_state, irq0_line_hold) //irq0 valid too
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
- screen.set_size(512, 256);
- screen.set_visarea(0*8, 480-1, 0*8, 240-1);
-// screen.set_visarea(0*8, 512-1, 0*8, 256-1);
- screen.set_screen_update(FUNC(vpoker_state::screen_update_vpoker));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 480-1, 0*8, 240-1)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(vpoker_state, screen_update_vpoker)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_vpoker);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_vpoker)
PALETTE(config, m_palette, palette_device::GBR_3BIT);
@@ -663,7 +663,7 @@ void vpoker_state::vpoker(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
// AY8910(config, "aysnd", 8000000/4 /* guess */).add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/vroulet.cpp b/src/mame/drivers/vroulet.cpp
index b9f4a448bfc..900de567c43 100644
--- a/src/mame/drivers/vroulet.cpp
+++ b/src/mame/drivers/vroulet.cpp
@@ -279,13 +279,12 @@ WRITE8_MEMBER(vroulet_state::ppi8255_c_w){}
/* Machine Driver */
-void vroulet_state::vroulet(machine_config &config)
-{
+MACHINE_CONFIG_START(vroulet_state::vroulet)
// basic machine hardware
- Z80(config, m_maincpu, 4000000); //???
- m_maincpu->set_addrmap(AS_PROGRAM, &vroulet_state::vroulet_map);
- m_maincpu->set_addrmap(AS_IO, &vroulet_state::vroulet_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(vroulet_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 4000000) //???
+ MCFG_DEVICE_PROGRAM_MAP(vroulet_map)
+ MCFG_DEVICE_IO_MAP(vroulet_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", vroulet_state, irq0_line_hold)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
@@ -300,16 +299,16 @@ void vroulet_state::vroulet(machine_config &config)
ppi1.out_pc_callback().set(FUNC(vroulet_state::ppi8255_c_w));
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(vroulet_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(vroulet_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_vroulet);
- PALETTE(config, m_palette).set_entries(128*4);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_vroulet)
+ MCFG_PALETTE_ADD("palette", 128*4)
// sound hardware
SPEAKER(config, "mono").front_center();
@@ -318,7 +317,8 @@ void vroulet_state::vroulet(machine_config &config)
aysnd.port_a_read_callback().set_ioport("DSWA");
aysnd.port_b_read_callback().set_ioport("DSWB");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.25);
-}
+
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/vsmile.cpp b/src/mame/drivers/vsmile.cpp
index d498fe82653..69da8f95d67 100644
--- a/src/mame/drivers/vsmile.cpp
+++ b/src/mame/drivers/vsmile.cpp
@@ -2,154 +2,259 @@
// copyright-holders:Ryan Holtz
/******************************************************************************
- V-Tech V.Smile console emulation
+ V-Tech V.Smile console emulat
+
+ Status:
+
+ Most games boot but lack controls
+
+ To-Do:
+
+ Proper UART support (SPG2xx) for controller
+
+ Similar Systems: ( from http://en.wkikpedia.org/wiki/V.Smile )
+
+ V.Smile by VTech, a system designed for children under the age of 10
+ V.Smile Pocket (2 versions)
+ V.Smile Cyber Pocket
+ V.Smile PC Pal
+ V-Motion Active Learning System
+ Leapster
+ V.Smile Baby Infant Development System
+ V.Flash
*******************************************************************************/
#include "emu.h"
-#include "includes/vsmile.h"
+#include "bus/generic/slot.h"
+#include "bus/generic/carts.h"
+#include "cpu/unsp/unsp.h"
+
+#include "machine/bankdev.h"
+#include "machine/spg2xx.h"
+
+#include "screen.h"
#include "softlist.h"
#include "speaker.h"
-/************************************
- *
- * Common
- *
- ************************************/
-
-void vsmile_base_state::machine_start()
+class vsmile_state : public driver_device
{
- const int bank = m_cart && m_cart->exists() ? 4 : 0;
-
- m_bankdev->set_bank(bank);
-}
-
-WRITE8_MEMBER(vsmile_base_state::chip_sel_w)
+public:
+ vsmile_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_screen(*this, "screen")
+ , m_spg(*this, "spg")
+ , m_cart(*this, "cartslot")
+ , m_bankdev(*this, "bank")
+ , m_system_region(*this, "maincpu")
+ , m_io_p1(*this, "P1")
+ , m_io_p2(*this, "P2")
+ , m_cart_region(nullptr)
+ , m_pad_timer(nullptr)
+ , m_pad_counter(0)
+ , m_portb_data(0)
+ , m_portc_data(0)
+ { }
+
+ void vsmile(machine_config &config);
+ void vsmilep(machine_config &config);
+
+private:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ static const device_timer_id TIMER_UART_TX = 0;
+ static const device_timer_id TIMER_PAD = 1;
+
+ void mem_map(address_map &map);
+ void banked_map(address_map &map);
+
+ DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart);
+
+ DECLARE_READ16_MEMBER(portb_r);
+ DECLARE_READ16_MEMBER(portc_r);
+ DECLARE_WRITE16_MEMBER(portb_w);
+ DECLARE_WRITE16_MEMBER(portc_w);
+
+ DECLARE_WRITE8_MEMBER(chip_sel_w);
+
+ DECLARE_WRITE8_MEMBER(uart_tx);
+
+ DECLARE_READ16_MEMBER(bank0_r);
+ DECLARE_READ16_MEMBER(bank1_r);
+ DECLARE_READ16_MEMBER(bank2_r);
+ DECLARE_READ16_MEMBER(bank3_r);
+
+ enum
+ {
+ VSMILE_PORTB_CS1 = 0x01,
+ VSMILE_PORTB_CS2 = 0x02,
+ VSMILE_PORTB_CART = 0x04,
+ VSMILE_PORTB_RESET = 0x08,
+ VSMILE_PORTB_FRONT24 = 0x10,
+ VSMILE_PORTB_OFF = 0x20,
+ VSMILE_PORTB_OFF_SW = 0x40,
+ VSMILE_PORTB_ON_SW = 0x80,
+
+ VSMILE_PORTC_VER = 0x0f,
+ VSMILE_PORTC_LOGO = 0x10,
+ VSMILE_PORTC_TEST = 0x20,
+ VSMILE_PORTC_AMP = 0x40,
+ VSMILE_PORTC_SYSRESET = 0x80
+ };
+
+ required_device<cpu_device> m_maincpu;
+ required_device<screen_device> m_screen;
+ required_device<spg2xx_device> m_spg;
+ required_device<generic_slot_device> m_cart;
+ required_device<address_map_bank_device> m_bankdev;
+ required_memory_region m_system_region;
+ required_ioport m_io_p1;
+ required_ioport m_io_p2;
+ memory_region *m_cart_region;
+
+ emu_timer *m_pad_timer;
+ uint8_t m_pad_counter;
+
+ uint16_t m_portb_data;
+ uint16_t m_portc_data;
+};
+
+void vsmile_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
- const uint16_t cart_offset = m_cart && m_cart->exists() ? 4 : 0;
- switch (data)
+ switch (id)
{
- case 0:
- m_bankdev->set_bank(cart_offset);
- break;
- case 1:
- m_bankdev->set_bank(1 + cart_offset);
- break;
- case 2:
- case 3:
- m_bankdev->set_bank(2 + cart_offset);
- break;
+ case TIMER_UART_TX:
+ break;
+ case TIMER_PAD:
+ m_pad_counter++;
+ if (m_pad_counter >= 100)
+ {
+ m_pad_counter = 0;
+ //m_spg->uart_rx(0x55);
+ }
+ break;
+ default:
+ logerror("Unknown timer ID: %d\n", id);
+ break;
}
- m_maincpu->invalidate_cache();
}
-READ16_MEMBER(vsmile_base_state::bank3_r)
+READ16_MEMBER(vsmile_state::bank0_r)
{
- return ((uint16_t*)m_system_region->base())[offset];
+ return ((uint16_t*)m_cart_region->base())[offset];
}
-void vsmile_state::machine_start()
+READ16_MEMBER(vsmile_state::bank1_r)
{
- vsmile_base_state::machine_start();
-
- save_item(NAME(m_ctrl_rts));
- save_item(NAME(m_ctrl_select));
+ return ((uint16_t*)m_cart_region->base())[offset + 0x100000];
}
-void vsmile_state::machine_reset()
+READ16_MEMBER(vsmile_state::bank2_r)
{
- std::fill(std::begin(m_ctrl_rts), std::end(m_ctrl_rts), false);
- std::fill(std::begin(m_ctrl_select), std::end(m_ctrl_select), false);
+ return ((uint16_t*)m_cart_region->base())[offset + 0x200000];
}
-WRITE8_MEMBER(vsmile_state::ctrl_tx_w)
+READ16_MEMBER(vsmile_state::bank3_r)
{
- //printf("Ctrl Tx: %02x\n", data);
- m_spg->uart_rx(data);
+ return ((uint16_t*)m_system_region->base())[offset];
}
-template <int Which> WRITE_LINE_MEMBER(vsmile_state::ctrl_rts_w)
+READ16_MEMBER(vsmile_state::portb_r)
{
- //printf("Ctrl%d RTS: %d\n", Which, state);
- m_ctrl_rts[Which] = state;
- m_spg->extint_w(Which, state);
+ //const uint8_t inputs = m_io_p2->read();
+ //const uint16_t input_bits = BIT(inputs, 0) ? VSMILE_PORTB_ON_SW : 0;
+ //const uint16_t data = VSMILE_PORTB_ON_SW | VSMILE_PORTB_OFF_SW | (m_cart && m_cart->exists() ? VSMILE_PORTB_CART : 0);
+ //logerror("V.Smile Port B read %04x, mask %04x\n", data, mem_mask);
+ //printf("V.Smile Port B read %04x, mask %04x\n", data, mem_mask);
+ return m_portb_data;// | data;
}
-WRITE8_MEMBER(vsmile_state::uart_rx)
+READ16_MEMBER(vsmile_state::portc_r)
{
- //printf("Ctrl Rx: %02x\n", data);
- m_ctrl[0]->data_w(data);
- m_ctrl[1]->data_w(data);
+ uint16_t data = 0x0004;
+ if (m_portc_data & 0x0100)
+ data |= 0x0400;
+ if (m_portc_data & 0x0200)
+ data |= 0x1000;
+ //logerror("V.Smile Port C read %04x, mask %04x\n", data, mem_mask);
+ return (m_portc_data & ~0x000f) | data;
}
-READ16_MEMBER(vsmile_state::portb_r)
+WRITE16_MEMBER(vsmile_state::portb_w)
{
- return VSMILE_PORTB_OFF_SW | VSMILE_PORTB_ON_SW | VSMILE_PORTB_RESET;
+ m_portb_data = data;//(m_portb_data &~ mem_mask) | (data & mem_mask);
+ //logerror("V.Smile Port B write %04x, mask %04x\n", m_portb_data, mem_mask);
+ //printf("V.Smile Port B write %04x, mask %04x\n", m_portb_data, mem_mask);
}
-WRITE16_MEMBER(vsmile_state::portb_w)
+WRITE16_MEMBER(vsmile_state::portc_w)
{
- if (BIT(mem_mask, 4))
- m_cart->set_cs2(BIT(data, 4));
+ m_portc_data = data;//(m_portc_data &~ mem_mask) | (data & mem_mask);
+ //logerror("V.Smile Port C write %04x, mask %04x\n", m_portc_data, mem_mask);
+ //printf("V.Smile Port C write %04x, mask %04x\n", m_portc_data, mem_mask);
+ //printf("%02x ", data >> 8);
}
-READ16_MEMBER(vsmile_state::portc_r)
+WRITE8_MEMBER(vsmile_state::uart_tx)
{
- uint16_t data = m_dsw_region->read();
- data |= m_ctrl_rts[0] ? 0 : 0x0400;
- data |= m_ctrl_rts[1] ? 0 : 0x1000;
- data |= 0x0020;
- data |= (m_ctrl_rts[0] && m_ctrl_rts[1]) ? 0x0000 : 0x2000;
- //data = machine().rand() & 0xffff;
- return data;
+ logerror("UART Tx: %02x\n", data);
}
-WRITE16_MEMBER(vsmile_state::portc_w)
+WRITE8_MEMBER(vsmile_state::chip_sel_w)
{
- if (BIT(mem_mask, 8))
+ const uint16_t cart_offset = m_cart && m_cart->exists() ? 4 : 0;
+ switch (data)
{
- //printf("Ctrl0 SEL: %d\n", BIT(data, 8));
- m_ctrl_select[0] = BIT(data, 8);
- m_ctrl[0]->select_w(m_ctrl_select[0]);
+ case 0:
+ m_bankdev->set_bank(cart_offset);
+ break;
+ case 1:
+ m_bankdev->set_bank(1 + cart_offset);
+ break;
+ case 2:
+ case 3:
+ m_bankdev->set_bank(2 + cart_offset);
+ break;
}
- if (BIT(mem_mask, 9))
+}
+
+void vsmile_state::machine_start()
+{
+ // if there's a cart, override the standard banking
+ if (m_cart && m_cart->exists())
{
- //printf("Ctrl1 SEL: %d\n", BIT(data, 9));
- m_ctrl_select[1] = BIT(data, 9);
- m_ctrl[1]->select_w(m_ctrl_select[1]);
+ std::string region_tag;
+ m_cart_region = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
}
-}
-/************************************
- *
- * V.Smile Motion-specific
- *
- ************************************/
+ m_bankdev->set_bank(m_cart && m_cart->exists() ? 4 : 0);
-WRITE16_MEMBER(vsmilem_state::porta_w)
-{
- //printf("Port A write: %04x & %04x\n", data, mem_mask);
+ m_pad_timer = timer_alloc(TIMER_PAD);
+ m_pad_timer->adjust(attotime::never);
}
-READ16_MEMBER(vsmilem_state::porta_r)
+void vsmile_state::machine_reset()
{
- const uint16_t data = 0xc000;
- //printf("Port A read: %04x & %04x\n", data, mem_mask);
- return data;
-}
+ m_portb_data = 0;
+ m_portc_data = 0;
-/************************************
- *
- * Address Maps
- *
- ************************************/
+ m_pad_timer->adjust(attotime::from_hz(100), 0, attotime::from_hz(100));
+ m_pad_counter = 0;
+}
-void vsmile_base_state::mem_map(address_map &map)
+DEVICE_IMAGE_LOAD_MEMBER(vsmile_state, cart)
{
- map(0x000000, 0x3fffff).rw(m_bankdev, FUNC(address_map_bank_device::read16), FUNC(address_map_bank_device::write16));
- map(0x000000, 0x003fff).m(m_spg, FUNC(spg2xx_device::map));
+ uint32_t size = m_cart->common_get_size("rom");
+
+ m_cart->rom_alloc(size, GENERIC_ROM16_WIDTH, ENDIANNESS_LITTLE);
+ m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
+
+ return image_init_result::PASS;
}
void vsmile_state::banked_map(address_map &map)
@@ -169,56 +274,47 @@ void vsmile_state::banked_map(address_map &map)
map(0x0a00000, 0x0afffff).rom().region("maincpu", 0);
map(0x0b00000, 0x0bfffff).rom().region("maincpu", 0);
- map(0x1000000, 0x13fffff).rw(m_cart, FUNC(vsmile_cart_slot_device::bank0_r), FUNC(vsmile_cart_slot_device::bank0_w));
+ map(0x1000000, 0x13fffff).r(FUNC(vsmile_state::bank0_r));
- map(0x1400000, 0x15fffff).rw(m_cart, FUNC(vsmile_cart_slot_device::bank0_r), FUNC(vsmile_cart_slot_device::bank0_w));
- map(0x1600000, 0x17fffff).rw(m_cart, FUNC(vsmile_cart_slot_device::bank2_r), FUNC(vsmile_cart_slot_device::bank2_w));
+ map(0x1400000, 0x15fffff).r(FUNC(vsmile_state::bank0_r));
+ map(0x1600000, 0x17fffff).r(FUNC(vsmile_state::bank1_r));
- map(0x1800000, 0x18fffff).rw(m_cart, FUNC(vsmile_cart_slot_device::bank0_r), FUNC(vsmile_cart_slot_device::bank0_w));
- map(0x1900000, 0x19fffff).rw(m_cart, FUNC(vsmile_cart_slot_device::bank1_r), FUNC(vsmile_cart_slot_device::bank1_w));
- map(0x1a00000, 0x1afffff).rw(m_cart, FUNC(vsmile_cart_slot_device::bank2_r), FUNC(vsmile_cart_slot_device::bank2_w));
+ map(0x1800000, 0x18fffff).r(FUNC(vsmile_state::bank0_r));
+ map(0x1900000, 0x19fffff).r(FUNC(vsmile_state::bank1_r));
+ map(0x1a00000, 0x1afffff).nopr();
map(0x1b00000, 0x1bfffff).r(FUNC(vsmile_state::bank3_r));
}
-/************************************
- *
- * Inputs
- *
- ************************************/
+void vsmile_state::mem_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).r(m_bankdev, FUNC(address_map_bank_device::read16));
+ map(0x000000, 0x003fff).m(m_spg, FUNC(spg2xx_device::map));
+}
static INPUT_PORTS_START( vsmile )
- PORT_START("REGION")
- PORT_DIPNAME( 0x0f, 0x04, "BIOS Region" )
- PORT_DIPSETTING( 0x04, "UK/US" )
- PORT_DIPSETTING( 0x07, "China" )
- PORT_DIPSETTING( 0x08, "Mexico" )
- PORT_DIPSETTING( 0x0a, "Italy" )
- PORT_DIPSETTING( 0x0b, "Germany" )
- PORT_DIPSETTING( 0x0c, "Spain" )
- PORT_DIPSETTING( 0x0d, "France" )
- PORT_DIPNAME( 0x10, 0x10, "VTech Intro" )
- PORT_DIPSETTING( 0x00, "Off" )
- PORT_DIPSETTING( 0x10, "On" )
- PORT_BIT( 0xe0, 0x00, IPT_UNUSED )
+ PORT_START("P1")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_NAME("Joypad Up")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_NAME("Joypad Down")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_NAME("Joypad Left")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_NAME("Joypad Right")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("A Button")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("Menu")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("B Button")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("X Button")
+
+ PORT_START("P2")
+ PORT_DIPNAME( 0x0001, 0x0001, "POWER ON" )
+ PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0002, 0x0002, "POWER OFF" )
+ PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
INPUT_PORTS_END
-/************************************
- *
- * Machine Configs
- *
- ************************************/
-
-static void vsmile_cart(device_slot_interface &device)
-{
- device.option_add_internal("vsmile_rom", VSMILE_ROM_STD);
- device.option_add_internal("vsmile_nvram", VSMILE_ROM_NVRAM);
-}
-
-void vsmile_base_state::vsmile_base(machine_config &config)
+void vsmile_state::vsmile(machine_config &config)
{
UNSP(config, m_maincpu, XTAL(27'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &vsmile_base_state::mem_map);
- m_maincpu->set_force_no_drc(true);
+ m_maincpu->set_addrmap(AS_PROGRAM, &vsmile_state::mem_map);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
@@ -231,40 +327,27 @@ void vsmile_base_state::vsmile_base(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
SPG24X(config, m_spg, XTAL(27'000'000), m_maincpu, m_screen);
- m_spg->chip_select().set(FUNC(vsmile_base_state::chip_sel_w));
+ m_spg->portb_in().set(FUNC(vsmile_state::portb_r));
+ m_spg->portc_in().set(FUNC(vsmile_state::portc_r));
+ m_spg->portb_out().set(FUNC(vsmile_state::portb_w));
+ m_spg->portc_out().set(FUNC(vsmile_state::portc_w));
+ m_spg->chip_select().set(FUNC(vsmile_state::chip_sel_w));
+ m_spg->uart_tx().set(FUNC(vsmile_state::uart_tx));
m_spg->add_route(ALL_OUTPUTS, "lspeaker", 0.5);
m_spg->add_route(ALL_OUTPUTS, "rspeaker", 0.5);
ADDRESS_MAP_BANK(config, m_bankdev);
+ m_bankdev->set_addrmap(AS_PROGRAM, &vsmile_state::banked_map);
m_bankdev->set_endianness(ENDIANNESS_LITTLE);
m_bankdev->set_data_width(16);
m_bankdev->set_shift(-1);
m_bankdev->set_stride(0x400000);
- VSMILE_CART_SLOT(config, m_cart, vsmile_cart, nullptr);
-}
-
-void vsmile_state::vsmile(machine_config &config)
-{
- vsmile_base(config);
-
- m_bankdev->set_addrmap(AS_PROGRAM, &vsmile_state::banked_map);
-
- m_spg->portb_in().set(FUNC(vsmile_state::portb_r));
- m_spg->portc_in().set(FUNC(vsmile_state::portc_r));
- m_spg->portc_out().set(FUNC(vsmile_state::portc_w));
- m_spg->uart_tx().set(FUNC(vsmile_state::uart_rx));
-
- VSMILE_CTRL_PORT(config, m_ctrl[0], vsmile_controllers, "joy");
- m_ctrl[0]->rts_cb().set(FUNC(vsmile_state::ctrl_rts_w<0>));
- m_ctrl[0]->data_cb().set(FUNC(vsmile_state::ctrl_tx_w));
-
- VSMILE_CTRL_PORT(config, m_ctrl[1], vsmile_controllers, nullptr);
- m_ctrl[1]->rts_cb().set(FUNC(vsmile_state::ctrl_rts_w<1>));
- m_ctrl[1]->data_cb().set(FUNC(vsmile_state::ctrl_tx_w));
+ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "vsmile_cart");
+ m_cart->set_width(GENERIC_ROM16_WIDTH);
+ m_cart->set_device_load(device_image_load_delegate(&vsmile_state::device_image_load_cart, this));
SOFTWARE_LIST(config, "cart_list").set_original("vsmile_cart");
- SOFTWARE_LIST(config, "cart_list2").set_original("vsmilem_cart");
}
void vsmile_state::vsmilep(machine_config &config)
@@ -273,20 +356,6 @@ void vsmile_state::vsmilep(machine_config &config)
m_spg->set_pal(true);
}
-void vsmilem_state::vsmilem(machine_config &config)
-{
- vsmile(config);
- m_spg->porta_out().set(FUNC(vsmilem_state::porta_w));
- m_spg->porta_in().set(FUNC(vsmilem_state::porta_r));
-}
-
-/************************************
- *
- * ROM Loading
- *
- ************************************/
-
-// TODO: decide on a dump endian, these likely differ in endianess due to different dumping technqiues
ROM_START( vsmile )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "vsmilebios.bin", 0x000000, 0x200000, CRC(11f1b416) SHA1(11f77c4973d29c962567390e41879c86a759c93b) )
@@ -302,13 +371,13 @@ ROM_START( vsmilef )
ROM_LOAD16_WORD_SWAP( "sysrom_france", 0x000000, 0x200000, CRC(0cd0bdf5) SHA1(5c8d1eada1b6b545555b8d2b09325d7127681af8) )
ROM_END
-ROM_START( vsmilem )
+ROM_START( vsmileb )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "vsmilebios.bin", 0x000000, 0x200000, BAD_DUMP CRC(11f1b416) SHA1(11f77c4973d29c962567390e41879c86a759c93b) )
+ ROM_LOAD( "vbabybios.bin", 0x000000, 0x800000, CRC(ddc7f845) SHA1(2c17d0f54200070176d03d44a40c7923636e596a) )
ROM_END
-// year, name, parent, compat, machine, input, class, init, company, fullname, flags
-CONS( 2005, vsmile, 0, 0, vsmile, vsmile, vsmile_state, empty_init, "VTech", "V.Smile (US)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-CONS( 2005, vsmileg, vsmile, 0, vsmilep, vsmile, vsmile_state, empty_init, "VTech", "V.Smile (Germany)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-CONS( 2005, vsmilef, vsmile, 0, vsmilep, vsmile, vsmile_state, empty_init, "VTech", "V.Smile (France)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-CONS( 2008, vsmilem, vsmile, 0, vsmilem, vsmile, vsmilem_state, empty_init, "VTech", "V.Smile Motion (US)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+// year, name, parent, compat, machine, input, class, init, company, fullname, flags
+CONS( 2005, vsmile, 0, 0, vsmile, vsmile, vsmile_state, empty_init, "VTech", "V.Smile (US)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
+CONS( 2005, vsmileg, vsmile, 0, vsmilep, vsmile, vsmile_state, empty_init, "VTech", "V.Smile (Germany)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
+CONS( 2005, vsmilef, vsmile, 0, vsmilep, vsmile, vsmile_state, empty_init, "VTech", "V.Smile (France)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
+CONS( 2005, vsmileb, 0, 0, vsmile, vsmile, vsmile_state, empty_init, "VTech", "V.Smile Baby (US)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/vsmileb.cpp b/src/mame/drivers/vsmileb.cpp
deleted file mode 100644
index 782c88f3054..00000000000
--- a/src/mame/drivers/vsmileb.cpp
+++ /dev/null
@@ -1,164 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Ryan Holtz
-/******************************************************************************
-
- V-Tech V.Smile Baby console emulation
-
-*******************************************************************************/
-
-#include "emu.h"
-
-#include "includes/vsmile.h"
-
-#include "softlist.h"
-#include "speaker.h"
-
-
-/************************************
- *
- * V.Smile Baby
- *
- ************************************/
-
-void vsmileb_state::machine_start()
-{
- vsmile_base_state::machine_start();
-
- save_item(NAME(m_mode));
-}
-
-void vsmileb_state::machine_reset()
-{
- m_mode = 0x0400;
-}
-
-READ16_MEMBER(vsmileb_state::porta_r)
-{
- return 0x0302 | (m_io_logo->read() ? 0x0080 : 0x0000);
-}
-
-READ16_MEMBER(vsmileb_state::portb_r)
-{
- return 0x0080;
-}
-
-INPUT_CHANGED_MEMBER(vsmileb_state::pad_button_changed)
-{
- uint16_t value = m_mode;
- if (newval == 0)
- {
- value |= 0x0080;
- }
- else
- {
- value |= (uint16_t)(uintptr_t)param;
- }
- m_spg->uart_rx((uint8_t)(value >> 8));
- m_spg->uart_rx((uint8_t)value);
-}
-
-template <uint16_t V> INPUT_CHANGED_MEMBER(vsmileb_state::sw_mode)
-{
- if (!newval && oldval)
- {
- m_mode = V;
- const uint16_t value = m_mode | 0x0080;
- m_spg->uart_rx((uint8_t)(value >> 8));
- m_spg->uart_rx((uint8_t)value);
- }
-}
-
-void vsmileb_state::banked_map(address_map &map)
-{
- map(0x0000000, 0x03fffff).rom().region("maincpu", 0);
- map(0x0400000, 0x07fffff).rom().region("maincpu", 0);
- map(0x0800000, 0x0bfffff).rom().region("maincpu", 0);
-
- map(0x1000000, 0x13fffff).rw(m_cart, FUNC(vsmile_cart_slot_device::bank0_r), FUNC(vsmile_cart_slot_device::bank0_w));
-
- map(0x1400000, 0x15fffff).rw(m_cart, FUNC(vsmile_cart_slot_device::bank0_r), FUNC(vsmile_cart_slot_device::bank0_w));
- map(0x1600000, 0x17fffff).rw(m_cart, FUNC(vsmile_cart_slot_device::bank2_r), FUNC(vsmile_cart_slot_device::bank2_w));
-
- map(0x1800000, 0x18fffff).rw(m_cart, FUNC(vsmile_cart_slot_device::bank0_r), FUNC(vsmile_cart_slot_device::bank0_w));
- map(0x1900000, 0x19fffff).rw(m_cart, FUNC(vsmile_cart_slot_device::bank1_r), FUNC(vsmile_cart_slot_device::bank1_w));
- map(0x1a00000, 0x1afffff).rw(m_cart, FUNC(vsmile_cart_slot_device::bank2_r), FUNC(vsmile_cart_slot_device::bank2_w));
- map(0x1b00000, 0x1bfffff).r(FUNC(vsmileb_state::bank3_r));
-}
-
-/************************************
- *
- * Inputs
- *
- ************************************/
-
-static INPUT_PORTS_START( vsmileb )
- PORT_START("BUTTONS")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vsmileb_state, pad_button_changed, vsmileb_state::BUTTON_YELLOW) PORT_NAME("Yellow")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vsmileb_state, pad_button_changed, vsmileb_state::BUTTON_BLUE) PORT_NAME("Blue")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vsmileb_state, pad_button_changed, vsmileb_state::BUTTON_ORANGE) PORT_NAME("Orange")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vsmileb_state, pad_button_changed, vsmileb_state::BUTTON_GREEN) PORT_NAME("Green")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vsmileb_state, pad_button_changed, vsmileb_state::BUTTON_RED) PORT_NAME("Red")
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vsmileb_state, pad_button_changed, vsmileb_state::BUTTON_CLOUD) PORT_NAME("Cloud")
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vsmileb_state, pad_button_changed, vsmileb_state::BUTTON_BALL) PORT_NAME("Ball")
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vsmileb_state, pad_button_changed, vsmileb_state::BUTTON_EXIT) PORT_NAME("Exit")
-
- PORT_START("MODE")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Play Time") PORT_CHANGED_MEMBER(DEVICE_SELF, vsmileb_state, sw_mode<0x0400>, nullptr) // three-position function switch
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Watch & Learn") PORT_CHANGED_MEMBER(DEVICE_SELF, vsmileb_state, sw_mode<0x0800>, nullptr)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Learn & Explore") PORT_CHANGED_MEMBER(DEVICE_SELF, vsmileb_state, sw_mode<0x0c00>, nullptr)
-
- PORT_START("LOGO")
- PORT_DIPNAME( 0x10, 0x10, "VTech Intro" )
- PORT_DIPSETTING( 0x00, DEF_STR(Off) )
- PORT_DIPSETTING( 0x10, DEF_STR(On) )
- PORT_BIT( 0xef, 0x00, IPT_UNUSED )
-INPUT_PORTS_END
-
-/************************************
- *
- * Machine Configs
- *
- ************************************/
-
-void vsmileb_state::vsmileb(machine_config &config)
-{
- vsmile_base(config);
-
- m_bankdev->set_addrmap(AS_PROGRAM, &vsmileb_state::banked_map);
-
- SPG28X(config.replace(), m_spg, XTAL(27'000'000), m_maincpu, m_screen);
- m_spg->chip_select().set(FUNC(vsmileb_state::chip_sel_w));
- m_spg->add_route(ALL_OUTPUTS, "lspeaker", 0.5);
- m_spg->add_route(ALL_OUTPUTS, "rspeaker", 0.5);
- m_spg->porta_in().set(FUNC(vsmileb_state::porta_r));
- m_spg->portb_in().set(FUNC(vsmileb_state::portb_r));
-
- SOFTWARE_LIST(config, "cart_list").set_original("vsmileb_cart");
-}
-
-void vsmileb_state::vsmilebp(machine_config &config)
-{
- vsmileb(config);
- m_spg->set_pal(true);
-}
-
-/************************************
- *
- * ROM Loading
- *
- ************************************/
-
-// TODO: decide on a dump endian, these likely differ in endianess due to different dumping technqiues
-ROM_START( vsmileb )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "vbabybios.bin", 0x000000, 0x800000, CRC(ddc7f845) SHA1(2c17d0f54200070176d03d44a40c7923636e596a) )
-ROM_END
-
-ROM_START( vsmilebsw )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD16_WORD_SWAP( "vsmileswedenbios.bin", 0x000000, 0x800000, CRC(8b464b19) SHA1(cea304ba886c39e86906aad3dce17d5fff7cfcbe) )
-ROM_END
-
-// year, name, parent, compat, machine, input, class, init, company, fullname, flags
-CONS( 2005, vsmileb, 0, 0, vsmileb, vsmileb, vsmileb_state, empty_init, "VTech", "V.Smile Baby (US)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-CONS( 2005, vsmilebsw ,vsmileb, 0, vsmilebp,vsmileb, vsmileb_state, empty_init, "VTech", "V.Smile Baby (Sweden)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/vsmilepro.cpp b/src/mame/drivers/vsmilepro.cpp
index bf3d844dde7..60e2f628cfb 100644
--- a/src/mame/drivers/vsmilepro.cpp
+++ b/src/mame/drivers/vsmilepro.cpp
@@ -52,16 +52,16 @@ void vsmilpro_state::vsmilpro_map(address_map &map)
static INPUT_PORTS_START( vsmilpro )
INPUT_PORTS_END
-void vsmilpro_state::vsmilpro(machine_config &config)
-{
+MACHINE_CONFIG_START(vsmilpro_state::vsmilpro)
/* basic machine hardware */
- ARM9(config, m_maincpu, 150000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &vsmilpro_state::vsmilpro_map);
+ MCFG_DEVICE_ADD("maincpu", ARM9, 150000000)
+ MCFG_DEVICE_PROGRAM_MAP(vsmilpro_map)
- CDROM(config, "cdrom").set_interface("vsmile_vdisk");
+ MCFG_CDROM_ADD("cdrom")
+ MCFG_CDROM_INTERFACE("vsmile_vdisk")
- SOFTWARE_LIST(config, "cd_list").set_original("vsmile_cd");
-}
+ MCFG_SOFTWARE_LIST_ADD("cd_list","vsmile_cd")
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( vsmilpro )
diff --git a/src/mame/drivers/vsnes.cpp b/src/mame/drivers/vsnes.cpp
index 618e9df385a..d935b964e59 100644
--- a/src/mame/drivers/vsnes.cpp
+++ b/src/mame/drivers/vsnes.cpp
@@ -276,9 +276,9 @@ void vsnes_state::vsnes_bootleg_z80_map(address_map &map)
map(0x6001, 0x6001).r(FUNC(vsnes_state::vsnes_bootleg_z80_address_r)); // ^
- map(0x60FA, 0x60FA).w("sn1", FUNC(sn76489_device::write));
- map(0x60F9, 0x60F9).w("sn2", FUNC(sn76489_device::write));
- map(0x60FF, 0x60FF).w("sn3", FUNC(sn76489_device::write));
+ map(0x60FA, 0x60FA).w("sn1", FUNC(sn76489_device::command_w));
+ map(0x60F9, 0x60F9).w("sn2", FUNC(sn76489_device::command_w));
+ map(0x60FF, 0x60FF).w("sn3", FUNC(sn76489_device::command_w));
}
diff --git a/src/mame/drivers/vt100.cpp b/src/mame/drivers/vt100.cpp
index 3d3549a77db..11ee97e72ff 100644
--- a/src/mame/drivers/vt100.cpp
+++ b/src/mame/drivers/vt100.cpp
@@ -89,19 +89,18 @@ private:
required_device<rst_pos_buffer_device> m_rstbuf;
required_device<rs232_port_device> m_rs232;
optional_device<ins8250_device> m_printer_uart;
- required_shared_ptr<u8> m_p_ram;
-
- u8 flags_r();
- u8 modem_r();
- void nvr_latch_w(u8 data);
- u8 printer_r(offs_t offset);
- void printer_w(offs_t offset, u8 data);
- u8 video_ram_r(offs_t offset);
- void uart_clock_w(u8 data);
-
+ DECLARE_READ8_MEMBER(flags_r);
+ DECLARE_WRITE8_MEMBER(baud_rate_w);
+ DECLARE_READ8_MEMBER(modem_r);
+ DECLARE_WRITE8_MEMBER(nvr_latch_w);
+ DECLARE_READ8_MEMBER(printer_r);
+ DECLARE_WRITE8_MEMBER(printer_w);
+ DECLARE_READ8_MEMBER(video_ram_r);
+ DECLARE_WRITE8_MEMBER(uart_clock_w);
+ required_shared_ptr<uint8_t> m_p_ram;
virtual void machine_start() override;
virtual void machine_reset() override;
- u32 screen_update_vt100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update_vt100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
IRQ_CALLBACK_MEMBER(vt102_irq_callback);
void vt100_mem(address_map &map);
void vt100_io(address_map &map);
@@ -149,9 +148,9 @@ void vt100_state::vt180_io(address_map &map)
// 5 - NVR data H
// 6 - LBA 7 H
// 7 - Keyboard TBMT H
-u8 vt100_state::flags_r()
+READ8_MEMBER(vt100_state::flags_r)
{
- u8 ret = 0;
+ uint8_t ret = 0;
ret |= m_pusart->txrdy_r();
ret |= !m_nvr->data_r() << 5;
@@ -160,9 +159,9 @@ u8 vt100_state::flags_r()
return ret;
}
-u8 vt100_state::modem_r()
+READ8_MEMBER(vt100_state::modem_r)
{
- u8 ret = 0x0f;
+ uint8_t ret = 0x0f;
ret |= m_rs232->cts_r() << 7;
ret |= m_rs232->si_r() << 6;
@@ -172,7 +171,7 @@ u8 vt100_state::modem_r()
return ret;
}
-void vt100_state::nvr_latch_w(u8 data)
+WRITE8_MEMBER(vt100_state::nvr_latch_w)
{
// data inverted due to negative logic
m_nvr->c3_w(!BIT(data, 3));
@@ -212,14 +211,14 @@ void vt100_state::vt100_io(address_map &map)
// map (0xe2, 0xe2)
}
-u8 vt100_state::printer_r(offs_t offset)
+READ8_MEMBER(vt100_state::printer_r)
{
- return m_printer_uart->ins8250_r(machine().dummy_space(), offset >> 2);
+ return m_printer_uart->ins8250_r(space, offset >> 2);
}
-void vt100_state::printer_w(offs_t offset, u8 data)
+WRITE8_MEMBER(vt100_state::printer_w)
{
- m_printer_uart->ins8250_w(machine().dummy_space(), offset >> 2, data);
+ m_printer_uart->ins8250_w(space, offset >> 2, data);
}
void vt100_state::vt102_io(address_map &map)
@@ -233,7 +232,7 @@ void vt100_state::vt102_io(address_map &map)
static INPUT_PORTS_START( vt100 )
INPUT_PORTS_END
-u32 vt100_state::screen_update_vt100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t vt100_state::screen_update_vt100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_crtc->video_update(bitmap, cliprect);
return 0;
@@ -275,15 +274,15 @@ void vt100_state::machine_start()
void vt100_state::machine_reset()
{
- nvr_latch_w(0);
+ nvr_latch_w(machine().dummy_space(), 0, 0);
}
-u8 vt100_state::video_ram_r(offs_t offset)
+READ8_MEMBER(vt100_state::video_ram_r)
{
return m_p_ram[offset];
}
-void vt100_state::uart_clock_w(u8 data)
+WRITE8_MEMBER(vt100_state::uart_clock_w)
{
m_kbduart->write_tcp(BIT(data, 1));
m_kbduart->write_rcp(BIT(data, 1));
@@ -312,23 +311,22 @@ static GFXDECODE_START( gfx_vt100 )
GFXDECODE_ENTRY( "chargen", 0x0000, vt100_charlayout, 0, 1 )
GFXDECODE_END
-void vt100_state::vt100(machine_config &config)
-{
+MACHINE_CONFIG_START(vt100_state::vt100)
/* basic machine hardware */
- I8080(config, m_maincpu, XTAL(24'883'200) / 9);
- m_maincpu->set_addrmap(AS_PROGRAM, &vt100_state::vt100_mem);
- m_maincpu->set_addrmap(AS_IO, &vt100_state::vt100_io);
- m_maincpu->set_irq_acknowledge_callback("rstbuf", FUNC(rst_pos_buffer_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I8080, XTAL(24'883'200) / 9)
+ MCFG_DEVICE_PROGRAM_MAP(vt100_mem)
+ MCFG_DEVICE_IO_MAP(vt100_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("rstbuf", rst_pos_buffer_device, inta_cb)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_raw(XTAL(24'073'400)*2/3, 102*10, 0, 80*10, 262, 0, 25*10);
- //screen.set_raw(XTAL(24'073'400), 170*9, 0, 132*9, 262, 0, 25*10);
- screen.set_screen_update(FUNC(vt100_state::screen_update_vt100));
- screen.set_palette("vt100_video:palette");
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_RAW_PARAMS(XTAL(24'073'400)*2/3, 102*10, 0, 80*10, 262, 0, 25*10)
+ //MCFG_SCREEN_RAW_PARAMS(XTAL(24'073'400), 170*9, 0, 132*9, 262, 0, 25*10)
+ MCFG_SCREEN_UPDATE_DRIVER(vt100_state, screen_update_vt100)
+ MCFG_SCREEN_PALETTE("vt100_video:palette")
- GFXDECODE(config, "gfxdecode", "vt100_video:palette", gfx_vt100);
-// PALETTE(config, "palette", palette_device::MONOCHROME);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "vt100_video:palette", gfx_vt100)
+// MCFG_PALETTE_ADD_MONOCHROME("palette")
config.set_default_layout(layout_vt100);
@@ -363,7 +361,7 @@ void vt100_state::vt100(machine_config &config)
m_kbduart->set_auto_rdav(true);
RST_POS_BUFFER(config, m_rstbuf, 0).int_callback().set_inputline(m_maincpu, 0);
-}
+MACHINE_CONFIG_END
void vt100_state::stp_mem(address_map &map)
{
@@ -424,14 +422,13 @@ void vt100_state::vt180(machine_config &config)
z80cpu.set_io_map(&vt100_state::vt180_io);
}
-void vt100_state::vt101(machine_config &config)
-{
+MACHINE_CONFIG_START(vt100_state::vt101)
vt100(config);
- I8085A(config.replace(), m_maincpu, XTAL(24'073'400) / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &vt100_state::vt100_mem);
- m_maincpu->set_addrmap(AS_IO, &vt100_state::vt100_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(vt100_state::vt102_irq_callback));
+ MCFG_DEVICE_REPLACE(m_maincpu, I8085A, XTAL(24'073'400) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(vt100_mem)
+ MCFG_DEVICE_IO_MAP(vt100_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(vt100_state, vt102_irq_callback)
m_pusart->set_clock(XTAL(24'073'400) / 8);
m_pusart->txrdy_handler().set_inputline(m_maincpu, I8085_RST55_LINE); // 8085 pin 9, mislabeled RST 7.5 on schematics
@@ -441,13 +438,13 @@ void vt100_state::vt101(machine_config &config)
dbrg.ft_handler().set(m_pusart, FUNC(i8251_device::write_txc));
m_kbduart->write_tbmt_callback().set_inputline(m_maincpu, I8085_RST65_LINE);
-}
+MACHINE_CONFIG_END
-void vt100_state::vt102(machine_config &config)
-{
+MACHINE_CONFIG_START(vt100_state::vt102)
vt101(config);
- m_maincpu->set_addrmap(AS_IO, &vt100_state::vt102_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(vt102_io)
ins8250_device &printuart(INS8250(config, "printuart", XTAL(24'073'400) / 16));
printuart.out_tx_callback().set("printer", FUNC(rs232_port_device::write_txd));
@@ -456,7 +453,7 @@ void vt100_state::vt102(machine_config &config)
rs232_port_device &printer(RS232_PORT(config, "printer", default_rs232_devices, nullptr));
printer.rxd_handler().set("printuart", FUNC(ins8250_device::rx_w));
printer.dsr_handler().set("printuart", FUNC(ins8250_device::dsr_w));
-}
+MACHINE_CONFIG_END
/* VT1xx models:
* VT100 - 1978 base model. the 'later' ROM is from 1979 or 1980.
diff --git a/src/mame/drivers/vt220.cpp b/src/mame/drivers/vt220.cpp
index 107f832e41c..60a8766d649 100644
--- a/src/mame/drivers/vt220.cpp
+++ b/src/mame/drivers/vt220.cpp
@@ -134,12 +134,12 @@ void vt220_state::vt220(machine_config &config)
RAM(config, RAM_TAG).set_default_size("16K");
}
-void vt220_state::vt220a(machine_config &config)
-{
+MACHINE_CONFIG_START(vt220_state::vt220a)
vt220(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &vt220_state::vt220a_mem);
- m_maincpu->set_addrmap(AS_IO, &vt220_state::vt220a_io);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(vt220a_mem)
+ MCFG_DEVICE_IO_MAP(vt220a_io)
+MACHINE_CONFIG_END
/* ROM definitions */
ROM_START(vt220)
diff --git a/src/mame/drivers/vt240.cpp b/src/mame/drivers/vt240.cpp
index c2d9295884b..acb5a0b7141 100644
--- a/src/mame/drivers/vt240.cpp
+++ b/src/mame/drivers/vt240.cpp
@@ -23,6 +23,17 @@
#include "screen.h"
+#define VERBOSE_DBG 0 /* general debug messages */
+
+#define DBG_LOG(N,M,A) \
+ do { \
+ if(VERBOSE_DBG>=N) \
+ { \
+ logerror("%11.6f at %s: ",machine().time().as_double(),machine().describe_context()); \
+ logerror A; \
+ } \
+ } while (0)
+
class vt240_state : public driver_device
{
public:
@@ -95,8 +106,8 @@ private:
DECLARE_WRITE8_MEMBER(lu_w);
DECLARE_WRITE8_MEMBER(hbscrl_w);
DECLARE_WRITE8_MEMBER(lbscrl_w);
- uint16_t mem_r(offs_t offset, uint16_t mem_mask);
- void mem_w(offs_t offset, uint16_t data, uint16_t mem_mask);
+ DECLARE_READ16_MEMBER(mem_r);
+ DECLARE_WRITE16_MEMBER(mem_w);
void init_vt240();
virtual void machine_reset() override;
@@ -310,23 +321,23 @@ WRITE8_MEMBER(vt240_state::mem_map_sel_w)
m_mem_map_sel = data & 1;
}
-uint16_t vt240_state::mem_r(offs_t offset, uint16_t mem_mask)
+READ16_MEMBER(vt240_state::mem_r)
{
if(m_mem_map_sel)
{
m_bank->set_bank(m_mem_map[(offset >> 11) & 0xf]);
- return m_bank->read16(offset & 0x7ff, mem_mask);
+ return m_bank->read16(space, offset & 0x7ff, mem_mask);
}
else
return m_rom[offset];
}
-void vt240_state::mem_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+WRITE16_MEMBER(vt240_state::mem_w)
{
if(m_mem_map_sel)
{
m_bank->set_bank(m_mem_map[(offset >> 11) & 0xf]);
- m_bank->write16(offset & 0x7ff, data, mem_mask);
+ m_bank->write16(space, offset & 0x7ff, data, mem_mask);
}
}
@@ -667,7 +678,7 @@ void vt240_state::vt240(machine_config &config)
UPD7220(config, m_hgdc, XTAL(16'097'280) / 16); // actually /8?
m_hgdc->set_addrmap(0, &vt240_state::upd7220_map);
- m_hgdc->set_display_pixels(FUNC(vt240_state::hgdc_draw));
+ m_hgdc->set_display_pixels_callback(FUNC(vt240_state::hgdc_draw), this);
m_hgdc->vsync_wr_callback().set_inputline(m_i8085, I8085_RST75_LINE);
m_hgdc->blank_wr_callback().set_inputline(m_i8085, I8085_RST55_LINE);
m_hgdc->set_screen("screen");
diff --git a/src/mame/drivers/vt320.cpp b/src/mame/drivers/vt320.cpp
index 0a9443ae540..c4edac1793b 100644
--- a/src/mame/drivers/vt320.cpp
+++ b/src/mame/drivers/vt320.cpp
@@ -92,27 +92,27 @@ uint32_t vt320_state::screen_update_vt320(screen_device &screen, bitmap_ind16 &b
}
-void vt320_state::vt320(machine_config &config)
-{
+MACHINE_CONFIG_START(vt320_state::vt320)
/* basic machine hardware */
- I8051(config, m_maincpu, XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &vt320_state::vt320_mem);
- m_maincpu->set_addrmap(AS_IO, &vt320_state::vt320_io);
+ MCFG_DEVICE_ADD("maincpu", I8051, XTAL(16'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(vt320_mem)
+ MCFG_DEVICE_IO_MAP(vt320_io)
+
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_screen_update(FUNC(vt320_state::screen_update_vt320));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(vt320_state, screen_update_vt320)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
/* internal ram */
RAM(config, RAM_TAG).set_default_size("16K");
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( vt320 )
diff --git a/src/mame/drivers/vt520.cpp b/src/mame/drivers/vt520.cpp
index 5d0d853938e..ff8e6d3df22 100644
--- a/src/mame/drivers/vt520.cpp
+++ b/src/mame/drivers/vt520.cpp
@@ -85,40 +85,38 @@ uint32_t vt520_state::screen_update_vt520(screen_device &screen, bitmap_ind16 &b
return 0;
}
-void vt520_state::vt420(machine_config &config)
-{
+MACHINE_CONFIG_START(vt520_state::vt420)
/* basic machine hardware */
- I80C31(config, m_maincpu, XTAL(43'320'000) / 3); // SCN8031HCFN40 (divider not verified)
- m_maincpu->set_addrmap(AS_PROGRAM, &vt520_state::vt520_mem);
- m_maincpu->set_addrmap(AS_IO, &vt520_state::vt520_io);
+ MCFG_DEVICE_ADD("maincpu", I80C31, XTAL(43'320'000) / 3) // SCN8031HCFN40 (divider not verified)
+ MCFG_DEVICE_PROGRAM_MAP(vt520_mem)
+ MCFG_DEVICE_IO_MAP(vt520_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(802, 480);
- screen.set_visarea(0, 802-1, 0, 480-1);
- screen.set_screen_update(FUNC(vt520_state::screen_update_vt520));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(802, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 802-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(vt520_state, screen_update_vt520)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
-}
+MACHINE_CONFIG_END
-void vt520_state::vt520(machine_config &config)
-{
+MACHINE_CONFIG_START(vt520_state::vt520)
/* basic machine hardware */
- I80C32(config, m_maincpu, XTAL(20'000'000)); // Philips P80C32IBPN
- m_maincpu->set_addrmap(AS_PROGRAM, &vt520_state::vt520_mem);
- m_maincpu->set_addrmap(AS_IO, &vt520_state::vt520_io);
+ MCFG_DEVICE_ADD("maincpu", I80C32, XTAL(20'000'000)) // Philips P80C32IBPN
+ MCFG_DEVICE_PROGRAM_MAP(vt520_mem)
+ MCFG_DEVICE_IO_MAP(vt520_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(802, 480);
- screen.set_visarea(0, 802-1, 0, 480-1);
- screen.set_screen_update(FUNC(vt520_state::screen_update_vt520));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(802, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 802-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(vt520_state, screen_update_vt520)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", palette_device::MONOCHROME);
@@ -126,7 +124,7 @@ void vt520_state::vt520(machine_config &config)
// Which are DRAM 256K x 4bit
/* internal ram */
RAM(config, RAM_TAG).set_default_size("256K");
-}
+MACHINE_CONFIG_END
/**************************************************************************************************************
diff --git a/src/mame/drivers/vta2000.cpp b/src/mame/drivers/vta2000.cpp
index a243bbaa29d..1dc60d4816e 100644
--- a/src/mame/drivers/vta2000.cpp
+++ b/src/mame/drivers/vta2000.cpp
@@ -188,13 +188,12 @@ void vta2000_state::vta2000_palette(palette_device &palette) const
palette.set_pen_color(2, 0x00, 0xff, 0x00); // highlight
}
-void vta2000_state::vta2000(machine_config &config)
-{
+MACHINE_CONFIG_START(vta2000_state::vta2000)
/* basic machine hardware */
- I8080(config, m_maincpu, XTAL(4'000'000) / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &vta2000_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &vta2000_state::io_map);
- m_maincpu->set_irq_acknowledge_callback("pic", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD(m_maincpu, I8080, XTAL(4'000'000) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic", pic8259_device, inta_cb)
PIT8253(config, m_mainpit, 0);
m_mainpit->set_clk<0>(500'000);
@@ -214,20 +213,20 @@ void vta2000_state::vta2000(machine_config &config)
brgpit.out_handler<1>().set("usart", FUNC(i8251_device::write_txc)); // or vice versa?
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(80*8, 25*12);
- screen.set_visarea(0, 80*8-1, 0, 25*12-1);
- screen.set_screen_update(FUNC(vta2000_state::screen_update_vta2000));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(80*8, 25*12)
+ MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 25*12-1)
+ MCFG_SCREEN_UPDATE_DRIVER(vta2000_state, screen_update_vta2000)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(vta2000_state::vta2000_palette), 3);
- GFXDECODE(config, "gfxdecode", "palette", gfx_vta2000);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_vta2000)
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/vtech1.cpp b/src/mame/drivers/vtech1.cpp
index 05b3252abc6..24ffbd671da 100644
--- a/src/mame/drivers/vtech1.cpp
+++ b/src/mame/drivers/vtech1.cpp
@@ -83,6 +83,7 @@ public:
void laser110(machine_config &config);
void laser210(machine_config &config);
+ void init_vtech1();
void init_vtech1h();
private:
@@ -279,8 +280,18 @@ READ8_MEMBER( vtech1_state::mc6847_videoram_r )
DRIVER INIT
***************************************************************************/
+void vtech1_state::init_vtech1()
+{
+ // setup expansion slots
+ m_ioexp->set_io_space(&m_maincpu->space(AS_IO));
+ m_memexp->set_program_space(&m_maincpu->space(AS_PROGRAM));
+ m_memexp->set_io_space(&m_maincpu->space(AS_IO));
+}
+
void vtech1_state::init_vtech1h()
{
+ init_vtech1();
+
// the SHRG mod replaces the standard videoram chip with an 8k chip
m_videoram.allocate(0x2000);
@@ -434,16 +445,14 @@ void vtech1_state::laser110(machine_config &config)
// video hardware
MC6847_PAL(config, m_mc6847, XTAL(4'433'619));
- m_mc6847->set_screen("screen");
m_mc6847->fsync_wr_callback().set_inputline(m_maincpu, 0).invert();
m_mc6847->input_callback().set(FUNC(vtech1_state::mc6847_videoram_r));
m_mc6847->set_black_and_white(true);
m_mc6847->set_get_fixed_mode(mc6847_pal_device::MODE_GM1);
+ mc6847_base_device::add_pal_screen(config, "screen", "mc6847");
// GM2 = GND, GM0 = GND, INTEXT = GND
// other lines not connected
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
-
// sound hardware
SPEAKER(config, "mono").front_center();
WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
@@ -452,14 +461,11 @@ void vtech1_state::laser110(machine_config &config)
// peripheral and memory expansion slots
VTECH_IOEXP_SLOT(config, m_ioexp);
- m_ioexp->set_io_space(m_maincpu, AS_IO);
VTECH_MEMEXP_SLOT(config, m_memexp);
- m_memexp->set_program_space(m_maincpu, AS_PROGRAM);
- m_memexp->set_io_space(m_maincpu, AS_IO);
// snapshot
snapshot_image_device &snapshot(SNAPSHOT(config, "snapshot", 0));
- snapshot.set_handler(snapquick_load_delegate(&SNAPSHOT_LOAD_NAME(vtech1_state, vtech1), this), "vz", attotime::from_double(1.5));
+ snapshot.set_handler(snapquick_load_delegate(&SNAPSHOT_LOAD_NAME(vtech1_state, vtech1), this), "vz", 1.5);
CASSETTE(config, m_cassette);
m_cassette->set_formats(vtech1_cassette_formats);
@@ -473,7 +479,6 @@ void vtech1_state::laser200(machine_config &config)
{
laser110(config);
MC6847_PAL(config.replace(), m_mc6847, XTAL(4'433'619));
- m_mc6847->set_screen("screen");
m_mc6847->fsync_wr_callback().set_inputline(m_maincpu, 0).invert();
m_mc6847->input_callback().set(FUNC(vtech1_state::mc6847_videoram_r));
m_mc6847->set_get_fixed_mode(mc6847_pal_device::MODE_GM1);
@@ -501,7 +506,6 @@ void vtech1_state::laser310h(machine_config &config)
m_maincpu->set_addrmap(AS_IO, &vtech1_state::vtech1_shrg_io);
MC6847_PAL(config.replace(), m_mc6847, XTAL(4'433'619));
- m_mc6847->set_screen("screen");
m_mc6847->fsync_wr_callback().set_inputline(m_maincpu, 0).invert();
m_mc6847->input_callback().set(FUNC(vtech1_state::mc6847_videoram_r));
m_mc6847->set_get_fixed_mode(mc6847_pal_device::MODE_GM1);
@@ -566,13 +570,13 @@ ROM_END
***************************************************************************/
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP( 1983, laser110, 0, 0, laser110, vtech1, vtech1_state, empty_init, "Video Technology", "Laser 110", 0 )
-COMP( 1983, laser200, 0, 0, laser200, vtech1, vtech1_state, empty_init, "Video Technology", "Laser 200", 0 )
-COMP( 1983, vz200de, laser200, 0, laser200, vtech1, vtech1_state, empty_init, "Video Technology", "VZ-200 (Germany & Netherlands)", MACHINE_NOT_WORKING )
-COMP( 1983, fellow, laser200, 0, laser200, vtech1, vtech1_state, empty_init, "Salora", "Fellow (Finland)", 0 )
-COMP( 1983, tx8000, laser200, 0, laser200, vtech1, vtech1_state, empty_init, "Texet", "TX-8000 (UK)", 0 )
-COMP( 1984, laser210, 0, 0, laser210, vtech1, vtech1_state, empty_init, "Video Technology", "Laser 210", 0 )
-COMP( 1984, vz200, laser210, 0, laser210, vtech1, vtech1_state, empty_init, "Dick Smith Electronics", "VZ-200 (Oceania)", 0 )
-COMP( 1984, laser310, 0, 0, laser310, vtech1, vtech1_state, empty_init, "Video Technology", "Laser 310", 0 )
-COMP( 1984, vz300, laser310, 0, laser310, vtech1, vtech1_state, empty_init, "Dick Smith Electronics", "VZ-300 (Oceania)", 0 )
+COMP( 1983, laser110, 0, 0, laser110, vtech1, vtech1_state, init_vtech1, "Video Technology", "Laser 110", 0 )
+COMP( 1983, laser200, 0, 0, laser200, vtech1, vtech1_state, init_vtech1, "Video Technology", "Laser 200", 0 )
+COMP( 1983, vz200de, laser200, 0, laser200, vtech1, vtech1_state, init_vtech1, "Video Technology", "VZ-200 (Germany & Netherlands)", MACHINE_NOT_WORKING )
+COMP( 1983, fellow, laser200, 0, laser200, vtech1, vtech1_state, init_vtech1, "Salora", "Fellow (Finland)", 0 )
+COMP( 1983, tx8000, laser200, 0, laser200, vtech1, vtech1_state, init_vtech1, "Texet", "TX-8000 (UK)", 0 )
+COMP( 1984, laser210, 0, 0, laser210, vtech1, vtech1_state, init_vtech1, "Video Technology", "Laser 210", 0 )
+COMP( 1984, vz200, laser210, 0, laser210, vtech1, vtech1_state, init_vtech1, "Dick Smith Electronics", "VZ-200 (Oceania)", 0 )
+COMP( 1984, laser310, 0, 0, laser310, vtech1, vtech1_state, init_vtech1, "Video Technology", "Laser 310", 0 )
+COMP( 1984, vz300, laser310, 0, laser310, vtech1, vtech1_state, init_vtech1, "Dick Smith Electronics", "VZ-300 (Oceania)", 0 )
COMP( 1984, laser310h, laser310, 0, laser310h, vtech1, vtech1_state, init_vtech1h, "Video Technology", "Laser 310 (SHRG)", MACHINE_UNOFFICIAL )
diff --git a/src/mame/drivers/vtech2.cpp b/src/mame/drivers/vtech2.cpp
index 6f724b3f2f4..4c27fdaa769 100644
--- a/src/mame/drivers/vtech2.cpp
+++ b/src/mame/drivers/vtech2.cpp
@@ -486,11 +486,11 @@ static const floppy_interface vtech2_floppy_interface =
MACHINE_CONFIG_START(vtech2_state::laser350)
/* basic machine hardware */
- Z80(config, m_maincpu, 3694700); /* 3.694700 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &vtech2_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &vtech2_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(vtech2_state::vtech2_interrupt));
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_DEVICE_ADD("maincpu", Z80, 3694700) /* 3.694700 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", vtech2_state, vtech2_interrupt)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
ADDRESS_MAP_BANK(config, "banka").set_map(&vtech2_state::m_map350).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
ADDRESS_MAP_BANK(config, "bankb").set_map(&vtech2_state::m_map350).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
@@ -498,27 +498,27 @@ MACHINE_CONFIG_START(vtech2_state::laser350)
ADDRESS_MAP_BANK(config, "bankd").set_map(&vtech2_state::m_map350).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(0);
- screen.set_size(88*8, 24*8+32);
- screen.set_visarea(0*8, 88*8-1, 0*8, 24*8+32-1);
- screen.set_screen_update(FUNC(vtech2_state::screen_update_laser));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(0)
+ MCFG_SCREEN_SIZE(88*8, 24*8+32)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 88*8-1, 0*8, 24*8+32-1)
+ MCFG_SCREEN_UPDATE_DRIVER(vtech2_state, screen_update_laser)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_vtech2);
PALETTE(config, m_palette, FUNC(vtech2_state::vtech2_palette), 512 + 16, 16);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.75);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(vtech2_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_FORMATS(vtech2_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY)
- VTECH_IOEXP_SLOT(config, "io").set_io_space(m_maincpu, AS_IO);
+ VTECH_IOEXP_SLOT(config, "io");
/* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "vtech_cart")
@@ -526,7 +526,7 @@ MACHINE_CONFIG_START(vtech2_state::laser350)
MCFG_GENERIC_LOAD(vtech2_state, cart_load)
/* 5.25" Floppy drive */
- LEGACY_FLOPPY(config, FLOPPY_0, 0, &vtech2_floppy_interface);
+ MCFG_LEGACY_FLOPPY_DRIVE_ADD( FLOPPY_0, vtech2_floppy_interface )
MACHINE_CONFIG_END
@@ -541,8 +541,7 @@ void vtech2_state::laser500(machine_config &config)
}
-void vtech2_state::laser700(machine_config &config)
-{
+MACHINE_CONFIG_START(vtech2_state::laser700)
laser350(config);
ADDRESS_MAP_BANK(config.replace(), "banka").set_map(&vtech2_state::m_map700).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
@@ -551,8 +550,8 @@ void vtech2_state::laser700(machine_config &config)
ADDRESS_MAP_BANK(config.replace(), "bankd").set_map(&vtech2_state::m_map700).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
/* Second 5.25" floppy drive */
- LEGACY_FLOPPY(config, FLOPPY_1, 0, &vtech2_floppy_interface);
- }
+ MCFG_LEGACY_FLOPPY_DRIVE_ADD( FLOPPY_1, vtech2_floppy_interface )
+MACHINE_CONFIG_END
ROM_START(laser350)
diff --git a/src/mame/drivers/vtech_eu3a12.cpp b/src/mame/drivers/vtech_eu3a12.cpp
index e2a8a59240c..d398bb6747a 100644
--- a/src/mame/drivers/vtech_eu3a12.cpp
+++ b/src/mame/drivers/vtech_eu3a12.cpp
@@ -27,18 +27,18 @@ uint32_t vreadere_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm
static INPUT_PORTS_START( vreadere )
INPUT_PORTS_END
-void vreadere_state::vreadere(machine_config &config)
-{
- // UNKNOWN(config, "maincpu", unknown); // CPU type is unknown, epoxy blob
+MACHINE_CONFIG_START(vreadere_state::vreadere)
+ /* basic machine hardware */
+ // MCFG_DEVICE_ADD("maincpu", unknown, unknown) // CPU type is unknown, epoxy blob
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(vreadere_state::screen_update));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER( vreadere_state, screen_update )
+MACHINE_CONFIG_END
ROM_START( vreadere )
ROM_REGION(0x400000, "maincpu", 0)
diff --git a/src/mame/drivers/vtech_unk1.cpp b/src/mame/drivers/vtech_unk1.cpp
index 8f6310fb762..3e317da3cd5 100644
--- a/src/mame/drivers/vtech_unk1.cpp
+++ b/src/mame/drivers/vtech_unk1.cpp
@@ -66,19 +66,18 @@ uint32_t gl8008cx_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm
static INPUT_PORTS_START( gl8008cx )
INPUT_PORTS_END
-void gl8008cx_state::gl8008cx(machine_config &config)
-{
+MACHINE_CONFIG_START(gl8008cx_state::gl8008cx)
/* basic machine hardware */
- // UNKNOWN(config, "maincpu", unknown); // CPU type is unknown, epoxy blob
+ // MCFG_DEVICE_ADD("maincpu", unknown, unknown) // CPU type is unknown, epoxy blob
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(gl8008cx_state::screen_update));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER( gl8008cx_state, screen_update )
+MACHINE_CONFIG_END
ROM_START( gl8008cx )
ROM_REGION(0x200000, "maincpu", 0)
diff --git a/src/mame/drivers/vtech_unk2.cpp b/src/mame/drivers/vtech_unk2.cpp
index bd8ebe47add..8178e02b5cb 100644
--- a/src/mame/drivers/vtech_unk2.cpp
+++ b/src/mame/drivers/vtech_unk2.cpp
@@ -27,19 +27,18 @@ uint32_t glmmc_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
static INPUT_PORTS_START( glmmc )
INPUT_PORTS_END
-void glmmc_state::glmmc(machine_config &config)
-{
+MACHINE_CONFIG_START(glmmc_state::glmmc)
/* basic machine hardware */
- // UNKNOWN(config, "maincpu", unknown); // CPU type is unknown, epoxy blob
+ // MCFG_DEVICE_ADD("maincpu", unknown, unknown) // CPU type is unknown, epoxy blob
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(512, 256);
- screen.set_visarea(0, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(glmmc_state::screen_update));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER( glmmc_state, screen_update )
+MACHINE_CONFIG_END
ROM_START( glmmc )
ROM_REGION(0x200000, "maincpu", 0)
diff --git a/src/mame/drivers/vulgus.cpp b/src/mame/drivers/vulgus.cpp
index b0ca52d0c8d..eca7adde124 100644
--- a/src/mame/drivers/vulgus.cpp
+++ b/src/mame/drivers/vulgus.cpp
@@ -216,27 +216,27 @@ GFXDECODE_END
-void vulgus_state::vulgus(machine_config &config)
-{
+MACHINE_CONFIG_START(vulgus_state::vulgus)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/4); /* 3 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &vulgus_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(vulgus_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/4) /* 3 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", vulgus_state, vblank_irq)
- Z80(config, m_audiocpu, XTAL(12'000'000)/4); /* 3 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &vulgus_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(vulgus_state::irq0_line_hold), attotime::from_hz(8*60));
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(12'000'000)/4) /* 3 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(vulgus_state, irq0_line_hold, 8*60)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(59.59);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(vulgus_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.59)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(vulgus_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_vulgus);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_vulgus)
PALETTE(config, m_palette, FUNC(vulgus_state::vulgus_palette), 64*4+16*16+4*32*8, 256);
@@ -248,7 +248,7 @@ void vulgus_state::vulgus(machine_config &config)
AY8910(config, "ay1", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.25); /* 1.5 MHz */
AY8910(config, "ay2", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.25); /* 1.5 MHz */
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/wacky_gator.cpp b/src/mame/drivers/wacky_gator.cpp
index 4859b884b5e..9b5939616f9 100644
--- a/src/mame/drivers/wacky_gator.cpp
+++ b/src/mame/drivers/wacky_gator.cpp
@@ -281,26 +281,26 @@ void wackygtr_state::program_map(address_map &map)
map(0x8000, 0xffff).rom();
}
-void wackygtr_state::wackygtr(machine_config &config)
-{
- MC6809(config, m_maincpu, XTAL(3'579'545)); // HD68B09P
- m_maincpu->set_addrmap(AS_PROGRAM, &wackygtr_state::program_map);
- m_maincpu->set_periodic_int(FUNC(wackygtr_state::irq0_line_assert), attotime::from_hz(50)); // FIXME
+MACHINE_CONFIG_START(wackygtr_state::wackygtr)
+
+ MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(3'579'545)) // HD68B09P
+ MCFG_DEVICE_PROGRAM_MAP(program_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(wackygtr_state, irq0_line_assert, 50) // FIXME
- TIMER(config, "nmi_timer").configure_periodic(FUNC(wackygtr_state::nmi_timer), attotime::from_hz(100)); // FIXME
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", wackygtr_state, nmi_timer, attotime::from_hz(100)) // FIXME
/* Video */
config.set_default_layout(layout_wackygtr);
/* Sound */
SPEAKER(config, "mono").front_center();
- MSM5205(config, m_msm, XTAL(384'000));
- m_msm->vck_legacy_callback().set(FUNC(wackygtr_state::adpcm_int)); /* IRQ handler */
- m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
- m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000) )
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, wackygtr_state, adpcm_int)) /* IRQ handler */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(3'579'545)));
- ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
+ MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545) )
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
i8255_device &ppi0(I8255(config, "i8255_0"));
ppi0.out_pa_callback().set(FUNC(wackygtr_state::status_lamps_w));
@@ -333,8 +333,8 @@ void wackygtr_state::wackygtr(machine_config &config)
m_pit8253[1]->set_clk<2>(XTAL(3'579'545)/16); // this is a guess
m_pit8253[1]->out_handler<2>().set(FUNC(wackygtr_state::alligator_ck<4>));
- TICKET_DISPENSER(config, "ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
-}
+ MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
+MACHINE_CONFIG_END
ROM_START( wackygtr )
diff --git a/src/mame/drivers/wallc.cpp b/src/mame/drivers/wallc.cpp
index 942902e8211..50ae92b81cb 100644
--- a/src/mame/drivers/wallc.cpp
+++ b/src/mame/drivers/wallc.cpp
@@ -157,18 +157,18 @@ void wallc_state::wallc_palette(palette_device &palette) const
// red component
bit0 = BIT(color_prom[i], 5);
bit1 = BIT(color_prom[i], 6);
- int const r = combine_weights(weights_r, bit1, bit0);
+ int const r = combine_2_weights(weights_r, bit1, bit0);
// green component
bit0 = BIT(color_prom[i], 2);
bit1 = BIT(color_prom[i], 3);
- int const g = combine_weights(weights_g, bit1, bit0);
+ int const g = combine_2_weights(weights_g, bit1, bit0);
// blue component
bit0 = BIT(color_prom[i], 0);
bit1 = BIT(color_prom[i], 1);
bit7 = BIT(color_prom[i], 7);
- int const b = combine_weights(weights_b, bit7, bit1, bit0);
+ int const b = combine_3_weights(weights_b, bit7, bit1, bit0);
palette.set_pen_color(i, rgb_t(r, g, b));
}
@@ -195,18 +195,18 @@ void wallc_state::unkitpkr_palette(palette_device &palette) const
// red component
bit0 = BIT(color_prom[i], 5);
bit1 = BIT(color_prom[i], 6);
- int const r = combine_weights(weights_r, bit1, bit0);
+ int const r = combine_2_weights(weights_r, bit1, bit0);
// green component
bit0 = BIT(color_prom[i], 2);
bit1 = BIT(color_prom[i], 3);
- int const g = combine_weights(weights_g, bit1, bit0);
+ int const g = combine_2_weights(weights_g, bit1, bit0);
// blue component
bit0 = BIT(color_prom[i], 0);
bit1 = BIT(color_prom[i], 1);
bit7 = BIT(color_prom[i], 7);
- int const b = combine_weights(weights_b, bit7, bit1, bit0);
+ int const b = combine_3_weights(weights_b, bit7, bit1, bit0);
palette.set_pen_color(i, rgb_t(r, g, b));
}
@@ -514,21 +514,20 @@ void wallc_state::init_wallca()
}
-void wallc_state::wallc(machine_config &config)
-{
+MACHINE_CONFIG_START(wallc_state::wallc)
/* basic machine hardware */
- Z80(config, m_maincpu, 12.288_MHz_XTAL / 4); /* 3.072 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &wallc_state::wallc_map);
- m_maincpu->set_vblank_int("screen", FUNC(wallc_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, 12.288_MHz_XTAL / 4) /* 3.072 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(wallc_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", wallc_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(wallc_state::screen_update));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(wallc_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
GFXDECODE(config, m_gfxdecode, "palette", gfx_wallc);
PALETTE(config, "palette", FUNC(wallc_state::wallc_palette), 32);
@@ -536,19 +535,19 @@ void wallc_state::wallc(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
AY8912(config, "aysnd", 12288000 / 8).add_route(ALL_OUTPUTS, "mono", 0.30);
-}
+MACHINE_CONFIG_END
-void wallc_state::wallca(machine_config &config)
-{
+MACHINE_CONFIG_START(wallc_state::wallca)
wallc(config);
- m_maincpu->set_clock(12_MHz_XTAL / 4);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(12_MHz_XTAL / 4)
+MACHINE_CONFIG_END
-void wallc_state::unkitpkr(machine_config &config)
-{
+MACHINE_CONFIG_START(wallc_state::unkitpkr)
wallc(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &wallc_state::unkitpkr_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(unkitpkr_map)
MCFG_VIDEO_START_OVERRIDE(wallc_state, unkitpkr)
subdevice<palette_device>("palette")->set_init(FUNC(wallc_state::unkitpkr_palette));
@@ -557,14 +556,13 @@ void wallc_state::unkitpkr(machine_config &config)
subdevice<ay8912_device>("aysnd")->port_a_read_callback().set_ioport("DSW2");
subdevice<ay8912_device>("aysnd")->reset_routes();
subdevice<ay8912_device>("aysnd")->add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
-void wallc_state::sidampkr(machine_config &config)
-{
+MACHINE_CONFIG_START(wallc_state::sidampkr)
unkitpkr(config);
MCFG_VIDEO_START_OVERRIDE(wallc_state, sidampkr)
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/wangpc.cpp b/src/mame/drivers/wangpc.cpp
index 9c448093a7d..4b0c4da1326 100644
--- a/src/mame/drivers/wangpc.cpp
+++ b/src/mame/drivers/wangpc.cpp
@@ -876,7 +876,7 @@ WRITE8_MEMBER( wangpc_state::memw_w )
READ8_MEMBER( wangpc_state::ior2_r )
{
if (m_disable_dreq2)
- return m_bus->dack_r(2);
+ return m_bus->dack_r(space, 2);
else
return m_fdc->dma_r();
}
@@ -884,7 +884,7 @@ READ8_MEMBER( wangpc_state::ior2_r )
WRITE8_MEMBER( wangpc_state::iow2_w )
{
if (m_disable_dreq2)
- m_bus->dack_w(2, data);
+ m_bus->dack_w(space, 2, data);
else
m_fdc->dma_w(data);
}
@@ -1272,16 +1272,15 @@ void wangpc_state::on_disk1_unload(floppy_image_device *image)
//**************************************************************************
//-------------------------------------------------
-// machine_config( wangpc )
+// MACHINE_CONFIG( wangpc )
//-------------------------------------------------
-void wangpc_state::wangpc(machine_config &config)
-{
- I8086(config, m_maincpu, 8000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &wangpc_state::wangpc_mem);
- m_maincpu->set_addrmap(AS_IO, &wangpc_state::wangpc_io);
- m_maincpu->set_irq_acknowledge_callback(I8259A_TAG, FUNC(pic8259_device::inta_cb));
- //config.m_perfect_cpu_quantum = subtag(I8086_TAG);
+MACHINE_CONFIG_START(wangpc_state::wangpc)
+ MCFG_DEVICE_ADD(I8086_TAG, I8086, 8000000)
+ MCFG_DEVICE_PROGRAM_MAP(wangpc_mem)
+ MCFG_DEVICE_IO_MAP(wangpc_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(I8259A_TAG, pic8259_device, inta_cb)
+ //MCFG_QUANTUM_PERFECT_CPU(I8086_TAG)
// devices
AM9517A(config, m_dmac, 4000000);
@@ -1331,10 +1330,10 @@ void wangpc_state::wangpc(machine_config &config)
UPD765A(config, m_fdc, 8'000'000, false, false);
m_fdc->intrq_wr_callback().set(FUNC(wangpc_state::fdc_irq));
m_fdc->drq_wr_callback().set(FUNC(wangpc_state::fdc_drq));
- FLOPPY_CONNECTOR(config, UPD765_TAG ":0", wangpc_floppies, "525dd", wangpc_state::floppy_formats);
- FLOPPY_CONNECTOR(config, UPD765_TAG ":1", wangpc_floppies, "525dd", wangpc_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", wangpc_floppies, "525dd", wangpc_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", wangpc_floppies, "525dd", wangpc_state::floppy_formats)
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer");
m_centronics->set_data_input_buffer(m_cent_data_in);
m_centronics->ack_handler().set(FUNC(wangpc_state::write_centronics_ack));
m_centronics->busy_handler().set(FUNC(wangpc_state::write_centronics_busy));
@@ -1342,9 +1341,7 @@ void wangpc_state::wangpc(machine_config &config)
m_centronics->perror_handler().set(FUNC(wangpc_state::write_centronics_perror));
INPUT_BUFFER(config, m_cent_data_in);
-
- OUTPUT_LATCH(config, m_cent_data_out);
- m_centronics->set_output_latch(*m_cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr));
rs232.rxd_handler().set(m_epci, FUNC(mc2661_device::rx_w));
@@ -1352,29 +1349,29 @@ void wangpc_state::wangpc(machine_config &config)
WANGPC_KEYBOARD(config, "wangpckb").txd_handler().set(m_uart, FUNC(im6402_device::write_rri));
// bus
- WANGPC_BUS(config, m_bus, 0);
- m_bus->irq2_wr_callback().set(FUNC(wangpc_state::bus_irq2_w));
- m_bus->irq3_wr_callback().set(m_pic, FUNC(pic8259_device::ir3_w));
- m_bus->irq4_wr_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
- m_bus->irq5_wr_callback().set(m_pic, FUNC(pic8259_device::ir5_w));
- m_bus->irq6_wr_callback().set(m_pic, FUNC(pic8259_device::ir6_w));
- m_bus->irq7_wr_callback().set(m_pic, FUNC(pic8259_device::ir7_w));
- m_bus->drq1_wr_callback().set(m_dmac, FUNC(am9517a_device::dreq1_w));
- m_bus->drq2_wr_callback().set(m_dmac, FUNC(am9517a_device::dreq2_w));
- m_bus->drq3_wr_callback().set(m_dmac, FUNC(am9517a_device::dreq3_w));
- m_bus->ioerror_wr_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
- WANGPC_BUS_SLOT(config, "slot1", wangpc_cards, nullptr, 1);
- WANGPC_BUS_SLOT(config, "slot2", wangpc_cards, "mvc", 2);
- WANGPC_BUS_SLOT(config, "slot3", wangpc_cards, nullptr, 3);
- WANGPC_BUS_SLOT(config, "slot4", wangpc_cards, nullptr, 4);
- WANGPC_BUS_SLOT(config, "slot5", wangpc_cards, nullptr, 5);
+ MCFG_WANGPC_BUS_ADD()
+ MCFG_WANGPC_BUS_IRQ2_CALLBACK(WRITELINE(*this, wangpc_state, bus_irq2_w))
+ MCFG_WANGPC_BUS_IRQ3_CALLBACK(WRITELINE(I8259A_TAG, pic8259_device, ir3_w))
+ MCFG_WANGPC_BUS_IRQ4_CALLBACK(WRITELINE(I8259A_TAG, pic8259_device, ir4_w))
+ MCFG_WANGPC_BUS_IRQ5_CALLBACK(WRITELINE(I8259A_TAG, pic8259_device, ir5_w))
+ MCFG_WANGPC_BUS_IRQ6_CALLBACK(WRITELINE(I8259A_TAG, pic8259_device, ir6_w))
+ MCFG_WANGPC_BUS_IRQ7_CALLBACK(WRITELINE(I8259A_TAG, pic8259_device, ir7_w))
+ MCFG_WANGPC_BUS_DRQ1_CALLBACK(WRITELINE(AM9517A_TAG, am9517a_device, dreq1_w))
+ MCFG_WANGPC_BUS_DRQ2_CALLBACK(WRITELINE(AM9517A_TAG, am9517a_device, dreq2_w))
+ MCFG_WANGPC_BUS_DRQ3_CALLBACK(WRITELINE(AM9517A_TAG, am9517a_device, dreq3_w))
+ MCFG_WANGPC_BUS_IOERROR_CALLBACK(INPUTLINE(I8086_TAG, INPUT_LINE_NMI))
+ MCFG_WANGPC_BUS_SLOT_ADD("slot1", 1, wangpc_cards, nullptr)
+ MCFG_WANGPC_BUS_SLOT_ADD("slot2", 2, wangpc_cards, "mvc")
+ MCFG_WANGPC_BUS_SLOT_ADD("slot3", 3, wangpc_cards, nullptr)
+ MCFG_WANGPC_BUS_SLOT_ADD("slot4", 4, wangpc_cards, nullptr)
+ MCFG_WANGPC_BUS_SLOT_ADD("slot5", 5, wangpc_cards, nullptr)
// internal ram
RAM(config, RAM_TAG).set_default_size("128K");
// software list
- SOFTWARE_LIST(config, "flop_list").set_original("wangpc");
-}
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "wangpc")
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/wardner.cpp b/src/mame/drivers/wardner.cpp
index 9665ae01fa9..3969300db3a 100644
--- a/src/mame/drivers/wardner.cpp
+++ b/src/mame/drivers/wardner.cpp
@@ -181,14 +181,14 @@ void wardner_state::main_program_map(address_map &map)
{
map(0x0000, 0x6fff).rom();
map(0x7000, 0x7fff).ram();
- map(0x8000, 0x8fff).w(FUNC(wardner_state::wardner_sprite_w)); // .share("spriteram8")
- map(0xa000, 0xafff).w(m_palette, FUNC(palette_device::write8)); // .share("palette")
+ map(0x8000, 0x8fff).w(FUNC(wardner_state::wardner_sprite_w)); // AM_SHARE("spriteram8")
+ map(0xa000, 0xafff).w(m_palette, FUNC(palette_device::write8)); // AM_SHARE("palette")
map(0xc000, 0xc7ff).writeonly().share("sharedram");
map(0x8000, 0xffff).r(m_membank, FUNC(address_map_bank_device::read8));
}
// Overlapped RAM/Banked ROM
-// Can't use map(0x00000, 0x3ffff) for ROM because the shared pointers get messed up somehow
+// Can't use AM_RANGE(0x00000, 0x3ffff) for ROM because the shared pointers get messed up somehow
void wardner_state::main_bank_map(address_map &map)
{
map(0x00000, 0x00fff).r(FUNC(wardner_state::wardner_sprite_r)).share("spriteram8");
@@ -338,24 +338,24 @@ INPUT_PORTS_END
static const gfx_layout charlayout =
{
- 8,8, /* 8*8 characters */
- RGN_FRAC(1,3), /* 2048 characters */
- 3, /* 3 bits per pixel */
- { RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) }, /* the bitplanes are separated */
- { STEP8(0,1) },
- { STEP8(0,8) },
- 8*8 /* every char takes 8 consecutive bytes */
+ 8,8, /* 8*8 characters */
+ 2048, /* 2048 characters */
+ 3, /* 3 bits per pixel */
+ { 0*2048*8*8, 1*2048*8*8, 2*2048*8*8 }, /* the bitplanes are separated */
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
+ 8*8 /* every char takes 8 consecutive bytes */
};
static const gfx_layout tilelayout =
{
- 8,8, /* 8*8 tiles */
- RGN_FRAC(1,4), /* 4096 tiles */
- 4, /* 4 bits per pixel */
- { RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) }, /* the bitplanes are separated */
- { STEP8(0,1) },
- { STEP8(0,8) },
- 8*8 /* every tile takes 8 consecutive bytes */
+ 8,8, /* 8*8 tiles */
+ 4096, /* 4096 tiles */
+ 4, /* 4 bits per pixel */
+ { 0*4096*8*8, 1*4096*8*8, 2*4096*8*8, 3*4096*8*8 }, /* the bitplanes are separated */
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
+ 8*8 /* every tile takes 8 consecutive bytes */
};
@@ -369,12 +369,12 @@ GFXDECODE_END
void wardner_state::driver_start()
{
/* Save-State stuff in src/machine/twincobr.cpp */
- driver_savestate();
+ twincobr_driver_savestate();
}
void wardner_state::machine_reset()
{
- twincobr_state::machine_reset();
+ MACHINE_RESET_CALL_MEMBER(twincobr);
m_membank->set_bank(0);
}
@@ -382,13 +382,13 @@ void wardner_state::machine_reset()
void wardner_state::wardner(machine_config &config)
{
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(24'000'000) / 4); /* 6MHz */
+ Z80(config, m_maincpu, XTAL(24'000'000) / 4); /* 6MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &wardner_state::main_program_map);
m_maincpu->set_addrmap(AS_IO, &wardner_state::main_io_map);
ADDRESS_MAP_BANK(config, "membank").set_map(&wardner_state::main_bank_map).set_options(ENDIANNESS_LITTLE, 8, 18, 0x8000);
- z80_device &audiocpu(Z80(config, "audiocpu", XTAL(14'000'000) / 4)); /* 3.5MHz */
+ z80_device &audiocpu(Z80(config, "audiocpu", XTAL(14'000'000) / 4)); /* 3.5MHz */
audiocpu.set_addrmap(AS_PROGRAM, &wardner_state::sound_program_map);
audiocpu.set_addrmap(AS_IO, &wardner_state::sound_io_map);
@@ -398,7 +398,7 @@ void wardner_state::wardner(machine_config &config)
m_dsp->set_addrmap(AS_IO, &wardner_state::dsp_io_map);
m_dsp->bio().set(FUNC(wardner_state::twincobr_bio_r));
- config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame */
+ config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame */
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<2>().set(FUNC(wardner_state::int_enable_w));
@@ -429,7 +429,7 @@ void wardner_state::wardner(machine_config &config)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
m_screen->set_raw(14_MHz_XTAL/2, 446, 0, 320, 286, 0, 240);
- m_screen->set_screen_update(FUNC(wardner_state::screen_update));
+ m_screen->set_screen_update(FUNC(wardner_state::screen_update_toaplan0));
m_screen->screen_vblank().set(m_spriteram8, FUNC(buffered_spriteram8_device::vblank_copy_rising));
m_screen->screen_vblank().append(FUNC(wardner_state::wardner_vblank_irq));
m_screen->set_palette(m_palette);
diff --git a/src/mame/drivers/warpsped.cpp b/src/mame/drivers/warpsped.cpp
index 65b6c21651f..410bfe1f5eb 100644
--- a/src/mame/drivers/warpsped.cpp
+++ b/src/mame/drivers/warpsped.cpp
@@ -322,26 +322,26 @@ void warpspeed_state::warpsped_palette(palette_device &palette) const
palette.set_pen_color(2 + i, 0xff * BIT(i, 0), 0xff * BIT(i, 1), 0xff * BIT(i, 2));
}
-void warpspeed_state::warpspeed(machine_config &config)
-{
+MACHINE_CONFIG_START(warpspeed_state::warpspeed)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(5'000'000)/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &warpspeed_state::warpspeed_map);
- m_maincpu->set_addrmap(AS_IO, &warpspeed_state::warpspeed_io_map);
- m_maincpu->set_vblank_int("screen", FUNC(warpspeed_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(5'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(warpspeed_map)
+ MCFG_DEVICE_IO_MAP(warpspeed_io_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", warpspeed_state, irq0_line_hold)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size((32)*8, (32)*8);
- screen.set_visarea(4*8, 32*8-1, 8*8, 32*8-1);
- screen.set_palette("palette");
- screen.set_screen_update(FUNC(warpspeed_state::screen_update));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE((32)*8, (32)*8)
+ MCFG_SCREEN_VISIBLE_AREA(4*8, 32*8-1, 8*8, 32*8-1)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_UPDATE_DRIVER(warpspeed_state, screen_update)
GFXDECODE(config, m_gfxdecode, "palette", gfx_warpspeed);
PALETTE(config, "palette", FUNC(warpspeed_state::warpsped_palette), 2 + 8);
-}
+MACHINE_CONFIG_END
ROM_START( warpsped )
ROM_REGION(0x1000, "maincpu", 0)
diff --git a/src/mame/drivers/warpwarp.cpp b/src/mame/drivers/warpwarp.cpp
index 3685b396f53..3434f94315b 100644
--- a/src/mame/drivers/warpwarp.cpp
+++ b/src/mame/drivers/warpwarp.cpp
@@ -712,12 +712,12 @@ GFXDECODE_END
-void warpwarp_state::geebee(machine_config &config)
-{
+MACHINE_CONFIG_START(warpwarp_state::geebee)
+
/* basic machine hardware */
- I8080(config, m_maincpu, MASTER_CLOCK/9); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &warpwarp_state::geebee_map);
- m_maincpu->set_addrmap(AS_IO, &warpwarp_state::geebee_port_map);
+ MCFG_DEVICE_ADD("maincpu", I8080, MASTER_CLOCK/9) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(geebee_map)
+ MCFG_DEVICE_IO_MAP(geebee_port_map)
LS259(config, m_latch); // 5N
m_latch->q_out_cb<0>().set_output("led0"); // LAMP 1
@@ -730,11 +730,11 @@ void warpwarp_state::geebee(machine_config &config)
m_latch->q_out_cb<7>().set(FUNC(warpwarp_state::inv_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(MASTER_CLOCK/3, 384, 0, 272, 264, 0, 224);
- screen.set_screen_update(FUNC(warpwarp_state::screen_update));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(warpwarp_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 272, 264, 0, 224)
+ MCFG_SCREEN_UPDATE_DRIVER(warpwarp_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, warpwarp_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_1k);
PALETTE(config, m_palette, FUNC(warpwarp_state::geebee_palette), 4*2);
@@ -744,8 +744,9 @@ void warpwarp_state::geebee(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- GEEBEE_SOUND(config, m_geebee_sound, MASTER_CLOCK).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("geebee_custom", GEEBEE_SOUND, MASTER_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
void warpwarp_state::geebeeb(machine_config &config)
{
@@ -753,35 +754,33 @@ void warpwarp_state::geebeeb(machine_config &config)
m_latch->q_out_cb<4>().set_nop(); // remove coin lockout
}
-void warpwarp_state::navarone(machine_config &config)
-{
+MACHINE_CONFIG_START(warpwarp_state::navarone)
geebee(config);
/* basic machine hardware */
- m_gfxdecode->set_info(gfx_2k);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_2k)
m_palette->set_entries(2*2);
m_palette->set_init(FUNC(warpwarp_state::navarone_palette));
MCFG_VIDEO_START_OVERRIDE(warpwarp_state,navarone)
-}
+MACHINE_CONFIG_END
-void warpwarp_state::kaitei(machine_config &config)
-{
+MACHINE_CONFIG_START(warpwarp_state::kaitei)
geebee(config);
/* basic machine hardware */
- m_gfxdecode->set_info(gfx_1k);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_1k)
m_palette->set_entries(4*2+1);
MCFG_MACHINE_RESET_OVERRIDE(warpwarp_state,kaitei)
-}
+MACHINE_CONFIG_END
-void warpwarp_state::bombbee(machine_config &config)
-{
+MACHINE_CONFIG_START(warpwarp_state::bombbee)
+
/* basic machine hardware */
- I8080(config, m_maincpu, MASTER_CLOCK/9);
- m_maincpu->set_addrmap(AS_PROGRAM, &warpwarp_state::bombbee_map);
+ MCFG_DEVICE_ADD("maincpu", I8080, MASTER_CLOCK/9)
+ MCFG_DEVICE_PROGRAM_MAP(bombbee_map)
LS259(config, m_latch); // 6L on Warp Warp
m_latch->q_out_cb<0>().set_output("led0"); // LAMP 1
@@ -796,11 +795,11 @@ void warpwarp_state::bombbee(machine_config &config)
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(MASTER_CLOCK/3, 384, 0, 272, 264, 0, 224);
- screen.set_screen_update(FUNC(warpwarp_state::screen_update));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(warpwarp_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 272, 264, 0, 224)
+ MCFG_SCREEN_UPDATE_DRIVER(warpwarp_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, warpwarp_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_color);
@@ -810,16 +809,17 @@ void warpwarp_state::bombbee(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- WARPWARP_SOUND(config, m_warpwarp_sound, MASTER_CLOCK).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("warpwarp_custom", WARPWARP_SOUND, MASTER_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
-void warpwarp_state::warpwarp(machine_config &config)
-{
+MACHINE_CONFIG_START(warpwarp_state::warpwarp)
bombbee(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &warpwarp_state::warpwarp_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(warpwarp_map)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/warriorb.cpp b/src/mame/drivers/warriorb.cpp
index 5f51f2633cb..229a88aa340 100644
--- a/src/mame/drivers/warriorb.cpp
+++ b/src/mame/drivers/warriorb.cpp
@@ -438,11 +438,11 @@ void warriorb_state::machine_reset()
void warriorb_state::darius2d(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000); /* 12 MHz ??? (Might well be 16!) */
+ M68000(config, m_maincpu, 12000000); /* 12 MHz ??? (Might well be 16!) */
m_maincpu->set_addrmap(AS_PROGRAM, &warriorb_state::darius2d_map);
m_maincpu->set_vblank_int("lscreen", FUNC(warriorb_state::irq4_line_hold));
- z80_device &audiocpu(Z80(config, "audiocpu", 16000000/4)); /* 4 MHz ? */
+ z80_device &audiocpu(Z80(config, "audiocpu", 16000000/4)); /* 4 MHz ? */
audiocpu.set_addrmap(AS_PROGRAM, &warriorb_state::z80_sound_map);
TC0220IOC(config, m_tc0220ioc, 0);
@@ -521,11 +521,11 @@ void warriorb_state::darius2d(machine_config &config)
void warriorb_state::warriorb(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 16000000); /* 16 MHz ? */
+ M68000(config, m_maincpu, 16000000); /* 16 MHz ? */
m_maincpu->set_addrmap(AS_PROGRAM, &warriorb_state::warriorb_map);
m_maincpu->set_vblank_int("lscreen", FUNC(warriorb_state::irq4_line_hold));
- z80_device &audiocpu(Z80(config, "audiocpu", 16000000/4)); /* 4 MHz ? */
+ z80_device &audiocpu(Z80(config, "audiocpu", 16000000/4)); /* 4 MHz ? */
audiocpu.set_addrmap(AS_PROGRAM, &warriorb_state::z80_sound_map);
TC0510NIO(config, m_tc0510nio, 0);
@@ -775,8 +775,8 @@ ROM_START( warriorb )
ROM_REGION( 0x01000, "user1", 0 ) /* unknown roms */
ROM_LOAD( "d24-13.37", 0x00000, 0x400, CRC(3ca18eb3) SHA1(54560f02c2be67993940831222130e90cd171991) ) /* AM27S33A or compatible like N82HS137A */
ROM_LOAD( "d24-14.38", 0x00000, 0x400, CRC(baf2a193) SHA1(b7f103b5f5aab0702dd21fd7e3a82261ae1760e9) ) /* AM27S33A or compatible like N82HS137A */
- ROM_LOAD( "d24-15.78", 0x00000, 0x144, CRC(04992a7d) SHA1(82ce7ab7e3e7045776b660c32dac4abc28cabfa5) ) // PAL20L8BCNS
- ROM_LOAD( "d24-16.79", 0x00000, 0x144, CRC(92c59a8d) SHA1(a83eb70cdc47af688a33505f60e5cb9960f8ba9f) ) // PAL20L8BCNS
+// ROM_LOAD( "d24-15.78", 0x00000, 0xa??, NO_DUMP ) /* 20L8B Pal */
+// ROM_LOAD( "d24-16.79", 0x00000, 0xa??, NO_DUMP ) /* 20L8B Pal */
ROM_END
diff --git a/src/mame/drivers/wc90b.cpp b/src/mame/drivers/wc90b.cpp
index 8a92726da2d..13fefc3fd6e 100644
--- a/src/mame/drivers/wc90b.cpp
+++ b/src/mame/drivers/wc90b.cpp
@@ -353,29 +353,29 @@ void wc90b_state::machine_start()
}
-void wc90b_state::wc90b(machine_config &config)
-{
+MACHINE_CONFIG_START(wc90b_state::wc90b)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &wc90b_state::wc90b_map1);
- m_maincpu->set_vblank_int("screen", FUNC(wc90b_state::irq0_line_assert));
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(wc90b_map1)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", wc90b_state, irq0_line_assert)
- Z80(config, m_subcpu, MASTER_CLOCK);
- m_subcpu->set_addrmap(AS_PROGRAM, &wc90b_state::wc90b_map2);
- m_subcpu->set_vblank_int("screen", FUNC(wc90b_state::irq0_line_assert));
+ MCFG_DEVICE_ADD("sub", Z80, MASTER_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(wc90b_map2)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", wc90b_state, irq0_line_assert)
- Z80(config, m_audiocpu, SOUND_CLOCK);
- m_audiocpu->set_addrmap(AS_PROGRAM, &wc90b_state::sound_cpu);
+ MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(sound_cpu)
/* IRQs are triggered by the main CPU */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(wc90b_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(wc90b_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_wc90b);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 1024).set_endianness(ENDIANNESS_BIG);
@@ -385,14 +385,17 @@ void wc90b_state::wc90b(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch);
- YM2203(config, "ymsnd1", YM2203_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.40);
- YM2203(config, "ymsnd2", YM2203_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.40);
+ MCFG_DEVICE_ADD("ymsnd1", YM2203, YM2203_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
- MSM5205(config, m_msm, MSM5205_CLOCK);
- m_msm->vck_legacy_callback().set(FUNC(wc90b_state::adpcm_int)); /* interrupt function */
- m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
- m_msm->add_route(ALL_OUTPUTS, "mono", 0.20);
-}
+ MCFG_DEVICE_ADD("ymsnd2", YM2203, YM2203_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
+
+ MCFG_DEVICE_ADD("msm", MSM5205, MSM5205_CLOCK)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, wc90b_state, adpcm_int)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
+MACHINE_CONFIG_END
ROM_START( twcup90b1 )
ROM_REGION( 0x20000, "maincpu", 0 )
diff --git a/src/mame/drivers/welltris.cpp b/src/mame/drivers/welltris.cpp
index b62ff069796..1238c57ac26 100644
--- a/src/mame/drivers/welltris.cpp
+++ b/src/mame/drivers/welltris.cpp
@@ -674,11 +674,11 @@ void welltris_state::machine_start()
void welltris_state::welltris(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 20000000/2); /* 10 MHz */
+ M68000(config, m_maincpu, 20000000/2); /* 10 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &welltris_state::main_map);
m_maincpu->set_vblank_int("screen", FUNC(welltris_state::irq1_line_hold));
- Z80(config, m_audiocpu, 8000000/2); /* 4 MHz ??? */
+ Z80(config, m_audiocpu, 8000000/2); /* 4 MHz ??? */
m_audiocpu->set_addrmap(AS_PROGRAM, &welltris_state::sound_map);
m_audiocpu->set_addrmap(AS_IO, &welltris_state::sound_port_map); /* IRQs are triggered by the YM2610 */
diff --git a/src/mame/drivers/wgp.cpp b/src/mame/drivers/wgp.cpp
index f8e49803b0b..b1dd4cc61fd 100644
--- a/src/mame/drivers/wgp.cpp
+++ b/src/mame/drivers/wgp.cpp
@@ -915,14 +915,14 @@ void wgp_state::machine_start()
void wgp_state::wgp(machine_config &config)
{
/* basic machine hardware */
- M68000(config, m_maincpu, 12000000); /* 12 MHz ??? */
+ M68000(config, m_maincpu, 12000000); /* 12 MHz ??? */
m_maincpu->set_addrmap(AS_PROGRAM, &wgp_state::main_map);
m_maincpu->set_vblank_int("screen", FUNC(wgp_state::irq4_line_hold));
- Z80(config, m_audiocpu, 16000000/4); /* 4 MHz ??? */
+ Z80(config, m_audiocpu, 16000000/4); /* 4 MHz ??? */
m_audiocpu->set_addrmap(AS_PROGRAM, &wgp_state::z80_sound_map);
- M68000(config, m_subcpu, 12000000); /* 12 MHz ??? */
+ M68000(config, m_subcpu, 12000000); /* 12 MHz ??? */
m_subcpu->set_addrmap(AS_PROGRAM, &wgp_state::cpu2_map);
m_subcpu->set_vblank_int("screen", FUNC(wgp_state::cpub_interrupt));
diff --git a/src/mame/drivers/wheelfir.cpp b/src/mame/drivers/wheelfir.cpp
index 8dfe7f1f130..f669e0027a9 100644
--- a/src/mame/drivers/wheelfir.cpp
+++ b/src/mame/drivers/wheelfir.cpp
@@ -732,15 +732,15 @@ void wheelfir_state::ramdac_map(address_map &map)
map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb888_w));
}
-void wheelfir_state::wheelfir(machine_config &config)
-{
- M68000(config, m_maincpu, 32000000/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &wheelfir_state::wheelfir_main);
+MACHINE_CONFIG_START(wheelfir_state::wheelfir)
+
+ MCFG_DEVICE_ADD("maincpu", M68000, 32000000/2)
+ MCFG_DEVICE_PROGRAM_MAP(wheelfir_main)
- M68000(config, m_subcpu, 32000000/2);
- m_subcpu->set_addrmap(AS_PROGRAM, &wheelfir_state::wheelfir_sub);
+ MCFG_DEVICE_ADD("subcpu", M68000, 32000000/2)
+ MCFG_DEVICE_PROGRAM_MAP(wheelfir_sub)
- //config.m_minimum_quantum = attotime::from_hz(12000);
+ //MCFG_QUANTUM_TIME(attotime::from_hz(12000))
adc0808_device &adc(ADC0808(config, "adc", 500000)); // unknown clock
adc.eoc_ff_callback().set(FUNC(wheelfir_state::adc_eoc_w));
@@ -748,17 +748,17 @@ void wheelfir_state::wheelfir(machine_config &config)
adc.in_callback<1>().set_ioport("ACCELERATOR");
adc.in_callback<2>().set_ioport("BRAKE");
- TIMER(config, "scan_timer").configure_scanline(FUNC(wheelfir_state::scanline_timer_callback), "screen", 0, 1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scan_timer", wheelfir_state, scanline_timer_callback, "screen", 0, 1)
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(336, NUM_SCANLINES+NUM_VBLANK_LINES);
- m_screen->set_visarea(0,335, 0, NUM_SCANLINES-1);
- m_screen->set_screen_update(FUNC(wheelfir_state::screen_update_wheelfir));
- m_screen->screen_vblank().set(FUNC(wheelfir_state::screen_vblank_wheelfir));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(336, NUM_SCANLINES+NUM_VBLANK_LINES)
+ MCFG_SCREEN_VISIBLE_AREA(0,335, 0, NUM_SCANLINES-1)
+ MCFG_SCREEN_UPDATE_DRIVER(wheelfir_state, screen_update_wheelfir)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, wheelfir_state, screen_vblank_wheelfir))
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(NUM_COLORS);
+ MCFG_PALETTE_ADD("palette", NUM_COLORS)
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette));
ramdac.set_addrmap(0, &wheelfir_state::ramdac_map);
@@ -769,12 +769,12 @@ void wheelfir_state::wheelfir(machine_config &config)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- DAC_10BIT_R2R(config, "ldac", 0).add_route(ALL_OUTPUTS, "lspeaker", 1.0); // unknown DAC
- DAC_10BIT_R2R(config, "rdac", 0).add_route(ALL_OUTPUTS, "rspeaker", 1.0); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("ldac", DAC_10BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) // unknown DAC
+ MCFG_DEVICE_ADD("rdac", DAC_10BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
ROM_START( wheelfir )
diff --git a/src/mame/drivers/white_mod.cpp b/src/mame/drivers/white_mod.cpp
index d62eb26764e..a25b063b680 100644
--- a/src/mame/drivers/white_mod.cpp
+++ b/src/mame/drivers/white_mod.cpp
@@ -47,12 +47,11 @@ void whitestar_mod_state::init_whitestar_mod()
{
}
-void whitestar_mod_state::whitestar_mod(machine_config &config)
-{
+MACHINE_CONFIG_START(whitestar_mod_state::whitestar_mod)
/* basic machine hardware */
- MC6809E(config, m_maincpu, 2000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &whitestar_mod_state::whitestar_mod_map);
-}
+ MCFG_DEVICE_ADD("maincpu", MC6809E, 2000000)
+ MCFG_DEVICE_PROGRAM_MAP(whitestar_mod_map)
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
/ Elvis
diff --git a/src/mame/drivers/wicat.cpp b/src/mame/drivers/wicat.cpp
index 6265293fa9a..54faa6c0cd1 100644
--- a/src/mame/drivers/wicat.cpp
+++ b/src/mame/drivers/wicat.cpp
@@ -202,8 +202,8 @@ void wicat_state::video_io(address_map &map)
void wicat_state::wd1000_mem(address_map &map)
{
- map(0x0000, 0x0bff).rom().region("wd3", 0x0000);
- map(0x0c00, 0x0fff).noprw();
+ map(0x0000, 0x17ff).rom().region("wd3", 0x0000);
+ map(0x1800, 0x1fff).noprw();
}
void wicat_state::wd1000_io(address_map &map)
@@ -584,13 +584,13 @@ WRITE8_MEMBER( wicat_state::vram_w )
READ8_MEMBER(wicat_state::video_dma_r)
{
- return m_videodma->read(offset/2);
+ return m_videodma->read(space,offset/2);
}
WRITE8_MEMBER(wicat_state::video_dma_w)
{
if(!(offset & 0x01))
- m_videodma->write(offset/2,data);
+ m_videodma->write(space,offset/2,data);
}
READ8_MEMBER(wicat_state::video_uart0_r)
diff --git a/src/mame/drivers/wico.cpp b/src/mame/drivers/wico.cpp
index 1ed154b7c08..2e7e76b078e 100644
--- a/src/mame/drivers/wico.cpp
+++ b/src/mame/drivers/wico.cpp
@@ -102,7 +102,7 @@ void wico_state::hcpu_map(address_map &map)
map(0x1fe2, 0x1fe2).w(FUNC(wico_state::muxen_w));
//AM_RANGE(0x1fe3, 0x1fe3) AM_WRITE(csols_w)
map(0x1fe4, 0x1fe4).noprw();
- map(0x1fe5, 0x1fe5).w("sn76494", FUNC(sn76494_device::write));
+ map(0x1fe5, 0x1fe5).w("sn76494", FUNC(sn76494_device::command_w));
map(0x1fe6, 0x1fe6).w(FUNC(wico_state::wdogcl_w));
map(0x1fe7, 0x1fe7).w(FUNC(wico_state::zcres_w));
map(0x1fe8, 0x1fe8).w(FUNC(wico_state::dled0_w));
@@ -125,7 +125,7 @@ void wico_state::ccpu_map(address_map &map)
map(0x1fe2, 0x1fe2).w(FUNC(wico_state::muxen_w)); // digit to display on diagnostic LED; d0=L will disable main displays
map(0x1fe3, 0x1fe3).w(FUNC(wico_state::csols_w)); // solenoid column
map(0x1fe4, 0x1fe4).w(FUNC(wico_state::msols_w)); // solenoid row
- map(0x1fe5, 0x1fe5).w("sn76494", FUNC(sn76494_device::write));
+ map(0x1fe5, 0x1fe5).w("sn76494", FUNC(sn76494_device::command_w));
map(0x1fe6, 0x1fe6).w(FUNC(wico_state::wdogcl_w)); // watchdog clear
map(0x1fe7, 0x1fe7).w(FUNC(wico_state::zcres_w)); // enable IRQ on hcpu
map(0x1fe8, 0x1fe8).w(FUNC(wico_state::dled0_w)); // turn off diagnostic LED
@@ -440,17 +440,14 @@ void wico_state::machine_reset()
}
-void wico_state::wico(machine_config &config)
-{
+MACHINE_CONFIG_START(wico_state::wico)
/* basic machine hardware */
- MC6809E(config, m_ccpu, XTAL(10'000'000) / 8); // MC68A09EP @ U51
- m_ccpu->set_addrmap(AS_PROGRAM, &wico_state::ccpu_map);
-
- MC6809E(config, m_hcpu, XTAL(10'000'000) / 8); // MC68A09EP @ U24
- m_hcpu->set_addrmap(AS_PROGRAM, &wico_state::hcpu_map);
-
- TIMER(config, "irq").configure_periodic(FUNC(wico_state::irq_housekeeping), attotime::from_hz(120)); // zero crossing
- TIMER(config, "firq").configure_periodic(FUNC(wico_state::firq_housekeeping), attotime::from_hz(750)); // time generator
+ MCFG_DEVICE_ADD("ccpu", MC6809E, XTAL(10'000'000) / 8) // MC68A09EP @ U51
+ MCFG_DEVICE_PROGRAM_MAP(ccpu_map)
+ MCFG_DEVICE_ADD("hcpu", MC6809E, XTAL(10'000'000) / 8) // MC68A09EP @ U24
+ MCFG_DEVICE_PROGRAM_MAP(hcpu_map)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", wico_state, irq_housekeeping, attotime::from_hz(120)) // zero crossing
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("firq", wico_state, firq_housekeeping, attotime::from_hz(750)) // time generator
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* Video */
@@ -459,8 +456,9 @@ void wico_state::wico(machine_config &config)
/* Sound */
genpin_audio(config);
SPEAKER(config, "mono").front_center();
- SN76494(config, "sn76494", XTAL(10'000'000) / 64).add_route(ALL_OUTPUTS, "mono", 0.75);
-}
+ MCFG_DEVICE_ADD("sn76494", SN76494, XTAL(10'000'000) / 64)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+MACHINE_CONFIG_END
/*-------------------------------------------------------------------
/ Af-Tor (1984)
diff --git a/src/mame/drivers/wildpkr.cpp b/src/mame/drivers/wildpkr.cpp
index e83cb7a1d6e..ae85b9f34b2 100644
--- a/src/mame/drivers/wildpkr.cpp
+++ b/src/mame/drivers/wildpkr.cpp
@@ -465,24 +465,24 @@ IRQ_CALLBACK_MEMBER(wildpkr_state::tabpkr_irq_ack)
* Machine Drivers *
*************************/
-void wildpkr_state::wildpkr(machine_config &config)
-{
+MACHINE_CONFIG_START(wildpkr_state::wildpkr)
+
/* basic machine hardware */
- M68000(config, m_maincpu, MAIN_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &wildpkr_state::wildpkr_map);
- //m_maincpu->set_vblank_int("screen", FUNC(wildpkr_state::irq2_line_hold)); // guess
+ MCFG_DEVICE_ADD("maincpu", M68000, MAIN_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(wildpkr_map)
+ //MCFG_DEVICE_VBLANK_INT_DRIVER("screen", wildpkr_state, irq2_line_hold) // guess
- MC68681(config, m_duart, SEC_CLOCK);
+ MCFG_DEVICE_ADD("duart", MC68681, SEC_CLOCK)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(384, 280);
- screen.set_visarea(0, 384-1, 0, 280-1);
- screen.set_screen_update("acrtc", FUNC(hd63484_device::update_screen));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(384, 280)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1)
+ MCFG_SCREEN_UPDATE_DEVICE("acrtc", hd63484_device, update_screen)
+ MCFG_SCREEN_PALETTE("palette")
- HD63484(config, "acrtc", 0).set_addrmap(0, &wildpkr_state::hd63484_map);
+ MCFG_HD63484_ADD("acrtc", 0, hd63484_map)
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, "palette"));
ramdac.set_addrmap(0, &wildpkr_state::ramdac_map);
@@ -492,37 +492,37 @@ void wildpkr_state::wildpkr(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
AY8930(config, "aysnd", AY_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+MACHINE_CONFIG_END
-void wildpkr_state::tabpkr(machine_config &config)
-{
+MACHINE_CONFIG_START(wildpkr_state::tabpkr)
+
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &wildpkr_state::tabpkr_map);
- m_maincpu->set_periodic_int(FUNC(wildpkr_state::irq3_line_assert), attotime::from_hz(60*256));
- m_maincpu->set_irq_acknowledge_callback(FUNC(wildpkr_state::tabpkr_irq_ack));
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000) / 2)
+ MCFG_DEVICE_PROGRAM_MAP(tabpkr_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(wildpkr_state, irq3_line_assert, 60*256)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(wildpkr_state, tabpkr_irq_ack)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); // DS1220Y
- MC68681(config, m_duart, 3686400);
- m_duart->irq_cb().set_inputline(m_maincpu, M68K_IRQ_2, ASSERT_LINE);
+ MCFG_DEVICE_ADD("duart", MC68681, 3686400)
+ MCFG_MC68681_IRQ_CALLBACK(ASSERTLINE("maincpu", M68K_IRQ_2))
- DS2401(config, m_id, 0);
+ MCFG_DEVICE_ADD("id", DS2401, 0)
- CLOCK(config, m_dac_clock, 1500000); // base rate derived from program code
- m_dac_clock->signal_handler().set_inputline(m_maincpu, M68K_IRQ_5, ASSERT_LINE);
+ MCFG_DEVICE_ADD("dacclock", CLOCK, 1500000) // base rate derived from program code
+ MCFG_CLOCK_SIGNAL_HANDLER(ASSERTLINE("maincpu", M68K_IRQ_5))
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_size(384, 280);
- screen.set_visarea(0, 384-1, 0, 280-1);
- screen.set_screen_update("acrtc", FUNC(hd63484_device::update_screen));
- screen.set_palette("palette");
- screen.screen_vblank().set_inputline(m_maincpu, M68K_IRQ_4, ASSERT_LINE);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_SIZE(384, 280)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1)
+ MCFG_SCREEN_UPDATE_DEVICE("acrtc", hd63484_device, update_screen)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(ASSERTLINE("maincpu", M68K_IRQ_4))
- HD63484(config, "acrtc", 0).set_addrmap(0, &wildpkr_state::hd63484_map);
+ MCFG_HD63484_ADD("acrtc", 0, hd63484_map)
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, "palette"));
ramdac.set_addrmap(0, &wildpkr_state::ramdac_map);
@@ -531,11 +531,11 @@ void wildpkr_state::tabpkr(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- AD557(config, m_dac, 0).add_route(ALL_OUTPUTS, "mono", 0.50);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", AD557, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/williams.cpp b/src/mame/drivers/williams.cpp
index 29ef3c62400..15cbc10d243 100644
--- a/src/mame/drivers/williams.cpp
+++ b/src/mame/drivers/williams.cpp
@@ -1482,31 +1482,31 @@ GFXDECODE_END
*
*************************************/
-void williams_state::williams(machine_config &config)
-{
+MACHINE_CONFIG_START(williams_state::williams)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, MASTER_CLOCK/3/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &williams_state::williams_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, MASTER_CLOCK/3/4)
+ MCFG_DEVICE_PROGRAM_MAP(williams_map)
- M6808(config, m_soundcpu, SOUND_CLOCK); // internal clock divider of 4, effective frequency is 894.886kHz
- m_soundcpu->set_addrmap(AS_PROGRAM, &williams_state::sound_map);
+ MCFG_DEVICE_ADD("soundcpu", M6808, SOUND_CLOCK) // internal clock divider of 4, effective frequency is 894.886kHz
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
MCFG_MACHINE_START_OVERRIDE(williams_state,williams)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 5101 (Defender), 5114 or 6514 (later games) + battery
// set a timer to go off every 32 scanlines, to toggle the VA11 line and update the screen
- TIMER(config, "scan_timer").configure_scanline(FUNC(williams_state::williams_va11_callback), "screen", 0, 32);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scan_timer", williams_state, williams_va11_callback, "screen", 0, 32)
// also set a timer to go off on scanline 240
- TIMER(config, "240_timer").configure_scanline(FUNC(williams_state::williams_count240_callback), "screen", 0, 240);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("240_timer", williams_state, williams_count240_callback, "screen", 0, 240)
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_SCANLINE | VIDEO_ALWAYS_UPDATE);
- m_screen->set_raw(MASTER_CLOCK*2/3, 512, 6, 298, 260, 7, 247);
- m_screen->set_screen_update(FUNC(williams_state::screen_update_williams));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE | VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK*2/3, 512, 6, 298, 260, 7, 247)
+ MCFG_SCREEN_UPDATE_DRIVER(williams_state, screen_update_williams)
MCFG_VIDEO_START_OVERRIDE(williams_state,williams)
@@ -1514,15 +1514,16 @@ void williams_state::williams(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // mc1408.ic6
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // mc1408.ic6
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
/* pia */
- INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline(m_maincpu, M6809_IRQ_LINE);
+ MCFG_INPUT_MERGER_ANY_HIGH("mainirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", M6809_IRQ_LINE))
- INPUT_MERGER_ANY_HIGH(config, "soundirq").output_handler().set_inputline(m_soundcpu, M6808_IRQ_LINE);
+ MCFG_INPUT_MERGER_ANY_HIGH("soundirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("soundcpu", M6808_IRQ_LINE))
PIA6821(config, m_pia[0], 0);
m_pia[0]->readpa_handler().set_ioport("IN0");
@@ -1538,38 +1539,39 @@ void williams_state::williams(machine_config &config)
m_pia[2]->writepa_handler().set("dac", FUNC(dac_byte_interface::data_w));
m_pia[2]->irqa_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<0>));
m_pia[2]->irqb_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<1>));
-}
+MACHINE_CONFIG_END
-void williams_state::defender(machine_config &config)
-{
+MACHINE_CONFIG_START(williams_state::defender)
williams(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &williams_state::defender_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(defender_map)
- m_soundcpu->set_addrmap(AS_PROGRAM, &williams_state::defender_sound_map);
+ MCFG_DEVICE_MODIFY("soundcpu")
+ MCFG_DEVICE_PROGRAM_MAP(defender_sound_map)
ADDRESS_MAP_BANK(config, "bankc000").set_map(&williams_state::defender_bankc000_map).set_options(ENDIANNESS_BIG, 8, 16, 0x1000);
MCFG_MACHINE_START_OVERRIDE(williams_state,defender)
MCFG_MACHINE_RESET_OVERRIDE(williams_state,defender)
- m_screen->set_visarea(12, 304-1, 7, 247-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(12, 304-1, 7, 247-1)
+MACHINE_CONFIG_END
-void williams_state::jin(machine_config &config) // needs a different screen size or the credit text is clipped
-{
+MACHINE_CONFIG_START(williams_state::jin) // needs a different screen size or the credit text is clipped
defender(config);
/* basic machine hardware */
- m_screen->set_visarea(0, 315, 7, 247-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 315, 7, 247-1)
+MACHINE_CONFIG_END
-void williams_state::williams_muxed(machine_config &config)
-{
+MACHINE_CONFIG_START(williams_state::williams_muxed)
williams(config);
/* basic machine hardware */
@@ -1590,25 +1592,24 @@ void williams_state::williams_muxed(machine_config &config)
LS157(config, m_mux1, 0); // IC4 on interface board (actually LS257 with OC tied low)
m_mux1->a_in_callback().set_ioport("INP2A");
m_mux1->b_in_callback().set_ioport("INP1A");
-}
+MACHINE_CONFIG_END
-void spdball_state::spdball(machine_config &config)
-{
+MACHINE_CONFIG_START(spdball_state::spdball)
williams(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &spdball_state::spdball_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(spdball_map)
/* pia */
PIA6821(config, m_pia[3], 0);
m_pia[3]->readpa_handler().set_ioport("IN3");
m_pia[3]->readpb_handler().set_ioport("IN4");
-}
+MACHINE_CONFIG_END
-void williams_state::lottofun(machine_config &config)
-{
+MACHINE_CONFIG_START(williams_state::lottofun)
williams(config);
/* basic machine hardware */
@@ -1617,60 +1618,63 @@ void williams_state::lottofun(machine_config &config)
m_pia[0]->writepa_handler().set("ticket", FUNC(ticket_dispenser_device::motor_w)).bit(7);
m_pia[0]->ca2_handler().set(FUNC(williams_state::lottofun_coin_lock_w));
- TICKET_DISPENSER(config, "ticket", attotime::from_msec(70), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH);
-}
+ MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(70), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
+MACHINE_CONFIG_END
-void williams_state::sinistar(machine_config &config)
-{
+MACHINE_CONFIG_START(williams_state::sinistar)
williams(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &williams_state::sinistar_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sinistar_map)
/* sound hardware */
- HC55516(config, "cvsd", 0).add_route(ALL_OUTPUTS, "speaker", 0.8);
+ MCFG_DEVICE_ADD("cvsd", HC55516, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.8)
/* pia */
m_pia[0]->readpa_handler().set(FUNC(williams_state::williams_49way_port_0_r));
m_pia[2]->ca2_handler().set("cvsd", FUNC(hc55516_device::digit_w));
m_pia[2]->cb2_handler().set("cvsd", FUNC(hc55516_device::clock_w));
-}
+MACHINE_CONFIG_END
-void williams_state::playball(machine_config &config)
-{
+MACHINE_CONFIG_START(williams_state::playball)
williams(config);
/* basic machine hardware */
/* video hardware */
- m_screen->set_visarea(6, 298-1, 8, 240-1);
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(6, 298-1, 8, 240-1)
/* sound hardware */
- HC55516(config, "cvsd", 0).add_route(ALL_OUTPUTS, "speaker", 0.8);
+ MCFG_DEVICE_ADD("cvsd", HC55516, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.8)
/* pia */
m_pia[1]->writepb_handler().set(FUNC(williams_state::playball_snd_cmd_w));
m_pia[2]->ca2_handler().set("cvsd", FUNC(hc55516_device::digit_w));
m_pia[2]->cb2_handler().set("cvsd", FUNC(hc55516_device::clock_w));
-}
+MACHINE_CONFIG_END
-void blaster_state::blastkit(machine_config &config)
-{
+MACHINE_CONFIG_START(blaster_state::blastkit)
williams(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &blaster_state::blaster_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(blaster_map)
MCFG_MACHINE_START_OVERRIDE(blaster_state,blaster)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(blaster_state,blaster)
- m_screen->set_screen_update(FUNC(blaster_state::screen_update_blaster));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(blaster_state, screen_update_blaster)
/* pia */
m_pia[0]->readpa_handler().set("mux_a", FUNC(ls157_x2_device::output_r));
@@ -1681,16 +1685,15 @@ void blaster_state::blastkit(machine_config &config)
LS157_X2(config, m_muxa, 0);
m_muxa->a_in_callback().set_ioport("IN3");
m_muxa->b_in_callback().set(FUNC(williams_state::williams_49way_port_0_r));
-}
+MACHINE_CONFIG_END
-void blaster_state::blaster(machine_config &config)
-{
+MACHINE_CONFIG_START(blaster_state::blaster)
blastkit(config);
/* basic machine hardware */
- M6808(config, m_soundcpu_b, SOUND_CLOCK); // internal clock divider of 4, effective frequency is 894.886kHz
- m_soundcpu_b->set_addrmap(AS_PROGRAM, &blaster_state::sound_map_b);
+ MCFG_DEVICE_ADD("soundcpu_b", M6808, SOUND_CLOCK) // internal clock divider of 4, effective frequency is 894.886kHz
+ MCFG_DEVICE_PROGRAM_MAP(sound_map_b)
/* pia */
m_pia[0]->readpb_handler().set("mux_b", FUNC(ls157_device::output_r)).mask(0x0f);
@@ -1706,7 +1709,8 @@ void blaster_state::blaster(machine_config &config)
m_muxb->a_in_callback().set_ioport("INP1");
m_muxb->b_in_callback().set_ioport("INP2");
- INPUT_MERGER_ANY_HIGH(config, "soundirq_b").output_handler().set_inputline(m_soundcpu_b, M6808_IRQ_LINE);
+ MCFG_INPUT_MERGER_ANY_HIGH("soundirq_b")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("soundcpu_b", M6808_IRQ_LINE))
m_pia[1]->writepb_handler().set(FUNC(blaster_state::blaster_snd_cmd_w));
@@ -1718,28 +1722,28 @@ void blaster_state::blaster(machine_config &config)
m_pia[3]->irqb_handler().set("soundirq_b", FUNC(input_merger_any_high_device::in_w<1>));
/* sound hardware */
- config.device_remove("speaker");
- config.device_remove("dac");
- config.device_remove("vref");
+ MCFG_DEVICE_REMOVE("speaker")
+ MCFG_DEVICE_REMOVE("dac")
+ MCFG_DEVICE_REMOVE("vref")
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MC1408(config, "ldac", 0).add_route(ALL_OUTPUTS, "lspeaker", 0.25); // unknown DAC
- MC1408(config, "rdac", 0).add_route(ALL_OUTPUTS, "rspeaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("ldac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("rdac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void williams2_state::williams2(machine_config &config)
-{
+MACHINE_CONFIG_START(williams2_state::williams2)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, MASTER_CLOCK/3/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &williams2_state::williams2_d000_ram_map);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, MASTER_CLOCK/3/4)
+ MCFG_DEVICE_PROGRAM_MAP(williams2_d000_ram_map)
- M6808(config, m_soundcpu, MASTER_CLOCK/3); /* yes, this is different from the older games */
- m_soundcpu->set_addrmap(AS_PROGRAM, &williams2_state::williams2_sound_map);
+ MCFG_DEVICE_ADD("soundcpu", M6808, MASTER_CLOCK/3) /* yes, this is different from the older games */
+ MCFG_DEVICE_PROGRAM_MAP(williams2_sound_map)
ADDRESS_MAP_BANK(config, "bank8000").set_map(&williams2_state::williams2_bank8000_map).set_options(ENDIANNESS_BIG, 8, 12, 0x800);
@@ -1748,10 +1752,10 @@ void williams2_state::williams2(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 5114 + battery
// set a timer to go off every 32 scanlines, to toggle the VA11 line and update the screen
- TIMER(config, "scan_timer").configure_scanline(FUNC(williams2_state::williams2_va11_callback), "screen", 0, 32);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scan_timer", williams2_state, williams2_va11_callback, "screen", 0, 32)
// also set a timer to go off on scanline 254
- TIMER(config, "254_timer").configure_scanline(FUNC(williams2_state::williams2_endscreen_callback), "screen", 8, 246);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("254_timer", williams2_state, williams2_endscreen_callback, "screen", 8, 246)
WATCHDOG_TIMER(config, m_watchdog);
@@ -1759,24 +1763,25 @@ void williams2_state::williams2(machine_config &config)
PALETTE(config, m_palette).set_entries(1024);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_williams2);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_SCANLINE | VIDEO_ALWAYS_UPDATE);
- m_screen->set_raw(MASTER_CLOCK*2/3, 512, 8, 284, 260, 8, 248);
- m_screen->set_screen_update(FUNC(williams2_state::screen_update_williams2));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE | VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK*2/3, 512, 8, 284, 260, 8, 248)
+ MCFG_SCREEN_UPDATE_DRIVER(williams2_state, screen_update_williams2)
MCFG_VIDEO_START_OVERRIDE(williams2_state,williams2)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
/* pia */
- INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline(m_maincpu, M6809_IRQ_LINE);
+ MCFG_INPUT_MERGER_ANY_HIGH("mainirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", M6809_IRQ_LINE))
- INPUT_MERGER_ANY_HIGH(config, "soundirq").output_handler().set_inputline(m_soundcpu, M6808_IRQ_LINE);
+ MCFG_INPUT_MERGER_ANY_HIGH("soundirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("soundcpu", M6808_IRQ_LINE))
PIA6821(config, m_pia[0], 0);
m_pia[0]->readpa_handler().set_ioport("IN0");
@@ -1795,11 +1800,10 @@ void williams2_state::williams2(machine_config &config)
m_pia[2]->ca2_handler().set(m_pia[1], FUNC(pia6821_device::cb1_w));
m_pia[2]->irqa_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<0>));
m_pia[2]->irqb_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<1>));
-}
+MACHINE_CONFIG_END
-void williams2_state::inferno(machine_config &config)
-{
+MACHINE_CONFIG_START(williams2_state::inferno)
williams2(config);
m_pia[0]->readpa_handler().set("mux", FUNC(ls157_x2_device::output_r));
m_pia[0]->ca2_handler().set("mux", FUNC(ls157_x2_device::select_w));
@@ -1807,11 +1811,10 @@ void williams2_state::inferno(machine_config &config)
LS157_X2(config, m_mux, 0); // IC45 (for PA4-PA7) + IC46 (for PA0-PA3) on CPU board
m_mux->a_in_callback().set_ioport("INP1");
m_mux->b_in_callback().set_ioport("INP2");
-}
+MACHINE_CONFIG_END
-void williams2_state::mysticm(machine_config &config)
-{
+MACHINE_CONFIG_START(williams2_state::mysticm)
williams2(config);
/* basic machine hardware */
@@ -1822,15 +1825,15 @@ void williams2_state::mysticm(machine_config &config)
m_pia[1]->irqa_handler().set("mainirq", FUNC(input_merger_any_high_device::in_w<1>));
m_pia[1]->irqb_handler().set("mainirq", FUNC(input_merger_any_high_device::in_w<2>));
-}
+MACHINE_CONFIG_END
-void tshoot_state::tshoot(machine_config &config)
-{
+MACHINE_CONFIG_START(tshoot_state::tshoot)
williams2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &tshoot_state::williams2_d000_rom_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(williams2_d000_rom_map)
MCFG_MACHINE_START_OVERRIDE(tshoot_state,tshoot)
@@ -1844,22 +1847,24 @@ void tshoot_state::tshoot(machine_config &config)
m_pia[1]->irqa_handler().set("mainirq", FUNC(input_merger_any_high_device::in_w<2>));
m_pia[1]->irqb_handler().set("mainirq", FUNC(input_merger_any_high_device::in_w<3>));
+ MCFG_DEVICE_MODIFY("pia_2")
m_pia[2]->cb2_handler().set(FUNC(tshoot_state::maxvol_w));
LS157_X2(config, m_mux, 0); // U2 + U3 on interface board
m_mux->a_in_callback().set_ioport("INP1");
m_mux->b_in_callback().set_ioport("INP2");
-}
+MACHINE_CONFIG_END
-void joust2_state::joust2(machine_config &config)
-{
+MACHINE_CONFIG_START(joust2_state::joust2)
williams2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &joust2_state::williams2_d000_rom_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(williams2_d000_rom_map)
- WILLIAMS_CVSD_SOUND(config, m_cvsd_sound).add_route(ALL_OUTPUTS, "speaker", 1.0);
+ MCFG_DEVICE_ADD("cvsd", WILLIAMS_CVSD_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
MCFG_MACHINE_START_OVERRIDE(joust2_state,joust2)
MCFG_MACHINE_RESET_OVERRIDE(joust2_state,joust2)
@@ -1879,7 +1884,7 @@ void joust2_state::joust2(machine_config &config)
LS157(config, m_mux, 0);
m_mux->a_in_callback().set_ioport("INP1");
m_mux->b_in_callback().set_ioport("INP2");
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/wink.cpp b/src/mame/drivers/wink.cpp
index 440e5e652db..91ada6938e2 100644
--- a/src/mame/drivers/wink.cpp
+++ b/src/mame/drivers/wink.cpp
@@ -383,12 +383,11 @@ void wink_state::machine_reset()
m_sound_flag = 0;
}
-void wink_state::wink(machine_config &config)
-{
+MACHINE_CONFIG_START(wink_state::wink)
/* basic machine hardware */
- Z80(config, m_maincpu, 12000000 / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &wink_state::wink_map);
- m_maincpu->set_addrmap(AS_IO, &wink_state::wink_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, 12000000 / 4)
+ MCFG_DEVICE_PROGRAM_MAP(wink_map)
+ MCFG_DEVICE_IO_MAP(wink_io)
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set(FUNC(wink_state::nmi_enable_w));
@@ -400,22 +399,22 @@ void wink_state::wink(machine_config &config)
mainlatch.q_out_cb<6>().set(FUNC(wink_state::coin_counter_w<1>));
mainlatch.q_out_cb<7>().set(FUNC(wink_state::coin_counter_w<2>));
- Z80(config, m_audiocpu, 12000000 / 8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &wink_state::wink_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &wink_state::wink_sound_io);
- m_audiocpu->set_periodic_int(FUNC(wink_state::wink_sound), attotime::from_hz(15625));
+ MCFG_DEVICE_ADD("audiocpu", Z80, 12000000 / 8)
+ MCFG_DEVICE_PROGRAM_MAP(wink_sound_map)
+ MCFG_DEVICE_IO_MAP(wink_sound_io)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(wink_state, wink_sound, 15625)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
- screen.set_screen_update(FUNC(wink_state::screen_update_wink));
- screen.set_palette("palette");
- screen.screen_vblank().set(FUNC(wink_state::nmi_clock_w));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(wink_state, screen_update_wink)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, wink_state, nmi_clock_w))
GFXDECODE(config, m_gfxdecode, "palette", gfx_wink);
PALETTE(config, "palette").set_format(palette_device::xBRG_444, 16);
@@ -428,7 +427,7 @@ void wink_state::wink(machine_config &config)
ay8912_device &aysnd(AY8912(config, "aysnd", 12000000 / 8));
aysnd.port_a_read_callback().set(FUNC(wink_state::sound_r));
aysnd.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/wiping.cpp b/src/mame/drivers/wiping.cpp
index a5bdb311fda..819f68261ba 100644
--- a/src/mame/drivers/wiping.cpp
+++ b/src/mame/drivers/wiping.cpp
@@ -285,16 +285,16 @@ INTERRUPT_GEN_MEMBER(wiping_state::sound_timer_irq)
-void wiping_state::wiping(machine_config &config)
-{
+MACHINE_CONFIG_START(wiping_state::wiping)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 18432000/6); /* 3.072 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &wiping_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(wiping_state::vblank_irq));
+ MCFG_DEVICE_ADD("maincpu", Z80,18432000/6) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", wiping_state, vblank_irq)
- Z80(config, m_audiocpu, 18432000/6); /* 3.072 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &wiping_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(wiping_state::sound_timer_irq), attotime::from_hz(120)); /* periodic interrupt, don't know about the frequency */
+ MCFG_DEVICE_ADD("audiocpu", Z80,18432000/6) /* 3.072 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(wiping_state, sound_timer_irq, 120) /* periodic interrupt, don't know about the frequency */
ls259_device &mainlatch(LS259(config, "mainlatch")); // 5A
mainlatch.q_out_cb<0>().set(FUNC(wiping_state::main_irq_mask_w)); // INT1
@@ -305,13 +305,13 @@ void wiping_state::wiping(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(36*8, 28*8);
- screen.set_visarea(0*8, 36*8-1, 0*8, 28*8-1);
- screen.set_screen_update(FUNC(wiping_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(36*8, 28*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(wiping_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_wiping);
PALETTE(config, m_palette, FUNC(wiping_state::wiping_palette), 64*4+64*4, 32);
@@ -320,7 +320,7 @@ void wiping_state::wiping(machine_config &config)
SPEAKER(config, "mono").front_center();
WIPING_CUSTOM(config, "wiping", 96000).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/witch.cpp b/src/mame/drivers/witch.cpp
index 79b6dad6827..a7031a689f2 100644
--- a/src/mame/drivers/witch.cpp
+++ b/src/mame/drivers/witch.cpp
@@ -224,19 +224,40 @@ TODO :
#include "includes/witch.h"
-TILE_GET_INFO_MEMBER(witch_state::get_gfx0_tile_info)
+TILE_GET_INFO_MEMBER(witch_state::get_gfx0b_tile_info)
{
int code = m_gfx0_vram[tile_index];
int color = m_gfx0_cram[tile_index];
code=code | ((color & 0xe0) << 3);
+ if(color&0x10)
+ {
+ code=0;
+ }
+
SET_TILE_INFO_MEMBER(1,
code, //tiles beyond 0x7ff only for sprites?
color & 0x0f,
0);
+}
+
+TILE_GET_INFO_MEMBER(witch_state::get_gfx0a_tile_info)
+{
+ int code = m_gfx0_vram[tile_index];
+ int color = m_gfx0_cram[tile_index];
+
+ code=code | ((color & 0xe0) << 3);
- tileinfo.category = (color & 0x10) >> 4;
+ if((color&0x10)==0)
+ {
+ code=0;
+ }
+
+ SET_TILE_INFO_MEMBER(1,
+ code,//tiles beyond 0x7ff only for sprites?
+ color & 0x0f,
+ 0);
}
TILE_GET_INFO_MEMBER(witch_state::get_gfx1_tile_info)
@@ -263,9 +284,11 @@ TILE_GET_INFO_MEMBER(keirinou_state::get_keirinou_gfx1_tile_info)
void witch_state::video_common_init()
{
- m_gfx0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(witch_state::get_gfx0_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32);
+ m_gfx0a_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(witch_state::get_gfx0a_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32);
+ m_gfx0b_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(witch_state::get_gfx0b_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32);
- m_gfx0_tilemap->set_transparent_pen(0);
+ m_gfx0a_tilemap->set_transparent_pen(0);
+ m_gfx0b_tilemap->set_transparent_pen(0);
save_item(NAME(m_scrollx));
save_item(NAME(m_scrolly));
@@ -278,7 +301,8 @@ void witch_state::video_start()
video_common_init();
m_gfx1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(witch_state::get_gfx1_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32);
- m_gfx0_tilemap->set_palette_offset(0x100);
+ m_gfx0a_tilemap->set_palette_offset(0x100);
+ m_gfx0b_tilemap->set_palette_offset(0x100);
m_gfx1_tilemap->set_palette_offset(0x200);
has_spr_rom_bank = false;
@@ -290,7 +314,8 @@ void keirinou_state::video_start()
video_common_init();
m_gfx1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(keirinou_state::get_keirinou_gfx1_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32);
- m_gfx0_tilemap->set_palette_offset(0x000);
+ m_gfx0a_tilemap->set_palette_offset(0x000);
+ m_gfx0b_tilemap->set_palette_offset(0x000);
m_gfx1_tilemap->set_palette_offset(0x100);
save_item(NAME(m_spr_bank));
@@ -345,28 +370,30 @@ void witch_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
}
}
-uint32_t witch_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t witch_state::screen_update_witch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_gfx1_tilemap->set_scrollx(0, m_scrollx-7 ); //offset to have it aligned with the sprites
m_gfx1_tilemap->set_scrolly(0, m_scrolly+8 );
m_gfx1_tilemap->draw(screen, bitmap, cliprect, 0,0);
- m_gfx0_tilemap->draw(screen, bitmap, cliprect, 1,0);
+ m_gfx0a_tilemap->draw(screen, bitmap, cliprect, 0,0);
draw_sprites(bitmap, cliprect);
- m_gfx0_tilemap->draw(screen, bitmap, cliprect, 0,0);
+ m_gfx0b_tilemap->draw(screen, bitmap, cliprect, 0,0);
return 0;
}
WRITE8_MEMBER(witch_state::gfx0_vram_w)
{
m_gfx0_vram[offset] = data;
- m_gfx0_tilemap->mark_tile_dirty(offset);
+ m_gfx0a_tilemap->mark_tile_dirty(offset);
+ m_gfx0b_tilemap->mark_tile_dirty(offset);
}
WRITE8_MEMBER(witch_state::gfx0_cram_w)
{
m_gfx0_cram[offset] = data;
- m_gfx0_tilemap->mark_tile_dirty(offset);
+ m_gfx0a_tilemap->mark_tile_dirty(offset);
+ m_gfx0b_tilemap->mark_tile_dirty(offset);
}
#define FIX_OFFSET() do { \
@@ -927,23 +954,22 @@ void witch_state::machine_reset()
m_motor_active = (ioport("YM_PortB")->read() & 0x08) ? 0 : 1;
}
-void witch_state::witch(machine_config &config)
-{
+MACHINE_CONFIG_START(witch_state::witch)
/* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK); /* 3 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &witch_state::witch_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(witch_state::irq0_line_assert));
+ MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLOCK) /* 3 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(witch_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", witch_state, irq0_line_assert)
/* 2nd z80 */
- Z80(config, m_subcpu, CPU_CLOCK); /* 3 MHz */
- m_subcpu->set_addrmap(AS_PROGRAM, &witch_state::witch_sub_map);
- m_subcpu->set_vblank_int("screen", FUNC(witch_state::irq0_line_assert));
+ MCFG_DEVICE_ADD("sub", Z80, CPU_CLOCK) /* 3 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(witch_sub_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", witch_state, irq0_line_assert)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TICKET_DISPENSER(config, m_hopper, attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
// 82C255 (actual chip on PCB) is equivalent to two 8255s
I8255(config, m_ppi[0]);
@@ -957,15 +983,15 @@ void witch_state::witch(machine_config &config)
m_ppi[1]->out_pc_callback().set(FUNC(witch_state::write_a006));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(256, 256);
- screen.set_visarea(8, 256-1-8, 8*4, 256-8*4-1);
- screen.set_screen_update(FUNC(witch_state::screen_update));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_witch);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(8, 256-1-8, 8*4, 256-8*4-1)
+ MCFG_SCREEN_UPDATE_DRIVER(witch_state, screen_update_witch)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_witch)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x800);
/* sound hardware */
@@ -989,18 +1015,19 @@ void witch_state::witch(machine_config &config)
ym2.port_a_write_callback().set(FUNC(witch_state::xscroll_w));
ym2.port_b_write_callback().set(FUNC(witch_state::yscroll_w));
ym2.add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+MACHINE_CONFIG_END
-void keirinou_state::keirinou(machine_config &config)
-{
+MACHINE_CONFIG_START(keirinou_state::keirinou)
witch(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &keirinou_state::keirinou_main_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(keirinou_main_map)
- m_subcpu->set_addrmap(AS_PROGRAM, &keirinou_state::keirinou_sub_map);
+ MCFG_DEVICE_MODIFY("sub")
+ MCFG_DEVICE_PROGRAM_MAP(keirinou_sub_map)
PALETTE(config.replace(), m_palette).set_entries(0x200+0x80);
- m_gfxdecode->set_info(gfx_keirinou);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_keirinou)
// MCFG_PALETTE_FORMAT(IIBBGGRR)
@@ -1017,15 +1044,16 @@ void keirinou_state::keirinou(machine_config &config)
ay2.port_b_write_callback().set(FUNC(witch_state::yscroll_w));
ay2.add_route(ALL_OUTPUTS, "mono", 0.5);
- config.device_remove("essnd");
- config.device_remove("msm");
- config.device_remove("ym1");
- config.device_remove("ym2");
-}
+ MCFG_DEVICE_REMOVE("essnd")
+ MCFG_DEVICE_REMOVE("msm")
+ MCFG_DEVICE_REMOVE("ym1")
+ MCFG_DEVICE_REMOVE("ym2")
+MACHINE_CONFIG_END
ROM_START( witch )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD( "u_5b.u5", 0x00000, 0x20000, CRC(5c9f685a) SHA1(b75950048009ffb8c3b356592b1c69f905a1a2bd) )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "u_5b.u5", 0x10000, 0x20000, CRC(5c9f685a) SHA1(b75950048009ffb8c3b356592b1c69f905a1a2bd) )
+ ROM_COPY( "maincpu" , 0x10000, 0x0000, 0x8000 )
ROM_REGION( 0x10000, "sub", 0 )
ROM_LOAD( "6.s6", 0x00000, 0x08000, CRC(82460b82) SHA1(d85a9d77edaa67dfab8ff6ac4cb6273f0904b3c0) )
@@ -1046,8 +1074,9 @@ ROM_END
/* Witch (With ranking) */
ROM_START( witchb )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD( "x.u5", 0x00000, 0x20000, CRC(d0818777) SHA1(a6232fef84bec3cfb4a6122a48e96e7b7950e013) )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "x.u5", 0x10000, 0x20000, CRC(d0818777) SHA1(a6232fef84bec3cfb4a6122a48e96e7b7950e013) )
+ ROM_COPY( "maincpu" , 0x10000, 0x0000, 0x8000 )
ROM_REGION( 0x10000, "sub", 0 )
ROM_LOAD( "6.s6", 0x00000, 0x08000, CRC(82460b82) SHA1(d85a9d77edaa67dfab8ff6ac4cb6273f0904b3c0) )
@@ -1067,8 +1096,9 @@ ROM_END
ROM_START( witchs ) /* this set has (c)1992 Sega / Vic Tokai in the roms */
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD( "rom.u5", 0x00000, 0x20000, CRC(348fccb8) SHA1(947defd86c4a597fbfb9327eec4903aa779b3788) )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "rom.u5", 0x10000, 0x20000, CRC(348fccb8) SHA1(947defd86c4a597fbfb9327eec4903aa779b3788) )
+ ROM_COPY( "maincpu" , 0x10000, 0x0000, 0x8000 )
ROM_REGION( 0x10000, "sub", 0 )
ROM_LOAD( "6.s6", 0x00000, 0x08000, CRC(82460b82) SHA1(d85a9d77edaa67dfab8ff6ac4cb6273f0904b3c0) ) /* Same data as the Witch set */
@@ -1088,8 +1118,9 @@ ROM_END
ROM_START( pbchmp95 ) /* Licensed for Germany? */
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD( "3.bin", 0x00000, 0x20000, CRC(e881aa05) SHA1(10d259396cac4b9a1b72c262c11ffa5efbdac433) )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "3.bin", 0x10000, 0x20000, CRC(e881aa05) SHA1(10d259396cac4b9a1b72c262c11ffa5efbdac433) )
+ ROM_COPY( "maincpu" , 0x10000, 0x0000, 0x8000 )
ROM_REGION( 0x10000, "sub", 0 )
ROM_LOAD( "4.bin", 0x00000, 0x08000, CRC(82460b82) SHA1(d85a9d77edaa67dfab8ff6ac4cb6273f0904b3c0) ) /* Same data as the Witch set */
@@ -1133,7 +1164,7 @@ ROM_END
void witch_state::init_witch()
{
- m_mainbank->configure_entries(0, 4, memregion("maincpu")->base() + UNBANKED_SIZE, 0x8000);
+ m_mainbank->configure_entries(0, 4, memregion("maincpu")->base() + 0x10000 + UNBANKED_SIZE, 0x8000);
m_mainbank->set_entry(0);
m_subcpu->space(AS_PROGRAM).install_read_handler(0x7000, 0x700f, read8_delegate(FUNC(witch_state::prot_read_700x), this));
diff --git a/src/mame/drivers/wiz.cpp b/src/mame/drivers/wiz.cpp
index fa0228a83bb..c5f5df16ded 100644
--- a/src/mame/drivers/wiz.cpp
+++ b/src/mame/drivers/wiz.cpp
@@ -790,25 +790,25 @@ INTERRUPT_GEN_MEMBER(wiz_state::wiz_sound_interrupt)
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
-void wiz_state::kungfut(machine_config &config)
-{
+MACHINE_CONFIG_START(wiz_state::kungfut)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 18432000/6); /* 3.072 MHz ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &wiz_state::kungfut_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(wiz_state::wiz_vblank_interrupt));
+ MCFG_DEVICE_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(kungfut_main_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", wiz_state, wiz_vblank_interrupt)
- Z80(config, m_audiocpu, 18432000/6); /* 3.072 MHz ??? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &wiz_state::kungfut_sound_map);
- m_audiocpu->set_periodic_int(FUNC(wiz_state::wiz_sound_interrupt), attotime::from_hz(4*60)); /* ??? */
+ MCFG_DEVICE_ADD("audiocpu", Z80, 18432000/6) /* 3.072 MHz ??? */
+ MCFG_DEVICE_PROGRAM_MAP(kungfut_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(wiz_state, wiz_sound_interrupt, 4*60) /* ??? */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */ );
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(wiz_state::screen_update_kungfut));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */ )
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(wiz_state, screen_update_kungfut)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_stinger);
PALETTE(config, m_palette, FUNC(wiz_state::wiz_palette), 256);
@@ -823,54 +823,57 @@ void wiz_state::kungfut(machine_config &config)
AY8910(config, "8910.2", 18432000/12).add_route(ALL_OUTPUTS, "mono", 0.10);
AY8910(config, "8910.3", 18432000/12).add_route(ALL_OUTPUTS, "mono", 0.10);
-}
+MACHINE_CONFIG_END
-void wiz_state::wiz(machine_config &config)
-{
+MACHINE_CONFIG_START(wiz_state::wiz)
kungfut(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &wiz_state::wiz_main_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(wiz_main_map)
/* video hardware */
- m_gfxdecode->set_info(gfx_wiz);
- subdevice<screen_device>("screen")->set_screen_update(FUNC(wiz_state::screen_update_wiz));
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_wiz)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(wiz_state, screen_update_wiz)
+MACHINE_CONFIG_END
-void wiz_state::stinger(machine_config &config)
-{
+MACHINE_CONFIG_START(wiz_state::stinger)
kungfut(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &wiz_state::stinger_main_map);
- m_maincpu->set_addrmap(AS_OPCODES, &wiz_state::decrypted_opcodes_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(stinger_main_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
/* basic machine hardware */
- m_audiocpu->set_addrmap(AS_PROGRAM, &wiz_state::stinger_sound_map);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(stinger_sound_map)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- subdevice<screen_device>("screen")->set_screen_update(FUNC(wiz_state::screen_update_stinger));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(wiz_state, screen_update_stinger)
/* sound hardware */
- config.device_remove("8910.3");
+ MCFG_DEVICE_REMOVE("8910.3")
- DISCRETE(config, m_discrete, stinger_discrete).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
+ MCFG_DEVICE_ADD("discrete", DISCRETE, stinger_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
-void wiz_state::scion(machine_config &config)
-{
+MACHINE_CONFIG_START(wiz_state::scion)
stinger(config);
- Z80(config.replace(), m_maincpu, 18432000/6); /* 3.072 MHz ??? */
- m_maincpu->set_addrmap(AS_PROGRAM, &wiz_state::stinger_main_map);
- m_maincpu->set_vblank_int("screen", FUNC(wiz_state::wiz_vblank_interrupt));
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES)
/* video hardware */
- subdevice<screen_device>("screen")->set_visarea(2*8, 32*8-1, 2*8, 30*8-1);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(2*8, 32*8-1, 2*8, 30*8-1)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/wmg.cpp b/src/mame/drivers/wmg.cpp
index b0b521ee4d4..e0476dd4ad3 100644
--- a/src/mame/drivers/wmg.cpp
+++ b/src/mame/drivers/wmg.cpp
@@ -488,7 +488,7 @@ READ8_MEMBER( wmg_state::wmg_pia_0_r )
Since there is no code in rom to handle this, it must be a hardware feature
which probably just resets the cpu. */
- uint8_t data = m_pia[0]->read(offset);
+ uint8_t data = m_pia[0]->read(space, offset);
if ((m_wmg_c400) && (offset == 0) && ((data & 0x30) == 0x30)) // P1 and P2 pressed
{
@@ -515,32 +515,32 @@ void wmg_state::init_wmg()
* Machine Driver
*
*************************************/
-void wmg_state::wmg(machine_config &config)
-{
+MACHINE_CONFIG_START(wmg_state::wmg)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, MASTER_CLOCK/3/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &wmg_state::wmg_cpu1);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, MASTER_CLOCK/3/4)
+ MCFG_DEVICE_PROGRAM_MAP(wmg_cpu1)
- M6808(config, m_soundcpu, SOUND_CLOCK);
- m_soundcpu->set_addrmap(AS_PROGRAM, &wmg_state::wmg_cpu2);
+ MCFG_DEVICE_ADD("soundcpu", M6808, SOUND_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(wmg_cpu2)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
ADDRESS_MAP_BANK(config, "bankc000").set_map(&wmg_state::wmg_banked_map).set_options(ENDIANNESS_BIG, 8, 16, 0x1000);
// set a timer to go off every 32 scanlines, to toggle the VA11 line and update the screen
- TIMER(config, "scan_timer").configure_scanline(FUNC(williams_state::williams_va11_callback), "screen", 0, 32);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scan_timer", williams_state, williams_va11_callback, "screen", 0, 32)
// also set a timer to go off on scanline 240
- TIMER(config, "240_timer").configure_scanline(FUNC(williams_state::williams_count240_callback), "screen", 0, 240);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("240_timer", williams_state, williams_count240_callback, "screen", 0, 240)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_SCANLINE | VIDEO_ALWAYS_UPDATE);
- m_screen->set_raw(MASTER_CLOCK*2/3, 512, 6, 298, 260, 7, 247);
- m_screen->set_screen_update(FUNC(williams_state::screen_update_williams));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE | VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK*2/3, 512, 6, 298, 260, 7, 247)
+ MCFG_SCREEN_UPDATE_DRIVER(williams_state, screen_update_williams)
MCFG_VIDEO_START_OVERRIDE(williams_state,williams)
@@ -549,15 +549,16 @@ void wmg_state::wmg(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
/* pia */
- INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline(m_maincpu, M6809_IRQ_LINE);
+ MCFG_INPUT_MERGER_ANY_HIGH("mainirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", M6809_IRQ_LINE))
- INPUT_MERGER_ANY_HIGH(config, "soundirq").output_handler().set_inputline(m_soundcpu, M6808_IRQ_LINE);
+ MCFG_INPUT_MERGER_ANY_HIGH("soundirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("soundcpu", M6808_IRQ_LINE))
pia6821_device &pia0(PIA6821(config, "pia_0", 0));
pia0.readpa_handler().set_ioport("IN0");
@@ -574,7 +575,7 @@ void wmg_state::wmg(machine_config &config)
pia2.writepa_handler().set("dac", FUNC(dac_byte_interface::data_w));
pia2.irqa_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<0>));
pia2.irqb_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<1>));
-}
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/wms.cpp b/src/mame/drivers/wms.cpp
index b06a92ef97b..6cd6df6855a 100644
--- a/src/mame/drivers/wms.cpp
+++ b/src/mame/drivers/wms.cpp
@@ -178,29 +178,28 @@ static GFXDECODE_START( gfx_wms )
GFXDECODE_END
-void wms_state::wms(machine_config &config)
-{
+MACHINE_CONFIG_START(wms_state::wms)
/* basic machine hardware */
- I80188(config, m_maincpu, MAIN_CLOCK); // AMD N80C188-20, ( 40 MHz. internally divided by 2)
- m_maincpu->set_addrmap(AS_PROGRAM, &wms_state::wms_map);
- m_maincpu->set_addrmap(AS_IO, &wms_state::wms_io);
-
- adsp2105_device &adsp(ADSP2105(config, "adsp", MAIN_CLOCK / 2)); // ADSP-2105 could run either at 13.824 or 20 MHz...
- adsp.set_disable();
- adsp.set_addrmap(AS_PROGRAM, &wms_state::adsp_program_map);
- adsp.set_addrmap(AS_DATA, &wms_state::adsp_data_map);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(wms_state::screen_update_wms));
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_wms);
- PALETTE(config, "palette").set_entries(0x100);
-}
+ MCFG_DEVICE_ADD("maincpu", I80188, MAIN_CLOCK ) // AMD N80C188-20, ( 40 MHz. internally divided by 2)
+ MCFG_DEVICE_PROGRAM_MAP(wms_map)
+ MCFG_DEVICE_IO_MAP(wms_io)
+
+ MCFG_DEVICE_ADD("adsp", ADSP2105, MAIN_CLOCK / 2) // ADSP-2105 could run either at 13.824 or 20 MHz...
+ MCFG_DEVICE_DISABLE()
+ MCFG_DEVICE_PROGRAM_MAP(adsp_program_map)
+ MCFG_DEVICE_DATA_MAP(adsp_data_map)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(wms_state, screen_update_wms)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_wms)
+ MCFG_PALETTE_ADD("palette", 0x100)
+MACHINE_CONFIG_END
/*********************************************
diff --git a/src/mame/drivers/wolfpack.cpp b/src/mame/drivers/wolfpack.cpp
index 611f453464f..da7cb3e1449 100644
--- a/src/mame/drivers/wolfpack.cpp
+++ b/src/mame/drivers/wolfpack.cpp
@@ -306,31 +306,31 @@ static GFXDECODE_START( gfx_wolfpack )
GFXDECODE_END
-void wolfpack_state::wolfpack(machine_config &config)
-{
+MACHINE_CONFIG_START(wolfpack_state::wolfpack)
+
/* basic machine hardware */
- M6502(config, m_maincpu, 12096000 / 16);
- m_maincpu->set_addrmap(AS_PROGRAM, &wolfpack_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M6502, 12096000 / 16)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(512, 262);
- m_screen->set_visarea(0, 511, 16, 239);
- m_screen->set_screen_update(FUNC(wolfpack_state::screen_update));
- m_screen->screen_vblank().set(FUNC(wolfpack_state::screen_vblank));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_wolfpack);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(512, 262)
+ MCFG_SCREEN_VISIBLE_AREA(0, 511, 16, 239)
+ MCFG_SCREEN_UPDATE_DRIVER(wolfpack_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, wolfpack_state, screen_vblank))
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_wolfpack)
PALETTE(config, m_palette, FUNC(wolfpack_state::wolfpack_palette), 12, 8);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- S14001A(config, m_s14001a, 20000); /* RC Clock (C=100pf, R=470K-670K ohms, adjustable) ranging from 14925.37313hz to 21276.59574hz, likely factory set to 20000hz since anything below 19500 is too slow */
- m_s14001a->add_route(ALL_OUTPUTS, "mono", 1.00);
-}
+ MCFG_DEVICE_ADD("speech", S14001A, 20000) /* RC Clock (C=100pf, R=470K-670K ohms, adjustable) ranging from 14925.37313hz to 21276.59574hz, likely factory set to 20000hz since anything below 19500 is too slow */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+MACHINE_CONFIG_END
ROM_START( wolfpack )
diff --git a/src/mame/drivers/wpc_95.cpp b/src/mame/drivers/wpc_95.cpp
index d3d26e0d27f..42312011bc5 100644
--- a/src/mame/drivers/wpc_95.cpp
+++ b/src/mame/drivers/wpc_95.cpp
@@ -2249,24 +2249,22 @@ static INPUT_PORTS_START( ttt )
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("UL Flipper Button")
INPUT_PORTS_END
-void wpc_95_state::wpc_95(machine_config &config)
-{
+MACHINE_CONFIG_START(wpc_95_state::wpc_95)
/* basic machine hardware */
- MC6809E(config, maincpu, XTAL(8'000'000)/4); // 68B09E
- maincpu->set_addrmap(AS_PROGRAM, &wpc_95_state::wpc_95_map);
- maincpu->set_periodic_int(FUNC(wpc_95_state::irq0_line_assert), attotime::from_hz(XTAL(8'000'000)/8192.0));
-
- TIMER(config, "zero_crossing").configure_periodic(FUNC(wpc_95_state::zc_timer), attotime::from_hz(120)); // Mains power zero crossing
-
- WPC_PIC(config, pic, 0);
- WPC_LAMP(config, lamp, 0);
- WPC_OUT(config, out, 0, 3);
- WPC_SHIFT(config, "shift", 0);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(8'000'000)/4) // 68B09E
+ MCFG_DEVICE_PROGRAM_MAP(wpc_95_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(wpc_95_state, irq0_line_assert, XTAL(8'000'000)/8192.0)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("zero_crossing", wpc_95_state, zc_timer, attotime::from_hz(120)) // Mains power zero crossing
+
+ MCFG_DEVICE_ADD("pic", WPC_PIC, 0)
+ MCFG_DEVICE_ADD("lamp", WPC_LAMP, 0)
+ MCFG_DEVICE_ADD("out", WPC_OUT, 0, 3)
+ MCFG_DEVICE_ADD("shift", WPC_SHIFT, 0)
WPC_DMD(config, "dmd", 0).scanline_callback().set(FUNC(wpc_95_state::scanline_irq));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
DCS_AUDIO_WPC(config, dcs, 0);
-}
+MACHINE_CONFIG_END
/*-----------------
/ Attack From Mars #50041
diff --git a/src/mame/drivers/wpc_dcs.cpp b/src/mame/drivers/wpc_dcs.cpp
index 3c14a1f7fe4..a1b988f0bba 100644
--- a/src/mame/drivers/wpc_dcs.cpp
+++ b/src/mame/drivers/wpc_dcs.cpp
@@ -424,23 +424,22 @@ static INPUT_PORTS_START( wpc_dcs )
INPUT_PORTS_END
-void wpc_dcs_state::wpc_dcs(machine_config &config)
-{
+MACHINE_CONFIG_START(wpc_dcs_state::wpc_dcs)
/* basic machine hardware */
- M6809(config, maincpu, XTAL(8'000'000)/4);
- maincpu->set_addrmap(AS_PROGRAM, &wpc_dcs_state::wpc_dcs_map);
- maincpu->set_periodic_int(FUNC(wpc_dcs_state::irq0_line_assert), attotime::from_hz(XTAL(8'000'000)/8192.0));
+ MCFG_DEVICE_ADD("maincpu", M6809, XTAL(8'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(wpc_dcs_map)
- TIMER(config, "zero_crossing").configure_periodic(FUNC(wpc_dcs_state::zc_timer), attotime::from_hz(120)); // Mains power zero crossing
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(wpc_dcs_state, irq0_line_assert, XTAL(8'000'000)/8192.0)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("zero_crossing", wpc_dcs_state, zc_timer, attotime::from_hz(120)) // Mains power zero crossing
- WPC_LAMP(config, lamp, 0);
- WPC_OUT(config, out, 0, 3);
- WPC_SHIFT(config, "shift", 0);
+ MCFG_DEVICE_ADD("lamp", WPC_LAMP, 0)
+ MCFG_DEVICE_ADD("out", WPC_OUT, 0, 3)
+ MCFG_DEVICE_ADD("shift", WPC_SHIFT, 0)
WPC_DMD(config, "dmd", 0).scanline_callback().set(FUNC(wpc_dcs_state::scanline_irq));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
DCS_AUDIO_8K(config, dcs, 0);
-}
+MACHINE_CONFIG_END
/*-------------
/ Demolition Man #50028
@@ -860,19 +859,6 @@ ROM_START(sttng_l3)
ROM_LOAD16_BYTE("ng_u8_s.l1", 0xc00000, 0x080000, CRC(c9fb065e) SHA1(c148178ee0ea787acc88078db01d17073e75fdc7))
ROM_END
-ROM_START(sttng_l5)
- ROM_REGION(0x80000, "maincpu", 0)
- ROM_LOAD("trek_lx5.rom", 0x00000, 0x80000, CRC(e004f3a7) SHA1(c724641106115e3f14bbe3998771823d0ac12d69))
- ROM_REGION16_LE(0x1000000, "dcs",0)
- ROM_LOAD16_BYTE("ng_u2_s.l1", 0x000000, 0x080000, CRC(c3bd7bf5) SHA1(2476ff90232a52d667a407fac81ee4db028b94e5))
- ROM_LOAD16_BYTE("ng_u3_s.l1", 0x200000, 0x080000, CRC(9456cac7) SHA1(83e415e0f21bb5418f3677dbc13433e056c523ab))
- ROM_LOAD16_BYTE("ng_u4_s.l1", 0x400000, 0x080000, CRC(179d22a4) SHA1(456b7189e23d4e2bd7e2a6249fa2a73bf0e12194))
- ROM_LOAD16_BYTE("ng_u5_s.l1", 0x600000, 0x080000, CRC(231a3e72) SHA1(081b1a042e62ccb723788059d6c1e00b9b32c778))
- ROM_LOAD16_BYTE("ng_u6_s.l1", 0x800000, 0x080000, CRC(bb21377d) SHA1(229fb42a1f8b22727a809e5d63f26f045a2adda5))
- ROM_LOAD16_BYTE("ng_u7_s.l1", 0xa00000, 0x080000, CRC(d81b39f0) SHA1(3443e7327c755b85a5b390f7fcd0e9923890425a))
- ROM_LOAD16_BYTE("ng_u8_s.l1", 0xc00000, 0x080000, CRC(c9fb065e) SHA1(c148178ee0ea787acc88078db01d17073e75fdc7))
-ROM_END
-
/*-------------
/ Addams Family Values (Coin Dropper)
@@ -906,7 +892,6 @@ GAME(1994, pop_lx5, 0, wpc_dcs, wpc_dcs, wpc_dcs_state, init_pop
GAME(1994, pop_la4, pop_lx5, wpc_dcs, wpc_dcs, wpc_dcs_state, init_pop, ROT0, "Bally", "Popeye Saves The Earth (LA-4)", MACHINE_MECHANICAL)
GAME(1994, pop_pa3, pop_lx5, wpc_dcs, wpc_dcs, wpc_dcs_state, init_pop, ROT0, "Bally", "Popeye Saves The Earth (PA-3)", MACHINE_MECHANICAL)
GAME(1994, sttng_l7, 0, wpc_dcs, wpc_dcs, wpc_dcs_state, init_sttng, ROT0, "Williams", "Star Trek: The Next Generation (LX-7)", MACHINE_MECHANICAL)
-GAME(1994, sttng_l5, sttng_l7, wpc_dcs, wpc_dcs, wpc_dcs_state, init_sttng, ROT0, "Williams", "Star Trek: The Next Generation (LX-5)", MACHINE_MECHANICAL)
GAME(1994, sttng_x7, sttng_l7, wpc_dcs, wpc_dcs, wpc_dcs_state, init_sttng, ROT0, "Williams", "Star Trek: The Next Generation (LX-7 Special)", MACHINE_MECHANICAL)
GAME(1993, sttng_p8, sttng_l7, wpc_dcs, wpc_dcs, wpc_dcs_state, init_sttng, ROT0, "Williams", "Star Trek: The Next Generation (P-8)", MACHINE_MECHANICAL)
GAME(1993, sttng_p5, sttng_l7, wpc_dcs, wpc_dcs, wpc_dcs_state, init_sttng, ROT0, "Williams", "Star Trek: The Next Generation (P-5)", MACHINE_MECHANICAL)
diff --git a/src/mame/drivers/wpc_s.cpp b/src/mame/drivers/wpc_s.cpp
index d6d5e09e2c5..be54001da58 100644
--- a/src/mame/drivers/wpc_s.cpp
+++ b/src/mame/drivers/wpc_s.cpp
@@ -1971,24 +1971,22 @@ static INPUT_PORTS_START( tfs )
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("UL Flipper Button")
INPUT_PORTS_END
-void wpc_s_state::wpc_s(machine_config &config)
-{
+MACHINE_CONFIG_START(wpc_s_state::wpc_s)
/* basic machine hardware */
- MC6809E(config, maincpu, XTAL(8'000'000)/4);
- maincpu->set_addrmap(AS_PROGRAM, &wpc_s_state::wpc_s_map);
- maincpu->set_periodic_int(FUNC(wpc_s_state::irq0_line_assert), attotime::from_hz(XTAL(8'000'000)/8192.0));
-
- TIMER(config, "zero_crossing").configure_periodic(FUNC(wpc_s_state::zc_timer), attotime::from_hz(120)); // Mains power zero crossing
-
- WPC_SHIFT(config, "shift", 0);
- WPC_PIC(config, pic, 0);
- WPC_LAMP(config, lamp, 0);
- WPC_OUT(config, out, 0, 5);
+ MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(8'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(wpc_s_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(wpc_s_state, irq0_line_assert, XTAL(8'000'000)/8192.0)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("zero_crossing", wpc_s_state, zc_timer, attotime::from_hz(120)) // Mains power zero crossing
+
+ MCFG_DEVICE_ADD("shift", WPC_SHIFT, 0)
+ MCFG_DEVICE_ADD("pic", WPC_PIC, 0)
+ MCFG_DEVICE_ADD("lamp", WPC_LAMP, 0)
+ MCFG_DEVICE_ADD("out", WPC_OUT, 0, 5)
WPC_DMD(config, "dmd", 0).scanline_callback().set(FUNC(wpc_s_state::scanline_irq));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
DCS_AUDIO_8K(config, dcs, 0);
-}
+MACHINE_CONFIG_END
/*-----------------
/ Corvette #50036
diff --git a/src/mame/drivers/wrally.cpp b/src/mame/drivers/wrally.cpp
index 55995779471..e186e6a9936 100644
--- a/src/mame/drivers/wrally.cpp
+++ b/src/mame/drivers/wrally.cpp
@@ -264,26 +264,25 @@ static GFXDECODE_START( gfx_wrally )
GFXDECODE_END
-void wrally_state::wrally(machine_config &config)
-{
+MACHINE_CONFIG_START(wrally_state::wrally)
/* basic machine hardware */
- M68000(config, m_maincpu, XTAL(24'000'000)/2); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &wrally_state::wrally_map);
- m_maincpu->set_vblank_int("screen", FUNC(wrally_state::irq6_line_hold));
+ MCFG_DEVICE_ADD("maincpu", M68000,XTAL(24'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(wrally_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", wrally_state, irq6_line_hold)
- gaelco_ds5002fp_device &ds5002(GAELCO_DS5002FP(config, "gaelco_ds5002fp", XTAL(24'000'000) / 2)); /* verified on pcb */
- ds5002.set_addrmap(0, &wrally_state::mcu_hostmem_map);
+ MCFG_DEVICE_ADD("gaelco_ds5002fp", GAELCO_DS5002FP, XTAL(24'000'000) / 2) /* verified on pcb */
+ MCFG_DEVICE_ADDRESS_MAP(0, mcu_hostmem_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(64*16, 32*16);
- screen.set_visarea(8, 24*16-8-1, 16, 16*16-8-1);
- screen.set_screen_update(FUNC(wrally_state::screen_update));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_wrally);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(64*16, 32*16)
+ MCFG_SCREEN_VISIBLE_AREA(8, 24*16-8-1, 16, 16*16-8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(wrally_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_wrally)
PALETTE(config, m_palette).set_format(palette_device::xBRG_444, 1024*8);
GAELCO_WRALLY_SPRITES(config, m_sprites, 0);
@@ -303,10 +302,10 @@ void wrally_state::wrally(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(1'000'000), okim6295_device::PIN7_HIGH)); /* verified on pcb */
- oki.set_addrmap(0, &wrally_state::oki_map);
- oki.add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(1'000'000), okim6295_device::PIN7_HIGH) /* verified on pcb */
+ MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
ROM_START( wrally )
diff --git a/src/mame/drivers/wrlshunt.cpp b/src/mame/drivers/wrlshunt.cpp
deleted file mode 100644
index e2c129169c6..00000000000
--- a/src/mame/drivers/wrlshunt.cpp
+++ /dev/null
@@ -1,179 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Ryan Holtz
-/******************************************************************************
-
- Wireless Hunting Video Game System skeleton driver
-
- System: Wireless Hunting Video Game System
- Publisher: Hamy / Kids Station Toys Inc
- Year: 2011
- ROM: FDI MSP55LV100G
- RAM: Micron Technology 48LC8M16A2
-
- Games:
- Secret Mission
- Predator
- Delta Force
- Toy Land
- Dream Forest
- Trophy Season
- Freedom Force
- Be Careful
- Net Power
- Open Training
- Super Archer
- Ultimate Frisbee
- UFO Shooting
- Happy Darts
- Balloon Shoot
- Avatair
- Angry Pirate
- Penguin War
- Ghost Shooter
- Duck Hunt
-
-
- ROM Board:
- Package: SO44
- Spacing: 1.27 mm
- Width: 16.14 mm
- Length: 27.78 mm
- Voltage: 3V
- Pinout:
-
- A25 A24
- | |
- +--------------------------+
- A21 --|== # # `.__.' ==|-- A20
- A18 --|== ==|-- A19
- A17 --|== ==|-- A8
- A7 --|== ==|-- A9
- A6 --|== o ==|-- A10
- A5 --|== +----------------+ ==|-- A11
- A4 --|== | | ==|-- A12
- A3 --|== | MSP55LV100G | ==|-- A13
- A2 --|== | 0834 M02H | ==|-- A14
- A1 --|== | JAPAN | ==|-- A15
- A0 --|== | | ==|-- A16
- #CE --|== | | ==|-- A23
- GND --|== | | ==|-- A22
- #OE --|== | | ==|-- Q15
- Q0 --|== | | ==|-- Q7
- Q8 --|== | | ==|-- Q14
- Q1 --|== +----------------+ ==|-- Q6
- Q9 --|== ==|-- Q13
- Q2 --|== M55L100G ==|-- Q5
- Q10 --|== ==|-- Q12
- Q3 --|== ==|-- Q4
- Q11 --|== ==|-- VCC
- +--------------------------+
-
- The only interesting string in this ROM is SPF2ALP,
- which is also found in the Wireless Air 60 ROM.
-
-*******************************************************************************/
-
-#include "emu.h"
-
-#include "cpu/unsp/unsp.h"
-#include "machine/spg2xx.h"
-
-#include "screen.h"
-#include "speaker.h"
-
-class wrlshunt_state : public driver_device
-{
-public:
- wrlshunt_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_screen(*this, "screen")
- , m_spg(*this, "spg")
- { }
-
- void wrlshunt(machine_config &config);
-
-protected:
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
- void mem_map(address_map &map);
-
- required_device<unsp12_device> m_maincpu;
- required_device<screen_device> m_screen;
- required_device<spg2xx_device> m_spg;
-};
-
-
-/************************************
- *
- * Machine Hardware
- *
- ************************************/
-
-void wrlshunt_state::machine_start()
-{
-}
-
-void wrlshunt_state::machine_reset()
-{
-}
-
-void wrlshunt_state::mem_map(address_map &map)
-{
- map(0x008000, 0x00ffff).rom().region("maincpu", 0x10000);
- map(0x000000, 0x007fff).m(m_spg, FUNC(spg_wh_device::map));
- map(0x040000, 0x07ffff).rom().region("maincpu", 0x106f000);
-}
-
-
-/************************************
- *
- * Inputs
- *
- ************************************/
-
-static INPUT_PORTS_START( wrlshunt )
-INPUT_PORTS_END
-
-
-/************************************
- *
- * Machine Configs
- *
- ************************************/
-
-void wrlshunt_state::wrlshunt(machine_config &config)
-{
- UNSP12(config, m_maincpu, XTAL(27'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &wrlshunt_state::mem_map);
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(320, 262);
- m_screen->set_visarea(0, 320-1, 0, 240-1);
- m_screen->set_screen_update("spg", FUNC(spg_wh_device::screen_update));
- m_screen->screen_vblank().set(m_spg, FUNC(spg_wh_device::vblank));
-
- SPG_WH(config, m_spg, XTAL(27'000'000), m_maincpu, m_screen);
-
- SPEAKER(config, "lspeaker").front_left();
- SPEAKER(config, "rspeaker").front_right();
- m_spg->add_route(ALL_OUTPUTS, "lspeaker", 0.5);
- m_spg->add_route(ALL_OUTPUTS, "rspeaker", 0.5);
-}
-
-
-/************************************
- *
- * ROM Loading
- *
- ************************************/
-
-ROM_START( wrlshunt )
- ROM_REGION( 0x8000000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "wireless.bin", 0x0000, 0x8000000, CRC(a6ecc20e) SHA1(3645f23ba2bb218e92d4560a8ae29dddbaabf796) )
-ROM_END
-
-// valid looking code, but extended periperhal area (twice the size?)
-CONS( 2011, wrlshunt, 0, 0, wrlshunt, wrlshunt, wrlshunt_state, empty_init, "Hamy / Kids Station Toys Inc", "Wireless Hunting Video Game System", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/wswan.cpp b/src/mame/drivers/wswan.cpp
index 9ac840b7b82..424afbf473f 100644
--- a/src/mame/drivers/wswan.cpp
+++ b/src/mame/drivers/wswan.cpp
@@ -117,59 +117,58 @@ static void wswan_cart(device_slot_interface &device)
device.option_add_internal("ws_eeprom", WS_ROM_EEPROM);
}
-void wswan_state::wswan(machine_config &config)
-{
+MACHINE_CONFIG_START(wswan_state::wswan)
/* Basic machine hardware */
- V30MZ(config, m_maincpu, 3.072_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &wswan_state::wswan_mem);
- m_maincpu->set_addrmap(AS_IO, &wswan_state::wswan_io);
+ MCFG_DEVICE_ADD(m_maincpu, V30MZ, 3.072_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(wswan_mem)
+ MCFG_DEVICE_IO_MAP(wswan_io)
WSWAN_VIDEO(config, m_vdp, 0);
m_vdp->set_vdp_type(VDP_TYPE_WSWAN);
m_vdp->set_irq_callback(FUNC(wswan_state::set_irq_line), this);
m_vdp->set_dmasnd_callback(FUNC(wswan_state::dma_sound_cb), this);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
-// screen.set_refresh_rate(75);
-// screen.set_vblank_time(0);
- screen.set_screen_update("vdp", FUNC(wswan_video_device::screen_update));
-// screen.set_size(WSWAN_X_PIXELS, WSWAN_Y_PIXELS);
-// screen.set_visarea(0*8, WSWAN_X_PIXELS - 1, 0, WSWAN_Y_PIXELS - 1);
- screen.set_raw(3.072_MHz_XTAL, 256, 0, WSWAN_X_PIXELS, 159, 0, WSWAN_Y_PIXELS);
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", LCD)
+// MCFG_SCREEN_REFRESH_RATE(75)
+// MCFG_SCREEN_VBLANK_TIME(0)
+ MCFG_SCREEN_UPDATE_DEVICE("vdp", wswan_video_device, screen_update)
+// MCFG_SCREEN_SIZE(WSWAN_X_PIXELS, WSWAN_Y_PIXELS)
+// MCFG_SCREEN_VISIBLE_AREA(0*8, WSWAN_X_PIXELS - 1, 0, WSWAN_Y_PIXELS - 1)
+ MCFG_SCREEN_RAW_PARAMS(3.072_MHz_XTAL, 256, 0, WSWAN_X_PIXELS, 159, 0, WSWAN_Y_PIXELS)
+ MCFG_SCREEN_PALETTE("palette")
config.set_default_layout(layout_wswan);
- config.m_minimum_quantum = attotime::from_hz(60);
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
- GFXDECODE(config, "gfxdecode", "palette", gfx_wswan);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_wswan)
PALETTE(config, "palette", FUNC(wswan_state::wswan_palette), 16);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- WSWAN_SND(config, m_sound, 3.072_MHz_XTAL);
- m_sound->set_addrmap(0, &wswan_state::wswan_snd);
- m_sound->add_route(0, "lspeaker", 0.50);
- m_sound->add_route(1, "rspeaker", 0.50);
+ MCFG_DEVICE_ADD(m_sound, WSWAN_SND, 3.072_MHz_XTAL)
+ MCFG_DEVICE_ADDRESS_MAP(0, wswan_snd)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
/* cartridge */
- WS_CART_SLOT(config, m_cart, 3.072_MHz_XTAL / 8, wswan_cart, nullptr);
+ MCFG_DEVICE_ADD(m_cart, WS_CART_SLOT, 3.072_MHz_XTAL / 8, wswan_cart, nullptr)
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("wswan");
- SOFTWARE_LIST(config, "wsc_list").set_compatible("wscolor");
+ MCFG_SOFTWARE_LIST_ADD("cart_list","wswan")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("wsc_list","wscolor")
- SOFTWARE_LIST(config, "pc2_list").set_compatible("pockchalv2");
-}
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("pc2_list","pockchalv2")
+MACHINE_CONFIG_END
-void wscolor_state::wscolor(machine_config &config)
-{
+MACHINE_CONFIG_START(wscolor_state::wscolor)
wswan(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &wscolor_state::wscolor_mem);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(wscolor_mem)
m_vdp->set_vdp_type(VDP_TYPE_WSC);
@@ -178,10 +177,11 @@ void wscolor_state::wscolor(machine_config &config)
palette.set_init(FUNC(wscolor_state::wscolor_palette));
/* software lists */
- config.device_remove("wsc_list");
- SOFTWARE_LIST(config.replace(), "cart_list").set_original("wscolor");
- SOFTWARE_LIST(config, "ws_list").set_compatible("wswan");
-}
+ MCFG_DEVICE_REMOVE("cart_list")
+ MCFG_DEVICE_REMOVE("wsc_list")
+ MCFG_SOFTWARE_LIST_ADD("cart_list","wscolor")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("ws_list","wswan")
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/wwfsstar.cpp b/src/mame/drivers/wwfsstar.cpp
index c7349d1c848..4402d630f96 100644
--- a/src/mame/drivers/wwfsstar.cpp
+++ b/src/mame/drivers/wwfsstar.cpp
@@ -413,22 +413,21 @@ GFXDECODE_END
Machine Driver(s)
*******************************************************************************/
-void wwfsstar_state::wwfsstar(machine_config &config)
-{
- /* basic machine hardware */
- M68000(config, m_maincpu, CPU_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &wwfsstar_state::main_map);
+MACHINE_CONFIG_START(wwfsstar_state::wwfsstar)
- TIMER(config, "scantimer").configure_scanline(FUNC(wwfsstar_state::scanline), "screen", 0, 1);
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", M68000, CPU_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", wwfsstar_state, scanline, "screen", 0, 1)
- Z80(config, m_audiocpu, XTAL(3'579'545));
- m_audiocpu->set_addrmap(AS_PROGRAM, &wwfsstar_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545))
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, 320, 0, 256, 272, 8, 248); /* HTOTAL and VTOTAL are guessed */
- m_screen->set_screen_update(FUNC(wwfsstar_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 320, 0, 256, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
+ MCFG_SCREEN_UPDATE_DRIVER(wwfsstar_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_wwfsstar);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 384);
@@ -445,10 +444,10 @@ void wwfsstar_state::wwfsstar(machine_config &config)
ymsnd.add_route(0, "lspeaker", 0.45);
ymsnd.add_route(1, "rspeaker", 0.45);
- okim6295_device &oki(OKIM6295(config, "oki", 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH));
- oki.add_route(ALL_OUTPUTS, "lspeaker", 0.47);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 0.47);
-}
+ MCFG_DEVICE_ADD("oki", OKIM6295, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47)
+MACHINE_CONFIG_END
/*******************************************************************************
Rom Loaders / Game Drivers
diff --git a/src/mame/drivers/wy150.cpp b/src/mame/drivers/wy150.cpp
deleted file mode 100644
index fca77aa8f85..00000000000
--- a/src/mame/drivers/wy150.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:AJR
-/***********************************************************************************************************************************
-
- Skeleton driver for Wyse WY-150 and related terminals.
-
- The WY-150, originally introduced in Nov. 1988, was the first of the "terminals of the future" that Wyse sold well into the
- 1990s. The WY-160 is a graphical terminal that runs on different but clearly related hardware.
-
- All video functions in these terminals are integrated into ASICs (e.g. 211009-01, 211009-02). The 8032 generates all active
- signals for both the main serial port and the serial keyboard. Three 8Kx8 SRAMs are used to store characters, attributes and
- font data; the second is also battery-backed.
-
-************************************************************************************************************************************/
-
-#include "emu.h"
-#include "cpu/mcs51/mcs51.h"
-#include "machine/nvram.h"
-#include "screen.h"
-
-class wy150_state : public driver_device
-{
-public:
- wy150_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_screen(*this, "screen")
- {
- }
-
- void wy150(machine_config &config);
-
-protected:
- virtual void machine_start() override;
- virtual void driver_start() override;
-
-private:
- u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-
- void prog_map(address_map &map);
- void ext_map(address_map &map);
-
- required_device<screen_device> m_screen;
-};
-
-
-void wy150_state::machine_start()
-{
-}
-
-u32 wy150_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- return 0;
-}
-
-void wy150_state::prog_map(address_map &map)
-{
- map(0x0000, 0xffff).rom().region("program", 0);
-}
-
-void wy150_state::ext_map(address_map &map)
-{
- map(0x0000, 0x1fff).ram().share("nvram");
- map(0x2000, 0x3fff).ram();
- map(0x4000, 0x5fff).ram();
-}
-
-
-static INPUT_PORTS_START(wy150)
-INPUT_PORTS_END
-
-
-void wy150_state::wy150(machine_config &config)
-{
- i80c32_device &maincpu(I80C32(config, "maincpu", 11_MHz_XTAL)); // Philips P80C32SBPN (e.g.)
- maincpu.set_addrmap(AS_PROGRAM, &wy150_state::prog_map);
- maincpu.set_addrmap(AS_IO, &wy150_state::ext_map);
-
- NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 8464 or 5564 or similar (e.g. Winbond W2465-70LL) + battery
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(48_MHz_XTAL, 1530, 0, 1200, 523, 0, 416); // 31.372 kHz horizontal
- //m_screen->set_raw(48_MHz_XTAL, 1530, 0, 1188, 402, 0, 338);
- // TBD: WY-160 should have different parameters (has 76 Hz refresh rate rather than 78 Hz)
- m_screen->set_screen_update(FUNC(wy150_state::screen_update));
-}
-
-
-ROM_START(wy150)
- ROM_REGION(0x10000, "program", 0)
- ROM_LOAD("251167-01.bin", 0x00000, 0x10000, CRC(4f425b11) SHA1(e44f54aa98d9f9c668a6ad674ec07e47879fc2a0))
-
- ROM_REGION(0x20000, "link", 0)
- ROM_LOAD("link_mc3.bin", 0x00000, 0x10000, CRC(9e1d37d9) SHA1(d74c0faf6cf1eb06243607931967cf35a633ac8e))
- ROM_LOAD("link_mc5_xerox-wy30.bin", 0x10000, 0x10000, CRC(1aa00cb4) SHA1(6a7267132fe35c8e07deccd67c0fb4fe5a240c99))
-ROM_END
-
-ROM_START(wy120) // b&w
- ROM_REGION(0x10000, "program", 0)
- ROM_LOAD("wy120_ver1.4.bin", 0x00000, 0x10000, CRC(6de23624) SHA1(ad90087237347662b5ae4fcc8a05d66d76c46a26))
-ROM_END
-
-ROM_START(wy160)
- ROM_REGION(0x10000, "program", 0)
- ROM_LOAD("251167-06.bin", 0x00000, 0x10000, CRC(36e920df) SHA1(8fb7f51b4f47ef63b21d421227d6fef98001e4e9))
-ROM_END
-
-void wy150_state::driver_start()
-{
- uint8_t *rom = memregion("program")->base();
- for (offs_t base = 0x00000; base < 0x10000; base += 0x4000)
- {
- std::vector<uint8_t> orig(&rom[base], &rom[base + 0x4000]);
-
- // Line swap is provided by schematic in WY-120 Maintenance Manual
- for (offs_t offset = 0; offset < 0x4000; offset++)
- rom[base | offset] = bitswap<8>(orig[bitswap<14>(offset, 7, 8, 6, 5, 4, 3, 9, 10, 11, 12, 13, 2, 1, 0)], 3, 4, 2, 5, 1, 6, 0, 7);
- }
-}
-
-COMP(1991, wy150, 0, 0, wy150, wy150, wy150_state, empty_init, "Wyse Technology", "WY-150 (v1.0)", MACHINE_IS_SKELETON)
-COMP(1992, wy120, 0, 0, wy150, wy150, wy150_state, empty_init, "Wyse Technology", "WY-120 (v1.4)", MACHINE_IS_SKELETON)
-COMP(1994, wy160, 0, 0, wy150, wy150, wy150_state, empty_init, "Wyse Technology", "WY-160 (v1.7)", MACHINE_IS_SKELETON)
diff --git a/src/mame/drivers/wy30p.cpp b/src/mame/drivers/wy30p.cpp
deleted file mode 100644
index 3f4fe049978..00000000000
--- a/src/mame/drivers/wy30p.cpp
+++ /dev/null
@@ -1,128 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:AJR
-/*******************************************************************************
-
- Skeleton driver for Wyse WY-30+ terminal.
-
- This low-end video terminal is the successor to the WY-30, whose control
- board features an entirely different hardware configuration.
-
-*******************************************************************************/
-
-#include "emu.h"
-#include "cpu/mcs51/mcs51.h"
-#include "machine/eepromser.h"
-#include "screen.h"
-
-class wy30p_state : public driver_device
-{
-public:
- wy30p_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_eeprom(*this, "eeprom")
- , m_screen(*this, "screen")
- {
- }
-
- void wy30p(machine_config &config);
-
-protected:
- virtual void machine_start() override;
- virtual void driver_start() override;
-
-private:
- u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-
- u8 p3_r();
- u8 de00_r();
-
- void prog_map(address_map &map);
- void ext_map(address_map &map);
-
- required_device<eeprom_serial_er5911_device> m_eeprom;
- required_device<screen_device> m_screen;
-};
-
-
-void wy30p_state::machine_start()
-{
-}
-
-u32 wy30p_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- return 0;
-}
-
-u8 wy30p_state::p3_r()
-{
- return 0xdf | (m_eeprom->do_read() << 5);
-}
-
-u8 wy30p_state::de00_r()
-{
- return m_screen->vblank() << 7; // probably not correct
-}
-
-void wy30p_state::prog_map(address_map &map)
-{
- map(0x0000, 0x3fff).mirror(0xc000).rom().region("program", 0);
-}
-
-void wy30p_state::ext_map(address_map &map)
-{
- map(0x0000, 0x1fff).ram();
- map(0xa000, 0xa7ff).ram();
- map(0xde00, 0xde00).mirror(0xff).r(FUNC(wy30p_state::de00_r));
-}
-
-
-static INPUT_PORTS_START(wy30p)
-INPUT_PORTS_END
-
-
-void wy30p_state::wy30p(machine_config &config)
-{
- i8031_device &maincpu(I8031(config, "maincpu", 7.3728_MHz_XTAL));
- maincpu.set_addrmap(AS_PROGRAM, &wy30p_state::prog_map);
- maincpu.set_addrmap(AS_IO, &wy30p_state::ext_map);
- maincpu.port_in_cb<3>().set(FUNC(wy30p_state::p3_r));
- maincpu.port_out_cb<3>().set(m_eeprom, FUNC(eeprom_serial_er5911_device::cs_write)).bit(3);
- maincpu.port_out_cb<3>().append(m_eeprom, FUNC(eeprom_serial_er5911_device::clk_write)).bit(4);
- maincpu.port_out_cb<3>().append(m_eeprom, FUNC(eeprom_serial_er5911_device::di_write)).bit(5);
-
- EEPROM_ER5911_8BIT(config, m_eeprom);
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(31.2795_MHz_XTAL * 2 / 3, 1050, 0, 800, 331, 0, 312); // divider and dimensions guessed
- m_screen->set_screen_update(FUNC(wy30p_state::screen_update));
-}
-
-
-// PCB: "© 1989 990710-01 REV.B1"
-// CPU: Intel P8031AH
-// Program EPROM: 250971-02 (M27128MFI) "© WYSE TECH 92' REV.A"
-// Nonvolatile memory: CSI CAT59C11P
-// RAM: TC5565APL-12, HY6116AP-15
-// QFP gate array: 211019-02 (Oki M76V020) "© WYSE,1989"
-// Jumper near gate array: "FONT SIZE" = "8Kx8" or "2Kx8" (J3)
-// XTALs: 31.2795 (dot clock?), 7.3728 (for CPU)
-// DB-25 connectors: "MDM" & "AUX"
-ROM_START(wy30p)
- ROM_REGION(0x4000, "program", 0)
- ROM_LOAD("250971-02.u4", 0x0000, 0x4000, CRC(3666549c) SHA1(23c432da2083df4b355daf566dd6514d1f9a7690))
-ROM_END
-
-void wy30p_state::driver_start()
-{
- uint8_t *rom = memregion("program")->base();
- for (offs_t base = 0x0000; base < 0x4000; base += 0x2000)
- {
- std::vector<uint8_t> orig(&rom[base], &rom[base + 0x2000]);
-
- // Line swaps can be confusing...
- for (offs_t offset = 0; offset < 0x2000; offset++)
- rom[base | offset] = bitswap<8>(orig[bitswap<13>(offset, 8, 5, 0, 4, 3, 9, 7, 10, 11, 12, 2, 6, 1)], 3, 4, 5, 6, 7, 2, 1, 0);
- }
-}
-
-COMP(1992, wy30p, 0, 0, wy30p, wy30p, wy30p_state, empty_init, "Wyse Technology", "WY-30+ (v1.8)", MACHINE_IS_SKELETON)
diff --git a/src/mame/drivers/wy50.cpp b/src/mame/drivers/wy50.cpp
index 437307966cf..97ea61d0a19 100644
--- a/src/mame/drivers/wy50.cpp
+++ b/src/mame/drivers/wy50.cpp
@@ -2,7 +2,7 @@
// copyright-holders:AJR
/*******************************************************************************
- Preliminary driver for Wyse WY-50 and similar display terminals.
+ Skeleton driver for Wyse WY-50 and similar display terminals.
Wyse Technology introduced the WY-50 green screen terminal in the fall of
1983. It was soon followed by the WY-75 ANSI X3.64-compatible terminal and
@@ -25,11 +25,9 @@
*******************************************************************************/
#include "emu.h"
-#include "bus/rs232/rs232.h"
#include "cpu/mcs51/mcs51.h"
#include "machine/er1400.h"
#include "machine/mc2661.h"
-#include "machine/wy50kb.h"
#include "video/scn2674.h"
#include "screen.h"
@@ -39,12 +37,10 @@ public:
wy50_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
- , m_keyboard(*this, "keyboard")
, m_earom(*this, "earom")
, m_pvtc(*this, "pvtc")
, m_sio(*this, "sio")
, m_chargen(*this, "chargen")
- , m_videoram(*this, "videoram%u", 0U)
{
}
@@ -55,9 +51,7 @@ protected:
virtual void machine_reset() override;
private:
- u8 pvtc_videoram_r(offs_t offset);
SCN2672_DRAW_CHARACTER_MEMBER(draw_character);
- DECLARE_WRITE_LINE_MEMBER(mbc_attr_clock_w);
u8 pvtc_r(offs_t offset);
void pvtc_w(offs_t offset, u8 data);
@@ -71,40 +65,17 @@ private:
void prg_map(address_map &map);
void io_map(address_map &map);
- void row_buffer_map(address_map &map);
required_device<mcs51_cpu_device> m_maincpu;
- required_device<wy50_keyboard_device> m_keyboard;
required_device<er1400_device> m_earom;
required_device<scn2672_device> m_pvtc;
required_device<mc2661_device> m_sio;
required_region_ptr<u8> m_chargen;
- required_shared_ptr_array<u8, 2> m_videoram;
-
- u8 m_cur_attr;
- u8 m_last_row_attr;
- u8 m_row_buffer_char;
- bool m_font2;
- bool m_rev_prot;
- bool m_is_132;
};
void wy50_state::machine_start()
{
- m_cur_attr = 0;
- m_last_row_attr = 0;
- m_row_buffer_char = 0;
- m_font2 = false;
- m_rev_prot = false;
- m_is_132 = false;
-
- save_item(NAME(m_cur_attr));
- save_item(NAME(m_last_row_attr));
- save_item(NAME(m_row_buffer_char));
- save_item(NAME(m_font2));
- save_item(NAME(m_rev_prot));
- save_item(NAME(m_is_132));
}
void wy50_state::machine_reset()
@@ -113,62 +84,8 @@ void wy50_state::machine_reset()
earom_w(0);
}
-u8 wy50_state::pvtc_videoram_r(offs_t offset)
-{
- m_row_buffer_char = m_videoram[BIT(offset, 13)][offset & 0x07ff];
- return m_row_buffer_char;
-}
-
SCN2672_DRAW_CHARACTER_MEMBER(wy50_state::draw_character)
{
- // Attribute bit 0 = Dim
- // Attribute bit 1 = Blink
- // Attribute bit 2 = Blank
- // Attribute bit 3 = Underline
- // Attribute bit 4 = Reverse video
-
- const bool attr = (charcode & 0xe0) == 0x80;
- const bool prot = (charcode & 0xe0) > 0x80 && !m_font2;
- if (attr)
- m_cur_attr = charcode & 0x1f;
- else if (x == 0)
- m_cur_attr = m_last_row_attr;
-
- u16 dots = 0;
- if (!attr)
- {
- // Blinking suppresses underline but blank attribute doesn't
- if (!BIT(m_cur_attr, 1) || !blink)
- {
- // Shift register load inhibited by blanking conditions or underline
- if (BIT(m_cur_attr, 3) && ul)
- dots = 0x3ff;
- else if (!BIT(m_cur_attr, 2))
- dots = m_chargen[(charcode & (m_font2 ? 0xff : 0x7f)) << 4 | linecount] << 2;
- }
-
- // Reverse video for non-attribute characters (XOR of two conditions)
- if (BIT(m_cur_attr, 4) != (prot && m_rev_prot))
- dots = ~dots;
- }
- if (cursor)
- dots = ~dots;
-
- // Apply dimming conditions
- const rgb_t fg = BIT(m_cur_attr, 0) || (prot && !m_rev_prot) ? rgb_t(0xc0, 0xc0, 0xc0) : rgb_t::white();
- for (int i = 0; i < 9; i++)
- {
- bitmap.pix32(y, x++) = BIT(dots, 9) ? fg : rgb_t::black();
- dots <<= 1;
- }
- if (!m_is_132)
- bitmap.pix32(y, x++) = BIT(dots, 9) ? fg : rgb_t::black();
-}
-
-WRITE_LINE_MEMBER(wy50_state::mbc_attr_clock_w)
-{
- if (state)
- m_last_row_attr = m_cur_attr;
}
u8 wy50_state::pvtc_r(offs_t offset)
@@ -194,44 +111,29 @@ void wy50_state::sio_w(offs_t offset, u8 data)
u8 wy50_state::rbreg_r()
{
// LS374 row buffer diagnostic register
- return m_row_buffer_char;
+ return 0;
}
void wy50_state::keyboard_w(u8 data)
{
- // Bit 0 = J3-6
- // Bit 1 = J3-5
- // Bit 2 = J3-4
- // Bit 3 = J3-7
- // Bit 4 = J3-10
- // Bit 5 = J3-9
- // Bit 6 = J3-8
- // Bit 7 = /HSYNC CLAMP
- m_keyboard->scan_w(data & 0x7f);
}
void wy50_state::earom_w(u8 data)
{
- // Bit 0 = EAROM D
- // Bit 1 = EAROM CLK
- // Bit 2 = EAROM C3
- // Bit 3 = EAROM C2
- // Bit 4 = EAROM C1
- // Bit 5 = UPCHAR/NORM
m_earom->clock_w(BIT(data, 1));
m_earom->c3_w(BIT(data, 2));
m_earom->c2_w(BIT(data, 3));
m_earom->c1_w(BIT(data, 4));
m_earom->data_w(BIT(data, 3) ? BIT(data, 0) : 0);
- m_font2 = BIT(data, 5);
+ // Bit 5 = UPCHAR/NORM
}
u8 wy50_state::p1_r()
{
// P1.0 = AUX RDY
// P1.1 = NVD OUT
- // P1.4 = KEY (inverted, active high)
- return 0xed | (m_earom->data_r() << 1) | (m_keyboard->sense_r() ? 0x00 : 0x10);
+ // P1.4 = KEY (inverted)
+ return 0xfd | (m_earom->data_r() << 1);
}
void wy50_state::p1_w(u8 data)
@@ -241,15 +143,6 @@ void wy50_state::p1_w(u8 data)
// P1.5 = BEEPER
// P1.6 = REV/DIM PROT
// P1.7 (inverted) = 80/132
-
- m_rev_prot = BIT(data, 6);
-
- if (m_is_132 != BIT(data, 7))
- {
- m_is_132 = BIT(data, 7);
- m_pvtc->set_character_width(m_is_132 ? 9 : 10);
- m_pvtc->set_unscaled_clock(68.85_MHz_XTAL / (m_is_132 ? 18 : 30));
- }
}
void wy50_state::prg_map(address_map &map)
@@ -259,22 +152,15 @@ void wy50_state::prg_map(address_map &map)
void wy50_state::io_map(address_map &map)
{
- map(0x0000, 0x07ff).mirror(0x1800).ram().share("videoram0");
- map(0x2000, 0x27ff).mirror(0x1800).ram().share("videoram1");
+ map(0x0000, 0x07ff).mirror(0x1800).ram();
+ map(0x2000, 0x27ff).mirror(0x1800).ram();
map(0x4000, 0x47ff).mirror(0x1800).rw(FUNC(wy50_state::pvtc_r), FUNC(wy50_state::pvtc_w));
- map(0x6000, 0x63ff).mirror(0x0c00).r(FUNC(wy50_state::sio_r));
- map(0x7000, 0x73ff).mirror(0x0c00).w(FUNC(wy50_state::sio_w));
+ map(0x6000, 0x63ff).mirror(0x1c00).rw(FUNC(wy50_state::sio_r), FUNC(wy50_state::sio_w));
map(0x8000, 0x8000).mirror(0x1fff).r(FUNC(wy50_state::rbreg_r));
map(0xa000, 0xa000).mirror(0x1fff).w(FUNC(wy50_state::keyboard_w));
map(0xc000, 0xc000).mirror(0x1fff).w(FUNC(wy50_state::earom_w));
}
-void wy50_state::row_buffer_map(address_map &map)
-{
- map.global_mask(0x0ff);
- map(0x000, 0x0ff).ram();
-}
-
static INPUT_PORTS_START(wy50)
INPUT_PORTS_END
@@ -286,8 +172,6 @@ void wy50_state::wy50(machine_config &config)
m_maincpu->port_in_cb<1>().set(FUNC(wy50_state::p1_r));
m_maincpu->port_out_cb<1>().set(FUNC(wy50_state::p1_w));
- WY50_KEYBOARD(config, m_keyboard);
-
ER1400(config, m_earom);
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -299,23 +183,12 @@ void wy50_state::wy50(machine_config &config)
SCN2672(config, m_pvtc, 68.85_MHz_XTAL / 30); // SCN2672A or SCN2672B
m_pvtc->set_screen("screen");
m_pvtc->set_character_width(10); // 9 in 132-column mode
- m_pvtc->set_addrmap(0, &wy50_state::row_buffer_map);
m_pvtc->set_display_callback(FUNC(wy50_state::draw_character));
m_pvtc->intr_callback().set_inputline(m_maincpu, MCS51_T0_LINE);
m_pvtc->breq_callback().set_inputline(m_maincpu, MCS51_INT0_LINE);
- m_pvtc->mbc_callback().set(FUNC(wy50_state::mbc_attr_clock_w));
- m_pvtc->mbc_char_callback().set(FUNC(wy50_state::pvtc_videoram_r));
MC2661(config, m_sio, 4.9152_MHz_XTAL); // SCN2661B
- m_sio->rxrdy_handler().set_inputline(m_maincpu, MCS51_INT1_LINE);
- m_sio->txd_handler().set("modem", FUNC(rs232_port_device::write_txd));
- m_sio->dtr_handler().set("modem", FUNC(rs232_port_device::write_dtr));
- m_sio->rts_handler().set("modem", FUNC(rs232_port_device::write_rts));
-
- rs232_port_device &modem(RS232_PORT(config, "modem", default_rs232_devices, "loopback"));
- modem.rxd_handler().set(m_sio, FUNC(mc2661_device::rx_w));
- modem.cts_handler().set(m_sio, FUNC(mc2661_device::cts_w));
- modem.dcd_handler().set(m_sio, FUNC(mc2661_device::dcd_w));
+ m_sio->txrdy_handler().set_inputline(m_maincpu, MCS51_INT1_LINE);
}
ROM_START(wy50)
diff --git a/src/mame/drivers/wy55.cpp b/src/mame/drivers/wy55.cpp
deleted file mode 100644
index 5625b5f7cd5..00000000000
--- a/src/mame/drivers/wy55.cpp
+++ /dev/null
@@ -1,111 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:AJR
-/***********************************************************************************************************************************
-
- Skeleton driver for Wyse WY-55 and related terminals.
-
- The WY-55's custom video gate array is numbered 211019-05. The WY-185 is believed to run on similar hardware, though with
- 85 Hz and 60 Hz vertical refresh rates rather than 80 Hz and 70 Hz.
-
-***********************************************************************************************************************************/
-
-#include "emu.h"
-#include "cpu/mcs51/mcs51.h"
-//#include "machine/ins8250.h"
-#include "machine/nvram.h"
-#include "screen.h"
-
-class wy55_state : public driver_device
-{
-public:
- wy55_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_screen(*this, "screen")
- , m_progbank(*this, "progbank")
- {
- }
-
- void wy55(machine_config &config);
-
-protected:
- virtual void machine_start() override;
- virtual void driver_start() override;
-
-private:
- u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-
- void prog_map(address_map &map);
- void ext_map(address_map &map);
-
- required_device<mcs51_cpu_device> m_maincpu;
- required_device<screen_device> m_screen;
- required_memory_bank m_progbank;
-};
-
-
-void wy55_state::machine_start()
-{
- m_progbank->configure_entries(0, 2, memregion("program")->base(), 0x10000);
- m_progbank->set_entry(0);
-}
-
-u32 wy55_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- return 0;
-}
-
-void wy55_state::prog_map(address_map &map)
-{
- map(0x0000, 0xffff).bankr("progbank");
-}
-
-void wy55_state::ext_map(address_map &map)
-{
- map(0x0000, 0x1fff).ram().share("nvram0");
- map(0x8000, 0x9fff).ram().share("nvram1");
- map(0xa000, 0xbfff).ram().share("fontram");
- //map(0xf028, 0xf037).rw("uart", FUNC(pc16552_device::read), FUNC(pc16552_device::write));
-}
-
-
-static INPUT_PORTS_START(wy55)
-INPUT_PORTS_END
-
-void wy55_state::wy55(machine_config &config)
-{
- I8032(config, m_maincpu, 14.7456_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &wy55_state::prog_map);
- m_maincpu->set_addrmap(AS_IO, &wy55_state::ext_map);
- m_maincpu->port_out_cb<1>().set_membank("progbank").bit(2);
-
- NVRAM(config, "nvram0", nvram_device::DEFAULT_ALL_0); // 8K SRAM + battery
- NVRAM(config, "nvram1", nvram_device::DEFAULT_ALL_0); // 8K SRAM + battery
-
- //PC16552D(config, "uart", 14.7456_MHz_XTAL / 2); // 16C452 (divider not verified)
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(49.4235_MHz_XTAL, 1575, 0, 1188, 448, 0, 416);
- //m_screen->set_raw(49.4235_MHz_XTAL * 2 / 3, 1050, 0, 800, 392, 0, 338);
- m_screen->set_screen_update(FUNC(wy55_state::screen_update));
-}
-
-
-ROM_START(wy55)
- ROM_REGION(0x20000, "program", 0)
- ROM_LOAD("251352-12.bin", 0x0000, 0x20000, CRC(efe41862) SHA1(52ee76d636b166fa10a37356aef81011a9b079cc)) // v2.1
-ROM_END
-
-void wy55_state::driver_start()
-{
- uint8_t *rom = memregion("program")->base();
- for (offs_t base = 0x00000; base < 0x20000; base += 0x4000)
- {
- std::vector<uint8_t> orig(&rom[base], &rom[base + 0x4000]);
-
- for (offs_t offset = 0; offset < 0x4000; offset++)
- rom[base | offset] = bitswap<8>(orig[bitswap<14>(offset, 3, 8, 2, 0, 7, 4, 9, 10, 11, 12, 13, 5, 1, 6)], 3, 4, 5, 2, 6, 1, 7, 0);
- }
-}
-
-COMP(1993, wy55, 0, 0, wy55, wy55, wy55_state, empty_init, "Wyse Technology", "WY-55 (v2.1)", MACHINE_IS_SKELETON)
diff --git a/src/mame/drivers/wy60.cpp b/src/mame/drivers/wy60.cpp
deleted file mode 100644
index ef05208733c..00000000000
--- a/src/mame/drivers/wy60.cpp
+++ /dev/null
@@ -1,168 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:AJR
-/***********************************************************************************************************************************
-
- Skeleton driver for Wyse WY-60 terminal.
-
-***********************************************************************************************************************************/
-
-#include "emu.h"
-#include "cpu/mcs51/mcs51.h"
-//#include "machine/i2cmem.h"
-#include "machine/mc2661.h"
-#include "video/scn2674.h"
-#include "screen.h"
-
-class wy60_state : public driver_device
-{
-public:
- wy60_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_pvtc(*this, "pvtc")
- , m_sio(*this, "sio")
- {
- }
-
- void wy60(machine_config &config);
-
-protected:
- virtual void machine_start() override;
- virtual void driver_start() override;
-
-private:
- SCN2672_DRAW_CHARACTER_MEMBER(draw_character);
-
- u8 pvtc_r(offs_t offset);
- void pvtc_w(offs_t offset, u8 data);
- u8 sio_r(offs_t offset);
- void sio_w(offs_t offset, u8 data);
-
- void prog_map(address_map &map);
- void ext_map(address_map &map);
- void row_buffer_map(address_map &map);
-
- required_device<scn2672_device> m_pvtc;
- required_device<mc2661_device> m_sio;
-};
-
-
-void wy60_state::machine_start()
-{
-}
-
-SCN2672_DRAW_CHARACTER_MEMBER(wy60_state::draw_character)
-{
-}
-
-u8 wy60_state::pvtc_r(offs_t offset)
-{
- return m_pvtc->read(offset >> 8);
-}
-
-void wy60_state::pvtc_w(offs_t offset, u8 data)
-{
- m_pvtc->write(offset >> 8, data);
-}
-
-u8 wy60_state::sio_r(offs_t offset)
-{
- return m_sio->read(offset >> 8);
-}
-
-void wy60_state::sio_w(offs_t offset, u8 data)
-{
- m_sio->write(offset >> 8, data);
-}
-
-void wy60_state::prog_map(address_map &map)
-{
- // TODO: EA banking?
- map(0x0000, 0xffff).rom().region("coderom", 0);
-}
-
-void wy60_state::ext_map(address_map &map)
-{
- map(0x0000, 0x1fff).ram().share("charram");
- map(0x2000, 0x3fff).ram().share("attrram");
- map(0xa000, 0xa7ff).mirror(0x1800).rw(FUNC(wy60_state::pvtc_r), FUNC(wy60_state::pvtc_w));
- map(0xc000, 0xc3ff).mirror(0xc00).r(FUNC(wy60_state::sio_r));
- map(0xd000, 0xd3ff).mirror(0xc00).w(FUNC(wy60_state::sio_w));
-}
-
-void wy60_state::row_buffer_map(address_map &map)
-{
- map.global_mask(0x0ff);
- map(0x000, 0x0ff).ram();
-}
-
-
-static INPUT_PORTS_START(wy60)
-INPUT_PORTS_END
-
-void wy60_state::wy60(machine_config &config)
-{
- i8051_device &maincpu(I8051(config, "maincpu", 11_MHz_XTAL)); // P8051AN-40196
- maincpu.set_addrmap(AS_PROGRAM, &wy60_state::prog_map);
- maincpu.set_addrmap(AS_IO, &wy60_state::ext_map);
-
- //X2404(config, m_eeprom);
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(26.58_MHz_XTAL, 1000, 0, 800, 443, 0, 416); // 26.580 kHz horizontal
- //screen.set_raw(39.71_MHz_XTAL, 1494, 0, 1188, 443, 0, 416);
- screen.set_screen_update("pvtc", FUNC(scn2672_device::screen_update));
-
- SCN2672(config, m_pvtc, 26.58_MHz_XTAL / 10); // custom-marked as Motorola SC67336P (205001-02)
- m_pvtc->set_screen("screen");
- m_pvtc->set_character_width(10); // 9 in 132-column mode
- m_pvtc->set_addrmap(0, &wy60_state::row_buffer_map);
- m_pvtc->set_addrmap(1, &wy60_state::row_buffer_map);
- m_pvtc->set_display_callback(FUNC(wy60_state::draw_character));
- //m_pvtc->intr_callback().set_inputline("maincpu", MCS51_T0_LINE);
- //m_pvtc->breq_callback().set_inputline("maincpu", MCS51_INT0_LINE);
-
- MC2661(config, m_sio, 4.9152_MHz_XTAL); // SCN2661B
- //m_sio->rxrdy_handler().set_inputline("maincpu", MCS51_INT1_LINE);
-}
-
-// CPU: 8051(202008-03)
-// EPROM: 27512(193003-01)
-// Video: 211003-02/205001-02
-// RAM: 2064 (2064/2016/2016/2064)
-// NVRAM: X2404
-// UART: 2661
-// XTALs: 39.710, 26.580, 11.000, 4.9152
-
-ROM_START(wy60)
- ROM_REGION(0x1000, "maincpu", 0)
- ROM_LOAD("202008-03.bin", 0x0000, 0x1000, NO_DUMP)
-
- ROM_REGION(0x10000, "coderom", 0)
- ROM_LOAD("193003-01.u9", 0x00000, 0x10000, CRC(26de0ea4) SHA1(91409f98a3990b514fbcb7de2eb45944bf5b95bc))
-ROM_END
-
-ROM_START(wy60a)
- ROM_REGION(0x1000, "maincpu", 0)
- ROM_LOAD("202008-03.bin", 0x0000, 0x1000, NO_DUMP)
-
- ROM_REGION(0x10000, "coderom", 0)
- ROM_LOAD("wy-60_4k.u6", 0x00000, 0x10000, CRC(6daf2824) SHA1(23cd039ec7ae71b0742e8eebf75be8cd5992e3fd))
-ROM_END
-
-void wy60_state::driver_start()
-{
- uint8_t *rom = memregion("coderom")->base();
- for (offs_t base = 0x00000; base < 0x10000; base += 0x2000)
- {
- std::vector<uint8_t> orig(&rom[base], &rom[base + 0x2000]);
-
- for (offs_t offset = 0; offset < 0x2000; offset++)
- rom[base | offset] = bitswap<8>(orig[bitswap<13>(offset, 0, 6, 9, 4, 2, 1, 3, 5, 7, 8, 10, 11, 12)], 6, 0, 5, 1, 4, 2, 3, 7);
- }
-
- // FIXME: remove once internal ROM is dumped
- std::copy_n(rom, 0x1000, memregion("maincpu")->base());
-}
-
-COMP(1986, wy60, 0, 0, wy60, wy60, wy60_state, empty_init, "Wyse Technology", "WY-60 (set 1)", MACHINE_IS_SKELETON)
-COMP(1986, wy60a, wy60, 0, wy60, wy60, wy60_state, empty_init, "Wyse Technology", "WY-60 (set 2)", MACHINE_IS_SKELETON)
diff --git a/src/mame/drivers/wyse.cpp b/src/mame/drivers/wyse.cpp
new file mode 100644
index 00000000000..7e4cdf90eaf
--- /dev/null
+++ b/src/mame/drivers/wyse.cpp
@@ -0,0 +1,103 @@
+// license:BSD-3-Clause
+// copyright-holders:
+/***********************************************************************************************************************************
+
+2017-10-27 Skeleton
+
+Wyse terminals.
+
+WY-30+: P8031AH, OKI M76V020, TC5565APL-12, HY6116AP-15, Beeper, 31.2795, 7.3728 (for CPU)
+
+WY-60: SC67336P, P8051AN-40196, SCN2661B, 7219-0629, 4.9152, 11.000, 39.710, 26.580, Beeper
+
+WY-150: Philips P80C32SBPN, Toshiba 211009-02, Winbond ??, unknown crystal
+
+ CPU EPROM VIDEO RAM Row Buffer Font RAM NVRAM Serial Dot Clk CPU Clk Ser Clk
+WY-30+ 8031 27128(250971-02) 211019-02 5565 6116 CAT59C11 31.2795 7.3728
+WY-55 8032 (251352-12) 211019-05 8k (8kx2) battery 16C452 49.423 14.7456
+WY-60 8051(202008-03) 27512(193003-01) 211003-02/205001-02 2064 ( 2064/2016/2016/2064) X24C04 2661 39.710/26.580 11.000 4.9152
+WY-120 8032 27256(250412-01) SLA7490(211009-01) 6264/5564 6264 battery - 48.000 11.000
+WY-150 8032 27512(251167-06) 211009-02 6264 (2x6264) battery - 48.000 11.000
+
+
+************************************************************************************************************************************/
+
+#include "emu.h"
+#include "cpu/mcs51/mcs51.h"
+
+class wyse_state : public driver_device
+{
+public:
+ wyse_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ // , m_maincpu(*this, "maincpu")
+ { }
+
+ void wyse(machine_config &config);
+
+private:
+ void io_map(address_map &map);
+ void mem_map(address_map &map);
+
+ // required_device<cpu_device> m_maincpu;
+};
+
+void wyse_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+}
+
+void wyse_state::io_map(address_map &map)
+{
+}
+
+static INPUT_PORTS_START( wyse )
+INPUT_PORTS_END
+
+MACHINE_CONFIG_START(wyse_state::wyse)
+ MCFG_DEVICE_ADD("maincpu", I8031, 11'000'000)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
+MACHINE_CONFIG_END
+
+ROM_START( wy30p )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "250971-02.u4", 0x0000, 0x4000, CRC(3666549c) SHA1(23c432da2083df4b355daf566dd6514d1f9a7690) )
+ROM_END
+
+ROM_START( wy55 )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD( "251352-12.bin", 0x0000, 0x20000, CRC(efe41862) SHA1(52ee76d636b166fa10a37356aef81011a9b079cc) ) // v2.1
+ROM_END
+
+ROM_START( wy60 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "193003-01.u9", 0x0000, 0x10000, CRC(26de0ea4) SHA1(91409f98a3990b514fbcb7de2eb45944bf5b95bc) )
+ ROM_REGION( 0x10000, "user1", 0 )
+ ROM_LOAD( "wy-60_4k.u6", 0x0000, 0x10000, CRC(6daf2824) SHA1(23cd039ec7ae71b0742e8eebf75be8cd5992e3fd) )
+ROM_END
+
+ROM_START( wy120 ) // b&w
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "wy120_ver1.4.bin", 0x000000, 0x010000, CRC(6de23624) SHA1(ad90087237347662b5ae4fcc8a05d66d76c46a26) )
+ROM_END
+
+ROM_START( wy150 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "251167-01.bin", 0x00000, 0x10000, CRC(4f425b11) SHA1(e44f54aa98d9f9c668a6ad674ec07e47879fc2a0) )
+ ROM_REGION( 0x20000, "link", 0 )
+ ROM_LOAD( "link_mc3.bin", 0x00000, 0x10000, CRC(9e1d37d9) SHA1(d74c0faf6cf1eb06243607931967cf35a633ac8e) )
+ ROM_LOAD( "link_mc5_xerox-wy30.bin", 0x10000, 0x10000, CRC(1aa00cb4) SHA1(6a7267132fe35c8e07deccd67c0fb4fe5a240c99) )
+ROM_END
+
+ROM_START( wy160 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "251167-06.bin", 0x00000, 0x10000, CRC(36e920df) SHA1(8fb7f51b4f47ef63b21d421227d6fef98001e4e9) )
+ROM_END
+
+COMP( 1986, wy60, 0, 0, wyse, wyse, wyse_state, empty_init, "Wyse Technology", "WY-60", MACHINE_IS_SKELETON )
+COMP( 1987, wy120, 0, 0, wyse, wyse, wyse_state, empty_init, "Wyse Technology", "WY-120", MACHINE_IS_SKELETON )
+COMP( 1988, wy150, 0, 0, wyse, wyse, wyse_state, empty_init, "Wyse Technology", "WY-150", MACHINE_IS_SKELETON )
+COMP( 1990, wy160, 0, 0, wyse, wyse, wyse_state, empty_init, "Wyse Technology", "WY-160", MACHINE_IS_SKELETON )
+COMP( 1991, wy30p, 0, 0, wyse, wyse, wyse_state, empty_init, "Wyse Technology", "WY-30+", MACHINE_IS_SKELETON )
+COMP( 1993, wy55, 0, 0, wyse, wyse, wyse_state, empty_init, "Wyse Technology", "WY-55", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/wyvernf0.cpp b/src/mame/drivers/wyvernf0.cpp
index 932feb70810..0f6c71f2dd2 100644
--- a/src/mame/drivers/wyvernf0.cpp
+++ b/src/mame/drivers/wyvernf0.cpp
@@ -659,9 +659,9 @@ void wyvernf0_state::wyvernf0(machine_config &config)
m_audiocpu->set_addrmap(AS_PROGRAM, &wyvernf0_state::sound_map);
m_audiocpu->set_periodic_int(FUNC(wyvernf0_state::irq0_line_hold), attotime::from_hz(60*2)); // IRQ generated by ??? (drives music tempo), NMI by main cpu
-// M68705P5(config, "mcu", 4000000); // ?
+// MCFG_DEVICE_ADD("mcu", M68705P5, 4000000) // ?
-// config.m_minimum_quantum = attotime::from_hz(6000); // 100 CPU slices per second to synchronize between the MCU and the main CPU
+// MCFG_QUANTUM_TIME(attotime::from_hz(6000)) // 100 CPU slices per second to synchronize between the MCU and the main CPU
// video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -704,6 +704,7 @@ void wyvernf0_state::wyvernf0(machine_config &config)
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "mono", 0.25); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
diff --git a/src/mame/drivers/x07.cpp b/src/mame/drivers/x07.cpp
index a6af4c9e50a..cab05b9f357 100644
--- a/src/mame/drivers/x07.cpp
+++ b/src/mame/drivers/x07.cpp
@@ -1437,9 +1437,9 @@ void x07_state::machine_start()
{
// 0x4000 - 0x4fff 4KB RAM
// 0x6000 - 0x7fff 8KB ROM
- program.install_read_handler(ram_size, ram_size + 0xfff, read8sm_delegate(FUNC(generic_slot_device::read_ram),(generic_slot_device*)m_card));
- program.install_write_handler(ram_size, ram_size + 0xfff, write8sm_delegate(FUNC(generic_slot_device::write_ram),(generic_slot_device*)m_card));
- program.install_read_handler(0x6000, 0x7fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_card));
+ program.install_read_handler(ram_size, ram_size + 0xfff, read8_delegate(FUNC(generic_slot_device::read_ram),(generic_slot_device*)m_card));
+ program.install_write_handler(ram_size, ram_size + 0xfff, write8_delegate(FUNC(generic_slot_device::write_ram),(generic_slot_device*)m_card));
+ program.install_read_handler(0x6000, 0x7fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_card));
m_card->save_ram();
}
@@ -1482,18 +1482,18 @@ void x07_state::machine_reset()
MACHINE_CONFIG_START(x07_state::x07)
/* basic machine hardware */
- NSC800(config, m_maincpu, 15.36_MHz_XTAL / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &x07_state::x07_mem);
- m_maincpu->set_addrmap(AS_IO, &x07_state::x07_io);
+ MCFG_DEVICE_ADD("maincpu", NSC800, 15.36_MHz_XTAL / 4)
+ MCFG_DEVICE_PROGRAM_MAP(x07_mem)
+ MCFG_DEVICE_IO_MAP(x07_io)
/* video hardware */
- screen_device &lcd(SCREEN(config, "lcd", SCREEN_TYPE_LCD));
- lcd.set_refresh_hz(60);
- lcd.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- lcd.set_screen_update(FUNC(x07_state::screen_update));
- lcd.set_size(120, 32);
- lcd.set_visarea(0, 120-1, 0, 32-1);
- lcd.set_palette("palette");
+ MCFG_SCREEN_ADD("lcd", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(x07_state, screen_update)
+ MCFG_SCREEN_SIZE(120, 32)
+ MCFG_SCREEN_VISIBLE_AREA(0, 120-1, 0, 32-1)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette", FUNC(x07_state::x07_palette), 2);
GFXDECODE(config, "gfxdecode", "palette", gfx_x07);
@@ -1501,12 +1501,12 @@ MACHINE_CONFIG_START(x07_state::x07)
/* sound hardware */
SPEAKER(config, "mono").front_center();
BEEP(config, "beeper", 0).add_route(ALL_OUTPUTS, "mono", 0.50);
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
/* printer */
- PRINTER(config, m_printer, 0);
+ MCFG_DEVICE_ADD("printer", PRINTER, 0)
- TIMER(config, "blink_timer").configure_periodic(FUNC(x07_state::blink_timer), attotime::from_msec(300));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("blink_timer", x07_state, blink_timer, attotime::from_msec(300))
NVRAM(config, "nvram1").set_custom_handler(FUNC(x07_state::nvram_init)); // t6834 RAM
NVRAM(config, "nvram2", nvram_device::DEFAULT_ALL_0); // RAM banks
@@ -1525,14 +1525,14 @@ MACHINE_CONFIG_START(x07_state::x07)
MCFG_GENERIC_LOAD(x07_state, x07_card)
/* cassette */
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(x07_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("x07_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(x07_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("x07_cass")
/* Software lists */
- SOFTWARE_LIST(config, "card_list").set_original("x07_card");
- SOFTWARE_LIST(config, "cass_list").set_original("x07_cass");
+ MCFG_SOFTWARE_LIST_ADD("card_list", "x07_card")
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "x07_cass")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/x1.cpp b/src/mame/drivers/x1.cpp
index be1d3390a14..0a41b7f62e3 100644
--- a/src/mame/drivers/x1.cpp
+++ b/src/mame/drivers/x1.cpp
@@ -700,7 +700,7 @@ READ8_MEMBER( x1_state::x1_rom_r )
{
// logerror("%06x\n",m_rom_index[0]<<16|m_rom_index[1]<<8|m_rom_index[2]<<0);
if (m_cart->exists())
- return m_cart->read_rom((m_rom_index[0] << 16) | (m_rom_index[1] << 8) | (m_rom_index[2] << 0));
+ return m_cart->read_rom(space, (m_rom_index[0] << 16) | (m_rom_index[1] << 8) | (m_rom_index[2] << 0));
else
return 0;
}
@@ -1009,7 +1009,7 @@ READ8_MEMBER( x1_state::x1_ex_gfxram_r )
if (!machine().side_effects_disabled())
{
m_iobank->set_bank(0); // any read disables the extended mode
- return m_iobank->read8(offset);
+ return m_iobank->read8(space, offset);
}
else
{
@@ -1069,12 +1069,12 @@ WRITE8_MEMBER( x1_state::x1_6845_w )
if(offset == 0)
{
m_crtc_index = data & 31;
- m_crtc->address_w(data);
+ m_crtc->address_w(space, offset, data);
}
else
{
m_crtc_vreg[m_crtc_index] = data;
- m_crtc->register_w(data);
+ m_crtc->register_w(space, offset, data);
}
}
@@ -1547,7 +1547,7 @@ WRITE8_MEMBER(x1_state::io_write_byte)
READ8_MEMBER(x1_state::ym_r)
{
- uint8_t result = m_ym->read(offset);
+ uint8_t result = m_ym->read(space, offset);
if (!BIT(offset, 0))
result = (result & 0x7f) | (m_sound_sw->read() & 0x80);
return result;
@@ -2191,15 +2191,14 @@ static void x1_floppies(device_slot_interface &device)
device.option_add("dd", FLOPPY_525_DD);
}
-void x1_state::x1(machine_config &config)
-{
+MACHINE_CONFIG_START(x1_state::x1)
/* basic machine hardware */
Z80(config, m_maincpu, MAIN_CLOCK/4);
m_maincpu->set_addrmap(AS_PROGRAM, &x1_state::x1_mem);
m_maincpu->set_addrmap(AS_IO, &x1_state::x1_io);
m_maincpu->set_daisy_config(x1_daisy);
- ADDRESS_MAP_BANK(config, m_iobank).set_map(&x1_state::x1_io_banks).set_options(ENDIANNESS_LITTLE, 8, 17, 0x10000);
+ ADDRESS_MAP_BANK(config, "iobank").set_map(&x1_state::x1_io_banks).set_options(ENDIANNESS_LITTLE, 8, 17, 0x10000);
z80ctc_device& ctc(Z80CTC(config, "ctc", MAIN_CLOCK/4));
ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
@@ -2207,7 +2206,7 @@ void x1_state::x1(machine_config &config)
ctc.zc_callback<1>().set("ctc", FUNC(z80ctc_device::trg1));
ctc.zc_callback<2>().set("ctc", FUNC(z80ctc_device::trg2));
- X1_KEYBOARD(config, "x1kb", 0);
+ MCFG_DEVICE_ADD("x1kb", X1_KEYBOARD, 0)
i8255_device &ppi(I8255A(config, "ppi8255_0"));
ppi.in_pa_callback().set(FUNC(x1_state::x1_porta_r));
@@ -2221,12 +2220,12 @@ void x1_state::x1(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(x1_state,x1)
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(640, 480);
- m_screen->set_visarea(0, 640-1, 0, 480-1);
- m_screen->set_screen_update(FUNC(x1_state::screen_update_x1));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(x1_state, screen_update_x1)
H46505(config, m_crtc, (VDP_CLOCK/48)); //unknown divider
m_crtc->set_screen(m_screen);
@@ -2243,14 +2242,15 @@ void x1_state::x1(machine_config &config)
// TODO: guesswork, try to implicitly start the motor
m_fdc->hld_wr_callback().set(FUNC(x1_state::hdl_w));
- FLOPPY_CONNECTOR(config, "fdc:0", x1_floppies, "dd", x1_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", x1_floppies, "dd", x1_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:2", x1_floppies, "dd", x1_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:3", x1_floppies, "dd", x1_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", x1_floppies, "dd", x1_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", x1_floppies, "dd", x1_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:2", x1_floppies, "dd", x1_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:3", x1_floppies, "dd", x1_state::floppy_formats)
- SOFTWARE_LIST(config, "flop_list").set_original("x1_flop");
+ MCFG_SOFTWARE_LIST_ADD("flop_list","x1_flop")
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "x1_cart", "bin,rom");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "x1_cart")
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
@@ -2263,21 +2263,20 @@ void x1_state::x1(machine_config &config)
ay.add_route(0, "rspeaker", 0.25);
ay.add_route(1, "lspeaker", 0.5);
ay.add_route(2, "rspeaker", 0.5);
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "lspeaker", 0.25).add_route(ALL_OUTPUTS, "rspeaker", 0.10);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "lspeaker", 0.25).add_route(ALL_OUTPUTS, "rspeaker", 0.10);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(x1_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("x1_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(x1_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("x1_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("x1_cass");
+ MCFG_SOFTWARE_LIST_ADD("cass_list","x1_cass")
- TIMER(config, "keyboard_timer").configure_periodic(FUNC(x1_state::x1_keyboard_callback), attotime::from_hz(250));
- TIMER(config, "cmt_wind_timer").configure_periodic(FUNC(x1_state::x1_cmt_wind_timer), attotime::from_hz(16));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", x1_state, x1_keyboard_callback, attotime::from_hz(250))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("cmt_wind_timer", x1_state, x1_cmt_wind_timer, attotime::from_hz(16))
+MACHINE_CONFIG_END
-void x1_state::x1turbo(machine_config &config)
-{
+MACHINE_CONFIG_START(x1_state::x1turbo)
x1(config);
m_maincpu->set_addrmap(AS_PROGRAM, &x1_state::x1turbo_mem);
@@ -2285,7 +2284,8 @@ void x1_state::x1turbo(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(x1_state,x1turbo)
- m_iobank->set_map(&x1_state::x1turbo_io_banks);
+ MCFG_DEVICE_MODIFY("iobank")
+ MCFG_DEVICE_PROGRAM_MAP(x1turbo_io_banks)
z80sio0_device& sio(Z80SIO0(config, "sio", MAIN_CLOCK/4));
sio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
@@ -2303,7 +2303,7 @@ void x1_state::x1turbo(machine_config &config)
YM2151(config, m_ym, MAIN_CLOCK/8); //option board
m_ym->add_route(0, "lspeaker", 0.50);
m_ym->add_route(1, "rspeaker", 0.50);
-}
+MACHINE_CONFIG_END
/*************************************
*
diff --git a/src/mame/drivers/x1twin.cpp b/src/mame/drivers/x1twin.cpp
index 698f5059488..a12b96eb0a6 100644
--- a/src/mame/drivers/x1twin.cpp
+++ b/src/mame/drivers/x1twin.cpp
@@ -410,8 +410,7 @@ static void x1_floppies(device_slot_interface &device)
device.option_add("dd", FLOPPY_525_DD);
}
-void x1twin_state::x1twin(machine_config &config)
-{
+MACHINE_CONFIG_START(x1twin_state::x1twin)
/* basic machine hardware */
Z80(config, m_maincpu, X1_MAIN_CLOCK/4);
m_maincpu->set_addrmap(AS_PROGRAM, &x1twin_state::x1_mem);
@@ -426,7 +425,7 @@ void x1twin_state::x1twin(machine_config &config)
ctc.zc_callback<1>().set("ctc", FUNC(z80ctc_device::trg1));
ctc.zc_callback<2>().set("ctc", FUNC(z80ctc_device::trg2));
- X1_KEYBOARD(config, "x1kb", 0);
+ MCFG_DEVICE_ADD("x1kb", X1_KEYBOARD, 0)
i8255_device &ppi(I8255A(config, "ppi8255_0"));
ppi.in_pa_callback().set(FUNC(x1_state::x1_porta_r));
@@ -448,23 +447,23 @@ void x1twin_state::x1twin(machine_config &config)
m_maincpu->add_route(0, "pce_l", 0.5);
m_maincpu->add_route(1, "pce_r", 0.5);
- TIMER(config, "scantimer").configure_scanline(FUNC(x1twin_state::pce_interrupt), "pce_screen", 0, 1);
+ MCFG_TIMER_ADD_SCANLINE("scantimer", pce_interrupt, "pce_screen", 0, 1)
#endif
config.set_default_layout(layout_dualhsxs);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- m_screen->set_size(640, 480);
- m_screen->set_visarea(0, 640-1, 0, 480-1);
- m_screen->set_screen_update(FUNC(x1twin_state::screen_update_x1));
-
- screen_device &pce_screen(SCREEN(config, "pce_screen", SCREEN_TYPE_RASTER));
- pce_screen.set_refresh_hz(60);
- pce_screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- pce_screen.set_raw(PCE_MAIN_CLOCK/2, huc6260_device::WPF, 70, 70 + 512 + 32, huc6260_device::LPF, 14, 14+242);
- pce_screen.set_screen_update(FUNC(x1twin_state::screen_update_x1pce));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(x1twin_state, screen_update_x1)
+
+ MCFG_SCREEN_ADD("pce_screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK/2, huc6260_device::WPF, 70, 70 + 512 + 32, huc6260_device::LPF, 14, 14+242)
+ MCFG_SCREEN_UPDATE_DRIVER(x1twin_state, screen_update_x1pce)
H46505(config, m_crtc, (VDP_CLOCK/48)); //unknown divider
m_crtc->set_screen(m_screen);
@@ -481,14 +480,15 @@ void x1twin_state::x1twin(machine_config &config)
// TODO: guesswork, try to implicitly start the motor
m_fdc->hld_wr_callback().set(FUNC(x1_state::hdl_w));
- FLOPPY_CONNECTOR(config, "fdc:0", x1_floppies, "dd", x1_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", x1_floppies, "dd", x1_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:2", x1_floppies, "dd", x1_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:3", x1_floppies, "dd", x1_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", x1_floppies, "dd", x1_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", x1_floppies, "dd", x1_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:2", x1_floppies, "dd", x1_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:3", x1_floppies, "dd", x1_state::floppy_formats)
- SOFTWARE_LIST(config, "flop_list").set_original("x1_flop");
+ MCFG_SOFTWARE_LIST_ADD("flop_list","x1_flop")
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "x1_cart", "bin,rom");
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "x1_cart")
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
SPEAKER(config, "x1_l").front_left();
SPEAKER(config, "x1_r").front_right();
@@ -506,18 +506,18 @@ void x1twin_state::x1twin(machine_config &config)
ay.add_route(0, "x1_r", 0.25);
ay.add_route(1, "x1_l", 0.5);
ay.add_route(2, "x1_r", 0.5);
- WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "x1_l", 0.25).add_route(ALL_OUTPUTS, "x1_r", 0.10);
+ WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "x1_l", 0.25).add_route(ALL_OUTPUTS, "x1_r", 0.10);
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(x1_cassette_formats);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette->set_interface("x1_cass");
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(x1_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("x1_cass")
- SOFTWARE_LIST(config, "cass_list").set_original("x1_cass");
+ MCFG_SOFTWARE_LIST_ADD("cass_list","x1_cass")
- TIMER(config, "keyboard_timer").configure_periodic(FUNC(x1twin_state::x1_keyboard_callback), attotime::from_hz(250));
- TIMER(config, "cmt_wind_timer").configure_periodic(FUNC(x1twin_state::x1_cmt_wind_timer), attotime::from_hz(16));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", x1twin_state, x1_keyboard_callback, attotime::from_hz(250))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("cmt_wind_timer", x1twin_state, x1_cmt_wind_timer, attotime::from_hz(16))
+MACHINE_CONFIG_END
ROM_START( x1twin )
ROM_REGION( 0x10000, "x1_cpu", ROMREGION_ERASEFF )
diff --git a/src/mame/drivers/x68k.cpp b/src/mame/drivers/x68k.cpp
index bed11f4ea77..d083d5dce10 100644
--- a/src/mame/drivers/x68k.cpp
+++ b/src/mame/drivers/x68k.cpp
@@ -1045,12 +1045,12 @@ WRITE8_MEMBER(x68k_state::adpcm_w)
{
switch(offset)
{
- case 0x00:
- m_okim6258->ctrl_w(data);
- break;
- case 0x01:
- m_okim6258->data_w(data);
- break;
+ case 0x00:
+ m_okim6258->ctrl_w(space,0,data);
+ break;
+ case 0x01:
+ m_okim6258->data_w(space,0,data);
+ break;
}
}
@@ -1551,9 +1551,8 @@ static void keyboard_devices(device_slot_interface &device)
device.option_add("x68k", X68K_KEYBOARD);
}
-void x68k_state::x68000_base(machine_config &config)
-{
- config.m_minimum_quantum = attotime::from_hz(60);
+MACHINE_CONFIG_START(x68k_state::x68000_base)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* device hardware */
MC68901(config, m_mfpdev, 16_MHz_XTAL / 4);
@@ -1578,8 +1577,8 @@ void x68k_state::x68000_base(machine_config &config)
m_hd63450->set_burst_clocks(attotime::from_usec(2), attotime::from_nsec(450), attotime::from_nsec(50), attotime::from_nsec(50));
m_hd63450->dma_end().set(FUNC(x68k_state::dma_end));
m_hd63450->dma_error().set(FUNC(x68k_state::dma_error));
- m_hd63450->dma_read<0>().set("upd72065", FUNC(upd72065_device::dma_r));
- m_hd63450->dma_write<0>().set("upd72065", FUNC(upd72065_device::dma_w));
+ m_hd63450->dma_read<0>().set("upd72065", FUNC(upd72065_device::mdma_r));
+ m_hd63450->dma_write<0>().set("upd72065", FUNC(upd72065_device::mdma_w));
SCC8530(config, m_scc, 40_MHz_XTAL / 8);
@@ -1627,17 +1626,17 @@ void x68k_state::x68000_base(machine_config &config)
SOFTWARE_LIST(config, "flop_list").set_original("x68k_flop");
- X68K_EXPANSION_SLOT(config, m_expansion, x68000_exp_cards, nullptr);
- m_expansion->set_space(m_maincpu, AS_PROGRAM);
- m_expansion->out_irq2_callback().set(FUNC(x68k_state::irq2_line));
- m_expansion->out_irq4_callback().set(FUNC(x68k_state::irq4_line));
- m_expansion->out_nmi_callback().set_inputline(m_maincpu, M68K_IRQ_7);
+ MCFG_DEVICE_ADD("exp", X68K_EXPANSION_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(x68000_exp_cards, nullptr, false)
+ MCFG_X68K_EXPANSION_SLOT_OUT_IRQ2_CB(WRITELINE(*this, x68k_state, irq2_line))
+ MCFG_X68K_EXPANSION_SLOT_OUT_IRQ4_CB(WRITELINE(*this, x68k_state, irq4_line))
+ MCFG_X68K_EXPANSION_SLOT_OUT_NMI_CB(INPUTLINE("maincpu", M68K_IRQ_7))
/* internal ram */
RAM(config, m_ram).set_default_size("4M").set_extra_options("1M,2M,3M,5M,6M,7M,8M,9M,10M,11M,12M");
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-}
+MACHINE_CONFIG_END
void x68k_state::x68000(machine_config &config)
{
diff --git a/src/mame/drivers/xain.cpp b/src/mame/drivers/xain.cpp
index f1e7ba5aa94..6d97b221b56 100644
--- a/src/mame/drivers/xain.cpp
+++ b/src/mame/drivers/xain.cpp
@@ -471,29 +471,28 @@ void xain_state::machine_start()
save_item(NAME(m_vblank));
}
-void xain_state::xsleena(machine_config &config)
-{
- // basic machine hardware
- MC6809E(config, m_maincpu, CPU_CLOCK); // 68B09E
- m_maincpu->set_addrmap(AS_PROGRAM, &xain_state::main_map);
+MACHINE_CONFIG_START(xain_state::xsleena)
- TIMER(config, "scantimer").configure_scanline(FUNC(xain_state::scanline), "screen", 0, 1);
+ // basic machine hardware
+ MCFG_DEVICE_ADD(m_maincpu, MC6809E, CPU_CLOCK) // 68B09E
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", xain_state, scanline, "screen", 0, 1)
- MC6809E(config, m_subcpu, CPU_CLOCK); // 68B09E
- m_subcpu->set_addrmap(AS_PROGRAM, &xain_state::cpu_map_B);
+ MCFG_DEVICE_ADD(m_subcpu, MC6809E, CPU_CLOCK) // 68B09E
+ MCFG_DEVICE_PROGRAM_MAP(cpu_map_B)
- MC6809(config, m_audiocpu, PIXEL_CLOCK); // 68A09
- m_audiocpu->set_addrmap(AS_PROGRAM, &xain_state::sound_map);
+ MCFG_DEVICE_ADD(m_audiocpu, MC6809, PIXEL_CLOCK) // 68A09
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
TAITO68705_MCU(config, m_mcu, MCU_CLOCK);
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
// video hardware
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, 384, 0, 256, 272, 8, 248); // based on ddragon driver
- m_screen->set_screen_update(FUNC(xain_state::screen_update));
- m_screen->set_palette(m_palette);
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 8, 248) // based on ddragon driver
+ MCFG_SCREEN_UPDATE_DRIVER(xain_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_xain);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 512);
@@ -515,17 +514,17 @@ void xain_state::xsleena(machine_config &config)
ym2.add_route(1, "mono", 0.50);
ym2.add_route(2, "mono", 0.50);
ym2.add_route(3, "mono", 0.40);
-}
+MACHINE_CONFIG_END
-void xain_state::xsleenab(machine_config &config)
-{
+MACHINE_CONFIG_START(xain_state::xsleenab)
xsleena(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &xain_state::bootleg_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(bootleg_map)
- config.device_remove("mcu");
-}
+ MCFG_DEVICE_REMOVE("mcu")
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/xavix.cpp b/src/mame/drivers/xavix.cpp
index f0f9f8b4570..ff1c7fc7f1d 100644
--- a/src/mame/drivers/xavix.cpp
+++ b/src/mame/drivers/xavix.cpp
@@ -63,9 +63,9 @@
11 Tomas Plarail /TOMY/Japan - - - - - - -
12 Thomas TV Personal Computer /EPOCH/Japan - - - - - - -
13 STAR WARS Light Saber Battle /TOMY/Japan - - - - - - -
- 14 Jala Jaland /atlus/Japan - - - - - - - (is this the arcade release of Jara-Ja Land /TAKARA/Japan below?, Atlas are an arcade distributor and arcade version is confirmed)
+ 14 Jala Jaland /atlus/Japan - - - - - - -
15 Star Wars Lightsaber Battle Game /Hasbro/USA SWSA x8 48 8M 24C02 SSD 2000 NEC 85605-621 dumped
- 16 Gururin World /EPOCH/Japan - x8 - - - SSD 98 PL7351-181 dumped
+ 16 Gururin World /EPOCH/Japan - - - - - - -
17 Toinohgi Onmyo-daisenki /BANDAI/Japan - - - - - - -
2004 1 Accessory cartridge for Super TV computer "Double mouse party"/EPOCH/Japan - - - - - - -
2 Printer for TV computer /EPOCH/Japan - - - - - - -
@@ -73,12 +73,12 @@
4 Accessory cartridge for Super TV computer "Doraemon"/EPOCH/Japan - - - - - - -
5 Accessory cartridge for Super TV computer "Hamutaro"/EPOCH/Japan - - - - - - -
6 Super TV computer /EPOCH/Japan - - - - - - -
- 7 Super Dash ball /EPOCH/Japan - x8 - - - SSD 2000 NEC 85605-621 dumped
+ 7 Super Dash ball /EPOCH/Japan - - - - - - -
8 Exciting sports Tennis X Fitness /EPOCH/Japan - - - - - - -
9 Accessory memory mascot for TV mail Pc mail cot 2 characters (Putchi, Petchi) /EPOCH/Japan - - - - - - -
10 Accessory memory mascot for TV mail Pc mail cot 2 characters (Charuru, Kurau) /EPOCH/Japan - - - - - - -
11 The Lord of the Rings Warrior of Middle Earth /Hasbro/USA LORA x8 48 8M 24C02 SSD 2000 NEC 85605-621 dumped
- 12 Beyblade Arcade Challenge 5-in-1 /Hasbro/USA - - - - - - have
+ 12 Beyblade Arcade Challenge 5-in-1 /Hasbro/USA - - - - - - -
13 All star Festival Quize /EPOCH/Japan - - - - - - -
14 e-kara mix /TAKARA/Japan - - - - - - -
15 Jumping Popira /TAKARA/Japan - - - - - - -
@@ -86,7 +86,7 @@
17 TV mail PC "Mercot /EPOCH/Japan - - - - - - -
18 Play TV Monster Truck /RADICA/USA 74026 x8 48 4M none SSD 98 PL7351-181 dumped
19 Play TV Madden Football /RADICA/USA 74021 x8 48 4M none SSD 98 PL7351-181 dumped
- 20 Play TV SSX Snowboarder (and Snowboarder white?) /RADICA/USA 74023 none dumped
+ 20 Play TV SSX Snowboarder (and Snowboarder white?) /RADICA/USA 74023 none have
21 Disney Princess "Kira-Kira magical lesson" /TOMY/Japan - - - - - - -
22 Mermaid Melody "pichi-pichi Pitch" e-pitch microcomputer pure starter set /TAKARA/Japan - - - - - - -
23 Hello Kitty TV computer /EPOCH/Japan - - - - - - -
@@ -98,15 +98,15 @@
5 Exciting stadium DX, Hansin Tigers version /EPOCH/Japan - - - - - - -
6 Dragon Quest /SQUARE ENIX/Japan - - - 8M - SSD 2000? dumped
7 Croquette! Win a medal! /EPOCH/Japan - - - - - - -
- 8 Taiko Popira /TAKARA/Japan - - - - - - dumped
+ 8 Taiko Popira /TAKARA/Japan - - - - - - -
9 Together Minimoni, Dancing' Stage! plus /EPOCH/Japan - - - - - - -
10 Evio /TOMY/Japan - - - - - - -
11 Together Minimoni,Jumping Party! /EPOCH/Japan - - - - - - -
12 Hamutaro TV computer /EPOCH/Japan - - - - - - -
- 13 Jara-Ja Land /TAKARA/Japan - - - - - - - (is this the home release of Jala Jaland /atlus/Japan above?)
+ 13 Jara-Ja Land /TAKARA/Japan - - - - - - -
14 Tomika, Draiving by Car navigation system /TOMY/Japan - - - - - - -
15 PLAY TV Rescue Heroes /RADICA/USA 73036 x8 48 2M none SSD 98 PL7351-181 dumped
- 16 PLAY TV Huntin' 2 /RADICA/USA 73030 x8 none none SSD 98 PL7351-181 dumped
+ 16 PLAY TV Huntin' 2 /RADICA/USA 73030 x8 none none SSD 98 PL7351-181 have
17 Let's play Ping-pong. Exciting pingpong2 /EPOCH/Japan - - - - - - -
18 Cartridge for Slot machine TV "King of wild animal" /TAKARA/Japan - - - - - - -
19 ChyoroQ "Burning up Racer /TAKARA/Japan - - - - - - -
@@ -120,7 +120,7 @@
2002 1 Accessory cartridge for Slot machine "Gin-gin maru TV" /TAKARA/Japan - - - - - - -
2 Wildest computer robot "Daigander" (Korean version) /TAKARA/Korea - - - - - - -
3 Hamutaro's circus /EPOCH/Japan - - - - - - -
- 4 Doraemon Wakuwaku Kuukihou /EPOCH/Japan - x8 - - - - dumped
+ 4 Doraemon ,computer megaphone /EPOCH/Japan - - - - - - -
5 Strike! Exciting bowling /EPOCH/Japan - - - - - - -
6 e-kara /Hasbro/Spain - - - - - - -
7 Starter set for e-kara H.S," Morning sisters" /TAKARA/Japan - - - - - - -
@@ -137,11 +137,11 @@
18 Starter set for e-kara N "Morning sisters" /TAKARA/Japan - - - - - - -
19 e-kara /Hasbro/England - - - - - - dumped? (if same as one of the 'US' sets?)
20 e-kara /Takara USA/USA - - - - - - dumped? (or #10 below, this might be ekaraa set with improved text)
- 21 PLAY TV Soccer /RADICA/USA 76088500 x8 none none SSD 98 PA7351-107 have
+ 21 e-kara PLAY TV Soccer /RADICA/USA 76088500 x8 none none SSD 98 PA7351-107 (aka Radica PlayTV Soccer? if so, have)
22 PLAY TV Jr. Construction /RADICA/USA - - - - - - -
23 PLAY TV Boxing /RADICA/Japan 72039 x8 48 2M none SSD 98 PA7351-107 dumped
24 PLAY TV Baseball 2 /RADICA/USA 72042 x8 48 2M none SSD 98 PL7351-181 dumped
- 25 Barbie Dance Party /RADICA/USA,EU - x8 none - - - dumped
+ 25 Barbie Dance Party /RADICA/USA,EU - - - - - - -
26 Compete! Exciting stadium DX /EPOCH/Japan - - - - - - -
27 e-kara N /EPOCH/Japan - - - - - - -
28 Who's the ace? Excite Tennis /EPOCH/Japan - - - - - - -
@@ -180,17 +180,16 @@
2000 1 Popira /TAKARA/Japan - - - - - - dumped
2 e-kara Duet microphone /TAKARA/Japan - - - - - - -
3 e-kara /TAKARA/Japan - - - - - - dumped
- 4 Let's play ping-pong. Exciting ping-pong /EPOCH/Japan - - - - - - dumped
- 5 PLAY TV Huntin' Buckmasters /RADICA/USA 8074 x8 none none SSD 98 PA7351-107 dumped
+ 4 Let's play ping-pong. Exciting ping-pong /EPOCH/Japan - - - - - - -
+ 5 PLAY TV Huntin' Buckmasters /RADICA/USA 8074 x8 none none SSD 98 PA7351-107 have
6 PLAY TV Ping Pong /RADICA/USA,HK,EU 8028 x8 48 1M none SSD 97 PA7270-107 dumped
- 7 PLAY TV OPUS /RADICA/USA,EU - - - - - - dumped (US version, PAL version appears to use different ROM)
+ 7 PLAY TV OPUS /RADICA/USA,EU - - - - - - -
8 PLAY TV Baseball 2 /EPOCH/Japan, HK - - - - - - -
- 9 Let's hit a homerun! Exciting baseball /EPOCH/Japan - - - - - -
- Play TV Baseball /RADICA/USA,EU 8017 x8 none none SSD 98 PA7351-107 dumped
+ 9 Let's hit a homerun! Exciting baseball /RADICA/USA,EU 8017 x8 none none SSD 98 PA7351-107 (aka Radica PlayTV Baseball, if so, have)
1999 1 ABC Jungle Fun Hippo /Vteck/HK, USA, France - - - - - - -
Unknown 1 PLAY TV Football /RADICA/USA 74021 x8 48 4M none SSD 98 PL7351-181 dumped
XaviXTennis SGM6446 x16 48 8M 24C08 SSD 2002 NEC 85054-611 dumped
- XaviXBowling SGM644C x16 48 dumped
+ XaviXBowling SGM644C x16 48 not dumped
TODO: put into above table (XaviXPORT cartridges)
@@ -202,32 +201,6 @@
Fitness Dance has an Atmel H93864C (maybe SEEPROM?) a Microchip DSPIC 33FJ12GP202 and two JRC 2740 dual op amps.
Music and Circuit has a 24CS64, two UTC324 quad op amps, a 74HC14, a 74HCT04, and an 8-pin SOIC labeled 61545, which is likely an M61545 dual electronic volume control.
- It looks like the sensors (cameras) are from ETOMS
- They are all 32x32 arrays except Fitness Play, which is 64x64. Most of the PCBs are marked CIS.
- Bowling and Boxing look identical.
- LOTR and SW look identical
- DQ looks similar to LOTR
- Real Swing Golf (different driver) and Fitness Play look different from all the others.
-
- The sensor dies for Bowling, Boxing, Star Wars and DQ are labeled CU5501A.
- LOTR is CU5501
- Real Swing Golf is CU5502
- Fitness Play is S-5300A SLH2039H and does not have ETOMS on it.
- The Fitness Play main PCB has an extra glob next to the ribbon cable to the camera.
- Most of the camera PCBs connect to the main PCB with an 18-20 wire ribbon cable.
-
- Real Swing Golf just has 6 wires, Its camera PCB is the only one with a ceramic resonator
- Maybe the CU5502 chip offloads some processing from the CPU?
-
-
-
- NOTES:
-
- Play TV Monster Truck runs off an entirely different codebase to everything else, presumably coded by the developer from scratch rather than using code supplied by SSD Company LTD
- Play TV Rescue Heroes fails to display any kind of XaviX logo or SSD Copyright, it is the only XaviX based game so far to not show these details anywhere in the game.
-
-
-
***************************************************************************/
#include "emu.h"
@@ -270,9 +243,6 @@ void xavix_state::xavix_map(address_map &map)
{
map(0x000000, 0x7fffff).r(FUNC(xavix_state::opcodes_000000_r));
map(0x800000, 0xffffff).r(FUNC(xavix_state::opcodes_800000_r));
-
- map(0x000000, 0x003fff).w(FUNC(xavix_state::debug_mem_w));
-
}
// this is used by data reads / writes after some processing in the core to decide if data reads can see lowbus, zeropage, stack, bank registers etc. and only falls through to here on a true external bus access
@@ -338,15 +308,20 @@ void xavix_state::xavix_lowbus_map(address_map &map)
map(0x75f0, 0x75f1).rw(FUNC(xavix_state::sound_startstop_r), FUNC(xavix_state::sound_startstop_w)); // r/w tested read/written 8 times in a row
map(0x75f2, 0x75f3).rw(FUNC(xavix_state::sound_updateenv_r), FUNC(xavix_state::sound_updateenv_w));
map(0x75f4, 0x75f5).r(FUNC(xavix_state::sound_sta16_r)); // related to 75f0 / 75f1 (read after writing there - rad_mtrk)
+ // taitons1 after 75f7/75f8
map(0x75f6, 0x75f6).rw(FUNC(xavix_state::sound_volume_r), FUNC(xavix_state::sound_volume_w)); // r/w tested
+ // taitons1 written as a pair
map(0x75f7, 0x75f7).w(FUNC(xavix_state::sound_regbase_w));
map(0x75f8, 0x75f8).rw(FUNC(xavix_state::sound_75f8_r), FUNC(xavix_state::sound_75f8_w)); // r/w tested
+ // taitons1 written after 75f6, then read
map(0x75f9, 0x75f9).rw(FUNC(xavix_state::sound_75f9_r), FUNC(xavix_state::sound_75f9_w));
+ // at another time
map(0x75fa, 0x75fa).rw(FUNC(xavix_state::sound_timer0_r), FUNC(xavix_state::sound_timer0_w)); // r/w tested
map(0x75fb, 0x75fb).rw(FUNC(xavix_state::sound_timer1_r), FUNC(xavix_state::sound_timer1_w)); // r/w tested
map(0x75fc, 0x75fc).rw(FUNC(xavix_state::sound_timer2_r), FUNC(xavix_state::sound_timer2_w)); // r/w tested
map(0x75fd, 0x75fd).rw(FUNC(xavix_state::sound_timer3_r), FUNC(xavix_state::sound_timer3_w)); // r/w tested
map(0x75fe, 0x75fe).rw(FUNC(xavix_state::sound_irqstatus_r), FUNC(xavix_state::sound_irqstatus_w));
+ // taitons1 written other 75xx operations
map(0x75ff, 0x75ff).w(FUNC(xavix_state::sound_75ff_w));
// Slot Registers
@@ -371,18 +346,15 @@ void xavix_state::xavix_lowbus_map(address_map &map)
map(0x7a80, 0x7a80).rw(FUNC(xavix_state::ioevent_enable_r), FUNC(xavix_state::ioevent_enable_w));
map(0x7a81, 0x7a81).rw(FUNC(xavix_state::ioevent_irqstate_r), FUNC(xavix_state::ioevent_irqack_w));
- // Mouse / Trackball?
- map(0x7b00, 0x7b00).rw("anport", FUNC(xavix_anport_device::mouse_7b00_r), FUNC(xavix_anport_device::mouse_7b00_w));
- map(0x7b01, 0x7b01).rw("anport", FUNC(xavix_anport_device::mouse_7b01_r), FUNC(xavix_anport_device::mouse_7b01_w));
- map(0x7b10, 0x7b10).rw("anport", FUNC(xavix_anport_device::mouse_7b10_r), FUNC(xavix_anport_device::mouse_7b10_w));
- map(0x7b11, 0x7b11).rw("anport", FUNC(xavix_anport_device::mouse_7b11_r), FUNC(xavix_anport_device::mouse_7b11_w));
+ // Mouse?
+ map(0x7b00, 0x7b00).w(FUNC(xavix_state::adc_7b00_w)); // rad_snow (not often, why?)
// Lightgun / pen 2 control
//map(0x7b18, 0x7b1b)
// ADC registers
- map(0x7b80, 0x7b80).rw("adc", FUNC(xavix_adc_device::adc_7b80_r), FUNC(xavix_adc_device::adc_7b80_w)); // rad_snow (not often)
- map(0x7b81, 0x7b81).rw("adc", FUNC(xavix_adc_device::adc_7b81_r), FUNC(xavix_adc_device::adc_7b81_w)); // written (often, m_trck, analog related?)
+ map(0x7b80, 0x7b80).rw(FUNC(xavix_state::adc_7b80_r), FUNC(xavix_state::adc_7b80_w)); // rad_snow (not often)
+ map(0x7b81, 0x7b81).rw(FUNC(xavix_state::adc_7b81_r), FUNC(xavix_state::adc_7b81_w)); // written (often, m_trck, analog related?)
// Sleep control
//map(0x7b82, 0x7b83)
@@ -394,11 +366,11 @@ void xavix_state::xavix_lowbus_map(address_map &map)
map(0x7c03, 0x7c03).r(FUNC(xavix_state::timer_curval_r));
// Barrel Shifter registers
- map(0x7ff0, 0x7ff1).rw("math", FUNC(xavix_math_device::barrel_r), FUNC(xavix_math_device::barrel_w));
+ // map(0x7ff0, 0x7ff1)
// Multiply / Divide registers
- map(0x7ff2, 0x7ff4).rw("math", FUNC(xavix_math_device::mult_param_r), FUNC(xavix_math_device::mult_param_w));
- map(0x7ff5, 0x7ff6).rw("math", FUNC(xavix_math_device::mult_r), FUNC(xavix_math_device::mult_w));
+ map(0x7ff2, 0x7ff4).rw(FUNC(xavix_state::mult_param_r), FUNC(xavix_state::mult_param_w));
+ map(0x7ff5, 0x7ff6).rw(FUNC(xavix_state::mult_r), FUNC(xavix_state::mult_w));
// CPU Vector registers
map(0x7ff9, 0x7ff9).w(FUNC(xavix_state::vector_enable_w)); // enables / disables the custom vectors
@@ -418,22 +390,9 @@ void xavix_state::superxavix_lowbus_map(address_map &map)
map(0x6c00, 0x6cff).ram().w(FUNC(xavix_state::bmp_palram_sh_w)).share("bmp_palram_sh");
map(0x6d00, 0x6dff).ram().w(FUNC(xavix_state::bmp_palram_l_w)).share("bmp_palram_l");
- // extended external bus stuff (possible banking control?)
- map(0x7909, 0x7909).w(FUNC(xavix_state::extended_extbus_reg0_w));
- map(0x790b, 0x790b).w(FUNC(xavix_state::extended_extbus_reg1_w));
- map(0x790d, 0x790d).w(FUNC(xavix_state::extended_extbus_reg2_w));
-
- map(0x7a10, 0x7a12).rw("xavix2002io", FUNC(xavix2002_io_device::pio_dir_r), FUNC(xavix2002_io_device::pio_dir_w));
- map(0x7a20, 0x7a22).rw("xavix2002io", FUNC(xavix2002_io_device::pio_out_r), FUNC(xavix2002_io_device::pio_out_w));
- map(0x7a30, 0x7a32).r("xavix2002io", FUNC(xavix2002_io_device::pio_in_r));
-
map(0x6fb0, 0x6fc7).ram().share("bmp_base");
-
- map(0x7ffd, 0x7ffd).nopw(); // looks like a watchdog?
}
-
-
static INPUT_PORTS_START( xavix )
PORT_START("IN0")
PORT_DIPNAME( 0x01, 0x00, "IN0" )
@@ -504,21 +463,12 @@ static INPUT_PORTS_START( xavix )
PORT_START("AN7")
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_START("MOUSE0X")
- PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_START("MOUSE0Y")
- PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_START("MOUSE1X")
- PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_START("MOUSE1Y")
- PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
-
PORT_START("REGION") // PAL/NTSC flag
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_CUSTOM )
INPUT_PORTS_END
static INPUT_PORTS_START( xavix_an )
- PORT_INCLUDE(xavix)
+ PORT_INCLUDE(xavix)
// test inputs, not real!
PORT_MODIFY("AN0") // 00
@@ -539,74 +489,10 @@ static INPUT_PORTS_START( xavix_an )
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(100) PORT_KEYDELTA(20)
INPUT_PORTS_END
-static INPUT_PORTS_START( xavix_i2c )
- PORT_INCLUDE(xavix)
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xavix_i2c_state,i2c_r, nullptr)
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( ttv_lotr )
- PORT_INCLUDE(xavix)
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xavix_i2c_lotr_state,camera_r, nullptr)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xavix_i2c_lotr_state,camera_r, nullptr)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xavix_i2c_state,i2c_r, nullptr)
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( xavix_bowl )
- PORT_INCLUDE(xavix)
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xavix_i2c_bowl_state,camera_r, nullptr)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xavix_i2c_bowl_state,camera_r, nullptr)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xavix_i2c_state,i2c_r, nullptr)
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( epo_sdb )
- PORT_INCLUDE(xavix)
-
- PORT_MODIFY("MOUSE0X")
- PORT_BIT( 0xff, 0x00, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_REVERSE PORT_PLAYER(1)
- PORT_MODIFY("MOUSE0Y")
- PORT_BIT( 0xff, 0x00, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_PLAYER(1)
- PORT_MODIFY("MOUSE1X")
- PORT_BIT( 0xff, 0x00, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_REVERSE PORT_PLAYER(2)
- PORT_MODIFY("MOUSE1Y")
- PORT_BIT( 0xff, 0x00, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_PLAYER(2)
-
- PORT_MODIFY("IN0")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( ltv_tam )
- PORT_INCLUDE(xavix_i2c)
-
- PORT_MODIFY("MOUSE0X")
- PORT_BIT( 0xff, 0x00, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_REVERSE PORT_PLAYER(1)
- PORT_MODIFY("MOUSE0Y")
- PORT_BIT( 0xff, 0x00, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_PLAYER(1)
- PORT_MODIFY("MOUSE1X")
- PORT_BIT( 0xff, 0x00, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_REVERSE PORT_PLAYER(2)
- PORT_MODIFY("MOUSE1Y")
- PORT_BIT( 0xff, 0x00, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_PLAYER(2)
-
- PORT_MODIFY("IN0")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
-INPUT_PORTS_END
-
-
// left + right drums together = select / forward (needed on initial screen). left drum = left in menus right drum = right in menus
// analog reading depends heavily on timers, they're too fast right now so drum hits are too hard and register multiple times
-static INPUT_PORTS_START( taikodp )
- PORT_INCLUDE(xavix_an)
+static INPUT_PORTS_START( taikodp )
+ PORT_INCLUDE(xavix_an)
PORT_MODIFY("AN0") // 00 (read by one type of function, handled in timer interrupt at 0x1d92 in RAM)
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(20)
@@ -616,7 +502,7 @@ static INPUT_PORTS_START( taikodp )
PORT_MODIFY("AN5") // 11 (read by different function, handled in timer interrupt at 0x1de8) (battery status related?)
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
-
+
PORT_MODIFY("AN7") // 13 (read by identical function to 11 but with different addresses, handled in timer interrupt at 0x1e09 in RAM) (battery status related?)
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
@@ -629,34 +515,16 @@ static INPUT_PORTS_START( taikodp )
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_MODIFY("AN6") // 12
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xavix_i2c_cart_state,i2c_r, nullptr)
INPUT_PORTS_END
-static INPUT_PORTS_START( jpopira )
- PORT_INCLUDE(xavix)
-
- PORT_MODIFY("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Pad 1")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Pad 2")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Pad 3")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Pad 4")
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xavix_i2c_cart_state,i2c_r, nullptr)
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // pressing this will turn the game off.
-INPUT_PORTS_END
-
-
-
+/*
static INPUT_PORTS_START( xavixp )
- PORT_INCLUDE(xavix)
+ PORT_INCLUDE(xavix)
- PORT_MODIFY("REGION") // PAL/NTSC flag
- PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_CUSTOM )
+ PORT_MODIFY("REGION") // PAL/NTSC flag
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_CUSTOM )
INPUT_PORTS_END
-
+*/
/* Test mode lists the following
@@ -714,25 +582,6 @@ static INPUT_PORTS_START( rad_opus )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("Start / Bomb") // PI07
INPUT_PORTS_END
-static INPUT_PORTS_START( rad_hnt )
- PORT_INCLUDE(xavix)
-
- PORT_MODIFY("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Menu Next")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Menu Previous")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Menu Select")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Pause / Menu")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Fire Gun")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Safety") PORT_TOGGLE
-
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // pressing this will turn the game off.
-INPUT_PORTS_END
static INPUT_PORTS_START( rad_crdn )
PORT_INCLUDE(xavix)
@@ -803,8 +652,8 @@ static INPUT_PORTS_START( ekara )
PORT_INCLUDE(xavix)
PORT_MODIFY("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xavix_ekara_state,ekara_multi0_r, nullptr)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xavix_ekara_state,ekara_multi1_r, nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) // multiplexed input
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) // multiplexed input
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // pressing this will turn the game off.
@@ -869,35 +718,6 @@ static INPUT_PORTS_START( popira )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
-static INPUT_PORTS_START( popira2 ) // player 2 buttons have heavy latency, probably due to incorrect timer emulation, hence NOT WORKING flag right now
- PORT_INCLUDE(xavix)
-
- PORT_MODIFY("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Pad 1") PORT_PLAYER(1)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Pad 2") PORT_PLAYER(1)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Pad 3") PORT_PLAYER(1)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P1 Pad 4") PORT_PLAYER(1)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Select Previous") PORT_PLAYER(1)
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Select Next") PORT_PLAYER(1)
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("Start") PORT_PLAYER(1)
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xavix_popira2_cart_state,i2c_r, nullptr)
- PORT_BIT( 0x30, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // pressing this will turn the game off.
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- // main input processing code is at 028059, which ends with setting a timer (028079) to read analog ports and get these buttons that way. main timer handler is at 00eb77, which reads ports via the ADC. $c3 where ports are stored is also checked at 00e6f4
- PORT_START("P2")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P2 Pad 1") PORT_PLAYER(2)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P2 Pad 2") PORT_PLAYER(2)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P2 Pad 3") PORT_PLAYER(2)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P2 Pad 4") PORT_PLAYER(2)
-INPUT_PORTS_END
-
-
static INPUT_PORTS_START( rad_bassp )
PORT_INCLUDE(rad_bass)
@@ -911,13 +731,11 @@ static INPUT_PORTS_START( rad_snow )
PORT_INCLUDE(xavix)
PORT_MODIFY("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("Foward / Go")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("Enter / Select")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Go") // is this a button, or 'up' ?
+
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // pressing this will turn the game off.
INPUT_PORTS_END
static INPUT_PORTS_START( rad_snowp )
@@ -927,19 +745,6 @@ static INPUT_PORTS_START( rad_snowp )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_CUSTOM )
INPUT_PORTS_END
-static INPUT_PORTS_START( rad_bdp )
- PORT_INCLUDE(xavix)
-
- PORT_MODIFY("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Purple / Up")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Red / Down")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Blue / Back")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Pink / Select")
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // pressing this will turn the game off.
-INPUT_PORTS_END
-
static INPUT_PORTS_START( rad_ping )
PORT_INCLUDE(xavix)
@@ -966,9 +771,9 @@ static INPUT_PORTS_START( rad_pingp )
INPUT_PORTS_END
static INPUT_PORTS_START( nostalgia )
- PORT_INCLUDE(xavix_i2c)
+ PORT_INCLUDE(xavix)
- PORT_MODIFY("IN0") // mappings based on Dragon Buster button list
+ PORT_MODIFY("IN0") // mappings based on Dragon Buster button list, inputs don't seem to work properly in some games, probably because bad EEPROM support means all buttons are mapped to the same thing?
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON4 ) // Fire4
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) // Fire3
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // not a button? (but can be used to pass prompts?)
@@ -984,44 +789,6 @@ static INPUT_PORTS_START( nostalgia )
INPUT_PORTS_END
-static INPUT_PORTS_START( tak_geig )
- PORT_INCLUDE(xavix)
-
- PORT_MODIFY("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) // pause
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) // pause
-
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( rad_bb )
- PORT_INCLUDE(xavix)
-
- PORT_MODIFY("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Menu Select")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Reset?") // might not be a real button
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Pause")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Menu Previous")
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Menu Next")
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // pressing this will turn the game off.
-INPUT_PORTS_END
-
// to access hidden test mode reset while holding Button1 and Button2 (works every other reset)
// to cycle through modes use Button 1 until you get to the input test
static INPUT_PORTS_START( rad_bb2 )
@@ -1040,17 +807,13 @@ static INPUT_PORTS_START( rad_bb2 )
INPUT_PORTS_END
static INPUT_PORTS_START( ttv_mx )
- PORT_INCLUDE(xavix_i2c)
+ PORT_INCLUDE(xavix)
PORT_MODIFY("IN0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) // Accel
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) // Brake
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Pause")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("Motion Up") // you tilt the device, but actual inputs are digital
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("Motion Down")
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_NAME("Motion Left")
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("Motion Right")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
INPUT_PORTS_END
@@ -1087,62 +850,8 @@ static INPUT_PORTS_START( rad_rh )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // pressing this will turn the game off.
INPUT_PORTS_END
-static INPUT_PORTS_START( epo_epp )
- PORT_INCLUDE(xavix)
-
- PORT_MODIFY("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) // select
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) // back
- // 04/08 not used for buttons?
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
-INPUT_PORTS_END
-
-// there is also a rumble output, likely mapped to one of the port bits
-static INPUT_PORTS_START( epo_guru )
- PORT_INCLUDE(xavix)
-
- PORT_MODIFY("IN0")
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
-
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) // used in the 'from behind' game at least
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
-
- PORT_MODIFY("MOUSE1X")
-// PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(6) PORT_KEYDELTA(16) PORT_PLAYER(1) PORT_MINMAX(0x44,0xbc)
- PORT_BIT( 0x1f, 0x10, IPT_AD_STICK_X ) PORT_SENSITIVITY(6) PORT_KEYDELTA(16) PORT_PLAYER(1) // PORT_MINMAX(0x44,0xbc)
-
- /*
- (0x20 is subtracted from value returned in read handler)
-
- main game
- 00 still
- 01 - 3c right
- 3d - 78 left - 78 is a nice slow left but invalid for the sub game
- 79 - 7f right
- 80 - 87 left
- 88 - c3 right
- c4 - ff left
-
- sub game (break-out)
- 00 still
- 01 - 3f right
- 40 - 7f left
- 80 still
- 81 - bf right
- c0 - ff left
-
- so valid range seems to be c4-ff (left), 00 (still), 01-3c (right) even if this means the slowest speed going left is faster than the slowest speed going right
- maybe actual range is 5 bits either way?
- 4 bits either way seems to work best in practice
-
- */
-INPUT_PORTS_END
-
static INPUT_PORTS_START( epo_efdx )
- PORT_INCLUDE(xavix_i2c)
+ PORT_INCLUDE(xavix)
PORT_MODIFY("IN0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) // select
@@ -1154,26 +863,6 @@ static INPUT_PORTS_START( epo_efdx )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
INPUT_PORTS_END
-static INPUT_PORTS_START( has_wamg )
- PORT_INCLUDE(xavix)
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // waits for this after fading out title, what is it?
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( evio )
- PORT_INCLUDE(xavix)
-
- PORT_MODIFY("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 )
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // pressing this will turn the game off.
-INPUT_PORTS_END
-
/* correct, 4bpp gfxs */
static const gfx_layout charlayout =
{
@@ -1242,24 +931,6 @@ void xavix_state::xavix(machine_config &config)
ADDRESS_MAP_BANK(config, "lowbus").set_map(&xavix_state::xavix_lowbus_map).set_options(ENDIANNESS_LITTLE, 8, 24, 0x8000);
- XAVIX_ADC(config, m_adc, 0);
- m_adc->read_0_callback().set(FUNC(xavix_state::adc0_r));
- m_adc->read_1_callback().set(FUNC(xavix_state::adc1_r));
- m_adc->read_2_callback().set(FUNC(xavix_state::adc2_r));
- m_adc->read_3_callback().set(FUNC(xavix_state::adc3_r));
- m_adc->read_4_callback().set(FUNC(xavix_state::adc4_r));
- m_adc->read_5_callback().set(FUNC(xavix_state::adc5_r));
- m_adc->read_6_callback().set(FUNC(xavix_state::adc6_r));
- m_adc->read_7_callback().set(FUNC(xavix_state::adc7_r));
-
- XAVIX_ANPORT(config, m_anport, 0);
- m_anport->read_0_callback().set(FUNC(xavix_state::anport0_r));
- m_anport->read_1_callback().set(FUNC(xavix_state::anport1_r));
- m_anport->read_2_callback().set(FUNC(xavix_state::anport2_r));
- m_anport->read_3_callback().set(FUNC(xavix_state::anport3_r));
-
- XAVIX_MATH(config, m_math, 0);
-
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
@@ -1288,27 +959,14 @@ void xavix_state::xavix(machine_config &config)
m_sound->add_route(1, "rspeaker", 1.0);
}
-void xavix_guru_state::xavix_guru(machine_config &config)
-{
- xavix_nv(config);
-
- m_anport->read_2_callback().set(FUNC(xavix_guru_state::guru_anport2_r));
-}
-
void xavix_i2c_state::xavix_i2c_24lc02(machine_config &config)
{
xavix(config);
- I2CMEM(config, "i2cmem", 0).set_page_size(16).set_data_size(0x100); // 24LC02 (taiko)
+ I2CMEM(config, "i2cmem", 0)/*.set_page_size(16)*/.set_data_size(0x100); // 24LC02 (taiko)
}
-void xavix_i2c_state::xavix_i2c_24c02(machine_config &config)
-{
- xavix(config);
-
- I2CMEM(config, "i2cmem", 0).set_page_size(16).set_data_size(0x100); // 24C02
-}
void xavix_i2c_state::xavix_i2c_24lc04(machine_config &config)
{
@@ -1316,24 +974,14 @@ void xavix_i2c_state::xavix_i2c_24lc04(machine_config &config)
// according to http://ww1.microchip.com/downloads/en/devicedoc/21708k.pdf 'the master transmits up to 16 data bytes' however this breaks the Nostalgia games
// of note Galplus Phalanx on Namco Nostalgia 2, which will hang between stages unable to properly access the device, but with no page support it doesn't hang and scores save
- I2CMEM(config, "i2cmem", 0).set_page_size(16).set_data_size(0x200); // 24LC04 on Nostalgia games, 24C04 on others
-}
-
-void xavix_i2c_ltv_tam_state::xavix_i2c_24lc04_tam(machine_config &config)
-{
- xavix_i2c_24lc04(config);
-
- m_anport->read_0_callback().set(FUNC(xavix_i2c_ltv_tam_state::tam_anport0_r));
- m_anport->read_1_callback().set(FUNC(xavix_i2c_ltv_tam_state::tam_anport1_r));
- m_anport->read_2_callback().set(FUNC(xavix_i2c_ltv_tam_state::tam_anport2_r));
- m_anport->read_3_callback().set(FUNC(xavix_i2c_ltv_tam_state::tam_anport3_r));
+ I2CMEM(config, "i2cmem", 0)/*.set_page_size(16)*/.set_data_size(0x200); // 24LC04 on Nostalgia games, 24C04 on others
}
void xavix_i2c_state::xavix_i2c_24c08(machine_config &config)
{
xavix(config);
- I2CMEM(config, "i2cmem", 0).set_page_size(16).set_data_size(0x400); // 24C08 (Excite Fishing DX)
+ I2CMEM(config, "i2cmem", 0)/*.set_page_size(16)*/.set_data_size(0x400); // 24C08 (Excite Fishing DX)
}
void xavix_state::xavixp(machine_config &config)
@@ -1350,76 +998,19 @@ void xavix_state::xavix_nv(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
}
-void xavix_state::xavixp_nv(machine_config &config)
-{
- xavixp(config);
- NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
-}
-
void xavix_state::xavix2000(machine_config &config)
{
xavix(config);
XAVIX2000(config.replace(), m_maincpu, MAIN_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &xavix_state::xavix_map);
- m_maincpu->set_addrmap(5, &xavix_state::xavix_lowbus_map);
- m_maincpu->set_addrmap(6, &xavix_state::xavix_extbus_map);
- m_maincpu->disable_cache();
- m_maincpu->set_vblank_int("screen", FUNC(xavix_state::interrupt));
- m_maincpu->set_vector_callback(FUNC(xavix_state::get_vectors));
-
- m_palette->set_entries(512);
-}
-
-void xavix_state::xavix2002(machine_config &config)
-{
- xavix(config);
-
- XAVIX2002(config.replace(), m_maincpu, MAIN_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &xavix_state::xavix_map);
- m_maincpu->set_addrmap(5, &xavix_state::superxavix_lowbus_map); // has extra video, io etc.
+ m_maincpu->set_addrmap(5, &xavix_state::superxavix_lowbus_map);
m_maincpu->set_addrmap(6, &xavix_state::xavix_extbus_map);
m_maincpu->disable_cache();
m_maincpu->set_vblank_int("screen", FUNC(xavix_state::interrupt));
m_maincpu->set_vector_callback(FUNC(xavix_state::get_vectors));
m_palette->set_entries(512);
-
- XAVIX2002IO(config, m_xavix2002io, 0);
-}
-
-
-
-void xavix_i2c_jmat_state::xavix2002_i2c_jmat(machine_config &config)
-{
- xavix2002(config);
-
- I2CMEM(config, "i2cmem", 0).set_page_size(16).set_data_size(0x200); // ?
-
- m_xavix2002io->read_0_callback().set(FUNC(xavix_i2c_jmat_state::read_extended_io0));
- m_xavix2002io->write_0_callback().set(FUNC(xavix_i2c_jmat_state::write_extended_io0));
- m_xavix2002io->read_1_callback().set(FUNC(xavix_i2c_jmat_state::read_extended_io1));
- m_xavix2002io->write_1_callback().set(FUNC(xavix_i2c_jmat_state::write_extended_io1));
- m_xavix2002io->read_2_callback().set(FUNC(xavix_i2c_jmat_state::read_extended_io2));
- m_xavix2002io->write_2_callback().set(FUNC(xavix_i2c_jmat_state::write_extended_io2));
-}
-
-
-void xavix_state::xavix2000_nv(machine_config &config)
-{
- xavix2000(config);
-
- NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
-}
-
-void xavix_2000_nv_sdb_state::xavix2000_nv_sdb(machine_config &config)
-{
- xavix2000_nv(config);
-
- m_anport->read_0_callback().set(FUNC(xavix_2000_nv_sdb_state::sdb_anport0_r));
- m_anport->read_1_callback().set(FUNC(xavix_2000_nv_sdb_state::sdb_anport1_r));
- m_anport->read_2_callback().set(FUNC(xavix_2000_nv_sdb_state::sdb_anport2_r));
- m_anport->read_3_callback().set(FUNC(xavix_2000_nv_sdb_state::sdb_anport3_r));
}
void xavix_i2c_state::xavix2000_i2c_24c04(machine_config &config)
@@ -1471,22 +1062,12 @@ void xavix_i2c_cart_state::xavix_i2c_taiko(machine_config &config)
{
xavix_cart(config);
- I2CMEM(config, "i2cmem", 0).set_page_size(16).set_data_size(0x100); // 24LC02
+ I2CMEM(config, "i2cmem", 0)/*.set_page_size(16)*/.set_data_size(0x100); // 24LC02
SOFTWARE_LIST(config, "cart_list_japan_d").set_original("ekara_japan_d");
SOFTWARE_LIST(config, "cart_list_japan_sp").set_original("ekara_japan_sp");
-}
-
-void xavix_i2c_cart_state::xavix_i2c_jpopira(machine_config &config)
-{
- xavix_cart(config);
- NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-
- I2CMEM(config, "i2cmem", 0).set_page_size(16).set_data_size(0x100); // 24LC02
-
- SOFTWARE_LIST(config, "cart_list_jpopira_jp").set_original("jpopira_jp"); // NOTE, these are for Jumping Popira only, they don't work with the karaoke or regular popira units
- SOFTWARE_LIST(config, "cart_list_japan_sp").set_original("ekara_japan_sp");
+ // do any of the later G/P series carts with SEEPROM work with this too? check
}
void xavix_cart_state::xavix_cart_ekara(machine_config &config)
@@ -1505,9 +1086,6 @@ void xavix_cart_state::xavix_cart_ekara(machine_config &config)
SOFTWARE_LIST(config, "cart_list_japan_en").set_original("ekara_japan_en");
SOFTWARE_LIST(config, "cart_list_japan_sp").set_original("ekara_japan_sp");
SOFTWARE_LIST(config, "cart_list_japan_web").set_original("ekara_japan_web");
- SOFTWARE_LIST(config, "cart_list_japan_a").set_original("ekara_japan_a");
- SOFTWARE_LIST(config, "cart_list_japan_gk").set_original("ekara_japan_gk");
- SOFTWARE_LIST(config, "cart_list_japan_bh").set_original("ekara_japan_bh");
}
void xavix_cart_state::xavix_cart_popira(machine_config &config)
@@ -1515,7 +1093,7 @@ void xavix_cart_state::xavix_cart_popira(machine_config &config)
xavix_cart(config);
// is a battery / power source required to store NVRAM in the CPU? Popira definitely needs NVRAM storing on power-of
- // XaviX Tennis won't boot if you do (but that could be an unrelated SEEPROM issue?) & DDR Family Mat gets stuck in 2 Player mode with no obvious way of changing back
+ // XaviX Tennis won't boot if you do (but that could be an unrelated SEEPROM issue?) & DDR Family Mat gets stuck in 2 Player mode with no obvious way of changing back
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
/* software lists */
@@ -1525,43 +1103,6 @@ void xavix_cart_state::xavix_cart_popira(machine_config &config)
SOFTWARE_LIST(config, "cart_list_japan_sp").set_original("ekara_japan_sp");
}
-// see code at 028060, using table from 00eb6d for conversion
-READ8_MEMBER(xavix_popira2_cart_state::popira2_adc0_r)
-{
- uint8_t p2 = m_p2->read() & 0x03;
- switch (p2)
- {
- case 0x00: return 0xa0;
- case 0x01: return 0x60;
- case 0x02: return 0x10;
- case 0x03: return 0x00;
- }
-
- return 0x00;
-}
-
-READ8_MEMBER(xavix_popira2_cart_state::popira2_adc1_r)
-{
- uint8_t p2 = (m_p2->read() >> 2) & 0x03;
- switch (p2)
- {
- case 0x00: return 0xa0;
- case 0x01: return 0x60;
- case 0x02: return 0x10;
- case 0x03: return 0x00;
- }
-
- return 0x00;
-}
-
-void xavix_popira2_cart_state::xavix_cart_popira2(machine_config &config)
-{
- xavix_cart_popira(config);
-
- m_adc->read_0_callback().set(FUNC(xavix_popira2_cart_state::popira2_adc0_r));
- m_adc->read_1_callback().set(FUNC(xavix_popira2_cart_state::popira2_adc1_r));
-}
-
void xavix_cart_state::xavix_cart_ddrfammt(machine_config &config)
{
xavix_cart(config);
@@ -1571,14 +1112,6 @@ void xavix_cart_state::xavix_cart_ddrfammt(machine_config &config)
//SOFTWARE_LIST(config, "cart_list_japan_sp").set_original("ekara_japan_sp"); // not for this system, but unlike other carts, actually tells you this if inserted rather than crashing the system
}
-
-void xavix_i2c_state::xavix2002_i2c_24c04(machine_config &config)
-{
- xavix2002(config);
-
- I2CMEM(config, "i2cmem", 0).set_page_size(16).set_data_size(0x200); // 24C04
-}
-
void xavix_state::init_xavix()
{
m_rgnlen = memregion("bios")->bytes();
@@ -1636,17 +1169,6 @@ ROM_START( rad_opus )
ROM_LOAD("opus.bin", 0x000000, 0x100000, CRC(509df402) SHA1(c5b863670eac8498ddda9dfde91387634cf7aa9f) )
ROM_END
-ROM_START( rad_hnt )
- ROM_REGION(0x100000, "bios", ROMREGION_ERASE00)
- ROM_LOAD("huntin1.bin", 0x000000, 0x100000, CRC(e51e250f) SHA1(d72199096d466cd344bb243ef1228e0df9501d00) )
-ROM_END
-
-ROM_START( rad_hnt2 )
- ROM_REGION(0x200000, "bios", ROMREGION_ERASE00)
- ROM_LOAD("huntin2.bin", 0x000000, 0x200000, CRC(fb6846df) SHA1(267632790ed42eba7ef1517b86b024799a78839d) )
-ROM_END
-
-
ROM_START( rad_snow )
ROM_REGION(0x100000, "bios", ROMREGION_ERASE00)
ROM_LOAD("snoblu.bin", 0x000000, 0x100000, CRC(593e40b3) SHA1(03483ac39eddd7746470fb60018e704382b0da59) )
@@ -1678,11 +1200,6 @@ ROM_START( rad_crdnp )
ROM_LOAD( "cardnight.bin", 0x000000, 0x100000, CRC(d19eba08) SHA1(cedb9fe785f2a559f518a1d8ecf80d500ddc63c7) )
ROM_END
-ROM_START( rad_bb )
- ROM_REGION( 0x100000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "radicabaseball.bin", 0x000000, 0x100000, CRC(3fa6f490) SHA1(0772156a67a22d06f5ffd6d1a77f6dc867d0a6d2) )
-ROM_END
-
ROM_START( rad_bb2 )
ROM_REGION( 0x200000, "bios", ROMREGION_ERASE00 )
ROM_LOAD( "baseball2.bin", 0x000000, 0x200000, CRC(bdbf6202) SHA1(18d5cc2d77cbb734629a7a5b6e0f419d21beedbd) )
@@ -1698,25 +1215,6 @@ ROM_START( rad_mtrkp ) // rom was dumped from NTSC unit, assuming to be the same
ROM_LOAD( "monstertruck.bin", 0x000000, 0x400000, CRC(dccda0a7) SHA1(7953cf29643672f8367639555b797c20bb533eab) )
ROM_END
-ROM_START( rad_ssx )
- ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
- ROM_LOAD("snowssx.bin", 0x000000, 0x400000, CRC(108e19a6) SHA1(3dfb18efb6331b96a53138a5ba29dae9cd966e90) )
-ROM_END
-
-ROM_START( rad_ssxp )
- ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
- ROM_LOAD("snowssx.bin", 0x000000, 0x400000, CRC(108e19a6) SHA1(3dfb18efb6331b96a53138a5ba29dae9cd966e90) )
-ROM_END
-
-ROM_START( rad_sbw )
- ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
- ROM_LOAD("snowbwhite.bin", 0x000000, 0x400000, CRC(640c1473) SHA1(d37d1484a5b14735b35afbca305dad7d178b08a2) )
-ROM_END
-
-ROM_START( rad_bdp )
- ROM_REGION(0x800000, "bios", ROMREGION_ERASE00)
- ROM_LOAD("barbiepad.bin", 0x000000, 0x200000, CRC(48731512) SHA1(377d4e1c98cafcd9d5e1ee27943289d250a6e7a9) )
-ROM_END
ROM_START( rad_madf )
ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
@@ -1733,32 +1231,6 @@ ROM_START( epo_efdx )
ROM_LOAD("excitefishing.bin", 0x000000, 0x400000, CRC(9c85b261) SHA1(6a363faed2ec89c5176e46554a98ca1e20132579) )
ROM_END
-ROM_START( epo_epp )
- ROM_REGION(0x100000, "bios", ROMREGION_ERASE00)
- ROM_LOAD("excitepingpong.bin", 0x000000, 0x100000, CRC(1fdb9cbd) SHA1(8ed0c1f6d2708ab6e79f0b9553e587c6446e8338) )
-ROM_END
-
-ROM_START( epo_epp3 )
- ROM_REGION(0x200000, "bios", ROMREGION_ERASE00)
- ROM_LOAD("excitepingpong3.bin", 0x000000, 0x200000, CRC(a2ee8bff) SHA1(6e16dbaac9680e1f311c08e3f573d0cf8708b446))
-ROM_END
-
-ROM_START( rad_socr )
- ROM_REGION(0x800000, "bios", ROMREGION_ERASE00)
- ROM_LOAD("soccer.u5", 0x000000, 0x100000, CRC(0564a766) SHA1(bded4f2e0d059731164c35de7df62ef411402901) )
- ROM_LOAD("soccer.u4", 0x400000, 0x200000, CRC(e0e2c488) SHA1(907511d945dec51782af268a94b372dfeb7517c5) )
-ROM_END
-
-ROM_START( epo_guru )
- ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
- ROM_LOAD("gururinworld.bin", 0x000000, 0x400000, CRC(e5ae4523) SHA1(0e39ef8f94203d34e49422081667805f50a339a1) )
-ROM_END
-
-ROM_START( epo_dmon ) // Doraemon has a phototransistor, microphone and 24LC02, PCB says XaviX 2002
- ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
- ROM_LOAD("doraemon.bin", 0x000000, 0x400000, CRC(d8f5412f) SHA1(11a4c017ed400f7aa585be744d9693efe734c192) )
-ROM_END
-
ROM_START( rad_rh )
ROM_REGION(0x200000, "bios", ROMREGION_ERASE00)
ROM_LOAD("rescueheroes.bin", 0x000000, 0x200000, CRC(38c391a7) SHA1(120334d4ce89d98438c2a35bf7e53af5096cc878) )
@@ -1769,17 +1241,6 @@ ROM_START( has_wamg )
ROM_LOAD( "minigolf.bin", 0x000000, 0x400000, CRC(35cee2ad) SHA1(c7344e8ba336bc329638485ea571cd731ebf7649) )
ROM_END
-ROM_START( ltv_tam )
- ROM_REGION( 0x400000, "bios", ROMREGION_ERASE00)
- ROM_LOAD("letstvtamagotchi.bin", 0x000000, 0x400000, CRC(e3723272) SHA1(e72e128a7a24afb96baafe5f13e13a0d74db4033) )
-ROM_END
-
-
-ROM_START( tak_geig )
- ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
- ROM_LOAD("geigeki.bin", 0x000000, 0x400000, CRC(bd0c3576) SHA1(06f614dbec0225ce4ed866b98450912986d72faf) )
-ROM_END
-
/*
The e-kara cartridges require the BIOS rom to map into 2nd external bus space as they fetch palette data from
it etc.
@@ -1803,32 +1264,6 @@ ROM_START( ekaraj )
ROM_RELOAD(0x000000, 0x100000)
ROM_END
-ROM_START( ekaraphs )
- ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "ekaraheadset.bin", 0x600000, 0x200000, CRC(dd9b3cd7) SHA1(baaf35d56fa45b6f995b8466331bb30f0035f734) )
- ROM_RELOAD(0x000000, 0x200000)
-ROM_END
-
-ROM_START( ekarag )
- ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "ekaragermany.bin", 0x600000, 0x200000, CRC(644f06b0) SHA1(433e65a6ea029b67ee62b4b3de52ff3504cfdf16) )
- ROM_RELOAD(0x000000, 0x200000)
-ROM_END
-
-
-ROM_START( epitch )
- ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "ekarajapan.bin", 0x600000, 0x100000, CRC(e459e43b) SHA1(58b7f36a81571a2df5e812c118fdf68812a05abc) )
- ROM_RELOAD(0x000000, 0x100000)
-ROM_END
-
-ROM_START( ekaramix )
- ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
- // also has a MX87L100C 28-pin chip in the unit, possibly the USB controller. Part of the ROM contains a FAT filesystem that could possibly appear as a USB drive on the PC?
- ROM_LOAD( "ekaramix.bin", 0x600000, 0x200000, CRC(ee71576e) SHA1(26f8c9edcbbed77e86a1cb5a0b91c92a16fef433) )
- ROM_RELOAD(0x000000, 0x200000)
-ROM_END
-
ROM_START( ddrfammt )
ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
ROM_LOAD( "ekara_ddr_ha010_81947.bin", 0x600000, 0x200000, CRC(737d5d1a) SHA1(a1043047056dd27bca69767ee2044461ec549465) )
@@ -1841,47 +1276,14 @@ ROM_START( popira )
ROM_RELOAD(0x000000, 0x100000)
ROM_END
-ROM_START( popira2 )
- ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "popira2.bin", 0x600000, 0x200000, CRC(6acd8be0) SHA1(8b6c812d37e2dc2f2531b0e47d84ad8485729dc5) )
- ROM_RELOAD(0x000000, 0x200000)
-ROM_END
-
ROM_START( taikodp )
ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
ROM_LOAD( "taikodepopira.bin", 0x600000, 0x200000, CRC(037a8472) SHA1(03cae465965935fc084fb906f8f5de7679f42dd1) )
ROM_RELOAD(0x000000, 0x200000)
ROM_END
-ROM_START( jpopira )
- ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "jumpingpopira.bin", 0x600000, 0x200000, CRC(a7bedbd2) SHA1(d62d4ca660c8df14891217fb7b7a2b4a931ff35f) )
- ROM_RELOAD(0x000000, 0x200000)
-
- ROM_REGION( 0x100, "i2cmem", ROMREGION_ERASE00 ) // maybe we can remove this eventually, but for now it won't init without a reset between
- ROM_LOAD( "i2cmem.bin", 0x000, 0x100, CRC(70a05af1) SHA1(e8f4ab51445777fe459f9ff09333f548c4e3507c) )
-ROM_END
-
-ROM_START( evio )
- ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "evio.bin", 0x600000, 0x200000, CRC(ee22c764) SHA1(f2b7e213eb78065a63ef484a619bcfc61299e30e))
- ROM_RELOAD(0x000000, 0x200000)
-ROM_END
-
-
-
-/* XaviX hardware titles (1st Generation)
-
- These use
- SSD 98 PL7351-181
- SSD 98 PA7351-107
- SSD 97 PA7270-107
- type CPUS
-
- only new opcodes are callf and retf?
-
-*/
+/* XaviX hardware titles */
CONS( 2006, taitons1, 0, 0, xavix_i2c_24lc04, nostalgia,xavix_i2c_state, init_xavix, "Bandai / SSD Company LTD / Taito", "Let's! TV Play Classic - Taito Nostalgia 1 (Japan)", MACHINE_IMPERFECT_SOUND )
@@ -1897,10 +1299,6 @@ CONS( 2000, rad_pingp, rad_ping, 0, xavixp, rad_pingp,xavix_state,
CONS( 2000, rad_opus, 0, 0, xavix_nv, rad_opus, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Opus (NTSC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // there is a missing 'TV Static' noise effect when menus appear (box shows 'Play TV' ingame just shows 'Radica:Plug & Play')
// ConnecTV Opus is a different ROM in this case? Game doesn't read from PAL/NTSC flag? (verify it isn't detecting PAL in some other way) ( https://www.youtube.com/watch?v=Ub9tstLEj_0 )
-CONS( 2000, rad_hnt, 0, 0, xavix_nv, rad_hnt, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Buckmasters Huntin' (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // need to map gun (box shows 'Play TV' ingame just shows 'Plug & Play')
-
-CONS( 2003, rad_hnt2, 0, 0, xavix_nv, rad_hnt, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Buckmasters Huntin' 2 (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // need to map gun, crashes on pause
-
CONS( 2003, rad_mtrk, 0, 0, xavix_mtrk, rad_mtrk, xavix_mtrk_state, init_xavix, "Radica / SSD Company LTD", "Play TV Monster Truck (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
CONS( 2003, rad_mtrkp, rad_mtrk, 0, xavix_mtrkp, rad_mtrkp,xavix_mtrk_state, init_xavix, "Radica / SSD Company LTD", "ConnecTV Monster Truck (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
@@ -1910,48 +1308,25 @@ CONS( 200?, rad_boxp, rad_box, 0, xavixp, rad_boxp, xavix_state,
CONS( 200?, rad_crdn, 0, 0, xavix, rad_crdn, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Card Night (NTSC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
CONS( 200?, rad_crdnp, rad_crdn, 0, xavixp, rad_crdnp,xavix_state, init_xavix, "Radica / SSD Company LTD", "ConnecTV Card Night (PAL)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-CONS( 2000, rad_bb, 0, 0, xavix, rad_bb, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Baseball (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // Play TV branding used on box, not ingame
-
CONS( 2002, rad_bb2, 0, 0, xavix, rad_bb2, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Baseball 2 (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // contains string "Radica RBB2 V1.0"
CONS( 2001, rad_bass, 0, 0, xavix, rad_bass, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Bass Fishin' (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
CONS( 2001, rad_bassp, rad_bass, 0, xavixp, rad_bassp,xavix_state, init_xavix, "Radica / SSD Company LTD", "ConnecTV Bass Fishin' (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
// there is another 'Snowboarder' with a white coloured board, it appears to be a newer game closer to 'SSX Snowboarder' but without the SSX license.
-CONS( 2001, rad_snow, 0, 0, xavix_nv, rad_snow, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Snowboarder (Blue) (NTSC)", MACHINE_IMPERFECT_SOUND )
-CONS( 2001, rad_snowp, rad_snow, 0, xavixp_nv, rad_snowp,xavix_state, init_xavix, "Radica / SSD Company LTD", "ConnecTV Snowboarder (Blue) (PAL)", MACHINE_IMPERFECT_SOUND )
+CONS( 2001, rad_snow, 0, 0, xavix, rad_snow, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Snowboarder (Blue) (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+CONS( 2001, rad_snowp, rad_snow, 0, xavixp, rad_snowp,xavix_state, init_xavix, "Radica / SSD Company LTD", "ConnecTV Snowboarder (Blue) (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-CONS( 2003, rad_madf, 0, 0, xavix_madfb, rad_fb, xavix_madfb_state, init_xavix, "Radica / Electronics Arts / SSD Company LTD", "EA Sports Madden Football (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // no Play TV branding, USA only release?
+CONS( 2003, rad_madf, 0, 0, xavix_madfb, rad_fb, xavix_madfb_state, init_xavix, "Radica / SSD Company LTD", "EA Sports Madden Football (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // no Play TV branding, USA only release?
CONS( 200?, rad_fb, 0, 0, xavix_madfb, rad_fb, xavix_madfb_state, init_xavix, "Radica / SSD Company LTD", "Play TV Football (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // USA only release? doesn't change logo for PAL.
-CONS( 200?, rad_rh, 0, 0, xavix, rad_rh, xavix_state, init_xavix, "Radica / Fisher-Price / SSD Company LTD", "Play TV Rescue Heroes (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-
-CONS( 2004, rad_ssx, 0, 0, xavix, rad_snow, xavix_state, init_xavix, "Radica / Electronics Arts / SSD Company LTD", "Play TV SSX Snowboarder (NTSC)", MACHINE_IMPERFECT_SOUND )
-CONS( 2004, rad_ssxp, rad_ssx, 0, xavixp, rad_snowp,xavix_state, init_xavix, "Radica / Electronics Arts / SSD Company LTD", "ConnecTV SSX Snowboarder (PAL)", MACHINE_IMPERFECT_SOUND )
-
-// basically a reissue of SSX but without the license
-CONS( 2006, rad_sbw, 0, 0, xavix, rad_snow, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Snowboarder (White) (NTSC)", MACHINE_IMPERFECT_SOUND )
-// doesn't exist with ConnecTV branding?
-
-CONS( 2002, rad_bdp, 0, 0, xavix, rad_bdp, xavix_state, init_xavix, "Radica / Mattel / SSD Company LTD", "Barbie Dance Party", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-CONS( 2002, rad_socr, 0, 0, xavix, epo_epp, xavix_state, init_xavix, "Radica / Epoch / SSD Company LTD", "Play TV Soccer", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-
-CONS( 2000, epo_epp, 0, 0, xavix, epo_epp, xavix_state, init_xavix, "Epoch / SSD Company LTD", "Excite Ping Pong (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-// Excite Ping Pong 2 is from 2003, and there's a 3rd game from 2006 also
-
-CONS( 2006, epo_epp3, 0, 0, xavix, epo_epp, xavix_state, init_xavix, "Epoch / SSD Company LTD", "Challenge Ai-chan! Excite Ping Pong (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+CONS( 200?, rad_rh, 0, 0, xavix, rad_rh, xavix_state, init_xavix, "Radioa / Fisher-Price / SSD Company LTD", "Play TV Rescue Heroes (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
CONS( 200?, epo_efdx, 0, 0, xavix_i2c_24c08, epo_efdx, xavix_i2c_state, init_epo_efdx, "Epoch / SSD Company LTD", "Excite Fishing DX (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-CONS( 2005, epo_guru, 0, 0, xavix_guru, epo_guru, xavix_guru_state, init_xavix, "Epoch / SSD Company LTD", "Gururin World (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-CONS( 2002, epo_dmon, 0, 0, xavix_i2c_24c02, xavix_i2c,xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "Doraemon Wakuwaku Kuukihou (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // full / proper title?
-
-CONS( 200?, has_wamg, 0, 0, xavix, has_wamg, xavix_state, init_xavix, "Hasbro / Milton Bradley / SSD Company LTD", "TV Wild Adventure Mini Golf (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+CONS( 200?, has_wamg, 0, 0, xavix, xavix, xavix_state, init_xavix, "Hasbro / Milton Bradley / SSD Company LTD", "TV Wild Adventure Mini Golf (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-CONS( 2002, tak_geig, 0, 0, xavix_nv, tak_geig, xavix_state, init_xavix, "Takara / SSD Company LTD", "Geigeki Go Go Shooting (Japan)", MACHINE_IMPERFECT_SOUND )
/* Music titles: Emulation note:
SEEPROM write appears to work (save NVRAM file looks valid) but game fails to read it back properly, fails backup data checksum, and blanks it again.
@@ -1960,55 +1335,18 @@ CONS( 2002, tak_geig, 0, 0, xavix_nv, tak_geig, xavix_state,
CONS( 2000, ekara, 0, 0, xavix_cart_ekara, ekara, xavix_ekara_state, init_xavix, "Takara / SSD Company LTD / Hasbro", "e-kara (US?, NTSC, set 1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*| MACHINE_IS_BIOS_ROOT*/ ) // shows "Please insert a cartridge before turn it on" without cart
CONS( 2000, ekaraa, ekara, 0, xavix_cart_ekara, ekara, xavix_ekara_state, init_xavix, "Takara / SSD Company LTD / Hasbro", "e-kara (US?, NTSC, set 2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*| MACHINE_IS_BIOS_ROOT*/ ) // shows "Please insert a cartridge before turning on e-kara" without cart
CONS( 2000, ekaraj, ekara, 0, xavix_cart_ekara, ekara, xavix_ekara_state, init_xavix, "Takara / SSD Company LTD", "e-kara (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*| MACHINE_IS_BIOS_ROOT*/ ) // shows Japanese message without cart
-CONS( 2002, ekarag, ekara, 0, xavix_cart_ekara, ekara, xavix_ekara_state, init_xavix, "Takara / SSD Company LTD", "e-kara (Germany?, includes 3 songs)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*| MACHINE_IS_BIOS_ROOT*/ ) // found in Germany, could just be a Europe-wide model tho?, NOT a headset model, but still has 3 songs.
-// the 'e-kara pro headset' has 3 songs built in for the US release. The Japanese release of this appears to be called 'e-kara H.S.' and it is unclear if it also has built in songs. The Canadian box says 'cartridge contains' instead of 'songs included' but is likely a printing error.
-CONS( 2002, ekaraphs, ekara, 0, xavix_cart_ekara, ekara, xavix_ekara_state, init_xavix, "Takara / SSD Company LTD", "e-kara Pro Headset (US, includes 3 songs)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*| MACHINE_IS_BIOS_ROOT*/ )
-
-// epitch (at least the pichi pichi pitch mermaid starter pack) uses the same internal rom as the Japanese ekara, but has less buttons, so some features aren't available (some games also seem to expect to read it with a different layout eg 'a7' cart, but 'a5' cart doesn't, so must be a way to enable that mode, or bug in code?)
-CONS( 2003, epitch, 0, 0, xavix_cart_ekara, ekara, xavix_ekara_state, init_xavix, "Takara / SSD Company LTD", "e-pitch (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*| MACHINE_IS_BIOS_ROOT*/ ) // shows Japanese message without cart
-
-// e-kara mix was another unit that allowed you to connect to a PC, unlike e-kara web it also functions as a regular device
-CONS( 200?, ekaramix, 0, 0, xavix_cart_ekara, ekara, xavix_ekara_state, init_xavix, "Takara / SSD Company LTD", "e-kara Mix (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*| MACHINE_IS_BIOS_ROOT*/ )
-
+// there appear to be later e-kara releases for each region with 3 built in songs too
CONS( 2001, ddrfammt, 0, 0, xavix_cart_ddrfammt,ddrfammt, xavix_cart_state, init_xavix, "Takara / Konami / SSD Company LTD", "Dance Dance Revolution Family Mat (Japan)", MACHINE_IMPERFECT_SOUND/*|MACHINE_IS_BIOS_ROOT*/ )
CONS( 2000, popira, 0, 0, xavix_cart_popira,popira, xavix_cart_state, init_xavix, "Takara / SSD Company LTD", "Popira (Japan)", MACHINE_IMPERFECT_SOUND/*|MACHINE_IS_BIOS_ROOT*/ ) // The original Popira is a single yellow unit
-CONS( 2002, popira2, 0, 0, xavix_cart_popira2,popira2, xavix_popira2_cart_state, init_xavix, "Takara / SSD Company LTD", "Popira 2 (Japan)", MACHINE_IMPERFECT_SOUND/*|MACHINE_IS_BIOS_ROOT*/ ) // Popira 2 is a set of 2 blue & green linked units (2nd unit is just a controller, no CPU or TV out)
+// Popira 2 is a Green unit and a Blue Unit linked together
CONS( 2003, taikodp, 0, 0, xavix_i2c_taiko, taikodp, xavix_i2c_cart_state, init_xavix, "Takara / SSD Company LTD", "Taiko De Popira (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*|MACHINE_IS_BIOS_ROOT*/ ) // inputs? are the drums analog?
-CONS( 2004, jpopira, 0, 0, xavix_i2c_jpopira,jpopira, xavix_i2c_cart_state, init_xavix, "Takara / SSD Company LTD", "Jumping Popira (Japan)", MACHINE_IMPERFECT_SOUND /*|MACHINE_IS_BIOS_ROOT*/ )
-
-
-CONS( 2003, evio, 0, 0, xavix_nv, evio, xavix_state, init_xavix, "Tomy / SSD Company LTD", "Evio (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*|MACHINE_IS_BIOS_ROOT*/ ) // inputs? it's a violin controller
-
-
-// Let’s!TVプレイ 超にんきスポット!ころがしほーだい たまごっちりぞーと (Let's! TV Play Chou Ninki Spot! Korogashi-Houdai Tamagotchi Resort) (only on the Japanese list? http://test.shinsedai.co.jp/english/products/Applied/list.html ) This also allows you to use an IR reciever to import a Tamagotchi from compatible games
-CONS( 2006, ltv_tam, 0, 0, xavix_i2c_24lc04_tam, ltv_tam,xavix_i2c_ltv_tam_state, init_xavix, "Bandai / SSD Company LTD", "Let's! TV Play Chou Ninki Spot! Korogashi-Houdai Tamagotchi Resort (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-
-
-/* SuperXaviX(?) (XaviX 2000 type CPU) hardware titles (2nd XaviX generation?)
-
- these use the SSD 2000 NEC 85605-621 type CPU
-
- XavixPort Golf is "SSD 2003 SuperXaviX MXIC 2003 3009" (not dumped yet, but actually marked as SuperXaviX unlike the others!)
-
- This CPU type adds extra opcodes that don't appear to be present in the 97/98 types
- It does not appear to support the bitmap modes or 16-bit ROMs found in the 2002 type
-*/
-
-ROM_START( epo_sdb )
- ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
- ROM_LOAD("superdashball.bin", 0x000000, 0x400000, CRC(a004a764) SHA1(47a96822d4d7d6a0f6be5cd729c3747dbab65979) )
-ROM_END
-
-ROM_START( epo_ebox )
- ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
- ROM_LOAD("exciteboxing.bin", 0x000000, 0x400000, CRC(e25ae4f5) SHA1(7f7b613f0ab8f43f5cad0d13de538921e77cae9c) )
-ROM_END
+/* SuperXaviX hardware titles */
ROM_START( ttv_sw )
ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
@@ -2030,136 +1368,18 @@ ROM_START( drgqst )
ROM_LOAD( "dragonquest.bin", 0x000000, 0x800000, CRC(3d24413f) SHA1(1677e81cedcf349de7bf091a232dc82c6424efba) )
ROM_END
-ROM_START( ban_onep )
- ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00)
- ROM_LOAD("onepiece.bin", 0x000000, 0x800000, CRC(c5cb5a5f) SHA1(db85f6cc48d77c5a4967b9b8e2999167e3dfc8c8) )
-ROM_END
-
-CONS( 2002, epo_ebox, 0, 0, xavix2000_nv, epo_epp, xavix_state, init_xavix, "Epoch / SSD Company LTD", "Excite Boxing (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // doesn't use XaviX2000 extra opcodes, but had that type of CPU
-CONS( 2004, epo_sdb, 0, 0, xavix2000_nv_sdb, epo_sdb, xavix_2000_nv_sdb_state, init_xavix, "Epoch / SSD Company LTD", "Super Dash Ball (Japan)", MACHINE_IMPERFECT_SOUND )
-
-CONS( 2005, ttv_sw, 0, 0, xavix2000_i2c_24c02, ttv_lotr, xavix_i2c_lotr_state, init_xavix, "Tiger / SSD Company LTD", "Star Wars Saga Edition - Lightsaber Battle Game", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-CONS( 2005, ttv_lotr, 0, 0, xavix2000_i2c_24c02, ttv_lotr, xavix_i2c_lotr_state, init_xavix, "Tiger / SSD Company LTD", "Lord Of The Rings - Warrior of Middle-Earth", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-CONS( 2005, ttv_mx, 0, 0, xavix2000_i2c_24c04, ttv_mx, xavix_i2c_state, init_xavix, "Tiger / SSD Company LTD", "MX Dirt Rebel", MACHINE_IMPERFECT_SOUND )
-CONS( 2003, drgqst, 0, 0, xavix2000_i2c_24c02, ttv_lotr, xavix_i2c_lotr_state, init_xavix, "Square Enix / SSD Company LTD", "Kenshin Dragon Quest: Yomigaerishi Densetsu no Ken", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-
-// hangs after starting a game, or after quite a long time in attract mode (first problem could be bad save data read with the eeprom code, 2nd problem might just be how it is, ends up in a dead loop, not executing invalid code)
-CONS( 2004, ban_onep, 0, 0, xavix2000_i2c_24c04, ttv_lotr, xavix_i2c_lotr_state, init_xavix, "Bandai / SSD Company LTD", "One Piece Punch Battle (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-
-/* SuperXaviX (XaviX 2002 type CPU) hardware titles (3rd XaviX generation?)
-
- these use the SSD 2002 NEC 85054-611 type CPU
- differences include support for 16-bit ROMs, various bitmap modes, interlace screen modes etc.
- possibly higher horizontal resolution for bitmap layers with others scaled to fit?
-
-*/
+CONS( 2005, ttv_sw, 0, 0, xavix2000_i2c_24c02, xavix, xavix_i2c_lotr_state, init_xavix, "Tiger / SSD Company LTD", "Star Wars Saga Edition - Lightsaber Battle Game", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+CONS( 2005, ttv_lotr, 0, 0, xavix2000_i2c_24c02, xavix, xavix_i2c_lotr_state, init_xavix, "Tiger / SSD Company LTD", "Lord Of The Rings - Warrior of Middle-Earth", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+CONS( 2005, ttv_mx, 0, 0, xavix2000_i2c_24c04, ttv_mx, xavix_i2c_state, init_xavix, "Tiger / SSD Company LTD", "MX Dirt Rebel", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+CONS( 2003, drgqst, 0, 0, xavix2000_i2c_24c02, xavix, xavix_i2c_lotr_state, init_xavix, "Square Enix / SSD Company LTD", "Kenshin Dragon Quest: Yomigaerishi Densetsu no Ken", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
/* The 'XaviXPORT' isn't a real console, more of a TV adapter, all the actual hardware (CPU including video hw, sound hw) is in the cartridges and controllers
and can vary between games, see notes at top of driver.
-
- The 'Domyos Interactive System (DiS)' released in France by Decathlon appears to be identical to XaviXPORT (but for PAL regions, and with an entirely different software range)
*/
-ROM_START( tmy_thom )
- ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "thomastank.bin", 0x000000, 0x800000, CRC(a52a23be) SHA1(e5b3500239d9e56eb5405f7585982959e5a162da) )
-ROM_END
-
-// XaviXPORT
ROM_START( xavtenni )
ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
ROM_LOAD( "xavixtennis.bin", 0x000000, 0x800000, CRC(23a1d918) SHA1(2241c59e8ea8328013e55952ebf9060ea0a4675b) )
ROM_END
-ROM_START( xavbaseb )
- ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "xpbaseball.bin", 0x000000, 0x800000, CRC(e9ed692d) SHA1(537e390e972156dc7da66ee127ae4c8052038ee5) )
-ROM_END
-
-ROM_START( xavbowl )
- ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "xpbowling.bin", 0x000000, 0x800000, CRC(2873460b) SHA1(ea8e2392f5a12961a23eb66dca8e07dec81ce8c8) )
-ROM_END
-
-ROM_START( xavbassf )
- ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "xpbassfishing.bin", 0x000000, 0x800000, CRC(09ab2f29) SHA1(616254176315d0947002e9ae5a6371a3ffa2e8eb) )
-
- // code for the nRF24E1s, stored in SEEPROMs. One in the cartridge, one in the rod/reel
- ROM_REGION( 0x1001, "reel_io", ROMREGION_ERASE00 )
- ROM_LOAD( "xpbassfishingnrf24e1reel.bin", 0x0000, 0x1001, CRC(cfbb19ae) SHA1(32464e4e4be33fdbc7768311f93ce437a316c616) )
-
- ROM_REGION( 0x800000, "base_io", ROMREGION_ERASE00 )
- ROM_LOAD( "xpbassfishingnrf24e1cart.bin", 0x0000, 0x1001, CRC(62f6303e) SHA1(126b2663e252fb80948f53153e4046e63dd8be32) )
-ROM_END
-
-ROM_START( xavbox )
- ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "xpboxing.bin", 0x000000, 0x800000, CRC(b61e7717) SHA1(162b9c53ac8c9d7b6972db44f7bc1cb0a7837b70) )
-ROM_END
-
-
-ROM_START( xavjmat )
- ROM_REGION( 0x1000000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "xpjmat.bin", 0x000000, 0x1000000, CRC(71a51eef) SHA1(41fd2c3013d1c86756046ec9174e94400f8fa06d) )
-ROM_END
-
-// currently copies the wrong code into RAM to execute (due to extended ROM size, and possible banking)
-// [:] ':maincpu' (00E074): rom_dmatrg_w (do DMA?) 01
-// [:] (possible DMA op SRC 00ebe2d3 DST 358a LEN 0398)
-// needs to come from 006be2d3 (so still from lower 8MB, not upper 8MB)
-
-ROM_START( xavmusic )
- ROM_REGION( 0x1000000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "xpmusicandcircuit.bin", 0x000000, 0x1000000, CRC(e06129d2) SHA1(d074d0dd85ce870f435da3c066a7f52b50999665) )
-ROM_END
-
-
-// Domyos DiS (XaviX 2002 based titles)
-ROM_START( domfitex )
- ROM_REGION( 0x1000000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "xpfitnessexercise.bin", 0x000000, 0x1000000, CRC(f1089229) SHA1(803df8ba0a05cb004a4238c6c71ea1ffa4428990) )
-ROM_END
-
-ROM_START( domfitch )
- ROM_REGION( 0x1000000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "xpfitnesschallenge.bin", 0x000000, 0x1000000, CRC(e0a4093d) SHA1(2692ac03f8be4f86a4777ad0c365cbab7b469e3b) )
-ROM_END
-
-ROM_START( domdance )
- ROM_REGION( 0x1000000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "xpfitnessdance.bin", 0x000000, 0x1000000, CRC(3170dd41) SHA1(9c9b4f1d8e7c5097271bb8712463ad93c8d55d97) )
-ROM_END
-
-// TODO: does it have an SEEPROM? why does it hang? full title?
-CONS( 2005, tmy_thom, 0, 0, xavix2002_i2c_24c04, xavix_i2c, xavix_i2c_state, init_xavix, "Tomy / SSD Company LTD", "Thomas and Friends (Tomy)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-CONS( 2004, xavtenni, 0, 0, xavix2002_i2c_24c04, xavix_i2c, xavix_i2c_state, init_xavix, "SSD Company LTD", "XaviX Tennis (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-CONS( 2004, xavbaseb, 0, 0, xavix2002_i2c_24c04, xavix_i2c, xavix_i2c_state, init_xavix, "SSD Company LTD", "XaviX Baseball (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-CONS( 2004, xavbowl, 0, 0, xavix2002_i2c_24c04, xavix_bowl, xavix_i2c_bowl_state, init_xavix, "SSD Company LTD", "XaviX Bowling (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // has IR 'Camera'
-CONS( 2004, xavbox, 0, 0, xavix2002_i2c_jmat, xavix, xavix_i2c_jmat_state, init_xavix, "SSD Company LTD", "XaviX Boxing (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // has IR 'Camera'
-// Bass Fishing PCB is just like Tennis except with an RF daughterboard.
-CONS( 2004, xavbassf, 0, 0, xavix2002_i2c_24c04, xavix_i2c, xavix_i2c_state, init_xavix, "SSD Company LTD", "XaviX Bass Fishing (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-// TODO: check SEEPROM type and hookup, banking!
-CONS( 2005, xavjmat, 0, 0, xavix2002_i2c_jmat, xavix, xavix_i2c_jmat_state, init_xavix, "SSD Company LTD", "Jackie Chan J-Mat Fitness (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-CONS( 2007, xavmusic, 0, 0, xavix2002_i2c_jmat, xavix, xavix_i2c_jmat_state, init_xavix, "SSD Company LTD", "XaviX Music & Circuit (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-// https://arnaudmeyer.wordpress.com/domyos-interactive-system/
-// Domyos Fitness Adventure
-// Domyos Fitness Challenge
-// Domyos Fitness Exercises
-// Domyos Fit Race
-// Domyos Soft Fitness
-// Domyos Fitness Dance
-// Domyos Fitness Play
-// Domyos Fitness Training
-
-// Domyos Bike Concept (not listed on site above)
-
-// Has SEEPROM and an RTC. Exercise has some leftover PC buffer stuff. (TODO, check SEEPROM type, RTC type, banking) (both Exercises and Challenge are identical PCBs)
-CONS( 2008, domfitex, 0, 0, xavix2002_i2c_jmat, xavixp, xavix_i2c_jmat_state, init_xavix, "Decathlon / SSD Company LTD", "Domyos Fitness Exercises (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-CONS( 2008, domfitch, 0, 0, xavix2002_i2c_jmat, xavixp, xavix_i2c_jmat_state, init_xavix, "Decathlon / SSD Company LTD", "Domyos Fitness Challenge (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-CONS( 2007, domdance, 0, 0, xavix2002_i2c_jmat, xavixp, xavix_i2c_jmat_state, init_xavix, "Decathlon / SSD Company LTD", "Domyos Fitness Dance (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-// some DIS games run on XaviX 2 instead, see xavix2.cpp for Domyos Fitness Adventure and Domyos Bike Concept
+CONS( 2004, xavtenni, 0, 0, xavix2000_i2c_24c04, xavix, xavix_i2c_state, init_xavix, "SSD Company LTD", "XaviX Tennis (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/xavix2.cpp b/src/mame/drivers/xavix2.cpp
deleted file mode 100644
index 635be1be875..00000000000
--- a/src/mame/drivers/xavix2.cpp
+++ /dev/null
@@ -1,161 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:David Haywood
-/******************************************************************************
-
- XaviX 2
-
- unknown architecture, does not appear to be 6502 derived like XaviX / SuperXaviX
-
- die is marked "SSD 2002-2004 NEC 800208-51"
-
-*******************************************************************************/
-
-#include "emu.h"
-
-#include "screen.h"
-#include "emupal.h"
-#include "softlist.h"
-#include "speaker.h"
-
-class xavix2_state : public driver_device
-{
-public:
- xavix2_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_screen(*this, "screen")
- , m_palette(*this, "palette")
- , m_gfxdecode(*this, "gfxdecode")
- { }
-
- void xavix2(machine_config &config);
-
-private:
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
- uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
-
- required_device<screen_device> m_screen;
- required_device<palette_device> m_palette;
- required_device<gfxdecode_device> m_gfxdecode;
-};
-
-uint32_t xavix2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- return 0;
-}
-
-void xavix2_state::machine_start()
-{
-}
-
-void xavix2_state::machine_reset()
-{
-}
-
-static INPUT_PORTS_START( xavix2 )
-INPUT_PORTS_END
-
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { 1*4,0*4,3*4,2*4,5*4,4*4,7*4,6*4 },
- { STEP8(0,4*8) },
- 8*8*4
-};
-
-static const gfx_layout char16layout =
-{
- 16,16,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { 1*4,0*4,3*4,2*4,5*4,4*4,7*4,6*4, 9*4,8*4,11*4,10*4,13*4,12*4,15*4,14*4 },
- { STEP16(0,4*16) },
- 16*16*4
-};
-
-static const gfx_layout charlayout8bpp =
-{
- 8,8,
- RGN_FRAC(1,1),
- 8,
- { STEP8(0,1) },
- { STEP8(0,8) },
- { STEP8(0,8*8) },
- 8*8*8
-};
-
-static const gfx_layout char16layout8bpp =
-{
- 16,16,
- RGN_FRAC(1,1),
- 8,
- { STEP8(0,1) },
- { STEP16(0,8) },
- { STEP16(0,16*8) },
- 16*16*8
-};
-
-static GFXDECODE_START( gfx_xavix )
- GFXDECODE_ENTRY( "maincpu", 0, charlayout, 0, 16 )
- GFXDECODE_ENTRY( "maincpu", 0, char16layout, 0, 16 )
- GFXDECODE_ENTRY( "maincpu", 0, charlayout8bpp, 0, 1 )
- GFXDECODE_ENTRY( "maincpu", 0, char16layout8bpp, 0, 1 )
-GFXDECODE_END
-
-
-void xavix2_state::xavix2(machine_config &config)
-{
- // unknown CPU 'SSD 2002-2004 NEC 800208-51'
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- m_screen->set_screen_update(FUNC(xavix2_state::screen_update));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_xavix);
-
- PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 256);
-
- /* sound hardware */
- SPEAKER(config, "lspeaker").front_left();
- SPEAKER(config, "rspeaker").front_right();
-
- // unknown sound hardware
-}
-
-
-ROM_START( ltv_naru )
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "naruto.bin", 0x000000, 0x800000, CRC(e3465ad2) SHA1(13e3d2de5d5a084635cab158f3639a1ea73265dc) )
-ROM_END
-
-ROM_START( domfitad )
- ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "xpfitnessadventure.bin", 0x000000, 0x1000000, CRC(a7917081) SHA1(95ae5dc6e64a78ae060cb0e61d8b0af34a93c4ce) )
-ROM_END
-
-ROM_START( dombikec )
- ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "xpbikeconcept.bin", 0x000000, 0x1000000, CRC(3447fce5) SHA1(c7e9e9cd789a17ac886ecf253f67753213cf8d21) )
-ROM_END
-
-
-CONS( 2006, ltv_naru, 0, 0, xavix2, xavix2, xavix2_state, empty_init, "Bandai / SSD Company LTD", "Let's TV Play Naruto", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-// These are for the 'Domyos Interactive System' other Domyos Interactive System games can be found in xavix.cpp (the SoC is inside the cartridge, base acts as a 'TV adapter' only)
-
-// Has SEEPROM and an RTC. Adventure has the string DOMYSSDCOLTD a couple of times.
-CONS( 2008, domfitad, 0, 0, xavix2, xavix2, xavix2_state, empty_init, "Decathlon / SSD Company LTD", "Domyos Fitness Adventure (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-CONS( 2008, dombikec, 0, 0, xavix2, xavix2, xavix2_state, empty_init, "Decathlon / SSD Company LTD", "Domyos Bike Concept (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-
-
-
diff --git a/src/mame/drivers/xbox.cpp b/src/mame/drivers/xbox.cpp
index d711932aa4f..14e34df1b0c 100644
--- a/src/mame/drivers/xbox.cpp
+++ b/src/mame/drivers/xbox.cpp
@@ -17,6 +17,7 @@
#include "cpu/i386/i386.h"
#include "machine/atapicdr.h"
#include "machine/idehd.h"
+#include "machine/pit8253.h"
#include "debug/debugcmd.h"
#include "debug/debugcon.h"
@@ -33,7 +34,7 @@ class xbox_state : public xbox_base_state
public:
xbox_state(const machine_config &mconfig, device_type type, const char *tag)
: xbox_base_state(mconfig, type, tag)
- , m_ide(*this, "pci:09.0:ide")
+ , m_ide(*this, "ide")
, m_devh(*this, "pci:09.0:ide:0:hdd")
, m_devc(*this, "pci:09.0:ide:1:cdrom")
{ }
@@ -170,24 +171,27 @@ void xbox_ata_devices(device_slot_interface &device)
device.option_add("cdrom", ATAPI_CDROM);
}
-void xbox_state::xbox(machine_config &config)
-{
+MACHINE_CONFIG_START(xbox_state::xbox)
xbox_base(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &xbox_state::xbox_map);
- m_maincpu->set_addrmap(AS_IO, &xbox_state::xbox_map_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(xbox_map)
+ MCFG_DEVICE_IO_MAP(xbox_map_io)
- subdevice<ide_controller_32_device>(":pci:09.0:ide")->options(xbox_ata_devices, "hdd", "cdrom", true);
+ MCFG_DEVICE_MODIFY(":pci:09.0:ide:0")
+ MCFG_DEVICE_SLOT_INTERFACE(xbox_ata_devices, "hdd", true)
+ MCFG_DEVICE_MODIFY(":pci:09.0:ide:1")
+ MCFG_DEVICE_SLOT_INTERFACE(xbox_ata_devices, "cdrom", true)
OHCI_USB_CONNECTOR(config, ":pci:02.0:port1", usb_xbox, nullptr, false);
OHCI_USB_CONNECTOR(config, ":pci:02.0:port2", usb_xbox, nullptr, false);
OHCI_USB_CONNECTOR(config, ":pci:02.0:port3", usb_xbox, "xbox_controller", false);
OHCI_USB_CONNECTOR(config, ":pci:02.0:port4", usb_xbox, nullptr, false);
- /* sound hardware */
+/* sound hardware */
SPEAKER(config, "mono").front_center();
- OHCI_GAME_CONTROLLER(config, "ohci_gamepad", 0);
-}
+ MCFG_DEVICE_ADD("ohci_gamepad", OHCI_GAME_CONTROLLER, 0)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/xerox820.cpp b/src/mame/drivers/xerox820.cpp
index 5aef2816bc6..5e8703bacf0 100644
--- a/src/mame/drivers/xerox820.cpp
+++ b/src/mame/drivers/xerox820.cpp
@@ -609,11 +609,11 @@ MACHINE_CONFIG_START(xerox820_state::xerox820)
m_maincpu->set_daisy_config(xerox820_daisy_chain);
/* video hardware */
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(xerox820_state::screen_update));
- screen.set_raw(10.69425_MHz_XTAL, 700, 0, 560, 260, 0, 240);
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(xerox820_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(10.69425_MHz_XTAL, 700, 0, 560, 260, 0, 240)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_xerox820);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_xerox820)
PALETTE(config, m_palette, palette_device::MONOCHROME);
/* devices */
@@ -630,13 +630,13 @@ MACHINE_CONFIG_START(xerox820_state::xerox820)
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
m_ctc->zc_callback<0>().set(m_ctc, FUNC(z80ctc_device::trg1));
m_ctc->zc_callback<2>().set(m_ctc, FUNC(z80ctc_device::trg3));
- //TIMER(config, "ctc").configure_periodic(FUNC(xerox820_state::ctc_tick), attotime::from_hz(20_MHz_XTAL / 8));
+ //MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", xerox820_state, ctc_tick, attotime::from_hz(20_MHz_XTAL / 8))
FD1771(config, m_fdc, 20_MHz_XTAL / 20);
m_fdc->intrq_wr_callback().set(FUNC(xerox820_state::fdc_intrq_w));
m_fdc->drq_wr_callback().set(FUNC(xerox820_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, FD1771_TAG":0", xerox820_floppies, "sa400l", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, FD1771_TAG":1", xerox820_floppies, "sa400l", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(FD1771_TAG":0", xerox820_floppies, "sa400l", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FD1771_TAG":1", xerox820_floppies, "sa400l", floppy_image_device::default_floppy_formats)
Z80SIO0(config, m_sio, 20_MHz_XTAL / 8);
m_sio->out_txda_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_txd));
@@ -665,17 +665,17 @@ MACHINE_CONFIG_START(xerox820_state::xerox820)
RAM(config, m_ram).set_default_size("64K");
// software lists
- SOFTWARE_LIST(config, "flop_list").set_original("xerox820");
- MCFG_QUICKLOAD_ADD("quickload", xerox820_state, xerox820, "com,cpm", attotime::from_seconds(3))
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "xerox820")
+ MCFG_QUICKLOAD_ADD("quickload", xerox820_state, xerox820, "com,cpm", 3)
MACHINE_CONFIG_END
-void bigboard_state::bigboard(machine_config &config)
-{
+MACHINE_CONFIG_START(bigboard_state::bigboard)
xerox820(config);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- BEEP(config, m_beeper, 950).add_route(ALL_OUTPUTS, "mono", 1.00); /* bigboard only */
-}
+ MCFG_DEVICE_ADD("beeper", BEEP, 950)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) /* bigboard only */
+MACHINE_CONFIG_END
MACHINE_CONFIG_START(xerox820ii_state::xerox820ii)
/* basic machine hardware */
@@ -685,16 +685,17 @@ MACHINE_CONFIG_START(xerox820ii_state::xerox820ii)
m_maincpu->set_daisy_config(xerox820_daisy_chain);
/* video hardware */
- screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
- screen.set_screen_update(FUNC(xerox820ii_state::screen_update));
- screen.set_raw(10.69425_MHz_XTAL, 700, 0, 560, 260, 0, 240);
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(xerox820ii_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(10.69425_MHz_XTAL, 700, 0, 560, 260, 0, 240)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_xerox820ii);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_xerox820ii)
PALETTE(config, m_palette, palette_device::MONOCHROME);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* devices */
Z80PIO(config, m_kbpio, 16_MHz_XTAL / 4);
@@ -718,13 +719,13 @@ MACHINE_CONFIG_START(xerox820ii_state::xerox820ii)
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
m_ctc->zc_callback<0>().set(m_ctc, FUNC(z80ctc_device::trg1));
m_ctc->zc_callback<2>().set(m_ctc, FUNC(z80ctc_device::trg3));
- //TIMER(config, "ctc").configure_periodic(FUNC(xerox820_state::ctc_tick), attotime::from_hz(16_MHz_XTAL / 4));
+ //MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", xerox820_state, ctc_tick, attotime::from_hz(16_MHz_XTAL / 4))
FD1797(config, m_fdc, 16_MHz_XTAL / 8);
m_fdc->intrq_wr_callback().set(FUNC(xerox820_state::fdc_intrq_w));
m_fdc->drq_wr_callback().set(FUNC(xerox820_state::fdc_drq_w));
- FLOPPY_CONNECTOR(config, FD1797_TAG":0", xerox820_floppies, "sa450", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, FD1797_TAG":1", xerox820_floppies, "sa450", floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(FD1797_TAG":0", xerox820_floppies, "sa450", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(FD1797_TAG":1", xerox820_floppies, "sa450", floppy_image_device::default_floppy_formats)
Z80SIO0(config, m_sio, 16_MHz_XTAL / 4);
m_sio->out_txda_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_txd));
@@ -757,30 +758,29 @@ MACHINE_CONFIG_START(xerox820ii_state::xerox820ii)
m_sasibus->cd_handler().set("sasi_ctrl_in", FUNC(input_buffer_device::write_bit2)).exor(1);
m_sasibus->req_handler().set("sasi_ctrl_in", FUNC(input_buffer_device::write_bit3)).exor(1);
m_sasibus->io_handler().set("sasi_ctrl_in", FUNC(input_buffer_device::write_bit4)).exor(1);
- m_sasibus->set_slot_device(1, "harddisk", SA1403D, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
- output_latch_device &sasi_data_out(OUTPUT_LATCH(config, "sasi_data_out"));
- m_sasibus->set_output_latch(sasi_data_out);
- INPUT_BUFFER(config, "sasi_data_in");
- INPUT_BUFFER(config, "sasi_ctrl_in");
+ MCFG_SCSIDEV_ADD(SASIBUS_TAG ":" SCSI_PORT_DEVICE1, "harddisk", SA1403D, SCSI_ID_0)
+
+ MCFG_SCSI_OUTPUT_LATCH_ADD("sasi_data_out", SASIBUS_TAG)
+ MCFG_DEVICE_ADD("sasi_data_in", INPUT_BUFFER, 0)
+ MCFG_DEVICE_ADD("sasi_ctrl_in", INPUT_BUFFER, 0)
/* internal ram */
RAM(config, m_ram).set_default_size("64K");
// software lists
- SOFTWARE_LIST(config, "flop_list").set_original("xerox820ii");
- MCFG_QUICKLOAD_ADD("quickload", xerox820_state, xerox820, "com,cpm", attotime::from_seconds(3))
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "xerox820ii")
+ MCFG_QUICKLOAD_ADD("quickload", xerox820_state, xerox820, "com,cpm", 3)
MACHINE_CONFIG_END
-void xerox820ii_state::xerox168(machine_config &config)
-{
+MACHINE_CONFIG_START(xerox820ii_state::xerox168)
xerox820ii(config);
- i8086_cpu_device &i8086(I8086(config, I8086_TAG, 4770000));
- i8086.set_addrmap(AS_PROGRAM, &xerox820ii_state::xerox168_mem);
+ MCFG_DEVICE_ADD(I8086_TAG, I8086, 4770000)
+ MCFG_DEVICE_PROGRAM_MAP(xerox168_mem)
/* internal ram */
m_ram->set_default_size("192K").set_extra_options("320K");
-}
+MACHINE_CONFIG_END
void xerox820_state::mk83(machine_config & config)
{
diff --git a/src/mame/drivers/xmen.cpp b/src/mame/drivers/xmen.cpp
index bfb8954538f..53008a8cc55 100644
--- a/src/mame/drivers/xmen.cpp
+++ b/src/mame/drivers/xmen.cpp
@@ -298,29 +298,28 @@ TIMER_DEVICE_CALLBACK_MEMBER(xmen_state::xmen_scanline)
}
-void xmen_state::xmen(machine_config &config)
-{
- /* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000)); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &xmen_state::main_map);
+MACHINE_CONFIG_START(xmen_state::xmen)
- TIMER(config, "scantimer").configure_scanline(FUNC(xmen_state::xmen_scanline), "screen", 0, 1);
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", xmen_state, xmen_scanline, "screen", 0, 1)
- Z80(config, m_audiocpu, XTAL(16'000'000)/2); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &xmen_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/2) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
EEPROM_ER5911_8BIT(config, "eeprom");
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(59.17); /* verified on pcb */
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(13*8, (64-13)*8-1, 2*8, 30*8-1 ); /* correct, same issue of tmnt2 */
- m_screen->set_screen_update(FUNC(xmen_state::screen_update_xmen));
- m_screen->set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 ) /* correct, same issue of TMNT2 */
+ MCFG_SCREEN_UPDATE_DRIVER(xmen_state, screen_update_xmen)
+ MCFG_SCREEN_PALETTE("palette")
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 2048).enable_shadows();
@@ -343,21 +342,20 @@ void xmen_state::xmen(machine_config &config)
YM2151(config, "ymsnd", XTAL(16'000'000)/4).add_route(0, "lspeaker", 0.20).add_route(1, "rspeaker", 0.20); /* verified on pcb */
- K054539(config, m_k054539, XTAL(18'432'000));
- m_k054539->add_route(0, "rspeaker", 1.00);
- m_k054539->add_route(1, "lspeaker", 1.00);
-}
+ MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
+ MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
+ MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
+MACHINE_CONFIG_END
-void xmen_state::xmen6p(machine_config &config)
-{
- /* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &xmen_state::_6p_main_map);
+MACHINE_CONFIG_START(xmen_state::xmen6p)
- TIMER(config, "scantimer").configure_scanline(FUNC(xmen_state::xmen_scanline), "screen", 0, 1);
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(_6p_main_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", xmen_state, xmen_scanline, "screen", 0, 1)
- Z80(config, m_audiocpu, XTAL(16'000'000)/2);
- m_audiocpu->set_addrmap(AS_PROGRAM, &xmen_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/2)
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
EEPROM_ER5911_8BIT(config, "eeprom");
@@ -367,22 +365,22 @@ void xmen_state::xmen6p(machine_config &config)
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 2048).enable_shadows();
config.set_default_layout(layout_dualhsxs);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(12*8, 48*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(xmen_state::screen_update_xmen6p_left));
- m_screen->set_palette("palette");
-
- screen_device &screen2(SCREEN(config, "screen2", SCREEN_TYPE_RASTER));
- screen2.set_refresh_hz(60);
- screen2.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen2.set_size(64*8, 32*8);
- screen2.set_visarea(16*8, 52*8-1, 2*8, 30*8-1);
- screen2.set_screen_update(FUNC(xmen_state::screen_update_xmen6p_right));
- screen2.screen_vblank().set(FUNC(xmen_state::screen_vblank_xmen6p));
- screen2.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(12*8, 48*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(xmen_state, screen_update_xmen6p_left)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_SCREEN_ADD("screen2", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(16*8, 52*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(xmen_state, screen_update_xmen6p_right)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, xmen_state, screen_vblank_xmen6p))
+ MCFG_SCREEN_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(xmen_state,xmen6p)
@@ -406,10 +404,10 @@ void xmen_state::xmen6p(machine_config &config)
YM2151(config, "ymsnd", XTAL(16'000'000)/4).add_route(0, "lspeaker", 0.20).add_route(1, "rspeaker", 0.20);
- K054539(config, m_k054539, XTAL(18'432'000));
- m_k054539->add_route(0, "rspeaker", 1.00);
- m_k054539->add_route(1, "lspeaker", 1.00);
-}
+ MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
+ MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
+ MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
+MACHINE_CONFIG_END
/***************************************************************************
@@ -522,33 +520,6 @@ ROM_START( xmenj )
ROM_LOAD( "xmen_jba.nv", 0x0000, 0x0080, CRC(7439cea7) SHA1(d34b8ed0549b0457362159098e5c86b1356e35d0) )
ROM_END
-ROM_START( xmenja )
- ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "065-jea04.10d", 0x00000, 0x20000, CRC(655a61d6) SHA1(30a50b0a13205252d1cec6b6a6300e25c2f376c6) ) /* Japan 4 Player version */
- ROM_LOAD16_BYTE( "065-jea05.10f", 0x00001, 0x20000, CRC(7ea9fc84) SHA1(767f957c0c2f6a2d938d9e37388a17a6bce01dd8) )
- ROM_LOAD16_BYTE( "065-a02.9d", 0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
- ROM_LOAD16_BYTE( "065-a03.9f", 0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
-
- ROM_REGION( 0x20000, "audiocpu", 0 )
- ROM_LOAD( "065-a01.6f", 0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
-
- ROM_REGION( 0x200000, "k052109", 0 ) /* tiles */
- ROM_LOAD32_WORD( "065-a08.15l", 0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )
- ROM_LOAD32_WORD( "065-a07.16l", 0x000002, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
-
- ROM_REGION( 0x400000, "gfx2", 0 ) /* graphics (addressable by the main CPU) */
- ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) /* sprites */
- ROM_LOAD64_WORD( "065-a10.2l", 0x000002, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
- ROM_LOAD64_WORD( "065-a12.1h", 0x000004, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
- ROM_LOAD64_WORD( "065-a11.1l", 0x000006, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
-
- ROM_REGION( 0x200000, "k054539", 0 ) /* samples for the 054539 */
- ROM_LOAD( "065-a06.1f", 0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
-
- ROM_REGION( 0x80, "eeprom", 0 )
- ROM_LOAD( "xmen_jea.nv", 0x0000, 0x0080, CRC(df5b6bc6) SHA1(42fff0793bb1488bcdd69c39a8c5f58cdf39e1ff) )
-ROM_END
-
ROM_START( xmene )
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD16_BYTE( "065-eba04.10d", 0x00000, 0x20000, CRC(3588c5ec) SHA1(7966e7259038468845dafd19e5f7fc576c2901fa) ) /* Europe 4 Player version */
@@ -850,11 +821,9 @@ ROM_END
GAME( 1992, xmen, 0, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver UBB)", MACHINE_SUPPORTS_SAVE )
GAME( 1992, xmenj, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver JBA)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, xmenja, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver JEA)", MACHINE_SUPPORTS_SAVE )
GAME( 1992, xmene, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver EBA)", MACHINE_SUPPORTS_SAVE )
GAME( 1992, xmena, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver AEA)", MACHINE_SUPPORTS_SAVE )
GAME( 1992, xmenaa, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver ADA)", MACHINE_SUPPORTS_SAVE )
-
GAME( 1992, xmen2pe, xmen, xmen, xmen2p, xmen_state, empty_init, ROT0, "Konami", "X-Men (2 Players ver EAA)", MACHINE_SUPPORTS_SAVE )
GAME( 1992, xmen2pu, xmen, xmen, xmen2p, xmen_state, empty_init, ROT0, "Konami", "X-Men (2 Players ver UAB)", MACHINE_SUPPORTS_SAVE )
GAME( 1992, xmen2pa, xmen, xmen, xmen2p, xmen_state, empty_init, ROT0, "Konami", "X-Men (2 Players ver AAA)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/xor100.cpp b/src/mame/drivers/xor100.cpp
index 5392e0a0e2a..01927f5577b 100644
--- a/src/mame/drivers/xor100.cpp
+++ b/src/mame/drivers/xor100.cpp
@@ -477,12 +477,11 @@ void xor100_state::post_load()
/* Machine Driver */
-void xor100_state::xor100(machine_config &config)
-{
+MACHINE_CONFIG_START(xor100_state::xor100)
/* basic machine hardware */
- Z80(config, m_maincpu, 8_MHz_XTAL / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &xor100_state::xor100_mem);
- m_maincpu->set_addrmap(AS_IO, &xor100_state::xor100_io);
+ MCFG_DEVICE_ADD(Z80_TAG, Z80, 8_MHz_XTAL / 2)
+ MCFG_DEVICE_PROGRAM_MAP(xor100_mem)
+ MCFG_DEVICE_IO_MAP(xor100_io)
/* devices */
I8251(config, m_uart_a, 0/*8_MHz_XTAL / 2,*/);
@@ -522,36 +521,35 @@ void xor100_state::xor100(machine_config &config)
m_ctc->zc_callback<2>().set(FUNC(xor100_state::ctc_z2_w));
FD1795(config, m_fdc, 8_MHz_XTAL / 4);
- FLOPPY_CONNECTOR(config, WD1795_TAG":0", xor100_floppies, "8ssdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, WD1795_TAG":1", xor100_floppies, "8ssdd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, WD1795_TAG":2", xor100_floppies, nullptr, floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, WD1795_TAG":3", xor100_floppies, nullptr, floppy_image_device::default_floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":0", xor100_floppies, "8ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":1", xor100_floppies, "8ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":2", xor100_floppies, nullptr, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":3", xor100_floppies, nullptr, floppy_image_device::default_floppy_formats)
- CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->ack_handler().set(I8255A_TAG, FUNC(i8255_device::pc4_w));
- m_centronics->busy_handler().set(FUNC(xor100_state::write_centronics_busy));
- m_centronics->select_handler().set(FUNC(xor100_state::write_centronics_select));
+ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
+ MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(I8255A_TAG, i8255_device, pc4_w))
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, xor100_state, write_centronics_busy))
+ MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, xor100_state, write_centronics_select))
- output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
- m_centronics->set_output_latch(cent_data_out);
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
// S-100
- S100_BUS(config, m_s100, 8_MHz_XTAL / 4);
- m_s100->rdy().set_inputline(m_maincpu, Z80_INPUT_LINE_BOGUSWAIT);
- S100_SLOT(config, S100_TAG ":1", xor100_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":2", xor100_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":3", xor100_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":4", xor100_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":5", xor100_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":6", xor100_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":7", xor100_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":8", xor100_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":9", xor100_s100_cards, nullptr);
- S100_SLOT(config, S100_TAG ":10", xor100_s100_cards, nullptr);
+ MCFG_DEVICE_ADD(S100_TAG, S100_BUS, 8_MHz_XTAL / 4)
+ MCFG_S100_RDY_CALLBACK(INPUTLINE(Z80_TAG, Z80_INPUT_LINE_BOGUSWAIT))
+ MCFG_S100_SLOT_ADD(S100_TAG ":1", xor100_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":2", xor100_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":3", xor100_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":4", xor100_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":5", xor100_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":6", xor100_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":7", xor100_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":8", xor100_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":9", xor100_s100_cards, nullptr)
+ MCFG_S100_SLOT_ADD(S100_TAG ":10", xor100_s100_cards, nullptr)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K").set_extra_options("128K,192K,256K,320K,384K,448K,512K");
-}
+MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/xtheball.cpp b/src/mame/drivers/xtheball.cpp
index b71c5971e79..736da7a8b7d 100644
--- a/src/mame/drivers/xtheball.cpp
+++ b/src/mame/drivers/xtheball.cpp
@@ -208,6 +208,7 @@ void xtheball_state::main_map(address_map &map)
map(0x03040180, 0x0304018f).r(FUNC(xtheball_state::analogy_watchdog_r)).nopw();
map(0x03060000, 0x0306000f).w("dac", FUNC(dac_byte_interface::data_w)).umask16(0xff00);
map(0x04000000, 0x057fffff).rom().region("user2", 0);
+ map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xfff80000, 0xffffffff).rom().region("user1", 0);
}
@@ -291,8 +292,8 @@ INPUT_PORTS_END
*
*************************************/
-void xtheball_state::xtheball(machine_config &config)
-{
+MACHINE_CONFIG_START(xtheball_state::xtheball)
+
TMS34010(config, m_maincpu, 40000000);
m_maincpu->set_addrmap(AS_PROGRAM, &xtheball_state::main_map);
m_maincpu->set_halt_on_reset(false);
@@ -317,25 +318,24 @@ void xtheball_state::xtheball(machine_config &config)
latch3.q_out_cb<3>().set(FUNC(xtheball_state::foreground_mode_w));
// Q3 = video foreground control?
- TICKET_DISPENSER(config, m_ticket, attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
+ MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
- TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT);
+ MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(10000000, 640, 114, 626, 257, 24, 248);
- screen.set_screen_update("maincpu", FUNC(tms34010_device::tms340x0_rgb32));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(10000000, 640, 114, 626, 257, 24, 248)
+ MCFG_SCREEN_UPDATE_DEVICE("maincpu", tms34010_device, tms340x0_rgb32)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- ZN428E(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", ZN428E, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/xtom3d.cpp b/src/mame/drivers/xtom3d.cpp
index 34137b1c654..3a7253bdfdd 100644
--- a/src/mame/drivers/xtom3d.cpp
+++ b/src/mame/drivers/xtom3d.cpp
@@ -408,10 +408,10 @@ void xtom3d_state::machine_reset()
}
MACHINE_CONFIG_START(xtom3d_state::xtom3d)
- PENTIUM2(config, m_maincpu, 450000000/16); // actually Pentium II 450
- m_maincpu->set_addrmap(AS_PROGRAM, &xtom3d_state::xtom3d_map);
- m_maincpu->set_addrmap(AS_IO, &xtom3d_state::xtom3d_io);
- m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", PENTIUM2, 450000000/16) // actually Pentium II 450
+ MCFG_DEVICE_PROGRAM_MAP(xtom3d_map)
+ MCFG_DEVICE_IO_MAP(xtom3d_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
pcat_common(config);
diff --git a/src/mame/drivers/xxmissio.cpp b/src/mame/drivers/xxmissio.cpp
index f6333035a5f..c28818b9322 100644
--- a/src/mame/drivers/xxmissio.cpp
+++ b/src/mame/drivers/xxmissio.cpp
@@ -265,27 +265,27 @@ GFXDECODE_END
/****************************************************************************/
-void xxmissio_state::xxmissio(machine_config &config)
-{
+MACHINE_CONFIG_START(xxmissio_state::xxmissio)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 12000000/4); /* 3.0MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &xxmissio_state::map1);
+ MCFG_DEVICE_ADD("maincpu", Z80,12000000/4) /* 3.0MHz */
+ MCFG_DEVICE_PROGRAM_MAP(map1)
- Z80(config, m_subcpu, 12000000/4); /* 3.0MHz */
- m_subcpu->set_addrmap(AS_PROGRAM, &xxmissio_state::map2);
- m_subcpu->set_periodic_int(FUNC(xxmissio_state::interrupt_s), attotime::from_hz(2*60));
+ MCFG_DEVICE_ADD("sub", Z80,12000000/4) /* 3.0MHz */
+ MCFG_DEVICE_PROGRAM_MAP(map2)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(xxmissio_state, interrupt_s, 2*60)
- config.m_minimum_quantum = attotime::from_hz(6000);
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_size(64*8, 32*8);
- screen.set_visarea(0*8, 64*8-1, 4*8, 28*8-1);
- screen.set_screen_update(FUNC(xxmissio_state::screen_update));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(xxmissio_state::interrupt_m));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 4*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(xxmissio_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, xxmissio_state, interrupt_m))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_xxmissio);
PALETTE(config, m_palette).set_format(1, &xxmissio_state::BBGGRRII, 768);
@@ -308,7 +308,7 @@ void xxmissio_state::xxmissio(machine_config &config)
ym2.add_route(1, "mono", 0.15);
ym2.add_route(2, "mono", 0.15);
ym2.add_route(3, "mono", 0.40);
-}
+MACHINE_CONFIG_END
/****************************************************************************/
diff --git a/src/mame/drivers/xybots.cpp b/src/mame/drivers/xybots.cpp
index 96dc31fb701..51dbc9cecff 100644
--- a/src/mame/drivers/xybots.cpp
+++ b/src/mame/drivers/xybots.cpp
@@ -175,11 +175,11 @@ GFXDECODE_END
*
*************************************/
-void xybots_state::xybots(machine_config &config)
-{
+MACHINE_CONFIG_START(xybots_state::xybots)
+
/* basic machine hardware */
- M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &xybots_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
SLAPSTIC(config, "slapstic", 107, true);
@@ -191,20 +191,20 @@ void xybots_state::xybots(machine_config &config)
GFXDECODE(config, "gfxdecode", "palette", gfx_xybots);
PALETTE(config, "palette").set_format(palette_device::IRGB_4444, 1024);
- TILEMAP(config, m_playfield_tilemap, "gfxdecode", 2, 8, 8, TILEMAP_SCAN_ROWS, 64, 32).set_info_callback(FUNC(xybots_state::get_playfield_tile_info));
- TILEMAP(config, m_alpha_tilemap, "gfxdecode", 2, 8, 8, TILEMAP_SCAN_ROWS, 64, 32, 0).set_info_callback(FUNC(xybots_state::get_alpha_tile_info));
+ MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 2, xybots_state, get_playfield_tile_info, 8,8, SCAN_ROWS, 64,32)
+ MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", "gfxdecode", 2, xybots_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, xybots_state::s_mob_config);
m_mob->set_gfxdecode(m_gfxdecode);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
/* note: these parameters are from published specs, not derived */
/* the board uses a SYNGEN chip to generate video signals */
- m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
- m_screen->set_screen_update(FUNC(xybots_state::screen_update_xybots));
- m_screen->set_palette("palette");
- m_screen->screen_vblank().set(FUNC(xybots_state::video_int_write_line));
+ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(xybots_state, screen_update_xybots)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, xybots_state, video_int_write_line))
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -217,7 +217,7 @@ void xybots_state::xybots(machine_config &config)
m_jsa->add_route(1, "lspeaker", 1.0);
config.device_remove("jsa:pokey");
config.device_remove("jsa:tms");
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/xyonix.cpp b/src/mame/drivers/xyonix.cpp
index 01d513f4e3c..e7d5beac560 100644
--- a/src/mame/drivers/xyonix.cpp
+++ b/src/mame/drivers/xyonix.cpp
@@ -173,8 +173,8 @@ void xyonix_state::main_map(address_map &map)
void xyonix_state::port_map(address_map &map)
{
map.global_mask(0xff);
- map(0x20, 0x20).nopr().w("sn1", FUNC(sn76496_device::write)); /* SN76496 ready signal */
- map(0x21, 0x21).nopr().w("sn2", FUNC(sn76496_device::write));
+ map(0x20, 0x20).nopr().w("sn1", FUNC(sn76496_device::command_w)); /* SN76496 ready signal */
+ map(0x21, 0x21).nopr().w("sn2", FUNC(sn76496_device::command_w));
map(0x40, 0x40).w(FUNC(xyonix_state::nmiack_w));
map(0x50, 0x50).w(FUNC(xyonix_state::irqack_w));
map(0x60, 0x61).nopw(); /* mc6845 */
@@ -246,23 +246,23 @@ GFXDECODE_END
/* MACHINE driver *************************************************************/
-void xyonix_state::xyonix(machine_config &config)
-{
+MACHINE_CONFIG_START(xyonix_state::xyonix)
+
/* basic machine hardware */
- Z80(config, m_maincpu, 16000000 / 4); /* 4 MHz ? */
- m_maincpu->set_addrmap(AS_PROGRAM, &xyonix_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &xyonix_state::port_map);
- m_maincpu->set_periodic_int(FUNC(xyonix_state::irq0_line_assert), attotime::from_hz(4*60)); /* ?? controls music tempo */
+ MCFG_DEVICE_ADD("maincpu", Z80,16000000 / 4) /* 4 MHz ? */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(port_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(xyonix_state, irq0_line_assert, 4*60) /* ?? controls music tempo */
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(80*4, 32*8);
- screen.set_visarea(0, 80*4-1, 0, 28*8-1);
- screen.set_screen_update(FUNC(xyonix_state::screen_update));
- screen.set_palette("palette");
- screen.screen_vblank().set(FUNC(xyonix_state::nmiclk_w));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(80*4, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 80*4-1, 0, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(xyonix_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, xyonix_state, nmiclk_w))
GFXDECODE(config, m_gfxdecode, "palette", gfx_xyonix);
PALETTE(config, "palette", FUNC(xyonix_state::xyonix_palette), 256);
@@ -272,7 +272,7 @@ void xyonix_state::xyonix(machine_config &config)
SN76496(config, "sn1", 16000000/4).add_route(ALL_OUTPUTS, "mono", 1.0);
SN76496(config, "sn2", 16000000/4).add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+MACHINE_CONFIG_END
/* ROM Loading ***************************************************************/
diff --git a/src/mame/drivers/y2.cpp b/src/mame/drivers/y2.cpp
index 2f36fa1227b..4050d8b4684 100644
--- a/src/mame/drivers/y2.cpp
+++ b/src/mame/drivers/y2.cpp
@@ -53,8 +53,7 @@ static INPUT_PORTS_START( system_board_y2 )
INPUT_PORTS_END
-void system_board_y2_state::system_board_y2(machine_config &config)
-{
+MACHINE_CONFIG_START(system_board_y2_state::system_board_y2)
/*
SH4LE(config, m_maincpu, 266666666);
m_maincpu->set_md(0, 1);
@@ -69,18 +68,18 @@ void system_board_y2_state::system_board_y2(machine_config &config)
m_maincpu->set_sh4_clock(CPU_CLOCK);
*/
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_screen_update(FUNC(system_board_y2_state::screen_update_system_board_y2));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(system_board_y2_state, screen_update_system_board_y2)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, "palette").set_entries(0x1000);
+ MCFG_PALETTE_ADD("palette", 0x1000)
SPEAKER(config, "mono").front_center();
-}
+MACHINE_CONFIG_END
ROM_START( kof2002um ) // The King of Fighters 复仇之路/Fùchóu zhī lù/Road to Revenge
ROM_REGION( 0x8000000, "boot", 0 ) // sound program only? or boot too?
diff --git a/src/mame/drivers/yiear.cpp b/src/mame/drivers/yiear.cpp
index effbeaffaa4..60d5df7e323 100644
--- a/src/mame/drivers/yiear.cpp
+++ b/src/mame/drivers/yiear.cpp
@@ -278,24 +278,24 @@ void yiear_state::machine_reset()
m_yiear_nmi_enable = 0;
}
-void yiear_state::yiear(machine_config &config)
-{
+MACHINE_CONFIG_START(yiear_state::yiear)
+
/* basic machine hardware */
- MC6809E(config, m_maincpu, XTAL(18'432'000)/12); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &yiear_state::main_map);
- m_maincpu->set_periodic_int(FUNC(yiear_state::yiear_nmi_interrupt), attotime::from_hz(480)); /* music tempo (correct frequency unknown) */
+ MCFG_DEVICE_ADD(m_maincpu, MC6809E, XTAL(18'432'000)/12) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(yiear_state, yiear_nmi_interrupt, 480) /* music tempo (correct frequency unknown) */
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60.58); /* verified on pcb */
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(32*8, 32*8);
- m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(yiear_state::screen_update_yiear));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(yiear_state::vblank_irq));
+ MCFG_SCREEN_ADD(m_screen, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60.58) /* verified on pcb */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(yiear_state, screen_update_yiear)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, yiear_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_yiear);
PALETTE(config, m_palette, FUNC(yiear_state::yiear_palette), 32);
@@ -303,14 +303,15 @@ void yiear_state::yiear(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- TRACKFLD_AUDIO(config, m_audio, 0, finder_base::DUMMY_TAG, m_vlm);
+ MCFG_DEVICE_ADD(m_audio, TRACKFLD_AUDIO, 0, finder_base::DUMMY_TAG, m_vlm)
- SN76489A(config, m_sn, XTAL(18'432'000)/12).add_route(ALL_OUTPUTS, "mono", 1.0); /* verified on pcb */
+ MCFG_DEVICE_ADD(m_sn, SN76489A, XTAL(18'432'000)/12) /* verified on pcb */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- VLM5030(config, m_vlm, XTAL(3'579'545)); /* verified on pcb */
- m_vlm->set_addrmap(0, &yiear_state::vlm_map);
- m_vlm->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
+ MCFG_DEVICE_ADD(m_vlm, VLM5030, XTAL(3'579'545)) /* verified on pcb */
+ MCFG_DEVICE_ADDRESS_MAP(0, vlm_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/ymmu100.cpp b/src/mame/drivers/ymmu100.cpp
index 86a2de6af84..a45442ae3a6 100644
--- a/src/mame/drivers/ymmu100.cpp
+++ b/src/mame/drivers/ymmu100.cpp
@@ -2,19 +2,16 @@
// copyright-holders:R. Belmont, Olivier Galibert
/*************************************************************************************
- Yamaha MU-80 and MU-100 : 32-voice polyphonic/multitimbral General MIDI/GS/XG tone modules
+ Yamaha MU-100 : 32-voice polyphonic/multitimbral General MIDI/GS/XG tone module
Preliminary driver by R. Belmont and O. Galibert
- MU100 CPU: Hitachi H8S/2655 (HD6432655F), strapped for mode 4 (24-bit address, 16-bit data, no internal ROM)
+ CPU: Hitachi H8S/2655 (HD6432655F), strapped for mode 4 (24-bit address, 16-bit data, no internal ROM)
Sound ASIC: Yamaha XS725A0/SWP30
RAM: 1 MSM51008 (1 meg * 1 bit = 128KBytes)
- MU80 CPU: Hitachi H8/3002 (HD6413D02F16), strapped for mode 4, with a 12 MHz oscillator
- Sound ASICs: 2x Yamaha YMM275-F/SWP20 + 2x YMM279-F/SWD wave decoders + HD62908 "MEG" effects processor
-
I/O ports from service manual:
- Port 1 (MU100) / Port B (MU80)
+ Port 1:
0 - LCD data, SW data, LED 1
1 - LCD data, SW data, LED 2
2 - LCD data, SW data, LED 3
@@ -50,21 +47,11 @@
6 - NC
7 - (in) Plug detection for A/D input
- Port A (MU100):
+ Port A:
5 - (in) Off Line Detection
6 - (out) Signal for rotary encoder (REB)
7 - (out) Signal for rotary encoder (REA)
- Port A (MU80):
- 0 -
- 1 - LCD control RS
- 2 -
- 3 - (same as sws on MU100) LED,SW Strobe data latch
- 4 - (same as swd on MU100) SW data read control
- 5 - LCD control E
- 6 - LCD control RW
- 7 -
-
Port F:
0 - (out) (sws) LED,SW Strobe data latch
1 - (out) (swd) SW data read control
@@ -131,12 +118,9 @@
#include "bus/midi/midiinport.h"
#include "bus/midi/midioutport.h"
-#include "cpu/h8/h83002.h"
-#include "cpu/h8/h83003.h"
#include "cpu/h8/h8s2655.h"
#include "video/hd44780.h"
#include "sound/swp30.h"
-#include "sound/meg.h"
#include "debugger.h"
#include "screen.h"
@@ -165,53 +149,18 @@ static INPUT_PORTS_START( mu100 )
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
INPUT_PORTS_END
-static INPUT_PORTS_START( vl70 )
- PORT_START("B0")
- PORT_BIT(0x83, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Play") PORT_CODE(KEYCODE_A)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Effect") PORT_CODE(KEYCODE_F)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Midi/WX") PORT_CODE(KEYCODE_X)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Exit") PORT_CODE(KEYCODE_BACKSPACE)
-
- PORT_START("B1")
- PORT_BIT(0x83, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Edit") PORT_CODE(KEYCODE_E)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Mode") PORT_CODE(KEYCODE_M)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Part -") PORT_CODE(KEYCODE_OPENBRACE)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Select <") PORT_CODE(KEYCODE_COMMA)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Part +") PORT_CODE(KEYCODE_CLOSEBRACE)
-
- PORT_START("B2")
- PORT_BIT(0x83, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Util") PORT_CODE(KEYCODE_U)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Breath") PORT_CODE(KEYCODE_B)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Value -") PORT_CODE(KEYCODE_MINUS)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Select >") PORT_CODE(KEYCODE_STOP)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Value +") PORT_CODE(KEYCODE_EQUALS)
-INPUT_PORTS_END
-
class mu100_state : public driver_device
{
public:
mu100_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
- , m_mu80cpu(*this, "mu80cpu")
- , m_vl70cpu(*this, "vl70cpu")
, m_swp30(*this, "swp30")
- , m_meg(*this, "meg")
, m_lcd(*this, "lcd")
, m_ioport_p7(*this, "P7")
, m_ioport_p8(*this, "P8")
- , m_ioport_b0(*this, "B0")
- , m_ioport_b1(*this, "B1")
- , m_ioport_b2(*this, "B2")
{ }
- void vl70(machine_config &config);
- void mu50(machine_config &config);
- void mu80(machine_config &config);
void mu100(machine_config &config);
void regs_s1_write_tap(offs_t address, u16 data, u16 mem_mask);
@@ -294,7 +243,7 @@ public:
}
protected:
- virtual u16 adc_type_r();
+ virtual u16 adc7_r();
private:
enum {
@@ -303,40 +252,20 @@ private:
P2_LCD_ENABLE = 0x04
};
- enum {
- P6_LCD_RS = 0x04,
- P6_LCD_RW = 0x02,
- P6_LCD_ENABLE = 0x01
- };
-
- enum {
- PA_LCD_RS = 0x02,
- PA_LCD_ENABLE = 0x20,
- PA_LCD_RW = 0x40
- };
-
- optional_device<h8s2655_device> m_maincpu;
- optional_device<h83002_device> m_mu80cpu;
- optional_device<h83003_device> m_vl70cpu;
- optional_device<swp30_device> m_swp30;
- optional_device<meg_device> m_meg;
+ required_device<h8s2655_device> m_maincpu;
+ required_device<swp30_device> m_swp30;
required_device<hd44780_device> m_lcd;
- optional_ioport m_ioport_p7;
- optional_ioport m_ioport_p8;
- optional_ioport m_ioport_b0;
- optional_ioport m_ioport_b1;
- optional_ioport m_ioport_b2;
-
- u8 cur_p1, cur_p2, cur_p3, cur_p5, cur_p6, cur_pa, cur_pb, cur_pc, cur_pf, cur_pg;
- u8 cur_ic32, cur_leds;
+ required_ioport m_ioport_p7;
+ required_ioport m_ioport_p8;
+
+ u8 cur_p1, cur_p2, cur_p3, cur_p5, cur_p6, cur_pa, cur_pf, cur_pg;
+ u8 cur_ic32;
float contrast;
- u16 adc_zero_r();
- u16 adc_ar_r();
- u16 adc_al_r();
- u16 adc_midisw_r();
- u16 adc_battery_r();
- u16 adc_breath_r();
+ u16 adc0_r();
+ u16 adc2_r();
+ u16 adc4_r();
+ u16 adc6_r();
void p1_w(u16 data);
u16 p1_r();
@@ -347,40 +276,14 @@ private:
u16 p6_r();
void pa_w(u16 data);
u16 pa_r();
- void pb_w(u16 data);
- u16 pb_r();
- void p6_w_mu80(u16 data);
- u16 p6_r_mu80();
- void pa_w_mu80(u16 data);
- u16 pa_r_mu80();
- void pb_w_mu80(u16 data);
- u16 pb_r_mu80();
- void p6_w_vl70(u16 data);
- u16 p6_r_vl70();
- void pa_w_vl70(u16 data);
- u16 pa_r_vl70();
- void pb_w_vl70(u16 data);
- void pc_w_vl70(u16 data);
- u16 pc_r_vl70();
void pf_w(u16 data);
void pg_w(u16 data);
- void p6_w_mu50(u16 data);
- u16 p6_r_mu50();
- void pa_w_mu50(u16 data);
- u16 pa_r_mu50();
- u16 pb_r_mu50();
- void pb_w_mu50(u16 data);
float lightlevel(const u8 *src, const u8 *render);
u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
virtual void machine_start() override;
void mu100_iomap(address_map &map);
void mu100_map(address_map &map);
- void mu80_iomap(address_map &map);
- void mu80_map(address_map &map);
- void mu50_iomap(address_map &map);
- void vl70_iomap(address_map &map);
- void vl70_map(address_map &map);
void swp30_map(address_map &map);
};
@@ -391,7 +294,7 @@ public:
{ }
private:
- virtual u16 adc_type_r() override;
+ virtual u16 adc7_r() override;
};
void mu100_state::prg_write_tap(offs_t address, u16 data, u16 mem_mask)
@@ -554,8 +457,7 @@ void mu100_state::chan_write_tap(offs_t address, u16 data, u16 mem_mask)
void mu100_state::machine_start()
{
- cur_p1 = cur_p2 = cur_p3 = cur_p5 = cur_p6 = cur_pa = cur_pc = cur_pf = cur_pg = cur_ic32 = 0xff;
- cur_leds = 0x00;
+ cur_p1 = cur_p2 = cur_p3 = cur_p5 = cur_p6 = cur_pa = cur_pf = cur_pg = cur_ic32 = 0xff;
contrast = 1.0;
}
@@ -593,7 +495,7 @@ u32 mu100_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, cons
}
for(int i=0; i<6; i++)
- if(cur_leds & (1 << i)) {
+ if(cur_ic32 & (1 << (i == 5 ? 7 : i))) {
int x = 830 + 40*(i & 1);
int y = 55 + 65*(i >> 1);
for(int yy=-9; yy <= 9; yy++) {
@@ -606,20 +508,6 @@ u32 mu100_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, cons
return 0;
}
-void mu100_state::mu80_map(address_map &map)
-{
- map(0x000000, 0x07ffff).rom().region("mu80cpu", 0);
- map(0x200000, 0x20ffff).ram(); // 64K work RAM
- map(0x440000, 0x44001f).m(m_meg, FUNC(meg_device::map));
-}
-
-void mu100_state::vl70_map(address_map &map)
-{
- map(0x000000, 0x1fffff).rom().region("vl70cpu", 0);
- map(0x200000, 0x20ffff).ram(); // 64K work RAM
- map(0x600000, 0x60001f).m(m_meg, FUNC(meg_device::map));
-}
-
void mu100_state::mu100_map(address_map &map)
{
map(0x000000, 0x1fffff).rom().region("maincpu", 0);
@@ -627,49 +515,38 @@ void mu100_state::mu100_map(address_map &map)
map(0x400000, 0x401fff).m(m_swp30, FUNC(swp30_device::map));
}
-// Grounded adc input
-u16 mu100_state::adc_zero_r()
-{
- return 0;
-}
-
-// Analog input right (also sent to the swp)
-u16 mu100_state::adc_ar_r()
+u16 mu100_state::adc0_r()
{
+ // logerror("adc0_r\n");
return 0;
}
-// Analog input left (also sent to the swp)
-u16 mu100_state::adc_al_r()
+u16 mu100_state::adc2_r()
{
+ logerror("adc2_r\n");
return 0;
}
// Put the host switch to pure midi
-u16 mu100_state::adc_midisw_r()
+u16 mu100_state::adc4_r()
{
return 0;
}
// Battery level
-u16 mu100_state::adc_battery_r()
+u16 mu100_state::adc6_r()
{
- return 0x200;
-}
-
-// Breath controller
-u16 mu100_state::adc_breath_r()
-{
- return 0x000;
+ logerror("adc6_r\n");
+ return 0x3ff;
}
// model detect. pulled to GND (0) on MU100, to 0.5Vcc on the card version, to Vcc on MU100R
-u16 mu100_state::adc_type_r()
+u16 mu100_state::adc7_r()
{
return 0;
}
-u16 mu100r_state::adc_type_r()
+u16 mu100r_state::adc7_r()
{
return 0x3ff;
}
@@ -756,10 +633,8 @@ u16 mu100_state::pa_r()
void mu100_state::pf_w(u16 data)
{
- if(!(cur_pf & 0x01) && (data & 0x01)) {
+ if(!(cur_pf & 0x01) && (data & 0x01))
cur_ic32 = cur_p1;
- cur_leds = (cur_p1 & 0x1f) | ((cur_p1 & 0x80) >> 2);
- }
cur_pf = data;
}
@@ -769,234 +644,6 @@ void mu100_state::pg_w(u16 data)
logerror("pbsel3 %d\n", data & 1);
}
-void mu100_state::pb_w_mu80(u16 data)
-{
- cur_pb = data;
-}
-
-u16 mu100_state::pb_r_mu80()
-{
- if((cur_pa & PA_LCD_ENABLE)) {
- if(cur_pa & PA_LCD_RW)
- {
- if(cur_pa & PA_LCD_RS)
- return m_lcd->data_read();
- else
- return m_lcd->control_read();
- } else
- {
- if(!(cur_pa & 0x10)) {
- u8 val = 0xff;
- if(!(cur_ic32 & 0x20))
- val &= m_ioport_p7->read();
- if(!(cur_ic32 & 0x40))
- val &= m_ioport_p8->read();
- return val;
- }
-
- return 0x00;
- }
- }
-
- return cur_pb;
-}
-
-void mu100_state::p6_w_mu80(u16 data)
-{
- cur_p6 = data;
-}
-
-u16 mu100_state::p6_r_mu80()
-{
- return cur_p6;
-}
-
-void mu100_state::pa_w_mu80(u16 data)
-{
- data ^= PA_LCD_ENABLE;
- if(!(cur_pa & PA_LCD_ENABLE) && (data & PA_LCD_ENABLE)) {
- if(!(cur_pa & PA_LCD_RW)) {
- if(cur_pa & PA_LCD_RS)
- m_lcd->data_write(cur_pb);
- else
- m_lcd->control_write(cur_pb);
- }
- }
-
- if(!(cur_pa & 0x08) && (data & 0x08))
- {
- cur_ic32 = cur_pb;
- }
-
- cur_pa = data;
-}
-
-u16 mu100_state::pa_r_mu80()
-{
- return cur_pa;
-}
-
-void mu100_state::p6_w_vl70(u16 data)
-{
- if(!(cur_p6 & P6_LCD_ENABLE) && (data & P6_LCD_ENABLE)) {
- if(!(cur_p6 & P6_LCD_RW)) {
- if(cur_p6 & P6_LCD_RS)
- m_lcd->data_write(cur_pa);
- else
- m_lcd->control_write(cur_pa);
- }
- }
-
- cur_p6 = data;
-}
-
-void mu100_state::pb_w_vl70(u16 data)
-{
- cur_leds = bitswap<6>((data >> 2) ^ 0x3f, 5, 3, 1, 4, 2, 0);
-}
-
-void mu100_state::pc_w_vl70(u16 data)
-{
- cur_pc = data;
-}
-
-u16 mu100_state::pc_r_vl70()
-{
- u8 r = 0xff;
- if(!(cur_pc & 0x01))
- r &= m_ioport_b0->read();
- if(!(cur_pc & 0x02))
- r &= m_ioport_b1->read();
- if(!(cur_pc & 0x80))
- r &= m_ioport_b2->read();
- return r;
-}
-
-u16 mu100_state::p6_r_vl70()
-{
- return cur_p6;
-}
-
-void mu100_state::pa_w_vl70(u16 data)
-{
- cur_pa = data;
-}
-
-u16 mu100_state::pa_r_vl70()
-{
- if((cur_p6 & P6_LCD_ENABLE)) {
- if(cur_p6 & P6_LCD_RW)
- {
- if(cur_p6 & P6_LCD_RS)
- return m_lcd->data_read();
- else
- return m_lcd->control_read();
- } else
- return 0x00;
- }
-
- return cur_pa;
-}
-
-void mu100_state::p6_w_mu50(u16 data)
-{
- data ^= P6_LCD_ENABLE;
- if(!(cur_p6 & P6_LCD_ENABLE) && (data & P6_LCD_ENABLE)) {
- if(!(cur_p6 & P6_LCD_RW)) {
- if(cur_p6 & P6_LCD_RS)
- m_lcd->data_write(cur_pa);
- else
- m_lcd->control_write(cur_pa);
- }
- }
-
-// if(!(cur_pa9 & 0x08) && (data & 0x08))
-// cur_ic32 = cur_pa;
-
- cur_p6 = data;
-}
-
-u16 mu100_state::p6_r_mu50()
-{
- return cur_p6;
-}
-
-u16 mu100_state::pb_r_mu50()
-{
- return cur_pb;
-}
-
-void mu100_state::pb_w_mu50(u16 data)
-{
- cur_pb = data;
-}
-
-void mu100_state::pa_w_mu50(u16 data)
-{
- cur_pa = data;
-}
-
-u16 mu100_state::pa_r_mu50()
-{
- if((cur_p6 & P6_LCD_ENABLE)) {
- if(cur_p6 & P6_LCD_RW)
- {
- if(cur_p6 & P6_LCD_RS)
- return m_lcd->data_read();
- else
- return m_lcd->control_read();
- } else
- return 0x00;
- }
- return cur_pa;
-}
-
-void mu100_state::mu80_iomap(address_map &map)
-{
- map(h8_device::PORT_6, h8_device::PORT_6).rw(FUNC(mu100_state::p6_r_mu80), FUNC(mu100_state::p6_w_mu80));
- map(h8_device::PORT_A, h8_device::PORT_A).rw(FUNC(mu100_state::pa_r_mu80), FUNC(mu100_state::pa_w_mu80));
- map(h8_device::PORT_B, h8_device::PORT_B).rw(FUNC(mu100_state::pb_r_mu80), FUNC(mu100_state::pb_w_mu80));
- map(h8_device::ADC_0, h8_device::ADC_0).r(FUNC(mu100_state::adc_ar_r));
- map(h8_device::ADC_1, h8_device::ADC_1).r(FUNC(mu100_state::adc_zero_r));
- map(h8_device::ADC_2, h8_device::ADC_2).r(FUNC(mu100_state::adc_al_r));
- map(h8_device::ADC_3, h8_device::ADC_3).r(FUNC(mu100_state::adc_zero_r));
- map(h8_device::ADC_4, h8_device::ADC_4).r(FUNC(mu100_state::adc_midisw_r));
- map(h8_device::ADC_5, h8_device::ADC_6).r(FUNC(mu100_state::adc_zero_r));
- map(h8_device::ADC_6, h8_device::ADC_6).r(FUNC(mu100_state::adc_battery_r));
- map(h8_device::ADC_7, h8_device::ADC_7).r(FUNC(mu100_state::adc_zero_r)); // inputmod from the gate array
-}
-
-void mu100_state::mu50_iomap(address_map &map)
-{
- map(h8_device::PORT_6, h8_device::PORT_6).rw(FUNC(mu100_state::p6_r_mu50), FUNC(mu100_state::p6_w_mu50));
- map(h8_device::PORT_A, h8_device::PORT_A).rw(FUNC(mu100_state::pa_r_mu50), FUNC(mu100_state::pa_w_mu50));
- map(h8_device::PORT_B, h8_device::PORT_B).rw(FUNC(mu100_state::pb_r_mu50), FUNC(mu100_state::pb_w_mu50));
- map(h8_device::ADC_0, h8_device::ADC_0).r(FUNC(mu100_state::adc_ar_r));
- map(h8_device::ADC_1, h8_device::ADC_1).r(FUNC(mu100_state::adc_zero_r));
- map(h8_device::ADC_2, h8_device::ADC_2).r(FUNC(mu100_state::adc_al_r));
- map(h8_device::ADC_3, h8_device::ADC_3).r(FUNC(mu100_state::adc_zero_r));
- map(h8_device::ADC_4, h8_device::ADC_4).r(FUNC(mu100_state::adc_midisw_r));
- map(h8_device::ADC_5, h8_device::ADC_6).r(FUNC(mu100_state::adc_zero_r));
- map(h8_device::ADC_6, h8_device::ADC_6).r(FUNC(mu100_state::adc_battery_r));
- map(h8_device::ADC_7, h8_device::ADC_7).r(FUNC(mu100_state::adc_zero_r)); // inputmod from the gate array
-}
-
-void mu100_state::vl70_iomap(address_map &map)
-{
- map(h8_device::PORT_6, h8_device::PORT_6).rw(FUNC(mu100_state::p6_r_vl70), FUNC(mu100_state::p6_w_vl70));
- map(h8_device::PORT_A, h8_device::PORT_A).rw(FUNC(mu100_state::pa_r_vl70), FUNC(mu100_state::pa_w_vl70));
- map(h8_device::PORT_B, h8_device::PORT_B).w(FUNC(mu100_state::pb_w_vl70));
- map(h8_device::PORT_C, h8_device::PORT_C).rw(FUNC(mu100_state::pc_r_vl70), FUNC(mu100_state::pc_w_vl70));
- map(h8_device::ADC_0, h8_device::ADC_0).r(FUNC(mu100_state::adc_breath_r));
- map(h8_device::ADC_1, h8_device::ADC_6).r(FUNC(mu100_state::adc_zero_r));
- map(h8_device::ADC_2, h8_device::ADC_2).r(FUNC(mu100_state::adc_midisw_r));
- map(h8_device::ADC_3, h8_device::ADC_6).r(FUNC(mu100_state::adc_zero_r));
- map(h8_device::ADC_4, h8_device::ADC_4).r(FUNC(mu100_state::adc_battery_r));
- map(h8_device::ADC_5, h8_device::ADC_6).r(FUNC(mu100_state::adc_zero_r));
- map(h8_device::ADC_6, h8_device::ADC_6).r(FUNC(mu100_state::adc_zero_r));
- map(h8_device::ADC_7, h8_device::ADC_7).r(FUNC(mu100_state::adc_zero_r));
-}
-
void mu100_state::mu100_iomap(address_map &map)
{
map(h8_device::PORT_1, h8_device::PORT_1).rw(FUNC(mu100_state::p1_r), FUNC(mu100_state::p1_w));
@@ -1007,14 +654,11 @@ void mu100_state::mu100_iomap(address_map &map)
map(h8_device::PORT_A, h8_device::PORT_A).rw(FUNC(mu100_state::pa_r), FUNC(mu100_state::pa_w));
map(h8_device::PORT_F, h8_device::PORT_F).w(FUNC(mu100_state::pf_w));
map(h8_device::PORT_G, h8_device::PORT_G).w(FUNC(mu100_state::pg_w));
- map(h8_device::ADC_0, h8_device::ADC_0).r(FUNC(mu100_state::adc_ar_r));
- map(h8_device::ADC_1, h8_device::ADC_1).r(FUNC(mu100_state::adc_zero_r));
- map(h8_device::ADC_2, h8_device::ADC_2).r(FUNC(mu100_state::adc_al_r));
- map(h8_device::ADC_1, h8_device::ADC_3).r(FUNC(mu100_state::adc_zero_r));
- map(h8_device::ADC_4, h8_device::ADC_4).r(FUNC(mu100_state::adc_midisw_r));
- map(h8_device::ADC_5, h8_device::ADC_5).r(FUNC(mu100_state::adc_zero_r));
- map(h8_device::ADC_6, h8_device::ADC_6).r(FUNC(mu100_state::adc_battery_r));
- map(h8_device::ADC_7, h8_device::ADC_7).r(FUNC(mu100_state::adc_type_r));
+ map(h8_device::ADC_0, h8_device::ADC_0).r(FUNC(mu100_state::adc0_r));
+ map(h8_device::ADC_2, h8_device::ADC_2).r(FUNC(mu100_state::adc2_r));
+ map(h8_device::ADC_4, h8_device::ADC_4).r(FUNC(mu100_state::adc4_r));
+ map(h8_device::ADC_6, h8_device::ADC_6).r(FUNC(mu100_state::adc6_r));
+ map(h8_device::ADC_7, h8_device::ADC_7).r(FUNC(mu100_state::adc7_r));
}
void mu100_state::swp30_map(address_map &map)
@@ -1061,120 +705,6 @@ void mu100_state::mu100(machine_config &config)
m_maincpu->subdevice<h8_sci_device>("sci0")->tx_handler().set(mdout, FUNC(midi_port_device::write_txd));
}
-void mu100_state::mu80(machine_config &config)
-{
- H83002(config, m_mu80cpu, 12_MHz_XTAL);
- m_mu80cpu->set_addrmap(AS_PROGRAM, &mu100_state::mu80_map);
- m_mu80cpu->set_addrmap(AS_IO, &mu100_state::mu80_iomap);
-
- HD44780(config, m_lcd);
- m_lcd->set_lcd_size(4, 20);
-
- auto &screen = SCREEN(config, "screen", SCREEN_TYPE_LCD);
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate, asynchronous updating anyway */
- screen.set_screen_update(FUNC(mu100_state::screen_update));
- screen.set_size(900, 241);
- screen.set_visarea(0, 899, 0, 240);
-
- SPEAKER(config, "lspeaker").front_left();
- SPEAKER(config, "rspeaker").front_right();
-
- // In truth, dual swp-20
- SWP30(config, m_swp30);
- m_swp30->set_addrmap(0, &mu100_state::swp30_map);
- m_swp30->add_route(0, "lspeaker", 1.0);
- m_swp30->add_route(1, "rspeaker", 1.0);
-
- MEG(config, m_meg);
-
- auto &mdin_a(MIDI_PORT(config, "mdin_a"));
- midiin_slot(mdin_a);
- mdin_a.rxd_handler().set("mu80cpu:sci1", FUNC(h8_sci_device::rx_w));
-
- auto &mdin_b(MIDI_PORT(config, "mdin_b"));
- midiin_slot(mdin_b);
- mdin_b.rxd_handler().set("mu80cpu:sci0", FUNC(h8_sci_device::rx_w));
-
- auto &mdout(MIDI_PORT(config, "mdout"));
- midiout_slot(mdout);
- m_mu80cpu->subdevice<h8_sci_device>("sci0")->tx_handler().set(mdout, FUNC(midi_port_device::write_txd));
-}
-
-void mu100_state::mu50(machine_config &config)
-{
- H83002(config, m_mu80cpu, 16_MHz_XTAL);
- m_mu80cpu->set_addrmap(AS_PROGRAM, &mu100_state::mu80_map);
- m_mu80cpu->set_addrmap(AS_IO, &mu100_state::mu50_iomap);
-
- HD44780(config, m_lcd);
- m_lcd->set_lcd_size(4, 20);
-
- auto &screen = SCREEN(config, "screen", SCREEN_TYPE_LCD);
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate, asynchronous updating anyway */
- screen.set_screen_update(FUNC(mu100_state::screen_update));
- screen.set_size(900, 241);
- screen.set_visarea(0, 899, 0, 240);
-
- SPEAKER(config, "lspeaker").front_left();
- SPEAKER(config, "rspeaker").front_right();
-
- // In truth, dual swp-20
- SWP30(config, m_swp30);
- m_swp30->set_addrmap(0, &mu100_state::swp30_map);
- m_swp30->add_route(0, "lspeaker", 1.0);
- m_swp30->add_route(1, "rspeaker", 1.0);
-
- MEG(config, m_meg);
-
- auto &mdin_a(MIDI_PORT(config, "mdin_a"));
- midiin_slot(mdin_a);
- mdin_a.rxd_handler().set("mu80cpu:sci1", FUNC(h8_sci_device::rx_w));
-
- auto &mdin_b(MIDI_PORT(config, "mdin_b"));
- midiin_slot(mdin_b);
- mdin_b.rxd_handler().set("mu80cpu:sci0", FUNC(h8_sci_device::rx_w));
-
- auto &mdout(MIDI_PORT(config, "mdout"));
- midiout_slot(mdout);
- m_mu80cpu->subdevice<h8_sci_device>("sci0")->tx_handler().set(mdout, FUNC(midi_port_device::write_txd));
-}
-
-void mu100_state::vl70(machine_config &config)
-{
- H83003(config, m_vl70cpu, 10_MHz_XTAL);
- m_vl70cpu->set_addrmap(AS_PROGRAM, &mu100_state::vl70_map);
- m_vl70cpu->set_addrmap(AS_IO, &mu100_state::vl70_iomap);
-
- HD44780(config, m_lcd);
- m_lcd->set_lcd_size(4, 20);
-
- auto &screen = SCREEN(config, "screen", SCREEN_TYPE_LCD);
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate, asynchronous updating anyway */
- screen.set_screen_update(FUNC(mu100_state::screen_update));
- screen.set_size(900, 241);
- screen.set_visarea(0, 899, 0, 240);
-
- SPEAKER(config, "lspeaker").front_left();
- SPEAKER(config, "rspeaker").front_right();
-
- MEG(config, m_meg);
-
- auto &mdin_a(MIDI_PORT(config, "mdin_a"));
- midiin_slot(mdin_a);
- mdin_a.rxd_handler().set("vl70cpu:sci1", FUNC(h8_sci_device::rx_w));
-
- auto &mdin_b(MIDI_PORT(config, "mdin_b"));
- midiin_slot(mdin_b);
- mdin_b.rxd_handler().set("vl70cpu:sci0", FUNC(h8_sci_device::rx_w));
-
- auto &mdout(MIDI_PORT(config, "mdout"));
- midiout_slot(mdout);
- m_vl70cpu->subdevice<h8_sci_device>("sci0")->tx_handler().set(mdout, FUNC(midi_port_device::write_txd));
-}
-
#define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \
ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_REVERSE | ROM_BIOS(bios))
@@ -1219,39 +749,5 @@ ROM_START( mu100r )
ROM_LOAD( "mu100-font.bin", 0x0000, 0x1000, BAD_DUMP CRC(a7d6c1d6) SHA1(9f0398d678bdf607cb34d83ee535f3b7fcc97c41) )
ROM_END
-ROM_START( mu80 )
- ROM_REGION( 0x80000, "mu80cpu", 0 )
- ROM_LOAD16_WORD_SWAP( "yamaha_mu80.bin", 0x000000, 0x080000, CRC(c31074c0) SHA1(a11bd4523cd8ff1e1744078c3b4c18112b73c61e) )
-
- ROM_REGION( 0x1800000, "swp30", ROMREGION_ERASE00 )
-
- ROM_REGION( 0x1000, "lcd", 0)
- // Hand made, 3 characters unused
- ROM_LOAD( "mu100-font.bin", 0x0000, 0x1000, BAD_DUMP CRC(a7d6c1d6) SHA1(9f0398d678bdf607cb34d83ee535f3b7fcc97c41) )
-ROM_END
-
-ROM_START( mu50 )
- ROM_REGION( 0x80000, "mu80cpu", 0 )
- ROM_LOAD16_WORD_SWAP( "yamaha_mu50.bin", 0x000000, 0x080000, CRC(507168ad) SHA1(58c41f10d292cac35ef0e8f93029fbc4685df586) )
-
- ROM_REGION( 0x1800000, "swp30", ROMREGION_ERASE00 )
-
- ROM_REGION( 0x1000, "lcd", 0)
- // Hand made, 3 characters unused
- ROM_LOAD( "mu100-font.bin", 0x0000, 0x1000, BAD_DUMP CRC(a7d6c1d6) SHA1(9f0398d678bdf607cb34d83ee535f3b7fcc97c41) )
-ROM_END
-
-ROM_START( vl70 )
- ROM_REGION( 0x200000, "vl70cpu", 0 )
- ROM_LOAD16_WORD_SWAP( "vl70m_v111_27c160.bin", 0x000000, 0x200000, CRC(efdba9f0) SHA1(cfa9fb7d2a991e4752393c9677e4ddcbe10866c7) )
-
- ROM_REGION( 0x1000, "lcd", 0)
- // Hand made, 3 characters unused
- ROM_LOAD( "mu100-font.bin", 0x0000, 0x1000, BAD_DUMP CRC(a7d6c1d6) SHA1(9f0398d678bdf607cb34d83ee535f3b7fcc97c41) )
-ROM_END
-
CONS( 1997, mu100, 0, 0, mu100, mu100, mu100_state, empty_init, "Yamaha", "MU100", MACHINE_NOT_WORKING )
CONS( 1997, mu100r, mu100, 0, mu100, mu100, mu100r_state, empty_init, "Yamaha", "MU100 Rackable version", MACHINE_NOT_WORKING )
-CONS( 1994, mu80, mu100, 0, mu80, mu100, mu100_state, empty_init, "Yamaha", "MU80", MACHINE_NOT_WORKING )
-CONS( 1996, vl70, mu100, 0, vl70, vl70, mu100_state, empty_init, "Yamaha", "VL70-m", MACHINE_NOT_WORKING )
-CONS( 1995, mu50, mu100, 0, mu50, mu100, mu100_state, empty_init, "Yamaha", "MU50", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/yunsung8.cpp b/src/mame/drivers/yunsung8.cpp
index 8dff608fb5a..a3f5b764f5c 100644
--- a/src/mame/drivers/yunsung8.cpp
+++ b/src/mame/drivers/yunsung8.cpp
@@ -341,25 +341,26 @@ void yunsung8_state::machine_reset()
}
-void yunsung8_state::yunsung8(machine_config &config)
-{
+MACHINE_CONFIG_START(yunsung8_state::yunsung8)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(16'000'000)/2); /* Z80B @ 8MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &yunsung8_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &yunsung8_state::port_map);
- m_maincpu->set_vblank_int("screen", FUNC(yunsung8_state::irq0_line_assert)); /* No nmi routine */
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(16'000'000)/2) /* Z80B @ 8MHz? */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
+ MCFG_DEVICE_IO_MAP(port_map)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", yunsung8_state, irq0_line_assert) /* No nmi routine */
- Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* ? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &yunsung8_state::sound_map);
+ MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/4) /* ? */
+ MCFG_DEVICE_PROGRAM_MAP(sound_map)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(16'000'000)/2, 512, 64, 512-64, 262, 8, 256-8); /* TODO: completely inaccurate */
- screen.set_screen_update(FUNC(yunsung8_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(16'000'000)/2, 512, 64, 512-64, 262, 8, 256-8) /* TODO: completely inaccurate */
+ MCFG_SCREEN_UPDATE_DRIVER(yunsung8_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_yunsung8)
+ MCFG_PALETTE_ADD("palette", 2048)
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_yunsung8);
- PALETTE(config, m_palette).set_entries(2048);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -367,19 +368,19 @@ void yunsung8_state::yunsung8(machine_config &config)
GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, 0);
- ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(16'000'000)/4));
- ymsnd.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- ymsnd.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+ MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(16'000'000)/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
LS157(config, m_adpcm_select, 0);
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
- MSM5205(config, m_msm, XTAL(400'000)); /* verified on pcb */
- m_msm->vck_legacy_callback().set(FUNC(yunsung8_state::adpcm_int)); /* interrupt function */
- m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz, 4 Bits */
- m_msm->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
- m_msm->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
-}
+ MCFG_DEVICE_ADD("msm", MSM5205, XTAL(400'000)) /* verified on pcb */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(*this, yunsung8_state, adpcm_int)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz, 4 Bits */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/z100.cpp b/src/mame/drivers/z100.cpp
index ff837376bb8..8acc8bb13f4 100644
--- a/src/mame/drivers/z100.cpp
+++ b/src/mame/drivers/z100.cpp
@@ -145,12 +145,9 @@ ZDIPSW EQU 0FFH ; Configuration dip switches
#include "emu.h"
#include "cpu/i86/i86.h"
-//#include "bus/rs232/rs232.h"
//#include "bus/s100/s100.h"
#include "imagedev/floppy.h"
#include "machine/6821pia.h"
-#include "machine/input_merger.h"
-#include "machine/mc2661.h"
#include "machine/pic8259.h"
#include "machine/wd_fdc.h"
#include "video/mc6845.h"
@@ -163,12 +160,15 @@ public:
z100_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
- m_pia(*this, "pia%u", 0U),
+ m_pia0(*this, "pia0"),
+ m_pia1(*this, "pia1"),
m_picm(*this, "pic8259_master"),
m_pics(*this, "pic8259_slave"),
m_fdc(*this, "z207_fdc"),
- m_floppies(*this, "z207_fdc:%u", 0U),
- m_epci(*this, "epci%u", 0U),
+ m_floppy0(*this, "z207_fdc:0"),
+ m_floppy1(*this, "z207_fdc:1"),
+ m_floppy2(*this, "z207_fdc:2"),
+ m_floppy3(*this, "z207_fdc:3"),
m_crtc(*this, "crtc"),
m_palette(*this, "palette"),
m_floppy(nullptr)
@@ -205,12 +205,15 @@ private:
void z100_mem(address_map &map);
required_device<cpu_device> m_maincpu;
- required_device_array<pia6821_device, 2> m_pia;
+ required_device<pia6821_device> m_pia0;
+ required_device<pia6821_device> m_pia1;
required_device<pic8259_device> m_picm;
required_device<pic8259_device> m_pics;
required_device<fd1797_device> m_fdc;
- required_device_array<floppy_connector, 4> m_floppies;
- required_device_array<mc2661_device, 2> m_epci;
+ required_device<floppy_connector> m_floppy0;
+ required_device<floppy_connector> m_floppy1;
+ required_device<floppy_connector> m_floppy2;
+ required_device<floppy_connector> m_floppy3;
required_device<mc6845_device> m_crtc;
required_device<palette_device> m_palette;
@@ -360,20 +363,27 @@ WRITE8_MEMBER( z100_state::z100_6845_address_w )
{
data &= 0x1f;
m_crtc_index = data;
- m_crtc->address_w(data);
+ m_crtc->address_w( space, offset, data );
}
WRITE8_MEMBER( z100_state::z100_6845_data_w )
{
m_crtc_vreg[m_crtc_index] = data;
- m_crtc->register_w(data);
+ m_crtc->register_w(space, offset, data);
}
// todo: side select?
WRITE8_MEMBER( z100_state::floppy_select_w )
{
- m_floppy = m_floppies[data & 0x03]->get_device();
+ switch (data & 0x03)
+ {
+ case 0: m_floppy = m_floppy0->get_device(); break;
+ case 1: m_floppy = m_floppy1->get_device(); break;
+ case 2: m_floppy = m_floppy2->get_device(); break;
+ case 3: m_floppy = m_floppy3->get_device(); break;
+ }
+
m_fdc->set_floppy(m_floppy);
}
@@ -402,14 +412,14 @@ void z100_state::z100_io(address_map &map)
// z-207 secondary disk controller (wd1797)
// AM_RANGE (0xcd, 0xce) ET-100 CRT Controller
// AM_RANGE (0xd4, 0xd7) ET-100 Trainer Parallel I/O
- map(0xd8, 0xdb).rw(m_pia[0], FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //video board
+ map(0xd8, 0xdb).rw(m_pia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //video board
map(0xdc, 0xdc).w(FUNC(z100_state::z100_6845_address_w));
map(0xdd, 0xdd).w(FUNC(z100_state::z100_6845_data_w));
// AM_RANGE (0xde, 0xde) light pen
- map(0xe0, 0xe3).rw(m_pia[1], FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //main board
+ map(0xe0, 0xe3).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //main board
// AM_RANGE (0xe4, 0xe7) 8253 PIT
- map(0xe8, 0xeb).rw(m_epci[0], FUNC(mc2661_device::read), FUNC(mc2661_device::write));
- map(0xec, 0xef).rw(m_epci[1], FUNC(mc2661_device::read), FUNC(mc2661_device::write));
+// AM_RANGE (0xe8, 0xeb) First 2661-2 serial port (printer)
+// AM_RANGE (0xec, 0xef) Second 2661-2 serial port (modem)
map(0xf0, 0xf1).rw(m_pics, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
map(0xf2, 0xf3).rw(m_picm, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
map(0xf4, 0xf4).r(FUNC(z100_state::keyb_data_r)); // -> 8041 MCU
@@ -664,8 +674,7 @@ static void z100_floppies(device_slot_interface &device)
device.option_add("dd", FLOPPY_525_DD);
}
-void z100_state::z100(machine_config &config)
-{
+MACHINE_CONFIG_START(z100_state::z100)
/* basic machine hardware */
I8088(config, m_maincpu, 14.318181_MHz_XTAL / 3);
m_maincpu->set_addrmap(AS_PROGRAM, &z100_state::z100_mem);
@@ -673,15 +682,15 @@ void z100_state::z100(machine_config &config)
m_maincpu->set_irq_acknowledge_callback("pic8259_master", FUNC(pic8259_device::inta_cb));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(640, 480);
- screen.set_visarea(0, 640-1, 0, 480-1);
- screen.set_screen_update(FUNC(z100_state::screen_update));
- screen.set_palette(m_palette);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DRIVER(z100_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
- PALETTE(config, m_palette).set_entries(8);
+ MCFG_PALETTE_ADD("palette", 8)
/* devices */
MC6845(config, m_crtc, 14.318181_MHz_XTAL / 8); /* unknown clock, hand tuned to get ~50/~60 fps */
@@ -698,35 +707,21 @@ void z100_state::z100(machine_config &config)
m_pics->out_int_callback().set(m_picm, FUNC(pic8259_device::ir3_w));
m_pics->in_sp_callback().set_constant(0);
- PIA6821(config, m_pia[0], 0);
- m_pia[0]->writepa_handler().set(FUNC(z100_state::video_pia_A_w));
- m_pia[0]->writepb_handler().set(FUNC(z100_state::video_pia_B_w));
- m_pia[0]->ca2_handler().set(FUNC(z100_state::video_pia_CA2_w));
- m_pia[0]->cb2_handler().set(FUNC(z100_state::video_pia_CB2_w));
+ PIA6821(config, m_pia0, 0);
+ m_pia0->writepa_handler().set(FUNC(z100_state::video_pia_A_w));
+ m_pia0->writepb_handler().set(FUNC(z100_state::video_pia_B_w));
+ m_pia0->ca2_handler().set(FUNC(z100_state::video_pia_CA2_w));
+ m_pia0->cb2_handler().set(FUNC(z100_state::video_pia_CB2_w));
- PIA6821(config, m_pia[1], 0);
+ PIA6821(config, m_pia1, 0);
FD1797(config, m_fdc, 1_MHz_XTAL);
- FLOPPY_CONNECTOR(config, m_floppies[0], z100_floppies, "dd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, m_floppies[1], z100_floppies, "dd", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, m_floppies[2], z100_floppies, "", floppy_image_device::default_floppy_formats);
- FLOPPY_CONNECTOR(config, m_floppies[3], z100_floppies, "", floppy_image_device::default_floppy_formats);
-
- MC2661(config, m_epci[0], 4.9152_MHz_XTAL); // First 2661-2 serial port (printer)
- m_epci[0]->txrdy_handler().set("epci0int", FUNC(input_merger_device::in_w<0>));
- m_epci[0]->rxrdy_handler().set("epci0int", FUNC(input_merger_device::in_w<1>));
-
- MC2661(config, m_epci[1], 4.9152_MHz_XTAL); // Second 2661-2 serial port (modem)
- m_epci[1]->txrdy_handler().set("epci1int", FUNC(input_merger_device::in_w<0>));
- m_epci[1]->rxrdy_handler().set("epci1int", FUNC(input_merger_device::in_w<1>));
-
- input_merger_device &epci0int(INPUT_MERGER_ANY_HIGH(config, "epci0int"));
- epci0int.output_handler().set(m_picm, FUNC(pic8259_device::ir4_w));
-
- input_merger_device &epci1int(INPUT_MERGER_ANY_HIGH(config, "epci1int"));
- epci1int.output_handler().set(m_picm, FUNC(pic8259_device::ir5_w));
-}
+ MCFG_FLOPPY_DRIVE_ADD("z207_fdc:0", z100_floppies, "dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("z207_fdc:1", z100_floppies, "dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("z207_fdc:2", z100_floppies, "", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("z207_fdc:3", z100_floppies, "", floppy_image_device::default_floppy_formats)
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( z100 )
diff --git a/src/mame/drivers/z1013.cpp b/src/mame/drivers/z1013.cpp
index cd8e157d5b9..919497e9f72 100644
--- a/src/mame/drivers/z1013.cpp
+++ b/src/mame/drivers/z1013.cpp
@@ -373,20 +373,20 @@ GFXDECODE_END
/* Machine driver */
MACHINE_CONFIG_START(z1013_state::z1013)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(1'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &z1013_state::z1013_mem);
- m_maincpu->set_addrmap(AS_IO, &z1013_state::z1013_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(1'000'000) )
+ MCFG_DEVICE_PROGRAM_MAP(z1013_mem)
+ MCFG_DEVICE_IO_MAP(z1013_io)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0, 32*8-1, 0, 32*8-1);
- screen.set_screen_update(FUNC(z1013_state::screen_update_z1013));
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_z1013);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(z1013_state, screen_update_z1013)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_z1013)
PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */
@@ -398,20 +398,19 @@ MACHINE_CONFIG_START(z1013_state::z1013)
pio.in_pb_callback().set(FUNC(z1013_state::port_b_r));
pio.out_pb_callback().set(FUNC(z1013_state::port_b_w));
- CASSETTE(config, m_cass);
- m_cass->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
- MCFG_SNAPSHOT_ADD("snapshot", z1013_state, z1013, "z80")
+ MCFG_SNAPSHOT_ADD("snapshot", z1013_state, z1013, "z80", 0)
MACHINE_CONFIG_END
-void z1013_state::z1013k76(machine_config &config)
-{
+MACHINE_CONFIG_START(z1013_state::z1013k76)
z1013(config);
z80pio_device &pio(*subdevice<z80pio_device>("z80pio"));
pio.in_pb_callback().set(FUNC(z1013_state::k7659_port_b_r));
pio.out_pb_callback().set_nop();
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( z1013 )
diff --git a/src/mame/drivers/z80dev.cpp b/src/mame/drivers/z80dev.cpp
index 2f64375d8d0..1df8b699238 100644
--- a/src/mame/drivers/z80dev.cpp
+++ b/src/mame/drivers/z80dev.cpp
@@ -123,16 +123,15 @@ INPUT_PORTS_START( z80dev )
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("LD") PORT_CODE(KEYCODE_L)
INPUT_PORTS_END
-void z80dev_state::z80dev(machine_config &config)
-{
+MACHINE_CONFIG_START(z80dev_state::z80dev)
/* basic machine hardware */
- Z80(config, m_maincpu, 4_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &z80dev_state::mem_map);
- m_maincpu->set_addrmap(AS_IO, &z80dev_state::io_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, 4_MHz_XTAL)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
/* video hardware */
config.set_default_layout(layout_z80dev);
-}
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( z80dev )
diff --git a/src/mame/drivers/z80ne.cpp b/src/mame/drivers/z80ne.cpp
index 1b08433a9d3..ab64774f038 100644
--- a/src/mame/drivers/z80ne.cpp
+++ b/src/mame/drivers/z80ne.cpp
@@ -414,29 +414,26 @@ static void z80ne_floppies(device_slot_interface &device)
device.option_add("sssd", FLOPPY_525_SSSD);
}
-void z80ne_state::z80ne(machine_config &config)
-{
+MACHINE_CONFIG_START(z80ne_state::z80ne)
/* basic machine hardware */
- Z80(config, m_maincpu, Z80NE_CPU_SPEED_HZ);
- m_maincpu->set_addrmap(AS_PROGRAM, &z80ne_state::z80ne_mem);
- m_maincpu->set_addrmap(AS_IO, &z80ne_state::z80ne_io);
+ MCFG_DEVICE_ADD("z80ne", Z80, Z80NE_CPU_SPEED_HZ)
+ MCFG_DEVICE_PROGRAM_MAP(z80ne_mem)
+ MCFG_DEVICE_IO_MAP(z80ne_io)
MCFG_MACHINE_START_OVERRIDE(z80ne_state,z80ne)
MCFG_MACHINE_RESET_OVERRIDE(z80ne_state,z80ne)
AY31015(config, m_uart);
+ m_uart->set_tx_clock(4800.0);
+ m_uart->set_rx_clock(4800.0);
- CLOCK(config, m_uart_clock, 4800);
- m_uart_clock->signal_handler().set(FUNC(z80ne_state::lx385_uart_tx_clock_w));
- m_uart_clock->signal_handler().append(m_uart, FUNC(ay31015_device::write_rcp));
-
- CASSETTE(config, m_cassette1);
- m_cassette1->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette1->set_interface("z80ne_cass");
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("z80ne_cass")
- CASSETTE(config, m_cassette2);
- m_cassette2->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette2->set_interface("z80ne_cass");
+ MCFG_CASSETTE_ADD( "cassette2" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("z80ne_cass")
config.set_default_layout(layout_z80ne);
@@ -444,15 +441,15 @@ void z80ne_state::z80ne(machine_config &config)
RAM(config, m_ram).set_default_size("32K");
// all known tapes require LX.388 expansion
- //SOFTWARE_LIST(config, "cass_list").set_original("z80ne_cass");
-}
+ //MCFG_SOFTWARE_LIST_ADD("cass_list","z80ne_cass")
+MACHINE_CONFIG_END
-void z80ne_state::z80net(machine_config &config)
-{
+MACHINE_CONFIG_START(z80ne_state::z80net)
z80ne(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &z80ne_state::z80net_mem);
- m_maincpu->set_addrmap(AS_IO, &z80ne_state::z80net_io);
+ MCFG_DEVICE_MODIFY("z80ne")
+ MCFG_DEVICE_PROGRAM_MAP(z80net_mem)
+ MCFG_DEVICE_IO_MAP(z80net_io)
MCFG_MACHINE_START_OVERRIDE(z80ne_state, z80net )
MCFG_MACHINE_RESET_OVERRIDE(z80ne_state, z80net )
@@ -470,11 +467,10 @@ void z80ne_state::z80net(machine_config &config)
m_lx387_kr2376->control().set(FUNC(z80ne_state::lx387_control_r));
/* video hardware */
- SCREEN(config, "lx388", SCREEN_TYPE_RASTER);
+ MCFG_SCREEN_MC6847_PAL_ADD("lx388", "mc6847")
- MC6847_PAL(config, m_vdg, 4.433619_MHz_XTAL);
- m_vdg->set_screen("lx388");
- m_vdg->input_callback().set(FUNC(z80ne_state::lx388_mc6847_videoram_r));
+ MCFG_DEVICE_ADD("mc6847", MC6847_PAL, 4.433619_MHz_XTAL)
+ MCFG_MC6847_INPUT_CALLBACK(READ8(*this, z80ne_state, lx388_mc6847_videoram_r))
// AG = GND, GM2 = GND, GM1 = GND, GM0 = GND, CSS = GND
// other lines not connected
@@ -483,32 +479,29 @@ void z80ne_state::z80net(machine_config &config)
/* internal ram */
m_ram->set_default_size("32K").set_extra_options("1K");
- SOFTWARE_LIST(config, "cass_list").set_original("z80ne_cass");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list","z80ne_cass")
+MACHINE_CONFIG_END
-void z80ne_state::z80netb(machine_config &config)
-{
+MACHINE_CONFIG_START(z80ne_state::z80netb)
/* basic machine hardware */
- Z80(config, m_maincpu, Z80NE_CPU_SPEED_HZ);
- m_maincpu->set_addrmap(AS_PROGRAM, &z80ne_state::z80netb_mem);
- m_maincpu->set_addrmap(AS_IO, &z80ne_state::z80net_io);
+ MCFG_DEVICE_ADD("z80ne", Z80, Z80NE_CPU_SPEED_HZ)
+ MCFG_DEVICE_PROGRAM_MAP(z80netb_mem)
+ MCFG_DEVICE_IO_MAP(z80net_io)
MCFG_MACHINE_START_OVERRIDE(z80ne_state,z80netb)
MCFG_MACHINE_RESET_OVERRIDE(z80ne_state,z80netb)
AY31015(config, m_uart);
+ m_uart->set_tx_clock(4800.0);
+ m_uart->set_rx_clock(4800.0);
- CLOCK(config, m_uart_clock, 4800);
- m_uart_clock->signal_handler().set(FUNC(z80ne_state::lx385_uart_tx_clock_w));
- m_uart_clock->signal_handler().append(m_uart, FUNC(ay31015_device::write_rcp));
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("z80ne_cass")
- CASSETTE(config, m_cassette1);
- m_cassette1->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette1->set_interface("z80ne_cass");
-
- CASSETTE(config, m_cassette2);
- m_cassette2->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette2->set_interface("z80ne_cass");
+ MCFG_CASSETTE_ADD( "cassette2" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("z80ne_cass")
KR2376_ST(config, m_lx387_kr2376, 50000);
m_lx387_kr2376->x<0>().set_ioport("X0");
@@ -523,11 +516,10 @@ void z80ne_state::z80netb(machine_config &config)
m_lx387_kr2376->control().set(FUNC(z80ne_state::lx387_control_r));
/* video hardware */
- SCREEN(config, "lx388", SCREEN_TYPE_RASTER);
+ MCFG_SCREEN_MC6847_PAL_ADD("lx388", "mc6847")
- MC6847_PAL(config, m_vdg, 4.433619_MHz_XTAL);
- m_vdg->set_screen("lx388");
- m_vdg->input_callback().set(FUNC(z80ne_state::lx388_mc6847_videoram_r));
+ MCFG_DEVICE_ADD("mc6847", MC6847_PAL, 4.433619_MHz_XTAL)
+ MCFG_MC6847_INPUT_CALLBACK(READ8(*this, z80ne_state, lx388_mc6847_videoram_r))
// AG = GND, GM2 = GND, GM1 = GND, GM0 = GND, CSS = GND
// other lines not connected
@@ -536,58 +528,54 @@ void z80ne_state::z80netb(machine_config &config)
/* internal ram */
RAM(config, m_ram).set_default_size("32K").set_extra_options("1K");
- SOFTWARE_LIST(config, "cass_list").set_original("z80ne_cass");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list","z80ne_cass")
+MACHINE_CONFIG_END
-void z80netf_state::z80netf(machine_config &config)
-{
+MACHINE_CONFIG_START(z80netf_state::z80netf)
/* basic machine hardware */
- Z80(config, m_maincpu, Z80NE_CPU_SPEED_HZ);
- m_maincpu->set_addrmap(AS_PROGRAM, &z80netf_state::z80netf_mem);
- m_maincpu->set_addrmap(AS_IO, &z80netf_state::z80netf_io);
+ MCFG_DEVICE_ADD("z80ne", Z80, Z80NE_CPU_SPEED_HZ)
+ MCFG_DEVICE_PROGRAM_MAP(z80netf_mem)
+ MCFG_DEVICE_IO_MAP(z80netf_io)
MCFG_MACHINE_START_OVERRIDE(z80netf_state,z80netf)
MCFG_MACHINE_RESET_OVERRIDE(z80netf_state,z80netf)
AY31015(config, m_uart);
+ m_uart->set_tx_clock(4800.0);
+ m_uart->set_rx_clock(4800.0);
- CLOCK(config, m_uart_clock, 4800);
- m_uart_clock->signal_handler().set(FUNC(z80netf_state::lx385_uart_tx_clock_w));
- m_uart_clock->signal_handler().append(m_uart, FUNC(ay31015_device::write_rcp));
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("z80ne_cass")
- CASSETTE(config, m_cassette1);
- m_cassette1->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette1->set_interface("z80ne_cass");
-
- CASSETTE(config, m_cassette2);
- m_cassette2->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
- m_cassette2->set_interface("z80ne_cass");
+ MCFG_CASSETTE_ADD( "cassette2" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("z80ne_cass")
KR2376_ST(config, m_lx387_kr2376, 50000);
/* video hardware */
- SCREEN(config, "lx388", SCREEN_TYPE_RASTER);
+ MCFG_SCREEN_MC6847_PAL_ADD("lx388", "mc6847")
- MC6847_PAL(config, m_vdg, 4.433619_MHz_XTAL);
- m_vdg->set_screen("lx388");
- m_vdg->input_callback().set(FUNC(z80ne_state::lx388_mc6847_videoram_r));
+ MCFG_DEVICE_ADD("mc6847", MC6847_PAL, 4.433619_MHz_XTAL)
+ MCFG_MC6847_INPUT_CALLBACK(READ8(*this, z80ne_state, lx388_mc6847_videoram_r))
// AG = GND, GM2 = GND, GM1 = GND, GM0 = GND, CSS = GND
// other lines not connected
FD1771(config, m_wd1771, 2_MHz_XTAL / 2);
- FLOPPY_CONNECTOR(config, "wd1771:0", z80ne_floppies, "sssd", z80ne_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "wd1771:1", z80ne_floppies, "sssd", z80ne_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "wd1771:2", z80ne_floppies, nullptr, z80ne_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "wd1771:3", z80ne_floppies, nullptr, z80ne_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("wd1771:0", z80ne_floppies, "sssd", z80ne_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1771:1", z80ne_floppies, "sssd", z80ne_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1771:2", z80ne_floppies, nullptr, z80ne_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1771:3", z80ne_floppies, nullptr, z80ne_state::floppy_formats)
config.set_default_layout(layout_z80netf);
/* internal ram */
RAM(config, m_ram).set_default_size("56K");
- SOFTWARE_LIST(config, "cass_list").set_original("z80ne_cass");
- SOFTWARE_LIST(config, "flop_list").set_original("z80ne_flop");
-}
+ MCFG_SOFTWARE_LIST_ADD("cass_list","z80ne_cass")
+ MCFG_SOFTWARE_LIST_ADD("flop_list","z80ne_flop")
+MACHINE_CONFIG_END
/******************************************************************************
ROM Definitions
diff --git a/src/mame/drivers/z88.cpp b/src/mame/drivers/z88.cpp
index 7b44e8fd29e..41178d32491 100644
--- a/src/mame/drivers/z88.cpp
+++ b/src/mame/drivers/z88.cpp
@@ -596,8 +596,7 @@ static void z88_cart(device_slot_interface &device)
device.option_add("1024kflash", Z88_1024K_FLASH); // 1024KB Flash cart
}
-void z88_state::z88(machine_config &config)
-{
+MACHINE_CONFIG_START(z88_state::z88)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(9'830'400)/3); // divided by 3 through the uPD65031
m_maincpu->set_addrmap(AS_PROGRAM, &z88_state::z88_mem);
@@ -630,18 +629,21 @@ void z88_state::z88(machine_config &config)
RAM(config, RAM_TAG).set_default_size("128K").set_extra_options("32K,64K,256K,512K");
/* cartridges */
- Z88CART_SLOT(config, m_carts[1], z88_cart, nullptr);
- m_carts[1]->out_flp_callback().set(m_blink, FUNC(upd65031_device::flp_w));
+ device = &Z88CART_SLOT(config, m_carts[1]);
+ MCFG_DEVICE_SLOT_INTERFACE(z88_cart, nullptr, false)
+ MCFG_Z88CART_SLOT_OUT_FLP_CB(WRITELINE("blink", upd65031_device, flp_w))
- Z88CART_SLOT(config, m_carts[2], z88_cart, nullptr);
- m_carts[2]->out_flp_callback().set(m_blink, FUNC(upd65031_device::flp_w));
+ device = &Z88CART_SLOT(config, m_carts[2]);
+ MCFG_DEVICE_SLOT_INTERFACE(z88_cart, nullptr, false)
+ MCFG_Z88CART_SLOT_OUT_FLP_CB(WRITELINE("blink", upd65031_device, flp_w))
- Z88CART_SLOT(config, m_carts[3], z88_cart, nullptr);
- m_carts[3]->out_flp_callback().set(m_blink, FUNC(upd65031_device::flp_w));
+ device = &Z88CART_SLOT(config, m_carts[3]);
+ MCFG_DEVICE_SLOT_INTERFACE(z88_cart, nullptr, false)
+ MCFG_Z88CART_SLOT_OUT_FLP_CB(WRITELINE("blink", upd65031_device, flp_w))
/* software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("z88_cart");
-}
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "z88_cart")
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/z9001.cpp b/src/mame/drivers/z9001.cpp
index f6950922c38..e29df35bee0 100644
--- a/src/mame/drivers/z9001.cpp
+++ b/src/mame/drivers/z9001.cpp
@@ -206,8 +206,7 @@ static GFXDECODE_START( gfx_z9001 )
GFXDECODE_END
-void z9001_state::z9001(machine_config &config)
-{
+MACHINE_CONFIG_START(z9001_state::z9001)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(9'830'400) / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &z9001_state::z9001_mem);
@@ -215,16 +214,16 @@ void z9001_state::z9001(machine_config &config)
m_maincpu->set_daisy_config(z9001_daisy_chain);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(50);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
- screen.set_size(40*8, 24*8);
- screen.set_visarea(0, 40*8-1, 0, 24*8-1);
- screen.set_screen_update(FUNC(z9001_state::screen_update_z9001));
- screen.set_palette("palette");
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(40*8, 24*8)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 24*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(z9001_state, screen_update_z9001)
+ MCFG_SCREEN_PALETTE("palette")
- GFXDECODE(config, "gfxdecode", "palette", gfx_z9001);
- PALETTE(config, "palette").set_entries(16);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_z9001)
+ MCFG_PALETTE_ADD("palette", 16)
/* Sound */
SPEAKER(config, "mono").front_center();
@@ -234,7 +233,7 @@ void z9001_state::z9001(machine_config &config)
/* Devices */
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
keyboard.set_keyboard_callback(FUNC(z9001_state::kbd_put));
- TIMER(config, "z9001_timer").configure_periodic(FUNC(z9001_state::timer_callback), attotime::from_msec(10));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("z9001_timer", z9001_state, timer_callback, attotime::from_msec(10))
z80pio_device& pio1(Z80PIO(config, "z80pio1", XTAL(9'830'400) / 4));
pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
@@ -248,8 +247,8 @@ void z9001_state::z9001(machine_config &config)
ctc.zc_callback<0>().set(FUNC(z9001_state::cass_w));
ctc.zc_callback<2>().set("z80ctc", FUNC(z80ctc_device::trg3));
- CASSETTE(config, m_cass);
-}
+ MCFG_CASSETTE_ADD( "cassette" )
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( z9001 )
diff --git a/src/mame/drivers/zac_proto.cpp b/src/mame/drivers/zac_proto.cpp
index 0ecdfb56f7a..1eabe100a8d 100644
--- a/src/mame/drivers/zac_proto.cpp
+++ b/src/mame/drivers/zac_proto.cpp
@@ -241,12 +241,10 @@ void zac_proto_state::machine_reset()
m_digits[10] = 0x3f; // units shows zero all the time
}
-void zac_proto_state::zac_proto(machine_config &config)
-{
+MACHINE_CONFIG_START(zac_proto_state::zac_proto)
/* basic machine hardware */
- INS8060(config, m_maincpu, XTAL(4'000'000) / 2); // Using SC/MP II chip which has an internal /2 circuit.
- m_maincpu->set_addrmap(AS_PROGRAM, &zac_proto_state::zac_proto_map);
-
+ MCFG_DEVICE_ADD("maincpu", INS8060, XTAL(4'000'000) / 2) // Using SC/MP II chip which has an internal /2 circuit.
+ MCFG_DEVICE_PROGRAM_MAP(zac_proto_map)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* Video */
@@ -254,7 +252,7 @@ void zac_proto_state::zac_proto(machine_config &config)
/* Sound */
genpin_audio(config);
-}
+MACHINE_CONFIG_END
/*--------------------------------
/ Strike
diff --git a/src/mame/drivers/zaccaria.cpp b/src/mame/drivers/zaccaria.cpp
index d3827682f13..c37fb7fb608 100644
--- a/src/mame/drivers/zaccaria.cpp
+++ b/src/mame/drivers/zaccaria.cpp
@@ -331,13 +331,13 @@ WRITE_LINE_MEMBER(zaccaria_state::vblank_irq)
}
-void zaccaria_state::zaccaria(machine_config &config)
-{
+MACHINE_CONFIG_START(zaccaria_state::zaccaria)
+
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(18'432'000)/6); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &zaccaria_state::main_map);
+ MCFG_DEVICE_ADD("maincpu", Z80,XTAL(18'432'000)/6) /* verified on pcb */
+ MCFG_DEVICE_PROGRAM_MAP(main_map)
-// config.m_minimum_quantum = attotime::from_hz(1000000);
+// MCFG_QUANTUM_TIME(attotime::from_hz(1000000))
WATCHDOG_TIMER(config, "watchdog");
@@ -355,14 +355,14 @@ void zaccaria_state::zaccaria(machine_config &config)
ppi.out_pc_callback().set(FUNC(zaccaria_state::dsw_sel_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60.57); /* verified on pcb */
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
- screen.set_screen_update(FUNC(zaccaria_state::screen_update));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(zaccaria_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60.57) /* verified on pcb */
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(zaccaria_state, screen_update)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, zaccaria_state, vblank_irq))
GFXDECODE(config, m_gfxdecode, m_palette, gfx_zaccaria);
PALETTE(config, m_palette, FUNC(zaccaria_state::zaccaria_palette), 32*8 + 32*8, 512);
@@ -370,7 +370,7 @@ void zaccaria_state::zaccaria(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
ZACCARIA_1B11142(config, "audiopcb").add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+MACHINE_CONFIG_END
diff --git a/src/mame/drivers/zapcomputer.cpp b/src/mame/drivers/zapcomputer.cpp
index e718367412d..1f43a87eb85 100644
--- a/src/mame/drivers/zapcomputer.cpp
+++ b/src/mame/drivers/zapcomputer.cpp
@@ -155,16 +155,15 @@ void zapcomp_state::machine_start()
m_digits.resolve();
}
-void zapcomp_state::zapcomp(machine_config &config)
-{
+MACHINE_CONFIG_START(zapcomp_state::zapcomp)
// basic machine hardware
- Z80(config, m_maincpu, XTAL(2'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &zapcomp_state::zapcomp_mem);
- m_maincpu->set_addrmap(AS_IO, &zapcomp_state::zapcomp_io);
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(2'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(zapcomp_mem)
+ MCFG_DEVICE_IO_MAP(zapcomp_io)
/* video hardware */
config.set_default_layout(layout_zapcomputer);
-}
+MACHINE_CONFIG_END
ROM_START( zapcomp )
ROM_REGION( 0x10000, "roms", 0 )
diff --git a/src/mame/drivers/zaurus.cpp b/src/mame/drivers/zaurus.cpp
index 7e3d7416e22..1479def5177 100644
--- a/src/mame/drivers/zaurus.cpp
+++ b/src/mame/drivers/zaurus.cpp
@@ -1519,30 +1519,30 @@ TIMER_DEVICE_CALLBACK_MEMBER(zaurus_state::rtc_irq_callback)
}
// TODO: main CPU differs greatly between versions!
-void zaurus_state::zaurus(machine_config &config)
-{
+MACHINE_CONFIG_START(zaurus_state::zaurus)
+
/* basic machine hardware */
- PXA255(config, m_maincpu, MAIN_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &zaurus_state::zaurus_map);
+ MCFG_DEVICE_ADD(m_maincpu,PXA255,MAIN_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(zaurus_map)
- TIMER(config, "rtc_timer").configure_periodic(FUNC(zaurus_state::rtc_irq_callback), attotime::from_hz(XTAL(32'768)));
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("rtc_timer", zaurus_state, rtc_irq_callback, attotime::from_hz(XTAL(32'768)))
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
- screen.set_screen_update(FUNC(zaurus_state::screen_update));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
+ MCFG_SCREEN_UPDATE_DRIVER(zaurus_state, screen_update)
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- PALETTE(config, "palette").set_entries(8);
+ MCFG_PALETTE_ADD("palette", 8)
/* sound hardware */
SPEAKER(config, "mono").front_center();
// AY8910(config, "aysnd", MAIN_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 0.30);
PXA255_PERIPHERALS(config, m_pxa_periphs, MAIN_CLOCK, m_maincpu);
-}
+MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/zaxxon.cpp b/src/mame/drivers/zaxxon.cpp
index 6a09d9e57c9..7fa9581d499 100644
--- a/src/mame/drivers/zaxxon.cpp
+++ b/src/mame/drivers/zaxxon.cpp
@@ -500,9 +500,9 @@ void zaxxon_state::congo_sound_map(address_map &map)
{
map(0x0000, 0x1fff).rom();
map(0x4000, 0x47ff).mirror(0x1800).ram();
- map(0x6000, 0x6000).mirror(0x1fff).w("sn1", FUNC(sn76489a_device::write));
+ map(0x6000, 0x6000).mirror(0x1fff).w("sn1", FUNC(sn76489a_device::command_w));
map(0x8000, 0x8003).mirror(0x1ffc).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
- map(0xa000, 0xa000).mirror(0x1fff).w("sn2", FUNC(sn76489a_device::write));
+ map(0xa000, 0xa000).mirror(0x1fff).w("sn2", FUNC(sn76489a_device::command_w));
}
@@ -915,11 +915,11 @@ GFXDECODE_END
*
*************************************/
-void zaxxon_state::root(machine_config &config)
-{
+MACHINE_CONFIG_START(zaxxon_state::root)
+
/* basic machine hardware */
- Z80(config, m_maincpu, MASTER_CLOCK/16);
- m_maincpu->set_addrmap(AS_PROGRAM, &zaxxon_state::zaxxon_map);
+ MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/16)
+ MCFG_DEVICE_PROGRAM_MAP(zaxxon_map)
I8255A(config, m_ppi);
m_ppi->out_pa_callback().set(FUNC(zaxxon_state::zaxxon_sound_a_w));
@@ -944,29 +944,29 @@ void zaxxon_state::root(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_zaxxon);
PALETTE(config, m_palette, FUNC(zaxxon_state::zaxxon_palette), 256);
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- screen.set_screen_update(FUNC(zaxxon_state::screen_update_zaxxon));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(zaxxon_state::vblank_int));
-}
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(zaxxon_state, screen_update_zaxxon)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, zaxxon_state, vblank_int))
+MACHINE_CONFIG_END
-void zaxxon_state::zaxxon(machine_config &config)
-{
+MACHINE_CONFIG_START(zaxxon_state::zaxxon)
root(config);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
zaxxon_samples(config);
-}
+MACHINE_CONFIG_END
-void zaxxon_state::szaxxon(machine_config &config)
-{
+
+MACHINE_CONFIG_START(zaxxon_state::szaxxon)
zaxxon(config);
- m_maincpu->set_addrmap(AS_OPCODES, &zaxxon_state::decrypted_opcodes_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+MACHINE_CONFIG_END
void zaxxon_state::szaxxone(machine_config &config)
@@ -980,8 +980,8 @@ void zaxxon_state::szaxxone(machine_config &config)
}
-void zaxxon_state::futspye(machine_config &config)
-{
+
+MACHINE_CONFIG_START(zaxxon_state::futspye)
root(config);
sega_315_5061_device &maincpu(SEGA_315_5061(config.replace(), m_maincpu, MASTER_CLOCK/16));
maincpu.set_addrmap(AS_PROGRAM, &zaxxon_state::zaxxon_map);
@@ -991,16 +991,19 @@ void zaxxon_state::futspye(machine_config &config)
/* video hardware */
- subdevice<screen_device>("screen")->set_screen_update(FUNC(zaxxon_state::screen_update_futspy));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(zaxxon_state, screen_update_futspy)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
zaxxon_samples(config);
-}
+MACHINE_CONFIG_END
-void zaxxon_state::razmataze(machine_config &config)
-{
+
+
+
+MACHINE_CONFIG_START(zaxxon_state::razmataze)
root(config);
sega_315_5098_device &maincpu(SEGA_315_5098(config.replace(), m_maincpu, MASTER_CLOCK/16));
maincpu.set_addrmap(AS_PROGRAM, &zaxxon_state::ixion_map);
@@ -1012,13 +1015,13 @@ void zaxxon_state::razmataze(machine_config &config)
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(zaxxon_state,razmataz)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(zaxxon_state::screen_update_razmataz));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(zaxxon_state, screen_update_razmataz)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
SEGAUSBROM(config, "usbsnd", 0, m_maincpu).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
-
+MACHINE_CONFIG_END
void zaxxon_state::ixion(machine_config &config)
{
@@ -1032,12 +1035,11 @@ void zaxxon_state::ixion(machine_config &config)
m_mainlatch[0]->q_out_cb<6>().set_nop(); // flip screen not used
}
-
-void zaxxon_state::congo(machine_config &config)
-{
+MACHINE_CONFIG_START(zaxxon_state::congo)
root(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &zaxxon_state::congo_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(congo_map)
m_ppi->in_pa_callback().set("soundlatch", FUNC(generic_latch_8_device::read));
m_ppi->out_pa_callback().set_nop();
@@ -1054,27 +1056,31 @@ void zaxxon_state::congo(machine_config &config)
m_mainlatch[1]->q_out_cb<6>().set(FUNC(zaxxon_state::congo_fg_bank_w)); // BS
m_mainlatch[1]->q_out_cb<7>().set(FUNC(zaxxon_state::congo_color_bank_w)); // CBS
- z80_device &audiocpu(Z80(config, "audiocpu", SOUND_CLOCK));
- audiocpu.set_addrmap(AS_PROGRAM, &zaxxon_state::congo_sound_map);
- audiocpu.set_periodic_int(FUNC(zaxxon_state::irq0_line_hold), attotime::from_hz(SOUND_CLOCK/16/16/16/4));
+ MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CLOCK)
+ MCFG_DEVICE_PROGRAM_MAP(congo_sound_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(zaxxon_state, irq0_line_hold, SOUND_CLOCK/16/16/16/4)
/* video hardware */
m_palette->set_entries(512).set_init(FUNC(zaxxon_state::zaxxon_palette));
MCFG_VIDEO_START_OVERRIDE(zaxxon_state,congo)
- subdevice<screen_device>("screen")->set_screen_update(FUNC(zaxxon_state::screen_update_congo));
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(zaxxon_state, screen_update_congo)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
GENERIC_LATCH_8(config, "soundlatch");
- SN76489A(config, "sn1", SOUND_CLOCK).add_route(ALL_OUTPUTS, "speaker", 1.0); // schematic shows sn76489A
+ MCFG_DEVICE_ADD("sn1", SN76489A, SOUND_CLOCK) // schematic shows sn76489A
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
- SN76489A(config, "sn2", SOUND_CLOCK/4).add_route(ALL_OUTPUTS, "speaker", 1.0); // schematic shows sn76489A
+ MCFG_DEVICE_ADD("sn2", SN76489A, SOUND_CLOCK/4) // schematic shows sn76489A
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
congo_samples(config);
-}
+MACHINE_CONFIG_END
+
/*************************************
diff --git a/src/mame/drivers/zexall.cpp b/src/mame/drivers/zexall.cpp
index 5c09a93d38c..b6c9b60defc 100644
--- a/src/mame/drivers/zexall.cpp
+++ b/src/mame/drivers/zexall.cpp
@@ -99,7 +99,7 @@ READ8_MEMBER( zexall_state::output_ack_r )
// spit out the byte in out_byte if out_req is not equal to out_req_last
if (m_out_req != m_out_req_last)
{
- m_terminal->write(m_out_data);
+ m_terminal->write(space, 0, m_out_data);
m_out_req_last = m_out_req;
m_out_ack++;
}
diff --git a/src/mame/drivers/zms8085.cpp b/src/mame/drivers/zms8085.cpp
index e0a4b07a621..a867f448ce9 100644
--- a/src/mame/drivers/zms8085.cpp
+++ b/src/mame/drivers/zms8085.cpp
@@ -17,7 +17,6 @@ hardware, since no schematics or manuals have been found.
#include "cpu/i8085/i8085.h"
#include "bus/rs232/rs232.h"
#include "machine/ay31015.h"
-#include "machine/clock.h"
#include "screen.h"
class zms8085_state : public driver_device
@@ -27,7 +26,6 @@ public:
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_uart(*this, "uart")
- , m_uart_clock(*this, "uart_clock")
, m_rs232(*this, "rs232")
, m_screen(*this, "screen")
, m_mainram(*this, "mainram")
@@ -53,7 +51,6 @@ private:
required_device<cpu_device> m_maincpu;
required_device<ay51013_device> m_uart;
- required_device<clock_device> m_uart_clock;
required_device<rs232_port_device> m_rs232;
required_device<screen_device> m_screen;
required_shared_ptr<u8> m_mainram;
@@ -338,15 +335,13 @@ void zms8085_state::zephyr(machine_config &config)
screen.screen_vblank().set_inputline(m_maincpu, I8085_RST55_LINE, ASSERT_LINE);
AY51013(config, m_uart); // SMC COM2017
+ m_uart->set_tx_clock(153600); // should actually be configurable somehow
+ m_uart->set_rx_clock(153600);
m_uart->read_si_callback().set("rs232", FUNC(rs232_port_device::rxd_r));
m_uart->write_so_callback().set("rs232", FUNC(rs232_port_device::write_txd));
m_uart->write_dav_callback().set_inputline("maincpu", I8085_RST65_LINE);
m_uart->set_auto_rdav(true);
- CLOCK(config, m_uart_clock, 153600); // should actually be configurable somehow
- m_uart_clock->signal_handler().set(m_uart, FUNC(ay51013_device::write_tcp));
- m_uart_clock->signal_handler().append(m_uart, FUNC(ay51013_device::write_rcp));
-
RS232_PORT(config, "rs232", default_rs232_devices, nullptr);
}
diff --git a/src/mame/drivers/zn.cpp b/src/mame/drivers/zn.cpp
index c7441f90f4b..02f2690a71e 100644
--- a/src/mame/drivers/zn.cpp
+++ b/src/mame/drivers/zn.cpp
@@ -4202,14 +4202,6 @@ ROM_START( cbaj )
ROM_REGION( 0x8, "cat702_2", 0 )
ROM_LOAD( "mg03", 0x000000, 0x000008, CRC(8be79633) SHA1(f38f881b6139eb8368e593904cb50b6e68bdf2e9) )
-
- ROM_REGION( 0xc00, "misc", 0 )
- ROM_LOAD( "gal16v8d-15lp.sop-rom1.uo117", 0x000, 0x117, CRC(cf8ebc23) SHA1(0662f8ba418eb9187fb7a86cc8c0d86220dcdbf0) )
- ROM_LOAD( "gal16v8d-15lp.sop-rom2b.uo4138", 0x200, 0x117, CRC(098662c1) SHA1(5fcf66b16f840129aa61e9cf2b2951c37a5cbabf) )
- ROM_LOAD( "gal16v8d-15lp.sop-rom3.uo3125", 0x400, 0x117, CRC(f9c92db7) SHA1(1c2818f0fceedca914a0cbb74c2237a8c3798906) )
- ROM_LOAD( "gal16v8d-15lp.sop-rom4c.uo4131", 0x600, 0x117, CRC(e87179ef) SHA1(9942ff71d39924d938aa5e7c3d0c1aa9a38c5e77) )
- ROM_LOAD( "gal16v8d-15lp.sop-rom5b.uo4128", 0x800, 0x117, CRC(f32a1803) SHA1(8251bad3fe5a0ebf6cba4c1a67aa09e391289c65) )
- ROM_LOAD( "gal16v8d-15lp.sop-rom6a.uo4134", 0xa00, 0x117, CRC(40e1f6f2) SHA1(e7703e6db5d4f23c34c633ec147a88d2b0f681d5) )
ROM_END
ROM_START( shngmtkb )
diff --git a/src/mame/drivers/zorba.cpp b/src/mame/drivers/zorba.cpp
index 2103ab3ac06..c3bbb6e7a3f 100644
--- a/src/mame/drivers/zorba.cpp
+++ b/src/mame/drivers/zorba.cpp
@@ -132,28 +132,29 @@ GFXDECODE_END
} // anonymous namespace
-void zorba_state::zorba(machine_config &config)
-{
+MACHINE_CONFIG_START(zorba_state::zorba)
// basic machine hardware
Z80(config, m_maincpu, 24_MHz_XTAL / 6);
m_maincpu->set_addrmap(AS_PROGRAM, &zorba_state::zorba_mem);
m_maincpu->set_addrmap(AS_IO, &zorba_state::zorba_io);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_color(rgb_t::green());
- screen.set_refresh_hz(50);
- screen.set_screen_update("crtc", FUNC(i8275_device::screen_update));
- GFXDECODE(config, "gfxdecode", m_palette, gfx_zorba);
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", i8275_device, screen_update)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_zorba)
PALETTE(config, m_palette, palette_device::MONOCHROME_HIGHLIGHT);
/* sound hardware */
SPEAKER(config, "mono").front_center();
BEEP(config, m_beep, 800).add_route(ALL_OUTPUTS, "mono", 1.00); // should be horizontal frequency / 16, so depends on CRTC parameters
- INPUT_MERGER_ANY_HIGH(config, "irq0").output_handler().set(FUNC(zorba_state::irq_w<0>));
- INPUT_MERGER_ANY_HIGH(config, "irq1").output_handler().set(FUNC(zorba_state::irq_w<1>));
- INPUT_MERGER_ANY_HIGH(config, "irq2").output_handler().set(FUNC(zorba_state::irq_w<2>));
+ MCFG_INPUT_MERGER_ANY_HIGH("irq0")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(WRITELINE(*this, zorba_state, irq_w<0>))
+ MCFG_INPUT_MERGER_ANY_HIGH("irq1")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(WRITELINE(*this, zorba_state, irq_w<1>))
+ MCFG_INPUT_MERGER_ANY_HIGH("irq2")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(WRITELINE(*this, zorba_state, irq_w<2>))
/* devices */
Z80DMA(config, m_dma, 24_MHz_XTAL / 6);
@@ -214,23 +215,25 @@ void zorba_state::zorba(machine_config &config)
pit.out_handler<2>().append(m_uart2, FUNC(i8251_device::write_rxc));
// CRTC
- I8275(config, m_crtc, 14.318'181_MHz_XTAL / 7);
- m_crtc->set_character_width(8);
- m_crtc->set_display_callback(FUNC(zorba_state::zorba_update_chr), this);
- m_crtc->drq_wr_callback().set(m_dma, FUNC(z80dma_device::rdy_w));
- m_crtc->irq_wr_callback().set("irq0", FUNC(input_merger_device::in_w<1>));
- m_crtc->set_screen("screen");
+ MCFG_DEVICE_ADD(m_crtc, I8275, 14.318'181_MHz_XTAL / 7)
+ MCFG_I8275_CHARACTER_WIDTH(8)
+ MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(zorba_state, zorba_update_chr)
+ MCFG_I8275_DRQ_CALLBACK(WRITELINE(m_dma, z80dma_device, rdy_w))
+ MCFG_I8275_IRQ_CALLBACK(WRITELINE("irq0", input_merger_device, in_w<1>))
+ MCFG_VIDEO_SET_SCREEN("screen")
// Floppies
FD1793(config, m_fdc, 24_MHz_XTAL / 24);
m_fdc->intrq_wr_callback().set("irq2", FUNC(input_merger_device::in_w<0>));
m_fdc->drq_wr_callback().set("irq2", FUNC(input_merger_device::in_w<1>));
- FLOPPY_CONNECTOR(config, m_floppy0, zorba_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, m_floppy1, zorba_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy0, zorba_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD(m_floppy1, zorba_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
// J1 IEEE-488
- IEEE488(config, m_ieee);
- m_ieee->srq_callback().set(m_pia1, FUNC(pia6821_device::ca2_w)); // TODO: gated with PB1 from PIA
+ MCFG_IEEE488_BUS_ADD()
+ MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(m_pia1, pia6821_device, ca2_w)) // TODO: gated with PB1 from PIA
// J2 EIA RS232/internal modem
// TODO: this has additional lines compared to a regular RS232 port (TxC in, RxC in, RxC out, speaker in, power)
@@ -240,15 +243,13 @@ void zorba_state::zorba(machine_config &config)
rs232.dsr_handler().set(m_uart0, FUNC(i8251_device::write_dsr));
// J3 Parallel printer
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("parprndata", "parprn")
centronics_device &parprn(CENTRONICS(config, "parprn", centronics_devices, "printer"));
parprn.busy_handler().set(m_uart1, FUNC(i8251_device::write_cts));
parprn.busy_handler().append(m_uart1, FUNC(i8251_device::write_dsr)); // TODO: shared with serial CTS
parprn.fault_handler().set(FUNC(zorba_state::printer_fault_w));
parprn.select_handler().set(FUNC(zorba_state::printer_select_w));
- output_latch_device &parprndata(OUTPUT_LATCH(config, "parprndata"));
- parprn.set_output_latch(parprndata);
-
// J3 Serial printer
rs232_port_device &serprn(RS232_PORT(config, "serprn", default_rs232_devices, nullptr));
serprn.rxd_handler().set(m_uart1, FUNC(i8251_device::write_rxd)); // TODO: this line has a LED attached
@@ -257,7 +258,7 @@ void zorba_state::zorba(machine_config &config)
ZORBA_KEYBOARD(config, "keyboard").rxd_cb().set(m_uart2, FUNC(i8251_device::write_rxd));
SOFTWARE_LIST(config, "flop_list").set_original("zorba");
-}
+MACHINE_CONFIG_END
//-------------------------------------------------
diff --git a/src/mame/drivers/zr107.cpp b/src/mame/drivers/zr107.cpp
index 14ebfa5ec1e..93d2492e745 100644
--- a/src/mame/drivers/zr107.cpp
+++ b/src/mame/drivers/zr107.cpp
@@ -253,6 +253,7 @@ protected:
WRITE_LINE_MEMBER(k054539_irq_gen);
double adc0838_callback(uint8_t input);
+ void k054539_map(address_map &map);
void sharc_memmap(address_map &map);
void sound_memmap(address_map &map);
@@ -569,6 +570,11 @@ void zr107_state::sound_memmap(address_map &map)
map(0x580000, 0x580001).nopw(); // 'NRES' - D2: K056602 /RESET
}
+void zr107_state::k054539_map(address_map &map)
+{
+ map(0x000000, 0x5fffff).rom().region("k054539", 0);
+}
+
/*****************************************************************************/
@@ -821,13 +827,13 @@ void zr107_state::zr107(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
k054539_device &k054539_1(K054539(config, "k054539_1", XTAL(18'432'000)));
- k054539_1.set_device_rom_tag("k054539");
+ k054539_1.set_addrmap(0, &zr107_state::k054539_map);
k054539_1.timer_handler().set(FUNC(zr107_state::k054539_irq_gen));
k054539_1.add_route(0, "lspeaker", 0.75);
k054539_1.add_route(1, "rspeaker", 0.75);
k054539_device &k054539_2(K054539(config, "k054539_2", XTAL(18'432'000)));
- k054539_2.set_device_rom_tag("k054539");
+ k054539_2.set_addrmap(0, &zr107_state::k054539_map);
k054539_2.add_route(0, "lspeaker", 0.75);
k054539_2.add_route(1, "rspeaker", 0.75);
diff --git a/src/mame/drivers/zwackery.cpp b/src/mame/drivers/zwackery.cpp
index d186fae1ba3..3f3a2923cd7 100644
--- a/src/mame/drivers/zwackery.cpp
+++ b/src/mame/drivers/zwackery.cpp
@@ -414,7 +414,7 @@ GFXDECODE_END
WRITE8_MEMBER( zwackery_state::pia1_porta_w )
{
- m_cheap_squeak_deluxe->sr_w(data >> 4);
+ m_cheap_squeak_deluxe->sr_w(space, 0, data >> 4);
}
@@ -479,7 +479,7 @@ READ8_MEMBER( zwackery_state::pia2_porta_r )
READ8_MEMBER( zwackery_state::ptm_r )
{
m_maincpu->adjust_icount(-14);
- return m_ptm->read(offset);
+ return m_ptm->read(space, offset);
}
void zwackery_state::machine_start()